From 6e881c61116cd6570f744dd795a7dc17903d86f4 Mon Sep 17 00:00:00 2001 From: janneke Date: Wed, 11 Feb 2004 12:13:13 +0000 Subject: [PATCH] This commit was manufactured by cvs2svn to create tag 'start'. --- .cvsignore | 40 - COPYING | 348 - ChangeLog | 8450 ---------------- DEDICATION | 26 - Documentation/GNUmakefile | 29 - Documentation/bibliography/GNUmakefile | 37 - Documentation/bibliography/colorado.bib | 524 - .../bibliography/computer-notation.bib | 777 -- Documentation/bibliography/engraving.bib | 355 - Documentation/bibliography/html-long.bst | 1373 --- Documentation/index.html.in | 135 - Documentation/misc/ANNOUNCE-0.1 | 165 - Documentation/misc/ANNOUNCE-1.0 | 102 - Documentation/misc/ANNOUNCE-1.2 | 62 - Documentation/misc/CHANGES-0.0 | 1170 --- Documentation/misc/CHANGES-0.1 | 2141 ---- Documentation/misc/CHANGES-1.0 | 515 - Documentation/misc/CHANGES-1.1 | 2006 ---- Documentation/misc/CHANGES-1.2 | 287 - Documentation/misc/CHANGES-1.3 | 4819 --------- Documentation/misc/CHANGES-1.4 | 157 - Documentation/misc/CHANGES-1.5 | 829 -- Documentation/misc/ChangeLog-1.5 | 4288 -------- Documentation/misc/GNUmakefile | 27 - Documentation/misc/NEWS-1.2 | 34 - Documentation/misc/NEWS-1.4 | 78 - Documentation/pictures/GNUmakefile | 20 - Documentation/pictures/lelie-logo.xpm | 215 - Documentation/topdocs/AUTHORS.texi | 81 - Documentation/topdocs/GNUmakefile | 9 - Documentation/topdocs/INSTALL.texi | 353 - Documentation/topdocs/NEWS.texi | 717 -- Documentation/topdocs/README.texi | 106 - Documentation/user/GNUmakefile | 160 - Documentation/user/appendices.itely | 78 - Documentation/user/baer-flat-bw.png | Bin 3301 -> 0 bytes Documentation/user/cheatsheet.itely | 267 - Documentation/user/converters.itely | 340 - Documentation/user/dedication.itely | 7 - Documentation/user/dummy-interfaces.itexi | 6 - Documentation/user/fdl.itexi | 403 - Documentation/user/glossary.html.in | 8 - Documentation/user/henle-flat-bw.png | Bin 2823 -> 0 bytes Documentation/user/internals.itely | 1054 -- Documentation/user/introduction.itely | 758 -- Documentation/user/invoking.itexi | 640 -- Documentation/user/latex-example.latex | 49 - .../user/latex-lilypond-example.latex | 172 - Documentation/user/lily-flat-bw.png | Bin 1997 -> 0 bytes Documentation/user/lilypond-book.itely | 419 - Documentation/user/lilypond.tely | 187 - Documentation/user/literature.itely | 95 - Documentation/user/macros.itexi | 159 - Documentation/user/music-glossary.tely | 4498 --------- Documentation/user/preface.itely | 118 - Documentation/user/refman.itely | 8985 ----------------- Documentation/user/tutorial.itely | 1877 ---- GNUmakefile.in | 149 - ROADMAP | 47 - THANKS | 106 - TODO | 171 - VERSION | 6 - autogen.sh | 62 - buildscripts/GNUmakefile | 14 - buildscripts/bib2html.py | 86 - buildscripts/clean-fonts.sh | 42 - buildscripts/help2man.pl | 559 - buildscripts/install-info-html.sh | 156 - buildscripts/lilypond-login.sh | 47 - buildscripts/lilypond-profile.sh | 93 - buildscripts/lilypond.words.py | 175 - buildscripts/lys-to-tely.py | 106 - buildscripts/make-font-dir.py | 259 - buildscripts/mf-to-table.py | 291 - buildscripts/mutopia-index.py | 216 - buildscripts/ontgaar.py | 206 - buildscripts/texi2omf.py | 148 - config.hh.in | 93 - config.make.in | 103 - configure.in | 94 - cygwin/GNUmakefile | 56 - cygwin/README.in | 105 - cygwin/bug-lilypond-cygwin.sh | 104 - cygwin/changelog | 108 - cygwin/lily-wins.py | 91 - cygwin/lilypond-doc.hint | 8 - cygwin/lilypond.hint | 11 - cygwin/mknetrel | 169 - cygwin/mknetrel.auto | 21 - cygwin/mknetrel.cross | 47 - cygwin/mknetrel.doc | 37 - cygwin/mknetrel.patch | 18 - cygwin/mknetrel.split | 125 - cygwin/postinstall-lilypond.sh | 59 - cygwin/postremove-lilypond.sh | 17 - darwin.patch | 32 - debian/GNUmakefile | 23 - debian/README.Debian | 43 - debian/changelog | 1012 -- debian/control | 42 - debian/control.foka | 42 - debian/control.potato | 34 - debian/copyright | 51 - debian/emacsen-startup | 3 - debian/lilypond-doc.README.Debian | 7 - debian/lilypond-doc.dirs | 1 - debian/lilypond-doc.doc-base | 11 - debian/lilypond.dirs | 8 - debian/lilypond.doc-base | 11 - debian/lilypond1.3.copyright | 21 - debian/lilypond1.7-doc.dirs | 1 - debian/lilypond1.7.dirs | 8 - debian/postinst | 29 - debian/postrm | 43 - debian/preinst | 49 - debian/prerm | 6 - debian/rules | 176 - debian/watch | 5 - elisp/GNUmakefile | 25 - elisp/lilypond-font-lock.el | 198 - elisp/lilypond-indent.el | 566 -- elisp/lilypond-init.el | 20 - elisp/lilypond-mode.el | 1158 --- emacsclient.patch | 148 - flower/GNUmakefile | 23 - flower/NEWS-1.0 | 34 - flower/NEWS-1.1.46 | 203 - flower/README | 12 - flower/TODO | 38 - flower/VERSION | 9 - flower/axis.cc | 45 - flower/cpu-timer.cc | 38 - flower/direction.cc | 26 - flower/file-path.cc | 245 - flower/getopt-long.cc | 355 - flower/include/GNUmakefile | 9 - flower/include/arithmetic-operator.hh | 22 - flower/include/array.hh | 259 - flower/include/array.icc | 159 - flower/include/axes.hh | 35 - flower/include/compare.hh | 55 - flower/include/cons.hh | 172 - flower/include/cpu-timer.hh | 24 - flower/include/direction.hh | 60 - flower/include/drul-array.hh | 68 - flower/include/file-path.hh | 51 - flower/include/file-storage.hh | 27 - flower/include/flower-proto.hh | 64 - flower/include/getopt-long.hh | 108 - flower/include/international.hh | 36 - flower/include/interval.hh | 197 - flower/include/interval.tcc | 150 - flower/include/killing-cons.tcc | 44 - flower/include/libc-extension.hh | 49 - flower/include/offset.hh | 110 - flower/include/parray.hh | 327 - flower/include/parse-afm.hh | 330 - flower/include/polynomial.hh | 83 - flower/include/pqueue.hh | 109 - flower/include/rational.hh | 99 - flower/include/real.hh | 53 - flower/include/string-convert.hh | 50 - flower/include/string-data.hh | 95 - flower/include/string-data.icc | 213 - flower/include/string-handle.hh | 70 - flower/include/string-handle.icc | 164 - flower/include/string.hh | 221 - flower/include/string.icc | 41 - flower/include/virtual-methods.hh | 50 - flower/include/warn.hh | 19 - flower/international.cc | 46 - flower/interval.cc | 42 - flower/libc-extension.cc | 159 - flower/offset.cc | 98 - flower/parse-afm.cc | 1316 --- flower/polynomial.cc | 348 - flower/rational.cc | 310 - flower/real.cc | 4 - flower/rtti.cc | 13 - flower/string-convert.cc | 351 - flower/string.cc | 410 - flower/stringutil.cc | 40 - flower/warn.cc | 47 - input/GNUmakefile | 14 - input/ascii-art/GNUmakefile | 5 - input/ascii-art/as-email.ly | 28 - input/ascii-art/as1.ly | 14 - input/ascii-art/as2.ly | 23 - input/ascii-art/asciiscript5.ly | 26 - input/ascii-art/asciiscript9.ly | 20 - input/ascii-art/r-as.ly | 29 - input/ascii-art/standchen-as5.ly | 43 - input/ascii-art/standchen-as9.ly | 43 - input/ascii-art/twinkle-as5.ly | 77 - input/bugs/rhytmicstaff-tie.ly | 14 - input/example-1.ly | 22 - input/example-2.ly | 21 - input/example-3.ly | 32 - input/les-nereides.ly | 375 - input/mutopia-header.ly | 34 - input/mutopia/E.Satie/GNUmakefile | 9 - .../E.Satie/petite-ouverture-a-danser.ly | 157 - input/mutopia/F.Schubert/GNUmakefile | 8 - input/mutopia/F.Schubert/morgenlied.ly | 189 - input/mutopia/F.Schubert/standchen.ly | 460 - input/mutopia/GNUmakefile | 9 - input/mutopia/J.S.Bach/GNUmakefile | 11 - .../J.S.Bach/baerenreiter-sarabande.ly | 190 - input/mutopia/J.S.Bach/bwv940.ly | 162 - input/mutopia/J.S.Bach/wtk1-fugue2.ly | 224 - input/mutopia/R.Schumann/GNUmakefile | 8 - input/mutopia/R.Schumann/romanze-op28-2.ly | 292 - input/mutopia/W.A.Mozart/GNUmakefile | 10 - input/mutopia/W.A.Mozart/mozart-hrn-3.ly | 41 - .../mutopia/W.A.Mozart/mozart-hrn3-allegro.ly | 205 - input/mutopia/W.A.Mozart/mozart-hrn3-defs.ly | 59 - .../mutopia/W.A.Mozart/mozart-hrn3-romanze.ly | 99 - input/mutopia/W.A.Mozart/mozart-hrn3-rondo.ly | 204 - input/mutopia/claop.py | 306 - input/no-notation/GNUmakefile | 8 - input/no-notation/README | 9 - input/no-notation/bar-check.ly | 13 - input/no-notation/beam-warn.ly | 11 - input/no-notation/denneboom.ly | 116 - input/no-notation/die-staff.ly | 23 - input/no-notation/dos-guile.ly | 14 - input/no-notation/dos-ps.ly | 13 - input/no-notation/dos-tex.ly | 12 - input/no-notation/midi-grace.ly | 23 - input/no-notation/midi-lyric-barcheck.ly | 24 - input/no-notation/midi-transposing.ly | 25 - input/no-notation/midi-tuplets.ly | 36 - input/no-notation/midi-volume-equaliser.ly | 161 - input/no-notation/parse.ly | 5 - input/no-notation/parse2.ly | 9 - input/no-notation/parse3.ly | 9 - input/no-notation/parse4.ly | 12 - input/no-notation/parse5.ly | 11 - input/no-notation/recording.ly | 24 - input/no-notation/safe-guile.ly | 14 - input/no-notation/safe-include.ly | 13 - input/no-notation/safe-ps.ly | 10 - input/no-notation/safe-tex.ly | 16 - input/no-notation/textcresc.ly | 15 - input/paddy.abc | 16 - input/puer-fragment.ly | 107 - input/regression/+.ly | 25 - input/regression/GNUmakefile | 19 - input/regression/accidental-cautionary.ly | 23 - input/regression/accidental-double.ly | 20 - input/regression/accidental-ledger.ly | 39 - input/regression/accidental-octave.ly | 55 - input/regression/accidental-placement.ly | 34 - input/regression/accidental-quarter.ly | 23 - input/regression/accidental-single-double.ly | 25 - .../accidental-unbroken-tie-spacing.ly | 22 - input/regression/accidental-voice.ly | 61 - input/regression/accidental.ly | 18 - input/regression/accidentals.ly | 49 - input/regression/allfontstyle.lyinc | 23 - input/regression/ambitus.ly | 100 - input/regression/apply-context.ly | 30 - input/regression/apply-output.ly | 51 - input/regression/arpeggio-bracket.ly | 20 - input/regression/arpeggio-collision.ly | 22 - input/regression/arpeggio.ly | 30 - input/regression/auto-beam-bar.ly | 16 - input/regression/auto-beam-triplet.ly | 15 - input/regression/auto-beam-tuplets.ly | 18 - input/regression/auto-beam.ly | 27 - input/regression/auto-change.ly | 27 - input/regression/balloon.ly | 32 - input/regression/bar-number.ly | 30 - input/regression/bar-scripts.ly | 30 - input/regression/beam-auto-knee.ly | 18 - input/regression/beam-break.ly | 13 - input/regression/beam-center-slope.ly | 42 - input/regression/beam-concave.ly | 84 - .../regression/beam-cross-staff-auto-knee.ly | 26 - input/regression/beam-cross-staff-slope.ly | 32 - input/regression/beam-cross-staff.ly | 34 - input/regression/beam-damp.ly | 26 - input/regression/beam-default-lengths.ly | 18 - input/regression/beam-extreme.ly | 48 - input/regression/beam-french.ly | 24 - input/regression/beam-funky-beamlet.ly | 21 - input/regression/beam-funky.ly | 39 - input/regression/beam-knee-symmetry.ly | 18 - input/regression/beam-length.ly | 17 - input/regression/beam-manual-beaming.ly | 28 - input/regression/beam-multiple-cross-staff.ly | 30 - input/regression/beam-over-barline.ly | 11 - input/regression/beam-position.ly | 29 - input/regression/beam-postfix-notation.ly | 18 - input/regression/beam-quanting-32nd.ly | 31 - input/regression/beam-quanting-horizontal.ly | 29 - input/regression/beam-quarter.ly | 12 - input/regression/beam-rest.ly | 13 - input/regression/beam-second.ly | 20 - input/regression/beam-shortened-lengths.ly | 18 - input/regression/beamed-chord.ly | 21 - input/regression/beaming-ternary-metrum.ly | 14 - input/regression/beaming.ly | 31 - input/regression/beams.ly | 17 - input/regression/between-systems.ly | 32 - input/regression/break.ly | 20 - input/regression/breathing-sign-ancient.ly | 50 - input/regression/breathing-sign.ly | 58 - input/regression/chord-changes.ly | 27 - input/regression/chord-name-entry-11.ly | 14 - input/regression/chord-name-entry.ly | 44 - input/regression/chord-name-exceptions.ly | 44 - input/regression/chord-name-major7.ly | 11 - input/regression/chord-names-bass.ly | 20 - input/regression/chord-scripts.ly | 23 - input/regression/chord-tremolo-short.ly | 18 - input/regression/chord-tremolo.ly | 46 - input/regression/chords-funky-ignatzek.ly | 30 - input/regression/clef-oct.ly | 30 - input/regression/clefs.ly | 33 - input/regression/cluster.ly | 22 - input/regression/collision-2.ly | 17 - input/regression/collision-dots-invert.ly | 14 - input/regression/collision-dots-move.ly | 16 - input/regression/collision-dots.ly | 27 - input/regression/collision-head-chords.ly | 18 - input/regression/collision-heads.ly | 31 - .../collision-merge-differently-dotted.ly | 31 - input/regression/collision-merge-dots.ly | 14 - input/regression/collision-mesh.ly | 35 - input/regression/collisions.ly | 56 - .../regression/completion-heads-polyphony.ly | 24 - input/regression/completion-heads.ly | 28 - input/regression/custos.ly | 34 - input/regression/dot-flag-collision.ly | 19 - input/regression/dots.ly | 44 - input/regression/drums.ly | 36 - input/regression/dynamics-broken-hairpin.ly | 15 - input/regression/dynamics-glyphs.ly | 22 - input/regression/dynamics-line.ly | 33 - input/regression/dynamics-unbound-hairpin.ly | 13 - input/regression/easy-notation.ly | 14 - input/regression/figured-bass.ly | 37 - input/regression/finger-chords.ly | 45 - input/regression/fingering.ly | 22 - input/regression/follow-voice-break.ly | 24 - input/regression/font-magnification.ly | 26 - input/regression/font-name.ly | 41 - input/regression/generic-output-property.ly | 28 - input/regression/glissando.ly | 35 - input/regression/grace-auto-beam.ly | 16 - input/regression/grace-bar-line.ly | 15 - input/regression/grace-bar-number.ly | 19 - input/regression/grace-beam.ly | 14 - input/regression/grace-end.ly | 22 - input/regression/grace-nest.ly | 16 - input/regression/grace-nest1.ly | 17 - input/regression/grace-nest2.ly | 13 - input/regression/grace-nest3.ly | 13 - input/regression/grace-nest4.ly | 18 - input/regression/grace-nest5.ly | 15 - input/regression/grace-part-combine.ly | 21 - input/regression/grace-staff-length.ly | 24 - input/regression/grace-start.ly | 14 - input/regression/grace-stems.ly | 26 - input/regression/grace-sync.ly | 17 - input/regression/grace-types.ly | 14 - input/regression/grace-unfold-repeat.ly | 15 - input/regression/grace-volta-repeat-2.ly | 20 - input/regression/grace-volta-repeat.ly | 22 - input/regression/grace.ly | 36 - input/regression/hairpin-dashed.ly | 13 - input/regression/hairpin-ending.ly | 17 - input/regression/hara-kiri-pianostaff.ly | 37 - input/regression/instrument-name-markup.ly | 28 - input/regression/instrument-name-partial.ly | 11 - input/regression/instrument-name.ly | 25 - input/regression/key-clefs.ly | 28 - input/regression/key-signature-scordatura.ly | 18 - input/regression/keys.ly | 29 - input/regression/lyric-combine-new.ly | 33 - input/regression/lyric-combine-polyphonic.ly | 35 - input/regression/lyric-combine.ly | 49 - input/regression/lyric-extender-broken.ly | 23 - input/regression/lyric-extender.ly | 17 - input/regression/lyric-hyphen-break.ly | 35 - input/regression/lyric-hyphen.ly | 14 - input/regression/lyric-phrasing-new.ly | 26 - input/regression/lyric-phrasing.ly | 43 - input/regression/lyrics-bar.ly | 39 - input/regression/lyrics-melisma-beam.ly | 18 - input/regression/markup-note.ly | 43 - input/regression/markup-stack.ly | 6 - input/regression/markup-user.ly | 22 - input/regression/measure-grouping.ly | 33 - input/regression/mensural.ly | 16 - input/regression/metronome-marking.ly | 18 - input/regression/mm-rests2.ly | 34 - input/regression/mmrest-collision.ly | 29 - input/regression/molecule-hacking.ly | 78 - input/regression/multi-measure-rest-center.ly | 20 - input/regression/multi-measure-rest-grace.ly | 13 - .../multi-measure-rest-instr-name.ly | 20 - .../multi-measure-rest-multi-staff-center.ly | 14 - input/regression/multi-measure-rest-text.ly | 22 - input/regression/multi-measure-rest.ly | 37 - input/regression/music-map.ly | 41 - input/regression/new-markup-scheme.ly | 64 - input/regression/new-markup-syntax.ly | 37 - input/regression/non-empty-text.ly | 22 - input/regression/note-group-bracket.ly | 38 - input/regression/note-head-chord.ly | 21 - input/regression/note-head-harmonic.ly | 19 - input/regression/note-head-style.ly | 82 - input/regression/note-line.ly | 29 - input/regression/number-staff-lines.ly | 21 - input/regression/ottava-broken.ly | 25 - input/regression/ottava.ly | 68 - input/regression/part-combine-a2.ly | 17 - input/regression/part-combine-global.ly | 34 - input/regression/part-combine-solo-global.ly | 19 - input/regression/part-combine-solo.ly | 28 - input/regression/part-combine-text.ly | 21 - input/regression/part-combine.ly | 26 - input/regression/pedal-bracket.ly | 24 - input/regression/pedal-ped.ly | 25 - input/regression/phrasing-slur.ly | 16 - input/regression/prefatory-empty-spacing.ly | 17 - input/regression/prefatory-spacing-matter.ly | 21 - input/regression/property-once.ly | 18 - input/regression/rehearsal-mark-letter.ly | 21 - input/regression/rehearsal-mark-number.ly | 23 - input/regression/repeat-fold.ly | 19 - input/regression/repeat-line-break.ly | 21 - input/regression/repeat-percent-skipbars.ly | 18 - input/regression/repeat-percent.ly | 13 - input/regression/repeat-slash.ly | 15 - input/regression/repeat-unfold-all.ly | 18 - input/regression/repeat-unfold.ly | 28 - .../repeat-volta-skip-alternatives.ly | 13 - input/regression/repeat-volta.ly | 24 - input/regression/rest-collision-beam.ly | 25 - input/regression/rest-collision-default.ly | 19 - input/regression/rest-collision.ly | 55 - input/regression/rest-ledger.ly | 32 - input/regression/rest-pitch.ly | 23 - input/regression/rest-polyphonic.ly | 18 - input/regression/rest.ly | 19 - input/regression/rhythmic-staff.ly | 13 - input/regression/script-collision.ly | 18 - input/regression/script-stack-order.ly | 13 - input/regression/script-stacked.ly | 10 - input/regression/size11.ly | 18 - input/regression/size13.ly | 11 - input/regression/size16.ly | 13 - input/regression/size20.ly | 13 - input/regression/size23.ly | 12 - input/regression/size26.ly | 13 - input/regression/slur-area.ly | 35 - input/regression/slur-attachment.ly | 23 - input/regression/slur-broken-trend.ly | 25 - input/regression/slur-cross-staff.ly | 51 - input/regression/slur-dots.ly | 16 - input/regression/slur-nice.ly | 26 - input/regression/slur-rest.ly | 20 - input/regression/slur-staccato.ly | 18 - input/regression/slur-stem-broken.ly | 17 - input/regression/slur-symmetry-1.ly | 21 - input/regression/slur-symmetry.ly | 22 - input/regression/spacing-accidental-staffs.ly | 21 - .../regression/spacing-accidental-stretch.ly | 18 - input/regression/spacing-accidental.ly | 18 - input/regression/spacing-bar-stem.ly | 26 - input/regression/spacing-clef-first-note.ly | 25 - input/regression/spacing-end-of-line.ly | 19 - input/regression/spacing-ended-voice.ly | 22 - input/regression/spacing-folded-clef.ly | 14 - input/regression/spacing-folded-clef2.ly | 25 - input/regression/spacing-grace-duration.ly | 23 - input/regression/spacing-grace.ly | 12 - input/regression/spacing-knee.ly | 22 - input/regression/spacing-multi-tuplet.ly | 34 - input/regression/spacing-note-flags.ly | 21 - input/regression/spacing-rest.ly | 17 - input/regression/spacing-short-notes.ly | 25 - input/regression/spacing-stem-bar.ly | 29 - input/regression/spacing-stem-direction.ly | 25 - .../regression/spacing-stem-same-direction.ly | 17 - input/regression/spacing-to-grace.ly | 22 - input/regression/spacing-very-tight.ly | 23 - input/regression/span-bar.ly | 24 - input/regression/staccato-pos.ly | 18 - input/regression/staff-mixed-size.ly | 32 - input/regression/staff-tweak.ly | 30 - input/regression/stanza-number.ly | 21 - input/regression/stem-direction.ly | 27 - input/regression/stem-shorten.ly | 17 - input/regression/stem-spacing.ly | 35 - input/regression/stem-tremolo.ly | 32 - input/regression/system-extents.ly | 23 - input/regression/system-start-bracket.ly | 21 - input/regression/tablature.ly | 34 - input/regression/tag-filter.ly | 53 - input/regression/text-spanner.ly | 18 - input/regression/tie-accidental.ly | 58 - input/regression/tie-break-accidental.ly | 20 - input/regression/tie-busy-grobs.ly | 23 - input/regression/tie-chord.ly | 24 - input/regression/tie-dots.ly | 13 - input/regression/tie-grace.ly | 13 - input/regression/tie.ly | 23 - input/regression/tuplet-beam.ly | 17 - input/regression/tuplet-nest.ly | 34 - input/regression/tuplet-properties.ly | 45 - input/regression/tuplet-rest.ly | 19 - input/regression/tuplet-slope.ly | 31 - .../regression/tuplet-staffline-collision.ly | 18 - input/regression/tuplets.ly | 38 - input/regression/voice-follower.ly | 23 - input/regression/volta-broken-left-edge.ly | 123 - input/regression/volta-multi-staff.ly | 27 - input/screech-boink.ly | 63 - input/template/GNUmakefile | 13 - input/template/README | 51 - input/template/gregorian-transcription.ly | 28 - input/template/header.ly | 27 - input/template/jazz-combo.ly | 252 - input/template/melody-chords.ly | 26 - input/template/melody-lyrics-chords.ly | 31 - input/template/melody-lyrics.ly | 25 - input/template/melody.ly | 15 - input/template/piano-4-voices.ly | 42 - input/template/piano-dynamics.ly | 80 - input/template/piano-lyrics.ly | 42 - input/template/piano-melody-lyrics.ly | 45 - input/template/piano.ly | 26 - input/template/satb.ly | 52 - input/test/+.ly | 19 - input/test/GNUmakefile | 17 - input/test/ac-extra-voice.ly | 59 - input/test/add-staccato.ly | 36 - input/test/add-text-script.ly | 37 - input/test/ambitus-mixed.ly | 60 - input/test/ancient-accidentals.ly | 55 - input/test/ancient-font.ly | 294 - input/test/ancient-time.ly | 17 - input/test/bagpipe.ly | 87 - input/test/bar-always.ly | 19 - input/test/bar-lines-lyric-only.ly | 40 - input/test/bar-lines.ly | 22 - input/test/bar-number-every-five-reset.ly | 29 - input/test/bar-number-regular-interval.ly | 22 - input/test/bar-number-show-all.ly | 19 - input/test/beam-auto-4-8.ly | 36 - input/test/beam-auto-override.ly | 54 - input/test/beam-auto.ly | 63 - input/test/beam-control.ly | 26 - input/test/beam-count.ly | 27 - input/test/beam-dir-functions.ly | 50 - input/test/beam-isknee.ly | 26 - input/test/beam-neutral-direction.ly | 24 - input/test/beam-rest.ly | 20 - input/test/blank-notes.ly | 34 - input/test/blank-paper-tab.ly | 24 - input/test/blank-paper.ly | 24 - input/test/boxed-molecule.ly | 28 - input/test/caps.ly | 18 - input/test/cautionaries.ly | 20 - input/test/chord-names-german.ly | 36 - input/test/chord-names-jazz.ly | 145 - input/test/chord-names-no-inversions.ly | 19 - input/test/chords-without-melody.ly | 29 - input/test/clef-8-syntax.ly | 21 - input/test/clef-end-of-line.ly | 34 - input/test/clef-manual-control.ly | 32 - input/test/coriolan-margin.ly | 149 - input/test/count-systems.ly | 41 - input/test/crescendi.ly | 23 - input/test/cue-notes.ly | 49 - input/test/divisiones.ly | 53 - input/test/drarn-slurs.ly | 23 - input/test/drarn.ly | 29 - input/test/dynamic-absolute-volume.ly | 28 - input/test/dynamic-extra.ly | 21 - input/test/embedded-postscript.ly | 28 - input/test/embedded-scm.ly | 13 - input/test/embedded-tex.ly | 16 - input/test/engraver-contexts.ly | 30 - input/test/engraver-example.lyinc | 47 - input/test/engraver-one-by-one.ly | 233 - input/test/extra-staff.ly | 55 - input/test/figured-bass-alternate.ly | 25 - input/test/fill-a4.ly | 45 - input/test/follow-voice.ly | 29 - input/test/force-hshift.ly | 23 - input/test/gourlay.ly | 22 - input/test/gregorian-scripts.ly | 50 - input/test/harmonic.ly | 19 - input/test/header-ifelse.ly | 27 - input/test/hshift.ly | 24 - input/test/hymn.ly | 36 - input/test/improv.ly | 51 - input/test/incipit.ly | 69 - input/test/instrument-name-grandstaff.ly | 18 - input/test/lilypond-testpage.ly | 49 - input/test/lyric-hyphen-retain.ly | 50 - input/test/lyrics-skip-notes.ly | 23 - input/test/maximum-rest-count.ly | 43 - input/test/mensural-ligatures.ly | 84 - input/test/midi-scales.ly | 153 - input/test/move-accidentals.ly | 39 - input/test/move-specific-text.ly | 20 - input/test/music-box.ly | 144 - input/test/music-creation.ly | 33 - input/test/nested-groups.ly | 43 - input/test/no-bar-lines.ly | 24 - input/test/no-staff.ly | 21 - input/test/ossia.ly | 17 - input/test/part-combine.ly | 31 - input/test/partial-blank.ly | 33 - input/test/phrasing-slur-height.ly | 15 - input/test/polymetric-differing-notes.ly | 70 - input/test/polymetric.ly | 46 - input/test/preset-extent.ly | 27 - input/test/repeat-manual.ly | 25 - input/test/repeat-shorter-bracket.ly | 42 - input/test/repeat.ly | 28 - input/test/rest-dot-positions.ly | 59 - input/test/rests.ly | 43 - input/test/reverse-music.ly | 38 - input/test/rhythm-excercise.ly | 18 - input/test/scales-greek.ly | 36 - input/test/scheme-interactions.ly | 28 - input/test/script-abbreviations.ly | 26 - input/test/script-chart.ly | 57 - input/test/script-priority.ly | 24 - input/test/script-stack.ly | 15 - input/test/separate-staccato.ly | 21 - input/test/slur-attachment-override.ly | 28 - input/test/slur-beautiful.ly | 24 - input/test/slur-dash.ly | 25 - input/test/slur-manual.ly | 30 - input/test/slur-minimum-length.ly | 16 - input/test/slur-ugly.ly | 38 - input/test/smart-transpose.ly | 75 - input/test/spacing-2.ly | 36 - input/test/spanner-after-break-tweak.ly | 34 - input/test/staff-bracket.ly | 26 - input/test/staff-container.ly | 68 - input/test/staff-lines.ly | 32 - input/test/staff-size.ly | 26 - input/test/staff-space.ly | 24 - input/test/stem-centered.ly | 19 - input/test/stem-cross-staff.ly | 31 - input/test/stem-extend.ly | 25 - input/test/stem-length.ly | 15 - input/test/tablature-hammer.ly | 17 - input/test/tablature.ly | 31 - input/test/temporary-stave.ly | 44 - input/test/text-rotate.ly | 30 - input/test/text-spanner.ly | 41 - input/test/textscript.ly | 19 - input/test/tie-cross-voice.ly | 21 - input/test/tie-sparse.ly | 16 - input/test/time-signature-double.ly | 35 - input/test/time.ly | 188 - input/test/timing.ly | 33 - input/test/title.ly | 47 - input/test/to-xml.ly | 27 - input/test/transposition.ly | 52 - input/test/trill.ly | 32 - input/test/trills.ly | 106 - input/test/unfold-all-repeats.ly | 28 - input/test/vaticana.ly | 43 - input/test/version-output.ly | 23 - input/test/vertical-extent.ly | 28 - input/tutorial/GNUmakefile | 9 - input/tutorial/brahms-original.ly | 25 - input/tutorial/brahms-tweaked.ly | 37 - input/tutorial/lilbook.tex | 44 - input/twinkle-pop.ly | 71 - lexer-gcc-3.1.sh | 78 - lily/GNUmakefile | 39 - lily/accidental-engraver.cc | 488 - lily/accidental-placement.cc | 447 - lily/accidental.cc | 232 - lily/afm.cc | 207 - lily/align-interface.cc | 283 - lily/all-font-metrics.cc | 211 - lily/ambitus-engraver.cc | 200 - lily/ambitus.cc | 258 - lily/apply-context-iterator.cc | 28 - lily/arpeggio-engraver.cc | 109 - lily/arpeggio.cc | 158 - lily/audio-column.cc | 34 - lily/audio-element-info.cc | 39 - lily/audio-element.cc | 21 - lily/audio-item.cc | 88 - lily/audio-staff.cc | 33 - lily/auto-beam-engraver.cc | 512 - lily/auto-change-iterator.cc | 127 - lily/axis-group-engraver.cc | 209 - lily/axis-group-interface.cc | 125 - lily/balloon.cc | 94 - lily/bar-check-iterator.cc | 72 - lily/bar-engraver.cc | 118 - lily/bar-line.cc | 221 - lily/bar-number-engraver.cc | 124 - lily/beam-engraver.cc | 332 - lily/beam-performer.cc | 93 - lily/beam-quanting.cc | 539 - lily/beam.cc | 1587 --- lily/beaming-info.cc | 105 - lily/bezier-bow.cc | 72 - lily/bezier.cc | 232 - lily/binary-source-file.cc | 98 - lily/box.cc | 84 - lily/break-algorithm.cc | 108 - lily/break-align-engraver.cc | 157 - lily/break-align-interface.cc | 263 - lily/break-substitution.cc | 537 - lily/breathing-sign-engraver.cc | 82 - lily/breathing-sign.cc | 195 - lily/change-iterator.cc | 90 - lily/chord-name-engraver.cc | 160 - lily/chord-name.cc | 40 - lily/chord-tremolo-engraver.cc | 238 - lily/chord-tremolo-iterator.cc | 89 - lily/clef-engraver.cc | 199 - lily/clef.cc | 73 - lily/cluster-engraver.cc | 146 - lily/cluster.cc | 233 - lily/coherent-ligature-engraver.cc | 228 - lily/collision-engraver.cc | 85 - lily/column-x-positions.cc | 26 - lily/completion-note-heads-engraver.cc | 330 - lily/context-specced-music-iterator.cc | 40 - lily/context.cc | 175 - lily/custos-engraver.cc | 154 - lily/custos.cc | 113 - lily/dimension-cache.cc | 48 - lily/dimensions.cc | 19 - lily/directional-element-interface.cc | 28 - lily/dot-column-engraver.cc | 89 - lily/dot-column.cc | 315 - lily/dots.cc | 61 - lily/drum-note-engraver.cc | 197 - lily/drum-note-performer.cc | 136 - lily/duration.cc | 262 - lily/dynamic-engraver.cc | 434 - lily/dynamic-performer.cc | 135 - lily/engraver-group-engraver.cc | 191 - lily/engraver.cc | 85 - lily/event-chord-iterator.cc | 62 - lily/event.cc | 205 - lily/extender-engraver.cc | 153 - lily/figured-bass-engraver.cc | 101 - lily/fingering-engraver.cc | 153 - lily/folded-repeat-iterator.cc | 151 - lily/font-interface.cc | 60 - lily/font-metric.cc | 230 - lily/font-select.cc | 179 - lily/font-size-engraver.cc | 55 - lily/forbid-break-engraver.cc | 45 - lily/function-documentation.cc | 30 - lily/gdb.cc | 23 - lily/glissando-engraver.cc | 122 - lily/global-ctor.cc | 27 - lily/global-translator.cc | 162 - lily/gourlay-breaking.cc | 265 - lily/grace-iterator.cc | 37 - lily/grace-music.cc | 39 - lily/gregorian-ligature-engraver.cc | 283 - lily/gregorian-ligature.cc | 54 - lily/grob-info.cc | 40 - lily/grob-interface.cc | 84 - lily/grob-pitch-tuple.cc | 50 - lily/grob-pq-engraver.cc | 158 - lily/grob-property.cc | 119 - lily/grob-scheme.cc | 228 - lily/grob.cc | 857 -- lily/group-interface.cc | 36 - lily/hairpin.cc | 140 - lily/hara-kiri-group-spanner.cc | 109 - lily/horizontal-bracket-engraver.cc | 121 - lily/horizontal-bracket.cc | 69 - lily/hyphen-engraver.cc | 154 - lily/identifier-smob.cc | 61 - lily/includable-lexer.cc | 166 - lily/include/GNUmakefile | 8 - lily/include/accidental-interface.hh | 27 - lily/include/accidental-placement.hh | 32 - lily/include/afm.hh | 54 - lily/include/align-interface.hh | 34 - lily/include/all-font-metrics.hh | 38 - lily/include/ambitus.hh | 21 - lily/include/arpeggio.hh | 25 - lily/include/audio-column.hh | 38 - lily/include/audio-element-info.hh | 30 - lily/include/audio-element.hh | 30 - lily/include/audio-item.hh | 124 - lily/include/audio-staff.hh | 22 - lily/include/axis-group-interface.hh | 33 - lily/include/bar-line.hh | 28 - lily/include/bar.hh | 28 - lily/include/beam.hh | 80 - lily/include/beaming.hh | 42 - lily/include/bezier-bow.hh | 25 - lily/include/bezier.hh | 54 - lily/include/binary-source-file.hh | 27 - lily/include/box.hh | 40 - lily/include/break-algorithm.hh | 56 - lily/include/break-align-interface.hh | 33 - lily/include/breathing-sign.hh | 33 - lily/include/change-iterator.hh | 27 - lily/include/chord-name.hh | 23 - lily/include/chord-tremolo-iterator.hh | 38 - lily/include/chord.hh | 0 lily/include/clef.hh | 24 - lily/include/cluster.hh | 25 - lily/include/coherent-ligature-engraver.hh | 31 - lily/include/column-x-positions.hh | 28 - lily/include/context-def.hh | 63 - lily/include/custos.hh | 26 - lily/include/dimension-cache-callback.hh | 18 - lily/include/dimension-cache.hh | 56 - lily/include/dimensions.hh | 44 - lily/include/directional-element-interface.hh | 19 - lily/include/dot-column.hh | 29 - lily/include/dots.hh | 25 - lily/include/duration.hh | 52 - lily/include/engraver-group-engraver.hh | 47 - lily/include/engraver.hh | 70 - lily/include/event-chord-iterator.hh | 43 - lily/include/event.hh | 54 - lily/include/folded-repeat-iterator.hh | 49 - lily/include/font-interface.hh | 23 - lily/include/font-metric.hh | 47 - lily/include/global-ctor.hh | 32 - lily/include/global-translator.hh | 50 - lily/include/gourlay-breaking.hh | 24 - lily/include/grace-iterator.hh | 27 - lily/include/grace-music.hh | 26 - lily/include/gregorian-ligature-engraver.hh | 29 - lily/include/gregorian-ligature.hh | 57 - lily/include/grob-info.hh | 32 - lily/include/grob-interface.hh | 32 - lily/include/grob-pitch-tuple.hh | 32 - lily/include/grob.hh | 174 - lily/include/group-interface.hh | 59 - lily/include/hairpin.hh | 25 - lily/include/hara-kiri-group-spanner.hh | 29 - lily/include/identifier-smob.hh | 21 - lily/include/includable-lexer.hh | 54 - lily/include/input-file-results.hh | 44 - lily/include/input-smob.hh | 23 - lily/include/input.hh | 41 - lily/include/interpretation-context-handle.hh | 35 - lily/include/item.hh | 52 - lily/include/keyword.hh | 32 - lily/include/kpath.hh | 22 - lily/include/least-squares.hh | 19 - lily/include/ligature-engraver.hh | 52 - lily/include/lily-guile.hh | 315 - lily/include/lily-proto.hh | 163 - lily/include/lily-version.hh | 21 - lily/include/lilypond-input-version.hh | 31 - lily/include/line-group-group-engraver.hh | 36 - lily/include/line-interface.hh | 25 - lily/include/line-spanner.hh | 28 - lily/include/lookup.hh | 38 - lily/include/ly-modules.hh | 25 - lily/include/ly-smobs.icc | 109 - lily/include/lyric-combine-music.hh | 27 - lily/include/lyric-extender.hh | 37 - lily/include/lyric-hyphen.hh | 21 - lily/include/main.hh | 48 - lily/include/measure-grouping-spanner.hh | 25 - lily/include/mensural-ligature.hh | 40 - lily/include/midi-def.hh | 34 - lily/include/midi-item.hh | 210 - lily/include/midi-stream.hh | 28 - lily/include/midi-walker.hh | 50 - lily/include/minmax.tcc | 17 - lily/include/minterval.hh | 18 - lily/include/misc.hh | 26 - lily/include/molecule.hh | 90 - lily/include/moment.hh | 70 - lily/include/multi-measure-rest.hh | 33 - lily/include/music-constructor.hh | 35 - lily/include/music-iterator.hh | 133 - lily/include/music-list.hh | 52 - lily/include/music-output-def.hh | 47 - lily/include/music-output.hh | 32 - lily/include/music-sequence.hh | 37 - lily/include/music-wrapper-iterator.hh | 45 - lily/include/music-wrapper.hh | 37 - lily/include/music.hh | 75 - lily/include/my-lily-lexer.hh | 80 - lily/include/my-lily-parser.hh | 82 - lily/include/note-collision.hh | 42 - lily/include/note-column.hh | 47 - lily/include/note-head.hh | 34 - lily/include/note-spacing.hh | 27 - lily/include/paper-column.hh | 45 - lily/include/paper-def.hh | 79 - lily/include/paper-outputter.hh | 57 - lily/include/paper-score.hh | 58 - lily/include/parse-scm.hh | 22 - lily/include/percent-repeat-item.hh | 26 - lily/include/percent-repeat-iterator.hh | 37 - lily/include/performance.hh | 37 - lily/include/performer-group-performer.hh | 36 - lily/include/performer.hh | 39 - lily/include/pitch.hh | 93 - lily/include/property-iterator.hh | 65 - lily/include/protected-scm.hh | 33 - lily/include/relative-music.hh | 26 - lily/include/relative-octave-check.hh | 25 - lily/include/repeated-music.hh | 75 - lily/include/rest-collision.hh | 28 - lily/include/rest.hh | 25 - lily/include/rhythmic-head.hh | 29 - lily/include/rod.hh | 33 - lily/include/scaled-font-metric.hh | 34 - lily/include/scm-hash.hh | 66 - lily/include/scm-option.hh | 17 - lily/include/score-engraver.hh | 54 - lily/include/score-performer.hh | 41 - lily/include/score.hh | 37 - lily/include/script-column.hh | 28 - lily/include/script.hh | 36 - lily/include/self-alignment-interface.hh | 23 - lily/include/separating-group-spanner.hh | 26 - lily/include/separation-item.hh | 28 - lily/include/sequential-iterator.hh | 83 - lily/include/sequential-music-iterator.hh | 26 - lily/include/side-position-interface.hh | 43 - lily/include/simple-music-iterator.hh | 33 - lily/include/simple-spacer.hh | 60 - lily/include/simultaneous-music-iterator.hh | 41 - lily/include/skyline.hh | 40 - lily/include/slur-bezier-bow.hh | 43 - lily/include/slur.hh | 40 - lily/include/smobs.hh | 146 - lily/include/source-file.hh | 77 - lily/include/source.hh | 36 - lily/include/spaceable-grob.hh | 28 - lily/include/spacing-interface.hh | 13 - lily/include/span-bar.hh | 37 - lily/include/spanner.hh | 73 - lily/include/spring.hh | 47 - lily/include/staff-spacing.hh | 26 - lily/include/staff-symbol-referencer.hh | 47 - lily/include/staff-symbol.hh | 32 - lily/include/stem-info.hh | 28 - lily/include/stem-tremolo.hh | 29 - lily/include/stem.hh | 53 - lily/include/stream.hh | 28 - lily/include/swallow-perf.hh | 24 - lily/include/system-start-delimiter.hh | 34 - lily/include/system.hh | 52 - lily/include/text-item.hh | 32 - lily/include/text-spanner.hh | 24 - lily/include/tfm-reader.hh | 47 - lily/include/tfm.hh | 169 - lily/include/tie-column.hh | 29 - lily/include/tie.hh | 32 - lily/include/time-scaled-music-iterator.hh | 26 - lily/include/time-scaled-music.hh | 27 - lily/include/time-signature.hh | 28 - lily/include/timing-translator.hh | 34 - lily/include/translation-property.hh | 66 - lily/include/translator-group.hh | 92 - lily/include/translator.hh | 138 - lily/include/transposed-music.hh | 28 - lily/include/tuplet-bracket.hh | 42 - lily/include/type-swallow-translator.hh | 43 - lily/include/un-relativable-music.hh | 25 - lily/include/untransposable-music.hh | 26 - lily/include/vaticana-ligature.hh | 30 - lily/include/virtual-font-metric.hh | 37 - lily/include/volta-bracket.hh | 23 - lily/input-file-results.cc | 175 - lily/input-smob.cc | 102 - lily/input.cc | 147 - lily/instrument-name-engraver.cc | 189 - lily/interpretation-context-handle.cc | 102 - lily/item.cc | 229 - lily/key-engraver.cc | 203 - lily/key-performer.cc | 101 - lily/key-signature-interface.cc | 201 - lily/keyword.cc | 35 - lily/kpath.cc | 133 - lily/least-squares.cc | 50 - lily/lexer.ll | 850 -- lily/ligature-bracket-engraver.cc | 71 - lily/ligature-engraver.cc | 292 - lily/lily-guile.cc | 798 -- lily/lily-version.cc | 36 - lily/lilypond-version.cc | 47 - lily/line-interface.cc | 107 - lily/line-spanner.cc | 299 - lily/lookup.cc | 740 -- lily/ly-module.cc | 140 - lily/lyric-combine-music-iterator.cc | 196 - lily/lyric-combine-music.cc | 47 - lily/lyric-engraver.cc | 87 - lily/lyric-extender.cc | 119 - lily/lyric-hyphen.cc | 116 - lily/lyric-performer.cc | 76 - lily/lyric-phrasing-engraver.cc | 253 - lily/main.cc | 510 - lily/mark-engraver.cc | 153 - lily/measure-grouping-engraver.cc | 118 - lily/measure-grouping-spanner.cc | 65 - lily/melisma-engraver.cc | 48 - lily/melisma-performer.cc | 49 - lily/mensural-ligature-engraver.cc | 454 - lily/mensural-ligature.cc | 234 - lily/metronome-engraver.cc | 115 - lily/midi-def.cc | 51 - lily/midi-item.cc | 470 - lily/midi-stream.cc | 71 - lily/midi-walker.cc | 173 - lily/misc.cc | 36 - lily/molecule-scheme.cc | 227 - lily/molecule.cc | 192 - lily/moment.cc | 250 - lily/multi-measure-rest-engraver.cc | 300 - lily/multi-measure-rest.cc | 354 - lily/music-constructor.cc | 49 - lily/music-iterator.cc | 237 - lily/music-output-def.cc | 194 - lily/music-sequence.cc | 137 - lily/music-wrapper-iterator.cc | 78 - lily/music-wrapper.cc | 41 - lily/music.cc | 395 - lily/my-lily-lexer.cc | 244 - lily/my-lily-parser.cc | 141 - lily/new-accidental-engraver.cc | 553 - lily/new-fingering-engraver.cc | 331 - lily/new-lyric-combine-music-iterator.cc | 260 - lily/new-part-combine-iterator.cc | 387 - lily/note-collision.cc | 454 - lily/note-column.cc | 162 - lily/note-head-line-engraver.cc | 122 - lily/note-head.cc | 333 - lily/note-heads-engraver.cc | 120 - lily/note-name-engraver.cc | 80 - lily/note-performer.cc | 140 - lily/note-spacing.cc | 453 - lily/ottava-bracket.cc | 174 - lily/ottava-engraver.cc | 127 - lily/output-property-engraver.cc | 94 - lily/output-property-music-iterator.cc | 35 - lily/paper-column.cc | 168 - lily/paper-def.cc | 154 - lily/paper-outputter.cc | 207 - lily/paper-score.cc | 130 - lily/parse-scm.cc | 131 - lily/parser.yy | 2470 ----- lily/part-combine-engraver.cc | 110 - lily/percent-repeat-engraver.cc | 221 - lily/percent-repeat-item.cc | 85 - lily/percent-repeat-iterator.cc | 93 - lily/performance.cc | 168 - lily/performer-group-performer.cc | 120 - lily/performer.cc | 58 - lily/phrasing-slur-engraver.cc | 177 - lily/piano-pedal-bracket.cc | 91 - lily/piano-pedal-engraver.cc | 560 - lily/piano-pedal-performer.cc | 147 - lily/pitch-squash-engraver.cc | 50 - lily/pitch.cc | 452 - lily/property-iterator.cc | 171 - lily/protected-scm.cc | 64 - lily/recording-group-engraver.cc | 91 - lily/relative-octave-check.cc | 38 - lily/relative-octave-music.cc | 42 - lily/repeat-acknowledge-engraver.cc | 117 - lily/repeated-music.cc | 188 - lily/rest-collision-engraver.cc | 80 - lily/rest-collision.cc | 253 - lily/rest-engraver.cc | 124 - lily/rest.cc | 167 - lily/rhythmic-column-engraver.cc | 179 - lily/rhythmic-head.cc | 58 - lily/rod.cc | 44 - lily/scaled-font-metric.cc | 87 - lily/scm-hash.cc | 167 - lily/scm-option.cc | 180 - lily/score-engraver.cc | 356 - lily/score-performer.cc | 119 - lily/score.cc | 186 - lily/script-column-engraver.cc | 86 - lily/script-column.cc | 97 - lily/script-engraver.cc | 241 - lily/script.cc | 115 - lily/self-aligment-interface.cc | 114 - lily/separating-group-spanner.cc | 117 - lily/separating-line-group-engraver.cc | 231 - lily/separation-item.cc | 174 - lily/sequential-iterator.cc | 304 - lily/sequential-music-iterator.cc | 23 - lily/sequential-music.cc | 21 - lily/side-position-interface.cc | 256 - lily/simple-music-iterator.cc | 55 - lily/simple-spacer.cc | 408 - lily/simultaneous-music-iterator.cc | 159 - lily/simultaneous-music.cc | 50 - lily/skyline.cc | 198 - lily/slash-repeat-engraver.cc | 149 - lily/slur-bezier-bow.cc | 219 - lily/slur-engraver.cc | 192 - lily/slur-performer.cc | 95 - lily/slur.cc | 697 -- lily/source-file.cc | 339 - lily/source.cc | 85 - lily/spaceable-grob.cc | 109 - lily/spacing-engraver.cc | 188 - lily/spacing-spanner.cc | 961 -- lily/span-arpeggio-engraver.cc | 112 - lily/span-bar-engraver.cc | 99 - lily/span-bar.cc | 247 - lily/span-dynamic-performer.cc | 189 - lily/spanner.cc | 376 - lily/spring-smob.cc | 47 - lily/staff-collecting-engraver.cc | 46 - lily/staff-performer.cc | 157 - lily/staff-spacing.cc | 246 - lily/staff-symbol-engraver.cc | 86 - lily/staff-symbol-referencer.cc | 180 - lily/staff-symbol.cc | 129 - lily/stanza-number-engraver.cc | 86 - lily/stem-engraver.cc | 185 - lily/stem-tremolo.cc | 203 - lily/stem.cc | 997 -- lily/string-number-engraver.cc | 44 - lily/sustain-pedal.cc | 67 - lily/swallow-engraver.cc | 40 - lily/swallow-perf.cc | 38 - lily/system-start-delimiter-engraver.cc | 98 - lily/system-start-delimiter.cc | 187 - lily/system.cc | 622 -- lily/tab-note-heads-engraver.cc | 187 - lily/template5.cc | 32 - lily/tempo-performer.cc | 85 - lily/text-engraver.cc | 142 - lily/text-item.cc | 87 - lily/text-spanner-engraver.cc | 155 - lily/text-spanner.cc | 160 - lily/tfm-reader.cc | 298 - lily/tfm.cc | 135 - lily/tie-column.cc | 208 - lily/tie-engraver.cc | 197 - lily/tie-performer.cc | 223 - lily/tie.cc | 360 - lily/time-scaled-music-iterator.cc | 31 - lily/time-scaled-music.cc | 17 - lily/time-signature-engraver.cc | 90 - lily/time-signature-performer.cc | 70 - lily/time-signature.cc | 161 - lily/timing-engraver.cc | 98 - lily/timing-translator.cc | 165 - lily/translator-ctors.cc | 57 - lily/translator-def.cc | 319 - lily/translator-group.cc | 295 - lily/translator-property.cc | 192 - lily/translator-scheme.cc | 246 - lily/translator.cc | 159 - lily/transposed-music.cc | 23 - lily/tuplet-bracket.cc | 541 - lily/tuplet-engraver.cc | 161 - lily/type-swallow-translator.cc | 73 - lily/un-relativable-music.cc | 24 - lily/unfolded-repeat-iterator.cc | 172 - lily/untransposable-music.cc | 33 - lily/vaticana-ligature-engraver.cc | 587 -- lily/vaticana-ligature.cc | 336 - lily/vertical-align-engraver.cc | 80 - lily/virtual-font-metric.cc | 157 - lily/volta-bracket.cc | 137 - lily/volta-engraver.cc | 255 - lily/warn.cc | 20 - lilypond.vim | 78 - ly/GNUmakefile | 13 - ly/a3-init.ly | 5 - ly/a4-init.ly | 5 - ly/accordion-defs-init.ly | 56 - ly/book-init-init.ly | 14 - ly/catalan.ly | 76 - ly/center-init.ly | 15 - ly/chord-modifiers-init.ly | 39 - ly/declarations-init.ly | 138 - ly/deutsch.ly | 52 - ly/drumpitch-init.ly | 318 - ly/dynamic-scripts-init.ly | 32 - ly/english.ly | 91 - ly/engraver-init.ly | 781 -- ly/espanol.ly | 61 - ly/generate-documentation.ly | 7 - ly/generate-interface-doc-init.ly | 6 - ly/generic-paper-init.ly | 1 - ly/grace-init.ly | 33 - ly/gregorian-init.ly | 102 - ly/init.ly | 29 - ly/italiano.ly | 89 - ly/legal-init.ly | 5 - ly/letter-init.ly | 7 - ly/midi-init.ly | 6 - ly/nederlands.ly | 84 - ly/norsk.ly | 108 - ly/params-init.ly | 2 - ly/part-paper-init.ly | 10 - ly/performer-init.ly | 153 - ly/property-init.ly | 265 - ly/scale-definitions-init.ly | 100 - ly/script-init.ly | 51 - ly/spanners-init.ly | 65 - ly/suomi.ly | 51 - ly/svenska.ly | 45 - ly/tabloid-init.ly | 8 - make/GNUmakefile | 10 - make/generic-rules.make | 17 - make/generic-targets.make | 2 - make/generic-vars.make | 43 - make/lilypond-rules.make | 1 - make/lilypond-targets.make | 6 - make/lilypond-vars.make | 45 - make/lilypond.mandrake.spec.in | 275 - make/lilypond.redhat.spec.in | 172 - make/lilypond.suse.spec.in | 303 - make/ly-rules.make | 75 - make/ly-targets.make | 14 - make/ly-vars.make | 18 - make/ly.make | 86 - make/lysdoc-rules.make | 6 - make/lysdoc-targets.make | 3 - make/lysdoc-vars.make | 4 - make/mutopia-inclusions.make | 9 - make/mutopia-rules.make | 40 - make/mutopia-targets.make | 57 - make/mutopia-vars.make | 29 - make/ports-rules.make | 22 - make/ports-targets.make | 51 - make/ports-vars.make | 45 - make/srcdir.make.in | 54 - make/stepmake.make | 91 - make/substitute.make | 31 - make/toplevel-version.make | 8 - mf/GNUmakefile | 172 - mf/README | 18 - mf/feta-accordion.mf | 195 - mf/feta-autometric.mf | 139 - mf/feta-banier.mf | 453 - mf/feta-beugel.mf | 108 - mf/feta-beum.mf | 23 - mf/feta-bolletjes.mf | 535 - mf/feta-braces00.mf | 11 - mf/feta-braces10.mf | 11 - mf/feta-braces20.mf | 11 - mf/feta-braces30.mf | 11 - mf/feta-braces40.mf | 13 - mf/feta-braces50.mf | 11 - mf/feta-braces60.mf | 11 - mf/feta-braces70.mf | 11 - mf/feta-braces80.mf | 11 - mf/feta-din-code.mf | 737 -- mf/feta-din.mf | 34 - mf/feta-din10.mf | 9 - mf/feta-din11.mf | 9 - mf/feta-din12.mf | 9 - mf/feta-din13.mf | 9 - mf/feta-din14.mf | 9 - mf/feta-din17.mf | 9 - mf/feta-din19.mf | 9 - mf/feta-din6.mf | 9 - mf/feta-din8.mf | 7 - mf/feta-eindelijk.mf | 435 - mf/feta-generic.mf | 41 - mf/feta-haak.mf | 74 - mf/feta-harmonica.mf | 6 - mf/feta-ital-f.mf | 40 - mf/feta-ital-m.mf | 37 - mf/feta-ital-p.mf | 29 - mf/feta-ital-r.mf | 27 - mf/feta-ital-s.mf | 34 - mf/feta-ital-z.mf | 29 - mf/feta-klef.mf | 671 -- mf/feta-macros.mf | 324 - mf/feta-nummer-code.mf | 589 -- mf/feta-nummer.mf | 60 - mf/feta-nummer10.mf | 9 - mf/feta-nummer11.mf | 9 - mf/feta-nummer12.mf | 2 - mf/feta-nummer13.mf | 9 - mf/feta-nummer16.mf | 2 - mf/feta-nummer20.mf | 2 - mf/feta-nummer23.mf | 2 - mf/feta-nummer26.mf | 2 - mf/feta-nummer4.mf | 9 - mf/feta-nummer5.mf | 9 - mf/feta-nummer6.mf | 9 - mf/feta-nummer7.mf | 9 - mf/feta-nummer8.mf | 7 - mf/feta-params.mf | 62 - mf/feta-pendaal.mf | 299 - mf/feta-puntje.mf | 13 - mf/feta-schrift.mf | 1082 -- mf/feta-slag.mf | 199 - mf/feta-solfa.mf | 328 - mf/feta-test-generic.mf | 18 - mf/feta-test11.mf | 21 - mf/feta-test13.mf | 21 - mf/feta-test16.mf | 21 - mf/feta-test20.mf | 22 - mf/feta-test23.mf | 22 - mf/feta-test26.mf | 21 - mf/feta-timesig.mf | 101 - mf/feta-toevallig.mf | 404 - mf/feta.tex | 70 - mf/feta11.mf | 16 - mf/feta13.mf | 15 - mf/feta14.mf | 16 - mf/feta16.mf | 15 - mf/feta18.mf | 17 - mf/feta20.mf | 17 - mf/feta23.mf | 17 - mf/feta26.mf | 16 - mf/graycx.mf | 8 - mf/graylj.mf | 9 - mf/parmesan-accidentals.mf | 189 - mf/parmesan-clefs.mf | 928 -- mf/parmesan-custodes.mf | 357 - mf/parmesan-flags.mf | 233 - mf/parmesan-generic.mf | 37 - mf/parmesan-heads.mf | 821 -- mf/parmesan-rests.mf | 245 - mf/parmesan-scripts.mf | 138 - mf/parmesan-timesig.mf | 233 - mf/parmesan11.mf | 16 - mf/parmesan13.mf | 16 - mf/parmesan14.mf | 16 - mf/parmesan16.mf | 16 - mf/parmesan18.mf | 16 - mf/parmesan20.mf | 16 - mf/parmesan23.mf | 16 - mf/parmesan26.mf | 16 - po/GNUmakefile | 33 - po/TODO | 31 - po/cs.po | 2472 ----- po/da.po | 2663 ----- po/de.po | 2414 ----- po/es.po | 2517 ----- po/fi.po | 2414 ----- po/fr.po | 2626 ----- po/it.po | 2838 ------ po/ja.po | 2848 ------ po/lilypond.pot | 2292 ----- po/nl.po | 2655 ----- po/ru.po | 2607 ----- po/sv.po | 2623 ----- ps/GNUmakefile | 11 - ps/lilyponddefs.ps | 223 - ps/music-drawing-routines.ps | 378 - python/GNUmakefile | 16 - python/lilylib.py | 502 - python/midi.c | 414 - scm/GNUmakefile | 11 - scm/auto-beam.scm | 141 - scm/bass-figure.scm | 65 - scm/beam.scm | 61 - scm/c++.scm | 61 - scm/chord-entry.scm | 319 - scm/chord-generic-names.scm | 283 - scm/chord-ignatzek-names.scm | 319 - scm/chord-name.scm | 127 - scm/clef.scm | 151 - scm/define-grob-interfaces.scm | 141 - scm/define-grob-properties.scm | 598 -- scm/define-grobs.scm | 1316 --- scm/define-music-properties.scm | 112 - scm/define-music-types.scm | 747 -- scm/define-translator-properties.scm | 452 - scm/document-backend.scm | 199 - scm/document-functions.scm | 51 - scm/document-markup.scm | 51 - scm/document-music.scm | 126 - scm/document-translation.scm | 309 - scm/documentation-generate.scm | 123 - scm/documentation-lib.scm | 230 - scm/font.scm | 124 - scm/lily.scm | 506 - scm/midi.scm | 288 - scm/molecule.scm | 84 - scm/music-functions.scm | 788 -- scm/new-markup.scm | 812 -- scm/output-lib.scm | 261 - scm/output-pdf.scm | 270 - scm/output-pdftex.scm | 254 - scm/output-ps.scm | 297 - scm/output-sketch.scm | 342 - scm/output-sodipodi.scm | 375 - scm/output-tex.scm | 289 - scm/paper.scm | 89 - scm/part-combiner.scm | 596 -- scm/script.scm | 164 - scm/slur.scm | 131 - scm/standalone.scm | 37 - scm/to-xml.scm | 260 - scm/translation-functions.scm | 37 - scripts/GNUmakefile | 11 - scripts/abc2ly.py | 1332 --- scripts/convert-ly.py | 1995 ---- scripts/etf2ly.py | 1224 --- scripts/lilypond-book.py | 887 -- scripts/lilypond.py | 1016 -- scripts/midi2ly.py | 1114 -- scripts/mup2ly.py | 1332 --- scripts/musedata2ly.py | 652 -- scripts/old-lilypond-book.py | 1656 --- scripts/pmx2ly.py | 863 -- server.el.patch | 165 - stepmake/.cvsignore | 8 - stepmake/CHANGES | 388 - stepmake/GNUmakefile | 31 - stepmake/INSTALL.texi | 240 - stepmake/README | 18 - stepmake/TODO | 25 - stepmake/aclocal.m4 | 995 -- stepmake/autogen.sh | 62 - stepmake/bin/GNUmakefile | 11 - stepmake/bin/add-html-footer.py | 293 - stepmake/bin/config.guess | 1321 --- stepmake/bin/config.sub | 1443 --- stepmake/bin/fake-msgfmt.sh | 33 - stepmake/bin/install-dot-exe.sh | 25 - stepmake/bin/install-layout.sh | 12 - stepmake/bin/install-sh | 251 - stepmake/bin/ls-latex.py | 212 - stepmake/bin/make-version.py | 44 - stepmake/bin/ntpwd.py | 29 - stepmake/bin/package-diff.py | 346 - stepmake/bin/package-zet.sh | 44 - stepmake/bin/package-zip.sh | 59 - stepmake/bin/package-zip32.sh | 139 - stepmake/bin/packagepython.py | 161 - stepmake/bin/release.py | 80 - stepmake/bin/stepdirs.sh | 47 - stepmake/bin/stepmakeise.sh | 105 - stepmake/bin/text2html.py | 40 - stepmake/config.hh.in | 14 - stepmake/configure.in | 45 - stepmake/stepmake/GNUmakefile | 25 - .../automatically-configured.sub.make | 1 - .../stepmake/automatically-generated.sub.make | 10 - stepmake/stepmake/c++-files.make | 1 - stepmake/stepmake/c++-rules.make | 28 - stepmake/stepmake/c++-targets.make | 2 - stepmake/stepmake/c++-vars.make | 28 - stepmake/stepmake/c-rules.make | 28 - stepmake/stepmake/c-targets.make | 1 - stepmake/stepmake/c-vars.make | 16 - stepmake/stepmake/compile-vars.make | 13 - stepmake/stepmake/debian-rules.make | 7 - stepmake/stepmake/debian-targets.make | 5 - stepmake/stepmake/debian-vars.make | 2 - stepmake/stepmake/documentation-rules.make | 17 - stepmake/stepmake/documentation-targets.make | 24 - stepmake/stepmake/documentation-vars.make | 4 - stepmake/stepmake/elisp-rules.make | 1 - stepmake/stepmake/elisp-targets.make | 1 - stepmake/stepmake/elisp-vars.make | 3 - stepmake/stepmake/executable-rules.make | 4 - stepmake/stepmake/executable-targets.make | 23 - stepmake/stepmake/executable-vars.make | 7 - stepmake/stepmake/generic-rules.make | 9 - stepmake/stepmake/generic-targets.make | 184 - stepmake/stepmake/generic-vars.make | 125 - stepmake/stepmake/help2man-rules.make | 35 - stepmake/stepmake/help2man-targets.make | 21 - stepmake/stepmake/help2man-vars.make | 5 - stepmake/stepmake/install-library-rules.make | 1 - .../stepmake/install-library-targets.make | 22 - stepmake/stepmake/install-library-vars.make | 1 - stepmake/stepmake/install-out-rules.make | 1 - stepmake/stepmake/install-out-targets.make | 27 - stepmake/stepmake/install-out-vars.make | 1 - stepmake/stepmake/install-out.sub.make | 4 - stepmake/stepmake/install-rules.make | 1 - stepmake/stepmake/install-targets.make | 28 - stepmake/stepmake/install-vars.make | 1 - stepmake/stepmake/install.sub.make | 4 - stepmake/stepmake/intlrules.make | 7 - stepmake/stepmake/library-rules.make | 8 - stepmake/stepmake/library-targets.make | 3 - stepmake/stepmake/library-vars.make | 8 - stepmake/stepmake/makedir-rules.make | 1 - stepmake/stepmake/makedir-targets.make | 4 - stepmake/stepmake/makedir-vars.make | 17 - stepmake/stepmake/metafont-rules.make | 43 - stepmake/stepmake/metafont-targets.make | 12 - stepmake/stepmake/metafont-vars.make | 20 - stepmake/stepmake/metapost-rules.make | 14 - stepmake/stepmake/metapost-targets.make | 2 - stepmake/stepmake/metapost-vars.make | 7 - stepmake/stepmake/no-builtin-rules.make | 242 - stepmake/stepmake/omf-rules.make | 2 - stepmake/stepmake/omf-targets.make | 16 - stepmake/stepmake/omf-vars.make | 5 - stepmake/stepmake/po-rules.make | 1 - stepmake/stepmake/po-targets.make | 38 - stepmake/stepmake/po-vars.make | 1 - stepmake/stepmake/pod-rules.make | 30 - stepmake/stepmake/pod-vars.make | 3 - stepmake/stepmake/podir-rules.make | 1 - stepmake/stepmake/podir-targets.make | 32 - stepmake/stepmake/podir-vars.make | 1 - stepmake/stepmake/python-module-rules.make | 10 - stepmake/stepmake/python-module-targets.make | 1 - stepmake/stepmake/python-module-vars.make | 11 - stepmake/stepmake/scm-rules.make | 1 - stepmake/stepmake/scm-targets.make | 1 - stepmake/stepmake/scm-vars.make | 7 - stepmake/stepmake/script-rules.make | 25 - stepmake/stepmake/script-targets.make | 2 - stepmake/stepmake/script-vars.make | 15 - stepmake/stepmake/shared-library-rules.make | 4 - stepmake/stepmake/shared-library-targets.make | 4 - stepmake/stepmake/shared-library-vars.make | 23 - stepmake/stepmake/substitute-rules.make | 7 - stepmake/stepmake/substitute-vars.make | 18 - stepmake/stepmake/tex-rules.make | 22 - stepmake/stepmake/tex-targets.make | 1 - stepmake/stepmake/tex-vars.make | 4 - stepmake/stepmake/texinfo-rules.make | 36 - stepmake/stepmake/texinfo-targets.make | 33 - stepmake/stepmake/texinfo-vars.make | 14 - stepmake/stepmake/topdocs-rules.make | 1 - stepmake/stepmake/topdocs-targets.make | 9 - stepmake/stepmake/topdocs-vars.make | 2 - stepmake/stepmake/toplevel-rules.make | 1 - stepmake/stepmake/toplevel-targets.make | 82 - stepmake/stepmake/toplevel-vars.make | 7 - stepmake/stepmake/www-rules.make | 1 - stepmake/stepmake/www-targets.make | 1 - stepmake/stepmake/www-vars.make | 1 - tex/GNUmakefile | 17 - tex/headers.tex | 17 - tex/lily-debug.tex | 26 - tex/lily-pdf-defs.tex | 27 - tex/lily-ps-defs.tex | 54 - tex/lilyponddefs.tex | 205 - tex/ltest.tex | 16 - tex/number.tex | 33 - tex/test-pedal.tex | 39 - tex/texinfo.tex | 6732 ------------ tex/titledefs.tex | 195 - vimrc | 47 - 1560 files changed, 240038 deletions(-) delete mode 100644 .cvsignore delete mode 100644 COPYING delete mode 100644 ChangeLog delete mode 100644 DEDICATION delete mode 100644 Documentation/GNUmakefile delete mode 100644 Documentation/bibliography/GNUmakefile delete mode 100644 Documentation/bibliography/colorado.bib delete mode 100644 Documentation/bibliography/computer-notation.bib delete mode 100644 Documentation/bibliography/engraving.bib delete mode 100644 Documentation/bibliography/html-long.bst delete mode 100644 Documentation/index.html.in delete mode 100644 Documentation/misc/ANNOUNCE-0.1 delete mode 100644 Documentation/misc/ANNOUNCE-1.0 delete mode 100644 Documentation/misc/ANNOUNCE-1.2 delete mode 100644 Documentation/misc/CHANGES-0.0 delete mode 100644 Documentation/misc/CHANGES-0.1 delete mode 100644 Documentation/misc/CHANGES-1.0 delete mode 100644 Documentation/misc/CHANGES-1.1 delete mode 100644 Documentation/misc/CHANGES-1.2 delete mode 100644 Documentation/misc/CHANGES-1.3 delete mode 100644 Documentation/misc/CHANGES-1.4 delete mode 100644 Documentation/misc/CHANGES-1.5 delete mode 100644 Documentation/misc/ChangeLog-1.5 delete mode 100644 Documentation/misc/GNUmakefile delete mode 100644 Documentation/misc/NEWS-1.2 delete mode 100644 Documentation/misc/NEWS-1.4 delete mode 100644 Documentation/pictures/GNUmakefile delete mode 100644 Documentation/pictures/lelie-logo.xpm delete mode 100644 Documentation/topdocs/AUTHORS.texi delete mode 100644 Documentation/topdocs/GNUmakefile delete mode 100644 Documentation/topdocs/INSTALL.texi delete mode 100644 Documentation/topdocs/NEWS.texi delete mode 100644 Documentation/topdocs/README.texi delete mode 100644 Documentation/user/GNUmakefile delete mode 100644 Documentation/user/appendices.itely delete mode 100644 Documentation/user/baer-flat-bw.png delete mode 100644 Documentation/user/cheatsheet.itely delete mode 100644 Documentation/user/converters.itely delete mode 100644 Documentation/user/dedication.itely delete mode 100644 Documentation/user/dummy-interfaces.itexi delete mode 100644 Documentation/user/fdl.itexi delete mode 100644 Documentation/user/glossary.html.in delete mode 100644 Documentation/user/henle-flat-bw.png delete mode 100644 Documentation/user/internals.itely delete mode 100644 Documentation/user/introduction.itely delete mode 100644 Documentation/user/invoking.itexi delete mode 100644 Documentation/user/latex-example.latex delete mode 100644 Documentation/user/latex-lilypond-example.latex delete mode 100644 Documentation/user/lily-flat-bw.png delete mode 100644 Documentation/user/lilypond-book.itely delete mode 100644 Documentation/user/lilypond.tely delete mode 100644 Documentation/user/literature.itely delete mode 100644 Documentation/user/macros.itexi delete mode 100644 Documentation/user/music-glossary.tely delete mode 100644 Documentation/user/preface.itely delete mode 100644 Documentation/user/refman.itely delete mode 100644 Documentation/user/tutorial.itely delete mode 100644 GNUmakefile.in delete mode 100644 ROADMAP delete mode 100644 THANKS delete mode 100644 TODO delete mode 100644 VERSION delete mode 100755 autogen.sh delete mode 100644 buildscripts/GNUmakefile delete mode 100644 buildscripts/bib2html.py delete mode 100644 buildscripts/clean-fonts.sh delete mode 100644 buildscripts/help2man.pl delete mode 100644 buildscripts/install-info-html.sh delete mode 100644 buildscripts/lilypond-login.sh delete mode 100644 buildscripts/lilypond-profile.sh delete mode 100755 buildscripts/lilypond.words.py delete mode 100644 buildscripts/lys-to-tely.py delete mode 100644 buildscripts/make-font-dir.py delete mode 100644 buildscripts/mf-to-table.py delete mode 100644 buildscripts/mutopia-index.py delete mode 100644 buildscripts/ontgaar.py delete mode 100644 buildscripts/texi2omf.py delete mode 100644 config.hh.in delete mode 100644 config.make.in delete mode 100644 configure.in delete mode 100644 cygwin/GNUmakefile delete mode 100644 cygwin/README.in delete mode 100644 cygwin/bug-lilypond-cygwin.sh delete mode 100644 cygwin/changelog delete mode 100644 cygwin/lily-wins.py delete mode 100644 cygwin/lilypond-doc.hint delete mode 100644 cygwin/lilypond.hint delete mode 100644 cygwin/mknetrel delete mode 100644 cygwin/mknetrel.auto delete mode 100644 cygwin/mknetrel.cross delete mode 100644 cygwin/mknetrel.doc delete mode 100644 cygwin/mknetrel.patch delete mode 100644 cygwin/mknetrel.split delete mode 100644 cygwin/postinstall-lilypond.sh delete mode 100644 cygwin/postremove-lilypond.sh delete mode 100644 darwin.patch delete mode 100644 debian/GNUmakefile delete mode 100644 debian/README.Debian delete mode 100644 debian/changelog delete mode 100644 debian/control delete mode 100644 debian/control.foka delete mode 100644 debian/control.potato delete mode 100644 debian/copyright delete mode 100644 debian/emacsen-startup delete mode 100644 debian/lilypond-doc.README.Debian delete mode 100644 debian/lilypond-doc.dirs delete mode 100644 debian/lilypond-doc.doc-base delete mode 100644 debian/lilypond.dirs delete mode 100644 debian/lilypond.doc-base delete mode 100644 debian/lilypond1.3.copyright delete mode 100644 debian/lilypond1.7-doc.dirs delete mode 100644 debian/lilypond1.7.dirs delete mode 100644 debian/postinst delete mode 100644 debian/postrm delete mode 100644 debian/preinst delete mode 100644 debian/prerm delete mode 100644 debian/rules delete mode 100644 debian/watch delete mode 100644 elisp/GNUmakefile delete mode 100644 elisp/lilypond-font-lock.el delete mode 100644 elisp/lilypond-indent.el delete mode 100644 elisp/lilypond-init.el delete mode 100644 elisp/lilypond-mode.el delete mode 100644 emacsclient.patch delete mode 100644 flower/GNUmakefile delete mode 100644 flower/NEWS-1.0 delete mode 100644 flower/NEWS-1.1.46 delete mode 100644 flower/README delete mode 100644 flower/TODO delete mode 100644 flower/VERSION delete mode 100644 flower/axis.cc delete mode 100644 flower/cpu-timer.cc delete mode 100644 flower/direction.cc delete mode 100644 flower/file-path.cc delete mode 100644 flower/getopt-long.cc delete mode 100644 flower/include/GNUmakefile delete mode 100644 flower/include/arithmetic-operator.hh delete mode 100644 flower/include/array.hh delete mode 100644 flower/include/array.icc delete mode 100644 flower/include/axes.hh delete mode 100644 flower/include/compare.hh delete mode 100644 flower/include/cons.hh delete mode 100644 flower/include/cpu-timer.hh delete mode 100644 flower/include/direction.hh delete mode 100644 flower/include/drul-array.hh delete mode 100644 flower/include/file-path.hh delete mode 100644 flower/include/file-storage.hh delete mode 100644 flower/include/flower-proto.hh delete mode 100644 flower/include/getopt-long.hh delete mode 100644 flower/include/international.hh delete mode 100644 flower/include/interval.hh delete mode 100644 flower/include/interval.tcc delete mode 100644 flower/include/killing-cons.tcc delete mode 100644 flower/include/libc-extension.hh delete mode 100644 flower/include/offset.hh delete mode 100644 flower/include/parray.hh delete mode 100644 flower/include/parse-afm.hh delete mode 100644 flower/include/polynomial.hh delete mode 100644 flower/include/pqueue.hh delete mode 100644 flower/include/rational.hh delete mode 100644 flower/include/real.hh delete mode 100644 flower/include/string-convert.hh delete mode 100644 flower/include/string-data.hh delete mode 100644 flower/include/string-data.icc delete mode 100644 flower/include/string-handle.hh delete mode 100644 flower/include/string-handle.icc delete mode 100644 flower/include/string.hh delete mode 100644 flower/include/string.icc delete mode 100644 flower/include/virtual-methods.hh delete mode 100644 flower/include/warn.hh delete mode 100644 flower/international.cc delete mode 100644 flower/interval.cc delete mode 100644 flower/libc-extension.cc delete mode 100644 flower/offset.cc delete mode 100644 flower/parse-afm.cc delete mode 100644 flower/polynomial.cc delete mode 100644 flower/rational.cc delete mode 100644 flower/real.cc delete mode 100644 flower/rtti.cc delete mode 100644 flower/string-convert.cc delete mode 100644 flower/string.cc delete mode 100644 flower/stringutil.cc delete mode 100644 flower/warn.cc delete mode 100644 input/GNUmakefile delete mode 100644 input/ascii-art/GNUmakefile delete mode 100644 input/ascii-art/as-email.ly delete mode 100644 input/ascii-art/as1.ly delete mode 100644 input/ascii-art/as2.ly delete mode 100644 input/ascii-art/asciiscript5.ly delete mode 100644 input/ascii-art/asciiscript9.ly delete mode 100644 input/ascii-art/r-as.ly delete mode 100644 input/ascii-art/standchen-as5.ly delete mode 100644 input/ascii-art/standchen-as9.ly delete mode 100644 input/ascii-art/twinkle-as5.ly delete mode 100644 input/bugs/rhytmicstaff-tie.ly delete mode 100644 input/example-1.ly delete mode 100644 input/example-2.ly delete mode 100644 input/example-3.ly delete mode 100644 input/les-nereides.ly delete mode 100644 input/mutopia-header.ly delete mode 100644 input/mutopia/E.Satie/GNUmakefile delete mode 100644 input/mutopia/E.Satie/petite-ouverture-a-danser.ly delete mode 100644 input/mutopia/F.Schubert/GNUmakefile delete mode 100644 input/mutopia/F.Schubert/morgenlied.ly delete mode 100644 input/mutopia/F.Schubert/standchen.ly delete mode 100644 input/mutopia/GNUmakefile delete mode 100644 input/mutopia/J.S.Bach/GNUmakefile delete mode 100644 input/mutopia/J.S.Bach/baerenreiter-sarabande.ly delete mode 100644 input/mutopia/J.S.Bach/bwv940.ly delete mode 100644 input/mutopia/J.S.Bach/wtk1-fugue2.ly delete mode 100644 input/mutopia/R.Schumann/GNUmakefile delete mode 100644 input/mutopia/R.Schumann/romanze-op28-2.ly delete mode 100644 input/mutopia/W.A.Mozart/GNUmakefile delete mode 100644 input/mutopia/W.A.Mozart/mozart-hrn-3.ly delete mode 100644 input/mutopia/W.A.Mozart/mozart-hrn3-allegro.ly delete mode 100644 input/mutopia/W.A.Mozart/mozart-hrn3-defs.ly delete mode 100644 input/mutopia/W.A.Mozart/mozart-hrn3-romanze.ly delete mode 100644 input/mutopia/W.A.Mozart/mozart-hrn3-rondo.ly delete mode 100644 input/mutopia/claop.py delete mode 100644 input/no-notation/GNUmakefile delete mode 100644 input/no-notation/README delete mode 100644 input/no-notation/bar-check.ly delete mode 100644 input/no-notation/beam-warn.ly delete mode 100644 input/no-notation/denneboom.ly delete mode 100644 input/no-notation/die-staff.ly delete mode 100644 input/no-notation/dos-guile.ly delete mode 100644 input/no-notation/dos-ps.ly delete mode 100644 input/no-notation/dos-tex.ly delete mode 100644 input/no-notation/midi-grace.ly delete mode 100644 input/no-notation/midi-lyric-barcheck.ly delete mode 100644 input/no-notation/midi-transposing.ly delete mode 100644 input/no-notation/midi-tuplets.ly delete mode 100644 input/no-notation/midi-volume-equaliser.ly delete mode 100644 input/no-notation/parse.ly delete mode 100644 input/no-notation/parse2.ly delete mode 100644 input/no-notation/parse3.ly delete mode 100644 input/no-notation/parse4.ly delete mode 100644 input/no-notation/parse5.ly delete mode 100644 input/no-notation/recording.ly delete mode 100644 input/no-notation/safe-guile.ly delete mode 100644 input/no-notation/safe-include.ly delete mode 100644 input/no-notation/safe-ps.ly delete mode 100644 input/no-notation/safe-tex.ly delete mode 100644 input/no-notation/textcresc.ly delete mode 100644 input/paddy.abc delete mode 100644 input/puer-fragment.ly delete mode 100644 input/regression/+.ly delete mode 100644 input/regression/GNUmakefile delete mode 100644 input/regression/accidental-cautionary.ly delete mode 100644 input/regression/accidental-double.ly delete mode 100644 input/regression/accidental-ledger.ly delete mode 100644 input/regression/accidental-octave.ly delete mode 100644 input/regression/accidental-placement.ly delete mode 100644 input/regression/accidental-quarter.ly delete mode 100644 input/regression/accidental-single-double.ly delete mode 100644 input/regression/accidental-unbroken-tie-spacing.ly delete mode 100644 input/regression/accidental-voice.ly delete mode 100644 input/regression/accidental.ly delete mode 100644 input/regression/accidentals.ly delete mode 100644 input/regression/allfontstyle.lyinc delete mode 100644 input/regression/ambitus.ly delete mode 100644 input/regression/apply-context.ly delete mode 100644 input/regression/apply-output.ly delete mode 100644 input/regression/arpeggio-bracket.ly delete mode 100644 input/regression/arpeggio-collision.ly delete mode 100644 input/regression/arpeggio.ly delete mode 100644 input/regression/auto-beam-bar.ly delete mode 100644 input/regression/auto-beam-triplet.ly delete mode 100644 input/regression/auto-beam-tuplets.ly delete mode 100644 input/regression/auto-beam.ly delete mode 100644 input/regression/auto-change.ly delete mode 100644 input/regression/balloon.ly delete mode 100644 input/regression/bar-number.ly delete mode 100644 input/regression/bar-scripts.ly delete mode 100644 input/regression/beam-auto-knee.ly delete mode 100644 input/regression/beam-break.ly delete mode 100644 input/regression/beam-center-slope.ly delete mode 100644 input/regression/beam-concave.ly delete mode 100644 input/regression/beam-cross-staff-auto-knee.ly delete mode 100644 input/regression/beam-cross-staff-slope.ly delete mode 100644 input/regression/beam-cross-staff.ly delete mode 100644 input/regression/beam-damp.ly delete mode 100644 input/regression/beam-default-lengths.ly delete mode 100644 input/regression/beam-extreme.ly delete mode 100644 input/regression/beam-french.ly delete mode 100644 input/regression/beam-funky-beamlet.ly delete mode 100644 input/regression/beam-funky.ly delete mode 100644 input/regression/beam-knee-symmetry.ly delete mode 100644 input/regression/beam-length.ly delete mode 100644 input/regression/beam-manual-beaming.ly delete mode 100644 input/regression/beam-multiple-cross-staff.ly delete mode 100644 input/regression/beam-over-barline.ly delete mode 100644 input/regression/beam-position.ly delete mode 100644 input/regression/beam-postfix-notation.ly delete mode 100644 input/regression/beam-quanting-32nd.ly delete mode 100644 input/regression/beam-quanting-horizontal.ly delete mode 100644 input/regression/beam-quarter.ly delete mode 100644 input/regression/beam-rest.ly delete mode 100644 input/regression/beam-second.ly delete mode 100644 input/regression/beam-shortened-lengths.ly delete mode 100644 input/regression/beamed-chord.ly delete mode 100644 input/regression/beaming-ternary-metrum.ly delete mode 100644 input/regression/beaming.ly delete mode 100644 input/regression/beams.ly delete mode 100644 input/regression/between-systems.ly delete mode 100644 input/regression/break.ly delete mode 100644 input/regression/breathing-sign-ancient.ly delete mode 100644 input/regression/breathing-sign.ly delete mode 100644 input/regression/chord-changes.ly delete mode 100644 input/regression/chord-name-entry-11.ly delete mode 100644 input/regression/chord-name-entry.ly delete mode 100644 input/regression/chord-name-exceptions.ly delete mode 100644 input/regression/chord-name-major7.ly delete mode 100644 input/regression/chord-names-bass.ly delete mode 100644 input/regression/chord-scripts.ly delete mode 100644 input/regression/chord-tremolo-short.ly delete mode 100644 input/regression/chord-tremolo.ly delete mode 100644 input/regression/chords-funky-ignatzek.ly delete mode 100644 input/regression/clef-oct.ly delete mode 100644 input/regression/clefs.ly delete mode 100644 input/regression/cluster.ly delete mode 100644 input/regression/collision-2.ly delete mode 100644 input/regression/collision-dots-invert.ly delete mode 100644 input/regression/collision-dots-move.ly delete mode 100644 input/regression/collision-dots.ly delete mode 100644 input/regression/collision-head-chords.ly delete mode 100644 input/regression/collision-heads.ly delete mode 100644 input/regression/collision-merge-differently-dotted.ly delete mode 100644 input/regression/collision-merge-dots.ly delete mode 100644 input/regression/collision-mesh.ly delete mode 100644 input/regression/collisions.ly delete mode 100644 input/regression/completion-heads-polyphony.ly delete mode 100644 input/regression/completion-heads.ly delete mode 100644 input/regression/custos.ly delete mode 100644 input/regression/dot-flag-collision.ly delete mode 100644 input/regression/dots.ly delete mode 100644 input/regression/drums.ly delete mode 100644 input/regression/dynamics-broken-hairpin.ly delete mode 100644 input/regression/dynamics-glyphs.ly delete mode 100644 input/regression/dynamics-line.ly delete mode 100644 input/regression/dynamics-unbound-hairpin.ly delete mode 100644 input/regression/easy-notation.ly delete mode 100644 input/regression/figured-bass.ly delete mode 100644 input/regression/finger-chords.ly delete mode 100644 input/regression/fingering.ly delete mode 100644 input/regression/follow-voice-break.ly delete mode 100644 input/regression/font-magnification.ly delete mode 100644 input/regression/font-name.ly delete mode 100644 input/regression/generic-output-property.ly delete mode 100644 input/regression/glissando.ly delete mode 100644 input/regression/grace-auto-beam.ly delete mode 100644 input/regression/grace-bar-line.ly delete mode 100644 input/regression/grace-bar-number.ly delete mode 100644 input/regression/grace-beam.ly delete mode 100644 input/regression/grace-end.ly delete mode 100644 input/regression/grace-nest.ly delete mode 100644 input/regression/grace-nest1.ly delete mode 100644 input/regression/grace-nest2.ly delete mode 100644 input/regression/grace-nest3.ly delete mode 100644 input/regression/grace-nest4.ly delete mode 100644 input/regression/grace-nest5.ly delete mode 100644 input/regression/grace-part-combine.ly delete mode 100644 input/regression/grace-staff-length.ly delete mode 100644 input/regression/grace-start.ly delete mode 100644 input/regression/grace-stems.ly delete mode 100644 input/regression/grace-sync.ly delete mode 100644 input/regression/grace-types.ly delete mode 100644 input/regression/grace-unfold-repeat.ly delete mode 100644 input/regression/grace-volta-repeat-2.ly delete mode 100644 input/regression/grace-volta-repeat.ly delete mode 100644 input/regression/grace.ly delete mode 100644 input/regression/hairpin-dashed.ly delete mode 100644 input/regression/hairpin-ending.ly delete mode 100644 input/regression/hara-kiri-pianostaff.ly delete mode 100644 input/regression/instrument-name-markup.ly delete mode 100644 input/regression/instrument-name-partial.ly delete mode 100644 input/regression/instrument-name.ly delete mode 100644 input/regression/key-clefs.ly delete mode 100644 input/regression/key-signature-scordatura.ly delete mode 100644 input/regression/keys.ly delete mode 100644 input/regression/lyric-combine-new.ly delete mode 100644 input/regression/lyric-combine-polyphonic.ly delete mode 100644 input/regression/lyric-combine.ly delete mode 100644 input/regression/lyric-extender-broken.ly delete mode 100644 input/regression/lyric-extender.ly delete mode 100644 input/regression/lyric-hyphen-break.ly delete mode 100644 input/regression/lyric-hyphen.ly delete mode 100644 input/regression/lyric-phrasing-new.ly delete mode 100644 input/regression/lyric-phrasing.ly delete mode 100644 input/regression/lyrics-bar.ly delete mode 100644 input/regression/lyrics-melisma-beam.ly delete mode 100644 input/regression/markup-note.ly delete mode 100644 input/regression/markup-stack.ly delete mode 100644 input/regression/markup-user.ly delete mode 100644 input/regression/measure-grouping.ly delete mode 100644 input/regression/mensural.ly delete mode 100644 input/regression/metronome-marking.ly delete mode 100644 input/regression/mm-rests2.ly delete mode 100644 input/regression/mmrest-collision.ly delete mode 100644 input/regression/molecule-hacking.ly delete mode 100644 input/regression/multi-measure-rest-center.ly delete mode 100644 input/regression/multi-measure-rest-grace.ly delete mode 100644 input/regression/multi-measure-rest-instr-name.ly delete mode 100644 input/regression/multi-measure-rest-multi-staff-center.ly delete mode 100644 input/regression/multi-measure-rest-text.ly delete mode 100644 input/regression/multi-measure-rest.ly delete mode 100644 input/regression/music-map.ly delete mode 100644 input/regression/new-markup-scheme.ly delete mode 100644 input/regression/new-markup-syntax.ly delete mode 100644 input/regression/non-empty-text.ly delete mode 100644 input/regression/note-group-bracket.ly delete mode 100644 input/regression/note-head-chord.ly delete mode 100644 input/regression/note-head-harmonic.ly delete mode 100644 input/regression/note-head-style.ly delete mode 100644 input/regression/note-line.ly delete mode 100644 input/regression/number-staff-lines.ly delete mode 100644 input/regression/ottava-broken.ly delete mode 100644 input/regression/ottava.ly delete mode 100644 input/regression/part-combine-a2.ly delete mode 100644 input/regression/part-combine-global.ly delete mode 100644 input/regression/part-combine-solo-global.ly delete mode 100644 input/regression/part-combine-solo.ly delete mode 100644 input/regression/part-combine-text.ly delete mode 100644 input/regression/part-combine.ly delete mode 100644 input/regression/pedal-bracket.ly delete mode 100644 input/regression/pedal-ped.ly delete mode 100644 input/regression/phrasing-slur.ly delete mode 100644 input/regression/prefatory-empty-spacing.ly delete mode 100644 input/regression/prefatory-spacing-matter.ly delete mode 100644 input/regression/property-once.ly delete mode 100644 input/regression/rehearsal-mark-letter.ly delete mode 100644 input/regression/rehearsal-mark-number.ly delete mode 100644 input/regression/repeat-fold.ly delete mode 100644 input/regression/repeat-line-break.ly delete mode 100644 input/regression/repeat-percent-skipbars.ly delete mode 100644 input/regression/repeat-percent.ly delete mode 100644 input/regression/repeat-slash.ly delete mode 100644 input/regression/repeat-unfold-all.ly delete mode 100644 input/regression/repeat-unfold.ly delete mode 100644 input/regression/repeat-volta-skip-alternatives.ly delete mode 100644 input/regression/repeat-volta.ly delete mode 100644 input/regression/rest-collision-beam.ly delete mode 100644 input/regression/rest-collision-default.ly delete mode 100644 input/regression/rest-collision.ly delete mode 100644 input/regression/rest-ledger.ly delete mode 100644 input/regression/rest-pitch.ly delete mode 100644 input/regression/rest-polyphonic.ly delete mode 100644 input/regression/rest.ly delete mode 100644 input/regression/rhythmic-staff.ly delete mode 100644 input/regression/script-collision.ly delete mode 100644 input/regression/script-stack-order.ly delete mode 100644 input/regression/script-stacked.ly delete mode 100644 input/regression/size11.ly delete mode 100644 input/regression/size13.ly delete mode 100644 input/regression/size16.ly delete mode 100644 input/regression/size20.ly delete mode 100644 input/regression/size23.ly delete mode 100644 input/regression/size26.ly delete mode 100644 input/regression/slur-area.ly delete mode 100644 input/regression/slur-attachment.ly delete mode 100644 input/regression/slur-broken-trend.ly delete mode 100644 input/regression/slur-cross-staff.ly delete mode 100644 input/regression/slur-dots.ly delete mode 100644 input/regression/slur-nice.ly delete mode 100644 input/regression/slur-rest.ly delete mode 100644 input/regression/slur-staccato.ly delete mode 100644 input/regression/slur-stem-broken.ly delete mode 100644 input/regression/slur-symmetry-1.ly delete mode 100644 input/regression/slur-symmetry.ly delete mode 100644 input/regression/spacing-accidental-staffs.ly delete mode 100644 input/regression/spacing-accidental-stretch.ly delete mode 100644 input/regression/spacing-accidental.ly delete mode 100644 input/regression/spacing-bar-stem.ly delete mode 100644 input/regression/spacing-clef-first-note.ly delete mode 100644 input/regression/spacing-end-of-line.ly delete mode 100644 input/regression/spacing-ended-voice.ly delete mode 100644 input/regression/spacing-folded-clef.ly delete mode 100644 input/regression/spacing-folded-clef2.ly delete mode 100644 input/regression/spacing-grace-duration.ly delete mode 100644 input/regression/spacing-grace.ly delete mode 100644 input/regression/spacing-knee.ly delete mode 100644 input/regression/spacing-multi-tuplet.ly delete mode 100644 input/regression/spacing-note-flags.ly delete mode 100644 input/regression/spacing-rest.ly delete mode 100644 input/regression/spacing-short-notes.ly delete mode 100644 input/regression/spacing-stem-bar.ly delete mode 100644 input/regression/spacing-stem-direction.ly delete mode 100644 input/regression/spacing-stem-same-direction.ly delete mode 100644 input/regression/spacing-to-grace.ly delete mode 100644 input/regression/spacing-very-tight.ly delete mode 100644 input/regression/span-bar.ly delete mode 100644 input/regression/staccato-pos.ly delete mode 100644 input/regression/staff-mixed-size.ly delete mode 100644 input/regression/staff-tweak.ly delete mode 100644 input/regression/stanza-number.ly delete mode 100644 input/regression/stem-direction.ly delete mode 100644 input/regression/stem-shorten.ly delete mode 100644 input/regression/stem-spacing.ly delete mode 100644 input/regression/stem-tremolo.ly delete mode 100644 input/regression/system-extents.ly delete mode 100644 input/regression/system-start-bracket.ly delete mode 100644 input/regression/tablature.ly delete mode 100644 input/regression/tag-filter.ly delete mode 100644 input/regression/text-spanner.ly delete mode 100644 input/regression/tie-accidental.ly delete mode 100644 input/regression/tie-break-accidental.ly delete mode 100644 input/regression/tie-busy-grobs.ly delete mode 100644 input/regression/tie-chord.ly delete mode 100644 input/regression/tie-dots.ly delete mode 100644 input/regression/tie-grace.ly delete mode 100644 input/regression/tie.ly delete mode 100644 input/regression/tuplet-beam.ly delete mode 100644 input/regression/tuplet-nest.ly delete mode 100644 input/regression/tuplet-properties.ly delete mode 100644 input/regression/tuplet-rest.ly delete mode 100644 input/regression/tuplet-slope.ly delete mode 100644 input/regression/tuplet-staffline-collision.ly delete mode 100644 input/regression/tuplets.ly delete mode 100644 input/regression/voice-follower.ly delete mode 100644 input/regression/volta-broken-left-edge.ly delete mode 100644 input/regression/volta-multi-staff.ly delete mode 100644 input/screech-boink.ly delete mode 100644 input/template/GNUmakefile delete mode 100644 input/template/README delete mode 100644 input/template/gregorian-transcription.ly delete mode 100644 input/template/header.ly delete mode 100644 input/template/jazz-combo.ly delete mode 100644 input/template/melody-chords.ly delete mode 100644 input/template/melody-lyrics-chords.ly delete mode 100644 input/template/melody-lyrics.ly delete mode 100644 input/template/melody.ly delete mode 100644 input/template/piano-4-voices.ly delete mode 100644 input/template/piano-dynamics.ly delete mode 100644 input/template/piano-lyrics.ly delete mode 100644 input/template/piano-melody-lyrics.ly delete mode 100644 input/template/piano.ly delete mode 100644 input/template/satb.ly delete mode 100644 input/test/+.ly delete mode 100644 input/test/GNUmakefile delete mode 100644 input/test/ac-extra-voice.ly delete mode 100644 input/test/add-staccato.ly delete mode 100644 input/test/add-text-script.ly delete mode 100644 input/test/ambitus-mixed.ly delete mode 100644 input/test/ancient-accidentals.ly delete mode 100644 input/test/ancient-font.ly delete mode 100644 input/test/ancient-time.ly delete mode 100644 input/test/bagpipe.ly delete mode 100644 input/test/bar-always.ly delete mode 100644 input/test/bar-lines-lyric-only.ly delete mode 100644 input/test/bar-lines.ly delete mode 100644 input/test/bar-number-every-five-reset.ly delete mode 100644 input/test/bar-number-regular-interval.ly delete mode 100644 input/test/bar-number-show-all.ly delete mode 100644 input/test/beam-auto-4-8.ly delete mode 100644 input/test/beam-auto-override.ly delete mode 100644 input/test/beam-auto.ly delete mode 100644 input/test/beam-control.ly delete mode 100644 input/test/beam-count.ly delete mode 100644 input/test/beam-dir-functions.ly delete mode 100644 input/test/beam-isknee.ly delete mode 100644 input/test/beam-neutral-direction.ly delete mode 100644 input/test/beam-rest.ly delete mode 100644 input/test/blank-notes.ly delete mode 100644 input/test/blank-paper-tab.ly delete mode 100644 input/test/blank-paper.ly delete mode 100644 input/test/boxed-molecule.ly delete mode 100644 input/test/caps.ly delete mode 100644 input/test/cautionaries.ly delete mode 100644 input/test/chord-names-german.ly delete mode 100644 input/test/chord-names-jazz.ly delete mode 100644 input/test/chord-names-no-inversions.ly delete mode 100644 input/test/chords-without-melody.ly delete mode 100644 input/test/clef-8-syntax.ly delete mode 100644 input/test/clef-end-of-line.ly delete mode 100644 input/test/clef-manual-control.ly delete mode 100644 input/test/coriolan-margin.ly delete mode 100644 input/test/count-systems.ly delete mode 100644 input/test/crescendi.ly delete mode 100644 input/test/cue-notes.ly delete mode 100644 input/test/divisiones.ly delete mode 100644 input/test/drarn-slurs.ly delete mode 100644 input/test/drarn.ly delete mode 100644 input/test/dynamic-absolute-volume.ly delete mode 100644 input/test/dynamic-extra.ly delete mode 100644 input/test/embedded-postscript.ly delete mode 100644 input/test/embedded-scm.ly delete mode 100644 input/test/embedded-tex.ly delete mode 100644 input/test/engraver-contexts.ly delete mode 100644 input/test/engraver-example.lyinc delete mode 100644 input/test/engraver-one-by-one.ly delete mode 100644 input/test/extra-staff.ly delete mode 100644 input/test/figured-bass-alternate.ly delete mode 100644 input/test/fill-a4.ly delete mode 100644 input/test/follow-voice.ly delete mode 100644 input/test/force-hshift.ly delete mode 100644 input/test/gourlay.ly delete mode 100644 input/test/gregorian-scripts.ly delete mode 100644 input/test/harmonic.ly delete mode 100644 input/test/header-ifelse.ly delete mode 100644 input/test/hshift.ly delete mode 100644 input/test/hymn.ly delete mode 100644 input/test/improv.ly delete mode 100644 input/test/incipit.ly delete mode 100644 input/test/instrument-name-grandstaff.ly delete mode 100644 input/test/lilypond-testpage.ly delete mode 100644 input/test/lyric-hyphen-retain.ly delete mode 100644 input/test/lyrics-skip-notes.ly delete mode 100644 input/test/maximum-rest-count.ly delete mode 100644 input/test/mensural-ligatures.ly delete mode 100644 input/test/midi-scales.ly delete mode 100644 input/test/move-accidentals.ly delete mode 100644 input/test/move-specific-text.ly delete mode 100644 input/test/music-box.ly delete mode 100644 input/test/music-creation.ly delete mode 100644 input/test/nested-groups.ly delete mode 100644 input/test/no-bar-lines.ly delete mode 100644 input/test/no-staff.ly delete mode 100644 input/test/ossia.ly delete mode 100644 input/test/part-combine.ly delete mode 100644 input/test/partial-blank.ly delete mode 100644 input/test/phrasing-slur-height.ly delete mode 100644 input/test/polymetric-differing-notes.ly delete mode 100644 input/test/polymetric.ly delete mode 100644 input/test/preset-extent.ly delete mode 100644 input/test/repeat-manual.ly delete mode 100644 input/test/repeat-shorter-bracket.ly delete mode 100644 input/test/repeat.ly delete mode 100644 input/test/rest-dot-positions.ly delete mode 100644 input/test/rests.ly delete mode 100644 input/test/reverse-music.ly delete mode 100644 input/test/rhythm-excercise.ly delete mode 100644 input/test/scales-greek.ly delete mode 100644 input/test/scheme-interactions.ly delete mode 100644 input/test/script-abbreviations.ly delete mode 100644 input/test/script-chart.ly delete mode 100644 input/test/script-priority.ly delete mode 100644 input/test/script-stack.ly delete mode 100644 input/test/separate-staccato.ly delete mode 100644 input/test/slur-attachment-override.ly delete mode 100644 input/test/slur-beautiful.ly delete mode 100644 input/test/slur-dash.ly delete mode 100644 input/test/slur-manual.ly delete mode 100644 input/test/slur-minimum-length.ly delete mode 100644 input/test/slur-ugly.ly delete mode 100644 input/test/smart-transpose.ly delete mode 100644 input/test/spacing-2.ly delete mode 100644 input/test/spanner-after-break-tweak.ly delete mode 100644 input/test/staff-bracket.ly delete mode 100644 input/test/staff-container.ly delete mode 100644 input/test/staff-lines.ly delete mode 100644 input/test/staff-size.ly delete mode 100644 input/test/staff-space.ly delete mode 100644 input/test/stem-centered.ly delete mode 100644 input/test/stem-cross-staff.ly delete mode 100644 input/test/stem-extend.ly delete mode 100644 input/test/stem-length.ly delete mode 100644 input/test/tablature-hammer.ly delete mode 100644 input/test/tablature.ly delete mode 100644 input/test/temporary-stave.ly delete mode 100644 input/test/text-rotate.ly delete mode 100644 input/test/text-spanner.ly delete mode 100644 input/test/textscript.ly delete mode 100644 input/test/tie-cross-voice.ly delete mode 100644 input/test/tie-sparse.ly delete mode 100644 input/test/time-signature-double.ly delete mode 100644 input/test/time.ly delete mode 100644 input/test/timing.ly delete mode 100644 input/test/title.ly delete mode 100644 input/test/to-xml.ly delete mode 100644 input/test/transposition.ly delete mode 100644 input/test/trill.ly delete mode 100644 input/test/trills.ly delete mode 100644 input/test/unfold-all-repeats.ly delete mode 100644 input/test/vaticana.ly delete mode 100644 input/test/version-output.ly delete mode 100644 input/test/vertical-extent.ly delete mode 100644 input/tutorial/GNUmakefile delete mode 100644 input/tutorial/brahms-original.ly delete mode 100644 input/tutorial/brahms-tweaked.ly delete mode 100644 input/tutorial/lilbook.tex delete mode 100644 input/twinkle-pop.ly delete mode 100755 lexer-gcc-3.1.sh delete mode 100644 lily/GNUmakefile delete mode 100644 lily/accidental-engraver.cc delete mode 100644 lily/accidental-placement.cc delete mode 100644 lily/accidental.cc delete mode 100644 lily/afm.cc delete mode 100644 lily/align-interface.cc delete mode 100644 lily/all-font-metrics.cc delete mode 100644 lily/ambitus-engraver.cc delete mode 100644 lily/ambitus.cc delete mode 100644 lily/apply-context-iterator.cc delete mode 100644 lily/arpeggio-engraver.cc delete mode 100644 lily/arpeggio.cc delete mode 100644 lily/audio-column.cc delete mode 100644 lily/audio-element-info.cc delete mode 100644 lily/audio-element.cc delete mode 100644 lily/audio-item.cc delete mode 100644 lily/audio-staff.cc delete mode 100644 lily/auto-beam-engraver.cc delete mode 100644 lily/auto-change-iterator.cc delete mode 100644 lily/axis-group-engraver.cc delete mode 100644 lily/axis-group-interface.cc delete mode 100644 lily/balloon.cc delete mode 100644 lily/bar-check-iterator.cc delete mode 100644 lily/bar-engraver.cc delete mode 100644 lily/bar-line.cc delete mode 100644 lily/bar-number-engraver.cc delete mode 100644 lily/beam-engraver.cc delete mode 100644 lily/beam-performer.cc delete mode 100644 lily/beam-quanting.cc delete mode 100644 lily/beam.cc delete mode 100644 lily/beaming-info.cc delete mode 100644 lily/bezier-bow.cc delete mode 100644 lily/bezier.cc delete mode 100644 lily/binary-source-file.cc delete mode 100644 lily/box.cc delete mode 100644 lily/break-algorithm.cc delete mode 100644 lily/break-align-engraver.cc delete mode 100644 lily/break-align-interface.cc delete mode 100644 lily/break-substitution.cc delete mode 100644 lily/breathing-sign-engraver.cc delete mode 100644 lily/breathing-sign.cc delete mode 100644 lily/change-iterator.cc delete mode 100644 lily/chord-name-engraver.cc delete mode 100644 lily/chord-name.cc delete mode 100644 lily/chord-tremolo-engraver.cc delete mode 100644 lily/chord-tremolo-iterator.cc delete mode 100644 lily/clef-engraver.cc delete mode 100644 lily/clef.cc delete mode 100644 lily/cluster-engraver.cc delete mode 100644 lily/cluster.cc delete mode 100644 lily/coherent-ligature-engraver.cc delete mode 100644 lily/collision-engraver.cc delete mode 100644 lily/column-x-positions.cc delete mode 100644 lily/completion-note-heads-engraver.cc delete mode 100644 lily/context-specced-music-iterator.cc delete mode 100644 lily/context.cc delete mode 100644 lily/custos-engraver.cc delete mode 100644 lily/custos.cc delete mode 100644 lily/dimension-cache.cc delete mode 100644 lily/dimensions.cc delete mode 100644 lily/directional-element-interface.cc delete mode 100644 lily/dot-column-engraver.cc delete mode 100644 lily/dot-column.cc delete mode 100644 lily/dots.cc delete mode 100644 lily/drum-note-engraver.cc delete mode 100644 lily/drum-note-performer.cc delete mode 100644 lily/duration.cc delete mode 100644 lily/dynamic-engraver.cc delete mode 100644 lily/dynamic-performer.cc delete mode 100644 lily/engraver-group-engraver.cc delete mode 100644 lily/engraver.cc delete mode 100644 lily/event-chord-iterator.cc delete mode 100644 lily/event.cc delete mode 100644 lily/extender-engraver.cc delete mode 100644 lily/figured-bass-engraver.cc delete mode 100644 lily/fingering-engraver.cc delete mode 100644 lily/folded-repeat-iterator.cc delete mode 100644 lily/font-interface.cc delete mode 100644 lily/font-metric.cc delete mode 100644 lily/font-select.cc delete mode 100644 lily/font-size-engraver.cc delete mode 100644 lily/forbid-break-engraver.cc delete mode 100644 lily/function-documentation.cc delete mode 100644 lily/gdb.cc delete mode 100644 lily/glissando-engraver.cc delete mode 100644 lily/global-ctor.cc delete mode 100644 lily/global-translator.cc delete mode 100644 lily/gourlay-breaking.cc delete mode 100644 lily/grace-iterator.cc delete mode 100644 lily/grace-music.cc delete mode 100644 lily/gregorian-ligature-engraver.cc delete mode 100644 lily/gregorian-ligature.cc delete mode 100644 lily/grob-info.cc delete mode 100644 lily/grob-interface.cc delete mode 100644 lily/grob-pitch-tuple.cc delete mode 100644 lily/grob-pq-engraver.cc delete mode 100644 lily/grob-property.cc delete mode 100644 lily/grob-scheme.cc delete mode 100644 lily/grob.cc delete mode 100644 lily/group-interface.cc delete mode 100644 lily/hairpin.cc delete mode 100644 lily/hara-kiri-group-spanner.cc delete mode 100644 lily/horizontal-bracket-engraver.cc delete mode 100644 lily/horizontal-bracket.cc delete mode 100644 lily/hyphen-engraver.cc delete mode 100644 lily/identifier-smob.cc delete mode 100644 lily/includable-lexer.cc delete mode 100644 lily/include/GNUmakefile delete mode 100644 lily/include/accidental-interface.hh delete mode 100644 lily/include/accidental-placement.hh delete mode 100644 lily/include/afm.hh delete mode 100644 lily/include/align-interface.hh delete mode 100644 lily/include/all-font-metrics.hh delete mode 100644 lily/include/ambitus.hh delete mode 100644 lily/include/arpeggio.hh delete mode 100644 lily/include/audio-column.hh delete mode 100644 lily/include/audio-element-info.hh delete mode 100644 lily/include/audio-element.hh delete mode 100644 lily/include/audio-item.hh delete mode 100644 lily/include/audio-staff.hh delete mode 100644 lily/include/axis-group-interface.hh delete mode 100644 lily/include/bar-line.hh delete mode 100644 lily/include/bar.hh delete mode 100644 lily/include/beam.hh delete mode 100644 lily/include/beaming.hh delete mode 100644 lily/include/bezier-bow.hh delete mode 100644 lily/include/bezier.hh delete mode 100644 lily/include/binary-source-file.hh delete mode 100644 lily/include/box.hh delete mode 100644 lily/include/break-algorithm.hh delete mode 100644 lily/include/break-align-interface.hh delete mode 100644 lily/include/breathing-sign.hh delete mode 100644 lily/include/change-iterator.hh delete mode 100644 lily/include/chord-name.hh delete mode 100644 lily/include/chord-tremolo-iterator.hh delete mode 100644 lily/include/chord.hh delete mode 100644 lily/include/clef.hh delete mode 100644 lily/include/cluster.hh delete mode 100644 lily/include/coherent-ligature-engraver.hh delete mode 100644 lily/include/column-x-positions.hh delete mode 100644 lily/include/context-def.hh delete mode 100644 lily/include/custos.hh delete mode 100644 lily/include/dimension-cache-callback.hh delete mode 100644 lily/include/dimension-cache.hh delete mode 100644 lily/include/dimensions.hh delete mode 100644 lily/include/directional-element-interface.hh delete mode 100644 lily/include/dot-column.hh delete mode 100644 lily/include/dots.hh delete mode 100644 lily/include/duration.hh delete mode 100644 lily/include/engraver-group-engraver.hh delete mode 100644 lily/include/engraver.hh delete mode 100644 lily/include/event-chord-iterator.hh delete mode 100644 lily/include/event.hh delete mode 100644 lily/include/folded-repeat-iterator.hh delete mode 100644 lily/include/font-interface.hh delete mode 100644 lily/include/font-metric.hh delete mode 100644 lily/include/global-ctor.hh delete mode 100644 lily/include/global-translator.hh delete mode 100644 lily/include/gourlay-breaking.hh delete mode 100644 lily/include/grace-iterator.hh delete mode 100644 lily/include/grace-music.hh delete mode 100644 lily/include/gregorian-ligature-engraver.hh delete mode 100644 lily/include/gregorian-ligature.hh delete mode 100644 lily/include/grob-info.hh delete mode 100644 lily/include/grob-interface.hh delete mode 100644 lily/include/grob-pitch-tuple.hh delete mode 100644 lily/include/grob.hh delete mode 100644 lily/include/group-interface.hh delete mode 100644 lily/include/hairpin.hh delete mode 100644 lily/include/hara-kiri-group-spanner.hh delete mode 100644 lily/include/identifier-smob.hh delete mode 100644 lily/include/includable-lexer.hh delete mode 100644 lily/include/input-file-results.hh delete mode 100644 lily/include/input-smob.hh delete mode 100644 lily/include/input.hh delete mode 100644 lily/include/interpretation-context-handle.hh delete mode 100644 lily/include/item.hh delete mode 100644 lily/include/keyword.hh delete mode 100644 lily/include/kpath.hh delete mode 100644 lily/include/least-squares.hh delete mode 100644 lily/include/ligature-engraver.hh delete mode 100644 lily/include/lily-guile.hh delete mode 100644 lily/include/lily-proto.hh delete mode 100644 lily/include/lily-version.hh delete mode 100644 lily/include/lilypond-input-version.hh delete mode 100644 lily/include/line-group-group-engraver.hh delete mode 100644 lily/include/line-interface.hh delete mode 100644 lily/include/line-spanner.hh delete mode 100644 lily/include/lookup.hh delete mode 100644 lily/include/ly-modules.hh delete mode 100644 lily/include/ly-smobs.icc delete mode 100644 lily/include/lyric-combine-music.hh delete mode 100644 lily/include/lyric-extender.hh delete mode 100644 lily/include/lyric-hyphen.hh delete mode 100644 lily/include/main.hh delete mode 100644 lily/include/measure-grouping-spanner.hh delete mode 100644 lily/include/mensural-ligature.hh delete mode 100644 lily/include/midi-def.hh delete mode 100644 lily/include/midi-item.hh delete mode 100644 lily/include/midi-stream.hh delete mode 100644 lily/include/midi-walker.hh delete mode 100644 lily/include/minmax.tcc delete mode 100644 lily/include/minterval.hh delete mode 100644 lily/include/misc.hh delete mode 100644 lily/include/molecule.hh delete mode 100644 lily/include/moment.hh delete mode 100644 lily/include/multi-measure-rest.hh delete mode 100644 lily/include/music-constructor.hh delete mode 100644 lily/include/music-iterator.hh delete mode 100644 lily/include/music-list.hh delete mode 100644 lily/include/music-output-def.hh delete mode 100644 lily/include/music-output.hh delete mode 100644 lily/include/music-sequence.hh delete mode 100644 lily/include/music-wrapper-iterator.hh delete mode 100644 lily/include/music-wrapper.hh delete mode 100644 lily/include/music.hh delete mode 100644 lily/include/my-lily-lexer.hh delete mode 100644 lily/include/my-lily-parser.hh delete mode 100644 lily/include/note-collision.hh delete mode 100644 lily/include/note-column.hh delete mode 100644 lily/include/note-head.hh delete mode 100644 lily/include/note-spacing.hh delete mode 100644 lily/include/paper-column.hh delete mode 100644 lily/include/paper-def.hh delete mode 100644 lily/include/paper-outputter.hh delete mode 100644 lily/include/paper-score.hh delete mode 100644 lily/include/parse-scm.hh delete mode 100644 lily/include/percent-repeat-item.hh delete mode 100644 lily/include/percent-repeat-iterator.hh delete mode 100644 lily/include/performance.hh delete mode 100644 lily/include/performer-group-performer.hh delete mode 100644 lily/include/performer.hh delete mode 100644 lily/include/pitch.hh delete mode 100644 lily/include/property-iterator.hh delete mode 100644 lily/include/protected-scm.hh delete mode 100644 lily/include/relative-music.hh delete mode 100644 lily/include/relative-octave-check.hh delete mode 100644 lily/include/repeated-music.hh delete mode 100644 lily/include/rest-collision.hh delete mode 100644 lily/include/rest.hh delete mode 100644 lily/include/rhythmic-head.hh delete mode 100644 lily/include/rod.hh delete mode 100644 lily/include/scaled-font-metric.hh delete mode 100644 lily/include/scm-hash.hh delete mode 100644 lily/include/scm-option.hh delete mode 100644 lily/include/score-engraver.hh delete mode 100644 lily/include/score-performer.hh delete mode 100644 lily/include/score.hh delete mode 100644 lily/include/script-column.hh delete mode 100644 lily/include/script.hh delete mode 100644 lily/include/self-alignment-interface.hh delete mode 100644 lily/include/separating-group-spanner.hh delete mode 100644 lily/include/separation-item.hh delete mode 100644 lily/include/sequential-iterator.hh delete mode 100644 lily/include/sequential-music-iterator.hh delete mode 100644 lily/include/side-position-interface.hh delete mode 100644 lily/include/simple-music-iterator.hh delete mode 100644 lily/include/simple-spacer.hh delete mode 100644 lily/include/simultaneous-music-iterator.hh delete mode 100644 lily/include/skyline.hh delete mode 100644 lily/include/slur-bezier-bow.hh delete mode 100644 lily/include/slur.hh delete mode 100644 lily/include/smobs.hh delete mode 100644 lily/include/source-file.hh delete mode 100644 lily/include/source.hh delete mode 100644 lily/include/spaceable-grob.hh delete mode 100644 lily/include/spacing-interface.hh delete mode 100644 lily/include/span-bar.hh delete mode 100644 lily/include/spanner.hh delete mode 100644 lily/include/spring.hh delete mode 100644 lily/include/staff-spacing.hh delete mode 100644 lily/include/staff-symbol-referencer.hh delete mode 100644 lily/include/staff-symbol.hh delete mode 100644 lily/include/stem-info.hh delete mode 100644 lily/include/stem-tremolo.hh delete mode 100644 lily/include/stem.hh delete mode 100644 lily/include/stream.hh delete mode 100644 lily/include/swallow-perf.hh delete mode 100644 lily/include/system-start-delimiter.hh delete mode 100644 lily/include/system.hh delete mode 100644 lily/include/text-item.hh delete mode 100644 lily/include/text-spanner.hh delete mode 100644 lily/include/tfm-reader.hh delete mode 100644 lily/include/tfm.hh delete mode 100644 lily/include/tie-column.hh delete mode 100644 lily/include/tie.hh delete mode 100644 lily/include/time-scaled-music-iterator.hh delete mode 100644 lily/include/time-scaled-music.hh delete mode 100644 lily/include/time-signature.hh delete mode 100644 lily/include/timing-translator.hh delete mode 100644 lily/include/translation-property.hh delete mode 100644 lily/include/translator-group.hh delete mode 100644 lily/include/translator.hh delete mode 100644 lily/include/transposed-music.hh delete mode 100644 lily/include/tuplet-bracket.hh delete mode 100644 lily/include/type-swallow-translator.hh delete mode 100644 lily/include/un-relativable-music.hh delete mode 100644 lily/include/untransposable-music.hh delete mode 100644 lily/include/vaticana-ligature.hh delete mode 100644 lily/include/virtual-font-metric.hh delete mode 100644 lily/include/volta-bracket.hh delete mode 100644 lily/input-file-results.cc delete mode 100644 lily/input-smob.cc delete mode 100644 lily/input.cc delete mode 100644 lily/instrument-name-engraver.cc delete mode 100644 lily/interpretation-context-handle.cc delete mode 100644 lily/item.cc delete mode 100644 lily/key-engraver.cc delete mode 100644 lily/key-performer.cc delete mode 100644 lily/key-signature-interface.cc delete mode 100644 lily/keyword.cc delete mode 100644 lily/kpath.cc delete mode 100644 lily/least-squares.cc delete mode 100644 lily/lexer.ll delete mode 100644 lily/ligature-bracket-engraver.cc delete mode 100644 lily/ligature-engraver.cc delete mode 100644 lily/lily-guile.cc delete mode 100644 lily/lily-version.cc delete mode 100644 lily/lilypond-version.cc delete mode 100644 lily/line-interface.cc delete mode 100644 lily/line-spanner.cc delete mode 100644 lily/lookup.cc delete mode 100644 lily/ly-module.cc delete mode 100644 lily/lyric-combine-music-iterator.cc delete mode 100644 lily/lyric-combine-music.cc delete mode 100644 lily/lyric-engraver.cc delete mode 100644 lily/lyric-extender.cc delete mode 100644 lily/lyric-hyphen.cc delete mode 100644 lily/lyric-performer.cc delete mode 100644 lily/lyric-phrasing-engraver.cc delete mode 100644 lily/main.cc delete mode 100644 lily/mark-engraver.cc delete mode 100644 lily/measure-grouping-engraver.cc delete mode 100644 lily/measure-grouping-spanner.cc delete mode 100644 lily/melisma-engraver.cc delete mode 100644 lily/melisma-performer.cc delete mode 100644 lily/mensural-ligature-engraver.cc delete mode 100644 lily/mensural-ligature.cc delete mode 100644 lily/metronome-engraver.cc delete mode 100644 lily/midi-def.cc delete mode 100644 lily/midi-item.cc delete mode 100644 lily/midi-stream.cc delete mode 100644 lily/midi-walker.cc delete mode 100644 lily/misc.cc delete mode 100644 lily/molecule-scheme.cc delete mode 100644 lily/molecule.cc delete mode 100644 lily/moment.cc delete mode 100644 lily/multi-measure-rest-engraver.cc delete mode 100644 lily/multi-measure-rest.cc delete mode 100644 lily/music-constructor.cc delete mode 100644 lily/music-iterator.cc delete mode 100644 lily/music-output-def.cc delete mode 100644 lily/music-sequence.cc delete mode 100644 lily/music-wrapper-iterator.cc delete mode 100644 lily/music-wrapper.cc delete mode 100644 lily/music.cc delete mode 100644 lily/my-lily-lexer.cc delete mode 100644 lily/my-lily-parser.cc delete mode 100644 lily/new-accidental-engraver.cc delete mode 100644 lily/new-fingering-engraver.cc delete mode 100644 lily/new-lyric-combine-music-iterator.cc delete mode 100644 lily/new-part-combine-iterator.cc delete mode 100644 lily/note-collision.cc delete mode 100644 lily/note-column.cc delete mode 100644 lily/note-head-line-engraver.cc delete mode 100644 lily/note-head.cc delete mode 100644 lily/note-heads-engraver.cc delete mode 100644 lily/note-name-engraver.cc delete mode 100644 lily/note-performer.cc delete mode 100644 lily/note-spacing.cc delete mode 100644 lily/ottava-bracket.cc delete mode 100644 lily/ottava-engraver.cc delete mode 100644 lily/output-property-engraver.cc delete mode 100644 lily/output-property-music-iterator.cc delete mode 100644 lily/paper-column.cc delete mode 100644 lily/paper-def.cc delete mode 100644 lily/paper-outputter.cc delete mode 100644 lily/paper-score.cc delete mode 100644 lily/parse-scm.cc delete mode 100644 lily/parser.yy delete mode 100644 lily/part-combine-engraver.cc delete mode 100644 lily/percent-repeat-engraver.cc delete mode 100644 lily/percent-repeat-item.cc delete mode 100644 lily/percent-repeat-iterator.cc delete mode 100644 lily/performance.cc delete mode 100644 lily/performer-group-performer.cc delete mode 100644 lily/performer.cc delete mode 100644 lily/phrasing-slur-engraver.cc delete mode 100644 lily/piano-pedal-bracket.cc delete mode 100644 lily/piano-pedal-engraver.cc delete mode 100644 lily/piano-pedal-performer.cc delete mode 100644 lily/pitch-squash-engraver.cc delete mode 100644 lily/pitch.cc delete mode 100644 lily/property-iterator.cc delete mode 100644 lily/protected-scm.cc delete mode 100644 lily/recording-group-engraver.cc delete mode 100644 lily/relative-octave-check.cc delete mode 100644 lily/relative-octave-music.cc delete mode 100644 lily/repeat-acknowledge-engraver.cc delete mode 100644 lily/repeated-music.cc delete mode 100644 lily/rest-collision-engraver.cc delete mode 100644 lily/rest-collision.cc delete mode 100644 lily/rest-engraver.cc delete mode 100644 lily/rest.cc delete mode 100644 lily/rhythmic-column-engraver.cc delete mode 100644 lily/rhythmic-head.cc delete mode 100644 lily/rod.cc delete mode 100644 lily/scaled-font-metric.cc delete mode 100644 lily/scm-hash.cc delete mode 100644 lily/scm-option.cc delete mode 100644 lily/score-engraver.cc delete mode 100644 lily/score-performer.cc delete mode 100644 lily/score.cc delete mode 100644 lily/script-column-engraver.cc delete mode 100644 lily/script-column.cc delete mode 100644 lily/script-engraver.cc delete mode 100644 lily/script.cc delete mode 100644 lily/self-aligment-interface.cc delete mode 100644 lily/separating-group-spanner.cc delete mode 100644 lily/separating-line-group-engraver.cc delete mode 100644 lily/separation-item.cc delete mode 100644 lily/sequential-iterator.cc delete mode 100644 lily/sequential-music-iterator.cc delete mode 100644 lily/sequential-music.cc delete mode 100644 lily/side-position-interface.cc delete mode 100644 lily/simple-music-iterator.cc delete mode 100644 lily/simple-spacer.cc delete mode 100644 lily/simultaneous-music-iterator.cc delete mode 100644 lily/simultaneous-music.cc delete mode 100644 lily/skyline.cc delete mode 100644 lily/slash-repeat-engraver.cc delete mode 100644 lily/slur-bezier-bow.cc delete mode 100644 lily/slur-engraver.cc delete mode 100644 lily/slur-performer.cc delete mode 100644 lily/slur.cc delete mode 100644 lily/source-file.cc delete mode 100644 lily/source.cc delete mode 100644 lily/spaceable-grob.cc delete mode 100644 lily/spacing-engraver.cc delete mode 100644 lily/spacing-spanner.cc delete mode 100644 lily/span-arpeggio-engraver.cc delete mode 100644 lily/span-bar-engraver.cc delete mode 100644 lily/span-bar.cc delete mode 100644 lily/span-dynamic-performer.cc delete mode 100644 lily/spanner.cc delete mode 100644 lily/spring-smob.cc delete mode 100644 lily/staff-collecting-engraver.cc delete mode 100644 lily/staff-performer.cc delete mode 100644 lily/staff-spacing.cc delete mode 100644 lily/staff-symbol-engraver.cc delete mode 100644 lily/staff-symbol-referencer.cc delete mode 100644 lily/staff-symbol.cc delete mode 100644 lily/stanza-number-engraver.cc delete mode 100644 lily/stem-engraver.cc delete mode 100644 lily/stem-tremolo.cc delete mode 100644 lily/stem.cc delete mode 100644 lily/string-number-engraver.cc delete mode 100644 lily/sustain-pedal.cc delete mode 100644 lily/swallow-engraver.cc delete mode 100644 lily/swallow-perf.cc delete mode 100644 lily/system-start-delimiter-engraver.cc delete mode 100644 lily/system-start-delimiter.cc delete mode 100644 lily/system.cc delete mode 100644 lily/tab-note-heads-engraver.cc delete mode 100644 lily/template5.cc delete mode 100644 lily/tempo-performer.cc delete mode 100644 lily/text-engraver.cc delete mode 100644 lily/text-item.cc delete mode 100644 lily/text-spanner-engraver.cc delete mode 100644 lily/text-spanner.cc delete mode 100644 lily/tfm-reader.cc delete mode 100644 lily/tfm.cc delete mode 100644 lily/tie-column.cc delete mode 100644 lily/tie-engraver.cc delete mode 100644 lily/tie-performer.cc delete mode 100644 lily/tie.cc delete mode 100644 lily/time-scaled-music-iterator.cc delete mode 100644 lily/time-scaled-music.cc delete mode 100644 lily/time-signature-engraver.cc delete mode 100644 lily/time-signature-performer.cc delete mode 100644 lily/time-signature.cc delete mode 100644 lily/timing-engraver.cc delete mode 100644 lily/timing-translator.cc delete mode 100644 lily/translator-ctors.cc delete mode 100644 lily/translator-def.cc delete mode 100644 lily/translator-group.cc delete mode 100644 lily/translator-property.cc delete mode 100644 lily/translator-scheme.cc delete mode 100644 lily/translator.cc delete mode 100644 lily/transposed-music.cc delete mode 100644 lily/tuplet-bracket.cc delete mode 100644 lily/tuplet-engraver.cc delete mode 100644 lily/type-swallow-translator.cc delete mode 100644 lily/un-relativable-music.cc delete mode 100644 lily/unfolded-repeat-iterator.cc delete mode 100644 lily/untransposable-music.cc delete mode 100644 lily/vaticana-ligature-engraver.cc delete mode 100644 lily/vaticana-ligature.cc delete mode 100644 lily/vertical-align-engraver.cc delete mode 100644 lily/virtual-font-metric.cc delete mode 100644 lily/volta-bracket.cc delete mode 100644 lily/volta-engraver.cc delete mode 100644 lily/warn.cc delete mode 100644 lilypond.vim delete mode 100644 ly/GNUmakefile delete mode 100644 ly/a3-init.ly delete mode 100644 ly/a4-init.ly delete mode 100644 ly/accordion-defs-init.ly delete mode 100644 ly/book-init-init.ly delete mode 100644 ly/catalan.ly delete mode 100644 ly/center-init.ly delete mode 100644 ly/chord-modifiers-init.ly delete mode 100644 ly/declarations-init.ly delete mode 100644 ly/deutsch.ly delete mode 100644 ly/drumpitch-init.ly delete mode 100644 ly/dynamic-scripts-init.ly delete mode 100644 ly/english.ly delete mode 100644 ly/engraver-init.ly delete mode 100644 ly/espanol.ly delete mode 100644 ly/generate-documentation.ly delete mode 100644 ly/generate-interface-doc-init.ly delete mode 100644 ly/generic-paper-init.ly delete mode 100644 ly/grace-init.ly delete mode 100644 ly/gregorian-init.ly delete mode 100644 ly/init.ly delete mode 100644 ly/italiano.ly delete mode 100644 ly/legal-init.ly delete mode 100644 ly/letter-init.ly delete mode 100644 ly/midi-init.ly delete mode 100644 ly/nederlands.ly delete mode 100644 ly/norsk.ly delete mode 100644 ly/params-init.ly delete mode 100644 ly/part-paper-init.ly delete mode 100644 ly/performer-init.ly delete mode 100644 ly/property-init.ly delete mode 100644 ly/scale-definitions-init.ly delete mode 100644 ly/script-init.ly delete mode 100644 ly/spanners-init.ly delete mode 100644 ly/suomi.ly delete mode 100644 ly/svenska.ly delete mode 100644 ly/tabloid-init.ly delete mode 100644 make/GNUmakefile delete mode 100644 make/generic-rules.make delete mode 100644 make/generic-targets.make delete mode 100644 make/generic-vars.make delete mode 100644 make/lilypond-rules.make delete mode 100644 make/lilypond-targets.make delete mode 100644 make/lilypond-vars.make delete mode 100644 make/lilypond.mandrake.spec.in delete mode 100644 make/lilypond.redhat.spec.in delete mode 100644 make/lilypond.suse.spec.in delete mode 100644 make/ly-rules.make delete mode 100644 make/ly-targets.make delete mode 100644 make/ly-vars.make delete mode 100644 make/ly.make delete mode 100644 make/lysdoc-rules.make delete mode 100644 make/lysdoc-targets.make delete mode 100644 make/lysdoc-vars.make delete mode 100644 make/mutopia-inclusions.make delete mode 100644 make/mutopia-rules.make delete mode 100644 make/mutopia-targets.make delete mode 100644 make/mutopia-vars.make delete mode 100644 make/ports-rules.make delete mode 100644 make/ports-targets.make delete mode 100644 make/ports-vars.make delete mode 100644 make/srcdir.make.in delete mode 100644 make/stepmake.make delete mode 100644 make/substitute.make delete mode 100644 make/toplevel-version.make delete mode 100644 mf/GNUmakefile delete mode 100644 mf/README delete mode 100644 mf/feta-accordion.mf delete mode 100644 mf/feta-autometric.mf delete mode 100644 mf/feta-banier.mf delete mode 100644 mf/feta-beugel.mf delete mode 100644 mf/feta-beum.mf delete mode 100644 mf/feta-bolletjes.mf delete mode 100644 mf/feta-braces00.mf delete mode 100644 mf/feta-braces10.mf delete mode 100644 mf/feta-braces20.mf delete mode 100644 mf/feta-braces30.mf delete mode 100644 mf/feta-braces40.mf delete mode 100644 mf/feta-braces50.mf delete mode 100644 mf/feta-braces60.mf delete mode 100644 mf/feta-braces70.mf delete mode 100644 mf/feta-braces80.mf delete mode 100644 mf/feta-din-code.mf delete mode 100644 mf/feta-din.mf delete mode 100644 mf/feta-din10.mf delete mode 100644 mf/feta-din11.mf delete mode 100644 mf/feta-din12.mf delete mode 100644 mf/feta-din13.mf delete mode 100644 mf/feta-din14.mf delete mode 100644 mf/feta-din17.mf delete mode 100644 mf/feta-din19.mf delete mode 100644 mf/feta-din6.mf delete mode 100644 mf/feta-din8.mf delete mode 100644 mf/feta-eindelijk.mf delete mode 100644 mf/feta-generic.mf delete mode 100644 mf/feta-haak.mf delete mode 100644 mf/feta-harmonica.mf delete mode 100644 mf/feta-ital-f.mf delete mode 100644 mf/feta-ital-m.mf delete mode 100644 mf/feta-ital-p.mf delete mode 100644 mf/feta-ital-r.mf delete mode 100644 mf/feta-ital-s.mf delete mode 100644 mf/feta-ital-z.mf delete mode 100644 mf/feta-klef.mf delete mode 100644 mf/feta-macros.mf delete mode 100644 mf/feta-nummer-code.mf delete mode 100644 mf/feta-nummer.mf delete mode 100644 mf/feta-nummer10.mf delete mode 100644 mf/feta-nummer11.mf delete mode 100644 mf/feta-nummer12.mf delete mode 100644 mf/feta-nummer13.mf delete mode 100644 mf/feta-nummer16.mf delete mode 100644 mf/feta-nummer20.mf delete mode 100644 mf/feta-nummer23.mf delete mode 100644 mf/feta-nummer26.mf delete mode 100644 mf/feta-nummer4.mf delete mode 100644 mf/feta-nummer5.mf delete mode 100644 mf/feta-nummer6.mf delete mode 100644 mf/feta-nummer7.mf delete mode 100644 mf/feta-nummer8.mf delete mode 100644 mf/feta-params.mf delete mode 100644 mf/feta-pendaal.mf delete mode 100644 mf/feta-puntje.mf delete mode 100644 mf/feta-schrift.mf delete mode 100644 mf/feta-slag.mf delete mode 100644 mf/feta-solfa.mf delete mode 100644 mf/feta-test-generic.mf delete mode 100644 mf/feta-test11.mf delete mode 100644 mf/feta-test13.mf delete mode 100644 mf/feta-test16.mf delete mode 100644 mf/feta-test20.mf delete mode 100644 mf/feta-test23.mf delete mode 100644 mf/feta-test26.mf delete mode 100644 mf/feta-timesig.mf delete mode 100644 mf/feta-toevallig.mf delete mode 100644 mf/feta.tex delete mode 100644 mf/feta11.mf delete mode 100644 mf/feta13.mf delete mode 100644 mf/feta14.mf delete mode 100644 mf/feta16.mf delete mode 100644 mf/feta18.mf delete mode 100644 mf/feta20.mf delete mode 100644 mf/feta23.mf delete mode 100644 mf/feta26.mf delete mode 100644 mf/graycx.mf delete mode 100644 mf/graylj.mf delete mode 100644 mf/parmesan-accidentals.mf delete mode 100644 mf/parmesan-clefs.mf delete mode 100644 mf/parmesan-custodes.mf delete mode 100644 mf/parmesan-flags.mf delete mode 100644 mf/parmesan-generic.mf delete mode 100644 mf/parmesan-heads.mf delete mode 100644 mf/parmesan-rests.mf delete mode 100644 mf/parmesan-scripts.mf delete mode 100644 mf/parmesan-timesig.mf delete mode 100644 mf/parmesan11.mf delete mode 100644 mf/parmesan13.mf delete mode 100644 mf/parmesan14.mf delete mode 100644 mf/parmesan16.mf delete mode 100644 mf/parmesan18.mf delete mode 100644 mf/parmesan20.mf delete mode 100644 mf/parmesan23.mf delete mode 100644 mf/parmesan26.mf delete mode 100644 po/GNUmakefile delete mode 100644 po/TODO delete mode 100644 po/cs.po delete mode 100644 po/da.po delete mode 100644 po/de.po delete mode 100644 po/es.po delete mode 100644 po/fi.po delete mode 100644 po/fr.po delete mode 100644 po/it.po delete mode 100644 po/ja.po delete mode 100644 po/lilypond.pot delete mode 100644 po/nl.po delete mode 100644 po/ru.po delete mode 100644 po/sv.po delete mode 100644 ps/GNUmakefile delete mode 100644 ps/lilyponddefs.ps delete mode 100644 ps/music-drawing-routines.ps delete mode 100644 python/GNUmakefile delete mode 100644 python/lilylib.py delete mode 100644 python/midi.c delete mode 100644 scm/GNUmakefile delete mode 100644 scm/auto-beam.scm delete mode 100644 scm/bass-figure.scm delete mode 100644 scm/beam.scm delete mode 100644 scm/c++.scm delete mode 100644 scm/chord-entry.scm delete mode 100644 scm/chord-generic-names.scm delete mode 100644 scm/chord-ignatzek-names.scm delete mode 100644 scm/chord-name.scm delete mode 100644 scm/clef.scm delete mode 100644 scm/define-grob-interfaces.scm delete mode 100644 scm/define-grob-properties.scm delete mode 100644 scm/define-grobs.scm delete mode 100644 scm/define-music-properties.scm delete mode 100644 scm/define-music-types.scm delete mode 100644 scm/define-translator-properties.scm delete mode 100644 scm/document-backend.scm delete mode 100644 scm/document-functions.scm delete mode 100644 scm/document-markup.scm delete mode 100644 scm/document-music.scm delete mode 100644 scm/document-translation.scm delete mode 100644 scm/documentation-generate.scm delete mode 100644 scm/documentation-lib.scm delete mode 100644 scm/font.scm delete mode 100644 scm/lily.scm delete mode 100644 scm/midi.scm delete mode 100644 scm/molecule.scm delete mode 100644 scm/music-functions.scm delete mode 100644 scm/new-markup.scm delete mode 100644 scm/output-lib.scm delete mode 100644 scm/output-pdf.scm delete mode 100644 scm/output-pdftex.scm delete mode 100644 scm/output-ps.scm delete mode 100644 scm/output-sketch.scm delete mode 100644 scm/output-sodipodi.scm delete mode 100644 scm/output-tex.scm delete mode 100644 scm/paper.scm delete mode 100644 scm/part-combiner.scm delete mode 100644 scm/script.scm delete mode 100644 scm/slur.scm delete mode 100644 scm/standalone.scm delete mode 100644 scm/to-xml.scm delete mode 100644 scm/translation-functions.scm delete mode 100644 scripts/GNUmakefile delete mode 100644 scripts/abc2ly.py delete mode 100644 scripts/convert-ly.py delete mode 100644 scripts/etf2ly.py delete mode 100644 scripts/lilypond-book.py delete mode 100644 scripts/lilypond.py delete mode 100644 scripts/midi2ly.py delete mode 100644 scripts/mup2ly.py delete mode 100644 scripts/musedata2ly.py delete mode 100644 scripts/old-lilypond-book.py delete mode 100644 scripts/pmx2ly.py delete mode 100644 server.el.patch delete mode 100644 stepmake/.cvsignore delete mode 100644 stepmake/CHANGES delete mode 100644 stepmake/GNUmakefile delete mode 100644 stepmake/INSTALL.texi delete mode 100644 stepmake/README delete mode 100644 stepmake/TODO delete mode 100644 stepmake/aclocal.m4 delete mode 100755 stepmake/autogen.sh delete mode 100644 stepmake/bin/GNUmakefile delete mode 100644 stepmake/bin/add-html-footer.py delete mode 100755 stepmake/bin/config.guess delete mode 100755 stepmake/bin/config.sub delete mode 100644 stepmake/bin/fake-msgfmt.sh delete mode 100755 stepmake/bin/install-dot-exe.sh delete mode 100644 stepmake/bin/install-layout.sh delete mode 100755 stepmake/bin/install-sh delete mode 100644 stepmake/bin/ls-latex.py delete mode 100644 stepmake/bin/make-version.py delete mode 100644 stepmake/bin/ntpwd.py delete mode 100644 stepmake/bin/package-diff.py delete mode 100755 stepmake/bin/package-zet.sh delete mode 100644 stepmake/bin/package-zip.sh delete mode 100644 stepmake/bin/package-zip32.sh delete mode 100755 stepmake/bin/packagepython.py delete mode 100755 stepmake/bin/release.py delete mode 100755 stepmake/bin/stepdirs.sh delete mode 100755 stepmake/bin/stepmakeise.sh delete mode 100644 stepmake/bin/text2html.py delete mode 100644 stepmake/config.hh.in delete mode 100644 stepmake/configure.in delete mode 100644 stepmake/stepmake/GNUmakefile delete mode 100644 stepmake/stepmake/automatically-configured.sub.make delete mode 100644 stepmake/stepmake/automatically-generated.sub.make delete mode 100644 stepmake/stepmake/c++-files.make delete mode 100644 stepmake/stepmake/c++-rules.make delete mode 100644 stepmake/stepmake/c++-targets.make delete mode 100644 stepmake/stepmake/c++-vars.make delete mode 100644 stepmake/stepmake/c-rules.make delete mode 100644 stepmake/stepmake/c-targets.make delete mode 100644 stepmake/stepmake/c-vars.make delete mode 100644 stepmake/stepmake/compile-vars.make delete mode 100644 stepmake/stepmake/debian-rules.make delete mode 100644 stepmake/stepmake/debian-targets.make delete mode 100644 stepmake/stepmake/debian-vars.make delete mode 100644 stepmake/stepmake/documentation-rules.make delete mode 100644 stepmake/stepmake/documentation-targets.make delete mode 100644 stepmake/stepmake/documentation-vars.make delete mode 100644 stepmake/stepmake/elisp-rules.make delete mode 100644 stepmake/stepmake/elisp-targets.make delete mode 100644 stepmake/stepmake/elisp-vars.make delete mode 100644 stepmake/stepmake/executable-rules.make delete mode 100644 stepmake/stepmake/executable-targets.make delete mode 100644 stepmake/stepmake/executable-vars.make delete mode 100644 stepmake/stepmake/generic-rules.make delete mode 100644 stepmake/stepmake/generic-targets.make delete mode 100644 stepmake/stepmake/generic-vars.make delete mode 100644 stepmake/stepmake/help2man-rules.make delete mode 100644 stepmake/stepmake/help2man-targets.make delete mode 100644 stepmake/stepmake/help2man-vars.make delete mode 100644 stepmake/stepmake/install-library-rules.make delete mode 100644 stepmake/stepmake/install-library-targets.make delete mode 100644 stepmake/stepmake/install-library-vars.make delete mode 100644 stepmake/stepmake/install-out-rules.make delete mode 100644 stepmake/stepmake/install-out-targets.make delete mode 100644 stepmake/stepmake/install-out-vars.make delete mode 100644 stepmake/stepmake/install-out.sub.make delete mode 100644 stepmake/stepmake/install-rules.make delete mode 100644 stepmake/stepmake/install-targets.make delete mode 100644 stepmake/stepmake/install-vars.make delete mode 100644 stepmake/stepmake/install.sub.make delete mode 100644 stepmake/stepmake/intlrules.make delete mode 100644 stepmake/stepmake/library-rules.make delete mode 100644 stepmake/stepmake/library-targets.make delete mode 100644 stepmake/stepmake/library-vars.make delete mode 100644 stepmake/stepmake/makedir-rules.make delete mode 100644 stepmake/stepmake/makedir-targets.make delete mode 100644 stepmake/stepmake/makedir-vars.make delete mode 100644 stepmake/stepmake/metafont-rules.make delete mode 100644 stepmake/stepmake/metafont-targets.make delete mode 100644 stepmake/stepmake/metafont-vars.make delete mode 100644 stepmake/stepmake/metapost-rules.make delete mode 100644 stepmake/stepmake/metapost-targets.make delete mode 100644 stepmake/stepmake/metapost-vars.make delete mode 100644 stepmake/stepmake/no-builtin-rules.make delete mode 100644 stepmake/stepmake/omf-rules.make delete mode 100644 stepmake/stepmake/omf-targets.make delete mode 100644 stepmake/stepmake/omf-vars.make delete mode 100644 stepmake/stepmake/po-rules.make delete mode 100644 stepmake/stepmake/po-targets.make delete mode 100644 stepmake/stepmake/po-vars.make delete mode 100644 stepmake/stepmake/pod-rules.make delete mode 100644 stepmake/stepmake/pod-vars.make delete mode 100644 stepmake/stepmake/podir-rules.make delete mode 100644 stepmake/stepmake/podir-targets.make delete mode 100644 stepmake/stepmake/podir-vars.make delete mode 100644 stepmake/stepmake/python-module-rules.make delete mode 100644 stepmake/stepmake/python-module-targets.make delete mode 100644 stepmake/stepmake/python-module-vars.make delete mode 100644 stepmake/stepmake/scm-rules.make delete mode 100644 stepmake/stepmake/scm-targets.make delete mode 100644 stepmake/stepmake/scm-vars.make delete mode 100644 stepmake/stepmake/script-rules.make delete mode 100644 stepmake/stepmake/script-targets.make delete mode 100644 stepmake/stepmake/script-vars.make delete mode 100644 stepmake/stepmake/shared-library-rules.make delete mode 100644 stepmake/stepmake/shared-library-targets.make delete mode 100644 stepmake/stepmake/shared-library-vars.make delete mode 100644 stepmake/stepmake/substitute-rules.make delete mode 100644 stepmake/stepmake/substitute-vars.make delete mode 100644 stepmake/stepmake/tex-rules.make delete mode 100644 stepmake/stepmake/tex-targets.make delete mode 100644 stepmake/stepmake/tex-vars.make delete mode 100644 stepmake/stepmake/texinfo-rules.make delete mode 100644 stepmake/stepmake/texinfo-targets.make delete mode 100644 stepmake/stepmake/texinfo-vars.make delete mode 100644 stepmake/stepmake/topdocs-rules.make delete mode 100644 stepmake/stepmake/topdocs-targets.make delete mode 100644 stepmake/stepmake/topdocs-vars.make delete mode 100644 stepmake/stepmake/toplevel-rules.make delete mode 100644 stepmake/stepmake/toplevel-targets.make delete mode 100644 stepmake/stepmake/toplevel-vars.make delete mode 100644 stepmake/stepmake/www-rules.make delete mode 100644 stepmake/stepmake/www-targets.make delete mode 100644 stepmake/stepmake/www-vars.make delete mode 100644 tex/GNUmakefile delete mode 100644 tex/headers.tex delete mode 100644 tex/lily-debug.tex delete mode 100644 tex/lily-pdf-defs.tex delete mode 100644 tex/lily-ps-defs.tex delete mode 100644 tex/lilyponddefs.tex delete mode 100644 tex/ltest.tex delete mode 100644 tex/number.tex delete mode 100644 tex/test-pedal.tex delete mode 100644 tex/texinfo.tex delete mode 100644 tex/titledefs.tex delete mode 100644 vimrc diff --git a/.cvsignore b/.cvsignore deleted file mode 100644 index d75e39b58c..0000000000 --- a/.cvsignore +++ /dev/null @@ -1,40 +0,0 @@ -#* -*.aux -*.dvi -*.eps -*.html -*.latex -*.log -*.ly -*.midi -*.pdf -*.png -*.ps -*.tely -*.tex -*.txt -*[0-9]pk -*~ -.dstreamrc -.gdbinit -GNUmakefile -TAGS -aclocal.m4 -afm -autom4te.cache -config.cache -config.h -config.log -config.make -config.status -configure -fonts -lib -log -ls-R -ly2dvi.dir -out -out-www -share -tfm -tfm.[0-9] diff --git a/COPYING b/COPYING deleted file mode 100644 index 77b1b7108a..0000000000 --- a/COPYING +++ /dev/null @@ -1,348 +0,0 @@ - - -*** NOTE - - This license applies to all files except the included example -input files (which are in the subdirectory input/ ) - -*** END NOTE - - GNU GENERAL PUBLIC LICENSE - Version 2, June 1991 - - Copyright (C) 1989, 1991 Free Software Foundation, Inc. - 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - - Preamble - - The licenses for most software are designed to take away your -freedom to share and change it. By contrast, the GNU General Public -License is intended to guarantee your freedom to share and change free -software--to make sure the software is free for all its users. This -General Public License applies to most of the Free Software -Foundation's software and to any other program whose authors commit to -using it. (Some other Free Software Foundation software is covered by -the GNU Library General Public License instead.) You can apply it to -your programs, too. - - When we speak of free software, we are referring to freedom, not -price. Our General Public Licenses are designed to make sure that you -have the freedom to distribute copies of free software (and charge for -this service if you wish), that you receive source code or can get it -if you want it, that you can change the software or use pieces of it -in new free programs; and that you know you can do these things. - - To protect your rights, we need to make restrictions that forbid -anyone to deny you these rights or to ask you to surrender the rights. -These restrictions translate to certain responsibilities for you if you -distribute copies of the software, or if you modify it. - - For example, if you distribute copies of such a program, whether -gratis or for a fee, you must give the recipients all the rights that -you have. You must make sure that they, too, receive or can get the -source code. And you must show them these terms so they know their -rights. - - We protect your rights with two steps: (1) copyright the software, and -(2) offer you this license which gives you legal permission to copy, -distribute and/or modify the software. - - Also, for each author's protection and ours, we want to make certain -that everyone understands that there is no warranty for this free -software. If the software is modified by someone else and passed on, we -want its recipients to know that what they have is not the original, so -that any problems introduced by others will not reflect on the original -authors' reputations. - - Finally, any free program is threatened constantly by software -patents. We wish to avoid the danger that redistributors of a free -program will individually obtain patent licenses, in effect making the -program proprietary. To prevent this, we have made it clear that any -patent must be licensed for everyone's free use or not licensed at all. - - The precise terms and conditions for copying, distribution and -modification follow. - - GNU GENERAL PUBLIC LICENSE - TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - - 0. This License applies to any program or other work which contains -a notice placed by the copyright holder saying it may be distributed -under the terms of this General Public License. The "Program", below, -refers to any such program or work, and a "work based on the Program" -means either the Program or any derivative work under copyright law: -that is to say, a work containing the Program or a portion of it, -either verbatim or with modifications and/or translated into another -language. (Hereinafter, translation is included without limitation in -the term "modification".) Each licensee is addressed as "you". - -Activities other than copying, distribution and modification are not -covered by this License; they are outside its scope. The act of -running the Program is not restricted, and the output from the Program -is covered only if its contents constitute a work based on the -Program (independent of having been made by running the Program). -Whether that is true depends on what the Program does. - - 1. You may copy and distribute verbatim copies of the Program's -source code as you receive it, in any medium, provided that you -conspicuously and appropriately publish on each copy an appropriate -copyright notice and disclaimer of warranty; keep intact all the -notices that refer to this License and to the absence of any warranty; -and give any other recipients of the Program a copy of this License -along with the Program. - -You may charge a fee for the physical act of transferring a copy, and -you may at your option offer warranty protection in exchange for a fee. - - 2. You may modify your copy or copies of the Program or any portion -of it, thus forming a work based on the Program, and copy and -distribute such modifications or work under the terms of Section 1 -above, provided that you also meet all of these conditions: - - a) You must cause the modified files to carry prominent notices - stating that you changed the files and the date of any change. - - b) You must cause any work that you distribute or publish, that in - whole or in part contains or is derived from the Program or any - part thereof, to be licensed as a whole at no charge to all third - parties under the terms of this License. - - c) If the modified program normally reads commands interactively - when run, you must cause it, when started running for such - interactive use in the most ordinary way, to print or display an - announcement including an appropriate copyright notice and a - notice that there is no warranty (or else, saying that you provide - a warranty) and that users may redistribute the program under - these conditions, and telling the user how to view a copy of this - License. (Exception: if the Program itself is interactive but - does not normally print such an announcement, your work based on - the Program is not required to print an announcement.) - -These requirements apply to the modified work as a whole. If -identifiable sections of that work are not derived from the Program, -and can be reasonably considered independent and separate works in -themselves, then this License, and its terms, do not apply to those -sections when you distribute them as separate works. But when you -distribute the same sections as part of a whole which is a work based -on the Program, the distribution of the whole must be on the terms of -this License, whose permissions for other licensees extend to the -entire whole, and thus to each and every part regardless of who wrote it. - -Thus, it is not the intent of this section to claim rights or contest -your rights to work written entirely by you; rather, the intent is to -exercise the right to control the distribution of derivative or -collective works based on the Program. - -In addition, mere aggregation of another work not based on the Program -with the Program (or with a work based on the Program) on a volume of -a storage or distribution medium does not bring the other work under -the scope of this License. - - 3. You may copy and distribute the Program (or a work based on it, -under Section 2) in object code or executable form under the terms of -Sections 1 and 2 above provided that you also do one of the following: - - a) Accompany it with the complete corresponding machine-readable - source code, which must be distributed under the terms of Sections - 1 and 2 above on a medium customarily used for software interchange; or, - - b) Accompany it with a written offer, valid for at least three - years, to give any third party, for a charge no more than your - cost of physically performing source distribution, a complete - machine-readable copy of the corresponding source code, to be - distributed under the terms of Sections 1 and 2 above on a medium - customarily used for software interchange; or, - - c) Accompany it with the information you received as to the offer - to distribute corresponding source code. (This alternative is - allowed only for noncommercial distribution and only if you - received the program in object code or executable form with such - an offer, in accord with Subsection b above.) - -The source code for a work means the preferred form of the work for -making modifications to it. For an executable work, complete source -code means all the source code for all modules it contains, plus any -associated interface definition files, plus the scripts used to -control compilation and installation of the executable. However, as a -special exception, the source code distributed need not include -anything that is normally distributed (in either source or binary -form) with the major components (compiler, kernel, and so on) of the -operating system on which the executable runs, unless that component -itself accompanies the executable. - -If distribution of executable or object code is made by offering -access to copy from a designated place, then offering equivalent -access to copy the source code from the same place counts as -distribution of the source code, even though third parties are not -compelled to copy the source along with the object code. - - 4. You may not copy, modify, sublicense, or distribute the Program -except as expressly provided under this License. Any attempt -otherwise to copy, modify, sublicense or distribute the Program is -void, and will automatically terminate your rights under this License. -However, parties who have received copies, or rights, from you under -this License will not have their licenses terminated so long as such -parties remain in full compliance. - - 5. You are not required to accept this License, since you have not -signed it. However, nothing else grants you permission to modify or -distribute the Program or its derivative works. These actions are -prohibited by law if you do not accept this License. Therefore, by -modifying or distributing the Program (or any work based on the -Program), you indicate your acceptance of this License to do so, and -all its terms and conditions for copying, distributing or modifying -the Program or works based on it. - - 6. Each time you redistribute the Program (or any work based on the -Program), the recipient automatically receives a license from the -original licensor to copy, distribute or modify the Program subject to -these terms and conditions. You may not impose any further -restrictions on the recipients' exercise of the rights granted herein. -You are not responsible for enforcing compliance by third parties to -this License. - - 7. If, as a consequence of a court judgment or allegation of patent -infringement or for any other reason (not limited to patent issues), -conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot -distribute so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you -may not distribute the Program at all. For example, if a patent -license would not permit royalty-free redistribution of the Program by -all those who receive copies directly or indirectly through you, then -the only way you could satisfy both it and this License would be to -refrain entirely from distribution of the Program. - -If any portion of this section is held invalid or unenforceable under -any particular circumstance, the balance of the section is intended to -apply and the section as a whole is intended to apply in other -circumstances. - -It is not the purpose of this section to induce you to infringe any -patents or other property right claims or to contest validity of any -such claims; this section has the sole purpose of protecting the -integrity of the free software distribution system, which is -implemented by public license practices. Many people have made -generous contributions to the wide range of software distributed -through that system in reliance on consistent application of that -system; it is up to the author/donor to decide if he or she is willing -to distribute software through any other system and a licensee cannot -impose that choice. - -This section is intended to make thoroughly clear what is believed to -be a consequence of the rest of this License. - - 8. If the distribution and/or use of the Program is restricted in -certain countries either by patents or by copyrighted interfaces, the -original copyright holder who places the Program under this License -may add an explicit geographical distribution limitation excluding -those countries, so that distribution is permitted only in or among -countries not thus excluded. In such case, this License incorporates -the limitation as if written in the body of this License. - - 9. The Free Software Foundation may publish revised and/or new versions -of the General Public License from time to time. Such new versions will -be similar in spirit to the present version, but may differ in detail to -address new problems or concerns. - -Each version is given a distinguishing version number. If the Program -specifies a version number of this License which applies to it and "any -later version", you have the option of following the terms and conditions -either of that version or of any later version published by the Free -Software Foundation. If the Program does not specify a version number of -this License, you may choose any version ever published by the Free Software -Foundation. - - 10. If you wish to incorporate parts of the Program into other free -programs whose distribution conditions are different, write to the author -to ask for permission. For software which is copyrighted by the Free -Software Foundation, write to the Free Software Foundation; we sometimes -make exceptions for this. Our decision will be guided by the two goals -of preserving the free status of all derivatives of our free software and -of promoting the sharing and reuse of software generally. - - NO WARRANTY - - 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY -FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN -OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES -PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED -OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS -TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE -PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, -REPAIR OR CORRECTION. - - 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR -REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, -INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING -OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED -TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY -YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER -PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE -POSSIBILITY OF SUCH DAMAGES. - - END OF TERMS AND CONDITIONS - - Appendix: How to Apply These Terms to Your New Programs - - If you develop a new program, and you want it to be of the greatest -possible use to the public, the best way to achieve this is to make it -free software which everyone can redistribute and change under these terms. - - To do so, attach the following notices to the program. It is safest -to attach them to the start of each source file to most effectively -convey the exclusion of warranty; and each file should have at least -the "copyright" line and a pointer to where the full notice is found. - - - Copyright (C) 19yy - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software Foundation, - Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - -Also add information on how to contact you by electronic and paper mail. - -If the program is interactive, make it output a short notice like this -when it starts in an interactive mode: - - Gnomovision version 69, Copyright (C) 19yy name of author - Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. - This is free software, and you are welcome to redistribute it - under certain conditions; type `show c' for details. - -The hypothetical commands `show w' and `show c' should show the appropriate -parts of the General Public License. Of course, the commands you use may -be called something other than `show w' and `show c'; they could even be -mouse-clicks or menu items--whatever suits your program. - -You should also get your employer (if you work as a programmer) or your -school, if any, to sign a "copyright disclaimer" for the program, if -necessary. Here is a sample; alter the names: - - Yoyodyne, Inc., hereby disclaims all copyright interest in the program - `Gnomovision' (which makes passes at compilers) written by James Hacker. - - , 1 April 1989 - Ty Coon, President of Vice - -This General Public License does not permit incorporating your program into -proprietary programs. If your program is a subroutine library, you may -consider it more useful to permit linking proprietary applications with the -library. If this is what you want to do, use the GNU Library General -Public License instead of this License. diff --git a/ChangeLog b/ChangeLog deleted file mode 100644 index 95abcacd98..0000000000 --- a/ChangeLog +++ /dev/null @@ -1,8450 +0,0 @@ -2004-02-11 Han-Wen Nienhuys - - * lily/tuplet-engraver.cc: remove tupletInvisible - - * scm/define-translator-properties.scm: cleanup, separate in - internal and user props. - - * ly/engraver-init.ly (AncientRemoveEmptyStaffContext): change - LyricsVoice -> Lyrics - - * lily/new-part-combine-iterator.cc (process): only print warning - for symbols. - -2004-02-11 Jan Nieuwenhuizen - - * scm/part-combiner.scm: Add proper header. - - * All but lily/*: The great --2003 --2004 replace; the missing - `bits'. - - * TODO: Fix outline mode. Add book notes. - - * ROADMAP: Update. - -2004-02-11 Han-Wen Nienhuys - - * scm/part-combiner.scm (make-autochange-music): use - accumulator. Fixes stack overflow. - - * lily/*: rename brew_molecule -> print , molecule-callback -> - print-function - - * scm/define-grob-properties.scm: cleanup. Separate into internal - and user properties. - - * lily/translator-property.cc (updated_grob_properties): new - function - (execute_pushpop_property): change to new convention: - object property inits are stored as (cons ALIST BASED-ON). This - storage format allows concurrent tweaks in different contexts. - -2004-02-10 Han-Wen Nienhuys - - * TODO: new file. - -2004-02-10 Jan Nieuwenhuizen - - * debian/: Late Debian update (sorry Anthony). - - * scripts/lilypond-book.py (do_file): Look for input_file in - include path, or ask kpathsea if LATEX. - - * input/template/GNUmakefile (LILYPOND_BOOK_FLAGS): - * input/test/GNUmakefile (LILYPOND_BOOK_FLAGS): - * input/regression/GNUmakefile (LILYPOND_BOOK_FLAGS): Use - --header=texidoc. - - * Documentation/user/tutorial.itely (Fine tuning layout): Add lost - relative. - - * scripts/lilypond-book.py: Fixes for make web. Default to stdout - only when filtering, default to input_base otherwise. Coding - style fixes. - -2004-02-10 Han-Wen Nienhuys - - * lily/include/translator.hh (class Translator): add virtual - qualifier. - -2004-02-10 Jan Nieuwenhuizen - - * scripts/lilypond-book.py (compose_ly): Python2.1 workarounds. - -2004-02-09 Jan Nieuwenhuizen - - * scripts/lilypond-book.py (compose_ly): Add kludge for relative. - - * Documentation/user/refman.itely: Run texinfo-all-menus-update - (fixes make web). - - * GNUmakefile.in (web-clean): Do not remove fonts (they do not - live in $(out)-www). - - * scripts/lilypond-book.py: Small cleanups. Junk hairy include - dependencies. Add link to .ly source in HTML output. - (Lilypond_snippet.output_html): Handle multiple page picture - output. - (Lilypond_snippet.output_html, Lilypond_snippet.output_latex): - Make usable for output_texinfo again. - - * Documentation/user/GNUmakefile: Add static dependency for - lilypond.tely includes. - - * Documentation/user/tutorial.itely: Add some lost `relative' - ly-options. - -2004-02-09 Han-Wen Nienhuys - - * lily/include/translator-group.hh: move Music_output_def member - to Global_translator. - - * scripts/lilypond-book.py (do_file): fix latex output. - - * VERSION: release 2.1.20 - - * scm/part-combiner.scm (determine-split-list): robustness fix - - * lily/paper-score.cc (process): move gc stat stuff to init.ly - - * lily/parser.yy (music_output_def_body): plug memory leak. - - * lily/translator-group.cc (add_fresh_group_translator): plug - memory leak: unprotect Translator_group once added. - - * lily/span-dynamic-performer.cc (process_music): deprecate span-type. - - * scripts/lilypond-book.py (Lilypond_snippet.notice_include): - write .dep file. - (Lilypond_snippet.ly): add \renameinput. - -2004-02-08 Han-Wen Nienhuys - - * Documentation/user/refman.itely (Markup command definition): Doc - by Nicolas Sceaux. Rewrite by Han-Wen - - * lily/lyric-hyphen.cc (brew_molecule): remove if hyphen is first - thing of the line. - (brew_molecule): only remove if hyphen is not at the end of line. - (set_spacing_rods): new function: minimum-length specifies - distance between syllables. - - * scm/define-grobs.scm (all-grob-descriptions): add - Hyphen_spanner::set_spacing_rods to LyricHyphen - - * input/regression/lyric-hyphen-break.ly: new file. - - * input/test/lyric-hyphen-retain.ly: new file. - - * lily/new-part-combine-iterator.cc (construct_children): - add Rest direction. - -2004-02-08 Han-Wen Nienhuys - - * scripts/lilypond-book.py (Snippet.replacement_text): add method. - - * Documentation/bibliography/engraving.bib (donemus1982): - update entry. - -2004-02-07 Han-Wen Nienhuys - - * scripts/lilypond-book.py (Substring.__init__): new class. - (Snippet.output_texinfo): add texidoc option. - (Include_snippet.replacement_text): new class. - (Lilypond_snippet.__init__): new class - (Lilypond_snippet.get_hash): bugfix: use full body for hashing. - - * Documentation/user/refman.itely (Sound): - note about number of channels. - - * scm/music-functions.scm (voicify-music): add \context Staff for - << \\ >> polyphony. - - * lily/parser.yy (verbose_command_req): \skip now creates - SkipMusic, and does not lead to spurious staves. - - * scm/define-music-types.scm (music-descriptions): rename - NonEventSkip to SkipMusic - - * input/no-notation/midi-lyric-barcheck.ly: new file. - - * input/regression/collision-dots-invert.ly: new file. - - * lily/note-collision.cc (check_meshing_chords): add stem_to_stem - case. - - * lily/new-lyric-combine-music-iterator.cc (process): let iterator - die if melody died too. - -2004-02-06 Han-Wen Nienhuys - - * lily/source-file.cc (load_stdin): add trailing 0. Fixes problem - with reading from stdin. - - * lily/slur-performer.cc (try_music): new file. - - * lily/melisma-performer.cc (try_music): new file. Handle - melismata to help lyrics. - - * lily/beam-performer.cc (try_music): new file. Handle beam events - to help lyrics. - - * lily/score-performer.cc (one_time_step): reinstate - process_music(). - - * lily/performer.cc (process_music): add to interface. - - * lily/performer-group-performer.cc (process_music): new function. - - * lily/dot-column.cc (do_shifts): do collision resolution before - dot positioning. - - * scripts/lilypond-book.py (Snippet.output_print_filename): new - file, process printfilename option. - (Snippet.__init__): rewrite: do not use global variables h or - index. - (main): really support -I option. - (find_toplevel_snippets): new code. - (find_toplevel_snippets): reinstate old version, without global - variables. - - * tex/texinfo.tex: really add file. - -2004-02-06 Jan Nieuwenhuizen - - * scripts/lilypond-book.py (find_toplevel_snippets): Python < 2.3 - compatibility. - -2004-02-06 Han-Wen Nienhuys - - * scripts/hw-lilypond-book.py (Snippet.output_print_filename): - - * scm/define-translator-properties.scm (drumPitchTable): add - property. - - * scripts/lilypond-book.py (simple_toplevel_snippets): new - function. - (help_summary): docstrings. - (do_file): strip the dir of input_base too. - -2004-02-05 Jan Nieuwenhuizen - - * Documentation/topdocs/NEWS.texi: Add item about lilypond-book. - - * Documentation/user/lilypond-book.itely: Update. - - * make/ly-rules.make: Update lilypond-book commands. - - * Documentation/user/GNUmakefile: Update makeinfo commands, - lilypond-book flags. - - * scripts/lilypond-book.py: Rewrite (was: filter-lilypond-book.ly). - - * scripts/old-lilypond-book.py: New file (was: lilypond-book.ly). - - * scripts/filter-lilypond-book.py: Remove. - - * Documentation/user/*tely: Update options for new lilypond-book. - - * tex/texinfo.tex: New file; from texinfo CVS. This fixes build - with @macros in @includes. - -2004-02-05 Han-Wen Nienhuys - - * lily/rest-collision-engraver.cc (process_acknowledged_grobs): - make rest-collision only. - - * lily/break-substitution.cc (substitute_one_mutable_property): - clear all-elements using scm_assq_remove_x(). - - * lily/rest-collision.cc (do_shift): shift single rests - - * flower/include/array.hh (class Array): rename to is_empty () - - * lily/drum-note-performer.cc: new file: perform drum notes. - - * VERSION (PACKAGE_NAME): release 2.1.19. - -2004-02-05 Jan Nieuwenhuizen - - * scripts/filter-lilypond-book.py - (classic_lilypond_book_compatibility): New function. - -2004-02-05 Han-Wen Nienhuys - - * buildscripts/lilypond.words.py (F): remove drums.scm reference. - - * Grand 2003 -> 2004 search replace. - - * lily/parser.yy (chord_body_element): add DRUM_PITCH to chords - (i.e. < > ) - - * ly/performer-init.ly: add DrumStaff - - * lily/axis-group-engraver.cc (acknowledge_grob): also take - lyric-interface; this prevents lines with only extender lines from - being junked. - - * scm/define-grob-interfaces.scm (lyric-interface): new interface - - * lily/lyric-extender.cc (brew_molecule): get line breaking and - extenders right, for once and for all (hopefully). - - * lily/break-substitution.cc (substitute_one_mutable_property): - clear old 'all-elements for System grobs. - - * lily/new-lyric-combine-music-iterator.cc (find_voice): make sure - that associatedVoiceContext is always assigned when music & lyrics - are found. - - * ly/engraver-init.ly: remove Lyrics context. - (TabVoice): add noteheads engraver - - * input/test/improv.ly: update: do not use Thread switching. - - * lily/pitch-squash-engraver.cc (acknowledge_grob): only squash if - squashedPosition is a number - - * Documentation/user/refman.itely (Automatic note splitting): - remove Thread references. - - * input/no-notation/pc-direction.ly: remove file. - - * ly/engraver-init.ly: remove Thread - - * input/regression/tie-chord-partial.ly: remove file. - - * scripts/convert-ly.py (conv): \harmonic rule - - * lily/new-fingering-engraver.cc (acknowledge_grob): add new - notation for harmonic notes: - - * lily/lily-guile.cc (alist_to_hashq): new function - - * scm/lily.scm (alist->hash-table): new function. - - * Documentation/user/refman.itely (Percussion staves): update doco. - - * input/regression/drums.ly (timb): updates - - * lily/note-performer.cc (create_audio_elements): robustness fix. - - * ly/engraver-init.ly: add DrumStaff and DrumVoice contexts - -2004-02-05 Jan Nieuwenhuizen - - * scripts/filter-lilypond-book.py (find_toplevel_snippets): Do not - discard valid matches. - -2004-02-04 Han-Wen Nienhuys - - * lily/drum-note-engraver.cc: new file. - - * ly/drumpitch-init.ly: move drum definitions - - * scm/drums.scm: remove file. - - * lily/*.cc: remove abort-event everywhere. - - * lily/note-heads-engraver.cc (process_music): robustification. - - * lily/accidental-engraver.cc (process_acknowledged_grobs): - robustification. - - * lily/parser.yy (simple_element): add \drums mode. - (simple_element): remove \pitchnames , \chordmodifiers. Use - variables to store this. - - * lily/lexer.ll (My_lily_lexer): remove support for \PITCHNAME - outside \notes. - - * VERSION: release 2.1.18. - - * input/test: remove octave-duplicate.ly - -2004-02-04 Jan Nieuwenhuizen - - * scripts/filter-lilypond-book.py: Speed-up and clean-ups. - -2004-02-04 Han-Wen Nienhuys - - * lily/simultaneous-music-iterator.cc: remove clone() and copy - constructor from Music_iterator. Changes throughout. - - * lily/include/music-iterator.hh (class Music_iterator): remove - Music_iterator::skip and Music_iterator::get_pending_events from - interface. Rename report_to -> get_outlet - - * lily/auto-change-iterator.cc: move contents from - new-auto-change-iterator.cc from - - * scm/part-combiner.scm: determine split-list from Scheme. - - * lily/new-auto-change-iterator.cc (process): new file. - - * lily/parser.yy (part_combined_music): remove old PC cruft. - - * ly/engraver-init.ly: remove old - PC cruft. - - * Documentation/user/refman.itely (The Lyrics context): note about - extender lines. - - * lily/multi-measure-rest-engraver.cc (process_music): extra check - to allow 0-length mmrest events. - - * scm/part-combiner.scm (determine-split-list): many bugfixes. - - * lily/new-part-combine-iterator.cc (kill_mmrest): new function. - - * lily/spacing-engraver.cc (finalize): robustifications. - - * input/regression/new-part-combine-solo-global.ly: new file. - - * scm/part-combiner.scm: rewrite. - -2004-02-03 Juergen Reuter - - * Documentation/user/refman.itely, input/puer-fragment.ly, - input/test/vaticana.ly, ly/engraver-init.ly: ancient examples - updated for proper use of lyricsto; replaced "(" and ")" -> - "\melisma" and "\melismaEnd" - - * input/test/ancient-font.ly: small updates to reduce compile - warnings (TODO: junk this file) - - * input/test/gregorian-scripts.ly: added comment about bug - - * lily/gregorian-ligature-engraver.cc, lily/ligature-engraver.cc: - tiny robustness fix - - * mf/parmesan-clefs.mf: exact_center fixes (this broke due to - recent changes in the feta code); temporarily mapped mensural g - clef to a copy of petrucci g clef until mensural g clef will have - been rewritten - - * mf/parmesan-heads.mf: bugfix: solved character name clashing - between mensural and neo-mensural heads (this broke quite a while - ago) - - * mf/parmesan-rests.mf: still more tiny set_char_box() fixes - -2004-02-03 Jan Nieuwenhuizen - - * scripts/filter-lilypond-book.py: Handle @include. Add progress - indication. Fixes for verbatim, multi line comments. - -2004-02-03 Han-Wen Nienhuys - - * input/regression/new-part-combine-solo.ly: more cases. - - * lily/slur.cc (height): robustness fix. - - * lily/new-part-combine-iterator.cc (process): add apart-spanner. - - * input/mutopia/F.Schubert/morgenlied.ly (melody): revert - stemUp/stemDown. - - * scm/music-functions.scm (determine-split-list): further analysis. - - * lily/script-engraver.cc (try_music): discard duplicate - articulations. - - * input/regression/new-part-combine-solo.ly: new file - - * input/regression/new-part-combine-a2.ly: new file. - - * ly/performer-init.ly: add Devnull - - * scripts/convert-ly.py (FatalConversionError.sub_acc): add rule - for \musicglyph #"accidental-*" - (conv): \newpartcombine rule. - -2004-02-03 Jan Nieuwenhuizen - - * scripts/filter-lilypond-book.py: Handle @lilypondfile, bugfixes. - -2004-02-02 Jan Nieuwenhuizen - - * scripts/filter-lilypond-book.py: Handle verbatim, latex - textwidth, --output. - -2004-02-02 Han-Wen Nienhuys - - * scm/new-markup.scm (doubleflat): add accidental markups. - - * VERSION: release 2.1.17 - - * Documentation/user/refman.itely (Automatic part combining): - revise documentation of the part-combiner. - - * input/regression/pc-switch-slur.ly (texidoc): remove file. - - * input/test/part-combine-{moment,staff}.ly: remove file. - - * input/regression/pc-mmrest.ly (two): remove file. - - * scm/define-music-types.scm (music-descriptions): add - Solo{One,Two}Event and UnisonoEvent - - * lily/new-part-combine-iterator.cc (unisono): add state_ - variable, signal changes with part-combine-event. - - * input/regression/new-part-combine-text.ly: new file. - - * lily/part-combine-engraver.cc: new file. - -2004-02-02 Jan Nieuwenhuizen - - * scripts/filter-lilypond-book.py: Handle snippet options. - -2004-02-02 Han-Wen Nienhuys - - * scm/music-functions.scm (determine-split-list): detect solo1/2 - and unisono. - - * lily/new-lyric-combine-music-iterator.cc (construct_children): - revert fix, document why. - - * lily/tie-performer.cc (process_music): new function. Set melisma - property. - - * lily/tuplet-bracket.cc (make_bracket): make sure that gap is - always smaller than bracket size. - (make_bracket): oops. Size of the gap was off by factor 2 - - * input/test/text-rotate.ly: new file. - - * scm/new-markup.scm (markup): a macro that provides a - LilyPond-like syntax in scheme for building markups, in order to - help markup command definition. (Nicolas Sceaux) - - * input/test/lyrics-skip-notes.ly: new example. - - * lily/parser.yy (post_event): make HYPHEN into postfix event. - - * lily/new-lyric-combine-music-iterator.cc (find_context_below): - use is_alias() iso. == . This fixes lyrics on - GregorianTranscriptions. - -2004-02-02 Mats Bengtsson - - * scripts/lilypond.py (ly_paper_to_latexpaper): Add newline before - \thispagestyle{lastpage} to avoid that it's printed on the second - last page when there's only a single score line on the last page. - (The page breaking mechanism in TeX played some ugly tricks to us.) - -2004-02-01 Jan Nieuwenhuizen - - * scripts/filter-lilypond-book.py: Further development. - - * input/regression/collision-dots-move.ly: New test. - - * lily/note-collision.cc (check_meshing_chords): Move dots on left - hand side note head of non-merged collision to the right. - - * lily/new-lyric-combine-music-iterator.cc (start_new_syllable): - Construct children before accessing property from emtpy - lyrics_context_. - (construct_children): Find thread before finding LyricsVoice. - Create LyricsVoice one if none found, fixes crash (thanks Erik - Sandberg). - -2004-01-31 Jan Nieuwenhuizen - - * cygwin/: Forward port. - -2003-10-01 Jan Nieuwenhuizen - - * buildscripts/install-info-html.sh: Use Bash. - - * cygwin/mknetrel: Patch from Bert. - -2003-09-30 Jan Nieuwenhuizen - - * cygwin/lily-wins.py: Check whether to run ly2dvi or lilypond. - - * stepmake/stepmake/topdocs-targets.make (copy-to-top): Do not - try to copy *png, index.html (Bertalan Fodor). - - * cygwin/mknetrel (preinstall): Set webdir (Bertalan Fodor). - -2003-09-30 Jan Nieuwenhuizen - - * lily/note-collision.cc (check_meshing_chords): Do not remove - dots (from down head) when merging similar heads (thanks Matthias - Kilian). Simplify merge_possible tests and other cleanups - - * input/regression/collision-merge-differently-dotted.ly: Add test - for disappearing dots on similar heads for both voices. - -2004-01-30 Mats Bengtsson - - * Documentation/user/invoking.itexi (Invoking lilypond): Document - that tagline overrides copyright for single page scores. Correct - the default tagline value. - -2004-01-29 Jan Nieuwenhuizen - - * Documentation/topdocs/NEWS.texi: Compile fix (thanks Mats). - -2004-01-29 Mats Bengtsson - - * buildscripts/lilypond-login.sh: Avoid warning about undefined - TEXMF if it's previously unset. - -2004-01-29 Heikki Junes - - * scm/chord-name.scm (german-markup): bugfix: use SEMI-TONE. - - * input/test/trills.ly: fix the unfolding of lineprall. - - * input/test/figured-bass-alternative.ly: fix accidental. - -2004-01-28 Jan Nieuwenhuizen - - * Documentation/topdocs/NEWS.texi: Add note about safe mode. - - * input/no-notation/dos-guile.ly: - * input/no-notation/dos-ps.ly: - * input/no-notation/dos-tex.ly: New file. These tests still FAIL. - - * input/no-notation/safe-include.ly: - * input/no-notation/safe-guile.ly: - * input/no-notation/safe-ps.ly: - * input/no-notation/safe-tex.ly: New file. - - * scripts/lilypond.py (global_latex_preamble): Add \nofiles for - safe mode Add -s,--safe-mode option. Use -S,--set for setting - options now. - (run_lilypond): When in --safe-mode, pass option to lilypond-bin. - When in --safe-mode, set environment openout_any=p[aranoid]. - - * tex/ltest.tex: - * tex/lilyponddefs.tex: Add \nofiles. - - * python/lilylib.py (get_bbox, make_ps_images): Add -dSAFER to gs - options. - - * mf/GNUmakefile (FETA_LIST_FILES): Install feta*list.lys too. - This allows building the user manual using a binary installation - and a matching unpacked source tree. - - * scm/lily.scm (safe-module): New variable. - - * lily/includable-lexer.cc (new_input): Fix error messages. - - * lily/parse-scm.cc (internal_ly_parse_scm): Add parameter SAFE. - If SAFE, evaluate in safe-module. Change callers. - - * lily/main.cc (Long_option_init): Reinstate safe-mode. - - * lily/lexer.ll (embedded_scm): While processing main-input, - invoke ly_parse_scm with safe mode if running in safe-mode. - (<>): Reset main_input_b_, fixes old-relative chech - in init.ly for safe-mode. - -2004-01-28 Mats Bengtsson - - * scripts/lilypond.py (ly_paper_to_latexpaper): Regain - compatibility with old versions of geometry.sty (compat2 - already implied includehead). - Change the page layout slightly so bottom + footskip = top + - headheight + headsep = 16mm, the remaining paperheight-32mm - are used for the music. Increase footskip to 5mm, so the top of - the footer text doesn't touch the music. - -2004-01-28 Han-Wen Nienhuys - - * VERSION: release 2.1.16 - - * scm/music-functions.scm (determine-split-list): bugfix: only use - new-active for both voices if both indexes advance. This fixes the - biggest outstanding problem with new-pc. - - * lily/new-part-combine-iterator.cc (construct_children): set more - directions. - -2004-01-27 Han-Wen Nienhuys - - * scripts/convert-ly.py (conv): add instrument rule. - - * lily/instrument-name-engraver.cc: add Vocal_name_engraver. - - * lily/side-position-interface.cc: remove add_staff_support () - Change all callers to use staff-padding. - - * lily/auto-beam-engraver.cc (create_beam): opps. Don't use - make_spanner(). - - * lily/a2-engraver.cc (process_acknowledged_grobs): - - * lily/text-engraver.cc: remove scriptHorizontal property. - - * lily/beam.cc (least_squares): also set least-squares-dy for - special case of slanted 2-stem beam to center. - - * lily/side-position-interface.cc (out_of_staff): move contents of - out_of_staff into aligned_side. - remove out_of_staff(). - - * input/regression/measure-grouping.ly: fix warning. - - * lily/side-position-interface.cc: add staff-padding support to - Side_position_interface::aligned_side. - - * lily/system-start-delimiter-engraver.cc (process_music): whoops, - one get_property too many. - - * flower/include/drul-array.hh (linear_combination): new function - (scale_drul): new function - - * lily/beam.cc: use Drul_array iso. interval, because *= - operations on empty intervals are silly. - -2004-01-26 Jan Nieuwenhuizen - - * lily/note-heads-engraver.cc (process_music): use robust_scm2int - (iso gh_scm2int), fixes crash in new part-combiner. - - * configure.in: Up mftrace to 1.0.27. - -2004-01-26 Han-Wen Nienhuys - - * VERSION: release 2.1.15 - - * lily/lyric-phrasing-engraver.cc (stop_translation_timestep): - align all stanza numbers. - -2004-01-26 Heikki Junes - - * Documentation/user/{introduction.itely,refman.itely, - converters.itely}: fix some text inside parentheses; text should - be readable (even) if parentheses are either replaced with commas - or dropped out. - -2004-01-25 Werner Lemberg - - * buildscripts/lilypond.words.py, input/puer-fragment.ly, - input/test/vaticana.ly, input/test/ancient-font.ly, - input/test/mensural-ligatures.ly, input/test/gregorian-scripts.ly, - lily/include/staff-symbol.hh, lily/breathing-sign.cc, - ly/params-as-init.ly, scm/define-grobs.scm, - scm/define-grob-properties.scm: s/stafflinethickness/linethickness/. - - * ly/params-as-init.ly: Removed. Obsolete. - * buildscripts/lilypond.words.py: Updated. - -2004-01-25 Han-Wen Nienhuys - - * mf/parmesan-clefs.mf: switch off mensural G clefs. - - * mf/feta-din{4,5,7,9}.mf: remove. - - * lily/engraver.cc (internal_make_item): centralize item/spanner - factory. - - * scripts/convert-ly.py (FatalConversionError.sub_durs): bugfix: - do correct chord conversion for ^"sim." (backportme) - (FatalConversionError.sub_articulations): substitute ^"foo" in - chords too. (backportme) - - * scm/define-grobs.scm (all-grob-descriptions): use staff-padding - for Fingering. - - * lily/side-position-interface.cc (out_of_staff): don't do - anything if staff-padding not defined. - - * mf/feta-params.mf (stafflines): introduce linethickness as - general blackness of the font. - - * lily/stem.cc (position_noteheads): rounding error robustness. - - * input/regression/rest-collision-beam.ly: move beam/rest stuff - from beam-collision.ly - - * lily/beam.cc (rest_collision_callback): remove direction. - - * scm/define-grobs.scm (all-grob-descriptions): remove - enclose-bounds in OttavaBracket and PianoPedalBracket - - * scm/new-markup.scm (def-markup-command) new macro, which takes - care of defining the COMMAND-markup and make-COMMAND-markup - procedures, setting markup-signature and keyword-signature object - properties, and pushing the markup command in - markup-function-list. - - All markup commands are defined thanks to it. Users may also use - it to define their own markup commands. (Nicolas Sceaux) - - * scm/new-markup.scm: Scheme style clean-up: there should be no - parenthesis alone on a line; LET* should not be used where LET is - enough. (Nicolas Sceaux) - -2004-01-25 Jan Nieuwenhuizen - - * scripts/filter-lilypond-book.py: Add script. - -2004-01-23 Jan Nieuwenhuizen - - * ly/engraver-init.ly: Set enclose_bounds to #1 (was: ##t). - -2004-01-24 Han-Wen Nienhuys - - * Documentation/user/refman.itely (Fingering instructions): add - single note chords. - - * lily/multi-measure-rest-engraver.cc: use a single - MultiMeasureEvent for mm rests. This prevents problems with the - new part combiner. - - * scm/music-functions.scm (determine-split-list): analysis has - global effect: a difference halfway a phrase makes the entire - phrase be typeset as apart. - (make-multi-measure-rest): make mmrest as a single rhythmic event. - -2004-01-23 Han-Wen Nienhuys - - * ly/performer-init.ly: add Devnull. - - * Documentation/user/refman.itely (Font selection): remove paper20 - ref. - -2004-01-22 Jan Nieuwenhuizen - - * scripts/convert-ly.py (1.9.0): Handle phrasing slur. - -2004-01-22 Han-Wen Nienhuys - - * scm/music-functions.scm (determine-split-list): bugfixes. - - * scm/lily.scm (uniq-list): new implementation, O(1) stack. - - * input/test/scales-greek.ly: use C as base, results in different - alterations at the clef. - - * input/regression/pedal-ped.ly: new file. - - * input/regression/pedal-bracket.ly: new file. - - * lily/piano-pedal-bracket.cc (brew_molecule): new function; - replace after_line_breaking() - - * lily/line-interface.cc (line): read thickness. - (line): dash-fraction = 0 always for dotted-line style. - - * input/test/staff-lines.ly (lower): bugfix. - - * ly/engraver-init.ly (AncientRemoveEmptyStaffContext): move - \accepts Devnull into Score. - - * scm/lily.scm: remove bla.scm load. - -2004-01-21 Han-Wen Nienhuys - - * VERSION: release 2.1.14 - - * Documentation/topdocs/INSTALL.texi (Top): fix FTP url. - - * lily/side-position-interface.cc (general_side_position): add - Staff_symbol_referencer::staff_space (). - - * lily/include/context-def.hh: rename from translator-def.hh - -2004-01-21 Mats Bengtsson - - * input/template/piano-dynamics.ly (pedal): Updated definition of - Dynamics such that \cresc works, for example. - -2004-01-21 Han-Wen Nienhuys - - * lily/stem.cc (calc_stem_info): use - Staff_symbol_referencer::staff_space - - * lily/beam-quanting.cc (quanting): scale Stem_info - - * lily/beam.cc (rest_collision_callback): use minimum-distance - property for rest/beam collisions. - (rest_collision_callback): bugfixes. - - * lily/system.cc (post_processing): extra-offset is now relative - to the size of the current staff. - - * scm/music-functions.scm (notice-the-events-for-pc): record all - voices, only analyze "one" and "two". - - * lily/recording-group-engraver.cc (finalize): bugfix: want self, - not parent. - - * lily/new-part-combine-iterator.cc (construct_children): create - Devnull from Voice context - - * scm/music-functions.scm (determine-split-list): bugfixes. - - * lily/lily-guile.cc (robust_scm2int): new function - - * lily/staff-symbol-referencer.cc (line_thickness): new - function. Use throughout. - - * lily/font-size-engraver.cc (acknowledge_grob): only process grob - in its own context. Add to preset font-size. - - * lily/stem.cc (thickness): new function. - - * lily/staff-symbol.cc (get_ledger_line_thickness): new function: - compute thickness from ledger-line-thickness. - - * lily/note-head.cc (brew_ledger_lines): use - Staff_symbol::get_ledger_line_thickness (). - - * lily/beam.cc (rest_collision_callback): use - Staff_symbol_referencer::staff_space(). - - * lily/parser.yy (My_lily_lexer): change syntax: \newpartcombine - Mus1 Mus2 - - * lily/include/translator.hh (class Translator): add accepts_list_ - so \with { \denies / \accepts } also works. - - * scm/music-functions.scm (determine-split-list): determine split - list from music events. - - * lily/new-part-combine-iterator.cc: more states. - - * lily/moment.cc (LY_DEFINE): new function ly:moment - - * lily/system.cc (set_loose_columns): use the right prebroken cols - for interpolating loose column position. - - * lily/text-spanner.cc (brew_molecule): default to no vertical - lines. - - * lily/ottava-bracket.cc (brew_molecule): vertical line doesn't - take space. - - * scm/define-grobs.scm (all-grob-descriptions): less padding. - -2004-01-20 Jan Nieuwenhuizen - - * scripts/convert-ly.py: Do not test filename when processing - stdin. - - * lily/axis-group-engraver.cc: Include warn.hh (compile fix). - -2004-01-20 Han-Wen Nienhuys - - * lily/axis-group-engraver.cc (finalize): extra check; if - process_music () is never called, then staffline_ == 0. - - * lily/simultaneous-music-iterator.cc (pending_moment): don't - check run_always (). - - * VERSION: release 2.1.13 - - * input/regression/note-head-style.ly (pattern): cleanup. - - * mf/GNUmakefile ($(outdir)/$(redhat-package)): use http for - downloading. - - * scm/output-lib.scm (shift-right-at-line-begin): new function: - kludge rehearsalmark placement. - - * lily/grob-scheme.cc (LY_DEFINE): add ly:item-break-dir , ly:item? - , ly:spanner? - - * lily/note-head.cc (internal_brew_molecule): only shorten ledger - close to note head for accidentals. - - * lily/tuplet-bracket.cc (get_default_dir): new algorithm for - tuplet direction. - - * mf/parmesan-heads.mf (overdone_heads): enlarge harmonic head. - -2004-01-19 Han-Wen Nienhuys - - * lily/include/music-iterator.hh (class Music_iterator): add - substitute_outlet() to iterator API. - - * lily/new-part-combine-iterator.cc (construct_children): - New_pc_iterator: new class, better part combining. - - * lily/tie-column.cc (werner_directions): new function - - * lily/tie.cc (set_direction): call Tie_column::set_direction () - - * lily/axis-group-engraver.cc (process_acknowledged_grobs): give - empty objects group spanner as parent - - * lily/tuplet-bracket.cc (calc_position_and_height): check musical - slope against graphical slope. - - * lily/ottava-bracket.cc (brew_molecule): support minimum-length - for ottava bracket. - - * lily/side-position-interface.cc (general_side_position): - opps. reinstate *dir. - - * lily/parser.yy: plug many memory leaks. We're down to 4 for each - parser run. - - * lily/tuplet-bracket.cc: remove calc_dy (). - - * Documentation/user/refman.itely (Balloon help): document balloon - help - -2004-01-19 Jan Nieuwenhuizen - - * scm/document-backend.scm (check-dangling-properties): Grob - properties are defined define-grob-properties.scm. - -2004-01-19 Han-Wen Nienhuys - - * VERSION: release 2.1.12 - - * scm/define-grobs.scm (all-grob-descriptions): larger font for - ChordName - - * scm/new-markup.scm (sub-markup): sup & super: make smaller in - relation to surroundings. - - * lily/tuplet-bracket.cc (calc_position_and_height): add staff - Y-extent to the note-extents: stay clear of the staff. - -2004-01-18 Han-Wen Nienhuys - - * Documentation/user/GNUmakefile - ($(outdir)/lilypond/lilypond.html): posix conforming globs. Link - iso. copy. - - * stepmake/stepmake/metafont-rules.make: remove --keep-trying. - - * lily/separating-group-spanner.cc (set_spacing_rods): add padding. - - * mf/,scripts/,make/,ly/,scm/: remove AsciiScript remnants. - - * lily/lily-guile.cc (robust_scm2double): new function. Use throughout. - - * lily/line-interface.cc (line): remove thickness from calling interface. - - * lily/hairpin.cc: use Line_interface - - * lily/line-interface.cc: new file. Line_interface for everything - with dotted/dashed lines. - - - * lily/tuplet-bracket.cc (make_bracket): use Line_interface. - - * lily/ottava-bracket.cc (brew_molecule): new file, separate routine - for constructing ottava brackets. - - * lily/ottava-engraver.cc (acknowledge_grob): hang the bracket on - the note heads. - - * Documentation/user/internals.itely (Engravers and performers): - fix broken link. - - * scm/music-functions.scm (make-mark-set): new function. - - * lily/lookup.cc: remove Lookup::horizontal_slope (): it is - functionally identical to beam. - - * lily/mensural-ligature.cc (brew_flexa): replace horizontal_slope - () with beam (). - - * Documentation/user/refman.itely (Rehearsal marks): document new - functionality. - - * input/regression/rehearsal-mark-number.ly: new file. - - * input/regression/rehearsal-mark-letter.ly: new file. - - * scm/translation-functions.scm (number->mark-string): new function - (format-mark-letters): new function - (format-mark-numbers): new function - - * lily/mark-engraver.cc (process_music): rehearsalMark is now - integer; formatting is done through markFormatter property. - - * scm/define-translator-properties.scm: fold all *-done properties - into positioning-done. - - * lily/beam.cc (position_beam): new function - (brew_molecule): make sure that positions are calced before making - the molecule. - - * scm/output*.scm (beam): take 4th argument for function. - - * ps/music-drawing-routines.ps: take blot as 4th argument. - - * lily/beam.cc (brew_molecule): fix beam offsets: overlap with the - stem to avoid small dents. - - -2004-01-17 Han-Wen Nienhuys - - * VERSION: release 2.1.11 - - * input/regression/balloon.ly: new file. - - * lily/balloon.cc (brew_molecule): new file: draw boxes around - objects, and make help texts. - - * scm/new-markup.scm (parse-simple-duration): parse duration - string to log & dots. (Thanks Nicolas!) - - * scripts/convert-ly.py (FatalConversionError.sub_note): add \note rule. - -2004-01-17 Heikki Junes - - * buildscripts/lilypond.words.py: remove unused files (THANKS Werner - Lemberg). - - * THANKS: alphabetic order. - -2004-01-16 Han-Wen Nienhuys - - * input/regression/note-head-harmonic.ly: new file. - - * Documentation/user/internals.itely (Technical manual): explain - difference between music, translation, layout. - - * mf/parmesan-heads.mf (overdone_heads): add 0harmonic head. - - * scm/output-ascii-script.scm (bracket): rounding bfs. - - * scripts/convert-ly.py (conv): add \include "paper" rule. - - * ly/paper*.ly: remove files. - - * scm/paper.scm (set-staff-size): new function: set default - staff-size. - - * scripts/convert-ly.py (conv): add conversion rule. - - * lily/music-output-def.cc (LY_DEFINE): ly_output_def_scope: new - function. - - * scm/paper.scm: new file. - (set-staff-size): new function - (set-paper-size): new function - - * lily/parser.yy (music_output_def_body): restructure definition, - so first Scheme statement in \paper also happens in new scope. - - * lily/system.cc (post_processing): move uniquify_list () to - dumping molecule stage. - - * ly/engraver-init.ly: set barCheckSynchronize to #f. Warning: - this will mess up scores that use barchecks to shorten measures. - - * mf/feta-bolletjes.mf (overdone_heads): make note heads rounder - at 20pt too. - - * Documentation/user/tutorial.itely (Printing lyrics): document - \lyricsto - - * lily/my-lily-lexer.cc: \newaddlyrics -> \lyricsto - - * Documentation/user/refman.itely (Fermatas): document \lyricsto - - * lily/new-lyric-combine-music-iterator.cc (process): don't crash - if Voice is not found. - - * VERSION: release 2.1.10 - - * input/{test,regression}/: remove old-relative - - * lily/lexer.ll: add empty markup signature. - - * scm/new-markup.scm (markup-functions-and-signatures): reinstate - strut markup - - * lily/parser.yy (markup): MARKUP_HEAD_EMPTY - - * scm/define-translator-properties.scm: update melismata property - doco. - - * lily/system.cc (output_lines): revert uniquify_list() patch, - strange side effects seen. - - * lily/line-spanner.cc (dashed_line_molecule): return nothing if - dash-period < 0. - - * scm/midi.scm (instrument-equalizer-alist): fix equalizer setting - for flute. - -2004-01-15 Han-Wen Nienhuys - - * input/regression/*.ly: use newaddlyrics iso. addlyrics - - * input/regression/lyrics-multi-stanza.ly (texidoc): remove file. - - * lily/lyric-extender.cc (brew_molecule): behave decently in case - of line breaks. - (brew_molecule): add padding to left, not right. - - * lily/system.cc (uniquify_list): new function - (output_lines): uniquify_list () on all-elements. This fixes - double symbols in the output. - - * lily/beam.cc (rest_collision_callback): don't move anything if - staff-position is set. - - * input/regression/rest-pitch.ly (texidoc): add rest under beam. - - * lily/system.cc (typeset_grob): warn if adding twice. - - * lily/sequential-iterator.cc (run_always): implement run_always(). - (also in other files.) - - * input/mutopia/F.Schubert/standchen.ly: use newaddlyrics. - - * lily/event.cc (to_relative_octave): add octave-check. - - * Documentation/user/refman.itely (Line breaking): add noBreak. - - * scm/new-markup.scm (normalsize-markup): add function. - (sans-markup): new function. - - * lily/beam-engraver.cc (valid_end_point): opps, beam-stop-events - come earlier nowadays. This fixes beams on grace notes. - - * scm/music-functions.scm (direction-polyphonic-grobs): new - variable, share between override and revert. This fixes script - directions in polyphonic sections. (backportme) - -2004-01-14 Han-Wen Nienhuys - - * lily/text-spanner.cc (brew_molecule): don't do shorten-pair for - breakpoints. - - * lily/break-align-interface.cc: add doco - - * Documentation/user/refman.itely (Rehearsal marks): add index marks. - -2004-01-13 Han-Wen Nienhuys - - * VERSION: release 2.1.9 - - * scm/document-markup.scm (markup-doc-node): add note about naming. - - * scm/new-markup.scm (left-align-markup): bugfix. - - * Documentation/user/refman.itely (Ottava brackets): more doco for - ottava. - - * lily/side-position-interface.cc (out_of_staff): also do - out_of_staff() correctly for d == DOWN. - - * lily/text-spanner.cc (brew_molecule): only put vertical line and - horizontal line if they move to the right. - - * scm/define-grobs.scm (all-grob-descriptions): set - text-repeat-if-broken for ottava spanner - - * lily/text-spanner.cc (brew_molecule): text-repeat-if-broken - property. - - * mf/feta18.mf: design size is 18 not 22.5 - - * lily/new-lyric-combine-music-iterator.cc (process): new file. - Add a single LyricsVoice to a melody. Melismata may be set - individually. - - * input/regression/lyric-combine-new.ly: new file. Demo \newaddlyrics. - - * lily/dot-column.cc: add stdio.h - -2004-01-12 Han-Wen Nienhuys - - * lily/item.cc: documentation for break-visibility (Thanks, John). - -2004-01-11 Han-Wen Nienhuys - - * lily/bar-line.cc (compound_barline): add bartype : (dotted). - - * lily/translator-def.cc: rename Translator_def to Context_def. - - * Documentation/user/internals.itely (Lexical details): clarify - string def. - - * Documentation/user/refman.itely (Rhythmic music): add link to - RhythmicStaff - -2004-01-10 Han-Wen Nienhuys - - * lily/translator.cc: document start_translation_timestep() - - * scm/output-tex.scm (tex-encoded-fontswitch): use - round for rounding (inexact->exact yields rationals) - - * lily/*.cc: remove superfluous start_translation_timestep() calls. - - * lily/translator-group.cc (get_simple_trans_list): - new function; construct simple_trans_list_ lazily. - -2004-01-10 Jan Nieuwenhuizen - - * lily/paper-outputter.cc (output_scope): Check if number before - checking exact (guile cvs). - - * scm/*: Escape backslashes in scheme strings (guile cvs). - -2004-01-10 Han-Wen Nienhuys - - * Documentation/user/refman.itely (Tablatures basic): annotate - seealso sections. - - * lily/*.cc: cleanup of engraver initialize() functions. - - * lily/repeat-acknowledge-engraver.cc - (start_translation_timestep): remove first_b_ - - * lily/tab-note-heads-engraver.cc: listen to string number events - inside < > too. (backportme). - - * Documentation/user/refman.itely (Text scripts): add fatText to - index. - -2004-01-09 Han-Wen Nienhuys - - * VERSION: 2.1.8 - - * stepmake/bin/add-html-footer.py (built): add Wiki links to - footer. - - * lily/parser.yy (translator_mod): allow \with { \remove .. } - - * lily/bar-check-iterator.cc (process): only warn if - barCheckLastFail was changed. - - * scm/define-translator-properties.scm (barCheckLastFail): add - property. - - * lily/main.cc (main_prog): print summary of failed files. - - * lily/axis-group-engraver.cc: move all spanner creation to - process_music (). Now staffs can be adjusted with \override too. - (Jan, you are a brilliant programmer!) - - * lily/chord-tremolo-engraver.cc (try_music): fix spurious warning. - -2004-01-09 Mats Bengtsson - - * Documentation/user/tutorial.itely (Integrating text and music): - Show the commands to produce a PDF as well. - -2004-01-08 Han-Wen Nienhuys - - * lily/translator-def.cc (get_translator_names): accept user - tweaks too. - - * mf/feta-bolletjes.mf (overdone_heads): oops, slashes are twice - as big as normal heads. - - * input/*ly: run convert-ly - - * lily/tuplet-bracket.cc (brew_molecule): call after_line_breaking - () if dependencies are fluked. - - * scm/document-translation.scm (engraver-doc-string): update on - latest string/symbol conventions. - - * lily/translator-ctors.cc: use Scheme_hash_table. - - * lily/translator-def.cc (get_translator_names): new function - (add_context_mod): new function - (get_accepted): new function - - * lily/parser.yy (context_mod): put all modifications of - \translator { } in a single production, encode as SCM. - - * lily/translator-def.cc (add_context_mod): rewrite Translator_def - to use read-only lists, so additions to the definition can be - prepended easily. - - * Documentation/user/invoking.itexi (Editor support): add node on - editor support. - - * Documentation/user/refman.itely (Bar check): add lyrics example - of bar checks. - - * input/mutopia/F.Schubert/morgenlied.ly: add bar checks. - - * scripts/convert-ly.py (conv): add conversion rule. - - * lily/parser.yy: use \change iso. \translator for staff switch. - - * lily/my-lily-lexer.cc: add \change. - - * scm/define-translator-properties.scm - (default-melisma-properties): add definition. - -2004-01-07 Han-Wen Nienhuys - - * Documentation/user/refman.itely (Bar lines): clarification of - systemStartDelimiter. - - * input/test/slur-shape.ly (x): remove file. - - * lily/translator-group.cc (apply_property_operations): new function. - -2004-01-06 Han-Wen Nienhuys - - * lily/parser.yy (optional_prop_ops): allow \with { - PROPERTYSETTINGS } following \context or \new. - - * lily/my-lily-lexer.cc: add \with. - - * lily/parser.yy (property_operation): clean up definition of - property operations. - (property_op_to_music): new function. - (context_spec_music): new function - - * VERSION: 2.1.7 released. - - * input/regression/collision-merge-dots.ly: new file. - - * lily/note-collision.cc (check_meshing_chords): if merging heads, - then kill the dots too. - - * lily/separating-line-group-engraver.cc (acknowledge_grob): - set/unset breakableSeparationItem - - * lily/separation-item.cc (relative_width): add function. - - * scm/define-grob-interfaces.scm (only-prebreak-interface): add - only-prebreak-interface - - * lily/system.cc (output_lines): only junk only-prebreak-interface - grobs. - - * lily/multi-measure-rest-engraver.cc (stop_translation_timestep): - read breakableSeparationItem - - * input/regression/multi-measure-rest-multi-staff-center.ly: new file. - - * lily/system.cc (output_lines): don't suicide Spacing_items. - - * lily/dot-column.cc (dot_config_badness): new function: - select the best scoring dot configuration: dots should go close to - the note heads, but be shifted up or down according to conventions. - (print_dot_configuration): idem. - (shift_one): idem - (remove_collision): idem. - - * input/regression/dots.ly: add more test cases. - -2004-01-06 Han-Wen Nienhuys - - * lily/include/scm-hash.hh (class Scheme_hash_table): idem. - - * flower/include/interval.hh: rename elem_b to contains - - * lily/tie.cc: change 'heads to 'head-pair. - - * lily/lyric-phrasing-engraver.cc (process_acknowledged_grobs): - fill in 'heads field. - - * lily/lyric-extender.cc (brew_molecule): use heads for width, use - minimum-length for short ones, and shorten so collisions with the - next syllable are avoided. - - * lily/beam-quanting.cc (score_slopes_dy): add extra points for - near-zero slopes. - Only do DAMPING_DIRECTION_PENALTY for non-horizontal dy - - * lily/dots.cc: remove quantized_position callback. All Y - positioning is done by dot-column.cc - - * lily/dot-column.cc (do_shifts): rewrite shifting routine: do - exhaustive test of all dot positions. This fixes disappearing dots - in dotted chords. - -2004-01-05 Han-Wen Nienhuys - - * mf/feta-klef.mf (test_staff): fatten up G clef - (test_staff): fatten up f clef. - - -2004-01-05 Jan Nieuwenhuizen - - * input/mutopia/E.Satie/petite-ouverture-a-danser.ly: - * input/les-nereides.ly: Use latin1 characters for title, like - Morgenlied. - -2004-01-05 Han-Wen Nienhuys - - * scm/font.scm (paper20-font-vector): add bold-narrow series (only - cmb10). - - * lily/lyric-extender.cc (brew_molecule): add little space before - extender line. - - * lily/beam-quanting.cc (score_forbidden_quants): check if - outer stafflines fall in any beam gaps. - - * scm/define-grobs.scm (all-grob-descriptions): use bold-narrow - for lyric texts. - -2004-01-04 Han-Wen Nienhuys - - * VERSION: 2.1.6 released. - - * lily/beam-quanting.cc (quanting): add inspect-quants property: - this shows the demerits of a user-defined beam position pair. - - * scm/define-grobs.scm (all-grob-descriptions): set - beamed-extreme-minimum-free-lengths to a different value. - - * lily/scm-option.cc: add debug-beam scm-option - - * mf/feta-bolletjes.mf (overdone_heads): fix stem attachments. - -2004-01-03 Han-Wen Nienhuys - - * lily/beam.cc (brew_molecule): rewrite debug output: split up scores. - - * scm/define-grobs.scm (all-grob-descriptions): use semi-fixed - space after barline. - - * mf/feta-eindelijk.mf (tracingvariables): make top of 8th rest fatter. - - * lily/spacing-spanner.cc (breakable_column_spacing): take average - of spacing wishes, not maximum. Only do this for delta-t == 0. In - the other case, take standard column-breakable spacing. Do not - warn about "no spacing wishes". - - This fixes wide spaces after barlines in very loose lines. - - * lily/multi-measure-rest.cc (big_rest): bugfix for blots. - -2004-01-02 Han-Wen Nienhuys - - * lily/stanza-number-engraver.cc (acknowledge_grob): bugfix: - acknowledge_grob lyric-syllable, not lyric-text. - - * lily/hyphen-spanner.cc (brew_molecule): rewrite. Make multiple - dashes of length #'length separated by #'dash-period. - - * lily/lyric-extender.cc (brew_molecule): idem - - * lily/multi-measure-rest.cc (big_rest): idem - - * lily/system-start-delimiter.cc (simple_bar): idem - - * lily/bar-line.cc (simple_barline): use rounded box - - * VERSION: release 2.1.5 - - * Documentation/user/lilypond-book.itely (Integrating LaTeX and - music): move note about dvips to more visible place. - - * lily/lyric-phrasing-engraver.cc: move from - new-phrasing-engraver.cc, remove old cruft (syllable-group, - lyric-phrasing-engraver.hh) - - * lyric-align.ly: remove file - - * scripts/convert-ly.py (FatalConversionError.func): add removal - rule for automaticMelismata - - * ly/engraver-init.ly (ScoreContext): switch on - New_phrasing_engraver by default. - - * lily/slur-engraver.cc (class Slur_engraver): - process_acknowledged_grobs -> process_music. - (try_music): signal melismata correctly. - - * lily/lyric-extender.cc (brew_molecule): cleanup. Junk - word-space, right-trim-amount, and extend past right bound only - for note heads. - - * lily/new-phrasing-engraver.cc (acknowledge_grob): add - lyric-extender support: add note-heads to the extender - automatically. - - * lily/parser.yy: extender is now post_event. - - * lily/accidental-engraver.cc (number_accidentals): remove - spurious warning about non-parent contexts. - - * lily/music-output-def.cc (assign_translator): \translator { } - for a Foo context implicitly redefines \FooContext. - - * input/mutopia/F.Schubert/morgenlied.ly (pianoLH): many layout - fixes. - - * lily/slur.cc (brew_molecule): don't use stafflinethickness - doubly in slur weight. - - * input/regression/prefatory-spacing-matter.ly (TODO): add clef :| - combination. - - * scm/define-grobs.scm (all-grob-descriptions): change clef - - staffbar distance. - - * scripts/lilypond.py (global_latex_preamble): crank down size of - the margins. Now there is a 12 mm top and bottom margin, which - should correspond with the printable area of modern printers. - - This enlarges the music height of the printable page a little. - - * mf/feta-accordion.mf (accreg_pen): remove circled-R, BB and SB - signs. Use \markup instead. - (accreg_pen): tweak for accordeon asterisk. - -2003-12-31 Han-Wen Nienhuys - - * lily/melisma-engraver.cc (try_music): use melisma_busy() - - * lily/lyric-engraver.cc (process_music): remove alignment kludge - - * lily/lyric-combine-music-iterator.cc (melisma_busy): new function. - - * lily/stanza-number-engraver.cc (acknowledge_grob): rewrite - - * scm/define-grobs.scm (all-grob-descriptions): change - StanzaNumber description: make side support, i.s.o. breakable. - use Instrument_name_engraver for texts in the margin. - - * scm/define-translator-properties.scm: remove - melismaEngraverBusy, stz property. - - * *.cc: naming: change empty_b () into is_empty () - - * lily/self-aligment-interface.cc (aligned_on_parent): new function. - - * input/regression/lyric-phrasing-new.ly: new file. - - * lily/new-phrasing-engraver.cc (process_acknowledged_grobs): new - engraver, redo lyric phrasing, but cleaner and simpler. Lyrics on - melismata are now left-aligned. - -2003-12-30 Han-Wen Nienhuys - - * input/mutopia/F.Schubert/GNUmakefile: add morgenlied.ly - - * mf/feta19.mf: remove. - - * mf/feta-klef.mf (test_staff): more tweaks - - * mf/feta-toevallig.mf: more small size tweaks. - - * mf/feta-eindelijk.mf (lower_brush): adjust quarter and shorter - rests for smaller sizes. - - * mf/feta-bolletjes.mf: fix cross heads. - - * VERSION: release 2.1.4 - - * scripts/convert-ly.py (FatalConversionError.func): add rule for - deprecated #'ancient font family - - * lily/mark-engraver.cc (process_music): only set rehearsalMark if - it is a string or number. - - * scm/output-lib.scm (note-head-style->attachment-coordinates): - change calling convention of stem-attachment function. - - * buildscripts/mf-to-table.py: read and dump WX/WY fields - - * mf/feta-autometric.mf: dump WX/WY fields too - - * mf/parmesan-heads.mf: idem. - - * mf/feta-bolletjes.mf (slash_slope): set WX/WY fields for - attachment coordinates. - - * lily/note-head.cc (stem_attachment_coordinate): read stem - attachment from the notehead glyphs WX/WY fields. - - * lily/include/font-metric.hh (struct Font_metric): add methods - get_indexed_wxwy (), make a distinction between looking up by - index and ASCII - - * mf/feta-bolletjes.mf: rewrite note head MF code. - (test_outlines): make heads more rotund for smaller sizes. - -2003-12-29 Han-Wen Nienhuys - - * mf/feta-params.mf (stafflines): fix stafflinethickness at 0.5 pt - throughout. Font scaling fixes throughout. - - * mf/feta-sleur,slur.mf: remove. - - * mf/feta-slag.mf: rewrite. - -2003-12-24 Han-Wen Nienhuys - - * VERSION: release 2.1.3 - - * stepmake/stepmake/toplevel-targets.make: remove pfa targets - - * make/lilypond.redhat.spec.in (Group): remove MAKE_PFA_FILES - - * lily/mark-engraver.cc (process_music): fix mark - \default. (backportme) - - * stepmake/stepmake/automatically-generated.sub.make (default): - use -n for head/tail commands. - - * lily/tie-engraver.cc (acknowledge_grob): make ties only for note - heads with the same pitch. - -2003-12-20 Han-Wen Nienhuys - - * lily/recording-group-engraver.cc (finalize): set protected_scm - member to '() before finalizing. - - * lily/translator-group.cc (finalize): remove removal_processing () - - * lily/recording-group-engraver.cc: new engraver: record - synchronized start & end times for each music object. - - * lily/parser.yy (toplevel_expression): execute score rendering - during parsing. Cleanup output-filename handling; this is no - longer done with global variables. - (translator_spec_body): allow \type modification too. - - * lily/score.cc: ly:run-translator: new function - (LY_DEFINE): ly:render-output new function. - - Separate interpreting and rendering, and make available as - functions at Scheme level. - -2003-12-17 Jan Nieuwenhuizen - - * scm/to-xml.scm (): New class to build xml-doc. - (musicxml-node->string): - (xml-node->string): - (music-to-musicxml): New function. - -2003-12-17 Han-Wen Nienhuys - - * VERSION: 2.1.2 released - - * lily/include/lily-guile.hh (SCM_VECTOR_REF): compat glue - - * scm/font.scm (paper20-font-vector): discouple font design sizes - from sizes specified in .ly file: store all design sizes of a font - in a single vector. - - * lily/font-select.cc (get_font_by_design_size): new function - - * mf/feta*,parmesan*: use 2^{1/6} as scaling factor for fonts. - add parmesan,feta in sizes 14 and 18. - - * mf/feta-toevallig.mf: use blot diameter for double sharp. - - * lily/font-size-engraver.cc (acknowledge_grob): change definition - of fontSize: this now sets font-size - -2003-12-16 Han-Wen Nienhuys - - * VERSION: 2.1.1 released - - * Documentation/user/refman.itely (Tuning objects): add note about - concurrent tweaks in different contexts. - - * lily/tie-engraver.cc (acknowledge_grob): use - Staff_symbol_referencer::get_position iso. reading staff-position - directly. - - * lily/piano-pedal-engraver.cc (create_bracket_grobs): don't take - currentMusicalColumn as left span-point for bracket. The bracket - is too long when there are accidentals. - -2003-12-03 Mats Bengtsson - - * buildscripts/lilypond-profile.sh, - buildscripts/lilypond-login.sh: Only set $TEXMF if necessary. - Thanks to Reuben Thomas - -2003-12-03 Heikki Junes - - * ly/italiano.ly: additions for semi-sharps and semi-flats by Eric - Wurbel . - -2003-11-17 Mats Bengtsson - - * scripts/midi2ly.py: Add space after chords. - -2003-11-07 Heikki Junes - - * input/regression/{many}: add few @code{ ... }. - -2003-11-05 Mats Bengtsson - - * mf/GNUmakefile (SAUTER_FONTS): Added cmss14, - cmbxti6, cmcsc8, cmss14, cmtt5 and cmtt7. - Removed cmbx5, cmbx6 (which are included in teTeX) - and cmbxti14 which is not used in fonts.scm. - -2003-11-04 Heikki Junes - - * lily/midi-item.cc: fine tune quarter tones. - -2003-11-03 Heikki Junes - - * lily/midi-item.cc lily/include/midi-item.hh (get_fine_tuning): - new function, warn how many cents are missing in fine tuning. - -2003-11-01 Heikki Junes - - * input/bugs/rhytmicstaff-tie.ly: add file. - - * THANKS: Create skeleton for 2.1. - -2003-10-31 Heikki Junes - - * input/test/bar-lines.ly (TODO): dashed "|". - -2003-10-30 Heikki Junes - - * Documentation/user/refman.itely, input/regression/tie-accidental.ly, - input/regression/tie-chord.ly: Fix spell for tying. - - * input/test/ly2dvi-testpage.ly: removed (renamed, see below). - - * input/test/lilypond-testpage.ly, Documentation/user/invoking.itexi: - new file (renamed, see above). - - * Documentation/user/lilypond-book.itely - * buildscripts/lilypond-login.sh elisp/lilypond-mode.el - * input/example-1.ly input/example-2.ly input/example-3.ly - * input/les-nereides.ly input/test/fill-a4.ly input/test/spacing-2.ly - * input/test/title.ly po/cs.po po/da.po po/de.po po/es.po po/fi.po - * po/fr.po po/it.po po/ja.po po/lilypond.pot po/nl.po po/ru.po - * po/sv.po scm/output-pdftex.scm scm/output-tex.scm - * scripts/lilypond-book.py scripts/lilypond.py - * stepmake/bin/package-zip32.sh tex/lilyponddefs.tex tex/titledefs.tex - * vimrc: replace ly2dvi with lilypond and remove silly comments. - - * Documentation/user/lilypond.tely: update version. - - * Documentation/user/{appendices,introduction,refman,tutorial}.itely: - Remove extra spaces in each @node, fixes spaces. - -2003-10-29 Mats Bengtsson - - * scripts/lilypond-book.py (output_dict): Add definition of - \lilypondbook also for LaTeX output. Solves several bug reports. - -2003-10-29 Heikki Junes - - * input/test/follow-thread.ly, input/test/polymetric.ly: Fix typos. - -2003-10-24 Heikki Junes - - * input/test/transposition.ly: Fix key signatures, given in comments. - -2003-10-23 Mats Bengtsson - - * scm/midi.scm (instrument-names-alist), - Documentation/user/appendices.itely: Correct spelling of shakuhachi - -2003-10-14 Mats Bengtsson - - * input/test/temporary-stave.ly (texidoc): New example based on an - email question from Ralph Little. - -2003-10-11 Han-Wen Nienhuys - - * VERSION: release 2.1.0 - - * lily/note-performer.cc (try_music): accept busy-playing-event. - - * lily/swallow-perf.cc (try_music): return false for - busy-playing-event and melisma-playing-event. - -2003-10-09 Han-Wen Nienhuys - - * scripts/etf2ly.py: Patch by Arvid Grotting for minor keys and << - >> in \score. - -2003-10-05 Jan Nieuwenhuizen - - * scripts/convert-ly.py (sub_chords): Bugfix: convert to -[, so - that articulation_substitute will not move beam start again. - (articulation_substitute): Bugfix: remove stray space so that new - old chords ending '>>' does not get broken up. - (sub_chord): Use TAB for indentation (not spaces). - - * elisp/lilypond-font-lock.el (LilyPond-mode-set-syntax-table): - Bugfix for startup: Use ?^ instead of ?\^. - -2003-10-02 Han-Wen Nienhuys - - * lily/lyric-combine-music-iterator.cc - (Lyric_combine_music_iterator): change init order, to prevent GC - segfaults. - - * lily/context-specced-music-iterator.cc (construct_children): - only change translator if found. This fixes a core dump problem. - -2003-09-30 Han-Wen Nienhuys - - * scm/slur.scm (default-slur-extremity-rules): use equal? for - comparison. - - * mf/feta-bolletjes.mf: make hole in half note little - smaller for stem attachment. - - * lily/stem.cc (brew_molecule): tweaks for new flag layout. - - * mf/feta-banier.mf: don't draw stem with flag, just small square - attachment. - - * mf/feta-bolletjes.mf (slash_slope): remove ledger ending - - * mf/feta-banier.mf: remove upstem/downstem characters. - - * mf/feta-params.mf (stafflines): stems are 1.3 SLT. - - * ly/params-init.ly (blotdiameter): set blotdiameter to 2/3 of - stafflinethickness (in the default) - - * lily/stem.cc (brew_molecule): use round_filled_box for stem. - - * lily/lily-guile.cc (parse_symbol_list): strip spaces at the end. - - * Documentation/topdocs/INSTALL.texi (Top): reorder. - - * scripts/convert-ly.py (conv): add up-to-staff conversion rule. - - * lily/include/directional-element-interface.hh: - junk class, make {get,set}_grob_direction functions. - - * lily/slur.cc (get_attachment): do something sensible when - attaching to stem without heads (eg. a rest). - - * lily/stem.cc: remove #'up-to-staff ; use #'stem-end-position for - forcing up to staff. remove #'support-head property - (brew_molecule): small cleanup. - (flag): remove #'grace property. - -2003-09-29 Jan Nieuwenhuizen - - * cygwin/postinstall-lilypond.sh: - * cygwin/postremove-lilypond.sh: Bugfix for fonts remove command - (Volker Zell). - -2003-09-29 Han-Wen Nienhuys - - * scripts/lilypond-book.py: resurrect 'eps' option. - (TexiPaper.to_eps): use -Ppdf for EPS files. - - * VERSION (PATCH_LEVEL): branch off 2.0, go to 2.1 in HEAD - - * scripts/lilypond.py (run_dvips): use -Ppdf for preview. - - * VERSION: release 2.0.1 - - * lily/bezier.cc (get_other_coordinate): change assert into - warning. - - * lily/note-head.cc (internal_brew_molecule): make left protusion - smaller, to accomodate for natural sign. - (internal_brew_molecule): only do this when the accidental is - close enough. - (extent): new function - - * lily/skyline.cc (merge_skyline): new function - (heighten_skyline): new function - - * lily/accidental-placement.cc (position_accidentals) - (position_accidentals): fix todo. - -2003-09-28 Han-Wen Nienhuys - - * input/test/+.ly (texidoc): put version number inline. - - * GNUmakefile.in: remove rsync-web target. - - * input/regression/bar-scripts.ly (onestaff): raggedright - -2003-09-28 Han-Wen Nienhuys - - * lily/*.cc: remove #if 0'd code in couple of places. - - * lily/midi-stream.cc (operator <<): rewrite. - - * lily/note-head.cc (internal_brew_molecule): - only make ledgers when the Staff symbol has lines. - - * ly/property-init.ly (arpeggioBracket): simplify - - * lily/translator-group.cc (execute_pushpop_property): use - SCM_EQ_P for comparing keys. This fixes reverting - auto-beam-settings. - -2003-09-28 Jan Nieuwenhuizen -* - * lily/midi-stream.cc (operator <<): Also write MIDI string when - midi_debug_global_b. - (operator <<): Normalise loop. - -2003-09-27 Han-Wen Nienhuys - - * scripts/lilypond.py (escape_path): revise. - - * scm/music-functions.scm (set-output-property): new function. - -2003-09-27 Jan Nieuwenhuizen - - * cygwin/mknetrel: Next try in building doc on Cygwin natively; - use addmakeflags again. - - * cygwin/lily-wins.py (escape_shell): New function; use it. - - * scripts/lilypond.py (escape_shell): Escape quotes and other - spaces too. Do not escape escaping backslashes. - - * make/srcdir.make.in (web-install): Must call install-WWW now. - - * mf/GNUmakefile: resolve conflict: %list.ly is a target, not a - dependency - -2003-09-27 Han-Wen Nienhuys - - * scripts/lilypond.py (escape_path): escape quotes too. - - * Documentation/user/lilypond.tely (Unified index): rename Index - to accomodate Windows breakage. - - * make/lilypond.redhat.spec.in (Group): remove out=www for web-install - - * mf/GNUmakefile ($(outdir)/%.afm $(outdir)/%.enc - $(outdir)/%.tex $(outdir)/%.dep $(outdir)/%list.ly): list.ly is a - target not a source. - -2003-09-27 Jan Nieuwenhuizen - - * cygwin/mknetrel: Use EXTRABUILDARGS, EXTRAINSTALLARGS instead of - addmakeflags. Build and install doc and web also when building on - Cygwin. - - * mf/GNUmakefile: Bugfix. - - * GNUmakefile.in (web-install): Bugfix: set out prefix Similar to - target web. - - * cygwin/lily-wins.py: Quote filename. - -2003-09-26 Han-Wen Nienhuys - - * mf/GNUmakefile ($(outdir)/$(redhat-package)): use passive ftp. - -2003-09-25 Jan Nieuwenhuizen - - * cygwin/bug-lilypond-cygwin.sh: Add tests for registry - settings. - - * configure.in: Require g++ > 3.0.4. - - * mf/GNUmakefile: Bugfix: Add list.ly target. - - * Documentation/user/GNUmakefile: Bugfix: list.ly target. - - * stepmake/stepmake/omf-targets.make (omf-local-install): Buxfix: - make omf directory, add uninstall targets. - -2003-09-25 Han-Wen Nienhuys - - * lily/tie-performer.cc (initialize): init prev_event - - * make/lilypond.redhat.spec.in: move site-start back to /usr/share. - - * lily/script-engraver.cc (make_script_from_event): don't crash on - non-string articulation-type. - - * lily/new-fingering-engraver.cc (add_script): don't crash on - 0 scripts - (acknowledge_grob): warn about text script events. - -2003-09-24 Heikki Junes - - * buildscript/lilypond.words: fix path for drums.scm. - -2003-09-24 Han-Wen Nienhuys - - * lily/spacing-spanner.cc (note_spacing): don't make longer - durations than measure-length. - - * VERSION: release 2.0.0 - - * GNUmakefile.in (rsync-web): version independent rsync target. - - * input/test/+.ly (texidoc): idem. - - * input/regression/+.ly: print version number. - - * input/regression/accidentals.ly (mel): shorten. - - * input/regression/accidental-octave.ly (texidoc): shorten. - - * input/regression/hairpin-dashed.ly (texidoc): docstring. - - * input/regression/completion-heads-polyphony.ly: octave - - * input/regression/beam-manual.ly: remove - - * input/regression/beam-chord.ly: remove - - * input/regression/grace-dynamic.ly: remove - - * input/regression/grace-volta-repeat.ly: octave fixes. - - * input/regression/hairpin-dashed.ly (texidoc): doc string. - - * lily/parser.yy (step_number): semitones for chord entry too. - (make_chord_step): more robust code, semitones. - - * input/regression/breathing-sign-ancient.ly (texidoc): new file. - - * input/regression/breathing-sign.ly (texidoc): split ancient and - normal breathing signs. - - * scm/define-grobs.scm (all-grob-descriptions): swap - beamed-extreme-minimum-free-lengths and - beamed-minimum-free-lengths; the 'extreme' case should allow - shorter stems. This fixes forced directions on beamed 32nd and - shorter notes. - - * ly/engraver-init.ly (ScoreContext): keyAccidentalOrder is in - quartertones, not semitones. - (NoteNamesContext): swallow more event types - - * Documentation/topdocs/NEWS.texi (Top): insert close brace. - - * VERSION (PACKAGE_NAME): release 1.9.10 - -2003-09-23 Han-Wen Nienhuys - - * lily/rhythmic-column-engraver.cc (process_acknowledged_grobs): - set note head as cause of note-column. This gives a better error - message. - -2003-09-23 Jan Nieuwenhuizen - - * Documentation/topdocs/INSTALL.texi: Update emacs mode. - -2003-09-23 Han-Wen Nienhuys - - * mf/GNUmakefile (pfa_warning): instruct - - * stepmake/aclocal.m4: typo. - - * Documentation/user/cheatsheet.itely: more verbose examples. - - * input/regression/clefs.ly: remove bogus docstring. - -2003-09-23 Jan Nieuwenhuizen - - * GNUmakefile.in (SUBDIRS): Add elisp. - - * elisp/lilypond-mode.el: - * elisp/lilypond-init.el: - * elisp/lilypond-indent.el: - * elisp/lilypond-font-lock.el: Move from top dir. - - * stepmake/stepmake/elisp-vars.make: New file. - - * config.make.in (elispdir): Add. - - * Documentation/topdocs/INSTALL.texi: Typo. - - * make/ly-rules.make: Test for files instead of touching void and - ignoring errors. - - * GNUmakefile.in: - * make/lilypond.redhat.spec.in: - * debian/rules: Fix lilypond.words stuff a bit. For running from - , adding - - (push "/share/lilypond/elisp" load-path) - - to your ~/.emacs.el should give you LilyPond-mode again. - - * scripts/lilypond-book.py (re_dict): Only fix texinfo @mbinclude - regexp for DOS/Windows, we are too paranoid to fix others. - -2003-09-23 Han-Wen Nienhuys - - * scm/chord-name.scm (natural-chord-alteration): no quarter tones. - - * input/test/chord-names-jazz.ly (banterProperties): fix - - * lily/parser.yy (bass_mod): bass figure alterations are semi - tones, not quarter tones - - * lily/beam.cc (set_stem_lengths): only lengthen stems - for gapped beams. - - * lily/beam-quanting.cc (score_forbidden_quants): divide demerit - by beamcount. - - * buildscripts/lilypond-profile.sh (Error): more zsh stuff: print - a warning that the warning may erroneous. - - * Documentation/topdocs/INSTALL.texi (Top): add note about get-pfa - target. - - * mf/GNUmakefile: add get-pfa, get-debian-pfa, get-rpm-pfa - targets. - - * GNUmakefile.in ($(config_h)): config.h should depend on - config.hh.in . - (lilypond.words): remove fontball stuff. - - * stepmake/aclocal.m4: only print config.cache warning if it exists. - - * configure.in: remove pktrace reference. - - * GNUmakefile.in (rsync-web): permissions and ownership for - website. - - * lily/volta-engraver.cc (staff_eligible): new function. - (stop_translation_timestep): kill off spanners if not eligible. - - * VERSION (PATCH_LEVEL): release 1.9.9 - - * input/regression/beam-quanting-32nd.ly (texidoc): new file - - * lily/beam-quanting.cc: tune down SECONDARY_BEAM_DEMERIT, so stem - length is more important than forbidden quants. - -2003-09-23 Heikki Junes - - * buildscripts/lilypond.words: order words in search order, - add lilypond.words.vim to be generated. - - * lilypond.vim: use lilypond.words.vim for keyword matching. - - * lilypond-mode.el: use search order. fix word selection rules. - - * lilypond-font-lock.el: fix fontifying long durations. - - * Documentation/topdocs/INSTALL.texi: doc lilypond.words.vim. - -2003-09-22 Jan Nieuwenhuizen - - * cygwin/mknetrel: Remove PYTHONPATH and manpage workarounds. - - * stepmake/stepmake/generic-targets.make: - * stepmake/stepmake/bin/make-version.py: - * stepmake/aclocal.m4: - * make/stepmake.make: - * make/toplevel-version.make: Build fixes: remove last traces of - VERSION/PACKAGE_NAME/LILYPONDPREFIX experiment. - - * lily/beam.cc: Add gap-count property. - -2003-09-22 Han-Wen Nienhuys - - * scm/define-grob-properties.scm (gap-count): add gap-count - - * make/lilypond-vars.make: add /lilypond to LILYPONDPREFIX - -2003-09-22 Jan Nieuwenhuizen - - * cygwin/mknetrel.doc: Typo. - - * buildscripts/make-font-dir.py (Font_info): Build fix: add 'ss' - - * make/lilypond-vars.make (PYTHONPATH): srcdir build fix. - -2003-09-22 Mats Bengtsson - - * scripts/lilypond.py: add support for 'legal' and 'tabloid' paper - sizes. Remove support for 'ledger'(=tabloid+landscape). - -2003-09-22 Han-Wen Nienhuys - - * mf/GNUmakefile ($(outdir)/%.pfa): break apart one-big-rule for - sauter PFAs. - - * configure.in: remove VERSION stuff once again. - - * scm/font.scm (paper20-style-sheet-alist): add cmss entries. - - * scm/define-grobs.scm (all-grob-descriptions): use sans family - for chord names. - - * mf/GNUmakefile: always trace pfa fonts. - (SAUTER_FONTS): add cmss[567] too fonts - - * configure.in: require mftrace. - - * lily/staff-performer.cc (new_instrument_string): don't look at - instrument property. - - * lily/lily-guile.cc: renaming, ly_dir_p is the Scheme function, - is_direction is the C++ one. Similar for ly_axis_p and - ly_number_pair_p - -2003-09-21 Jan Nieuwenhuizen - - * lily/beam.cc (brew_molecule): read gap-count to determine - number of tremolo (gapped) beams. - - * lily/chord-tremolo-engraver.cc (acknowledge_grob): repeats - shorter than 1/8 - - * flower/include/array.hh (default_compare): new function - - * cygwin/mknetrel: Native fixes. - - * cygwin/GNUmakefile (EXTRA_DIST_FILES): Add mknetrel.* - -2003-09-20 Jan Nieuwenhuizen - - * Documentation/topdocs/NEWS.texi: Add note about .ly double click - feature for Windows. - - * stepmake/stepmake/generic-vars.make: Cygwin fix from stable. - - * cygwin/mknetrel: Updates for native use on Cygwin. - - * lily/parser.yy: Compile fix: add stdio.h for snprintf. - - * stepmake/stepmake/help2man-rules.make: - * cygwin/mknetrel: Bugfix for manpages. - - * GNUmakefile.in (SUBDIRS): Use plain srcdir stepmake instead of - $(builddir). Stepmake is a normal subdirectory now, that is not - configured. Another srcdir build fix. - - * Documentation/topdocs/INSTALL.texi, - buildscripts/lilypond.words.py, lilypond-font-lock.el, - lilypond-init.el, lilypond-mode.el, debian/rules, - make/lilypond.{redhat,madrake,suse}.spec.in, vimrc: - rename generated file lilypond.words to lilypond.words.el. - -2003-09-20 Heikki Junes - - * ly/chord-modifiers-init.ly, lilypond.vim: updates for vim. - - * GNUmakefile.in, buildscripts/lilypond.words: give only path in - GNUmakefile.in. - -2003-09-19 Jan Nieuwenhuizen - - * stepmake/stepmake/help2man-rules.make: Allow manpages to fail - when cross building. - - * configure.in: srcdir build fix. - - * cygwin/GNUmakefile: - * cygwin/lily-wins.py: - * cygwin/postremove-lilypond.sh: - * cygwin/postinstall-lilypond.sh: Merge from stable. - - * cygwin/bug-lilypond-cygwin.sh: s/lilypond/lilypond-bin, - s/ly2dvi/lilypond/. - -2003-09-19 Han-Wen Nienhuys - - * lily/slur.cc (after_line_breaking): only set control points if - none supplied yet. - - * input/test/slur-manual.ly: new file. - - * scripts/convert-ly.py (FatalConversionError.sub_chords): convert - << >> chords too. - - * VERSION (PACKAGE_NAME): release 1.9.8 - - * scripts/lilypond.py (escape_path): escape spaces in directory names - - * input/test/text-spanner.ly: fixes. - -2003-09-19 Heikki Junes - - * buildscripts/lilypond.words.py: add drum names as note names to - Emacs-mode. - -2003-09-19 Han-Wen Nienhuys - - * input/regression/hairpin-dashed.ly: new file. - - * scripts/convert-ly.py (conv): warn about dash-length. - - * lily/dynamic-engraver.cc (try_music): end (de)crescendo - automatically if we get a new one. - - * lily/lookup.cc (dashed_line): new function - - * lily/line-spanner.cc (dashed_line_molecule): cleanups. Use - dash-fraction. - -2003-09-18 Heikki Junes - - * buildscripts/lilypond.words.py: extract note names. - - * lilypond-mode.el: take note names from lilypond.words -file. - small fix in the use of string-match. - - * lilypond-font-lock.el: use lilypond.words for note names, add - maxima to note a duration. - -2003-09-18 Han-Wen Nienhuys - - * lily/breathing-sign.cc: remove railtracks() function. - - * input/regression/arpeggio-bracket.ly (texidoc): add file. - - * lily/arpeggio.cc (brew_chord_bracket): clean-up - (brew_molecule): bugfix don't make arpeggio shorter when - arpeggio-direction is set. - - * debian/rules: small corrections in the (Pedro K) - - * Documentation/user/tutorial.itely (Tutorial): use lyinc in - examples. - - * lily/auto-beam-engraver.cc (process_music): end/junk beam if - special (repeat) bar comes along. - - * input/regression/auto-beam-bar.ly: update. - - * scripts/lilypond-book.py (output_dict): remove support for the - EPS option. - - * scm/define-grobs.scm (all-grob-descriptions): add X-extent for - VerticalAlignment and VerticalAxisGroup this fixes the size - computations for the entire system. - - * input/les-nereides.ly (bass): remove superfluous fontSize. - - * scripts/lilypond-book.py (make_lilypond_file): \lilypondfile{} - causes directory of file to be added to include path. - - * input/regression/beam-break.ly: test single stem beams. - - * input/regression/system-start-bracket.ly: fix. - - * lily/beam.cc (set_stem_lengths): single-stem-beam fix. - - * stepmake/stepmake/c-rules.make ($(outdir)/%.c): use -o for flex. - - * lily/beam-quanting.cc (quanting): check french-beaming per stem. - (score_stem_lengths): do something sensible for single stem beams. - - * lily/beam.cc (least_squares): add kludge for single stem beams. - - * scripts/convert-ly.py (FatalConversionError.sub_alteration): add - keySignature to list of broken things. - - * input/regression/keys.ly: fix. - - * VERSION (PACKAGE_NAME): release 1.9.7 - - * Documentation/topdocs/NEWS.texi (Top): add quarter tones. - - * Documentation/user/refman.itely (Pitches): doc quarter tones. - - * lily/pitch.cc (LY_DEFINE): ly:pitch-quartertones: new function - (quartertone_pitch): new function - - * mf/feta-toevallig.mf: add 3/4 sharp, 1/4 sharp, 1/4 flat, 3/4 - flat. WARNING: FONT CHANGED. - - * ly/nederlands.ly: add -eh and -ih for quarter tones. - - * lily/accidental-placement.cc (add_accidental): support for - quarter tones. - - * ly/LANGUAGEs.ly: use symbols for alterations. - - * mf/feta-toevallig.mf: change accidental codes. - - * scm/lily.scm (ly:get-option): switch on debugging only for - --verbose. - - * lily/lily-guile.cc: remove ly:verbose? - - * lily/scm-option.cc (LY_DEFINE): add verbose to get-option. - - * lily/parser.yy (TODO): only do gh_call() for apply with - procedure argument. - - * lily/tie-engraver.cc (start_translation_timestep): move melisma - stuff in accordance with new timing of tie-events. - - * lily/my-lily-lexer.cc: remove \outputproperty - - * lily/melisma-engraver.cc (try_music): use melismaBusyProperties. - - * scm/define-translator-properties.scm (melismaBusyProperties): - add melismaBusyProperties property. - -2003-09-17 Han-Wen Nienhuys - - * input/test/ambitus-mixed.ly (texidoc): new file. - - * buildscripts/mutopia-index.py (find): prune debugging - - * lily/side-position-interface.cc: doc updates - - * Documentation/user/refman.itely: updates, tweaks. - - * lily/parser.yy (Simple_music): remove outputproperty - - * make/stepmake.make: use VERSION again; importing VERSION via - autoconf dependencies is too hairy. - -2003-09-17 Heikki Junes - - * lilypond-mode.el: allow `-' for keywords and identifiers. - -2003-09-16 Han-Wen Nienhuys - - * VERSION: release 1.9.6 - - * lilypond-mode.el (LilyPond-command-alist): invoke lilypond - iso. ly2dvi. - - * Documentation/user/*.itely: fixes everywhere - - * lily/completion-note-heads-engraver.cc: rewrite engraver: - produce ties from the engraver itself, do not broadcast TieEvent. - - * lily/my-lily-lexer.cc: remove pitch & duration. - - * lily/parser.yy (TODO): remove \pitch and \duration - - * input/test/explicit.ly: remove file. - - * Documentation/user/refman.itely (Pitches): remove \pitch - \duration command. - -2003-09-16 Heikki Junes - - * buildscripts/lilypond.words.py: add all slur types to Emacs - insertion menu, suppose everything is postfixed by dropping - unnecessary `-' -marks. - -2003-09-15 Han-Wen Nienhuys - - * lily/stem.cc (get_default_stem_end_position): lengthen stems for - tremoloed stems. - - * lily/stem-tremolo.cc (brew_molecule): position tremolo next to - head for flagged stems. - - * lily/stem.cc (get_default_stem_end_position): futz with extra - stem length if there is a stem tremolo. - - * lily/tuplet-bracket.cc (brew_molecule): don't print bracket when - it would be too small. - - * lily/font-metric.cc: return #f for non-existent glyph. - - * VERSION (MY_PATCH_LEVEL): read VERSION; version number is now - exported through config.make. - - * input/regression/clef-oct.ly: new file. - - * scm/clef.scm (make-clef-set): use regexps, support arbitrary - transposition. - - * input/template/*.ly: remove old relative. - - * ly/english.ly: add X names for double sharp. - -2003-09-14 Han-Wen Nienhuys - - * lily/font-select.cc: new file handle font selection routines. - - * lily/parser.yy: add ; (Patrick Atamaniuk) - - * input/test/time-signature-double.ly: use markups for double time - sigs. - - * scm/chord-name.scm: remove new-chord-name-brew-molecule ; use - ChordNames.SeparationItem #'padding for adjusting space after chords. - - * lily/music-output-def.cc (LY_DEFINE): - new function ly:paper-lookup. - - * mf/parmesan-clefs.mf: use # quantities for char_box - offsets. Fixes overflow errors in the PFA. - - * scm/new-markup.scm (strut-markup): change calling interface for - markup. Pass paper-def, not grob. This would allow \markup to be - used separately from grobs. - - * lily/paper-def.cc: new function ly:paper-font; this function - replaces ly:get-font. - - * lily/include/font-interface.hh (struct Font_interface): take - Paper_def iso. Grob for get_font(). - -2003-09-14 Graham Percival - - * Documentation/user/ tutorial.itely, refman.itely: add warning - about \key and accidentals. - -2003-09-14 Han-Wen Nienhuys - - * scm/new-markup.scm (musicglyph-markup): undefine font-name. - - * Documentation/user/*.itely: manual tweaks - -2003-09-13 Juergen Reuter - - * mf/parmesan-clefs.mf: still more set_char_box() fixes and code - cleanup; bugfix: exact_center - - * Documentation/user/refman.itely: added more documentation on - ambitus according to recent questions on lilypond-user list - -2003-09-12 Han-Wen Nienhuys - - * input/regression/ottava.ly (texidoc): demo 15ma too. - - * GNUmakefile.in ($(outdir)/VERSION): add VERSION target - - * input/mutopia/J.S.Bach/baerenreiter-sarabande.ly (sarabandeA): - octave fixes. - -2003-09-10 Han-Wen Nienhuys - - * lily/lexer.ll: add \r to the rules for newlines; this fixes - problems on older Mac editors. - -2003-09-12 Juergen Reuter - - * mf/parmesan-clefs.mf: more set_char_box() fixes and code cleanup - -2003-09-11 Juergen Reuter - - * mf/parmesan-custodes.mf, mf/parmesan-heads.mf, - mf/parmesan-clefs.mf: added comments on character alignment and - set_char_box() conventions - - * mf/parmesan-custodes.mf, mf/parmesan-clefs.mf: fixed more - set_char_box()'s - - * mf/parmesan-clefs.mf: vaticana: adjusted stem width - -2003-09-10 Heikki Junes - - * spec/lilypond.{mandrake,suse}.spec.in: update lilypond.words path. - -2003-09-10 Juergen Reuter - - * mf/parmesan-custodes.mf: vaticana custos: bugfix: slightly - shortened to avoid almost-collision with staff line; code cleanup; - other custodes: fixed char boxes; code cleanup - -2003-09-09 Han-Wen Nienhuys - - * configure.in: release 1.9.5 - - * scripts/lilypond.py (global_latex_preamble): only set - twosideshift if 'twoside' is in latexoptions - - * stepmake/GNUmakefile.in: remove nested stepmake packaging stuff. - - * VERSION: remove - - * scripts/*2ly.py: update <> syntax - -2003-09-09 Han-Wen Nienhuys - - * lily/chord-name-engraver.cc (process_music): add origin for - chord name. - - * input/regression/chord-name-exceptions.ly (theMusic): add base too. - - * scm/chord-ignatzek-names.scm (ignatzek-chord-names): bugfix: do - bass notes for exceptions too. - - * scm/define-grobs.scm (all-grob-descriptions): rename - HaraKiriVerticalGroup to RemoveEmptyVerticalGroup - - * scm/define-grob-properties.scm (remove-first): add remove-first - property for orchestral scores. - - * Documentation/user/*.itely: switch <<>> and <> - - * lily/glissando-engraver.cc (process_music): bugfix: move line to - last_line only once. This fixes the two consecutive glissandi problem. - -2003-09-09 Juergen Reuter - - * lily/vaticana-ligature-engraver.cc: bugfix: fixed programming - error message "flexa-width undefined" - - * lily/vaticana-ligature-engraver.cc, lily/gregorian-ligature.cc, - lily/include/gregorian-ligature.hh: print warning when ignoring - head prefixes on flexa shapes - - * lily/vaticana-ligature-engraver.cc: bugfix: always add an extra - space before a series of inclinatum heads - - * lily/vaticana-ligature-engraver.cc, lily/gregorian-ligature.cc, - lily/include/gregorian-ligature.hh: junked AFTER_VIRGA; small - cleanups - - * mf/parmesan-custodes.mf: redesigned custos; fixed stem length - and char_box - -2003-09-08 Juergen Reuter - - * input/regression/breathing-sign.ly: tiny fixes - - * lily/mensural-ligature.cc: renamed stem->cauda/join to avoid - semantical collision with vaticana ligatures - - * lily/vaticana-ligature-engraver.cc, lily/vaticana-ligature.cc, - scm/define-grob-properties.scm: bugfix: semantics of delta_pitch - now consistent with mensural ligatures - - * lily/vaticana-ligature-engraver.cc, lily/vaticana-ligature.cc, - mf/parmesan-heads.mf: bugfix: length of cauda of flexa depends on - context pitches and staff position; dto. for virga stem; removed - obsolete virga and clivis characters from parmesan font (WARNING: - font changed) - - * mf/parmesan-heads.mf, mf/parmesan-clefs.mf, - mf/parmesan-timesig.mf: fixed several set_char_box ()'s - - * lily/vaticana-ligature-engraver.cc, lily/vaticana-ligature.cc, - scm/define-grob-properties.scm: consistency fix: renamed - join_left->add_cauda - - * mf/parmesan-heads.mf: bugfix: cephalicus head: corrected - appendix length; bugfix: yoffs_bt for reverse direction punctum - characters - - * lily/vaticana-ligature-engraver.cc, lily/vaticana-ligature.cc: - small cleanups; added more docu - - * lily/mensural-ligature-engraver.cc, lily/vaticana-ligature-engraver.cc, - lily/coherent-ligature-engraver.cc: cleanup: moved delta-pitch - computation to CoherentLigatureEngraver - - * ly/gregorian-init.ly, lily/gregorian-ligature.cc, - scm/define-grob-properties.scm: bugfix: added missing linea and - cavum properties; bugfix: removed dead semivocalis property - - * mf/parmesan-heads.mf: bugfix: linea punctum: vertical lines - length; redesigned quilisma, stropha and auctum - - * ly/engraver-init.ly, scm/define-grobs.scm: use 0.6 as default - line thickness - - * lily/vaticana-ligature-engraver.cc, mf/parmesan-heads.mf, - Documentation/user/refman.itely: bugfix: introduced shifted - epiphonus head to avoid collision with adjacent plica - -2003-09-07 Han-Wen Nienhuys - - * scm/font.scm (paper20-style-sheet-alist): add smaller font sizes. - - * mf/GNUmakefile (SAUTER_FONTS): add smaller sizes. - -2003-09-05 Han-Wen Nienhuys - - * Documentation/user/tutorial.itely (A lead sheet): remove - duplicate chords. - - * Documentation/bibliography/computer-notation.bib (pages): reorganise. - -2003-09-03 Han-Wen Nienhuys - - * Documentation/bibliography/computer-notation.bib (isbn): add - xivcim publication. - -2003-09-05 Heikki Junes - - * GNUmakefile.in: drop lilypond.words for generation. - -2003-09-03 Heikki Junes - - * buildscripts/lilypond.words.py: take filename (also) from an arg. - - * GNUmakefile.in (README_FILES): put lilypond.words to $(outdir). - -2003-09-02 Han-Wen Nienhuys - - * input/test/figured-bass-alternate.ly (fl): new file. - - * Documentation/topdocs/README.texi (Top): clarifications. - - * Documentation/bibliography/computer-notation.bib (isbn): add phd - theses of Gieseking and Renz. - - * GNUmakefile.in (README_FILES): remove README.mandrake. - -2003-09-01 Heikki Junes - - * buildscripts/lilypond.words.py: add file. Creates lilypond.words - from source files and search patterns listed in the script. - - * GNUmakefile.in: add target `lilypond.words'. - - * lilypond.words: remove file, generated by `make lilypond.words'. - - * make/lilypond.{mandrake,redhat,suse}.spec.in: make lilypond.words. - -2003-08-31 Heikki Junes - - * lily/parser.yy, lily/my-lily-lexer.cc: spell it acciaccatura. - -2003-08-31 Han-Wen Nienhuys - - * VERSION: 1.9.4 released - - * scripts/convert-ly.py (FatalConversionError.figures_replace): - rule for < > <-> << >> substitution - - * lily/lexer.ll: exchange meaning of << >> and < > - - * VERSION (PACKAGE_NAME): 1.9.3 released - - * stepmake/stepmake/help2man-rules.make ($(outdir)/%.1): build man - pages unconditionally. - -2003-08-30 Han-Wen Nienhuys - - * Documentation/user/music-glossary.tely (Top): small syntax - fixes. - - * scm/music-functions.scm (remove-tag): filter \tagged music - expressions. - - * input/regression/tag-filter.ly (texidoc): new file. - - * lily/parser.yy (post_event): add \tag #'symbol / \tag #'(symbol1 - symbol2 .. ) etc. - - * scripts/convert-ly.py (FatalConversionError.conv): fingering - convert rule. - - * Documentation/user/refman.itely (Fingering instructions): adjust manual. - - * lily/new-fingering-engraver.cc (position_scripts): don't crash - for borderline cases (e.g. 1 fingering.) - (position_scripts): revise interface, use fingerOrientations to - set fingering positions. - - * scm/document-translation.scm (context-doc): add aliases to - automated documentation. - - * make/lilypond-vars.make: remove stepmake compat glue. - - * make/generic-vars.make: remove cruft. - - * lily/main.cc (main): don't identify binary. - -2003-08-29 Han-Wen Nienhuys - - * lily/include/translator.hh (class Translator): remove - type_string_ , use symbol for context name throughout. - Changes through whole source tree. - - * scripts/lilypond.py: rename ly2dvi.py to lilypond.py - set PDF as default, and always make PDF. - - * lily/GNUmakefile (SUBDIRS): rename binary to lilypond-bin - -2003-08-29 Heikki Junes - - * ChangeLog lilypond.words Documentation/topdocs/NEWS.texi - Documentation/user/refman.itely input/regression/allfontstyle.ly - input/regression/grace-types.ly: - fix spelling for acciaccatura (Webster's 1913). - -2003-08-29 Han-Wen Nienhuys - - * lily/main.cc (usage): adjust blurb, include url. - - * input/regression/breathing-sign.ly (texidoc): transpose up - -2003-08-28 Juergen Reuter - - * input/regression/breathing-sign.ly: changed ancient examples to - be relevant (by request of Han-Wen); updated BreathingSign text - property according to new syntax. - - * ly/gregorian-init.ly: updated BreathingSign text property - according to new syntax - -2003-08-28 Han-Wen Nienhuys - - * Documentation/user/refman.itely (Clef): give example of G_8 clef. - (Clef): index entries for clefs. - - * python/lilylib.py (system): remove errorlog files. - -2003-08-28 Heikki Junes - - * lilypond.words: add \new and new graces. Add dynamics to menus - keeping 1.8.x compatibility; after all the engraving relating to - notes becomes postfixed `-' marks will be removed. - -2003-08-28 Han-Wen Nienhuys - - * lily/molecule.cc (align_to): idem. - - * lily/molecule-scheme.cc: ly_align_to_x takes continuous dir argument. - - * ly/grace-init.ly (stopAcciaccaturaMusic): correct misspelling of - accacciatura everywhere. - - * VERSION (PACKAGE_NAME): released 1.9.2 - - * GNUmakefile.in (EXTRA_DIST_FILES): dist lilypond.vim too. - - * scm/document-markup.scm (markup-doc-node): sort markup function - list. - - * lily/paper-outputter.cc (output_version): change "Lily was here" - into "Engraved by LilyPond" - - * lily/my-lily-lexer.cc (My_lily_lexer): don't crash - on unquoted strings before \notenames. - - * lily/parser.yy (lyric_element): allow markup as lyric text. This - increases the number of s/r reductions to 4. - - * scm/new-markup.scm (fraction-markup): \fraction command. - - * lily/lexer.ll: allow any string without \ { } # and " in \markup - mode - - * lily/lookup.cc (round_filled_box): rename function. - (LY_DEFINE): round-filled-box: change signature. - - * Documentation/user/refman.itely: revise section explaining grace - notes. - - * lily/translator-scheme.cc (LY_DEFINE): add ! to - ly:set-context-property - - * input/*/*.ly (vmus): use \new everywhere. - - * lily/my-lily-lexer.cc: add \accacciatura and \appoggiatura - - * ly/grace-init.ly (stopGraceMusic): add slurs on grace note by - default - - * scm/music-functions.scm (set-stop-grace-properties) - (set-start-grace-properties, add-grace-property): new functions - for modular grace tweak control. - - * ly/engraver-init.ly (ScoreContext): new property graceSettings. - -2003-08-28 Jan Nieuwenhuizen - - * Documentation/topdocs/INSTALL.texi: Explain install-pfa-fonts. - - * GNUmakefile.in (install-pfa-fonts): - (get-pfa-fonts): New target. - - * stepmake/stepmake/toplevel-targets.make: Add pfa-fonts and - install-pfa-fonts help. - -2003-08-27 Han-Wen Nienhuys - - * lily/translator-scheme.cc (LY_DEFINE): - ly:context-pushpop-property new function. - (LY_DEFINE): new function ly:translator-find - new function ly:translator? - (LY_DEFINE): new function ly:context? - - * lily/translator-def.cc: remove Translator_def::apply_pushpop_property(). - - * python/lilylib.py (read_pipe): only store and display error log - if verbose not set. - (read_pipe): only display log if it contains something. - -2003-08-27 Jan Nieuwenhuizen - - * Documentation/misc/GNUmakefile: Re-add. - (TEXTS): Add CHANGES. - -2003-08-27 Heikki Junes - - * lilypond.words: add \newcontext. - -2003-08-27 Han-Wen Nienhuys - - * lily/tie-performer.cc (stop_translation_timestep): only flush - tied_notes when we have actually made a tie. Fixes bugs with ties - in polyphonic scores. - -2003-08-26 Jan Nieuwenhuizen - - * stepmake/autogen.sh: Bugfix: copy aclocal.m4, autogen.sh also if - they do not exist. - -2003-08-26 Han-Wen Nienhuys - - * VERSION (PACKAGE_NAME): released 1.9.1 - - * ly/engraver-init.ly (RemoveEmptyStaffContext): don't add - Instrument_name_engraver - - * lily/tie-performer.cc (create_audio_elements): bugfix - - * Documentation/user/music-glossary.tely (Top): comment out - font-style statements. - - * input/test/force-hshift.ly: revise example. - - * Documentation/bibliography/engraving.bib (note): typos. - - * configure.in: bump GCC requirements to 3.x - - * lily/include/audio-item.hh (class Audio_tie): rename - note_l_drul_ to note_drul_ - - * lily/tie-performer.cc (class Tie_performer): patch for new ties. - - * lily/parser.yy (relative_music): whoops. All \relative were off - by ... a lot .... Ahem. - - * scm/define-music-types.scm (music-descriptions): idem. - - * lily/beam-engraver.cc: move new-beam-event to beam-event - - * lily/tie-engraver.cc (class Tie_engraver): move New_tie_engraver - to Tie_engraver - - * input/regression/bar-number.ly: remove unnecessary old-relative - options. - - * Documentation/user/internals.itely (Creating contexts): document - \newcontext - - * lily/parser.yy (Composite_music): add \newcontext - - * Documentation/user/refman.itely (MIDI block): add note about - dotted tempos. - - * scm/font.scm: remove old markup legacy - - * GNUmakefile.in (web-clean): remake share/ after web-clean. - - * lily/breathing-sign.cc (brew_molecule): remove function - - * lily/text-item.cc: remove old-style markups. - (interpret_markup): C++ version of markup function - (brew_molecule): idem. - - * lily/my-lily-lexer.cc (start_main_input): define input-file-name - as Scheme variable. - - * scripts/convert-ly.py (conv): dashes rule. - Apply rule. - - * Documentation/user/lilypond-book.itely: syntax fixes. - -2003-08-25 Han-Wen Nienhuys - - * VERSION (PACKAGE_NAME): release 1.9.0 - - * Documentation/user/lilypond-book.itely (Invoking lilypond-book): - note about dvips. (Should backport.) - - * scripts/convert-ly.py - (FatalConversionError.articulation_substitute): add - convert-new-chords code. Remove convert-new-chords.py - - * Documentation/user/refman.itely (Octave check): document - \octave. - - * Documentation/topdocs/NEWS.texi: add \octave, postfix and - \relative changes. - - * lily/parser.yy (command_element): octave check: - - \octave PITCH - - checks that PITCH (without octave) yields PITCH (with octave) in - \relative - - * lily/relative-octave-music.cc (to_relative_octave): octave check. - - * lily/scm-option.cc: ly:set-option now has the default argument - #t. - - * lily/lexer.ll: add \renameinput - - * python/lilylib.py (command_name): robustifications. - - * scripts/ly2dvi.py (run_latex): use >& for redirection iso. of - /dev/stderr. This is ash compatible. - - * ly/init.ly: add warning if compatibility was not necessary. - - * lily/scm-option.cc (LY_DEFINE): add ly:get-option - - * flower/include/string-handle.icc: formatting cleanups, rename - references by ref_count_. - -2003-08-25 Heikki Junes - - * make/lilypond.mandrake.spec.in: syncronize the spec file with - Torbjorn Turpeinen (tobbe@nyvalls.se): fix group, update reqs, - package libs separately, fix conflicting php variable out=/dev/vc/ - invoking `unset out', declare menus, use only one icon-file, fix - doc-path in menu. - -2003-08-23 Han-Wen Nienhuys - - * scripts/convert-ly.py (FatalConversionError.conv): typo - - * Documentation/misc/GNUmakefile: restore misc directory. - - * input/mutopia/J.S.Bach/bwv940.ly: add 1 petite prelude - - * input/mutopia/J.S.Bach/GNUmakefile (EXTRA_DIST_FILES): remove - Petites-Preludes - - * input/test/partial-blank.ly (quickmeasure): syntax - - * lily/slur.cc (get_attachment): bugfix: don't crash on non-cons - attachment property. - - * Documentation/user/refman.itely: remove superfluous -'s - (Grace notes): ) fixes. - - * lily/music.cc: generic compress(), transpose() functions. Remove - others. - - * lily/parser.yy (gen_text_def): remove support for #'(italic ) - style markup entry. - - * lily/parser.yy: all articulations postfix; remove obligatory - - for [, ) and \! - - * lily/music.cc (to_relative_octave): write generic - to_relative_octave function; various relative cleanups. - Hmmm. - - * lily/scm-option.cc: add options new-relative and old-relative - - * po/sv.po: new po file. - - * Documentation/user/refman.itely (Dynamics): website - fixes. (should backport!) - -2003-08-22 Heikki Junes - - * make/lilypond.mandrake.spec.in: declare version only once. - -2003-08-22 Han-Wen Nienhuys - - * lily/simultaneous-music.cc (to_relative_octave): undo relative - meaning for now. - -2003-08-21 Han-Wen Nienhuys - - * input/mutopia/J.S.Bach/wtk1-fugue1.ly: updates - - * input/mutopia/J.S.Bach/wtk1-prelude1.ly: remove file - - * input/mutopia/F.Schubert/standchen.ly (trebleThrough): fixes - - * lily/simultaneous-music.cc (to_relative_octave): add Event_chord. - - * lily/music.cc (var): add ly:music-transpose function. - - * lily/parser.yy (pre_events): remove prefix articulations. - - * lily/music-sequence.cc (do_relative_octave): change relative meaning. - - * VERSION (MY_PATCH_LEVEL): open HEAD/1.9 branch. - - * Documentation/user/refman.itely (Text markup): add comment about - markup in header. - -2003-08-20 Han-Wen Nienhuys - - * lily/paper-outputter.cc (write_header_fields_to_file): - only dump value if it is a string. - - * flower/include/dictionary.hh: remove. - - * Documentation/ChangeLog-1.5: add back old log. - - * Documentation/topdocs/INSTALL.texi (Top): explain how to get - .pfas from a .deb. - -2003-08-19 Han-Wen Nienhuys - - * Documentation/bibliography/engraving.bib: add entry for - Jaschinski's Notation - -2003-08-18 Han-Wen Nienhuys - - * Documentation/user/refman.itely (Beaming): add note about - allowBeamBreak - -2003-08-18 Juergen Reuter - - * lilypond.words, ly/engraver-init.ly, ly/params-init.ly: added - GregorianTranscription contexts - - * ly/engraver-init.ly: vaticana contexts: minor fixes - - * Documentation/user/refman.itely (Ancient notation): added note - on appendix length bug - - * input/puer-fragment.ly, input/test/gregorian-scripts.ly, - input/test/vaticana.ly: use vaticana contexts; small fixes - -2003-08-17 Jan Nieuwenhuizen - - * flower/hash.cc: Remove. - - * flower/include/dictionary.hh (V>): Compile fix: Remove assignment - to (nonexistent?) hash_func_ identifier. - - * python/midi.c (midi_error, midi_warning): Use char const* for - __FUNCTION__ argument. - - * python/gettext.py: Remove. We already require python 2.1, which - includes gettext.py. - - * configure.in: Require python 2.1, as INSTALL.texi says. - it. - - * Documentation/topdocs/INSTALL.texi: Add note to avoid bison - versions 1.50 and 1.75. Remove note about lexer patch. - -2003-08-16 Jan Nieuwenhuizen - - * Documentation/topdocs/INSTALL.texi: Update type1 font - description to actual situation. Add comment about new font ball - layout. - - * GNUmakefile.in (pfa-fonts): Create font-ball so that untar - in $LILYPONDPREFIX suffices for installation. - -2003-08-11 Jan Nieuwenhuizen - - * debian/control (Build-Depends): Add flex-old as alternative to - flex. Deprecate bison 1.75. - -2003-08-17 Juergen Reuter - - * lilypond.words, ly/engraver-init.ly, ly/params-init.ly: added - Vaticana contexts - - * Documentation/user/refman.itely (Ancient notation): documented - some bugs; tiny fixes; added docu on Vaticana contexts - - * gregorian-init.ly, ly/script-init.ly: moved ancient articulation - scripts - -2003-08-16 Juergen Reuter - - * Documentation/user/refman.itely (Ancient notation): added some - introductory words; added section on ancient time signatures; - added some @seealso and @refcommands; small fixes and - beautifications - -2003-08-15 Juergen Reuter - - * input/regression/note-head-style.ly: many fixes and updates - - * Documentation/user/refman.itely: added small sections on ancient - accidentals, rests and flags; revised ancient note head section; - small wording/spelling fixes - - * input/test/rests.ly: layout fixes - -2003-08-14 Juergen Reuter - - * input/puer-fragment.ly: bugfix: central C position of do clef - - * ly/gregorian-init.ly: workaround: add small padding space before - divisiones (the correct fix would be the spacing engine to handle - this) - -2003-08-13 Graham Percival - - * input/test/bar-lines-lyric-only.ly, boxed-molecule.ly, - cue-notes.ly: minor fixes. - -2003-08-13 Juergen Reuter - - * Documentation/user/refman.itely: bugfix: remove obsolete link to - input/test/custos-style.ly - - * Documentation/index.html.in: bugfix: link to Tutorial.html - - * input/puer-fragment.ly: bugfix: assigment of syllables "no-bis" - to neumes; bugfix: "et": epiphonus, not just a simple pes - -2003-08-12 Heikki Junes - - * lilypond-mode.el: split `Insert Tag' if it is long enough. - - * lilypond.words: add new features: markup, column, center, \[ \]. - -2003-08-10 Heikki Junes - - * Documentation/topdocs/NEWS.texi, DEDICATION, - stepmake/bin/add-html-footer.py - input/mutopia/J.S.Bach/baerenreiter-sarabande.ly - input/mutopia/J.S.Bach/wtk1-fugue1.ly - input/mutopia/J.S.Bach/wtk1-prelude1.ly - Documentation/topdocs/INSTALL.texi: `bug'fix: a colon `:' is - added (only) after a sentence which is complete; if the sentence is - not ended a comma `,' or nothing is used. fix also spaces. - -2003-08-08 Han-Wen Nienhuys - - * Documentation/topdocs/INSTALL.texi (Top): change GUILE - requirements to plain 1.6. - - * buildscripts/mutopia-index.py (read_lilypond_header): update - mutopia-index.py to 1.4 syntax [sic] - -2003-08-07 Heikki Junes - - * make/lilypond.mandrake.spec.in: remove menu, sync with redhat-spec. - -2003-08-07 Han-Wen Nienhuys - - * Documentation/index.html.in: url for regression pdf - - * Documentation/user/cheatsheet.itely (Cheat sheet): single staff. - - * Documentation/user/tutorial.itely (Piano staves): s/staffs/staves/g - - * make/lilypond.redhat.spec.in (Buildrequires): texinfo >= 4.6 reqd. - - * VERSION: 1.8.0 released - - * GNUmakefile.in (local-WWW-post): footify build fix. - - * configure.in: require GUILE 1.6.4 - - * Documentation/user/GNUmakefile: don't copy *.png for - lilypond-internals - - * GNUmakefile.in (local-WWW-post): move mutopia-index to toplevel - local-WWW-post target. - (rsync-web): add rsync-web target - - * Documentation/user/introduction.itely (Music notation and - engraving): add neume example - - * input/puer-fragment.ly (cantus): add puer-fragment - -2003-08-06 Jan Nieuwenhuizen - - * input/no-notation/midi-volume-equaliser.ly: Add volume setting - to notes, so that equalizer is actualy being used. - - * scm/midi.scm (instrument-equalizer-alist): - (absolute-volume-alist): Define public, so that user can copy or - override. - - * lily/key-performer.cc (create_audio_elements): Check for minor - key. Only if key is minor, set MIDI key to minor. - -2003-08-06 Han-Wen Nienhuys - - * Documentation/user/refman.itely (Hiding staffs): fixes. - - * mf/feta-eindelijk.mf (tracingvariables): add TODO. - - * lily/system-start-delimiter.cc (after_line_breaking): retrieve - vertical extents to deal with Hara kiri correctly. - - * input/regression/hara-kiri-short.ly: remove - - * input/regression/hara-kiri-pianostaff.ly: update test. - - * Documentation/user/*.tely: remove WEBTITLE - - * scm/output-tex.scm (comment): idem. - - * scm/output-pdftex.scm: remove GUILE 1.4 glue - - * scm/music-functions.scm (make-lyric-event): new function - - * scm/lily.scm (lilypond-version): new function - - * input/test/version-output.ly: new file. - - * Documentation/user/lilypond.tely: add version number to - front-page. - -2003-08-05 Jan Nieuwenhuizen - - * input/test/midi-scales.ly: Reformat to match midi2ly output again. - -2003-08-05 Han-Wen Nienhuys - - * input/template/gregorian-transcription.ly (barTwo): syntax update. - - * Documentation/user/refman.itely (Hiding staffs): rename node. - -2003-08-04 Han-Wen Nienhuys - - * input/regression/new-markup-syntax.ly (texidoc): remove - molecule-callback override. - -2003-08-04 Jan Nieuwenhuizen - - * input/les-nereides.ly: Mark tweaks with %tweak. - - * Debian patch, see debian/changelog (Anthony Fok). - -2003-08-04 Jan Nieuwenhuizen - - * buildscripts/lilypond-profile.sh: Add workaround for zsh posix - problem. - -2003-08-04 Mats Bengtsson - - * Documentation/user/refman.itely (Text markup): Fix language bug. - -2003-08-04 Han-Wen Nienhuys - - * input/* : postfix syntax fixes. - - * Documentation/user/refman.itely (Text markup): add note about - raise/lower with ^ or _ . - - * po/fi.po: fix \\apply strings. - - * lily/parser.yy (open_event): warn for prefix articulations. - -2003-08-04 Juergen Reuter - - * lily/all-font-metrics.cc (find_font): bugfix: apply Han-Wen's last - fix also on parmesan font. - -2003-08-03 Han-Wen Nienhuys - - * VERSION 1.7.30 released - - * GNUmakefile.in (EXTRA_DIST_FILES): remove lexer GCC patch. - - * buildscripts/mutopia-index.py (headertext): rewording - -2003-08-02 Han-Wen Nienhuys - - * scm/new-markup.scm (strut-markup): new markup function. - - * scm/bass-figure.scm (make-bass-figure-markup): insert vertical - space also when no accidental is there. - -2003-08-02 Jan Nieuwenhuizen - - * input/les-nereides.ly: Updates. - -2003-08-02 Heikki Junes - - * lilypond-mode.el (LilyPond-insert-tag-current): new function, - which repeats the tag insertion selected from "Insert tag" menu. - -2003-08-02 Han-Wen Nienhuys - - * lily/all-font-metrics.cc (find_font): load AFM files first only - for feta fonts. This fixes problems with TeXlive and other TeX - distros that include AFM files for the CM fonts. - - * scm/font.scm (qualifiers-to-font-name): remove. - - * lily/paper-def.cc: remove get_var. - - * input/trip.ly: remove file. - - * input/regression/spacing-note-flags.ly (raggedright): remove - stafflinethickness - - * input/les-nereides.ly: update to new syntax, cleanups. - -2003-08-01 Jan Nieuwenhuizen - - * Documentation/user/refman.itely: Clarify shortest-note problem - of autobeamer. - -2003-08-01 Heikki Junes - - * lilypond-mode.el: Add each word to regexps only once. - - * lilypond-mode.el (LilyPond-insert-tag): add new function, which - is based on the syntax definitions in lilypond.words. Remove all - LilyPond-insert-tag-* functions. Restructure LilyPond menu. - LilyPond->Insert menu is generated by the entries in lilypond.words - to which have been given a syntax definition. - - * lilypond.words: give syntax definitions (LilyPond-insert-tag) for - \notes, \relative, \score, \simultaneous, \transpose. - - * lilypond-mode.el: allow non-alpha characters only in menu keywords. - - * lilypond.words: add useful `\context Staff =' and `\context Voice ='. - - * lilypond-mode.el: add menu keywords separately. - - * lilypond.words: post-syntaxed slur pairs and syntax for \times. - -2003-08-01 Mats Bengtsson - - * Documentation/topdocs/INSTALL.texi (Top): Documentation of the - current ugly installation method for PFA fonts. - -2003-07-31 Heikki Junes - - * lilypond-mode.el: Junk LilyPond-quick-notes-insert; instruct - to use LilyPond Quick Insert Mode by Nicolas Sceaux, instead. - - * Documentation/user/music-glossary.tely: update legato. - -2003-07-30 Jan Nieuwenhuizen - - * lexer-gcc-3.0.patch: Remove. - - * lexer-gcc-3.1.sh: Disable FlexLexer.h massaging. - -2003-07-30 Han-Wen Nienhuys - - * debian/rules (binary-arch): remove NEWS. - -2003-07-30 Heikki Junes - - * buildscripts/{ many }, lily/main.cc, po/{ all }, scripts{ many }, - stepmake/bin{ many }: polish the `--help's of different scripts; - model taken from the core-utils of Linux. - - * flower/getopt-long.cc, python/lilylib.py: add space, see above. - -2003-07-29 Han-Wen Nienhuys - - * flower/parse-afm.cc (parseCharMetrics): add warnings. - - * flower/libc-extension.cc: idem. - - * flower/include/libc-extension.hh: protect against isinf macros. - -2003-07-29 Heikki Junes - - * { many }: Use two uppercase letters in LilyPond. - - * lily/main.cc, po/{ many }, scripts/{ many }: add verbs. - - * VERSION: 1.7.29 released. - -2003-07-29 Han-Wen Nienhuys - - * lily/tie.cc: add TODO comment. - - * lily/bezier.cc: replace bezier-bow with bezier-sandwich. - - * scm/*.scm: remove bezier-bow. Use bezier-sandwich with rounded - linejoins and linecaps. This fixes problems with occasional spikes - on slur/tie endings. - - * input/regression/font-name.ly: don't use PS fonts for - compatibility reasons. - - * mutopia/claop.py (accents): update to 1.8 - - * Documentation/user/music-glossary.tely (Top): remove 13pt. - - * Documentation/user/macros.itexi: don't color glossary links. - - * Documentation/user/invoking.itexi (Error messages): new section - -2003-07-28 Han-Wen Nienhuys - - * input/regression/font-name.ly: add file. - - * scm/document-backend.scm (grob-doc): remove
from - lilypond-internals - - * Documentation/topdocs/INSTALL.texi (Top): bump GUILE - reqd version to 1.6.4 - - * lily/font-interface.cc (get_font): bugfix: take font-name from - alist chain too. This fixes font-name override for \markup. - -2003-07-28 Jan Nieuwenhuizen - - * Documentation/pictures/GNUmakefile (OUT_DIST_FILES): Remove icon. - - * input/test/polymetric-differing-notes.ly: Compile fix. - -2003-07-28 Juergen Reuter - - * Documentation/user/refman.itely: fixed typo - - * lily/vaticana-ligature-engraver.cc: bugfix: insert extra space - before flexa - -2003-07-27 Heikki Junes - - * input/test/{ many }: search & fix some typos. - -2003-07-27 Han-Wen Nienhuys - - * scripts/ly2dvi.py (include_path): use preview_resolution for PNG - images. - - * scm/music-functions.scm (make-voice-props-set): set Script / - TextScript dir for polyphony too. - - * scm/define-grobs.scm (all-grob-descriptions): decrease space - before clef. - - * flower/libc-extension.cc (my_round): ANSI-C compatible rounding. - -2003-07-27 Rune Zedeler - - * Documentation/user/refman.itely (Percussion): Small - clarifications and fixes. - - * scm/drums.scm: Bugfix: Use string instead of symbol when naming - threads. This fixes different heads playing simultaneously. - -2003-07-27 Heikki Junes - - * Documentation/user/{ many }: increase readability (read through - User manual from `one big page'). - -2003-07-26 Han-Wen Nienhuys - - * input/test/polymetric-differing-notes.ly: add example with - disparate note values. - - * input/test/polymetric.ly: rename from poly-metric - - * scripts/ly2dvi.py (include_path): bugfix: use outbase - iso. outname. - - * mf/feta-klef.mf: clef fixes, remove left/right spacing. set - G-clef bbox to real char extents. This fixes the G-clef being - offset too much to the right. - document perc clef offset. - - WARNING: FONT CHANGED. - - * Documentation/user/tutorial.itely (Tutorial): move menu. - -2003-07-25 Han-Wen Nienhuys - - * buildscripts/lilypond-profile.sh (Error): trim error message. - - * Documentation/user/invoking.itexi (Invoking the lilypond - binary): add note about path. - - * Documentation/user/macros.itexi: add @c at EOL, hopefully - suppresses superfluous spaces. - -2003-07-25 Jan Nieuwenhuizen - - * buildscripts/lilypond-profile.sh: Add documentation to error - message. - - * make/srcdir.make.in (web-install): Use SRCMAKE, set outdir. - -2003-07-25 Han-Wen Nienhuys - - * scripts/lilypond-book.py: HTML fixes (by Michael Ossmann - ) - - * Documentation/bibliography/computer-notation.bib (pages): prune - unscientific language. - - * Documentation/user/GNUmakefile: copy unsplit file to - lilypond.html (idem for lilypond-internals). - - * buildscripts/mutopia-index.py (read_dict): remove "example file:" - - * Documentation/topdocs/NEWS.texi (Top): rewrite NEWS in texinfo. - - * python/lilylib.py (lilypond_version): 2.1 proof version check. - - * lily/staff-symbol-referencer.cc (LY_DEFINE): lrint, the final - fix. - -2003-07-25 Heikki Junes - - * Documentation/user/{ various }: bind text snippets with their - examples, e.g. by punctuation: This is an example. - -2003-07-25 Jan Nieuwenhuizen - - * ly/performer-init.ly (VoiceContext): Typos. - - * stepmake/stepmake/toplevel-targets.make (install): For srcdir - builds, leave final-install to toplevel srcdir makefile. - - * make/srcdir.make.in (install): New target. - -2003-07-24 Jan Nieuwenhuizen - - * ly/performer-init.ly (TabStaffContext, TabVoiceContext): Add. - This fixes core dump on MIDI output (Simon Weatherill). - - * stepmake/stepmake/generic-targets.make (WWW-post): Oops, depend - on local-WWW-post. - -2003-07-24 Han-Wen Nienhuys - - * make/lilypond.redhat.spec.in: add dvips to reqs. - -2003-07-24 Jan Nieuwenhuizen - - * make/srcdir.make.in (web): Add special web target. - - * stepmake/stepmake/generic-targets.make (WWW): Remove $(MAKE) - from inner $(LOOP). - - * cygwin/mknetrel: Override $(webdir) (was: $(docdir)). - - * stepmake/stepmake/generic-targets.make (www-targets-help): - * GNUmakefile.in (web-install): Install in $(webdir). - - * input/test/smart-transpose.ly (texidoc): texidoc compile fix. - - * cygwin/changelog: - * cygwin/mknetrel: Update. - - * GNUmakefile.in (web-install): Rename (was: install-html-doc). - (html-doc): Remove (use: web). - - * stepmake/stepmake/script-rules.make: - * stepmake/stepmake/python-module-rules.make ($(outdir)/%.py): - Fix $(config_make) dependencies for srcdir build. - - * stepmake/stepmake/generic-targets.make ($(config_make)): Fix - target for srcdir build. - - * stepmake/make/stepmake.make: - * make/srcdir.make.in: - * GNUmakefile.in: - * make/stepmake.make (config_make): Rename variable (was: - configuration). - -2003-07-24 Han-Wen Nienhuys - - * Documentation/user/internals.itely (Manipulating music - expressions): run lilypond on example too. - - * flower/include/libc-extension.hh: move lrint define to - header. bugfix. - -2003-07-24 Jan Nieuwenhuizen - - * stepmake/GNUmakefile.in (STEPMAKE_TEMPLATES): - * stepmake/stepmake/GNUmakefile (STEPMAKE_TEMPLATES): Add www (why - do we recurse whole tree?). - - * GNUmakefile.in (html-doc): Resurrect. - - * Documentation/pictures/GNUmakefile (default, local-dist): Remove - obsolete $(package-icon) dependency. - -2003-07-24 Han-Wen Nienhuys - - * Documentation/user/refman.itely (Automatic staff changes): - add seealso - - * Documentation/index.html.in: link to bigpage. - - * Documentation/user/tutorial.itely (Tutorial): streamline. - - * Documentation/index.html.in: url typo. - - * VERSION (PACKAGE_NAME): release 1.7.28 - - * python/lilylib.py (error_log): remove '/' from name. - - * input/regression/pedal.ly: remove; dups input/test/ - - * stepmake/stepmake/texinfo-rules.make: remove footify everywhere. - - * Documentation/index.html.in: python style doco index. - - * Documentation/{footer,header}.html.in (src): remove, - - * Documentation/pictures: remove all but lelie-logo.xpm. - - * stepmake/stepmake/texinfo-vars.make (MAKEINFO): unset LANG - before running makeinfo. - - * lily/include/music-iterator.hh (IMPLEMENT_CTOR_CALLBACK): add - @code{} - -2003-07-23 Han-Wen Nienhuys - - * input/test/bar-number-regular-interval.ly: rename. - - * Documentation/user/*: various fixes. - -2003-07-24 Heikki Junes - - * Documentation/{ many }: polish for update-all-menus. typos. - - * po/fi.po: fixes. - - * Documentation/topdocs/{README.texi,INSTALL.texi}: update links. - - * buildscripts/mutopia-index.py: polish. - - * input/regression/{ many }, input/test{ many }: polish texidocs. - -2003-07-23 Han-Wen Nienhuys - - * scripts/convert-ly.py (FatalConversionError.conv): rule for pedal-style - - * lily/text-spanner.cc (brew_molecule): use bracket-flare - iso. edge-widen. - - * lily/piano-pedal-engraver.cc (process_music): change from - process_acknowledged () - - * lily/piano-pedal-bracket.cc: new file. Change - setup_pedal_bracket in after_line_breaking callback. Thoroughly - cleaned up. - - * lily/text-spanner.cc (setup_pedal_bracket): cleanup. - - * input/regression/tuplets.ly (texidoc): rename file. - - * po/fr.po: update - - * buildscripts/lilypond-profile.sh: error message if script is not - sourced. - - * lily/tuplet-bracket.cc (make_bracket): change edge-widen to - bracket-flare - (make_bracket): simplify code. - - * lily/parser.yy (verbose_command_req): catch typos in \key scale - argument. - - * python/lilylib.py (lilypond_version_check): new function - - * scripts/lilypond-book.py (TexiPaper.incl_opt): idem - - * scripts/ly2dvi.py (run_lilypond): add version check. - - * scripts/lilypond-book.py (option_definitions): typo - - * scripts/ly2dvi.py (include_path): typo - - * make/lilypond.redhat.spec.in (Group): add INSTALL.txt - - * lily/parse-scm.cc (parse_handler): typo - - * Documentation/user/macros.itexi: use @heading for headings. - - * Documentation/user/refman.itely: updates, fixes. - -2003-07-23 Heikki Junes - - * po/fi.po: add Finnish translations. fixes. - - * stepmake/stepmake/toplevel-targets.make: rpm-mandrake -> rpm-mdk. - - * lily/piano-pedal-engraver.cc: fixed warnings, got working syntax - from lily/glissando-engraver.cc. - -2003-07-23 Han-Wen Nienhuys - - * lily/volta-bracket.cc (brew_molecule): opps: only wipe number - for non-first _broken_ bracket. - - * Documentation/user/refman.itely: corrections. - -2003-07-22 Han-Wen Nienhuys - - * lily/new-fingering-engraver.cc (position_scripts): add heads to - support of the fingerings. - - * po/fr.po: French translation update. - - * lily/parser.yy (Composite_music): add extra \ for "\apply" in - strings. - -2003-07-22 Jan Nieuwenhuizen - - * Documentation/user/introduction.itely: Small fixes. - -2003-07-22 Heikki Junes - - * Documentation/topdocs/AUTHORS.texi: polish. - -2003-07-22 Han-Wen Nienhuys - - * Documentation/user/introduction.itely: revise - - * Documentation/user/tutorial.itely: reorganise. - - * Documentation/topdocs/index.tely: remove. - - * Documentation/header.html.in: prune. - - * GNUmakefile.in: clean up web building. - - * stepmake/stepmake/generic-targets.make (WWW): add WWW as generic - target. - -2003-07-21 Heikki Junes - - * lilypond-font-lock.el: do not try to match two-char slurs \) \]. - - * lilypond-mode.el: turn on blink-matching-paren. - -2003-07-21 Jan Nieuwenhuizen - - * scm/output-sodipodi.scm (svg-header): Fix typo. - -2003-07-21 Han-Wen Nienhuys - - * python/lilylib.py (error_log): use mktemp iso. temp_dir. This - fixes a security hole. - - * scripts/lilypond-book.py (original_dir): remove temp_dir - - * scm/document-translation.scm: use @code tags. - -2003-07-20 Heikki Junes - - * lilypond-font-lock.el: do not try to match two-char slurs \( \[. - - * lilypond-mode.el: add a buffer-local post-command-hook to set - context dependent syntax-table after each cursor event. Remove old - stuff. XEmacs: turn on parenthesis highlighting in LilyPond-mode. - - * lilypond-indent.el: update comments. - - * Documentation/footer.html.in: add period. - -2003-07-20 Han-Wen Nienhuys - - * make/lilypond.redhat.spec.in (Group): don't strip binary. - - * scm/document-translation.scm (document-property-operation): add - @code{} tags. - - * VERSION (PACKAGE_NAME): release 1.7.27 - - * config.make.in: add PAPER variable - - * buildscripts/new-chords.py (help): add help text - - * Documentation/user/introduction.itely (Typography and program - architecture): fixes. - - * Documentation/user/GNUmakefile (DVIPS_PAPERSIZE): set A4 paper - for texinfo and dvips. This fixes problems with PDF output of the - wrong size. - - * stepmake/stepmake/tex-rules.make ($(outdir)/%.ps): add - DVIPS_PAPERSIZE variable - - * stepmake/stepmake/texinfo-rules.make ($(outdir)/%.dvi): add - TEXINFO_PAPERSIZE variable - -2003-07-19 Han-Wen Nienhuys - - * mf/feta-macros.mf: whoops: only draw lines for test situations. - - * mf/feta-toevallig.mf: lowres fixes. - -2003-07-19 Jan Nieuwenhuizen - - * NEWS: Typo and fill-paragraph fixes. - - * flower/libc-extension.cc (lrint)[!HAVE_LRINT]: Use round () and - cast #define. - - * configure.in: - * config.hh.in: Check for lrint. - -2003-07-19 Han-Wen Nienhuys - - * VERSION: 1.7.26 released - - * lily/separation-item.cc: add padding property. - - * input/test/*.ly: various fixes, remove solo-a2.ly - - * scm/new-markup.scm (brew-new-markup-molecule): arg order - bugfix. Fixes old-style markup compatibility. - - * Documentation/user/introduction.itely (Introduction): historical - elucidations - - * Documentation/user/music-glossary.tely (Top): linewidth fix. - - * Documentation/topdocs/AUTHORS.texi (AUTHORS): cleanup. - - * Documentation/index.texi (Top): cleanup. - - * Documentation/user/introduction.itely (Introduction): rewrite - introduction, - (Music notation and engraving): about notation. Add flat-picture - -2003-07-18 Han-Wen Nienhuys - - * ly/engraver-init.ly (LyricsVoiceContext): add padding for - separation items. This keeps lyrics from bumping into each other. - -2003-07-18 Jan Nieuwenhuizen - - * GNUmakefile.in (topdocs-web): New target. - (local-web): Depend on topdocs-web; fixes html-doc. - -2003-07-18 Han-Wen Nienhuys - - * po/lilypond.pot: run po-replace - - * Documentation/GNUmakefile (SUBDIRS): remove windows/ directory - - * scm/drums.scm (reset-drum-kit): new function. - - * Documentation/GNUmakefile (SUBDIRS): remove misc/ directory. - - * scripts/update-lily.py: remove - - * VERSION: release 1.7.25 - - * Documentation/user/introduction.itely (Introduction): rewrite - start of introduction. - -2003-07-18 Juergen Reuter - - * lily/all-font-metrics.cc: fixed typo - -2003-07-18 Heikki Junes - - * lilypond-font-lock.el (LilyPond-mode-set-syntax-table, - LilyPond-mode-context-set-syntax-table): new functions to define - the syntax table according to context. - - * lilypond-mode.el: use LilyPond-mode-set-syntax-table. - -2003-07-17 Han-Wen Nienhuys - - * Documentation/user/refman.itely (Figured bass): - language nit courtesy http://www.vocabula.com - - * GNUmakefile.in: remove no kpathsea hack. - - * Documentation/topdocs/INSTALL.texi (Top): remove web-doc from - doco. - - * GNUmakefile.in: remove web-doc target. - - * lily/all-font-metrics.cc (find_afm): add message about - buildscripts/clean-fonts.sh - - * scm/define-music-properties.scm (figure): use string for 'figure - - * lily/parser.yy (bass_number): allow strings for bassfigure too. - - * input/regression/ : add raggedright = ##t where applicable. - - * scm/bass-figure.scm (make-bass-figure-markup): add - alignBassFigureAccidentals property. - - * lily/volta-bracket.cc (brew_molecule): only put text on 1st - bracket. - - * lily/hyphen-spanner.cc (set_spacing_rods): new function: take - syllables widths into account for minimum-length. - - * input/test/staff-container.ly: update file - - * input/test/stem.ly: remove - - * lily/event.cc (LY_DEFINE): add ly: prefix. - - * input/test/clef-manual-control.ly: from manual-clef - - * input/test/repeat-shorter-bracket.ly: move from coda-kludge - - * input/test/different-time-signatures.ly: move to poly-metric.ly - - * input/test/hara-kiri*,scales.ly: remove - - * input/test/chord-names-dpnj.ly (efullmusic): remove file (merged - with chord-names-jazz.ly) - - * make/mutopia-rules.make ($(outdir)/%.pdf): use +lilypond.map to - get scalable cm fonts too. - - * stepmake/stepmake/metafont-rules.make (ENCODINGOPTION): add - --encoding for mftrace if present. - - * input/regression/slur-area.ly: move from test/ - - * input/test/: remove simple-slur-endings slur-attachment - slur-broken-cross-staff slur-broken.ly slur-damping.ly - slur-follow-music.ly slur-position.ly slur-proof.ly slur-shape.ly - slur-symmetry slur-symmetry tie-broken.ly - - * scm/drums.scm (set-drum-kit): add function. - - * Documentation/user/refman.itely (Percussion staves): use - set-drum-kit - - * scripts/etf2ly.py (interpret_finale_key_sig): handle minor keys - too - (Global_measure.set_timesig): handle 3/8 time sig too. - - * scm/output-lib.scm (note-head-style->attachment-coordinates): - note about triangle note heads. - - * scm/drums.scm: use alist for instrument-settings. This fixes the - bug with assigning to drums in the .ly file. - - * mf/feta-autometric.mf (code): start font at 32. WARNING: FONT - CHANGED. - - * scm/define-grob-interfaces.scm (cluster-beacon-interface): add - cluster-beacon-interface - - * scm/define-grobs.scm (all-grob-descriptions): default to ramp. - - * scripts/convert-ly.py (FatalConversionError.conv): add cluster rule. - - * ly/spanners-init.ly (stopGroup): remove start/stopCluster. - - * lily/cluster.cc (brew_molecule): examine ClusterSpannerBeacons - to get positions. - - * lily/cluster-engraver.cc: rewrite: catch cluster-note-events, - make ClusterSpannerBeacon to record Y positions. This removes the - need to switch off notes. Use \apply #notes-to-clusters { .. } to - make cluster-note-events. - -2003-07-17 Jan Nieuwenhuizen - - * stepmake/aclocal.m4: Do AC_PATH_PROG for python. - - * configure.in: Use lily/main.cc as identifying source file. - - * lily/accidental-engraver.cc: Compile fix: include protected-scm.hh. - - * config.hh.in: - * python/midi.c: Remove /Python.h ifdef tree. - - * configure.in: Require PYTHON >= 2.0. - - * stepmake/aclocal.m4 (STEPMAKE_PYTHON_DEVEL): Rewrite. Ask - $PYTHON for include dir location. - (STEPMAKE_PYTHON): New function. Use - - PYTHON=foo ./configure - - to override. - -2003-07-17 Han-Wen Nienhuys - - * lily/translator-scheme.cc (LY_DEFINE): bugfix: always return - something. - - * make/lilypond.redhat.spec.in (Group): change ftp.cs.uu.nl to - ftp.lilypond.org everywhere. - -2003-07-16 Han-Wen Nienhuys - - * lily/text-item.cc (interpret_new_markup): do only if new-markup - detected. - - * Documentation/user/refman.itely (Grace notes): note on explicit - contexts - -2003-07-16 Heikki Junes - - * lilypond-font-lock.el: add a comment about LilyPond specific - escape characters: ^, - and _, in the syntax table. - - * Documentation/user/appendices.itely: a majuscule fix. - -2003-07-15 Han-Wen Nienhuys - - * input/test/trills.ly (endHorizScript): fixes. - - * input/test/chord-names-jazz.ly: merge in alternate Jazz - notation, move from regression. - - * input/test/script-stack.ly: change name from stacked-scripts - - * input/test/ossia.ly: octave errors. - - * input/no-notation/midi-tuplets.ly: move from input/test/, idem - for midi-volume-equaliser - -m2003-07-15 Han-Wen Nienhuys - - * scm/output-ps.scm (lily-traced-cm-fonts): substitution for lily - cm fonts. - - * mf/feta-beugel.mf: don't multiply font_count by 10. - - * lily/lookup.cc (horizontal_line): new function. Use - horizontal-line in output backends. - - * Documentation/user/tutorial.itely (An orchestral part): new - section on orchestral stuff and identifiers. - -2003-07-14 Heikki Junes - - * lilypond-mode.el: comment-out paren-highlighting, it still causes - some interference to other modes. - -2003-07-14 Han-Wen Nienhuys - - * lily/spacing-spanner.cc (musical_column_spacing): use average, - not maximum of spacing wishes in polyphonic situations. - - * scm/define-grobs.scm (all-grob-descriptions): bold tuplet - number - - * lilypond-indent.el: remove paren matching. - - * lily/text-item.cc (interpret_new_markup): new function - use iso. text2molecule. - - * lily/main.cc (notice): change FSF address - - * po/de.po: update PO file to 1.6. - -2003-07-13 Heikki Junes - - * Documentation/user/ {many}: Add periods and remove spaces. - -2003-07-11 Heikki Junes - - * lilypond-indent.el (LilyPond-paren-set-mode): From XEmacs' paren.el: - Disable buffer-locally default paren hook and make a new one. - - * lilypond-mode.el: Turn off locally paren-mode, but turn on - locally LilyPond-paren-mode. Add todo for mouse double-click. - -2003-07-10 Heikki Junes - - * lilypond-indent.el (LilyPond-show-paren-mode): From Emacs' paren.el: - Disable buffer-locally default paren idle timer and make a new one. - - * lilypond-mode.el: Turn off locally show-paren-mode, but turn on - locally LilyPond-show-paren-mode. Add to menu a toggle for - LilyPond-show-paren-function. - -2003-07-08 Han-Wen Nienhuys - - * input/template/jazz-combo.ly (drumNotes): 1.7 fixes - -2003-07-09 Heikki Junes - - * Documentation/user/refman.itely: spelling fix. - - * lilypond-mode.el, lilypond-indent.el: restrusture and comment - paren highlight function definitions. add todo for - LilyPond-show-paren-mode. - -2003-07-07 Han-Wen Nienhuys - - * input/template/jazz-combo.ly: new file. - -2003-07-06 Han-Wen Nienhuys - - * mf/feta-toevallig.mf: tweak for bottom of flat sign. - lo-res fixes. - - * mf/feta-schrift.mf: bugfix in varcoda sign. - WARNING: FONT CHANGED - - * lily/my-lily-lexer.cc (lookup_identifier): return SCM_UNDEFINED, - in accordance with lexer.ll. - -2003-07-05 Jan Nieuwenhuizen - - * Documentation/user/tutorial.itely: Edit introduction. - -2003-07-05 Han-Wen Nienhuys - - * lily/staff-symbol-referencer.cc (LY_DEFINE): add - ly:grob-staff-position - -2003-07-04 Han-Wen Nienhuys - - * scm/to-xml.scm: import srfi-1 - - * VERSION (MAJOR_VERSION): release 1.7.24 - - * python/lilylib.py (make_ps_images): make multipage _really_ work. - - * scripts/lilypond-book.py (do_file): put texidoc before image. - (TexiPaper.process_ly2dvi_block): make multipage _really_ work. - - * input/regression/*.ly: fix snippet octaves - - * input/test/spanner-after-break-tweak.ly: import - broken-spanner-adjustment - - * input/no-notation/midi-transposing.ly: move from input/test/ - - * input/test/: remove chord-markup - - * input/regression/instrument-name-partial.ly: move from input/test. - - * input/test/vertical-text.ly: remove - - * ly/engraver-init.ly (LyricsVoiceContext): add more vertical - space above lyrics lines. - - * input/test/uniform-breaking.ly: remove file. - - * lily/gourlay-breaking.cc (combine_demerits): add comment about - uniform spacing density. - - * input/test/chords.ly (keys): remove file. - - * scm/documentation-lib.scm (oop): use srfi-1 too. - - * input/regression/*.ly: add \version - - * Documentation/user/*.itely: various fixes. - - * buildscripts/mf-to-table.py (base): break table every three - symbols. - - * input/: remove %% new-chords-done %% . - - * input/tutorial: remove os-flute-2.ly os-score.ly miniatures.ly - os-music.ly - -2003-07-03 Han-Wen Nienhuys - - * make/lilypond.redhat.spec.in: require GUILE >= 1.6.4-7 - - * scm/new-markup.scm (box-markup): new function. - (box-markup): new function. Contributed by Dick Schoeller - - - * scm/lily.scm: remove reduce-no-unit - (list-insert-separator): use fold-right - - * lily/molecule-scheme.cc (ly_molecule_add): take variable number - of arguments. - - * NEWS: more neutral language for ancient notation - - * lily/chord-tremolo-engraver.cc (acknowledge_grob): only set - inside pointing beaming for chord tremolo. - - * Documentation/user/lilypond-book.itely: minor editing - -2003-07-03 Juergen Reuter - - * NEWS: added news for 1.8 regarding ancient notation - - * Documentation/user/refman.itely (Gregorian square neumes - ligatures): fixed typo - - * lily/vaticana-ligature-engraver.cc, - lily/include/vaticana-ligature.hh: bugfix: use special heads for - lower/upper head of Pes only when heads are stacked - - * lily/vaticana-ligature-engraver.cc, lily/vaticana-ligature.cc, - scm/define-grob-properties.scm: cleanup: make "join-left" a - boolean grob property and save delta pitch in grob property - "delta-pitch" instead - - * lily/include/gregorian-ligature.hh: bugfix: corrected comments - -2003-07-02 Han-Wen Nienhuys - - * lily/parser.yy (Repeated_music): bug fix, beam multiplicity was - completely borked - - * lily/chord-tremolo-engraver.cc (try_music): warnings for user-errors. - (try_music): bug fix: beam multiplicity was completely borked. - - * scm/lily.scm: remove tail, filter-list, filter-out-list, - first-n, butfirst-n in favor of srfi-1 functions. - remove string-join, string-pad in favor of srfi-13 functions. - - * mf/parmesan-custodes.mf (dir_down): remove _ from glyph names. - - * NEWS: use complete sentences. - - * Documentation/user/introduction.itely (Example applications): - add note about databases and lilypond-book. - - * input/test/volta.ly: remove file - - * input/regression/volta-broken-left-edge.ly: simplify file - -2003-07-01 Han-Wen Nienhuys - - * Documentation/user/refman.itely (Constructing a tweak): new - subsection. - - * Documentation/user/tutorial.itely (Fine tuning layout): add - common tweaks. - - * scm/define-grobs.scm (TextScript): use new brewer. - -2003-06-30 Han-Wen Nienhuys - - * VERSION: release 1.7.23 - - * scm/new-markup.scm (brew-new-markup-molecule): bugfix - - * python/lilylib.py (make_ps_images): bugfixes. - - * input/regression/volta-multi-staff.ly: new file. - - * Documentation/user/macros.itexi: refcommands, refcommand macros. - - * Documentation/user/tutorial.itely (Piano staffs): new section. - (Setting variables): new section - (Fine tuning layout): new section - - * input/just-friends.ly: remove file. Superseeded by - input/test/chords-without-melody.ly - - * ly/property-init.ly: add all commands to refman. - - * scm/define-translator-properties.scm: remove - graceAccidentalSpace, graceAlignPosition, keyOctaviation - - * mf/parmesan-custodes.mf (dir_down): remove underscore from glyph - name. Underscores botch up PS output. - - * scm/define-translator-properties.scm: remove - textNonEmpty, oneBeat, regularSpacingDelta - - * scripts/convert-ly.py (FatalConversionError.conv): conversion - rule for automaticBars. - - * lily/timing-engraver.cc (start_translation_timestep): change - barNonAuto to automaticBars - -2003-06-30 Graham Percival - - * input/test/perform-tie.ly: delete file. - -2003-06-29 Juergen Reuter - - * Documentation/user/refman.itely (Gregorian square neumes - ligatures): bugfix: do not show ledger lines in neumes table - (fixed by setting staff symbol to transparent rather than removing - it from staff context) - -2003-06-29 Han-Wen Nienhuys - - * scm/new-markup.scm (brew-new-markup-molecule): move old markup - glue into brew-new-markup-molecule. - - * input/mutopia/J.S.Bach/Petites-Preludes/*.ly: syntax updates. - - * Documentation/user/introduction.itely (Computerized typography): - new section - - * Documentation/user/tutorial.itely (An orchestral part): remove - pc example from tutorial. - - * input/tutorial/lilbook.tex: use screech-boink - - * scripts/lilypond-book.py (compile_all_files): split formatting - output body and scheduling lilypond compilation. - (format_lilypond_output_bodies): new function - (format_lilypond_block): new function - (html_pages): allow multi-page images in HTML - - * python/lilylib.py (make_ps_images): rename function from - make_preview, merge with make_page_images - -2003-06-28 Graham Percival - - * input/test/key-clefs.ly: moved to regression. - - * input/test/perform-grace.ly: moved to to no-notation/midi-grace.ly - - * input/no-notation/README: added note about midi-*.ly files. - - * input/test/two-key.ly: moved to no-notation/parse5.ly - - * input/test/ short-part-combine.ly sketch.ly system-start-brace.ly - system-start-bracket.ly two-slurs.ly voice-switch.ly : deleted - - * input/test/ {various}: modified comments, marked some for deletion. - - * input/test/lines.ly: deleted file; duplicate of embedded-postscript.ly - - * input/test/mmrest-collision: moved to regression. - -2003-06-28 Han-Wen Nienhuys - - * scm/chord-name.scm (note-name->markup): don't superscript root - alterations in chordnames. - -2003-06-23 Han-Wen Nienhuys - - * Documentation/user/refman.itely (Multi measure rests): more - index/cross-referencing. - - * lily/line-spanner.cc (line_molecule): bugfix for trill style. - - * scm/font.scm: remove properties-to-font-name code. - - * scm/define-grob-properties.scm: remove 'type - - * scripts/convert-ly.py (FatalConversionError.conv): type -> style - conversion - - * lily/text-spanner.cc: change 'type grob prop to 'style - - * lily/unfolded-repeat-iterator.cc (process): bugfix: use a - "first" flag to decide whether to make a start-repeat - - * input/regression/grace-volta-repeat-2.ly: new file. - -2003-06-22 Han-Wen Nienhuys - - * lilypond-indent.el: rename generic functions to LilyPond-* - -2003-06-22 Graham Percival - - * input/test/thumb.ly: delete, merged into refman. - - * Documentation/user/refman.itely: added thumb info to Fingering. - - * input/test/ follow-break.ly multi-slope.ly note-shift.ly - notemode-chords.ly orchestalpart.ly rhythmic-staff.ly - vertical-align.ly : deleted files. - -2003-06-21 Han-Wen Nienhuys - - * lily/align-interface.cc (find_fixed_alignment_parent): new function. - - * lily/line-spanner.cc (broken_trend_offset): remove function. - (get_broken_offset): idem. - (brew_molecule): rewrite the line-break case. - - * input/regression/follow-voice-break.ly: new file. - - * lily/line-spanner.cc (after_line_breaking): remove lines at the - start of a system. - -2003-06-20 Graham Percival - - * input/test/tuplet-rest.ly: moved to regression. - - * input/test/ script-horizontal.ly tuplet-spanner-duration.ly: - deleted file. - - * input/test/ {many} : marked file for possible deletion. - -2003-06-20 Han-Wen Nienhuys - - * input/regression/beam-funky.ly: add note about (disputed) - correct beaming. - - * ly/engraver-init.ly (ScoreContext): put key-signature after - staff-bar - -2003-06-20 Graham Percival - - * input/test/ broken.ly lyric-phrasing.ly: deleted. - - * input/test/slur-mininum.ly: renamed to slur-minimum-length.ly. - - * input/test/staff-line-leading.ly: renamed to staff-space.ly. - - * input/test/no-stem-extend.ly: moved to stem-extend.ly; previous - stem-extend was deleted (it was duplicate example, and not as - good). - - * input/test/[s-z]*.ly: add texidoc index. - -2003-06-20 Han-Wen Nienhuys - - * lily/slur.cc (get_boundary_notecolumn_y): change name from - get_first_notecolumn_y - - * lily/spanner.cc (broken_spanner_index): new function. - -2003-06-19 Graham Percival - - * input/test/ beam-damp.ly grace-end.ly lyric-extender.ly - lyric-hyphen.ly : moved to regression. - - * input/test/ beam-stem-test.ly beamed-slur-endings.ly - diverse-spacing.ly duration-check.ly knee.ly lyrics.ly : deleted. - - * input/test/instrument-name-mmrest.ly: moved to - ../regression/multi-measure-rest-instr-name.ly - - * input/test/knee-sym.ly: moved to - ../regression/beam-knee-symmetry.ly. - - * input/test/hymn.ly: change comments. - - * input/test/[p-r]*.ly: add texidoc index. - -2003-06-19 Han-Wen Nienhuys - - * input/mutopia/J.S.Bach/Petites-Preludes/*.ly (opus): update - to postfix syntax - - * input/mutopia/W.A.Mozart/mozart-hrn3-romanze.ly (romanze): new - syntax. - - * VERSION: release 1.7.22 - -2003-06-18 Graham Percival - - * input/test/[h-k]*.ly: added texidoc index. - - * input/test/knee-mult.ly: removed file (duplicate of beam-isknee.ly) - - * input/test/equaliser.ly: renamed to midi-volume-equaliser.ly. - - * input/test/ various : mark files for deletion or moving to regression. - - * input/test/note-chords.ly: renamed to chord-names-no-inversions.ly. - - * input/test/[l-o]*.ly: added texidoc index. - -2003-06-17 Han-Wen Nienhuys - - * scm/music-functions.scm (make-ottava-set): - only do ottavation if centralCPosition is set. - - * lily/translator-scheme.cc (ly:context-property-where-defined): - return '() if not found. - -2003-06-17 Heikki Junes - - * lilypond-mode.el (LilyPond-un-comment-region): removed. - Use one command for both commenting and uncommenting. - - * lilypond-indent.el (LilyPond-comment-region): new function, - (un)comments each line separately. - - * lilypond-mode.el, lilypond-indent.el: fix XEmacs paren-match. - - * lilypond-mode.el (LilyPond-add-imenu-menu): new function, - imenu is not added by default; adapted from f90.el, - makes Help-menu, which does not fit, visible in XEmacs. - -2003-06-16 Heikki Junes - - * lilypond-mode.el: Set show-paren-mode local; minor-mode - show-paren-mode sets blink-matching-paren-on-screen local. - Try to make show-paren-function to paren-highlight local. - - * lilypond-indent.el (LilyPond-scan-sexps): new function. - Copy definitions of Emacs' show-paren-function and - XEmacs' paren-highlight and make minimal changes; - add comments about locality. - Fix matching first open-paren-char in '<< .. >>'. - -2003-06-16 Graham Percival - - * input/test/g*: added texidoc index. - - * input/test/[a-g]*: added raggedright==#t when it - seemed appropiate. - - * input/test/ fake-grace.ly figured-bass.ly : removed file. - - * Documentation/topdoc/INSTALL.texi: removed false warnings - about gcc 3.3. - -2003-06-16 Han-Wen Nienhuys - - * input/test/spanner-after-break-tweak.ly (texidoc): new file. - - * input/test/chords-without-melody.ly (texidoc): add from - input/just-friends.ly - - * input/regression/size{13--26}.ly: move from input/ - - * input/{opus-130,praeludium-fuga,scarlatti-*}.ly - input/{star-spangled-banner,twinkle}.ly: remove - - * lily/slur.cc: remove slur over rest warnings. - - * lily/note-spacing.cc (get_spacing): include left part of right - object in fixed space. This fixes stretched space before - accidentals. - - * input/regression/spacing-accidental-stretch.ly: new file. - -2003-06-16 Rune Zedeler - - * input/mutopia/R.Schumann/romanze-op28-2.ly: Minor fixes. - Reduce to 16pt. - -2003-06-15 Han-Wen Nienhuys - - * input/regression/spacing-knee.ly: docstring - - * input/regression/spacing-multi-tuplet.ly (multipart): docstring - - * input/tutorial/{gallupi,minuet,sammartini,singing-saw}.ly - input/tutorial/{test,solar,flowing}.ly: remove - - * input/rhythm.ly: remove - - * input/mutopia/F.Schubert/standchen.ly: update syntax. - - * input/mutopia/E.Satie/petite-ouverture-a-danser.ly (global): - update syntax. - - * scm/define-grobs.scm (all-grob-descriptions): set - knee-spacing-correction to 1.0 - - * lily/note-spacing.cc (stem_dir_correction): compute knee - correction using stem-thickness and head width. - - * input/regression/beam-quanting-horizontal.ly: update texidoc - - * scm/define-grobs.scm (all-grob-descriptions): set - beamed-extreme-minimum-free-lengths to 1.25 for 32nd beams. - This fixes 32nd beams for noteheads in spaces quants. - - * scripts/lilypond-book.py (process_lilypond_blocks): opps. - -2003-06-15 Heikki Junes - - * README.mandrake: Change lilypond-extras to lilypond-documentation. - -2003-06-14 Han-Wen Nienhuys - - * input/test/dpncnt.ly,part-combine-score.ly: remove. - - * VERSION (PACKAGE_NAME): release 1.7.21 - - * input/regression/stem-shorten.ly: new file. - - * lily/stem.cc (get_default_stem_end_position): revise stem - shortening code. - - * input/regression/spacing-multi-tuplet.ly: move from input/test/ - - * input/test/{scripts,volta-start,sleur}.ly: remove - - * input/regression/span-bar.ly: smaller file. - - * input/regression/spacing-{natural,tight,loose}.ly: remove - - * input/test/markup.ly: remove - - * scripts/lilypond-book.py: put printfilename in separate chunk, - so texidoc is printed after the filename. - -2003-06-12 Heikki Junes - - * make/lilypond.mandrake.spec.in: fix docdirs. - -2003-06-13 Han-Wen Nienhuys - - * input/regression/beam-french.ly: bugfix. - - * buildscripts/lys-to-tely.py (name2line): sort filenames. - - * input/regression/(various).ly: add raggedright = #t. - - * input/regression/auto-beam.ly: move from abe.ly - -2003-06-13 Graham Percival - - * input/test/f*.ly: added texinfo index. - - * input/test/broken-thread-line.ly: renamed to follow-break.ly. - -2003-06-13 Han-Wen Nienhuys - - * lily/beam-quanting.cc (score_forbidden_quants): also add inter - quant penalty for beam just outside staff. - - * input/regression/beam-quanting-horizontal.ly (texidoc): move - from beam-pos.ly, remove non-horizontal tests. - - * input/test/(various): cleanup header info. - - * input/test/tchaikovsky.ly: remove file. - - * scm/chord-generic-names.scm: move from - double-plus-new-chord-name.scm - - * input/test/orchestscore.ly: remove file - - * Documentation/user/refman.itely (Vocal music): update documentation. - - * scm/define-translator-properties.scm (chordNoteNamer): remove - chordNameStyle, use chordNameFunction - - * scm/chord-name.scm (set-chord-name-style): remove - set-chord-name-style. Use \property chordNameFunction. - -2003-06-12 Han-Wen Nienhuys - - * Documentation/user/lilypond-book.itely (Integrating LaTeX and - music): remove @TeX{} command. - -2003-06-12 Jan Nieuwenhuizen - - * lilypond-indent.el (scan-sexps): Renamed to - aargh-this-breaks-other-emacs-modes-scan-sexps. - -2003-06-12 Heikki Junes - - * lilypond-indent.el: Fix: match concurrent one-char opening and - closing slurs: '()', etc. Add comments. - - * Documentation/user/music-glossary.tely: fix: change ä to @"a. - - * lilypond-font-lock.el: match unending string at eof. - - * make/lilypond.mandrake.spec.in: refreshed packed file list. - -2003-06-10 Graham Percival - - * input/test/beam-abbrev.ly input/test/default-neutral-dir.ly - input/test/beam-dir.ly input/test/beam-position.ly - input/test/beam-suspect.ly input/test/beam-trend.ly - input/test/beams.ly input/test/crescendo-text.ly : deleted - * input/test/beam-chord.ly: moved to input/regression/beam-chord.ly - * input/test/ beam-pos.ly beam-second.ly : moved to input/regression/ - * input/test/default-bars.ly: moved to bar-always.ly - * input/test/ {many}: deleted old "renamed from foo to bar" comments. - -2003-06-10 Han-Wen Nienhuys - - * input/test/chord-names-dpnj.ly (texidoc): bugfix. - -2003-06-04 Han-Wen Nienhuys - - * scm/chord-ignatzek-names.scm (remove-step): rename file. - -2003-06-10 Heikki Junes - - * lilypond-indent.el: Match better slurs in scheme expressions. - Refontify buffer if a block-comment-ender, '}' after '%', is inserted. - - * Documentation/user/invoking.itexi: document Emacs' paren matching. - -2003-06-10 Jan Nieuwenhuizen - - * scm/chord-name.scm (set-chord-name-style): Update for 'ignatzek. - - * input/ac-extra-voice.ly: Add texidoc. - - * ly/chord-modifiers-init.ly: - * ly/engraver-init.ly (ScoreContext): Add chordNameExceptionsFull - and chordNameExceptionsPartial for new chord names. - - * input/test/chord-names-dpnj.ly: - * input/test/dpncnt.ly: Update. - - * scm/chord-name.scm: - * scm/double-plus-new-chord-name.scm: Add compatibility for new - chord selection and options. - - * ly/chord-modifiers-init.ly: Add exceptions - - * scm/define-translator-properties.scm (chordNameStyle) - (chordNameExceptionsFull, chordNameExceptionsPartial): Add. - -2003-06-10 Rune Zedeler - - * ly/property-init.ly (germanChords): Added. - (semiGermanChords): Added. - - * input/test/chord-names-german.ly: Use new macros - -2003-06-09 Heikki Junes - - * lilypond-indent.el: Use similar parenthesis highlighting for - Emacs and XEmacs through redefinitions of parenthesis highlighting - functions; removed LilyPond-show-paren-function. Fix indenting. - Turn paren-matching on also in XEmacs. - - * lilypond-font-lock.el: Set brackets' syntax to open/close-chars, - as needed by parenthesis highlighting functions (in scan-sexp). - -2003-06-08 Jan Nieuwenhuizen - - * stepmake/aclocal.m4 (STEPMAKE_CHECK_VERSION_UNSUPPORTED): New - function. - (STEPMAKE_GETTEXT): If g++ >= 3.3, use gcc for gettext checking. - -2003-06-08 Heikki Junes - - * lilypond-indent.el: tune regexp for show-paren-function. - -2003-06-07 Jan Nieuwenhuizen - - * scripts/ly2dvi.py (run_latex, run_dvips, 'main'): Make preview - for all LilyPond-produced tex snippets. - - * tex/lilyponddefs.tex: Allow overriding of interscoreline. This - fixes one line --preview output of ly2dvi. - -2003-06-07 Heikki Junes - - * lilypond-indent.el: match only one type of slurs in - LilyPond-show-paren-function. - -2003-06-05 Jan Nieuwenhuizen - - * debian/GNUmakefile (EXTRA_DIST_FILES): - * debian/lilypond1.7.dirs: - * debian/lilypond1.7-doc.dirs: New file. - - * input/regression/chord-name-exceptions.ly: Add parameter for - ignatzekExceptions. Quote hash in docstring. - -2003-06-06 Heikki Junes - - * lilypond-indent.el (show-paren-function): define show-paren-function - as LilyPond-blink-matching-open and use it for closing parens. - Let LilyPond-blink-matching-open know whether a bracket was inserted. - - * lilypond-indent.el: renamed LilyPond-beginning-of-containing-sexp to - LilyPond-scan-containing-sexp and LilyPond-blink-matching-open to - LilyPond-blink-matching-paren in order to match both open and close - brackets. - -2003-06-05 Heikki Junes - - * lilypond-indent.el (LilyPond-show-paren-function): introduce for - testing by modifying the code from FSF Emacs paren.el. Add comments. - -2003-06-04 Jan Nieuwenhuizen - - * input/test/dpncnt.ly: Transpose example to match new - default \chords octave. Add comment. - - * scm/chord-name.scm (sequential-music-to-chord-exceptions): Add - comment about octave change. - -2003-06-04 Graham Percival - - * input/test/[d,e]: added texinfo index tags. - * input/test/empty-staffs.ly: renamed to blank-paper-tab.ly. - -2003-06-04 Graham Percival - - * Documentation/topdocs/INSTALL.texi: added warning about gxx-3.3. - -2003-06-04 Heikki Junes - - * lilypond-indent.el (LilyPond-blink-matching-open): use no argument, - as in blink-matching-open. - -2003-06-03 Graham Percival - - * input/test/[a-c]: more comments in files. - * input/test/ac-extra-voice.ly beam-abbrev.ly beam-chord.ly beam-dir.ly - beam-pos.ly beam-position.ly beam-second.ly beam-suspect.ly - beam-trend.ly beams.ly crescendo-text.ly default-neutral-dir.ly : - mark file for proposed deletion. - * input/test: renaming files: - auto-beam-4-8.ly to beam-auto-4-8.ly - auto-beam-override.ly to beam-auto-override.ly - auto-beam.ly to beam-auto.ly - blank.ly to blank-paper.ly - absolute-volume.ly to dynamic-absolute-volume.ly - -2003-06-03 Jan Nieuwenhuizen - - * input/test/dpncnt.ly: - * input/test/chord-names-dpnj.ly: Resurrect. - - * lily/my-lily-lexer.cc: Remove chordnames keyword. - - * ly/chord-modifiers-init.ly (ignatzekExceptions): Update, tidy up. - - * scm/chord-name.scm (sequential-music-to-chord-exceptions): - Better docstring, add parameter OMIT-ROOT, tidy up. - -2003-06-03 Heikki Junes - - * lilypond-indent.el: match two-char slurs \[ ... \] and \( ... \). - -2003-06-02 Jan Nieuwenhuizen - - * scm/output-ascii-script.scm (as-font-alist-alist): - (as-properties-to-font-name): - (as-make-style-sheet): Remove. - - * scm/font.scm (as-make-font-list): New function. - (as-font-sheet-alist): New variable. - - * ly/paper-as9-init.ly: - * ly/paper-as5-init.ly: Update. - - * ly/paper-as5.ly: - * ly/paper-as9.ly: New file. - -2003-05-29 Jan Nieuwenhuizen - - * mf/GNUmakefile (AFM_FILES): Add AF_FILES. - -2003-05-28 Graham Percival - * input/sondag-morgen/*: removed due to copyright concerns. - * input/[a,b]*.ly: added a newline at the end of the texinfo - doc string (produces better output in HTML version). - * input/c*.ly: added texinfo index and added comments to - aid in future changes to input/test/ files. - -2003-05-28 Graham Percival - - * Documentation/user/refman.itely: fixed build problem (missing - file) caused by previous renaming. - -2003-05-28 Graham Percival - - * input/test/[a,b]*.ly: added texinfo index and added comments to - aid in future changes to input/test/ files. - * input/test/bar-number-every-5-reset.ly: renamed to - bar-number-every-five-reset.ly - * input/test/bar-script-visibility.ly: renamed to - bar-number-show-all.ly - -2003-05-28 Han-Wen Nienhuys - - * ly/engraver-init.ly (VoiceContext): move Note_head_line_engraver - to Voice. - - * lily/glissando-engraver.cc (acknowledge_grob): new file: split - out note-line and glissando functionality. - - * lily/line-spanner.cc (brew_molecule): cleanup. - -2003-05-27 Jan Nieuwenhuizen - - * scripts/as2text.scm: Use rdelim module. - (start-system): Rename from start-line. - (stop-system): Rename from stop-line. - (af-gulp-file): Use string iso symbol for getenv. - - * scm/output-ascii-script.scm: Add guile and lily modules. - (font-name-alist): New variable. - (draw-line): New function. - - * scm/output-lib.scm (func, arg->string): Re-add from archive. - (Were these silently removed, without ChangeLog entry?) - -2003-05-27 Han-Wen Nienhuys - - * scm/music-functions.scm (make-ottava-set): bugfixes: also - process 2nd ottava correctly. - -2003-05-27 Heikki Junes - - * lilypond-indent.el: allow strings in LilyPond-parens-alist. - -2003-05-26 Jan Nieuwenhuizen - - * Documentation/user/converters.itely (Invoking midi2ly): Update. - -2003-05-26 Han-Wen Nienhuys - - * VERSION: release 1.7.20 - - * lily/text-spanner.cc (brew_molecule): clean up function. This - fixes bugs with broken 8va spanners. - - * lily/simple-spacer.cc (solve): also compute force for raggedright. - This prevents spurious line-breaks with raggedright - -2003-05-25 Han-Wen Nienhuys - - * lily/key-performer.cc (create_audio_elements): always use major - key - - * Documentation/user/internals.itely: updates - - * input/regression/beam-break.ly: new file. - - * lily/beam.cc (brew_molecule): handle broken beams (i.e. print - beams if starting or terminating stems have 'beaming set.) - - * lily/beam-engraver.cc (process_music): add forbidBeamBreak - property. - - * lily/parser.yy (verbose_command_req): add comment about scales. - -2003-05-25 Heikki Junes - - * lilypond-indent.el: adjust regexps in bracket-matching. - -2003-05-24 Juergen Reuter - - * Documentation/user/refman.itely: more tiny fixes - - * Documentation/user/refman.itely: bugfix: "Chord namess" -> - "Chord names"; added table with input syntax for solesmes neumes - table; added some words about rationale on input syntax design - - * lily/gregorian-ligature-engraver.cc, - lily/vaticana-ligature-engraver.cc, lily/vaticana-ligature.cc, - lily/include/gregorian-ligature.hh: bugfix: horizontal head - alignment of Pes Initio Debilis - - * Documentation/user/refman.itely, - lily/vaticana-ligature-engraver.cc, lily/vaticana-ligature.cc, - mf/parmesan-heads.mf: fixed most of the head selection/alignment - bugs in the solesmes neumes table - -2003-05-24 Heikki Junes - - * lilypond-indent.el: Match '(' and ')' by skipping '\(' and '\)'. - Similarly, match '[' and ']' by skipping '\[' and '\]'. - - * lilypond-mode.el: fix tag-score. small improvements. - -2003-05-23 Jan Nieuwenhuizen - - * .cvsignore: Add aclocal.m4. - - * lily/music-constructor.cc: Include . - -2003-05-23 Han-Wen Nienhuys - - * ly/engraver-init.ly (HaraKiriStaffContext): use - RemoveEmptyStaffContext instead. - - * Documentation/user/refman.itely: updates - -2003-05-23 Juergen Reuter - - * Documentation/user/refman.itely: added solesmes neumes table; - bugfix: make section "More Stanzas" a subsection of "Vocal Music"; - bugfix: "Ornaments" -> "Articulations" - - * ly/gregorian-init.ly: junked "aucta" and "semivocalis" - -2003-05-22 Heikki Junes - - * lilypond-indent.el: Add a message about trying to match \] or \). - -2003-05-22 Juergen Reuter - - * input/test/gregorian-scripts.ly, input/test/vaticana.ly: removed - obsolete "arithmetic_*" - - * input/bugs/ligatures.ly: removed (will be put into a different - directory later) - -2003-05-22 Jan Nieuwenhuizen - - * stepmake/aclocal.m4: Add tetex-devel as package suggestion for - libkpathsea (Maurizio Tomasi). - -2003-05-22 Han-Wen Nienhuys - - * input/regression/repeat-slash.ly (texidoc): new file - - * lily/slash-repeat-engraver.cc (try_music): new file, handle - slash repeats separately. Slash repeats and % - repeats can now be nested. - -2003-05-22 Heikki Junes - - * lilypond-indent.el: Add preliminary test for closing \] and \). - -2003-05-21 Juergen Reuter - - * lily/gregorian-ligature-engraver.cc, - lily/vaticana-ligature-engraver.cc, - lily/include/gregorian-ligature.hh, ly/gregorian-init.ly, - mf/parmesan-heads.mf: various semivocalis related bugfixes - - * input/bugs/ligatures.ly: new file demonstrating problems with - ligatures - -2003-05-21 Heikki Junes - - * lilypond-mode.el, - lilypond-font-lock.el, - lilypond-indent.el: Move all paren matching to lilypond-indent.el. - -2003-05-20 Heikki Junes - - * lilypond-mode.el: Remove outdated code. Stress the difference - between Emacs and XEmacs definitions. - - * lilypond-mode.el, - lilypond-indent.el: Define a function interactive only when necessary. - -2003-05-19 Heikki Junes - - * lilypond-mode.el: Use temp-dir for Commands on Buffer/Region. - Use inactive regions also in XEmacs. - -2003-05-18 Han-Wen Nienhuys - - * Documentation/user/refman.itely (Repeat syntax): more updates - - * lily/simple-spacer.cc (solve): move solution process into - solve(). This fixes a bug with collisions and raggedright = ##t. - - * scm/lily.scm (scm): remove output-pysk.scm, music-types.scm - - * ly/engraver-init.ly: remove GraceContext. Update examples. - -2003-05-18 Jan Nieuwenhuizen - - * GNUmakefile.in (fonts): Also make fontball. - - * Website fixes: - - * ly/engraver-init.ly (GraceContext): Add. - - * run: - - convert-ly $(find . -name *.ly) - - * ly/chord-modifiers-init.ly (ignatzekExceptionMusic): Hmm: fix - new chords. - -2003-05-18 Han-Wen Nienhuys - - * VERSION: 1.7.19 released - - * scm/music-functions.scm (set-octavation): new function. - - * input/regression/ottava.ly: new file - - * lily/translator-scheme.cc (LY_DEFINE): new function - ly:unset-context-property - (LY_DEFINE) new function ly:context-property-where-defined: - -2003-05-18 Heikki Junes - - * lilypond-font-lock.el: Add postfix syntax for horizontal groups. - - * lilypond.words: add few. - - * input/test/script-chart.ly: fix typo. - -2003-05-17 Han-Wen Nienhuys - - * scm/define-grobs.scm: uniform naming for definitions and output - routine files. - - * ly/engraver-init.ly (ChoirStaffContext): add \description from - scm/context-description.scm - - * lily/parser.yy (translator_spec_body): add \description to the - \translator{} body syntax. - - * lily/ottava-engraver.cc: new file. - - * scm/chord-name.scm (natural-chord-alteration): replace old - chord stuff. - - * input/mutopia/R.Schumann/romanze-op28-2.ly: syntax updates. - - * Documentation/user/refman.itely (Metronome marks): update doco. - - * input/regression/markup-note.ly: new file - - * input/regression/metronome-marking.ly: new file - - * lily/metronome-engraver.cc: new file. Print \tempo markings. - - * scm/new-markup.scm (note-markup): make a note glyph, useful for - metronome marks. - -2003-05-17 Jan Nieuwenhuizen - - * Documentation/user/GNUmakefile: Compatibility fix for new - makeinfo. Please upgrade to texinfo CVS or pretest > 4.5.90 (rsn) - for making binary packages; info splitting bug has been fixed. - - * Documentation/user/refman.itely: Compile fixes. - -2003-05-16 Heikki Junes - - * lilypond-mode.el: XEmacs-fix: Use (mark) to find active-mark. - Count \midi -keywords also for a region. - -2003-05-15 Han-Wen Nienhuys - - * lily/lookup.cc (LY_DEFINE): new function - - * Documentation/user/tutorial.itely: updates - -2003-05-15 Heikki Junes - - * lilypond-mode.el: Allow Midi on buffer. - Use only '.ly'-extension, remove '.sly' and '.fly'. - Allow use of inactive regions. Invoke next Command on Master file, - Buffer or Region, if C-cc, C-cb, or C-cr, accordingly, was pressed. - -2003-05-14 Han-Wen Nienhuys - - * Documentation/user/tutorial.itely: updates. - -2003-05-14 Heikki Junes - - * lilypond-mode.el: Show messages in one line only, as in XEmacs. - -2003-05-13 Juergen Reuter - - * lily/coherent-ligature-engraver.cc: fixed typo - - * lily/coherent-ligature-engraver.cc, - lily/gregorian-ligature-engraver.cc, - lily/ligature-bracket-engraver.cc, lily/ligature-engraver.cc, - lily/mensural-ligature-engraver.cc, lily/note-heads-engraver.cc, - lily/vaticana-ligature-engraver.cc, - lily/include/ligature-engraver.hh, ly/gregorian-init.ly, - scm/grob-description.scm: cleanup: junked LigatureHead grob and - removed all ligature specific stuff from NoteHead code - - * lily/ligature-head.cc, lily/include/ligature-head.hh: removed; - ligatures now use regular noteheads - - * lily/vaticana-ligature.cc: tiny code cleanups - - * lily/vaticana-ligature-engraver.cc: bugfix: insert additional - space between two adjacent noteheads of the same pitch - - * scm/grob-description.scm: bugfix: VaticanaLigature: interface - description; cleanup: removed obsolete font-family settings - -2003-05-11 Juergen Reuter - - * lily/coherent-ligature-engraver.cc, - lily/gregorian-ligature-engraver.cc, - lily/ligature-bracket-engraver.cc, lily/ligature-engraver.cc, - lily/mensural-ligature-engraver.cc, - lily/vaticana-ligature-engraver.cc, - lily/include/gregorian-ligature-engraver.hh: updated for new - Coherent_ligature_engraver; added comments that describe the basic - design ideas of the ligature implementation - - * lily/coherent-ligature-engraver.cc, - lily/include/coherent-ligature-engraver.hh: new file: shared code - between mensural ligatures and Gregorian chant notation ligatures - -2003-05-11 Heikki Junes - - * lilypond-mode.el: XEmacs fixes: include two definitions for the - key for autocompletion XEmacs [iso-left-tab], Emacs [iso-lefttab], - use only two arguments in sit-for, use no arguments in - read-char-exclusive, backspace is not a character (127) in XEmacs. - - * lilypond-font-lock.el: XEmacs: small fix to scheme-fontifying. - -2003-05-06 Heikki Junes - - * lilypond-mode.el: un-commenting works after syntax-table fix. - - * lilypond-font-lock.el: fontify \[- and \]-slurs as horizontal - group, verbose commenting for syntax table. - - * lilypond-indent.el: add TODO for ligature slurs. - -2003-05-05 Heikki Junes - - * lilypond-mode.el: Move comments of parenthesis matching away, - (blink-matching-paren-on-screen) fix blinking in Emacs. - - * lilypond-font-lock.el: Fix parent-matching for Emacs: - Emacs syntax-table knows only "13"-style, XEmacs knows also "1b3b". - - * lilypond-indent.el: Add TODO for parenthesis matching. - -2003-05-03 Heikki Junes - - * lilypond-mode.el: Fix XEmacs: - changed [S-iso-lefttab] to [(shift iso-lefttab)], - invoke explicitly easy-menu-add (in Emacs done automatically). - - * lilypond.words: Add few words from input/*/*.ly. - -2003-05-02 Han-Wen Nienhuys - - * VERSION (PATCH_LEVEL): release 1.7.18 - - * scripts/lilypond-book.py: only print basename for printfilename - option - - * input/mutopia/J.S.Bach/baerenreiter-sarabande.ly: corrections - and syntax updates. - -2003-05-01 Han-Wen Nienhuys - - * mf/feta-toevallig.mf: revamp flat symbol: use less points, - better parametrisation. Move fatness of bulb downward. - - * mf/parmesan-custodes.mf (dir_down): remove underscores from - glyph names. Underscores are not allowed .ps encoding files. - -2003-04-30 Juergen Reuter - - * lily/spacing-spanner.cc, ly/paper-init.ly: introduced paper - variable "packed" for packed right-ragged mode - - * lily/spacing-spanner.cc: fixed typo: colunm -> column; removed - unused variable ragged; fixed indentation - - * Documentation/user/refman.itely: tiny cleanups in ancient - clef and custos section - -2003-04-30 Han-Wen Nienhuys - - * lily/parser.yy (Simple_music): add \applyoutput, syntax - \applyoutput PROCEDURE - - * lily/my-lily-lexer.cc: add \applyoutput. - - * scm/music-types.scm (music-descriptions): add ApplyOutputEvent. - - * lily/text-item.cc: clean text-interface description - -2003-04-27 Han-Wen Nienhuys - - * input/{regression,test}/: use postfix for slur endings and beam - begins. - - * lily/beam-engraver.cc (acknowledge_grob): set melismata for new - style beams too. - - * input/regression/lyrics-melisma-beam.ly: new file. - - * lily/lyric-engraver.cc (process_music): change from - process_acknowledged_grobs() - - * scm/auto-beam.scm (override-auto-beam-setting): write Scheme - functions to set and revert auto-beam settings. - -2003-04-26 Han-Wen Nienhuys - - * lily/*.cc (number_accidentals): gh_assoc -> scm_assoc. - -2003-04-24 Juergen Reuter - - * ChangeLog, Documentation/topdocs/AUTHORS.texi, - Documentation/user/lilypond.tely: fixed some typos; updated author - info - - * Documentation/user/music-glossary.tely: bugfix: #'flag-style = - #"" -> #'flag-style = #'() - - * lily/cluster-engraver.cc, lily/ligature-bracket-engraver.cc: - cleanup: removed dead #includes - - * lily/gregorian-ligature-engraver.cc, - lily/include/gregorian-ligature.hh, - scm/grob-property-description.scm: small cleanups, small spacing - fixes - - * lily/gregorian-ligature-engraver.cc, lily/parser.yy, - lily/vaticana-ligature.cc, - lily/include/gregorian-ligature-engraver.hh, - scm/grob-property-description.scm, scm/music-types.scm: - "porrectus" -> "pes or flexa" - - * ly/engraver-init.ly, scm/grob-description.scm, - scm/grob-property-description.scm: junked porrectus, now handled - by ligature code - - * scm/grob-description.scm: bugfix: added space-alist entry for - breathing sign/custos - -2003-04-24 Jan Nieuwenhuizen - - * Another grand 2003 update. - - * Remove mentioning of `mudela'; There's no such thing. - -2003-04-24 Han-Wen Nienhuys - - * Documentation/user/preface.itely (Preface to version 1.8): update - - * Documentation/user/invoking.itexi (Invoking LilyPond): revise - - * Documentation/user/converters.itely (Invoking convert-ly): revise - - * scripts/convert-ly.py (outfile_name): remove --assume-old. - - * scripts/lilypond-book.py (schedule_lilypond_block): remove --read-lys - -2003-04-24 Han-Wen Nienhuys - - * Documentation/user/internals.itely: more updates. - -2003-04-23 Han-Wen Nienhuys - - * Documentation/user/refman.itely: revise - - * Documentation/user/internals.itely: revise - - * lily/music.cc (LY_DEFINE): add function ly:music-deep-copy - -2003-04-23 Juergen Reuter - - * Documentation/user/refman.itely: bugfix: fixed broken @ref{}; - beautification: reformatted ancient clefs section; cleanup: small - wording fixes - -2003-04-22 Heikki Junes - - * lilypond.words: added words for chant notation, sorted - alphabetically through "sort lilypond.words" - -2003-04-22 Juergen Reuter - - * ly/gregorian-init.ly, ly/script-init.ly, mf/parmesan-scripts.mf, - scm/script.scm, input/test/gregorian-scripts.ly: added scripts for - chant notation - -2003-04-21 Juergen Reuter - - * buildscripts/mf-to-table.py: bugfix: "--" in glyph names: - prevent TeX from interpreting them as long dash - - * input/test/vaticana.ly: updated - - * mf/parmesan-accidentals.mf, mf/parmesan-clefs.mf, - mf/parmesan-custodes.mf, mf/parmesan-flags.mf, - mf/parmesan-heads.mf, mf/parmesan-rests.mf, - mf/parmesan-scripts.mf, mf/parmesan-timesig.mf: more set_char_box - fixes - - * mf/parmesan-heads.mf: ledger endings: removed dead code - -2003-04-21 Han-Wen Nienhuys - - * VERSION: 1.7.17 released - - * Documentation/user/GNUmakefile - ($(outdir)/lilypond-internals/lilypond-internals.html): copy ly - files too. - - * scm/document-markup.scm: new file: document all markup - functions. - - * scm/documentation-generate.scm: rename all documentation modules - to document-*.scm - - * scripts/lilypond-book.py: generate link to .ly file iso. link to - .png - - * input/test/divisiones.ly: added - - * input/regression/output-property.ly: new file - - * lily/cluster.cc: change cluster-interface to use style property - -2003-04-20 Rune Zedeler - - * input/test/chord-names-german.ly: modified. - - * scm/chords-ignatzek.scm: - chord-name->german-markup: Added - note-name->german-markup: Changed (now producing lowercase notenames) - - * lily/chord-name-engraver.cc: Reads property chordNoteNamer - -2003-04-20 Han-Wen Nienhuys - - * scripts/convert-ly.py (FatalConversionError.conv): - divisiominima -> divisioMinima, etc. - - * ly/engraver-init.ly (FiguredBassContext): add - Separating_line_group_engraver to Figured bass context. - - * ly/german-chords-init.ly: remove file - - * input/test/chord-names-german.ly (scm): new file. - - * ly/engraver-init.ly (ScoreContext): add chordRootNamer property. - - * lily/chord-name-engraver.cc: move New_chord_name_engraver to - Chord_name_engraver - - * Documentation/user/refman.itely: lots of updates. - - * input/regression/chord-name-exceptions.ly (chExceptionMusic): - new file - - * input/test/bar-number-every-5-reset.ly: new file. - -2003-04-19 Han-Wen Nienhuys - - * input/regression/chord-name-major7.ly: new file - - * scm/chord-entry.scm (construct-chord): bugfix: don't remove 11 - if specced explicitly. - - * input/regression/chord-name-entry-11.ly: new file. - - * input/test/slur-beautiful.ly: new file. - - * Documentation/user/refman.itely: updates. - - * input/regression/collisions.ly (threevoice): cleanup. - - * scripts/convert-ly.py: linewidth = -1 -> raggedright = ##t. - -2003-04-18 Han-Wen Nienhuys - - * Documentation/user/*.itely: various updates. - - * ly/spanners-init.ly: enddecr/ endcr. - - * Documentation/user/tutorial.itely (Fine tuning a piece): editing - of tutorial - -2003-04-16 Han-Wen Nienhuys - - * scripts/ly2dvi.py (extra_init): add compat2 to latex options. - - * lily/new-chord-name-engraver.cc (process_music): use octavation - (a number) instead of original-pitch to store inversions. This - fixes a problem with transposed chords with inversions. - -2003-04-14 Jan Nieuwenhuizen - - * stepmake/aclocal.m4: Include compile fix for broken flex, as - used in includable-lexer.hh. - - * lily/includable-lexer.cc: Bugfix: include config.h. - - * stepmake/aclocal.m4: Check for $GUILE_CONFIG; allows - circumvention of Debian packaging bug. - -2003-04-13 Jan Nieuwenhuizen - - * flex-2.5.31 hits Debian/unstable. Fixes below. - - * lily/lexer.ll (avoid_silly_flex_induced_gcc_warnings): Disable. - - * lily/includable-lexer.cc [!HAVE_FLEXLEXER_YY_CURRENT_BUFFER] - (yy_current_buffer): New macro, compile hacks for flex 2.5.29. - - * lily/include/includable-lexer.hh: - * lily/lexer.ll: Hack for multiple include of FlexLexer.h. - - * config.hh.in (HAVE_FLEXLEXER_YY_CURRENT_BUFFER): Add. - - * aclocal.m4: Regenerate. - - * stepmake/aclocal.m4 (STEPMAKE_FLEXLEXER): Check for - yyFlexLexer.yy_current_buffer, which was removed in flex-2.5.29. - - * scm/pdf.scm (use-modules): Include lily. - - * scm/pdftex.scm (start-system): Bugfix: add closing brace (Beernd - Noordkamp). - (use-modules): Include lily. - (lily-def): Bugfix: include tex-val in let. - -2003-04-12 Heikki Junes - - * lilypond-mode.el: sensible error if lilypond.words not found. - - * lilypond.words: add few words. - -2003-04-11 Juergen Reuter - - * mf/parmesan-clefs.mf: bugfix: char boxes corrected - - * mf/parmesan-scripts.mf: fixed typo in char name - -2003-04-11 Han-Wen Nienhuys - - * VERSION: 1.7.16 released - - * python/lilylib.py (setup_temp): temporary directories are mode 700. - (this is a security vulnerability). - - * Documentation/user/lilypond.tely: remove abbreviations (n't, 's) - - * lily/multi-measure-rest-engraver.cc (stop_translation_timestep): - add staff support. - -2003-04-10 Juergen Reuter - - * mf/parmesan-scripts.mf, Documentation/user/refman.itely, - ly/script-init.ly, scm/script.scm: bugfix: renamed - fermata->signumcongruentiae to fix naming clash with feta font - -2003-04-10 Han-Wen Nienhuys - - * input/regression/multi-measure-rest-grace.ly (texidoc): new file - - * lily/multi-measure-rest-engraver.cc - (start_translation_timestep): use grace timing too for determining - when to make mmrest. - (start_translation_timestep): clear numbers too. - -2003-04-09 Juergen Reuter - - * scm/music-types.scm: compile fix: escape braces - - * buildscripts/mf-to-table.py: replaced \char -> \musicglyph to - work around font selection problem - - * Documentation/user/refman.itely: BreathingSign: added docu for - property "text" - -2003-04-09 Mats Bengtsson - - * Documentation/topdocs/AUTHORS.texi (AUTHORS): Updated contact - information. - -2003-04-09 Han-Wen Nienhuys - - * lily/multi-measure-rest-engraver.cc (class - Multi_measure_rest_engraver): make multiple Number objects, one - for each MultiMeasureTextEvent. - - * scm/music-functions.scm (glue-mm-rest-texts): use - MultiMeasureTextEvent - - * scm/music-types.scm (music-descriptions): add MultiMeasureTextEvent - - * Documentation/user/refman.itely (Multi measure rests): update. - -2003-04-08 Han-Wen Nienhuys - - * lily/ly-module.cc (ly_copy_module_variables): use - scm_internal_hash_fold() for iterating modules. - -2003-04-08 Juergen Reuter - - * Documentation/user/refman.itely: Section Custodes: added more - example code - - * mf/feta-eindelijk.mf, mf/parmesan-rests.mf: cleanup: moved - neo-mensural rests to parmesan font - - * mf/parmesan-heads.mf, mf/parmesan-timesig.mf: updated file - header - -2003-04-07 Han-Wen Nienhuys - - * Documentation/user/macros.itexi: @fileref macro. - - * buildscripts/lys-to-tely.py (name2line): add tags for - each file. - -2003-04-04 Juergen Reuter - - * lily/include/custos.hh, make/lilypond.suse.spec.in, - Documentation/topdocs/AUTHORS.texi: updated my email address - - * Documentation/user/refman.itely: updated custos documentation; - beautified divisiones example; beautified articulations table - - * lily/breathing-sign.cc: bugfix: finalis molecule - -2003-04-03 Juergen Reuter - - * Documentation/user/refman.itely: added docu for - contemporary fermata symbols, gregorian breathing signs; small fixes - - * ly/gregorian-init.ly: removed obsolete #'type props - -2003-04-01 Mats Bengtsson - - * lily/multi-measure-rest.cc (set_spacing_rods): Handle the - minimum-length property correctly. - -2003-03-31 Han-Wen Nienhuys - - * scm/music-functions.scm (make-multi-measure-rest): set input - locations for multimeasure rests. - -2003-03-31 Juergen Reuter - - * input/regression/breathing-sign.ly: updated to for ancient - notation - -2003-03-31 Jan Nieuwenhuizen - - * scripts/ly2dvi.py: Add newline. - -2003-03-30 Jan Nieuwenhuizen - - * scripts/ly2dvi.py (dependency_files): Compile fix. - -2003-03-28 Han-Wen Nienhuys - - * scripts/ly2dvi.py (find_pfa_fonts): add --png option - (make_html_menu_file): --html menu. - -2003-03-27 Han-Wen Nienhuys - - * scripts/ly2dvi.py (run_dvips): +add the .map file - -2003-03-24 Han-Wen Nienhuys - - * input/screech-boink.ly: new file. - -2003-03-22 Han-Wen Nienhuys - - * scripts/lilypond-book.py (make_lilypond_file): convert - lilypond-file to lilypond block directly, without going through - begin/end lilypond text. - - -2003-03-21 Juergen Reuter - - * lily/breathing-sign.cc, lily/include/breathing-sign.hh, - scm/grob-description.scm: moved Michael's original breathing sign - code in brew_molecule() to divisio_minima(); provided new - brew_molecule() that effectively replaces the - Text_item::brew_molecule callback (with additional fallback to - Michael's original code); added callbacks for brewing divisio - maior/maxima and finalis - - * gregorian-init.ly: added breathing sign shortcuts for virgula, - caesura, divisiominima, divisiomaior, divisiomaxima, and finalis - - * script-init.ly: added shortfermata, longfermata, - verylongfermata, varcoda - - * scm/script.scm, mf/feta-schrift.mf: added shortfermata, - longfermata, verylongfermata, varcomma, varcoda - -2003-03-19 Mats Bengtsson - - * Documentation/user/{tutorial.itely,refman.itely,internals.itely}: - Remove all noquote and insert a few quote. - - * Documentation/user/lilypond-book.itely (Music fragment options), - scripts/lilypond-book.py: Don't include quotation blocks by - default. Introduce option quote instead of noquote - -2003-03-17 Han-Wen Nienhuys - - * VERSION: 1.7.15 released - - * Documentation/user/lilypond.tely: omf updates. - - * buildscripts/texi2omf.py (omf_vars): include version.date - - * make/lilypond.redhat.spec.in: fixes for spec file. - - * stepmake/stepmake/texinfo-vars.make (GENERATE_OMF): replace var - by function definition: lily now requires a recent GNU Make. - - * scripts/lilypond-book.py (write_deps): remove .tex dependency writing. - - * make/ly-rules.make: remove .ly -> .tex rule - - * Documentation/user/refman.itely (Figured bass): revised figured - bass example. - -2003-03-16 Han-Wen Nienhuys - - * stepmake/stepmake/omf-targets.make (local-install): add - scrollkeeper-update message. - - * scripts/lilypond-book.py (lilypond_binary): explicity add path to binary. - (TexiPaper.process_ly2dvi_block): idem for ly2dvi - - * scripts/ly2dvi.py (lilypond_binary): explicity add path to binary. - - * Documentation/user/converters.itely (Invoking midi2ly): add - track/channel notice. - -2003-03-15 Han-Wen Nienhuys - - * stepmake/stepmake/omf-targets.make (omf-local-install): bugfixes - - * lily/parser.yy (scalar): DIGIT is also a scalar. - - * Documentation/user/music-glossary.tely: add @omf tags - - * Documentation/user/lilypond.tely: add @omf tags - - * scm/generate-documentation.scm (string-append): add @omf tags. - - * stepmake/stepmake/omf-*: new files - - * input/regression/multi-measure-rest.ly (texidoc): add doco - - * GNUmakefile.in (web-doc-install): add web-doc-install target - - * lily/scm-hash.cc (remove): prevent underflow of elt_count_. This - fixes crashes while dumping MIDI. - - * ly/performer-init.ly (FiguredBassContext): add Figured bass for - midi - -2003-03-11 Han-Wen Nienhuys - - * buildscripts/texi2omf.py: new file. - - * mf/feta-beugel.mf: include font count, not staffsize (16) in - font-name - -2003-03-09 Han-Wen Nienhuys - - * input/regression/beam-manual-beaming.ly (texidoc): new file. - - * lily/sequential-iterator.cc (descend_to_child): call - descend_to_child() for all types of music. - -2003-03-08 Jan Nieuwenhuizen - - * scm/translator-property-description.scm: Add - bassFigureFormatFunction. Replace some entries. - -2003-03-04 Jan Nieuwenhuizen - - * cygwin/post-lilypond.sh: Add FHS-specified path for fonts to - clean out. - -2003-03-08 Han-Wen Nienhuys - - * scripts/midi2ly.py (Note.dump): never dump duration for - dump_dur=0. - - * scm/chords-ignatzek.scm (alteration->text-accidental-markup): - new function - - * scm/bass-figure.scm (make-bass-figure-markup): reimplement bass - figures using new markups. Much simpler, and should improve layout - a little. - - * mf/feta-nummer-code.mf (code): insert space in location 32, not 33. - -2003-03-06 Han-Wen Nienhuys - - * ly/engraver-init.ly: use Hara kiri by default for - ChordNames, FiguredBass and Lyrics(Voice) context. - - * lily/axis-group-engraver.cc (acknowledge_grob): use - rhythmic-grob-interface for selecting items not to hara-kiri'd - - * scm/new-markup.scm (markup-function-list): add bracket, - vbracket. - - * ly/engraver-init.ly (ChordNamesContext): set - minimumVerticalExtent - -2003-03-05 Han-Wen Nienhuys - - * input/test/time-signature-double.ly: new file - - * input/regression/collision-head-chords.ly (texidoc): new file. - - * lily/type-swallow-translator.cc: add note swallow translator - - * input/test/time-signature-double.ly: new file. - - * lily/type-swallow-translator.cc: add Rest_swallow_translator - - * ly/engraver-init.ly (ChordNamesContext): add Rest_swallow_translator - (FiguredBassContext): idem. - - * VERSION (MY_PATCH_LEVEL): 1.7.14 released - - * input/mutopia/W.A.Mozart/*.ly (romanze): markup syntax updates. - - * buildscripts/mf-to-table.py: add .pfa, .pfb target dependency. - - * stepmake/stepmake/metafont-rules.make ($(outdir)/%.pfb): remove - .afm dependency - - * buildscripts/mf-to-table.py (write_fontlist): use new markup syntax - - * python/lilylib.py (make_page_images): add function. - - * scripts/ly2dvi.py (run_latex): include title in preview image. - - * scripts/lilypond-book.py (process_ly2dvi_blocks): call ly2dvi - from lilypond-book for tags in HTML. - - * scripts/ly2dvi.py (option_definitions): add --debug option to - print out environment. - - * input/regression/tie-chord-partial.ly: new file. - -2003-03-05 Heikki Junes - - * lilypond.words: add 3 - -2003-03-05 Han-Wen Nienhuys - - * scm/new-markup.scm (markup-function-list): add finger-markup - - * input/tutorial/brahms-tweaked.ly: new markup - - * scm/bass-figure.scm (brew-one-figure): bugfix for large bass figures - - * scm/new-markup.scm (brew-new-markup-molecule): robustness: don't - crash when processing '() markup - - * input/regression/breathing-sign.ly (texidoc): add caesura example. - - * lily/breathing-sign.cc (railtracks): another caesura. - - * mf/feta-schrift.mf: caesura symbol. - -2003-03-04 Han-Wen Nienhuys - - * scripts/convert-ly.py (FatalConversionError.conv): add - ly:molecule-XXX conversions. - - * lily/molecule-scheme.cc: change names to ly:molecule-XXX - - * input/regression/multi-measure-rest-text.ly: new file. - - * scm/music-functions.scm (glue-mm-rest-texts): automatically - convert MMREST-TEXT to MultiMeasureRestNumber settings. - - * ly/engraver-init.ly (ScoreContext): move tablature settings to - ScoreContext - - * scm/new-markup.scm (center-markup): \center markup. - - * scm/music-functions.scm: remove pitchify scripts. - - * lily/music.cc (print_smob): display music name if available - -2003-03-02 Han-Wen Nienhuys - - * Documentation/user/refman.itely (Instrument names): remove - \turnOff doco. - -2003-03-01 Han-Wen Nienhuys - - * lily/score.cc (mark_smob): bugfix. - - * input/regression/rehearsal-mark.ly: new file. - - * lily/my-lily-parser.cc (here_input): revert reporting of errors: - report error at the current token again. - -2003-02-26 Jan Nieuwenhuizen - - * cygwin/mknetrel: Exit if doc build fails. - - * lily/GNUmakefile: Add hack for .deps and --srcdir build. - -2003-02-27 Han-Wen Nienhuys - - * scm/music-types.scm (music-descriptions): add doc strings - -2003-02-25 Jan Nieuwenhuizen - - * lily/lexer.ll: - * lily/include/my-lily-lexer.hh: - * lily/include/includable-lexer.hh: Add flex kludge. - - * config.hh.in: - * config.make.in: - * stepmake/aclocal.m4 (STEPMAKE_DATADIR, STEPMAKE_LIBDIR): Junk - cruft. - - * stepmake/aclocal.m4 (STEPMAKE_LIBDIR): Fix casual cut and paste - code. - -2003-02-24 Jan Nieuwenhuizen - - * ly/spanners-init.ly (cresc, dim): Update to new markup text. - - * lily/parser.yy (new_chord): Compile fix. - -2003-02-23 Han-Wen Nienhuys - - * Documentation/user/refman.itely (Tuning groups of objects): - remove documentation for \turnOff. - - * lily/percent-repeat-engraver.cc (try_music): add correct - processing moments for double-measure percents as well. - - * input/regression/percent-repeat-skipbars.ly (texidoc): new file - - * lily/lily-guile.cc (ly:dimension?): add dimension as separate - grob prop type. - - * Documentation/user/refman.itely (Printing named chords): add - chord name tweak doco. - - * input/template/gregorian-transcription.ly: new file. - -2003-02-22 Han-Wen Nienhuys - - * VERSION: 1.7.13 released - - * input/test/*: lots of cleanups/comment-outs/removals in chord - examples - - * input/regression/*: lots of cleanups/comment-outs/removals in - chord examples - - * scripts/lilypond-book.py (check_texidoc): add no-texidoc to - options - - * lily/new-chord-name-engraver.cc (process_music): give original - inversion pitch to chord name routine. - - * input/tutorial/os-score.ly: update to new markup - - * Documentation/user/appendices.itely: simply include - chords-ignatzek. - - * Documentation/user/refman.itely (Chords mode): add documentation - for chord mode. - - * scm/chord-entry.scm (construct-chord): mark inversion as bass if - not present in chord. - (construct-chord): add inversion and bass support. - - * lily/chord.cc: junk contents. - -2003-02-17 Heikki Junes - - * Documentation/user/refman.itely: - * Documentation/user/music-glossary.tely: fix. - -2003-02-16 Han-Wen Nienhuys - - * scm/chord-entry.scm (construct-chord): move chord construction - to Scheme. - - * lily/parser.yy (new_chord): new setup for chord entry. - -2003-02-16 Heikki Junes - - * lilypond.words: - * Documentation/user/music-glossary.tely: add ambitus. - -2003-02-15 Han-Wen Nienhuys - - * scm/chords-ignatzek.scm (ignatzek-chord-names): robustness fix. - - * lily/include/*.hh: string() -> to_string() - - * scm/chords-ignatzek.scm: new file. - - * ly/chord-modifiers-init.ly (ignatzekExceptionMusic): define - standard chord name exceptions. - - * scm/translator-property-description.scm (chordNameSeparator): - add property. - (majorSevenSymbol): add property - - * lily/translator-scheme.cc (ly:context-properties): new function - (ly:context-parent): new function. - (print_smob): print context name. - - * lily/music.cc (ly:get-music-length): new function - (print_smob): don't print properties. - - * lily/duration.cc (duration - - * scm/double-plus-new-chord-name.scm (ignatzek-chord-names): classify - pitches for jazz chords. - -2003-02-13 Han-Wen Nienhuys - - * lily/pitch.cc (LY_DEFINE): add ly:pitch-steps - -2003-02-05 Heikki Junes - - * lilypond.words: add 1 - -2003-02-04 Heikki Junes - - * Documentation/topdocs/AUTHORS.texi: refine. - -2003-01-25 Heikki Junes - - * lilypond-font-lock.el: lyrics-mode update for multiple stanza. - - * lilypond.words: add one. - -2003-01-23 Heikki Junes - - * lilypond-font-lock.el: Fontify post-notated slurs [-^_][()]. - Fontify bass note in chords, e.g., e in c1/e. - -2003-01-19 Jan Nieuwenhuizen - - * Documentation/user/music-glossary.tely: Dutch updates and - additions (Arent Storm). - -2003-01-19 Han-Wen Nienhuys - - * input/regression/ambitus.ly: move file. - - * lily/include/pitch.hh (class Pitch): make Pitch objects immutable. - - * lily/event.cc (transpose): add tonic property to Key_change_req - and to Key_engraver. - -2003-01-17 Heikki Junes - - * Documentation/user/refman.itely: fix typo. - - * lilypond.words: removed wrong identifiers. - -2003-01-16 Han-Wen Nienhuys - - * mf/feta-toevallig.mf: make flat stem shorter - -2003-01-16 Heikki Junes - - * lilypond-font-lock.el: Fontify post-notated slurs -( and -). - - * lilypond.words: add from Phrasing slur. - -2003-01-15 Heikki Junes - - * lilypond-mode.el: allow launching multiple ViewPS processes. - - * lilypond.words: add from Text markup. - -2003-01-14 Han-Wen Nienhuys - - * input/test/ossia.ly (texidoc): add comment. - - * input/regression/voice-follower.ly: new file. - - * mf/feta-toevallig.mf: make flat heavier. - - * lily/cluster-engraver.cc: clean up Cluster engraver - - * lily/cluster.cc (brew_molecule): cleaned up Cluster code and - Engraver. Use Note_column to compute Y positions and deal with - line break stuff. - -2003-01-13 Han-Wen Nienhuys - - * lily/stem.cc: move french-beaming to stem. - -2003-01-13 Heikki Junes - - * lilypond-font-lock.el: fontify all durations in chords. - - * lilypond.words: add from lily/my-lily-lexer.cc - -2003-01-12 Han-Wen Nienhuys - - * VERSION: release 1.7.12 - - * lily/vaticana-ligature-engraver.cc (finish_primitive): compile fixes. - - * lily/gregorian-ligature.cc: new file - - * lily/*: the Great 2003 search & replace. - - * Documentation/user/refman.itely (Manual repeat commands): add - note about font selection. - -2003-01-12 Heikki Junes - - * lilypond-mode.el: propose recompiling midi while invoking playing, - not while stopping playing. - -2003-01-11 Heikki Junes - - * lilypond.words: add one. - - * lilypond-font-lock.el: add colour groups for horizontal, vertical - and expressional note grouping. Fontify chord modes. - -2003-01-09 Heikki Junes - - * Documentation/user/music-glossary.tely (Top): translate melisma. - -2003-01-09 Han-Wen Nienhuys - - * Documentation/user/music-glossary.tely (Top): add melisma. - -2002-01-08 Juergen Reuter - - * lily/gregorian-ligature-engraver.cc: bugfix: added missing - interfaces for (abstract) grob GregorianLigature - - * lily/vaticana-ligature-engraver.cc, lily/vaticana-ligature.cc: - renamed head* -> glyph_name*, x-shift* -> x-offset* - - * scm/grob-property-description.scm: bugfix: added missing descriptions - -2003-01-07 Jan Nieuwenhuizen - - * input/test/chord-names-dpnj.ly: New file. - - * scm/double-plus-new-chord-name.scm: Implement full and partial - exceptions. - - * lily/lexer.ll: : Allow dash and hyphen in markup command. - - * scm/double-plus-new-chord-name.scm - (double-plus-new-chord->markup): Fix sub->markup. - - -2003-01-07 Juergen Reuter - - * lily/custos-engraver.cc: added TODO; editorial changes - - * lily/ligature-bracket-engraver.cc: added typeset_ligature () for - consistency with other ligature engravers; removed access on (now) - private variable _ligature of Ligature_engraver - - * lily/include/ligature-engraver.hh, lily/ligature-engraver.cc: - renamed last_bound -> last_bound_; issue programming_error on - abstract method calls; moved primitives code from - Mensural_bracket_engraver to here (because almost ligature - engravers will need it); renamed try_stop_ligature () -> - typeset_ligature (); bugfix: store primitives of finished ligature - in separate variable finished_primitives_ to avoid clash on input - like "\] \["; added current_ligature () to enable access on - private variable _ligature - - * lily/mensural-ligature-engraver.cc: removed primitives_ code - (now in super class); renamed try_stop_ligature () -> - typeset_ligature () - - * lily/mensural-ligature.cc: issue programming_error on abstract - method calls - - * lily/note-heads-engraver.cc: added TODO comment upon bool - in_ligature - - * mf/parmesan-heads.mf: fixed some of set_char_box() - - * scm/grob-description.scm: added VaticanaLigature - - * scm/grob-property-description.scm: added neume prefix properties - - * ly/gregorian-init.ly, lily/gregorian-ligature-engraver.cc, - lily/include/gregorian-ligature-engraver.hh, - lily/include/gregorian-ligature.hh: new files; framework for - gregorian ligature engravers such as vaticana - - * lily/vaticana-ligature.cc, lily/vaticana-ligature-engraver.cc, - lily/include/vaticana-ligature.hh, input/test/vaticana.ly: - vaticana style ligature implementation (still somewhat uncomplete) - -2003-01-07 Han-Wen Nienhuys - - * VERSION: release 1.7.11 - - * scripts/convert-ly.py: add ly:pitch-transpose rule - -2003-01-06 Jan Nieuwenhuizen - - * input/test/dpncnt.ly: New file. - - * lily/my-lily-lexer.cc: Add chordnames keyword. - - * lily/parser.yy (chordnames_block): Parse chord name exception - lists, see input/test/dpncnt.ly. - - * scm/chord-name.scm (set-double-plus-new-chord-name-style): New - function. - - * scm/lily.scm (filter-out-list): Bugfix: filter rest using - filter-out too. - - * lily/pitch.cc (ly_pitch_transpose): Scheme name now - ly:pitch-transpose (was ly:transpose-pitch), in conformance with - pitch functions (except for ly:make-pitch, but that's apparently - some sort of scheme naming standard?). - - * scm/lily.scm (!=): define-public. - - * scm/new-markup.scm (make-markup-maker): define-public make-markups. - -2003-01-05 Jan Nieuwenhuizen - - * scm/double-plus-new-chord-name.scm - (double-plus-new-chord-name->markup): New file. - -2003-01-05 Han-Wen Nienhuys - - * python/lilylib.py (make_preview): don't suppress progress for - bbox extraction. - -2003-01-04 Han-Wen Nienhuys - - * Documentation/user/appendices.itely (scheme): update for new syntax. - - * input/regression/chord-name-styles.ly: new file - - * lily/instrument-name-engraver.cc: create instrument names - without barline too. Allows instrument name on ChordNames - - * scm/new-markup.scm (interpret-markup): allow simple strings as - markup too. - -2003-01-04 Jan Nieuwenhuizen - - * scm/chord-name.scm: Super/raise changes and fixes for Banter. - (step->markup-accidental): Fix: add accidental. - (chord::inner-name-american): - (chord::inner-name-jazz): Ugly fix from inner-name-banter: do not - append stray '/' if last superscript addition was 'o'. - - * scm/new-markup.scm (normal-size-sub-markup) - (normal-size-super-markup): New function. - - * lily/source-file.cc (Source_file): Add warning for possibly - intentional but suspicious initialization. - - * scm/chord-name.scm: Small rewrites, layout fixes. Identify and - add comments about cut-and-paste programming. - - * flower/rational.cc (lcm): Not used; comment out. - -2003-01-04 Han-Wen Nienhuys - - * lily/new-fingering-engraver.cc (position_scripts): use - fingerHorizontalDirection to determine fingering horizontal - directions. - - * lily/accidental-engraver.cc (acknowledge_grob): add accidental to - fingering support. - - * scripts/convert-ly.py (FatalConversionError.conv): add style - conversion rule. - - * scm/chord-name.scm (set-chord-name-style): new function. - (new-chord-name-brew-molecule): revise to interpret markup only - (new-chord->markup): cleanuppish rewrite. To be called from the - new engraver. - - * lily/new-chord-name-engraver.cc: new engraver: call Chord -> - Markup earlier, during interpreting. - - * input/test/{banter,jazz,american}-chords.ly (scheme): update - style settings. Rename to chord-names-*.ly - -2003-01-03 Jan Nieuwenhuizen - - * scm/chord-name.scm: Painful merge of Amy's patch to old-style - markup code and update to new markup. Most probably broke some of - it. - -2002-12-30 Juergen Reuter - - * Documentation/user/refman.itely: added docu for ambitus and - clusters - - * lily/lookup.cc, scm/tex.scm: cleanup: avoid nasty double - ly_quote_scm() in lookup.cc - - * mf/parmesan-clefs.mf: set_char_box fix - - * lily/cluster-engraver.cc: junk implicit protection; use - Protected_scm instead - -2002-12-29 Jan Nieuwenhuizen - - * scm/chord-name.scm: Junk "`(," constructs, use make-FOO-markup - throughout. - - * scm/new-markup.scm: Turn-off error-triggering test code. - -2002-12-29 Han-Wen Nienhuys - - * scm/new-markup.scm (markup-thrower-typecheck) - (markup-typecheck?): add full typechecking functions. - (make-markup-maker): add make-FOO-markup functions. - (markup-argument-list-error): nice error checking messages. - (make-markup): better function: less quoting escapades. - -2002-12-29 Jan Nieuwenhuizen - - * scm/chord-name.scm: Remove fixme's. Jazz chords still broken. - -2002-12-28 Jan Nieuwenhuizen - - * cygwin/lilypond.hint (requires): Add cygwin. - - * .cvsignore: Remove stepmake (huh!?!), add lib. - - * GNUmakefile.in: Add libdir links for builddir runs. - - * scripts/midi2ly.py: Add [lilypond_]libdir/python to path, - instead of datadir. - - * make/substitute.make (ATVARIABLES): Add lilypond_libdir, - local_lilypond_libdir. - - * config.make.in (lilypond_libdir): Add. - - * stepmake/stepmake/substitute-rules.make: - * stepmake/stepmake/script-rules.make: - * stepmake/stepmake/python-module-rules.make: - * stepmake/aclocal.m4 (STEPMAKE_LIBDIR): Fixes from - lilypond-python-module patch. - -2002-12-27 Han-Wen Nienhuys - - * Documentation/user/refman.itely (Graphical interfaces): add note - about xml2ly. - -2002-12-25 Han-Wen Nienhuys - - * scripts/ly2dvi.py (run_dvips): remove trailing newline - -2002-12-24 Han-Wen Nienhuys - - * VERSION: released 1.7.10 - - * scripts/musedata2ly.py (): idem - - * scripts/midi2ly.py (dump_chord): idem - - * scripts/etf2ly.py (version): idem - - * scripts/pmx2ly.py (Slur.calculate): new chord syntax - - * scripts/mup2ly.py (pre_processor_commands): new chord syntax - - * scm/tex.scm (tex-output-expression): remove eval compat - glut. Other output files too. - - * scm/chord-name.scm: don't export anything from chord module. - - * input/test/american-chords.ly: idem - - * input/test/banter-chords.ly (texidoc): idem - - * input/test/Cc-chords.ly: add breakage notes. - - * Documentation/user/refman.itely (Text markup): rewrite manual section. - - * lily/parser.yy (scalar): allow \markup { } as property value. - - * scm/chord-name.scm: complete new markup usage - - * scm/grob-description.scm (all-grob-descriptions): use new markup - texts by default - -2002-12-20 Han-Wen Nienhuys - - * scm/chord-name.scm: partial move to new markup texts. - -2002-12-18 Han-Wen Nienhuys - - * scm/grob-description.scm (all-grob-descriptions): small bass figures. - - * scm/bass-figure.scm (brew-bass-figure): make stack direction - settable. - -2002-12-18 Heikki Junes - - * lilypond-mode.el (LilyPond-command): propose 2midi if midi is - invoked for old midi, wait for killing. - -2002-12-16 Heikki Junes - - * Documentation/user/music-glossary.tely: Finnishing. - -2002-12-15 Han-Wen Nienhuys - - * mf/feta-nummer-code.mf: some kerning pairs. - -2002-12-14 Rune Zedeler - - * scm/output-lib.scm (set-bar-number-visibility): Context-function - Added. - - * Documentation/user/refman.itely (Bar numbers): - set-bar-number-visibility added, modulo-bar-number removed again - (sorry). - -2002-12-14 Heikki Junes - - * scm/output-lib.scm (modulo-bar-number-visible): add function. - - * Documentation/user/refman.itely: add modulo-bar-number-visible. - - * Documentation/user/music-glossary.tely: translate into Finnish. - -2002-12-10 Heikki Junes - - * lilypond-mode.el: add shortcut for 2midi - - * lilypond-font-lock.el: fontify lyrics - -2002-12-10 Rune Zedeler - - * scm/drums.scm : use 1.7.x names. - - * input/regression/drums.ly : Don't use << chords >> - -2002-12-10 Heikki Junes - - * lilypond-mode.el: tidy, add TODO - - * make/lilypond.mandrake.spec.in: install-info quietly. - -2002-12-09 Han-Wen Nienhuys - - * input/test/markup.ly: use new syntax. - -2002-12-08 Han-Wen Nienhuys - - * ly/params-init.ly (interscoreline): add word-space - - * input/test/metronome.ly (eighthNote): idem. - - * input/test/script-priority.ly: use new markup - - * lily/parser.yy (markup): allow HEAD markup0 markup1 - - * lily/molecule-scheme.cc (ly:molecule-translate): new function. - - * lily/parser.yy (gen_text_def): bugfix. - (full_markup): allow markup identifier. - -2002-12-09 Heikki Junes - - * lilypond-mode.el (LilyPond-kill-job): Kill all LilyPond compiling - jobs at the same time. Add horizontal lines to Command menu. - Allow one compiling job -- propose killing others before a new one. - - * lilypond.words: add markup, teeny, etc. - -2002-12-08 Heikki Junes - - * lilypond-mode.el: Use LilyPond-command-alist for Midi and MidiAll. - Allow only one type of midi process; launching Midi either stops - midis or plays the current midi and launching MidiAll stops midis - and starts timidity with "-ia", i.e., XAW-interface. Bind C-c C-return - to MidiAll. Choose "timidity-[1-9].ly" etc. files to MidiAll. - -2002-12-07 Han-Wen Nienhuys - - * lily/text-engraver.cc (process_acknowledged_grobs): use new - markup for new markup texts. - - * lily/mark-engraver.cc (process_music): idem - - * lily/instrument-name-engraver.cc (create_text): idem - - * scm/new-markup.scm (magnify-markup): new function. - - * scm/molecule.scm (stack-lines): bugfix. - - * lily/font-interface.cc (get_font): take font-magnification from - alist chain. - -2002-12-06 Han-Wen Nienhuys - - * lily/molecule-scheme.cc: move scheme functions to separate file. - - * lily/font-metric.cc (ly_get_glyph): new function. - - * scm/new-markup.scm (column-markup): use baseline-skip for columns. - (italic-markup, dynamic-markup): new functions - (font-markup): new function - - * lily/molecule.cc (ly_molecule_combined_at_edge): optional - padding and minimum - -2002-12-07 Rune Zedeler - - * lily/accidental-engraver.cc: - Bugfix: Also print forced accidentals when autoAccidentals = \turnOff - -2002-12-06 Heikki Junes - - * lilypond.vim: - * lilypond-font-lock.el: Put \longa as duration. Accept only - [a-zA-Z] for user defined identifiers. Separate note cases - with and without a duration (allow cis\longaX). - - * lilypond.words: Add words from Info. - -2002-12-06 Mats Bengtsson - - * stepmake/stepmake/c++-rules.make: Compile fix (bison 1.28) - -2002-12-05 Heikki Junes - - * lilypond-mode.el: Propose reverting buffer before a command if - it was edited with an another editor. - -2002-12-05 Han-Wen Nienhuys - - * lily/molecule.cc (ly_translate_molecule): new function - - * python/GNUmakefile (INSTALLATION_DIR1): install Python module - into libdir - - * autogen.sh (srcdir): copy aclocal.m4 if newer. - - * stepmake/aclocal.m4: STEPMAKE_LIBDIR. - -2002-12-04 Heikki Junes - - * lilypond.words: take \words from Info-index. - -2002-12-04 Jan Nieuwenhuizen - - * scm/sodipodi.scm: Add instruction for generating pfa fonts. - -2002-12-02 Heikki Junes - - * make/lilypond.mandrake.spec.in: use %make and %makeinstall. - -2002-12-01 Heikki Junes - - * make/lilypond.mandrake.spec.in: set menu-items to lilypond-info - and lilypond-documentation. - -2002-12-02 Jan Nieuwenhuizen - - * lily/parser.yy: Compile fix (bison 1.75). - -2002-12-01 Han-Wen Nienhuys - - * VERSION: 1.7.9 released - - * scm/music-functions.scm (shift-one-duration-log): refactor. - Use music-map. - - * input/regression/chord-tremolo.ly (texidoc): add dot test. - - * NEWS: update. - - * lily/font-interface.cc (get-font): take alist chain i.s.o. alist - argument - - * scm/music-functions.scm (display-music): new function - (music-map): change arg order. - - * input/regression/new-markup-syntax.scm: new file - - * lily/parser.yy (markup): add \markup { .. } syntax. - - * scm/new-markup.scm (override-markup): new function - (lookup-markup): new function - (music-markup): new function - (lookup-markup-command): use markup-signature to store argument - format for parser. - - * lily/lexer.ll: preliminary \markup syntax. - -2002-11-30 Heikki Junes - - * make/lilypond.mandrake.spec.in: remove extra %changelog entries, - add pre/post-dependencies and menus with icons from source. - - * Documentation/pictures/lilypond-48x48.xpm: - * Documentation/pictures/lilypond-32x32.xpm: - * Documentation/pictures/lilypond-16x16.xpm: new files, background - transparent. - - * stepmake/stepmake/generic-targets.make: - * stepmake/stepmake/toplevel-targets.make: Add make rpm-mandrake. - -2002-11-29 Han-Wen Nienhuys - - * input/regression/music-map.ly (texidoc): new file. - - * scm/music-functions.scm (music-map): new function - -2002-11-28 Han-Wen Nienhuys - - * lily/ligature-engraver.cc (create_ligature_spanner): fix fixes. - -2002-11-28 Heikki Junes - - * input/test/to-xml.ly: - * lily/ligature-engraver.cc: Fixes documentation. - - * lilypond.mandrake.spec.in: - * lilypond.redhat.spec.in: Add lilypond.words. - - * Documentation/user/refman.itely: Mention Info inside emacs. - - * lilypond.suse.spec.in: - * lilypond.redhat.spec.in: - * lilypond.mandrake.spec.in: Set root-owner for doc (tobbe@nyvalls.se). - -2002-11-27 Jan Nieuwenhuizen - - * scripts/ly2dvi.py (run_dvips): Use ly.read_pipe () instead of - os.popen.read (). - -2002-11-27 Han-Wen Nienhuys - - * scripts/ly2dvi.py (include_path): print warning if failing anything. - - * python/lilylib.py (error): add space - -2002-11-25 Han-Wen Nienhuys - - * GNUmakefile.in (EXTRA_DIST_FILES): add lilypond.words for - distribution. - -2002-11-24 Han-Wen Nienhuys - - * lily/paper-outputter.cc (Paper_outputter): close port when - finishing score. - -2002-11-26 Jan Nieuwenhuizen - - * scm/sodipodi.scm: Fixes. - -2002-11-26 Heikki Junes - - * lilypond-mode.el: Look shortcuts in menu from keymap, if possible. - - * buildscripts/make-font-dir.py: Fix. - -2002-11-25 Heikki Junes - - * lilypond-mode.el: Add support for Info inside Emacs. - -2002-11-24 Jan Nieuwenhuizen - - * buildscripts/make-font-dir.py: - * mf/GNUmakefile: Make sodipodi font map. - - * scm/sodipodi.scm: Add more output functions. - - * mf/feta-nummer.mf: - * mf/feta-beugel.mf: Add font_coding_scheme. - - * lily/paper-outputter.cc (output_header): Fix creator string. - -2002-11-23 Heikki Junes - - * lilypond-mode.el (LilyPond-autocompletion): invoked with - [S-iso-lefttab], fixes at bol and eol, descriptive variable names. - - * lilypond.words: add two (Everybody can add/remove words now!). - - * debian/rules: - * make/lilypond.suse.spec.in: - * make/lilypond.mandrake.spec.in: - * make/lilypond.redhat.spec.in: Add lilypond.words for emacs-files. - - * Documentation/user/refman.itely: Mention autocompletion. - -2002-11-23 Jan Nieuwenhuizen - - * scripts/ly2dvi.py: Add paper sizes. - - * lily/timing-engraver.cc: - * lily/time-signature.cc: - * lily/span-bar.cc: - * lily/grob-scheme.cc: Code formatting fixes. - - * scm/sodipodi.scm: - * scm/sketch.scm: - * buildscripts/mf-to-table.py: - * buildscripts/make-font-dir.py: Font testing. - -2002-11-23 Heikki Junes - - * lilypond-mode.el (LilyPond-autocompletion): deletes end-of-word, - inserts try-completion and shows all-completions. - - * lilypond.words: '\' -> '\\' - - * lilypond-mode.el: load libraries in the end, lilypond.words defines - LilyPond-keywords, LilyPond-identifiers and LilyPond-reserved-words. - - * lilypond-font-lock.el: Use LilyPond-keywords, LilyPond-identifiers - and LilyPond-reserved-words. - -2002-11-22 Heikki Junes - - * lilypond-mode.el (LilyPond-words-filename): find lilypond.words - from load-path. - - * lilypond-mode.el (LilyPond-autocompletion): shows completions in - the mini-buffer with Control-Shift-c. - -2002-11-21 Han-Wen Nienhuys - - * lily/parser.yy (tempo_event): use tempo-unit for \tempo - duration. This fixes \tempo taking time. - -2002-11-21 Mats Bengtsson - - * lily/volta-engraver.cc (process_acknowledged_grobs): - Allow for text markup in repeatCommands. - -2002-11-21 Heikki Junes - - * lilypond-mode.el (LilyPond-insert-string): new function, use it - in LilyPond-insert-tag-notes. LilyPond-insert-between, new function. - Get rid of skeleton.el-dependency. - - * Documentation/topdocs/INSTALL.texi: tell how to get syntax-highlight. - -2002-11-20 Han-Wen Nienhuys - - * lily/beam-engraver.cc (stop_translation_timestep): reset - now_stop_ev_ - - * lily/scm-option.cc: add parse-protect to ly:set-option - - * lily/lexer.ll: set errorlevel if GUILE fails during parse. - -2002-11-19 Han-Wen Nienhuys - - * lily/include/ligature-bracket.hh: removed - * lily/ligature-bracket.cc: removed - - * lilypond-mode.el (LilyPond-expand-alist): set LaTeX extension to - .tex - - * lily/beam.cc (set_beaming): don't change beam count on rests. - (brew_molecule): always set flag-width > 0. - -2002-11-19 Heikki Junes - - * lilypond-mode.el: LilyPond-imenu-generic-re: only alphabetic - chars, remove instructions; instead, refer to lilypond-init.el and - Documentation/topdocs/INSTALL.texi. - - * lilypond.words: add identifiers and reserved words. - - * Documentation/topdocs/INSTALL.texi: separate sections for installing - files and adding a load-path. - - * lilypond-init.el: Instructions, extracted from - Documentation/topdocs/INSTALL.texi. - -2002-11-19 Han-Wen Nienhuys - - * VERSION: 1.7.8 released - - * lily/grob.cc (warning): better robustness fix. - -2002-11-19 Juergen Reuter - - * lily/cluster-engraver.cc: bugfix: use protected scm upon columns - - * lily/cluster-engraver.cc: stick better to variable naming - conventions - - * lily/cluster-engraver.cc: bugfix: delay typesetting of cluster - until stop_translation_timestep() - - * lily/cluster-engraver.cc, lily/cluster.cc: design fix: pass - min/max coordinates to backend, but no musical info such as - pitches - - * lily/cluster.cc: robustness fix: do not crash upon empty cluster - - * lily/grob.cc: robustness fix: warning(): do not crash if - cause is not set - - * lily/ligature-bracket-engraver.cc, scm/grob-description.scm: use - the much more elaborated tuplet brackets than the very naive and - simple ligature bracket grob - -2002-11-19 Han-Wen Nienhuys - - * Documentation/user/refman.itely (Analysis brackets): add - horizontal bracket doco. - - * ly/property-init.ly (setMmRestFermata): added. - - * Documentation/user/refman.itely (Multi measure rests): fermatas - on mm rests. - - * input/regression/apply-context.ly (texidoc): new file - - * lily/parser.yy (Simple_music): \applycontext #FUNCTION allows - code to be executed during interpretation. Possible applications: - smart octavation, more advanced bar checks. - - * lily/apply-context-iterator.cc: new file. - -2002-11-18 Han-Wen Nienhuys - - * input/test/new-markup.ly: new file. - - * lily/text-item.cc (text_to_molecule): new function - - * scm/new-markup.scm (lambda): new file - - * lily/function-documentation.cc (ly_add_function_documentation): - add proc property as well - -2002-11-17 Han-Wen Nienhuys - - * Documentation/user/music-glossary.tely (Top): add custos. - -2002-11-18 Heikki Junes - - * Documentation/topdocs/INSTALL.texi: advise how to include source - path to Emacs load-path and improve language. - -2002-11-16 Jan Nieuwenhuizen - - * GNUmakefile.in: config.h message fix. - - * autogen.sh: - * aclocal.m4: Regenerate. - - * configure.in: - * config.make.in: - * stepmake/config.make.in: - * stepmake/configure.in: - * stepmake/autogen.sh: - * stepmake/aclocal.m4: Update for autoconf 2.56. - -2002-11-16 Heikki Junes - - * Documentation/topdocs/INSTALL.texi: instructions for an user how - to install Emacs-mode. Instructions how to use vim-mode. - -2002-11-14 Han-Wen Nienhuys - - * scm/music-types.scm (music-descriptions): no length for tempo event. - - * input/*.ly: add \version everywhere. - - * input/*.ly: update syntax to 1.7 + new-chords. - - * VERSION: 1.7.7 released. - - * Documentation/user/*.tely: new chord syntax. - - * input/regression/[bc]*.ly (texidoc): syntax updates. - -2002-11-13 Heikki Junes - - * lilypond.words: add vocabulary to be used in auto-completion - - * vimrc: autocompletion in Insert/Replace-mode with - - * lilypond.vim: allow note name at EOF - -2002-11-13 Han-Wen Nienhuys - - * buildscripts/new-chords.py (edit): -e option: inline editing. - - * input/regression/a*.ly (texidoc): syntax updates. - - * Documentation/user/lilypond-book.itely (Integrating La@TeX{} and - music): elucidations. - -2002-11-11 Juergen Reuter - - * lily/include/lily-proto.hh, ly/engraver-init.ly, - ly/spanners-init.ly, scm/grob-description.scm, - scm/grob-property-description.scm, scm/music-types.scm, - lily/cluster-engraver.cc, lily/cluster.cc, - lily/include/cluster.hh, input/test/cluster.ly: cluster - implementation - - * lily/include/lookup.hh, lily/lookup.cc, scm/pdf.scm - ps/music-drawing-routines.ps, scm/ascii-script.scm, scm/ps.scm, - scm/sketch.scm, scm/tex.scm: support for dots and polygons added - - * lily/lookup.cc: bugfix: fixed infinite loop in frame () - - * mf/parmesan-heads.mf: bugfix: vaticana punctum set_char_box - - * scm/grob-description.scm: bugfix: by default, use default note - head style when engraving ligatures - - * lily/note-heads-engraver.cc: bugfix: do not steal ligature events - - * lily/mensural-ligature-engraver.cc: bugfix: accept ligature - events - - * lily/ligature-bracket-engraver.cc: bugfix: accept ligature events - - * input/test/ancient-font.ly: bugfix: style -> flag-style - - * lily/ligature-engraver.cc: indentation fix - - * lily/parser.yy: indentation fixes - -2002-11-09 Han-Wen Nienhuys - - * input/regression/measure-grouping.ly: more elaborate example. - - * lily/moment.cc: ly:add-moment, ly:mul-moment, - ly:div-moment. New functions - - * scm/music-functions.scm (set-time-signature): new function, - allow inline time sig settings with measure grouping. - - * lily/parser.yy (command_element): move time sig construction - into Scheme. - - * lily/side-position-interface.cc (out_of_staff): new function, - like padding, but keep minimum distance from staff. Easier than - linespanners (dynamics, pedals), but roughly the same effect. - -2002-11-10 Heikki Junes - - * emacs-mode.el: Added spanish-note-replacements - (Carlos Betancourt, ). - - * vimrc: (Un)commenting with <(S-)F12>, tidy. - -2002-11-08 Heikki Junes - - * lilypond.vim: Do not fontify cises, desis, etc. - - * vimrc: view dvi with - -2002-11-08 Han-Wen Nienhuys - - * lily/lookup.cc (triangle): new function. - - * input/regression/measure-grouping.ly (texidoc): new file: show - triangles and brackets for beat groups of 3 and 2. - - * lily/include/measure-grouping-spanner.hh (class - Measure_grouping): new file. - - * lily/measure-grouping-spanner.cc (brew_molecule): new file - - * lily/measure-grouping-engraver.cc (class - Measure_grouping_engraver): new file. - -2002-11-06 Jan Nieuwenhuizen - - * Merge from stable: - - cvs update -jlilypond_1_6_6 -jlilypond_1_6_6_1 - - * ly/paper16-init.ly (paperSixteen): Bugfix: set fonts instead of - stylesheet. - - * ly/paper19.ly: Include paper19-init.ly. - - * ly/paper19-init.ly: New file. - - * Documentation/user/tutorial.itely (First steps): Fix first - example for font test. - - * input/tutorial/brahms-tweaked.ly: Fix by hand for font test. - - * ChangeLog: Add 1.7.6 release marker (see below). - - * stepmake/stepmake/python-module-vars.make (EXTRA_DIST_FILES): - Add .py files. - -2002-11-06 Han-Wen Nienhuys - - * input/tutorial/sammartini.ly (bassvoices): to new syntax. - - * input/tutorial/*.ly: update to new syntax. - - * lily/parser.yy (Composite_music): new transpose syntax, - \transpose FROM TO MUSIC. - -2002-11-04 Jan Nieuwenhuizen - - * scripts/lilypond-book.py: * scripts/ly2dvi.py: Fix: redirect - latex progress/error output to stderr (by default this goes to - stdout). Show lilypond progress, even when not verbose. - - * python/lilylib.py (system): New optional parameter to control - showing of progress. - - * scm/backend-documentation-lib.scm (check-dangling-properties): - Fix error message. - - * lily/text-item.cc (ADD_INTERFACE): Remove align, magnify. Add - axis, extent. - - * scm/grob-property-description.scm (magnify): Remove. - (extent, axis): Add. - -2002-11-03 Han-Wen Nienhuys - - * VERSION: Release 1.7.6. - - * scripts/convert-ly.py: more uniformization substitutions. - - * buildscripts/new-chords.py (sub_chords): new file. - -2002-11-03 Jan Nieuwenhuizen - - * mf/GNUmakefile: Bugfix: Use actual fontname (.AFM FontName) for - lilypond.map. Include sauter fonts too. Cleanups. - -2002-11-02 Han-Wen Nienhuys - - * Documentation/user/tutorial.itely (First steps): change to new - chord/tie/slur/beam notation. - - * lily/parser.yy (event_that_take_dir): allow postfix notation for - ties. - - * lily/new-tie-engraver.cc (process_acknowledged_grobs): new - engraver. Process ties in postfix notation, i.e. c8-~ c - - * lilypond-mode.el (LilyPond-command-alist): run LaTeX by default. - - * input/regression/beam-postfix-notation.ly (texidoc): new file. - - * lily/parser.yy (event_that_take_dir): allows c8-[ for beams. - - * lily/beam-engraver.cc (try_music): accept new-beam-events - - * input/regression/chord-scripts.ly (texidoc): new file - - * lily/new-fingering-engraver.cc (acknowledge_grob): also handle - script-events. - - * scm/script.scm (default-script-alist): cleanup. - - * lily/script-engraver.cc (make_script_from_event): cleanup. - - * lily/lyric-combine-music-iterator.cc - (Lyric_combine_music_iterator): remove superfluous events. - (melisma_busy): new function. Fix broken melismas. - -2002-10-31 Heikki Junes - - * vimrc: Add shortcuts for compiling, midi-playing and PS-viewing. - Remove nonvalid settings. Use descriptive key names. - Use to indicate the pressing of that key. - -2002-10-30 Jan Nieuwenhuizen - - * scripts/lilypond-book.py (option_definitions): Typo. - - * scripts/ly2dvi.py: Updates. - - * python/lilylib.py (setup_environment, print_environment) - (get_bbox, make_preview): Merge and remove from ly2dvi and - lilypond-book. - - * scripts/lilypond-book.py: Use lilylib. Cleanups. - - * .cvsignore: Remove some cruft. - - * make/lilypond-vars.make (PYTHONPATH): Add python's outdir to - path. - - * scripts/ly2dvi.py: Use lilylib as module. Fail gracefully if - kpsexpand, kpsewhich, ps2pdf exit with error. Cleanups and fixes - throughout. - - * python/lilylib.py (quiet_system): Junk - (system): Display error log upon failure. - (read_pipe): New function. Cleanups and fixes. - - * python/*.py: Rename from *.py.in. - - * make/substitute.make (ATVARIABLES): Add lilypond_datadir. - - * GNUmakefile.in (SUBDIRS): Move python before scripts. - -2002-10-30 Jan Nieuwenhuizen - - * python/GNUmakefile: Bugfix: handle modules. - - * stepmake/stepmake/python-module-targets.make (default): Add - compiled modules. - - * stepmake/stepmake/python-module-rules.make: Add rule for byte - compiling modules. - - * stepmake/stepmake/python-module-vars.make (OUT_PY_MODULES): - Bugfix. (OUT_PYC_MODULES): Add. - -2002-10-30 Heikki Junes - - * make/lilypond.mandrake.spec.in: Repair info. Comment out menu. - Use default paths. Refresh description. - -2002-10-28 Han-Wen Nienhuys - - * VERSION: 1.7.5 released - - * input/regression/finger-chords.ly (texidoc): new file. - - * lily/script-engraver.cc (process_music): remove scriptHorizontal - support - - * lily/fingering-engraver.cc (process_music): remove kludgy - scriptHorizontal stuff. - - * lily/script.cc: remove staff-support property. - - * lily/new-fingering-engraver.cc (add_fingering): new - file. Fingering engraver for new style chords. - -2002-10-27 Han-Wen Nienhuys - - * lily/parser.yy (bare_number): allow 4 \cm (without - decimal dot). (should backport to 1.6?) - - * ly/declarations-init.ly: use Scheme for dimension defs. - - * lily/parser.yy (TODO): remove hard coded dimensions, add - REAL NUMBER_IDENTIFIER production. - - * lily/rest-collision.cc (force_shift_callback): rewrite using - -done property. - - * scm/grob-property-description.scm (rest-collision-done): add - property. - - * lilypond.vim: add file () - -2002-10-23 Han-Wen Nienhuys - - * input/regression/multi-measure-rest-center.ly: new file. - - * lily/multi-measure-rest.cc (big_rest): multi measure rest was - off horizontally by 0.05 ss. Fixed. - -2002-10-22 Jan Nieuwenhuizen - - * scm/pdftex.scm: Rename ly-number to ly:number->string. - - * Documentation/topdocs/index.tely: Remove duplicate from merge. - -2002-10-22 Han-Wen Nienhuys - - * lily/tie.cc (get_control_points): also avoid staff lines on the - just outside the outer staff lines - -2002-10-21 Jan Nieuwenhuizen - - * ly/params-init.ly: Just define style-alist, no need to - define-public. - - * input/mutopia/W.A.Mozart/mozart-hrn3-defs.ly: Fix style override - (thanks Han-Wen). - - * mf/GNUmakefile (FONT_FILES): Add feta-nummer. - (FET_FILES): = FONT_FILES. - - * Merge from stable: - - cvs update -jlilypond_1_6_5 -jlilypond_1_6_6 - -2002-10-21 Han-Wen Nienhuys - - * VERSION: 1.7.4 released. - - * scm/generate-documentation.scm (string-append): add macro - definitions. - - * lily/text-item.cc (lookup_text): don't use virtual fonts for - normal texts. - - * lily/multi-measure-rest-engraver.cc: make separate - MultiMeasureRestNumber grob. Introduce restNumberThreshold. - - * lily/multi-measure-rest.cc: remove text handling. Remove - number-threshold. - -2002-10-20 Han-Wen Nienhuys - - * scm/music-types.scm: doc patch by Graham Percival - -2002-10-19 Jan Nieuwenhuizen - - * buildscripts/make-font-dir.py (sketch_p): Bugfix: only write - encoding part. - (Font_info.set_defaults): pixelsize now also defauts to '0'. - (sketch_p): Sketch wants only first four elements of X11 font spec. - - * buildscripts/mf-to-table.py (parse_logfile): Bugfix. - - * mf/feta-autometric.mf: Write foundry and family to log. - - * mf/GNUmakefile: Fixes for pfx builds. Also write sketch - font translation table. - - * buildscripts/mf-to-table.py: Better font info into afm. - - * buildscripts/make-font-dir.py: Use font info from afm. Mftrace - 1.0.9 required. - - * configure.in: Whine for mftrace 1.0.9. - -2002-10-19 Han-Wen Nienhuys - - * lily/parser.yy (chord_body): allow <>4 notation. - - * lily/main.cc (main_prog): don't try to load init.EXT when - processing foo.EXT. - -2002-10-15 Rune Zedeler - - * scm/tex.scm (zigzig-line): added. - - * scm/ps.scm (zigzag-line): added. - - * ps/music-drawing-routines.ps (subvec): added. - (draw_zigzag_line): added. - - * lily/line-spanner.cc: Add support for #'type = #'zigzag. reading - grob properties zigzag-width and zigzag-length. - - * input/regression/glissando.ly: Add some zig-zagged glissandi. - -2002-10-15 Jan Nieuwenhuizen - - * scm/sodipodi.scm: Some fixes. Sketch also groks this bare-bones - svg output, including font. - -2002-10-14 Jan Nieuwenhuizen - - * scm/lily.scm: Register sodipodi output module. - - * scm/sodipodi.scm: New file. - - * lily/afm.cc (read_afm_file): Read TfmCheckSum from comment. - - * buildscripts/mf-to-table.py (base): Write TfmChecksum in - comment, after header. - (parse_logfile): Remove invalid key FontFamily. Add mandatory key - FullName. Fix FontName key. - -2002-10-14 Rune Zedeler - - * lily/rest.cc (after_line_breaking): bugfix: dots after half - and breve rests. - - * input/test/blank-notes.ly: bugfix - - * lily/rest.cc (after_line_breaking): bugfix: dots after whole - rests. (Kim Shrier) - - * input/test/rest-dot-positions.ly: Added. (Kim Shrier) - -2002-10-14 Jan Nieuwenhuizen - - * scm/tex.scm: - * scm/ps.scm: Cleanup and remove obsolete junk. - - * Documentation/user/internals.itely: - * Documentation/user/refman.itely: Run texinfo-all-menus-update. - - * lily/parser.yy: Identify shift/reduce problems. - - * input/mutopia/W.A.Mozart/mozart-hrn3-defs.ly: Rename - make-style-sheet. Too specific for convert-ly? - -2002-10-14 Han-Wen Nienhuys - - * po/cs.po: added czech translation, courtesy Tomas Kopecek. - - * input/test/*.ly: various fixes. - - * lily/music.cc (name): bugfix - - * lily/piano-pedal-engraver.cc (try_music): fix pedals. - - * lily/input-file-results.cc (code): set-point-and-click! -> - set-point-and-click - -2002-10-13 Han-Wen Nienhuys - - * Use uniform ly: prefix for exported scheme primitive functions. - - * scm/music-types.scm: junk compat glue - - * scripts/convert-ly.py: add rules for stuff below, junk - compatibility glue for spanrequest. - - * lily/parser.yy (verbose_event): remove \spanrequest, - \commandspanrequest, \script. - - * lily/identifier-smob.cc (LY_DEFINE): change name to ly-export - - * lily/parser.yy: remove arpeggio keyword; use identifier. Idem - for \penalty, \glissando. - - * VERSION: release 1.7.3 - -2002-10-13 Rune Zedeler - - * lily/accidental-engraver.cc: Fix - grace-in-the-beginning-of-measure bug caused by the resent - partial-measure fix. - - * lily/stem.cc: reversed noteheads overlap half of the stem. (Full - overlap looks too crowded) - -2002-10-13 Han-Wen Nienhuys - - * lily/parser.yy (assignment): allow SCM expression as assignment. - - * lily/include/music-output-def.hh (class Music_output_def): - * lily/music-output-def.cc: - * lily/paper-def.cc: - * scm/font.scm (markup-to-properties): - * lily/parser.yy (music_output_def_body): - remove style_sheet_ - -2002-10-12 Han-Wen Nienhuys - - * ly/grace-init.ly (startGraceMusic): shorten default grace stem - length. - - * input/regression/spacing-to-grace.ly: new file. - - * input/regression/spacing-end-of-line.ly: new file. - - * lily/note-spacing.cc (get_spacing): take into account breakable - stuff sticking out at the left (time sig change at line break). - - * lily/spacing-spanner.cc (breakable_column_spacing): junk weird - raggedright code. - - * scm/music-functions.scm (make-voice-props-set): add - staff-position for mm rests. - - * lily/spacing-spanner.cc (musical_column_spacing): shrink space - before grace notes a little. - - * lily/parser.yy (sup_quotes): use '\'' for sup_quotes. - - * lily/break-align-interface.cc (do_alignment): right-edge spacing - key adds space at the end of line. - -2002-10-11 Jan Nieuwenhuizen - - * scm/sketch.scm: Fix beams. - - * buildscripts/mf-to-table.py: Add EncodingScheme. - - * scm/sketch.scm: Resurrect. - -2002-10-11 Han-Wen Nienhuys - - * lily/multi-measure-rest.cc: use breve rests for measure lengths - longer than 4/4. Patch courtesy Kim Shrier . - -2002-10-10 Jan Nieuwenhuizen - - * stepmake/stepmake/c++-rules.make: Fixes for bison 1.50. - - * lily/lexer.ll (My_lily_lexer): Avoid silly flex induced gcc warnings. - -2002-10-11 Han-Wen Nienhuys - - * lily/my-lily-lexer.cc (prepare_for_next_token): use previous - token for origin information. - - * lily/parser.yy (My_lily_lexer): do identifier location and - cloning from lexer. - - * scm/music-functions.scm (make-multi-measure-rest): move mmrest - logic out of the parser. Add bar checks on both ends. - - * Documentation/user/refman.itely (Multi measure rests): add more - notes about mm rests. - -2002-10-10 Jan Nieuwenhuizen - - * input/regression/bar-scripts.ly: Re-enable. - - * lily/parser.yy: - * stepmake/stepmake/c++-rules.make: Fixes for bison 1.51 to be - released rsn. Bison 1.50 has a crucial bug and won't work. - - * lily/lexer.ll (My_lily_lexer): Avoid silly flex induced gcc warnings. - - -2002-10-07 Jan Nieuwenhuizen - - * input/regression/bar-scripts.ly: Blunt documentation build fix. - -2002-10-05 Jan Nieuwenhuizen - - * Actually merge changes since 1.6.4 besides ChangeLog, and - resolve conflicts. Lots of updates, hope all is well. - - * cygwin/lilypond.hint (requires): Add ghostscript. - - * scm: Update some (c). - -2002-10-07 Han-Wen Nienhuys - - * input/test/{various}.ly: add \header fields and texidoc strings. - -2002-10-05 Werner Lemberg - - * scripts/lilypond-book.py (output_dict) : `output_tex' - renamed to `output_latex_quoted'. - Added `output_latex_noquote'. - (schedule_lilypond_block): Implement `noquote' option for LaTeX - mode. - -2002-11-03 Jan Nieuwenhuizen - - * ChangeLog: Add 1.6.6 release marker. See below. - - * stepmake/stepmake/po-targets.make: Remove --c++ option. - - * scripts/midi2ly.py: Fix global syntax warnings. - - * GNUmakefile.in: Generate builddir locale tree too. - - * scripts/ly2dvi.py: - * scripts/midi2ly.py: - * scripts/mup2ly.py: - * scripts/update-lily.py: - * lily/main.cc (setup_paths): Fix for locales setup. - -2002-10-29 Jan Nieuwenhuizen - - * Documentation/windows/installing.texi: Soften wording about - necessity of becoming Administrator. tommie@iae.nl reports this - does not seem to be necessary for his flavour of Windows 2000. - Explicitely discourage text mode mounts. - -2002-10-27 Han-Wen Nienhuys - - * lily/rest.cc (after_line_breaking): backport dot position fix. - - * lily/rest-collision.cc (do_shift): also remove dots for suicided - rests. Thanks to Klaus Zimmermann for finding this bug. - -2002-10-24 Jan Nieuwenhuizen - - * Documentation/topdocs/INSTALL.texi: Correction for broken /bin/sh. - -2002-10-24 Han-Wen Nienhuys - - * Documentation/user/music-glossary.tely: fix links. - -2002-10-21 Werner Lemberg - - * tex/lily-ps-defs.tex (\lilypondsetdimen): Define ID macro. - (\lilypondpostscript): Define PS macros `lyscaleXXX' (`XXX' is the - scaling factor) only once and use them in the definition of - \embeddedps. - * ps/music-drawing-routines.ps (skeel): Removed. - -2002-10-21 Jan Nieuwenhuizen - - * stepmake/aclocal.m4: Changed 6 instances of $( ) to ` `, for - Solaris7, as we don't use nested $( ) constructs. - -2002-10-21 Han-Wen Nienhuys - - * VERSION: Release 1.6.6. - -2002-10-21 Jan Nieuwenhuizen - - * Documentation/topdocs/INSTALL.texi: Add note about using ksh for - as workaround for /bin/sh problems on Solaris7. - -2002-10-19 Werner Lemberg - - * GNUmakefile.in (web-doc): Fix typos. - * tex/lilyponddefs.tex (\lilypondspecial): Don't scan - `music-drawing-routines.ps' but emit \special{header=...} once. - * scm/tex.scm (header-end): Updated. - -2002-10-19 Han-Wen Nienhuys - - * lily/stem-engraver.cc (acknowledge_grob): don't crash on - undefined tremolo. - -2002-10-15 Werner Lemberg - - * scripts/lilypond-book.py (g_make_html): New global variable. - (schedule_lilypond_block): Don't compute EPS and PNG for `texi' - if `g_make_html' isn't set. - [main]: Add format `texi-html'. - (option_definitions): Updated. - * Documentation/user/lilypond-book.itely: Updated. - - * make/lilypond-vars.make (LILYPOND_BOOK_FORMAT): New variable. - * make/ly-rules.make (%.texi, %.nexi): Use it. - * stepmake/stepmake/www-targets.make (web): Pass `tex-html' as - format to lilypond-book. - * GNUmakefile.in (web-doc): Ditto. - -2002-10-14 Werner Lemberg - - Further improve TeX output. The produced files are about 40% - smaller. `lilyponddefs.tex' is now read only once. - - * tex/lilyponddefs.tex: Remove footer stuff. - (\ifundefined): Renamed to... - (\lilypondundefined): This. Use LaTeX's definition to - make it nestable and make it global. - (\lilypondstart, \lilypondend): New macro to initialize LilyPond - output. - (\lilypondspecial): New macro to read `music-drawing-routines.ps'. - (\fetasixteen, \fetafont, \fetachar, \botalign, \leftalign): Make - them global. - (\placebox): Renamed to... - (\lyitem): This. - Make it global and call \outputscale by itself. - (\lybox, \lyvrule): New macros to reduce input data. - (\lilypondfirst, \lilypondsecond, \lilypondloop, \lilyponditerate): - New auxiliary macros. - (\SkipLilydefs, \EndLilyPondOutput): Removed. - * tex/lily-pdf-defs.tex, tex/lily-ps-defs.tex (\lilySpace): Renamed - to... - (\lilypondspace): This and made it global. - (\turnOnPostScript): Renamed to... - (\lilypondpostscript): This and made it global. - (\turnOnExperimentalFeatures): Renamed to... - (\lilypondexperimentalfeatures): This and made it global. - * tex/lily-ps-defs.tex (\PSsetTeXdimen): Renamed to... - (\lilypondsetdimen): This and made it global. - * tex/lilypond-latex.tex, tex/lilypond-plaintex.tex: Removed. - * tex/GNUmakefile (TEX_FILES): Add `music-drawing-routines.ps' - (all, $(outdir)/music-drawing-routines.ps): New rules. - * buildscripts/mf-to-table.py (write_tex_defs): Use \gdef. - * scm/pdftex.scm, scm/tex.scm (end-output, header-end, placebox, - start-system, stop-system, stop-last-system, filledbox): Updated to - use the changed macros from lilyponddefs.tex. - * scripts/lilypond-book.ly (output_dict) : Ditto. - -2002-10-07 Jan Nieuwenhuizen - - * Documentation/windows/installing.texi: Update. - -2002-09-30 Han-Wen Nienhuys - - * VERSION: 1.6.5 released - - * scripts/lilypond-book.py (make_pixmap): don't produce empty pages. - -2002-09-28 Han-Wen Nienhuys - - * scm/translator-property-description.scm (voltaOnThisStaff): add - property. - -2002-09-28 Werner Lemberg - - * scm/tex.scm (header-end): Suppress page numbering. - - * scripts/lilypond-book.py (output_dict) : - Fix quotation for HTML output. - -2002-09-28 Graham Percival - - * Documentation/user/refman.itely: grammar and phrasing - fixes to "Note Entry" section. Also adds a few new examples. - -2002-09-27 Han-Wen Nienhuys - - * flower/include/string-data.icc: include string.h - -2002-09-25 Han-Wen Nienhuys - - * scm/chord-name.scm (chord::inner-name-banter): remove space. - -2002-09-27 Jan Nieuwenhuizen - - * Documentation/user/GNUmakefile (extra-local-help): Add. - - * stepmake/stepmake/www-targets.make (local-help): Add. - -2002-09-26 Han-Wen Nienhuys - - * Documentation/topdocs/INSTALL.texi (Top): recommend binary - packages. - - * Documentation/topdocs/README.texi (Top): building documentation - (not website.) - -2002-09-26 Jan Nieuwenhuizen - - * Documentation/user/refman.itely: - * Documentation/user/tutorial.itely: - * Documentation/user/music-glossary.tely: Merge changes. - - * Documentation/user/glossary.html.in: - * Documentation/index.texi: - * Documentation/header.html.in: Accomodate renaming of glossary. - - * Documentation/user/tutorial.itely: Add some glossary references. - - * Documentation/user/refman.itely: Minor fixes. - - * Documentation/user/lilypond.tely: Add glossary do direntry. - - * Documentation/user/music-glossary.tely: Rename (previously: - glossary.tely). Fix anchor placement. - - * Documentation/user/GNUmakefile: Make music-glossary.info too. - -2002-09-23 Werner Lemberg - - * scripts/lilypond-book.py (output_dict): Fix handling of - various environments by avoid extraneous newlines. - Rename `output-all' regexp for html to `output-html'. - Replace `output-all' regexp for texi with `output-texi-quote' - and `output-texi-noquote'. - (compose_full_body): Don't override `linewidth' user option - for `singleline'. - (schedule_lilypond_block): Don't indent text specified with - `intertext' option. - Add new option `noquote'. - (compile_all_files): Use latex instead of tex to compile ly - files directly. - - * Documentation/user/lilypond-book.itely: Updated and revised. - Improve layout. - - * Documentation/user/glossary.tely, - Documentation/user/introduction.itely, - Documentation/user/tutorial.itely, - Documentation/user/refman.itely, - Documentation/user/appendices.itely: Fix overfull LilyPond - boxes caused by the new lilypond-book code. Other minor - fixes. - - * Documentation/user/macros.itexi (@texiflat): Don't emit - trailing space. - - * scm/tex.scm (end-output, header-end): Add preamble and - postamble to make lilypond output directly compilable with - latex. - - -2002-09-23 Han-Wen Nienhuys - - * Documentation/topdocs/INSTALL.texi (Top): bugfix for RH RPM - instructions. - -2002-09-25 Jan Nieuwenhuizen - - * Documentation/user/glossary.tely: Add titling and hyperlinks. - -2002-09-24 Han-Wen Nienhuys - - * lily/beam.cc (connect_beams): don't crash if there are quarter - notes in beams. - -2002-09-24 Juergen Reuter - - * Documentation/user/refman.itely: corrected ancient clef - docu; added docu on ligatures - -2002-09-21 Juergen Reuter - - * Documentation/user/glossary.tely, - Documentation/user/refman.itely, input/les-nereides.ly, - input/mutopia/W.A.Mozart/mozart-hrn3-defs.ly, - input/test/bagpipe.ly, lily/stem.cc, ly/grace-init.ly, - scm/grob-property-description.scm, scripts/convert-ly.py: renamed - Stem properties: flag-style -> stroke-style, style -> flag-style. - - -2002-09-22 Werner Lemberg - - * scripts/lilypond-book.py: Add option `notime' to suppress - printing of a time signature. Specify default indentation of 0pt - if single line fragment. Don't emit redundant `\paper{ }'. - - * Documentation/user/lilypond-book.itely: Updated. - - * Documentation/user/glossary.tely: Completely reformatting. - -2002-09-23 Han-Wen Nienhuys - - * GNUmakefile.in (top-web): generate (possibly empty) examples.html - -2002-09-22 Jan Nieuwenhuizen - - * Documentation/user/tutorial.itely: Fix links. - - * Documentation/topdocs/index.tely: - * Documentation/index.texi: - * Documentation/header.html.in: Small website fixes and updates. - - * debian/: Debian patch by Anthony Fok. - -2002-09-21 Jan Nieuwenhuizen - - * Documentation/footer.html.in: How time flies: It's already 2002! - - * Documentation/topdocs/index.tely: Stable/development fix. Use - more descriptive link names than 'here'. - -2002-09-21 Han-Wen Nienhuys - - * VERSION: 1.7.2 released - * VERSION: 1.6.4 released - - * scm/tex.scm (header-end): enclose lily output in begingroup/endgroup. - - * scripts/convert-ly.py (FatalConversionError.conv): add rule for - (ly-make-music "Foo_bar") -> (make-music-by-name 'FooBarEvent). - - * mf/feta-din.mf (test): add x-height and space. - - * lily/dynamic-engraver.cc (process_music): take dynamic direction - from ^_ for crescendi. Idem for slurs and phrasing slurs. - - * ly/grace-init.ly: add-to-grace-init: function to portably add - settings to \grace. - - * lily/dynamic-engraver.cc (process_music): finish (de)crescendo - if we get an absolute dynamic event. - - * lily/time-signature-engraver.cc (process_music): warn for \time 5/5 - - * lily/source-file.cc (get_line): oops. All line numbers were off - by 2. Fix that. - - * lily/parser.yy (event_that_take_dir): allow () \< \> \! \( \) to - be after the note, combined with -_^, i.e. c4-(-\)-\> - - * ly/params-init.ly (ledgerlinethickness): use Scheme expressions. - - * lily/parser.yy (number_factor): remove (number) as number - expression. ("Let them eat Lisp"). - -2002-10-05 Han-Wen Nienhuys - - * lily/horizontal-bracket.cc: new file. - - * lily/horizontal-bracket-engraver.cc: new file. - - * input/regression/note-group-bracket.ly: new file. Support - horizontal note brackets for music analysis. - - * lily/stem.cc (flag): new flag-style: no-flag. - - * input/test/stem-cross-staff.ly: new file - - * Documentation/user/internals.itely: Improved formatting, fixing - typos. Added a section `Output details' to describe how the TeX - code looks like. - - * lily/include/midi-stream.hh: use stdio.h iso. iostream.h - - * lily/parser.yy: remove \dynamicscript. - - * ly/dynamic-scripts-init.ly: redo the dynamic scripts - definitions. - - * python/midi.c (midi_error): take two arguments. - - * Merge 1.6.5 changes: - -2002-10-04 Jan Nieuwenhuizen - - * scm/grob-description.scm (minimum-beam-collision-distance): 0.75 - staff-space. Previous 1.5 was probably meant as half-spaces. - (cautionary-style): parentheses (was: smaller). This is what doco - says, and it seems more logical. - - * Documentation/user/refman.itely (Chromatic alterations): Bugfix - for 2nd sentence. - -2002-10-04 Han-Wen Nienhuys - - * make/lilypond.redhat.spec.in: various fixes for RedHat 8.0 - -2002-10-03 Jan Nieuwenhuizen - - * lily/beam.cc (rest_collision_callback): Fixed: partial rewrite. - -2002-09-30 Han-Wen Nienhuys - - * scripts/lilypond-book.py (make_pixmap): don't produce empty pages. - -2002-09-28 Han-Wen Nienhuys - - * scm/translator-property-description.scm (voltaOnThisStaff): add - property. - -2002-09-28 Werner Lemberg - - * scm/tex.scm (header-end): Suppress page numbering. - - * scripts/lilypond-book.py (output_dict) : - Fix quotation for HTML output. - -2002-09-28 Graham Percival - - * Documentation/user/refman.itely: grammar and phrasing - fixes to "Note Entry" section. Also adds a few new examples. - -2002-09-27 Han-Wen Nienhuys - - * flower/include/string-data.icc: include string.h - -2002-09-25 Han-Wen Nienhuys - - * scm/chord-name.scm (chord::inner-name-banter): remove space. - -2002-09-27 Jan Nieuwenhuizen - - * Documentation/user/GNUmakefile (extra-local-help): Add. - - * stepmake/stepmake/www-targets.make (local-help): Add. - -2002-09-26 Han-Wen Nienhuys - - * Documentation/topdocs/INSTALL.texi (Top): recommend binary - packages. - - * Documentation/topdocs/README.texi (Top): building documentation - (not website.) - -2002-09-26 Jan Nieuwenhuizen - - * Documentation/user/refman.itely: - * Documentation/user/tutorial.itely: - * Documentation/user/music-glossary.tely: Merge changes. - - * Documentation/user/glossary.html.in: - * Documentation/index.texi: - * Documentation/header.html.in: Accomodate renaming of glossary. - - * Documentation/user/tutorial.itely: Add some glossary references. - - * Documentation/user/refman.itely: Minor fixes. - - * Documentation/user/lilypond.tely: Add glossary do direntry. - - * Documentation/user/music-glossary.tely: Rename (previously: - glossary.tely). Fix anchor placement. - - * Documentation/user/GNUmakefile: Make music-glossary.info too. - -2002-09-23 Werner Lemberg - - * scripts/lilypond-book.py (output_dict): Fix handling of - various environments by avoid extraneous newlines. - Rename `output-all' regexp for html to `output-html'. - Replace `output-all' regexp for texi with `output-texi-quote' - and `output-texi-noquote'. - (compose_full_body): Don't override `linewidth' user option - for `singleline'. - (schedule_lilypond_block): Don't indent text specified with - `intertext' option. - Add new option `noquote'. - (compile_all_files): Use latex instead of tex to compile ly - files directly. - - * Documentation/user/lilypond-book.itely: Updated and revised. - Improve layout. - - * Documentation/user/glossary.tely, - Documentation/user/introduction.itely, - Documentation/user/tutorial.itely, - Documentation/user/refman.itely, - Documentation/user/appendices.itely: Fix overfull LilyPond - boxes caused by the new lilypond-book code. Other minor - fixes. - - * Documentation/user/macros.itexi (@texiflat): Don't emit - trailing space. - - * scm/tex.scm (end-output, header-end): Add preamble and - postamble to make lilypond output directly compilable with - latex. - - -2002-09-23 Han-Wen Nienhuys - - * Documentation/topdocs/INSTALL.texi (Top): bugfix for RH RPM - instructions. - -2002-09-25 Jan Nieuwenhuizen - - * Documentation/user/glossary.tely: Add titling and hyperlinks. - -2002-09-24 Han-Wen Nienhuys - - * lily/beam.cc (connect_beams): don't crash if there are quarter - notes in beams. - -2002-09-24 Juergen Reuter - - * Documentation/user/refman.itely: corrected ancient clef - docu; added docu on ligatures - -2002-09-21 Juergen Reuter - - * Documentation/user/glossary.tely, - Documentation/user/refman.itely, input/les-nereides.ly, - input/mutopia/W.A.Mozart/mozart-hrn3-defs.ly, - input/test/bagpipe.ly, lily/stem.cc, ly/grace-init.ly, - scm/grob-property-description.scm, scripts/convert-ly.py: renamed - Stem properties: flag-style -> stroke-style, style -> flag-style. - -2002-09-22 Werner Lemberg - - * scripts/lilypond-book.py: Add option `notime' to suppress - printing of a time signature. Specify default indentation of 0pt - if single line fragment. Don't emit redundant `\paper{ }'. - - * Documentation/user/lilypond-book.itely: Updated. - - * Documentation/user/glossary.tely: Completely reformatting. - -2002-09-23 Han-Wen Nienhuys - - * GNUmakefile.in (top-web): generate (possibly empty) examples.html - -2002-09-22 Jan Nieuwenhuizen - - * Documentation/user/tutorial.itely: Fix links. - - * Documentation/topdocs/index.tely: - * Documentation/index.texi: - * Documentation/header.html.in: Small website fixes and updates. - - * debian/: Debian patch by Anthony Fok. - -2002-09-21 Jan Nieuwenhuizen - - * Documentation/footer.html.in: How time flies: It's already 2002! - - * Documentation/topdocs/index.tely: Stable/development fix. Use - more descriptive link names than 'here'. - -2002-10-03 Jan Nieuwenhuizen - - * lily/beam.cc (rest_collision_callback): Fixed: partial rewrite. - -2002-10-02 Han-Wen Nienhuys - - * lily/part-combine-music-iterator.cc (get_state): cleanup - (get_music_info): cleanup. - -2002-10-01 Han-Wen Nienhuys - - * scm/backend-documentation-lib.scm (interface-doc-string): - crosslinks between interfaces and grobs. Headings for interfaces - in grob explanation. - -2002-09-30 Jan Nieuwenhuizen - - * scm/to-xml.scm: Fixes. input/trip.ly now parses as xml (without - dtd). Add preliminary dtd. - (re-sub-alist): Robustify. - -2002-09-29 Han-Wen Nienhuys - - * lily/include/event-chord-iterator.hh, - lily/context-specced-music-iterator.cc, - lily/event.cc, lily/event-chord-iterator.cc: add - -2002-09-29 Jan Nieuwenhuizen - - * lily/: some (c) header fixes. - - * lily/request-chord.cc: Remove. - - * lily/include/event-chord-iterator.hh: - * lily/include/event.hh: - * lily/event-chord.cc: New file. - - * lily/stem-engraver.cc (acknowledge_grob): rename evented back to - requested. - -2002-09-28 Han-Wen Nienhuys - - * lily/ : rename Request to Event - - * lily/parser.yy (command_element): move clef stuff into Scheme. - - * lily/: rename length_mom () to get_length() - - * lily/part-combine-music.cc: removed file and class. - - * lily/context-specced-music-iterator.cc (class - Context_specced_music_iterator): new file. Obsoletes the - Context_specced_music type. - - * scm/music-types.scm (make-repeated-music): put different kinds - of repeated music into music-type table. - - * VERSION: 1.7.1 released. - - * scm/to-xml.scm: new file. - - * input/test/to-xml.ly (fooBar): demo of what is possible with the - new Input representation: dump music as XML. - - * scm/engraver-documentation-lib.scm - (engraver-accepts-music-types?): add links from music to engraver, - from music-type to engraver. - - * lily/include/command-request.hh: removed - lily/include/musical-request.hh: removed. Removed all _req classes - except Key_change_req. Changes throughout. - -2002-09-28 Jan Nieuwenhuizen - - * lily/tuplet-engraver.cc (try_music): Compile kludge. - -2002-09-28 Han-Wen Nienhuys - - * lily/*.cc: specify accepts for many engravers. - - * scm/music-documentation-lib.scm: dump music expressions and - music subtypes. - - * scm/documentation-lib.scm: complete revision. - Use GOOPS objects to store document tree explicitly. Cleaned up and - sped up doco generation a lot. - -2002-09-27 Han-Wen Nienhuys - - * input/trip.ly (fugaIILeft): add arpeggio - - * lily/translator-group.cc (try_music_on_nongroup_children): - oops. The name symbol is in the cdr of the assoc handle. - - * lily/: remove Arpeggio_req, Breathing_sign_req, Extender_req, - Hyphen_req, Glissando_req, Break_req, Mark_req - -2002-09-26 Han-Wen Nienhuys - - * lily/musical-request.cc (music-duration-length, - music-duration-compress): new functions. - - * lily/ : Remove Note_req, Rest_req, Busy_playing_req. Changes - throughout. Warning doesn't work yet. - - * lily/translator-group.cc (try_music_on_nongroup_children): - new implementation: store candidate acceptors in a hashTable. - -2002-09-25 Han-Wen Nienhuys - - * scm/music-types.scm (music-descriptions): change name to - internal-class-name - - * scm/chord-name.scm (chord::inner-name-banter): remove space. - -2002-09-24 Han-Wen Nienhuys - - * lily/beam.cc (connect_beams): don't crash if there are quarter - notes in beams. - -2002-09-24 Juergen Reuter - - * Documentation/user/refman.itely: corrected ancient clef - docu; added docu on ligatures - -2002-09-21 Juergen Reuter - - * Documentation/user/glossary.tely, - Documentation/user/refman.itely, input/les-nereides.ly, - input/mutopia/W.A.Mozart/mozart-hrn3-defs.ly, - input/test/bagpipe.ly, lily/stem.cc, ly/grace-init.ly, - scm/grob-property-description.scm, scripts/convert-ly.py: renamed - Stem properties: flag-style -> stroke-style, style -> flag-style. - -2002-09-24 Han-Wen Nienhuys - - * scm/music-functions.scm (music-separator?): don't use name music - property. - -2002-09-24 Jan Nieuwenhuizen - - * stepmake/stepmake/generic-targets.make (help): Document check - target. - - * lily/new-accidental-engraver.cc: Compile fix. - -2002-09-23 Jan Nieuwenhuizen - - * scripts/convert-ly.py: Add rule. - - * input/test/music-creation.ly: - * input/test/add-staccato.ly: - * input/test/add-text-script.ly: ly-make-music. - - * scm/drums.scm (make-head-type-elem, make-articulation-script): - More ly-make-music renamings. - - * lily/command-request.cc: ADD_MUSIC: arpeggio_req. - - * lily/music-constructor.cc (make_music): Add debugging info. - - * scm/music-functions.scm (make-simultaneous-music, - (make-sequential-music, context-spec-music): - * scm/music-types.scm (music-descriptions): Get lily to run. - -2002-09-23 Han-Wen Nienhuys - - * lily/command-request.cc (transpose_key_alist): new function. - - * lily/key-performer.cc (create_audio_elements): cleanup. - -2002-09-22 Han-Wen Nienhuys - - * lily/parser.yy: remove TYPED_MAKE_MUSIC(). - - * lily/include/translator.hh (ENTER_DESCRIPTION): add - events-accepted field. - - * scm/music-types.scm: new file. - - * lily/parser.yy: put music type initialization into scheme, - similar to grob initialization. Changes throughout. - -2002-09-22 Jan Nieuwenhuizen - - * Documentation/user/tutorial.itely: Fix links. - - * Documentation/index.texi: - * Documentation/header.html.in: - * Documentation/topdocs/index.tely: Small website fixes and updates. - - * debian/: Debian patch by Anthony Fok. - -2002-09-21 Jan Nieuwenhuizen - - * Documentation/footer.html.in: How time flies: It's already 2002! - - * Documentation/topdocs/index.tely: Stable/development fix. Use - more descriptive link names than 'here'. - - * ROADMAP: Remove test stuff. - - * scripts/update-lily.py: Allow auto-building of stable and - development versions. Bugfixes. - -2002-09-21 Han-Wen Nienhuys - - * VERSION: released 1.7.0 - - * scm/tex.scm (header-end): enclose lily output in begingroup/endgroup. - - * tex/lilyponddefs.tex: set hsize for plain tex, but only for - positive line widths. - -2002-09-20 Jan Nieuwenhuizen - - * tex/lilyponddefs.tex: Handle \scoreshift and \outputscale in one - go. Fix comments. - - * cygwin: Cygwin updates. - -2002-09-19 Han-Wen Nienhuys - - * Documentation/windows/installing.texi (Top): version for python, - urls for ghostscript (thanks to John Potelle) - - * lily/simultaneous-music-iterator.cc - (Simultaneous_music_iterator): init children_list_ before - triggering GC. - - * lily/*-iterator.cc: be even more careful with smobbed copy - constructors. - - * lily/break-align-engraver.cc (acknowledge_grob): also typeset - LeftEdge item. - -2002-09-15 Werner Lemberg - - Improving LilyPond's output to make them ordinary TeX boxes with - predictable dimensions. System boxes are now vertically centered on - the baseline; this offset can be further controlled with - \lilypondscoreshift. - - * lily/system.cc (System::post_processing): Pass length of current - system to `start-system' (including any horizontal indentation). - - * scm/tex.scm, scm/pdftex.scm: Make output of various functions - prettier. - (lily-def): Append `%'. - (start-system): Add parameter `wd'. Output more TeX code to specify - box dimensions. - (stop-system, stop-last-system): Complement changes in - `start-system'. - * scm/sketch.scm, scm/ps.scm, scm/pdf.scm, scm/ascii-script.scm: - Updated. - - * scripts/ly2dvi.py (global_latex_definition): Set \parindent to 0. - * buildscripts/mf-to-table.py (write_tex_defs): Append `%'. - Write final `\endinput'. - - * tex/lily-ps-defs.tex, tex/lily-pdf-defs.tex, - tex/lilypond-plaintex.tex, tex/lilypond-latex.tex, - tex/lilyponddefs.tex, tex/titledefs.tex: Reformat code. Assure that - files and macro definitions don't produce spurious spaces and - paragraphs (using \endlinechar). - * tex/lilyponddefs.tex: New dimension `\scoreshift'. - - * Documentation/user/internals.itely: Improved formatting, fixing - typos. Added a section `Output details' to describe how the TeX - code looks like. - -2002-09-17 Rune Zedeler - - * lily/accidental-engraver.cc: Also work with partial measures. - -2002-09-17 Han-Wen Nienhuys - - * lily/text-spanner-engraver.cc: whoops. Set bound in the correct - spanner. - -2002-09-21 Han-Wen Nienhuys - - * lily/identifier-smob.cc (unpack_identifier): new file. - - * lily/lexer.ll (identifier_type): new function. use ly-id to - pass off scheme expressions as music identifiers. - - * scm/lily.scm: reorganisation, cleanups. - - * lily/main.cc: small cleanups. - -2002-09-20 Han-Wen Nienhuys - - * lily/ly-module.{cc,hh}: new file. - -2002-09-17 Rune Zedeler - - * lily/accidental-engraver.cc: Also work with partial measures. - -2002-09-16 Jan Nieuwenhuizen - - * VERSION (PACKAGE_NAME): Remove HEAD trap leftover. - -2002-09-16 Han-Wen Nienhuys - - * lily/my-lily-lexer.cc: use SCM module in stead of - Scheme_hash_table. Changes throughout. - -2002-09-15 Han-Wen Nienhuys - - * VERSION (MY_PATCH_LEVEL): make 1.7.0 - diff --git a/DEDICATION b/DEDICATION deleted file mode 100644 index 3fea9cb98f..0000000000 --- a/DEDICATION +++ /dev/null @@ -1,26 +0,0 @@ - - --- * --- - - We would like to dedicate this program to all the friends that we - met through music. - - - Those deserving special mentioning (in no particular order): -Esther, Marijke, Heike, Inge, Judith, Hannah, Auke, Ilse, Evelyn, -Maartje, Suzanne, Ilse (gee, again?), Marieke, Irene, Martine, Idwine, -Hanna, Lonneke and last (but certainly not least) Janneke! - - HWN - - That's a nice thought, Wendy. I've got a few too, to spread -the credits a bit (Again, no particular order) Michelle, Illushka, -Mieke, Ruth, Eva, Fro/ydis, Monique, Mary Anne, Noor, Sacha, Monique, -Ilse, Monique, Eva, Roos, Judith, Tim, Connie and, of course, Wendy! - - JCN - - -Of course, our other friends in the `Eindhovens Jongeren Ensemble' -(http://www.dse.nl/eje/) cannot go unmentioned either. - - --- * --- diff --git a/Documentation/GNUmakefile b/Documentation/GNUmakefile deleted file mode 100644 index 2fbfeeae17..0000000000 --- a/Documentation/GNUmakefile +++ /dev/null @@ -1,29 +0,0 @@ -depth = .. - -NAME = documentation -SUBDIRS=user bibliography pictures topdocs misc -STEPMAKE_TEMPLATES=documentation texinfo tex -LOCALSTEPMAKE_TEMPLATES=lilypond ly -LILYPOND_BOOK_FLAGS=--extra-options '-e "(ly:set-option (quote internal-type-checking) \#t)"' -README_TOP_FILES= DEDICATION ChangeLog -EXTRA_DIST_FILES= - -include $(depth)/make/stepmake.make - -default: local-doc - -local-WWW: copy-for-me txt-to-html $(outdir)/index.html - -local-WWW-clean: deep-WWW-clean - -deep-WWW-clean: - rm -rf $(outdir)/wiki-dump - -copy-for-me: - $(foreach a, $(README_TOP_FILES), cp ../$(a) $(outdir)/$(a).txt && ) true - -OUT_TXT_FILES = $(addprefix $(outdir)/, $(addsuffix .txt, $(README_TOP_FILES))) - -# cd $(outdir) rule gets bit hairy for --srcdir configure builds -txt-to-html: - $(PYTHON) $(step-bindir)/text2html.py $(OUT_TXT_FILES) diff --git a/Documentation/bibliography/GNUmakefile b/Documentation/bibliography/GNUmakefile deleted file mode 100644 index af96676e1b..0000000000 --- a/Documentation/bibliography/GNUmakefile +++ /dev/null @@ -1,37 +0,0 @@ -# Documentation/tex/Makefile - -depth=../.. - -OUT_BIB_FILES = $(addprefix $(outdir)/, $(BIB_FILES)) -BIB_FILES= $(wildcard *.bib) -EXTRA_DIST_FILES= $(BIB_FILES) $(wildcard *.bst) - -STEPMAKE_TEMPLATES=tex documentation -LOCALSTEPMAKE_TEMPLATES=lilypond ly - -include $(depth)/make/stepmake.make - -dvi: $(DVI_FILES) $(OUT_BIB_FILES) - -ps: $(PS_FILES) - -# urg -default: - -GENHTMLS = engraving colorado computer-notation -OUTGENHTMLS = $(addprefix $(outdir)/, $(GENHTMLS:%=%.html)) - - -local-WWW: $(addprefix $(outdir)/, $(BIB_FILES:.bib=.html)) - $(PYTHON) $(step-bindir)/ls-latex.py --title 'References on Music Notation' \ - $(YO_FILES) $(OUTYO_FILES:.yo=.latex) $(BIB_FILES) $(DOC_FILES) $(TEX_FILES) \ - | sed "s!$(outdir)/!!g" > $(outdir)/index.html - -$(outdir)/%.bib: %.bib - ln -f $< $@ - -$(outdir)/%.html: %.bib - $(PYTHON) $(depth)/buildscripts/bib2html.py -o $@ $< - -local-clean: - rm -f fonts.aux fonts.log feta*.tfm feta*.*pk diff --git a/Documentation/bibliography/colorado.bib b/Documentation/bibliography/colorado.bib deleted file mode 100644 index f72fa189d8..0000000000 --- a/Documentation/bibliography/colorado.bib +++ /dev/null @@ -1,524 +0,0 @@ -% -% TITLE=University of Colorado Engraving music bibliography -% AUTHOR=Alyssa Lamb (edited & converted to bibtex by HWN) -% - -@Book {jacob47:_music, - author ={Jacob, Archibald}, - year=1947, - title = {Musical handwriting : or, How to put music on paper : A handbook for all musicians, professional and amateur}, - address ={London}, - publisher ={Oxford University Press}, - note = {subject: Musical notation}, -} - -@Book{brandt:_stand_chord_symbol_notat, - author ={Carl Brandt and Clinton Roemer}, - title = {Standardized Chord Symbol Notation}, - address={Sherman Oaks, CA}, - publisher={Roerick Music Co.}, - note ={subject: musical notation}, -} - -@Book{johnson46:_how, - author = {Johnson, Harold M}, - year = 1946, - title = {How to write music manuscript an exercise-method handbook for the music student, copyist, arranger, composer, teacher}, - publisher={Carl Fischer, Inc.}, - address= {New York}, - note = {subject: Musical notation --Handbooks, manuals}, -} - -@Book{sadie90:_music_print_publis, - title = {Music Printing & Publishing}, - author ={Donald W. Krummel \& Stanley Sadie}, - year = 1990, - publisher= {Macmillan Press}, - note ={subject: musical notation}, -} - -@Book{foss:_music_print, - author={Foss, Hubert}, - title = {Music Printing}, - series = {Practical Printing and Binding}, - address={London}, - publisher={Oldhams Press Ltd., Long Acre}, - note ={subject: musical notation}, -} - -@Book{steele03:_earlies_englis_music_print, - author = {Steele, Robert}, - year = 1903, - title = {The Earliest English Music Printing}, - address={London}, - note= {subject: history of music printing and engraving}, -} - -@Book{austin:_story_music_print, - author={Austin, Ernest}, - title = {The Story of Music Printing}, - address={London}, - publisher={Lowe and Brydone Printers, Ltd.}, - note= {subject: history of music printing and engraving}, - -} - - - -@Book{?:_pictor_histor_music_print, - author={?}, - title = {Pictoral History of Music Printing}, - address={Elhardt, Indiana}, - publisher={H. and A. Selmer, Inc.}, - note= {subject: history of music printing and engraving}, - -} - -@Book{wintermitz55:_music_autog_montev_hindem, - author = {Wintermitz, Emmanuel}, - year = 1955, - title = {Musical Autographs from Monteverdi to Hindemith}, - address={Princeton}, - publisher={Princeton University Press}, - note= {subject: history of music printing and engraving}, - -} - - -@Book{novello47:_some_accoun_method_music_print, - - author = {Novello, A}, - year = 1847, - title = {Some Account of the Methods of Musick Printing, with Specimens of the Various Sizes of Moveable Types and of Other Matters}, - address={London}, - note={ subject: history of music printing and engraving}, -} - -@Book{chrsander18:_sketc_histor_music, - author={Chrsander, F.}, - year={18??}, - title={A Sketch of the HIstory of Music printing, from the 15th to the 16th century}, - note={ subject: history of music printing and engraving}, -} - -@Article {squire1897, - author = {Squire, W}, - year = 1897, - title = {Notes on Early Music Printing}, - journal = {Bibliographica}, - volume={iii}, - number=99, - note={ subject: history of music printing and engraving}, - -} - -@Article{meyer35:_print_music, - author = {Meyer, K. and O'Meara, J}, - year = 1935, - title = {The Printing of Music, 1473-1934}, - journal = {The Dolphin}, - volume={ ii}, - pages={ 171--207}, - note={ subject: history of music printing and engraving}, - -} -%% 4th ver., -@Article{pattison39:_notes_early_music_print, - author = {Pattison, B}, - year = 1939, - title = {Notes on Early Music Printing}, - journal = {The Library}, - note={subject: history of music printing and engraving}, - volume={xix}, - pages={389-421}, -} - -@Book{king64:_four_hundr_years_music_print, - author = {King, H}, - year = 1964, - title = {Four Hundred Years of Music Printing}, - address={London}, - note={ subject: history of music printing and engraving}, -} - - -%(Rev.1961). -@Book{deutsch46:_music_number, - author={Deutsch, O.F.}, - year =1946, - title = {Music Publishers' Numbers}, - address={London}, - note={ subject: history of music printing and engraving}, -} - -@Book{marco62:_earlies_music_print_contin_europ, - author = {Marco, G.A}, - year = 1962, - title = {The Earliest Music Printers of Continental Europe: a Checklist of Facsimiles Illustrating Their Work}, - address={Charlottesville, Virginia}, - note={ subject: history of music printing and engraving}, -} - -@Article{kinkeldey32:_music_and_music_print_incun, - author = {Kinkeldey, O}, - year = 1932, - title = {Music And Music Printing in Incunabula}, - journal = {Papers of the Bibliographical Society of America}, - volume={ xxvi}, - pages={89-118}, - note={ subject: history of music printing and engraving}, -} - -@Book{oldman34:_collec_music_first_edition, - author = {Oldman, C.B}, - year = 1934, - title = {Collecting Musical First Editions}, - address={London}, - note={ subject: history of music printing and engraving}, -} - -@Book{carter34:_new_paths_book_collec, - author={Carter, J}, - year=1934, - title = {New Paths in Book Collecting}, - address={London}, - note={ subject: history of music printing and engraving}, -} - -@Book{krummel58:_graph_analy_applic_early_americ_engrav_music, - author={Krummel, D.W.}, - year=1958, - month=9, - title = {Graphic Analysis in Application to Early American Engraved Music}, - journal = {Notes}, - volume={xvi}, - pages=213, - note={ subject: history of music printing and engraving}, -} - -@Book{krummel71:_oblon_format_early_music_books, - author = {Krummel, D.W}, - year = 1971, - title = {Oblong Format in Early Music Books}, - journal = {The Library}, - volume={5th ser., xxvi}, - pages=312, - note={ subject: history of music printing and engraving}, -} - -@Book{king73:_anniv_music_print, - author = {King, A.H}, - year = 1973, - title = {The 50th Anniversary of Music Printing}, -} - -@Book{rastall82:_wester, - author={Rastall, Richard}, - year=1982, - title = {The notation of Western music : an introduction}, - address={New York, N.Y.}, - publisher={St. Martin's Press}, - note = {Musical notation}, - - -} - -@Book{tappolet47:_la_notat_music, - author = {Tappolet, Willy}, - year = 1947, - title = {La Notation Musicale}, - address={Paris}, - note={subject: general notation}, - publisher={Neuch\^atel}, -} - -@Book{williams03:_story_notat, - author = {Williams, C.F. Abdy}, - year = 1903, - title = {The Story of Notation}, - address={New York}, - publisher={Charles Scribner's Sons}, - note={subject: general notation}, -} - -@Book{apel53, - author={Apel, Willi}, - year=1953, - title = {The notation of polyphonic music, 900-1600}, - address={Cambridge, Mass}, - institution={Mediaeval Academy of America}, - note = {Musical notation}, -} - -@Book{berger93:_mensur, - author={Berger, Anna Maria Busse}, - year=1993, - title = {Mensuration and proportion signs : origins and evolution}, - address={Oxford, England}, - publisher={Clarendon Press}, - scnd_address={New York}, - scnd_publisher={Oxford University Press }, - note={subject: early notation}, -} - -@Book{parrish57, - author={Parrish, Carl}, - year=1957, - title = {The notation of medieval music}, - address={New York}, - publisher={Norton}, - note = {Musical notation}, - - -} - -@Book{parrish46:_notat_mediev_music, - author = {Parrish, Carl}, - year = 1946, - title = {The Notation of Medieval Music}, - address={New York}, - publisher={Carl Fischer, Inc.}, - note={subject: early notation}, -} - -@Book{patch49:_genes_music, - author = {Patch, Harry}, - year = 1949, - title = {Genesis of a Music}, - address={Madison}, - publisher={University of Wisconsin Press}, - note={subject: early notation}, -} - -@Book{cage69:_notat, - author={Cage, John}, - year=1969, - title = {Notations}, - address={New York}, - publisher={Something Else Press}, - note = {Music, Manuscripts, Facsimiles. - - Facsimiles of holographs from the Foundation for Contemporary - Performance Arts, with text by 269 composers, but rearranged using - chance operations.,V)} }, - -@Book{gaburo77:_notat, - author = {Gaburo, Virginia}, - year = 1977, - title = {Notation}, - address={publisher= {Lingua Press}, - publisher={La Jolla, California}}, - note = {A Lecture about notation, new ideas about}, -} - -@Book{risatti75:_new_music_vocab, - author = {Risatti, Howard}, - year = 1975, - title = {New Music Vocabulary}, - address={Urbana, Illinois}, - publisher={University of Illinois Press}, - note = {A Guide to Notational Signs for Contemporary Music}, -} - - - -@Book{cowell30:_new_music_resour, - author = {Cowell, Henry}, - year = 1930, - title = {New Musical Resources}, - address={New York}, - publisher={Alfred A. Knopf, Inc.}, - note={subject: 20th century notation}, -} - -@Article{cowell27:_our_inadeq_notat, - author = {Cowell, Henry}, - year = 1927, - title = {Our Inadequate Notation}, - journal = {Modern Music}, - volume=4, - number=3, - note={subject: 20th century notation}, - -} - -@Book{bowers92:_music_letter, - author = {Bowers, Roger}, - year = 1992, - title = {Music & Letters}, - volume=73, - number=3, - month={August}, - pages={347(52)}, - note={Some reflection upon notation and proportion in Monteverdi's mass and vespers}, -} - -@Book{brainard92:_curren_music, - author = {Brainard, Paul}, - year = 1992, - title = {Current Musicology}, - number=50, - month={July-Dec}, - pages={21(26)}, - note={Proportional notation in the music of Schutz and his contemporaries in the 17th Century}, -} - -@Book{monelle89:_compar_liter, - author = {Monelle, Raymond}, - year = 1989, - title = {Comparative Literature}, - volume=41, number=3, - month={Summer}, - pages={252(18)}, - - note={Music notation and the poetic foot}, -} - -@Book{pinegar93:_curren_music, - author = {Pinegar, Sandra}, - year = 1993, - title = {Current Musicology}, - number=53, - month={July}, - pages={99(10)}, - note={The seeds of notation and music paleography.}, -} - -@Book{smith90:_curren_music, - author = {Smith, Norman E}, - year = 1990, - title = {Current Musicology}, - number={45-47}, - month={Jan-Dec}, - pages={283(22)}, - note={The notation of fractio modi.}, -} - -@Book{treitler92:_journ_music, - author = {Treitler, Leo}, - year = 1992, - title = {The Journal of Musicology}, - volume=10, - number=2, - month={Spring}, - pages={131(61)}, - - note={ The unwritten and written transmission, of medieval chant - and the start-up of musical notation. - - Notational practice developed in medieval music to address the written tradition for chant which interacted with the unwritten vocal tradition.}, -} - -@Book{west94:_music_letter, - author = {West, M.L}, - year = 1994, - title = {Music & Letters}, - volume=75, - number=2, - month={May}, - pages={161(19)}, - note={The Babylonian musical notation and the Hurrian melodic texts. - - A new way of deciphering the ancient Babylonian musical notation. -} -} - -@Book{brown86:_music_quart, - author = {Brown, Earle}, - year = 1986, - title = {Musical Quarterly}, - volume=72, - month={Spring}, - pages={180(22)}, - note={The notation and performance of new music.}, -} - -@Book{eggleston94:_notes, - author = {Eggleston, Suzanne}, - year = 1994, - title = {Notes}, - volume=51, - number=2, - month={Dec}, - pages={657(7)}, - journal={New periodicals}, - note={A list of new music periodicals covering the period - Jun.-Dec. 1994. Includes aims, formats and a description of the - contents of each listed periodical. Includes Music Notation News}, - -} - -@Book{fuller89:_journ_music, - author = {Fuller, David}, - year = 1989, - title = {The Journal of Musicology}, - volume=7, - number=1, - month={Winter}, - pages={21(8)}, - note={ - Notes and inegales unjoined: defending a definition. (written-out inequalities in music notation). -}}, - -@Book{jones90:_persp_new_music, - - author = {Jones, David Evan}, - year = 1990, - title = {Perspectives of New Music}, - note={Speech extrapolated. (includes notation)} -} - -@Book{lependorf89, - author = {Lependorf, Jeffrey}, - year = 1989, - journal={Perspectives of New Music}, - volume=27, - title = {?}, - number=2, - month={Summer}, - pages={232(20)}, - note={Contemporary notation for the shakuhachi: a primer for composers. (Tradition and Renewal in the Music of Japan) }, - -} - -@Book{rastall93:_music_letter, - author = {Rastall, Richard}, - year = 1993, - title = {Music & Letters}, - volume=74, number=4, - month={November}, - pages={639(2)}, - - note={Equal Temperament Music Notation: The Ailler-Brennink - Chromatic Notation. Results and Conclusions of the Music Notation - Refor by the Chroma Foundation (book reviews). }, -} - -@Article {Francois92, - author={Francois, Jean-Charles}, - journal = {Perspectives of New Music}, - volume={30}, - number={1}, month={Winter}, - pages={6(15)}, - year={1992}, - - note={subject: Modern music has outgrown notation. While the - computer is used to write down music with accuracy never - before achieved, the range of modern sounds has surpassed - the relevance of the computer...}, - - title={Writing without representation, and unreadable notation.}, -} - -@Book{hamel89, - author = {Hamel, Keith A}, - year = 1989, - journal = {Perspectives of New Music}, - volume=27, - number=1, - month={Winter}, - pages={70(14)}, - - title={A design for music editing and printing software based -on notational syntax}, } - diff --git a/Documentation/bibliography/computer-notation.bib b/Documentation/bibliography/computer-notation.bib deleted file mode 100644 index ec4b3fdc93..0000000000 --- a/Documentation/bibliography/computer-notation.bib +++ /dev/null @@ -1,777 +0,0 @@ -% -% TITLE=The music notation with computer bibliography -% AUTHOR=Han-Wen Nienhuys -% - -@String{CitH = {Computing and the Humanities}} -@String{CMJ = {Computer Music Journal}} - - - -@Book {smith73, - year = {1973}, - title = {Editing and Printing Music by Computer}, - author = {Leland Smith}, - totalentry = {Journal of Music Theory}, - volume={17}, - pages ={292-309}, - - note = {Gourlay\cite{gourlay86} writes: A discussion of Smith's -music-printing system SCORE} - -} - -@Article {byrd74, - year = {1974}, - title = {A System for Music Printing by Computer}, - author = {Donald Byrd}, - journal = {Computers and the Humanities}, - volume ={8}, - pages ={161-72}, -} - - -@Article{ericson75, - author = {R. F. Ericson}, - title = {The DARMS Project: A status report}, - journal = {Computing in the humanities}, - year = 1975, - volume = 9, - number = 6, - pages = {291--298}, - note = {Gourlay\cite{gourlay86} writes: A discussion of the design - and potential uses of the DARMS music-description language.} -} - -% Gomberg -@PhdThesis {gomber75, - year = {1975}, - title = {A Computer-Oriented System for Music Printing}, - author = {David A. Gomberg}, - school = {Washington University}, -} - -@Book {gomberg, - title = {A Computer-oriented System for Music Printing}, - author = {David A. Gomberg}, - journal = CitH, - volume={11}, - month = {march}, - year = {1977}, - pages = {63-80}, - - note = {Gourlay \cite{gourlay86} writes: "A discussion of the - problems of representing the conventions of musical notation in - computer algorithms."} -} - - -@TechReport{Ornstein83, - author={Ornstein, Severo M. and John Turner Maxwell III}, - title={Mockingbird: A Composer's Amanuensis}, - institution={Xerox Palo Alto Research Center}, - address={3333 Coyote Hill Road, Palo Alto, CA, 94304}, - number={CSL-83-2}, - month={January}, - year={1983} -} - -@Article{Ornstein84, - author={Ornstein, Severo M. and John Turner Maxwell III}, - title={Mockingbird: A Composer's Amanuensis}, - journal= {Byte}, - volume= 9, - month = {January}, - year= { 1984}, - - note={A discussion of an interactive and graphical computer system -for music composition} - -} - -% byrd -@PhdThesis {byrd85, - year = {1985}, - title = {Music Notation by Computer}, - author = {Donald Byrd}, - school = {Indiana University}, - - note = {Describes the SMUT (sic) system for automated music printout.} -} - -@InProceedings{assayaag86, - author = {G. Assayaag and D. Timis}, - title = {A Toolbox for music notation}, - booktitle = {Proceedings of the 1986 International Computer Music Conference}, - year = 1986 -} - -@TechReport{roush88, - year = {1988}, - title = {Music Formatting Guidelines}, - author = {D. Roush}, - number = {OSU-CISRC-3/88-TR10}, - institution = {Department of Computer and Information Science, The Ohio State University}, - - note = {Rules on formatting music formulated for use in - computers. Mainly distilled from [Ross] HWN}, - -} - - -@Article{byrd94, - author = {Donald Byrd}, - title = {Music Notation Software and Intelligence}, - journal = {Computer Music Journal}, -year = 1994, -pages = {17--20}, - volume = 18, - number = 1, - - note = {Byrd (author of Nightinggale) shows four problematic -fragments of notation, and rants about notation programs that try to -exhibit intelligent behaviour. HWN} -} - - -@Article{field-richards93, - author = {H.S. Field-Richards}, - title = {Cadenza: A Music Description Language}, - journal = CMJ, - year = 1993, - volume = 17, - number = 4, - - note = {A description through examples of a music entry language. -Apparently it has no formal semantics. There is also no -implementation of notation convertor. HWN} - -} - -@Article{bielawa93, - author = {Herbert Bielawa}, - title = {Review of Sibelius 7}, - journal = CMJ, - year = {1993?}, - - note = {A raving review/tutorial of Sibelius 7 for Acorn. (And did -they seriously program a RISC chip in ... assembler ?!) HWN} - - -} - -@Article{sloan93, - author = {Donald Sloan}, - title = {Aspects of Music Representation in HyTime/SMDL}, - journal = CMJ, - year = 1993, - volume = 17, - number = 4, - -note = {An introduction into HyTime and its score description variant -SMDL. With a short example that is quite lengthy in SMDL} - -} - -@Article{wiggins93, - author = {Geraint Wiggins and Eduardo Miranda and Alaaaan Smaill and Mitch Harris}, - title = {A Framework for the evaluation of music representation systems}, - journal = CMJ, - year = 1993, - volume = 17, - number = 3, - - note = {A categorisation of music representation systems (languages, -OO systems etc) splitted into high level and low level expressiveness. -The discussion of Charm and parallel processing for music -representation is rather vague. HWN} - -} - - - -@Article{dannenberg93, - author = {Roger B. Dannenberg}, - title = {Music Representation: Issues, Techniques, and Systems}, - journal = CMJ, - year = 1993, - volume = 17, - number = 3, - url = {http://citeseer.nj.nec.com/52890.html}, - - note = {This article points to some problems and solutions with music -representation. HWN}, - -} - -@Article{rothstein93, - author = {Joseph Rothstein}, - title = {Review of Passport Designs' Encore Music Notation Software}, - journal = CMJ, - year = {?}, - - -} - - - -@Article{belkin94, - author = {Alan Belkin}, - title = {Macintosh Notation Software: Present and Future}, - journal = CMJ, - year = 1994, - volume = 18, - number = 1, - - note = {Some music notation systems are analysed for ease of use, - MIDI handling. The article ends with a plea for a standard notation - format. HWN}, - -} - -@InProceedings{montel97, - author = {Dominique Montel}, - title = {La gravure de la musique, lisibilit\'e esth\'etique, respect de l'oevre}, - booktitle = {Musique \& Notations}, - year = 1997, - address={Lyon}, - editors ={Genevois \& Orlarey} -} - - - - -@Book {CASR, - note = {Annual editions since 1985, many containing surveys of music typesetting technology. SP}, - title = {Directory of Computer Assisted Research in Musicology}, - author = {Walter B Hewlett and Eleanor Selfridge-Field}, - totalentry = {Menlo Park, CA: Center for Computer Assisted Research in the Humanities}, -} - - -@Book{selfridge-field97:_beyon_midi, - title = {Beyond MIDI: the handbook of musical codes}, - editor = {Eleanor Selfridge-Field}, - publisher = {MIT Press}, - year = 1997, - - note = {A description of various music interchange formats.} -} - - -@InProceedings{hoos98:_guido_music_notat_format, -title={The {GUIDO} Music Notation Format---A Novel Approach -for Adequately Representing Score-level Music}, -author = {H. H. Hoos and K. A. Hamel and K. Renz and J. Kilian}, -booktitle = {Proceedings of International Computer Music Conference}, -year = 1998, -pages = {451--454}, -} - -@Article {blostein91, - - note = {This paper provides a overview of the algorithm used in LIME - for spacing individual lines. HWN}, - - year = {1991}, - title = {Justification of Printed Music}, - author = {Dorothea Blostein and Lippold Haken}, - journal = {Communications of the ACM}, - volume= {J34}, - number= {3}, - month= {March}, - pages = {88-99}, -} - - -@Article {haken93, - note = {A description of Lime internals (which resemble older (before 0.0.68pre) LilyPond data structures) HWN}, - year = {1993}, - title = {The Tilia Music Representation: Extensibility, Abstraction, and Notation Contexts for the Lime Music Editor}, - author = {Lippold Haken and Dorothea Blostein}, - journal = {Computer Music Journal}, - volume= {17}, - number={3}, - pages = {43--58}, -} -@Article{blostein94, - author = {Dorothea Blostein and Lippold Haken}, - title = {The Lime Music Editor: A Diagram Editor Involving Complex - Translations}, - journal = {Software Practice and Experience}, - year = {1994}, - volume = {24}, - number = {3}, - month = {march}, - pages = {289--306}, - - note = {A description of various conversions, decisions and issues -relating to this interactive editor HWN}, - -} - - - -@InProceedings{haken95, - year = {1995}, - title = {A New Algorithm for Horizontal Spacing of Printed Music}, - author = {Lippold Haken and Dorothea Blostein}, - booktitle = {International Computer Music Conference}, - address={Banff}, - month={Sept}, - pages = {118-119}, - - note = {This describes an algorithm which uses springs between -adjacent columns. }, } - - -@InProceedings{bouzaiene98:_une, - author = {Nabil Bouzaiene and Lo\"ic Le Gall and Emmanuel Saint-James}, - title = {Une biblioth\`eque pour la notation musicale baroque}, - booktitle = {EP '98}, - year = 1998, - series = {LNCS}, - - note = {Describes ATYS, an extension to Berlioz, that can mimick - handwritten baroque style beams} -} - - - - -@InProceedings{balaban88, - author = {M. Balaban}, - title = {A Music Workstation Based on Multiple Hierarchical Views of Music}, - booktitle = {Proceedings of the 1988 International Computer Music Conference}, - year = 1988, - address = {San Francisco}, - organization = {International Computer Music Association} -} - -% -% MusiCopy -% -@TechReport {gourlay87-spacing, -annote = {Algorithm for generating spacing in one line of (polyphonic) music, tailored for use with MusiCopy. LilyPond uses a variant of it.}, - year = {1987}, - title = {Spacing a Line of Music,}, - author = {John S. Gourlay}, - number = {OSU-CISRC-10/87-TR35}, - institution ={Department of Computer and Information Science, The Ohio State University}, -} - - -@TechReport {parish87, - annote = {A brief overview of {MusiCopy}}, - year = {1987}, - title = {{MusiCopy}: An automated Music Formatting System}, - author = {Allen Parish and Wael A. Hegazy and John S. Gourlay and Dean K. Roush and F. Javier Sola}, - totalentry = {OSU-CISRC-10/87-TR29}, - institution ={Department of Computer and Information Science, The Ohio State University}, -} - - -@TechReport {gourlay87-formatting, - note = {This paper discusses the development of algorithms for the -formatting of musical scores (from abstract). It also appeared at -PROTEXT III, Ireland 1986}, - - year = {1987}, - title = {Computer Formatting of Music}, - author = {John S. Gourlay and A. Parrish -and D. Roush and F. Sola and Y. Tien}, - number = {OSU-CISRC-2/87-TR3}, - institution ={Department of Computer and Information Science, -The Ohio State University}, -} - - -@TechReport {hegazy87, - year = {1987}, - title = {On the Implementation of the {MusiCopy} Language Processor,}, - - author = {Wael A. Hegazy}, - number = {OSU-CISRC-10/87-TR34}, - institution={Department of Computer and Information Science, The Ohio State University}, - - note = {Describes the "parser" which converts {MusiCopy} MDL to - MusiCopy Simultaneities and columns. - -MDL is short for Music Description Language\cite{gourlay86}. It -accepts music descriptions that are organised into measures filled -with voices, which are filled with notes. The measures can be arranged -simultaneously or sequentially. To address the 2-dimensionality, -almost all constructs in MDL must be labeled. - -MDL uses begin/end markers for attribute values and spanners. -Rightfully the author concludes that MusiCopy must administrate a -"state" variable containing both properties and current spanning symbols. - -MusiCopy attaches graphic information to the objects constructed in -the input: the elements of the input are partially complete graphic -objects. - -}, - -} - - -@TechReport {hegazy87-breaking-tr, - -annote = {This generalizes \TeX's breaking algorithm to music. It also -appeared in Document Manipulation and Typography, J.C. van Vliet (ed) -1988}, - - year = {1987}, - - title = {Optimal line breaking in music}, - author = {Wael A. Hegazy and John S. Gourlay}, - number = {OSU-CISRC-8/87-TR33}, - institution={Department of Computer and Information Science, The Ohio State University,}, -} - -@InProceedings{hegazy88:_optim, - author = {Wael A. Hegazy and John S. Gourlay}, -booktitle = {Proceedings of the International Conference on -Electronic Publishing, Document Manipulation and Typography. Nice (France)}, -month = {April}, -year =1988, -editor={J. C. van Vliet}, -publisher = {Cambridge University Press}, -ISBN={0-521-36294-6}, - title = {Optimal line breaking in music}, -} - - -@TechReport {roush87, - note = {User manual of MusiCopy. }, - - year = {1987}, - title = {Using {MusiCopy}}, - author = {Dean K. Roush}, - number = {OSU-CISRC-18/87-TR31}, - institution={Department of Computer and Information Science, The Ohio State University}, -} - - -@TechReport {parrish87-simultaneities, - -note = {This note discusses - placement of balls, stems, dots which occur at the same moment - ("Simultaneity")}, - - year = {1987}, - title = {Computer Formatting of Musical Simultaneities,}, - author = {A. Parrish and John S. Gourlay}, - institution={Department of Computer and Information Science, The Ohio State University}, - number = {OSU-CISRC-10/87-TR28}, -} - - -@TechReport {sola87, - note = {Overview of a procedure for generating slurs}, - year = {1987}, - title = {Computer Design of Musical Slurs, Ties and Phrase Marks,}, - author = {F. Sola}, - institution={Department of Computer and Information Science, The Ohio State University}, - number = {OSU-CISRC-10/87-TR32}, -} - - -@Article {gourlay86, - note = {This paper describes the {MusiCopy} musicsetting system and an input language to go with it.}, - - year = {1986}, - title = {A language for music printing}, - author = {John. S. Gourlay}, - journal = {Communications of the ACM}, - volume= {29}, - number ={5}, - pages = {388--401}, -} - - -@TechReport {sola87-beams, - -institution={Department of Computer and Information Science, The Ohio -State University}, - - note = {Calculating beam slopes HWN}, - year = {1987}, - title = {Design of Musical Beams,}, - author = {F. Sola and D. Roush}, - number = {OSU-CISRC-10/87-TR30}, -} - - -@PhdThesis {page88, - note = {Don't ask Stephen for a copy. Write to the Bodleian Library, Oxford, or to the British Library, instead. SP}, - year = {1988}, - title = {Computer Tools for Music Information Retrieval}, - author = {Stephen Dowland Page}, - school ={Dissertation University of Oxford}, -} - - -% -% three part study by John Gr/over -@TechReport{grover89-symbols, - author = {John Gr\/over}, - title = {A computer-oriented description of Music Notation. Part I. The Symbol Inventory}, - institution = {Department of informatics, University of Oslo}, - year = 1989, - number = 133, - -note = {The goal of this series of reports is a full description of -music formatting. As these largely depend on parameters of fonts, it -starts with a verbose description of music symbols. - - The subject is treated backwards: from general rules of typesetting -the author tries to extract dimensions for characters, whereas the -rules of typesetting (in a particular font) follow from the dimensions -of the symbols. His symbols do not match (the stringent) constraints -formulated by eg. \cite{wanske}} } - -@TechReport{grover89-twovoices, - author = {John Gr\/over}, - title = {A computer-oriented description of Music Notation. Part II: Two Voice Sharing a Staff, Leger Line Rules, Dot Positioning}, - - institution = {Department of informatics, University of Oslo}, - year = 1989, - number = 134, - - note = {A lot rules for what is in the title are formulated. The -descriptions are long and verbose. The verbosity shows that -formulating specific rules is not the proper way to approach the -problem. Instead, the formulated rules should follow from more -general rules, similar to\cite{parrish87-simultaneities}}, -} - -@TechReport{grover89-accidentals, - author = {John Gr\/over}, - title = {A computer-oriented description of Music Notation. Part III: Accidental Positioning}, - institution = {Department of informatics, University of Oslo}, - year = 1989, - number = 135, - -note = {Placement of accidentals crystallised in an enormous set of -rules. Same remarks as for \cite{grover89-twovoices} applies} } - - -@PhdThesis{mueller90:_inter_bearb_musik, - author = {Giovanni M\"uller}, - title = {Interaktive Bearbeitung konventioneller Musiknotation}, - school = {Eidgen\"ossischen Technischen Hochschule Z\"urich}, - year = 1990, - -note = {This is about engraver-quality typesetting with computers. It -accepts the axiom that notation is too difficult to generate -automatically. The result is that a notation program should be a -WYSIWYG editor that allows one to tweak everything. -} - -} - - - - - -@MastersThesis{roelofs91, - -note = {This dutch thesis describes a monophonic typesetting system, - and focuses on the breaking algorithm, which is taken from Hegazy & - Gourlay }, - - year = {1991}, - title = {Een Geautomatiseerd Systeem voor het Afdrukken van Muziek}, - author = {Ren\'e Roelofs}, - school={Erasmus Universiteit Rotterdam}, - number={45327}, - translation = {``An automated system for printing music'' Master's Thesis Managerial Computer Science.}, -} - - -@Article {filgueiras93, - year = {1993}, - title = {Representation and manipulation of music documents in SceX}, - author = {Miguel Filgueiras and Jos\'e Paulo Leal}, - journal= {Electronic Publishing}, - volume={6}, - number={4}, pages = {507--518}, - url={http://citeseer.nj.nec.com/512957.html}, -} - - -@Article {foxley87, - -note = {A paper on a simple TROFF preprocessor to typeset music. }, - - year = {1987}, - title = {Music --- A language for typesetting music scores}, - author = {Eric Foxley}, - journal = {Software --- Practice and Experience}, - volume = {17}, - number = {8}, - pages = {485-502}, -} - -@Article {Langston90, - - note = {This paper deals with some command-line - tools for music editing and playback. }, - - year = {1990}, - title = {Unix music tools at Bellcore}, - author = {Peter S. Langston}, - journal={Software --- Practice and Experience}, - volume={20}, - number={S1}, - pages={47--61}, -} - - -@Book {filgueiras96, - year = {1996}, - title = {Implementing a Symbolic Music Processing System}, - author = {Miguel Filgueiras}, - totalentry = {LIACC, Universidade do Porto, 1996; submitted}, -} - -@Book {filgueiras?, - title = {Some Music Typesetting Algorithms}, - author = {Miguel Filgueiras}, - totalentry = {Miguel Filgueiras. ``Some Music Typesetting Algorithms''. LIACC, Universidade do Porto, forthcoming}, -} - - -@Article {colorado-web, - author ={Alyssa Lamb}, - - note = {Webpages about engraving (designed with finale -users in mind) (sic) HWN}, - - institution = {The University of Colorado}, - title ={The University of Colorado Music Engraving page.}, - HTML={http://www.cc.colorado.edu/Dept/MU/Musicpress/}, - year={1996} -} - - - - - -@Article {tablature-web, - note = {FAQ (with answers) about TAB, the ASCII variant of Tablature. HWN}, - title = {how to read and write tab: a guide to tab notation}, - author = {Howard Wright}, - email={Howard.Wright@ed.ac.uk}, - url={http://www.guitartabs.cc/tabfaq.shtml}, -} - -@Article {niff-web, - - note = {Specs for NIFF, a reasonably comprehensive but binary - format for notation HWN}, - - year = {1995}, - title = {NIFF6a Notation Interchange File Format}, - author = {Cindy Grande}, - publisher={Grande Software Inc.}, - HTML= {http://www.jtauber.com/music/encoding/niff/}, - ftp = {ftp://blackbox.cartah.washington.edu} -} - -@Article {smdl-web, - title = {SMDL, Standard Musical Description Language}, - pdf= {ftp://ftp.ornl.gov/pub/sgml/wg8/smdl/10743.pdf}, - number={ISO/IEC DIS 10743}, - year = {1992} - annote = {SGML instance for describing music. Very comprehensive in music -definition, but no support for notation / performance whatsoever (They -basically say: "You can embed a NIFF or MIDI file")} - -}, -} - - -@Article {rader96, - - note = {Describes a system called MusicEase, and explains that it - uses "constraints" (which go unexplained) to automatically position - various elements. }, - - year = {1996}, - title = {Creating Printed Music Automatically}, - author = {Gary M. Rader}, - journal = {Computer}, - volume={29}, - number={6}, - month={June}, - pages = {61--69}, -} - - -@MastersThesis{gall97:_creat, - author = {Lo\"ic Le Gall}, - title = {Cr\'eation d'une police adapt\'ee \`a la notation musicale baroque}, - school = {\'Ecole Estienne}, - year = 1997, -} - -@TechReport{droettboom00:_study_notat_descr_languag, - author = {Michael Droettboom}, - title = {Study of music Notation Description Languages}, - year = 2000, - url= {http://gigue.peabody.jhu.edu/~mdboom/format.pdf}, - - note ={GUIDO and lilypond compared. LilyPond wins on practical -issues as usability and availability of tools, GUIDO wins on -implementation simplicity.} } - -@PhdThesis{gieseking01:_code_gener_noten, - author = {Martin Gieseking}, - title = {Code-basierte Generierung interaktiver Notengraphik - -}, - school = {Universit\"at Osnabr\"uck}, - year = 2001, - isbn = {ISBN 3-923486-30-8} -} - -@Book{hewlett01:_virtual_score, - editor = {Walter B. Hewlett and Eleanor Selfridge-Field}, - title = {The Virtual Score; representation, retrieval and restoration}, - publisher = {MIT Press}, -series = {Computing in Musicology}, - year = 2001 -} - - - -@PhdThesis{renz02:_algor_guido, - author = {Kai Renz}, - title = {Algorithms and data structures for a music notation system based on GUIDO music notation}, - school = {Universit\"at Darmstadt}, - year = 2002 -} - -@InBook{powell02:_music, - author = {Steven Powell}, - title = {Music engraving today}, - publisher = {Brichtmark}, - year = 2002, - - note = {A "How Steven uses Finale" manual.} -} - - -@InProceedings{nienhuys03:_lilyp, - author = {Han-Wen Nienhuys and Jan Nieuwenhuizen}, - title = {LilyPond, a system for automated music engraving}, - booktitle = {XIV Colloquium on Musical Informatics}, - year = 2003, - pages = {167--172}, - address = {Firenze}, - month = {May} -} - diff --git a/Documentation/bibliography/engraving.bib b/Documentation/bibliography/engraving.bib deleted file mode 100644 index 0209a87ffd..0000000000 --- a/Documentation/bibliography/engraving.bib +++ /dev/null @@ -1,355 +0,0 @@ -% -% TITLE=The engraving bibliography -% AUTHOR=Han-Wen Nienhuys -% - - -@Book{banter, - author = {Harald Banter}, - title = {Akkord Lexikon}, - publisher = {Schott's S\"ohne}, - year = {1987}, - isbn = {ISBN 3-7957-2095-8}, - note = {Comprehensive overview of commonly used - chords. Suggests (and uses) a unification for all different kinds - of chord names.}, - address = {Mainz, Germany}, -} - - - -@Book{rastall, - author = {Richard Rastall}, - ALTeditor = {}, - title = {The Notation of Western Music: an - Introduction}, - publisher = {J. M. Dent \& Sons London}, - year = {1983}, - note = {Interesting account of the evolution and origin of common notation starting from neumes, and ending with modern innovations HWN}, -} - - -@Book{ignatzek95:_jazzm_klavier, - author = {Klaus Ignatzek}, - title = {Die Jazzmethode f\"ur Klavier 1}, - publisher = {Schott}, - year = 1995, - note = {This book contains a system for denoting chords that is used in LilyPond.} -} - -@Book{mcgrain, - author = {Mark Mc Grain}, - title = {Music notation}, - year = 1991, - publisher={Hal Leonard Publishing Corporation}, -isbn ={0793508479}, -note={HWN writes: `Book' edition of lecture notes from XXX school of -music. The book looks like it is xeroxed from bad printouts. The -content has nothing you won't find in other books like\cite{read} or -\cite{heussenstamm}. } -} - -@Book{ross, - author = {Ted Ross}, - title = {Teach yourself the art of music engraving and processing}, - publisher = {Hansen House}, - year = 1987, -annote = {This is about engraving, i.e. professional typesetting. It contains - directions on good typesetting, but the sections on reproduction - technicalities, how to use pens and history are interesting. - Especially the section on Music Typewriters is amusing HWN}, - address = {Miami, Florida}, -} - -@Book {read78, - note = {Sound (boring) review of the various hairy rhythmic notations used by avant-garde composers HWN}, - year = {1978}, - title = {Modern Rhythmic Notation}, - author = {Gardner Read}, - publisher = {Indiana University Press}, -} - -@Book {read-notation, - note = {This is as close to the ``standard'' - reference work for music notation issues as one is likely to get.}, - - title = {Music Notation: a Manual of Modern Practice}, - author = {Gardner Read}, - totalentry = {(2nd edition)}, - publisher ={Taplinger Publishing}, - address ={New York}, -} - -@Book {weaner93, - year = {1993}, - title = {Standard Music Notation Practice}, - author = {Maxwell Weaner and Walter Boelke}, - totalentry = {revised edition by Arnold Broido and Daniel Dorff.}, - publisher = {Music Publisher's Association of the United States Inc}, - address = {New York} -} - - -@Book {wanske, - - annote = {I. A very thorough overview of engraving practices of various - craftsmen. It includes detailed specs of characters, dimensions - etc. II. a thorough overview of a anonymous (by now antiquated) - automated system. EDV Means e(lektronischen) D(aten)v(erarbeitung), - electronic data processing HWN.}, - - year = {1988}, - title = {Musiknotation --- Von der Syntax des - Notenstichs zum EDV-gesteuerten Notensatz}, - author = {Helene Wanske}, - publisher = {Schott-Verlag}, - address = {Mainz}, - isbn = {ISBN 3-7957-2886-x}, -} - - -@Book {hader48, - year = {1948}, - title = {Aus der Werkstatt eines Notenstechers}, - author = {Karl Hader}, - publisher = {Waldheim--Eberle Verlag}, - address ={Vienna}, - - note = {Hader was a chief-engraver in a Viennese engraving -workshop. This beautiful booklet was intended as an introduction for -laymen on the art of engraving. It contains a step by step, in-depth -explanation of how to cut and stamp music into zinc plates. It also -contains a few compactly formulated rules on musical orthography. Out -of print. } - - -} - -@Book{gamble23:_music_engrav, - author = {William Gamble}, - title = {Music Engraving and printing. Historical and Technical Treatise}, - publisher = {Sir Isaac Pitman & Sons, ltd.}, - year = 1923, - note = {This pattriotic book was an attempt to promote and help - British music engravers. It is somewhat similar to Hader's - book\cite{hader48} in scope and style, but Gamble focuses more on - technical details (Which French punch cutters are worth buying from, - etc.), and does not treat typographical details, such as optical - illusions. It is available as reprint from Da Capo Press, New York - (1971).} -} - - -@Booklet {mpa96, - note = {Pamphlet explaining a few fine points in music font design HWN}, - year = {1996}, - title = {Standard music notation specifications for computer programming.}, - month = {December}, - author ={mpa}, - publisher = {MPA}, -} - - -@Book {donato63, - year = {1963}, - author = {Anthony Donato}, - title ={Preparing Music Manuscript}, - address ={Englewood Cliffs, NJ}, - publisher={Prentice-Hall}, -} - - -@Book {Karkoshka72, - year = {1972}, - title = {Notation in New Music; a critical guide to interpretation and realisation}, - author = {Erdhard Karkoshka}, - translator={Ruth Koenig}, - publisher={Praeger Publishers}, - address={New York}, - note ={(Out of print)}, -} - - -@Book {Roemer84, - year = {1984}, - title = {The Art of Music Copying}, - author = {Clinton Roemer}, - publisher={Roerick music co.}, - address= {Sherman Oaks (CA)}, - - note ={Out of print. Heussenstamm writes: an instructional manual - which specializes in methods used in the commercial field. }, - edition={2nd}, -} - - -@Book {Rosecrans79, - year = {1979}, - title = {Music Notation Primer}, - author = {Glen Rosecrans}, - publisher={Passantino}, - address={New York}, - note={Heussenstamm writes: Limited in scope, similar to \cite{Roemer84}} -} - -@Book {donemus1982, - year = {1982}, - title = {Uitgeven van muziek}, - author = {Donemus}, - publisher= {Donemus Amsterdam}, - - note = {Manual on copying for composers and copyists at the Dutch - publishing house Donemus. Besides general comments on copying, it - also contains a lot of hands-on advice for making performance - material for modern pieces.} - -} - - -@Book{vinci, -author={Vinci, Albert C.}, -title={Fundamentals of Traditional Music Notation}, -publisher={Kent State University Press}, -year={1989} -} - -@Book{schirmer90, - author={{G. Schirmer, Inc.}}, - title={The G. Schirmer Manual of Style and Usage}, - address={New York}, - publisher={The G. Schirmer Publications Department}, - year={2001}, -note={This is the style guide for Schirmer publications. This manual -specifically focuses on preparing print for publication by -Schirmer. It discusses many details that are not in other, normal -notation books. It als gives a good idea of what is necessary to bring -printouts to publication quality. -It can be ordered from the rental department. - - -} -} - - -@Book {Stone80, - year = {1980}, - title = {Music Notation in the Twentieth Century}, - author = {Kurt Stone}, - publisher= {Norton}, - address={New York}, - note ={Heussenstamm writes: The most important book on notation in recent years. }, - -} -@Book {Heussenstamm87, - year = {1987}, - title = {The Norton Manual of Music Notation}, - author = {George Heussenstamm}, - address= {New York}, - publisher={Norton}, - note={Hands-on instruction book for copying (ie. handwriting) music. Fairly complete. HWN} -} - - -@Book {gerou96, - note = {A cheap, concise, alphabetically ordered list of typesetting and music (notation) issues with a rather simplistic attitude but in most cases "good-enough" answers JCN}, - year = {1996}, - title = {Essential Dictionary of Music Notation}, - author = {Tom Gerou and Linda Lusk}, - publisher = {Alfred Publishing}, - address ={Van Nuys CA}, - isbn ={ISBN 0-88284-768-6}, -} - - -@Book {chlapik87, - note = {An clearly written book for the casually interested - reader. It shows some of the conventions and difficulties in - printing music HWN}, - - year = {1987}, - title = {Die Praxis des Notengraphikers}, - author = {Herbert Chlapik}, - publisher = {Doblinger}, - isbn ={ISBN 3-9000 035-96-2}, -} - - - -@Book {barksdale57, - author = {Barksdale, A}, - year = {1957}, - title = {The Printed Note: 500 Years of Music Printing and Engraving}, - address={Toledo, Ohio}, - month = {January}, - note={`The exhibition "The Printed Note" attempts to show the various processes used since the second of the 15th century for reproducing music mechanically ... '. The illustration mostly feature ancient music}, - publisher={The Toledo Museum of Art}, -} - - -@Book {wolf19, - author = {Wolf, Johannes}, - year = {1919}, - title = {Handbuch der Notationskunde}, - address={Leipzig}, - publisher={Breitkopf & Hartel}, - note= {Very thorough treatment (in two volumes) of the history of music notation}, -} - -@Book {rosenthal67, - author = {Rosenthal, Carl A}, - year = {1967}, - title = {A Practical Guide to Music Notation}, - address={New York}, - publisher={MCA Music}, - note={Heussenstamm writes: Informative in terms of traditional notation. Does not concern score preparation} -} - - -@Book {Boehm61, - author = {Boehm, Laszlo}, - year = {1961}, - title={Modern Music Notation}, - address={New York}, - publisher={G. Schirmer, Inc.}, - note ={Heussenstamm writes: A handy compact reference book in basic notation. } -} -@Book{button20:_system_music_notat, - author = {Button, H. Elliot}, - title = {System in Musical Notation}, - publisher = {Novello and co.}, - year = 1920, - address = {London} -} - -@Book{johnson46:_how, - author = {Johnson, Harold}, - title = {How to write music manuscript}, - publisher = {Carl Fischer, Inc.}, - year = 1946, - address = {New York} -} - - - -@Book{tyboni94:_noter_handb_i_tradit_noter, - author = {B\"orje Tyboni}, - title = {Noter Handbok I Traditionell Notering}, - publisher = {Gehrmans Musikf\"orlag}, - year = 1994, - address = {Stockholm}, - note = {Swedish book on music notation.} -} - -@Book{jaschinski00:_notat, - editor = {Andreas Jaschinski}, - title = {Notation}, - publisher = {Bärenreiter Verlag}, - year = 2000, - number = {BVK1625}, - - annote = {Articles from "Musik in Geschichte und Gegenwart" -pertaining to notation. Both "alternative" notation and ancient -notation is treated in depth, while "common" notation is not. } -} - - diff --git a/Documentation/bibliography/html-long.bst b/Documentation/bibliography/html-long.bst deleted file mode 100644 index 79857470d0..0000000000 --- a/Documentation/bibliography/html-long.bst +++ /dev/null @@ -1,1373 +0,0 @@ -% BibTeX bibliography style `html-long' -% spits out HTML-formatted bibliography in place of bbl output -% by David Kotz dfk@cs.dartmouth.edu -% $Id: html-long.bst,v 1.2 2001/12/05 17:26:32 fred Exp $ -% modified from -% BibTeX standard bibliography style `alpha' - % version 0.99a for BibTeX versions 0.99a or later, LaTeX version 2.09. - % Copyright (C) 1985, all rights reserved. - % Copying of this file is authorized only if either - % (1) you make absolutely no changes to your copy, including name, or - % (2) if you do make changes, you name it something other than - % btxbst.doc, plain.bst, unsrt.bst, alpha.bst, and abbrv.bst. - % This restriction helps ensure that all standard styles are identical. - % The file btxbst.doc has the documentation for this style. - -% DFK added abstract, comment, earlier, keyword, later, URL -ENTRY - { abstract - address - author - booktitle - chapter - comment - earlier - edition - editor - howpublished - institution - journal - key - keyword - later - month - note - number - organization - pages - private - publisher - school - series - title - type - URL - volume - year - } - {} - { label extra.label sort.label } - -INTEGERS { output.state before.all mid.sentence after.sentence after.block } - -FUNCTION {init.state.consts} -{ #0 'before.all := - #1 'mid.sentence := - #2 'after.sentence := - #3 'after.block := -} - -STRINGS { s t } - -FUNCTION {output.nonnull} -{ 's := - output.state mid.sentence = - { ", " * write$ } - { output.state after.block = - { add.period$ write$ - newline$ - } - { output.state before.all = - 'write$ - { add.period$ " " * write$ } - if$ - } - if$ - mid.sentence 'output.state := - } - if$ - s -} - -FUNCTION {output} -{ duplicate$ empty$ - 'pop$ - 'output.nonnull - if$ -} - -FUNCTION {output.check} -{ 't := - duplicate$ empty$ - { pop$ "empty " t * " in " * cite$ * warning$ } - 'output.nonnull - if$ -} - -% DFK changed to use cite$ for the label -% DFK changed to HTML, and use URL to make cite key a link -FUNCTION {output.bibitem} -{ newline$ - URL empty$ - { "
" * cite$ * ":
" * write$ - } - { "
" * cite$ * ":
" * write$ - } - if$ - newline$ - "
" write$ newline$ - "" - before.all 'output.state := -} - -% DFK changed to HTML -FUNCTION {fin.entry} -{ add.period$ - write$ - newline$ - earlier empty$ - 'skip$ - { "
" write$ newline$ - "See also earlier version " * earlier * "." * write$ newline$ - } - if$ - later empty$ - 'skip$ - { "
" write$ newline$ - "See also later version " * later * "." * write$ newline$ - } - if$ - "
" write$ newline$ -} - -FUNCTION {new.block} -{ output.state before.all = - 'skip$ - { after.block 'output.state := } - if$ -} - -FUNCTION {new.sentence} -{ output.state after.block = - 'skip$ - { output.state before.all = - 'skip$ - { after.sentence 'output.state := } - if$ - } - if$ -} - -FUNCTION {not} -{ { #0 } - { #1 } - if$ -} - -FUNCTION {and} -{ 'skip$ - { pop$ #0 } - if$ -} - -FUNCTION {or} -{ { pop$ #1 } - 'skip$ - if$ -} - -FUNCTION {new.block.checka} -{ empty$ - 'skip$ - 'new.block - if$ -} - -FUNCTION {new.block.checkb} -{ empty$ - swap$ empty$ - and - 'skip$ - 'new.block - if$ -} - -FUNCTION {new.sentence.checka} -{ empty$ - 'skip$ - 'new.sentence - if$ -} - -FUNCTION {new.sentence.checkb} -{ empty$ - swap$ empty$ - and - 'skip$ - 'new.sentence - if$ -} - -FUNCTION {field.or.null} -{ duplicate$ empty$ - { pop$ "" } - 'skip$ - if$ -} - -% DFK changed to HTML -FUNCTION {emphasize} -{ duplicate$ empty$ - { pop$ "" } - { "" swap$ * "" * } - if$ -} - -% DFK added for HTML strong emphasis -FUNCTION {strong} -{ duplicate$ empty$ - { pop$ "" } - { "" swap$ * "" * } - if$ -} - -INTEGERS { nameptr namesleft numnames } - -% DFK added this, to strip {} and ~ from titles and authors -% It's not a great idea, because it will screw up in math mode and some -% special characters... but it makes most things much prettier. -FUNCTION {author.title.purify} -{ 't := - "" - { t empty$ not } - { t #1 #1 substring$ "{" = - t #1 #1 substring$ "}" = or - 'skip$ - { t #1 #1 substring$ "~" = - { " " * } - { t #1 #1 substring$ * } - if$ - } - if$ - t #2 global.max$ substring$ 't := - } - while$ -} - -FUNCTION {format.names} -{ 's := - #1 'nameptr := - s num.names$ 'numnames := - numnames 'namesleft := - { namesleft #0 > } - { s nameptr "{ff~}{vv~}{ll}{, jj}" format.name$ 't := - nameptr #1 > - { namesleft #1 > - { ", " * t * } - { numnames #2 > - { "," * } - 'skip$ - if$ - t "others" = - { " et al." * } - { " and " * t * } - if$ - } - if$ - } - 't - if$ - nameptr #1 + 'nameptr := - namesleft #1 - 'namesleft := - } - while$ -} - -FUNCTION {format.authors} -{ author empty$ - { "" } - { author format.names author.title.purify } - if$ -} - -FUNCTION {format.editors} -{ editor empty$ - { "" } - { editor format.names - editor num.names$ #1 > - { ", editors" * } - { ", editor" * } - if$ - } - if$ -} - -% DFK added strong, so it will be bold. -FUNCTION {format.title} -{ title empty$ - { "" } - { title "t" change.case$ author.title.purify strong } - if$ -} - -FUNCTION {n.dashify} -{ 't := - "" - { t empty$ not } - { t #1 #1 substring$ "-" = - { t #1 #2 substring$ "--" = not - { "--" * - t #2 global.max$ substring$ 't := - } - { { t #1 #1 substring$ "-" = } - { "-" * - t #2 global.max$ substring$ 't := - } - while$ - } - if$ - } - { t #1 #1 substring$ * - t #2 global.max$ substring$ 't := - } - if$ - } - while$ -} - -FUNCTION {format.date} -{ year empty$ - { month empty$ - { "" } - { "there's a month but no year in " cite$ * warning$ - month - } - if$ - } - { month empty$ - 'year - { month " " * year * } - if$ - } - if$ -} - -% DFK changed emphasize to strong -FUNCTION {format.btitle} -{ title author.title.purify strong -} - -FUNCTION {tie.or.space.connect} -{ duplicate$ text.length$ #3 < - { " " } - { " " } - if$ - swap$ * * -} - -FUNCTION {either.or.check} -{ empty$ - 'pop$ - { "can't use both " swap$ * " fields in " * cite$ * warning$ } - if$ -} - -FUNCTION {format.bvolume} -{ volume empty$ - { "" } - { "volume" volume tie.or.space.connect - series empty$ - 'skip$ - { " of " * series emphasize * } - if$ - "volume and number" number either.or.check - } - if$ -} - -FUNCTION {format.number.series} -{ volume empty$ - { number empty$ - { series field.or.null } - { output.state mid.sentence = - { "number" } - { "Number" } - if$ - number tie.or.space.connect - series empty$ - { "there's a number but no series in " cite$ * warning$ } - { " in " * series * } - if$ - } - if$ - } - { "" } - if$ -} - -FUNCTION {format.edition} -{ edition empty$ - { "" } - { output.state mid.sentence = - { edition "l" change.case$ " edition" * } - { edition "t" change.case$ " edition" * } - if$ - } - if$ -} - -INTEGERS { multiresult } - -FUNCTION {multi.page.check} -{ 't := - #0 'multiresult := - { multiresult not - t empty$ not - and - } - { t #1 #1 substring$ - duplicate$ "-" = - swap$ duplicate$ "," = - swap$ "+" = - or or - { #1 'multiresult := } - { t #2 global.max$ substring$ 't := } - if$ - } - while$ - multiresult -} - -FUNCTION {format.pages} -{ pages empty$ - { "" } - { pages multi.page.check - { "pages" pages n.dashify tie.or.space.connect } - { "page" pages tie.or.space.connect } - if$ - } - if$ -} - -FUNCTION {format.vol.num.pages} -{ volume field.or.null - number empty$ - 'skip$ - { "(" number * ")" * * - volume empty$ - { "there's a number but no volume in " cite$ * warning$ } - 'skip$ - if$ - } - if$ - pages empty$ - 'skip$ - { duplicate$ empty$ - { pop$ format.pages } - { ":" * pages n.dashify * } - if$ - } - if$ -} - -FUNCTION {format.chapter.pages} -{ chapter empty$ - 'format.pages - { type empty$ - { "chapter" } - { type "l" change.case$ } - if$ - chapter tie.or.space.connect - pages empty$ - 'skip$ - { ", " * format.pages * } - if$ - } - if$ -} - -FUNCTION {format.in.ed.booktitle} -{ booktitle empty$ - { "" } - { editor empty$ - { "In " booktitle emphasize * } - { "In " format.editors * ", " * booktitle emphasize * } - if$ - } - if$ -} - -FUNCTION {empty.misc.check} -{ author empty$ title empty$ howpublished empty$ - month empty$ year empty$ note empty$ - and and and and and - key empty$ not and - { "all relevant fields are empty in " cite$ * warning$ } - 'skip$ - if$ -} - -FUNCTION {format.thesis.type} -{ type empty$ - 'skip$ - { pop$ - type "t" change.case$ - } - if$ -} - -FUNCTION {format.tr.number} -{ type empty$ - { "Technical Report" } - 'type - if$ - number empty$ - { "t" change.case$ } - { number tie.or.space.connect } - if$ -} - -FUNCTION {format.article.crossref} -{ key empty$ - { journal empty$ - { "need key or journal for " cite$ * " to crossref " * crossref * - warning$ - "" - } - { "In {\em " journal * "\/}" * } - if$ - } - { "In " key * } - if$ - " \cite{" * crossref * "}" * -} - -FUNCTION {format.crossref.editor} -{ editor #1 "{vv~}{ll}" format.name$ - editor num.names$ duplicate$ - #2 > - { pop$ " et al." * } - { #2 < - 'skip$ - { editor #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" = - { " et al." * } - { " and " * editor #2 "{vv~}{ll}" format.name$ * } - if$ - } - if$ - } - if$ -} - -FUNCTION {format.book.crossref} -{ volume empty$ - { "empty volume in " cite$ * "'s crossref of " * crossref * warning$ - "In " - } - { "Volume" volume tie.or.space.connect - " of " * - } - if$ - editor empty$ - editor field.or.null author field.or.null = - or - { key empty$ - { series empty$ - { "need editor, key, or series for " cite$ * " to crossref " * - crossref * warning$ - "" * - } - { "{\em " * series * "\/}" * } - if$ - } - { key * } - if$ - } - { format.crossref.editor * } - if$ - " \cite{" * crossref * "}" * -} - -FUNCTION {format.incoll.inproc.crossref} -{ editor empty$ - editor field.or.null author field.or.null = - or - { key empty$ - { booktitle empty$ - { "need editor, key, or booktitle for " cite$ * " to crossref " * - crossref * warning$ - "" - } - { "In {\em " booktitle * "\/}" * } - if$ - } - { "In " key * } - if$ - } - { "In " format.crossref.editor * } - if$ - " \cite{" * crossref * "}" * -} - - -% DFK added -% top of stack is the string we want to be a quoted paragraph -FUNCTION {format.quotedParagraph} -{ duplicate$ empty$ - { skip$ } - { "

" swap$ * "

" *} - if$ -} - - -% DFK added, to support comment, private, keyword, etc -% next-to-top is field name (eg, "Comment") -% top is field value (eg, value of comment) -% both are popped; resulting top is either empty, -% or string describing field -FUNCTION {format.dfkfield} -{ duplicate$ empty$ - { pop$ pop$ "" } - { swap$ - " " swap$ * ": " * swap$ * } - if$ -} - -% DFK added -FUNCTION {dfk.stuff} -{ new.block - "Abstract" abstract format.dfkfield format.quotedParagraph write$ newline$ - "Keyword" keyword format.dfkfield format.quotedParagraph write$ newline$ - "Comment" comment format.dfkfield format.quotedParagraph write$ newline$ -} - -% DFK: added a call to dfk.stuff in all entry-type functions below - -FUNCTION {article} -{ output.bibitem - format.authors "author" output.check - new.block - format.title "title" output.check - new.block - crossref missing$ - { journal emphasize "journal" output.check - format.vol.num.pages output - format.date "year" output.check - } - { format.article.crossref output.nonnull - format.pages output - } - if$ - new.block - note output - fin.entry - dfk.stuff -} - -FUNCTION {book} -{ output.bibitem - author empty$ - { format.editors "author and editor" output.check } - { format.authors output.nonnull - crossref missing$ - { "author and editor" editor either.or.check } - 'skip$ - if$ - } - if$ - new.block - format.btitle "title" output.check - crossref missing$ - { format.bvolume output - new.block - format.number.series output - new.sentence - publisher "publisher" output.check - address output - } - { new.block - format.book.crossref output.nonnull - } - if$ - format.edition output - format.date "year" output.check - new.block - note output - fin.entry - dfk.stuff -} - -FUNCTION {booklet} -{ output.bibitem - format.authors output - new.block - format.title "title" output.check - howpublished address new.block.checkb - howpublished output - address output - format.date output - new.block - note output - fin.entry - dfk.stuff -} - -FUNCTION {inbook} -{ output.bibitem - author empty$ - { format.editors "author and editor" output.check } - { format.authors output.nonnull - crossref missing$ - { "author and editor" editor either.or.check } - 'skip$ - if$ - } - if$ - new.block - format.btitle "title" output.check - crossref missing$ - { format.bvolume output - format.chapter.pages "chapter and pages" output.check - new.block - format.number.series output - new.sentence - publisher "publisher" output.check - address output - } - { format.chapter.pages "chapter and pages" output.check - new.block - format.book.crossref output.nonnull - } - if$ - format.edition output - format.date "year" output.check - new.block - note output - fin.entry - dfk.stuff -} - -FUNCTION {incollection} -{ output.bibitem - format.authors "author" output.check - new.block - format.title "title" output.check - new.block - crossref missing$ - { format.in.ed.booktitle "booktitle" output.check - format.bvolume output - format.number.series output - format.chapter.pages output - new.sentence - publisher "publisher" output.check - address output - format.edition output - format.date "year" output.check - } - { format.incoll.inproc.crossref output.nonnull - format.chapter.pages output - } - if$ - new.block - note output - fin.entry - dfk.stuff -} - -FUNCTION {inproceedings} -{ output.bibitem - format.authors "author" output.check - new.block - format.title "title" output.check - new.block - crossref missing$ - { format.in.ed.booktitle "booktitle" output.check - format.bvolume output - format.number.series output - format.pages output - address empty$ - { organization publisher new.sentence.checkb - organization output - publisher output - format.date "year" output.check - } - { address output.nonnull - format.date "year" output.check - new.sentence - organization output - publisher output - } - if$ - } - { format.incoll.inproc.crossref output.nonnull - format.pages output - } - if$ - new.block - note output - fin.entry - dfk.stuff -} - -FUNCTION {conference} { inproceedings } - -FUNCTION {manual} -{ output.bibitem - author empty$ - { organization empty$ - 'skip$ - { organization output.nonnull - address output - } - if$ - } - { format.authors output.nonnull } - if$ - new.block - format.btitle "title" output.check - author empty$ - { organization empty$ - { address new.block.checka - address output - } - 'skip$ - if$ - } - { organization address new.block.checkb - organization output - address output - } - if$ - format.edition output - format.date output - new.block - note output - fin.entry - dfk.stuff -} - -FUNCTION {mastersthesis} -{ output.bibitem - format.authors "author" output.check - new.block - format.title "title" output.check - new.block - "Master's thesis" format.thesis.type output.nonnull - school "school" output.check - address output - format.date "year" output.check - new.block - note output - fin.entry - dfk.stuff -} - -FUNCTION {misc} -{ output.bibitem - format.authors output - title howpublished new.block.checkb - format.title output - howpublished new.block.checka - howpublished output - format.date output - new.block - note output - fin.entry - dfk.stuff - empty.misc.check -} - -FUNCTION {phdthesis} -{ output.bibitem - format.authors "author" output.check - new.block - format.btitle "title" output.check - new.block - "PhD thesis" format.thesis.type output.nonnull - school "school" output.check - address output - format.date "year" output.check - new.block - note output - fin.entry - dfk.stuff -} - -FUNCTION {proceedings} -{ output.bibitem - editor empty$ - { organization output } - { format.editors output.nonnull } - if$ - new.block - format.btitle "title" output.check - format.bvolume output - format.number.series output - address empty$ - { editor empty$ - { publisher new.sentence.checka } - { organization publisher new.sentence.checkb - organization output - } - if$ - publisher output - format.date "year" output.check - } - { address output.nonnull - format.date "year" output.check - new.sentence - editor empty$ - 'skip$ - { organization output } - if$ - publisher output - } - if$ - new.block - note output - fin.entry - dfk.stuff -} - -FUNCTION {techreport} -{ output.bibitem - format.authors "author" output.check - new.block - format.title "title" output.check - new.block - format.tr.number output.nonnull - institution "institution" output.check - address output - format.date "year" output.check - new.block - note output - fin.entry - dfk.stuff -} - -FUNCTION {unpublished} -{ output.bibitem - format.authors "author" output.check - new.block - format.title "title" output.check - new.block - note "note" output.check - format.date output - fin.entry - dfk.stuff -} - -FUNCTION {default.type} { misc } - -MACRO {jan} {"January"} - -MACRO {feb} {"February"} - -MACRO {mar} {"March"} - -MACRO {apr} {"April"} - -MACRO {may} {"May"} - -MACRO {jun} {"June"} - -MACRO {jul} {"July"} - -MACRO {aug} {"August"} - -MACRO {sep} {"September"} - -MACRO {oct} {"October"} - -MACRO {nov} {"November"} - -MACRO {dec} {"December"} - -MACRO {acmcs} {"ACM Computing Surveys"} - -MACRO {acta} {"Acta Informatica"} - -MACRO {cacm} {"Communications of the ACM"} - -MACRO {ibmjrd} {"IBM Journal of Research and Development"} - -MACRO {ibmsj} {"IBM Systems Journal"} - -MACRO {ieeese} {"IEEE Transactions on Software Engineering"} - -MACRO {ieeetc} {"IEEE Transactions on Computers"} - -MACRO {ieeetcad} - {"IEEE Transactions on Computer-Aided Design of Integrated Circuits"} - -MACRO {ipl} {"Information Processing Letters"} - -MACRO {jacm} {"Journal of the ACM"} - -MACRO {jcss} {"Journal of Computer and System Sciences"} - -MACRO {scp} {"Science of Computer Programming"} - -MACRO {sicomp} {"SIAM Journal on Computing"} - -MACRO {tocs} {"ACM Transactions on Computer Systems"} - -MACRO {tods} {"ACM Transactions on Database Systems"} - -MACRO {tog} {"ACM Transactions on Graphics"} - -MACRO {toms} {"ACM Transactions on Mathematical Software"} - -MACRO {toois} {"ACM Transactions on Office Information Systems"} - -MACRO {toplas} {"ACM Transactions on Programming Languages and Systems"} - -MACRO {tcs} {"Theoretical Computer Science"} - -READ - -FUNCTION {sortify} -{ purify$ - "l" change.case$ -} - -INTEGERS { len } - -FUNCTION {chop.word} -{ 's := - 'len := - s #1 len substring$ = - { s len #1 + global.max$ substring$ } - 's - if$ -} - -INTEGERS { et.al.char.used } - -FUNCTION {initialize.et.al.char.used} -{ #0 'et.al.char.used := -} - -EXECUTE {initialize.et.al.char.used} - -FUNCTION {format.lab.names} -{ 's := - s num.names$ 'numnames := - numnames #1 > - { numnames #4 > - { #3 'namesleft := } - { numnames 'namesleft := } - if$ - #1 'nameptr := - "" - { namesleft #0 > } - { nameptr numnames = - { s nameptr "{ff }{vv }{ll}{ jj}" format.name$ "others" = - { "{\etalchar{+}}" * - #1 'et.al.char.used := - } - { s nameptr "{v{}}{l{}}" format.name$ * } - if$ - } - { s nameptr "{v{}}{l{}}" format.name$ * } - if$ - nameptr #1 + 'nameptr := - namesleft #1 - 'namesleft := - } - while$ - numnames #4 > - { "{\etalchar{+}}" * - #1 'et.al.char.used := - } - 'skip$ - if$ - } - { s #1 "{v{}}{l{}}" format.name$ - duplicate$ text.length$ #2 < - { pop$ s #1 "{ll}" format.name$ #3 text.prefix$ } - 'skip$ - if$ - } - if$ -} - -FUNCTION {author.key.label} -{ author empty$ - { key empty$ - { cite$ #1 #3 substring$ } - { key #3 text.prefix$ } - if$ - } - { author format.lab.names } - if$ -} - -FUNCTION {author.editor.key.label} -{ author empty$ - { editor empty$ - { key empty$ - { cite$ #1 #3 substring$ } - { key #3 text.prefix$ } - if$ - } - { editor format.lab.names } - if$ - } - { author format.lab.names } - if$ -} - -FUNCTION {author.key.organization.label} -{ author empty$ - { key empty$ - { organization empty$ - { cite$ #1 #3 substring$ } - { "The " #4 organization chop.word #3 text.prefix$ } - if$ - } - { key #3 text.prefix$ } - if$ - } - { author format.lab.names } - if$ -} - -FUNCTION {editor.key.organization.label} -{ editor empty$ - { key empty$ - { organization empty$ - { cite$ #1 #3 substring$ } - { "The " #4 organization chop.word #3 text.prefix$ } - if$ - } - { key #3 text.prefix$ } - if$ - } - { editor format.lab.names } - if$ -} - -FUNCTION {calc.label} -{ type$ "book" = - type$ "inbook" = - or - 'author.editor.key.label - { type$ "proceedings" = - 'editor.key.organization.label - { type$ "manual" = - 'author.key.organization.label - 'author.key.label - if$ - } - if$ - } - if$ - duplicate$ - year field.or.null purify$ #-1 #2 substring$ - * - 'label := - year field.or.null purify$ #-1 #4 substring$ - * - sortify 'sort.label := -} - -FUNCTION {sort.format.names} -{ 's := - #1 'nameptr := - "" - s num.names$ 'numnames := - numnames 'namesleft := - { namesleft #0 > } - { nameptr #1 > - { " " * } - 'skip$ - if$ - s nameptr "{vv{ } }{ll{ }}{ ff{ }}{ jj{ }}" format.name$ 't := - nameptr numnames = t "others" = and - { "et al" * } - { t sortify * } - if$ - nameptr #1 + 'nameptr := - namesleft #1 - 'namesleft := - } - while$ -} - -FUNCTION {sort.format.title} -{ 't := - "A " #2 - "An " #3 - "The " #4 t chop.word - chop.word - chop.word - sortify - #1 global.max$ substring$ -} - -FUNCTION {author.sort} -{ author empty$ - { key empty$ - { "to sort, need author or key in " cite$ * warning$ - "" - } - { key sortify } - if$ - } - { author sort.format.names } - if$ -} - -FUNCTION {author.editor.sort} -{ author empty$ - { editor empty$ - { key empty$ - { "to sort, need author, editor, or key in " cite$ * warning$ - "" - } - { key sortify } - if$ - } - { editor sort.format.names } - if$ - } - { author sort.format.names } - if$ -} - -FUNCTION {author.organization.sort} -{ author empty$ - { organization empty$ - { key empty$ - { "to sort, need author, organization, or key in " cite$ * warning$ - "" - } - { key sortify } - if$ - } - { "The " #4 organization chop.word sortify } - if$ - } - { author sort.format.names } - if$ -} - -FUNCTION {editor.organization.sort} -{ editor empty$ - { organization empty$ - { key empty$ - { "to sort, need editor, organization, or key in " cite$ * warning$ - "" - } - { key sortify } - if$ - } - { "The " #4 organization chop.word sortify } - if$ - } - { editor sort.format.names } - if$ -} - -FUNCTION {presort} -{ calc.label - sort.label - " " - * - type$ "book" = - type$ "inbook" = - or - 'author.editor.sort - { type$ "proceedings" = - 'editor.organization.sort - { type$ "manual" = - 'author.organization.sort - 'author.sort - if$ - } - if$ - } - if$ - * - " " - * - year field.or.null sortify - * - " " - * - title field.or.null - sort.format.title - * -% DFK throw away stuff above and use cite$ for sort key - pop$ - cite$ - #1 entry.max$ substring$ - 'sort.key$ := -} - -ITERATE {presort} - -SORT - -STRINGS { longest.label last.sort.label next.extra } - -INTEGERS { longest.label.width last.extra.num } - -FUNCTION {initialize.longest.label} -{ "" 'longest.label := - #0 int.to.chr$ 'last.sort.label := - "" 'next.extra := - #0 'longest.label.width := - #0 'last.extra.num := -} - -FUNCTION {forward.pass} -{ last.sort.label sort.label = - { last.extra.num #1 + 'last.extra.num := - last.extra.num int.to.chr$ 'extra.label := - } - { "a" chr.to.int$ 'last.extra.num := - "" 'extra.label := - sort.label 'last.sort.label := - } - if$ -} - -FUNCTION {reverse.pass} -{ next.extra "b" = - { "a" 'extra.label := } - 'skip$ - if$ - label extra.label * 'label := - label width$ longest.label.width > - { label 'longest.label := - label width$ 'longest.label.width := - } - 'skip$ - if$ - extra.label 'next.extra := -} - -EXECUTE {initialize.longest.label} - -ITERATE {forward.pass} - -REVERSE {reverse.pass} - -% DFK removed code about et.al.char -% DFK changed to HTML -FUNCTION {begin.bib} -{ "" write$ newline$ - " Bibliography " write$ newline$ - "" write$ newline$ - "
" write$ newline$ -} - -EXECUTE {begin.bib} - -EXECUTE {init.state.consts} - -ITERATE {call.type$} - -% DFK changed to HTML -FUNCTION {end.bib} -{ newline$ - "
" write$ newline$ - "" write$ newline$ - "" write$ newline$ -} - -EXECUTE {end.bib} diff --git a/Documentation/index.html.in b/Documentation/index.html.in deleted file mode 100644 index 395dce7d37..0000000000 --- a/Documentation/index.html.in +++ /dev/null @@ -1,135 +0,0 @@ - - - LilyPond @TOPLEVEL_VERSION@ Documentation - - - - - - -
- -

- Version @TOPLEVEL_VERSION@ -
- @DATE@ -

-
- - - - - - - - - - - - - - - - -
- - -
    - -
  • - NEWS -
    (changes since the last major release) - -
  • - INSTALL -
    (how to compile) -
-
-   - - -   - -
-   - - -   - -
-

- - - diff --git a/Documentation/misc/ANNOUNCE-0.1 b/Documentation/misc/ANNOUNCE-0.1 deleted file mode 100644 index 8ed22c92be..0000000000 --- a/Documentation/misc/ANNOUNCE-0.1 +++ /dev/null @@ -1,165 +0,0 @@ -Keywords: midi notation music typesetting gnu -Subject: LilyPond 0.1 released - The GNU Project music typesetter - - BORN - - August 1, 1997 - - Lily - - (GNU LilyPond 0.1) - - daughter to Jan 'Janneke' Nieuwenhuizen and Han-Wen 'Wendy' Nienhuys - -Lily is a healthy, bouncing baby weighing 345 kilobytes - -Visiting hours: 24 hours a day at - - ftp://pcnov095.win.tue.nl/pub/lilypond/lilypond-0.1.0.tar.gz (Europe) - ftp://alpha.gnu.ai.mit.edu/gnu/lilypond-0.1.0.tar.gz (US) - -You can see some babyfood, diapers and pictures at - - http://www.stack.nl/~hanwen/lilypond/index.html - -You can send your congratulations to Janneke (janneke@gnu.org) and -Wendy (hanwen@stack.nl) - - -GNU LilyPond - The GNU Project Music Typesetter - - - -``WHAT IS GNU LilyPond?'' - -Well Mike, GNU LilyPond is a program which converts music definition -files into visual or auditive output: it can typeset formatted sheet -music to a TeX file and (mechanical) performances to MIDI files. - - -We have been working very hard on this system for the past year, and -we finally think that it is ready to be used and hacked at by a larger -public than us. - - -WHY ? - -We want to create tools to produce production quality scores and parts -of public domain music. - - -BUT .. - -We haven't yet reached that goal: - -* The quality of the output isn't good enough yet due to some -unsophisticated algorithms - -* Some features haven't been implemented, due to lack of time; most of -them can be done quite simply - -This is why we don't consider this software stable yet. It generally -does what it is supposed to, but we reserve the right to make -(incompatible) changes to the input format. We consider it -of BETA quality. - - -WE WANT YOU! - -You can become a user, but we'd really appreciate it if you would start -hacking at Lily, and help us advance our project more quickly. - - -``YES, IT IS FANTASTIC! WHAT DO I NEED?'' - -For compilation you need - - Unix. (windows32 is known to work, too) - GNU C++ v2.7 or better, with libg++ installed. - GNU make. - Flex (2.5.1 or better). - Bison. (1.25 or better) - -For running you need - - TeX - MusiXTeX fonts - -The MusiXTeX fonts are part of the MusiXTeX package version T.73, -available at any CTAN mirror, or http://www.gmd.de/Misc/Music/ - - -``WHAT CAN LILYPOND DO?'' - -ASCII script input (mudela), with identifiers (for music reuse), -customizable notenames. - -MIDI output lets you check if you have entered the correct notes. -MIDI to Mudela conversion through the mi2mu program. - -Multiple staffs in one score. Each staff can have a different meters. -Multiple voices within one staff (up to four handled graciously); -beams optionally shared between voices. Multiple scores within one -input file. Each score is output to a different file. - -Beams, slurs, chords, super/subscripts (accents and text), -general n-plet (triplet, quadruplets, etc.), lyrics, transposition, -dynamics (both absolute and hairpin style), clef changes, meter -changes, cadenza-mode, key changes, repeat bars. - -Integration with LaTeX through Perl scripts. - - -``WHERE CAN I FIND MORE INFO?'' - -Sources for this project are on - - ftp://pcnov095.win.tue.nl/pub/lilypond/ (Europe) - ftp://alpha.gnu.ai.mit.edu/gnu/ (US) - -More detailed info and examples can be found on the webpage at - - http://www.stack.nl/~hanwen/lilypond/index.html - - -THANK YOU, - -Thanks go out to Mats Bengtsson, Werner Lemberg and Richard Stallman -for comments and contributions. - - -**** NOTE - -LilyPond might have a minor bug if you use glibc-2; we will look into it -If you use glibc-2, please try 0.1.0 to see if it works and, download 0.1.1 -when it's available. - -LilyPond might exhibit a g++ bug on Solaris 1.5 (The stack frame gets corrupted -by a constructor) if you compile with -O2. We don't know workarounds. - - --- * --- - - We would like to dedicate this program to all the friends that we - met through music. - - - Those deserving special mention (in no particular order): -Esther, Marijke, Heike, Inge, Judith, Hannah, Auke, Ilse, Evelyn, -Maartje, Suzanne, Ilse (gee, again?) and last (but certainly not least) -Janneke! - - HWN - - That's a nice thought, Wendy. I've got a few too, to spread -the credits a bit (Again, no particular order) Michelle, Illushka, -Ruth, Eva, Fro/ydis, Monique, Noor, Sascha, Monique, Ilse, Monique, -Eva, Roos, Judith, Tim and, of course, Wendy! - - JCN - - -Of course, our other friends in the `Eindhovens Jongeren Ensemble' -(http://www.stack.nl/~hanwen/eje.html) cannot go unmentioned either. - - - --- * --- diff --git a/Documentation/misc/ANNOUNCE-1.0 b/Documentation/misc/ANNOUNCE-1.0 deleted file mode 100644 index 33190c9cf2..0000000000 --- a/Documentation/misc/ANNOUNCE-1.0 +++ /dev/null @@ -1,102 +0,0 @@ -Keywords: midi notation music typesetting gnu font engraving -Subject: GNU LilyPond 1.0 released - The Music Typesetter - -GNU LilyPond - The Music Typesetter - - -WHAT IS LilyPond? - -LilyPond is the GNU Project music typesetter. This program can print -beautiful sheet music from a music definition file. It can also play -performances to a MIDI file. - - -WHAT'S NEW SINCE VERSION 0.1? - -* LilyPond now includes a completely new music font: the Feta font. - We were quite disappointed with available music fonts, so we rolled - our own. We did our best to copy the best symbol designs available, - and we think that we've succeeded in doing so. We're proud of the - result, and we hope you agree, so go check it out! - -* More elegant output due to - - * more sophisticated beam/slur formatting - * better spacing - * better line breaking - * better font design - * PostScript output for variable symbols - -* Lots of bugfixes - -* More robust, flexible and tweakable design - -* Better MIDI file importing - -* Easier to use due to better shell scripts and input format -enhancements - -* MusixTeX is not needed anymore - -* Faster - - - -FEATURES - -* Multiple staffs, polyphonic music (more voices on one staff), -Polymetric music. - -* Support for full orchestral score: Hara_kiri systems (lines with -only rests are automatically skipped), multi-measure rests, bar -numbering, brackets at the left. - -* Optimal beam slopes, slur/notehead collision resolution, dashed -slurs. Formatting parameters are runtime tunable - -* Very beautiful symbols. Variable size symbols generated on the fly -as embedded postscript. - -* MIDI output - -* Optimal linebreaking, manual intervention possible. Linelength is -settable per line. - -* Readable yet very fast to type input language. With configurable -note names and identifiers. Comes with an emacs-mode - -* With lots of examples (among others a fragment of Van Beethoven's -Coriolan, J.S.Bach Cello Suite II, F. Schubert "Leise flehen meine -Lieder") - -* Runs on UNIX and Windows-32. - -* Easy generation of titling. - -* WWW browsable documentation. - -* Support for Urtext: separation of modern and original interpretation. - -* Polyphonic music (with automatic collision resolution) - -* Spacing and collision resolution of accidentals and syllables is -done automatically - -* Internationalisation support (Italian, Dutch) - -* Multiple font sizes within one piece - -* Integration with LaTeX and YODL - - -MORE INFO - -Sources for this project are on - - ftp://pcnov095.win.tue.nl/pub/lilypond/ (Europe) - ftp://ftp.gnu.org/pub/gnu/ - -More detailed info and examples can be found on the webpage at - - http://www.cs.uu.nl/~hanwen/lilypond/index.html - diff --git a/Documentation/misc/ANNOUNCE-1.2 b/Documentation/misc/ANNOUNCE-1.2 deleted file mode 100644 index ec9bef6cd2..0000000000 --- a/Documentation/misc/ANNOUNCE-1.2 +++ /dev/null @@ -1,62 +0,0 @@ --*- text -*- - - -Keywords: midi notation music typesetting gnu font engraving -Subject: GNU LilyPond 1.2 released - The Music Typesetter - -GNU LilyPond - The Music Typesetter - - -WHAT IS LilyPond? - -LilyPond is the GNU Project music typesetter. - -LilyPond produces beautiful sheet music using a high level description -file as input. - - -BROWSE - -Documentation and examples can be found on - - http://www.cs.uu.nl/~hanwen/lilypond/ - - -DOWNLOAD - -Sources for this project are on - - ftp://ftp.cs.uu.nl/pub/GNU/LilyPond/v1.2/ (Europe) - ftp://ftp.gnu.org/pub/lilypond/ - -Prepackaged i386 and PPC packages for both Debian and RedHat GNU are -also available. - - -WHAT'S NEW? - -* Large cleanups, enhanced design and GUILE integration for smaller - memory footprint and more flexible code. - -* Direct output to PostScript (optional), PDFTeX or as GUILE script - (default output still to plain TeX). - -* Convertors for ABC and MUP formats. - -* Font: now available as scalable PostScript. New glyphs: time - signature, more note heads. - -* Enhanced input: semi-automatic beaming, (nested) tuplets, (nested) - repeats, chordnames, automatic Lyrics durations. - -* Grace notes, volta brackets, multiple styles for note heads and - time signatures, breathing signs, lyric extenders, cross staff - beaming and slurring. - -* --safe option for the paranoid. - -* More elegant spacing. Text is spaced exactly. - -* Lots of bugfixes. - - diff --git a/Documentation/misc/CHANGES-0.0 b/Documentation/misc/CHANGES-0.0 deleted file mode 100644 index f936254a1f..0000000000 --- a/Documentation/misc/CHANGES-0.0 +++ /dev/null @@ -1,1170 +0,0 @@ - -This file documents changes in version 0.0 - -august 1 - -VERSION 0.1.0 - - - bf: output tempo to track 0 too - - bf: don't forget to copy id_str_, so moved into Music - -pl 78.jcn2 - - INFTY doze fixes - -pl 78.jcn1 - - fix for multi-staff midi: wohltemperirt.ly, standchen.ly - - doze fixes - - bf: conflily, configure (text) -***** -july 31 -pl 78 - - bf: Midi_instrument - - added enable/disable defaults to help. - - incredibly ugly NAME_MEMBERS(); bug. Immediately changed to -DECLARE_MY_RUNTIME_TYPEINFO; - - \stem -1 -> \stem \down in input - - bf: slurchar index - - configure warnings - - preliminary stuff for multiarch building - - #!/usr/bin/perl fixes (AO) - - some Makefile cleanups: now faster. - -pl 77.jcn2 - - Midi_instrument - -****** -july 29 -pl 77 - - some fixes for internal compiler errors -derive from Pointer_list with default dtor gives error with -O2 - - .ini -> .ly - - lyrics fix - - Performer beautification: got rid of set_track(), midi_output() - - pseudo RTTI for midi-items - - bf: Performer*::print() - - links.pod - - Voice_element -> Request_chord - - fixed flex problems: stdin input works again - - Documentation/Rules.make, make-website via make - - spacing: now add basicspace - -******* -july 28 -pl 76 - - mudela version bumped to 0.1 - - mudela-book - - doco updates, now some stuff in LaTeX - - junked book.{ly,tex} example - - progress indicator - - rhythm.ly updated - - removed mf sources from distribution due to (c) stuff - - allowal of breaks handled cleanly - - junked Subtle_reqs, junked Request_iterator. Request - iteration now by Voice_element_iterator - - Piano_bar, Piano_bar_engraver, Span_score_bar_engraver, - Span_score_bar - - Swallow_performer - - removed Staff_engravers, grouping into Line_group_engraver - - Head_column as base for Rest_column,Note_column - - Score_column derived from PCol - - regurgled Line spacing: interface and implementation - separate. Idealspacing moved into Spring_spacer - - Gourlay style linespacing - -pl 75.jcn6 - - {lyric,meter,key}-performer - - span-brace-* (Removed again. Such is life) - - doze compile - - midi output, notes only - - working midi output -- hacked - - doze compile, mingw32 configure (still triggers gcc int. comp err) - -pl 74pre.jcn2 - - mi2mu fixes after scott snyder [sss] - - mi2mu update for mudela 0.0.61 - - conflily fixes - -******* -july 21 - -pl 75 - - inbook.ly & book.tex example. - - natural width: linewidth = -1.0\cm - -pl 74pre.jcn1 - - oversimplified midi output thru performer hierarchy - - bf: Spanner::doprint - -pl 72pre.jcn1 - - naming fixes; some iter*() explicitations - - removed acceptor.hh - - *performer*: second draft of midi (audio/...) - -******* -july 9 - -pl 74pre - - Input_engraver -> Input_translator - - bf: span start/stop is now a "used" col. - - Rest_column/Rest_collisions bugfixes - - bf: crescendi. - - Spanner do_print() - -****** -july 7 -pl 73pre - - some refs doco. - - move Input_engraver into Paper_def - - junk Interpreter - - naming: Request_engraver -> Engraver, - - Music_iterator::next() -> process_and_next() - - junk Voice_engravers - - Span_bar, Span_bar_engraver - - Vertical_align_engraver - -******* -july 2 -pl 72pre - - \paper{} syntax: var = 1.0\pt;, with an Assoc array - - sketch of MIDI Performer classes. - - bf: memleak in parser - - naming: Acceptor -> Translator - - input: bf collisions.ly, scales.ly - - bf: [r8 c8] - - naming: Register -> Engraver - - force \\ on identifiers - - doco updates - - musixtex T73 fonts - -pl 70.mb - - bf: find syntax in Variables.make -***** -july 1 -pl 71pre - - nested \melodic and \lyric constructs - - init id's, Input_register aliases. - - bf: notehead x-swap - - bf: auto-keys. - - bf: first clef - - junked \init_end; construct - - Preparatory work for MIDI output: - * Acceptor as baseclass for Register_group_register - * Global_acceptor as interface of Register to Score - - bf: empty voice - - Lyrics: partially working - - some doco updates (junks, mostly) - - -****** -june 30 - - -pl 70pre - - bf: text Script - - bf: Script::dir_i_ checks. - - bf: script stacking - - bf: Text_spanner::do_subst. - - bf: Text_spanner::Text_spanner(Text_spanner&) - - bf: script priority read from script.ini - - bf: Script_def::do_equal_b - - bf: script dims. - - mudela: ; obligatory for \paper {}. - - some cosmetic changes involving RTTI macros - -******* -june 29 -pl 69pre - - bf: whole rest position, whole/half rest dots. - - bf: scripts - - reg termination - - centered bars - - bf: init of Tie::dir_i_ - - bf: Staff_side depends on staff_sym_ - - bf: Script::do_substitute_dependency() now implemented - - more print info (also in output) - - bf: Vertical_align_element - - stemless beams now allowed (with warning) - - bf: Rest_column::stem_l_ init - - merge rests.ly with collisions.ly - -pl 67.jcn3 - - rests under beam [c8 r c] - -pl 67.jcn2 - - first attempt at rest collisions - - rests.ly - -pl 67.jcn1 - - beam stem length: beams.ly - - bf: mingw configure - - re: conflily - -****** -june 26 -pl 68pre - - doco: other-packages.pod, lots of lilyliterature.pod - - last duration mode now is default. - - some OpusTeX stuff. - - bf Y2K in convert-mudela - - Grand rewrite of Music/Register stuff: - * separation of Y and X-elt-groups - * Registers: info up: broadcasts, info down: get_xxx_info() - * Registers: try_request works from bottom to top of tree. - * Score_elem empty_b_ and transparent_b_ flag - * Junk Staff_column, and find the requests while walking the - Voices. - * Score_register - * Staff_group, Score_request_register. - * align key/Meters/bar across staffs - * junked Staff, Staff_column, Staff_walker, Complex_walker, - Request_column Pulk_voice, Pulk_voices, Walker_registers, - Voice_element, - Input_score, Input_staff, Input_music and a lot of - parserjunk. - * mudela: lots of structure changes : now much simpler - * generation of pre/postbreak items now in Score_elem with deps. - - - bf: make_patch explanation - - bf: make install TeX stuff - - mudela: . mandatory for REALs - - -pl 67 - - damped beamslope after wanske - -****** -june 3 -pl 67 - - sketch of Music classes - - General_script_def as baseclass for Text_def and Script_def - - bf: clean lib/out/liblily.a - - bf: rests shorter than 1/4 - -pl 66.jcn3 - - bf: make uninstall - - conflily - - f: some pedaling - - plet hack removed :-( [ c c c ]2/3 -> [2/3 c c c ]1/1 - -pl 66.jcn2 - - bf: bar, Hilfslinie - - bf: configure for mingw32 - -pl 66.jcn1 - - WIN32 -> WINDOWS32, more win32->windows32 - - some GNU/Linux changes - - cygnus b18 / mingw update - - doze compile; bf: p-score.cc compares - - reincluded toccata fixes - - small stuff: vi tags, typos, bibl - -****** -may 27 -pl 66 - - make_website --jpeg, --png and --gif - - win32 -> windows32 - - bf: Score_elem::TeXstring assert fail - - bf: headswap with stemdown - - bf: broken tie - - bf: broken slur - - bf: accidental dims - - bf: measure bar width - - -****** -may 26 - -pl 65 - - bf pathfind /root/file - - massive Score_elem rewrite: - * group_element_i_ count - * support for removing an individual Score_elem cleanly. - * moved dep stuff into class Directed_graph_node - * Score_elems can be copied and deleted freely. - * junk PStaff - * Spanner_elem_group - * Line_of_{score,staff} now are Score_elems - * clean dep handling upon deletion - * delete unbroken spanners - * added a break_processing round. - * Super_elem - - junk Complex_staff, - - clean {lily}?proto.hh - - Element_group - - Score_elem now as virtual base class everywhere - - naming: Staff_elem -> Score_elem - - bf: make in toplevel dir - - bf: broken tie y-pos - - bf: sharing 4th, 8th and 16th noteheads - - bf: overlapping chords. <\multivoice c d > - -pl 64.wl - - new stem direction code - - bfs: wohltemperirt.ly (thanks, Werner) - - bf: stem direction - -pl 63.jcn2 - - doze compile - -pl 63.jcn1 - - bf: mi2mu mudela commands - - bf: mi2mu tracks - - mi2mu quantify tuning - - mi2mu TODO - -********* -may 16 -pl 64 - - exe's now built in out/ - - toplevel Makefile dep from make/Toplevel.make.in - - make_website: add version footer - - make_website: bf dist *.txt - - bf: fix loose bars : \meter 4/4; c1. - - Staff_elem -> Score_elem - - bf - - vbrace lookup - - resync barcheck - -******* - -may 15 -pl 63 - - bf: segfault during MIDI output with mi2mu output. - - kludge: parse error beyond eof - - don't read ini if toplevel file not found - - accumulate \kern in TeX output. - - bf: try to prevent long lines; TeX breaks on them. - - naming: Pointer->Link, IPointer->Pointer - - bf: \plet didn't work (MB) - - GMP manifesto. - -pl 61.jcn4 - - mi2mu -p -s16 fugua2.midi getting better! - plus factor 2 mi2mu speedup (fugue2.midi 5.50user) - - bf: Duration_convert quantify threshold down - - bf: (on quantify): tcols quantified; no silly voices - -pl 61.jcn3 - - lily parsing speedup: backup rules for lexer.l - - bf: mi2mu, using midi_voice list... - -pl 61.jcn2 - - all in all mi2mu speedup of about factor 8 since pl61 - (fugue.midi 82.72user to 10.30user on a 586.133) - what about lily? - - binary search on track-columns - - mi2mu IP*list to Array (implications?!) conversion - - mi2mu parsing speedup: backup rules for midi-lexer.l - - bf: zero denominator - -********** -may 14 -pl 62 - - make clean bf: remove lex & yacc files too - - added kludge in case measure too long - - added kludge in case of unconnected columns. - - kludged columns get error marker - - kludged lines get error marker - - -pl 61.jcn1 - - smarter + faster duration-convert using Array - - bf: mi2mu compilation/duration-conversions - - lots faster mi2mu, hopefully does type 1 too... -pl 60.jcn1 - - mi2mu handles non-quantified rests, try mi2mu -b wtk-i/fugue2.midi - - - -********** -pl 61 - - scales.ly bugfix: dimensions default to ((0,0), (0,0)) - - naming: PointerList->Pointer_list - - tied notes don't get accidental - - bf: crescendo size - - fixes: make_patch, - - bf: _"text" direction - - mailing list into lilypond.pod - -pl 60.mb - - set_flower_debug: Warning if -d is used when NPRINT is defined. - - Fixed several TeX details. vcenter renamed since it interfered - with LaTeX. Position of accents changed. - - New example; scripts.ly - - table_sixteen: added scriptdefinition (Lilypond breaks if a - script is defined without dimensions). - - bf: ifndef typos in p-score.cc, choleski.cc - - bf: Slur::do_post_processing(), whole notes caused SIGSEGV. - -(ascension break :-) -******* -pl 57.jcn4 - - mi2mu handles rests (quantified only) - - fixed configure buglet - - "!date" Fri May 2 02:18:12 MET DST 1997 - -pl 60 - - Request_register::get_feature(), tie direction, Slur direction - - lilypond output is now directly texable. - - make_website checks return status - -******* -may 5 -pl 59 - - Slur now into voicegroups, and take stems into account. - - bf: rest size in table. - - split Slur in baseclass Bow - - Tie, Tie_req, Tie_register - -****** -may 2 -pl 58.jcn1 - - bf: toccata-fuga-E.ly - -pl 57.jcn4 - - mi2mu handles rests (quantified only) - - fixed configure buglet - - "!date" Fri May 2 02:18:12 MET DST 1997 - -pl 58 - - lexer cleanup - - national chars in lyrics - - \stem 2; bf - - long comments: %{ %} - - *.ini mode bf - - bf: partial may be everywhere - - bf: meterchange not at start of measure - - some doc updates - - bf: stem too long if stem is down. - -pl 57.jcn3 - - dank je schat, voor wtk-i - - mi2mu tries to handle rests - - "!date" Thu May 1 02:34:04 MET DST 1997 - - maak je het niet te laat schat? - XXXX HWN - -pl 57.jcn2 - - small toccata-fuga-E.ly fixes - - \bar "||"; is now doublebar, "|." is finishbar - - collision hshift fix, with on-line assistance -****** -pl 57 - - lots of TODO doco - - text alignment bugfix - - bugfix Voice_group_regs::get_register_p() now is actually called too - - bugfix init of Text_item::pos_i_ - -pl 56.jcn1 - - toccata-fuga-in-E.ly, excerpts with real-life collisions - - \{l,r}{b,f}{toe,heel} --- using cmsy fonts... - - pedal.ly - -pl 55.jcn1 - - mi2mu man page - - make doc fixlet - - \[lr]heel \[lr]toe scripts (happy pedal studies, pa) - - lyric with width - - removal of some example files - -pl 56.mb: - - last duration fix - - makefile fixes - - space rest - - swedish note name update - -****** -pl 56 - - Massive Rest/Stem/Collision/Note_column rewrite: resolve -notehead/rest ambiguities and bugs. eg, [c8 r8 c8] - -pl 54.jcn1 - - standchen.ly: repeats; lyricii to end - - convert-mudela: help + usage - - fixed midi key/meter-change (triggered by martien.ly) bug - -****** -April 23 -pl 55 - - staff-side robustification - - script-on-rest bug - - doc update - - transpose syntax -****** -pl 54 - - bugfix Colhpos.cc::OK assert fail. - - Inclusion of MusixTeX MF files, - - detection of MF dir -pl 53.hwn - - stacked lyrics - - configure/make buglets. -****** -pl 53 - - spurious accidental bug. - - simultaneity check. - - added AUTHORS.pod - - convert-mudela auto from guess - - include -> \include - - change order of opening parse/init file - - Pulk_voice, Pulk_voices - - Request_column - - revised request-from-voice extraction. Now much faster - -****** -april 17 -pl 52 - - Buildroot RPM - - tex-prefix and tex-dir sep'd (here you are jan) - - convert-mudela framework - - Collision_register, Collision - - \hshift 1; input - - Features changed -pl 50.jcn1 - - LILYINCLUDE dir searched before DIR_DATADIR(?) - - lily reads from stdin again (but does not now when to stop) -****** -pl 51 - - transposition bugfix + doco - - LilyPond -> GNU LilyPond - - bugfixes for Staff_side and Note_column* - - wohltemperirt: complete - -****** -april 11 - -pl 50 - - merge rest / notehead. - - Staff_side as a base class for most "staff-side" symbols. - - version check - - Note_column_register, Note_column - - multiple scripts - -******** -april 8 -pl 49.jcn1 -Bugfix - - configure[.in], make/Configure_variables.make.in c++ (=doze fix) - - "configure; make" ok for doze, win32 target may be removed now - - win32/gcc 2.7.2 compile fixes -- why does this all compile - (without warnings, why can-t i even trigger warnings) under - linux/gcc-2.7.2.1? it's quite a tedious job fixing this - shit _on doze_ all the time. - * fixed #includes global-regs.cc, staff-info.cc, staff.cc - * key.hh:Key() -> Octave_key() - * added missing lily/include/input.hh: Input( Input const& ) - -pl 49 - - lsm template - - clef in cadenza mode. - - notename clear - - \command bla; for \meter, \clef, \octave etc. -******* -pl 48 - - notenames init - - Duration order -> grouping - - broken key s - - default octave - -****** -april 3 -pl 47 - - dynamic flowerlib - - Input mods: now use Source_file iso Sources - - makefile lib deps restructured - - make_website now produces in out/ - -pl 46 - - examples.pod - - LILYINCLUDE env var. - - push/popgroup - - website updated - - Swallow_register - - Lyric_register. - - Staff_sym_register - - user settable register config - - struct Input now used iso defined_ch_C_ - - Walker_registers and Staff_registers separated - - dynamic-reg -> hairpins - -pl 44.jcn2 - - doze configure/compile fixes - - doze make refixed - - faq - - install mudela manpage too - - RedHat spec lilypond.spec fixed - - target: rpm (make RedHat packages) - -****** -Mar 26 -pl 45 - - Removing unused Voice_regs & Voice_groups - - -O2 bugfix - -pl 44.jcn1 - - merged 42.3 42.jcn4 code trees (see stuff below) - - moving towards Mudela 0.1 (again) - * keyword "music" dropped for horizontal music - * keywords "\lyric" "\melodic" introduced, e.g.: - melody = \melodic { c c | g g } - * removed level of indirection: - - staff initialisable with music identifier list: - \staff{ global melody } - - \score and staffs alike - - gnu standard(?) help texts - - configure "creates" toplevel Makefile from make/Toplevel.make - -Bugfix - - fixed mi2mu - - write meter to track0 too... - - default octave - - new Sources in My_midi_lexer: sourcefile_p_ = get_file_l(): oeps. - (ain-t hungarian grand?) - -Examples - - updated for mudela 0.1 - -****** -pl 44 - - naming: _c_l -> _C - - pure parser, My_lily_parser - - ''a iso ``a - - Includable_lexer - - junk Input_file - - Duration in parser, Duration restructuring - - grandiose lexer hax. Flex should be fixed, really. - Lexer much faster now. - - opps. mi2mu broken - -****** -pl 43 - - transposition. - - $variable&@name - - warnings if incorrect mode - - missing scsii measure - - declaration used check. - - - -pl 42.jcn4 - - lily writes midi meter/key changes from requests - - mi2mu: - + write mudela 0.1 - + write bar change requests - + more tunable quantisation - -Examples - - half-new-menuetto.ly converted to mudela -almost- 0.1 - - new mi2mu of bach's wtk pre1/fugue1 - -pl 42.3 (jcn version) - - oeps, branched source tree - -pl 42.hwn3 - - const naming change (T const <-> const T) - - Mudela 0.1 (roughly the same as below..) - -pl 42.3 - - moving towards Mudela 0.1: - * all keywords must be preceded by backslash '\' - * explicit lexer switches '$' and '@' dropped - * keyword "music" dropped for horizontal music - * keywords "\lyric" " introduced, e.g.: - melody = \melodic { c c | g g } - * staff initialisable with music identifier: - \staff{ melody } - * chords: < c e > - * octavate ''c`` - * \meter{ 2/4 } - * \octave{ ''`` } - - configure sets CXX (to c++, commonly) -Internal - - renamed lexer.hh, mylexer.cc My_flex_lexer to my.lily.lexer.* - -pl 42.2 - - new lilyinput (Mudela 0.1) doc. -Examples - - new-twinkle.ly (in Mudela 0.1, hopefully) - -pl 42.1 - - further Makefile revamping. - - moved flowerlib - -******* -pl 42 - - -pl 41.hwn3 - - struct Lexer_prefs - - parser bug - - make uninstall - -pl 41.hwn2 - - make file rehack - - spec update - - make install - - detect TeX directory - -pl 41.hwn1 - - cygnus configure, - - updated versioning - - install.pod - -pl 41.jn1 -Bugfix - - doze compile -******* -pl 41 - - release - -pl 40.3 - - all of the above - - hw's configure.in - - p-name.xx fixes - -pl 40.hwn1 - - hairpin dynamics - - notename now as identifier. Parser/lexer cleanup - -pl 40.2 - - mi2mu --blonde-durations, --no-silly options. - - mi2mu starts to look promising, see examples -Examples - - pre1.midi.ly, fugue.midi.ly -Internal - - Duration handles blonde midi-durations - - More settings for Duration_convert - - lily writes meter too (ugh, howto?) -Bugfix - - mi2mu auto track number fix - - mi2mu / lily Midi_tempo fixed/added - -pl 40.1 -Bugfix - - lily midi output track 0 name - - mi2mu tempo fixed - - make out/make and out/make/Site.make in configure script! - - mi2mu double newline fix - - -****** -Mar 11 -pl 40 - - release - -pl 39-5 - - own versioning for mi2mu: 0.0.10 - - some file renaming mi2mu -pl 39-4 - - all of the above - -pl 39-hwn2 - - last bar bugfix -Internal - - simple dynamics - - experimental RPM spec. - - doco update. - -pl 39-3 - - all of the above - - m2m renamed to mi2mu - - better line breaking in mi2mu - - (somewhat broken) progress indicator for mi2mu - - mi2mu output === lily input (in names and durations, - always assuming voices > 1 though) - -Bugfix - - midi: note on/off only once per pitch per track - (sending all note-on events introduces cool mi2mu feature) - - make clean removes deps too - - mi2mu notename/accidental/octave, and key fixed - -Internal - - auto create of out-dirs, config headers, using tag file .GENERATE - -Examples - - stanchen.ly debugged - -pl 39-2 - - configure script help and in topdir again, duh. - - auto configure upon virgin make - - configured makefile stuff in make/out/ - - -******** -pl 39-1 - - doze target (for 16 bit dos xcompiler: gcc-go32) -Internal - - make/User.make; C..FLAGS sorted out -Bugfix - - make clean... - -pl 39 - - new make structure, featuring: - * top-level/sub-level build - * auto custom-library dependencies/build - * top-level/sub-level dist - * minimal(? can even smaller) specific Makefiles - * which makes for simple lib/exe module split (make/Template.make) - * integrated flowerlib - * all stuff into subbirs (make/Stuff.make) - * all headers into /include dirs (make/Include.make) - * all output into /out (executables into bin/) - * more make features, like make config, make help - * small lily lib - * lilypond-x.x.x/.version for toplevel lily version - * lilypond-x.x.x//.version for version (eg: flower) - * versioning using additional optional MY_PATCH_LEVEL - for easy make_patch - - - bin/cptogen - -Internal - - generic m2m header: m2m.hh - -Bugfix - - small fixes, make, dist, configure - -pl 38-5 - - all of the below, e.g. new filenames and new makefile - structure patches merged -****** -pl 38 - -Internal - - great filename renaming operation with - convention. - - printing methods for paper_def/lookup/symtab(s) - - untied all registers from complexwalker. Now registers are -intrinsically hierarchical. All walker communication is done via a -"top level" register. - -pl 37-3 - - m2m handles voices - - instrument, track_name, copyright/left stuff for m2m/ly - -Internal - - Midi_voice - -pl 37-1 - - text, key, tempo event in midi output/ly input - -Internal - - simple makefile structure, allows for multiple projects - -****** -pl 37 - - -Documentation - - language.pod as starting point for mudela devel. - - - Jan's patches: -Features - - m2m patchy --no-triplet option; - lilypond accepts m2m's real midi output (hand-add red tape) - - m2m output only valid durations, resync option wip - - m2m produces .ly output -Internal - - simpler and better naming for Duration* - - the great String renaming / index to base=0 change - - Track_column, Lily_stream - - Duration, Plet, Duration_convert taking load off duration calc. -Bugfix - - m2m duration calc - - - -****** -pl 36 - - Jan's patches: - - do MIDI rests cleanly. - - lily/m2m: time and tempo fixed for metric timing -Internal - - Midi_tempo - - m2m parses more midi stuff (all of bach-wtc); timing?? - - m2m recognises some commandline options -Examples - - fixed midi.ly - -******* -Feb 25 -pl 35 - - Register_group -Bugfix - - alignment of breakable items. - -******* -pl 34 - - better midi syntax. - - --midi,-M option. - - preliminary midi2mudela (/mudela2midi) converter: m2m (JCN) -Internal - - m2m sources: midi-*; (JCN) - - new Midi_walker, fixes several MIDI bugs. - - junked Midi_staff, Staff_column children, Midi_walker - - Midi_output - -pl 33-1 - - m2m parses midi -Internal - - Binary_source_file - - Source_file::error_str simplified -******* -pl33 -Examples - - Swedish notenames (MB) - -pl pre33-2 - -Bugfix - - midi pitch - -Features - - Jan's patches, see below -Bugfix - - some midi bugfixes. - -pl pre33-1 (JCN) - - - - midi output using pitches iso notename -Examples - - added midi output (some midi output files broken?) - - all melodic fixed (except for error.ly:-) - - midi.ly -Bugfix - - midiwalker line break - - empty/nonexistent include at top of ly - - midi #tracks - - midi pitch c0 - - midi poor man-s staff dynamics -Internal - - Midi_column, Midi_staff, Midi_walker - -pl pre33 (JCN) - - Jan's patches, see below - -Features - - simple plet notation (JCN) - - lyrics centred, but no fully suppored? (JCN) -Internal - - Midi_stream - - Mididef - - Midi_item, Midi_pitch, Midi_duration - - Midi_chunk, Midi_header, Midi_track - - preparations for midi output - - no exit upon context error (JCN) - - converted some "warnings" to errors; no output (JCN) -Bugfix: - - simple plet bugfix -Examples - - updated standchen, menuetto (JCN) - - new plet notation (JCN) - - plet.ly (parse and spacing tests) (JCN) - -******* -pl 32 -Features - - multiple meters, see rhythm.ly - - skip syntax/Skip_req - - score_wide_music: commands in staff now override commands in score. -Internal: - - command carnage - - Key_register - - Bar_register - - Meter_register - - meters now kept in baseclass Staff_walker - - Score_walker (to ease MIDI output) -Doc: - - Hungarian doco added to CodingStyle - -pl 32-1 - - music processing speedup - - website added to doco - - clef must *inside* music - - fixed spurious "beam too narrow" messages. -Internal: - - merge musical / non-musical staff_column - - musical/ non-musical requests - - Clef_register - - split up request.hh, Musical_req vs. Nonmusical_req -******* -pl 31 - -Examples - - Coriolan example (JN) - - standchen updated -Bugfix - - calcideal assertion bugfix -******* -Feb 12 13:55 -pl 30 - -Features - - better multivoice spacing - - move rest in multivoice staff - - errors in TeX output now warnings - - progress indicator - - music processing speedup. -Internal - - make spanner for staffsym; scrap Line_pstaff - - scrap simplestaff (Rhythmic_staff temporarily disabled) - - docxx 3.0 format comments - - split register source files - - hardcoded dimensions compile time - - Lookup::tex_hairpin -Bugfix - - non G-clef clefs - - script junking (2x) - - empty files - - beam::center (plet position!) - -pl 29 - - multiplatform Makefile (JN) - - context errors: bugfixes (JN) -******* -pl 28 - -Internal - - idealspacing slightly better for multivoice. -Doc - - Request_register -Bugfix - - Script.cc : float exception (MB) - - Request::Request(Request) copying of definition pointer (JN) - - cleaned dependencies for broken spanners - - stupid typo in Staff_elem::post_processing() - - init of hpos in PCol::PCol - - Word_wrap::solve() bug -******* -pl 27 - - preliminary WIN32 support (JN) -Features - - errors converted to warnings (JN) - - context errors (JN) - - As vs. as notename. - - WARNING: "melodic" stafftype will create the new Complex_staff! -Examples - - Lohman's Viola Quartet (JN) - - JS Bach Solo Cello suite II menuet (JN) - - -pl pre27 - -Features - - option --init - - last_duration_mode: default_duration is last duration entered - (\duration{\last}) - - syntax: grouping 2*4 3*8 - - preliminary multivoice support -Examples - - JS Bach's WTK example added. - -Internal: - - Text_reg and Script_reg -******* -pl 26 - - Documentation/lelie_logo.png - - 8-bit chars for input (see ltest.tex) (MB) - - quotes around string now optional -Bugfixes: - - unmatched ] (MB) -Internal: - - print/name methods of Staff_elem - - added Request_register - - Voice_group_registers, Voice_registers, *_register - - Complex_staff -******* - Jan 27 '97 -pl 25 - - other clefs added, keys typeset properly (MB) - -******* -pl 24: - - Lyrics (JCN) - - Commands in music-mode (an input feature) (there you are, Mats) - -******* -pl 23: - - TODO file inc'd - - cadenza mode. - - default extension, search path. - - error.pod,faq.pod - - Markers - - configure script - - inputfile name in output. -Internal changes: - - scrapped VPATH - - Make dependencies per .o - - Split Input_* parsing steps to enable marking -Bugfixes: - - unconnected columns - - -******* -pl 22: - - doco from mpp - - repeat signs - - | checks for bar in a voice (Barcheck_req) -Internal changes: - - naming (Hungarian notation, svec vs. Array) - - cleanup PScore, Score - - removed Staff_commands, plugging commands into Staff_column directly -Bugfixes: - - bug noteheadswap - - huge memleak fixed; unearthed lots of bugs - -******* -pl 21: - - scripts - - texts - - nplets (triplets!) -Internal changes: - - Move breaking stuff into a separate class Break_algorithm - - dependencies for Staff_elem's - -******* -Dec 23 -pl 20: - - updated doco to .pod - - include files from .ly -Internal changes: - - Rational for time measurement - - directionalspanner/textspanner - -******* -pl 19: - - grouping code: LilyPond can set advanced multibeams. -Internal changes: - - struct Moment - -******* - -pl 18: - - robust Staff_commands - -******* -pl 17: - - robust Input_commands - - merged Vertical_/Horizontal music - - PARTIALs with duration - - modularized lexer: multiple runs - -******* -pl 16 - - notenames configurable - -******* -pl 15 - - grouping code - - multibeams (simple) - -******* -pl 14 - - symtables from .ly - - Input_command - - Input_{score/staff} - -******* -Dec 2 -pl 13 - - Horizontal/Vertical music - - Input_commands diff --git a/Documentation/misc/CHANGES-0.1 b/Documentation/misc/CHANGES-0.1 deleted file mode 100644 index f5e3562839..0000000000 --- a/Documentation/misc/CHANGES-0.1 +++ /dev/null @@ -1,2141 +0,0 @@ -August 1 - -VERSION 1.0.0 - - - scsii-paper: no wordwrap - - bf's: texinfo - -pl 85.jcn2 - - ONEWS -> NEWS-0.1 - - bf: zip: list of docfiles - - bf: install info - - bf's: rpm spec - - website ok - - mudela version bump -> 1.0.0 - - bf's: '[a-g] -> , - - bf: broken.ly - - ly2dvi fixes, (PC) - -pl 85.hwn1 - - search & replace: jan@digicash.com -> janneke@gnu.org - -pl 85.jcn1 - - website fixes - - debian fixes (thanks, Bastian Kleineidam) - - some (yet unfinished) doco - -********* -pl 85 -july 30 - -pl 84.hwn4 - - revamped install directions. -pl 84.eb1 - - key undo - -pl 84.hwn3 - - misc scsii fixes. - - doco fixes - -pl 84.jcn3 - - bf: titledefs without poet - - scsii fixes - -pl 84.hwn2 - - don't make key items if no accs present. - - Oops. Lyric spacing should go to the right (and not left) (thanks, PC) - - barnumbering break priority. - - bf: tied chords - - 16pt init for yodl-mudela - - split span-score-bar.{cc,hh} - - junked most experimental_features_global_b stuff - - revised AUTHORS.yo - - dot stuff. Added a Dot_column_engraver (thanks, Mats) - -pl 84.jcn2 - - ly2dvi fixes - - w32/install doco fixes - - mutopia fixes - -pl 84.hwn1 - - fixes for ly2dvi + titledefs (Peter Chubb) - - merge Span_dynamic_reqs too - -pl 84.mb1 - - MF: Added breve and longa rests. - -pl 84 jcn1 - - top website - - ps-to-gifs: TRANSPARENT_IS_BROKEN (ppc hack) - -pl 84.uu1 - - doco fixes - -************* -pl 84 - -pl 83.jcn5 - - bf: typo mudela-doc - - long getopt all the way - -pl 83.hwn5 - - doco fixes - - bf: initialise axis_ filed of script - - separate versioning for mi2mu and flowerlib dropped. - - split bin/ in buildscripts/ and scripts/ - -pl 83.jcn3 - - egcs ICE stuff. - -pl 83.jbr2 - - lily/midi-stream.cc: added appropriate MODE options to open - midi output as a binary file. This should be pretty harmless. - - lily/lexer.ll: added \r as white and black space to enable - W32 native editors. This also should be harmless. - -pl 83.jbr1 - - flower/lgetopt.cc: report method fix. (String + char needs to be - fixed) - - -pl 83.hwn4 - - stepmake := stuff - - -pl 83.hwn3 - - \property maxVerticalAlign, minVerticalAlign tunes vertical - staff distances. See input/test/vertical-align.ly - - bf: scripts over chords. (thanks, PC) - - revamped aligning stuff: Align_element is baseclass - for Horizontal_align_item and Vertical_align_spanner - - bf: Clef_item with _8 does new/del correctly. - - more file renaming -elem -> -element - -pl 83.hwn2 - - doco fixes (thanks, Lambert) - - tieydirection,slurydirection overrides ydirection (thanks, PC) - -pl 83.jcn1 - - bf: stepmake - -pl 83.hwn1 - - rm'd clean-embeds.sh - - rm'd \octave from all examples. - -pl 83.uu1 - - mi2mu output mudela 0.1.21 - - meter -> time_signature - - bugfixes for mi2mu, divide by zero error. (thx, JBR) - - -******** -july 23 - -pl 83 -pl 82.hwn2 - - \musical_pitch -> \musicalpitch (mudela 0.1.21) - - meter -> time_signature, - - \meter -> \time (mudela 0.1.21) - - moving around files : -grav -> -engraver - - doco fixes - -pl 82.jcn5 - - doc make fixes; stepmake 34 - -pl 82.jcn4 - - lots of doco build/install/website fixes - - junked some doubles from doco - - - mi2mu syntax to 0.1.20 - - bf: mi2mu col creation - - bf: stream << '\t', int - - bf: mi2mu version - - bf: font-body.ly - -pl 82.jcn3 - - bf's: diff/stepmake - -pl 82.jcn2 - - bf: slur blow - - tie/slur ydirection - - makeflags / diff fixes - -pl 82.jcn1 - - rejects: verbatim copy of Coriolan from 81.jcn2 - -pl 81.jbr2 - - Documentation/README-W32.yo: Additions to section 2 - -******* - -pl 82 - -pl 81.jbr1 - - NT fixes for release target - * stepmake/stepmake: %=--% => %=% in diff target - Cygnus make with MAKE_MODE=unix forces a MAKEFLAG of --unix. - This results in a ----unix switch being passed to package-diff. - This may break normal operation of this target. - * stepmake/bin/package-diff.py: added a do nothing option --unix -pl 81.jcn2 - - bf: abbrev - - found ugly slur bug - - egcs workaround - - more Coriolan fixes - - half-beam fix - -pl 81.hwn2 - - lots of vocabulary - - break_priority_i_ fixes: barnumbering, marginstuff, marks now work more or less - - wrote lilypond-docs RPM spec - - major brainsurgery: class Graphical_axis_group: - * derive Axis_group_element from Graphical_axis_group, - * derive Graphical_axis_group from Graphical_element - - junked input/minimal.ly - - -pl 81.hwn1 - - cleaned up parser.yy (removed \textstyle from parser, other stuff) - - Slurs have height too. - - typewrite textstyle - - added error rule to music. - - Documentation/pictures/ subdir - - Documentation/topdocs/ subdir - - -pl 81.jcn1 - - coriolan fixes. - -****** -july 16 - -pl 81 - -pl 80.jcn1 - - Coriolan: bulk remainder of strings - -pl 80.hwn1 - - junked coriolan-alto.ly - - the great Search & Replace - * Score_elem -> Score_element - * hanwen@stack.nl -> hanwen@cs.uu.nl - * Colinfo -> Column_info - * add () -> add_xxxx () - * Col_hpositions -> Column_x_positionso - - lily-proto.hh cleanup - - moved Dot_column creation. Dot bug fixed - - typos README-W32 - - ADD_THIS_TRANSLATOR uses templates now. - -pl 80.eb1 - - accidental transposition - - -******* - -pl 80 - - some make vs $(MAKE) bugs - -pl 79.hwn1 - - bf lily/VERSION depends on toplevel VERSION - - bf postbreak_only scripts - - Staff_side now is horizontal too - - rm'd \octave in scales.ly - -pl 79.jcn2 - - w32 support doco (JBR) - - bf: install info - - truncated some very long filenames (not bo length) - -pl 79.jcn1 - - bf: ps-to-gifs - - html fixes - - more italian (TDM) - - more coriolan - - -********* -pl 79 - -pl 78.hwn2 - - reversed some of the beyond-too-ugly hacks for script/staffside. - - bf: Axis_group_element::access_Axis_group_element () (2nd fix for Hara_kiri) - - more .bib stuff. - - more doco, lots of small fixes for .yo stuff. - - -pl 78.jcn2 - - bf: make docxx - - some doco/website fixes -i - screenshots for website - - fixed locale - - v78 - - w32 doco - -pl 78.hwn1 - - more bib fixes - - uniformised virtual accessors for Score_elem children. - - bf Hara_kiri seg fault - - changed left == right spanpoint assert into warning - - changed Lyrics.textstyle to Voice.textstyle where appropriate - -pl 78.jcn1 - - counter fix - -************ - -pl 78 - -pl 77.hwn1 - - Key transposition (MB) - - move .dstreamrc to dstreamrc - - make website fixes. junked z.yo, language.yo - - split off computer stuff from engraving.bib - - articles from CMJ added to computer-notation.bib - - doco fixes - - syntax of \skip and \partial changed; take only single durations - - - -pl 77.jcn2 - - mark placement - - w32 doco - - html-footer: (PACKAGE)_COUNTERPATH - -pl 77.jcn1 - - doco, bib fixes - - fixed \mark A; \mark 12; - -pl 77.hwjc - - dropped perl - - py fixes - - -pl 77.uu1 - - \textstyle obsoletized, use \property Voice.textstyle now. - -******* -pl 77 - - bf: install info - - bf: key-grav.cc: ambiguous conversion - - bf: mudela.yo glossary em() -> \emph{} - -pl 76.jcn1 - - irix compile install fixes, .bib stuff (HWN) - - bracket bit lighter - - brace/bracket placement - - minor fixes in key code - - small website fixes - - invocation mudela-book - - try at bracket/brace placement - -pl 75.mb1 - - Introduced real key names, \key e; gives E major! - - Previous use of the \key command now called \accidentals, - \accidentals fis cis gis dis; gives E major. - - Support for special keys with different accidentals on - different octaves, \specialkey \accidentals Fis Bes gis aiss'; - -********** -pl 76 - - website examples: - * Thread -> Voice - * 18 -> 19 - * type /consists Engraver vs Line_engraver stuff - - bf: mutopia-index - - to relative: twinke-pop - - bf: clef-grav: null pointer assignment - - ran convert-mudela - -pl 75.jcn3 - - minieme fixes (HWN) - - bf's: node() names have changed: Mudela Book/ Convert Mudela - - bf: lilyponddefs.tex: removed \fi, added braces - -pl 75.hwn2 - - bf lilyponddefs.tex: added \fi to \ifs - - convert-mudela in python - - mudela-book in python. - - bf memleak Score_elem::do_brew_molecule () - - bf array bound read String_convert::split_arr - - bf free mem read Item::Item (Item const &) - - bf memleak Midi_walker::do_{stop,start}_note () - - bf memleak Spanner::do_brew_molecule () - - bf plet-engraver memleak - - checked input/bugs dir. - -pl 75.hwn1 - - junked octave (mudela 0.1.19) - - more .bib stuff - - doco fixes. - -pl 75.jcn2 - - binary releases: - * make deb - * dpkg 1.4.0.23.2 - * debhelper 0.96 - * /usr/bin/db_*: remove -p from install options (urg) - * make rpm - * make zip - - path to nice lilypond.info (must have a go at auto-nodes): - * mv'd Documentation/man/lilypond-info.yo -> Documentation/topinfo.yo - * included mutopia as example - - bf: gifs: $(wildcard) - - leave tarball in out/ too, after 'make release' - - mf-to-table: --package - - typo configure.in - - nt make fixes (JBR) - -pl 75.hwn1 - - clef 8 fix (AG) - - junked octave (mudela 0.1.19) - - more .bib stuff - - doco fixes. - -pl 75.jcn1 - - dropped mf/Rules.make - - dropped target doosdist - - dropped lilypython/pythonblurb - - --package rest of python exes - - packagepython/package-diff fixes - - -********** -pl 75 - -pl 74.jcn5 - - lost of (step)make fixes - - 'make release' - - --package - -pl 74.mb1 - - Fix ":|:" that spans several staffs - - bf: bar.cc, table of breaks - - bf: engraver.ly, Complete the addition of ChoireStaff - - bf: lilyponddefs.tex, placement of ":|". - - Cleanup clef-item and clef-grav, prepare for dictionary - of clef names. - -pl 74.jcn4 - - cygnus fixes: doco, compile, install - -pl 74.jcn3 - - packagepythonified genheader - - stepmake 21 - -pl 74.jcn2 - - renamed: ../redhat to ../RedHat - - renamed (or huh, was this a typo?): - ../sourcetree -> lilypond-x.y.z to ../lilypond -> lilypond-x.y.z - - what about ~/rpms; see stepmake/Variables.make? - - README.txt - - debashify: zet-lily (HWN) - - www, yodl, stepmake fixes - - ls-latex fixes - - mudela.yo fixes - -pl 74.jcn1 - - mudela.yo fixes - - bf: add-html-footer: duplicate - -********* -pl 74 - - bf: ps-to-gifs fix - -pl 73.jcn2 - - irix configure/link fixes (HWN) - - untested fix for "^\f" (HWN) - - add-html-footer: bgcolor=white - - m.yo: successful 2tex and 2html - - ps-to-gifs additions and fixes - - bf: --output - - (step)make targets: - * diff - * help - * rpm - * zip - - yodl-1.30.pre4: handle mudela(options)(mudela) - - small m.yo example for mudela.yo - - crude tex2yodl in stepmake - - mudela from stdin: default to filter behaviour - - allow lelie to act as a pseudo-filter --output=- - - fixed faq.yo - - atvariables - - bf's: module-deps - - bf's table-to-html and invocation - - small doco fixes - -pl 73.hwn1 - - more doco - - got rid of weird <> semantics - * Ties_engraver, Note_heads_engraver - * depracated \multi - * depracated Thread context - - - wtk1-fugue{1,2} now in relative mode. - - don't create Rest_collision, Collision if no more than one - collider (interpreting should be faster, less mem usage) - - depracate Line_group_engraver, must use Line_group_engraver_group - - -pl 73.jcn1 - - tiny topweb.yo fixes (added 'Documentation/out-www/' to some urls) - -********* -pl 73 - Yodl developent: - ftp://pcnov095.win.tue.nl/pub/yodl/ - http://www.digicash.com/~jan/yodl/ - - removed BLURBS from makefile - - stepmake pl 16 - - To Yodl: - * *.pod -> *.yo (should fixup pod 'manpage' legacy) - * dropped pod2* config stuff - -pl 72.hwn1 - - count "constraint off" as degeneracy - - zet-lily stuff. - - bf: add Meter_engraver - - bfs: tutorial - -pl 72.jcn3 - - Documentation/man texinfo-> YODL! - -pl 72.jcn2 - - more texinfo: - * texi2html workarounds: junked man/*.pod - * Documentation/man: pod -> texinfo - - Coriolan: viola part - -pl 72.jcn1 - - doco/mutopia/website fixes - -********* -pl 72 - -pl 71.jcn4 - - try at texinfo: - * lilypond.texinfo - * stepmake pl 13: texi2man - * lilypond.1 now generated from texinfo - * lilypond.info - -pl 71.hwn2 - - changed QLP asserts to warnings; now you can see the -shabbyness of the QLP code - - ChoireStaff context - - more tutorial doco - - mudela-book: name output files to per section and chapter. - -pl 71.jcn3 - - bf: convert-mudela: added StaffGroup - - bf: various .ly: (WhyIsThis; we'll drop a_"bla" and use '_', no?) - - stepmake pl 12 - - bf: abbrev + beam (urg: internote y dim bug) - - debian conffiles (AF) - -pl 71.hwn1 - - vocab fixes - - more tutorial stuff - - quart -> fourth - - depracated contexts with _ in name (mudela 0.1.17) - - bf: don't crash if default context can't be found - - distinction between global and local \header block. - -pl 71.jcn2 - - msgfmt check - - rpm: crude fix for input dir (urg: should get doc on rpm spec; - why is that so hard to get hold of in plain text?) - - found (bit undocumented) sticky abbrev mode in stem-grav: - c8:16 c: c: - * bf: enable disabling - * disabled sticky abbrev req - - urg: transposing for midi (should fix audio-items) - - sticky abbrev req: a8:16 a a a8: - - bit more coriolan - -pl 71.jcn1 - - added PATCHES to web page - - rpm-dist, doos-dist, show-latest to step - -******** -pl 71 - - bf: po install - - fixed somewhere: space between bar line and first note [HWN] - - bf: DOTTEXT - - bf: (don't) install libintl - - configure fix for irix tr - - bf release.py - - stepmake-0.1.9: fixes make install, rmp-dist - - bf: mf-to-table - - make-patch: lily-diff - -pl 70.jcn6 - - make htmldoc defaults to out-www - - moved some python stuff to stepmake-0.1.8 - - aux config scripts from stepmake - - stepmake-0.1.7 as ./stepmake: drop versioning on sub-package dirnames - - po fixes - - computer-forms.el - -pl 70.jcn5 - - bf: Documentation/make html - - bf: coriolan ... almost there - - bf's: lilyponddefs: (fixes make website) - * moved errordefs (mmm, perhaps \input's should have been moved...) - * moved def of interscoreline - * moved def of setdynamic - - stepmake 0.1.6 - - include fixes - -pl 70.jcn4 - - configure stepmake too - - make dist recurses into stepmake - - stepmake-0.1.5 - -pl 70.jcn3 - - make; make dist work (without packaging) stepmake-* - - mv'd outputter* tex-outputter* - its not so handy to have files with the same prefix as our out dir :-) - - verbatim included stepmake-0.1.4 - - DOTTEXT->.txt - - verbatim included stepmake-0.1.3 - -pl 70.jcn2 - - changed 'current' to 'lilypond' in scripts that only i ever use... - - tenuto shorter, thicker and follow into staff - - computer{.data,-forms.el} - - mark - - by default don't make libintl - - make install for libintl - -pl 70.jcn1 - - generic make fixes - -******** -pl 70 - -pl 69.jcn4 - - included libintl from gettext-0.10 - - fix: staff-bracket on one staff too - - bf: lilymake/Rules - - generic lily-make-0.1.0 package; shared as example with lilyx-0.1.0 - - junked automake stuff from aclocal.m4 - - bf: BASH scripts - -pl 69.hwn1 - - standardised virtual accessor naming for Requests - - doco updates. - - bf: tied accidentals. - -pl 69.jcn2 - - now DATADIR = datadir = /usr/local/share/lilypond ... - - bf's: DATADIR/datadir: by default: /usr/local/share; '/lilypond' - must be added whenever necessary - - bf: begin/end html for BLURBS; junked html-accents... - - html-accents - -******** -pl 69 (june 2) - - bf: table-to-html: convert_html - - bf: added fingerfont in fetdefs.tex - - crude fix: fetdef repeatcolon - - gallina.ly to relative octave mode (MB) - -pl 68.jcn3 - - bf: libintl.h include - - readded: DATAFILES =.*data (too late, computer vocab missing...) - - span-score-bar: - * don't set piano braces that span less than two staffs - * don't set staff brackets that span less than one staff - - bf: abbrev (internote dim) - - more coriolan, hara-kiri - - add arcs to bracket height to avoid colliding of brackets - - HAVE_GETTEXT - - computer.data: modest start of computer-related vocabulary - - configure (localdir/datadir) fixes - -pl 68.nenn1 - - fix for postbreaks past line_group - - bf: harakiri: set empty - -pl 68.hwn1 - - use AFM iso autogenerated table. - - more bits of tutorial - -********* -pl 68.jcn2 (may 29) - - bf: configure.in localedir/datadir (urg) - - libc-extension.cc: vsnprintf + check - - bf: blurbs - - @BASH@ for scripts that are actually (still...) bash iso sh - - check for bash - -pl 68.jcn1 - - gettext/intl checks; (AO) - - bf: meter-switch - - COPERTINA - -pl 68 - - AFM file stuff: afm.cc, afm-reader.cc, mf-to-table.py - - removed c0 position from get_staff_info () - -pl 67.jcn2 - - grace example - - bf: sticky plets - - bf: s0 - - bf: twinkle.ly - - junked implicit to-string conversions - * now used Scalar for all explicit implicit conversions - * moved implicit-conversion String constructors to to_str (...) - - _f with Strings - - bf: BLUB: re-added empty line - - bf's: reincluded: tar-docxx.sh, topweb.pod.in (me too!) - - po: unification/breaking-up of (some) messages - - crude get-lily/build-lily scripts - - make targets "po-update" "show-po-update LANGUAGE=xxx" - - handier internationalisation funcs _(), _f () iso macro - - String_convert::form_str (fmt, ...) - - -******* -pl 67 (may 27) - - multiple font sizes. See input/test/sizes.ly - - w32 blurb by Dominique Cretel - - bfs faqs - - cleaned Identifier further; canonical accessors - -pl 66.jcn7 - - bf: hara-kiri clefs: (the "u" is "\unknown"; how to fix this?) - - bf's: make website - - better configure language message - - bf: lilpond.spec - - bf: configure/localedir - - internationalisation: po/* - - distribute mutopia/ in binary rpm too - - FLAPTEKST - - "generate" all debian conffiles in out/ - - BLOEP; and BLURB substituted by configure throughout doco - -pl 66.jcn4 - - bf's standchen - - website fixes for .fly - - target doc++; tar-docxx fixes - - topweb fixes - - configure check for pod2html 5004/5003 - - switch init file on extension (some new ones): - * init.ly: normal structured Mudela - * init.fly: simple Mudela (for on-the-* without tape ly's) - * init.sly for simple init (no properties,scripts,midi) - - - bf: stem with flags (forgot internote dimension) - - bf's mutopia (urg, properties) - - String_storage: parse string identifiers (i didn't do it, nobody saw me do it, you can't prove anything) - - scsii-prelude: urtext and suggested slurs separated - - converted twinkle, kortjakje, standchen, preludes to relative - - conflily -> zet-lily - - -Q --find-quarts option - - bf: add-html-header: mailaddress () iso mailaddress - - bf: show-latest looks at MY_PATCHLEVEL too - - fixes scsii - - - -*********** -pl 66 (may 18) - - junked literature.pod (we now have the .bib file) - - bits of mudela.doc - - other-packages.pod -> other-packages.bib - -pl 65.jcn3 - - print_dimen: don't print "NaNpt" - - fixed Coriolan, added "instrument" and "instr" - - MIDI favours property "midi_instrument" over "instrument" - - Bar::do_height iso brew_molecule hack: not quite yet... - - stem/beam: more stuff runtime - * beam-dir-algorithms - * beam-stemlengths: take unnatural dir into account - * natural stemlength - * forced stemlength shortening - - bf: Bar: don't make molecule if invisible; fixes hara-kiri - - robustification of MIDI: never return "", always return sane - string and print warning - - bf: typo Key_change_req::sharps(); fixes MIDI - - scsii: new relative octave fixes, gigue - -pl 65.jcn2 - - included some auto-generated mf files for MikTeX (doos). - - hara-kir: nicer set-transparent - - relative.pod: doco'd blonder relativeness - - -pl 65.jcn1 - - staff-margin-engraver - - blind scsii fixes for new relative mode - - bf's: hara-kiri-* - - jumps in topweb.pod - -********* - -pl 65 (may 15) - - fixes for template instantiation (AO) - - junked standchen-easy, - - mudela 0.1.15: deprecate \duration, junked \octave relative - - small doco fixes - - moved data from Melodic_req into Musical_pitch (analogous to - Duration and Rhythmic_req) - - implemented \relative c' { .. } and associated Relative_octave_music - - junked \octave relative; - -pl 64.jcn2 - - simple compile fixes - - bf: beam:stemlens:knee - - hara-kiri-* - - bf: ctags - - preludes-3.lym4 - -********* -pl 64 (may 13) - -pl 63.jcn3 - - beam stemlength stuff runtime - - dropped lq for beam-stemlengths, fixes [d d d] [d g d] - - ugly sed fix for commas in .ly.m4 - - beam damp corrent fix - - scsii: small fixes - - preludes.ly; dropped silly preludes.tex - -pl 63.jcn2 - - vocabulary on website - - data-to-html.py - - bf: beam damped-slope correct - - bf: make website - - some preludes-* fixes - -pl 63.jcn1 - - "relative" sizes for titledefs - - bib2html/man2html urls in INSTALL.pod - - auto-generated feta stuff in doosdist - - bf's: make dist, docdeps - - bf's scsii - -************ -pl 63 (may 11) - - - non_fatal_error () (should use!) - - Mozart Horn concerto 3, horn part - - bf: plet-spanner - -pl 62.jcn11 - - bf: beam::set-stemlen:iterations - - knee-bug.ly - - use knee in menuetto-ii - - bit on slope damping - - some bf's and doco - - bf's scsii - - scsii: bf' new: sarabande - - bf's allemande, courante - - bf: knee: stem through beams - - bf: too high beams - -pl 62.hwn1 - - bf jcn8: deep copy Scope (ughugh. I want GC!) - - cleaned Identifier - - mudela 0.1.14 'a -> a, - - class Scope - - .bib updates - - key robustifiction for extreme octaves - - ly2dvi 0.11 - - energy "normalisation" removed. - -pl 62.jcn8 - - beam: knee input/test/knee.ly - - vimrc init for lily - - errors display column number too - - scsii: bf's, new: allemande, courante - - looked at lyric lengthen "mir________." (eerste weigering) - - beam: knee [c \stemdown c' \stemup 'c] - - expressions parsed at identifier_init - - bf: slur/stem/whole x-adjust: - * use note-col width iso mean note-witdth - * note-column:width () - - now string variables in paper too -> mudelapapersize - - paper_def: real dict -> identifier dict - - My_lily_lexer: identifier dict stack - - init paper and a4 stuff - - \include \string - - all rvalues from parser var pool -> access rvalue as \rvalue - - string variables - - ly2dvi 0.10.jcn1 - * mudelapiece, mudelaopus (ugh, fix) - * textheight - - more titledefs - - bf: table 20 typeface widths - - bf: toplevel/*.txt - - bf: ugly Documentation/mutopia fix (should rename dir to Mutopia/ ?) - - bf: make examples - - www.digicash.com/~jan/lilypond - - make website fixes - - ambiguity fixes in .ly's - - bf: relative-octave warning - - relative-octave: guess if ambiguous - - ambiguity warning for relative mode - - scsii: prelude - - bf: slur gap - - bf's: scsii: menuetto - - .txt -> $(DOTTEXT) - - make website fixes - - .txt fixes - - bf: typo make-patch - - bf: *dist.sh cleanup - - bf: release.py - - bf: make/Targets doc (removed .txt extension) - - rpm-dist.sh - - make doos dist fixes - - doos-dist.sh windoze dist script - -- removed useless spacing hack at spring-spacer.cc:692 - - bf: los-toros: do multi-bar rests (setting SkipBars = 1) - - scsii-menuetto.ly -> menuetto-urtext.ly, -cello.ly and -alto.ly - - bf: \octave c'; for relative-octaves - - bf: Documentation make - -********* -pl 62 - - no-touch hak. - - bfs: multi measure rests - - fixed the website. - - add extra space after breakable columns. - - -pl 61.jcn8 - - mudela relative octave feature: - * Documentation/relative-octaves.pod - * \octave relative; - * lilypond -f for automatically finding new relative quote positions - (sorry, fully automated convert is too complex) - * mutopia/ltor.ly: octave quotes reduced from 511 to 59 - - better conflily - - bf: abbreviation-beam-engraver: set beam::multiple_i_ - - bf: open_abbrev_parens - - dotted/dashed slurs/ties - - fixed-up scsii-menuetto; use dotted-slurs - - slur_thickness runtime - - bf: typo lilyponddefs: elevendefs - - moved hard-coded slur parameters to runtime - - make-patch -r: diff against latest release - - allow semicolons after paper_identifier and \include - - params.ly: parameterised some paper vars - - bf: beam quantise for slope = 0 - - interbeam (mult>3) open-up to paper-def to paper! - - "implemented" Paper-def::staffheight - - simplification + bf bezier clipping - - vandale fix - - moved doco from paper*ly to fonts.doc - - papers with expressions - - paper20.ly: rewrote precalculated values as expressions - - simple expressions in mudela (paper-body only) - - beam_thickness centralised and run-time... - - \nobreak - - bf: beamquantise: never sit if mult > 1 - - bf: broken slur y-offset (not!) - - pagelength hack in tex/headers - - alignment of bracket (in span-score-bar.cc) - - boolean *break_b to continue break_penalty_i; maar nu... - - removed paper20 includes, \paper_twenty from examples - - dropped latex files - - renamed standje, standchen. - - parser accepts range of mudela-versions - - Mudela_version - - String_convert::split - - bf's: los-toros-oboe - - braindead Break_req with penalty; junked Disallow_break_req and - Break_force_req - -pl 61.ag1 - - implemented octave-shifted clefs. - -******** - -pl 61 - - bf: mudela-book error msgs - - don't dist feta-tables. - - bf: mf-to-table, deps[0] catch - - reworked initialisation parsing logic; Got a no-redtape mode - for free - - 20 pt staffsize now default - - dependencies for LilyPond (-d, --dependencies). --debug moved to -D - - (c) 1998 - - ly2dvi 0.10 (JAF) - - changed \begin[options]{mudela} to \begin{mudela}[options] - - more WWW hacks. - -pl 60.jcn2 - - minor adjust for asymmetricity of beam symbol - - added TEST beam quantisation; see input/test/beam-pos.ly - - removed some empty .cc .hh - - Grandstaff -> Grand_staff (After [Gerou] and Harvard Dictionary of - Music) - - bf's: slur and tie post-processing - - cleaned-up bow: get encompass - - cleaned-up beam-yspan and beam-leftpos quantisation - - misc.cc: some funcs to get lower and upper bounds from array of values - - interval.*: Slice (Interval of int) - - added some doco to beam.cc - - removed some x,y by-ref passing in Lookup - - cleaned-up beam-yspan quantisation - - cleaned-up slur get encompass - - configure: --disable-optimise for compile without -O - -pl 59.jcn4 - - bf: beam quantise - - bf: sticky plet bug - - bf: chords in beam - - bf: typo beamquantisaton - - bf: don't blow_fit infeasible bows (x_i < x_0 || x_i > x_n) - - bf's: beam/stemlengths, beam-bug [c8 c16 c16] - - bf: placement broken tie - - yet another try to raise bar-number - - bf's: bow tangent clipping, allow higher bows - -************ -pl 60 - - mats patches: use Latex font stuff. - - fixes to the .59 patch release (jcn) - - make website|examples target - -pl 59.jcn3 - - bf: preludes-5 - - no inline compiler warnings by default - - bf: gcc 2.8 compile bow.cc - - moved functions with loops from varray.hh to varray.cc - - bf: minimum length for tie - - slur clipping standard - - bf: second broken slur minimum length - -pl 59.jcn2 - - added some to .dstream - - bf: second part of broken slur - - slur encompassing noteheads adjust - - bwv'd preludes - - bf: make-patch -d - - doc'd rerunning of autoconf - - rest of real standje (rename and move simplified standchen to - input/test?) - - bf: clipping - - bit better bar number placement - -pl 59.jcn1 - - more INLINE - - bf: multi-measure rest - -pl 58.jcn7 - - los-toros: do multi-bar rest - - - -*************** -pl 59 - - ly2dvi 0.9.hwn1, -K switch, - - doc: moved manpages in separate directory. - - do WWW stuff via make - - mutopia-index.py - - ly2dvi 0.9 (JAF) - - multi platform build fixes - - junked embedded switches, embedded MF, obsolete TeX stuff - - junked virtual matrix storage: inlined most matrix computation, - speed increase of 30% - - junked taupindefs, eglerdefs - - rm'd taupin/egler from INSTALL - - doc: engraving.bib, colorado.bib - - input hierarchy. - - -pl 58.jcn6 - - multi-measure rests: moved acknowledge from timing-translator - to -grav - - slur clipping experimental... - - bo to b - - always announce multi-measure - -pl 58.jcn5 - - bf: reset plet after reading mmrest - - try at not generating moments... - - Multi_measure_rest 'symbol' - -pl 58.jcn4 - - try at multi-measure rests: part.ly - - bf's: slur get_encompass - - bf: slur clipping - -pl 58.jcn3 - - experimental (--test) clipping of too high or tilted slurs - - nicer slur control output and ps code - - bit thicker and round-capped tuplet bracket - - bf: slur.cc: RESIZE_ICE - -pl 58.jcn1 - - varray.hh bezier.cc, slur.cc patches to avoid gcc 2.8.1 ice - - some inlining fixes - - configure: use -O to enable inlining - - included and fixed new make-patch.py - - bf: Mutopia.make - - bf: offset: operator - () - - ugly hack bezier: do blow_fit twice - - bf's: bezier: rotate,translate - -*************** -pl 58 - - more *.make hacking - - bracket fix (AG) - - clef fix (PC) - -pl 57.jcn1 - - reincluded test/bow.cc - - promoted Bezier bows to standard - * bf's: broken slurs - * some bf's: verneukeratificering van JCN code - * some bezier slur doco - * calculate Ties with Bezier bow - * junked tex-slur.cc - * junked ps-slur code - * junked height-only slur-correction - * lots of bezier/slur fixes - * bezier:blow_fit - -************** -pl 57 - - verneukeratificering van JCN code. - - lots of updates on our own makefile system. - - junked automake & documented it - - put rods into Spring_spacer too. Much cleaner - - bf: weird spacings (enge floats) - - bf: too many constraints added. - - smarter constraint check - - bf: table16 fontsize. - - - 56.jcn1's empiric computer science. - - debian patches (AF) - - solaris/irix patches (AO) - - - pl 56.jcn5 - - bezier and slur: cleaning and fixes - - bf: removed silly experimental beam feature - -pl 56.jcn4 - - reintruduced slope in bug [c8 c16 c16] in favour of stemlen bug... - - staff-side: accent half line higher - - reincluded silly los-toros latex file - - bf's: bezier.cc,bow.cc, mat.hh: rotate - - bf: bezier slur: handle broken slurs - - bf: beam - - dehairifications of bezier.cc - -pl 56.jcn3 - - bf's: offset multiply, matrix rotate - - dropped los-toros latex file - -pl 56.jcn2 - - even nicer excentric slurs; - - input/slur-bug.ly - - los-toros with barnumbers ;-) - - nice version of height-ajust bezier slurs (see sleur.ly --test) - - bf's beam: - * slope in[c8 c16 c16]; - * allow no INTER position for normal quantising - -pl 56.jcn1 - - bezier curves with raaklijnen - -pl 56.ag1 - - `Makefile.am.wild's now should work correctly with VPATH (AG) - -************ - -pl 56 - - more dutch vocabulary - - Barnumber FAQ added - - bf: abbrev over whole note. - - feta: reverse turn. - - bf: rod distance - - bf: local key clashing - -*********** -pl 55 - - bezier check and ajust for slur height - - better slur height ajust - - DO chmod 755 *test/*sh - - bf: discretionary of || - - bf: scripts within staff - - NOT Grandstaff -> Grand_staff (yet?) - - bf: cresc. decresc. height lookup.cc,init/table* - - bf: staff-symbol (script placements) - - staff-group-bracket - - bf's preludes, los-toros - - nicer trills - - adjustment slur extend - -********** -pl 54 - - bf dynamic_grav - - bf accidentals with key change - - bfs with command-items in non-breakable columns. - - typos (thanks LM) - -pl 53.jcn1 - - two new BUGs - - preludes-* with trills - - nicer trills - - fixed ugly slur extend bug - - first try at symphonic work: (start of) Coriolan - - fixes: los-toros - - test/ with some stupid tests - - bf, again midi-output - - --no-timestamps options for lily/mi2mu (to enable make check targets) - - removed doubles in lilypython - - smarter prev_version for make-patch - -*********** - -pl 53 - - bf: c4 \< c4 \< - - bfs of spacing stuff - - -pl 52.jcn6 - - make check target - - moved flower/test to flowertest - - dist fixes - - flower no longer independent package - - bf: GNUmakefile - - bf's: configure: debugging (default) /profiling - - bf: Rational iface (fixes MIDI output) - - bf: non --srcdir configure + build with GNU make (ugh) - - ugh: autowildflower - - bf's: invoking wild-perl - - bf: ugh: staff-side.cc: placement height - - bf's: gnu 2.7.2 link (huh?, everyone using 2.8?) - - make-patch: default diff against (copy of) srcdir - - bin/conflily configures in ../build - - GNUmakefiles that do: - * auto-update of Makefile.am.wild - * auto-switch to builddir - - bf's: configure --srcdir - - fixes for los-toros/twinkle/test-lyrics - - latex file for los-toros (ugh) - - staff-side: symbols closer... - - half fix of midi output? duh. - - oboe1 los-toros - -************ -pl 52 - - split up elem-group stuff. - - per line widths - - miscellaneous fixes by WL. - - -pl 51.jcn1 - - bf's: dutch->nederlands - - Cygnus b19 compile/link fixes - -************ -march 27 -pl 51 - - changed dutch -> nederlands, german -> deutsch etc. - - norwegian (AG) - -pl 50.jcn4 - - fixes for cygnus' gnu-windows32 beta19 - be sure to compile with -fno-rtti - - proof of concept for automated updating of Makefile.am - see mi2mu/GNUmakefile (still somewhat clumsy) - - mv'd both config.hh.in to acconfig.h - - copied printing/debugging/optimising options to flower conf - - (some modified) fixes from AO - - beginnetje los-toros-oboe - - bf: DIR_DATADIR - - bf: trills - -************ -pl 50 - - deprecate autowild - - --srcdir fixes - - ly2dvi 0.8 - -pl 49.jcn2 - - static (default) and/or shared libs flower and lily - - patch from AO 'libtool 1.1.1' - - mf: trill-symbols: feta-slag.mf - - shared libs (ugh: hardcoded switch in configure set to static) - - some fixes: denneboom.ly, standje.ly/standchen.ly - -******** -march 19 - -pl 49 - - parser assert changed to warning - - fix stdin reading - - small jcn fix - - changed unbound Spanner from assert to warning - - forced breakpoints - - add a nowildcard: stmt to wild-perl - -pl 48.jcn5 - - ugh: double parser/lexer: - be sure to rm lily/parser.cc lily/lexer.cc or bin/clien - before re-running autowild! - - V.RSION - - bin/clien bin/meek - - bf's: flower/VERSION, flower/config.hh, lily/lexer/VURSION - lib/config.hh bin/convent-mudela - - lost of automake fixes - - automake - -****** -march 12 -pl 48 - - Pitch_squash_engraver makes Rhythmic_staff possible. - - some fixes to buildscripts for sgi irix - - misc. patches (WL) - - move away from libg++: rolled own Rational class.. - - don't make gif files Documentation/ by default - - ly2dvi manpage (JAF) - - ly2dvi 0.7 (JAF) - - more clefs. (MB) - -pl 47.jcn2 - - bf: interbeams and beam-stemlengths for size != 16 - - bf's: preludes - - more introduction - -pl 47.jcn1 - - voice{one,two,three} defines - - preludes-*: fixes, junked multi, broke-down score-block - - mudela-book: added center option - -****** -march 6 -pl 47 - - Abbreviation now a separate item. - - bf'd some gcc 2.8 warnings. - - bf'd spurious space in autodep. - - more clefs (MB) - -pl 46.jcn1 - - start mudela introduction - - -pl 46.jcn2 - - bf's: preludes-* - -******* -feb 27 - -pl 46 - - span-bar at upstep. - - bf: \score { \score_identifier } - - tenor clef (MB) - -pl 45.jcn2 - - preludes-4,5,6 - - bf's denneboom (oeps, see loop) - -pl 44.jcn7 - - text-item.cc: try to get fingers just above note... - - set minimum space between columns - - bff: mf/Makefile out/*log required: new .ly .tex's with make-dist :-( - - bf's midi ascii-debug output - - bf: property instrument - -******* -feb 12 -pl 45 - - bf: translator switching - - SunOS and IRIX patches (AO) - - preludes bugfixes; preludes.tex ugh (JCN) - - shared lib numbering (AF) - - various fixes for debian (AF) - - ly2dvi .6.jaf (JAF) -pl 44.jcn6 - - bf: crescendo.cc: bigger and use bar_size - - slur: guess extra height for height limit for extending notes/stems - - ps: adjustable slur height limit, bf crescendo - - -****** -feb 6 -pl 44 - - ly2dvi 0.6.hwn1 - - ly2dvi 0.6 (JAF) - - use ly2dvi for website - -pl 44.jcn2 - - fingers default to above note - - preludes-2.ly - - parser: fingerings - - preludes-1.ly - - bf: denneboom.ly - - preludes-3.ly.m4, standje.ly, preludes-4.ly - - make rule for macro ly-files - - pletvisibility (init/property.ly): - * default no bracket with beams - * invisible plet bracket feature - - finger dir in text-def - -******* -feb 2 - -pl 43 - - bf: broken Plet_spanners - - more GNITting - - avoid some more global ctors, for NeXTstep - - some NeXTStep patches from tiggr - - don't do overstrike/bold chars in textfiles - - -pl 42.jcn2 - - bit hesitating start of mutopia - - bf: don't try to typeset unterminated plet - - separately sticky plet durations: "c4 c4*2/3 c8 c4*1/1", ok Mats? - - denneboom.ly (half-baked version) - - indent and shape, see ^ - -pl 42.jcn1 - - bf: memmem revisited - - bf: ps: draw_plet vertical endings - - renamed stem_start to stem_begin - - bf: plet bracket placing on differently orientated stems - - more standje.ly and fixes -****** -jan 28 - -pl 42 - - ly2dvi 0.5 (JAF) - - italian.ly (thanks, Paolo) - - bf: first \mudelapaper output (BS) - - bf: cathedral + bazaar URL (thanks, Barrie) - - bf: libc-extension.hh (AO) - -pl 41.jcn4 - - plet brackets (always) in ps (only) - - Plet_spanner derives from bow - - bf: mf/Makefile: let %.tex %.ly depend on %.mf, - iso non-distributed %.log - - mi2mu mudela 0.1.8 - - bit better plet number placement - - handier plet syntax: [2/3 c8 c c ]1/1 and \[2/3 c2 c c \] - - Plet_swallow_engraver for lyrics - - bit better plet number placement (NOT) - - new plet syntax: combined beam and plet open - - more standje.ly - - new plet syntax: start: \plet2/3 stop: \telp1/1 - - Plet_req, Plet_engraver; removed plet stuff from beam - -****** -jan 20 -pl 41 - - warn for score with multiple Music blocks - - bf: \plet (MB) - - \textsharp in 16pt - - malloc frobnifying - - more fontsizes: 26pt, 11pt, 13pt - - \textstyle "bold" - - .rpm: remove old fonts - -pl 40.jcn2 - - bf: typo scores.cc - - bfs: non-default base constructor calls - - bfs: virtual destructors - - standje.ly: the real standchen (first bit) - - gcc 2.8 compile - - nicer scsii-menuetto - -pl 40.jcn1 - - bf: breaking of :| bar - - bf: lyric substitution of _ -> ' ' flower/libc-ext:memmem - - no slope=0 beams between stafflines - - bf: tex without lily-ps-defs - - bf: embedded mf shift: added '%' to \embeddedps - - doos compile - -****** -jan 12 -pl 40 - - some doco fixes - - debian diffs (AF) - -pl 39.jcn2 - - bf: bit smarter atan() for feta-sleur (thanks wendy) - - bf: y quantise of multiple down beams (typo) - - minor doc fixes - - bf: distribute mfdeps and moved from mf/out/mfdeps to mf/mf.dep - - some changes to ANNOUNCE - - fixes for simple slur/tie placement - - embedded MF fonts identified by parameters -> reusable runtime fonts - - clean-embeds.sh - - runtime MF beams: feta-beum.mf - - bf: enable switching PS off - - updated runtime MF feta-sleur.mf with new PS slur algorithm - -****** -jan 5 1998 -pl 39 - - 0.2 ANNOUNCE sketch - - unix style paths for LILYINCLUDE env - - show all output pages on website - - ps-to-gifs.sh - - bf: wtk1-fugue2 - - python make-website - - higher brace resolution - - phased out musixtex stuff - - bf: rhythm.ly - - PS slurs - - PS beams - - Bow units - - turn on PS by default - - turn off barnumbers by default. - - bf: halfbeam size. - - bf: -M bug - - stafflinethick in PS (crescendi) - - continued (de)crescendi (in PS) - - bf: spurious beam reqs - - handle unfeasible spacing cleanly. - - ML-address change - - output naming: default to basename[-serialnumber].{midi,tex} - - bf: clef width - -pl 39.jcn2 - - make-examples.sh - - leftright repeat sign + repeatbar dims - - smaller minimum sized rod at end of bar - - bf: spacing.ly - - less space at begin of bar - - experimental whitespace fixes at begin and end of bar - - added to beams.ly - - open-up beam spacing for mult > 3 - - fixed hang/sit to overlap iso aligne with staffline - - fixed inter beam spacing, paper*.ly - - scsii-menuetto.ly fixes - - init/property.ly - - property settings for beam quantiseing and damping - - provisionary multiple-beam fix - -****** -pl 38 - - bf: \> \! \ff (crescendo overlap) - - misc feta-fixes, flageolet sign. - - midi tempo fixes. -pl 37.jcn3 - - max beam slope "compile time parameterised" and set to 0.6 - (oh, how we need runtime generated beams!) - - beam's left y-pos quantisation - - beam slopes' y-span quantisation - - stem.ly - -pl 37.jcn2 - - feta: fixed sizes small numerals + flageolet - - -******* -dec 12 -pl 37 - - --postscript - - don't crash non-fitting grouping (thx, John) - - attach unended spanners to a column (thanks John) - - bf: unended tie - - bf: tie direction - - bf: unended slur - -pl 36.jcn2 - - feta: small numerals - -******** -dec 9 - -pl 36 - - bf: notehead collisions - - bf: dot y-position - - use Item::break_priority_i_ for horizontal alignment of breakables. - (it still sucks) - - junk some derivation checks, junk Normal_*_bar - - FlowerLib fixes. - - twinkle fixes. - - feta: flag/clefspacing - - -******* -dec 5 -pl 35 - - naming: lily-init iso symbol.ly - - mf braces - - center textscripts. - -pl 34.jcn1 - - mf: nicening of dyn, klef, rest - - fingerfont - - bf: 12/8 - - -******** -dec 2 -pl 34 - - bf: mf: numbers and alto clef - - bf: scsi-menuet - - PS crescendos - - ly2dvi diffs (JAF) - - debian diffs (AF) - - w32 doco fix (JCN) - - -******** -nov 24 - -pl 33 - - added abbrev.ly to font.ly; rm'd abbrev.ly - - don't process scores on parse errors. - - bf: kortjakje.ly - - bf: invisible stems in beams (abbrev.ly) - - lytodvi script (JAF) - - output Paper_def settings to TeX file. (eg: linewidth) - -******** -nov 19 -pl 32 - - change type checks (ughugh) to derivation checks (ugh) - - this fixes clef bug. - - bf: order of breakables: meter comes after bar. - - bf: do error iso coredump on unknown symbol-table - - bf: release.py, copy patch too. - - bf: add makefile dep for disting MF logs. - - bf: don't read font-en-tja*.ly, but feta*.ly - -pl 31.jcn2 - - first version of (non-ugh) c-klef - - bf: mi2mu: notes of zero duration as comments - - feta: ugh c clef - - -******** -nov 17 - -pl 31 - - bf: replaced Score_column assert by a warning (thanks Scott) - - bf: mi2mu version output (thanks Scott) - - faq updates - - always output lily header with Lily version - - bar mucking: make scorebars/braces different from repeat bars. - - feta: repeatcolon, clef bf's - - debian/ updates. (AF) - - moved debian stuff into toplevel dir - -******** -nov 11 - -pl 30 - - feta: G clef. - - scripts now do relative coords (fixes lyrics + barnumber bug) - - bf: Lyrics lexer mode - - bf: bass clef - -******** -nov 6 -pl 29 - - feta: bass clef, bf: dynamics, bf: 64th flag - - -******** -oct 30 -pl 28 - - revised Staff_symbol::brew_molecule_p () - - naming: \makelilytitle - - fixes for TeX titledefs (JAF) - - junked some obsolete pedal stuff. - -pl 27.om-je-te-helpen-met-je-ps-spul.jcn1 - - embedded slurs: - * bf: placements - * added \embeddedtex - * postscript is default - * fixed \embeddedps - * fixed mf: draw_slur - * postscript macro: draw_slur - -******** -oct 29 -pl 27 - - -t/--test switch for experimental stuff. - - bf: debian optimize is not with 'z' - - mf: naming feta fonts are now called feta16, feta-beams16, etc. - - feta: ledgerline - - lily adjustments for new and elegant ledger line - - bf: mf-source path. - -pl 26.jcn1 - - bf: numerals - - sleur.ly - - embedded slur testing - - bf + patch: make-patch release.py / VERSION - - -******** -oct 26 -pl 26 - - bf: \transpose - - feta: numerals 0 - 9, rewrote flags. - - - -******** -oct 22 - -pl 25 - - variable stemlength - - feta: 32nd, 64th flags - - font.ly - - dist & tarball made in out/ - - rewrote release.sh in python - - notehead/stem attachment better. - - more Stem cleanage - - related Beam cleanage - - started numeral font (JCN) - - bf: whole rest outside staff. - -********* -oct 20 -pl 24 - - internationalization preps (FP) - - rewrote make-patch in python - - BUGS: added another flex/libio crash explanation - - feta: flags - - -******** -pl 23 - - feta changes: 1/4 rest, flat, bf 8-128 rest - - bf: cadenza - - bf: scripts - - bf: rest-collision - - bf: meter placement - - junked cpgento.sh - -********* - -pl 22 - - bf: lyric 's- Zondags - - bf: colliding accidentals: renamed translate(Real,Axis) to translate_axis() - - renaming of scripts - - strings with escaped characters. - - bf "string_with_\"_embedded" - - bf: mf/Makefile - - feta changes (trill, organ pedals) - - updated mf-to-table for new feta conventions - - changed header format to something sensible. - - moved staff to centerline == 0; - -******** - -pl 21 - - shrinking uses more energy than stretching - - check IO error on writing (disk full?) - - -********* - -oct 8 -pl 20 - - don't swallow non lyric-stuff in lyrics - - x-position of Stem - - more feta changes - - move scripts to right - - genheader.py replaces genheader.perl - -pl 19.jcn2 - - bf's mi2mu: - * Midi_track_parser::note_end_all - * staff output uses key, meter, tempo read - * command line read minor key - * minor key notenames - -pl 19.jcn1 - - small changes to sharp, fermata - - small changes to lilypond.lsm+doc, lelievijver.lsm - - mi2mu updeet + bf - -pl 19 - - bf: keyword.cc rm'd struct defs - - dots: support for feta dots. - - lots of font (feta) tjanges - - mf-to-table rewrite in python - -********* -pl 18.jcn1 - - check for python, mf-deps fix - -pl 18 - - bf: Box[X_AXIS] = b - - bin/mf-deps.py script - - moved beams out of font-en-tja into vette-beams. - - Made corresponding .cc changes. - - -jcn patches - - egcs compile (no link yet) - - nicer 4rest - - beam font (je kunt wel tegen een grapje, eva?) - - mf-to-table: - * "breapth" (x-depth) feature - * handle generic stuff such as beams - - polished noteheads - - fixed 8-128 rests - - 4rest - - mf-to-table generates tex defs - - bf:mf-to-table and conflily outname check - - 8-128 rests - -****** -sep 24 - -pl 17 - - bf: ledgerline width - - bf: toccata-fuga-E - - took out some hardwiring of tex-beam - -pl 16.jcn1 - - mf-to-table.in: generate mozarella metric info tables - - autometric.mf: write metric info to mf logfile - - ital-r.mf, smaller ital-m.mf - - variable streepjes length (top/bottomlines); fixed (for 20pt?) - - streepjes twice as thick as staffrules - - even more pronounced bolletjes -- how 'bout this wendy? - - quarter and half note after drawings (a/b less distinct) - -***** -sep 19 -pl 16 - - revised mudela-man a bit - - ; optional after \musicidentifier - - bf: doco about {Mus*,Opus}TeX - - bf: configure: MFDIR - - bf: String::operator bool () removed - - bf: String::operator char const * () removed - - bf: Line_spacer::~Line_spacer () added: plugged memleak - - bf: Line_of_score::do_unlink () call Spanner::do_unlink - - bf: rests in beams - - bf: textnatural - - bf: 20 pt flags - - bf: longarest - -pl 15.jcn1 - - bf: typos whole and half notehead - - de-uglyfied bolletjes.mf - - ascii output of font metrics in mf logfile - -****** -sep 17 - - -pl 15 - - put top of NEWS file in the webpage - - breadth first search for engravers. - - bf: coriolan-alto.ly - - Stem / Notehead width now properly calced - - Atom and Symbol merged - -pl 14.jcn1 - - lily's own noteheads (balls/globes :) (font-en-tja*.mf) - - {table,paper}* and taupindefs adaptations (when are we moving?) - - fp, sf, sfz dynamics - - font.ly - - bf: dist mudela-mode - -******* -sep 15 - -pl 14 - - Simple but nifty mudela-mode.el for Emacs - - slightly better syntax for single-note-repeat, now default kept in -Stem_engraver - - bf: Abbrev_beams are not the only beams (see: jcn4, stem-info, thanks, Jan) - - a CPU timer for Interpreting and Breaking - - Separate Score_elem: - * invoke-once stuff in Super_elem (using function pointers; much cleaner now) - * geometrical stuff into Graphical_element - * Axis_group_* accept Graphical_elements iso. Score_elems - * A dimension cache, hopefully this makes lily a bit faster - * TeX output moved out of Score_elem, separate interface Outputter - - - < \multi 2; bla > -> \multi 2 < bla > (mudela 0.1.6) - - bf: don't do \multi if \type specified - - Translator switching: Change_translator, Change_iterator - - -pl 12.jcn4 - - fixed dynamic f, magstep bug - - gaps on abbrev-beams - - bf: stem-info - - bf: last abbrev - - bf: stem: do_width - - bf: removed rest-column.hh - -******* -sep 11 - -pl 13 - - big Rest/notehead rewrite: - * separated Rest, Note_head and Dots - * Dot_column: dots are now chord-wise aligned - * Rhythmic_head is base for Rest, Note_head - * Merged Note_column and Rest_column - * Rest_engraver - - grand Engraver/Translator/Performer rewrite. - * properties: \property voice.dir = -1 (mudela 0.1.3) - * Input_translator junked, now Translators are generated -by the parser (mudela 0.1.4) - * Translator changing: \translator Staff=oboesolo - * Translator preselect: \type Staff=bla < c4 >. (mudela 0.1.5) - * Engraver/Performer now derived of Translator. - * Engraver_group_engraver/ Performer_group_performer derived of - Translator_group - * renamed: Voice -> Thread, Voice_group -> Voice - - renamed Audio_score to Performance - - junked mididef statics - - Audio debug output - - bf: excess [] in scsi - - bf: swallow \skips - - bf: don't crash on infinite dims - - renamed wohltemperirt to wtk1-fugue2 - - bf: address in GPL - - bf: errors in stdin - - bf: stop if errors in init files - - bf: move stem too when doing collisions - - Molecule::add_XXXX -> Molecule::add_at_edge () - - doco updeet: why no midi FAQ, index, CodingStyle hungarian - - -pl 12.jcn3 - - try at better dynamic font, copied from cmbxti10: mf/* - - typesetting abbreviation beams; abbreviation-* - - some simple abbrev fixes + code cleanup (dank je, lieverd) - - typesetting simple abbreviations: c4:16 === [c16 c c c] - -pl 11mb - - Support also for \longa in duration-convert.cc, init/ and tex/ - files. (MB) - -******** -sep 3 - - -pl 12 - - bf: don't redefine tex primitives like \textfont and \mathfont - - nicer broken slurs (?) - - bf: error status upon parse error - - robustness in Lookup::*slur - - bf: mi2mu: warn if 0-length string in midi-file - - output id-footer - -******** -sep 1 - -pl 11 - - forms for Musical vocabulary - - ignore \r for windows - - Now paper{score,def} & midi{def,score} derived of class -Music_output[_def]. Score is almost empty. - - Engraver hacking: - * junk Text_engraver - * Timing_engraver - * barnumber now really counts the number of bars - * Separated Stem_engraver and Beam_engraver - * junk Stem_beam_engraver - * no need for Stem_reqs - - use Direction = {LEFT, RIGHT, UP, DOWN} iso. -1, 1 throughout source - - ties and slurs with Drul_array - - junked Spanner_elem_group - - bf: w32 fixes - - Spanner now spans items. - - more GNITting ( bla ) -> (bla), indentation - - Drul_array - - Paper_column now is derived of Horizontal_group_item. Items -are no longer hardwired into a Paper_column - - bf: stdin input - - PCol -> Paper_column - - Wtk-i, fugue1, prelude1 (SR) - -******* -aug 21 -pl 10 - - bf: init pending_indent_i_ - - output header to TeX file. Who wants to write TeX to make it work? - - - mi2mu: bf's, --key option - - removed Duration(int,int) - - bf: Duration_convert::dur2_str - -pl 9.jcn2 - - redo of mi2mu frontend (midi-parser) - - bf: String_convert::bin2_i; added bin2_u - - bf's: Binary_source_file - - bf: constr. Tempo/Timing_req -pl 0.1.8.jcn3 - - table20, standchen-{16,20}* -******* -aug 18 - -pl 9 - - declare rhythic_request - - preliminary support for real \mudelaheaders - - context-sensitive arithmetic spacing. Looks alot better - - silly GNU braces. - - JCN fixes for pl 8 - - bf: midi instrument - - Vocabs from GMP-I - -pl 8.mb: - - use log of duration-name - -******* -aug 15 -pl 8 - - - gif -> xpm - - bf: Whoops! Open eyes now, when finding shortest note in -spring-spacer. Fixes spacing problems. - - GNU coding: parentheses (here you are, Franc,ois :-) - - all macros now UPPERCASE - - Identifier blondification: don't use void* - - Identifier doesn't store its name. Much cleaner now. - - bf: Rest_collision_engraver now always announces - - bf: announce Staff_sym only once -pl 0.1.7.jcn1 - - complete redo mid/back-end of mi2mu - - bf: do not create/play empty Audio-{text,instrument} events - - -******** -aug 14 - -pl 7 - - Audio_element as base for Audio_item and Audio_staff. fixes -midi-lyric segfault - - added "Gallina a due violini" (MB) - - make MIDI files on website. - - Collision now also is an Element_group. - - bf: announce Collision when created - -******** -aug 13 -pl 6 - - bf: 13 shift/reduce in parser fixed - - bf: plets in parser - - bf: main.o (again) - - german notenames (RM) - - Score_elem::offset_ now relative to its X/Y groups. Slight -speed increase? - -******** -aug 12 -pl 5 - - - Wordwrap revert - - added LilyPond in WWW titles - - oops. A quaver is a 8th note, not a 4th - - bf: main.o remaking in lily/Makefile - - unhair Voice_iterator - - bf: error if no music in score - - bf: don't create translators if Chord element is empty - - bf: ctor of Tempo_req - - use virtual do_equal_b() for request comparison - - bf: turned off default plets: c4*2/3 c4*2/3 -> c4*2/3 c4*4/9 - - bf: time_int() of an empty chord/voice - - more corrections to GMP Manifesto - - debian updates (AF) - - bf: g++ ICE in Performer_group_performer - - use fread() for reading in Simple_file_storage - -pl 0.1.3.jcn1 - - mi2mu: simplification +bf lily_stream: indentation and wordwrap - - mi2mu: bf: blunt: non-alpha(num) chars from identifiers - -********* -aug 11 - -pl 4 - - correction of GNU Music Manifesto - - moved lowlevel stuff of Source_file to Mapped_file_storage. -Interface via File_storage. (Now using Simple_file_storage) - - bf: c4-"A"-"B" - - bf: exit status - - declarable keys - - Engraver_group_engraver::find_simple_engraver() - - bf: lily/Makefile - - bf: Midi_note_event ctor - - bf: tempo request - - popular twinkle twinkle (JV) - - mudela: parse tempo requests, \midi{ \tempo 4= 60;} - -****** -aug 8 -pl 3 - - don't crash if no Clef_engraver. - - PScore -> Paper_score - - bf: Score_elem::extent() init of interval - - bfs: {Horizontal,Vertical}_group related - - bf: don't change original Item while doing making - multiple copies - - bf: configure DATADIR - - bf: type of spanbar. - -pl 0.1.2.jcn1 - - minor doco fixes - - revived Midi_walker - - moved midi out of performer-* to audio-* - - Audio_staff - - removed all members from performers - -******* -aug 7 -pl 2 - - junked Line_of_staff - - bf: --output - - bf: . in lexer - - bf: mi2mu version number. - - bf: in mudela-book - - bf: don't forget to make mi2mu - - Bar_number_grav: measure numbers (experimental) - - Bar_column_engraver, Bar_column: scripts on bars - - rewrite of {Horizontal,Vertical}_group. Yes, again. -Now neatly integrated into class hierarchy - - Axis, Axis_group - - Debian rules (AF) - -pl 0.1.1.jcn1 - - Audio{column,score,item,...}, more generic audio - - bf: Makefiles - - bf: mi2mu mudela version -********* -aug 5 - -pl 0.1.1 - - {Horizontal, Vertical}_group. A score_element may be in at most one. - - This means Horizontal_group_item and Vertical_group_spanner need special support. - - This also means a big speed increase - - configure cleanup - - bf: Choleski solve. - - doc updates: lilygut, INSTALL - -pl 0.1.1.hwn - - recode of Break/Colhpos interfaces - - Gourlay_breaking: dynamic-programming optimal solution for - casting off. Word_wrap is still optional - - some printing short cuts if no -d specced. - - band_matrices for column calcs - - more Diagonal_storage fixes - - retake: INFTY fixes ( now infinity_mom, infinity_f ) - -pl 78.jcn3 - - configure: ln and zip - - target doosdist -> lilypond-x.x.x.exe.zip: + executables - sources - - - diff --git a/Documentation/misc/CHANGES-1.0 b/Documentation/misc/CHANGES-1.0 deleted file mode 100644 index 5cff9ea377..0000000000 --- a/Documentation/misc/CHANGES-1.0 +++ /dev/null @@ -1,515 +0,0 @@ -pl 17 - - fixed RPM building. - -pl 16.hwn1 - - ridiculous slur dims fixed. - - ly2dvi32.py -> ly2dvi.py, ly2dvi.sh -> ly2dvi-old - - use re iso. regex for python stuff. - - bf: mudela-book.py - - updated install directions. Made lilypond-login for csh - - bf: installdirs of MF stuff - - Dictionary implementation using hash tables (LilyPond is 3% faster) - - Cache [non]group_l_arr () calls in translator-group.cc (LilyPond is 4% faster) - -pl 16.uu1 - - debian URLs, make/stepmake.make patch - - further debian fixes. - -pl 14.tca1 - - partitas - - prall{mordent,prall} patch. - -****** -pl 16 - - read property ydirection and tieYDirection for tie direction. - - bf: slur over rest. - - bf: include path - - part of jcn2 - - configure --enable-guile - -pl 15.jcn1 - - autoconf on mf,mfont mp,mpost - -pl 15.am - - Lots of patches from *Adrian* *Mariano*! - -********** - -pl 15 -pl 14.hwn1 - - \lyrics iso \lyric (mudela 1.0.7) - - cleaned up real_expression syntax. - - removed optional_semicolon nonterminal after toplevel assignment - - MInterval Music::time_int () -> Moment Music::duration () - - junked Music_iterator::daddy_iter_l_ - - junked Sequential_music::offset_mom_ - - tempo compression: - * syntax: \times 2/3 Music - * Compressed_music, Compressed_music_iterator - - flower: init rational to 0 - - flower: removed P?Cursor<>::P?Cursor (), using pointer iso ref now. - - don't install into TeX, but into ${datadir}/{mf,tex,ly} (todo: ps) - - -********* -pl 14 - -pl 13.uu1 - - syntax for \translator: (\name "Name") - - bfs for footer - - bf: init/{book,center}-fragment.ly, YODL nofooter stuff. - - bf: redeclaration - - bf: doc fixes - - bfs: egcs 1.1 - -pl 13.mb1 - - bf: Lookup::afm_find, the width was undefined for the feta fonts. - - bf: refman.yo - -pl 13.jcn5 - - bf: init/paper* missing `;' - - lilyponddefs.ps fixes - - crude output name fix, see scores.cc - -pl 13.jcn4 - - some ps output fixes - - lilyponddefs.ps: some sane implemenations - - removed (some) ghostscript internals - -pl 13.jcn3 - - PostScript output version 0.0; do - export GS_LIB=$HOME/usr/src/lilypond/tex - export GS_FONTPATH=$HOME/usr/src/lilypond/mf/out - make -C mf pfa - lilypond -t example-1 # or try: lilypond -t twinkle :-) - gv lelie.ps - - ps: - * lots of output fixes, chars, strings - * tex/lilyponddefs.ps: added rather braindead defs - -pl 13.jcn2 - - tex/lily-ps-defs.ps (./tex?) - - grand output rehack - * dropped {dimen,tex}.{cc,hh} - * {ps,tex} stuf to {Ps,Tex}_lookup - * init/table*.ly: added #parameters - - ps fonts: - * ps-to-pfa.py generates valid type-3 fonts - * do: make -C mf pfa - * set: GS_FONT=GS_FONTPATH=$HOME/usr/src/lilypond/mf/out - -pl 13.jcn1 - - crude postscript type 3 font: - make sure to have mfplain.mem metapost precompiled macros - make -C mf ps - gv out/feta20.sp - -******** - -pl 12.mb1 - - bf: feta-timesig.mf Added horizontal space, minor corrections. - - Changed meaning of Staff.timeSignatureStyle: - C Use C and stroked C for 4/4,2/2 - old Use old style mensuration marks - 1 Use single number - Cn/m Set symbol explicitly, n/m=2/2 or 4/4 - oldn/m Set symbol explicitly, n/m=2/2,3/2,3/4,4/4,6/4 or 9/4. - All other time signatures are typeset with the default two-digit - layout. - - -pl 12.jcn2 - - Lookup abstract base class - - Lookup/Symtable(s): separation of input/output - -pl 12.jcn1 - - preparations for braindead PostScript output - -pl 12.hwn3 - - praeludium-fuga-E to relative mode - - bf: mudela-mode.el - - bf: BIBINPUTS - - more dutch glossary + explanations - - table-to-html fixes -pl 12.hwn2 - - bf: mymycode in .yo - - VERSION to out/ - - add VPATH to mutopia - - access_Identifier (bool): (non)copy arg now explicit. - - bf: lilypond-latex.tex - - - -pl 12.hwn1 - - \remove "Engraver_type"; - - \output "bla" -> output = "bla" (mudela 0.1.6) - - \property defaultclef -> \property defaultClef - - naming of access_{Engraver,Performer,Translator_group} () - - changed syntax for \translator in \paper{} (mudela 0.1.6) - - declared contexts: - - StaffContext = \translator { .. } - \translator { \StaffContext } - - - elt_b -> elem_b - - bf: add Separating_line_group_engraver to RhythmicStaff. - - -pl 12.am1 - - large doc patch, ChoireStaff -> ChoirStaff - -******* -pl 12 - -pl 11.uu2 - - added Transposed_music for mixing transposition and relative - -pl 11.jcn1 - - bf: config.make striproff - - texinfo -pl 11.mb2 - - feta-timesig.mf: Added some flesh on C and C2, - added old-style mensuration marks. - -pl 11.mb1 - - Added feta-timesig.mf, font for C and alla breve. - - -pl 11.uu1 - - new \property: meterSignatureStyle for C and C2 time sigs - - bf: BIBINPUTS - - stepmake 53 - - bf: gif vs. png stuff - -******* -pl 11 - -pl 10.uu2 - - plet-spanner fix. - - large doc patch (thanks Adrian) - -pl 10.jbr1 - - aclocal.m4, stepmake/aclocal.m4: Choose specific python - - stepmake/bin/release.py: Use the same python calling process - - make/lilypond-vars.make: PATH should not use PATHSEP. It is fine - to hard code it to `:' on both Windows NT and UNIX. - - stepmake/bin/package-zip32.sh: Perform configure with a specific - python, ie cygwin32 python on Windows NT - -pl 10.uu1 - - junked \octave - - marginBreakPriority, direction==LEFT - - mf-to-table NT fix (JBR) - - createKeyOnClefChange property - - -pl 10.jcn1 - - mf-to-xpms for Harmonia - -pl 9.jbr1 - - scripts/convert-mudela.py: We must close infile and outfile before - a rename occurs. NT Windows locks open files. - stepmake/bin/package-zip32.sh: renamed all python bins to: - .py in NT Windows distribution. - - -********* -pl 10 - -pl 9.jcn1 - - started gnuisation of website - * filetype and size - * 'no gifs due to patent problems' - - bumped stepmake version nr (again): - please update stepmake/VERSION after making changes to stepmake... - -pl 9.hwn1 - - do default midi,paper by toplevel \paper / \midi (mudela 1.0.4) - - bf: error if no Score context - - notename table now can be declared as well. - - junked \clear - -********* -pl 9 - -pl 8.uu1 - - junked \staff, \multi - - bf Music_list::Music_list (Music_list const&) - - AC_SUBST(PATHSEP,DIRSEP) - - generate Documentation/tex/out/*.bib (AM) - - a4 fixes (AM) - - bf: metafont-*.make - - parser.yy: intlist mods. (mudela 1.0.2) - - \melodic -> \notes (mudela 1.0.3) - - typo: calcalute_dependencies () - -pl 8.jcn3 - - gif -> png - * ps-to-pngs.sh - * stepmake - * website - * yodl-1.31.4 (to be released) - - target 'texinfo' -> 'info' - -pl 8.jcn2 - - more doco in texinfo (with yodl pl3) - - bf's: package-diff - -pl 8.jcn1 - - removed tutorial from texinfo, yodl2texinfo is still rather broken - - bf: setlocale NUMERIC to 'C' - - removed ugly space from print-dimen - -******* -pl 8 - - make website fixes. - -pl 7.jcn1 - - minor stepmake/yodl fixes - -pl 7.uu1 - - - changed separator in vocabulary - - added barAlways and defaultBarType properties. - -pl 7.hwn1 - - changed header format. Use a + for concatenation. - - \header { key = "concat" + "string" } - - (mudela 1.0.2) - - allow computed properties in translator definition - - GrandStaff = \translator { - minVerticalAlign = 1.5\staffheight; - .. - } - - - Music inheritance. Datastructure and parser now follow this grammar - - Music_list: - | Music_list Music - ; - Simultaneous_music: '<' Music_list '>' - ; - Sequential_music: '{' Music_list '}' - ; - - - bf: Item::do_unlink () don't iterate on attached_span_l_arr_, -because it is changed by Spanner::set_bounds () (thanks Thomas) - - bf: URL Documentation/index (thanks EP) - - bf: twinkle.ly (thanks EP) - - bf: mi2mu (thanks Murray) - - bf: mudela-book --dependencies - - split LaTeX and TeX stuff - -pl 7.tca1 - - more Partita's - -pl 7.jbr1 - - aclocal.m4,make/lilypond-vars.make: added PATHSEP as AC_SUBST to - help support Windows NT doco build. - Documentation/ntweb/index.yo: minor spelling changes - - -************* -pl 7 - - refman updates by Adriano Moriano. - - -pl 6.jbr2 - - scripts/ly2dvi32.py: Fixed bug with lily input including multiple - files. Also, we now stream out lilypond log one line at a time - for better feedback. - -pl 6.jbr1 - - scripts/ly2dvi32.py: Added some doco, add postscript option, set - MFINPUTS along with TEXINPUTS, modified initialization sequence. - Made some Python style changes per Han-Wen suggestions. - - Documentation/man/ly2dvi32.yo: Added a manpage for ly2dvi32. - - stepmake/bin/package-zip32.sh: Added doco distribution. Removed - the installation directory after zip operation. - - Documentation/ntweb/index.yo: LILYPOND -> LILYPONDPREFIX and - comments about MiKTeX-1.11. - -pl 6.tca1 - - First movement of Partita II (BWV 826) in - mutopia/J.S.Bach/Cembalo-Partitas. Lilypond output was so - beautiful that I'll have to write the rest of the partita. - -pl 6.uu2 - - mudela-book.py --dependencies - - more doc fixes (AM) - - warn if declaring a keyword. - - \grouping 4 2*3; now accepted. - - patches to standchen.ly - -pl 6.uu1 - - - mudela-book handles \input now - - vocabulary fixes by Adrian Moriano - -******** -pl 6 - - largish rehack: - * Super_element is now an `abstract' class, - * Paper_score directly contains one Line_of_score. The - breaking/postprocessing/deletion is mixed with the output phase. - * Hopefully this will save memory for large scores. (benchmarks, anyone?) - * bf: Horizontal_vertical_group_item::do_unlink () should call - - Axis_group_item::do_unlink () - - - changed LILYPOND to LILYPONDPREFIX - - added tfm and dvi target for mf/ - - reincluded english.ly - - doc fixes (thanks, Adrian Moriano) - - doc fixes. - - mf: ex height added. - -pl 5.mb1 - - Mudela 1.0.1: Changed \accidentals -> \keysignature - - Identifiers can be used in textual scripts: - - - tempoString="Allegro molto assai"; - - [...] - - c^\tempoString - - - -pl 5.jbr2 - - aclocal.m4,config.h.in,flower/file-path.cc: Added PATHSEP and - DIRSEP to configuration to support windows style path and pathlists. - - stepmake/bin/package-zip32.sh,stepmake/stepmake/package.make: - zip target now calls package-zip32.sh which creates winnt - binary distribution zip file. xzip target continues to use - package-zip.sh for Jan's cross-compiled version. - - lily/main.cc: Added a search for LILYPOND environment variable to - better facilitate binary distributions. - - Documentation/README-W32.yo: Updated information on running lilypond - on winnt. - - - -pl 5.jcn1 - - (step)make fixes from yodl - - minor doco fixes - - bf: patch in website after 'make release' - -pl 5.jbr1 - - Documentation/ntweb/Makefile: Used absolute url for LilyPond Homepage - - Documentation/ntweb/index.yo: Minor mods per Jan's suggestions - - - - -************* -pl 5 - -pl 4.jcn1 - - texinfo docs, lots of yodl TODO - - junked some makefiles - - ntweb: use BLURB - - bf: pletvisibility - - adaptions for yodl-1.31.2's automatic texinfo conversion - - reinclude of 1.jcn2: - - renamed -alto -> viola - - bf: avant-gardish six preludes - - bf: ly2dvi warnings - -pl 4.jbr1 - - stepmake/stepmake/install-outfiles.sub.make: fixed typo - - scripts/GNUmakefile: add ly2dvi32 to installation list and fixed - included executable-targets.make to facilate installation of scripts - - Documentation/ntweb: Fixes to nt web page and added topdoc like - automation. - -********* -pl 4 -pl 3.mb2 - - Changed text script alignment: center -> left - - TeX commands counts as one character when calculating - the length of a Text_def - -pl 3.jbr2 - - Documentation/topdocs/index.yo: Added link to NT dist page - - Documentation/ntweb/: Added Makefile and index.yo to build the - NT dist page - -pl 3.hwn1 - - stepmake hacking - -pl 3.uu1 - - stepmake MAKEFILES -> STEPMAKE_TEMPLATES - - count \texcommands in tex string - - -pl 3.jcn1 - - bf: website: empty toplevel readme's - - bf: xs4all (again?) - - can't administer ftp site now: put patch into website - - -pl 3.jbr1 - - stepmake/stepmake/Executable_targets: UNIX cross-compile doesn't - work with $(DOTEXE) on source of install command. - - stepmake/Generic_targets: creating multiple dirs with mkdir - requires -p option - - scripts/ly2dvi32.py: General and Winnt specific fixes - - -********* -pl 3 - -pl 2.uu1 - - solaris 2.6 compile/make website fixes. - - rm'd WWW.make - - stepmake .43 - - pcnov095.win.tue.nl -> ftp.cs.uu.nl - -pl 2.hwn1 - - mi2mu naming of track output - - bf: do key restore sign only once - - ly2dvi32 preliminary version (JBR) - - bf index.html link - - bf mudela-book.py - - -********** -pl 2 - - scalar compile stuff - - bf install directory - - YODL note - - GUI faq update - - bf ly2dvi - - stepmake split: Po.make - - make check target - - dist AFMs and manpages - - split up mudela.yo in glossary.yo, tutorial.yo and refman.yo - -pl 1.jcn1 - - www.digicash.com www.xs4all.nl - - fake msgfmt - - make uninstall fixes - -pl 1.jbr2 - aclocal.m4,stepmake/aclocal.m4,stepmake/stepmake/Variables.make: - Support install target for unix, unix cross compile, and - Windows NT - -pl 1.jbr1 - stepmake/stepmake/Executable.make: DOTEXE was missplaced - - scripts/convert-mudela.py: program_id should write to stderr - -************** -pl 1 - - mi2mu fix: \key "D" - - \hoffset - - started new NEWS file - - lots of stepmake hacking - - aclocal.m4 copied from stepmake - - ly2dvi 0.12 - - build the doco from the source tree. - - include website in RPM - diff --git a/Documentation/misc/CHANGES-1.1 b/Documentation/misc/CHANGES-1.1 deleted file mode 100644 index b98baa12cf..0000000000 --- a/Documentation/misc/CHANGES-1.1 +++ /dev/null @@ -1,2006 +0,0 @@ -1.2.0 - - website fixes. - - initialize Script::dir_ - -pl 69.jcn1 - - doco typos - - tex-rules typo - - added missing feta-braces*.mf -pl 68.lu1 - - texinfo fixes -**************** - -pl 68.jcn2,3 - -pl 68.hwn1 - - more tutorial stuff. - - note^\dynamic scriptdir. - - dynamics listen to verticalDirection as well. - - \property automaticMelismas -> \property automaticMelismata - - dynamic padding for crescendi. - -pl 68.jcn1 - - small tutorial fixes - -********* - -pl 67.hwn1 - - tutorial updates - - \property beamAuto -> noAutoBeaming - -pl 67.uu1 - - abc2ly updates - -pl 67.jcn1 - - bfs: refman/parser subtract - - chord::find_additions_and_subtractions: termination assurance - - bf: refman: chord-inversion examples - - -******** - -pl 66.hwn1 - - bf: chord mode unsigned '-' -> unsigned CHORD_MINUS (1 SR conflict). - - refman reedit. - - dotdown only when verticalDirection is set. - - bfs: abc2ly convertor (more or less) successfully converts -movement 2 of Beethoven 7. - - \repeat "semi" -> \repeat "volta" - - all spacing params into paper vars. - - spacing before grace notes. - - warn if font not found. - - staccato dot / tenuto centering - - spacing for clefs. - - bf: Stem_staff_side::do_substitute_element_pointer (); - - new screenshot - -******** -pl 65.hwn1 - - refman updates - - added \simultaneous { } , \sequential { } syntax, for -consistency. - -pl 65.jcn2 - - bf: if tie then melisma - -pl 65.uu1 - - bf: squashed 2 sr conflicts in parser. - -pl 64.jcn2 - - stanchen almost without " " hacks - - if tie then melisma..? - - refman updates - - Abbreviation.beam -> Chord_tremolo - - bf: chord tremolo vs beam over rests - - bf: note width for noteless stem - - - -******** -pl 64.jcn1 - - resurrected abbreviation beam - - coriolan fixes - -pl 64.hwn1 - - reference-manual updates. - - slurdash -> slurDash, keyoctaviation -> keyOctaviation - -pl 64.uu1 - - \property forceHorizontalShift - - bf: denneboom.ly - - warn if translator switching to self. - - warn if brace at end of lyric syllable. - - bf: Repeated_music::alternatives_length_mom () - - \property automaticMelismas: if slur then melisma - - \property noVoltaBraces - - bf: star-spangled-banner - -pl 63.lu2 - - very tight: hinterfleisch -> 0 : input/bugs/spacing-very-tight.ly - - bfs: neutral beam and tie directions (daar was ik al bang voor:-) - - bf: abe: may beam over skip, as long as note present too - - bf: scsii-prelude: added slurs using skips - -********* -pl 63.uu1 - - mutopia updates courtesy Peter Chubb - - Don't make Time_scaled_music for c4*2/3 entry, only do the -time compression. Should cure spurious Tuplet_brace/spanner warnings. - -pl 63.hwn1 - - bf: Spacing for key/timesig at end of staff. - - negative font magnification - - slurs on grace notes. - - paper var stem_default_neutral_direction - - bf: dot-columns. - -pl 63.jcn2 - - bf: midi2ly/duration-iter/convert: handle durations >= 1 - - set reasonable default for text/dynamic paddings - -pl 63.jcn1 - - junked some of (my) old metapost stuff - -pl 63.lu1 - - some faq entries - - chord input and proceccing fixes - - bf: nederlands.ly - -********** -pl 62.jcn4 - - fixes coriolan - -pl 62.hwn1 - - ps-to-pfa.py: use std modules re, find - - minor input fixes - - use mfplain.mp - - Metapost does unfill with setgray. This confuses -GS. Do text substitution with eofill. - -pl 62.jcn3 - - bfs: preludes - - found more wierd spacing - -pl 62.jcn2 - - bf: don't start auto-beam on stem that contains only a rest - - bf: rm .ms yodl output - - bumped stepmake version - -pl 62.uu1 - - don't space rhythmic requests coming from Lyrics. - -pl 62.jcn1 - - bf: auto-beamer: consider starting beam based on new rhythmic head - - bfs: preludes-4, cello-suites - - \addlyricsified standchen and twinkle (ugh: \repeat and \addlyrics) - - bf: interstaff slur slope damping - - bf: in-band signaling slur snap - -pl 61.jbr1 - - Documentation/ntweb/GNUmakefile: Made EXTRA_DIST_FILE style fix and - added dist-plain target as dependency to the default target. - - scripts/ly2dvi.py: getpid does not behave very well across platforms - so I am creating temp file names with the Python tempfile module. - The generate lilypond dependency file option was broken and - is now operational. I also changed the dependency switch - from -d or -M to match lilypond. - - stepmake/bin/package-zip32.sh: Added build of ntweb html - documentation - -*********** -pl 61.hwn2 - - revise / junk various input files. - - junk Music_list_iterator - - bf: declared paper + \shape - - bf: \shape and wordwrap - - Busy_playing_req () - - Music_iterator::try_music_in_children (), -so explicit \context Staff is often not needed for - * tuplets - * repeats - - automatic rest detection for \rhythm - - regtest tight-spacing.ly - - regtest lyric-combine.ly - - Melisma_playing_req, Melisma_engraver, Busy_playing_req: -stuff for syncing music & lyrics. - - simplify Extender_engraver, Hyphen_engraver. Assume lyrics come in from only one voice. - - docced ambiguities in grammar. - - mudela-book -I behavior, verbosity. - - state search path when file not found - -pl 61.hwn1 - - bf: \scm with --safe - - (ly-gulp-file) - - no need to set GS_LIBDIR, .ps files are inlined and directly -printable. - - bf: spacing engine - - fixed paper11/13/16/20/23/26.ly - - use (header-end) iso {ps,tex}setting - - bf: convert-mudela --output - - move \version check to lexer.ll - - moved repeated-music-iterator.cc to folded-repeat-iterator.cc - - bf: broken crescendi - - removed delayed Spanner breaking. - - new implementation of \rhythm: - * Lyric_combine_music - * Lyric_combine_music_iterator - * \property melismaBusy sets melisma state. - * (commented out in parser.yy -- solution is not good enough yet.) - - bf: record def spot of seq/sim music - - junk Music_iterator::next_music_l (), Music::to_rhythm () & friends. - - junk Re_rhythmed_music & friends - - mudela 1.1.62: \shape = -1 -2 -3; -> \shape -1, -2, -3; etc. - solves one ambiguity. - - grace notes at end of music don't crash Lily. - -******* -pl 60.jcn2 - - moved creation of $BUILDDIR/share/locale into set-lily.sh - - slur slope change constraints when snapping - - slur height damping based on bow height - - don't typeset unfinished (auto) beams - -pl 60.jbr1 - - Documentation/ntweb/angels.ly, Documentation/ntweb/guile.patch: added - - Documentation/ntweb/GNUmakefile: add above to EXTRA_DIST_FILES - -pl 59.mb2 - - Tempo changes in MIDI output! - - gallina.ly:auto-beaming - - added property articulationScriptVerticalDirection - (useful in N.W.Gade/score.ly) - - bf, N.W.Gade: removed some more misprints - -pl 60.uu1 - - bf: hara-kiri.ly - -pl 60.jcn1 - - interstaff slur tuning - - added some regtests - - removed now silly check in encompass-info - -********** - -pl 59.uu1 - - papervar loose_column_distance - - scripts don't collide. - - bf: midi2ly outputs \context iso \type - -pl 59.jbr1 - - lily/colhpos.cc: fixed typo - - Documentation/ntweb: Updated News and added all the files - associated with Windows Distribution web page. - - stepmake/bin/package-zip32.sh: added the ntweb page to formated - distribution. - -pl 59.jcn1 - - bfs: slur damping - - papervar slur_interstaff_snap_to_stem - -pl 59.hwn1 - - \property graceAlignPosition : put grace notes after main note. - - moved pianobrace stuff into Lookup - - moved Local_key_engraver out of Voice context, and -acknowledge Grace_align_items. Solves tie + accidental problem. - -pl 59.mb1 - - Some small clean-ups and bug fixes - -*********** - -pl 58.uu1 - - experimental pdftex support, courtesy Stephen Peters. - - --version support - - junked complicated loose column handling. - - only stretch the extra space after prefatory matter, not the -entire width of prefatory matter. - - standardise(d) switches:-d for debug, -M for Make deps, -m for midi-only. - - bf: papervar non_musical_space_strength now works. Set to 8 (-> Strong! ) - - bf: space after time_sig. - - bf: decrescendi. - - bf: barlines on voltas - -************ -pl 57.hwn1 - - bf: accidentals on grace notes. - - \property graceAccidentalSpace - - bf: ignore grace notes duration for non-grace spacing. - - uncommented Key_req::transpose. - - Dot_column::do_post_processing (): better dot collisions, see dots.fly. - - derive Dot_column from Note_side_item. - - renaming of files - * heads-engraver - * request-iterator - * p-score - * engraver-group - -pl 57.jcn3 - - bf: no extension: assume .ly - - bf: bow::do_width; which in turn allowed - - removed broken interstaff slur damping hack, and - - bf: slur height damping fixes damping - -pl 57.jcn2 - - bf: ? priority and snap to stem - -pl 56.jcn4 - - interstaff slur fixes and damping - -pl 56.mk1 - - bf: collision.cc: collisions between chords with different - stem directions and close heads. - -****************s************** - -pl 56.jcn3 - - slur de-hairification - * slurs always attached to noteheads, by default - * corrections for steep and high slurs - * snap to stem end when close - - bow/tie/slur dy/dx fix - -pl 56.hwn1 - - some spacing tweaks. - - bf: two repeats + alts after each other. -pl 56.jcn2 - - tie: bfs + even simpler - -pl 56.jcn1 - - bf: re-added \textflat,sharp to fix chords... - - bf: chord-modifier and mandatory dot: c-maj5 - - tutorial chord fixes - - tie fixes and boldifying: - * removed sloping (dy!=0) code - * use actual note-widths - * y[left] == y[right] - * follow OSU rules, I hope (from comments in text -- must check) - * undetermined direction -> down; inverse of stem - - bf: beam: undetermined direction -> up; like stem - - slur-symmetry fixes - - fix for \rhythm and seq_iter childs (still crude, but more effective) -********* - -pl 55.uu1 - - use GS' anti aliasing - -pl 55.jcn1 - - auto-beamer: consider current duration first in ending/starting beam - this way, you can have 16ths auto-beamed, in some way, but 8ths never - beamAutoEnd_16 = 1; - beamAutoEnd_8 = 1/8; - - added some classes and few lines of doco to .dstreamrc - - refman: - * comment out broken - * commented out stale tex macros (tex/* dir too) - * bfs/new syntax: chords - - more midi2ly renaming stuff - - bf: make info (midi2ly and other renaming) - -pl 54.jcn2 - - bf: auto-beamer: don't beam over skips - - update BUGS - - -pl 55.mb2 - - Font update: added more mensural style time signatures, - old2/4, old6/8alt, old4/8 thanks to Christian Mondrup. - - bf: correct indentation of first line (removed \leavevmode) - plain TeX still gives wrong indentation - - bf: volta brackets broken over several lines get open end. - Final bracket gets vertical end if it stops at double bar. - - Dashed grace flags also for durations shorter than 8. - - N.W.Gade: fixed some details - -pl 55.mb1 - - bf: font magnification also in PS output - - bf: set the GS_* variables correctly in buildscripts/lilypond-*.sh - - bf, lily.scm: errors in (de)crescendo - - bf, lilyponddefs: removed \noindent - - -pl 55.hwn1 - - fixes: horn-concerto-3.ly - - bf: grace before tuplet. - - bf: decrescendo - - bf: multimeasrest numbers centered. - -**************** - -pl 53.jbr2 - - Documentation/ntweb/index.html: Updated nt distribution web page - -pl 54.uu1 - - bf: Stem lens for beams. - - move meta doco to Documentation/metadoc - - move .bibb to Documentation/bibliography - - rename mi2mu to midi2ly - - removed other-packages.bib to comply with GNU standards - -pl 54.jcn1 - - mutopia/J.S.Bach/Duette 1&2 - -pl 54.mb1 - - Renamed \wheel to the \coda - - bf: correct gap in tuplet braces - -pl 53.hwn2 - - move more parameters from PS/TeX to Lily. - - PS cleanup - - TeX cleanup. - - bf: also make (empty) bar at end of voltabracket. - - bf: don't put slur over rest. - - -pl 54.uu1 - - debian updates (anthony fok). - -************* -pl 54 (july, 8) -pl 53.jbr1 - - scripts/ly2dvi.py: A fix for the multitude of file systems supported - by windows. As long as the paths that the cygwin apps use are - UNC style and the paths that the native windows apps use are DOS - style everybody is happy. I add quick and dirty unc2dos function - to facilitate this approach. - -pl 53.hwn1 - - bf mudela-book. - - better min distance for multi measure rests. - - junk ATOM_SMOB - - control tuplet gap size from paper. - - bf: output header as PS strings for PS out. - - bf: cached-fontname - - control volta height from paper block. - -pl 53.jcn5 - - \rhythm-ified and text bfs: standchen.ly - - walk rhythm through *_iterator::next_music_l () - -pl 53.jcn4 - - more abc2ly hacking, including lyrics and \rhythm - - bfs: \rhythm - - \rhythm-ified input/twinkle.ly - -pl 53.jcn3 - - put rhythm A on pitches/lyrics B: \rhythm MUSICA MUSICB - input/test/rhythm-melody.fly - input/test/rhythm-lyrics.fly - - syntax changes: -o * dot-only duration dropped: use c4 c4. iso now invalid: c4 c. - * chords: optional_dot now mandatory: - \chords { c-1.2.3 } iso now invalid: \chords { c-1 2 3 } - * @c@ (notemode_chords) syntax dropped. rather use: - \notes { c d \chords { e f } } - -pl 53.jcn2 - - \property graceFraction: part of next note taken-up by grace(s). - - Note_performer: add moments for delayed notes, - fine for single grace notes: hear gnossienne-4.ly - -pl 53.jcn1 - - grace performance - - fixed tie-performance - - bf: abe - -pl 53.gp1 - - added Hyphen-engraver, Hyphen-spanner -************ -pl 52.jcn3 - - bf: mi2mu: midi without key - - try at grace-performer-group; breaks MIDI output even when no \grace - - silly tie-performer - - performers play_element () delayed to do_pre_move_processing () - -pl 52.jcn2 - - bfs standchen + grace, gnossienne-4 - - decoupled midi output from input - -pl 52.jcn1 - - bf: moved accidental code from Key_engraver to Key_change_req - - bf: midi-key - - bfs: mi2mu: core-dumps, keys, key-names, key-changes, notenames - -pl 52.hwn2 - - new-beaming.cc: new beaming code - * now does [c8. c32 c32] correct by itself. - * beam over barlines - * non-fitting stems handled gracefully (eg. [c8 c4 c8] ) - - junked rhythmic grouping, \grouping and all associated bits. - - bf: do try_visibility_lambda for nonbreakable items as well - (fixes \nobreak on barline) - - bf: Cons_list::truncate() - -pl 52.hwn1 - - repeat-engraver cleanup -pl 52.gp1 - - bf: make doc++ corrected to only include *.h and *.hh files. -pl 52.mb2 - - Added \repetitions: prints symbol for repeated bars. - Same syntax as multi-measure rests! - - Added \segno and \wheel script symbols -pl 52.mb3 - - Added barSize property. Junked barsize variable. - -************ -pl 51.uu2 - - grace note flags, move Lookup::flag into Stem - - faq updates: doc++, Matt's page - - fixes for doc++. - - bartype string uses "brace" and "bracket" iso. "{" and "[" - - some of assert()s replaced by programming_error () - -pl 51.mb1 - - N.W.Gade: added real grace notes - - feta-banier.mf: added grace note flag - -pl 51.uu1 - - use weAreGraceContext \property to determine self_grace_b_ - - made more engravers grace aware. - -pl 50.jcn2 - - filed egcs bug report for powerpc. - - removed unnecessary #ifdef powerpc - - grace and other fixes for auto-beamer - - grace and other fixes for (beam-)stem-lengths - - input/test/bugs/hairy-grace.ly (urg) - - input/test/bugs/grace-accidents.ly (urg) - - input/test/bugs/grace-grace.ly (core) - - fixes: gnossienne-4.ly - -pl 50.hwn2 - - Timing_translator: add proccing moments to nearest global translator, -not to top global translator. - - cadenza.ly: grace notes. - - bf: auto staff switching - -************ -pl 51 -pl 50.hwn1 - - grace notes: - * Grace_iterator - * Grace_music - * Grace_engraver_group - * move Score::run_translator to Global_translator::run_iterator_on_me - * stemLength property, Stem::length elt property - * Grace_align_item - * Note_head_side baseclasses Local_key_item, Grace_align_item - * Local_key_engraver moved to Voice. - * Grace_position_engraver - * Added Rhythmic_head::stem_l_ - * Various other robustifications. - - lily.scm: scm->string - - folded reps without alts. - - Paper_outputter uses scm->string - - stem params now in staff positions iso. real dimensions - - internal: Junk all G_ and g- prefixes - -************ -pl 49.mb1 - - bf: ly2dvi -N - - Added dynamicPadding property (applies only to dynamic marks, - not (de)crescendi. - -pl 49.jcn4 - - resurrected gnossienne-4 - - Documentation fixes (for texinfo get yodl-1.31.13, tbr) - - minor abc2ly fixes; successfully converted some simple abc files from - http://faeryland.tamu-commerce.edu/joyce/ - - www.mail-archive.COM - -pl 49.jcn1 - - guile scm_gc_mark () workaround: - - via scm output wrapper buildscripts/lilypond.sh, set: - PATH=$LILYPONDPREFIX/buildscripts/out:$PATH - - scm output fixes - -pl 48.hwn2 - - bf: rest-collisions. - - cleaned up standchen - - bf: slur dims. - - bf: unfold without enough alternatives. - - Use Lily version for \version. - - -pl 49.uu1 - - ran purify. Fixed some small problems, plugged some leaks. - - bf: linebreak at |: - - doc updates by Adrian Mariano - -pl 49.mk1 - - Breathing signs by Michael Krause - -************ - -pl 48.hwn1 - - \property hshift -> \property horizontalNoteShift (mudela 1.0.21) - - cleaned up collision. \property hshift = 2 now supported. - - Spacing: - * bf: don't divide strength by distance if distance == 0.0 - * cleaned up Spacing_spanner - * simplistic optical illusion spacing for opposite stems. - - don't use Protected_scm for Score_element::element_property_alist_ - - some scsii fixes. - - Lookup cleanups; junked Lookup::paper_l_ - - abc-2-ly: tuplets, guitar chords., chords, - -pl 48.mb2 - - bf: correct accidentals after tied over note. - -pl 48.mb1 - - bf, lookup.cc: Count '{' also directly after a TeX macro - - bf: textstyle->textStyle in all examples. - -pl 48.jcn1 - - bd: interstaff slurs at line break - -pl 48.uu1 - - add a WX field to AFM output. - - add space before ; in AFM output - -********* -pl 47.jcn1 - - bf: interstaff slurs (urg: more segfaults in scm_gc_mark ()) - -pl 45.hwn3 - - Abbreviation -> Stem_tremolo. - - bf: Stem_tremolo in Beam. - - bf: Stem_tremolo over whole note. - - spacing before clefs. - - Spacing_spanner is now on by default - - junked most of Spring_spacer - - Tunable space after barline. - -********* -pl 46.mb2 - - Reintroduced the tupletVisibility property. Same values as - the old version (pletvisibility), see the Reference Manual. - Note: does not work correctly with automatic beams. - - Added a tupletDirection property. - -pl 46.uu1 - - bf: {} in texts. - -pl 45.hwn2 - - more doc updates. - - -pl 46.mb1 - - Added property articulationScriptPadding - - N.W.Gade: layout fixes - -********* - -pl 45.hwn1 - - Audio broadcast & acknowledge. - - more advanced spacing for prefatory matter - - tuplet appearance tweaking - - bf: ChoirStaff - -pl 45.uu1 - - glossary fixes (thanks Dirk). - -pl 44.jcn2 - - bf: auto-beamer: long standing br form AM - - -********* - -pl 45 (may 28) - - reinstalled Thread (there you are, John) - - german vocab. - - -pl 43.hwn2 - - split G_staff_side_item into G_staff_side_element and G_staff_side_item. - - junked old Staff_side - - Crescendo also uses G_staff_side_element - - crescendo_shorten paper var. - - create horizontal groups for break_aligment inside Break_align_item. - - more abc-2-ly fudging - -pl 44.mb1 - - bf, property.ly: change fontsize->fontSize - - N.W.Gade: removed old tie behaviour - - bf, ly2dvi: expand .sly extensions - -********* -pl 44 -pl 43.jcn2 - - bf: repeat :| placement + core dump - input/test/repeat.ly - input/test/coda-kludge.ly - - bf: mf without ljfour - * feta-accordion fix/hack for feta11 at 300dpi - -pl 43.hwn1 - - half assed attempt at ABC convertor. - - Spacing_spanner: "decentral" spacing stuff. Use -t to try. - - bf: StaffGroup vertical alignment - - \property {slur,tie,}ydirection -> {slurV,tieV,v}erticalDirection (1.0.20) - - Spanner now hangs on left endpoint. - - \property forgetAccidentals: do not remember accidentals. - Every note not in the key triggers typesetting of an accidental. - - \property noResetKey: do not reset key at start of measure: - accidental remain in effect until overriden - - bf: ties & accidentals (fix breaks oldTieBehavior) - - junked Tie::same_pitch_b_ - -pl 43.jcn1 - - configure, set-lily.sh, release stuff - -pl 42.tca2 - - lilypond don't put \interstaffline after last line. This to - get really nice vertical spacing for mudela-book. - - mudela-book: vertical spacing - - lilyponddefs.tex: commented out \parindent=0pt to get correct - paragraph indent for mudela-book - -************ -pl 43 - -pl 41.hwn3 - - reinstated \property inheritance - - \property SkipBars -> skipBars - - \property midi_instrument -> midiInstrument - - \property fontsize -> fontSize (mudela 1.0.18). - - bf: add a space after lyrics. - - junked flower DLL classes - - rewrote repeat music and iterators (mudela 1.0.17) - * Folded_repeat_iterator - * Unfolded_repeat_iterator - * New_repeated_music - * syntax change: \repeat FOLDSTRING NUMBER Music [ALTERNATIVE Music_se -quence] - - data struct simplification: junked Dynamic_req, -Absolute_dynamic_req, Span_dynamic_req, Slur_req, Beam_req. Use -Span_reqs and Text_script_reqs with type fields instead. - -pl 42.tca1 - - updated mudela-book documentation - - misc mudela-book.py - - accordion: smaller dots + little script renaming - - -pl 42.jcn1 - - bf: hp-u(rg)x: user build; sm 73 - - bf: hp-u(rg)x: sm74 - -pl 41.mb1 - - convert-mudela: convert textstyle -> textStyle - - refman.yo: properties moved to correct contexts. - - mudela-book.py: Added singleline, multiline options. - Fixed default line width bug. - -*************** -pl 41.hwn2 (may 10, 1999) - - bf: Score bar line thickness. - - more paper writing - - website tweaks. - - Graphical_element::dim_cache_ now alloced separately. - - junked Graphical_element::absgolute_offset - - Musique-de-Table - - mmrest_x_minimum now works at begin-of-line. - - junked Span_bar::extra_x_off - - \property foo.bar = \stringid + \otherstringid - - bf: stop on lexer errors as well. - - only do vertical alignment at Score level. - - tweaked ledger endings a bit. - - -pl 41.hwn1 - - small fixes. - - mudela-book.py patch (thanks MB) - -pl 41.mb1 - - Added the installation instructions to the top web page. - - N.W.Gade: Added triangolo part, minor changes. - -pl 41.tca1 - - Lookup::accordion and removed some accordionfonts - -*************** - -pl 40.uu2 - - rest ledger lines are dimensionless. - - Score_elements are added to the Paper_score directly when -announce_element () is called. This makes it possible to init -molecules from within engravers. - - changed \type to \context - - \context Contextname = ID Music is now a real separate production - * you can do - \context C1 \context C2 - - and C1 won't overwrite C2 - - * you need some extra explicit context specs, eg. if you start a -voice with a chord. - - \score { \notes { } } - - should be - - \score { \notes \context Voice { } - - - set staff margins on grandstaffs too. Center staffmargins vertically. - - \property values are not inherited anymore, i.e. setting -Score.minVerticalAlign does not set GrandStaff.minVerticalAlign, Staff.minVerticalAlign and Voice.minVerticalAlign as well. - - {Axis_spanner, Hara_kiri}_engraver which can be added at wish. -Hara_kiri should be working again. - - boilerplate for accordion stuff. - - some more paper writing. - - bf: substitute vertical refpoint as well for broken items. -(fixes clef^8) - - bf: translating molecule without elts but with dims. (bf: accidental -spacing.) - -pl 40.mb1 - - bf: ly2dvi set MFINPUTS so standard tree is found before lilypond - - bf: lilypond-regtest.doc, ls-latex.py; now finds author/title - -pl 40.uu1 - - large documentation patch by Adrian Mariano - -******** -pl 40 -pl 39.mb2 - - added more mensural style time signatures, old3/4, old6/8, old9/8 - - redesigned old6/4, old9/4 - - Updated refman.yo, lilypond-regtest.doc, clefs.ly, time.fly - -pl 39.hwn1 - - consified mi2mu (pl 37.jcn1) - -pl 39.mb1 - - bf: invisible clefs don't take any space, moved _8 below clef - - updated incipit example and macro - -pl 39.uu1 - - delete graphical objects in reverse - - faq updates. - -******** -pl 39 (april 12) - - \property textstyle -> textStyle - -pl 38.tca1 - - added scm/accordion-script.scm and update ly/accordion-defs.ly - - renamed some accordion symbols to make them more english and less - norwenglish. - - removed dot from \accBayanbase - -pl 37.script4 - - bf: molecule - - bf: tuplet spanner appearance. - - bf: less spacing after clef. Invisible bar has no dims. - - included AIMS. The why of Lily. - - warning if duplicate engraver. - - warning if no ties could be created. - - bf: \time1/4; .. beams .. - - bf: staff switching beams / slurs. - - tuplets on multiple beams. - - Documentation/tex/lilypond-regtest.doc - - bf: nested tuplets - - slur cleanups. - - bf: multi_measure_rest_engraver in Score_context. - -pl 38.uu1 - - bf: clef_8 - - bf: barnumbers. - -pl 37.script3 - - fixes for spring_spacer, introduced -Spacing_engraver - - cleanup for rest-collisions. - - hacks for GUILE gc - - mudela-book \mudelafile - - Documentation/tex/lilypond-regtest.doc - - MF rest fixes - - -******** -pl 38 (april 6) -pl 37.script2 - - bf: AFM for BlueSky AFM files. - - \penalty = 4278 -> \penalty 4278 - - URG!! fixed major (unnoticed) bug in dependency engine - - Further Script hacking: - * G_script_column - * G_script_column_engraver - -pl 37.script1 - - major Script rehack: - * G_stem_staff_side_item - * G_script - * G_script_engraver - * G_script_req - - junked Text_def, changed \property textstyle -> \property textStyle -(todo -> convert-mudela) - - Line_of_score is an Axis_group_element, no more overlapping -lines, hopefully. - - mf: whole diamond head tweak - -pl 37.mb2 - - Added property clefStyle: "" / "transparent" / "fullSizeChanges" - - New example: input/test/incipit.ly - - Documented clefStyle and restStyle in refman.tex - - Partial bug fix: octaviated clefs. Still broken!!! - - -pl 37.mb1 - - Added property restStyle. - - mensural 4th, 8th and 16th rests. -pl 37.uu1 - - FreeBSD bf - -**** -pl 37 (march 30, 1999) - - note head styles, see input/test/noteheadstyle.fly - * \property noteHeadStyle: - * diamond note heads (probably really ugly) - * cross note head. - * harmonic head (mf sources were tweaked) - * transparent for no \heads - * \property noteHeadStyle ="" for normal heads. - -pl 36.mb2 - - bf: timeSignatureStyle - - Added dynamic fz (forzando) to Lilypond - - bf: N.W.Gade, sfz -> fz - -pl 36.hwn1 - - debian fixes. - - don't insert extra alignment space for empty stuff. - - Align_element derives from Axis_group_element - - junk cruft for detecting upbeam / downbeam. - - junk all *{horizontal,vertical}* Score_element derived classes. - - G_staff_side_item::padding_f_ now generic property. - - some tweaking of beam & stem. - - junk pointerlist in Sources - - junk Stem::mult_i_, Stem::beam_gap_i_, G_staff_side_item::padding, - Bar::at_line_start_b_, Key_item::c_position_, Note_head::type_str_, - Note_head::staff_size, Stem::xdir_ - -pl 36.mb1 - - bf: N.W.Gade - -************** - -pl 35.uu1 - - more memory tweaks: don't do Score_element::line_l () when deleting lines. - - more generic properties. - - change ridic. dims assert into warning. - - tex/ midi fixes (thanks, Mats). - - bf: don't crash when no Stem_infos are set. - - extender-spanner simplification - - working MIDI chords (Thanks Dscho) - -pl 35.jcn1 - - some ps fixes - -************ -pl 35 - -pl 34.hwn2 - - "Lily Was Here" is def'd as \mudelatagline, override with - \header { tagline = "... " ; } - - \property currentBarNumber: set - current bar number. - - \property postBreakPadding: tune extra - space padding after linebreaks. - - \property textEmptyDimension: disregard script text - dimensions (untested) - - \property staffLineLeading: set the staff space - - adjustable staff space size (per staff) - - Staff_symbol_referencer as base class for elements that use - info of the staff symbol. \property numberOfStaffLines also works OK - with ledger lines. (Is that useful? dunno.) - - warning if someone does \translator with no name - - junk Item::breakable_b_ - - junk PointerList, use Killing_cons - - bf: Auto_beam_engraver. - - bf: mmrest engraver. - - use callbacks for Dimension_cache. - - lots of small cleanups. Junk various members of - Score_element & derived classes: - * Item::original_l_, - * Spanner::original_l_, - * Score_element::transparent_b_, - * Item::break_priority_i_, - * Item::break_status_dir_, - - merge Score_priority_engraver / Score_horizontal_align_engraver - - Use more generic element properties. - - precompute SCM symbols. - - remove_elt_property (): Try to junk an element property, if not - needed anymore. - - - -pl 34.uu1 - - more PointerList junkings. - - MIDI bugfix. - - be more conservative with Dicts/Hashes mem usage - -********* -pl 34 - -pl 33.uu2 - - some performance cleanups: junked PointerList instance, plugged some leaks. - - style -> fontname now in scheme. - - minor Score_element brainsurgery: - * generic element properties. - * junked Score_element::junk_links, Score_element::unlink - * junked Directed_graph_node as superclass of -Score_element, this should reduce mem usage a bit. - -pl 33.jcn2 - - fixed autobeamer's beam->unlink () - -pl 33.jcn1 - - allow autobeaming according to duration iso (crude) multiplicity - -pl 33.jbr1 - - change my email address - - Windows platform does a cp -r instead of a ln -s - -pl 33.uu1 - - bf: ^ and _ - - junked poor man's dynamics. - -********* -pl 33 - -pl 32.mb1 - - bf: \> and \< were interchanged!! - - Added property: textScriptPadding - - Changed copyright text on the Gade score. - -pl 32.uu1 - - really include Gade score now. - - fixes: install-[out-]targets, INSTALLATION_[OUT_]SUFFIXES - - install TFMs in separate dir. -pl 31.hwn3 - - Span_bar bugfix (there you go, Mats). - - bf: Score copy ctor (-> bf declaring score) - - new Tie behavior: only tie identical pitches, switchable with - oldTieBehavior - - junked cautionary_b_ from Musical_pitch - -pl 32.jcn1 - - set-lily: set weird locale links for $LILYPONDPREFIX - -********** -pl 31.mb2 - - Added example: "Imellan Fjeldene" by Niels W. Gade. - - bf: don't attach staff margin text to clef changes within the - lines. (Still not perfect: no text when a clef change happens - -pl 31.hwn2 - - be somewhat lazy in break/object multiplication. - - print # elements for memory usage impression (try -t) - - Paper_score cleanup - - junked various Pointer_list instances. Executable now is smaller. - - junked various cruft - - merged do_substitute_dependen{t,cy} to -do_substitute_element_pointer () - - more parser cleanup - - Interval uses Drul_array - - bf: I've been drinking too much - - delete break helpers before object breaking/multiplication. Try -to save some memory. - -pl 31.jcn4 - - bf: toplevel install, kpsewhich - - sm 71, require yodl-1.31.11 - - fix: slur macros - - bf: info in rpm, if available - - fix: rat != float - - bf: slur-follow-music - -pl 31.uu1 - - config.make: include GUILE_LDFLAGS - -****** -pl 31 (feb 16) - -pl 30.jcn1 - - sm fixes, intl/ fixes - -pl 30.mb1 - - Added support for magnification of TeX fonts ==> - larger dynamics in 20pt scores. (Doesn't work in Postscript) - -pl 30.hwn1 - - Debian patches (thanks, Anthony) - - Italian support (thanks, Maurizio) - - parser cleanup - - minor chord.cc cleanups. - - bf: \rc \rced - - hara kiri doesn't do suicide with normal rests. - - Hara_kiri_vertical_group_spanner generalised - - extender engraver rewrite, now __ is like ~ [] |, ie. in between -notes/lyrics. - - lyric engraver now engraves only single voices. Use -separate LyricVoices to get stacked lyrics. - - bf: bar(Non)Auto first barline - - barAuto -> barNonAuto - - -******* - -pl 30 (feb 15) - -pl 29.uu1 - - typewriter font - - star-spangled-banner bf (slur.cc). - - -pl 29.jcn3 - - fix: slur-case3.ly - - init.sly: .fly with linewidt=-1 - -pl 29.jcn2 - - resurrected ps output - -pl 29.hwn1 - - bf: coord relative to self. - - bf: error msg if no AFM found - - bf: hang script on bar in other axis too (fixes staff-side-slur bug) - - hang on scripts on clef as well (more to left for single staffs) - - -pl 29.jcn1 - - bf: volta sizes - - GNU stuff on home page - -******* -pl 29 - -pl 28.hwn1 - - bf: mid measure clefs (breakable items in non-breakable columns.) - - spanner.cc assert changed to warning - - (c) 1998 -> 1999 search replace. - -pl 28.jcn1 - - new outline TODO + .emacs setup -******* -pl 28 -pl 27.hwn2 - - un-SMOB Atom. Cons and Killing_cons as simple cons replacements. - -pl 27.jcn5 - - outline TODO - -pl 27.jcn4 - - measure-end hinterfleish patch - - input/test/coda-kludge.ly - - bf: volta-number placement - - volta: support for "1.-2." "3" - -pl 27.jcn3 - - bf's: zero-length repeats - - Auto beamer: - * turned on by default - * input/test/auto-beam*.ly - * support for time-defaults - - Chords: - * input/just-friends.ly - * ChordNameContext - * bf's: chord mode: accept STRINGS, rests - * bf's: banter_str - - new bool \property Score.barAtLineStart - -pl 27.hwn1 - - global ctors - - read lily.scm before all .lys - - Link_array derives from Array - - search repl: Array -> Link_array - - junked most static casts - - revamped Atom / Molecule: Molecule now is the public interface. -Atom is a GUILE smob. Guile takes care of allocation and list stuff. - - bar scripts on score bars (there you are, Mats) - - :||: span bar fixed - - using generic ledger lines now (regenerate fonts!) - - refman updates (Thanks, Adrian!) - - Molecule::operator = (), Molecule::do_center () - - junked Span_score_bar, Score_bar, Staff_bracket, Piano_brace. Folded functionality into Span_bar - - textstyle property for textual scripts. - - lookup cleanups (time_signature, text, stem, junked extender, filledbox, simple_bar) - - junked obsolete TeX stuff. - - ly2dvi-testpage.ly - - only make AFMs for feta[0-9]+.mf - - using strings for abs loudness. - - -pl 27.jcn2 - - grand renaming: Duration vs Moment / Rational - -pl 27.uu1 - - extra beam warning - -pl 27.jcn1 - - complete redo of chord and chord name code - - small fixes - -************* -pl 27 (feb 3) - -pl 26.uu1 - - make TFMs too. - - bf: dynamics. (Don't hang on spanner!) - - read TFM before AFM. - - fix din-MF stuff (UGH) - -pl 26.jcn4 - - Chord: handle all chord stuff; lots of chord fixes - - bf: Chord-name-engraver: find tonic - - bf: my-lily-parser: get_chord - - -pl 26.jcn3 - - bf's: spring spacer end of measure - - bf: tie/slur rods (dankje, lieverd) - - bf's: intl/ compile, install, uninstall - -pl 26.jcn2 - - enforce {slur,tie}_x_minimum (urg, paper vars?) - - tie listens to tieydirection/ydirection - - bf: tie placement - -pl 26.jcn1 - - tutorial fixes - - bf: OrchestralScore should do hara-kiri.. - - bf: makeinfo: - - info in rpm again - - update to yodl pl10, yodl2texinfo fixes - - use --force, .info should always be generated - -********* -pl 26 (feb 1, 99) - -25.jcn2 - - bf: staffside axis init - - bf: staffmargin stuff. - - Timesig C fixes - - -pl 25.uu2 - - junked Scarlatti clef - - fixed clef^8 - - Interpretation_context_handle is interface to interpretation context - - Staff_switching_translator: automatic staff switching for Piano staffs. - -pl25.jcn1 - - volta-spanner: junked dot_p_; not so handy after all: kerning?? - - feta-nummer: added : ,-. - - volta/tuplet thickness - - bf: scs-paper - - bf: ".|", and bar-thicknesses - -pl 25.uu1 - - bf: default duration is 4 - -********** -pl 25 - -pl 23.ms2 - - property noteheadStyle - - first attempt to make harmonics : see input/test/harmonics.fly - -pl 23.ms1 - - sinfonia.ly: several fixes - - dynamics - * increased range pppppp to ffffff - * added sp, spp, sff, rfz - * example see input/test/tchaikovsky.ly - * updated dynamics in refman - - -pl 24.jcn2 - - website fixes - - bf's: chords: - * reverted c1*2, collides with \times {} - * should use: c\breve, c\longa for long chords - * addition: c-9, subtraction: c^5 - * multiple -add, ^sub: c-7+.9-^3.5 - - bf: lyric chord - - bf: lookup text height - - bf's: autobeamer - - pl 24.jcn1 - - bf: rest collisions - - separate tfm-reader - - bf: :|: should not have thin lines - - -pl 24.mb1 - - bf: Correct units now used in the .afm files. - -****** - -pl 24, Hacking Apart Together (Jan 25) - -pl 23.jcn9 - - bf's: preludes-* (found a \meter and \transpose c`` there!) - - bf: ly2dvi: don't barf on 'linewidth = -1.;' - - bf: lily-version - -pl 23.jbr1 - - scripts/ly2dvi.py: Windows 95 shell does not support redivrection - of stderr. We now distribute ash and use it when needed. - - stepmake/bin/package-zip32.sh: distribute ash, and guild ice-9/ - directory. We build and distribute manpages in html format instead - of text format. - - Documentation/ntweb: Updated doco and now distributing as a self - extracted binary with install script. - -pl 23.hwn4 - - bugfixes - - changed All_font_metrics to do TFM as well. - - changed init/ to ly/ - -pl 23.jcn8 - - tfm reader; revamped code from fontutils-0.6 - -pl 23.hwn3 - - {Bar numbers|staff margin stuff|marks} fixed using -Bar_script_engraver as base class - - bf: PS points != Lily \pt - - junked Bar_column_engraver - - junked Text_item and some old files. - - -pl 23.jcn7 - - bf: piano-brace size (veels te simpel: kruis vingers tegen reject) - - crude autobeam stuff in mi2mu - - brevis, longa chords: c1*2,*4 - - mutopia/E.Satie/petite-ouverture-a-danser.ly - - prop: voltaVisibility - - more cello-suite-ii fixes: - * nice repeats - * removed all beams ifo auto-beamer - - bf's: autobeam - - junked dur2real; beamAutoEndx now as rational string: "1/2" - -pl 23.hwn2 - - _8 clef - - junked #args symtable def. - - junked Text_item. - - moved Bar assembling into LilyPond - - junked symtables reads - - Lookup cleanups - - junked Symtable from init/table* - -pl 23.hwn1 - - revamped Scarlatti K3-L378 - - some more doco - - use interning/SCM for Scopes - - hanging on now works for breakables too. - -pl 23.jcn6 - - chord fixes; notemode chord syntax changed: @c@ @c-7@ - - fixed cello-suite ii - - bf's: auto-beamer; but nasty bug remains: input/bug/auto-beam.ly - - bf: extender - - (bit ugly) fix for lyric-chords - - fixed repeats (dankjewel lieverd) - * input/twinkle.ly - * input/star*.ly - -pl 23.jcn3 - - succussfully removed []s from wtk1-fugue2.ly - - bf + smarter autobeamer - -pl 23.jcn2 - - mi2mu: d-minor: des->cis, g-minor ges->fis - -pl 23.mb1 - - bf: Position and possible SIGSEGV in Mark_engraver - - Added padding support in G_staff_side_item - - bf: Correct direction of textual scripts. - - bf, lookup.cc: Fewer warnings about missing text styles. - Same units used in all .afm files. - -pl 22.jcn5 - - auto-beaming v0: input/test/auto-beam.ly - - - -*********** - -pl 22.jcn4 - - bf's: repeat-engraver; \bar "|:", ":|" now deprecated for repeats - - bf: :|, |: - - property barAlways changed to boolean (0/1) - - added boolean property: barAuto - -pl 22.jcn3 - - bf: mmrest - -pl 22.jcn2 - - updated mi2mu - - bf: multi-measure-rest (input/test/m.ly) - - half fix for staff-margin-engraver - -pl 22.jcn1 - - bf's: cross-staff slur - - bf: gnossienne-4 -pl 22.tca1 - - buxfix, \mudela{ \times 2/3{ ...} } works now - -****** - -pl 22 - - fixed "already have a Beam" error - -pl 21.jcn2 - - gnossienne: hmm, how to - * undisplay bars - * don't put 'grace notes' in beam - * put separator between "] \translator Staff=x" - -pl 21.jcn1 - - gnossienne-4.ly (start of) - -pl 20.jcn2 - - mutopia fixes; see preludes-1.ly for cross-staff beams and slurs - - bf: broken interstaff slur - - sm66: check for gmake - -******* -pl 20.jcn1 - - interstaff slurs v0: preludes-1.ly - - warnings for silly interbeam settings - -pl 20.hwn1 - - inclusion of WIP article about LilyPond. - - L.Mozart sinfonfia - - bf: [c8 [c8 c8] - -******** -pl 20 - -pl 19.jcn5 - - interstaff beams v0: see beam-interstaff.ly and wtk1-fugue2.ly - -pl 19.jcn4 - - new stem/beam parameters - - bf: forced stem shorten - -pl 19.jcn3 - - dehairification of beam code; cleanup and bugfixes - * stemlength - * forced stem shorten - * slope calculation - * damping and correction - * catch for silly beams: input/test/beam-suspect.ly - -pl 19.jcn2 - - multi-measure-rest is now spanner SkipBars=0 is broken - -pl 19.jcn1 - - hmm, almost centered whole-bar rests -- NOT - -******** -pl 18.jcn5 - - bf: beamtrend - - bf: vv-duet - -pl 18.mb1 - - \mark now works, using G_staff_side_item. - - Improved layout of multi-bar rests, including a new - font symbol. - -pl 18.jcn4 - - beam length adjustments - - ugly beamtrend fix: input/test/beam-trend.ly - -pl 18.jcn3 - - bf: (beamed) forced stem shorten - - bf: broken slurs and ties; minimal slur/tie length setting ignored - - bf: separators on cygwin - -pl 18.jcn2 - - bf: stem-length algorithm - - bf: beam direction algorithm - - bf's: wtk1-fugue2.ly - -pl 18.jcn1 - - stepmake update - - small fixes: spacing.ly, wtk1-fugue2-ly, violino-viola duet. - -******* -pl 18 (jan 4 '99) - -pl 17.jbr2 - - Documentation/README-W32: Brought my stuff up to date - - Documentation/ntweb: updated for realease - - stepmake/bin/package-zip32.sh: cygwin-b20 changes - - scripts/ly2dvi.py: LILYPONDPREFIX fixes - -pl 17.jbr1 - - scripts/ly2dvi.py root is now the shared directory path not the - root of the lily installation. Environment variable LILYPONDPREFIX - is also the path to shared directory. - - lily/main.cc WINNT conditional added to avoid a casting of - main_prog - -pl 17.hwn1 - - bfs wtk1-fugue1 - - spacing tweak: very widely and tightly spaced lines look -better. - - allow Beam settings to be overriden: property - stemLeftBeamCount, stemRightBeamCount - - junked Assoc, Assoc_iter - - junked Graphical_element::{width,height} - - junked Plet_swallow_engraver, Plet_engraver - - Command_tie_engraver -> Tie_engraver, Command_beam_engraver -> Beam_engraver - - naming brew_molecule_p / do_brew_molecule -> output_processing, do_brew_molecule_p - - experimental Text_item, Staff_side - - junked old Beam_engraver and old Tie_engraver. - - AFM administration cleanup. - - cache brewed molecules. Speed up ? - - rehacked Graphical_element, introduced Dimension_cache - -******** - -pl 17 -pl 16.jcn2 - - fix: TEMPO 4., well urg, "TEMPO 4 ." - - beginning of violino/violoncello (viola) duet - -pl 16.jcn1 - - resurrected po-stuff - -********* -pl 16 - -pl 15.uu1 - - dynamic fix. - - junked abbrev stuff from parser. - -pl15.tca1 - - fixed verbatim option behaviour for mudela-book. - - added mudela-book option intertext="some text" - - mudela-book now understand latex \begin{verbatim} - -pl 15.jcn1 - - chord inversion: - * enter C/E - * display chord names according to boolean property - \property Score.chordInversion; - -********* -pl 15 - -pl 14.hwn1 - - new beam syntax: { [ ] }, changed in lilypond, -parser, lilypond (mudela 1.0.14), manual - - new tie syntax: { ~ } changed in manual, -parser, lilypond (Mudela 1.0.13) - -pl 14.jcn1 - - bf: get_chord C-m5- - - typos: chord-name - -pl 14.tca2 - - move option proccing out of main - -********** - -pl 14 - -pl 13.hwn1 - - tutorial fixes. - - junked find-quarts - - junked various plet goryness. - - preps for ~ syntax - - bib fixes - -pl 12.jcn3 - - bf's: standchen - - added repeat, chord stuff to website - - bf: dashed slur - - hacks for barlines, dynamics - -pl 12.jcn2 - - bf: package-diff - - new chord syntax, again: TONIC [DURATION] ['-' MODIFIERS/ADDITIONS] - - shorthand prefix for note-mode: '@', no shorthand for notes in chord - mode... - -pl 11.jcn6 - - bf: ly2dvi: better guess LILYPONDPREFIX: ../share/lilypond - - chord-table; urg bugs: - * note-collisions - * accidental-placement - - bf: cis m (\textsharpm, urg) - -pl 11.jcn5 - - bib entry, twinkle-pop - - bf's: chords - -pl 11.jcn4 - -********** -pl 13 - - mutopia stuff (thanks, Peter) - - bugfix : \maininput - -********* - - -pl 12 -pl 11.jcn3 - - bf: missing triads - - @c @c min (* is taken, <<, <> don't work) - - chord-modifiers (urg, "sus" should also subtract 2...) - -pl 11.uu3 - - --safe: security paranoia: disallow untrusted \include, -disallow untrusted TeX code, disallow named output - -pl 11.jcn2 - - duration with chords + change: @4 c @c7 - -pl 11.jcn1 - - minor chord syntax change: *c6 iso @c6; - -********** - -pl 11 - -pl9.tca1 - - included that missing init/mudela-book-defs.py. Added - one line to init/GNUMakefile to make .py-files be included. - - fragment and nonfragment options to override autodetection - -pl 10.jcn1 - - input/test/chords.ly - - \type ChordNames and chord-name-engraver.* - - chords mode: \chords { @c; @d7; } - -pl 10.uu1 - - scm/ directory. install .scm stuff too. - - tuplet bug fixed. - -********** -pl 10 - -pl 9.jcn3 - - property: unfoldRepeats; unfolding still broken - - volta spanner y-collision - - bf: volta number,dot placement - - bf's: init/table16,20 - - small additions to init/lily.scm to enable some testing - - junked extra repeat braces - - -pl 9.uu2 - - bib stuff - - removed \output from parser/lexer - -pl 9.jcn2 - - bf/redo: slur.cc, encompass-info: setting of encompass array. - - switched tuplet-engaver off (core dumps) - -pl 9.jcn1 - - bf (urg): no |: at start of piece - - bf?: text defs without width - - alignment absolute dynamics - - mutopia/opus-130.ly (excerpt, triggered by GUIDO) - - bf: crescendo symbol - - -pl 9.uu1 - - added faq entry - - copertina (thanks Maurizio) - -***************** -pl 9 - - fixed \relative - -pl8.tca1 - - changes to mudela-book. Junked fragment and floating options, - added eps option. Options should not stay as long that you get - comfortable with them. ;) - - Also possible to define your own commands with - a syntax like \mudela{c d e} - - updated mudela-book-doc.doc - -pl 8.jcn3 - - website: gnuisation of footers - -pl 8.jcn2 - - input/test/vertical-text.ly: urg ydim of text chords - - bf: one set of |: :| volta per staff - - bf: init/table* braces + more braces - - try at score-volta-bracket - -pl 8.jcn1 - - bf: lyric-engraver: handle multiple requests (don't overwrite) - - bf: guile-config - - music-list-iterator - -pl 8.hwn3 - - coriolan corno 1 - -pl 8.hwn2 - - more output revamping. - -pl 8.hwn1 - - Scheme output stuff - - tutorial fixes. - -***************** -pl 8 - -pl7.jcn3 - - bf's: spanner/volta - - volta-support: via Note, Bar, and Paper-column to Bar (item) - -pl7.jcn2 - - note repeats - -pl7.jcn1 - - configure/guile fixes (still no check for 1.2/1.3) - -pl7.hwn1 - - tutorial fixes - - tuplets over beams. - -***************** -pl 7 - -pl6.jcn5 - - repeatbars, volta-spanner work, alternative iteration still broken - - volta symbol - -pl5.szmulewicz2 - - more GUILE stuff. - - tutorial doco updates - -pl6.jcn4 - - volta-spanner - - repeat-engraver - - repeat/alternative music layout (hehe) - -pl6.uu1 - - Doco of music iterators. - -******** -pl 6 - -pl5.szmulewicz1 - - rtti stuff - - bf's: lily.scm - -pl5.mb1 - - bf: array.hh, don't make copy if resized to the same size - - bf: feta.tex - -pl5.jcn4 - - scm additions: plet, hairpin - - website fixes - -pl5.jcn3 - - website fixes - -pl5.jcn2 - - extender-*, see input/test/extender.ly - - bf: half-beam length (urg) - - fixes: standchen, star - -pl5.jcn1 - - tex/lily-ps-defs.tex fixes - - lily.ps - -pl 5.hwn1 - - Tuplet_engraver - - lily.ps fix. - - junked MY_RTTI stuff, simpler VIRTUAL_COPY_CONS - -******** -1.1.5 - -pl4.jcn4 - - fixes; preludes, finger - -pl4.jcn3 - - bf: text staff vertical align; see input/test/vertical-text.ly - - urg, scaled cmr8 by factor 4/5 - - apart from end/begin of measure spacing urgs, stars-and-stripes.ly - is rather cool - -pl4.jcn2 - - read (cmrxx)afm for text char widths - - tfmtoafm.sh (quite urg) - - alphabet.ly - -pl 4.uu1 - - read .scm files. No need for GUILE_LOAD_PATH - - .ps hack. No need for lily.ps on the printer - - (&$^@M&@^$@^&$@ Damn TeX) - - - - bf: mudela-book -> \default_paper is obsolete. - -pl 3.ms1 - - thumb-upgrade - -pl4.jcn1 - - bf: dotted slur - - bf: text ssb - - bf: empty/unknown in ps - -pl 4.tca1 - - 40% speedup executing mudela-book on mudela-book-doc.doc - - change of lilypond's output filenames. Given multiple input - files, eg. 'm.ly y.ly', output names will now be 'm.tex y.tex' - not 'm.tex y-1.tex', but if m.ly containts two paper definitions - output will be 'm.tex m-1.tex y.tex' - -******* -1.1.4 - -pl 3.tca1 - - accordion symbols in mf/feta-accordion.mf and - init/accordion-defs.ly. - - small changes to mudela-book and Documentation/man/mudela-book.yo - - mudela-book example file in Documentation/tex/mudela-book-doc.doc - -pl 3.jcn5 - - bf: dashed-slur - - bf: LilyIdString - - more star fixes - - repeatbar fixes - -pl 3.jcn3 - - mup-to-ly.py: version 0.0 - - init/test/stars-and-stripes.ly (from star.mup) - - GrandStaffContext - -pl 3.hwn1 - - junked musical info from key-item - - tutorial fixes. - -pl 3.jcn2 - - bf: font switch - -****** -1.1.3 - -pl 2.jcn2 - -pl 2.uu1 - - ly2dvi.py -I fix - - obsoleted ly2dvi.sh - - removed Note_head_engraver - -pl 2.hwn1 - - scm cleanups, chop-decimal - - scarlatti clef. - -pl 2.jcn1 - - commented-out Level-2 PostScript in lily.ps (J. Buehler) - - moved tex/*.ps to ps/ - - merged lilyponddefs.ps, lily-ps-defs: tex/lily.ps - - be sure to set: - export GS_LIB=$HOME/usr/src/lilypond/ps - - added tex and empty ps-symbols - -pl 1.jcn4 - - more little website fixes - -******** - -pl 2 - -pl 1.mb1 - - Support for cautionary accidentals. , i.e. accidentals - within parantheses. Syntax: 'cis?'. Try input/test/accid.fly - Note that the font has changed. - - bf: No unnecessary warnings about time signatures - - Added optional second argument of \key. Set to \major or \minor - to get a major or minor key. Default: major. - - bf: Compilation error in midi-walker.cc - -pl 1.jcn2 - - fixes for htmldoc, website - - silly jcn1 fixes - - junked MODULE stuff from lily/GNUmakefile (again) - -pl 0.jcn4 - -set: - export GUILE_LOAD_PATH=$HOME/usr/src/lilypond/init - - dstream: Score_element, Column_info - - -fscm debug hack: lilypond -fscm a; guile a.scm > a.tex; tex a - - init/lily.scm - - -******** - -pl 1 -pl 0.uu5 - - fixed MIDI output. - -pl 0.jcn3 - - dropped stepmake/aclocal.m4 - - removed silly -lguile (BLA_LIBS, EXTRA_LIBS ??) - - added debugging output format: -fscm - - ly2dvi.py -I fix - - Documentation/tex/feta.tex - - doco fixes: PATCHES.yo, yodl-1.31.7 - -pl 0.uu4 - - Protected_scm to fixup GUILE gc - -pl 0.uu3 - - more RTTI cleaning. - -pl 0.uu2 - - undone type_info::before hack. (Ugh. RTFM). - -pl 0.uu1 - - more RTTI stuff: is_type_b -> type_info::before - -pl 0.jcn1 -pl 17.jcn7 - - added: set*text, timesig, beam - - guile-1.3 is fine; my egcs-1.0.2's -O2 is broken -pl 17.jbr1 - - stepmake/stepmake/bin/package-zip32.sh: Updated configure statement - and modified win32 specific distribution file names to match - pl 16.hwn1 changes. - - scripts/ly2dvi.py: Modified search paths to match the new lilypond - installation tree. - - scripts/convert-mudela.py: Remove the an existing backup file - before renaming original. This is a WINDOWS32 Python requirement. - - Documentation/ntweb/index.html: Updated documentation to match - new lilypond installation tree. - - lily/main.cc: Fixed LILYPONDPREFIX search paths. - - - -********** - -1.1.0 - -pl 18.exp - - use C++ RTTI iso access_Xxx () - - junk Graphical_lisp_element - - catalan.ly - -pl 17.tca1 - - rewrite of mudela-book - -pl 17.ms1 - - added \thumb (used very often in cello music) in - mf/feta-schrift.mf. - - added /input/test/thumb.ly (example) - -pl 16.jcn1 - - dashed-slur through scheme - -pl 15.jcn4 - - more scheme hacks - -pl 15.jcn3 - - try at scheme in Atom - -pl 15.jcn2 # rest of - - graphical-lisp-element + silly half hook-up with autuplet - -pl 17.jcn5 - - stepmake pl59: templatised install (see mf/) - - reasonably ps/tex success (with guile-1.2): - * input/kortjakje.ly - - lots more scm stuff - - bf: mf/mfplain.ini - - stepmake pl58: guile 1.3 configure fix - - working font-switch: - guile-1.2 and -lreadline -ldl from 1.3 configure... - -pl 17.jcn4 - - installable stepmake pl57 - - urg, FIXME guile-1.3: - * don't install shared libs! configure can't handle - * manually add: EXTRA_LIBS = -lguile -lreadline -ldl - * lily's truely broken, downgrade do 1.2 - -pl 17.jcn3 - - lots of stuff still broken, notably font selection, just try - a()b - or so - - tex output support - - all output through scheme - - option: f, output-format=X - - geile placebox - - mf/mfplain.ini - -pl 17.jcn2 - - all paper output through scheme, about half way - -pl 17.jcn1 - - 16.jcn1 - diff --git a/Documentation/misc/CHANGES-1.2 b/Documentation/misc/CHANGES-1.2 deleted file mode 100644 index 7bb36d49aa..0000000000 --- a/Documentation/misc/CHANGES-1.2 +++ /dev/null @@ -1,287 +0,0 @@ - -pl 15.hwn1 - - reverted MIDI unfold patches. - - bf: cross staff beam, cross staff slur (2x) - - doco updates: - * metadoc/ -> programmer/ , - * FAQ - * hacking - * index with logo - -pl 15.jcn3 - - bf: smob fix - - mutopia/doc target 'local-web': - shorthand for 'CONFIGSUFFIX=www local-WWW' - -pl 15.lu2 - - bf: close comments in website footer - - error messages for release didn't make it into .lu1? -pl 15.jcn2 - - small website fixes -pl 15.jcn1 - - bfs: initialise members of Column-x-positions and Break_node - - bf: Documentation/misc: don't include backups - - bf: .gdbinit -pl 15.lu1 - - error messages for failing diff/release - - \property noStemExtend: don't extend normal or beamed stems to - middle staff line: input/test/no-stem-extend.fly - -****** -pl 15 (Oct 18) - -14.jcn1 - - Kludge for accented chars (thanks, Mats) - - bf: don't fail on error in doco package - - doco package: noarch - - bf: standchen: mutopia prep - -14.hwn1 - - move some misc stuff into Documentation/misc/ - - cleanups: slur & beam. - - junked Encompass_info - - Smobs -- simplifies sc_elt memory management - - Timing_engraver collects bar reqs - - unfold all if doing MIDI. - - bfs: do something sensible if it doesn't fit. - - penalties for break stuff supported. - -******* -13.jcn2,3 - - mutopia/J.S.Bach/Petites-Preludes: bf's and mutopia preraration - - separate documentation package - -13.hwn2 - - mutopia: scs2, horn-concerto-3 - - junked Line_spacer baseclass. - - removed gourlay complications - - use force iso. energy for minimisation. Add uniformity term -to demerits. - -13.jcn1 - - bf: mudela-book - -******* -12.jcn1 - - auto-knees, input/test/auto-knee.ly - -pl 12.rrr2 - - voltaSpannerDuration may be a rational - - .ly files corrected, Voice.dynamicDir to Voice.dynamicDirection - -pl 12.rrr1 - - key (K:) with clef, bug fix for abc2ly - - voltaSpannerDuration code added to lilypond - -pl 12.hwn1 - - junked wordwrap - - bf: use position (not pitch) for autochange - - mudela-book fixes: --dependencies, --dep-prefix - - mudela.tely more updates. Now absorbed LilyPond manpage. - - BUGS now in INSTALL.texi - -******* -pl 11.uu1 - - changed debug init code. - -pl 11.jcn2 - - bf: LDFLAGS=foo CFLAGS=bar ./configure - - bf: configure (--disable-printing = default) -DNPRINT - - bf: mf-to-xpms / make -C mf xpms; feta-accordion is broken, - see mf/README - -pl 11.jcn1 - - gnossiene with new \autochange - -pl 11.jbr1 - - Tried to get rid of path and switch dependencies in mf - build process. - -pl 11.hwn1 - - doco reorganisation: folded glossary and tutorial into manual. - - move mudela-book-doc to texinfo - - feta.tex to mf/ - - release.py, package-diff.py now dump into out/ - - -**** -pl 10.hwn1 - - Auto_change_music, Auto_change_iterator: auto staff -switching. 2nd try. See input/test/auto-change.ly - -pl 10.uu1 - - doc restructure: hacking.texi - - make & install .pfas - - updates: faq.texi - - rpm fixes. - - Windows fixes (9.jbr) - -****** -pl 9.rrr1 - - abc2ly bug fixes and extensions - - volta spanner given height to avoid collisions - -pl 9.jcn2 - - 2.95 fixes - - input/test/different-time-signatures.ly (wasn't this in refman?) - -pl 9.hwn1 - - fixes for mi2mu - - bf: staff-side with empty parent. - - bf: -Hara_kiri_vertical_group_spanner::do_substitute_element_pointer has to -call Axis_group_spanner::do_substitute_element_pointer. Fixes -harakiri & barline problem. - - junk: Spring_spacer, Ineq_constrained_qp, Mixed_qp, -Active_constraints, Inactive_iter, Matrix, Vector, -Choleski_decomposition, Full_storage - - -pl 9.jcn1 - - included last Localisation.texi - - set-lily: de catalog too - -******* -pl 8.hwn1 - - Erwin Dieterich: german translation. - - dependency helper funcs simplified. - - junk breaking stats. - - cleanups: Line_of_score also is X_AXIS group. Score_columns -are put into Line_of_score of score. - -pl 8.jcn2 - - scripts/mudela-book.py: use hash of full .ly contents (by default) - - bf: footify html doc upon creation too - -pl 8.jcn1 - - Documentation/Localisation.texi: still some issues - - Uniformised locale strings - - marked some errors/warnings without _/_f markings - - added programming_warning (): not to be localised warnings - (none identified as yet) - - Update of po/nl.po - -******* -pl 7.hwn1 - - website fixes. - - spacer cleanups - - Simple_spacer: a simpler constraint solver. Enabled by default. -pl 7.jcn1 - - fixes to nl.po - -******** - -pl 6.uu1 - - website fixes. - -******* -pl 5.hwn1 - - more .texi; yodl completely removed. - - rm'd several doc stuff: engraving.yo, gnu-page.yo, translated blurbs (leave it to translation project) - - sm: help2man-*make - - mcgrain bib entry. - - debian updates. - - gcc 2.95 const fixes. (hopefully) - - sm: rm'd Documentation/tex/ directory. everything in stepmake/INSTALL.texi - -pl 5.jcn1 - - lily.scm: don't use regex-substitute/global - - website/doco fixes - - bf: package-diff.py - -************ - -pl 4.hwn1 - - bf: repeats. - - bf: mmrests - - bf: simpler guile detection. - - use texinfo for reference manual. - - inline lily.ps from lilypond. - - texi for doco: converted directory Documentation/tex/ - - -pl 3.hwn1 - - mudela-book tweaks for surviving texinfo - - include feta command seqs. in .tex - - guile 1.3.2 fixes. - - include config.h directly. - - bf: mudela-book. Now linear in size of document. - - scriptHorizontal property; more or less works. - - changes in Graphical_element, Graphical_axis_group -offset removed from public interface, now use relative_coordinate (). -extent () is given relative to this. - - removed Rhythmic_head::dots_i_ - - bf: Rhythmic_head::do_substitute_element_pointer () - - Direct access to dim_cache_ replaced by methods in -Graphical_element. - -********** - - -pl 2.mk1 - - bf, tie.cc: handle postbreak left align correctly -pl 2.lec1 - - abc2ly fixes. - -pl 2.hwn1 - - rewrite of mudela-book. Now uses chunks, and you can put -\input, \include and \mudelagraphics in verbatim sections. - - -pl 2.jcn2 - - bf: auto-beamer: don't junk beam if manual beam shows up - -pl 2.jcn1 - - add-html-footer.py, ls-latex.py .tely updates and fixes - - tely (texinfo-lily) rules and test Documentation/metadoc/foo.tely - -************* - -pl 1.uu2 - - complete rewrite of mudela-book. Much cleaner now. -Support for texinfo. - - convert-mudela now per file, add \version if not present. - -pl 1.uu1.jcn1 - - internationalization fixes for getopt-long help - -pl 1.uu1 - - rewrite --help messages for help2man: - * lilypond - * mi2mu - * mudela-book - * convert-mudela - - cleanup: mf-to-table.py - - Getopt_long: support for --help msg. - -pl 1.mb1 - - bf, scalar.cc: ".3" now detected as numerical - -******** - -pl 0.uu1 - - refman updates by Werner & Mats - - now use ChangeLog for changes. - -pl 0.jcn2 - - po fixes - -pl 0.jcn1 - - gcc-2.95 nitpicks - - added pointers to mailing lists in toplevel docs - -0.mb2 - - configure: more robust detection of Guile - - Midi_note_off: revert to fixed note-off velocity. Fixes - problem with notes that never stop. - - Decreased breakable_column_space_strength - - Added a few TODO - - bf: "harmonic" and "cross" note heads also for half and - whole notes. - - linewidth and textheight set independent of the font size. - - bf, titledefs.tex: opus and piece are not repeated for - every piece unless they are explicitly set again. - -0.mb1 - - Changed dynamicDir to dynamicDirection. - - refman and tutorial corrections. diff --git a/Documentation/misc/CHANGES-1.3 b/Documentation/misc/CHANGES-1.3 deleted file mode 100644 index 476a69dc15..0000000000 --- a/Documentation/misc/CHANGES-1.3 +++ /dev/null @@ -1,4819 +0,0 @@ -1.4.0 -===== - -* RedHat .spec tweaks. - -* Bugfix: ly2dvi -o directory/ foo now works. - -1.3.153.lec1 -============ - -* abc2ly fixes: - - names in multi-voice music also don't have numbers in them. - - No longer using staff_margin_engraver - -1.3.154.jcn1 -============ - -* Don't set LILYPONDPREFIX in login scripts. - -* Bugfixes ly2dvi: footer placements and headsep (Mark Hindley). - -* Small tweak for braces look. - -1.3.154 -======= - -* More brace bugfixes. - -* Revert: simplified TFM and PK logic in ly_init_kpath (). Find feta -fonts in datadir (eg /usr/share/) again, rely on environment in the -other tools. - -* Add .pk font caching for ly2dvi. pk files resulting from running -dvips are stored in outdir. - -1.3.153.jcn2 -============ - -* Cleaned-up braces font selection code. - -* PO updates. - -* petite-ouverture-a-danser.ly bugfix, twinkle.ly bugfix - -1.3.153 -======= - -* Some small chord name fixes. - -* Added alternative introduction to tutorial; to be merged. - -* Reverted simple easy note head function, as some printers seem to -choke on it (so there are printers that don't use ghostscript?). - -* Chord tremolo fixes: shift beams vertically on whole notes. Center -beams on whole notes. 'beam-gap' had been renamed to 'gap', but only -for reading. - -1.3.152.jcn3 -============ - -* Fixed brace font selection: do pick bigger font when needed. - -* Increased number of brace fonts; made size step variable. - -1.3.152.hwn1 -============ - -* Add lilypond-init.el - -* Bugfix: flipped octaves on octaviated clefs _8 - -* Prevent dot/flag collisions by lengthening the stem. - -* Bugfix: horizontal shift amount for note collisions. - -* Prevent tuplet bracket/staff line collisions - -* Bugfix: remove tuplet brackets on automatic beaming. - -* Move development.texi to the WikiWiki. - -1.3.152 -======= - -* ly2dvi: changed headsep to 0pt, as old ly2dvi had. Fixes mutopia -textheight setting. - -* Fixed feta-braces: more symbols again, but all paper sizes use same -font. Also fixed lookup. - -* Maximum length for lyric-hyphen. - -* Two forgotten note corrections to Standchen. - -* Website compilation fix. - -1.3.151.mb1 -=========== - -* ly2dvi: add lilypond directories at end of tex paths - -* renewed smart-transpose example - -1.3.151.hwn1 -============ - -* Tutorial revision: add much simpler examples in front. - -* abc2ly fix for duration at end of line (Laura Conrad) - -* centralCPosition is set by \clef as well; this fixes the grace note + -clef problem. Property clefPitches is deprecated. - -* Separating_group_spanner now searches items until it finds a -non-empty one. This fixes a problem with lyrics clashes on barlines -when stanza numbers are on. - -* Uniformised progress messages. File names are always printed in quotes. - -1.3.151 -======= - -* ly2dvi: reverted footer change that broke mutopia endfooter. - -* Standchen revision (found four new bugs). - -* Allow multiple multiply for durations, eg: 'R1 * 3/4 * 10'. - -* Bugfix for direct PostScript output. - -* Compilation fix. - -* Windows: possibly ly2dvi fix, tex install, minor doco fixes, fixed -some urls. - -* centralCPosition is set by \clef as well; this fixes the grace note + -clef problem. Property clefPitches is deprecated. - -* Separating_group_spanner now searches items until it finds a -non-empty one. This fixes a problem with lyrics clashes on barlines -when stanza numbers are on. - -* Uniformised progress messages. File names are always printed in quotes. - -1.3.150.hwn1 -============ - -* RedHat .spec - -* SUSE .spec - -* website cleanups. - -* don't keep remaking lilypond-internals.texi - -* ly2dvi bugfix: use the maximum linewidth specified. - - -1.3.149.jcn3 -============ - -* Bugfix: markup text: lines with markup. - -* Fixed line height in postscript output. - -* Windows installer stuff: the ``It shouldn't be hard -- but do need - some sleep'' release. - - Think of it: /shouldn't/ is *exactly* why GNU/Linux exists, and - why we advise to run LilyPond on Linux -- UMSDOS if you must. - - You may consider our part of the job done. Any more of this - sad and sorry stuff will drive me to drink. It makes you realise - again how much fun using Linux actually is. - - We'll take patches from now on, from people that have a stronger - stomach. Good night. - - - Ly2dvi: run commands from sh (so that tex wrappers be used). - - - Added cygwin man,less and windows gs, gsview, miktex, python to - lilypond installer repository. Moved profile.d setup functionality to - postinstall. - - Added tex and latex wrappers. - - Wrappers for all python scripts. - -* Removed RMAIL header from german-chords.ly + fixes (Rune). - -1.3.149.hwn1 -============ - -* Website fixes - -* Allow ` for lyric punctuation - -* Add note to refman saying to read the tutorial first. - -* Changed regular identifier error to warning. - -* Make lexer emit FRACTION for N/M (where N, M unsigned numbers). This -fixes one shift reduce, fixing the problem with multiplied durations -and inversions. - -* Set measureLength and beatLength from the parser. This fixes percent -repeats that come directly after a time signature change. - -* Bugfix: process clef change upon Clef_engraver creation. This fixes -grace notes beginning a piece; bug with combining clef changes and -grace notes remains. - -* Bugfix: typo in convert-ly rule - -* spelling: barsize-procedure -> bar-size-procedure - -* fixes for input/test/ (thanks, Laura) - -* Bugfix: \version "1.2.4.foo" now doesn't cause a crash. - - -1.3.149 -======= - -1.3.148.jcn3 -============ - -* Added titling and page wrapping to direct PostScript output. -Determining the line height still doesn't work, but you can set -lineheight in paper block. - -* Bugfix: lilypond -o - foo.ly. - -* Took a stab at jazz-style chord name additions. - -* Compile fixes: gcc-3.0 snapshots hit Debian unstable. Note that -flex-2.5.4a-11 still breaks with g++-3.0pre. - -* Chord-name cleanups. - -* Markup text: -- added (extent . (min . max)) -- overstrike, as alias for (extent . (0 . 0)) -- added overstrike property to super and sub -- allow text to be in too deep list, ie: #'((("text"))) still works -- allow HEAD to be in too deep list, ie: #'(((bold)) "foo") -- fixes to raise -- renamed (rows to (columns (Thanks Mats; I must have been asleep -when I wrote that code) -- renamed align to axis - -* Fixes for german-chords.ly (Rune). - -* update-lily: use ftplib, notify upon failure, not success. - -* Oops, I did it again (Han-Wen). - -1.3.148.hwn2 -============ - -* Documentation updates. - -* Bugfix: header/footer for ly2dvi. - -* Fixed: ly2dvi file1.ly file2.ly - -* lilypond-bug bugfix: remove .png file if output fails. - -1.3.148 -======= - -1.3.147.jcn2 -============ - -* Fixed windows documentation. - -* Filled in tutorial section on windows. - -* Ly2dvi: don't use posix file utilities if we have python >= 1.5.2. - -* Included additional cygwin login and wrapper scripts. - -* Added cygwin path conversion to file-path.cc, to get output in cwd. -After upgrading cross compilation environment to cygwin-1.1.8-2, it -seems that these are no longer necessary; disabled by default. - -1.3.147.mb1 -============ - -* Glossary and refman fixes - -1.3.147.lec1 -============ -* abc2ly fixes: - - - Remove $ from voice names. - - - Fix problem with full names of modes - -* added documentation of major limitations of abc2ly to converters.itely. - -* added documentation of %%LY to converters.itely. - -1.3.147.hwn1 -============ - -* refman fixes. - -* Spelling fixes in .scm files: change equaliser to equalizer - -* Add music properties to generated documentation. - - -1.3.147 -======= - -* Updated doco to reflect Windows installer. - -* Ripped Cygnus' installer/updater for Windows. - -* Cleanups: chord-name.scm. - -* Added 'trunc' target for ports, and run at local-dist: in -ports/mutopia topdir. - -* Bugfixes: update-lily.py - -* Bugfix: synchronised german-chords.ly with chord-name.scm. - -* --srcdir build fix: really included dummy-interfaces.itexi now. - -* Added warning message, rather than encouragement, against configuring -without kpathsea support. - -* Moved convert-ly targets from ports to ly make, added ly templates -to mutopia and input directories. Bugfix to convert-ly. Ran -convert-ly in mutopia dir. - -* Recommented some scheme comments in .lys, checked that convert-ly -doesn't destroy them. - -* Bugfixes to convert-ly: don't try to open unexistent file (eg, -unexpanded wildcard). Don't remove one semicolon of ';;' scheme -comments, don't remove semicolon after hash: #; - -* Fixed some errors from ; conversion. - -1.3.146.hwn3 -============ - -* ly2dvi bugfixes and latexoptions support (Mark Hindley) - -* Reference manual fixes. - -* Added lilypond-book tutorial section - -* Hairy bugfix for Align_interface::align_to_fixed_distance (). This -fixes gaps that appear sometimes when you put things on top of a piano -staff. - -* Added Rune's apply example of wtk1-prelude1. - -* Bugfixes for wtk1-fugue1 - -* Add a check for regular identifiers to parser. - -1.3.146 -======= - -* Make and ly2dvi fixes. - -* Made feta-timesig C a bit rounder. - -* Included flat autogenerated list of grob interfaces into refman. - -* Moved Rest_engraver to ThreadContext. - -* Documentation updates. - -* Bugfix: package-diff: remove all out-?.* dirs. - -* Preliminary tutorial fixes. - -* Ly2dvi: - - keep .dvi output when making .ps. - - name latex wrapper for foo.ly: foo.latex - - keep .tex and .latex output if latex fails - - keep .dvi output if dvips fails - - replaced --outdir option with --output=FILE option, where FILE - may include directories - - enhancements and fixes - -* Typo fix: clean-fonts - -* Bugfixes: lilypond-login.sh - -* Tutorial and refman fixes (Mats) - -1.3.145.hwn1 -============ - -* Bugfix: LyricsVoice.stz property now works. - -* Remove semi-colons from lilypond syntax. - -* Removed a grammar ambiguity: '-' DIGIT (fingering, only possible in \notes) -now can not be interpreted as a negative number. - - -1.3.145.rz1 -=========== - -* Stem/notehead attach bug fixed (still probs with mensural head and - other head on same stem) - -* Minor font changes - - -1.3.145 -======= - -* Build fixes for icon, this fixes 'rpm' target. Tried to reinclude -in rpm using (.png and) .xpm, but latest LinuxPPC release's rpm -(3.0.6) Icon: tag handling is broken. - -* Fixes for update-lily script. - -* Bugfixes: refman, changed Ascii to ASCII. - -* Fixed ascii art output. Started some doco on different output formats. - -* Fixed scheme font lookup to handle new font lists with wildcards. - -* Fixes to point-and-click doco (Thanks, Laura Conrad). - -* Bugfixes: changed several (eval to (ly-eval for guile 1.4/1.4.x -compatibility. - -* Fixes to buildscripts/clean-fonts.sh. - -1.3.144.hwn1 -============ - -* Tutorial updates - -* Change interaction between clef-engraver and positioned items: do -not use acknowledge/announce () to get position relative to c0, but -use centralCPosition directly after grob creation. - -Side-effect: Pitch_squash_engraver now puts notes on position in -staff, not on specific pitch. - -* Bugfixes: yet more create_grobs () -> process_music() reverts. - -* Tutorial updates - -* Don't give unbound spanner warnings for isolated dynamics on space -rests. - -* cleaned up debug stuff. - -* cleaned up INSTALL document. - -* Key_change_req::do_equal_b(), keychange merge. - -* per octave key signatures. See -input/regression/key-signature-scordatura.ly - -* moved tricks/ directory into test/. - -* Rename {Staff,Lyrics,etc}VerticalExtent and friends into -VerticalExtent. Use predefined props to prevent inheritance. - -* Multi_measure_rest_engraver now uses whichBar property to detect -barlines. Hence, no need to keep Bar_engraver and -Multi_measure_rest_engraver together. - -* Revised syntax for multiplied durations. Multiplied durations must -now directly follow the number +dots. example: - - c4*3/4 -\f ( % valid - c4-\f ( *3/4 % invalid - -* Halt configure if kpathsea not found. - -* Small refman fixes. - -* Prevent tie - dot collisions. - -* Bugfix: don't crash if hyphen spanner bounds are empty. - -* Spanish glossary, courtesy David Gonzalez. - -* Bugfix: all-font-metrics.cc: only lookup .tfm and check checksum if -the AFM file has a CheckSum field. - - -1.3.144.mb1 -============ - -* Fix ps specials to work together with \usepackage[french]{babel} - -1.3.144 -======= - -* LilyPond-mode: show what's going on (font building) in *view* buffer. - -* Added environment settings to ly2dvi and lilypond-book. - -* Bugfix: make diff links diff into patch-dir, like make release. - -* Bugfix: make diff/release for different configs. - -* Bugfix: convert-ly: don't change item name ChordName to ChordNames. - -* Added flag (LilyPond-kick-xdvi) to LilyPond emacs mode to allow -simultaneous view processes. - -* Small doco fixes. - -* Cosmetic bugfixes to chord names. - -* Fixed order of piano pedal strings (Amelie). - -* Changed embarrassing 'chorda' to corda (Thanks, Amelie). - -* Bugfixes: ly2dvi: empty tagline, don't fail if gettext.py can't be -imported, check for linewidth before indexing, copy midi output. - -1.3.142.rz1 -=========== - -* Added "hacky" drum notation/midi. See input/tricks/drums.ly and - ly/drumpitch.ly. Moved midi-instruments to scm. - -* Added temporary nested staffgroups/choirstaffs support - use Context InnerStaffGroup / InnerChoirStaff. - -1.3.143.uu1 -=========== - -* Bugfix: hairpin that hangs on otherwise empty column should not -collapse into flat line. Inserted sanity check in Interval::center(). - -* Programmable stem-attachments for note heads. - -* Set default empty instrument name for Staff, to avoid weird effects for -named grand staffs. - -* remove various entries from mutopia/ - -1.3.143 -======= - -* Glossary bugfixes for lilypond code. - -* Bugfix: don't crash if dy or y not set in Beam. - -* Doco updates: moved contents of tricks chapter to input/tricks, -inserted lilypond-book tutorial, added polyphony section. - -* Score.skipTypesetting skips over already or not yet corrected music, thus -speeding up running times and score debugging. (Includes bugfix relative to -patch submitted to list.) - -1.3.142.jcn1 -============ - -* Mup2ly preprocesses and extracts all plain notes. - -* Bugfix: patch in $(outdir) - - -1.3.142 -======= - -* some mup2ly progress. - -* Bugfix: ly2dvi: don't include empty set fo latexheaders, don't use -python-1.5.2 abspath func. - -* Setup for new mup converter, based on pmx2ly. - -* Bugfix: lilypond-book: accept \documentclass{article}. - -* scripts/update-lily.py: fancy source rebuild update tool that we're -probably not going to use on www.lilypond.org. Check it out! - -* Bugfix: building of topdocs. - -1.3.141.hwn2 -============ - -* Fix: instrument names on piano staffs. - -* Bugfix: don't left-align absolute dynamics. - -* Bugfix: don't make spacing rods for absolute dynamics. - -* Various bugfixes for examples (thanks Laura!). - -* Bugfix: clean up of hairpin ending logic. Crescendi start under -notes now. - -* Don't substitute '\ ' for '\_' in lyrics. (Suggestion by Roy Rankin) - -* In computing text lengths handle the following cases \['`"^_]. (the same) - -* Made directories input/no-notation, input/ascii-art - -* Doco fixes. - -* Beat repeats, double measure repeats; removed repeat sign character -from the font (WARNING: FONT CHANGED). - -* Cleanups in (de)crescendo code, fixed continued (de)crescendi. - -* German chords (Rune Zedeler) - -1.3.141 -======= - -* po update. - -* Renamed remaining mudela -> lilypond (except for old change logs). - -* Dropped Solo-Cello-Suite II and gnossienne-4 from ./mutopia, as -they're now accessible throug the ports. - -* Fixed compilation of lots of examples. - -* Convert-ly: added and fixed some conversions. - -* Doco updates. - -* Ly2dvi: don't hang compilation process: run latex in batchmode. - -* Some ly2dvi updates. - -* Junked cruft from makefiles. - -* Added message about make help at end of configure. - -* Some documentation updates. - -* Convert-ly: added some missing rules. - -* Ly2dvi: changed footer (and header) macros to match mutopia headers again. - -* Convert-ly: always insert or update version number. New option: ---assume-old will apply all conversions if version cannot be -determined. - -* Small documentation fixes. - -* Removed default (font-shape . italic) settings from TextScript and -TextSpanner. - -* Moved ports section of mutopia to mutopia/ports. Fixed make -bootstrapping. Added sync target, synced with www.mutopiaproject.org. - -* Bugfix: ly2dvi sets footers, headers, tagline. Pagenumbering on by default. - -1.3.140.hwn1 -============ - -* input/trick/boxed-molecule.ly : show how to draw boxes around grobs. - -* added font-shape caps, input/test/caps. - -* Added minimum-length for hairpin. Unified Tie::set_spacing_rods and -Slur::set_spacing_rods into Spanner::set_spacing_rods - -* Small doco fixes. - -1.3.140.mb1 -=========== - -* Bugfix: Some more examples in input/test/ work again. - -* bugfix: cautionary accidentals - - -1.3.140 -======= - -* Coriolan gets mutopia-id 57. - -* Experimental start of ports to mutopia archive. - -* Bugfix: ly2dvi: added letter support, catch indexing with unknown -papersize names. - -* ly2dvi: removed warning message and changed --set=papersizename= to ---set=papersize=. This fixes mutopia letter-targets. - -* Small fixes to Coriolan. - -* Bugfix: don't typeset suicided multi-measure-rests, don't set -multi-measure-rests spanning less than one measure. - -* Bugfix: line-column-location. - -* Allow markup text for crecscendoText and decrescendoText. - -* Changed part combiner's a due text: `a2 to a2. - -* Bugfix: info direntries. - -* Automated fixing of info structure. Build now stops on info errors. -This should robustify documentation and website builds. To undo this, -remove the target `info: check-info' from Documentation/user/GNUmakefile. - -1.3.139.hwn1 -============= - -* Move Multi_measure_rest up/down in combined parts. - -* Renamed FollowThread into VoiceFollower, followThread into -followVoice. - -* lilypond-book: changed nonfragment into nofragment - -* Cleanups for ledgered rests. - -* Bugfix; don't create RhythmicStaff if asking for Staff. - -* Bugfix: sparseTies. - -* Reference manual: hara kiri, font selection - -* changed font-point-size into font-design-size - - -1.3.139 -======= - -* Documentation build fixes. - -1.3.138.hwn1 -============ - -* Documentation updates - -* Added -e,--evaluate=CODE, to evaluate scheme from the command -line. Practical application: - - -e "(set-lily-option 'midi-debug #t)' - -Removed command-line options -T, -t, -Q, -x. - -* Changed point-and-click. Now it should be set to a procedure, e.g. - - (set! point-and-click line-column-location) - -Added convert-ly rule. - -* Bugfix: use aliases not only for creating contexts, but also for -referring to them. This fixes \clef "percussion" in rhythmic staffs. - -* removed \textscript. - -1.3.137.jcn4 -============ - -* Bugfix: ly2dvi: handle input files with multiple extensions. - -* Minor doco updates. - -* Bugfix: ly2dvi: can't remove cwd on Solaris. - -* Better --enable-conf=CONF message, better INSTALL.tely documentation. - -* Bugfix: built of Documentation/user for different conf=CONF. - -* Don't append "." to version string without my_patch_level. - -* Faked titling for tutorial example. - -* Bugfix: don't override GUILE environment settings. - -* Small refman fixes. - -* Better tutorial orchestral score example. - -* Bugfix: input/test/hshift.ly - -* Fixed looks of configure options. - -* Bugfix: ly2dvi: linewidth < 0. - -* Bugfix: documentation build: fixed two macros in refman that -makeinfo groks, but make texi2dvi barf. - -* Bugfix: listing of engraver contexts in autogenerated documentation. - -1.3.137.uu1 -=========== - -* changed name of ly-[sg]et-elt-property into ly-[sg]et-grob-property - -* Added function (ly-music-name ), returns the name of a music objects as a -string. - -* Bugfix: \relative on \chords is no-op. (Added Un_relativable_music) - -* Refman documentation fixes. - -* Property undefine: - - \property X.Y \unset - -undoes \property X.Y = Z. \unset is confusingly asymetric with \set. - -* removed ChordNamesVoice - -* added \alias STRING ; to translator definition, so \name -RhythmicStaff, \alias Staff is found for \property Staff.XXX - -1.3.136.hwn2 -============ - -* Documentation updates - -* Check whether property definitions are duplicate. - -* Percent style repeats. - -* Named music creation: (ly-make-music "Note_req") - -* Added noteheadtypes: "slash","triangle","xcircle" ; completed -noteheadtype "cross" ; added (ugly) tab-clef ; changed percussion -clef, fixed "repeat dots on even number of stafflines"-bug. (Rune -Zedeler) - -* Use complete version number for /var/lib/texmf/ paths. - -1.3.136.jcn3 -============ - -* Finished () beautification. - -* Bugfix: in grob-description.scm, change Script::after_line_breaking into -before_line_breaking. - -* Bugfix and small addition to convert-ly. - -* Bugfix: ly2dvi: create --outdir before copying there. - -* Bugfix: mutopia letter target. - -* Some bugfixes and checks for killed spanners, reducing warnings in -Coriolan from 1143 to 283. Part combiner still gives rise to many -foreseeable warnings. - -* Bugfix: install gettext.py into @datadir@/python and use that path -from ly2dvi. Debian or RedHat installs could/should move gettext.py -into /usr/share/lib/python/1.x/site-packages or so. - -* Bugfix: move the making of \makelilypondpiecetitle to actually -included part of lilyponddefs.tex. - -* Bugfix: ly2dvi, tex.scm: set empty tex definitions to \relax. This -fixes ly2dvi'ing of scsii. - -* Bugfix: completed renaming of `cautionary' to `reminder' for broken -tie accidental feature. (`Cautionary' is reserved for parenthised -accidentals.). This fixes all tie and accidentals bugs. - -* Bugfix: added dynamic-interface to DynamicText grob. This fixes -loose dynamics. - -* Bugfix: enable Voice_devnull_engraver. This fixes loose scripts and -double dynamics. - -* Bugfix: don't dump core on some programming errors (2x). - -* Grand Coriolan revision after copyright free reprint of a 1862-1865 -original edition. This revision also revealed fair amount of bugs. -Previous versions arguably might have worn some small stains of -editorial decisions dated 1936. Arguably, because most of these small -changes can be found in other editions, some of which even are -commonplace modernisations. - -1.3.136 -======= - -* Bugfix: set dependency for direction-source in script-engraver. This -fixes core-dump problem when stacking multiple scripts containing -staccato dots. - -* Put TFM files under $VARTEXFONTS (/var/lib/texmf, -typically). PK files are put in the right spot -automatically, and dirs are also created automatically. - -A change to mktexnam is still required -- add - - MT_DESTROOT=foobar - -before line 161. - -1.3.135.jcn3 -============ - -* Internationalised ly2dvi.py (thanks to GNU Solfege), and nl.po update. - -* Coriolan fixes. - -* Bugfix: (first and also) write global header fields; this fixes -`latexpackages' and ly2dvi. - -* Bugfix: website build. - -* Fixed titling: cleaned out titledefs.tex for use by ly2dvi. - -1.3.134.mb1 -=========== - -* minor documentation fix. - -1.3.134.jcn2 -============ - -* Bugfix: Pitch::transpose (). - -* Small doco update. - -* Silly build and website-build fixes. - -* convert-ly: added conversions, converted glossary, refman and examples. - -1.3.134.hwn1 -============ - -* Rewrote ly2dvi, moved the old one to buildscripts/. The result is -490 lines code in stead of 1230. - -* Modified kpathsea lookup so it will find system-installed feta TFMs first. -Now lily doesn't clutter the CWD with .TFM files. Kpathsea is fun if you like -pasta. - -1.3.133.jcn5 -============ - -* Bugfix: fixed point-and-click broken in jcn2. - -* convert-ly: Added and fixed various entries - -* Small ez play tweaks. Guess I'm a sucker too. - -* Easy-play bugfixes: don't do showpage for each notehead, output -staff-symbol first, moved to lily.ps. - -* Bugfix: don't print so many decimals in ps output. - -* Bugfix for refman example. - -* Added some part combiner doco. - -* Bugfix: a broken tie only generates an accidental if it would differ -from an untied note. - -1.3.133.hwn1 -============ - -* Center instrument name on staffs. Use -Side_position_interface::align_elements_to_refpoints. - -* staff-symbol-referencer-interface, general cleanup of -interface-description.scm - -1.3.133.mb3 -=========== - -* Bugfix: Time and key signatures in MIDI. - -* Bugfix: Tempo changes in MIDI work again. - -* Bugfix: ly2dvi file.tex works again. - -* Bugfix: don't stretch the space after the last score line. - -1.3.132.jcn3 -============ - -* Tied notes at a linebreak repeat their accidental. - -* Removed some cruft from lily/include/. - -* Bugfix: tied notes in chords sometimes got stuck in MIDI output -(thanks Mats). - -* Added some example bug files, taken from Coriolan - -* a2-engraver: \property noDirection: don't force direction when part-combining (for StaffCombining). - -* text-spanner: don't repeat edge text for broken edge. - -* Coriolan fixes, titling, font setting, header info, cello octave -(yes, notated different from bass; all agree) at end. - -1.3.132.hwn1 -============ - -* Allow declared repeat variant string - -* Bugfix: break alignment at right edge. - -* Easy-notation: letters in circular note heads. - -* Debian patch by Anthony Fok. - -1.3.131.jcn2 -============ - -* Fixes for ascii-script output. Stylesheet needs some work, just as -PostScript output. - -* Bugfix: convert-ly --to accepts argument. - -* Prepared Petites Preludes for (first?) submission to mutopia. - -* Bugfix: out-letter/%.ps generation for mutopia. - -* Bugfix: don't use $(message ) in makefiles; some versions of make -choke on this. - -* Bugfix: ly2dvi.py: don't add magic `//' to TEXINPUTS,MFINPUTS; this -chokes kpsewhich 3.3.1 (bug report filed). - -* Bugfix: file-path.cc: don't interpret relative path as system root. - -* Bugfix: --srcdir install. - -1.3.131.hwn1 -============ - -* Documentation: piano pedals, breath marks, tutorial fixes, -convertors, autochange, \override/\set/\revert, multi-stanza lyrics, -\outputproperty - -* Bugfix: another fix for collapsing dynamics with partcombine. - -* Bugfix: add functionality of -Side_position_interface::self_align_callback() into -Align_interface::align_elements_to_extents(). Otherwise, combining -both (such as in a break alignment) leads to weird behavior: the -spacing information is written halfway during a callback sequence, -leading to weird results. - -This fixes input/test/orchestscore.ly - -* Bugfix: x-offset of stem was off by 0.5 stem thickness. - -* Add grob-property attachment-angle: angle for stem to attach to note head. - -1.3.130.hwn2 -============ - -* Documentation: notation contexts. - -* 2001 (c) search-replace patch. - -* Center rehearsal marks by default. - -* Fixing collapsed dynamics with part-combine - -* \property tupletNumberFormatFunction selects formatting function for -tuplet brackets. - -1.3.130.jcn5 -============ - -* Added some handy targets to example makefile: make/ly.make. - -* Bugfix: file-path.cc; absolute directories start with directory separator. - -* Makefile template using dependencies: make/ly.make. Needs some -simple examples. - -* Depencies fixes for lilypond, ly2dvi (still kludged) and lilypond-book. - -* nl.po update. - -* Bugfixes and cleanups of mainly main.cc. - -* Enabled changing default tex output extension to ".lytex". - -* Bugfix: use init file extension .ly for extensionless input. - -* Ignore outname = ; settings in output blocks. - -* Revised input and output naming, now it's possible to include a -directory in the output name. This should fix some input/init name -related bugs. - -* Fixed dependencies for outdir in lilypond-book and ly2dvi. - -* Uniformised tags to read: Generated automatically by: . - -* Install make/* and stepmake/stepmake/* to enable making use of -stepmake templates. - -* Added example mutopia makefile: make/ly.make. - -* Lilypond-book now writes lily-.ly files. - -* Bugfix: don't display repeat colons for zero height bar lines; fixes -repeat barlines in lyrics. - -* Fixed markup definition and implementation, added baseline-skip -property; this makes multi-line markup text a lot easier. - -* Bugfix: chordChanges works with other rhythm of accompaniment, and -silly chord name typo fixes. - -1.3.130 -======= - -1.3.129.jcn2 -============ - -* Implemented Phrasing slurs, copied from slur. - -* More hooks for chord pitch name overrides, see -input/tricks/german-chords.ly. - -1.3.129.hwn1 -============ - -* Bugfix: bar lines in lyrics. - -* Bugfix: vertical positioning of isolated dynamics: absolute dynamics -are only supported by the note they are on, in absence of crescendi. - -* Documentation of ancient clefs, custodes (Jurgen Reuter) - -* Small documentation fixes: rehearsal marks, -f option, markup, instrument names - -* Bugfix: rounding errors caused errouneous ledger lines for -#'staff-space = 1.3 - -* Subsubtitles, \bar ""; (Rune Zedeler) - -1.3.129 -======= - -* Small doco fixes. - -* Removed duplicated engraver hierarchies from coriolan and orchestral -examples. - -* Added user control for devnull engravers. Default: switched off - -* Small doco fixes. - -1.3.128.hwn1 -============ - -* Doco fixes - -* Glissando fix (Rune Zedeler) - -1.3.128.mb2 -=========== - -* Made the percussion clef somewhat fatter, thanks to Rune Zedeler. -Note: font updated! Added this clef to input/regression/clefs.ly. - -* updated \endincipit macro and the examples input/test/incipit.ly and -input/regression/clefs.ly - -1.3.127.jcn3 -============ - -* Mutopia preparations and Coriolan fixes. - -* Small beam cleanup, changed y-position-hs,height-hs user overrides to - staff-position,height (height:name suggestions?), now in staff-spaces. - -* Beam (y, dy) calculations now as list of scm functions. - -* Added cleaned-up excerpt from Coriolan for tutorial. - -* Bugfix: beam looks at smallest gap for auto knees. - -* Property-description-fix: allow auto-knee-gap to be set to false. - -* Small doco fixes. - -* Bugfix: repeats without alternatives. - -1.3.127.uu3 -============ - -* Bugfix: staccato dot on outer staff lines. - -* Documentation: lots of updates and revisions. - -* \repeat tremolo for single notes, \repeat tremolo 4 c16 -produces the same effect as c4:16 - -1.3.126.mb1 -=========== - -* ly2dvi: bugfix --number. -Added header field latexpackages, see input/test/orchestscore.ly - -* \mark: add possibility to use font selection markup, see input/test/mark.ly - -1.3.127 -======= - -* Grand Refman restructuring, featuring outline mode. - -* Fixed missing menus and cross references. - -* Coriolan fixes and updates. - -* Bugfix: a2-engraver and *devnull_engraver recognise alternative -'oneXXX' 'twoXXX' naming convention. - -* Enabled markup text to be used for instrument names. - -* Bugfix: interface description of System_start_delimiter - -* Slur attachment fix (thanks, Han-Wen) - -1.3.126.hwn1 -============ - -* Bugfix in Global_translator::run_iterator_on_me (): only run -iterator::process if iterator::ok() is true. - -* Bugfix: when iterating empty sequential-music, start out with an -invalid iterator. - -* Bugfix: length calculation for volta repeat music with too few -alternatives. - -* Bugfix: print different string for first printed alternative in -volta repeat music with too few alternatives, eg. 1.-4. - -* Cleaned up bugs/ directory - -* Be less intelligent about default font backup, just load cmr10 - -* Generated documentation: sort and uniq Grob lists of contexts. - -1.3.126 -======= -* Doco: - - fixes, - - updates, - - rewrites. - - Changed license to FDL. - - added index entries - - tutorial: 0-th tune - - literature overview. - - removed development stuff. - - -1.3.125.jcn3 -============ - -* Clef workarounds for Coriolan. - -* Moved feature and regression-test input to input/feature, input/regression. - -* Added some regtests. - -* Bugfix: auto-knee for beam over rest. - -* Fixes for Coriolan and viola Solo Cello Suites. - -* Replaced generic 'collapse-height' for System_start_delimiter with -brace-collapse-height, bracket-collapse-height, bar-line-collapse-height. - -* Bugfix: measure System_start_delimiter's *-collapse-height in staff-space. - -* Fixed some info and html links. - -* Automatic knees now on by default for vertical distances >= 7 staff-space. - -1.3.125 -======= - -* Updated Coriolan. - -* Bugfix: beams with no stems. - -* Cleanup automatic knees, junked calc_interstaff_dist. - -* Automatic knees now on by default for vertical distances >= 7 staff-space. - -* Bugfix: automatic interstaff knees. - -1.3.124.hwn1 -============ - -* Auto change music bugfix; removed Auto_change_music type - -* Bugfix: add copy ctors to all relevant iterators, this fixes various -combinations with auto-change and part-combine. - -* Bugfix: glissandi with smaller rhythms parallel. - -* Add printfilename option to @lilypondfile - -* Include Grobs in Context self-documentation; remove "Grob " from -node name for grob documentation. - -1.3.124 -======= - -* Tutorial fragment on ly2dvi. - -* Bugfix: also print path of mismatched .TFM file. - -* Some callbacks to allow manipulation of fonts and molecules from -Scheme. See input/test/molecule-hacking.ly ; allows for a kludged -"parenthesize notehead" command. - -1.3.123.mb1 -=========== - -* Added percussion clef. Note: font updated! - -* Bugfix: font style Large works regardless of font-shape. - -1.3.123 -======= - -* Added macro \turnOff to remove volta brackets or any other - graphical objects, see input/test/volta.ly or mutopia/J.S.Bach/pa.ly - -* Removed the "none" clef, use Clef \override #'transparent = ##t instead. - -* Bugfix ly2dvi: paper variable orientation = "landscape" works. - -* Allow for wildcards in the font style alist to give more robust font -selection handling. Ignore shape and series for the font families: -braces, dynamic and music. - -* Bugfix: stem and dstem font symbol. - -1.3.122.jcn3 -============ - -* More website link fixes, split and nonsplit. - -* Non-splitting makeinfo website fix. - -* Doco fixes, included feature document into main documentation. - -* lily/chord.cc (member_notename, lower_pitch): gh_member returns a list of -which car is the member! - -* Bugfix: added equal_p to list of smob functions. This fixes -behaviour of property chordChanges. - -* More guile-1.4.1 snapshot fixes, generated doco. - -* Doco fixes. - -* Small fixes for guile-1.4.1 snapshot which is more strict on symbols -vs strings. - -1.3.122 -======= - -* Small lilypond-book cleanups. - -* Bugfix: fix lyric extenders. - -1.3.121.mb2 -=========== - -* Bugfix: svenska.ly and norsk.ly - -* Bugfix: tied-over accidentals handled more correctly. - -1.3.121.jcn2 -============ - -* Renamed last instances of musical_*pitch to pitch. - -* Bugfix: actually read pitch value in \pitch #(make-pitch ...) - -* Bugfix(?): always allow explicit duration entry. - -* Fixed .po charsets for upcoming msgfmt release (Bruno Haible). - -* Some doco updates and fixes. - -* Bugfix Ly2dvi: reset LC_ALL and LC_LANG too. - -* Commented out dubious undocumented $(PATHSEP) from lilypond-vars.make - -* Replaced some instances of [$(outdir)/].. with $(pwd), these may -break --srcdir builds and texi2dvi. - -* Several fixes for --srcdir build, allowing build from read only media. - -* Moved make/toplevel.make.in to less unusual GNUmakefile.in - -* Bugfix: changed beam thickness to .48 staff-space. - -1.3.120.uu1 -=========== - -* Ancient font update (Juergen Reuter) - -* Syntax change: paper_xxxx -> paperXxxx - -* Some documentation updates. - -* Doc-string cleanups, and completization. - -* Changed Pedal string properties: unify stop/start/stopStart -properties. Changed pedal identifier syntax. - -* bugfix: do change clefs if full-size-change is *not* set. - -1.3.120 -======= - -* Removed texi->dvi cancellation and removed --clean option from texi2dvi -command line; this fixes generation of dvi files in Documentation/user. -Strange bug in texi2dvi. - -* Fixed bibtex url (reported David Raleigh Arnold), added support for -bibtex2html, which is in Debian. - -* Added direntries to toplevel texi documents, for info files -(reported Thomas Klausner). - -* Removed some empty files. - -* Make a Stem::height callback, to prevent early brew_molecule -call. This fixes input/bugs/triplet.ly. - -* Manual fix for generated -interfaces documentation. - -* Small changes for texinfo-4.0a prerelease. - -* Added a --force option for makeinfo .txt generation. - -* Changed debian ftp urls according to new package pools layout. - -* Debian update, including menu/node fixes to development.texi (Anthony Fok). - -* Bugfix: lilypond-book (Tom Cato Amundsen). - -* Increase the size of dynamics, adding new sizes of feta-din (Mats Bengtsson). - -* \clef "none"; no clef, but whitespace (Mark Hindley). - -* Website fix: don't mv but cp .pngs do deep-html dirs. - -* Bugfix: chords examples (James Hammons). - -* Warning fix. - -1.3.119 -======= - -* Added some feature examples. - -* Bugfix for \partial and auto-beamer. - -* Bugfixes: warnings. - -* More feature examples. - -* Renamed some scm files. - -* Some more documentation fixes (move hacking.texi into normal -documentation.) - -* Bugfix: header protection in parser.yy - -1.3.117.mb1 -=========== - -* Bugfix: fetdefs.tex: don't redefine the standard TeX macros - \sharp,\natural or \flat. - -* Bugfix: ly2dvi: handle the --landscape option. Leave the textheight - calculation to the geometry package. Remove some dead code. - -* Bugfix: correct font-family for TextSpanner. - -* Bugfix: script-engraver.cc: forced script directions work again. - -1.3.117.jcn2 -============ - -* Resurrected direct scheme output, ie. lilypond -fscm - -* Warning message fixes and po update. - -* Bugfix: debian package. - -* Resurrected direct postscript output, ie. lilypond --output-format=ps. - -1.3.117.hwn1 -============ - -* Broken left-edge of volta, Again. Now the Final Fix. - -* Smobified Score, smobified Music_output_def, removed Identifier. -Reorganised Scope and Scheme_hash_table to this end. - -* Small cleanups in relations between -Paper_def/Paper_outputter/Paper_stream. - -* lilypond syntax update: deprecate $ syntax for identifiers; Provide -convert-ly method. - -* Rename: don't use grobs in performer methods. - -1.3.116.jcn4 -============ - -* Bugfix: don't set beaming for outer half beams. This fixes some -slurs attached to stem end. - -* Bugfixes for (de)crescendo spanners and generic text spanners - -* Bugfix: Slur::set_interface (): don't overwrite, but copy attachment -property. - -* Started documenting some new or not too wel documented features. - -* Bugfix: only assume making deep split html documentation when -makeinfo --version 4.0.jcn2 is available. Although the documentation -should now build with plain makeinfo 4.0, some links will be broken. - -* Bugfix: lilypond-book: check for .texidoc files *after* running lilypond. - -1.3.116.mb1 -=========== - -* Bugfix: convert-ly.py: Correct syntax for inserted \version, - \push -> override happened in 1.3.111 - -* Bugfix: corrected documentation of timeSignatureStyle, removed all - `unknown type' in the property documentation. - -* Added font family typewriter (cmtt). - -* Bugfix: some examples updated - -* Bugfix: beamed grace notes (reinstate process_music () call in -Grace_engraver_group::process() ) - -* Rename: Global_translator::process -> Global_translator::one_time_step (). - -1.3.115.jcn2 -============ - -* Bugfix: lilypond-book.py: only include exisisting .texidoc files. - -* Lilypond: don't write empty header field file if header field does -not exist (ie, empty .texidoc files). - -* Turn on info generation. - -* Fixes to dynamic placement and crescendo spanners. Incomprehensible -``width-correct'' hack remains. - -* Bugfix: auto-beamer beaming over bar lines. - -* Bugfix: consecutive and non-consecutive glissandi. - -1.3.115.hwn1 -============ - -* Bugfix: multi-measure rest ends, chords. - -* Some back end documentation - -* Rename element to grob in .scm files. - -1.3.114.mb1 -=========== - -* Bugfix: convert-ly - -* Bugfix: Included FAQ.txt in the top directory - -* Allow for instrument names with multiple lines and font selection, - see input/test/coriolan-margin.ly - -* Added example for figured bass: input/test/figured-bass.ly - -1.3.114.lec1 -============ - -* abc2ly fixes - - * allow a g_8 clef to be specified by treble8 - - * allow full mode names, as well as 3 character abbreviations - - * support breves and longas (no abc program that I know of has - longas, but a couple of them have breves, and one can always hope.) - - * translate text annotations beginning with _ and ^ for above and - below the staff. - - * quote lyrics syllables with ( - - * handle real repeat syntax, for appropriately written ABC. - - * %%LY slyrics now works for longer than one character lyric strings. - - * N: fields are now in header. - -1.3.114.uu1 -=========== - -* Prepare for Music type-unification: remove all args from Music -constructor, and set everything in the parser. - -* Moved writing of \header strings feature from lilypond-book to lilypond. (1.3.114.jcn1) - -* Bugfix: tied chords. - -* Turn off .info creation by default. - -1.3.114 -======= - -* Moved all documentation from regtest to individual example files. - -* Added feature to lilypond-book to write out \header texidoc string. - -* Reincluded simple FAQ in tarball. - -* Fixed lyrics with bar-enrgaver example. - -* Renamed LyricVoice to LyricsVoice. - -1.3.113.uu1 -=========== - -* Checksums for AFM fonts: make sure that TFM and AFM files match. -One FAQ less to be asked. - -* Made point-and-click switchable, default: off - -* Bugfix: don't make multimeasure rests from failed span-requests. - -* Bugfix: mark with string arguments, eg. letters.. - -* Bugfix: direction of staccato dots. - -1.3.113 -======= - -* Added stems to font for use in markup text. - -* Fixed markup text kerning, see input/test/metronome.ly. - (Ugh, only feasible if kerning is first markup -- markup text should be revised.) - -* Fixed molecule caching problem with stem-tremolo: fixes vertical -positioning of stem-tremolo. - -* Added forced slur direction (stemUp no longer implies slurUp) in -cross-staff slur example. - -* Fixes to Glissando and line-spanner. Behaves reasonably across line -breaks. - -* Added: Align_interface::fixed_distance_alignment_callback that does -not compute the extents of the to-be-aligned objects. This delays many -brew_molecule() calls, because staff-height is no longer needed for -aligning. - -* Bugfix: allows linebreaks for some types of beam. - -* Bugfix: add braces in larger size range; prevents "Unknown character -127" messages, hopefully. - -1.3.112 -======= - -* Allow two consecutive glissandi. - -* Note_head_line_engraver now also listenes to \property -"followThread": Automagically connect note-heads when thread switches -staff. - -* Fixed american-chords example (except for o/, that waits for kerning fix). - -* Added simple glissando line. - -* Bugfix: broken text spanner (ie. crescendo) - -* Bugfix: chord tremolos - -* Bugfix: staff group brace - -* Bugfix: volta repeats - -* Resurrected clef _8 and ^8 syntax. (This should be deprecated?) - -1.3.111 -======= - -* Fixed non-empty-text feature. - -* Bugfix for Grob::has_extent_callback_b () - -* Added infrastructure for music property documentation strings. - -* Syntax change: \notenames -> \pitchnames - -* Changed syntax \push -> \override, \pop -> \revert. Add: - - \property Context.Element \set #'foo = #bar - -which does a \revert followed by a \override. - -* Documentation updates. - -* Fixed typechecks for \push, \pop and \property - -* Bugfix: Local_key_engraver. - -* Fixes for lilypond-mode.el (patch by Mark Hindley) - -1.3.110 -======= - -* Fixed a mysterious typo in toplevel index. - -* Enabled property-engraver. - -* Cleanup in Auto-beam-engraver (still broken, because timings are off?) - -* Collapsed all ``void Foo::create_grobs () { deprecated_process_music -(); }'' occurences, and reactivated some disabled code (note-name, -chord-name, custos, lyrics). Reactivated Timing_translator using -process_music (). - -1.3.109.hwn1 -============ - -* unsmob_element -> unsmob_grob - -* Make a Slur::height callback, to prevent early brew_molecule -call. This fixes cross-staff slurs. - -* Bugfix: custodes style must be symbol, not string. - -* do_creation_processing () -> initialize (), do_removal_processing () --> finalize (). Remove (do_)add_processing. - -* Move Relative_octave_music::last_pitch_ into SCM, junk -Transposed_music::to_pitch_, junked Time_scaled_music::{den_i_, -num_i_}, Rhythmic_req::duration_, Melodic_req::pitch_ - -1.3.109 -======= - -* Bugfix: resurrected point-and-click. - -* Use scheme object props for storing type predicates and doc-strings -Dump global lists of properties into auto-documentation. - -* Bugfix: extent callback for Rest, so ledger lines don't disappear for -rest-collisions. - -* Removed some hair from chord code - -* Rewrite of engraver pass scheme: try to make graphical objects in -acknowledge_element()/process_acknowledged(), not in process_music() - -* Remove Translator::status_ and associated code. Removes the need for -various XXXX functions as wrapper for do_XXX functions. - -* Search replace: Score_element -> Grob (Graphical object), -{pre,post}_move_processing -> {stop,start}_translation_timestep, -do_try_music -> try_music. - -1.3.108 -======= - -* Dropped ly_lists_equal for gh_equal_ - -* Removed Array from chord. - -* Small bugfix to lilypond-mode. - -* lily/part-combine-music-iterator.cc: fixed (switch `combineParts' -property on), and removed Array. - -1.3.107.uu1 -=========== - -* Bugfix: don't call Crescendo::brew_molecule () too early if there is -an absolute dynamic. - -* Rename class Crescendo to Hairpin. - -* Search/replace: Musical_pitch -> Pitch - -* More links in the backend documentation. - -1.3.106.jcn2 -============ - -* Cross compilation and info build fixes, really cancel all builtin -rules, sigh. - -* Generated documentation fixes: Generate all interface descriptions, -separately, don't list non-set interface properties with element -descriptions. - -1.3.106.hwn1 -============ - -* Deprecate `mudela' name: rename mudela to lilypond globally. - -* construct Music_iterators decentrally. - -* Make smob of Duration - -* Make smob of Musical_pitch. - -* Move Repeated_music members into SCM. Length is computed via a SCM -function. (todo: write SCM function to unfold all repeats. \apply for -\midi) - -* Remove Time_signature_change_req, \time is disguise for \property -Score.timeSignatureFraction = ... - -* \property barCheckNoSynchronize: don't reset measurePosition when -finding a bbarcheck. This makes bar-checks for polyphonic music -easier. - -* elt property full-size-change for clefs. - -* Bugfix: use Stem::dim_callback (), so brew_molecule () is not called -too early. - -* Bugfix: use extent of Note_head (iso. Note_column) for rest -collisions, so Stem::brew_molecule() is not called too early. - -1.3.105.jcn1 -============ - -* Makeinfo html documentation generation fixes. - -1.3.105.uu1 -=========== - -* Remove Bar_req, \bar is now a frontend to setting Score.whichBar - -* Move Context_specced_music::translator_{type,id}_str_ into music -properties. - -* Don't make line breaks during note playing. - -* Clef engraver rewrite. Clef-engraver is now controlled through -properties clefPosition, clefGlyph, clefOctavation. The \clef command -is just a front-end to these, see scm/lily.scm, function -clef-name-to-properties. See also input/test/manual-clef.ly - -1.3.105 -======= - -* Bit of temporary makefile hacking to stay in sync with makeinfo patch. - -* Separate interface description (test phase). - -* Makeinfo --html split fix: http://appel.lilypond.org/fred/software/texinfo-4.0.jcn2.diff - -* Use headers for makeinfo html output. - -* Made some --scrdir build fixes. - -1.3.104.uu1 -=========== - -* Smobified molecule, and cache molecule (ie. generate each molecule -only once). Lily should be faster now. (approx. 6 % ?) - -* Coded properties-to-font-name in C++. Measured speedup: 14% (wtk1-fugue2) - -* Use music properties for Request data. - -1.3.104 -======= - -* Documentation build fix: don't run LilyPond when generating plain info doc. - -* Resurrected info documentation and made cross links between manual -and generated doco, some small fixes. - -* Made small time signature style fix. - -* Generate texinfo iso html documentation. - -* Added x-references for elements->engravers and engravers->contexts. - -* Fixed number font listing in style sheet. - -* Fixed default font settings for text items, text-item now uses -font-interface's alist-chain. - -* Renamed property AutoBeam to autoBeamSettings to avoid confusion -about non-existing AutoBeam element. - -* Mensural clefs (courtesy Juergen Reuter) - -1.3.103.lec1 -============ - -* abc2ly enhancements - - * %%LY comments - - * explanation of rationale for %%MIDI nobarlines - - * supports -8va as a syntax for tenor clef - - * pushing the Staff.timeSignatureStyle property - - * parses space between key letter and mode in K: statement - - * default for guitar chords is above the staff - - * fix for translation of :: repeat - -1.3.103 -======= - -* Translated auto-beam properties to alist. - -* Rewrite of tfmtoafm in scm. - -* Rewrite of emacs LilyPond mode, based upon auctex interface. - -* Chord name fixes and additions (Atte Andr'e Jensen) - -* ly-get-mus-property, ly-set-mus-property: set properties of Music - -* Move Span_req::span_dir_ into Scheme - -* removed numberOfStaffLines, staffSpace. Use StaffSymbol \push -staff-space, line-count - -* removed minVerticalAlign, maxVerticalAlign; use VerticalAlignment -\push #'threshold = #(MIN . MAX) - -* \property tremoloFlags can be set anywhere now - -* \apply #function music - -* Bugfix: padding of dots. - -* Generate documentation for separate engravers as well as for contexts. - -* Move some reference manual into the SCM documentation system. - -* Bugfix: fixed hyphen spanners. - -1.3.102 -======= - -* Fixed bracket, and made some other PostScript code fixes. - -* Silly font initialisation fix for paper19 non-feature. - -* Automatic engraver/property documentation infrastructure. - -* Fixed system-start braces - -* Fix for forgetAccidentals: do print accidentals, just don't remember -them. - -* Bugfix: forced script directions for scripts that have relative stem-direction. - -* Bugfix: Tie_column doesn't force Tie directions ties that already -have a direction. - -* Bugfix: multimeasure rest - -1.3.101 -======= - -* Custodes (patch by Juergen Reuter), mods by hwn. - -* Font initialisation and markup translation fixes. (99.jcn2) - -* Remove staffspace calls. Removed markScriptPadding. Fixes some -problems with tuplet, brace and volta spanners. - -* make Font_interface::font_alist_chain (), and use default font -settings. Fixes too large time sigs. - -1.3.100 -======= - -* Tweaks of .scm font-selection. - -* Rewrote font management of Score_element and Paper_def. - -* Introduced outputscale: internally do computation in terms of -outputscale. Prepare to deprecate staffspace internally. Rewrote -.scm side of font selectioning. - -1.3.99.jcn1 -=========== - -* Made several font size and initialisation fixes. - -* Renamed all occurrences of font-size to font-relative-size - -* Renamed all occurrences of font-point to font-point-size - -* Fixed interface.scm descriptions to use symbols iso strings - -* Fixes for chord names, and added jazz style (James Hammons) - -* Some font-size fixes. - -* Added dynamics font in all staff-sizes. - -* Quick fix for regtest. - -1.3.98.hwn2 -=========== - -* Removed all paper vars except linewidth, indent, staffspace and -stafflinethickness. - -* Rewrote Scheme side of font-selection. - -* Bugfix: deprecate group-center-element thoroughly. - -* Bugfix: LeftEdge must also have Break_align_item::alignment_callback -X-offset-callback. - -* Add use music property "direction" for storing direction in -Script_req, use music property "text-type" for storing 'dynamic, -'finger, etc. Remove Dynamic_script_req. Resurrect fingerings. - -1.3.98.lec1 -=========== - -* fixed scale-definition.ly for greek mode names. - -1.3.98 -====== - -* Backend documentation updates and related cleanups - -* Removed \property bracketCollapseHeight, systemStartDelimiterGlyph - -* Bugfix: instrument-name on grandstaffs, see -input/test/instrument-name-grandstaff.ly - -* Bugfix for tie/staffline collision. - -* Bugfix: also send out end-repeat if there are no alternatives. - -* Small solo cello suite fixes. - -1.3.97.jcn1 -=========== - -* Added some interface documentation. - -* Added raise and kern to markup. This should make Chord names usable. - -1.3.97 -====== - -* Made small fixes to basic properties: regression-test compiles. - -* Moved Text_script_req's text_ member into mus-property. - -* Renamed ChordName to ChordNames, for consistency. - -* Resurrected most of chord names, superscripting and kerning - is currently broken, though. - -* Junked all old style text lookups, except for feta definitions. - -* Added support for name-based character lookups. - -* Added support for font styles and papersize style sheets. - -* Added new code for font selection and scm text markup. Only used - for testing in \textscript SCM. See input/test/markup.ly. - -* Fixed (added actually, it got lost?) word-space for chords. - -* Added slope-limit and attachment-offset properties to slur. - -* Slur's broken trend now weighs in the number of note-columns. - -* Spacing tweaks - -1.3.96.hwn1 -=========== - -* Mudela-book fixes (Tom Cato Amundsen) - -* Put marks above chords. - -* Solaris fix. - -* Type checking for \push and \pop; elt property description (docs -inclusive) is now in Scheme. - -* Self-documenting backend using ly/generate-documentation.ly - -1.3.96 -====== - -* Added friendly message for the clueless dvips user. - -* Clef-engraver: changed c0-position, clef-position and glyph into properties, - enabling ottava spanners: input/test/ottava.ly. - -* Added option for edge lines to Text spanner. - -* Bugfix for early initialisation of invalid (grace->voice) slur. - -* Dropped text support and padding of crescendo symbol. Horizontal - alignment of dynamics is handled by side-support, Text crescendos - use the generic Text spanner. - -* Added a generic Text spanner. - -1.3.95.hwn1 -=========== - -* Bugfix: octavate eight. - -* Rewrote arpeggio. - -* mudela-book fixes (Tom Cato) - -* Cleaned up Group_interface and Pointer_group_interface - -* Add accidentals to arpeggio support. - -* Stemup + barline combination gets extra space. - -* Score_element::extent () now takes a reference point argument. - -1.3.95 -====== - -* Use music property for setting type. This prevents accidental -forgotten copies. - -1.3.94.jcn3 -=========== - -* Added Arpeggio and Trill elements to feta font. - -* Yet another bugfix for output-property (Han-Wen) - -* Made some fixes to les-nereides. - -* Fixed output-property (Dankje). - -* Added backend framework for arpeggios. - -* Fixes for les-nereides. Should we do asymmetric slurs...? - -* Don't print repeat bars at start of line. - -1.3.94 -====== - -1.3.93.uu1 -========== - -* Bugfix: don't crash if there is no volta bracket to end. - -* Move offset, dimension callbacks into Scheme. They can be initialized from basicXXXX properties using - - (X-offset-callbacks . (callback1 callback2 .. .)) - (Y-offset-callbacks . (callback1 callback2 .. .)) - (X-extent-callback . callback1) - (Y-extent-callback . callback1) - -* naming: basicXXXProperties -> XXX, some other changes in naming; -convert-mudela rules added. - -* naming: \voiceone -> \voiceOne and related changes. convert-mudela -rules added - -* syntax: \property XXX \pop #'bla -> \property Context.XXX \pop #'bla - -* changed aclocal.m4 to have better check for guile version. (Laura Conrad) - -* updates for mudela-book (Tom Cato Amundsen) - -1.3.93.jcn1 -=========== - -* Try at nastiest competition piece: input/les-nereides.ly. - -* Moved Pedal_engraver to Staff context. - -1.3.93 -====== - -* Added some error messages for toplevel and stray string parse errors. - -* Don't start more than one slur at a time. - -* Set direction of Slur too in a2-engraver. - -1.3.92.hwn1 -=========== -* Removed calls to global GUILE namespace. - -* Added \property: scriptDefinitions, explicitClefVisibility, -explicitKeySignatureVisibility, instrumentEqualizer, -dynamicAbsoluteVolumeFunction - -* Added element properties Bar::break-glyph-function, -Break_align_item::space-alist, Chord_name::chord-name-function - -* Added \property combineParts: part combiner switched off by default. - -* Remove all print methods. - -* Use Scope::try_retrieve if possible. - -* Remove FAQ in favor of URL. - -* etf2ly.py robustness fixes. - -* Don't compensate for left edge in broken volta spanner. - -1.3.92 -====== - -* RPM .spec fixes. - -* italiano.ly - -* mudela-book updates by Tom Cato Amundsen. - -* Allow lyric hara kiri as well. - -* Bugfix: left/right mixup in Side_position_interface::aligned_on_self () - -* rest collision of differing rests. - -* Cleanup of Sequential_music_iterator, Simple_music_iterator. - -* Unfolded_repeat_iterator now signals repeats using \property - repeatCommands. You could override this, eg. - - \property Score.repeatCommands = #'((volta "X") start-repeat) - - will print a |: and a volta bracket saying X. See also - input/test/manual-volta.ly - -* Volta_engraver, Repeat_acknowledge_engraver: new engravers that are -controlled by repeatCommands; much cleaner than the Repeat_engraver. - -* Junked Repeat_engraver. - -1.3.91.jcn1 -=========== -* Abort all running spanners when part-combiner combines voices. - -1.3.91 -====== - -* Use S_ISDIR () and check for stat.h. - -* Various fixes for RedHat 7.0 / gcc 2.96.54 - -* separate basic propertylist for fingerings, center them on -noteheads. - -* Side_position_interface::aligned_on_self() now can take a real -number for self-alignment-{X,Y}. - -* etf2ly: single line GF field. - -1.3.90.mb1 -=========== - -* Added an interscorelinefill paper variable. Set to a positive number - in order to stretch the inter-line spacing to fill the full pages, - except for the last page (where it would look really ugly). - -1.3.89.jcn1 -=========== - -* Changed lilypond to LilyPond in ly2dvi, Mudela to LilyPond source. - -* Website fixes: Changed \interline to \staffspace in manual, removed offending - braces from mudela-book.tely. - -* Fixed slur attachment correction bug. - -* Made some fixes to Coriolan. - -1.3.89.hwn1 -=========== - -* Only open files, not directories - -* bugfix: textNonEmpty. - -* Look ahead in auto-change iterator for rests. This means rests -before the note leading to an automatic staff switch are switched as -well (improves the looks of scarlatti-test). Associated fixes and -additions for Music_iterator::skip () and friends. - -* Bugfix: only quantise staccato inside the staff. - -* cleanups for beam and stem. Removed global GUILE namespace calls -from Beam and Stem. - -1.3.89 -====== - -* Some fixes to Coriolan. - -* Fixed some stupid core dumps processing Coriolan. - -* Fixed several problems with part-combiner's part-switching. - -* Fixes for ASCII output. - -* Added feature to part combiner that should allow part-switching only - for entire measures. Currently, it is controlled by a new - property changeMoments (A . B): - - only switch when !(A mod now), - - decide whether to switch based on music during time period B. - -* Made bugfix: Sequential_iterator::get_music (M): mustn't return music - later than M. - -* Added skip (M) to some iterators. - -* maintain minimum-length by shifting for hyphens at start of -line. (patch courtesy Christophe Rhodes) - -* mudela-book fixes (courtesy Tom Cato Amundsen): documentation -update, LaTeX example, landscape support. - -1.3.88.hwn2 -=========== - -* Added elt properties for Tie: - - details - - x-gap - - staffline-clearance - -* Added elt properties for Slur - - y-free - - details - -* Removed C++ support for barNumberScriptPadding, now in -generic-property.scm (but they're deprecated anyway) - -* Changed threshold in Align_interface to be in staffspace - -* changed minVerticalAlign and maxVerticalAlign to be in staffspace. -A better way: do \push #'threshold = #(cons A B ). (WARNING: -INCOMPATIBLE CHANGE) - -* moved translator definitions out of \paper { }, only instantiate in -\paper. - -1.3.88 -====== - -* Sequential_iterator::get_music (), part combiner now works. - -* Changed paper variables into elt properties: - Beam: - - beam-space-function, Removed Paper_def::interbeam_f(), Smaller - beams for grace notes. - - beam-flag-width-function to Beam. - - Grace_align_item: - - horizontal-space: spacing of grace notes is configurable - - Volta_spanner: - - height - - thickness - - Multi_measure_rest: - - expand-limit - - minimum-width - - padding - - Lyric_extender: - - height - - Stem - - thickness - - Collision - - note-width to Collision - -* removed various obsolete variables from params.ly - -* added input/test/bagpipe.ly - -1.3.87 -====== - -* Made fixes to part-combine examples and Coriolan. - -* Bugfix: don't dump core on unterminated (de)crescendo. - -* Rolled next (M) also into get_music (M), similar to process (M), so that - sequential-music-iterator::get_music (M) returns something useful. - -* Bugfix: part-combiner still expected Music_sequence, where get_music () - now returns plain list of events. - -1.3.86.hwn3 -=========== - -* Fixed problem with disappearing crescendi across line break. - -* Bugfix: dynamic texts should not be set by text-engraver. - -* Rewrote and cleaned up music-iterator. - -* etf2ly robustness fixes. - -1.3.85.hwn2 -=========== - -* Added side-position-interface as an interface identifier, in stead -of checking side-support-elements. This fixes a problem with stacked -text scripts. - -* Removed spurious set_elt_property ("XX", SCM_EOL) calls. - -* Added \property squashedPosition for Pitch_squash_engraver: the -staff-position number to squash noteheads to. - -* Added FAQ entry for script on bar, updated description of mailing -lists. - -* Fixed bug with \translator { basicXXXProperties \push ... } - -* Updated and revised call for help in hacking.texi. - -* Bugfix: don't remember accidental if it is tied from the previous note. - -1.3.85 -====== - -* Separated definition and implementation of contexts (moved -definition out of Translator_group into Translator_def) - -* pmx2ly.py fixes: now handles text at beginning of block correctly. - -* update .spec to include scripts. - -* Changed syntax of \pushproperty: - - \property Voice.basicXXXProperties \push #'foo = #bar - \property basicXXXProperties \pop #'foo - - \translator { - basicXXXProperties \push #'foo = #bar - basicXXXProperties \pop #'foo - } - -1.3.84.jcn1 -=========== - -* Updated INSTALL.texi - -1.3.80.tca1 -=========== -* Added Documentation/user/mb-latex.tex, mudela-book+latex example - file and test case. Some work on Documentation/user/mudela-book.tely - -* mudela-book.py: any combination of \verb, \begin{verbatim} - @code and @example and mudela should work as expected. - -* dropped [].extend that depend on python 1.5.2 - -1.3.84 -====== - -* pmx2ly, PMX to LilyPond conversion. Succesfully converts barsant.pmx. - -* musedata2ly, a Musedata to LilyPond convertor. Succesfully converts -wtk1-fugue2 - -* bugfixes for dynamics: make sure that dynamic alignments encompass -the dynamics they support, and that any columns they attach to aren't -prematurely killed. - -* bugfix: make sure \time gets noticed early enough. - -1.3.83 -====== - -* small doc updates. - -* Cleanups related to barline handling: - - - Removed Translator_group::get_simple_translator (), and - - - - use properties to communicate about barlines and time sigs. (NOTE: - by default a time-signature of 4/4 is printed.) - - - fix repeat bar behavior. - -1.3.115.hwn1 -============ - -* documentation - -* - -* cleaned up Directional_element_interface - -* add name field to score-elements. - -* comment in some unprotects for Music in parser. Should bring down - cpu time and plug some leaks. - -* robustness fixes for etf2ly, tuplets, grace notes. - -1.3.82 -====== - -* engraver.ly: cleanups. - -* etf2ly: robustness fixes, handle mac files as well. - -* Smobified Translator and Translator_group, junked -Translator_group_identifier. - -* \pushproperty and \popproperty withing \translator, similar to -predefining \property, ie. - - \translator { [...] \pushproperty [..] } - \translator { [...] \popproperty [..] } - -(these \pushes and \pops are delayed until instantiation, so if you do - - - \score { - \pushproperty #'basicFooProperties #'bla #VALUE1 - \context Voice { \pushproperty #'basicFooProperties #'bar #VALUE2 - [..] - } - } - -then the setting for basicFooProperties contains both (bla . VALUE1) -and (bar . VALUE2). - -* allow \pushproperty #'symbol [..] as well as \pushproperty #'(symbol1 symbol2 ... ) - -1.3.81.jcn1 -=========== - -* Activated regex for windows. - -* New guile-1.4 patch for cross windows build. - -* Added configure messages for metapost checking. - -1.3.81 -====== -1.3.80.gp1 -========== - -* Added property LyricVoice.associatedVoice to enable switching associated - voice mid-stream. Association still defaults to context name. - -1.3.80.hwn1 -=========== - -* \pushproperty, \popproperty: property settings with less memory -cost. See input/test/pushproperty.ly and Documentation/hacking. Note: -syntax is most likely only temporary. - -1.3.80.jcn1 -=========== - -* (Line-)broken slurs now have vertical trend. - -* Better length for broken ties: no invisibly short ties. Now ties may - collide with time signatures, though. - -* Don't typeset unfinished spanners, but kill them. - -* Added two FAQs (Mats) - -* Made workaround guile-1.4.1 backward incompatible (scm_)eval change. - Note that we must use (scm_)eval2 to remain backwards compatible with - guile < 1.4.1 snapshot. - -* Reincluded 79.jcn2 fix - -1.3.80 -====== - -1.3.79.jcn5 -=========== - -* Created Thread_devnull_engraver and Voice_devnull_engraver iso - single A2_devnull_engraver in Thread context. It seems however - that the hack in A2_devnull_engraver works better. - -* Coriolan fixes. - -* Slur attachment fix for chords where case slurdir != stemdir. - -* Made various fixes for (line-)broken slurs. - -* Fixed slur_height (), which fixes most ugly slurs (Yeah!). - -* Fixed some silly url reversals in FAQ. - -* Finished Coriolan music entry (again); entered second viola part. - -* Updated Coriolan to use part combiner on Voice level for wind parts - and on Staff level for violi and bassi. - -* Part-combiner now uses duration inquiry, which fixes rhythm-related - bugs in determining solo/a2. Also, rests are taken into account. - -* Another crude fix for almost unexplainable (with a gdb that dumps - core on ly_display_scm) all-zero control points slurs. - -* Fixed slurs that crossed through stems and note heads. Note - that beautifying of ugly slurs is still broken. - -* Made crude fixes slurs don't crash, bezier still crashes on - infinitely steep slurs (eg flauti-part *with* slur_engraver). - -1.3.79.gp1 -========== - -* Replaced empty melisma score element with a property - -* Renamed Voice_alist_entry -> Syllable_group in lyric-phrasing-engraver - -1.3.79.uu1 -========== - -* fixed y-position of whole rest - -* fixed sustainPedalPadding - -* etf2ly: articulation, lyrics. - -1.3.79 -====== - -* etf2ly.py: Finale to LilyPond conversion. - -1.3.78.jcn4 -=========== - -* Made simple fix to get part-combiner to recognise different rhythms - -* Unhardcoded part combiner and a2-engraver; introduced properties - splitInterval, soloADue, soloText, soloIIText, aDueText. - -* Fixed part combiner's too-late problem (Dankje!) - -* Fixed a2-devnull-engraver, a2-engraver. - -* Renamed part combiner music names to "one", "two". - -* Cleaned up decision making in part combiner, renamed to "solo"/"unison" - -1.3.77.mb1 -========== - -* Minor documentation updates - -* Mark_engraver: has been broken since .73, fixed! - -1.3.78 -====== - -* Added a devnull engraver, that junks (notehead) requests of the second - stem when combined parts are in unison (a2). - -* Part-combine iterator identifies Soli and A2 parts in threads by - looking at rhythm and pitches. It switches Voice context automagically, - and communicates current state using a2/solo/solo2 properties. - -* Simple A2_engraver (`a due) prints `a2/Solo/Solo II. Soli seem to - arrive one request late. - -* First try at combining parts: part-combine* - -* fixed problem with HaraKiri - -* fixed problem with dynamicDirection - -* fixed problem with nonEmptyText - -* `Fixed' chord notation, as per request of David Arnold, ie, - Added a chord-name-mode, that only displays chord names - when there's a change in the chord-name-scheme, Also, a chord - name should always be displayed after a line break. See - - input/test/chord-changes.ly - -* Reverted duration-iter change in midi2ly, moved printing of options. - -* warning bugfix in lexer.ll (Mats Bengtsson) - -1.3.77 -====== - -* Midi2ly bugfix: handle durations longer than longa. These can occur - because of lengthened notes when using --no-rests. - -* Midi2ly: output `new' \key syntax, and updated version number. - -* Midi2ly bugfix: don't correct quantised durations, don't use tuplets, - double dots etc. when user doesn't want them. It probably used to - work like this, a long time ago. For some unknown reason, all - corrections made by Duration_convert were junked if the corrected - duration != exact duration. Duh. - -* Midi2ly: added a new option: --no-rests. - -* Update of mudela-book (Tom Cato Amundsen) - - --read-lys option, now you can do: - mudela-book file.texi - convert-mudela - mudela-book --read-lys - - --outdir=DIR will put ALL output into DIR - - @mudela[filename="myfilename"]{c d e f g} - - --force-mudela-fontsize - - ignore mudela inside @ignore @end ignore - -1.3.76.gp1 -========== - -* Lyric_phrasing_engraver now catches lyric extenders and correctly - terminates them under the last note of a melisma. - -* Lyric word spacing code changed to fix hyphen alignment. - -* Other minor tidying up of Lyric_phrasing_engraver and related code. - -1.3.76 -====== - -* Lyric_phrasing_engraver now adjusts for melisma. (Glen Prideaux). - -* Mudela-book fix for Windows95 (Mark Hindley) - -* Debian update (Anthony Fok) - -* Added beam melisma for when automaticMelismata and noAutoBeaming are both - #t (primarily for hymns). Courtesy Glen Prideaux. - -* Bugfix: .pfa dependency on $(outdir)/mfplain.mem - -1.3.75.mb1 -========== - -* stepmake/stepmake/metapost-rules.make: Put all generated files - in mf/out/. - -* Added paper variable interscoreline to determine the score line - spacing, see input/test/vertical-extent.ly. - Cleaned up the lilyponddefs.tex inclusion scheme. - -1.3.75 -====== - -1.3.74.gp1 -========== - -* Improved default handling of Lyric_phrasing_engraver and made it on by -default. - -* Beginnings of a stanza number engraver (\property LyricVoice.stanza = -#"1:" etc.) - -* fixed bug in script.cc so fermata (and other scripts) get flipped -correctly when they are above the staff. - -1.3.74.jcn2 -=========== - -* Reincluded simple code for including tfm.[1-5] into search path. - Configure with --disable-kpathsea to enable this kludge. - -1.3.74.jcn1 -=========== - -* Updated input/test/banter-chords.ly German H/B example. - -* Updated nl.po. - -* Have configure check for kpathsea library and functions. Made kpathsea - support optional for now. - -* Bugfix: halved width of tremolo-beams. - -* Included compilation fix for guile-1.3.4 (Anthony). - -* Added: chord inversion and base to regtest. - -* Fixed: Chord names that were broken by pl73. - -* Fixed: Chord inversions that were broken by pl72. - -* Resurrected ascii-script output, for debugging purposes. - -* Included compilation fix for scm-hash.cc (Han-Wen). - - -1.3.74 -====== - -* Small bugfix: also do a deep copy on submusices - -* Fixed: \autochange doesn't crash anymore. - -* Cleanup, documentation and enforcement of smob interfaces in -LilyPond. We distinguish between SIMPLE_SMOBS and SMOBS (objects that -have self_scm_) - -* Glen Prideaux lyric phrasing engraver. See -input/test/lyric-phrasing.ly - -1.3.73 -====== -* Removed \interscoreline after the last line, prevents some -empty pages. (patch by Mats Bengtsson) - -* Smobified Music, junked associated identifiers. Use Scheme list to -store Music_sequence. Removed const declarations from -Music_iterators. Added a mutable and immutable property list to -Music. Use music property for all Scheme values in Music. Created -and fixed a load of Garbage Collection bugs. - -* Changed number font to allow automatic .mf creation. - -* Output place of definition as \special{src:LOCATION}. See FAQ for -explanation how to use. - -* Schemified Local_key_item and fixed minor bug with accidentals. - -* new Japanese .po file. - -* Bugfix for broken tie direction - -* Bugfix for bar at beginning of line break - -1.3.72 -====== - -* Robustness fix for minimise_least_squares () - -* cleanups of Slur_bezier_bow, removed Bezier_bow. - -* cleanup of Tie. Changed Tie into interface. Made ties flatter by default. - -* changed SCM_UNDEFINED to SCM_UNSPECIFIED for return values that go -back into Scheme. - -* changed SCM_UNSPECIFIED to SCM_EOL for undefined element -properties. This makes initializing list properties redundant. - -* removed idiotic code for including tfm.[1-5] into search path. - -* fixed problem with tuplet placement for cross staff tuplets. - -1.3.71 -====== -* Small cleanups to bring down compile time and binary ensmallment. - -* Made Lookup into a smob, and use guile alist iso. an STL map. - -* Changed repeated music semantics for relative octave: each -alternative takes its inital octave from the body. - -* Fixed: parser accepts booleans for property values as well. - -* Added Scarlatti sonata test file to input/ - -* kpathsea support, courtesy Carsten Block - -1.3.70 -====== -* Fixed: long standing problem in optical-illusion code. - -* Fixed: stop beam if stem *has* a beam in auto-beam-engraver. - -* Made interface of Multi_measure_rest, System_start_delimiter, -Spacing_spanner, Separating_group_spanner, Beam, Slur and -Rhythmic_head. - -* Use properties for minimum distances and spring parameters. Move -spacing related functions from Paper_column into Spaceable_element. - -* Removed most Paper_column typecasts. - -1.3.69 -====== - -* Cleanup auto-beam-engraver: use properties for retrieving timing -information. - -* Fixed: Multi measure rests don't cause crashes. - -* Fixed: don't invoke Hara_kiri::consider_suicide too early. - -* Fixed: property engraver. - -* Fixed: don't crash on multiple ties. - -* Cleanups of Beam, should also be a little faster. - -* Reunite properties and pointers. In implementation we make a -distinction between mutable and immutable properties - -* Add {has|set}_interface () static methods to interface classes. - -* Made Side_position_interface and Staff_symbol_interface an all -statics class, and stripped _interface suffix. - -* Make Align_interface and Axis_group_interface an all-statics class - -* Rhythmic_head, Staff_symbol, Grace_align_item, Break_align_item, -Bar, Span_bar are now interfaces, Staff_bar was removed. Use a -callback for determining barsize. - -* Removed all GLUE_SCORE_ELEMENT callbacks. - -* Added test for repeats to trip.ly - -1.3.68 -====== - -* ly2dvi: changed back to original semantics of latexheaders. - -* Stem_tremolo, Crescendo, Hara_kiri_group_spanner, Tuplet_spanner, -Volta_spanner changed into interface. - -* Related cleanups for Tie, Tie_column cleanups. - -* Made Time_signature, Single_malt_grouping_item, Script_column, -Chord_name, Dot_column, Breathing_sign, Key_item type into interface. - -* Removed const declaration from callback arguments. - -* Pagebreak support. See input/test/between-systems.ly - -* Fixed a problem with accidentals in combination with -non-nil key signatures. - -1.3.67 -====== - -* Use callbacks for augmentation dot positioning. - -* Removed types Note_head and Rest - -* Cleanup of slur.cc: use common reference points in a sane manner. - -1.3.66 -====== - -* Corrected text sizes in paper*.ly (Mats Bengtsson) - -1.3.65.uu1 -========== - -* Dots, Collision, Rest_collision removed as separate Score_element type. - -* Stem and Note_column accept only one rest. - -* Use offset callback in Stem to resolve rest/beam collisions. - -* Put the value of new local key signature (accidentals) back into a property. - -* Set molecule-callback for notename item. - -1.3.65.jcn2 -=========== - -* Added some comments to new slur code. - -* Removed some ugly interstaff slur code, interstaff slurs at line-break - are still broken. - -* Slur bugfix: 16th beams are also beams. - - -1.3.65 -====== - -* Bugfix: translate volta spanner at start of line. - -* Changed directional_element() calls to instantiations -of Directional_element_interface. - -* Removed Dynamic_line_spanner, and cleaned up Dynamic_engraver. - -* Removed Staff_info type. Information about columns is now transferred -via currentMusicalColumn and currentCommandColumn. - - -1.3.64.jcn2 -============ - -* Made slur attachment position user settable; properties: -slurBeginAttachment slurEndAttachment, values: 'head 'stem -'along-side-stem. See input/test/slur-attachment.ly and ophee-slurs.ly. - -* Fixed slur attachment positions, added missing rule and use simple -default starting positions for attachments. - -* Started rewrite of slur ending code, interstaff slurs are broken for -now. - -* Fixed download URL of the webpage. - -* Moved direction.cc to flower/. - -1.3.64 -====== - -* Lyrics centered on notehead. - -* Various bugfixes hyphen-spanner. - -* Bugfix: set appropriate callbacks for Note_head. This fixes -problems with dots. - -* Removed Clef_item as score-element derived type. - -* Updated config.sub and config.guess - -* Bugfix: allow linebreaks on beamed grace notes. - -1.3.61.jcn2 -=========== - -* Included dutch po-update based on submitted 1.3.57 nl.po - -* Added "Development" link to website, now that "Home" is a relative link. - -* Bugfix: use deep copies for resetting keys. - -* Assorted typing erors in procedure names in ly/engraver.ly - -1.3.62 -====== - -* Made callbacks from Score_element::before_line_breaking() and -Score_element::after_line_breaking() - -* Fixed website; backlinks should work again. - -* Removed --ignore-version option. Added --verbose option. - -1.3.61 -====== - -* Webpage hacking - -1.3.60.hwn1 -=========== - -* Junk int_identifier, real_identifier. Merged Midi_def_identifier and -Paper_def_identifier. - -* Fixed bug with spanning barlines in combination with Hara-Kiri staffs. - -* Cleaned up Text_item, Hyphen_spanner, Lyric_extender and -Sustain_pedal and reduced them to an Score_element interface (they are -no longer Score_element derived types). - -* Some instances of brew_molecule routines have moved out of -Score_element, and are now called scheme_molecule. - -* Moved lots of parameters from ly/params.ly to ly/engraver.ly - -1.3.59.hwn1 -=========== - -* Removed String_identifier, and use the type system of GUILE instead. - -* Fixed \key PITCH MODALITY syntax. The modality argument is now -mandatory, a rule in convert-mudela has been added. - -* Cleaned up buildscripts/ directory: removed obsolete scripts. - -* Use Scheme_hash_table for identifier Scopes. Scheme_hash_table is -based on STL and should be faster than hash_table. - - -1.3.59.jcn1 -=========== - -* Fixed scm_un/protect_object for guile-1.3.4 and 1.3.5 snapshots, - in the process reduced number of protect/unprotect calls. With - guile-1.3.5 snapshot, memory usage has decreased by 1/5th, now - just 10% above the 1.2 level. Also, Lily's a bit faster. - -* Fixed make diff bug in stepmake to be able to make this diff :-) - -1.3.58.hwn1 -=========== - -* Rewrote key sig support. Now key signature can also be controlled -by setting keySignature and localKeySignature properties, eg. - - \property keySignature = #'((2 . -1) ( 4 . -1) (6 . -1)) - -sets a key signature of `es ges bes' (an unusual key signature). - -Keys are internally represented as transpositions of the c-major -scale. Printing the key signature for a scale is done by filtering out -all non-natural accidentals. - -* Removed support for \keysignature, and \key something \minor; Newkey -is now obsolete. - -1.3.58.jcn3 -=========== - -* Fixed pedal items (hw) - -* Changed configure option tex-tmfdir to tmf-path now accepting multiple - tfm directories. Automated links to cmr and amstex tfm font directories. - -* Replaced one scm_assoc () u-turn slipped through jcn1 - -* various GUILE 1.3.5 compile fixes - -* Added `Ped' as a compound symbol font and removed silly scheme kerning. - -* Replaced some scheme assoc u-turns with scm_assoc () - -* Ran po-update (mostly because of new ja contribution). - -1.3.57.jcn2 -=========== - -* Cleaned-up scheme list to text conversion for Chord_name and -fixed horizontal kerning. - -* Added examples for american (slashed o) and jazz (black triangle), - see input/test/{american-chords.ly,jazz-chords.ly} - -* Made guile-1.3.5 compile fixes - -1.3.57.uu1 -========== - -* Fixed typo in Dots::do_brew_molecule (); this fixes the disappearing -dots problem. - -* Rewrote key signature administration; now Scheme is used; Octave and -Key have been junked in favor of Newkey. - -* japanese .po file included (thanks, Japanese team!) - -1.3.57 -====== - -* Fixed several forgotten molecule-callbacks - -* Fixed first clef in score; now F clefs are also possible. - -1.3.56.mb1 -========= - -* Updated FAQ with two useful GDB macros. - -* Several fixes in the documentation. - -1.3.55.jcn1 -=========== - -* Made (dutch) po-update - -1.3.56 -=========== - -* Molecules are now generated via callbacks exclusively; most calls to -set_elt_property ("transparent", SCM_BOOL_T) have been replaced by suicide(). - -1.3.55 -====== - -* Experimental property collapse for most score-elements. (notable -exceptions: Scripts, pedals). Change all Score_element constructors to -take a basic-property list. The suffix of a property list may be -shared by several score-elements, for instance all default G-clefs in -a score share the following settings - - (breakable . #t) - (break-align-symbol . Clef_item) - (visibility-lambda . ,begin-of-line-visible) - -This should reduce memory usage further. - -* Magically fixed the disappearing Lyrics problem. - -* Removed used_b_ field from Score_element. - -* Massive search-replace patch: store pointers and properties -separately, in preparation of property collapse. - - -1.3.54 -====== - -* Bugfix: don't crash on tuplet spanners that don't contain any notes. - -* Cleanup of Dimension_cache: removed a few redundant -fields. Slightly lower memory usage (32 bytes per -score-element). Dimension_cache is now a `dumb' struct again. - -* Add array index to priority field of text scripts to ensure that -order is unique, and sensible. - -* Added an element count statistic. - -1.3.53 -====== - -* russian.po (thank you, August.) - -* Small cleanups in Molecule interface - -* Spacing related elements perform suicide after calculating -distances. This saves a some memory, approximately 2 to 5 % ? - -* Small cleanups in line breaking: Paper_column stores springs and -rods in only one place now. All fields relating to energy have been -removed - -* Don't generate all output Scheme in memory, but evaluate to output -file immediately. This will reduce memory usage a little. - -* Use STL's map for Dictionary template - -* Substitute pointers on element properties of the root Line_of_score -as well. - -* Added toplevel doc target, to support building doc with --srcdir - -* Removed cygwin build stuff; updated versions at: - - http://appel.dyndns.org/lilypond/gnu-windows/cross - -* Fixed lily.scm to handle incipits (thanks, Mats) - - -1.3.52 -====== - -* Made bugfix in smob handling: delete the C-part of freed smobs and -be honest about amount of allocation and deletion, so that GUILE -doesn't overestimate the amount of memory available. - -* Faq update: nicer blank note paper, courtesy Mats Bengtsson. - -* Bugfix: don't crash on durations that are not a power of 2. - -* Build manpages during `make all' - -* Bugfix: don't do absolute comparisons in Polynomial::clean (). - -* Bugfix: set visibility-lambda for key signature created by -createKeyOnClefChange. Fixes disappearing key signatures. - -* Bugfix: make System_start_delimiter of bar-line type invisible when -it spans only one staff. - -1.3.51 -====== - -* Item cleanups. Copying items and rearranging pointers are done in -separate passes, which makes the code cleaner. This fixes a problem -with some items not disappearing from hara-kiri staffs. - -* Use Scheme for Key_item data members. - -* Don't use regex in chord-names.scm under windows; hybrid chordnames -user+calculated will be partly broken. - -1.3.50 -====== - -* Junked Shift_tuple from collision; Now it uses SCM. - -* Bugfix of documentation and test-file of tuplet. - -* Bugfix type string of repeated music is copied. This fixes declared -tremolos. - -* Junked various cruft from lily.scm - -* Use interfaces symbols instead of C++ class-name for assigning generic -element properties. - -* Junked Dictionary from Piano_pedal_engraver and -Piano_pedal_performer. - -* Introduced boolean element property no-spacing-rods: ignore this -item for hard constraints. - -* Bugfix: added sanitised TeX fragment in faq.texi - -* Bugfix: merge equal Bar_reqs - -1.3.48.uu1 -========== - -* Small fixes for \cresc and \endcresc - -* Release properties of unbroken spanners & items after doing -handle_broken_smobs (); should conserve a little memory. - -* Fixed handling of orphaned score-elements. Any element that does -not have its Line_of_score as a ancestor in both directions, is silently -removed from the output. This guarantees that programming errors -don't result in coredumps from Dimension_cache::common_refpoint (): -element->line_l () is always a common reference point. - -* Bugfix: set visibility-lambda of clef and octavation-8 explicitly -for default case. Now the octavation 8 is not printed at every -barline. - -1.3.48.mb1 -=========== - -* Changed noteHeadStyle properties to symbols, for example - \property Voice.noteHeadStyle = #'cross - -1.3.47.jcn3 -=========== - -* Rewrite of chord-name production in scheme. There are two major styles - now, banter and american. To get american style, use - - \property ChordNames.chordNameStyle = "american" - - Most anything should be possible now. See input/test/american-chords.ly - -* Added isinf check to configure.in, and isinf macro from guile to - bezier.cc; solaris has no isinf (). - -* Fixed star-spangled-banner with not-so-nice \bar "|." fix. Almost - perfect now. - -* Added output property to regression test. - -* Fixed warning of creating existing outdir. - -* Added `Mark' interface to text-items that are marks (thanks, HW). - -1.3.48 -====== -1.3.47.mb2 -=========== - -* Corrected glossary.tely - -* Corrected \mark font handling. feta-nummer font only of the - string is all numeric. - -* Implemented noteHeadStyle lookup in Guile. Reintroduced the style - "harmonic" and added "baroque" (normal note shapes except for - brevis and longa which are square). - -* Simplified ly2dvi using the power of the geometry package. - -* Improved heuristic size calculation of TeX macros. Handles e.g. - "\\u{a}", "\\"{o}" and "\\^{u}" correctly. - -1.3.47.hwn1 -=========== - -* Bugfix: don't hang on zero-duration. - -* Various glossary updates (thanks, Christian) - -1.3.47 -====== - -1.3.46.jcn2 -=========== - -* Drastically reduced vertical space used by headers/footers, when using - ly2dvi. See input/test/fill-a4.ly. - -* Fixed bug with colons appearing on repeat span-bars. - -* Added Bar_number_engraver to standard Score context - -* Construct octavation scripts in the clef-engraver; this fixes the -hara-kiri + clef8 problem - -1.3.46 -====== - -1.3.45.jcn2 -=========== - -* Fixed chord-name customisation and made small chord-name build fixes. - -* Accidentals with chord-names smaller and as superscript. - -* Do some extra footify (works only once) while making html docs. - -1.3.45.hwn1 -=========== - -* Debian patch (Thanks Anthony) - -* Rewrote Bar_number_engraver and Mark_engraver and removed -Bar_script_engraver as baseclass. Both Bar_number_engraver and -Mark_engraver are simpler and more robust. - -* Fixed precedence of \property verticalDirection and dynamicDirection - -* Fixed keys without barlines - -* Fixed StaffGroups: removing `\consistsend "Axis_group_engraver"' -puts alignment in function again - -* Fixed StaffGroup + GrandStaff combination. - -* Music is now mandatory as the first thing in a \score{} block - -1.3.45 -====== -1.3.44.jcn2 -=========== - -* Implemented una-chorda and sostenuto piano pedals in performer and engraver. - -* Added Properties textScriptWordSpace and chordNameWordSpace. - -* Junked old lyrics in star-spangled-banner. - -* Added a Piano_pedal_engraver. - -* Removed some empty files. - -* Created piano pedal symbols: * - . P e d. - -* Fixed ps-to-pfa.py to handle multiple unfills. - -* Moved accordion symbols out of feta-script to end of font. - -* Bugfix: don't create tfm's, pfa's etc of feta-test fonts. - -* Fixed blot_diameter for small resolutions. - -1.3.43 -====== - -* Put global element list into Line_of_score, instead of -Paper_score. post processing (the stage after line breaking) is now -truly done per-system, and we got rid of an ugly hack to get font -handling OK. - -* Bugfix: set the group-interface of System_start_delimiter. - -* Cleanups of Break_algorithm and derived classes, Move -broken_col_range () to Line_of_score, remove Paper_score::col_l_arr_ - -* Bugfix for accordion symbols. - -* Various patches to prevent crashing when do_brew_molecule gets -called before after_line_breaking (). This was a problem in Spanner -classes mostly. - -1.3.43 -====== - -1.3.42.jcn3 -=========== - -* Made a quick try at piano pedal performer, damper pedal only. - -* mf/feta-accordion.mf: Fixed strange turning paths. - -* mf/feta-beugel.mf: Fixed infinity errors. - -* Use a more discriptive name for windows setup.zip. - -* mf/GNUmakefile: Have logs as last target, so that normally, they're -not made twice. - -* stepmake/stepmake/metafont-rules.make: Don't remove the .log files. -The logs are a target, removing them retriggers make. - -* stepmake/stepmake/metapost-rules.make: Remove the correct log and tfm -files, ie the ones that clutter the source directory, not the target logs. - -* Windows distribution: faked symlink for cmtfm. Setup.zip should now be -standalone; ie, no need for Cygnus' usertools anymore. - -1.3.42.jbr1 -=========== - -* Documentation/ntweb: Updated angels.ly to match current syntax. -Also updated index.texi. - -1.3.42.uu1 -========== - -* Change all occurances of Staff_margin_engraver to -Instrument_name_engraver, add a convert-mudela rule - -* Change status == busy assert into programming error - -1.3.42 -====== - -1.3.41.jcn3 -=========== - -* Lots of fixes to windows distribution scripts. - -* Added configuration features --program-prefix, --program suffix. - -* lily/my-lily-parser.cc (get_chord): Bugfix, don't use deleted pitch. -This fixes inversions c/g and bass additions d/+c on chords. - -1.3.41.mb1 -========== - -* Avoid that xxxXXXVerticalExtent is used for empty HaraKiriStaff - lines. - -1.3.41.hwn1 -=========== - -* Debian patches (thanks Anthony!) - -* Use symbols for prefatory matter spacing. Do not use the typename -for looking up item pairs in the table, but read element property -break-align-symbol - -* Instrument_name_engraver, uses break alignment instead of -side-position. - -* System_start_delimiter_engraver, System_start_delimiter, uses a -spanner for the braces/brackets at the left of the system. Remove all -old Span_score_bar engravers. - -* Removed Base_span_bar_engraver::use_prority_b_, and moved -Base_span_bar_engraver into Span_bar_engraver. - -1.3.40.jcn3 -=========== - -* mutopia/Coriolan/violino-2.ly: Bugfix: wrong pitch. - -* input/test: Removed stale AutoStaffSwitch examples. - -* mutopia/E.Satie: Fixed gnossiene-4, doing \autochange. Removed -stale copy of gnossiene-4. - -* buildscripts/make-cygwin-cross.sh: Made some small .zip package fixes. - -* make/lilypond.spec.in: Made some bugfixes for _prefix, preparations -for cross-building to Cygwin. - -* buildscripts/make-cygwin-cross.sh: Now using rpm packages. - -1.3.40.hwn2 -=========== - -* added \property XXXMinimumVerticalExtent, \property XXXExtraVerticalExtent - -* New_chord_tremolo_engraver: make tremolo beams from - - \repeat "tremolo" NUMBER - -Removed support for "old-style" tremolos. - -* Add a convert-mudela function for the conversion "\key A;" to "\key a; - -* Read \property measurePosition within the engraver code, instead of -looking up the Timing_translator. - -* star-spangled-banner.ly: add Bar_engraver to LyricsVoice - -* Changed all .fly and .sly files to .ly files. Propose to dump .fly -and .sly. - -1.3.40 -====== - -1.3.39.jbr1 -=========== - -* buildscripts/mf-to-table.py: feta dep files are now opened with write - binary option. This avoids carriage return linefeed problems and - windows while not affecting unix. - -* Documentation/hacking.texi: Fixed a texinfo syntax error - -* stepmake/bin/package-zip32.sh: Fixed or Removed some legacy, 1.2.x, - directory paths. - -* Documentation/ntweb/index.texi: Fixed broken links, added 1.3.39 links. - -1.3.39.hwn1 -=========== - -* Glossary updates by Christian Mondrup. - -* Bugfix: use generic properties in lyrics too. This fixes the -\property textStyle for lyrics. - -* Score_element::preset_extent(), used by \property -XXXVerticalExtent, so hard code the size of a vertical group. - -* Don't fix up reference points for originals of broken -spanners. Fixes spurious "orphaned score-element" warnings. - -* buildscripts/make-cygwin-cross.sh: Use rx-1.5 instead of regex (Jeffrey). - -* scm/lily.scm: Fixed check for Windows: by default don't use scm regex. - -* Documentation/ntweb/guile-1.3.4-gnu-windows.patch: Significantly smaller -patch for guile. - -* buildscripts/make-cygwin-cross.sh: Compile native package GNU regex, -which should fix Windows problems with guile. Also added input directory -to zip file. - -* stepmake/aclocal.m4: Added decent checking for version of guile, and -fixed warning message. - -* lily/lexer.ll (My_lily_lexer): Bugfix: lookup chordmodifiers in the -chord-modifier table (not in the pitch list). - -1.3.39 -====== - -1.3.38.hwn2 -=========== - -* General cleanups of My_lily_parser. - -* Start of a Chord_tremolo_iterator for the `\repeat 4 "tremolo"' -syntax. - -* Moved Score_element::do_space_processing out of the dependency -mechanism. - -* Use Scheme for notename tables. Removed uppercase letters for low -octave notes. Removed Notename_table. - -* Fixed core dump with declared "\key ; " - -* Extra robustness warning for Side_position_interface::aligned_on_self () - -* Extra robustness: make sure that first and last columns are breakable. - -1.3.38.jcn4 -=========== - -* stepmake/aclocal.m4: Added support for cross-compiling with guile. - -* buildscripts/make-cygwin-cross.sh: A try at dropping cygwin1.dll - dependency by using mingw. Compiling guile is too much to ask - for mingw, though. Also: - - rename python scripts .py (request from Alain) - - install native packages under their own, separate root. (Alain) - -* lily.scm: Don't use regex module when running on -Windows. (Shamus) - -* lily/staff-margin-engraver.cc (acknowledge_element): If -possible, hang y-axis of margin script to span-bar. This fixes -vertical placement of margin scripts attached to staff groups. - -* help2man-rules.make: Fixes for generating manpages by copying -and for building using --scrdir. - -* stepmake/stepmake/generic-targets.make: Preserve date stamp of -config.h, version.hh files file when copying. - -* buildscripts/make-cygwin-cross.sh: made number of fixes: - - add `Cygnus/' prefix to directories in .zip-file too. - - package guile too. - - don't link to cygwin1.dll - -* stepmake/stepmake/install-targets.make: bugfix, don't fail if directory - is not emty when uninstalling. - -* stepmake/stepmake/generic-targets.make: added man target. - -* buildscripts/make-cygwin-cross.sh: new script for cross-building cygwin - development tools and lilypond executable. - -* Documentation/ntweb/lilypond-manpages.patch: provide pre-built - manpages, so that make doesn't fail on help2man trying to execute - a GNU/windows executable. - -* Documentation/ntweb/guile-1.3.4-gnu-windows.patch: new patch for - guile-1.3.4. - -* flower/libc-extension.cc (memmem): cygwin compile fix. - -1.3.38 -====== - -1.3.37.hwn1 -=========== - -* (generic-property.scm) added \property tieDash to set dashing on -ties. - -* Removed ly_eval_str(), we should use scm_eval (Scm_object). - -* Removed scm_to_array (), array_to_scm (), associated junk. Reverted -undocumented .29 patch that made Bezier::control_ into an -Array. Added some comments documenting the reasons for the -changes. - -* Revert generic-property.scm of .37 fix, fix the real problem in -property-engraver.cc: use the right symbol to check if element -property is already set. - -1.3.37.jcn2 -=========== - -* Fixed srcdir build, so that you can do: - - tar xzf releases/lilypond-x.y.z - mkdir - cd - ../lilypond-x.y.z/configure - make - - as with any other gnu package. All build output goes to /out. - -* Changed and fixed use of different configurations, and different output - directories. Finally, you can use different configurations alongside - eachother. From make/stepmake.make: - - # Use alternate configurations alongside eachother: - # - # ./configure --enable-config=debug - # make conf=debug - # - # uses config-debug.make and config-debug.h; output goes to out-debug. - # - - # Use same configuration, but different output directory: - # - # make out=www - # - # uses config.make and config.h; output goes to out-www. - # - - -* Fixed performance of (de)crescendi. - -* Better documentation for arithmetic_multiplier and arithmetic_basicspace - in params.ly. - -* Added instrument-equaliser for MIDI output, see scm/midi.scm, and - properties midiMinimumVolume, midiMaximumVolume, ranges [0,1]. - -* Changed absolute midi volume settings into factor of full scale. - -* Fixed another dynamic-line-spanner bug, it gets hairy. - -* Added warning for spanners that are not fully contained in parent spanner. - - -1.3.37 -====== -1.3.36.hwn1 -=========== - -* Abstract Align_element into Align_interface. Removed -Axis_align_{item,spanner}, Align_element, Super_element, all multiple -inheritance in the backend. - -* new Gade score, INSTALL.texi fixes (thanks, Mats) - -* Removed Item::hpos_f (), Score_element::{get,set}_real () - -* comments detailing properties for Axis_group_interface, -Side_position_interface, Score_element, Item and Spanner - -1.3.36.jcn3 -=========== - -* Fixed vertical dimensions of elements in dynamic line spanner by adding - axis-group to dynamic line spanner. - -* Bugfix: line-spanner lasts always full duration of (de)crescendi. - -* Bugfix: broken (de)crescendi on a dynamic-line-spanner. - -* Bugfix: compilation dynamic-engraver. - -* Added and updated a faq about postscript and ghostscript. - -* Fixed order of slurVerticalDirection verticalDirection in - generic-property.scm. Similar fixes for Stem, Tie, etc. - -* Added a Text_engraver to GraceContext. Maybe it was removed on - purpose: scripts on grace notes seem broken, they appear on the - main note. - -* Bugfix: volume effect of (de)crescendi was sometimes wrong way round. - -1.3.36 -====== -1.3.35.hwn1 -=========== - -* textEmptyDimension changed into textNonEmpty, default: off, -ie. texts don't occupy space. - -* Use STL map for Lookup::lookup_p_tab_p_ - -* Abstracted Axis_group_element into Axis_group_interface, and removed -Axis_group_element. This eliminates some multiple inheritance in the -backend - -1.3.35.jcn1 -=========== - -* Added minimum-space property to Side_position_interface. Used in - positioning of Volta_spanner: voltaMinimumSpace. - -* Fixed and cleaned-up volta-spanner. - -* Moved directional-element.cc -> directional-element-interface.cc - -* Renamed all `process_requests' to `process_music', which fixes - midi performance. - -* Fixed dimensions (more x-y interchanges) of brace, bracket and - volta-spanner. - -* Half-assed fix to get similar vertical placement of orphaned vs. - line-spanned dynamic elements. - -* Added property bracketCollapseHeight: the minimal size of a staff bracket - that will be typeset. Smaller brackets will not be displayed. This - fixes the (in 1.3.x reintroduced) funny duck-beak-bracket-bug (sorry). - -* Removed some dissonant chords from Coriolan - -1.3.35 -====== - -* Removed Documentation/programmer directory - -1.3.34.jcn3 -=========== - -* Small enhancements to Staff_margin_engraver: - - by default, the marginScript left aligns the text - - to set the text style, use property marginScriptTextStyle - - to change the alignment, use property marginScriptHorizontalAlignment - (centred and right alignment require manual padding settings). - -* Print a friendly message if the manual pages failed to build. - -* Bugfix: dynamicDirection now overrides verticalDirection setting. - -* Warning messages and nl.po - -* Fixed vertical alignment for all dynamic items and (reluctantly) - reinstated old directional behaviour for orphaned dynamics. - -* Finished maximumRestCount property. - -1.3.34 -====== -1.3.33.hwn2 -=========== - -* Print key without setting key, syntax "\key ;". General cleanups of -key-item. - -* Add paragraph tags in HTML output of mudela-book. Music fragment -don't run into the text anymore. - -* Bugfix: don't align the first line of text. (Lookup::text ()). - -* Abstract away data members of Axis_group_element, Align_element - - -1.3.33.jcn3 -=========== - -* Added helpful properties instrumentScriptPadding/instrScriptPadding for - Staff_margin_engraver. - -* Removed some empty files, substituted (c) 1999 occurrences. - -* Added \property maximumRestCount. It will prevent showing (or actually: - moving in case of a collision) more than maximumRestCount similar rests. - WIP! - -* Rewrote Staff_margin_engraver. Staff margin texts now hang on a new - breakable item: Left_edge_item. - -* Fixed vertical alignment for dynamic elements. Orphaned dynamic items - (not supported by a Dynamic_line_spanner) still collide with Staff, - although they now have staff support, which was supposed to fix this. - -* Fixed Staff_margin_engraver for "instrument", "instr" is still broken. - -* Dynamic elements are only put in a Dynamic_line_spanner if there - actually is more than one adjacent note-column with a dynamic. - This breaks the fine looks of all dynamics, again :-) - - - - -1.3.33 -====== - -1.3.32.hwn3 -=========== - -* Experiment: use STL map for Scheme_hash_table; Is there a speedup? - -* Bugfix: print brace iso. bracket for Piano / GrandStaff - -* Change naming: change do_post_processsing into after_line_breaking, -do_pre_processsing into before_line_breaking and do_process_requests -into do_process_music. - -* Bugfix in hash-table.hh: do quadratic probing, and not cubic probing. - -* Display property name for type error. - -* Cleanups for Dynamic_engraver and Dynamic_line_spanner. - -* Warn if last column in score is musical. Helps catch programming errors. - -* Spanner::spanned_drul_ now is private. - -* Rewrote some bar code: moved molecule functions out of Lookup. - -1.3.32.jcn3 -=========== - -* Embedded newlines in text items are now allowed. This helps avoiding - TeX-hacking in some cases. See input/test/coriolan-margin.ly - -* Fixed stupid x-y interchange bug for staff-bracket. This fixes - placement of staff-brackets. - -* Fixed bracket/arch-thickness interchange bug, and made bracket a bit - thinner. - -* Fixed slur/bezier-beautiful name mismatch. This should fix the steep - slurs that were apparently reintroduced in 1.3.29. - -* Made some small fixes to Coriolan. - -* Removed duplicate lily/output-property-engraver.hh. - -* Removed optional use of vanilla spanner in Dynamic_engraver. - -* Fixed (measured) tremolo for Stem and Beam. Merged declarations - stem-engraver.hh and chord-tremolo-engraver.hh into their .cc - implementation file. Also fixed looks of Chord tremolo, input and - implementation is still ugly. - -* Added *.yy and *.ll to TAGS, to that tags-find-replace doesn't omit - parser and lexer. - -1.3.31.mb1 -========= - -* Fixed \specialkey and \normalkey. Updated documentation. - -1.3.32 -====== -1.3.31.jcn5 -=========== - -* Fixed and cleaned-up Dynamic_engraver. Optionionally uses vanilla - spanner instead of Dynamic_line_spanner. - -* Made gcc-2.95 compile fix in libc-extension. - -* Various fixes to Coriolan, score starts to look acceptable. - -* Moved optional text of crescendo into Crescendo spanner. Fixed horizontal - and vertical alignment of dynamics. - -* Added new text crescendo spanners to Coriolan and made some fixes. - If you're using timidity, use the -EO option to prevent notes get - stuck. I'm not sure whose fault this is, Lily's MIDI output may be - stretching the standard a bit. - -* Adjacent dynamic markings are now grouped on a horizontal line, but it's - not perfect yet: they're always below the staff and no horizontal spacing - is done. Also, character metrics of dynamics are still not used. - See: input/test/crescendi.ly and input/test/dyn-line.ly - -* Cleaned up Span_dynamic_performer. - -1.3.31 -====== -1.3.30.mb1 -========= - -* Fixed the page layout, reintroducing space for the header and - trying to keep piece titles on the same page as the piece. - The header and footer can now contain several lines. - -1.3.30.jcn3 -=========== - -* Lily now also performs crescendi and decrescendi in MIDI output: - Span_dynamic_performer in a slightly crappy way. - -* Added preliminary support for crescendi/decrescendi other than `hairpins', - eg: `cresc. poco `a poco -- -- --' - -* Made MIDI tie performance fix. - -1.3.30.jcn2 -=========== - -* Lily now performs absolute dynamics in MIDI output. - -* Included David's comments on opus47 in TODO. - -1.3.30.jcn1 -=========== - -* More Coriolan: flute-1,2; oboe-1,2; clarinet-1,2; - fixes and remainder french horn-1,2; trombone-1,2; - fagotto-1,2; timpani; and several fixes. - -1.3.30.uu1 -========== - -* Remove some old doco from programmer/ and put on personal homepage. - -* Removed union-find from flower library. - -* Only quantise tie horizontal part inside the staff. - -1.3.30 -====== -1.3.29.hwn1 -=========== - -* Report type errors for \property. Helps with converting 1.2 input - -* Use Scheme for Align_element; fixed graceAlignPosition -and removed \property alignmentReference in the process. - -* Use generic properties for lyrics too. This fixes \property -Lyrics.textStyle - - -* Add relative distance for constraints between non-column items. - -* Automatic \marks: use "\mark ; ". The mark numbers or letters are -increased automatically. - -* Translators now only change properties of their own context. This -removes the 2nd argument to Translator::get_property() - -* Bugfix for Metapost mode - -1.3.29.uu1 -========== - -* Updates of glossary (Christian Mondrup) - -* Bugfix with bar number placement - -* Moved links to bibliography/ and misc/ to main index. - -1.3.29 -====== - -* Moved Slur-specific code from Bezier_bow to Slur and Slur_bezier_bow. - Slurs are now calculated just once. - -* Bezier_bow gets constants from paper. Still no sensible solution for - magic asymmetry gradient step constants. - -* Reinstantiated tangent-controls, more flexible than ever. You can choose - between area asymmetry and tangent-controls. My guess is, tangent controls - will be junked in 1.3.30. - -* Slur area: only look at x-gradient. - -* Added credits for some symbols of as5/9 fonts. - -* Bugfix: don't make almost flat slurs, change in de-uglyfy slur. - -* Bugfix: midi2ly put out recent version (ugh). - -1.3.28.hwn2 -=========== - -* Bugfix: don't forget to process staffSpace and numberOfStaffLines -properties. - -* Removed Gade score. To appear (shortly?) on Mutopia. - -* Make Bar_script_engraver look for typeVisibilityFunction (eg -property barNumberVisibilityFunction). Changed the names of the Scheme -functions to be understandable. See input/test/bar-script-visibility.ly - -* rewrite of class Molecule. It has now reached the ultimate quality -plateau. All molecule data is now shared. - -1.3.28 -====== - -* Update of the glossary by Christian Mondrup - -* Moved horn-concerto-3 out of tarball to private website, removed -W.A.Mozart subdirectory. - -1.3.27.hwn1 -=========== - -* Bugfix: don't make giant ties if the horizontal part of tie is near -the center. - -* Small optimizations to be a little more careful with mem usage. - -* Website change: put all examples in one directory. - -* Removed Atom as a separate type. Now use SCM, and since we use -function composition, Atoms are immutable, so they don't have to be -copied. This makes life easier, hopefully this is quicker and uses -less memory. - -1.3.27.jcn1 -=========== - -* Bezier_bow: minimise_enclosed_area - -1.3.27 -====== - -1.3.26.hwn4 -=========== - -* Tuplet-spanner slope calculation now looks better on tupletted rests -(patch courtesy Laurent Martelli) - -* Bugfix (Staff_performer::new_instrument_str ()) check type of -\property "instrument" - -* New mechanism for breaking lines: do not copy & prune the element -property list separately, but combine these steps. Dramatically -reduces memory usage for large scores. - -1.3.27 -====== -1.3.26.jcn2 -=========== - -* Bugfix: font used in volta-spanner calculation. - -* Added simple selection list to webpage, inspired by sawmill. - -* Devised kludge for ascii 5 character font pitches. - -* Substitutions: interline, 1997,1998, @stack.nl and small typo fixes. - -1.3.26.hwn1 -=========== - -* Plug memory leaks related to Moment: - - Spacing_engraver::do_pre_move_processing () - - make_rational ()/make-rational - - Paper_column::Paper_column () - -* Plug memory leak in Paper_outputter::output_{String,Real,int}_def() - -* Plug memory leak in Score_engraver::set_columns () - -* Plug memory leak in Scheme_hash_table::set() - -* Plug memory leak in Score_element::molecule_extent () - -* Bugfix: don't crash if a slur doesn't span anything. - -* Bugfix: don't crash if doing beams without a staff symbol. - -* Generic element property setting: - - \outputproperty #predicate #'symbol = #value - -Will set the element property symbol to value, for any elements that -return true for PREDICATE. This allows you to virtually tweak *ANY* -property of the output. Example in input/test/generic-output-property.ly - -1.3.26 -====== - -* lilypond as as2ly: --help and --version to stdout. Regular identify - to stderr. This fixes help2man's manpage generation. - -* configure: substitute full path for perl and guile in scripts. - -* Added ascii slur and volta. There seems to be a Lily bug in volta placement. - -* Bugfix: default font now user settable - -* as2text: handle plain ascii font, read from stdin, you can now do: - - echo "\time 4/4; g''1 g2 g4. g8" | lilypond -f as -i init-as.fly - | as2text - -1.3.25.hwn1 -=========== - -* Bugfix: second half of broken ties now are displayed again. - -* Bugfix: add clef to the support of 8 text in the G_8 clefs. Center -it horizontally on the clef. - -* Added Tie_column spanner. Ties in tied chords now get proper directionsa. - -* Bugfix: unbroken repeat barlines now work, eg. |: - -* Added Request_iterator to make more flexible constructions possible. - -1.3.25 -====== -* as2text: catch missing font/character errors, added default font, set text. - -* New ascii fonts and glyphs: as5 as-numeral4 as-braces9 - -* Ascii output, minimal support: - - AsciiScript Fonts: mf/*.af - - Init files: ly/*-as.*ly - - AsciiScript translation to text: scripts/as2text.scm - - input/test/as.fly input/test/as1.fly - - Output support: lily/lily.scm - - Try: - lilypond -f as -i init-as.fly input/test/as.fly - as2text as.as - -1.3.24.hwn1 -=========== - -* The horizontal part of ties will avoid collision with staff lines. - -* Plugged memory leak: don't protect Atom function. - -* Lookup cleanups. Made lots of functions static. Moved some code out -of Lookup. - - - -1.3.24.hwn1 -=========== - -* Bugfix: ly2dvi.py exits succesfully when encountering --help and -does not delete any of the file_ly*.tex. - -* Added header and footer support in ly2dvi.py - -1.3.24 -====== - -* Added a ROADMAP file explaining the source directory layout. - -* Minor tweak in the feta 6 and 9 numeral - -* Moved files from lib/ to flower/ - -* Removed Note_head_side class. - -* Updated the webpage to be a little more chatty. - -* Small Local_key_engraver optimization: only lookup timing engraver once. - -* Fixed dashed slurs - -* Rewrite of Slur code. Be much more picky about slur shapes. We try -to offset the slur instead of bending it too much - -* Look at stem directions for tie direction. - -* Compound multimeasure rests. Put measures_i_ variable in an element -property. Made the symbol a lot wider. - -* Time signature small cleanups. - -1.3.22.hwn2 -=========== - -* Symbols opposite to stem (eg marcato) now get the proper glyph in up -version. - -* Breathing marks now have a direction by default. - -* Do set generic script properties. - -* Also put tuplet brackets under notes. - -* Score_element_info: only store origin of element, but not the path -to parent translators. Saves a little memory, and removes some complexity. - - -1.3.22.hwn1 -=========== - -* Autobeaming in time sigs that don't have 1/4 beats fixed. - -* (De)crescendi should now work. (Thanks Michael) - -* Better error reporting for conflicting time signatures. - -* Line_number_engraver: output locations of note head -definitions. Very handy when entering complicated scores. - -* Rewrote multi measure rest support: now they are entered as spanners -(\commandspanrequest \start "rest"). RXXXX is an abbreviation for - - { \commandspanrequest \start "rest" - SXXXX - \commandspanrequest \stop "rest" - } - -* Removed support of percent style repetitions. - -* Put texts outside the staff. - -1.3.21.mb1 -========== -* Getopt bugfix: don't assert on certain errors. - -* ly2dvi: Remove unnecessary space for the page headers. - -* Bugfix convert-mudela - -1.3.21.hwn1 -=========== - -* Bugfix in lilypond-mode.el: eval-buffering now uses file name and -not buffer name. - -* Scrapped tupletVisibility property. Now use tupletNumberVisibility, -tupletBracketVisibility, with Scheme value #t, #f or 'if-no-beam. -\property tupletInvisible will stop all tuplet spanner creation. - -* Don't go berserk if tuplet spanner is on only one column. - -* Use SCMs & Smobs for Molecules & atoms. This uses less -scm_(un)protect_object () calls, so the output stage should be faster. - -* Added \property tupletSpannerDuration, to make multiple tuplet signs -with one \times. - -* Some programming Errors in spacing are now caught. Lily does not -hang when encountering degenerate springs. - -* Allow beams to start and end over rests - -1.3.19.hwn2 -=========== -* Fix disappearing clefs when clefs are not printed with a barline. - -1.3.20.jcn2 -========== - -* SCM properties beamHeight and beamVerticalposition now use half-spaces: - input/test/beam-control.fly -* Added \context Voice to .fly and .sly; the default \context Staff is almost - never what you expect -* Fixed decision for .sly/.fly in lilypond-mode. - -1.3.19.hwn1 -========== - -* Clean up font-metric hierarchy, use Adobe AFM code to parse AFM files. -Cleanup mf-to-table.py - -* Fixed embarassing slur bug. - -1.3.19.jcn1 -========== - -* lilypond-mode.el: guess init file for lily-*-region, lily-mode-map bindings - -1.3.18.uu2 -========== - -* lilypond-mode.el for emacs supersedes mudela-mode.el - -* Tuplet spanners don't collide with encompassing notes. - -* Gobbled Adobe parseAFM* code, for future use. - -* Big 1999 to 2000 search/replace. - -* Big interline to staff_space search/replace for mf files. - -* Removed Bow class, and split code into Tie and Slur - -* Don't put scripts on grace notes. - -* Font_metric uses SCM for name field. - -* Various compilation fixes. - -1.3.17.jcn2 -=========== - -* Bugfix: beams with less than one (visible) stem - -* small fixes to pa.ly - -1.3.17.jcn1 -=========== - -* Fixed bug that made multi-measure rest barnumber counts go wild. -(even more scm2int/int2scm mixups!) - -* mutopia/J.S.Bach/pa.ly: organ score (for my father) - -* small fix to mutopia/J.S.Bach/Duette/violino-ii.ly - -1.3.17.hwn2 -=========== - -* Remove Paper_def calls in bezier-bow.cc - -* Remove data members of Tuplet_spanner, Volta_spanner - -* hang_on_clef, property hangOnClef removed - -* Bar::type_str_ mode into element property `glyph'. Use a Scheme -function to determine breaking behavior. - -* More Scheme typechecking. - -* Be strict about the difference between strings and symbols for conversion. - -* Fixed bug that made 1st line offset to right fixed. Bugfix courtesy -Laurent Martelli. - -* Partial French translation, courtesy Laurent Martelli. - -* Small corrections in NL translation. - -1.3.17.hwn1 -=========== - -* Added mensural note heads (noteHeadStyle = "mensural") Additionally, -we have a longa note head. noteHeadStyle = "harmonic" is not -supported anymore. (for now, that is) - -* Reference manual update. Document \properties with examples - -* fix mudela-book --help - -* Use element properties for Text_item::text_str_, Clef_item::symbol_, -Key_item::c0_position_ - -* Clef_engraver general cleanup. Use alists (\property -supportedClefTypes, clefPitches) for clef types. - -* Use progress_indication () for progress. Don't include directly -Don't include , from headers. - - -1.3.16.hwn1 -=========== - -* \property stemCentered (boolean): centers stem on note head. See -input/test/stem-centered.ly - -* input/trip.ly, small test of lots of features. - -* \property Staff.collisionMergeDotted: merge equal noteheads -with different dot count. See input/test/collision-merge-dotted.fly - -* Dotted rest bugfix - -* Don't crash if a slur does not span any notes. - -* Volta repeats fixed. - -* cleanup of Note_heads_engraver - -* removed dots_i_ member of Dots - -1.3.16.jcn1 -=========== -* Fixed cross staff slurs. It seems that cross-staff sign - was swapped. - -1.3.15.hwn1 -=========== - -* Fixed bug in stem code. Stem in chords works again. Small -stem cleanups. - -* Use element properties for Staff_symbol. - -* \property sparseTies (boolean). Only make one tie in the -middle for tied chords. - -* Junked Directional_spanner, Column_info. -Directional_element now is element interface `Directional_element_interface' - -* cleanup: use to_boolean () iso. gh_boolean_p && gh_bool2scm - -pl 15.jcn4 - - removed old notename2scm conversion - - beam-dir-algorithm through scm - - bfs paper-scm -gv - bf: knee-stemlengths - -pl 15.jcn3 - - moved poor man's stem arrays to scm - -pl 15.jcn2 - - beam quanting using scm lists - -pl 14.hwn1jcn1 - - chord-name uses scm members - - bfs: knee with different mults, interstaff knee, auto-knee - -********** -pl 14.hwn1 - - specialize duration.cc for lily, move out of lib/ - - stem cleanup - - more SCM typechecking - - stafflineleading -> staff_space - - bf: rod distances. - - junk some unused code. - -pl 13.hwn2 - - paper/score column cleanups. Junk Score_column type - -pl 13.hwn1 - - Bezier_bow/Bezier cleanups - - bf: rest under beam. - -pl 13.jcn2 - - untangled Chord_name (item) and Chord (list-of-pitches) - -pl 13.jcn1 - - bezier-bow fix - -********** -pl 12.hwn1 - - polynomial.hh - - bf: generic properties - - quantise_iv () fix. - - bezier cleanup - - class Polynomial - - use smobs for font metric tables/hashes. - - nl.po bf - -********** -pl 11.jcn3 - - small beam fixes (interstaff knees still broken) - -pl 11.hwn1 - - bf: dots - - bf: harmonic note heads - - revise stem, notehead, rest - -pl 11.jcn2 - - included missing scm,ly updates - - bf: urg to_dir () takes scm.. - - bf's: if (Foo b = bar != 1) - - beam cleanup - -********* -pl 10.uu1 - - various small bfs - - bf: alignment reversed - - Staff_symbol_referencer -> Staff_symbol_referencer_interface - - bf: staccato pos - - Knee fixes (thanks, Jan) - -pl 10.jcn2 - - fixes for invisible beamed stems - - removed steminfo from properties, don't cache Stem_info - -pl 10.jcn1 - - steminfo to properties - - dropped internote dim for stem-beams - -********* -pl 9.hwn1 - - abstracting Staff_symbol_referencer to an interface. - - quantised_position for staccato dots. - - standchen fixes - - junk Score_element::do_{width,height}: set callbacks directly. - - merge Score_element, Graphical_element - - merge Axis_group_element, Graphical_axis_group - - junk pointer fields from Score_element derived classes - - junk obsolete do_substitute_dependency code. - -********** - -pl 8.hwn2 - - staff-support for Crescendi. - - padding for accidentals. - - cascading offset callbacks - -pl 8.hwn1 - - note-head-side - - naming Staff_sidify -> Side_position_interface - -*********** - -pl 7.mb1 - - bf: timeSignatureStyle works again - -pl 7.hwn1 - - Dirk Latterman key/mmrest patches - - Offset callbacks in Dimension_cache - - Junked Staff_side_* - - Staff_sidify: interface class. - - prelude-{1,2} fixes. - -*********** -pl 6.uu2 - - bf: PS font selecting. - -pl 6.uu1 - - bf: ls-latex - - mudela-book --no-pictures - - bf: ly2dvi - - convert-mudela: beamAuto moment syntax. - -pl 6.jcn3 - - fixed scm output - -pl 6.jcn2 - - half-baken ly-gulp-file in scm - - resurrected scm output through guile - -pl 5.mb1 - - bf: version of init.sly, init.fly - - Clarify necessary version of texinfo - - bf: texi files, minor errors and syntax compatible with - older makeinfo - -pl 6.jcn1 - - bf: scm output - -******* - -pl 5.hwn2 - - Bach preludes: mutopification - - dots are Directional_element too; use \property dotDirection - - moved some stuff out of Lookup - - bf: dots - - font selection mechanics changed. - -pl 5.uu1 - - bf: smob allocation (thanks David!) - -pl 5.hwn1 - - junked \shape. Now use #'margin-shape - - timing: one_beat -> \property beatLength - - bf convert-mudela - -************ - -pl 4.uu1 - - input/test/ \property fixes. - - gcc 2.95 fix - -pl 4.hwn1 - - Break_align_engraver, - break align order from \property breakAlignOrder - - junked Score_priority_engraver - - moved Time_description into Timing_translator - - use properties for timing, see input/test/timing.fly - * removed \cadenza ; now use \property Score.timing - * \property measurePosition - * \property measureLength - * \property currentBarNumber - - Note_name_engraver , \context NoteNames - - -pl 4.jcn1 - - junked some chord guessing code - - bf: lookup size (-1) for chord-name accidentals - - bf: ly2dvi's MFINPUTS setting - -************* -pl 2.jcn3 - - chords: - * Chord is item - * junked TeX hacking - * configurable with styled strings from scm - * fixes: dim, /no X, tonic != C - -pl 2.jcn2 - - chords from scm - - -pl 3.hwn2 - - visibility-lambdas into default elt properties SCM. - - clef types in SCM - - verticalDirection properties now in SCM. - -pl 3.hwn1 - - move position_i_ into Staff_symbol_referencer - - move dir_ into Directional_element baseclass - -**************** - -pl 2.hwn1 - - bf: dynamic style. - - prepare to move dir_ into SCM. - -pl 2.jcn2 - - chord fixes: - * inversion request: no inversion guessing for chord entry - * bass request: c/+b to add bass note not part of chord - * -dim modifier works on all thirds - * colon iso dash as tonic/modifier-additions separator - * C:m5- displays as "Cdim" - * C:m5-7- displays as "Co" - -pl 2.jcn1 - - moved bracket vars to params - - reverted broken lilypond-devel - -************* -pl 1.uu1 - - David's patches: - * mfplain.mp detection - * Graphical_element::common_refpoint() robuster. - * fixes for mudela-mode.el - - Dirk's patches: - * key signature placement, - * tied accidentals. - -pl 1.hwn2 - - extra-offset elt property. - - junked Chord_tremolo - -pl 1.hwn1 - - changed calling convention for {get,set,remove}_elt_property() - - rm'd some mutopia examples. - -******* -pl 0.hwn2,1 - - Generic properties and Property_engraver. Moved most of the -properties. - -0.lu1 - - resurrected midi2ly - -0.jcn1 - - bf: lyrics lexer - - reverted mup2ly revert - -pl 3.uu1: - - frontport of 1.2.17 patches. - -********** - -1.3.0: - -pl 15.hwn2 - - loads of bfs. - -pl x.jcn3 - - another workaround: reset buffer state for scm_ftell () - - workaround for broken scm_ftell () - -pl 15.hwn1 - - \properties are now SCM s, junk Scalar type - - use SCM for strings in parser. - - Moment derived from Rational. Moment may be smobified. - -pl 15.jcn4 - - direct #... to scm parser (Thanks to Gary Houston) - - diff --git a/Documentation/misc/CHANGES-1.4 b/Documentation/misc/CHANGES-1.4 deleted file mode 100644 index af019b8376..0000000000 --- a/Documentation/misc/CHANGES-1.4 +++ /dev/null @@ -1,157 +0,0 @@ -1.4.2.jcn4 -========== - -* Windows: bugfix for tex-wrappers, added tex wrapper for dvips. -LilyPond (read: ly2dvi) should now work right out of the box. - -Amazing; it seems that ly2dvi won't generate PK files without this -dvips wrapper. We had over 200 downloads of setup.exe, yet only one -`call for help'. Did all the others give up, or did none of them -bother to share their fix/file a bug report? Urg. - -* Included mktexnam.patch (again?). - -* Documentation fix (Mark Hindley). - -* Debian patch and bashism fix (Anthony). - -* Bugfix: local-install should depend on $(INSTALLATION_FILES). This fixes -./configure; make install in buildscripts/ (Michael Vanier). - -* Removed les-nereides from short-examples, as it is tweaked a lot, -contrary to what the webpage claims (didn't know that). - -1.4.2.mb1 -========== - -* ly2dvi, titledefs.tex: Typeset copyright notice at the bottom of the -first page. Make separate page styles for first and last page. - -* Bugfix: Default RehearsalMark font-family changed to roman (only -affects Scheme text markups). - -1.4.2.hwn1 -========== - -* Added support for Q: statement to abc2ly. (Laura Conrad) - -* Tie shape bugfix (Mark Hindley). - -* Bugfix: lilypond-book LatexPaper.__setattr__() - -* Bugfix: make Hyphen_spanner::brew_molecule() more robust. - -* Don't use stdin when no argument specified. - -* Naming smobs -> grobs - -* Bugfix: ledger lines on easy-notation note heads. - -1.4.2 -===== - -* Glossary fixes (Thanks Jean-Pierre Coulon). - -1.4.1.jcn3 -========== - -* Updated les-nereides. - -* Added \newpage command. - -* Doco fixes. - -* Debian make fix. - -* Fix for index, small doco fixes. - -* Bugfix: use roman font (instead of feta) for unacorda pedal. - -* Don't use cyclic symlinks for web doc. - -* Don't create `empty pngs' with touch, make symlinks instead. - -* Added extra header titling fields to ly2dvi too. - -1.4.1.mb2 -========= - -* documentation fixes - -* Add make rule to avoid problems building dvi documentation - -* Documentation fixes - -* Bugfix: tuplet-number-visibility - -1.4.1.hwn1 -========== - -* Do not lengthen the stem in case of a collision with the flag, but -move dots to the right. - -* Debian patches (Thanks, Anthony!) - -1.4.1 -===== - -1.4.0.jcn7 -========== - -* Added \tupletUp, \tupletDown, \tupletBoth. - -* Bugfix convert-ly: treCorde. - -* Slur attachment and extremity offsets taken relative to slur -direction; so that - - Slur \override #'attachment-offset = #'((0 . 1) . (0 . 1)) - -will always make the slur move away from the note head. - -* Bugfix: slurs on dotted or flagged notes. - -* Added @reng, @rgrob, and @rint macros for referencing engravers, -grobs and interfaces in documentation. - -* Bugfix for configure. - -* text2html: use python script, use

 instead of .
-
-* Fixed pa.ly.
-
-* Bugfix: lilypond mode: make view messages scroll by.
-
-* configure: check for splitting makeinfo; small fixes for
-non-splitting makeinfo doc.
-
-* Added some missing titling (dedication, translator) and fixed ps titling
-(Thanks David Arnold).
-
-* More doco fixes.  Added a small legend.
-
-* Bugfix: trend of broken slurs with user-overridden stem attachments.
-
-* Bugfix redhat.spec: use root attributes on files.
-
-* Bugfix: typo in update-lily, re-set download url to /development.
-
-* Removed some empty files.
-
-* Merged tutorials. Simplified the text.
-
-* Small doco fixes.
-
-1.4.0.uu1
-=========
-
-* Bugfix: percussion clef
-
-* Bugfix: multiple scripts.
-
-* Bugfix: read TeX's afm files. Metrics are still messed up (too small), but no
-crash.
-
-* Bugfix: fixed the problem where dots clash with other notes (Timothy S.
-Nelson)
-
diff --git a/Documentation/misc/CHANGES-1.5 b/Documentation/misc/CHANGES-1.5
deleted file mode 100644
index 5f42581186..0000000000
--- a/Documentation/misc/CHANGES-1.5
+++ /dev/null
@@ -1,829 +0,0 @@
-1.5.23
-======
-
-* Bugfix: be anal about slur dimensions.
-
-* Bugfix: insert extra margin around pixmaps.
-
-* lilypond-book: magnification option for EPS
-
-1.5.22.jcn1
-===========
-
-* Resurrected experimental sketch output, now with dispatch.
-
-* Bugfix: prefix directory defaults to DIR_DATADIR if not defined.
-
-* Rune: more reliable repeat dots (WARNING: FONT CHANGED)
-
-1.5.22.hwn1
-===========
-
-* Dashed slur bugfix. 
-
-* GUILE 1.4 compatibility.
-
- 
-
-1.5.22
-======
-
-1.5.21.hwn1
-===========
-
-* Crop EPS files before rendering in lilypond book. This makes make web
-a lot faster.
-
-* Added links to internals documentation
-
-* Small dimcache (darn gcc-2.95) bugfixes.
-
-* Implemented Engraver::top_engraver ().
-
-* Completion_heads_engraver: engrave tied notes across bar lines
-automatically. Related changes:
-
-  - duration-log of Note head can be larger than 2
-
-  - make public class Grob_pitch_tuple
-
-* Make old spacing engine default again. The new one is still rather
-sucky.
-
-1.5.21
-======
-1.5.20.jcn1
-===========
-
-* Fixed direct PostScript output, and changed default fonts.
-
-* Bugfix: automaticMelismata in refman (huh, or should lily be changed?)
-
-* pktrace:
-
-      cp mf/out/feta20.* $HOME/usr/src/sketch-0.7.8/Resources/Fontmetrics
-      echo 'TeX-feta20,feta20,Roman,-gnu-feta20-medium-r-normal,adobe-fontspec\ific,feta20' >> $HOME/usr/src/sketch-0.7.8/Resources/Fontmetrics/std.sfd
-
-
-1.5.3.lec1
-==========
-abc2ly fixes:
-
-      fix to Q: support
-      partial fix for tuplet parsing
-      fix for blank first T: line
-      escape "'s in header lines
-      fix for dotted breve in whole note duration
-      M:none no longer attempts to insert "\time none"
-
-
-1.5.20.uu1
-==========
-
-* etf2ly robustness fixes
- 
-* Rewrote outputting backend. Now uses GUILE modules.
-
-* Line breaking bugfix.
-
-* Bugfix: Unfolded_repeat_iterator::add_repeat_command().
-
-1.5.20
-======
-
-1.5.19.jcn3
-===========
-
-* Sketch output:
-
-  - Sketch uses feta font.
-  - Fix to linewidth and feta fontsize.
-   - mf-to-table: write dummy values in afm to make sketch happy.
-  - Fixes to glyphs: rectangles beziers work now.
-   - Bugfix: sketch.scm: use primitive-eval.
-
-* Sketch and feta Type1 fonts:
-   - textrace:
-      wget http://www.inf.bme.hu/~pts/textrace-latest.tar.gz
-      tar xzf textrace-latest.tar.gz
-      (cd autotrace-0.27ap; ./configure; make)
-      ./traceall.sh feta20 feta20.pfb $HOME/usr/src/lilypond/mf/out
-
-  - copy mf/out/feta20.* to sketch/Resources/Fontmetrics:
-
-   - append to sketch/Resources/Fontmetrics/std.sfd:
-      echo 'TeX-feta20,feta20,Roman,-gnu-feta20-medium-r-normal,adobe-fontspecific,feta20' >> $HOME/usr/src/sketch/sketch/Resources/Fontmetrics/std.sfd
-
-   - Hmm, then find that
-
-     + Sketch accesses characters by name, ie, the
-clefs      name characters have in default text fonts.  Luckily, textrace
-      mangles the feta names too.  Sadly, textrace chooses different names
-      for characters > 128.
-
-    + Textrace mangles font name by prepending `TeX-'.  Doesn't seem to
-      pose a big problem; we'll have to pefix `TeX-' to feta fonts.
-
-    + Sadly, only the sketch-0.7.x is happy with the feta type1 font, but
-      printing is not yet implemented?
-
- * Remove modules directory (again?).
-
-
-1.5.18.moh1
-===========
-
-* Further work on more flexible control of lyric alignment.
-   - new properties "alignment", "ignore-length-mismatch", "begin-alignment" a\nd "end-alignment" to control non-centered lyric alignment
-
-
-1.5.19.hjj1
-===========
-
-* Added \portato.
-
-1.5.18.jcn1
-===========
-
-* Moved python modules to ./python.
-
-* Better python module stepmake support.
-
-* Bugfix ly2dvi etc: LILYPONDPREFIX should override datadir.
-
-1.5.18.hwn2
-===========
-
-* Put lilylib back into ly2dvi
-
-* Cache symbols for {get,set}_{grob,music}_property and
-{get,set}_property.  Speedup: about 20 percent.
-
-* Remove C++ version of midi2ly
-
-* Inline Grob::parent_l (Axis), String::String() speedup 2 % 
-
-* First try at Sketch (sketch.sourceforge.net) output.
-
-
-1.5.18.rz1
-==========
-
-* subdivideBeams fix - setting property right after beam definition no
-  longer affects that beam.
-
-* Minor docu updates, accidental cleanups and example updates
-
-* Added Accidental grob properties paren-cautionaries and
-  cautionary-size controlling the appearance of cautionary accidentals
-
-1.5.18
-======
-1.5.17.jcn6 - aka: `pgwit!  Ah, dacht dat-i zo wel aardig was.'
-===========
-
-* Some more hacking at midi2ly.py:
-   - options and stuff: moved to library for ly2dvi, midi2ly, mup2ly,
-	update-lily
-   - handle keys and note names
-   - simple quantising
-   - handle tuplets and silly durations
-   - guess clef
-   - don't include empty staffs in score
-   - print relative pitches by default
-   - don't repeat duration by default
-   - bugfix: allow 8th notes too
-   - include new version of input/test/midi-scales.ly
-   - added barchecks + fix
-   - bugfix for relative mode
-
-* Shorter MIDI creation texts.
-
-* Bugfix: Key_change_req::transpose: don't deliver reversed list.
-
-* Bugfix: Key_performer::create_audio_elements: transpose list to
-`do', before determining tonality.
-
-1.4.8.moh1
-==========
-
-* new property "end-alignment" to control non-centered lyric alignment
-
-1.5.17.hwn1
-===========
-
-* Be quicker in Grob::handle_broken_dependencies().
-
-* --strict option for abc2ly, exit if an error is found.
-
-* GUILE 1.3.4 fix.
-
-
-1.5.17
-======
-
-1.5.16.hjj2
-===========
-
-* Emacs-mode: Inserting tags
-
-* Enable python2.1/Python.h
-
-1.5.16.hwn1
-===========
-
-* Add unfold-repeats function (Rune Zedeler!) to standard init SCM file.
-
-* Bugfix: spacing is no longer confused by coupled clefs, where one of the
-clefs is loose, and the other not.
-
-* Robustness fix for Slur. Don't crash if attachment not set.
-
-* Arpeggios can now have arrows on the top or bottom to determine
-their direction. (MF code by Chris Jackson)
-
-* Symbol cache bugfix in system-start-delimiter.cc -- may switch
-symbol cache off for gcc 2.96?
-
-* MikTeX PDF detection bugfix (Mats Bengtsson)
-
-* Some more random hacking at midi2ly.py. (jcn1)
-
-* Inline unsmob_XXX functions.  Speedup of 6% on wtk1-fugue2.
-
-1.5.15.jcn1
-===========
-
-* Fixes for latest guile cvs.
-
-* Add --enable-optimising flag to configure (Huh?).
-
-* Only inline string utlis when optimising.
-
-* Compile fix.
-
-1.5.15.rz1
-==========
-
-* added property autoReminders, automatically creating reminder
-  accidentals. - major changes to accidental-engraver.
-
-1.5.15.hwn1
-===========
-
-* Junk translator-description.scm
-
-* Make Repeated_music use 'element and 'elements in stead of 'body and
-'alternatives.  Associated changes in parser and music-sequence.cc.
-
-* Change Part_combine_music and Lyric_combine_music to use 'elements
-music property.
-
-* Porrectus patch (Juergen Reuter)
-
- - Rewrote code for vaticana style porrectus grob; the solid shape is
-  now drawn as a single bezier sandwich rather than composed from a
-  couple of misused slurs.  Looks now much nicer.
-
- - Added code to forbid line-breaking inbetween a porrectus
-  (preliminary; to be moved to ligature engraver framework).
-
- - Added auto-properties property for automatic determination of grob
-  properties add-stem and stem-direction from musical context.
-
- - Small clean-ups.
-
-
-1.5.14.jcn6
-===========
-
-* Some more random hacking at midi2ly.py.
-
-* Slightly better doco for r, s and \skip, with examples.
-
-* Bugfixes: add-html-footer.py and @MAILADDRESS@.
-
-* Some website related fixes (thanks Tiggr).
- 
-* Ugly hack in add-html-footer for disabling tutorial and refman links
-in sidebar.
-
-* Guile > 1.4 compilation fixes.
-
-* Website bugfix: mailto: (thanks David Boersma).
-
-1.5.14.hwn1
-===========
-
-* Rename: Local_key_engraver to Accidental_engraver
-
-* Add documentation for accidentals grob property.
-
-* Don't make double accidentals even if two of the same notes are
-specified. (Thanks Rune)
-
-* Search all staff-bars for non-empty barline to determine type. This
-fixes span-bars with the lowest staff hara-kiried. (Thanks Rune)
-
-
-1.5.14.rz1
-==========
-
-* Less buggy beam-split
-
-* Added subdivideBeams, subdividing beams on beats
-
-1.5.14
-======
-
-1.5.13.hwn2
-===========
-
-* Bugfix: revert font-relative-size for grace Accidentals
-
-* Bugfix: hara kiri'd piano staffs doesn't take space anymore.
-
-* Bugfix: reinstate rest-collisions.
-
-* Bugfix: key items have the c0 position again.
-
-* Make \property Voice.GrobName = \turnOff work again.
-
-* More intelligent symbol-cache, in less code. Turned off by default, doesn't
-work with -O2 yet.
-
-* Documentation fixes: change documentation of Moment and make-moment,
-add Translator::{name,description}
-
-* Junk STL implementation of Scheme_hash_table in favor of GUILE
-hashtables with automatic resizing. 
-
-
-1.5.12.jcn2
-===========
-
-* half-baken --with-kpathsea configuration fix.
-
-* ly2dvi: add `.' to TEXINPUTS to catch broken TEXINPUTS settings.
-
-* guile-1.4 compile fix.
-
-1.5.12.hwn1
-===========
-
-* Move engraver descriptions into the C code.  They are accessible
-from Scheme. Grand rehacking to make stuff work again.
-
-* Precompute which engravers are eligible to acknowledge a certain
-type of grob. Speedup: approx 10 % on interpretation phase.
-
-
-1.5.12
-======
-
-1.5.11.jcn1
-===========
-
-* Add -p flag to package-diff.py's diff invocation, to show changed function.
-
-* Add configure checks for python headers.
-
-* Make midi module.
-
-1.5.11.hwn1
-===========
-
-* Allow breaks at measures starting with grace notes.
-
-* Bugfix: don't give up when there is one entirely unspaceable
-measure/line.
-
-* Midi module: many bugfixes.
-
-* midi2ly python blurble.
-
-
-1.5.11
-======
-
-1.5.10.jcn3
-===========
-
-* include python midi parser.
-
-* stepmake updates.
-
-* add .cvsignore patterns for making patches the standard, manual way.
-
-* midi2ly: support chords, duration conversion rewrite.
-
-* parser.yy: Guile > 1.4 compilation fix; scm_unprotect_object is deprecated.
-
-1.5.10.hwn1
-===========
-
-* Rational bugfix.
-
-* Cleaned up definitions of SystemStartDelimiter
-
-* WTK fix.
-
-* Porrectus patch (Juergen Reuter):
-
-- Syntax change: \porrectus -> \~
-- New porrectus properties: porrectus-width, line-thickness.
-- Bugfix: left<->right confusion in porrectus-engraver.cc.
-- Bugfix: Box dimensions for horizontal slope molecule in porrectus.cc.
-- Enhanced mensural style porrectus shape, considering optical
-  illusion in vertical endings due to slope.  Simplified drawing.
-- Code clean-up.
-
-1.5.10
-======
-
-1.5.9.hjj2
-==========
-* Emacs-mode: Keyboard shortcuts, separated identifiers from keywords
-and spacing not necessary in font-locking.
-
-1.5.9.jcn3
-==========
-
-* add-html-footer.py: use html <title> as fallback title for pages
-where @WEB-TITLE@ is not defined.
-
-* Bugfix: stepmake: don't go building executables all over the place,
-if NAME is set in environment.  Some cleanups. 
- 
-* add-html-footer.py: remove href to self.  Substitute @at-variables@
-defined in html comments.  Any occurrence of
-
-	<!-- @foo@=bar -->
-
-in the html page, will subsequently substitute any occurrence of @foo@
-in the same html page with `bar'.
-
-* Bugfix: update-lily: remove unprotected gettext.py include.
-
-* po update.
-
-* windows doc update.
-
-1.5.9.hwn3
-==========
-
-* Optimizations:
-  - speed up Rational::operator+= 
-  - speed up Rational::compare ()
-  - don't store origins if point-and-click not set. 
-
-* \figures input mode:  \figures { <4 6+> <3- 5>2. } 
-
-* Obscure bugfix: call kpsewhich with --format for mfplain.
-
-* Don't put  volta bracket on top of following note (vertically).
-
-* Collision fixes.
-
-* Crude figured bass support (supports rests as well, now)
-
-* Bugfix: various collision issues, updated regtest example.
-
-* Porrectus support (Juergen Reuter)
-
-1.5.9
-=====
-
-1.5.8.uu1
-=========
-
-* Mensural rests (Juergen Reuter)
-
-* Swedish translation (Thanks to the translation project)
-
-* Bugfix: down 8th flag restored.
-
-* Bugfix: span-bars and hara-kiri.
-
-* More advanced collisions: handle meshed chords as well.
-
-1.5.8.jcn1
-==========
-
-* Add mktextfm wrapper for windows (thanks Mats).
-
-1.5.8.hjj1
-==========
-
-* Emacs-mode: new keywords, reserved words, notenames and brackets are
-font-lock-keywords; implementation encourages spacing/indenting.
-
-
-1.5.8
-=====
-1.5.7.hwn1
-==========
-
-* reinclude input/bugs/*.ly
-
-* Mensural flags (Juergen Reuter)
-
-* Fixed problem with hanging Xdvi from redhat 7.x. See also
-http://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=52089
-
-* Bugfix: don't crash if kpse_find_file returns 0.
-
-* Bugfix: don't allocate \outputscale for every file.
-
-* Bugfix: mixing different rhythms on one staff doesn't muck up the
-spacing that much.
-
-1.5.7.hjj2
-==========
-
-* Add PS-compilation, PS-viewing and MIDI-play in LilyPond
--Emacs-mode.  (Heikki Johannes Junes).
-
-* Add common finnish names for notes
-
-
-1.5.6.jcn2
-=========
- 
-* Use Cygwin included Python; drop Windows Python and workarounds.
-
-* Include make/lilypond.mandrake.spec (unchecked!) and README.mandrake.
-
-* Comment out two non existing examples in regression test, add one
-missing from 1.5.5 distribution.
-
-* Revert silly grace-with-braces stuff in tutorial.
-
-* Add short crescendo bug to input/bugs.
-
-* Update and bit more verbose download instructions in INSTALL, 
-fix some links on ftp.lilypond.org.
-
-
-1.5.6.hwn1
-==========
-
-* Grace note bugfixes.
-
-* Move staff-adjacency detection (for the spacing engine) to
-Separating_group_spanner.
-
-* Loose column support: clef changes, key changes may be folded underneath
-notes in a different staff. See input/regression/spacing-folded-clef.ly.
-Changes were made to
-
-  - Separating_group_spanner: decide which columns are loose
-
-  - Simple_spacer, New_spacing_spanner: only look at non-loose columns.
-
-  - Line_of_score: set horizontal positions for loose columns.
- 
-1.5.6
-=====
-
-1.4.6.mb1
-=========
-
-* Allow for duplicated articulation scripts with different direction.
-
-* Added new ornaments: \upmordent, \downmordent, \pralldown, \prallup,
-  \lineprall, \thumb, \comma (to be used with scriptHorizontal = ##t),
-  see also input/test/trill.ly. [WARNING: FONT UPDATE!]
-
-* Bug fix: staccato dot placement.
-
-1.5.5.jr1
-=========
-
-* recent ancient-font.ly development branches manually merged and
-  updated;
-
-* added enhanced mensural minima/fusa noteheads (30 degrees rhomb
-  style); the former 45 degrees quadratic shapes are now available
-  under notehead style "neo_mensural"; [WARNING: FONT UPDATE] 
-
-* minor ancient font corrections (in particular, enhanced set_char_box()
-  arguments).
-
-
-1.5.5.jcn2
-==========
-
-* input/bugs:
-  - Autogenerate bugs document from all .ly's.
-  - Add texidoc to lots of examples.
-  - Junk or move fixed examples to regression test.
-  - Move examples that crash lilypond to input/no-notation.
-  - Update examples.
-
-1.5.5.hwn1
-==========
-
-* Grace property fixes.
-
-* More grace nesting bugfixes.
-
-1.5.5
-=====
-
-1.5.4.jcn2
-==========
-
-* Spelling fixes, notably staffs->staves, except for ChangeLogs.
-
-* Removed `Default' from accidental comment names.
-
-* Compile fixes.
-
-* Fixed off by one error for point and click.
-
-* Website fixes, found bug in grace note stem lengths.
-
-1.5.4.hwn1
-==========
-
-* Ancient font update [WARNING FONTS CHANGED!] (Juergen Reuter)
-
-* New_spacing_spanner: revised spacing generation.
-
-* Default neutral direction set to down. 
-
-* Junk hash table  from flowerlib
-
-* Bugfix: grace nesting error
-
-* Bugfix: don't try schedule next bar when were on a grace moment.
-
-* Bugfix: set measurePosition especially for music starting with
-grace.
-
-1.5.3.hwn1
-==========
-
-* midi2ly bugfixes: don't print ';' in .ly output.
-
-* small cleanup of input/bugs/
-
-* bugfix: nested grace notes; added input/regression/grace-nest.ly
-
-* Bugfix: add double alterations to keyAccidentalOrder (Mats)
-
-* Fixes for PostScript beams and stems.
-
-1.5.2.hwn1
-==========
-
-* Starting pagenumber (Mark Hindley)
-
-* Ancient font patch (Juergen Reuter) [WARNING: FONT UPDATE!]
-
-* Bugfix: don't  put grace beams on non grace notes, and vice versa.
-
-* etf2ly:
-  - miserable try at importing repeatbars and volta brackets;
-  - import articulation defs (IX tag)
-  - revamped file reading logic. Now much cleaner.
-
-* Experimental regular-spacing support: try to space regular runs of
-notes equidistantly.
-
-1.5.2.jcn2
-==========
-
-* Flex is fixed in Debian/unstable.  Update documentation accordingly.
-
-* Guile 1.3.4 compile fix.
-
-* Add trill line type, see input/test/trill.ly.
-
-* Dvips bugs workarounds:
-  - Draw filledbox in tex for now.  Test ps code using
-
-     lilypond -e '(define ps-testing 1)'
-
-  - Extend stems only half way into beam.
-
-* Change order of includes in tex/lilyponddefs.tex so that feta font
-can be used a little easier, like:
-
-    title="TeX \fetachar\fetasharp"
-
-* Update stepmake/bin config.sub, config.guess.
-
-1.5.2
-=====
-
-1.5.1.hwn1
-==========
-
-* small bugfixes for grace-init.ly
-
-* Bugfix: don't mess up spacing when combining different tuplets.
-
-* Small bugfixes for lilypond-mode.el.
-
-* property-init.ly: bugfix for dot directions in polyphonic music.
-
-1.5.1.jcn3
-==========
-
-* Bugfix: text2html: escape entities inside <pre>.
-
-* Added some template .ly's for evaluation.
-
-* Make blot work without -fps too.
-
-* Use blot diameter for postscript beams and boxes.
-
-* Guile-1.5.0-cvs updates and Guile-1.4.x compatibility.
-
-* Beam knee fix.
-
-* Now really included lexer-gcc-3.0.patch.
-
-* Make Voice context accept Thread again; this fixes MIDI output for music
-that uses Thread contexts.
-
-* Removed debug printing from chord-name.scm.
-
-1.5.0
-=====
-1.5.0.jcn1
-==========
-
-* Added feature to ly2dvi to find feta pfa font files used in a
-postscript file to make printing of direct postscript a bit easier:
-
-    lilypond -fps input/trip.ly
-    cat $(ly2dvi -f trip.ps) trip.ps | lpr
-
-* Reincluded 1.4.3.jcn2.
-
-* Website fixes.
-
-* Ly2dvi now leaves .tex and .latex output if latex fails, and cleans
-the temp dir if anything fails.
-
-* Fixes for windows scripts.
-
-1.5.0.uu1
-=========
-
-* Hara kiri and span-bar.
-
-* Junk old grace stuff.
-
-* Don't crash on grace notes in MIDI output.
-
-
-
-1.5.0
-=====
-
-* experimental grace notes:
-  - add grace timing to Moment
-  - hack to Sequential_music_iterator to use the correct timing for
-the note before a grace
-  - change the implementation of \grace construct
-  - property set/unset (eg. font size) is done through startGraceMusic
-and stopGraceMusic
-  - various engraver fixes to deal with the fact that the
-main-time-moment may remain the same during several steps.
-  - Change column creation logic in score-engraver. 
-
-* Bugfix: don't crash when \name not set in \translator block.
-
-* rename ly/*.ly to ly/*-init.ly (except language files) to avoid
-name clashes
-
-* deprecate Property_engraver, add Font_size_engraver to Staff, Voice
-and Thread.
-
-* Change mailing list address: *gnu-music*@gnu.org becomes
-*lilypond*@gnu.org
-
-* Put span-bar lines only between the other barlines, not on top of
-them (thanks to Juergen Reuter)
-
-1.4.4.jcn3
-==========
-  
-TODO: look at other filledbox'es (stafflines and barlines don't match up).
-
-* Testing code off by default.  On: -e "(define ps-testing 1)" -fps
-
-* Output via TeX/dvips still gives problems.  Use direct postscript
-output for real testing.
-
-* Beam and stem fixes:
- - Stems drawn in PostScript (should do all filledbox'es in PS?).
- - Fixes for draw_box and draw_beam PostScript routines.
- - Stems reach to top (or bottom) of beam.
- - Beam uses correct stem thickness (only right beams, left TODO).
- - testing code in effect: only outlines are drawn.
-
diff --git a/Documentation/misc/ChangeLog-1.5 b/Documentation/misc/ChangeLog-1.5
deleted file mode 100644
index c561b28b6b..0000000000
--- a/Documentation/misc/ChangeLog-1.5
+++ /dev/null
@@ -1,4288 +0,0 @@
-2002-08-19  Han-Wen Nienhuys  <hanwen@cs.uu.nl>
-
-	* VERSION: release 1.6.0 
-
-	* make/lilypond.redhat.spec.in: don't dist input/ separately
-	anymore
-
-	* Documentation/user/latex-example.latex: restore from old version
-
-	* Documentation/topdocs/index.tely: remove @settitle
-
-	* Documentation/topdocs/README.texi: small fixes.
-
-	* lily/self-aligment-interface.cc (centered_on_parent): only
-	return center if extents not empty.
-
-	* scm/music-functions.scm (unfold-repeats): typo,  
-
-	* mf/feta-bolletjes.mf: use resolution independent variables.
-
-2002-08-19  janneke  <janneke@blauw.xs4all.nl>;
-
-	* lily/stem.cc (calc_stem_info): Fix [a8 a32].
-
-	* Documentation/index.texi (Top): Templates url fix, small url
-	name changes.
-
-	* regular-spacing-engraver.cc:
-	* scm/grob-property-description.scm: Remove regular-distance-to.
-
-	* input/test/spacing-regular.ly:
-	* lily/regular-spacing-engraver.cc: Remove.
-
-2002-08-18  janneke  <janneke@blauw.xs4all.nl>
-
-	* mensural-ligature.cc: *** empty log message ***
-
-	* tab-note-heads-engraver.cc: * lily/tab-note-heads-engraver.cc:
-	* scm/translator-property-description.scm: Add tablatureFormat.
-
-	* input/test/staff-bracket.ly: Update.
-
-	* regular-spacing-engraver.cc:
-	* lily/regular-spacing-engraver.cc: Add regular-distance-to.
-
-	* ligature-bracket.cc, ligature-engraver.cc, ligature-head.cc,
-	mensural-ligature-engraver.cc, mensural-ligature.cc:
-
-	* lily/mensural-ligature-engraver.cc:
-	* scm/grob-property-description.scm: Add head-width, join-left,
-	primitive.
-
-2002-08-18  Han-Wen Nienhuys  <hanwen@cs.uu.nl>
-
-	* ambitus.cc, parser.yy:
-	* Documentation/user/introduction.itely: small corrections.
-
-	* lily/parser.yy (property_def): Ugh. Switch off
-	internal-type-checking for autoBeamSettings.
-
-2002-08-18  janneke  <janneke@blauw.xs4all.nl>
-
-	* music.cc (internal_set_mus_property): [!NDEBUG] Remove, use
-	abort instead of assert.
-
-2002-08-19  Jan Nieuwenhuizen  <janneke@gnu.org>
-
-	* scm/grob-property-description.scm: Remove regular-distance-to.
-
-	* input/test/spacing-regular.ly:
-	* lily/regular-spacing-engraver.cc: Remove.
-	
-2002-08-19  Han-Wen Nienhuys  <hanwen@cs.uu.nl>
-
-	* input/mutopia/J.S.Bach/wtk1-fugue2.ly: staff switch fixes.
-
-	* Documentation/user/lilypond-book.itely: small cleanups
-
-	* Documentation/user/*.itely: fix overfull hboxes. 
-
-2002-08-19  Jan Nieuwenhuizen  <janneke@gnu.org>
-
-	* Documentation/user/tutorial.itely (A piano excerpt): 
-	* Documentation/user/introduction.itely (Introduction): Typo fix.
-
-	* input/test/header-ifelse.ly: Bugfix: call numbers->string only
-	on first three elements of ly-version list.
-
-	* input/test/trills.ly: Comment out \comma.
-
-	* lily/tab-note-heads-engraver.cc: 
-	* scm/translator-property-description.scm: Add tablatureFormat.
-
-	* input/test/staff-bracket.ly: Update.
-
-	* lily/regular-spacing-engraver.cc: Add regular-distance-to.
-
-	* input/test/orchestscore.ly:  
-	* input/test/part-combine-moments.ly:
-	* input/test/part-combine-staff.ly: markScriptPadding ->
-	RehearsalMark #'padding.
-
-2002-08-19  Han-Wen Nienhuys  <hanwen@cs.uu.nl>
-
-	* Documentation/user/introduction.itely: small corrections.
-
-	* scm/translator-property-description.scm (tablatureFormat):
-	describe property.
-
-	* lily/parser.yy (property_def): Ugh. Switch off
-	internal-type-checking for autoBeamSettings.
-
-2002-08-19  Jan Nieuwenhuizen  <janneke@gnu.org>
-
-	* lily/mensural-ligature-engraver.cc:
-	* scm/grob-property-description.scm: Add head-width, join-left,
-	primitive.
-	
-	* lily/mensural-ligature.cc: 
-	* lily/ligature-bracket.cc: 
-	* scm/grob-property-description.scm: 
-
-	* lily/ligature-head.cc: Add ligature-primitive-callback.
-
-	* input/test/beam-control.ly: 
-	* input/test/bar-script-visibility.ly: Update.
-
-	* lily/music.cc (internal_set_mus_property): [!NDEBUG] Remove, use
-	abort instead of assert.
-
-2002-08-18  Jan Nieuwenhuizen  <janneke@gnu.org>
-
-	* input/test/ambitus.ly: Comment out ambitus until anal-proof.
-
-	* buildscripts/mf-to-table.py (write_fontlist): change
-	extra-extent-X extra-X-extent.
-
-	* scm/music-property-description.scm (label): Typecheck markup?
-	(was string?).
-
-	* Documentation/user/refman.itely (Tablatures basic): Change
-	TabStaff @lilypond snippets to @example until TabStaff is
-	anal-proof.
-
-2002-08-18  Rune Zedeler <rune@zedeler.dk>
-
-	* mf/feta-klef.mf: (another) white pixels bug in g-clef fixed.
-	
-2002-08-18  Jan Nieuwenhuizen  <janneke@gnu.org>
-
-	* lily/include/lily-guile.hh (LY_DEFINE_NOARGS): Remove.
-
-	* lily/grob-property.cc (internal_set_grob_property): Revert oops.
-
-	* lily/input.cc (message): 
-	* flower/warn.cc (message): Flush output.
-
-	* po/lilypond.pot: Run make po-replace.
-
-	* Documentation/user/GNUmakefile (LILYPOND_BOOK_FLAGS): be anal
-	with type checks.
-
-	* Documentation/GNUmakefile (LILYPOND_BOOK_FLAGS): 
-	* input/regression/GNUmakefile (LILYPOND_BOOK_FLAGS):
-	* input/test/GNUmakefile (LILYPOND_BOOK_FLAGS): 
-	* Documentation/user/invoking.itexi: 
-	* lily/scm-option.cc:
-	* lily/main.cc: Debugging options: ly-set-option (was:
-	set-lily-option).
-
-	* lily/scm-option.cc (ly_option_usage): New function.
-
-2002-08-18  Han-Wen Nienhuys  <hanwen@cs.uu.nl>
-
-	* lily/parser.yy (script_abbreviation): accept -_ script.
-
-	* ly/script-init.ly (dashUnderscore): add NOTE-_ == portato (dash
-	and dot)
-
-	* scripts/lilypond-book.py (re_dict): add spaces after command sequences
-	(LatexPaper.find_latex_dims): run latex in nonstopmode
-
-	* input/font-body.ly: remove.
-
-	* input/test/harmonic.ly: new file.
-
-	* lily/side-position-interface.cc (aligned_side): don't add
-	padding again.
-
-2002-08-18  Werner Lemberg  <wl@gnu.org>
-
-	* ly/engraver-init.ly:
-	s/extraverticalExtent/extraVerticalExtent/.
-	
-2002-08-18  Jan Nieuwenhuizen  <janneke@gnu.org>
-
-	* lily/parser.yy (assignment, Simple_music): Warning message fix.
-	Junk ARRAY_SIZE definition.
-
-	* lily/score-engraver.cc: Uniformise error message.
-
-	* lily/grob-property.cc (internal_set_grob_property,
-	internal_get_grob_property): [!NDEBUG] Remove, use abort instead
-	of assert; we always want this functionality.  Uniformise warning
-	message.
-	
-	* lily/main.cc (main, main_prog): Bugfix: move exit-upon-files
-	back, until after evaluating init_scheme_code.
-
-	* scm/translator-property-description.scm (breakAlignOrder): Doco fix.
-
-	* Documentation/user/lilypond-book.itely: Remove @cindex
-	without argument.
-
-	* Documentation/user/internals.itely: Remove stray comma after
-	@cindex entry.
-
-2002-08-18  Han-Wen Nienhuys  <hanwen@cs.uu.nl>
-
-	* VERSION: 1.5.74 released  
-
-	* lily/break-substitution.cc (fast_fubstitute_grob_list): use
-	realloc()
-
-	* lily/dynamic-engraver.cc (process_music): don't use SCM_UNDEFINED
-
-	* Documentation/user/tutorial.itely: fixes by Graham Percival.
-
-2002-08-17  Han-Wen Nienhuys  <hanwen@cs.uu.nl>
-
-	* lily/lily-guile.cc (type_check_assignment): if
-	internal-type-checking set, abort if we find an unknown property.
-
-	* input/regression/GNUmakefile,input/test/GNUmakefile: be anal
-	with typechecks
-
-	* lily/beam.cc: add 'knee to interface
-
-	* input/test/*.ly: remove or update files using deprecated
-	properties
-
-	* lily/system.cc (spanner_count): new function
-
-	* lily/break-substitution.cc (fast_fubstitute_grob_list): special
-	function for break substitutions on groblists in spanners. By
-	reordering the elements of the list, we can skip large parts of
-	the list in the break substitution. This brings the complexity of
-	Lily back to more-or-less linear in the length of the score.
-
-	Measured speed increase: 20 % (coriolan, without -O2)
-
-	* lily/parse-scm.cc (parse_handler): don't construct a new strport
-	for every parsing. This saves a lot of garbage on large files that
-	have many # constructs.
-
-	* lily/source-file.cc (init_port): add an SCM port to the
-	sourcefile as well. 
-
-	* lily/include/input-file-results.hh: move from
-	file-results. Rename Input_file_settings to Input_file_results.
-
-	* flower/ : remove simple-file-storage, mapped-file-storage,
-	string-storage. Move source-file, binary-source-file to lily/
-
-	* Documentation/header.html.in: remove FAQ
-
-	* Documentation/index.texi (Top): reorganise
-
-	* Documentation/topdocs/INSTALL.texi (Top): add note about fonts.
-
-	* Documentation/topdocs/FAQ.texi: remove.
-
-	* stepmake/stepmake/documentation-targets.make (footify): must
-	depend on all .html files, otherwise rebuilds are broken due to
-	the time stamps 
-
-	* ly/declarations-init.ly (noBreak): set penalty to 10001 (>
-	10000).
-
-2002-08-16  Han-Wen Nienhuys  <hanwen@cs.uu.nl>
-
-	* ly/engraver-init.ly (ChordNamesContext): minimumverticalExtent
-	-> minimumVerticalExtent
-
-2002-08-16  Stephen Peters <portnoy@portnoy.org>
-
-	* scm/pdf.scm, pdftex.scm: pdftex updates
-
-	* scripts/ly2dvi.py: pdflatex support
-	
-2002-08-16  Jan Nieuwenhuizen  <janneke@gnu.org>
-
-	* Documentation/windows/installing.texi: Include info from Wiki. 
-
-2002-08-16  Mats Bengtsson  <mats.bengtsson@s3.kth.se>
-
-	* scripts/lilypond-book.py (output_dict): Replace
-	\includegraphics{xxx.eps} -> \includegraphics{xxx} to 
-	simplify for pdflatex users (makes no difference to latex users).
-
-2002-08-16  Jan Nieuwenhuizen  <janneke@gnu.org>
-
-	* Documentation/index.texi: 
-	* Documentation/windows/compiling.texi: 
-	* Documentation/windows/installing.texi: Update to reflect
-	LilyPond's inclusion into Cygwin.
-
-2002-08-15  Jan Nieuwenhuizen  <janneke@gnu.org>
-
-	* input/test/phrasing-slur-height.ly: New file.
-
-	* scm/grob-property-description.scm (height-limit, ratio): Add.
-
-	* lily/slur.cc: 
-	* scm/grob-description.scm (Slur, PhrasingSlur): Move height-limit
-	and ratio out of details.
-
-	* lily/scores.cc (Input_file_settings): Initalize global_header_.
-
-	* lily/include/file-results.hh (class Input_file_settings): Add
-	private constructor.
-
-	* cygwin/GNUmakefile: [CYGWIN] Install bug-lilypond-cygwin.  Typo
-	fix.  Add kpsewhich commands (Thanks Mats).
-
-	* cygwin/bug-lilypond-cygwin.sh: New file.
-
-	* stepmake/stepmake/help2man-rules.make: Better way of showing
-	help2man command.
-
-	* Documentation/topdocs/FAQ.texi: Add more possible stale font
-	paths.
-
-	* stepmake/bin/package-diff.py: Prepend ./ to cut-and-pastable
-	commands.
-
-	* Documentation/topdocs/INSTALL.texi: Mention the need to and how
-	to create configure for CVS source trees.  Mention libkpathsea-dev
-	as alternative possible name for tetex-devel (or should that be
-	the other way around?).
-
-2002-08-15  Han-Wen Nienhuys  <hanwen@cs.uu.nl>
-
-	* lily/include/file-results.hh (class Input_file_settings):
-	encapsulate file settings in a class, Input_file_settings.
-
-	* lily/scores.cc: new function ly_set_point_and_click_x
-	
-	* Documentation/topdocs/README.texi (Top): add note about xdelta
-
-	* Documentation/topdocs/INSTALL.texi (Top): move kpathsea to problems
-	section.
-	
-2002-08-14  Jan Nieuwenhuizen  <janneke@gnu.org>
-
-	* scripts/ly2dvi.py: Remove debug printing.
-
-2002-08-14  Han-Wen Nienhuys  <hanwen@cs.uu.nl>
-
-	* scripts/convert-ly.py (FatalConversionError.conv): bug in
-	verticalExtent replacement.
-
-	* VERSION: 1.73 released.
-
-2002-08-14 <jiba@tuxfamily.org>
-
-	* scm/output-lib.scm: Support of hammers and pulls in tablature
-	-- Hammers and pulls are inserted exactly like slurs, and a "H" or
-	a "P" is added over the slur as needed.  
-
-	* ./input/test/tablature-hammer.ly: example of hammer, pull and
-	legato in a tablature.
-
-	* ly/engraver-init.ly: Stem.up-to-staff is now disabled by
-	default, since it appears that most of the published tablatures
-	are not like that.
-
-2002-08-13  Han-Wen Nienhuys  <hanwen@cs.uu.nl>
-
-	* lily/beam.cc (brew_molecule): use
-	Staff_symbol_referencer::staff_space for thickness.
-
-2002-08-14  Jan Nieuwenhuizen  <janneke@gnu.org>
-
-	* Documentation/user/lilypond.tely: Add dir entries for
-	executables.
-
-	* Documentation/user/converters.itely: 
-	* Documentation/user/invoking.itexi: Fix `invocation' node names,
-	in line with standard dir entries.
-
-	* Documentation/user/convert-ly.itexi
-	* Documentation/user/ly2dvi.itexi: Remove.
-	
-	* scripts/ly2dvi.py: Add pseudo-filter (and stdout output)
-	support.
-
-	* lily/main.c: 
-	* lily/paper-score.cc : 
-	* lily/gourlay-breaking.cc: Write info to stderr.
-
-	* buildscripts/help2man.pl: Update to latest version from Debian.
-	Fixes generation of man pages with perl 5.6.1.
-
-	* GNUmakefile.in: Add python link to build-datadir.  Fixes
-	generation of midi2ly man page.
-
-2002-08-14  Mats Bengtsson  <mats.bengtsson@s3.kth.se>
-
-	* Documentation/user/{tutorial.itely, introduction.itely}: 
-	Small fixes.
-
-2002-08-13  Jan Nieuwenhuizen  <janneke@gnu.org>
-
-	* lily/beam.cc (least_squares): Add comment.
-
-	* input/regression/beam-center-slope.ly: Update.
-
-	* lily/beam-quanting.cc (score_stem_lengths): Revert oops.
-
-	* input/template/melody-chords.ly: New file.
-
-	* lily/stem.cc (calc_stem_info): Move, document, clean up and fix
-	up-to-stem feature.
-
-	* ly/grace-init.ly (startGraceMusic):
-	* scm/grob-description.scm (beamed-lengths): Subtract half a beam
-	thickness, to fix most ugly beams.  See input/test/stem.ly and
-	baerenreiter-sarabande.ly.
-
-	* input/test/stem.ly:
-	* input/mutopia/J.S.Bach/baerenreiter-sarabande.ly: Play with
-	beamed-lengths.
-
-	* input/test/spacing.ly: Give enough room to test spacing.
-
-	* cygwin/post-lilypond.sh: Fix and update.
-
-	* cygwin/zlily-profile.sh: Remove.
-
-2002-08-12  Jan Nieuwenhuizen  <janneke@gnu.org>
-
-	* GNUmakefile.in (EXTRA_DIST_FILES): Add server.el.patch.
-
-	* scm/grob-property-description.scm
-	(beamed-extreme-minimum-free-lengths): New property, now correctly
-	named.
-
-	* ly/grace-init.ly: New beam property updates.
-
-	* input/les-nereides.ly: Updates.
-
-	* cygwin/README.in: New file.
-
-	* input/sondag-morgen/GNUmakefile: 
-	* input/mutopia/R.Schumann/GNUmakefile: New file.
-
-	* scm/grob-property-description.scm (beamed-minimum-free-lengths):
-	(beamed-extreme-free-lengths): New property.
-
-	* lily/beam.cc (forced_stem_count): Count boundary cases too.
-	(set_stem_shorten): Integer divide bug fix.
-
-	* input/mutopia/J.S.Bach/baerenreiter-sarabande.ly: Really expect
-	six systems, change warning into error.
-
-	* scm/grob-description.scm (beamed-stem-shorten): Shorten 8th
-	beams same as normal stem (one staffspace), high order beams less
-	(arbitrary guess).
-	(beamed-lengths): Standard length for all beams.
-	(beamed-minimum-free-lengths):
-	(beamed-extreme-minimum-free-lengths): New property.
-
-	* input/regression/beam-default-lengths.ly: 
-	* input/regression/beam-shortened-lengths.ly: New file.
-
-	* lily/stem.cc (get_stem_info): New function.
-	(calc_stem_info): Partial rewrite.
-
-	* scm/grob-description.scm (Beam): same beamed-stem-shorten for
-	all beam counts.
-
-2002-08-12  Han-Wen Nienhuys  <hanwen@cs.uu.nl>
-
-	* VERSION: 1.5.72 released
-
-	* input/sondag-morgen/GNUmakefile (examples): add file
-
-	* input/mutopia/R.Schumann/GNUmakefile (examples): add file
-	
-	* lily/lily-guile.cc (to_dir): return CENTER if not a direction.
-
-	* lily/include/grob.hh: remove remove_grob_property()
-
-	* lily/stem-engraver.cc (stop_translation_timestep): remove
-	dir-forced grob property
-
-	* Documentation/user/refman.itely (Grace notes): explain grace
-	after main note.
-
-	* input/test/ : small convert-ly mishaps.
-
-	* Documentation/user/preface.itely: small bits 
-
-	* Documentation/user/introduction.itely: add sectioning
-
-2002-08-11  Jan Nieuwenhuizen  <janneke@gnu.org>
-
-	* lily/stem.cc (get_default_stem_end_position): use beam_count - 1
-	as index; this fixes too short forced stem directions.
-	(calc_stem_info): various minute bugfixes.  
-
-	* lily/gourlay-breaking.cc (combine_demerits): set uniform
-	tightness constraint back to one. This fixes Baerenreiter
-	sarabande layout.
-
-	* input: some fixes. Add \version to all files.
-	
-	* lily/stem.cc (calc_stem_info): Use get_direction_beam_count.
-
-	* lily/beam.cc (get_direction_beam_count): New function.
-
-	* GNUmakefile.in: Fix config.h dependency.
-
-	* input/test/beam-dir-function.ly: Fix for new default
-	neutral-direction = -1 (down).
-
-	* input/regression/tuplet-properties.ly:
-	* input/regression/tuplet-nest.ly: Fix.
-
-	* lilypond-font-lock.el (LilyPond-font-lock-keywords):
-	* input/test/improv.ly:
-	* input/test/cautionaries.ly: Accidentals -> Accidental.
-
-	* input/test/add-text-script.ly: Bugfix.  How did this ever work?
-
-	* Documentation/windows/installing.texi: 
-	* Documentation/windows/compiling.texi:
-	* cygwin/README: Update to reflect new binary release setup and
-	build instructions.
-
-2002-08-10  Jan Nieuwenhuizen  <janneke@gnu.org>
-
-	* server.el.patch: Update.
-
-2002-08-10  Han-Wen Nienhuys  <hanwen@cs.uu.nl>
-
-	* stepmake/stepmake/metafont-rules.make: pktrace -> mftrace name
-	change.
-	* configure.in: idem
-
-2002-08-10  Juergen Reuter  <reuter@ipd.uka.de>
-
-	* mf/parmesan-timesig.mf, scm/output-lib.scm,
-	lily/include/time-signature.hh, lily/time-signature.cc,
-	input/test/time.ly: fixed broken time-signature by setting grob
-	property font-family automatically.
-
-2002-08-10  Jan Nieuwenhuizen  <janneke@gnu.org>
-
-	* Documentation/user/tutorial.itely (Running LilyPond): Mention
-	xdvi and XFree86 option for Windows users.
-
-	* Documentation/user/invoking.itexi: Add ly2dvi's -p alias.
-
-	* scripts/ly2dvi.py: Bugfix for `ly2dvi -I ./foo foo.ly'.  Also
-	append directory of first file to search path, allowing
-	`ly2dvi	foo/foo.ly' when foo.ly includes other files from
-	directory foo.  Add short option alias '-p' for --pdf.
-
-	* input/test/trills.ly: 
-	* input/test/preset-extent.ly: 
-	* scm/grob-property-description.scm: more extent renaming.
-
-2002-08-09  Han-Wen Nienhuys  <hanwen@cs.uu.nl>
-
-	* lily/parse-scm.cc (protected_ly_parse_scm): compatibility with
-	CVS GUILE 
-
-	* input/test/preset-extent.ly (texidoc): added file.
-
-	* scripts/convert-ly.py: add extent rule.
-
-	* lily/grob.cc: change extent-[XY] to [XY]-extent globally.
-
-2002-08-09  Jan Nieuwenhuizen  <janneke@gnu.org>
-
-	* lily/main.cc (main): Remove stale #ifdef for windows.
-
-	* stepmake/stepmake/python-module-rules.make: 
-	* stepmake/stepmake/python-module-vars.make: 
-	* stepmake/stepmake/shared-library-vars.make: Add Cygwin support.
-
-	* stepmake/stepmake/generic-vars.make:
-	* cygwin/GNUmakefile: Fix Cygwin build detection.
-	
-	* stepmake/stepmake/shared-library-rules.make: Remove version juggling.
-
-	* stepmake/stepmake/shared-library-targets.make: Default target
-	includes version, add target libFOO.
-
-	* lily/main.cc: Temporary fix for access to scm_read_opts array
-	from shared Cygwin library.
-
-2002-08-08  Rune Zedeler <rune@zedeler.dk>
-	
-	* ly/property-init.ly: Added phrasingSlurUp, phrasingSlurDown and
-	phrasingSlurBoth.
-
-	* input/mutopia/R.Schumann/romanze-op28-2.ly: Added.
-
-	* input/sondag-morgen/*: renamed files from input/SondagMorgen/*
-	
-2002-08-08  Han-Wen Nienhuys  <hanwen@cs.uu.nl>
-
-	* lily/beam.cc (struct Int_set): typo.
-
-	* mf/feta-beugel.mf (code): braces should start at 0, not 1.
-
-	* lily/include/lily-guile.hh (scm_int2num): guile 1.4 compatibility. 
-
-	* scm/grob-description.scm (all-grob-descriptions): set
-	X-offset-callbacks for TextScript
-
-	* lily/stem.cc (invisible_b): don't use support_head(), since it
-	sets stem direction.
-
-	* lily/beam.cc (struct Int_set): don't get stuck inserting
-	interval segments of length 0.0.
-
-	* scripts/convert-ly.py:  break-align conversion.
-
-2002-08-06  Han-Wen Nienhuys  <hanwen@cs.uu.nl>
-
-	* lily/*.cc (process_music): gh_int2scm -> scm_int2num
-
-2002-08-06  Heikki Junes <hjunes@cc.hut.fi>
-
-	* lilypond-mode.el: Also "C-xC-s" sets default command to LilyPond.
-
-2002-08-05  Rune Zedeler <rune@zedeler.dk>
-
-	* mf/feta-eindelijk.mf: Fix silly typo in 16th and shorter rests.
-
-2002-08-05  Han-Wen Nienhuys  <hanwen@cs.uu.nl>
-
-	* stepmake/bin/make-version.py: robustify.
-
-	* input/test/rhythm-excercise.ly: new file
-
-	* input/test/blank-notes.ly: new file
-
-	* lily/note-head.cc (head_extent): robustness fix.
-	
-	* Documentation/user/preface.itely: add some more.
-
-2002-08-04  Rune Zedeler <rune@zedeler.dk>
-
-	* Documentation/user/refman.itely
-	* Documentation/user/internals.itely: Documented "Current" property.
-	
-2002-08-04  Han-Wen  <hanwen@cs.uu.nl>
-
-	* lily/lily-guile.cc: change gh_str02scm to scm_makfrom0str.
-
-2002-08-04  Werner Lemberg  <wl@gnu.org>
-
-	* tex/lilyponddefs.tex: s/filllastpage/lastpagefill/.
-	
-	* Documentation/user/refman.itely: Document it.
-
-2002-08-04  Han-Wen  <hanwen@cs.uu.nl>
-
-	* lily/main.cc (sane_putenv): Oops.  Should supply a private copy
-	to putenv. (this was actually caught by valgrind, but I didn't
-	think the error was mine... )
-
-2002-08-03  Han-Wen  <hanwen@cs.uu.nl>
-
-	* tex/lilyponddefs.tex: add filllastpage support.
-
-	* GNUmakefile.in: barf if config.h is older than configure. 
-
-	* VERSION: released 1.5.71 
-	
-	* lily/beam.cc (consider_auto_knees): rewrite function; now only
-	consider horizontal knees. Fixes input/bugs/bizzarre-beam.ly
-
-	* lily/syllable-group.cc (set_lyric_align): fix centering on note
-	head for `normal' lyrics. This fixes input/bugs/lyrics-spacing.ly.
-
-2002-08-02  Han-Wen  <hanwen@cs.uu.nl>
-
-	* lily/beam.cc (connect_beams): fix quarter note beams.
-
-	* input/regression/beam-quarter.ly: new file.
-
-2002-08-02  Mats Bengtsson  <mats.bengtsson@s3.kth.se>
-
-	* buildscripts/mf-to-table.py (postfixes): Reduce the line spacing
-	in the font list.
-
-2002-08-02  Han-Wen Nienhuys  <hanwen@cs.uu.nl>
-
-	* lily/scm-option.cc: excorcise iostream.
-
-	* lily/main.cc: remove iostream usage.
-
-2002-08-02  Han-Wen  <hanwen@cs.uu.nl>
-
-	* scripts/lilypond-book.py: make URL for printfilename option.
-
-	* lily/beam.cc (position_with_maximal_common_beams): fix kneed
-	beamlets. This fixes input/bugs/knee
-
-	* ly/engraver-init.ly (HaraKiriStaffContext): switch off auto knee
-	for hara kiri staffs.
-
-	* lily/slur-engraver.cc (try_music): remove nested slur
-	functionality. This fixes spurious warnings with the partcombiner.
-
-2002-08-01  Han-Wen Nienhuys  <hanwen@cs.uu.nl>
-
-	* lily/parse-scm.cc (protected_ly_parse_scm): guile 1.4 compatibility.
-
-2002-08-01 Rune Zedeler <rune@zedeler.dk>
-
-	* lily/tab-note-heads-engraver.cc: add algorithm for automatically
-	selecting frets when none given by user. Read property
-	"minimumFret".
-
-	* scm/translator-property-description.scm: Add "minimumFret"
-	
-	* mf/feta-eindelijk.mf: Changed layout of 16th and shorter rests
-	to match the 8th rest. slanted 8th rest a bit more.
-	WARNING: 8th rest and classical quarter rest exchanged.
-	
-2002-08-01  Mats Bengtsson  <mats.bengtsson@s3.kth.se>
-
-	* scm/grob-description.scm (RehearsalMark): Add baseline-skip to
-	handle multiline marks correctly.
-
-2002-07-31  Mats Bengtsson  <mats.bengtsson@s3.kth.se>
-
-	* scripts/ly2dvi.py (ly_paper_to_latexpaper): Fix dvips flags
-
-2002-07-31 Rune Zedeler <rune@zedeler.dk>
-
-	* input/SondagMorgen/*.ly: Added. TODO: Lots of cleanups but now
-	it's there.
-
-2002-07-31  Han-Wen Nienhuys  <hanwen@cs.uu.nl>
-
-	* lily/parser.yy (chord_notes): typo. 
-
-	* scm/music-functions.scm (unfold-repeats): bugfix
-
-2002-07-31  Rune Zedeler <rune@zedeler.dk>
-
-	* ly/engraver-init.ly: remove alias "Current" from all contexts.
-
-	* lily/translator-group (find_existing_translator): If
-	n=="Current", return this context.
-	
-	* lily/rest.cc:
-	* lily/time-signature.cc: spacing for even number of staff lines.
-	
-2002-07-31  Han-Wen  <hanwen@cs.uu.nl>
-
-	* input/bugs/: remove various files.
-
-	* Documentation/user/refman.itely: doco updates.
-
-	* scripts/ly2dvi.py (find_pfa_fonts): add and document --pdf
-	option.
-
-2002-07-30  Rune Zedeler <rune@zedeler.dk>
-
-	* ly/engraver-init.ly: add alias "Current" to all contexts.
-
-	* ly/property-init.ly: Use "Current" context in the accidental
-	macros. TODO: Do the same in some of the other macros?
-	
-	* scm/output-lib.scm (tablature-stem-attachment-function): add
-	duration argument. Now the function can be called again :-)
-
-2002-07-30  Han-Wen  <hanwen@cs.uu.nl>
-
-	* lily/parse-scm.cc (parse_handler): add better error message,
-	return a sensible number of nchars
-
-2002-07-29  Han-Wen Nienhuys  <hanwen@cs.uu.nl>
-
-	* lily/parse-scm.cc (protected_ly_parse_scm): catch GUILE errors
-	when parsing, and emit useful warning message.
-
-	* lily/lily-guile.cc (ly_parse_scm): add line/col/file locations
-	to SCM port for parser.
-
-2002-07-28  Rune Zedeler <rune@zedeler.dk>
-	
-	* lily/note-spacing.cc (stem_dir_correction) Add property
-	knee_spacing_correction controlling the amount of optical spacing
-	added to knees.
-	
-2002-07-28  Glen Prideaux  <gprideau@odyssey.apana.org.au>
-       
-       * lily/syllable-group.cc (set_lyric_align): Only fiddle with
-       alignment if a note has more than a single lyric so single stanza
-       songs are aligned correctly.
-
-2002-07-28  Han-Wen  <hanwen@cs.uu.nl>
-
-	* input/test/broken-spanner-adjustment.ly: new file.
-
-2002-07-27  Mats Bengtsson  <mats.bengtsson@s3.kth.se>
-
-	* scripts/lilypond-book.py: Handle printfilename also together
-	with {small,}verbatim
-
-2002-07-27  Juergen Reuter  <reuter@ipd.uka.de>
-
-	* scm/output-lib.scm, lily/note-head.cc: fixed broken baroque
-	note-head style by setting grob property font-family
-	automatically.
-
-2002-07-26  Jan Nieuwenhuizen  <janneke@gnu.org>
-
-	* VERSION: 1.5.70 released.
-	
-	* Documentation/user/lilypond-book.itely (Insert music snippets
-	into your texts using lilypond-book): Briefly mention HTML
-	documents.  Started rewrite, but lost inspiration.
-
-	* lily/grob-scheme.cc (get_original, get_system, get_broken_into):
-	Move scheme funcs from grob.cc and spanner.cc.
-
-	* lily, flower: Ran buildscripts/ontgaar.py.  See also
-	http://lilypond.org/wiki/?CodingStandards.
-	
-	* Documentation/GNUmakefile: Remove regression-test stuff.
-	(deep-WWW-clean): Remove wiki-dump.  Fixes web-clean target.
-
-	* Documentation/regression-test.tely: Remove.
-
-	* Documentation/user/refman.itely (Text scripts): Comment out ref
-	to PostScript output.
-
-	* lily/beam.cc (knee_b): Fix to also work if some dirs are not
-	set.
-
-	* lily/beam.cc (set_stem_directions): For knees, set stems to
-	their natural direction.
-
-2002-07-25  Jan Nieuwenhuizen  <janneke@gnu.org>
-
-	* lily/stem.cc (calc_stem_info): Don't force stems of kneed beams
-	to reach middle staff line.
-
-	* lily/beam.cc (consider_auto_knees): Recalculate beam position
-	after deciding for a knee.
-
-2002-07-26  Han-Wen  <hanwen@cs.uu.nl>
-
-	* Documentation/user/internals.itely: move output-formats doco to
-	WikiWiki.
-	
-2002-07-25  Han-Wen  <hanwen@cs.uu.nl>
-	
-	* po/fr.po: update from TP
-
-	* input/template/GNUmakefile (TITLE): add lysdoc target for the
-	templates
-
-	* Documentation/user/introduction.itely (Introduction): finish
-	introduction 
-
-2002-07-25  Han-Wen Nienhuys  <hanwen@cs.uu.nl>
-
-	* lily/include/music-iterator.hh (class Music_iterator): change
-	get_music() to get_pending_events().
-
-2002-07-25  Jan Nieuwenhuizen  <janneke@gnu.org>
-
-	* buildscripts/ontgaar.py: get_music () -> get_pending_events ().
-	
-	* buildscripts/ontgaar.py: New file.
-
-	* scm/grob-property-description.scm (conditional-elements): Add
-	extent-X.
-
-	* lily/grob.cc: Add extent-X and extent-Y to interface.
-
-	* lily/grob-scheme.cc (ly_get_parent): Don't dereference null
-	parent. (Han-Wen)
-
-	* input/test/move-accidentals.ly: New file. (Han-Wen)
-
-2002-07-25  Han-Wen  <hanwen@cs.uu.nl>
-
-	* lily/grob-scheme.cc (ly_get_parent): don't crash if no parent.
-
-	* lily/slur.cc (get_first_notecolumn_y): robustness: don't crash
-	if no note-columns.
-
-	* server.el.patch: new file.
-
-	* Documentation/user/refman.itely (Point and click):  updates.
-	(Graphical interfaces): add node
-	(Vertical spacing): add node
-
-2002-07-24  Jan Nieuwenhuizen  <janneke@gnu.org>
-
-	* lily, lily/include: Rename line to system.  Junk _l suffix.
-
-2002-07-24  Han-Wen Nienhuys  <hanwen@cs.uu.nl>
-
-	* po/fr.po: update from TP.
-
-	* buildscripts/lilypond-profile.sh: update support for
-	LILYPONDPREFIX
-
-2002-07-24  Jan Nieuwenhuizen  <janneke@gnu.org>
-
-	* Documentation/user/refman.itely (Point and click): Add info
-	about GVim, NEdit.
-
-2002-07-24  Han-Wen Nienhuys  <hanwen@cs.uu.nl>
-
-	* lily/accidental-placement.cc (extent_callback): remove function
-	(position_accidentals): do nothing if not live.
-	Use accidental-grobs property i.s.o. accidentals, to maintain
-	proper typing. 
-
-2002-07-24  Jan Nieuwenhuizen  <janneke@gnu.org>
-
-	* input/mutopia/J.S.Bach/baerenreiter-sarabande.ly: *
-	input/test/count-systems.ly: Update to new system-count function
-	names.
-
-	* lily/grob.cc (get_line, get_original): Use LY_DEFINE.
-
-	* lily/spanner.cc (get_broken_into): Use LY_DEFINE.
-
-	* lily/include/spanner.hh:
-	* lily/include/grob.hh: Remove DECLARE_SCHEME_CALLBACKs.
-
-	* input/mutopia/J.S.Bach/baerenreiter-sarabande.ly: Add
-	forcedBreak options and fix measure count comments.
-
-	* GNUmakefile.in: Junk intl.
-
-	* config.make.in (prefix): Prepend $(DESTDIR) to allow install
-	without overriding prefix.
-
-	* aclocal.m4: Regenerate.
-	
-	* stepmake/aclocal.m4: Don't expand $prefix: fixes install with
-	other $prefix.
-
-	* cygwin/GNUmakefile: 
-	* ly/GNUmakefile: 
-	* python/GNUmakefile: 
-	* make/GNUmakefile: 
-	* mf/GNUmakefile: 
-	* scm/GNUmakefile:
-	* tex/GNUmakefile: use local_package_datadir iso datadir.
-
-	* make/substitute.make (ATVARIABLES): Add local_lilypond_datadir.
-
-	* aclocal.m4: Regenerate.
-	
-	* config.hh.in:
-	* config.make.in:
-	* stepmake/aclocal.m4: Cleanups and more conventional naming for
-	datadir ($prefix/share), package_datadir ($prefix/$package), and
-	local_package_datadir ($prefix/$package/$version).
-	
-	* make/lilypond-vars.make:
-	* scripts/ly2dvi.py:
-	* scripts/lilypond-book.py:
-	* scripts/mup2ly.py:
-	* scripts/midi2ly.py: use local_package_datadir iso datadir.
-	
-	* GNUmakefile.in: build_datadir without version.
-	
-	* lily/main.cc: Datadir cleanup.
-
-	* lily/text-item.cc (lookup_text): 
-	* lily/music-output-def.cc (print_smob): 
-	* lily/mensural-ligature.cc (brew_molecule):
-	* lily/beam-quanting.cc (score_slopes_dy, score_forbidden_quants):
-	Fix warnings.
-	
-2002-07-23  Jan Nieuwenhuizen  <janneke@gnu.org>
-
-	* input/mutopia/J.S.Bach/baerenreiter-sarabande.ly: Warn when not
-	using 6 systems, like the original.
-
-	* input/test/count-systems.ly: New file.
-
-	* lily/spanner.cc (get_broken_into):
-	* lily/grob.cc (original_scm, line_scm): New function.
-
-	* lily/include/grob.hh (ly_scm2grob_array): Moved from
-	group-interface.hh and renamed.
-	(ly_grob_array2scm): New function.
-
-2002-07-23  Juergen Reuter  <reuter@ipd.uka.de>
-
-	* lily/ambitus-engraver.cc: bugfix: create ambitus grob during
-	process_music phase
-
-2002-07-23  Han-Wen  <hanwen@cs.uu.nl>
-
-	* lily/separation-item.cc (width): cache extent in extent-X
-
-	* lily/spacing-spanner.cc (standard_breakable_column_spacing):
-	only add extent for non-musical column.
-
-	* lily/accidental-placement.cc (split_accidentals): new function
-	(get_relevant_accidental_extent): new function
-
-	* lily/staff-spacing.cc (next_note_correction): idem
-
-	* lily/separating-group-spanner.cc (find_rods): use
-	conditional_width().
-	
-	* scm/sketch.scm: fix roundfilledbox definition
-
-	* lily/lily-guile.cc (robust_list_ref): be sensible with negative
-	argument. This fixes too-long stems on half and quarter notes.
-
-2002-07-23  Jan Nieuwenhuizen  <janneke@gnu.org>
-
-	* Documentation/index.texi: Add, fix, change some links and names,
-	including dump of wiki wiki.
-
-	* Documentation/GNUmakefile (local-WWW): Slurp wiki.
-
-	* buildscripts/wiki-slurp.py: New file.  Accept multiple pattern.
-	(unwiki): Replace local urls with <img src> too.
-
-	* Documentation/GNUmakefile (wiki-dump): New target.
-
-	* Documentation/header.html.in: Link to Documentation/index
-	renamed to Index (was other...).
-
-	* Documentation/regression-test.tely: Remove.
-
-	* make/lysdoc-targets.make (local-WWW): Add default targets .ps.gz
-	and .pdf.
-
-2002-07-22  Han-Wen  <hanwen@cs.uu.nl>
-
-	* VERSION: 1.5.69 released
-	
-	* lily/accidental-placement.cc (position_accidentals): document
-	two bugcases.
-
-	* lily/skyline.cc (skyline_meshing_distance): bugfixes.
-
-2002-07-22  Jan Nieuwenhuizen  <janneke@gnu.org>
-
-	* input/regression/abe.ly: 
-	* input/test/transposing.ly: Remove mention of mudela.
-
-	* scripts/lilypond-book.py (make_pixmap): Don't use quiet_system,
-	ie, don't redirect PNG output to /dev/null.  Fixes lys-to-tely
-	documents.
-
-	* input/test/mark.ly: 
-	* Documentation/user/refman.itely: Re-enable \mark #'() example.
-
-	* lily/parser.yy: Revert to MARK scalar.
-
-2002-07-21  Han-Wen  <hanwen@cs.uu.nl>
-
-	* lily/accidental.cc (accurate_boxes): add function to represent
-	flat with 2 boxes. Improves flat-flat accidental spacing. 
-
-	* lily/accidental-placement.cc (stagger_apes): try to arrange accs
-	in a C form, with the top accidental closet to the chord.
-
-	* lily/stem.cc (get_default_stem_end_position): don't crash if
-	lengths not set.
-	(get_default_stem_end_position): idem for stem-shorten.
-
-	* mf/feta-toevallig.mf: enlarge flat bbox.
-
-	* input/regression/lyrics-extender.ly: new file.
-
-	* lily/lyric-extender.cc (brew_molecule): don't add
-	right-trim-amount if extender is broken.
-
-	* scripts/ly2dvi.py (global_latex_preamble): bugfix (thanks Werner).
-
-2002-07-21  Jan Nieuwenhuizen  <janneke@gnu.org>
-
-	* Documentation/index.texi: Add pointers to new regression and
-	test documents.
-
-	* Documentation/user/converters.itely:
-	Documentation/user/invoking.itexi: Some small fixes for uniform
-	usage example.
-
-	* input/allfontsize.ly, size*.ly: New files, moved from
-	input/regression.
-	
-	* input/font20.ly, font-body.ly: New files, moved from input/test.
-	
-	* input/font*.ly: New files, moved from input/test.
-
-	* input/test/*.ly: Remove empty files, fix broken ones.
-
-	* input/test/different-time-signatures.ly: Add FIXME marker;
-	comment-out broken code.
-
-	* Documentation/regression-test.tely: Comment-out, add
-	obsolete-marker and url to regression-test-dir.
-
-	* input/test/GNUmakefile: 
-	* input/regression/GNUmakefile: Add rule for lys-to-tely.py.
-
-	* input/regression/+.ly:
-	* input/test/+.ly: New file.
-
-	* input/test/cue-notes.ly: better example
-
-	* Documentation/user/refman.itely (Font selection): font size doco
-
-	* input/mutopia/F.Schubert/standchen.ly: note bugfix
-
-	* lily/stem.cc: rewrite of scoring to give sane results on knee
-	beams.
-
-	* lily/beam.cc (set_stem_lengths): extend stems for gapped tremolo
-	beams.
-	(connect_beams): chop off beaming outside the beam. Fixes problem
-	with tremolo beams.
-
-	* lily/score-engraver.cc (initialize): error if feta20.afm
-
-2002-07-19  Han-Wen  <hanwen@cs.uu.nl>
-
-	* scm/engraver-documentation-lib.scm
-	(document-property-operation): add properties to context
-	documentation.
-
-	* scm/documentation-lib.scm (pad-string-to): align info menus.
-
-2002-07-18  Jan Nieuwenhuizen  <janneke@gnu.org>
-
-	* debian/GNUmakefile: Remove lilypond.links.
-	
-	* debian/: Debian patch (Anthony Fok).
-	
-	* debian/lilypond.links: Remove, as per Anthony's request.
-
-	* aclocal.m4: Regenerate.
-	
-	* stepmake/aclocal.m4: Add --with-kpathsea-include,
-	--with-kpathsea-lib options.
-
-	* scripts/mup2ly.py: Cut-n-paste include missing lilylib.
-
-	* stepmake/stepmake/compile-vars.make: 
-	* stepmake/stepmake/executable-rules.make: 
-	* stepmake/stepmake/python-module-rules.make:
-	* stepmake/stepmake/shared-library-rules.make: Use ALL_LDFLAGS, to
-	guard agains user override of LDFLAGS.
-
-	* Documentation/user/refman.itely: Compile fix for \mark #'(music ...).
-
-	* Documentation/user/internals.itely: Use ly-set-mus-property!.
-
-	* cygwin/mknetrel: New file.
-
-	* cygwin: New directory.  Moved Cygwin stuff from
-	Documentation/windows.
-	
-	* Documentation/windows/fix-suffixes.sh:
-	* buildscripts/walk.sh: Junk.
-
-	* aclocal.m4: Regenerate.
-
-	* buildscripts/walk.sh: Remove.
-
-	* stepmake/stepmake/topdocs-targets.make: 
-	* stepmake/stepmake/help2man-rules.make: 
-	* stepmake/stepmake/generic-vars.make: 
-	* stepmake/make/stepmake.make: 
-	* Documentation/user/GNUmakefile: 
-	* make/stepmake.make: 
-	* make/lilypond-vars.make: 
-	* GNUmakefile.in: 
-	* stepmake/aclocal.m4: Remove builddir cruftyness.
-	
-	* stepmake/stepmake/c++-rules.make: Use ALL_CXXFLAGS, to guard
-	agains user override of CXXFLAGS.
-	
-	* stepmake/stepmake/c++-vars.make (ALL_CXXFLAGS): Include CXXFLAGS.
-	
-	* stepmake/stepmake/c-rules.make: Use ALL_CFLAGS, to guard
-	against user override of CFLAGS.
-	
-	* stepmake/stepmake/c-vars.make (ALL_CFLAGS): Include CFLAGS.
-
-2002-07-17  Han-Wen  <hanwen@cs.uu.nl>
-
-	* GNUmakefile.in: distribute lexer-gcc-3.1.sh  as well
-	
-	* lily/music.cc (LY_DEFINE): change ly-set-mus-property to
-	ly-set-mus-property!
-
-	* lily/grob.cc (LY_DEFINE): change ly-set-grob-property to ly-set-grob-property!
-
-	* lily/parser.yy (Repeated_music): shift duration log for tremolo
-	repeats, instead of klutzing around.
-
-	* lily/chord-tremolo-engraver.cc (acknowledge_grob): set X parent
-	of stem tremolo grobs.
-
-	* scm/music-functions.scm (shift-duration-log): new function, add
-	to duration log of all notes.
-
-	* lily/duration.cc: add compression factor arguments to
-	make-duration.
-	compression-factor, dot-count, duration-log: add scheme functions.
-
-	* lily/mark-engraver.cc (process_music): allow \mark to take a
-	number as argument as well.
-
-2002-07-16  Han-Wen  <hanwen@cs.uu.nl>
-
-	* lily/rest.cc (after_line_breaking): only translate the whole
-	rest if we have more than 1 staff line
-
-2002-07-16  Han-Wen Nienhuys  <hanwen@cs.uu.nl>
-
-	* VERSION: release 1.5.68
-
-	* scripts/lilypond-book.py: fixes by Tom Cato Amundsen.
-
-2002-07-15  Han-Wen Nienhuys  <hanwen@cs.uu.nl>
-
-	* lily/beam-quanting.cc (score_forbidden_quants): split beam
-	quanting functionality.
-	(quanting): argh. Forgot how linear interpolation works. Bugfix.
-
-	* Documentation/index.texi (Top): add whole-big-page documentation.
-
-	* lily/side-position-interface.cc (general_side_position):
-	Subtract parent offset iso. adding it. (Huh? How could this have
-	worked?)
-
-	* lily/clef-engraver.cc (stop_translation_timestep): add staff to
-	OctavateEight support.
-
-	* scripts/lilypond-book.py: add smallverbatim option.
-
-	* lily/beam.cc (quanting): bugfix. Behave sanely when no visible
-	stems.
-
-	* lily/accidental-placement.cc (position_accidentals): add padding
-	property. Increase default setting to 0.2. 
-
-2002-07-15  Han-Wen  <hanwen@cs.uu.nl>
-
-	* lily/paper-column.cc (before_line_breaking): urg. bugfix.
-
-	* lily/separating-line-group-engraver.cc (finalize): don't replace
-	right-items, but add to list. This fixes a bug when a staff ends
-	with cross-staff voice switching away.
- 
-2002-07-14  Han-Wen  <hanwen@cs.uu.nl>
-
-	* input/mutopia/GNUmakefile: move mutopia/ to input/mutopia/
-
-	* lily/beam.cc (quanting): add explicit support for cross-staff
-	beaming: make slope penalty larger.
-
-	* lily/beam.cc: use common refpoints throughout. This fixes many
-	cross staff issues.
- 
-	* lily/paper-column.cc (before_line_breaking): bug fix.
-
-	* lily/volta-engraver.cc (process_music): do something sensible if
-	no staffs found. 
-
-	* scripts/lilypond-book.py (make_pixmap): opps. Do png conversion
-	only once. 
-
-	* Documentation/user/refman.itely (Global layout): made section on
-	global layout, added spacing documentation.
-
-	* lily/staff-symbol.cc (brew_molecule): change ragged right for
-	staff symbols. See comments.
-
-2002-07-14  Jan Nieuwenhuizen  <janneke@gnu.org>
-
-	* lily/voice-devnull-engraver.cc (acknowledge_grob): Use proper
-	spelling for always.  In solo a due mode, kill spanners when the
-	other thread has solo.
-
-	* lily/thread-devnull-engraver.cc (acknowledge_grob): In solo a
-	due mode, kill everything when the other thread has solo.
-
-	* lily/a2-engraver.cc (acknowledge_grob): In solo a due mode, do
-	not set directions when we have solo.
-
-	* lily/part-combine-music-iterator.cc (process): Set property
-	"othersolo" if the other thread has solo.
-
-2002-07-13  Han-Wen  <hanwen@cs.uu.nl>
-
-	* VERSION: 1.5.67 released.
-	
-	* lily/beam.cc (calc_stem_y): fix beams on quarter notes.
-
-	* lily/stem-tremolo.cc (brew_molecule): add code for stem tremolos.
-
-	* lily/auto-beam-engraver.cc (create_beam_p): remember Beam
-	settings at the start of a potential auto beam.
-
-	* lily/include/sequential-iterator.hh (class Sequential_iterator):
-	bugfix: protect music list from GC.
-
-	* Documentation/user/introduction.itely: misc fixes.
-
-	* scripts/ly2dvi.py (run_latex): show latex error log. Ask for
-	bugreport if lilypond is killed by a signal. 
-
-	* input/regression/beam-funky.ly:  new file
-
-	* lily/input-smob.cc (make_input): GUILE 1.7 compatibility fixes.
-
-	* lily/beam.cc: complete rewrite of multiplicity. This fixes 16th
-	knees code.
-	(quanting): add french beaming support (property french-beaming)
-	(stem_beams): removed.
-
-i2002-07-12  Mats Bengtsson  <matsb@s3.kth.se>
-
-	* lily/beam.cc (after_line_breaking): Set correct stem lengths
-	also when beam positions are set manually.
-	(consider_auto_knees): Do not use automatic knees if the directions
-	are set manually by the user.
-
-2002-07-12  Han-Wen  <hanwen@cs.uu.nl>
-
-	* input/regression/grace-auto-beam.ly: new file
-
-	* input/regression/grace-unfold-repeat.ly: new file
-
-	* lily/auto-beam-engraver.cc (test_moment): never start on grace moments.
-
-	* lily/forbid-break-engraver.cc (start_translation_timestep): skip
-	grace notes for break-forbidding. Breaks during grace notes are
-	handled by Bar_engraver.	
-
-	* lily/unfolded-repeat-iterator.cc: Reimplement
-	Unfolded_repeat_iterator, Volta_repeat_iterator using
-	Sequential_iterator. All grace functionality from {} carries over
-	to repeats as well.
-
-	* lily/sequential-iterator.cc: new file: form baseclass for
-	sequential music iterator and unfolded/volta repeat iterator.
-
-2002-07-11  Han-Wen Nienhuys  <hanwen@cs.uu.nl>
-
-	* lily/include/debug.hh: deprecate.
-
-	* lily/spacing-spanner.cc (set_springs): add support for
-	common-shortest-duration field.
-
-	* lily/parser.yy (translator_spec_body): allow \set in \translator
-	{}  block. This is the same as \override, here.
-
-	* lily/score-engraver.cc (one_time_step): don't warn about columns
-	when skipTypesetting == #t.
-
-	* lily/spacing-spanner.cc (musical_column_spacing): change
-	ragged right function to produce natural spacing.
-
-2002-07-10  Han-Wen Nienhuys  <hanwen@cs.uu.nl>
-
-	* lily/paper-column.cc (before_line_breaking): update
-	#'bounded-by-me field for suicided items.  This fixes crazy
-	spacing in \partcombine scores.
-
-2002-07-10  Jan Nieuwenhuizen  <janneke@gnu.org>
-
-	* config.hh.in: Add HAVE_SSTREAM.
-	
-	* configure.in: Add check for sstream header.
-
-2002-07-09  Mats Bengtsson  <matsb@s3.kth.se>
- 
- 	* flower/source-file.cc: Fix compatibility with older g++.
- 
-2002-07-09  Jan Nieuwenhuizen  <janneke@gnu.org>
-
-	* input/twinkle.ly: Bugfix: no automaticMelismata.
-
-2002-07-08  Han-Wen  <hanwen@cs.uu.nl>
-
-	* mutopia/J.S.Bach/Cembalo-Partitas/: remove
-
-	* ly/engraver-init.ly (ScoreContext): turn on automaticMelismata
-	by default.
-
-	* lily/voice-devnull-engraver.cc (try_music):
-	lily/thread-devnull-engraver.cc: use proper spelling for #'always.
-
-	* lily/unfolded-repeat-iterator.cc (Unfolded_repeat_iterator):
-	copy here_mom_ too. This fixes an obscure bug with combining
-	partcombine and repeat
-
-	* lily/chord-tremolo-iterator.cc (Chord_tremolo_iterator): copy
-	factor too. 
-
-2002-07-07  Han-Wen  <hanwen@cs.uu.nl>
-
-	* mutopia/J.S.Bach/pa.ly: remove
-	* mutopia/J.S.Bach/Duette/: remove  
-	
-	* scm/font.scm (change-rhs-size): add support for "paper19.ly"
-
-	* VERSION: 1.5.66 released
-
-	* scm/grob-description.scm (all-grob-descriptions): add
-	item-interface where necessary
-
-	* lily/score-engraver.cc (one_time_step): warn for grobs created
-	during stop_translation_timestep().
-
-	* lily/a2-engraver.cc: restrict acknowledged grob types.
-
-	* lily/chord-name-engraver.cc: remove acknowledge_grob().
-
-	* Documentation/user/tutorial.itely: doc carnage.
-
-2002-07-06  Rune Zedeler  <rune@zedeler.dk>
-
-	* Documentation/user/refman.itely: Documented accidentals
-	(incl. bugs), subdivideBeams and drum/percussion notation.
-
-	* lily/translator-group.cc, lily/include/translator-group.hh
-	(Translator_group::set_children_property): removed.
-
-	* lily/accidental-engraver.cc: don't use
-	Translator_group::set_children_property.
-
-	* lily/new-accidental-engraver.cc: Added. More correct
-	accidentals, but wrong spacing.
-
-	* lily/beam-enagraver.cc, lily/auto-beam-engraver.cc: Small
-	subdivideBeams-fixes.
-
-	* scm/drums.scm: Small changes/fixes in instruments and maps
-	
-2002-07-05  Jan Nieuwenhuizen  <janneke@gnu.org>
-
-	* lexer-gcc-3.1.sh: Fixes and more comments.
-
-	* Documentation/topdocs/INSTALL.texi: Add comment about gcc-3.0.4
-	problems.
-
-	* lily/include/stream.hh:
-	* lily/include/moment.hh:
-	* lily/include/midi-stream.hh:
-	* lily/streams.cc:
-	* lily/scm-option.cc:
-	* lily/parser.yy:
-	* lily/my-lily-lexer.cc:
-	* lily/moment.cc:
-	* lily/midi-stream.cc:
-	* lily/main.cc:
-	* lily/lexer.ll:
-	* lily/includable-lexer.cc:
-	* flower/include/source-file.hh:
-	* flower/include/parray.hh:
-	* flower/include/dictionary.hh:
-	* flower/include/array.icc:
-	* flower/string.cc: 
-	* flower/source-file.cc:
-	* flower/getopt-long.cc: gcc-3.1 fixes.
-
-	* stepmake/stepmake/generic-targets.make: Add comment about warning.
-
-	* lexer-gcc-3.0.patch: Add comment, and a fix for installations
-	that have an unpatched flex and gcc-3.1.x.
-
-	* Documentation/topdocs/INSTALL.texi: Add comments and
-	instructions on gcc-3.1.x.
-
-	* lexer-gcc-3.1.sh: New file.
-
-	* aclocal.m4: regenerate.
-	
-	* stepmake/aclocal.m4: Version compare fix.
-
-2002-07-05  Han-Wen  <hanwen@cs.uu.nl>
-
-	* ly/engraver-init.ly (RhythmicStaffContext): stems up by default.
-
-	* lily-guile.hh: remove guile 1.3 compatibility,  add 1.4
-	compatibility functions.
-
-2002-07-05  Jan Nieuwenhuizen  <janneke@gnu.org>
-
-	* Documentation/windows/lilypond.hint (requires): Add libintl2.
-
-2002-07-04  Han-Wen Nienhuys  <hanwen@cs.uu.nl>
-
-	* VERSION: 1.5.65 released. 
-	
-	* scripts/lilypond-book.py: patches by Tom Cato Amundsen.  Adds
-	support for the columnsep when using the geometry package.
-	
-2002-07-04  Jan Nieuwenhuizen  <janneke@gnu.org>
-
-	* scm/grob-property-description.scm (minimum-space-pair): Remove.
-
-	* Documentation/windows/README: 
-	* Documentation/windows/guile-1.5.6-1.5.6.jcn2.patch:
-	* Documentation/windows/changelog: New file.
-
-	* Documentation/windows/lilypond.hint (requires): libguile14 (was:
-	guile).
-
-2002-07-03  Han-Wen  <hanwen@cs.uu.nl>
-
-	* lily/grob-property.cc (HASHING_FOR_MUTABLE_PROPS): experiment:
-	try hash tables for mutable properties.
-
-	* lily/align-interface.cc: remove aligned-interface and props
-	minimum-space-pair extra-space 
-
-	* lily/grob-property.cc: new file move grob prop handling here.
-
-	* lily/lily-guile.cc (ly_deep_copy): add vector support
-
-	* lily/break-substitution.cc (do_break_substitution): add vector
-	support.
-
-	* lily/spanner.cc: remove extend_spanner_over_* funcs.
-
-2002-07-02  Jan Nieuwenhuizen  <janneke@gnu.org>
-
-	* stepmake/aclocal.m4 (STEPMAKE_GET_VERSION): Workaround for
-	broken Debian gcc version string: 'gcc (GCC) 3.1.1 20020606
-	(Debian prerelease)'
-
-2002-07-02  Han-Wen Nienhuys  <hanwen@cs.uu.nl>
-
-	* lily/bar-check-iterator.cc (process): change
-	barbarCheckNoSynchronize to barCheckSynchronize
-
-	* Documentation/user/bugs.itexi: move to introduction, remove.
-
-	* Documentation/user/*.itexi: general carnage/cleanage.
-	
-	* Documentation/user/internals.itely: split most of file into
-	internal documentation (.scm and .cc)
-
-	* buildscripts/make-font-dir.py: put designsize in to X font
-	sWidth field
-
-	* make/lilypond.redhat.spec.in: postinstall bugfix
-
-2002-07-02  Juergen Reuter  <reuter@ipd.uka.de>
-
-	* lily/ambitus-engraver.cc, lily/ambitus.cc: Various bugfixes:
-	avoid segfault on undefined ambitus pitch; avoid wasteful creation
-	of pitch smobs; defer computation of centralCPosition beyond first
-	timestep to catch also clefs outside of the current voice context.
-
-2002-07-02  Han-Wen  <hanwen@cs.uu.nl>
-
-	* input/template/satb.ly: new file
-
-2002-07-01  Jan Nieuwenhuizen  <janneke@gnu.org>
-
-	* Documentation/user/glossary.tely: Precautions for lilypond-book:
-	don't use spaces after @lilypond options.
-
-	* Documentation/topdocs/INSTALL.texi (Top): Remove generic Guile
-	threads warning.
-
-2002-07-01  Han-Wen Nienhuys  <hanwen@cs.uu.nl>
-
-	* VERSION (MAJOR_VERSION): 1.5.64
-
-2002-06-30  Jan Nieuwenhuizen  <janneke@gnu.org>
-
-	* lily/grob.cc (mark_smob): don't mark parents, explain why.
-
-	* tex/lilyponddefs.tex: Define outputscale only once.
-
-2002-06-29  Jan Nieuwenhuizen  <janneke@gnu.org>
-
-	* configure.in: Require guile 1.4 or newer (was 1.3.4?).
-
-2002-06-29  Han-Wen  <hanwen@cs.uu.nl>
-
-	* lily/(phrasing-)slur-engraver.cc: remove slur{Begin|End}Attachment.
-
-	* lily/separating-line-group-engraver.cc (acknowledge_grob):
-	ignore grobs with no-spacing-rods set.
-
-	* Documentation/user/tutorial.itely (Fine tuning a piece): more tut.
-
-	* scm/grob-description.scm (all-grob-descriptions): sort list
-	
-2002-06-27  Jan Nieuwenhuizen  <janneke@gnu.org>
-
-	* Documentation/user/tutorial.itely (A piano excerpt): Bugfix:
-	remove stray brace.
-
-	* Documentation/topdocs/FAQ.texi (Installation): Add
-	lilypond-devel list.  Add faq about font removal.  Fix faq about
-	generating and running ./configure.
-
-2002-06-26  Jan Nieuwenhuizen  <janneke@gnu.org>
-
-	* scm/chord-name.scm (chord::name->text): Workaround: clean markup
-	text.
-
-	* lily/text-item.cc (markup_text2molecule): Bugfix: raise only once.
-
-	* input/test/ambitus.ly:
-	* lily/ambitus-engraver.cc:
-	* lily/ambitus.cc:
-	* lily/include/ambitus.hh: New file.
-
-	* GNUmakefile.in (local-clean): Also remove builddir-setup's symlinks.
-
-2002-06-25  Juergen Reuter  <reuter@ipd.uka.de>
-
-	* input/test/ambitus.ly, lily/ambitus-engraver.cc,
-	lily/ambitus.cc, lily/include/ambitus.hh, ly/engraver-init.ly,
-	scm/basic-properties.scm, scm/grob-description.scm,
-	scm/grob-property-description.scm: Add support for ambitus.
-
-2002-06-24  Han-Wen Nienhuys  <hanwen@cs.uu.nl>
-
-	* lily/text-spanner.cc: add some props to interface (patch
-	courtesy Chris J).
-
-2002-06-24  Jan Nieuwenhuizen  <janneke@gnu.org>
-
-	* lily/text-spanner.cc (setup_pedal_bracket): Bugfix: only
-	dereference valid Grob.
-
-	* configure.in: Quoting fixes.
-
-2002-06-24  Han-Wen  <hanwen@cs.uu.nl>
-
-	* VERSION: 1.5.63 released
-
-	* lily/grob-scheme.cc: new file
-
-	* lily/break-substitution.cc: split up break substitution
-	functionality, and make a special constant stack-space version for
-	lists of grobs. This should fix the problems of lily in
-	combination with pthreads/qthreads.
-
-	* lily/grob.cc (mark_smob): bugfix: mark other parent too.
-
-2002-06-23  Chris Jackson  <chris@fluffhouse.org.uk>
-
-	* lily/text-spanner.cc (setup_pedal_bracket):
-	* lily/piano-pedal-engraver.cc (create_bracket_grobs): 
-	Fix the lengths of mixed-style piano pedal brackets.
-
-2002-06-23  Jan Nieuwenhuizen  <janneke@gnu.org>
-
-	* Documentation/user/tutorial.itely (First steps): Add missing
-	quotation.
-
-	* Documentation/topdocs/INSTALL.texi (Top): Add some warnings
-	about guile --with-threads.  Hopefully this issue can be resolved
-	rsn, but maybe we should even add warnings for the standard Debian
-	and Red Hat packages?
-
-	* configure.in: Warn if guile is configured to use threads.  Maybe
-	we should make this an error (ie, add to REQUIRED list?)
-
-	* config.make.in (PACKAGE_NAME):
-	(PACKAGE, package):  Don't hardcode.
-
-	* VERSION (PACKAGE_NAME): Typo fix.
-
-2002-06-23  Han-Wen  <hanwen@cs.uu.nl>
-
-	* input/tutorial/brahms-*.ly: new tutorial files.
-
-	* Documentation/user/tutorial.itely: fixes. Extend cheat sheet.
-
-	* scm/script.scm (default-script-alist): fermata is up.
-
-	* lily/dynamic-engraver.cc (stop_translation_timestep): stop
-	dynamic line spanner when there is no crescendo to connect.
-
-	* lily/tie.cc (get_control_points): add test to avoid flat ties.
-
-2002-06-22  Han-Wen  <hanwen@cs.uu.nl>
-
-	* lily/note-collision.cc (check_meshing_chords): don't crash if no
-	stems.
-
-	* scm/music-functions.scm (toplevel-music-functions): new
-	definition. Functions to apply automatically. Removes the need for
-	explicitly doing \apply #voicify-music
-
-	* lily/grob.cc (do_break_substitution): rename function, use
-	global var for criterion argument. Reduces stack usage a little.
-
-	* ly/engraver-init.ly (StaffContext): add Instrument_engraver
-
-	* scripts/convert-ly.py, lily/*.cc, scm/*.scm: change
-	visibility-lambda to break-visibility
-
-2002-06-21  Jan Nieuwenhuizen  <janneke@gnu.org>
-
-	* input/bugs/part-combiner.ly: New file.
-
-	* lily/include/spacing-interface.hh: New file.
-
-	* lily/include/spaceable-element.hh: Remove.
-
-	* input/test/script-priority.ly: New file.
-
-2002-06-20  Han-Wen  <hanwen@cs.uu.nl>
-
-	* lily/system.cc (output_lines): kill grobs that are only for spacing.
-
-2002-06-20  Jan Nieuwenhuizen  <janneke@gnu.org>
-
-	* lily/fingering-engraver.cc (make_script): 
-	* lily/script-engraver.cc (process_music): 
-	* lily/text-engraver.cc: 
-	(process_acknowledged_grobs): Remove hard coded script-priority.
-
-	* flower/warn.cc: Cleanup.
-
-	* lily/voice-devnull-engraver.cc: Also eat multi-measure rest, a
-	spanner now.
-
-	* aclocal.m4: Regenerate.
-
-	* stepmake/aclocal.m4: Also set GUILE_PATCH_LEVEL.
-
-	* config.hh.in: Only set GUILE_MAJOR_VERSION if necessary.
-	* lily/include/lily-guile.hh: Only include config.h if necessary.
-
-	* Changelog: cvs changes ml archive test #8.
-	
-	* lily/slur-engraver.cc: Layout fix.
-
-2002-06-19  Han-Wen Nienhuys  <hanwen@cs.uu.nl>
-
-	* ly/engraver-init.ly (RhythmicStaffContext): add
-	Dot_column_engraver, resurrect barlines 
-	
-	* VERSION: 1.5.62 released.
-
-	* lily/engraver-group-engraver.cc (do_announces): rename
-	create_grobs () to process_acknowledged_grobs().
-
-	* lily/grob.cc (programming_error): add programming_error with
-	origin location.  
-
-	* lily/tuplet-bracket.cc (parallel_beam): robustness check, don't
-	fail if a beam doesn't have stems.  
-
-	* lily/engraver-group-engraver.cc (do_announces): scary change in
-	calling convention of create_grobs():  no create_grobs() call
-	before acknowledge_grobs().
-
-	* lily/sequential-music-iterator.cc (skip): add support for grace
-	notes. 
-
-	* lily/music.cc (Music): fix very subtle and nasty memory
-	corruption bug. Typical symptom: "programming_error: Rhythmic_req
-	has no duration"
-
-	* mutopia/claop.py: new file: CLA(O)P II by Peter Wallin.
-
-2002-06-19  Han-Wen  <hanwen@cs.uu.nl>
-
-	* ly/engraver-init.ly (RhythmicStaffContext): add
-	Dot_column_engraver
-	
-
-	* lily/parser.yy: various protection fixes. Less objects are now
-	overprotected.
-
-2002-06-18  Jan Nieuwenhuizen  <janneke@gnu.org>
-
-	* stepmake/bin/release.py (prev_ver): Bugfix: assume new diff
-	naming scheme.
-
-	* Documentation/windows/zlily-profile.sh:
-	* Documentation/windows/post-lilypond.sh: Assume normal
-	prefix=/usr for lilypond.
-
-	* lily/musical-request.cc (length_mom): Display origin with error.
-
-	* input/test/duration-check.ly: New file.
-
-	* lily/lily-guile.cc (ly_pair_p): [PARANOID]: Check for freed
-	cells.
-
-	* lily/part-combine-music-iterator.cc (get_state): Bugfix: use
-	ly_symbol2scm to get a scm symbol (rather than ly_str02scm).
-
-	* aclocal.m4:
-	* autogen.sh: Regenerate.
-	
-	* Documentation/topdocs/INSTALL.texi: 
-	* configure.in: 
-	* stepmake/configure.in:
-	* stepmake/aclocal.m4: Revert autoconf upgrade.  Autoconf 2.53 has
-	a serious bug wrt AC_CONFIG_AUX_DIR (reported).  Creating
-	./configure once again requires autoconf == 2.13.
-
-	* stepmake/autogen.sh: Check for autoconf == 2.13.
-
-2002-06-18  Han-Wen Nienhuys  <hanwen@cs.uu.nl>
-
-	* lily/parser.yy (open_request_parens): add input locations to
-	open and close parens. 
-
-2002-06-17  Chris Jackson <chris@fluffhouse.org.uk>
-
-	* lily/tuplet-bracket.cc:
-	* lily/text-spanner.cc: 
-	* lily/piano-pedal-engraver.cc: 
-	* scm/grob-description.scm: 
-	* scm/grob-property-description.scm: Changed the
-	edge-width property of brackets to edge-widen. Changed the sign of
-	the left element of edge-widen so a pair of equal numbers produces
-	a symmetrical bracket.
-
-2002-06-17  Han-Wen Nienhuys  <hanwen@cs.uu.nl>
-
-	* ly/espanol.ly: added.
-
-	* lily/simple-spacer.cc (solve): remove assert.
-
-2002-06-17  Han-Wen  <hanwen@cs.uu.nl>
-
-	* lily/forbid-break-engraver.cc (class
-	Forbid_line_break_engraver): new engraver: forbid linebreaks
-	during playing notes
-
-	* lily/spacing-spanner.cc (loose_column): add another check: don't
-	move around bar lines as loose columns.
-
-	* scm/basic-properties.scm (default-break-barline):  add pre-break
-	for .| barline
-
-2002-06-16  Jan Nieuwenhuizen  <janneke@gnu.org>
-
-	* GNUmakefile.in (builddir-setup): Bugfix: include srcdir/tex as
-	well as mf/out as subdirs of tex, for kpathsea to find through TEXMF.
-
-	* scripts/lilypond-book.py (environment): Bugfix: update to new
-	TEXMF scheme, from ly2dvi.
-
-	* lily/lookup.cc (slur): Invoke bezier-bow.
-
-	* scm/tex.scm (bezier-bow): 
-	* scm/ps.scm (bezier-bow): Bezier sandwich with rounded endings
-	(Previously named bezier-sandwich).
-	
-	* scm/tex.scm (bezier-sandwich):
-	* scm/ps.scm (bezier-sandwich): Plain bezier sandwich.
-
-	* make/lilypond.mandrake.spec.in (post): 
-	* make/lilypond.suse.spec.in (post): 
-	* make/lilypond.redhat.spec.in (post): Also remove parmesan fonts.
-	
-	* tex/lilyponddefs.tex: Uncomment feta character support.
-
-	* Documentation/user/refman.itely (Pitches): Add espanol.ly
-	description.
-
-	* ly/catalan.ly: Add comment about (spanish) -s suffix.
-
-	* ly/espanol.ly: Spanish note names by Carlos Garc'ia Su'arez
-	<cgscqmp@terra.es>.
-
-2002-06-14  Jan Nieuwenhuizen  <janneke@gnu.org>
-
-	* GNUmakefile.in (short-examples):
-	(long-examples): Bugfix for --srcdir build.
-	(top-web): Rewrite weblist find command.
-
-	* stepmake/bin/config.sub: 
-	* stepmake/bin/config.guess: Update from latest autotools.
-
-	* aclocal.m4:
-	* autogen.sh: Regenerate.
-	
-	* configure.in: 
-	* stepmake/configure.in: 
-	* stepmake/aclocal.m4: Run autoupdate.  Creating ./configure now
-	requires autoconf >= 2.50.
-
-	* stepmake/autogen.sh: Check for autoconf >= 2.50.
-
-	* Documentation/user/refman.itely: Bugfix for tablature example.
-
-	* Documentation/windows/compiling.texi: Update for new and
-	improved setup.
-
-2002-06-14  Han-Wen Nienhuys  <hanwen@cs.uu.nl>
-
-	* lily/spacing-spanner.cc (find_shortest): make 1/8 configurable:
-	introduce base-shortest-duration
-
-	* lily/parser.yy (music_output_def_body): don't crash when \tempo
-	in unexpected \midi{} is found.
-
-2002-06-13  Jan Nieuwenhuizen  <janneke@gnu.org>
-
-	* stepmake/GNUmakefile.in: Don't install stepmake.  This breaks
-	the use of make/ly.make for use as an external makefile.  Probably
-	noone except for myself ever used this anyway.
-
-	* stepmake/stepmake/GNUmakefile (INSTALLATION_DIR): Bugfix: Adapt
-	to new $datadir convention (<package>/<version>).
-
-2002-06-13  Han-Wen  <hanwen@cs.uu.nl>
-	
-	* VERSION: 1.5.61 released
-	
-	* Document/user/refman.itely: tablature doc and code updates by
-	Jean-Baptiste Lamy <jiba@tuxfamily.org>
-	
-	* input/template/piano-dynamics.ly: bugfixes.
-
-	* lily/key-engraver.cc (try_music): read request only once. Don't
-	overwrite lastKeySignature. Call create_key() only once. This
-	fixes a bug with multiple equal key changes on polyphonic staffs.
-
-2002-06-12  Mats Bengtsson  <mats.bengtsson@s3.kth.se>
-
-	* scm/grob-description.scm: Add side-position-interface to TextSpanner
-
-	* scm/grob-property-description.scm: Document the trill line type.
-
-2002-06-12  Jan Nieuwenhuizen  <janneke@gnu.org>
-
-	* stepmake/stepmake/generic-vars.make: 
-	* make/lilypond-vars.make:
-	* GNUmakefile.in (builddir-setup): New setup for builddir run.
-	Fixes LilyPond run from builddir for --srcdir builds.
-
-	* Documentation/windows/GNUmakefile (OUT_PROFILES): Bugfix for
-	--srcdir build.
-
-2002-06-12  Han-Wen  <hanwen@cs.uu.nl>
-
-	* scm/grob-description.scm (all-grob-descriptions): add
-	font-family to RehearsalMark
-
-	* scm/drums.scm: move over definitions from drum-pitch-init.ly
-
-	* lily/volta-bracket.cc (brew_molecule): bugfix, don't do anything
-	if glyph not set.
-
-2002-06-12  Heikki Junes  <heikki.junes@hut.fi>
-
-	* lilypond-mode.el: Propose saving before applying a command:
-	for saved buffer set default command to LilyPond.
-
-2002-06-11  Jan Nieuwenhuizen  <janneke@gnu.org>
-
-	* buildscripts/mutopia-index.py (headertext_nopics): Add missing
-	variable.
-
-	* Documentation/windows/lilypond.hint: Renamed (previously setup.hint).
-
-	* Documentation/windows/lilypond-doc.hint: New file.
-
-	* GNUmakefile.in: Forward port: Add toplevel target install-html-doc.
-	Bugfixes for --srcdir html-doc build.
-	
-	* make/lilypond-vars.make (LILYPOND_BOOK_INCLUDES): Forward port:
-	Bugfix: Include $(builddir)/mf/out (was $(srcdir)/mf/out.
-
-2002-06-10  Han-Wen  <hanwen@cs.uu.nl>
-
-	* ly/script-init.ly (pralldown): add some scripts.
-
-	* Documentation/user/refman.itely: many edits.
-
-2002-06-09  Han-Wen  <hanwen@cs.uu.nl>
-
-	* lily/tuplet-bracket.cc (brew_molecule): don't translate in Y
-	direction, this breaks staffline avoidance of the bracket when
-	they're horizontal.
-
-2002-06-08  Mats Bengtsson  <mats.bengtsson@s3.kth.se>
-
-	* scripts/midi2ly.py: Fix handling of -o
-
-2002-06-08  Han-Wen  <hanwen@cs.uu.nl>
-
-	* lily/molecule.cc (translate): set max distance to 100 cm.
-
-2002-06-07  Han-Wen Nienhuys  <hanwen@cs.uu.nl>
-
-	* VERSION: 1.5.60 released
-
-	* lily/beam.cc: tremolo fix.
-
-	* scripts/convert-ly.py:  add tuplet-X-visibility rules.
-	add VerticalExtent -> verticalExtent rules.
-
-	* lily/axis-group-engraver.cc: consistent case for
-	XxxxVerticalExtent properties.  
-
-	* Documentation/user/refman.itely (Tuplets): update
-	tuplet-X-visibility properties. 
-
-	* input/test/defaultbars.ly: Corrected (thanks Mats)
-	
-2002-06-05  Han-Wen Nienhuys  <hanwen@cs.uu.nl>
-
-	* lily/beam.cc (shift_region_to_valid): fix stupido bug. 
-
-	* buildscripts/lilypond-profile.sh: override settings if
-	LILYPONDPREFIX is set.
-
-2002-06-04  Mats Bengtsson  <mats.bengtsson@s3.kth.se>
-
-	* scripts/ly2dvi.py (non_path_environment): Fix typo
-
-2002-06-03  Heikki Junes  <heikki.junes@hut.fi>
-
-	* lilypond-mode.el: Extend "Quick notes" containing note tuples.
-
-	* lilypond-font-lock.el: Add fixes and comments to syntax-table.
-
-2002-06-03  Han-Wen  <hanwen@cs.uu.nl>
-
-	* lily/beam-engraver.cc (class Grace_beam_engraver): derive from
-	beam-engraver: use different engraver so we can mix normal and
-	grace beams.
-
-2002-06-01  Han-Wen  <hanwen@cs.uu.nl>
-
-	* lily/beam.cc (shift_region_to_valid): Try to shift positions
-	after slope-damping and concaveness check, so that short-stems are
-	not violated.
-
-2002-05-31  Jan Nieuwenhuizen  <janneke@gnu.org>
-
-	* stepmake/aclocal.m4: Fix for ash as /bin/sh.
-
-2002-05-31  Han-Wen  <hanwen@cs.uu.nl>
-
-	* VERSION: 1.5.59 released 
-	
-	* scripts/musedata2ly.py (Parser.parse_note_line): add dots. Add
-	notice that missing features are exercise for user.
-
-2002-05-30  Jan Nieuwenhuizen  <janneke@gnu.org>
-
-	* lily/beam.cc (score_stem_lengths): Bugfix for knees: use correct
-	(but alas, not partly precomputed) value for current_y when
-	calculating stem length demerits.
-	(calc_stem_y): Temporary precomputed factors fix.
-
-	* lily/stem.cc (calc_stem_info): Take multiplicity into account
-	for shortest_y too.
-
-	* input/bugs/melisma-tie-rest.ly: New file.
-
-2002-05-30  Han-Wen  <hanwen@cs.uu.nl>
-
-	* lily/stem.cc (calc_stem_info): remove min_y member, rename
-	stuff. 	Remove kneeing stuff.
-
-	* lily/beam.cc (brew_molecule): remove beam direction. Lots of
-	twiddling
-
-2002-05-29  Jan Nieuwenhuizen  <janneke@gnu.org>
-
-	* scm/sketch.scm: 
-	* scm/ps.scm: 
-	* scm/pdftex.scm: 
-	* scm/pdf.scm: 
-	* scm/tex.scm: Add check for Guile-1.4.1.  Guile includes
-	patch-level of version in minor-version string.  Arg.
-
-2002-05-29  Han-Wen  <hanwen@cs.uu.nl>
-
-	* ly/engraver-init.ly (TabStaffContext): 
-	enable TabStaff by default.
-
-	*  Tablature support by Jean-Baptiste Lamy <jiba@tuxfamily.org>
-
-2002-05-28  Jan Nieuwenhuizen  <janneke@gnu.org>
-
-	* config.hh.in: Remove duplicate DIR_DATADIR entry.
-
-	* aclocal.m4: Regenerate.
-	
-	* stepmake/aclocal.m4: Append $FULL_VERSION to datadir.
-
-2002-05-25  Heikki Junes  <heikki.junes@hut.fi>
-
-	* lilypond-mode.el: Added Deutsch notes and fixed "Quick notes".
-
-	* lilypond-mode.el: Write notes with fewer keystrokes trough a 
-	"Quick notes"-interface.
-
-2002-05-26  Jan Nieuwenhuizen  <janneke@gnu.org>
-
-	* input/regression/non-empty-text.ly: Update example with outdated
-	comment.
-
-2002-05-25  Han-Wen  <hanwen@cs.uu.nl>
-
-	* scripts/convert-ly.py:  add textNonEmpty rule
-
-	* lily/text-engraver.cc (create_grobs): remove textNonEmpty
-
-2002-05-24  Jan Nieuwenhuizen  <janneke@gnu.org>
-
-	* lily/text-item.cc (markup_text2molecule): Junk ugly lookahead by
-	using translate-robust add_molecule instead of add_at_edge.
-	Bugfix for #(lines (finger "" "1")).
-
-2002-05-24  Han-Wen  <hanwen@cs.uu.nl>
-
-	* lily/stem-tremolo.cc (brew_molecule): clean up and fix stem
-	tremolo placement.
-
-2002-05-22  Han-Wen  <hanwen@cs.uu.nl>
-
-	* VERSION: 1.5.58
- 	
-	* Documentation/user/refman.itely: Bugfix: add node Repeats and
-	MIDI.  Regenerate menu.  Fix @end example.
-
-	* lily/accidental.cc: Add cautionary-style to interface.
-
-	* mf/feta-beugel.mf (code): use autometric macros for braces.
-	This fixes input/bugs/braces.
-
-	* lily/afm.cc (count): return numOfChars, not size of array
-	(always equals 256.)
-
-	* lily/script.cc (before_line_breaking): postpone setting the
-	X-parent of vertical scripts. This fixes the case of scripts on
-	chords with seconds 
-
-2002-05-21  Han-Wen  <hanwen@cs.uu.nl>
-
-	* scm/grob-description.scm:  fix alignment of barnumber: make sure
-	it doesn't hit the G-clef. 
-
-	* input/mozart-hrn3-defs.ly (startGraceMusic): typo (it's
-	startGraceMusic not startGraceContext).
-
-2002-05-20  Jan Nieuwenhuizen  <janneke@gnu.org>
-
-	* stepmake/autogen.sh: Check for autoconf2.13, and abort if not
-	found.
-
-2002-05-20  Han-Wen  <hanwen@cs.uu.nl>
-
-	* lily/accidental-engraver.cc: remove old accidental engraver,
-	move new one to accidental-engraver.cc.
-
-	* lily/local-key-item.cc: remove file
-
-	* lily/include/local-key-item.hh: remove file
-
-	* scripts/ly2dvi.py (make_preview): add --preview-resolution
-	option.
-
-	* lily/accidental.cc (brew_molecule): support for cautionary
-	accidentals. 
-
-	* lily/note-head.cc (internal_brew_molecule): warn if note head
-	not found.
-
-	* lily/time-signature.cc (special_time_signature): remove warning
-	about time signature. 
-
-	* lily/spacing-spanner.cc (musical_column_spacing): Prevent
-	reverse springs by limiting fixed-note space.
-
-2002-05-19  Jan Nieuwenhuizen  <janneke@gnu.org>
-
-	* stepmake/aclocal.m4: Bugfix: complain if program not found.
-
-	* scripts/update-lily.py (next_version, prev_version, diff_name):
-	New function.  Patches now named name-prev-latest.diff.gz.
-	Bugfix: import shutil.
-
-2002-05-19  Han-Wen  <hanwen@cs.uu.nl>
-
-	* input/tutorial/sammartini.ly: fix and document autochange
-	weirdness.
-
-	* scm/pdftex.scm: resurrect PDFTeX output. Still doesn't work, but
-	does produce .pdftex files.
-
-	* lily/note-collision.cc (check_meshing_chords): move file from
-	collision.cc, implement merged note heads (there you go, Drarn :-)
-
-	* input/regression/collision-heads.ly: new file
-
-	* VERSION: 1.5.57 released.
-
-2002-05-18  Juergen Reuter  <reuter@ipd.uka.de>
-
-	* mf/parmesan-heads.mf, scm/grob-description.scm,
-	scm/grob-property-description.scm, scm/interface-description,
-	lily/include/my-lily-parser.hh, lily/include/ligature-head.hh,
-	lily/include/mensural-ligature.hh, lily/include/lily-proto.hh,
-	lily/include/ligature-engraver.hh,
-	lily/include/ligature-bracket.hh, lily/parser.yy,
-	lily/ligature-bracket-engraver.cc, lily/mensural-ligature.cc,
-	lily/mensural-ligature-engraver.cc, lily/note-heads-engraver.cc,
-	lily/ligature-head.cc, lily/ligature-engraver.cc,
-	lily/ligature-bracket.cc, input/test/mensural-ligatures.ly:
-	implemented white mensural ligatures (still with a big list of
-	TODOs)
-
-
-2002-05-19  Han-Wen  <hanwen@cs.uu.nl>
-
-	* lily/*.cc: use LY_DEFINE everywhere. Move doc strings from
-	Documentation/user/internals.itely.
-
-	* lily/function-documentation.cc: new file. Infrastructure for
-	self documenting Scheme functions.
-
-2002-05-18  Han-Wen  <hanwen@cs.uu.nl>
-
-	* lily/stem.cc (calc_stem_info): bugfix for less ugly knees.
-
-2002-05-17  Han-Wen  <hanwen@cs.uu.nl>
-
-	* scripts/lilypond-book.py (re_dict): fix regexps; don't combine ?
-	and * (as in "([^>]*)?")
-
-2002-05-17  Jan Nieuwenhuizen  <janneke@gnu.org>
-
-	* Documentation/topdocs/INSTALL.texi: Update GCC, Flex and GUILE info.
-	Add info about CVS.  Stable/development are currently 1.4/1.5,
-	both at lilypond.org.
-
-	* autogen.sh: Generate.
-
-	* stepmake/configure:
-	* configure: Regenerate.
-	
-	* stepmake/stepmake/automatically-generated.sub.make: Keep
-	original first line.
-
-	* stepmake/stepmake/toplevel-targets.make (autogen.sh): Add rule.
-
-	* stepmake/stepmake/generic-targets.make (configure): Generate
-	using autogen.sh.
-
-	* GNUmakefile.in (SCRIPTS):
-	* stepmake/GNUmakefile.in (SCRIPTS): Add autogen.sh
-
-	* stepmake/autogen.sh: New file.
-
-	* configure: Check for g++ >= 2.95.
-
-	* stepmake/aclocal.m4: Fixes for FlexLexer.h, Python headers.  GNU
-	c/c++ version checking.
-
-	* flower/include/string.hh: Typo fix.
-
-	* lily/include/midi-item.hh: Remove stray i.
-
-	* Documentation/windows/GNUmakefile: Avoid collapsed directory
-	constructs '//'.
-	
-	* stepmake/bin/install-dot-exe.sh: Filter collapsed directory
-	constructs '//' from arguments.
-
-2002-05-17  Han-Wen  <hanwen@cs.uu.nl>
-
-	* scm/lily.scm (ly-load): show SCM filenames if verbose.
-
-	* lily/lily-guile.cc (init_functions): add ly-verbose function.
-
-	* lily/main.cc (setup_paths): remove LILYINCLUDE support. 
-
-	* flower/include/{pointer,tuple}*: removed.
-
-	* VERSION: released 1.5.56
-	
-	* scm/music-functions.scm (check-start-chords): function to check
-	for chords without \context. Apply automatically from parser.
-
-2002-05-16  Han-Wen  <hanwen@cs.uu.nl>
-
-	* lily/bar-line.cc: remove index entries. Texinfo can't handle  :
-	in index entries.
-
-	* scm/output-lib.scm: fix ez notation stems. 
-
-	* lily/paper-outputter.cc: various fixes to speed up compilation.
-
-2002-05-16  Mats Bengtsson  <mats.bengtsson@s3.kth.se>
-
-	* scripts/lilypond-book.py: Don't import pre for Python >= 2.2
-
-2002-05-16  Jan Nieuwenhuizen  <janneke@gnu.org>
-
-	* scripts/lilypond-book.py (determine_format): Bugfix: correctly
-	determine latex input.
-
-	* stepmake/bin/install-sh: Include latest from libtool.
-
-	* stepmake/configure: 
-	* configure: Regenerate.
-
-	* config.make.in: Remove dead variables.  Add OPTIONAL/REQUIRED lists.
-	(USER_CFLAGS): Bugfix, include CPPFLAGS.
-
-	* configure.in: Use new OPTIONAL/REQUIRED mechanism.
-
-	* stepmake/aclocal.m4: Add mechanism for checking OPTIONAL or
-	REQUIRED programs and version.  Try to continue configuring, list
-	missing programs at the end, but don't generate a GNUmakefile if
-	REQUIRED programs are missing.  Cleanups, junk obsolete stuff.
-	Fix Cygwin detection, drop '32' suffix.  Hoping this is not too
-	fancy for some older systems.
-
-2002-05-16  Han-Wen  <hanwen@cs.uu.nl>
-
-	* lily/score-engraver.cc (typeset_all): sanity check for items
-	that are Y parent to spanner. 
-
-	* lily/piano-pedal-engraver.cc (create_bracket_grobs): fix broken
-	pedal spanners.
-
-2002-05-15  Han-Wen Nienhuys  <hanwen@cs.uu.nl>
-
-	* lily/*.cc: remove as many iostream use as possible. 
-
-	* flower/ : remove text-db, text-stream, data-file.
-	
-2002-05-15  Han-Wen  <hanwen@cs.uu.nl>
-
-	* scripts/lilypond-book.py: add --no-music option: strip all blocks.
-	(completize_preamble): don't barf if no preamble present.
-	(do_file): allow extensions on --output
-
-	* scripts/ly2dvi.py (make_preview): make automatic preview of
-	first system. Small cleanups.
-
-2002-05-13  Han-Wen Nienhuys  <hanwen@cs.uu.nl>
-
-	* scripts/lilypond-book.py (make_pixmap): output png directly.
-
-	* mf/GNUmakefile (INSTALLATION_OUT_FILES4): create and install
-	fonts.dir file.
-
-	* lily/parser.yy (My_lily_parser): comment out code. (Causes
-	problems  with recent bison releases).
-
-	* make/lilypond.redhat.spec.in: add pfa fonts to X. 
-
-2002-05-07  Heikki Junes <hjunes@cc.hut.fi>
-
-	* lilypond-font-lock.el: Fixes the order of the note name list.
-
-2002-05-06  Jan Nieuwenhuizen  <janneke@gnu.org>
-
-	* scripts/lilypond-book.py: Add html/dtml output, pseudo-filter
-	capability, --verbose option, rlimit hack.
-
-2002-05-05  Han-Wen Nienhuys  <hanwen@cs.uu.nl>
-
-	* lily/piano-pedal-engraver.cc: cleanups.
-
-	* lily/accidental.cc (after_line_breaking): add break tie
-	reminders.
-
-	* lily/text-engraver.cc (try_music): don't typeset fingerings
-
-2002-05-05  Heikki Junes <hjunes@cc.hut.fi>
-
-	* lilypond-font-lock.el: Handle \breve as a note (rest) duration.
-
-2002-05-04  Han-Wen  <hanwen@cs.uu.nl>
-
-	* lily/*.cc: change gh_str02scm() to ly_str02scm().
-
-	* lily/spacing-spanner.cc (note_spacing): Bound
-	shortest-playing-length by the distance to next note. This should
-	fix chord tremolo spacing.
-
-	* VERSION: 1.5.55 released
-
-	* lily/stem.cc (off_callback): invisible stem over whole note is
-	centered on note now.
-
-	* lily/stem-engraver.cc (acknowledge_grob): X_AXIS Parent of
-	stem-tremolo is stem now.
-
-	* input/mozart-hrn*.ly: many corrections. 
-
-	* lily/dynamic-engraver.cc (acknowledge_grob): add Scripts  to
-	support for dynamic scripts.
-
-	* lily/accidental-placement.cc (position_accidentals): check for
-	collisions as well: should avoid those heads too.
-
-	* lily/beam.cc (check_concave): allow undefined gap and
-	threshold. Change the meaning of threshold/gap == 0.0.
-	(check_concave): skip Stolba concaveness check if we have a knee
-	on outer stems.
-
-2002-05-03  Mats Bengtsson  <mats.bengtsson@s3.kth.se>
-
-	* lily/chord-tremolo-engraver.cc (try_music): Handle chord
-	tremolos of dotted duration.
-
-2002-05-03  Han-Wen  <hanwen@cs.uu.nl>
-
-	* mf/feta-klef.mf: more twiddling with G clef. Almost straight
-	downstroke again. Sigh.
-
-	* lily/dynamic-engraver.cc (acknowledge_grob): center dynamic
-	script on note head.
-
-2002-05-02  Han-Wen  <hanwen@cs.uu.nl>
-
-	* lily/slur.cc (add_column): allow slur over rest. 
-
-2002-04-27  Han-Wen  <hanwen@cs.uu.nl>
-
-	* lily/beam.cc: move scoring constants out of code
-
-2002-04-25  Han-Wen  <hanwen@cs.uu.nl>
-
-	* mf/feta-nummer.mf: scalability fixes.
-
-	* mf/feta-nummer-code.mf: fixes for 5, 8. 
-
-	* mf/feta-klef.mf: G clef fixes.
-
-2002-04-25  Jan Nieuwenhuizen  <janneke@gnu.org>
-
-	* scripts/ly2dvi.py: Mats' fix.  Try to import pre if available.
-
-	* scripts/lilypond-book.py: %Newline, rather than glue macros
-	after \end{verbatim}.
-
-2002-04-24  Jan Nieuwenhuizen  <janneke@gnu.org>
-
-	* Documentation/user/lilypond-book.itely: 
-	* scripts/lilypond-book.py: Add options [no]indent, linewidth and
-	noinline.
-
-	* input/mozart-hrn3-defs.ly (startGraceContext): Customize grace init.
-
-	* scm/grob-property-description.scm (beam-space): Junk.
-
-	* lily/beam.cc (space_function): New method.
-	(get_interbeam): Call space-function.
-
-	* scm/grob-description.scm (Beam): Initialize space-function with
-	Beam::space_function.
-
-	* ly/grace-init.ly (startGraceMusic, stopGraceMusic): Set/revert
-	Beam.space-function.  Don't quantise grace beams.
-
-2002-04-23  Han-Wen Nienhuys  <hanwen@cs.uu.nl>
-
-	* VERSION: 1.5.54 released
-
-   	* mf/feta-nummer-code.mf (code): tweaks for three, fixes for 6
-	bulb. 
-
-	* Documentation/index.texi: add PDF links.
-
-	* Documentation/user/GNUmakefile (PDF_FILES): add PDF files to website.
-
-	* lily/system-start-delimiter-engraver.cc (acknowledge_grob):
-	compare #'glyph as strings. 
-
-	* scripts/lilypond-book.py: fix by Mats. Try to import pre if available.
-
-	* scripts/ly2dvi.py (setup_environment): fix by Mats.
-
-	* lily/stem.cc (head_count): Change function name. Change property
-	to #'note-heads i.s.o.  #'heads.
-	(position_noteheads): Kern noteheads for invisible stems.
-	(before_line_breaking): Do position_noteheads() for whole note
-	heads too.
-
-	* lily/accidental-placement.cc (position_accidentals): First
-	determine refpoints, only then determine extents.  
-
-2002-04-22  Han-Wen Nienhuys  <hanwen@cs.uu.nl>
-
-	* lily/accidental-placement.cc (position_accidentals): use all
-	note heads for note head-skyline. 
-
-	* scripts/lilypond-book.py (re_dict): remove all *? regexps.
-
-2002-04-22  Jan Nieuwenhuizen  <janneke@gnu.org>
-
-	* Documentation/windows/setup.hint (requires): Add gsview dependency.
-
-	* scripts/lilypond-book.py (re_dict): Fix for python 2.x.
-
-	* lilypond-mode.el (LilyPond-xdvi-command): Default to plain xdvi.
-
-	* input/mozart-hrn3-allegro.ly: Bugfix: include defs.
-
-2002-04-22  Han-Wen Nienhuys  <hanwen@cs.uu.nl>
-
-	* mf/feta-schrift.mf: lighter staccato.
-
-2002-04-22  Han-Wen  <hanwen@cs.uu.nl>
-
-	* mf/feta-nummer-code.mf (code): fixes for 3 glyph.
-
-2002-04-21  Han-Wen  <hanwen@cs.uu.nl>
-
-	* VERSION: 1.5.53 released
-
-	* scm/lily.scm (ly-load): use primitive-load for loading.
-
-	* lily/misc.cc: remove quantise_iv()
-
-	* lily/*.cc: pass read-only arrays by reference.
-	
-	* lily/grob.cc (common_refpoint_of_array): new function. Try to
-	use common_refpoint_of_{array, list} when possible.
-
-	* lily/include/accidental-placement.hh: new file.
-
-	* lily/accidental-placement.cc (alignment_callback): position
-	accidentals in a better way.
-
-	* lily/skyline.cc: new file. Compute distances for collections of
-	boxes.
-
-	* lily/include/skyline.hh: new file
-
-2002-04-20  Han-Wen  <hanwen@cs.uu.nl>
-
-	* lily/accidental.cc (class Accidental_interface): grob for a
-	single accidental.
-
-	* lily/accidental-engraver.cc (number_accidentals): Cleanups. Lots
-	of reformatting
-
-	* lily/new-accidental-engraver.cc (acknowledge_grob): Work
-	together with new accidental-interface. 
-
-	* lily/include/*.hh: remove spurious set_interface() decls.
-
-	* lily/key-signature-interface.cc (brew_molecule): add padding for
-	natural signs. Make natural typesetting like the sharp.
-	
-
-	* mf/feta-klef.mf: rewrote portion of the G-clef code. Downstroke
-	is now slightly curved, not straight.
-	
-
-2002-04-18  Heikki Junes <hjunes@cc.hut.fi>
-
-	* lilypond-mode.el: Toggles font-lock-multiline (Emacs 21.1 or newer).
-
-	* lilypond-font-lock.el: Handles multiline-strings. Fontifies notes 
-	more strictly. Use more clever regular expressions. Commented regexps.
-
-2002-04-16  Heikki Junes <hjunes@cc.hut.fi>
-
-	* lilypond-mode.el: "C-c f" does font-lock-fontify-buffer.
-
-2002-04-15  Juergen Reuter  <reuter@ipd.uka.de>
-
-	* scm/grob-description.scm, lily/staff-symbol.cc: added properties
-	to control width of staff symbol in ragged-right mode (by request
-	of Han-Wen)
-
-	* ly/engraver-init.ly, lily/include/my-lily-parser.hh,
-	lily/include/ligature-bracket.hh, lily/lexer.ll, lily/parser.yy,
-	lily/ligature-bracket.cc, lily/ligature-bracket-engraver.cc:
-	added support for ligature brackets (needed when transcribing
-	mensural music)
-
-2002-04-15  Heikki Junes <hjunes@cc.hut.fi>
-
-	* lilypond-font-lock.el: Handle scheme-slurs up to seventh level.
-	Fontify notes more strictly.
-
-2002-04-15  Han-Wen  <hanwen@cs.uu.nl>
-
-	* mf/feta-din-code.mf: dynamic z sign.
-
-2002-04-13  Heikki Junes <hjunes@cc.hut.fi>
-
-	* lilypond-mode.el: Prevent recoloring strings and comments.
-
-	* lilypond-font-lock.el: Handle block comments: block comments
-	can have also ordinary comments inside.
-	
-2002-04-13  Han-Wen  <hanwen@cs.uu.nl>
-
-	* lily/stem.cc (get_default_dir): set direction to CENTER if
-	invisible. Various other fixes to deal with invisible stems and
-	stem-direction == CENTER.
-
-	* lily/rest-collision.cc (do_shift): take direction from note if
-	not set.
-
-	* input/regression/tie-grace.ly: new file.
-
-	* lily/tie-engraver.cc (create_grobs): fix tied graces.
-
-	* lily/note-spacing.cc (stem_dir_correction): set fixed space for
-	knee correction. Fixes tight spacing for knees.
-
-2002-04-12  Han-Wen Nienhuys  <hanwen@cs.uu.nl>
-
-	* VERSION: 1.5.52 released
-	
-	* lily/*.cc: add some undocced properties.
-	scm/grob-description.scm: idem.
-
-2002-04-12  Heikki Junes <hjunes@cc.hut.fi>
-
-	* lilypond-font-lock.el: Handle slurs \( and \), numbers,
-	multi-measure rests like "R1 *4" and scheme (typically has '#' 
-	in the beginning). Small fixes. Add few reserved words.
-
-2002-04-12  Jan Nieuwenhuizen  <janneke@gnu.org>
-
-	* Documentation/topdocs/INSTALL.texi: Updates for MacOS X and
-	emacs mode.
-
-	* Documentation/windows/installing.texi: Suggest gswin32c (console
-	program) for getting the version.  Layout fixes.
-
-2002-04-11  Jan Nieuwenhuizen  <janneke@gnu.org>
-
-	* Documentation/user/tutorial.itely (Running LilyPond):  Separate
-	windows viewing commands, remove silly comment about Yap.
-
-2002-04-10  Mats Bengtsson  <matsb@s3.kth.se>
-	
-	* Documentation/topdocs/INSTALL.texi: Describe how to learn
-	configure to find kpathsea on for example Slackware 8.0.
-
-	* scripts/ly2dvi.py (non_path_environment): Set $TEXMF correctly.
-
-        * scm/grob-description.scm (MultiMeasureRest): number-threshold=1
-        by default: avoid "1" over single bar rests.
-
-	* scripts/lilypond-book.py (LatexPaper.set_geo_option): Simplify
-	and correct the handling of geometry options.
-
-2002-04-10  Han-Wen Nienhuys  <hanwen@cs.uu.nl>
-
-	* lily/include/grob-interface.hh (ADD_INTERFACE): make
-	implementation for Class::has_interface automatically. Junk all
-	other implementations.
-
-	* lily/grob.cc (internal_get_grob_property): also typecheck
-	property reads. Catches even more undocced properties. Bugfixing
-	left for the uninspired masses.
-
-	* lily/beam.cc: remove end_after_line_breaking().
-
-	* lily/grob.cc (calculate_dependencies): remove list support for
-	callbacks.
-
-	* lily/font-size-engraver.cc: only do font-interface.
-
-2002-04-10  Heikki Junes <hjunes@cc.hut.fi>
-
-	* lilypond-font-lock.el: Handle notes with cautionary accidentals.
-	  Add few keywords.
-
-2002-04-09 Chris Jackson <chris@fluffhouse.org.uk>
-
-	* lily/arpeggio.cc: New function brew_chord_bracket to draw chord
-	brackets using arpeggio requests.
-	
-	* ly/property-init.ly: Shorthand \arpeggioBracket defined as the
-	molecule-callback to use for drawing the brackets.
-
-	* Documentation/user/refman.itely: 
-	* input/test/chord-bracket.ly: Chord brackets documented
-	
-2002-04-10  Han-Wen  <hanwen@cs.uu.nl>
-
-	* mf/feta-din-code.mf: tweaks for p, s. New dynamic r sign. 
-
-	* mf/feta-eindelijk.mf: tweak for eighth rest: move bulb up.
-
-2002-04-09  Han-Wen Nienhuys  <hanwen@cs.uu.nl>
-
-	* lily/tuplet-bracket.cc (after_line_breaking): bugfix for forced
-	direction tuplets on beams.
-
-2002-04-08  Chris Jackson <chris@fluffhouse.org.uk>
-
-	* lilypond-indent.el: Bugfix of indentation of final point in buffer
-
-2002-04-09  Heikki Junes <hjunes@cc.hut.fi>
-
-	* lilypond-mode.el: new command: LilyPond-un-comment-region.
-	Added 2Midi to "Command"-menu. Inspired by latex.el and tex.el: 
-	separate "Command"-menu and "LilyPond"-menu. Added "Miscellanous"-
-	submenu to "LilyPond"-menu.
-
-	* lilypond-mode.el: Added "Midi all" to "Command"-menu, i.e.,
-	an interface to play midi.
-
-2002-04-08  Han-Wen Nienhuys  <hanwen@cs.uu.nl>
-
-	* input/regression/script-stack-order.ly: new file.
-
-2002-04-08  Han-Wen  <hanwen@cs.uu.nl>
-
-	* VERSION (MY_PATCH_LEVEL): Release 1.5.51.
-
-	* mf/feta-din-code.mf: kerning for dynamics.
-
-2002-04-07  Han-Wen  <hanwen@cs.uu.nl>
-
-	* input/regression/dynamics-glyphs.ly: new file
-
-	* mf/feta-din-code.mf: dynamic tweaks. New dynamic s.
-
-	* mf/feta-nummer-code.mf: another bulb routine: mimic the bulb of
-	forte f for the 2 number. Some fixes for the other bulbed glyphs.
-
-	* Documentation/windows/gs-profile.sh:
-	* Documentation/windows/gsview-profile.sh: Remove.  Functionality
-	moved to gs/gsview windows packages.
-
-2002-04-06  Mats Bengtsson  <matsb@s3.kth.se>
-
-	* lily/stem-engraver.cc (acknowledge_grob): Revert to old way of
-	finding out the duration. Fixes chord tremolo bug. 
-
-	* lily/completion-note-heads-engraver.cc (process_music): Set
-	correct duration for all requests of the broken notes.
-
-	* input/regression/completion-heads.ly: Added example of
-	Completion_heads_engraver.
-
-	* lilypond-mode.el: Added "2Midi" command
-
-2002-04-06  Chris Jackson <chris@fluffhouse.org.uk>
-
-	* lily/tuplet-bracket.cc, scm/grob-description.scm: New
-	edge-width, edge-height and shorten-pair properties for tuplet
-	brackets.
-
-	* lilypond-indent.el: Support for blinking of matching parentheses
-	
-	* lilypond-font-lock.el: Fix fontification of closing > on its own line
-	
-	* lily/piano-pedal-engraver.cc, lily/text-spanner.cc: Fixes and
-	cleanups of piano pedal brackets.
-
-2002-04-05  Han-Wen  <hanwen@cs.uu.nl>
-
-	* mf/cmbase.mf: remove file. -- do without s, r and z signs for now.
-
-2002-04-04  Han-Wen  <hanwen@cs.uu.nl>
-
-	* mf/feta-new-code.mf:  new dynamic f sign.
-	new dynamic m sign.
-
-2002-04-03  Han-Wen  <hanwen@cs.uu.nl>
-
-	* mf/feta-new-code.mf: new dynamic p sign.
-
-2002-04-02  Han-Wen Nienhuys  <hanwen@cs.uu.nl>
-
-	* lily/note-spacing.cc (stem_dir_correction): only do
-	beam-correction if a beam is there. 
-
-	* lily/stem.cc (duration_log): change from flag_i (); better
-	naming.
-	(get_default_stem_end_position): fix dot/flag collision code.
-
-2002-04-02  Han-Wen  <hanwen@cs.uu.nl>
-
-	* VERSION: release 1.5.50
-
-	* lily/spaceable-grob.cc (add_spring): change incorrect spring to
-	unit spring here. Reduces number of warning messages.
-
-	* lily/auto-beam-engraver.cc: change noAutoBeaming to autoBeaming.
-
-2002-04-01  Han-Wen  <hanwen@cs.uu.nl>
-
-	* scm/generic-property.scm: remove generic-property, property-engraver
-
-	* lily/volta-bracket.cc (brew_molecule): use Lookup::line() for bracket
-
-	* lily/hairpin.cc (brew_molecule): use Lookup::line() for hairpins.
-
-	* ps/music-drawing-routines.ps: remove volta, tuplet, hairpin routines.
-
-	* scm/*.scm: remove volta, hairpin and tuplet functions.
-
-	* lily/rhythmic-column-engraver.cc (acknowledge_grob): don't make
-	note column for notes/stems/dots that already have parents. Fixes
-	nested grace contexts.
-
-2002-04-01  Jan Nieuwenhuizen  <janneke@gnu.org>
-
-	* input/mozart-hrn-3.ly: Tweak Slur.beautiful, so that we don't
-	get too curved slurs.
-
-	* scm/slur.scm (default-slur-extremity-offset-alist) 
-	(default-phrasing-slur-extremity-offset-alist): Move slur
-	attachments further away from note-head, vertically.  Also, leave
-	a horizontal gap between slur and stem end.
-
-	* lily/beam.cc (get_interbeam): Bugfix: don't look in empty list.
-
-2002-04-01  Han-Wen  <hanwen@cs.uu.nl>
-
-	* input/regression/spacing-grace-duration.ly: new file
-
-	* lily/spacing-engraver.cc (acknowledge_grob): ignore grace notes
-	for shortest durations.
-
-	* lily/multi-measure-rest.cc (set_spacing_rods): tune rods to the
-	extent of the mm rest. 
-
-	* lily/spacing-spanner.cc (get_duration_space): better spacing for
-	really short notes.
-
-	* lily/tuplet-bracket.cc (make_bracket): new function
-	(get_x_offset): new function; make tuplet brackets align on stems
-	if stem has same direction.
-	(parallel_beam): be anal about matching bracket to tuplet.
-
-	* lily/lookup.cc (line): new function Lookup::line(). 
-
-	* scm/tex.scm (dashed-line): change -line to -system in names.
-
-	* lily/box.cc (add_point): new function.
-
-	* flower/include/interval.hh: new function add_point ().
-	new function widen()
-	
-2002-04-01  Jan Nieuwenhuizen  <janneke@gnu.org>
-
-	* input/mozart-hrn-3.ly: Mimic Breitkopf fonts and padding.
-
-	* scm/grob-property-description.scm (number-threshold): Add
-	description.
-
-	* lily/multi-measure-rest.cc (brew_molecule): Only put number over
-	rest if #measures > number-threshold.  Use padding (well, fake
-	using it, anyway).
-
-	* scm/font.scm (make-style-sheet): New styles: mark-number,
-	mark-letter.
-	(paper20-style-sheet-alist): Add bigger bold fonts.
-
-	* lily/mark-engraver.cc (process_music): Use style mark-number or
-	mark-letter.
-
-	* .cvsignore: Ignore all kinds of lilypond input and output.
-
-	* lily/beam.cc (ADD_INTERFACE): Add concaveness-gap.
-
-2002-04-01  Han-Wen  <hanwen@cs.uu.nl>
-
-	* lily/staff-symbol.cc (brew_molecule): make line thickness
-	adjustable.
-
-	* lily/*.cc: replace stafflinethickness by linethickness.
-
-2002-04-01  Jan Nieuwenhuizen  <janneke@gnu.org>
-
-	* input/regression/beam-concave.ly: Add to-be-considered-concave
-	beam.
-
-	* lily/beam.cc (check_concave): Add check for large gap between an
-	inner notehead and the line through outer noteheads.
-
-	* scm/grob-description.scm (Beam): Add concaveness-gap, default
-	value 2.0 staff-space.
-	
-	* scm/grob-property-description.scm (concaveness-gap): Add
-	description.
-
-	* input/mozart-hrn3-allegro.ly: Fix typo.
-
-2002-03-31  Juergen Reuter  <reuter@ipd.uka.de>
-
-	* scm/ps.scm, ps/music-drawing-routines.ps, lily/lookup.cc,
-	lily/note-head-engraver: improved implementation of roundfilledbox
-	(according to Han-Wen's request)
-
-	* lily/include/spacing-spanner.hh, lily/spacing-spanner.cc,
-	lily/gourlay-breaking.cc, lily/staff-symbol.cc,
-	lily/simple-spacer.cc: ragged-right alignment
-
-2002-03-29  Han-Wen  <hanwen@cs.uu.nl>
-
-	* input/regression/spacing-note-flags.ly: new file
-
-	* input/regression/spacing-rest.ly: new file
-
-	* mf/feta-eindelijk.mf: make bbox of quarter rest tighter.
-
-	* lily/spacing-spanner.cc (note_spacing): make note spacing after
-	all grace notes tight (not only the column directly following a
-	grace note).
-
-	* scm/grob-description.scm (all-grob-descriptions): don't make
-	mm-rests larger than normal.
-
-	* mf/feta-banier.mf: make upflag narrower. Make end of flag more
-	curved. Remove white space at the right of flags.
-
-2002-03-28  Jan Nieuwenhuizen  <janneke@gnu.org>
-
-	* ports/ports.make: Bugfix: ignore CVS directories.
-
-	* stepmake/.cvsignore: New file.
-
-2002-03-28  Han-Wen  <hanwen@cs.uu.nl>
-
-	* lily/note-spacing.cc (stem_dir_correction): don't correct when
-	there is a flag on the stem.
-
-	* lily/multi-measure-rest.cc (brew_molecule): variable width molecule.
-
-	* scm/grob-property-description.scm (measure-length):
-	measure-length grob property.
-
-	* lily/spacing-spanner.cc (standard_breakable_column_spacing):
-	better spacing for breakable columns when they're juxtaposed: use
-	measure length if applicable
-
-	* lily/timing-engraver.cc (start_translation_timestep): store
-	measure length in breakable column at start of measure.
-
-2002-03-28  Jan Nieuwenhuizen  <janneke@gnu.org>
-
-	* ROADMAP: Add description for ports dir, to check email upon
-	commit.
-
-2002-03-27  Han-Wen  <hanwen@cs.uu.nl>
-
-	* VERSION: 1.5.48 released
-	
-	* lily/multi-measure-rest.cc (symbol_molecule): split off from
-	brew_molecule()
-	(set_spacing_rods): Use symbol_molecule() to determine minimum
-	width
-	(church_rest): split off from brew_molecule()
-	(big_rest): split off from brew_molecule(). Construct using
-	variable shape.
-	
-	* mf/feta-eindelijk.mf: junk multi measure rest.
-
-2002-03-26  Han-Wen  <hanwen@cs.uu.nl>
-
-	* lily/multi-measure-rest.cc (add_column): remove columns property.
-
-	* lily/dynamic-engraver.cc (process_music): add more verbose warning
-
-	* input/mozart-hrn3-romanze.ly (romanze): add mozart horn concerto
-	3 as test piece.
-
-2002-03-26  Heikki Junes <hjunes@cc.hut.fi>
-
-	* lilypond-font-lock.el (LilyPond-font-lock-keywords): most new
-	keywords covered, dropped some non-keywords, include R- and 128-notes
-
-2002-03-25 Juergen Reuter <reuter@ipd.uka.de>
-
-	* Code clean-up: Junk multiple implementations of ledger line
-	creation in note_head, custos, and porrectus.  This is important
-	since there soon will be some more applications of ledger lines to
-	come (e.g. ambitus engraver).
-
-	* Make thickness of ledger lines adjustable.  This is essential
-	for mensural notation.
-
-	* Fix some bugs in the current ledger_line implementation, most
-	notably that of the horizontal extent of ledger lines which equals
-	at least the extent of the metafont ledger_line character, and
-	which grows(!) if the desired extent shrinks below this limit.
-
-	* roundfilledbox: variable blotdiameter
-
-2002-03-24  Han-Wen  <hanwen@cs.uu.nl>
-
-	* VERSION: 1.5.47 released
-
-	* lily/line-spanner.cc (line_atom): change line-thickness to thickness
-
-	* lily/porrectus.cc:  change line-thickness to thickness, change
-	stem-direction to direction.
-
-	* scm/backend-documentation-lib.scm (check-dangling-properties):
-	Automatically detect doc'ed properties that are not in an interface
-
-	* scm/grob-property-description.scm: property cleanup. Remove many
-	paper-column props that are non-existent.
-
-	* lily/grob.cc (Grob): only use molecule_extent_proc as default if
-	the grob has a molecule-callback.
-
-	* lily/*.cc: remove many set_interface() calls, and their
-	implementations.
-
-	* input/regression/spacing-knee.ly: new file
-
-	* input/regression/spacing-clef-first-note.ly: new file
-
-	* lily/staff-spacing.cc (get_spacing_params): different spacing
-	for pref matter to note at start of line, halfway during line.
-
-	* lily/note-spacing.cc (stem_dir_correction): apply 2nd stem direction
-	correction only if stems have same direction (i.e. not for
-	stem-clef combination).
-	(stem_dir_correction): maximal correction for knees.
-
-	* lily/*.cc: many updates to interface descriptions.
-	
-	* lily/grob.cc (internal_set_grob_property): add interface check
-	for every set_grob_property call
-
-	* lily/*.cc: document interface stuff in C++
-	
-	* lily/grob-interface.cc: new file. Add grob interfaces from C++. 
-
-	* lily/volta-bracket.cc: naming: change volta spanner to
-	volta-bracket.
-
-	* input/bugs/*.ly: cleanup, remove lots of files.
-	
-	* buildscripts/mf-to-table.py (write_ps_encoding): generate
-	.encoding file. WARNING: upgrade to pktrace 1.0.3
-
-	* mf/feta-toevallig.mf: change PS name for parentheses.
-
-2002-03-23  Mats Bengtsson  <mats.bengtsson@s3.kth.se>
-
-       * scripts/ly2dvi.py (ly_paper_to_latexpaper): Use the correct unit
-       also for textheight
-
-2002-03-23  Han-Wen  <hanwen@cs.uu.nl>
-
-	* lily/scope.cc: remove file .
-
-	* lily/include/scope.hh: remove file. Remove Scope class
-
-	* VERSION: 1.5.46
-
-	* lily/beam.cc (score_slopes_dy, score_stem_lengths,
-	score_forbidden_quants): ): take out of SCM, pass parameters so
-	grob props are read only once. (wtk1-fugue2 from 31 sec to 14
-	secs).
-	(calc_stem_y): robustness: take care of last_visible_stem == 0.
-
-
-	* lily/lily-guile.cc (ly_unit): return internal unit.
-
-	* scm/tex.scm (header-end): insert scaling factor, using ly-unit 
-
-	* lily/paper-outputter.cc (output_version): output internal unit
-	from Paper_outputter
-
-	* scripts/ly2dvi.py: Read unit from paper vars (43.jcn3).
-
-2002-03-22  Mats Bengtsson  <mats.bengtsson@s3.kth.se>
-
-       * scripts/ly2dvi.py: clean up old .*pk font caching code.
-
-       * scm/ps.scm: Use uppercase postscript font names for the standard
-       TeX fonts.
-
-       * scripts/ly2dvi.py, buildscripts/lilypond-{login,profile}.sh, :
-       Add all available TeX Type1 fonts, including Feta, to the
-       Ghostscript font path.
-
-       * Documentation/topdocs/INSTALL.texi (Top): Add required pktrace
-       version (affects the FontName) in lilypond.map.
-
-       * mf/GNUmakefile, Documentation/user/appendices.itely: Rename font
-       documentation file to fetaNNlist.ly to avoid name collisions between
-       lilypond generated .tex file and font .tex macros file.
-
-
-2002-03-22  Juergen Reuter <reuter@ipd.uka.de>
-
-	* mf/feta-eindelijk.mf, mf/parmesan-rests.mf: added maxima rests;
-	made mensural longa and (semi-)brevis leaner
-
-	* mf/parmesan-clefs.mf, scm/clef.scm: enhanced petrucci c clef
-
-	* lily/{{lookup,porrectus}.cc,include/{lookup,porrectus}.hh}: code
-	clean-up: moved bezier shape and slope from porrectus to lookup
-
-	* buildscripts/clean-fonts.sh: added search paths /var/cache/fonts
-	and /usr/share/texmf/fonts
-
-	* scripts/ly2dvi.py: Read unit from paper vars (43.jcn3).
-
-2002-03-22  Han-Wen  <hanwen@cs.uu.nl>
-
-	* lily/text-spanner.cc (brew_molecule): add #'thickness
-	(brew_molecule): add corrections for thickness in molecule padding.
-
-	* lily/line-spanner.cc (line_atom): make function private
-
-	* scripts/lilypond-book.py (get_bbox): Use GS -sDEVICE=bbox to
-	discover bounding box. This solves the cropping problem.
-
-	* lily/bar-check-iterator.cc (process): Only resynchronize bar
-	check when it  fails. This fixes the combination of  grace notes
-	and bar checks.
-
-2002-03-21  Han-Wen  <hanwen@cs.uu.nl>
-
-	* lily/repeated-music.cc (minimum_start): new Scheme callable function
-	(first_start): new Scheme callable. This will fix repeated music
-	starting with grace notes.
-
-	* lily/music.cc (start_mom): check start-moment-function grob property.
-
-	* VERSION: 1.5.45 released
-
-	* input/regression/system-extents.ly: new regression test. Test
-	System extents. 
-
-	* lily/system.cc: rename LineOfScore into System 
-
-	* lily/molecule.cc (ly_add_molecule): new Scheme ly-add-molecule.
-
-	* lily/grob.cc (ly_get_parent): new Scheme function ly-get-parent.
-	(ly_get_extent): new Scheme function ly-get-extent
-
-	* ps/lilyponddefs.ps: use output-scale for  line-x
-	definition. 
-
-	* scm/ps.scm (font-load-command): 
-	use output-scale
-
-2002-03-20  Rune Zedeler <rune@zedeler.dk>
-	
-	* lily/beaming-info.cc: Stupid typo fixed
-	
-	* lily/accidental-engraver.cc: rewrote accidental-routines to get
-	support for cross-context auto-accidentals.
-	Now the engraver can stay in Staff-context and see other contexts
-	from there.
-	Changed properties: autoAccidentals, autoCautionaries
-
-	* lily/translator-group.cc (set_children_property):
-	Function added recursively setting the same property (deep_copied)
-	for all children of a Translator_group.
-	
-	* ly/property-init.ly: added commands
-	\pianoAccidentals \voiceAccidentals
-	\modernVoiceAccidentals \modernVoiceCautionaries
-
-	* ly/engraver-init.ly: Correct initialization of new accidentals.
-	
-	* scm/translator-property-description.scm: Updated
-	
-	* input/regression/accidental-voice.ly: Added
-	
-	* Documentation/regression-test.tely: Added new test	
-
-2002-03-19  Han-Wen Nienhuys  <hanwen@cs.uu.nl>
-
-	* VERSION: 1.5.44 released
-
-	* lily/slur.cc (set_extremities): robustness fixes for #'attachment.
-
-	* scripts/lilypond-book.py (bounding_box_dimensions): bugfix.
-
-	* ly/params-init.ly (blotdiameter): use unit for blotdiameter, set
-	at 0.4 pt.
-
-	* tex/feta*.tex: remove.
-	
-	* stepmake/aclocal.m4: remove stepmake symlink. It confuses almost
-	all software dealing with it.
-
-2002-03-20  Jan Nieuwenhuizen  <janneke@gnu.org>
-
-	* mf/GNUmakefile (lilypond.map): Don't prepend TeX to font name
-	(this fixes pdf output).  Drop awk dependency.
-
-	* scripts/ly2dvi.py (ly_paper_to_latexpaper): Assume LilyPond's
-	dimensions (linewidth) are in mm.
-
-	* mf/GNUmakefile (depth): Always allow manual access to pfa target.
-
-	* tex/lily-ps-defs.tex: scaletounit using PT/IN==72.
-
-	* lily/slur.cc (get_attachment): Bugfix: correct for stem thickness.
-
-2002-03-19  Han-Wen  <hanwen@cs.uu.nl>
-
-	* VERSION: 1.5.43 released
-
-	* scm/beam.scm (beam-dir-majority-median): if majority is
-	undecided, use median. Removes a forced dir in sarabande.
-
-	* mf/feta-schrift.mf: Trill fixes, Vee fixes (upbow, ltoe, rtoe)
-
-2002-03-18 Chris Jackson <chris@fluffhouse.org.uk>
- 
- 	* lily/text-spanner.cc, lily/piano-pedal-engraver.cc: Cleanups. Edge
- 	widths, heights and shortens are now customisable properties.
- 
- 	* scm/grob-description.scm, scm/grob-property-description.scm: New
- 	properties added to PianoPedalBracket, unnecessary
- 	Y-offset-callbacks removed from *Pedal, undocumented properties
- 	fixed.
- 
- 	* Documentation/user/refman.itely: Piano pedal updates.
-
-2002-03-18  Jan Nieuwenhuizen  <janneke@gnu.org>
-
-	* scm/grob-property-description.scm:
-	* scm/interface-description.scm: Remove old stuff.
-
-	* scm/grob-description.scm (StemTremolo): Change beam-thickness to
-	0.48 (previously 0.42).
-	(Beam): Remove old stuff.
-
-	* lily/stem.cc: 
-	* lily/stem-tremolo.cc: 
-	* lily/beam.cc: 
-	* scm/beam.scm: Remove old stuff.  Use Beam::get_interbeam ()
-	(previously space-function).
-
- 	* stepmake/bin/add-html-footer.py: Website title fix.
-
-2002-03-18  Han-Wen Nienhuys  <hanwen@cs.uu.nl>
-
-	* scripts/ly2dvi.py (environment): use new font searching setup.
-
-	* lily/afm.cc (afm_bbox_to_box): make code dimension independent
-
-	* lily/tfm.cc (dimensions): make code dimension independent
-
-	* ps/lilyponddefs.ps: add constant for MM and true/ps-point
-	scaling
-
-	* tex/lily-ps-defs.tex: scaling for PS points and MM.
-
-	* lily/include/dimensions.hh: try MM as internal unit.
-
-	* scm/*.scm: remove invoke-dim1
-
-2002-03-17  Han-Wen  <hanwen@cs.uu.nl>
-
-	* GNUmakefile.in (fontpaths): add fontpaths target,
-
-	* make/mutopia-targets.make: add PDF rules.
-
-	* make/mutopia-rules.make: add pdf rule.
-
-	* buildscripts/mutopia-index.py (list_item): add PDF.
-
-	* buildscripts/lilypond-profile.sh (TEXMF): typo.
-
-	* make/lilypond-vars.make: set TEXMF for the new font setup.
- 
-2002-03-17  Han-Wen  <hanwen@cs.uu.nl>
-
-	* VERSION: 1.5.42 released
-	
-	* mf/feta-schrift.mf: endless twiddling of Tr.
-
-	* mf/feta-eindelijk.mf: 8th rest: make darker, top of brush lower, and
-	endless twiddling with the bulb shape.
-
-	* lily/note-head.cc (internal_brew_molecule): make ledger lines a
-	little smaller if there is an accidental.
-
-2002-03-15  Mats Bengtsson  <mats.bengtsson@s3.kth.se>
- 
- 	* buildscripts/lilypond-profile.sh: 
- 
- 	* mf/GNUmakefile (INSTALLATION_OUT_DIR*),
- 	buildscripts/lilypond-login.sh, buildscripts/lilypond-profile.sh:
- 	Implement new font installation strategy
- 
- 	* Documentation/misc/fontinstallation (TEXMF): Documentation of
- 	the new font installation strategy.
- 
- 	* lilypond-mode.el (LilyPond-mode-map): Add shortcut "CTRL-c ;"
- 	for comment-region.
- 
- 	* input/test/staff-size.ly: Simplified using StaffContainer
- 
- 	* mf/GNUmakefile (ALL_GEN_FILES): Actually generate the
- 	lilypond.map file
-
-2002-03-17  Jan Nieuwenhuizen  <janneke@gnu.org>
-
-	* scm/ps.scm (bezier-sandwich): Draw circles at slur ends.
-
-	* lily/beam.cc (score_stem_lengths): new quanting stuff
-	(score_forbidden_quants): Second and third beam quant stuff.
-
-2002-03-16  Jan Nieuwenhuizen  <janneke@gnu.org>
-
-	* lily/beam.cc (least_squares): Remember least-squares-dy for
-	later use.
-	(quantise_interval): Don't quant to dy steeper that
-	least-squares-dy.  Return empty interval if no sane quants found.
-	(quantise_position): Try quantise_interval until we have
-	acceptable solution.
-
-2002-03-15  Jan Nieuwenhuizen  <janneke@gnu.org>
-
-	* scm/interface-description.scm (beam-interface): Update.
-
-2002-03-15  Han-Wen Nienhuys  <hanwen@cs.uu.nl>
-
-	* VERSION: 1.5.41 released
-	
-	* mf/feta-schrift.mf: make Tr. smaller, smoother and closer.  Use
-	optima serifs on top of t, bottom of r.
-
-	* mf/feta-bolletjes.mf: make ledger line rounder. 
-
-	* mf/feta-toevallig.mf: some smallish fixes for flat sign.
-
-	* mf/feta-eindelijk.mf: make 8th rest a little darker, some more
-	parametrization.
-
-2002-03-15 Chris Jackson <chris@fluffhouse.org.uk>
- 
-       * lily/piano-pedal-engraver.cc: Rewritten to support bracketed as
-       well as text pedal indications and a combination of both.  All
-       pedal indications are horizontally aligned on a line spanner.
- 
-       * lily/text-spanner.cc: Edge-width property added to use in
-       bracketed piano pedals. Function setup_sustain_pedal added to set
-       the dimensions of the brackets. 
- 
-       * scm/grob-description.scm: New *PedalLineSpanner grobs added, and 
-       some of the *Pedal properties tweaked. 
- 
-       * scm/grob-property-description.scm: New pedal-type (*Pedal) and
-       edge-width (TextSpanner) properties.
- 
-       * ly/engraver-init.ly: Default strings added for SostenutoPedal. 
- 
-       * lilypond-font-lock.el: sostenuto, unaCorda and treCorde added to
-       fontified identifiers list.
- 
-       * input/test/pedal.ly: New pedal features added. 
- 
-       * Documentation/user/refman.itely: New pedal features documented.
-       
-
-2002-03-15  Jan Nieuwenhuizen  <janneke@gnu.org>
-
-	* lily/include/new-beam.hh: Previously new-beam.hh
-	* lily/beam.cc: Previously new-beam.cc
-	(least_squares): Bugfix: don't barf on beams with less than two
-	visible stems (tremolos).
-
-	* scm/beam.scm: 
-	* scm/grob-description.scm (Beam): Junk old beam stuff.
-	
-	
-2002-03-14  Han-Wen Nienhuys  <hanwen@cs.uu.nl>
-
-	* VERSION: 1.5.40
-
-	* mf/feta-eindelijk.mf: new 8th rest.
-
-	* mf/feta-toevallig.mf: small fixes for the sharp symbol. Don't
-	stick out of staffline
-
-	* scripts/lilypond-book.py: fixes for texi regular expressions.
-
-2002-03-14  Jan Nieuwenhuizen  <janneke@gnu.org>
-
-	* lily/include/new-beam.hh:
-	* lily/new-beam.cc: New file.
-
-	* flower/include/interval.hh: 
-	* flower/include/interval.tcc (delta): New method.
-	(swap): Now public (previously private).
-	
-	* scm/beam.scm (default-beam-y-quants): Bugfix: lower beam-sit by
-	1 staff-line-thickness.  Sadly, this makes dy quanting problems
-	(dy quants allowed should depend on actual left y) more visible.
-
-2002-03-13  Jan Nieuwenhuizen  <janneke@gnu.org>
-
-	* lily/beam.cc (quantise_dy): Bugfix: sign (0) = 0.  Hmm.
-
-	* scm/grob-property-description.scm (concaveness-threshold): Add
-	typecheck and description.
-
-	* scm/grob-description.scm (Beam): Remove obsolete properties, add
-	concaveness-threshold (previously concaveness).
-
-	* lily/beam.cc (check_concave): Remove choices and debugging
-	stuff: use best concaveness calculation.
-	(quantise_dy): Remove choice.  Try to never make a slope steeper
-	by quantising, but certainly never quantise a slope away.
-	(check_stem_length_f): Remove choice.  In case of lengthening
-	alowed, always lengthen to ideal length.
-
-	* Documentation/index.texi: Fix FAQ url.
-
-	* Documentation/topdocs/INSTALL.texi: Add information about fink,
-	compile fix and 1.4 specific fix that doesn't hurt 1.5.
-
-2002-03-13  Han-Wen  <hanwen@cs.uu.nl>
-
-	* VERSION: 1.5.39 released
-
-	* lily/simple-spacer.cc (add_rod): rods take precedence over
-	infinitely stiff springs. This fixes bugs with arpeggios and bar-lines.
-
-	* lily/arpeggio-engraver.cc (acknowledge_grob): clean up.
-
-	* lily/note-spacing.cc (get_spacing): only insert space for
-	accidentals if necessary.
-
-	* input/regression/spacing-accidental-staffs.ly (texidoc): update example
-
-	* lily/spacing-spanner.cc (musical_column_spacing): new
-	function. Have correct spacing from note to end-of-line as well.
-
-2002-03-12  Jan Nieuwenhuizen  <janneke@gnu.org>
-
-       * Documentation/topdocs/INSTALL.texi: Add section for MacOS X.
-
-       * darwin.patch: New file.
-
-       * lily/beam.cc (set_stem_shorten): Revive deceased stem shorten
-       code.  Shorten stems by fraction of stems to be shortened.
-
-       * lily/stem.cc (get_default_stem_end_position): Shorten only half
-       of shorten value for boundary cases.
-
-       * scm/grob-description.scm (Stem): Set stem-shorten to (1.0 0.5).
-       (Beam): Set beamed-stem-shorten to (1.0 0.5).
-
-2002-03-11  Jan Nieuwenhuizen  <janneke@gnu.org>
-
-       * lily/beam.cc (check_stem_length_f): Try to lenthen more.
-
-       * scm/grob-description.scm (Beam): Add concaveness.  Replace
-       Beam::cancel_suspect_slope with Beam::check_concave.
- 
-       * lily/beam.cc (check_concave): Calculate concaveness of beam, and
-       set slope to horizontal if concaveness > Beam.concaveness.  This
-       handles cases that kludgy cancel_suspect_slope was meant to catch
-       very well.
-       (cancel_suspect_slope): Remove.
-
-2002-03-12 Rune Zedeler <rune@zedeler.dk>
-
- 	* lily/beam.cc lily/stem.cc lily/beam-engraver.cc: allow for
- 	stemLeftBeamCount and stemRightBeamCount to equal 0.
- 	Fixes [c8 c4 c8]
-      
-2002-03-12  Han-Wen  <hanwen@cs.uu.nl>
-
-	* lily/spacing-spanner.cc (breakable_column_spacing): Only do
-	fixed spacing for pref matter, if the next column is musical, and
-	at the same moment.
-
-	* lily/note-spacing.cc (stem_dir_correction): Use correct
-	discretionary for stem-bar spacing.
-
-2002-03-11  Han-Wen  <hanwen@cs.uu.nl>
-
-	* VERSION: 1.5.38 released 
-
-	* lily/grob.cc (warning): Use cause tracking to give more
-	meaningful errors from the backend. 
-
-	* lily/property-iterator.cc (check_grob): Warn if setting grob
-	property in unknown grob. 
-
-	* mf/feta-toevallig.mf: brushed stems for natural sign.
-
-	* lily/molecule.cc (align_to): don't translate empty molecule.
-	(this triggers a very subtle bug in time-signature.)  
-
-2002-03-10  Han-Wen  <hanwen@cs.uu.nl>
-
-	* lily/spring.cc: remove file.
-
-	* input/regression/spacing-stem-bar.ly: new file
-
-	* lily/score.cc (run_translator): resurrect point-and-click
-
-	* input/baerenreiter-sarabande.ly: Copy Barenreiter beaming for
-	sarabande layout
-
-	* lily/spacing-spanner.cc (find_shortest): Shortest note for
-	spacing is now globally determined, using the most common shortest
-	note. Notes that are shorter are spaced geometrically, and with
-	expand hints. This makes spacing more even, and measures that have
-	very short notes won't be that stretched out.  
-
-	* mf/feta-klef.mf: F-clef fixes, documentation on the
-	shape. (WARNING: font changed.)
-
-2002-03-09  Han-Wen  <hanwen@cs.uu.nl>
-
-	* lily/simple-spacer.cc (add_columns): support for infinitely
-	stiff springs.
- 
-	* lily/staff-spacing.cc (get_spacing_params): space after
-	prefatory matter is fixed.
-
-2002-03-08  Han-Wen  <hanwen@cs.uu.nl>
-
-	* lily/note-spacing.cc (stem_dir_correction): Correct spacing for
-	barline following an upstem.
-
-	* lily/staff-spacing.cc (extremal_break_aligned_grob): destill
-	function from next_notes_correction().
-	(bar_y_positions): idem.
-
-2002-03-04  Han-Wen Nienhuys  <hanwen@cs.uu.nl>
-
-	* input/regression/break.ly (texidoc): bugfix: escape \ in
-	strings.
-
-	* lily/staff-spacing.cc (next_notes_correction): Correct the
-	spacing of a note following a barline.
-
-2002-03-04  Glen Prideaux
-
-	* mf/feta-solfa.mf: Shaped note heads
-
-2002-03-03  Han-Wen  <hanwen@cs.uu.nl>
-
-	* VERSION: 1.5.37 released
-
-	* lily/key-signature-interface.cc (brew_molecule): rename from key_item
-	left-align molecule.
-	
-	* lily/break-align-interface.cc (do_alignment): completely
-	rewritten. Now it does not use Align_interface anymore, but a
-	separate routine. Like StaffSpacing, it reads space-alist from the
-	breakable grobs.  This allows you to set spacing using
-	
-	\property Staff.Clef \override #'space-alist = '(....stuff....)  
- 
-	* lily/bar-line.cc, lily/include/bar-line.hh: change name from Bar
-	to Bar_line. Move files around as well.
-
-	* lily/time-signature.cc (time_signature): left align time signatures. 
-
-	* mf/feta-timesig.mf: Remove padding from C-style time signatures.
-	Corrections of the glyph shape C. Comments added.
-
-2002-03-02  Han-Wen  <hanwen@cs.uu.nl>
-
-	* lily/spacing-spanner.cc: move from third-try.cc; rename
-	Third_spacing_spanner to Spacing_spanner.
-
-	* lily/staff-spacing.cc (get_spacing_params): redo prefatory
-	spacing stuff. Much cleaner now, and we prepare for neat spacing
-	tricks around bar lines and such.
-
-	* lily/third-try.cc (prune_loose_colunms): bugfix. Don't init
-	variables with themselves. (Ouch.)
-
-	* lily/span-bar.cc (brew_molecule): don't try to span bars that
-	overlap.
-
-2002-03-02  Han-Wen  <hanwen@cs.uu.nl>
-
-	* VERSION: 1.5.36
-
-	* lily/lily-guile.cc: isdir_b and isaxis_b changed to ly_axis_p,
-	ly_dir_p
-
-	* lily/music.cc (ly_get_mus_property): typechecking
-	(ly_set_mus_property): idem
-	(ly_make_music): idem
-	(ly_music_name): idem
-
-	* lily/chord.cc: use scm_reverse_x iso. gh_reverse()
-
-	* lily/note-spacing.cc (stem_dir_correction): correction for
-	same stem notes as well. 
-
-	* lily/pitch.cc (pitch_transpose): stricter typechecking
-
-	* mf/parmesan*mf: magnification fixes.
-
-	* Documentation/topdocs/INSTALL.texi: update RedHat reqs
-
-2002-03-01  Mats Bengtsson  <mats.bengtsson@s3.kth.se>
-
-	* buildscripts/mf-to-table.py (postfixes): Output also .ly file
-	documenting the font. (Doesn't work for parmesan at the moment)
-
-	* Documentation/user/appendices.itely (The Feta font): Add list of
-	Feta font symbols with names.
-
-	* mf/GNUmakefile ($(outdir)/lilypond.map): Generate lilypond.map
-	automatically
-
-2002-03-01  Han-Wen  <hanwen@cs.uu.nl>
-
-	* lily/translator-group.cc (ly_set_trans_property): typechecking
-	(ly_get_trans_property): typechecking.
-
-	* lily/font-metric.cc (ly_text_dimension): typechecking 
-	(ly_find_glyph_by_name): idem.
-
-	* scm/bass-figure.scm (brew-complete-figure): support for
-	bracketed numbers.
-	
-	* lily/grob.cc (ly_get_paper_var): new function
-
-2002-02-28  Han-Wen Nienhuys  <hanwen@cs.uu.nl>
-
-	* VERSION (PATCH_LEVEL): 1.5.35 released.
-
-	* lily/lookup.cc (ly_bracket): Scheme function ly-bracket
-	(bracket): New function.
-
-	* lily/stem-engraver.cc (stop_translation_timestep): bugfix, unset
-	stemLeftBeamCount, stemRightBeamCount in stead of using #<undefined> 
-
-	* lily/third-try.cc (set_implicit_neighbor_columns): type checking
-	bugfix.
-
-	* lily/span-arpeggio-engraver.cc (stop_translation_timestep):
-	typecheck bugfix. 
-
-	* lily/grob.cc (ly_get_grob_property): be anal about types.
-	(ly_set_grob_property): idem
-
-	* lily/figured-bass-engraver.cc (process_music): move molecule
-	building completely to Scheme
-
-	* lily/include/musical-request.hh (class Bass_figure_req): Add
-	class. 
-
-	* lily/parser.yy (bass_figure): add support for space figure.
-
-	* lily/molecule.cc (ly_molecule_combined_at_edge): be anal about types 
-
-	* lily/font-metric.cc (ly_text_dimension): Scheme function ly-text-dimension
-
-	* lily/molecule.cc (ly_fontify_atom): new function ly-fontify-atom
-	(ly_align_to_x): new function ly-align-to!
-
-	* lily/font-interface.cc (ly_font_interface_get_font): new Scheme
-	function ly-get-font
-
-	* mf/feta-nummer.mf: include normal-space dimension. 
-
-	* lily/collision.cc (check_meshing_chords): don't merge collisions
-	with whole notes.
-	
-	* lily/system-start-delimiter.cc (after_line_breaking): Bugfix:
-	glyph is string.
-
-2002-02-28  Mats Bengtsson  <matsb@s3.kth.se>
-
-	* scm/tex.scm, scm/ps.scm (or): Bugfix, ps output with Guile 3.4
-
-2002-02-28  Juergen Reuter  <reuter@ipd.uka.de>
-
-	* mf/parmesan-heads.mf: bugfix: mensural note heads  (WARNING:
-	font changed)
-
-	* scm/output-lib.scm: bugfix: resort to neo_mensural chars rather
-	than mensural chars
-
-	* mf/parmesan-scripts.mf, mf/parmesan-generic.mf,
-	scm/grob-description.scm: added mensural fermata symbol
-
-2002-02-27  Han-Wen Nienhuys  <hanwen@cs.uu.nl>
-
-	* VERSION: 1.5.34 released.
-
-	* lily/rest-engraver.cc (create_grobs): rests can have pitches.
-
-	* lily/staff-symbol-referencer.cc (callback): assume that
-	staff-position is unset in general.
-
-	* input/regression/rest-pitch.ly: new file.
-
-	* lily/parser.yy (simple_element): rests can have pitch. Syntax:
-	a4\rest
-
-2002-02-26  Han-Wen Nienhuys  <hanwen@cs.uu.nl>
-
-	* lily/scm-option.cc (set_lily_option): add internal-type-checks
-	as Scheme option. Run regression test by default with
-	internal-type-checking.
-
-	* lily/separating-group-spanner.cc (find_musical_sequences):  removed.
-
-	* lily/lily-guile.cc (type_check_assignment): changed functions.
-
-	* scm/*description*.scm: be anal about typechecks. Some changes
-	for internal variable names.
-
-2002-02-25  Han-Wen Nienhuys  <hanwen@cs.uu.nl>
-
-	* scm/ps.scm: -f ps  output for GUILE 1.4 and 1.3.4
-
-2002-02-25  Han-Wen  <hanwen@cs.uu.nl>
-
-	* VERSION: 1.5.33 released.
-
-	* mf/feta-macros.mf (flare_path): removed draw_flare, replace by
-	flare_path everywhere (c-clef, numbers).	
-
-	* lily/bar-number-engraver.cc (process_music): also print bar
-	number if measure starts with grace note.	
-
-	* input/regression/grace-bar-number.ly: new test.
-
-2002-02-24  Han-Wen  <hanwen@cs.uu.nl>
-
-	* lily/figured-bass-engraver.cc (stop_translation_timestep): reset
-	rest as well.
-
-	* scm/music-functions.scm (voicify-music):  split chords into
-	different voices automatically.
-
-	* lily/music.cc (ly_music_list_p): new function
-
-	* lily/music-sequence.cc (do_relative_octave): robustification
-
-	* scm/music-functions.scm: many utility functions 
-
-	* lily/music.cc (ly_set_mus_property): add type checks to the
-	Scheme property assignment.
-
-	* buildscripts/lilypond-profile,lilypond-login.sh (TEXCONFIG):
-	dvips fixes
-
-	* mf/lilypond.map: .map file from Mats' page. 
-
-2002-02-21  Juergen Reuter <reuter@ipd.uka.de>
-
-	* Some more parmesan related fixes;
-
-	* Custos: varying shape (in particular, stem length), depending on the
-	  vertical position of the custos (on staffline / between stafflines);
-
-	* Custos: added grob property "neutral-direction" (same semantics as
-	  with stem); introduced new grob property "neutral-position";
-
-	* Time-signature: print a warning when resorting to default layout.
-
-2002-02-22  Han-Wen Nienhuys  <hanwen@cs.uu.nl>
-
-	* lily/translator-group.cc (add_fresh_simple_translator): remove
-	function; initialize() is called through
-	Translator_group::initialize().
-
-	* lily/third-try.cc (prune_loose_colunms): add constraints (rods)
-	for the neighbors of a loose column.
-
-	* lily/line-of-score.cc (set_loose_columns): be more intelligent:
-	position loose columns so that they don't collide.
-
-2002-02-21  Han-Wen Nienhuys  <hanwen@cs.uu.nl>
-
-	* VERSION: 1.5.32 released.
-
-	* scm/font.scm: remove font-name symbol.
-
-	* mf/GNUmakefile: use pktrace for making PFAs
-
-	* make/lilypond.redhat.spec.in: use pktrace when making RPMs
-
-	* lily/rest-collision.cc (do_shift): read direction field from
-	rest-column in case of note-rest collision. This should fix some
-	problems with rest collisions.
-
-2002-02-19  Han-Wen Nienhuys  <hanwen@cs.uu.nl>
-
-	* lily/note-heads-engraver.cc (process_music): Removed easyPlay
-	property.
-
-	* lily/note-head.cc (brew_ez_molecule): Remove note-character
-	property. Read pitch directly from #'cause.
-
-	* mf/feta-puntje.mf: bugfix
-
-2002-02-19  Juergen Reuter <reuter@ipd.uka.de>
-	
-	* mf/*.mf: tried to fix ancient-font.ly. WARNING: Font changed.
-
-2002-02-18  Jan Nieuwenhuizen  <janneke@gnu.org>
-
-	* Documentation/windows/compiling.texi: Update.
-
-	* Documentation/index.texi: Add link to orphaned compiling for
-	windows page.
-
-	* Documentation/footer.html.in: Comment fix.
-
-	* stepmake/bin/add-html-footer.py: Python2.[12] re workarounds.
-
-2002-02-18  Han-Wen  <hanwen@cs.uu.nl>
-	
-	* VERSION: 1.5.31 released
-
-	* lily/new-spacing-spanner.cc: remove file.
-
-	* lily/third-try.cc (do_measure): only take spacings into account
-	if they pertain to the column pair under consideration. This fixes
-	spacing bug when mixing eighths triplets and normal eighths.
-
-	* lily/note-head.cc (brew_molecule): revert ledger change: ledger
-	lines don't take up space anymore. Document why in note-head.cc
-	comment.
-
-2002-02-17  Han-Wen  <hanwen@cs.uu.nl>
-
-	* lily/font-interface.cc (get_font): reinstate
-	#'font-magnification. See input/regression/font-magnification.ly
-	(get_font): Change the definition of  #'font-name grob property.
-
-	* lily/grob.cc (get_uncached_molecule): output origin for grobs
-	that have a #'cause field.
-
-2002-02-12  Han-Wen Nienhuys  <hanwen@cs.uu.nl>
-
-	* Documentation/topdocs/INSTALL.texi: remove type3 stuff. 
-
-	* mf/GNUmakefile:  remove metapost stuff
-
-	* stepmake/aclocal.m4: remove metapost detection stuff.
-
-2002-02-11  Jan Nieuwenhuizen  <janneke@gnu.org>
-
-	* mf/GNUmakefile (FET_FILES): 
-	(FONT_FILES): Include parmesan.
-
-	* stepmake/bin/packagepython.py (make_assign_re): Bugfix.  Use re
-	iso regex, regsub
-
-	* buildscripts/clean-fonts.sh (FILES): Clean parmesan too.
-
-	* Documentation/user/refman.itely (Paper size): Quote braces.
-
-2002-02-07  Han-Wen Nienhuys  <hanwen@cs.uu.nl>
-
-	* stepmake/aclocal.m4: fixed bison version check to be more
-	robust.
-
-	* lily/stem.cc (position_noteheads): fix for cluster chords.
-
-	* mf/*.mf: many blotting/pixel rounding fixes  by Rune Zedeler
-
-	* python 2.2 support.
-
-2002-02-04  Han-Wen  <hanwen@cs.uu.nl>
-
-	* VERSION: 1.5.30 released
-
-	* lily/dynamic-engraver.cc: add doco about DynamicLineSpanner
-
-	* Documentation/user/refman.itely (Dynamics): add a note about
-	DynamicLineSpanner.
-
-	* scm/grob-description.scm: add a 'translator-type?  object
-	property, so that \property Foo.Bar =\turnOff doesn't cause
-	type check warning.
-
-	* lily/translator-group.cc (add_fresh_group_translator): make
-	new add-translator functions to make distinction between fresh and
-	used group-translators. Fixes problem with scripts on auto-changing voice 
-
-	* lily/timing-engraver.cc: make Timing_engraver instantiatable,
-	add to Score_performer. Fixes bar checks in MIDI
-
-	* lily/tie-engraver.cc (create_grobs): Use pitches to compare note
-	heads. Fixes many quirks with ties.
-
-	* lily/engraver.cc (announce_grob): Use SCM argument. Store cause
-	in the grob property #'cause, instead of using Grob_info.
-
-	* ly/engraver-init.ly (StaffContext): move Dot_column_engraver to
-	staff context, fixing dot alignment on collisions.
-
-	* lily/beam-engraver.cc (try_music): remove can't find beam start
-	warning, so that skipTypesetting won't complain.
-
-2002-02-01  Mats Bengtsson  <mats.bengtsson@s3.kth.se>
-
-	* Documentation/user/refman.itely (Paper size): Documentation fix,
-	papersize
-
-	* lily/text-engraver.cc: Bugfix: textNonEmpty works again
-
-	* scm/grob-description.scm: \breathe: Use feta font comma by default
-
-2002-01-23  Mats Bengtsson  <mats.bengtsson@s3.kth.se>
-
-	* input/template/piano-dynamics.ly (pedal): Simplified
-
-2002-01-18  Mats Bengtsson  <mats.bengtsson@s3.kth.se>
-
-	* ly/engraver-init.ly: avoid warnings on \skip in lyrics
-
-2002-01-10  Mats Bengtsson  <matsb@s3.kth.se>
-
-	* lilypond-mode.el (LilyPond-command-query): ignore case.
-
-2002-02-01  Han-Wen Nienhuys  <hanwen@cs.uu.nl>
-
-	* VERSION: 1.5.29 released
-
-	* all files: change 2001 to 2002 in headers globally
-
-	* mf/parmesan20.mf: split out ancient notation into parmesan ("old
-	cheese") font. WARNING: fonts changed.
-	
-2002-02-01  Juergen Reuter <reuter@ipd.uka.de>
-
-	* mf/*.mf: Fixed some blot_diameter related flaws in some feta symbols
-	
-	* mf/*.mf: Added some more vaticana/solesmes style font symbols
-	
-	* mf/*.mf: Bugfix: renamed subbipunctum -> inclinatum
-
-	* mf/*.mf: Fixed a few typos in various .mf files
-
-2002-01-17 Rune Zedeler <rune@zedeler.dk>
-	
-	* mf/: added macro soft_penstroke
-	
- 	       softened some glyphs
- 	       redrawn triangular noteheads
- 	       redrawn tab-clef
- 	       added classical quarter rest
- 	
-	* lily/stem.cc: Bugfix: Stem-attachment when staff_space!=1
- 
-	* lily/bar.cc: Bugfix: repeat dots when even number of staff
- 	lines and staff_space>=2
- 
-	* lily/rest.cc: Use default rests when current style glyphs not
- 	found - this allows
- 	\property Staff.Rest \override #'style = #'classical
-
-2002-01-30  Jan Nieuwenhuizen  <janneke@gnu.org>
-
-	* input/bugs/first-tie.ly: New file.
-
-	* input/bugs/spacing-clash.ly: New file.
-
-2002-01-29  Jan Nieuwenhuizen  <janneke@gnu.org>
-
-	* po: regenerate.
-
-2002-1-24 Chris Jackson <chris@fluffhouse.org.uk>
-
-	* lilypond-indent.el: New file providing indentation for
-	parenthesised blocks of lilypond code in Emacs
-	
-	* lilypond-font-lock.el: Changes to the syntax table to facilitate
-	indentation and handle block comments properly. Distinguish
-	accents from close-brackets in fontification.
-
-	* lilypond-mode.el: LilyPond-indent-command set appropriately.
-
-2002-01-22  Jan Nieuwenhuizen  <janneke@gnu.org>
-
-	* Documentation/windows/installing.texi: 
-	* Documentation/windows/compiling.texi: Include from 1.4.10.
-
-	* Documentation/windows/gs-profile.sh: previously lily-gs.sh
-
-	* input/bugs/first-midi-tie.ly: New file.
-
-2001-12-29  Han-Wen  <hanwen@cs.uu.nl>
-	
-	* VERSION: 1.5.28 released
-
-        * lily/parser.yy (My_lily_parser): Slightly kludgy warning for
-        illicit beams on [c4 c4] etc.
-
-        * lily/bar-check-iterator.cc (Bar_check_iterator): new
-        file. Make separate iterator for Bar_checks. Bar_check now happen
-        outside engravers, meaning that you can use them with
-        skipTypesetting. Associated changes in other files.
-        
-        * lily/new-spacing-spanner.cc (stem_dir_correction): removed
-        function
-        
-        * lily/spacing-spanner.cc (stem_dir_correction): removed function
-
-        * lily/include/grob.hh (unsmob_item, unsmob_spanner): Add functions
-
-        * lily/bar.cc (before_line_breaking): remove bar-line spacing code.
-
-        * lily/stem.cc (set_spacing_hints): removed function
-
-        * lily/note-spacing.cc (stem_dir_correction): new stem-direction
-        correction for spacing; now take vertical extents of the stem into
-        account.  
-
-        * lily/third-try.cc: More hacking to get spacing working.
-
-        * lily/note-spacing-engraver.cc: new file, Note_spacing_engraver
-        sits at staff level and creates note spacing objects. Scrap it
-        again, and document why.
-
-        * lily/include/group-interface.hh: rename functions. 
-
-2001-12-27  Jan Nieuwenhuizen  <janneke@gnu.org>
-
-	* stepmake/stepmake/c++-rules.make:
-	* stepmake/stepmake/c-rules.make: Fixes for bison-1.28.
-
-2001-12-25  Jan Nieuwenhuizen  <janneke@gnu.org>
-
-	* make/lilypond-vars.make: 
-	* scripts/ly2dvi.py (setup_environment): 
-	* scripts/lilypond-book.py (setup_environment): Also set tex
-	memory options.
-
-2001-12-24  Han-Wen Nienhuys  <hanwen@cs.uu.nl>
-
-	* VERSION: 1.5.27 released.
-
-	* Documentation/user/refman.itely (Bar numbers): added bar number
-	documentation.
-
-	* scm/font.scm (make-style-sheet): Fixes to make staff-sizes work
-	again.
-
-2001-12-22  Mats Bengtsson  <matsb@s3.kth.se>
-
-	* tex/lilyponddefs.tex: Make sure interscorelinefill=1 doesn't
-	spread the last few lines all over the last page of a score.
-
-2001-12-24  Han-Wen  <hanwen@cs.uu.nl>
-
-	* lily/third-try.cc: 3rd try at revising spacing
-	engine. Not yet finished.
-
-	* lily/paper-column.cc (brew_molecule): print debugging marks on a
-	paper-column.
-
-	* lily/tie-engraver.cc (class Tie_engraver): Use busyGrobs for
-	collecting past note heads.
-
-	* lily/note-heads-engraver.cc (try_music): Remove end_mom_
-	stuff.
-
-	* lily/grob-pq-engraver.cc (class Grob_pq_engraver): New file, new
-	class. Keep a queue of grobs that are still playing in busyGrobs. 
-
-	* lily/lyric-combine-music-iterator.cc (get_busy_status): New
-	function. Use busyGrobs to detect playing notes.
-	
-2001-12-16  Jan Nieuwenhuizen  <janneke@gnu.org>
- 
-	* Documentation/topdocs/INSTALL.texi: Added note about broken
-	python-2.1.  Updated note for Debian's broken (well, broken for
-	our use anyway) tex configuration.
-	
-	* scripts/lilypond-book.py (re_dict): python2.2 fix.
-	
-	* stepmake/stepmake/c++-rules.make ($(outdir)/%.hh): 
-	($(outdir)/%.cc): Adapted to bison-1.30; added bison < 1.30 fix.
-	
-	* scripts/lilypond-book.py (bounding_box_dimensions): Bugfix.
-	(But left margin of png's still misses a few pixels.  Arg.)
-	
-2001-12-16  Heikki Junes  <hjunes@cc.hut.fi>
-
-	* lilypond-mode.el (LilyPond-command-next-midi): Make
-	possible to kill midi-process (using "C-c C-m").
-
-2001-12-14  Han-Wen  <hanwen@cs.uu.nl>
-
-	* scripts/lilypond-book.py (LatexPaper.set_geo_option):
-	Convert strings with dimensions to numbers.
-
-	* lily/volta-engraver.cc:  only make a  bracket for the top staff,
-	as found in stavesFound. 
-
-	* lily/bar-number-engraver.cc: remove staff administration. 
-
-	* lily/mark-engraver.cc (acknowledge_grob): remove staff
-	administration. This breaks support for invisible-staff.
-
-	* lily/staff-collecting-engraver.cc: new engraver. Collects staff
-	symbols into stavesFound.
-
-	* lily/score-engraver.cc (acknowledge_grob): Acknowledge spacing
-	grobs, and put them into columns.
-
-	* lily/engraver-group-engraver.cc (acknowledge_grobs): Include the
-	Engraver_group_engraver as a potential candidate for ack'ing grobs.
-
-2001-12-13  Heikki Junes  <hjunes@cc.hut.fi>
-
-	* lilypond-mode.el (LilyPond-command-next-midi): Play next (or last)
-	midi section in the Emacs-mode, so it is possible to play certain
-	score in a multiscore lilypond-file.
-	 
-2001-12-09  Rune Zedeler  <rune@zedeler.dk>
-	* lily/lily-guile.cc: Added ly_assoc_front_x() and ly_assoc_cdr()
-	(FIXME: not accessible from guile)
-	
-	* lily/accidental-engraver.cc: rewrote accidental-routines to get
-	better support for Kurt Stone's suggestions.
-	Removed properties: noResetKey, forgetAccidentals, autoReminders,
-	                    lazyKeySignature.
-	Changed property:   localKeySignature.
-	Added properties:   extraNatural, autoAccidentals,
-	                    autoCautionaries.
-
-	(BUGFIX: broken-tie-support destroyed in 1.5.16)
-	
-	* ly/property-init.ly: added commands
-	\defaultAccidentals \modernAccidentals \modernCautionaries
-	\noResetKey \forgetAccidentals
-
-	* ly/engraver-init.ly: Correct initialization of new accidentals.
-	
-	* scm/translator-property-description.scm: The new properties
-	added.
-	
-	* input/: Some examples added, some changed.
-	
-	* Documentation/regression-test.tely: Added quick test of new
-	accidentals.
-
-2001-12-13  Han-Wen Nienhuys  <hanwen@cs.uu.nl>
-
-	* scripts/lilypond-book.py (scan_latex_preamble): don't crash if
-	header not found
-
-2001-12-07  Han-Wen Nienhuys  <hanwen@cs.uu.nl>
-
-	* lily/beam.cc (before_line_breaking): Make beams  without stems
-	or with only one stem disappear.
-
-2001-12-05  Han-Wen Nienhuys  <hanwen@cs.uu.nl>
-
-	* bibtools/bib2html.py: Add simple bib2html convertor, and .bst
-	files to have standardised HTML bibliography output. Update build
-	docs to reflect this.
-
-	* lily/include/simple-spacer.hh (struct Simple_spacer): add
-	active_count_, so that we don't have to look for active springs
-	anymore.
-
-	* scm/interface-description.scm,scm/grob-property-description.scm:
-	Add 'penalty
-
-	* lily/simple-spacer.cc (solve): Handle forced line breaks
-	here. Fixes problems when combining linebreaks with non-fitting
-	line configurations
-
-2001-12-05  Jan Nieuwenhuizen  <janneke@gnu.org>
-
-	* 1.4.9.jcn3 forward ports.
-	
-	* Really included .cvsignore.
-
-	* Included Han-Wen's uu1 windows fixes.
-
-	* Bugfix: lilypond-profile.sh: append to GS_FONTPATH, GS_LIB.
-
-	* Added Cygwin setup.hint
-
-	* Removed tex, python wrappers and postinstalls to go with Cywgin's
-	tetex/texmf, python installations.
-
-	* Updated cygwin installer.
-
-	* ly2dvi: Don't accept filenames with spaces (+ fix).
-
-2001-12-03  Han-Wen  <hanwen@cs.uu.nl>
-
-	* ly/engraver-init.ly (VoiceContext): fix text engraver ordering.
-
-	* lily/translator-def.cc: Remove manual symbol caching.
-
-	* lily/script-column.cc (before_line_breaking): robustness check:
-	don't crash if no direction set.
-
-	* scripts/pmx2ly.py: Key and clef change support (Laura Conrad)
-
-	* scripts/pmx2ly.py (Parser.parse_header): more generic header
-	parsing.
-
-
-2001-12-01  Han-Wen  <hanwen@cs.uu.nl>
-
-	* lily/note-head.cc (head_extent): added to compute width without
-	ledger lines. By default, ledger lines take up width now.
-
-	* input/regression/fingering.ly: demonstrate auto fingering.
-	Horizontal placement is still buggy. 
-	
-	* lily/fingering-engraver.cc (class Fingering_engraver):
-	added. Provides support for horizontal fingering scripts
-
-	* lily/include/grob.hh: Naming: change parent_l() into get_parent()
-
-	* lily/side-position-interface.cc (add_staff_support): add staff
-	only for Y-axis side positions.
-
-	* lily/parser.yy (request_chord): Fix mem leak.
-
-	* lily/musical-request.cc (transpose): moved to Music::transpose()
-
-	* lily/include/grob-info.hh: Change music pointer to SCM, so we
-	can store grobs as grob-creation cause as well.
-
-	* lily/group-interface.cc (add_thing): efficiency tweak: reuse
-	handle when adding. Use precomputed symbols throughout lily.
-	
-	* lily/rhythmic-column-engraver.cc: make NoteSpacing grobs to keep
-	track of spacing issues.
-
-	* lily/separating-line-group-engraver.cc: make StaffSpacing grobs
-	to keep track of staff spacing
-
-2001-11-30  Jan Nieuwenhuizen <janneke@gnu.org>
-
-	* Rewrote new conditional guile >= 1.5 compilation switches, to keep
-	  code clean from conditionals and have a concentrated sets of
-	  compatibility fixes for old guile versions.
-
-	* Fixes for guile 1.4, including embedded ps.
-
-2001-11-30  Han-Wen Nienhuys  <hanwen@cs.uu.nl>
-
-	* lily/stanza-number-engraver.cc (process_music): allow pairs as
-	well for markup texts.
-
-	* lily/musical-request.cc (length_mom): kludge for null pointer.
-
-	* scm/sketch.scm (sketch-output-expression): guile 1.4 compatibility
-
-	* scm/lily.scm (sign): bugfix
-
-	* CHANGES: Change log instated.
-
-	* stepmake/add-html-footer.py: @BRANCH@ tag insertion.
-
diff --git a/Documentation/misc/GNUmakefile b/Documentation/misc/GNUmakefile
deleted file mode 100644
index 11691ffd95..0000000000
--- a/Documentation/misc/GNUmakefile
+++ /dev/null
@@ -1,27 +0,0 @@
-depth = ../..
-
-NAME = documentation
-
-STEPMAKE_TEMPLATES=documentation  texinfo
-
-TEXTS = $(wildcard ANNOUNCE-*[0-9]) $(wildcard CHANGES-*[0-9]) $(wildcard ChangeLog*[0-9]) $(wildcard NEWS-*[0-9])
-EXTRA_DIST_FILES = $(TEXTS)
-
-include $(depth)/make/stepmake.make 
-
-default: local-doc
-
-#urg default local-WWW target uses footify before its time; 
-# must add footify with txt-to-html target
-OUT_TXT_FILES = $(addprefix $(outdir)/, $(addsuffix .txt, $(TEXTS)))
-##local-WWW: $(OUT_TXT_FILES) $(OUT_HTMLFILES) txt-to-html
-
-copy-for-me:
-	$(foreach a, $(README_TOP_FILES), cp ../$(a) $(outdir)/$(a).txt && ) true
-
-$(outdir)/%.txt: %
-	cp $< $@
-
-txt-to-html:
-	$(PYTHON) $(step-bindir)/text2html.py $(OUT_TXT_FILES)
-	$(footify) $(addprefix $(outdir)/, $(addsuffix .html, $(TEXTS)))
diff --git a/Documentation/misc/NEWS-1.2 b/Documentation/misc/NEWS-1.2
deleted file mode 100644
index bc03e6e5a0..0000000000
--- a/Documentation/misc/NEWS-1.2
+++ /dev/null
@@ -1,34 +0,0 @@
-WHAT'S NEW SINCE 1.2.0
-
-* Much faster spacing engine. 
-
-* Features: automatic staff switching
-
-* Documentation now all is in texinfo.
-
-
-WHAT'S NEW SINCE 1.0.17
-
-* Large cleanups, enhanced design and GUILE integration for smaller
-  memory footprint and more flexible code.
-
-* Direct output to PostScript (optional), PDFTeX or as GUILE script
-  (default output still to plain TeX).
-
-* Convertors for ABC and MUP formats.
-
-* Font: now available as scalable PostScript.  New glyphs: time
-  signature, more note heads.
-
-* Enhanced input: semi-automatic beaming, (nested) tuplets, (nested)
-  repeats, chordnames, automatic Lyrics durations.
-  
-* Grace notes, volta brackets, multiple styles for note heads and 
-  time signatures, breathing signs, lyric extenders, cross staff 
-  beaming and slurring.
-  
-* --safe option for the paranoid.
-
-* More elegant spacing.  Text is spaced exactly.
-
-* Lots of bugfixes.
diff --git a/Documentation/misc/NEWS-1.4 b/Documentation/misc/NEWS-1.4
deleted file mode 100644
index 12c621b564..0000000000
--- a/Documentation/misc/NEWS-1.4
+++ /dev/null
@@ -1,78 +0,0 @@
-
-New features in 1.4
-
-
-DESIGN
-
-
-* More pervasive GUILE integration resulting in improved design and
-implementation.  LilyPond is smaller, cleaner, more flexible, etc.
-
- - Improved speed with comparable memory footprint
-
- - More tweakability using less memory with the new `property push'
-  mechanism.
-
- - Improved robustness: Lily almost never crashes.
-
- - Access to internal music representation
-
-* New font selection scheme similar to Latex-NFSS.
-
-* Flexible formatting mechanism for musical texts.
-
-* Chordnames are now configurable in every respect
-
-* Part combining for orchestral scores and hymns: two voices are
-  combined into a staff automatically, including Solo/a2
-  indications as appropriate.
-
-
-ERGONOMICS
-
-* Point and click functionality using emacs and Xdvi.
-
-* Rewritten Emacs mode
-
-* Cleaned up syntax details 
-
-* Comprehensive documentation, including a rewritten tutorial.
-
-* All properties have doc strings, and internal documentation is
-generated automatically.
-
-* Windows point-and-click installer 
-
-
-NOTATION FEATURES
-
-* Piano pedals, Arpeggios, Glissandi, many more note head
-shapes, Medieval clefs, custodes.
-
-* Better lyrics placement: Automatical phrasing, melisma alignment,
-  and stanza numbering.
-
-* Typography: More elegant slurs, aligned dynamics, text crescendos,
-
-* Easy-play note heads
-
-* ASCIIScript: ASCII-art output 
-
-* Improved standalone postscript layout.
-
-
-IMPORT/EXPORT
-
-* dynamics, tempo changes in the MIDI output
-
-* Finale (.etf), PMX, Musedata and Mup import tools.
-
-
-MISCELLANEOUS
-
-* Mutopia ports collection: easily accessible music archive.
-
-* Translations into Japanese, French and Russian
-
-* Many many many bugfixes.
-
diff --git a/Documentation/pictures/GNUmakefile b/Documentation/pictures/GNUmakefile
deleted file mode 100644
index 9b432aa92c..0000000000
--- a/Documentation/pictures/GNUmakefile
+++ /dev/null
@@ -1,20 +0,0 @@
-depth = ../..
-
-STEPMAKE_TEMPLATES=documentation
-XPM_FILES=$(wildcard *.xpm)
-OUTGIF_FILES = $(addprefix $(outdir)/,$(XPM_FILES:.xpm=.gif))
-OUTPNG_FILES = $(addprefix $(outdir)/,$(XPM_FILES:.xpm=.png))
-
-EXTRA_DIST_FILES= $(XPM_FILES)
-# OUT_DIST_FILES = $(package-icon)
-
-include $(depth)/make/stepmake.make
-
-default: # $(package-icon)
-local-dist: # $(package-icon)
-
-xgifs: $(OUTGIF_FILES)
-pngs: $(OUTPNG_FILES)
-
-local-WWW: $(OUTPNG_FILES)
-
diff --git a/Documentation/pictures/lelie-logo.xpm b/Documentation/pictures/lelie-logo.xpm
deleted file mode 100644
index 15408fb2ef..0000000000
--- a/Documentation/pictures/lelie-logo.xpm
+++ /dev/null
@@ -1,215 +0,0 @@
-/* XPM */
-static char *noname[] = {
-/* width height ncolors chars_per_pixel */
-"100 143 65 1",
-/* colors */
-"  c #ADADAD",
-". c #A5A5A5",
-"X c #9D9D9D",
-"o c #959595",
-"O c #8D8D8D",
-"+ c #858585",
-"@ c #7D7D7D",
-"# c #757575",
-"$ c #6D6D6D",
-"% c #656565",
-"& c #5D5D5D",
-"* c #555555",
-"= c #4D4D4D",
-"- c #FCFCFC",
-"; c #FAFAFA",
-": c #454545",
-"> c #F2F2F2",
-", c #3D3D3D",
-"< c #EAEAEA",
-"1 c #353535",
-"2 c #E2E2E2",
-"3 c #2D2D2D",
-"4 c #DADADA",
-"5 c #252525",
-"6 c #D2D2D2",
-"7 c #1D1D1D",
-"8 c #CACACA",
-"9 c #151515",
-"0 c #C2C2C2",
-"q c #0D0D0D",
-"w c #BABABA",
-"e c #050505",
-"r c #B2B2B2",
-"t c #AAAAAA",
-"y c #A2A2A2",
-"u c #9A9A9A",
-"i c #929292",
-"p c #8A8A8A",
-"a c #828282",
-"s c #7A7A7A",
-"d c #727272",
-"f c #6A6A6A",
-"g c #626262",
-"h c #5A5A5A",
-"j c #525252",
-"k c #FDFDFD",
-"l c #4A4A4A",
-"z c #F5F5F5",
-"x c #424242",
-"c c #EDEDED",
-"v c #3A3A3A",
-"b c #E5E5E5",
-"n c #323232",
-"m c #DDDDDD",
-"M c #2A2A2A",
-"N c #D5D5D5",
-"B c #222222",
-"V c #CDCDCD",
-"C c #1A1A1A",
-"Z c #C5C5C5",
-"A c #121212",
-"S c #BDBDBD",
-"D c #0A0A0A",
-"F c #B5B5B5",
-"G c #020202",
-/* pixels */
-"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk",
-"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk",
-"kkkkkkkk;kkkkkk;kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk",
-"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk",
-"kkkkkkkkkkk;kkkkk;kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk",
-"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk",
-"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk",
-"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk",
-"kkkkkk;kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk",
-"kkkkkkkkkkk;kkkk;kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk.lexGGj*9jkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk",
-"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkhkkkkkkkkwhs+kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk",
-"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk6 kkkkkkkkkkkVeCkkkkkkkkkkkkrsspkkkkkkkkkkkkkkkkk",
-"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkOkkkkkkkkkkkkkk2G2kkkkkkkkkdkkkkekkkkkkkkkkkkkkkk",
-"k;kkkk;kkkk;kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk.Gkkkckkkkkkkkkkkk@kkkkkkkkskk:kkdokkkkkkkkkkkkkkk",
-"kkkkkkkkkkkkkk;kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkw2rkkkkkkkkkkkkkkkkk1kkkkkkkdkGykuk@kkkkkkkkkkkkkkk",
-"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkskk*kkkkkkkkkkkkkkkkrZkkkkkkGGtkm k%kkkkkkkkkkkkkkk",
-"kkk;kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkjkkk$kkkkkkkkkkkkkkkkk=kkkkkkwniw kk@kkkkkkkkkkkkkkk",
-"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk&kkkk3kkkkkkkkkkkkkkkkw6kkkkkk>X6kk4rkkkkkkkkkkkkkkk",
-"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkakkkkk=kkkkkkkkkkkkkkkk=kkkw:vNkkkk$kkkkkkkkkkkkkkkk",
-"kkkkkkkkkkk;kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk&k06kkkvckkkkkkkkkkkkkk+zkkqkkkkkk&kkkkkkkkkkkkkkkkk",
-"kk;;kk;kkkkkkk;kk;kkkkkkkkkkkkkkkkkkkkkkkkkkkkkukkk+kkkk,kkkkkkkkkkkkkkk%kMkkkkk.ykkkkkkkkkkkkkkkkkk",
-"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkX8kky+kkkkk:kkkkkkkkkkkkkk$kGZk2Fwykkkkkkkkkkkkkkkkkkk",
-"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkNikkkkk+mkkkknckkkkkkkkkkkkk@l*kZM@vGkkkkkkkkkkkkkkkkkkk",
-"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk4okkkkkkkkkkkkkGkkkkkkkkkkkkkZfikXkc$Ckkkkkkkkkkkkkkkkkkk",
-"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkjkkkkkkkkkkkkkkGkkkkkkkkkkkkk9ry,>kktkkkkkkkkkkkkkkkkkkkk",
-"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk% Zkkkkkkkkkkky.kkkkkkkkkkkXu6f$kkkkkkkkkkkkkkkkkkkkkkkk",
-"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk<fVkkkkkkkkkkkm7kkkkkkkkkkkG0bgkkkkkkkkkkkkkkkkkkkkkkkkk",
-"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkgkkkkkkkkkkkkkb,kkkkkkkkkkxkFiDkkkkkkkkkkkkkkkkkkkkkkkkk",
-"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk2GkkkkkkkkkkkkkkqkkkkkkkkkkBFkaGkkkkkkkkkkkkkkkkkkkkkkkkk",
-"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk9kkkkkkkkkkkzk.ykkkkwkkkMktaOzZkkkkkkkkkkkkkkkkkkkkkkkk",
-"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk:9Aakkkkkkkkkkkakjkkok:kkk*.khnkDkkkkkkkkkkkkkkkkkkkkkkkk",
-"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk60a=kkkkkkkkkkkkV:kkOk&kkCkfpp8k5kkkkkkkkkkkkkkkkkkkkkkkk",
-"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkktkkkkkkkkkkkkkkrkAkk*k$kb#skd:kknkkkkkkkkkkkkkkkkkkkkkkkk",
-"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk,kkkkkkkkkkkkkkkkGkkikak7k%rcjkkXZkkkkkkkkkkkkkkkkkkkkkkk",
-"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkdkkkkkkkkkkkkkkp@FCkkub4SV#khOkkkk,kkkkkkkkkkkkkkkkkkkkkkk",
-"kkkkkkkkkkkkkkkkkkkkk;kkkkkkkkkkkkkkkkkkkk%kkkkkkkkkkkkk%whkakmVFk3kfkZxkkkk@kkkkkkkkkkkkkkkkkkkkkkk",
-"kkkkkkkkkkkkkkkkkkkk,bt2kkkkkkkkkkkkkkkkkkksSkkkkkkkkkk#y<F<dkokkazsk3k+kkkkk:kkkkkkkkkkkkkkkkkkkkkk",
-"kkkkkkkkkkkkkkkkkkkkkXugckkkkkkkkkkkkkkkkkkkSOddVkkkkk$kpm<>okpkknk*kh%kkkkkki4kkkkkkkkkkkkkkkkkkkkk",
-"kkkkkkkkkkkkkkkkkkkkkkkaikkkkkkkkkkkkkkkkkkkkkkk4rqZFskkk>kgk0>k%z44hk=kkkkkkk:kkkkkkkkkkkkkkkkkkkkk",
-"kkkkkkkkkkkkkkkkkkkkkkkk+ikkkkkkkkkkkkkkkkkkkkkkkkGhFFkkkk>Akskkvk*kxmZkkkkkkkkdkkkkkkkkkkkkkkkkkkkk",
-"kkkkkkkkkkkkkkkkkkkkkkkkkiikkkkkkkkkkkkkkkkkkkkkkk7D+0kkkk*FbNk,kkp.k*kkkkkkkkkzlkkkkkkkkkkkkkkkkkkk",
-"kkkkkkkkkkkkkkkkkkkkkkkkk>u.kkkkkkkkkkkkkkkkkkkkkkGGrF$;kkGkOkk7knkvkdkkkkkkkkkkzdkkkkkkkkkkkkkkkkkk",
-"kkkkkkkkkkkkkkkkkkkkkkkkkkZoZkkkkkkkkkkkkkkkkkkkkkMM8$skk*zwkk:kkoNS@@kkkkkkkkkkkzMkkkkkkkkkkkkkkkkk",
-"kkkkkkkkkkkkkkkkkkkkkkkkkkkSybkkkkkkkkkkkkkkkkkkkkfDO *kk=kwk>,kvk3kn>g$0kkkkkkkkkkkkkkkkkkkkkkkkkkk",
-"kkkkkkkkkkkkkkkkkkkkkkkkkkkku kkkkkkkkkkkkkkkkkkkV+G%uXkGkykk3kkfk+kjkkk*Mkkkkkkkkkkkkkkkkkkkkkkkkkk",
-"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkO.kkkkkkkkkkkkkkk4o4k.G@&FS46;k4gkvkvk1gkkkkkG>kkkkkkkkkkkkkkkkkkkkkkkk",
-"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkiukkkkkkkkkkkkmSkSGG&GtrMFktkk9kk%kqkGckkkkkkGkkkkkkkkkkkkkkkkkkkkkkkk",
-"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkcX kkkkkkkkkkukgGGG+;GMxZkOkkutkvk$k#xkkkkkkkk5kkkkkkkkkkkkkkkkkkkkkkk",
-"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkNoVkkkkkkktjdGGsikkkGGVk+kmkBkkdkMkGhkkkkkkkkkjkkkkkkkkkkkkkkkkkkkkkk",
-"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk X<kkkkk ZGG7s<kkkkv;kukcbd2kjku64Ghkkkkkkkkk6ykkkkkkkkkkkkkkkkkkkkk",
-"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkuXkkk26oG%*t>>kkyakk;;kyk7kkxkGkGykkkkkkkkkkkMkkkkkkkkkkkkkkkkkkkkk",
-"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkphk6k9Gqx1kkkkNSkkkkkSk,kk:k2skGmkkkkkkkkkkkb&kkkkkkkkkkkkkkkkkkkk",
-"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk+ukGG&=k<kkkkkkkkkkkkknkkxkGk=X kkkkkkkkkkkkhkkkkkkkkkkkkkkkkkkkk",
-"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk0SeG$tpkk6kkkkkkkkkkkGkk:kkvkGCk>kkkkkkkkkkkzakkkkkkkkkkkkkkkkkkk",
-"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk.;G<AnsVkgkkkkkkkkkkkpdkkxk9kblik$kkkkkkkkkkkkMkkkkkkkkkkkkkkkkkkk",
-"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkZkGGDknuSc6kkkkkkkkkkkGkkhkkGkAiak+kkkkkkkkkkkkgkkkkkkkkkkkkkkkkkkk",
-"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkiOG=qiV>6i>kkkkkkkkkk+tkkjkh;kGpkkskkkkkkkkkkkkwrkkkkkkkkkkkkkkkkkk",
-"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk6kG77n:VOk#kkkkkkkkkkkGkkskkqkjx6k; kkkkkkkkkkkkk&kkkkkkkkkkkkkkkkkk",
-"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk lGGxX,koykkkkkkkkkkkgbkk3k+tkGkkk$kkkkkkkkkkkkkk3kkkkkkkkkkkkkkkkkk",
-"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk6kGGGFXdkbyukkkkkkkkkkCkkf;kGk41<kk@kkkkkkkkkkkkkkjkkkkkkkkkkkkkkkkkk",
-"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkZ%GCahFO4tcOSkkkkkkkk5kkkjkSgk9Zzkbb0kkkkkkkkkkkkkjkkkkkkkkkkkkkkkkkk",
-"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk<GGvC3 4pkk6i<kkkkkkN,kkOzkGkkGh>kkkpkkkkkkkkkkkkk=kkkkkkkkkkkkkkkkkk",
-"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkk4rGG1nyjm%kkkOakkkkkkDkkknkk1koGtkkkkokkkkkkkkkkkkkjkkkkkkkkkkkkkkkkkk",
-"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkk ,GC,5 cZ6kkkkO@kkkk.gkkONk1kkGZkkkk+kkkkkkkkkkkkkk=kkkkkkkkkkkkkkkkkk",
-"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkOyGG=l#;%2kkkkkOakkkGkkknkkGkkCfkkkk;kkkkkkkkkkkkkkjkkkkkkkkkkkkkkkkkk",
-"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk4GG:*OV@Zkkkkkkpiktpkk 8k56kv9;kkkkkkkkkkkkkkkkkkk,kkkkkkkkkkkkkkkkkk",
-"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkcGG#s>ykkkkkkk>obGkkk7kkGkkq8kkkkkkkkkkkkkkkkkkkk7kkkkkkkkkkkkkkkkkk",
-"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk2CGp*0rkkkkkkkk .akkurkp+kbqokkkkkkkkkkkkkkkkkkkkjkkkkkkkkkkkkkkkkkk",
-"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkm#Gpd;bkkkkkkkkktukkDkkGkkxu>kkkkkkkkkkkkkkkkkkkk=kkkkkkkkkkkkkkkkkk",
-"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkNGgCkFkkkkkkkkkkpXmik<,kkGSkkkkkkkkkkkkkkkkkkkkk&kkkkkkkkkkkkkkkkkk",
-"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkktyGtVkkkkNkkkkkkkovkkGkkdd4kkkkkkkkNkkkkkkkkkkkkfkkkkkkkkkkkkkkkkkk",
-"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkSGk.kkkkGkkkkkkk;o0kGkk9rkkkkkkkkkGkkkkkkkkkkkw8kkkkkkkkkkkkkkkkkk",
-"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkbAhkkkkkGkkkkkkkk2t3wkwx;kkkkkkkkkG2kkkkkkkkkkMkkkkkkkkkkkkkkkkkkk",
-"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk83MkkkkFGkkkkkkkkkuokkA*kkkkkkkkkkG&kkkkkkkkkkhkkkkkkkkkkkkkkkkkkk",
-"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkA=kkkkkGVkkkkkkkkkd.kGbkkkkkkkkkkGZkkkkkkkkk$;kkkkkkkkkkkkkkkkkkk",
-"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk5ykkkkkGGkkkkkkkkkkfdnzkkkkkkkkkaGkkkkkkkkkkgkkkkkkkkkkkkkkkkkkkk",
-"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkjkkkkkkrGkkkkkkkkkkkdikkkkkkkkkkGDkkkkkkkkk<akkkkkkkkkkkkkkkkkkkk",
-"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkklkkkkkkkG>kkkkkkkkkN&wukkkkkkkk<Gkkkkkkkkkkxkkkkkkkkkkkkkkkkkkkkk",
-"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkakkkkkkkG0kkkkkkkkkCk;ptkkkkkkkFGkkkkkkkkk6wkkkkkkkkkkkkkkkkkkkkk",
-"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkdkkkkkkkGkkkkkkkkkknkw@w8kkkkkk Gkkkkkkkkk,kkkkkkkkkkkkkkkkkkkkkk",
-"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkt4kkkkkkkGkkkkkkkkk$NkgkXS>kkkkkkGkkkkkkkkObkkkkkkkkkkkkkkkkkkkkkk",
-"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkhkkkkkkkkkkkkkkkkkkGkkgkk9ykkkkkkpkkkkkkk2.kkkkkkkkkkkkkkkkkkkkkkk",
-"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkykkkkkkkkkkkkkkkkk2gkjzkXkyskkkkkkkkkbkkkhkkkkkkkkkkkkkkkkkkkkkkkk",
-"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkvkkxkk&k4@#kkkkkkkm5kk*kkkkkkkkkkkkkkkkkkkkkkkkk",
-"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk7kkgkkfk&koZkkkkkk%kk;0kkkkkkkkkkkkkkkkkkkkkkkkk",
-"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk2kkkkkkkkkf8k1kktNkjkiXkkkkkhkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk",
-"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk:kkkkkkkkkekk7kk$kkhk@akkkkfkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk",
-"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkobkkkkkkkk4#kr+kkjkOkkXhkkk ykkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk",
-"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk5kkkkkkkkkCkkGkk6Zk%kkkkkkk7kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk",
-"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkik kkkkkkkkCkkGkkgkk%kkkkkk8pkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk",
-"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkpkskkkkkkkgbkOrkkgkV8kkkkkk9kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk",
-"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk2NkkkkkkkGkkGkkNXkhkkkkkkk3kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk",
-"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkGkkkkkkkukkkkkkk4&kkfkk$kk$kkkkkk$kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk",
-"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkFGkkkkkkk+kkkkkkkqkkFSkkfkz kkkkkkqkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk",
-"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkGGckkkkkkukkkkkkkDkkjkk>ykdkkkkkkk7kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk",
-"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkhGGdkkkkkNSkkkkkk=4kkjkk*kk*kkkkkkk%kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk",
-"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkGGCGkkkkkkkkkkkkkGkka;kk=kk&kkkkkawikkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk",
-"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkAGG%Gkkkkkkkkkkkk4&kkjkkkukXckkkkmn$.kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk",
-"kkkkkkkkkkkkkkkkkkkkkkkkkkkk>G3Gnv%kkkkkkkkkkkCkkk&kk%kk=kkkkkkg3Xkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk",
-"kkkkkkkkkkkkkkkkkkkkkkkkkkkkGGe91gGkkkkkkkkkkkCkkpkkkjkk$kkkbS.99@kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk",
-"kkkkkkkkkkkkkkkkkkkkkkkkkkk GGA$B%pskkkkkkkkkd4kk=kkkdkVZkkkkbbdG3kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk",
-"kkkkkkkkkkkkkkkkkkkkkkkkkkkGGAG$Gi$v;kkkkkkkk7kk>skk+kk%kkkkkk0OG,okkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk",
-"kkkkkkkkkkkkkkkkkkkkkkkkkktGBqCaha9dXkkkkkkkk&kkhkkkhkk$kkkkk<#BvG9mpsfN>kkkkkkkkkkkkkkkkkkkkkkkkkkk",
-"kkkkkkkkkkkkkkkkkkkkkkkkkkGGGeD=,Chtswkkkkkk1kkkjkkkskk+kkkk6mX@:BC:kNrm3$fwitkkkkkkkkkkkkkkkkkkkkkk",
-"kkkkkkkkkkkkkkkkkkkkkkkkkkGGGj5*gl$12=kkkkkk1kkNokkozkskkkkkk0y&%1GtFkykkF$kckdpftkkkkkkkkkkkkkkkkkk",
-"kkkkkkkkkkkkkkkkkkkkkkkkkkGAG5en#Dwyk+7kkkkZ kkjkkkxkkgkkkkkkkF hCnGlgO.xz<ruckkko*+wkkkkkkkkkkkkkkk",
-"kkkkkkkkkkkkkkkkkkkkkkkwtkGAG5ij#%&Vfn$3kkk,kkk3kkk*kk%kkkkkktNw v1GqqM,aV+m22ty>>4b+dyikkkkkkkkkkkk",
-"kkkkkkkkkkkkkkkkkkbot&h akGGG5GG*@syi06.Gkkhkkrwkk bkF2kkkkkkkwp +*=DGGjokkSjNXk tkkkk2ud$2kkkkkkkkk",
-"kkkkkkkkkkkkkkk6p3$48wNckknGG=*MfNSt.a*c#*Akkk3kkk*kk&kkkkkkkkkX@loD=Ge$apykkkNkkkm2mVVkkk8sXkkkkkkk",
-"kkkkkkkkkkkkkXi4k>0NsZk+sSrGB,Cs,lMAX46fkkGlak&kkk&kk&kkkkkkkkkpt$$,%MGh%>kkkbFrwm2k4>kbkkmkN9#kkkkk",
-"kkkkkkkkkkNvy6%SkkkbN8awiSkGeDBpl0Fdc0.k0Si;8G&kk4Vk<tkkkkkkkkm6.F%&MMGyZk dXwFSkb t;;FFk8Nk4N2Mmkkk",
-"kkkkkkkkF=Sk@2k++tkkwZ;2Zs #G,B*othug04Sk9kkk,kvd@kk@kkkkkkkkzSbwis1xhGjr9tNZ0kkkkkkkkzZcm2X;k<km&kk",
-"kkkkkkkgmkkkk bckOhwkkkmkkz;GG1qxli6VpkkVnk4VgkkkGGa*kkkkkkkkr4V%sFnvMGy+kkkkk4<kkb2kk< zyk4tS>kS2uk",
-"kkkkkk%zkkkk<800840kkkkkkkkkFGDG:O aOOkVoa.k%kkkbSk>Gn&GGBnD9uV<dy@3$BGkG22mFFbb0y2kkkkk0SrkkNy6Vkgk",
-"kkkk;#kkkkk>wkzkkNZ4kkk6VSkkkGGCps&$k$gkDk4k5kkkgkk>kkkkkkkkkkkz0bd#vGvbFkkkk4mkkZNkkkkt6kkzrkkF<k*k",
-"kkkk*kzFkbkkzkkSNNktag@6kkkkktGB3X4f@fkunkkk%kkk0kkkkkkkkkkkkk.N8uGfD@6nkkkkck>pNkk>owbkkkrNkmw;y mk",
-"kkk$kkkb<kk4mNZZZ0bkkkkkmFmkkkGG3%otorakk<knkkkkkkkkkkkkkkkkkkS@xflovf%k0XXckkzkk2oNkkk u0k6ukV<<Xkk",
-"kkk=k6kk0NSbkVmkkkkk<6kkkkkkkkkGGxjMrr>kykkAkkkkkkkkkkkkkkkkkkkwoZ+$3orkkkkkk4 Zkkkkk.0kkkbkk4kbukkk",
-"kkkhkk8Nkkb8>zckkckkbFV<ck>kkkkkGBGOj%r;#k2+kkkkkkkkkkkkkkkyw<wd&=pfy%kkFtXrkkkkou.zk;kkk>w02k.wkkkk",
-"kkkXscihna6kwkbzkkk0iVz0y8kckVykkGC7oZGky8,kkkkkkkkkkkkkkwZkkFuh=jll3kkkkkkkk<2kkkkkkkkVw;k ;hckkkkk",
-"kkkkklkkk>wr6kkk>opkk.0k2kFkO;ZbkkqGxdM8Fpkkkkkkkkkkkkkkkkk FVkNn%F5kkkkkk2tcckkkk2kVtiukSwyokkkkkkk",
-"kkkkkkXOkkkkkkkyVkkkkVSZZ kFNF48Nkk8Gl5FiakkkkkkkkkkkkkkkkkV0 dpka&kkkkkkkkkkkkwyF4kkzzkruykkkkkkkkk",
-"kkkkkkkzsykkkNpkkm4wF2w2N8<wZ2Fbk6k009G&xcickkkkkkkkkkkkkkkkkkkkhNkkkNZNrVkkk4rckkkkkkNaykkkkkkkkkkk",
-"kkkkkkkkk;g3Skkkkk VF2mrkS64kZkktS@zkkOGftrqkkkkkkkk6m2S2b@#5GqskwVk8bkkkkkkkmkkkkko$aZkkkkkkkkkkkkk",
-"kkkkkkkkkkkk6s@okkkkkkkkfF;Ny04ya8kkkkkk=G+f<kkkkkkyj&j:xfa6kkk;6zkkkkkkkkkkkkmvXyuzkkkkkkkkkkkkkkkk",
-"kkkkkkkkkkkkkkk;fasikkkkkkzkko$Nkkkkkkkkkc&wb kkkkkkkkkkkk<kkkk;kkkkkkkkkk #afNkkkkkkkkkkkkkkkkkkkkk",
-"kkkkkkkkkkkkkkkkkkkmud$# rs+@kkkkkkkkkkkkkkco15;kkkkkkkkkkkkkkkkkkkkkt%a@pkkkkkkkkkkkkkkkkkkkkkkkkkk",
-"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaxg$* o;mkkkkyojuf+=hyzkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk",
-"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk44d#ddN6kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk",
-"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk",
-"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk",
-"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk",
-"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk",
-"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk",
-"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk",
-"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk",
-"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk-kkkkkkkkkkkkkk",
-"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk--kkkkkkkkkkkkkkk",
-"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk-k-----kkkkkkkkkkkkkkk",
-"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk----k--kkkkkkkkkkkkkkk",
-"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk;--kk-kkkkkkkkkkkkkkkk",
-"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk-kkkkkkkkkkkkkkkk",
-"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk-kkkkkkkkkkkkkkkk"
-};
diff --git a/Documentation/topdocs/AUTHORS.texi b/Documentation/topdocs/AUTHORS.texi
deleted file mode 100644
index 3109316482..0000000000
--- a/Documentation/topdocs/AUTHORS.texi
+++ /dev/null
@@ -1,81 +0,0 @@
-\input texinfo @c -*-texinfo-*-
-@setfilename AUTHORS.info
-@settitle AUTHORS - who did what on GNU LilyPond-
-
-@node Top
-@top
-@menu
-* AUTHORS::                     
-@end menu
-
-@node AUTHORS
-@chapter AUTHORS
-
-
-This file lists authors of GNU LilyPond, and what they wrote.  This
-list is alphabetically ordered.
-
-@itemize @bullet
-@item @email{tca@@gnu.org, Tom Cato Amundsen},
-    accordion symbols, some lilypond-book.py.
-@item @email{jiba@@tuxfamily.org, Jean-Baptiste Lamy},
-    Tablature support.
-@item @email{mats.bengtsson@@s3.kth.se, Mats Bengtsson},
-    @uref{http://www.s3.kth.se/~mabe/},
-    lots of testing, fixes, general comments and contributions.
-@item @email{lconrad@@laymusic.org, Laura Conrad},
-    fixes to abc2ly.
-@item @email{Jan.A.Fagertun@@trondheim.online.no, Jan Arne Fagertun},
-    @TeX{} titling and lytodvi.sh.
-@item @email{foka@@debian.org, Anthony Fok}, 
-    Debian package: debian/*.
-@item @email{, David Gonz@'alez},
-    Spanish glossary translations.
-@item @email{bjoern.jacke@@gmx.de, Bjoern Jacke},
-    German glossary stuff.
-@item @email{chris@@fluffhouse.org.uk, Chris Jackson},
-    Piano pedals, Emacs mode indentation, directed arpeggios.
-@item @email{nj104@@cus.cam.ac.uk, Neil Jerram}, 
-    Glossary translations.
-@item @email{heikki.junes@@hut.fi, Heikki Junes},
-    Finnish translations, Emacs- and Vim-mode updates, docs.
-@item @email{m.krause@@tu-harburg.de, Michael Krause},
-    breathing signs.
-@item @email{dlatt@@datenrat.de, Dirk Lattermann},
-    minor improvements on accidentals/ties/multi measure rests.
-@item @email{wl@@gnu.org, Werner Lemberg},
-    misc bugfixes, some Beam and Stem code. 
-@item @email{, Adrian Mariano},
-    Reference manual, tutorial fixes, glossary.
-@item @email{scancm@@biobase.dk, Christian Mondrup},
-    Glossary.
-@item @email{hanwen@@cs.uu.nl, Han-Wen Nienhuys}, 
-    @uref{http://www.cs.uu.nl/~hanwen/},
-    Main author (initials: HWN).
-@item @email{janneke@@gnu.org, Jan Nieuwenhuizen}, 
-    @uref{http://www.xs4all.nl/~jantien/},
-    Main author (initials: JCN).
-@item @email{pinard@@iro.umontreal.ca, Francois Pinard},
-    @uref{http://www.iro.umontreal.ca/~pinard/},
-    parts of Documentation/user/glossary*, started internationalization stuff.
-@c urg: @c,{} in @email{} barfs.
-@item @email{gperciva@@sfu.ca, Graham Percival},
-    @uref{http://www.sfu.ca/~gperciva/},
-    minor documentation fixes.
-@item @email{portnoy@@ai.mit.edu, Stephen Peters},
-    pdf@TeX{} support.
-@item @email{glenprideaux@@iname.com, Glen Prideaux},
-    minor bug fixes, lyric-phrasing.
-@item @email{Roy.Rankin@@alcatel.com.au, Roy R. Rankin},
-    major extension, fixes to abc2ly, lilypond bug fixes.
-@item @uref{http://www.ipd.uka.de/~reuter, J@"{u}rgen Reuter},
-    Ancient notation  support (mensural notation,
-    Gregorian chant notation), ambitus, clusters.
-@item @email{august@@infran.ru, August S. Sigov},
-    Russian translation.
-@item @email{rune@@zedeler.dk, Rune Zedeler},
-    Drum notation, beaming and auto-accidental code. Font
-    updates. Miscellaneous fixes.
-@end itemize
-
-@bye
diff --git a/Documentation/topdocs/GNUmakefile b/Documentation/topdocs/GNUmakefile
deleted file mode 100644
index d607526ace..0000000000
--- a/Documentation/topdocs/GNUmakefile
+++ /dev/null
@@ -1,9 +0,0 @@
-depth = ../..
-
-
-STEPMAKE_TEMPLATES=documentation tex texinfo topdocs
-LOCALSTEPMAKE_TEMPLATES=lilypond ly
-HTML_FILES=$(addprefix $(outdir)/, $(TEXI_FILES:.texi=.html) $(TELY_FILES:.tely=.html))
-
-include $(depth)/make/stepmake.make 
-
diff --git a/Documentation/topdocs/INSTALL.texi b/Documentation/topdocs/INSTALL.texi
deleted file mode 100644
index 895f1f27b1..0000000000
--- a/Documentation/topdocs/INSTALL.texi
+++ /dev/null
@@ -1,353 +0,0 @@
-@node Top, , , (dir)
-@top
-@comment  node-name,  next,  previous,  up\input texinfo @c -*-texinfo-*-
-@setfilename INSTALL.info
-@settitle INSTALL - compiling and installing GNU LilyPond
-
-@contents
-
-@chapter Compiling and installing on Unix
-
-
-@html
-<a name="download-source">
-@end html
-
-@section Downloading
-
-Even numbered versions are `stable' (2.0, 1.8 etc), while odd version
-are development releases (1.9, 1.7 etc).  Building LilyPond is an
-involved process, so if possible, download a precompiled binary from
-@uref{http://www.lilypond.org/,the lilypond site}.
-
-
-@subsection Source code
-
-Download source tarballs from here:
-@itemize @bullet
-@item Download development releases from
-@uref{http://www.lilypond.org/download/} by HTTP.
-@item @uref{ftp://sca.uwaterloo.ca/pub/} by FTP (Canadian mirror).
-@end itemize
-
-
-Use Xdelta to patch tarballs, e.g. to patch  
-@file{lilypond-1.4.2.tar.gz} to @file{lilypond-1.4.3.tar.gz}, do
-@example
-	xdelta patch lilypond-1.4.2-1.4.3.xd lilypond-1.4.2.tar.gz
-@end example
-
-For information on packaging and CVS, see  
-@uref{http://lilypond.org/}, under ``development''.
-
-
-@subsection Precompiled binaries
-
-Check out @uref{http://lilypond.org} for up to date information on
-binary packages.
-
-
-@subsection Font problems
-
-If you are upgrading from a previous version of LilyPond, be sure to
-remove all old font files. These include @file{.pk} and @file{.tfm} files
-that may be located in @file{/var/lib/texmf}, @file{/var/spool/texmf},
-@file{/var/tmp/texmf} or @file{@var{prefix}/share/lilypond/fonts/}.  A
-script automating this has been included, see
-@file{buildscripts/clean-fonts.sh}.
-
-
-
-
-@section Requirements
-
-@subsection Compilation
-
-You need the following packages to compile LilyPond:
-
-@itemize
-
-@item @uref{http://www.xs4all.nl/~hanwen/mftrace/,mftrace} (1.0.17 or
-newer),
-
-  You will need to install some additional packages to get mftrace to
-work.
-
-@item @uref{http://www.gnu.org/software/guile/guile.html,GUILE} (version 1.6.0 or newer).
-
-@item  @uref{http://www.gnu.org/software/flex/,Flex} (version 2.5.4a or newer). 
-
-WARNING: plain Flex 2.5.4(a) generates invalid C++ code.  GCC 3.x
-chokes on this.  If you wish to use GCC 3.x, make sure that your
-distribution supports g++ 3.x and flex.  For workarounds, see
-lexer-gcc-3.1.sh in the source directory.
-
-@item @TeX{}.
-
-@TeX{} is used as an output backend.
-
-Also, @TeX{}'s libkpathsea is used to find the fonts (@file{.mf},
-@file{.afm}, @file{.tfm}).  Make sure you have tetex 1.0 or newer
-(1.0.6 is known to work).  You may need to install a tetex-devel (or
-tetex-dev or libkpathsea-dev) package too.
-
-@item @uref{ftp://ftp.gnu.org/gnu/texinfo/,Texinfo} (version 4.6 or newer).
-
-@item The
-@uref{ftp://ftp.ctan.org/tex-archive/macros/latex/contrib/supported/geometry,geometry
-package for LaTeX}.
-
- This package is normally included with the @TeX{} distribution.
-
-@item kpathsea, a library for searching (@TeX{}) files.
-
-@item
- @uref{http://gcc.gnu.org/, The GNU c++ compiler} (version 3.1 or
-newer).  EGCS and 2.x are known to cause crashes.
-
-@item @uref{http://www.python.org,Python} (version 2.1 or newer).
-
-@item @uref{ftp://ftp.gnu.org/gnu/make/,GNU Make} (version 3.78 or newer).
-
-@item @uref{http://www.gnu.org/software/bison/,Bison} (version 1.25 or
-newer, but not 1.50 or 1.75).
-@end itemize
-
-@subsection Running requirements
-
-GNU LilyPond does use a lot of resources. For operation you need the
-following software:
-
-@itemize @bullet
-@item @TeX{}.
-@item Xdvi and Ghostscript.
-@item @uref{http://www.gnu.org/software/guile/guile.html,GUILE} 1.6.0, or newer.
-@end itemize
-
-You have to help @TeX{} and MetaFont find LilyPond support
-files. After compiling, scripts to do this can be found in
-@file{buildscripts/out/lilypond-profile} and
-@file{buildscripts/out/lilypond-login}.
-
-@subsection Building documentation
-
-You can view the documentation online at
-@uref{http://www.lilypond.org/doc/}, but you can also build it
-locally. This process requires a successful compile of lilypond. The
-documentation is built by issuing:
-@example 
-	make web
-@end example 
-
-Building the website requires some additional tools: 
-
-@itemize @bullet
-@item The @uref{http://netpbm.sourceforge.net/,netpbm utilities} 
-@item ImageMagick
-@end itemize
-
-The HTML files can be installed into the standard documentation path
-by issuing
-
-@example
-        make out=www web-install
-@end example
-
-
-@section Building LilyPond
-
-To install GNU LilyPond, type
-@example 
-gunzip -c lilypond-x.y.z | tar xf -
-cd lilypond-x.y.z
-./configure		# run with --help to see appropriate options
-make
-make install
-sh buildscripts/clean-fonts.sh      
-@end example 
-
-The most time-consuming part of compiling LilyPond is tracing the
-Type1 fonts. You can shortcut this operation by issuing
-one of the following commands:
-
-@example
-  make -C mf get-pfa                # requires rpm2cpio
-  make -C mf get-debian-pfa         # may not be up to date   
-@end example
-
-If you are doing an upgrade, you should remove all @file{feta}
-@code{.pk} and @code{.tfm} files.  A script has been provided to do the
-work for you, see @file{buildscripts/clean-fonts.sh}.
-
-If you are not root, you should choose a @code{--prefix} argument that
-points into your home directory, e.g.:
-@example 
-	./configure --prefix=$HOME/usr
-@end example 
-
-In this case, you have to insert the contents of
-@code{buildscripts/out/lilypond-login} or
-@code{buildscripts/out/lilypond-profile} into your start up scripts by
-hand.
-
-
-
-@subsection Configuring for multiple platforms
-
-If you want to build multiple versions of LilyPond with different
-configuration settings, you can use the @code{--enable-config=CONF}
-option of configure.  You should use @samp{make conf=CONF} to generate
-the output in @file{out-CONF}.  Example: Suppose I want to build with
-and without profiling.  Then I'd use the following for the normal
-build:
-
-@example 
-	./configure --prefix=$HOME/usr/ --enable-checking
-	make
-	make install
-@end example 
-
-and for the profiling version, I specify a different configuration:
-
-@example 
-	./configure --prefix=$HOME/usr/ --enable-profiling --enable-config=prof --disable-checking
-	make conf=prof
-	make conf=prof install
-@end example 
-
-
-
-@section Emacs mode
-
-An Emacs mode for entering music and running LilyPond is contained in
-the source archive in the @file{elisp} directory.  @command{make
-install} installs it @var{elispdir}.  The file @file{lilypond-init.el}
-should be placed to @var{load-path}@file{/site-start.d/} or appended
-to your @file{~/.emacs} or @file{~/.emacs.el}.
-
-As a user, you may want add your source path or, e.g., @file{~/site-lisp/} 
-to your @var{load-path}. Append the following line (modified) to your 
-@file{~/.emacs}:
-@c any reason we do not advise:  (push "~/site-lisp" load-path)
-@quotation
-@example
-(setq load-path (append (list (expand-file-name "~/site-lisp")) load-path))
-@end example
-@end quotation
-
-
-@section Vim mode
-
-@c lilypond.words.el for vim auto-completion?
-A Vim mode for entering music and running LilyPond is contained in
-the source archive. Append the content of @file{vimrc} to @file{~/.vimrc}
-to get shortcuts. Install file @file{lilypond.words.el} to @file{~/.vim/} to 
-get auto-completion. Syntax highlighting you get by installing files
-@file{lilypond.vim} and @file{lilypond.words.vim} to @file{~/.vim/syntax/} 
-and appending the following to @file{~/.vim/filetype.vim}:
-@quotation
-@example
-	" my filetype file
-	if exists("did_load_filetypes")
-	  finish
-	endif
-	augroup filetypedetect
-	  au! BufRead,BufNewFile  *.ly          setfiletype lilypond
-	augroup
-@end example
-@end quotation
-
-
-
-@section Problems
-
-For help and questions use @email{lilypond-user@@gnu.org}.  Send bug
-reports to @email{bug-lilypond@@gnu.org}.
-
-Bugs that are not fault of LilyPond are documented here.
-
-@subsection Bison 1.875
-
-There is a bug in bison-1.875: compilation fails with "parse error
-before `goto'" in line 4922 due to a bug in bison. To fix, either
-recompile bison 1.875 with the following fix:
-
-@example
-   $ cd lily; make out/parser.cc
-   $ vi +4919 out/parser.cc
-   # append a semicolon to the line containing "__attribute__ ((__unused__))
-   # save
-   $ make
-@end example
-
-@subsection Linking to kpathsea
-
-If kpathsea and the corresponding header files are installed in some
-directory where GCC does not search by default, for example in
-@file{/usr/local/lib/} and @file{/usr/local/include/} respectively,
-you have to explicitly tell configure where to find it. To do this:
-
-@itemize
-@item @code{rm config.cache}
-@item @code{export LDFLAGS=-L/usr/share/texmf/lib}
-@item @code{export CPPFLAGS=-I/usr/share/texmf/include}
-@item @code{./configure}
-@end itemize
-Once configure has found them, the paths are stored in
-@file{config.make} and will be used even if you don't have the
-environment variables set during make.
-
-
-@unnumberedsubsec Gcc-3.0.4
-
-Gcc 3.0.4 is flaky;  upgrade GCC.
-
-@unnumberedsubsec Flex-2.5.4a and gcc-3.x
-
-Flex 2.5.4a does not produce g++-3.1.1 compliant C++ code.  To compile
-LilyPond with gcc-3.1.1 you may do
-
-@example
-	CONF=gcc-3.1 ./lexer-gcc-3.1.sh
-	CPPFLAGS=-I$(pwd)/lily/out-gcc-3.1 CC=gcc-3.1 CXX=g++-3.1 \
-	    ./configure --enable-config=gcc-3.1
-	CONF=gcc-3.1 ./lexer-gcc-3.1.sh
-	make conf=gcc-3.1
-@end example
-
-
-@unnumberedsubsec OpenBSD
-
-@itemize @bullet
-@item
- Refer to the section ``Linking to kpathsea'': GCC on OpenBSD doesn't
-set include paths for kpathsea.
-@end itemize
-
-@unnumberedsubsec NetBSD
-
-@itemize @bullet
-@item The flex precompiled in NetBSD-1.4.2 is broken.
-Upgrade to flex-2.5.4a.
-@end itemize
-
-@unnumberedsubsec  Solaris
-
-@itemize @bullet
-@item Solaris7, ./configure
-
-@file{./configure} needs a POSIX compliant shell.  On Solaris7,
-@file{/bin/sh} is not yet POSIX compliant, but @file{/bin/ksh} or bash
-is.   Run configure like:
-@example
-	CONFIG_SHELL=/bin/ksh ksh -c ./configure
-@end example
-or:
-@example
-	CONFIG_SHELL=/bin/bash bash -c ./configure
-@end example
-
-@end itemize
-
-@bye
-        
diff --git a/Documentation/topdocs/NEWS.texi b/Documentation/topdocs/NEWS.texi
deleted file mode 100644
index 10987a0019..0000000000
--- a/Documentation/topdocs/NEWS.texi
+++ /dev/null
@@ -1,717 +0,0 @@
-\input texinfo @c -*-texinfo-*-
-@setfilename NEWS.info
-@settitle NEWS
-
-@node Top, , , 
-@top
-
-@chapter New features in 2.1 since 2.0
-
-@ignore
-Unreleased:
-
-@itemize
-@end itemize
-
-Version 2.1.13
-@end ignore
-
-@itemize @bullet
-
-@item Tweaks  made with @code{\override} and @code{\revert} no longer
-hide tweaks at higher context levels.
-
-@item Melismata in lyrics are also properly handled  in the MIDI output.
-
-@item The lilypond-book script has been rewritten.
-It is shorter, cleaner and faster.  The special construct
-@code{mbinclude} has been removed, plain @code{@@include} or
-@code{\\input} can be used now.
-
-@ignore
-It now supports
-running convert-ly on the lilypond snippets like so:
-@example
-    lilypond-book --filter='convert-ly --from=2.0.0' my-book.tely
-@end example
-@end ignore
-
-@item The @code{Lyrics} context has been removed. Lyrics should only
-be constructed in @code{LyricsVoice}.
-
-@item The @code{Thread} context has been removed. Note heads and rests
-are now constructed at @code{Voice} level.
-
-@item  Harmonic notes can now be entered as
-
-@example
-   <c' g''\harmonic>
-@end example
-
-@item Drum notation is now supported  as a regular feature:
-percussion may be entered in @code{\drums} mode, and printed or
-performed in a @code{DrumStaff} context:
-
-@example
-  \score @{
-    \drums \new DrumStaff @{ hihat4 cowbell8 @}
-  @}
-@end example
-
-@item The automatic staff changer was internally rewritten. As a
-result, the syntax has been simplified as well:
-
-@example
-  \autochange @var{the music}
-@end example
-
-@item The ergonomic syntax of @code{\markup} now has an equivalent in
-Scheme. The @code{markup*} macro creates such objects; the following
-two markup commands are equivalent:
-@example
- f4^#(markup* #:raise 0.2 #:bold "hi")
- f4^\markup @{ \raise #0.2 \bold hi  @}
-@end example
-
-@item Voice names, for vocal lines, have been added. They are similar
-to instrument names.   They can be set by defining @code{vocalName}
-and @code{vocNam}.
-
-@item Safe mode has been reinstated for lilypond.
-When lilypond is invoked with @code{--safe-mode}, @TeX{} and
-PostScript file output is disallowed, and lilypond-bin is invoked with
-@code{--safe-mode}, the user's Guile expressions are evaluated in a
-safe environment and file inclusion is not allowed.
-
-Warning: this does not protect against denial-of-service attacks using
-Guile, @TeX{} or PostScript.
-
-(This feature is still experimental.)
-
-@item There is now a Scheme macro for defining markup
-commands. Special mark-up commands can be defined in user-files too.
-
-@item Many fixes for dimension scaling have been made,
-resulting in correct results for scores that mix staves in different
-sizes.
-
-@item Improved robustness when  layout properties are accidentally removed.  
-
-@item A  more cleanly constructed part combiner has been installed.
-It is more robust and less buggy. The part-combiner can be used with
-@example
-  \partcombine @var{mus1} @var{mus2}
-@end example
-
-@noindent
-See @file{input/regression/new-part-combine.ly} for an example.
-
-@item Formatting of rehearsal marks has been improved. The @code{\mark}
-command now only does automatic incrementing for marks specified as
-integer. For example, @code{\mark #1} will print an A in the default
-style.  See @file{input/regression/rehearsal-mark-letter.ly},
-@file{input/regression/rehearsal-mark-number.ly}.
-
-@item Formatting of ottava brackets has been much improved.
-
-@item Objects in the output can now be documented: the following fragment
- boxes the note head, and adds the text ``heads or tails?'' three
-spaces below the box.
-
-@example
-       \context Voice \applyoutput #(add-balloon-text
-				     'NoteHead "heads, or tails?"
-				     '(0 . -3))
-
-      
-       c8
-@end example
-
-
-@item Default staff sizes are now scalable. There are two new mechanisms for
-setting staff sizes. Both are demonstrated in this fragment:
-
-@example
-  #(set-global-staff-size 15)
-  \paper @{
-    #(paper-set-staff-size (* 15 pt))
-  @}   
-@end example
-
-
-@noindent
-Both have  the same effect on the global layout  of a
-piece. Similarly, the paper size may be changed as follows
-
-@example
-  #(set-paper-size "a4")
-@end example 
-
-
-@item Warnings for bar check errors are more cleverly printed.  This
-makes @code{barCheckSynchronize} superfluous, so it is now switched
-off by default.
-
-Warning: this will cause problems in scores that use bar checks to
-shorten measures.
-
-@item The black note head was made a little rounder, which causes a less
- frantic graphic impression.
-
-@item
-A more concise syntax for checking octaves was introduced. A note may
-be followed by @code{=}@var{quotes} which indicates what its absolute
-octave should be.  In the following example, 
-
-@example
-  \relative c'' @{ c='' b=' d,='' @}        
-@end example
-
-@noindent
-the d will generate a warning, because a d'' is
-expected, but a d' is found.
-@c @code adds ` ' very confusing.
-
-@item There is a new mechanism for putting lyrics to melodies.
-With this mechanism, @code{LyricVoice}s can be put melodies
-individually, allowing for different melismatic sections in every
-@code{LyricVoice}. See @file{input/regression/lyric-combine-new.ly}.
-
-@item Bar lines may now be dotted.
-
-
-@item The documentation now has links to a wiki, where everyone can
-add personal comments to the manual.
-
-@item Contexts may now be changed locally for an isolated music
-expression. For example,
-  
-@example
-  \new Voice \with @{
-     \consists "Pitch_squash_engraver"
-  @} @{
-    c'4
-  @}
-@end example
-
-@item The syntax for changing staffs has changed. The keyword
-@code{\change} should now be used, e.g.
-
-@example
-  \change Staff = up
-@end example 
-
-@item Features of spanner contexts, like @code{Staff}, can now be changed
-  using @code{\property}, eg.
-
-@example
-  \new Staff @{
-       \property Staff.StaffSymbol \set #'line-count = #4
-       c'4
-  @} 
-@end example
-
-@noindent
-puts a quarter note C on a staff with 4 lines.  
-
-
-@item Multi measure rests are now truly centered between the
-clefs/barlines of the staff, their position is independent of symbols
-on the other staffs.
-
-@item Collision resolution for dots in chords has been improved greatly. 
-
-@item
-Spacing following barlines was improved for widely stretched lines.
-
-@item
-Lyric hyphens and extenders now conform to standard typesetting
-practice.
-
-@item
-Lyrics are now aligned under note heads conforming to engraving
-standards. The responsible code has been rewritten, and is drastically
-simpler from the previous version. To aid this rewrite, the syntactic
-function of the extender line ( __ ) has been changed: it is now
-attached to the lyric syllable.
-
-@item
-When redefining a context, the associated identifier is also
-updated. For example, after reading the following snippet,
-@example
- \translator @{
-        \ScoreContext
-        autoBeaming = ##f
- @}
-@end example
-the definition of @code{ScoreContext} is updated to include the changed
-setting.
-
-
-@item
-The weight of the stafflines is now heavier at smaller staff sizes.
-The font has been modified to match this look: at smaller sizes, the
-font is heavier and the note heads are more rounded.
-
-@item Processing scores is now done while parsing the file. New
-Scheme functions give more flexibility: for example, it is now possible
-interpret a score, collecting synchronized musical events in a list, and
-manipulate that information using inline Scheme. For an example, see
-@file{input/no-notation/recording.ly}.
-
-@item Font sizes can now truly be scaled continuously: the  @code{font-size}
-is similar to the old @code{font-relative-size}, but may be set to
-fractional values; the closest design size will be scaled to achieve
-the desired size. As a side-effect, there are now no longer
-limitations in using smaller fonts (eg. grace notes) at small staff
-sizes.
-
-@item Stem tips are now also engraved with rounded corners.
-
-@item
-The placement of accidentals on chords and ledgered notes is improved.
-
-@end itemize
-
-
-@chapter New features in 2.0 since 1.8
-
-@itemize
-
-@item
-Crescendos can now be drawn dotted or dashed.
-
-@item
-Quarter tones are now supported. They are entered by suffixing
-@code{ih} for a half-sharp and @code{eh} for a half-flat. Hence, the
-following is an ascending list of pitches:
-
-@example
-  ceses ceseh ces ceh c cih cis cisih cisis
-@end example
-
-@item
-The following constructs have been removed from the syntax:
-
-@example
-  \duration #SCHEME-DURATION
-  \pitch #SCHEME-PITCH
-  \outputproperty @var{func} @var{symbol} = @var{value}
-@end example
-
-For @code{\outputproperty}, the following may be substituted:
-
-@example
-   \applyoutput #(outputproperty-compatibility @var{func}
-                  @var{symbol} @var{value}) 
-@end example 
-
-@item
-Clefs may now be transposed arbitrarily, for example
-
-@example
-  \clef "G_8"
-  \clef "G_15"
-  \clef "G_9"
-@end example
-
-
-@item
-The syntax for chords and simultaneous music have changed.
-Chords are entered as
-
-@example
-   <@var{pitches}>
-@end example
-
-while simultaneous music is entered as
-
-@example
-   <<@var{..music list..}>>
-@end example
-
-In effect, the meanings of both have been swapped relative to their 1.8
-definition.  The syntax for lists in @code{\markup} has changed
-alongside, but figured bass mode was not  changed, i.e.:
-
-@example
-  \markup @{ \center <@var{..list of markups..}> @}
-  \figure @{ <@var{figures}> @}
-@end example
-
-As chords the more often used than simultaneous music, this change will
-save keystrokes.
-
-@item
-Each music expression can now be tagged, to make different printed
-versions from the same music expression.  In the following example,
-we see two versions of a piece of music, one for the full score, and
-one with cue notes for the instrumental part:
-
-@example
-<< \tag #'part <<
-     @{ c4 f2 g4 @}      % in the part, we have cue-notes  
-     \\ R1 >>
-  \tag #'score R1  % in the score: only a rest
->>
-@end example
- 
-The same can be applied to articulations, texts, etc.: they are
-made by prepending
-
-@example
-        -\tag #@var{your-tags} 
-@end example
-
-to an articulation, for example, 
-
-@example
-        c4-\tag #'with-fingerings -4 -\tag #'with-strings \6
-@end example
-
-This defines a note, which has a conditional fingering and a
-string-number indication.
-
-@item
-The settings for chord-fingering are more flexible. You can specify a
-list where fingerings may be placed, eg.
-
-@example
-	\property Voice.fingeringOrientations = #'(left down)
-@end example
-
-This will put the fingering for the lowest note below the chord, and the
-rest to the left.
-
-@item
-The script previously known as @code{ly2dvi} has been renamed to
-@code{lilypond}. The binary itself is now installed as
-@code{lilypond-bin}.
-
-@item
-Markup text (ie. general text formatting) may now be used for lyrics too. 
-
-@item
-Two new commands for grace notes have been added, @code{\acciaccatura}
-and @code{\appoggiatura},
-
-@example
-  \appoggiatura f8 e4
-  \acciaccatura g8 f4
-@end example
-
-Both reflect the traditional meanings of acciaccatura and appogiatura,
-and both insert insert a slur from the first grace note to the main
-note.
-
-@item 
-Layout options for grace notes are now stored in a context property,
-and may now be set separately from musical content.
-
-@item
-The @code{\new} command will create a context with a unique
-name automatically. Hence, for multi-staff scores, it is no longer
-necessary to invent arbitrary context names. For example, a two-staff
-score may be created by
-
-@example
-  \simultaneous @{
-    \new Staff @{ @var{notes for 1st staff} @}
-    \new Staff @{ @var{notes for 2nd staff} @}
-  @}
-@end example
-
-
-
-@item
-Octave checks make octave errors easier to correct.
-The syntax is 
-
-@example
-  \octave @var{pitch}
-@end example
-
-This checks that @var{pitch} (without octave) yields @var{pitch} (with
-octave) in \relative mode. If not, a warning is printed, and the
-octave is corrected.
-
-@item
-All articulations must now be entered postfix. For example,
-
-@example
-	c8[( d8]) 
-@end example
-
-@noindent
-is a pair of beamed slurred eighth notes.
-
-@item
-The definition of @code{\relative} has been simplified.  Octaves are
-now always propagated in the order that music is entered. In the
-following example,  
-
-@example
-  PRE
-  \repeat "unfold" 3  BODY \alternative @{ ALT1 ALT2 @}
-  POST
-@end example
-
-@noindent
-the octave of BODY is based on PRE, the starting octave of ALT1 on
-BODY, the starting octave of ALT2 on ALT1, and the starting octave of
-POST on ALT2.
-
-The same mechanism is used for all other music expressions, except the
-chord. Backwards compatibility is retained through a special program option,
-which is set through 
-
-@example
-  #(ly:set-option 'old-relative)
-@end example
-
-@item
-Windows users can double click a @code{.ly} file to process and view
-it automagically through the new @code{lily-wins} frontend.
-
-@end itemize
-
-
-
-
-@chapter New features in 1.8 since 1.6
-
-@itemize
-
-@item 
-The chord entry code has been completely rewritten. It is now
-cleaner and more flexible.
-
-@item 
-A new syntax has been added for text entry.  This syntax is more
-friendly than the old mechanism, and it is implemented in a more
-robust and modular way. For more information, refer to the section on
-"Text markup" in the notation manual.
-
-@item 
-The integration of the input language and Scheme has been made deeper:
-you can now use LilyPond identifiers in Scheme, and use Scheme
-expressions instead of LilyPond identifiers.
-
-@item 
-The internal representation of music has been cleaned up completely
-and converted to Scheme data structures.  The representation may be
-exported as XML.
-
-@item 
-A new uniform postfix syntax for articulation has been introduced.
-A beamed slurred pair of eighth notes can be entered as
-
-@example
-	c8-[-( d8-]-) 
-@end example
-
-In version 2.0, postfix syntax will be the only syntax
-available, and the dashes will become optional.
-
-This will simplify the language: all articulations can be entered as
-postfix, in any order.
-
-@item 
-A new syntax has been added for chords:
-
-
-@example
-	<< PITCHES >>
-@end example 
-
-It is not necessary to update files to this syntax, but it will be for
-using LilyPond version 2.0.  In version 2.0, this syntax will be
-changed to
-
-@example
-	< PITCHES >
-@end example
-
-for chords, and
-
-@example
-	\simultaneous @{ .. @} 
-@end example
-
-for simultaneous music.
-
-To convert your files from <PITCHES> to <<PITCHES>>, use the script
-included in buildscripts/convert-new-chords.py
-
-This change was introduced for the following reasons
-
-@itemize @bullet
-@item
-It solves the "start score with chord" problem, where you have to
-  state \context Voice explicitly when a chord was the start of a
-  Staff or Score.
-@item
-With the new syntax, it is possible to distinguish between
-  articulations (or fingerings) which are for a single chord note,
-  and which are for the entire chord. This allows for per-note
-  fingerings, and is more logical on the whole.
-@end itemize
-
-@item 
-User code may now be executed during interpreting.  The syntax for
-this code is
-
-@example
-	\applycontext #SCHEME-FUNCTION
-@end example
-
-@item 
-User code may now be executed on arbitrary grobs during interpreting.
-The syntax for this feature is
-
-@example
-	\applyoutput #SCHEME-FUNCTION
-@end example
-
-@noindent
-SCHEME-FUNCTION takes a single argument, and is called for every grob
-that is created in the current context.
-
-@item 
-New algorithms for chord-name formatting have been installed. They
-can be tuned and have ergonomic syntax for entering exceptions.
-
-@item 
-Texts may now be put on multimeasure rests, e.g.
-
-@example
-	R1*20^\markup @{ "GP" @}
-@end example
-
-@item
-Ancient notation now prints ligatures in Gregorian square neumes
-notation, roughly following the typographical style of the Liber
-hymnarius of Solesmes, published in 1983.  Ligatures are still printed
-without the proper line breaking and horizontal spacing.
-
-@item 
-Glissandi can now be printed using the zigzag style.
-
-@item 
-LilyPond can now print clusters. The syntax is
-
-@example
-	\apply #notes-to-clusters @{ NOTE NOTE .. @}
-@end example
-
-@item
-For irregular meters, beat grouping marks can be printed. The
-syntax for this is
-
-@example
-	#(set-time-signature 7 8 '(3 2 2))
-@end example
-
-
-@item 
-Nested horizontal brackets for music analysis can now be printed:
-
-@example
-	NOTE-\startGroup
-		..
-	NOTE-\stopGroup
-@end example
-
-
-@item  Ottava brackets are now fully supported as a feature.  The syntax
-is
-
-@example
-	#(set-octavation 1)
-@end example
-
-
-@item  Metronome markings are printed when a \tempo command is processed.
-
-
-
-@item Fingerings can be put on chords horizontally.
-
-
-
-@item  The appearance of various glyphs has been fine-tuned.
-
-
-
-@item  Different types of percent style repeats may now be nested.
-
-
-
-@item  The emacs support has been extended.
-
-
-@item 
-The manual has been completely revised and extended.
-
-@end itemize
-
-@chapter New features in 1.6 since 1.4
-
-
-@itemize @bullet
-
-@item
-Support for figured bass and tablature.
-
-@item
-Completely rewritten beam formatting: provides much better output
-now.
-
-
-@item
-Completely revised and improved music font.
-
-
-@item
-Completely rewritten MIDI import support.
-
-@item
-Completely rewritten grace note support. Practically speaking this
-means that grace notes can be slurred to normal normal notes.
-
-
-@item
-Improved accidental handling and formatting: styles for producing
-cautionaries may vary, and complex collisions between accidentals of a
-chord are handled much better.
-
-@item
-Better spacing: both globally and locally. This includes subtle
-details like optical stem spacing.
-
-@item
-More support for ancient notation: mensural ligatures, ambitus
-(pitch range) of voices, more shapes, etc.
-
-@item
-More support for piano notation: bracket pedals, directed arpeggios,
-arpeggio brackets.
-
-@item
-Easier music polyphonic music entry.
-
-@item
-More extensibility, many speedups and bugfixes
-
-@item
-The manual has been thoroughly revised.
-
-@item
-Development is now hosted at http://savannah.gnu.org, and sources
-can be downloaded through anonymous CVS.
-
-@item
-Support for windows: LilyPond is part of the cygwin distribution,
-which comes with a user-friendly installer.
-
-@end itemize
diff --git a/Documentation/topdocs/README.texi b/Documentation/topdocs/README.texi
deleted file mode 100644
index f920937325..0000000000
--- a/Documentation/topdocs/README.texi
+++ /dev/null
@@ -1,106 +0,0 @@
-\input texinfo @c -*-texinfo-*-
-@setfilename README.info
-@settitle Toplevel README
-
-@node Top, , , 
-@top
-
-@chapter Toplevel README
-
-
-LilyPond is a music typesetter.  It produces beautiful sheet music
-using a description file as input.  LilyPond is part of the GNU
-Project.
-
-@section Versioning
-
-LilyPond uses a versioning scheme similar to the Linux kernel.  In a
-version "x.y.z", an even second number 'y' denotes a stable version.
-For development versions 'y' is odd.
-
-@section Downloading
-
-The primary download site for sourcecode is
-@uref{http://lilypond.org/download/}.
-
-If you have a slow connection, then you are advised to use
-@uref{http://sourceforge.net/projects/xdelta/,xdelta} for patching
-source archives; Xdelta (@file{.xd}) files are supplied on the FTP site.
-
-@section Compilation
-
-For compiling and running LilyPond see the installation instructions.
-These instructions can be found when you unpack lilypond, as
-@file{lilypond-x.y.z/INSTALL.txt}. They are also available on the web
-at
-@uref{http://lilypond.org/doc/v2.1/Documentation/topdocs/out-www/INSTALL.html}.
-
-NOTE: If you downloaded a binary (@file{.rpm}) or use the Cygwin
-@file{setup.exe} program, then you don't have to compile LilyPond.
-
-
-@section Documentation
-
-The documentation is available online at
-@uref{http://www.lilypond.org/doc/}.
-
-You can also build it locally: follow the instructions under `Building
-documentation' in the installation instructions.
-
-
-@section Comments
-
-Send your criticism, comments, bugreports, patches, etc. to the mailing
-list, not to us personally.
-
-@html
-<a name="mailing-lists">
-@end html
-
-We have the following mailing lists:
-
-@itemize @bullet
-@item @uref{http://mail.gnu.org/mailman/listinfo/info-lilypond,info-lilypond@@gnu.org}
-is a low-volume list for information on LilyPond project.
-    This list is moderated; ask 
-    @email{drl@@gnu.org, David R. Linn} or
-    @email{hanwen@@cs.uu.nl, Han-Wen} to send announcements for this
-list.
-
-@item
-@uref{http://mail.gnu.org/mailman/listinfo/lilypond-devel,lilypond-devel@@gnu.org}
-  for discussions about developing LilyPond, in particular the unstable series.
-
-@item @uref{http://mail.gnu.org/mailman/listinfo/lilypond-user,lilypond-user@@gnu.org}
-  for discussions about using LilyPond, in particular the stable series.
-
-@item @uref{http://mail.gnu.org/mailman/listinfo/bug-lilypond,bug-lilypond@@gnu.org}
-for sending bugreports.
-
-@item @uref{http://mail.gnu.org/mailman/listinfo/lilypond-cvs,lilypond-cvs@@gnu.org}
-  for commit messages in CVS development. This is a high-volume moderated
-  list.
-@end itemize
-
-You can search the lists from the following page:
-@uref{http://lilypond.org/search, searching facilities}.
-
-@section Caveats
-
-If you have installed a previous version, be sure to remove old font
-files, e.g.,
-
-@example 
-	rm `find /var/lib/texmf/fonts -name 'feta*'` 
-@end example 
-
-a script to do this is left after compiling in
-@file{buildscripts/out/clean-fonts}.
-
-@section Bugs
-
-Send bug reports to @email{bug-lilypond@@gnu.org}.  For help and
-questions use @email{lilypond-user@@gnu.org}.
-
-
-@bye
diff --git a/Documentation/user/GNUmakefile b/Documentation/user/GNUmakefile
deleted file mode 100644
index 79124a0347..0000000000
--- a/Documentation/user/GNUmakefile
+++ /dev/null
@@ -1,160 +0,0 @@
-# Documentation/tex/Makefile
-
-depth=../..
-
-
-LATEX_FILES =$(wildcard *.latex)
-
-# todo: add latex.
-DVI_FILES = $(addprefix $(outdir)/, $(TELY_FILES:.tely=.dvi))
-
-EXTRA_DIST_FILES= $(LATEX_FILES) $(IMAGES)
-IMAGES=$(wildcard *.png)
-
-OUT_EPS_IMAGES=$(addprefix $(outdir)/,$(IMAGES:.png=.eps))
-OUT_PNG_IMAGES=$(addprefix $(outdir)/,$(IMAGES))
-
-HTML_FILES = $(addprefix $(outdir)/, $(TELY_FILES:.tely=.html))
-
-PS_FILES = $(DVI_FILES:.dvi=.ps)
-PDF_FILES = $(DVI_FILES:.dvi=.pdf)
-
-PS_GZ_FILES= $(addsuffix .gz, $(PS_FILES))
-
-INFO_DOCS = lilypond lilypond-internals music-glossary
-INFO_FILES = $(INFO_DOCS:%=$(outdir)/%.info)
-
-STEPMAKE_TEMPLATES=tex texinfo omf documentation
-
-OMF_FILES += $(outdir)/lilypond-internals.html.omf
-
-LOCALSTEPMAKE_TEMPLATES=lilypond ly
-LILYPOND_BOOK_FLAGS = --process="lilypond-bin -I $(srcdir)/input/test -e '(ly:set-option (quote internal-type-checking) \#t)'"
-
-include $(depth)/make/stepmake.make 
-
-dvi: $(DVI_FILES)
-
-ps: $(PS_FILES)
-
-# Cancel the default info generation rule.  We want to generate info
-# from `.nexi', making sure we don't run LilyPond for inline pictures,
-# when just generating info:
-
-$(outdir)/%.info: $(outdir)/%.texi
-
-default: 
-
-# Info is now built by default via texinfo-rules.
-# We must build them by default, otherwise they get built during make install
-info: $(INFO_FILES)
-
-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\
-"
-
-# Generic rule using % twice not possible?
-# $(outdir)/%/%.html: $(outdir)/%.texi
-$(outdir)/lilypond/lilypond.html: $(outdir)/lilypond.texi 
-	mkdir -p $(dir $@)
-	$(MAKEINFO) -I$(outdir) --output=$(outdir)/lilypond --html $<
-	$(MAKEINFO) -I$(outdir) --output=$@ --html --no-split --no-headers $<
-	rm -f $(outdir)/lilypond/*.png $(outdir)/lilypond/*.ly 
-	-ln -f $(outdir)/*.png $(outdir)/*.ly $(outdir)/lilypond/
-
-$(outdir)/lilypond-internals/lilypond-internals.html: $(outdir)/lilypond-internals.texi
-	mkdir -p $(dir $@)
-	$(MAKEINFO) --output=$(outdir)/lilypond-internals --html $<
-	$(MAKEINFO) -I$(outdir) --output=$@ --html --no-split --no-headers $<
-
-ifeq ($(SPLITTING_MAKEINFO),yes)
-
-$(outdir)/lilypond.dvi: $(OUT_EPS_IMAGES) $(OUT_PNG_IMAGES)
-
-$(outdir)/%.png: %.png
-	convert -geometry 50x50% $< $@
-
-$(outdir)/%.eps: %.png
-	convert $< $@
-
-DEEP_HTML_FILES = $(outdir)/lilypond/lilypond.html $(outdir)/lilypond-internals/lilypond-internals.html
-
-else
-
-# Links referred to by Documentation index
-LILYPOND_LINKS=Reference-Manual.html Tutorial.html Ly2dvi.html Midi2ly.html
-
-local-WWW: outimages deep-symlinks
-
-deep-symlinks:
-	mkdir -p $(outdir)/lilypond
-	cd $(outdir)/lilypond && $(foreach i, $(LILYPOND_LINKS),\
-		rm -f $(i) && ln -s lilypond.html $(i) &&) true
-
-endif
-
-
-local-WWW: $(HTML_FILES) $(datafiles) $(PDF_FILES) $(PS_GZ_FILES) $(DEEP_HTML_FILES) info-dir
-
-local-WWW-clean: deep-WWW-clean
-
-deep-WWW-clean:
-	rm -rf $(outdir)/lilypond $(outdir)/lilypond-internals
-
-info-dir:
-	$(SHELL) $(buildscript-dir)/install-info-html.sh --dir=$(outdir) lilypond lilypond-internals
-
-
-$(outdir)/%.bib: %.bib
-	ln -f $< $@
-
-local-clean:
-	rm -f fonts.aux fonts.log feta*.tfm feta*.*pk 
-	rm -rf $(outdir)/lilypond $(outdir)/lilypond-internals
-
-# lilypond.texi deps
-$(builddir)/mf/$(outconfbase)/feta16list.ly:
-	$(MAKE) -C $(topdir)/mf
-
-$(outdir)/lilypond.texi: $(ITELY_FILES) macros.itexi 
-
-# Rules for the automatically generated documentation
-# When cross-compiling, we don't have lilypond, so we fake
-ifneq ($(CROSS),yes)
-
-
-# There used to be a dependency on a dummy target, to force a rebuild
-# of lilypond-internals every time.  however, this triggers
-# compilation during install, which is a bad thing (tm).
-
-$(outdir)/lilypond-internals.nexi $(outdir)/lilypond-internals.texi: $(builddir)/lily/$(outconfbase)/lilypond-bin
-	cd $(outdir) && $(builddir)/lily/$(outconfbase)/lilypond-bin --verbose $(abs-srcdir)/ly/generate-documentation
-	rm -f $(outdir)/lilypond-internals.nexi
-	-ln $(outdir)/lilypond-internals.texi $(outdir)/lilypond-internals.nexi
-
-
-## unused
-$(outdir)/interfaces.itexi: dummy
-	cd $(outdir) && $(builddir)/lily/$(outconfbase)/lilypond-bin $(abs-srcdir)/ly/generate-interface-doc
-
-else
-
-$(outdir)/lilypond-internals.nexi $(outdir)/lilypond-internals.texi:
-	touch $@
-	touch $(outdir)/$(*F).nexi
-
-$(outdir)/interfaces.itexi:
-	cp dummy-interfaces.itexi $@
-endif
-
-
-local-clean: local-delete
-
-local-delete:
-	-rm -f $(outdir)/lily-1*
-	-rm -f $(outdir)/*
diff --git a/Documentation/user/appendices.itely b/Documentation/user/appendices.itely
deleted file mode 100644
index eb0229825d..0000000000
--- a/Documentation/user/appendices.itely
+++ /dev/null
@@ -1,78 +0,0 @@
-@node Reference manual details
-@appendix Reference manual details
-
-@menu
-* Chord name chart::		
-* MIDI instruments::		
-* The Feta font::		
-@end menu
-
-
-
-@node Chord name chart
-@section Chord name chart
-
-@lilypondfile{chord-names-jazz.ly}
-
-@node MIDI instruments
-@section MIDI instruments
-
-@example 
-"acoustic grand"            "contrabass"           "lead 7 (fifths)"
-"bright acoustic"           "tremolo strings"      "lead 8 (bass+lead)"
-"electric grand"            "pizzicato strings"    "pad 1 (new age)"
-"honky-tonk"                "orchestral strings"   "pad 2 (warm)"
-"electric piano 1"          "timpani"              "pad 3 (polysynth)"
-"electric piano 2"          "string ensemble 1"    "pad 4 (choir)"
-"harpsichord"               "string ensemble 2"    "pad 5 (bowed)"
-"clav"                      "synthstrings 1"       "pad 6 (metallic)"
-"celesta"                   "synthstrings 2"       "pad 7 (halo)"
-"glockenspiel"              "choir aahs"           "pad 8 (sweep)"
-"music box"                 "voice oohs"           "fx 1 (rain)"
-"vibraphone"                "synth voice"          "fx 2 (soundtrack)"
-"marimba"                   "orchestra hit"        "fx 3 (crystal)"
-"xylophone"                 "trumpet"              "fx 4 (atmosphere)"
-"tubular bells"             "trombone"             "fx 5 (brightness)"
-"dulcimer"                  "tuba"                 "fx 6 (goblins)"
-"drawbar organ"             "muted trumpet"        "fx 7 (echoes)"
-"percussive organ"          "french horn"          "fx 8 (sci-fi)"
-"rock organ"                "brass section"        "sitar"
-"church organ"              "synthbrass 1"         "banjo"
-"reed organ"                "synthbrass 2"         "shamisen"
-"accordion"                 "soprano sax"          "koto"
-"harmonica"                 "alto sax"             "kalimba"
-"concertina"                "tenor sax"            "bagpipe"
-"acoustic guitar (nylon)"   "baritone sax"         "fiddle"
-"acoustic guitar (steel)"   "oboe"                 "shanai"
-"electric guitar (jazz)"    "english horn"         "tinkle bell"
-"electric guitar (clean)"   "bassoon"              "agogo"
-"electric guitar (muted)"   "clarinet"             "steel drums"
-"overdriven guitar"         "piccolo"              "woodblock"
-"distorted guitar"          "flute"                "taiko drum"
-"guitar harmonics"          "recorder"             "melodic tom"
-"acoustic bass"             "pan flute"            "synth drum"
-"electric bass (finger)"    "blown bottle"         "reverse cymbal"
-"electric bass (pick)"      "shakuhachi"           "guitar fret noise"
-"fretless bass"             "whistle"              "breath noise"
-"slap bass 1"               "ocarina"              "seashore"
-"slap bass 2"               "lead 1 (square)"      "bird tweet"
-"synth bass 1"              "lead 2 (sawtooth)"    "telephone ring"
-"synth bass 2"              "lead 3 (calliope)"    "helicopter"
-"violin"                    "lead 4 (chiff)"       "applause"
-"viola"                     "lead 5 (charang)"     "gunshot"
-"cello"                     "lead 6 (voice)" 
-@end example 
-
-@node The Feta font
-@section The Feta font
-The following symbols are available in the Feta font and may be
-accessed directly using text markup such as 
-@code{g^\markup @{ \musicglyph #"scripts-segno" @}}, see @ref{Text markup}.
-
-
-@lilypondfile[noindent]{feta16list.ly}
-
-
-@lilypondfile[noindent]{parmesan16list.ly}
-
-
diff --git a/Documentation/user/baer-flat-bw.png b/Documentation/user/baer-flat-bw.png
deleted file mode 100644
index 239170d9dedf954f5ce7f8803217ab82d0ddffa6..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 3301
zcma)9c~p|=8n>o9wpg0o%E^VBHkdVLYNU<{GcKt~I%<;@h6NhtMr1CD%Ty}jMjp+j
zB=S0Hj-{fbrX);Bs99*^D4?Tcn(HT&EG~rHPn$e;&)jqFADr{>ejm^KJiq7n`@JvZ
zAKaZcZ``#}O-*gHtBa$Tn%bI3HMO;C)~^FsX7hcQ9<0T<IXkMUNR$^W@Y{w<E~mrQ
z))00qeb%_Re2{~S>Q`KkJE?c8Yj4-sJ(<u5sHtg0x;lP;BD!#T;8jdtn|6{Xf%#aq
z-*TtA@u?j(>rBfT@-tSJ+0oh>td69c@22Bv=hin|ybW)cc~s~=ji<q*iK@*0?kXV;
zBAMigJy;1e<w7nioH8%8WQDq^ly8|c!~~Vl6RPMlu92QII6tvPIV~b??`I@H#0qP<
zM`?EjnJ%4THCm+Ck&S!fH4p+GbGlwS**Rb#m}n94X=Nf?Z)G;M!bj2{-+Sg6JOPWJ
zKljk?$xjs@3QFJN9^VMDsusK{axU_IbzJcCoUq4AjcXW*NulasjFb7~-OC{tH%5wb
zpFI`Rc%frnLJYCV2vGV)o9&BZ4_Ix<RwfCdS#7OYoH2(Y5j2QSyN%VV>eE7%eA7Hu
z-H`}>4)@@TTgTp+1Z$YH-8Jaj900bK?dM_oWt<)JThiFPkh(jooZV>t(0$|nOFq?4
zcR8eM(}gen5AUVd5>X-bI&gVz5pm`WiVXX*emP5eQIy>1Zhl|?l!f50dL6`ob9EIj
zpa$H^(#jZ;6Od6r=ll^+)0q!MkUwh;>~a{e%&g_Xr2ey&YXS2sKsD)8->V?_6l%m7
z=2tigTKs8*ClO~IJmf~!l$rzCR2_#_QEa4KCnke_wwBcHo?e6{**!34A6%)aRTQW}
z)X=vDK4SVQ;pa#@&^iZiTZRT%3TV-t`F)?mMKYjSOHbWt{~s9sJ+dpS$&`Uk`+$le
zEa~BLTI`&a>kPCzWEmy44m^@%APAbHHgET{kZnc?Q12x<la>MqQoe8u8A-H7<>UjV
zJ8t&-H~IJ&%6BB9{Z=Nhvc*zfgtb*E+-#p+v}ZYU2x~<FbHX^T=R#nyK=rK^U=uDC
zHpBmx2_KW`EWXLeeJsQZnFh3Zvi@wDkVcF@@(k|1dv0uRjKY_B{m;va+&2RY!EO-C
zSioJlFacNKs<@BiX4|>$t!Ml$UuDqVy{(h=Pe>Xb3E`vPblSe@3!9r%DHrBS&W4MH
zjnXM%m`BrbI;&Q3Rc-ubQFh#-|A?Tsya8u;@+~}Y_?_{6iTdO`i+JQrmr+pzf!I)A
zl2X?Gg#&9aQ~&62m(k}82J6PodB@uD7{>Qxm)_iN=Z1+NZwS%E>jl@;3XHqw@9&(P
zE!;D9<(hsjS7oCRp}x(&60ckDyYr?Cpxbzd!;8%*j~3N+1qT`s>$=K^J3YOFr}vfM
zh?Q1$3Pv&+-C?rR7c$f~uHNi6_pG{Ap!5%x?~+?H#=Zn#A%OF=nCbV&QlJ$R+9Cp+
z$A>;_&a{;J<C~x719hAA6^H6Jp~q#Xu_+%3*dhi@`8>;ffW3DsL*mc>w<A#PM5Yc*
z-3>XvB%J@&D7?|$B<a%tzs5xM8liGh^gn8FY3#jd+Vaz!N8eQaL)~l&<PHGHR;kT;
zm*jOIG7hS^QEV<N05qY*IOr-HSYBTB`bS}eV+{&*y=i<%SU2p6*se*OHWP<IxK`vn
zxU13|5@T_!pQ7}cpi`aCxERvWgehs{OryuqL0ex9GKw3zTQ}MjzC4XhCCEpEd-F91
z%9y2$_Ql(LoLmntHkmQ=X+|HsZb7Ggg{EX7B<zR+Dpe-{swiND<B1FVOBbR7Fo^xk
zt%fR0f~pb;n3_6Sc#U+fQ&GV8Kn24_lRSC3U!N>cg@++;+H1;C&ykTu5?$M+zS1p%
zHCS#49LL`{x!qtd;TMnWb^{Yx5R^_jrh#6;SKY0@|Czf+tKde7K0YcH|EMahbyL7Q
zuY&di(%C%&_<+br@l`JVIeQC>&N+D8n==@;dOQ*zS$M#6_Fz9jJ{YE%gdquYY`BAW
z`Zhhu2Uk(P#UHL@?g_w%$)U|27(4)1M0GbqxH$al0Y){?EYaRI7F)wAchd4pIEsJe
zV`uWB$a%^Ad-JK8b8-<GuwgS>vWO2}Q*ar(liQiEzH&B3&SDDyDxrRaz#c3zxLy?<
z#(-V8G1XoCkL+e|JLGH-=mWtoHrCed0DUn4N^Hie|9atL&BRu{_z<_1-v6T6^T*fw
zZr_NPfm{SF{eiiD_+=Do6*qJiNL%%k>qO5PrFq6>UyQwXAh(Mi<Lh-6yM{f*l<|(T
zyXSfNmduxa1fH~pc|`Y679=^fnWQxu#mntKq!M`#4aE4xZ3(9J-|Zxtba;qs&tt?U
znPZFxW&J-MpMq2$e!(5=IHc!)SWiT49Uf>OoTNiAHM3gtmf1=@zbwcOg{1ShkoldV
zuR5fqrFX;~KhH@%JjC4Q(niBeZJp=euam(QV+BL=(3Y%tHXLCP3*AOF8YorF;+lmC
z+a~7}>v}4Y5t$sVVzvphdPPSqg)*1QldV6nnOT<lv;B&FAAWZ_U`nQj>Df6R$cW3?
zSu?tAG*yxuLzgz<slQdB%Ml%uX~&4z*xBrH*liC;PRYMwl)hv8n7z>qA<yjQStTth
z7AV#2e%%@PwoRQ;)+xD_N@w|E(PszFzIV6o-#dkZIr!dax-eqpG6|b|k{x|<uGqZP
zAN8XH4O(?i+Y#6~ll)+8SA0f6DZ!^;D_+uujKnON|JP<adJs|INLL+QnH=Ar8?ZnR
zg^kSSd+@wRHe5q&Bi{eDtE`<H|Ls_dZ>vAzv}Q1JG7nY2M-^)1UNS)kjd!2e8yTOc
zw{U2CYI9z@pjH~3(!m~-*i1M7Svk^GR{jHEr+w9rjV|m`Z6%(!SGfb~69Gv>5IW=@
zsq46m#zx=l%CoUbUY1}fy<#?E|BGM@-eo+lmZRkWc!cG3UdZ&%xcK_H+184V$Py^S
zZSa(LPz}odl=nXQAtq(oNUq86X*HCu*`Ty5xqI*FuI#vjr3(u7;+M{GoIP^t5flA9
zepJ(>scqt-4PCrPN+8FL_AoA-tz)il)~81y$3tznOXqOQu5Oe4NFqk~8Za)iM<nxY
zjikdVao1YXVYgD7#~?1%M@Po?ZdU|4#vdRVkUfKHD36|Ay6Z)!us4Ro>3-jh^Qvo?
zWKhj1Y+JZ&`Z>HH(hd}30{?vs266K@h1Whg`oN&pRT==AHcW6lqBkd1xs6u&ouL?X
z$V4;^bS0>Qgp?6LB^?wX&iz7h0`S@k(GSe=O%a3>G`r=KzlFO9wN*reW6cNf2YXt<
zeiPvbz}p#8u8)+_Z>1{RI%X2#OfNdbX&lBEkk8kso}Q?30QM)M-OBkWxXtz$yGW1}
zsmd^e+NCR+SGImHXc{HG`6ojbml}W8Xl`FsaRQ)e$An@Mv|{4k)6<SPUjghpwRIU?
z66<B`z^+sN6iiPQfR%v1&Y~;6Ut0jS2Hu&#6R6l1uphnE21`b+;@kfb9&PNH85i>2
zig14R^PYfsFpwwrD}L5l7&OsHvkc=+x0zK{A)3l;^L>R-g(pFN*t1QFt!Y>vKXE6C
z-`H0atRZE8G{L{$4ZIC|xs74;Bi`H#$IkK3*h^Ao&!jF+r47w*3YgwBB5Wm7CvYil
zS#alw3x^+8hSYHW`TI;vV#$4HS{jsS<b%HV`<sPpi5iQXMedC{X%9<|3sFAun7;ZB
zL6)|CH`-vbn^Qa>`eGoBWw+)UEOVJ3I+KCv5lJ54VCOU~#KYApt=vc8pAt1!CwIq6
I`*YX-1E>VC?*IS*

diff --git a/Documentation/user/cheatsheet.itely b/Documentation/user/cheatsheet.itely
deleted file mode 100644
index 44507391dd..0000000000
--- a/Documentation/user/cheatsheet.itely
+++ /dev/null
@@ -1,267 +0,0 @@
-@c -*-texinfo-*-
-
-@node Cheat sheet
-@appendix Cheat sheet
-
-
-@multitable @columnfractions  .3 .3 .4  
-
-@item @b{Syntax}
-@tab @b{Description}
-@tab @b{Example}
-
-@item @code{1 2 8 16}
-@tab durations 
-@tab
-@lilypond[relative=1,notime]
-\property Staff.autoBeaming = ##f
-\property Staff.Clef = \turnOff
-c1 c2 c8 c16
-@end lilypond
-
-@item @code{c4. c4..}
-@tab augmentation dots
-@tab
-@lilypond[relative=1,notime]
-\property Staff.Clef = \turnOff
-c4. c4..  
-@end lilypond
-
-@item @code{c d e f g a b }
-@tab scale 
-@tab
-@lilypond[relative=1,notime]
-c d e f g a b
-@end lilypond
-
-@item @code{fis bes}
-@tab alteration 
-@tab
-@lilypond[relative,notime]
-fis bes
-@end lilypond
-
-@item @code{\clef treble \clef bass }
-@tab clefs
-@tab
-@lilypond[notime]
-\clef treble
-s4_" "
-\clef bass
-s4_" "
-@end lilypond
-
-@item @code{\time 3/4 \time 4/4 }
-@tab time signature
-@tab
-@lilypond
-\property Staff.Clef \set #'transparent = ##t 
-\time 3/4
-s4_" "
-\time 4/4
-s16_" "
-@end lilypond
-
-
-@item @code{r4 r8}
-@tab rest 
-@tab
-@lilypond[relative=1,notime]
-\property Staff.Clef = \turnOff
-r4 r8
-@end lilypond
-
-@item @code{d ~ d}
-@tab tie
-@tab
-@lilypond[relative=1,notime]
-\property Score.timing = ##f
-\property Staff.autoBeaming = ##f
-d ~ d
-@end lilypond
-
-@item @code{\key es \major }
-@tab key signature
-@tab
-@lilypond[notime]
-\clef treble
-\key es \major
-s4 
-@end lilypond
-
-@item @var{note}@code{'}
-@tab raise octave
-@tab
-@lilypond[relative=1,notime]
-\property Score.timing = ##f
-\property Staff.autoBeaming = ##f
-a a'
-@end lilypond
-
-@item @var{note}@code{,}
-@tab lower octave
-@tab
-@lilypond[relative=1,notime]
-\property Score.timing = ##f
-\property Staff.autoBeaming = ##f
-c c,
-@end lilypond
-
-
-@item @code{c( d e)}
-@tab slur
-@tab
-@lilypond[fragment,relative=1]
-\property Score.timing = ##f
-\property Staff.TimeSignature = \turnOff
-\property Staff.autoBeaming = ##f
-c( d e)
-@end lilypond
-
-
-@item @code{c\( c( d) e\)}
-@tab phrasing slur
-@tab
-@lilypond[fragment,relative=1]
-\property Score.timing = ##f
-\property Staff.TimeSignature = \turnOff
-\property Staff.autoBeaming = ##f
-c\(  c( d) e\)
-@end lilypond
-
-
-@item @code{a8[ b]}
-@tab beam
-@tab
-@lilypond[fragment,relative=1]
-\property Score.timing = ##f
-\property Staff.TimeSignature = \turnOff
-\property Staff.autoBeaming = ##f
-a8-[ b-]
-@end lilypond
-
-
-@item @code{<< \new Staff ... >>}
-@tab more staves
-@tab
-@lilypond[fragment]
-<< \new Staff { c'1 }
-  \new Staff { c'1 } >>
-@end lilypond
-
-  
-@item @code{c-> c-.}
-@tab articulations
-@tab
-@lilypond[fragment,relative=1]
-\property Staff.TimeSignature = \turnOff
-c-> c-.
-@end lilypond
-
-
-@item @code{c\mf c\sfz}
-@tab dynamics
-@tab
-@lilypond[fragment,relative=1]
-\property Staff.TimeSignature = \turnOff
-c\mf c\sfz
-@end lilypond
-
-
-@item @code{a\< b\!}
-@tab crescendo
-@tab
-@lilypond[fragment,relative=1]
-\property Score.timing = ##f
-\property Staff.TimeSignature = \turnOff
-\property Staff.autoBeaming = ##f
-a\< a \!a
-@end lilypond
-
-@item @code{a\> b\!}
-@tab decrescendo
-@tab
-@lilypond[fragment,relative=1]
-\property Score.timing = ##f
-\property Staff.TimeSignature = \turnOff
-\property Staff.autoBeaming = ##f
-a\> a a\!
-@end lilypond
-
-
-@item @code{< >}
-@tab chord
-@tab
-@lilypond[fragment,relative=1]
-<c e> 
-@end lilypond
-
-
-@item @code{\partial 8}
-@tab upstep
-@tab
-@lilypond[fragment,relative=1]
-  \partial 8
-  f8 c2 d e
-@end lilypond 
-
-
-@item @code{\times 2/3 @{f g a@}}
-@tab triplets
-@tab
-@lilypond[relative=1,fragment]
-  \times 2/3 { f8 g a }
-@end lilypond
-
-
-@item @code{\grace}
-@tab grace notes
-@tab
-@lilypond[relative=1,fragment]
-\context Voice {  \grace b16 c4 }
-@end lilypond
-
-@item @code{\lyrics @{ @dots{} @}}
-@tab entering lyrics
-@tab
-
-@item @code{\context Lyrics}
-@tab printing lyrics
-@tab
-
-@item @code{twin -- kle}
-@tab lyric hyphen 
-@tab
-@lilypond[fragment,relative=1]
- \notes { g'4 g }
-  \lyricsto "" \new LyricsVoice \lyrics {  twin -- kle }
-@end lilypond 
-
-@item @code{\chords @{ c:dim f:maj7 @}}
-@tab chords 
-@tab
-@lilypond[fragment,relative=1]
-  \chords { c:dim f:maj7 }
-@end lilypond 
-
-@item @code{\context ChordNames}
-@tab printing chord names 
-@tab
-@lilypond[fragment,relative=1]
-  \context ChordNames \chords { c:dim f:maj7 }
-@end lilypond 
-
-@item @code{<<@{e f@} \\@{c d@}>>}
-@tab polyphony
-@tab
-@lilypond[fragment,relative=2]
-\context Staff <<{e f} \\ {c d}>>
-@end lilypond
-
-
-@item @code{s4 s8 s16}
-@tab spacer rests
-@tab
-
-@end multitable
-
diff --git a/Documentation/user/converters.itely b/Documentation/user/converters.itely
deleted file mode 100644
index d0d70609ef..0000000000
--- a/Documentation/user/converters.itely
+++ /dev/null
@@ -1,340 +0,0 @@
-@c -*-texinfo-*-
-
-@node Converting from other formats
-@chapter Converting from other formats
-
-Music can be entered also by importing it from other formats.  This
-chapter documents the tools included in the distribution to do so.
-There are other tools that produce LilyPond input, for example GUI
-sequencers and XML converters. Refer to the
-@uref{http://lilypond.org,website} for more details.
-
-
-
-@menu
-* Invoking convert-ly::         Older LilyPond versions.
-* Invoking midi2ly::            Importing MIDI.
-* Invoking etf2ly::             Importing Finale.
-* Invoking abc2ly::             Importing ABC.          
-* Invoking pmx2ly::             Importing PMX.
-* Invoking musedata2ly::        Importing Musedata.
-* Invoking mup2ly::             Importing MUP. 
-@end menu
-
-
-@node Invoking convert-ly
-@section Invoking convert-ly
-
-Convert-ly sequentially applies different conversions to upgrade a
-LilyPond input file.  It uses @code{\version} statements in the file to
-detect the old version number.  For example, to upgrade all LilyPond
-files in the current directory and its subdirectories, use
-@example
-        convert-ly -e --to=1.3.150 `find . -name '*.ly' -print`
-@end example
-
-The program is invoked as follows:
-@example
-        convert-ly [@var{option}]@dots{} @var{file}@dots{}
-@end example
-
-
-The following options can be given:
-
-@table @code
-@item -e,--edit
-    Do an inline edit of the input file. Overrides @code{--output}.
-@item -f,--from=@var{from-patchlevel}
-    Set the level to convert from. If this is not set, convert-ly will
-    guess this, on the basis of @code{\version} strings in the file.
-@item -o,--output=@var{file}
-    Set the output file to write.  
-@item -n,--no-version
-    Normally, convert-ly adds a @code{\version} indicator 
-    to the output. Specifying this option suppresses this.  
-@item -s, --show-rules
-    Show all known conversions and exit.
-@item --to=@var{to-patchlevel}
-    Set the goal version of the conversion. It defaults to the latest
-    available version.
-@item -h, --help
-    Print usage help.
-@end table
-
-
-
-@refbugs
-
-Not all language changes are handled. Only one output option can be specified.
-
-@node Invoking midi2ly
-@section Invoking midi2ly
-
-@cindex MIDI
-
-Midi2ly translates a MIDI input file to a LilyPond source file. MIDI
-(Music Instrument Digital Interface) is a standard for digital
-instruments: it specifies cabling, a serial protocol and a file format.
-
-The MIDI file format is a de facto standard format for exporting music
-from other programs, so this capability may come in useful when you want
-to import files from a program that has no converter for its native
-format.
-
-@file{midi2ly} will convert tracks into @internalsref{Staff} and
-channels into @internalsref{Voice} contexts.  Relative mode is used
-for pitches, durations are only written when necessary.
-
-It is possible to record a MIDI file using a digital keyboard, and then
-convert it to @file{.ly}. However, human players are not rhythmically
-exact enough to make a MIDI to LY conversion trivial.  midi2ly tries to
-compensate for these timing errors, but is not very good at this. It is
-therefore not recommended to use midi2ly for human-generated midi files.
-
-Hackers who know about signal processing are invited to write a more
-robust midi2ly.  midi2ly is written in Python, using a module written in
-C to parse the MIDI files.
-
-It is invoked as follows:
-@example
-        midi2ly [@var{option}]@dots{} @var{midi-file}
-@end example
-
-The following options are supported by midi2ly:
-
-@table @code
-@item -a, --absolute-pitches
-    Print absolute pitches.
-@item -d, --duration-quant=@var{DUR}
-    Quantise note durations on @var{DUR}.
-@item -e, --explicit-durations
-    Print explicit durations.
-@item -h,--help
-    Show summary of usage.
-@item -k, --key=@var{acc}[:@var{minor}]
-    Set default key.  @var{acc} > 0 sets number of sharps; @var{acc} < 0
-    sets number of flats.  A minor key is indicated by ":1".
-@item -o, --output=@var{file}
-    Write output to @var{file}.
-@item -s, --start-quant=@var{DUR}
-    Quantise note starts on DUR.
-@item -t, --allow-tuplet=@var{DUR}*@var{NUM}/@var{DEN}
-    Allow tuplet durations @var{DUR}*@var{NUM}/@var{DEN}.
-@item -V, --verbose
-    Be verbose.
-@item -v, --version
-    Print version number.
-@item -w, --warranty
-    Show warranty and copyright.
-@item -x, --text-lyrics
-    Treat every text as a lyric.
-@end table
-
-
-@node Invoking etf2ly
-@section Invoking etf2ly
-
-@cindex ETF
-@cindex enigma
-@cindex Finale
-@cindex Coda Technology
-
-ETF (Enigma Transport Format) is a format used by Coda Music
-Technology's Finale product. etf2ly will convert part of an ETF
-file to a ready-to-use LilyPond file.
-
-It is invoked as follows:
-@example
-        etf2ly [@var{option}]@dots{} @var{etf-file}
-@end example
-
-The following options are supported by etf2ly:
-@table @code
-@item   -h,--help
-this help
-@item  -o,--output=FILE
-set output filename to FILE
-@item  -v,--version
-version information
-@end table
-
-
-@refbugs
-
-The list of articulation scripts is incomplete.  Empty measures confuse
-etf2ly. Sequences of grace notes are ended improperly sometimes. 
-
-
-@node Invoking abc2ly
-@section Invoking abc2ly
-
-@cindex ABC
-
-ABC is a fairly simple ASCII based format. It is described at the abc site:
-@quotation
-@uref{http://www.gre.ac.uk/~c.walshaw/abc2mtex/abc.txt}.
-@end quotation
-abc2ly translates from ABC to LilyPond. It is invoked as follows:
-
-@example
-        abc2ly [@var{option}]@dots{} @var{abc-file}
-@end example
-
-The following options are supported by abc2ly:
-
-@table @code
-@item   -h,--help
-this help
-@item  -o,--output=@var{file}
-set output filename to @var{file}.
-@item  -v,--version
-print version information.
-@end table
-
-There is a rudimentary facility for adding LilyPond code to the ABC
-source file.  If you say:
-
-@example
-        %%LY voices \property Voice.autoBeaming=##f
-@end example
-
-This will cause the text following the keyword ``voices'' to be inserted 
-into the current voice of the LilyPond output file.
-
-Similarly,
-
-@example
-        %%LY slyrics more words
-@end example
-
-will cause the text following the ``slyrics'' keyword to be inserted
-into the current line of lyrics.
-
-
-@refbugs
-
-The ABC standard is not very ``standard''. For extended features
-(eg. polyphonic music) different conventions exist. 
-
-Multiple tunes in one file cannot be converted.
-
-ABC synchronizes words and notes at the beginning of a line; abc2ly does 
-not.
-
-abc2ly ignores the ABC beaming.
-
-@node Invoking pmx2ly
-@section Invoking pmx2ly
-
-PMX is a MusiXTeX preprocessor written by Don Simons. More information
-on PMX is available from the following site:
-
-@quotation
-@uref{http://icking-music-archive.org/Misc/Music/musixtex/software/pmx/}.
-@end quotation
-
-@cindex PMX
-@cindex MusiXTeX
-@cindex Simons, Don
-pmx2ly converts from PMX to LilyPond input. The program is invoked as
-follows:
-
-@example
-        pmx2ly [@var{option}]@dots{} @var{pmx-file}
-@end example
-
-The following options are supported by pmx2ly:
-
-@table @code
-@item   -h,--help
-this help
-@item  -o,--output=FILE
-set output filename to FILE
-@item  -v,--version
-version information
-@end table
-
-@refbugs
-
-This script was updated last in September 2000, and then successfully
-converted the @file{barsant.pmx} example from the PMX
-distribution. pmx2ly cannot parse more recent PMX files.
-
-
-@node Invoking musedata2ly
-@section Invoking musedata2ly
-
-@cindex Musedata
-@cindex CCARH
-
-Musedata (see @uref{http://www.musedata.org/}) is an electronic library of
-classical music scores, currently comprising about 800 composition
-dating from 1700 to 1825.  The music is encoded in so-called Musedata
-format.  musedata2ly converts a set of musedata files to one .ly file,
-and will include a @code{\header} field if a @file{.ref} file is
-supplied. It is invoked as follows:
-
-@example
-        musedata2ly [@var{option}]@dots{} @var{musedata-files}
-@end example
-
-The following options are supported by musedata2ly:
-
-@table @code
-@item   -h,--help
-print help
-@item  -o,--output=@var{file}
-set output filename to @var{file}
-@item  -v,--version
-version information
-@item  -r,--ref=@var{reffile}
- read background information from ref-file
-@var{reffile}
-@end table
-
-@refbugs
-
-@file{musedata2ly} converts only a small subset of musedata. 
-
-@node Invoking mup2ly
-@section Invoking mup2ly
-
-MUP (Music Publisher) is a shareware music notation program by Arkkra
-Enterprises.  Mup2ly will convert part of a Mup file to LilyPond
-format. It is invoked as follows:
-
-@cindex Music Publisher
-@cindex MUP
-@cindex Arkkra
-
-@example
-        mup2ly [@var{option}]@dots{} @var{mup-file}
-@end example
-
-The following options are supported by mup2ly:
-
-@table @code
-@item   -d,--debug
-show what constructs are not converted, but skipped.
-@item -D, --define=@var{name}[=@code{exp}]
-define macro @var{name} with opt expansion @code{exp}
-@item   -E,--pre-process
-only run the pre-processor
-@item   -h,--help
-print help
-@item  -o,--output=@var{file}
-write output to @var{file}
-@item  -v,--version
-version information
-@item  -w,--warranty
-print warranty and copyright. 
-@end table
-
-
-@refbugs
-
-Only plain notes (pitches, durations), voices, and staves are
-converted.
-
-
-
diff --git a/Documentation/user/dedication.itely b/Documentation/user/dedication.itely
deleted file mode 100644
index 53779bb9a8..0000000000
--- a/Documentation/user/dedication.itely
+++ /dev/null
@@ -1,7 +0,0 @@
-
-@quotation 
-        We would like to dedicate this program to all the friends that we
-        met through music.
-
-        Han-Wen and Jan
-@end quotation
diff --git a/Documentation/user/dummy-interfaces.itexi b/Documentation/user/dummy-interfaces.itexi
deleted file mode 100644
index 65772d0137..0000000000
--- a/Documentation/user/dummy-interfaces.itexi
+++ /dev/null
@@ -1,6 +0,0 @@
-
-@node Full Grob interface list
-@unnumbered Full Grob interface list
-
-The automatic documentation failed to build.
-Visit @uref{http://www.cs.uu.nl/~hanwen/lilypond/Documentation,lilypond online}
diff --git a/Documentation/user/fdl.itexi b/Documentation/user/fdl.itexi
deleted file mode 100644
index a497bbae7c..0000000000
--- a/Documentation/user/fdl.itexi
+++ /dev/null
@@ -1,403 +0,0 @@
-
-@node GNU Free Documentation License
-@appendix GNU Free Documentation License
-
-@cindex FDL, GNU Free Documentation License
-@center Version 1.1, March 2000
-
-@display
-Copyright @copyright{} 2000 Free Software Foundation, Inc.
-59 Temple Place, Suite 330, Boston, MA  02111-1307, USA
-
-Everyone is permitted to copy and distribute verbatim copies
-of this license document, but changing it is not allowed.
-@end display
-
-@enumerate 0
-@item
-PREAMBLE
-
-The purpose of this License is to make a manual, textbook, or other
-written document @dfn{free} in the sense of freedom: to assure everyone
-the effective freedom to copy and redistribute it, with or without
-modifying it, either commercially or noncommercially.  Secondarily,
-this License preserves for the author and publisher a way to get
-credit for their work, while not being considered responsible for
-modifications made by others.
-
-This License is a kind of ``copyleft'', which means that derivative
-works of the document must themselves be free in the same sense.  It
-complements the GNU General Public License, which is a copyleft
-license designed for free software.
-
-We have designed this License in order to use it for manuals for free
-software, because free software needs free documentation: a free
-program should come with manuals providing the same freedoms that the
-software does.  But this License is not limited to software manuals;
-it can be used for any textual work, regardless of subject matter or
-whether it is published as a printed book.  We recommend this License
-principally for works whose purpose is instruction or reference.
-
-@item
-APPLICABILITY AND DEFINITIONS
-
-This License applies to any manual or other work that contains a
-notice placed by the copyright holder saying it can be distributed
-under the terms of this License.  The ``Document'', below, refers to any
-such manual or work.  Any member of the public is a licensee, and is
-addressed as ``you''.
-
-A ``Modified Version'' of the Document means any work containing the
-Document or a portion of it, either copied verbatim, or with
-modifications and/or translated into another language.
-
-A ``Secondary Section'' is a named appendix or a front-matter section of
-the Document that deals exclusively with the relationship of the
-publishers or authors of the Document to the Document's overall subject
-(or to related matters) and contains nothing that could fall directly
-within that overall subject.  (For example, if the Document is in part a
-textbook of mathematics, a Secondary Section may not explain any
-mathematics.)  The relationship could be a matter of historical
-connection with the subject or with related matters, or of legal,
-commercial, philosophical, ethical or political position regarding
-them.
-
-The ``Invariant Sections'' are certain Secondary Sections whose titles
-are designated, as being those of Invariant Sections, in the notice
-that says that the Document is released under this License.
-
-The ``Cover Texts'' are certain short passages of text that are listed,
-as Front-Cover Texts or Back-Cover Texts, in the notice that says that
-the Document is released under this License.
-
-A ``Transparent'' copy of the Document means a machine-readable copy,
-represented in a format whose specification is available to the
-general public, whose contents can be viewed and edited directly and
-straightforwardly with generic text editors or (for images composed of
-pixels) generic paint programs or (for drawings) some widely available
-drawing editor, and that is suitable for input to text formatters or
-for automatic translation to a variety of formats suitable for input
-to text formatters.  A copy made in an otherwise Transparent file
-format whose markup has been designed to thwart or discourage
-subsequent modification by readers is not Transparent.  A copy that is
-not ``Transparent'' is called ``Opaque''.
-
-Examples of suitable formats for Transparent copies include plain
-@sc{ascii} without markup, Texinfo input format, La@TeX{} input format,
-@acronym{SGML} or @acronym{XML} using a publicly available
-@acronym{DTD}, and standard-conforming simple @acronym{HTML} designed
-for human modification.  Opaque formats include PostScript,
-@acronym{PDF}, proprietary formats that can be read and edited only by
-proprietary word processors, @acronym{SGML} or @acronym{XML} for which
-the @acronym{DTD} and/or processing tools are not generally available,
-and the machine-generated @acronym{HTML} produced by some word
-processors for output purposes only.
-
-The ``Title Page'' means, for a printed book, the title page itself,
-plus such following pages as are needed to hold, legibly, the material
-this License requires to appear in the title page.  For works in
-formats which do not have any title page as such, ``Title Page'' means
-the text near the most prominent appearance of the work's title,
-preceding the beginning of the body of the text.
-
-@item
-VERBATIM COPYING
-
-You may copy and distribute the Document in any medium, either
-commercially or noncommercially, provided that this License, the
-copyright notices, and the license notice saying this License applies
-to the Document are reproduced in all copies, and that you add no other
-conditions whatsoever to those of this License.  You may not use
-technical measures to obstruct or control the reading or further
-copying of the copies you make or distribute.  However, you may accept
-compensation in exchange for copies.  If you distribute a large enough
-number of copies you must also follow the conditions in section 3.
-
-You may also lend copies, under the same conditions stated above, and
-you may publicly display copies.
-
-@item
-COPYING IN QUANTITY
-
-If you publish printed copies of the Document numbering more than 100,
-and the Document's license notice requires Cover Texts, you must enclose
-the copies in covers that carry, clearly and legibly, all these Cover
-Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on
-the back cover.  Both covers must also clearly and legibly identify
-you as the publisher of these copies.  The front cover must present
-the full title with all words of the title equally prominent and
-visible.  You may add other material on the covers in addition.
-Copying with changes limited to the covers, as long as they preserve
-the title of the Document and satisfy these conditions, can be treated
-as verbatim copying in other respects.
-
-If the required texts for either cover are too voluminous to fit
-legibly, you should put the first ones listed (as many as fit
-reasonably) on the actual cover, and continue the rest onto adjacent
-pages.
-
-If you publish or distribute Opaque copies of the Document numbering
-more than 100, you must either include a machine-readable Transparent
-copy along with each Opaque copy, or state in or with each Opaque copy
-a publicly-accessible computer-network location containing a complete
-Transparent copy of the Document, free of added material, which the
-general network-using public has access to download anonymously at no
-charge using public-standard network protocols.  If you use the latter
-option, you must take reasonably prudent steps, when you begin
-distribution of Opaque copies in quantity, to ensure that this
-Transparent copy will remain thus accessible at the stated location
-until at least one year after the last time you distribute an Opaque
-copy (directly or through your agents or retailers) of that edition to
-the public.
-
-It is requested, but not required, that you contact the authors of the
-Document well before redistributing any large number of copies, to give
-them a chance to provide you with an updated version of the Document.
-
-@item
-MODIFICATIONS
-
-You may copy and distribute a Modified Version of the Document under
-the conditions of sections 2 and 3 above, provided that you release
-the Modified Version under precisely this License, with the Modified
-Version filling the role of the Document, thus licensing distribution
-and modification of the Modified Version to whoever possesses a copy
-of it.  In addition, you must do these things in the Modified Version:
-
-@enumerate A
-@item
-Use in the Title Page (and on the covers, if any) a title distinct
-from that of the Document, and from those of previous versions
-(which should, if there were any, be listed in the History section
-of the Document).  You may use the same title as a previous version
-if the original publisher of that version gives permission.
-
-@item
-List on the Title Page, as authors, one or more persons or entities
-responsible for authorship of the modifications in the Modified
-Version, together with at least five of the principal authors of the
-Document (all of its principal authors, if it has less than five).
-
-@item
-State on the Title page the name of the publisher of the
-Modified Version, as the publisher.
-
-@item
-Preserve all the copyright notices of the Document.
-
-@item
-Add an appropriate copyright notice for your modifications
-adjacent to the other copyright notices.
-
-@item
-Include, immediately after the copyright notices, a license notice
-giving the public permission to use the Modified Version under the
-terms of this License, in the form shown in the Addendum below.
-
-@item
-Preserve in that license notice the full lists of Invariant Sections
-and required Cover Texts given in the Document's license notice.
-
-@item
-Include an unaltered copy of this License.
-
-@item
-Preserve the section entitled ``History'', and its title, and add to
-it an item stating at least the title, year, new authors, and
-publisher of the Modified Version as given on the Title Page.  If
-there is no section entitled ``History'' in the Document, create one
-stating the title, year, authors, and publisher of the Document as
-given on its Title Page, then add an item describing the Modified
-Version as stated in the previous sentence.
-
-@item
-Preserve the network location, if any, given in the Document for
-public access to a Transparent copy of the Document, and likewise
-the network locations given in the Document for previous versions
-it was based on.  These may be placed in the ``History'' section.
-You may omit a network location for a work that was published at
-least four years before the Document itself, or if the original
-publisher of the version it refers to gives permission.
-
-@item
-In any section entitled ``Acknowledgments'' or ``Dedications'',
-preserve the section's title, and preserve in the section all the
-substance and tone of each of the contributor acknowledgments
-and/or dedications given therein.
-
-@item
-Preserve all the Invariant Sections of the Document,
-unaltered in their text and in their titles.  Section numbers
-or the equivalent are not considered part of the section titles.
-
-@item
-Delete any section entitled ``Endorsements''.  Such a section
-may not be included in the Modified Version.
-
-@item
-Do not retitle any existing section as ``Endorsements''
-or to conflict in title with any Invariant Section.
-@end enumerate
-
-If the Modified Version includes new front-matter sections or
-appendices that qualify as Secondary Sections and contain no material
-copied from the Document, you may at your option designate some or all
-of these sections as invariant.  To do this, add their titles to the
-list of Invariant Sections in the Modified Version's license notice.
-These titles must be distinct from any other section titles.
-
-You may add a section entitled ``Endorsements'', provided it contains
-nothing but endorsements of your Modified Version by various
-parties---for example, statements of peer review or that the text has
-been approved by an organization as the authoritative definition of a
-standard.
-
-You may add a passage of up to five words as a Front-Cover Text, and a
-passage of up to 25 words as a Back-Cover Text, to the end of the list
-of Cover Texts in the Modified Version.  Only one passage of
-Front-Cover Text and one of Back-Cover Text may be added by (or
-through arrangements made by) any one entity.  If the Document already
-includes a cover text for the same cover, previously added by you or
-by arrangement made by the same entity you are acting on behalf of,
-you may not add another; but you may replace the old one, on explicit
-permission from the previous publisher that added the old one.
-
-The author(s) and publisher(s) of the Document do not by this License
-give permission to use their names for publicity for or to assert or
-imply endorsement of any Modified Version.
-
-@item
-COMBINING DOCUMENTS
-
-You may combine the Document with other documents released under this
-License, under the terms defined in section 4 above for modified
-versions, provided that you include in the combination all of the
-Invariant Sections of all of the original documents, unmodified, and
-list them all as Invariant Sections of your combined work in its
-license notice.
-
-The combined work need only contain one copy of this License, and
-multiple identical Invariant Sections may be replaced with a single
-copy.  If there are multiple Invariant Sections with the same name but
-different contents, make the title of each such section unique by
-adding at the end of it, in parentheses, the name of the original
-author or publisher of that section if known, or else a unique number.
-Make the same adjustment to the section titles in the list of
-Invariant Sections in the license notice of the combined work.
-
-In the combination, you must combine any sections entitled ``History''
-in the various original documents, forming one section entitled
-``History''; likewise combine any sections entitled ``Acknowledgments'',
-and any sections entitled ``Dedications''.  You must delete all sections
-entitled ``Endorsements.''
-
-@item
-COLLECTIONS OF DOCUMENTS
-
-You may make a collection consisting of the Document and other documents
-released under this License, and replace the individual copies of this
-License in the various documents with a single copy that is included in
-the collection, provided that you follow the rules of this License for
-verbatim copying of each of the documents in all other respects.
-
-You may extract a single document from such a collection, and distribute
-it individually under this License, provided you insert a copy of this
-License into the extracted document, and follow this License in all
-other respects regarding verbatim copying of that document.
-
-@item
-AGGREGATION WITH INDEPENDENT WORKS
-
-A compilation of the Document or its derivatives with other separate
-and independent documents or works, in or on a volume of a storage or
-distribution medium, does not as a whole count as a Modified Version
-of the Document, provided no compilation copyright is claimed for the
-compilation.  Such a compilation is called an ``aggregate'', and this
-License does not apply to the other self-contained works thus compiled
-with the Document, on account of their being thus compiled, if they
-are not themselves derivative works of the Document.
-
-If the Cover Text requirement of section 3 is applicable to these
-copies of the Document, then if the Document is less than one quarter
-of the entire aggregate, the Document's Cover Texts may be placed on
-covers that surround only the Document within the aggregate.
-Otherwise they must appear on covers around the whole aggregate.
-
-@item
-TRANSLATION
-
-Translation is considered a kind of modification, so you may
-distribute translations of the Document under the terms of section 4.
-Replacing Invariant Sections with translations requires special
-permission from their copyright holders, but you may include
-translations of some or all Invariant Sections in addition to the
-original versions of these Invariant Sections.  You may include a
-translation of this License provided that you also include the
-original English version of this License.  In case of a disagreement
-between the translation and the original English version of this
-License, the original English version will prevail.
-
-@item
-TERMINATION
-
-You may not copy, modify, sublicense, or distribute the Document except
-as expressly provided for under this License.  Any other attempt to
-copy, modify, sublicense or distribute the Document is void, and will
-automatically terminate your rights under this License.  However,
-parties who have received copies, or rights, from you under this
-License will not have their licenses terminated so long as such
-parties remain in full compliance.
-
-@item
-FUTURE REVISIONS OF THIS LICENSE
-
-The Free Software Foundation may publish new, revised versions
-of the GNU Free Documentation License from time to time.  Such new
-versions will be similar in spirit to the present version, but may
-differ in detail to address new problems or concerns.  See
-@uref{http://www.gnu.org/copyleft/}.
-
-Each version of the License is given a distinguishing version number.
-If the Document specifies that a particular numbered version of this
-License ``or any later version'' applies to it, you have the option of
-following the terms and conditions either of that specified version or
-of any later version that has been published (not as a draft) by the
-Free Software Foundation.  If the Document does not specify a version
-number of this License, you may choose any version ever published (not
-as a draft) by the Free Software Foundation.
-@end enumerate
-
-@page
-@appendixsubsec ADDENDUM: How to use this License for your documents
-
-To use this License in a document you have written, include a copy of
-the License in the document and put the following copyright and
-license notices just after the title page:
-
-@smallexample
-@group
-  Copyright (C)  @var{year}  @var{your name}.
-  Permission is granted to copy, distribute and/or modify this document
-  under the terms of the GNU Free Documentation License, Version 1.1
-  or any later version published by the Free Software Foundation;
-  with the Invariant Sections being @var{list their titles}, with the
-  Front-Cover Texts being @var{list}, and with the Back-Cover Texts being @var{list}.
-  A copy of the license is included in the section entitled ``GNU
-  Free Documentation License''.
-@end group
-@end smallexample
-
-If you have no Invariant Sections, write ``with no Invariant Sections''
-instead of saying which ones are invariant.  If you have no
-Front-Cover Texts, write ``no Front-Cover Texts'' instead of
-``Front-Cover Texts being @var{list}''; likewise for Back-Cover Texts.
-
-If your document contains nontrivial examples of program code, we
-recommend releasing these examples in parallel under your choice of
-free software license, such as the GNU General Public License,
-to permit their use in free software.
-
-@c Local Variables:
-@c ispell-local-pdict: "ispell-dict"
-@c End:
-
diff --git a/Documentation/user/glossary.html.in b/Documentation/user/glossary.html.in
deleted file mode 100644
index 086c9d9f23..0000000000
--- a/Documentation/user/glossary.html.in
+++ /dev/null
@@ -1,8 +0,0 @@
-<!meta http-equiv=refresh content="0; url='music-glossary.html'">
-
-
-<h2>Music glossary has moved</h2>
-
-The new location is: <a href='music-glossary.html'>music-glossary.html</a>.
-
-<p>Please update your links.  Sorry for the inconvenience.
diff --git a/Documentation/user/henle-flat-bw.png b/Documentation/user/henle-flat-bw.png
deleted file mode 100644
index b47660f376c9093f85e4b1b6cebef28d43484d93..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 2823
zcmbtW2~?9;77p#ypoOvv0umN0Ai@-!v<F$D5O%?81cYEfR)NYY5J(_{v?YKL(FieR
z(PBa|5-N)jfkZGd$|_)p1w$kV6hojPlmtj%f^BEoGjq<Ip1yP5``^3g|L=eAckg%a
zEBZXZOMQ>w9smHK?&A$T4FIShm2*>7DFDojPO2#%??w7~K>^!^xB-Upv^&K+BpslV
zs=qT;h#Dr^N+Ix)kG}_S45+PVu5Z`-aR>mghu{M}eg;`3suo?VJERK`kJGnp(lOBv
zmx&jQqd>Ph6XN3Jd*X3GD9hT?Oop?2^qrN7n^?2B@N;J-er0*s!p{UA>q~pNf*)O8
zJ>$=dt!WQSu<Kdfl(rH&UnQ+8$gFG2eWy<jI>k)EF{~haX(fEmO9jE*PtBtn)NX#h
z>~5GG;<al3f*!H|S%$A8*{`v(+@(%oCp3n5$?=HbLz1-Uds)akv*?R2P=71JVzDXc
z`?j&m2fh@Ty`>H}yGsMPLi{){2KA;gt|wap8<*7f-)UX!tI70hss1~;l$LJYUO7x@
zBjYI;$u*}FHK!a138uOlw~?wW_kVk%)b^J|SWG)cFjDyVC>y(j4X=URsdZy0lIafB
zgp?u;l<R@w!jAT|{r2@;k9J;B{%}ce8A)Ln`~v5nG637jLKUzzTnT{lck|!r`b)<D
z9tftQ$s+W~o2XNsJ0_ZArL%|AKtWW^cSl_ft>aydhBS@;fgC?VZ937z>;zbu9iOn>
z2{SuevZ1PlNw2ZSdFFpXja?Xr5xM7fJ+2Pf_iIMcj3N66p22*rx1-n4w_qKw-mbQI
z=Gn(k)NmhH2nS;txV9K_WKQ>!mgq4-+(rmWvA<6n-_K<|i!qyLaaltgMu>akr@{Rg
z--g#?V1D2$6nrvB7Pv)9194Vj$#110ikzi;@&Wy9y+*I`SAq*ZWhOoPEA)Kn%CYR0
zir|}2<;Z#BbXYTJBE0P(Dhb!bm=q^}^V#q-eiLI!-`kqc1!3eA^`2^dx3X1&S^=+D
z6R}b7i4rNbU7tmC8Ho+vg*i8?_fvy8q$*7PPsQ~Qf#3;p*F->zU-;IsnKYeOTcgml
z3I0XtfcUqN{NF@|Ua@~RG_rb@B`Qvqn@3UvM%=vZj_Z?st~SiL(Sn0jYfBEYOCLTG
zzA1~K>{8NO^hU-w(D2V^<Wl2pF3~Kah5?t~<QjwdmtIBUjUgVBsF9Pms1m)yJm_9b
z#?`M+^F3!L%<A6AQmjmR3x`e3=VdkF7Y#cC$L_D<1;yKCYsb|42m&YE8vYAT1oVnb
zMd0F#LH`i7by0M@8C`{C*bEh%`To>|*!@nWw$j5+HB-+kGR@#RPhHSus~f_U)|ASg
z7Lki$i?4DDQ9&Qv>;>nR!1^1BWVm<gP#C0s0k1<#<9+xex#@F{K{2}|BgnO?J~RMq
z4X#QGh2$qZxLi643YQGVeLIx<WR~d%uKh5+`C93#y9>neba}z9Be@`f(ScCQ5Y%nd
zHAEUZUGIyopg~8&F%y6JI&>_IiG$O6gAr^!4V{L-BPU7@er#c45iq;KMJC_NDK+0(
zjwf4-Tu8(x8;RdyHB#Zc>ecHBh8Dg|4KH0W*$_J&3budvRnya-O50|l?hvQ7{dL9f
ze~ZK#D4lCWT9~-+Pyl=BgSUv+IV@};Hg(PyfD<Tb!@R)OA<VF$f2a~zRgo+)^hN4W
z(GIhe#pN|=sgvy>n{wYh?{&1G<D@(lEV-K8-@~ULF$fD78_u{KmK)?4gP7y&bzSem
zlV_i13dKt`sMsG$Lx*hIQ$$Z+rrK474Y<dx&sI3}uP2iFtIH{l)xMpVF^;6x=U`Ys
zxL;NMU}v)Hg{G0Ii%iIbm_&7Ga1M0cvdi)f7>iA7pt->j#<=Q5?ELN*lxPXDt8ar=
zyq-g;RkguYm_A+%AI_XTI_%FF6Be)WMrqzIJm>|eA!^Z2$+^%tin!b>c~Q|u>*S_B
z;C=IRpjgrRdYF!w$u>DstGO4RlW}y*C%iwiN3b@2j}d1bzfm3Jpy$U;be*r<kKJr~
z`7{fmnr-=$B(h5gVyvXop<kBp=2h!{GR{Jzw<X>-^<>uaEYyQvYfWjbw3~;mKddw=
zN<p!&GQGi4O{=L%ef}3^$>-$uZmf-h2dvMGmK%eq>b3h?ZRzJ_XC#%kTq+XWO!lIg
znC*k2tL^y`0r0DnV7_Ja-S`kRQ!UK^fqsgVyDB;FDq!S7Ql48B>qG9WsS1WiFL81(
zW#Lllm(Jbmt}`F)0zPIOR)nb-E|IdICzbInzh4W2`2%<N>sVp;!u%!cE~GqQ#z)j{
zjxk?FL?Q-co=X%++X_!QXiRAHeOl|I)3x8F%e%rqk-%9T^Nwn^74urBVF^BHuZuGL
zfY_iBDlbPSTaC1u(<zHvw>}V8$4G%<R#t;cueyJMwu_*%gZ|KC(GOEizKK5pHn?v=
zj}pwul3F$kz7upp92P10SVJ-U!lxrpU4C{FM%y1Pr74OWe{28Bx)#}%P=-6pcfQXA
z)x9se&(s+E`lR(W+3i*@&Fuvw_}l@aYSccoo8>61SX0bi@J7K!GOFhTdx6=6CjZ6?
z(3V7`Dt(Z0jxm$jSp+_;IGmPwmuHOAa$;v0EtjXG*~(A9nQ`JKm9c;Aa$14t;M`^S
z%e(nlD>`byn&l7X)giIShFC0A$4_qB2V!bL@N3?V^vw!Xsg{P8hdg4!f<)}Wn&*A5
z2AU-bQ;H7ug1IWBdS)=SAYndTo<dXXHWEL6;#58Z%Xzb&PpXF&>6>y4MAk}<7bJ1i
zO8(;A;P+MiKkeXo)IR96IC?uAl#ix2NFI%wmta0hPm$`}7Fwp(<4d@;^c=0Xtps?|
zJk2JrFbTU^C3Jqsl$M;$8&AuE{M=ZF+_;J8KX<)-?wpR8Yy6$iwgR)vg45<ghb?P=
zz6!Z$XWvhq$H;k2T9}}9;d}F6m4zvSKpUvUrTB)rE(G0mZ^dK{cby<SJy_Jem6>>C
zbFv!oL^g7oQ!Bk9%$aEZ$MF998EW{%q=UCZ<Y|z3{jn*%hXKIJ8#B!-H!E$qQ^ogU
z4pKj`&FDUKyt^zJq^qSI<&RI$oZp9UJ#dcy0Wy8Iw!hJd(09GE>OsK3+!ALUCY<Ht
zW~I`WA4Rr@QCHR~4%OTC8MS9Mr>`{~Q+L`}&Qj*b7H}c_lkA(E-TBIEE5OGi07`X>
Gxcn~|9dDTc

diff --git a/Documentation/user/internals.itely b/Documentation/user/internals.itely
deleted file mode 100644
index 9a0a738c4f..0000000000
--- a/Documentation/user/internals.itely
+++ /dev/null
@@ -1,1054 +0,0 @@
-@c -*-texinfo-*-
-@c Note:
-@c
-@c A menu is needed before every deeper *section nesting of @nodes
-@c Run M-x texinfo-all-menus-update
-@c to automagically fill in these menus
-@c before saving changes
-
-
-@node Technical manual
-@chapter Technical manual
-
-
-When LilyPond is run, it reads music from a file, translates that into
-notation, and outputs the result to a file. The most important steps
-are the first three. Consequently, there are three important basic
-concepts within LilyPond: music, translation and layout.  The
-following diagram illustrates the concepts, and list the terminology
-associated with each step.
-
- 
-@verbatim
-
-                  +-------------+   	  Translation	   +----------+
-                  |             |			   |	      |
-                  |    Music    |     ------------------>  | Layout   |
-                  |             |   		 	   |  	      |
- 	     	  +-------------+			   +----------+
- 
- 
-Syntax:            c4                     \context           \set #'padding = 
-                                          \property		       
- 
-Objects:           Music expressions   	 Contexts            Layout object
-                                         Engravers           (aka. Grob)
-                                         
-Example objects:   NoteEvent             Voice               NoteHead
-                                         Note_heads_engraver
-                                         
-Example properties: #'pitch              keySignature        #'line-count
-
-User applications: none                  various             tuning layout
-
-@end verbatim
-
-The objects passed around in LilyPond have @emph{properties},
-variables that can contain many different types of information. Users
-can set these variables, to modify the default behavior.  Since there
-are three different main concepts, there are also three types of
-properties:
-
-@cindex properties
-@cindex concepts, main
-@cindex context
-@cindex music expressions
-@cindex layout
-@cindex grob 
-
-
-@table @b
-@item Music properties
-These are used internally, and most users will not see or use them.
-
-They use Scheme-style naming, i.e.  lowercase words separated with
-dashes: @code{pitch}, @code{tremolo-type}.
-
-@item Translation properties
-These influence the translation process, and most users will encounter them
-regularly. For example, beaming behavior is tuned with
-@code{autoBeamSettings}.
-
-These use mixed-caps naming: @code{autoBeamSettings},
-@code{ignoreMelismata}. They are assigned as follows:
-@example
-  \property LyricsVoice.ignoreMelismata = ...
-@end example
-
-@item Layout properties
-These are internally used in the formatting process. Consequently, to
-tune formatting details, it is necessary to adjust these
-properties. For example, some objects may be moved around vertically
-by setting their @code{padding} property.
-
-These properties use Scheme-style naming: @code{c0-position},
-@code{break-align-symbol}. They most often assigned as follows:
-
-@example
-  \property Score.RehearsalMark \set #'break-align-symbol = ...
-@end example
-
-@noindent
-Here, @code{RehearsalMark} is the type of the layout object.
-
-@end table
-
-This chapter discusses details of the three concepts in more detail,
-and explains how they are glued together in LilyPond with the embedded
-Scheme interpreter.
-
-@menu
-* Interpretation context::
-* Scheme integration::
-* Music storage format::
-* Lexical details::
-* Output details::
-@end menu
-
-
-@node Interpretation context
-@section Interpretation context
-
-@menu
-* Creating contexts::
-* Default contexts::
-* Context properties::
-* Context evaluation::
-* Defining contexts::
-* Changing contexts locally::
-* Engravers and performers::
-* Defining new contexts::
-@end menu
-
-
-Interpretation contexts are objects that only exist during program
-run.  During the interpretation phase (when @code{interpreting music}
-is printed on the standard output), the music expression in a
-@code{\score} block is interpreted in time order, the same order in
-which we hear and play the music.  During this phase, the interpretation
-context holds the state for the current point within the music, for
-example:
-@itemize @bullet
-@item What notes are playing at this point?
-
-@item What symbols will be printed at this point?
-
-@item What is the current key signature, time signature, point within
-the measure, etc.?
-@end itemize
-
-Contexts are grouped hierarchically: A @internalsref{Voice} context is
-contained in a @internalsref{Staff} context (because a staff can contain
-multiple voices at any point), a @internalsref{Staff} context is contained in
-@internalsref{Score}, @internalsref{StaffGroup}, or
-@internalsref{ChoirStaff} context.
-
-Contexts associated with sheet music output are called @emph{notation
-contexts}, those for sound output are called @emph{performance
-contexts}.  The default definitions of the standard notation and
-performance contexts can be found in @file{ly/engraver-init.ly} and
-@file{ly/performer-init.ly}, respectively.
-
-
-@node Creating contexts
-@subsection Creating contexts
-@cindex @code{\context}
-@cindex context selection
-
-Contexts for a music expression can be selected manually, using one of
-the following music expressions:
-
-@example
-\new @var{contexttype} @var{musicexpr}
-\context @var{contexttype} [= @var{contextname}] @var{musicexpr}
-@end example
-
-@noindent
-This means that @var{musicexpr} should be interpreted within a context
-of type @var{contexttype} (with name @var{contextname} if specified).
-If no such context exists, it will be created:
-
-@lilypond[verbatim,raggedright]
-\score {
-  \notes \relative c'' {
-    c4 <<d4 \context Staff = "another" e4>> f
-  }
-}
-@end lilypond
-
-@noindent
-In this example, the @code{c} and @code{d} are printed on the default
-staff.  For the @code{e}, a context @code{Staff} called @code{another}
-is specified; since that does not exist, a new context is created.
-Within @code{another}, a (default) Voice context is created for the
-@code{e4}.  A context is ended when when all music referring it has
-finished, so after the third quarter, @code{another} is removed.
-
-The @code{\new} construction creates a context with a
-generated, unique @var{contextname}. An expression with
-@code{\new} always leads to a new context. This is convenient
-for creating multiple staffs, multiple lyric lines, etc.
-
-When using automatic staff changes, automatic phrasing, etc., the
-context names have special meanings, so @code{\new} cannot be
-used.
-
-
-@node Default contexts
-@subsection Default contexts
-
-Every top level music is interpreted by the @code{Score} context; in
-other words, you may think of @code{\score} working like
-
-@example
-\score @{
-  \context Score @var{music}
-@}
-@end example
-
-Music expressions  inherit their context from the enclosing music
-expression. Hence, it is not necessary to explicitly specify
-@code{\context} for most expressions.  In
-the following example, only the sequential expression has an explicit
-context. The notes contained therein inherit the @code{goUp} context
-from the enclosing music expression.
-
-@lilypond[verbatim,raggedright]
-  \notes \context Voice = goUp { c'4 d' e' }
-@end lilypond
-
-
-Second, contexts are created automatically to be able to interpret the
-music expressions.  Consider the following example:
-
-@lilypond[verbatim,raggedright]
-  \score { \notes { c'4-( d' e'-) } }
-@end lilypond
-
-@noindent
-The sequential music is interpreted by the Score context initially,
-but when a note is encountered, contexts are setup to accept that
-note.  In this case, a @code{Voice}, and @code{Staff}
-context are created.  The rest of the sequential music is also
-interpreted with the same @code{Voice}, and
-@code{Staff} context, putting the notes on the same staff, in the same
-voice.
-
-@node Context properties
-@subsection Context properties
-
-Contexts have properties.  These properties are set from the @file{.ly}
-file using the following expression:
-@cindex @code{\property}
-@cindex context properties
-@cindex properties, context
-
-@example
-\property @var{contextname}.@var{propname} = @var{value}
-@end example
-
-@noindent
-Sets the @var{propname} property of the context @var{contextname} to
-the specified Scheme expression @var{value}.  Both @var{propname} and
-@var{contextname} are strings, which can often be written unquoted.
-
-@cindex inheriting
-Properties that are set in one context are inherited by all of the
-contained contexts.  This means that a property valid for the
-@internalsref{Voice} context can be set in the @internalsref{Score} context
-(for example) and thus take effect in all @internalsref{Voice} contexts.
-
-@cindex @code{Current}
-If you do not wish to specify the name of the context in the
-@code{\property}-expression itself, you can refer to the abstract context
-name, @code{Current}.  The @code{Current} context is the latest
-used context.  This will typically mean the @internalsref{Voice} context,
-but you can force another context with the
-@code{\property}-command.  Hence the expressions
-
-@example
-\property @var{contextname}.@var{propname} = @var{value}
-@end example
-
-@noindent
-and
-
-@example
-\context @var{contextname}
-\property Current.@var{propname} = @var{value}
-@end example
-
-@noindent
-do the same thing.  The main use for this is in predefined variables.
-This construction allows the specification of a property-setting
-without restriction to a specific context.
-
-Properties can be unset using the following statement.
-@example
-\property @var{contextname}.@var{propname} \unset
-@end example
-
-@cindex properties, unsetting
-@cindex @code{\unset}
-
-@noindent
-This removes the definition of @var{propname} in @var{contextname}.  If
-@var{propname} was not defined in @var{contextname} (but was inherited
-from a higher context), then this has no effect.
-
-@refbugs
-
-The syntax of @code{\unset} is asymmetric: @code{\property \unset} is not
-the inverse of @code{\property \set}.
-
-The context @code{Current} is confusing.  
-
-
-@node Context evaluation
-@subsection Context evaluation
-
-Contexts can be modified during interpretation with Scheme code. The
-syntax for this is
-@example
-  \applycontext @var{function}
-@end example
-
-@var{function} should be a Scheme function taking a single argument,
-being the context to apply it to. The following code will print the
-current bar number on the standard output during the compile:
-
-@example
-    \applycontext
-      #(lambda (x)
-         (format #t "\nWe were called in barnumber ~a.\n"
-          (ly:get-context-property x 'currentBarNumber)))
-@end example
-
-
-
-@node Defining contexts
-@subsection Defining contexts
-
-@cindex context definition
-@cindex translator definition
-
-The most common way to create a new context definition is by extending
-an existing one.  An existing context from the paper block is copied
-by referencing a context identifier:
-
-@example
-\paper @{
-  \translator @{
-    @var{context-identifier}
-  @}
-@}
-@end example
-
-@noindent
-Every predefined context has a standard identifier. For example, the
-@code{Staff} context can be referred to as @code{\StaffContext}.
-
-The context can then be modified by setting or changing properties,
-e.g.
-@example
-\translator @{
-  \StaffContext
-  Stem \set #'thickness = #2.0
-  defaultBarType = #"||"
-@}
-@end example
-These assignments happen before interpretation starts, so a @code{\property}
-command will override any predefined settings.
-
-@cindex engraver
-
-@refbugs
-
-It is not possible to collect multiple property assignments in a
-variable, and apply to one @code{\translator} definition by
-referencing that variable.
-
-@node Changing contexts locally
-@subsection Changing contexts locally
-
-
-Extending an existing context can also be done locally. A piece of
-music can be interpreted in a changed context by using the following syntax
-
-@example
-  \with @{
-     @var{context modifications}
-  @}
-@end example
-
-These statements comes between @code{\new} or @code{\context} and the
-music to be interpreted. The @var{context modifications} property
-settings and @code{\remove}, @code{\consists} and @code{\consistsend}
-commands. The syntax is similar to the @code{\translator} block.
-
-The following example shows how a staff is created with bigger spaces,
-and without a @code{Clef_engraver}.
-
-@lilypond[relative=1,fragment,verbatim]
-<<
-  \new Staff { c4 es4 g2 }
-  \new Staff \with {
-        StaffSymbol \set #'staff-space = #(magstep 1.5)
-        fontSize = #1.5
-        \remove "Clef_engraver"
-  } {
-        c4 es4 g2
-  } >>
-@end lilypond
-
-@refbugs
-
-The command @code{\with} has no effect on contexts that already
-exist. Neither can it be used for @internalsref{Score} contexts.
-
-
-@node Engravers and performers
-@subsection  Engravers and performers
-
-
-Each context is composed of a number of building blocks, or plug-ins
-called engravers.  An engraver is a specialized C++ class that is
-compiled into the executable. Typically, an engraver is responsible
-for one function: the @code{Slur_engraver} creates only @code{Slur}
-objects, and the @code{Skip_event_swallow_translator} only swallows
-(silently gobbles) @code{SkipEvent}s.
-
-
-
-@cindex engraver
-@cindex plug-in
-
-An existing context definition can be changed by adding or removing an
-engraver. The syntax for these operations is
-@example
-\consists @var{engravername}
-\remove @var{engravername}
-@end example
-
-@cindex \consists
-@cindex \remove
-
-@noindent
-Here @var{engravername} is a string, the name of an engraver in the
-system. In the following example, the @code{Clef_engraver} is removed
-from the Staff context. The result is a staff without a clef, where
-the central C is at its default position, the center line:
-
-@lilypond[verbatim,raggedright]
-\score {
-  \notes {
-    c'4 f'4
-  }
-  \paper {
-    \translator {
-      \StaffContext
-      \remove Clef_engraver
-    }
-  }
-}
-@end lilypond
-
-A list of all engravers is in the internal documentation,
-see @internalsref{Engravers}.
-
-@node Defining new contexts
-@subsection Defining new contexts
-
-
-It is also possible to define new contexts from scratch.  To do this,
-you must define give the new context a name.  In the following
-example, a very simple Staff context is created: one that will put
-note heads on a staff symbol.
-
-@example
-\translator @{
-  \type "Engraver_group_engraver"
-  \name "SimpleStaff"
-  \alias "Staff"
-  \consists "Staff_symbol_engraver"
-  \consists "Note_head_engraver"
-  \consistsend "Axis_group_engraver"
-@}
-@end example
-
-@noindent
-The argument of @code{\type} is the name for a special engraver that
-handles cooperation between simple engravers such as
-@code{Note_head_engraver} and @code{Staff_symbol_engraver}.  This
-should always be  @code{Engraver_group_engraver} (unless you are
-defining a Score context from scratch, in which case
-@code{Score_engraver}   must be used).
-
-The complete list of context  modifiers is the following:
-@itemize @bullet
-@item @code{\alias} @var{alternate-name}:
-This specifies a different name.  In the above example,
-@code{\property Staff.X = Y} will also work on @code{SimpleStaff}s.
-
-@item @code{\consistsend} @var{engravername}:
-Analogous to @code{\consists}, but makes sure that
-@var{engravername} is always added to the end of the list of
-engravers.
-
-Engravers that group context objects into axis groups or alignments
-need to be at the end of the list. @code{\consistsend} insures that
-engravers stay at the end even if a user adds or removes engravers.
-
-@item @code{\accepts} @var{contextname}:
-This context can contains @var{contextname} contexts.  The first
-@code{\accepts} is created as a default context when events (e.g. notes
-or rests) are encountered.
-
-@item @code{\denies}:
-The opposite of @code{\accepts}.
-
-@item @code{\name} @var{contextname}:
-This sets the type name of the context, e.g. @code{Staff},
-@code{Voice}.  If the name is not specified, the translator will not
-do anything.
-@end itemize
-
-
-@node Scheme integration
-@section Scheme integration
-
-@cindex Scheme
-@cindex GUILE
-@cindex Scheme, in-line code
-@cindex accessing Scheme
-@cindex evaluating Scheme
-@cindex LISP
-
-LilyPond internally uses GUILE, a Scheme-interpreter, to represent
-data throughout the whole program, and glue together different program
-modules. For advanced usage, it is sometimes necessary to access and
-program the Scheme interpreter.
-
-Scheme is a full-blown programming language, from the LISP
-family. and a full discussion is outside the scope of this document.
-Interested readers are referred to the website
-@uref{http://www.schemers.org/} for more information on Scheme.
-
-The GUILE library for extension is documented at
-@uref{http://www.gnu.org/software/guile}.
-@ifinfo
-When it is installed, the following link should take you to its manual
-@ref{(guile.info)guile}
-@end ifinfo
-
-@menu
-* Inline Scheme::
-* Input variables and Scheme::
-* Scheme datatypes::
-* Assignments::
-@end menu
-
-@node Inline Scheme
-@subsection Inline Scheme
-
-Scheme expressions can be entered in the input file by entering a
-hash-sign (@code{#}).  The expression following the hash-sign is
-evaluated as Scheme. For example, the boolean value @var{true} is
-@code{#t} in Scheme, so for LilyPond @var{true} looks like @code{##t},
-and can be used in property assignments:
-@example
-  \property Staff.autoBeaming = ##f
-@end example
-
-
-@node Input variables and Scheme
-@subsection Input variables and Scheme
-
-
-The input format supports the notion of variable: in the following
-example, a music expression is assigned to a variable with the name
-@code{traLaLa}.
-@example
-  traLaLa = \notes @{ c'4 d'4 @}
-@end example
-
-@noindent
-
-There is also a form of scoping: in the following example, the
-@code{\paper} block also contains a @code{traLaLa} variable, which is
-independent of the outer @code{\traLaLa}.
-@example
-  traLaLa = \notes @{ c'4 d'4 @}
-  \paper @{ traLaLa = 1.0 @}
-@end example
-@c
-In effect, each input file is a scope, and all @code{\header},
-@code{\midi} and @code{\paper} blocks are scopes nested inside that
-toplevel scope.
-
-Both variables and scoping are implemented in the GUILE module system.
-An anonymous Scheme module is attached to each scope. An assignment of
-the form
-@example
- traLaLa = \notes @{ c'4 d'4 @}
-@end example
-
-@noindent
-is internally converted to a Scheme definition
-@example
- (define traLaLa @var{Scheme value of ``@code{\notes ... }''})
-@end example
-
-This means that input variables and Scheme variables may be freely
-mixed.  In the following example, a music fragment is stored in the
-variable @code{traLaLa}, and duplicated using Scheme. The result is
-imported in a @code{\score} by means of a second variable
-@code{twice}:
-@example
-  traLaLa = \notes @{ c'4 d'4 @}
-
-  #(define newLa (map ly:music-deep-copy
-    (list traLaLa traLaLa)))
-  #(define twice
-    (make-sequential-music newLa))
-
-  \score @{ \twice @}
-@end example
-
-In the above example, music expressions can be `exported' from the
-input to the Scheme interpreter. The opposite is also possible. By
-wrapping a Scheme value in the function @code{ly:export}, a Scheme
-value is interpreted as if it were entered in LilyPond syntax: instead
-of defining @code{\twice}, the example above could also have been
-written as
-@example
-  @dots{}
-  \score @{ #(ly:export (make-sequential-music newLa)) @}
-@end example
-
-
-
-
-
-@node Scheme datatypes
-@subsection Scheme datatypes
-
-Scheme is used to glue together different program modules. To aid this
-glue function, many LilyPond specific object types can be passed as
-Scheme value.
-
-The following list are all LilyPond specific types, that
-can exist during parsing:
-@table @code
-@item Duration
-@item Input
-@item Moment
-@item Music
-@item Event
-In C++ terms, an @code{Event} is a subtype of @code{Music}. However,
-both have different functions in the syntax.
-@item Music_output_def
-@item Pitch
-@item Score
-@item Translator_def
-@end table
-
-
-During a run, transient objects are also created and destroyed.
-
-@table @code
-@item Grob: short for `Graphical object'.
-@item Scheme_hash_table
-@item Music_iterator
-
-@item Molecule: Device-independent page output object,
-including dimensions.
-
-@item Syllable_group
-
-@item Spring_smob
-
-@item Translator: An object that produces audio objects or Grobs.
-It may be accessed with @code{\applyoutput}.
-
-@item Font_metric: An object representing a font.
-@end table
-
-Many functions are defined to manipulate these data structures. They
-are all listed and documented in the internals manual, see
-@internalsref{All scheme functions}.
-
-
-@node Assignments
-@subsection Assignments
-@cindex Assignments
-
-Variables allow objects to be assigned to names during the parse
-stage.  To assign a variable, use
-@example
-@var{name}@code{=}@var{value}
-@end example
-To refer to a variable, precede its name with a backslash:
-`@code{\}@var{name}'.  @var{value} is any valid Scheme value or any of
-the input-types listed above.  Variable assignments can appear at top
-level in the LilyPond file, but also in @code{\paper} blocks.
-
-A variable can be created with any string for its name, but for
-accessing it in the LilyPond syntax, its name must consist of
-alphabetic characters only, and may not be a keyword of the syntax.
-There are no restrictions for naming and accessing variables in the
-Scheme interpreter,
-
-The right hand side of a variable assignment is parsed completely
-before the assignment is done, so variables may be  redefined in terms
-of its old value, e.g.
-@c
-@example
-foo = \foo * 2.0
-@end example
-
-When a variable is referenced in LilyPond syntax, the information it
-points to is copied.  For this reason, an variable reference must
-always be the first item in a block.
-
-@example
-\paper @{
-  foo = 1.0
-  \paperIdent % wrong and invalid
-@}
-@end example
-
-@example
-\paper @{
-  \paperIdent % correct
-  foo = 1.0
-@}
-@end example
-
-
-
-@node Music storage format
-@section Music storage format
-
-Music in LilyPond is entered as music expressions. This section
-discusses different types of music expressions, and explains how
-information is stored internally. This internal storage is accessible
-through the Scheme interpreter, so music expressions may be
-manipulated using Scheme functions.
-
-@menu
-* Music expressions::
-* Internal music representation::
-* Manipulating music expressions::
-@end menu
-
-@node Music expressions
-@subsection Music expressions
-@cindex music expressions
-
-Notes, rests, lyric syllables are music expressions.  Small music
-expressions may be combined to form larger ones, for example, by
-enclosing a list of expressions in @code{\sequential @{ @}} or @code{<<
->>}.  In the following example, a compound expression is formed out of
-the quarter note @code{c} and a quarter note @code{d}:
-
-@example
-\sequential @{ c4 d4 @}
-@end example
-
-@cindex Sequential music
-@cindex @code{\sequential}
-@cindex sequential music
-@cindex @code{<<}
-@cindex @code{>>}
-@cindex Simultaneous music
-@cindex @code{\simultaneous}
-
-The two basic compound music expressions are simultaneous and
-sequential music:
-
-@example
-\sequential @code{@{} @var{musicexprlist} @code{@}}
-\simultaneous @code{@{} @var{musicexprlist} @code{@}}
-@end example
-
-For both, there is a shorthand:
-
-@example
-@code{@{} @var{musicexprlist} @code{@}}
-@end example
-
-@noindent
-for sequential and
-
-@example
-@code{<<} @var{musicexprlist} @code{>>}
-@end example
-
-@noindent
-for simultaneous music.
-In principle, the way in which you nest sequential and simultaneous to
-produce music is not relevant.  In the following example, three chords
-are expressed in two different ways:
-
-@lilypond[fragment,verbatim,center,quote]
-\notes \context Voice {
-  <<a c'>> <<b d'>> <<c' e'>>
-  << { a b c' } { c' d' e' } >>
-}
-@end lilypond
-However, using @code{<<} and @code{>>} for entering chords leads to
-various peculiarities. For this reason, a special syntax
-for chords was introduced in version 1.7: @code{< >}.
-
-
-
-
-
-Other compound music expressions include:
-@example
-\repeat @var{expr}
-\transpose @var{from} @var{to} @var{expr}
-\apply @var{func} @var{expr}
-\context @var{type} = @var{id} @var{expr}
-\times @var{fraction} @var{expr}
-@end example
-
-@node Internal music representation
-@subsection Internal music representation
-
-
-
-
-
-
-When a music expression is parsed, it is converted into a set of
-Scheme music objects. The defining property of a music object is that
-it takes up time. Time is a rational number that measures the length
-of a piece of music, in whole notes.
-
-A music object has three kinds of types:
-@itemize @bullet
-@item
-  music name: Each music expression has a name, for example, a note
-leads to a @internalsref{NoteEvent}, and @code{\simultaneous} leads to
-a @internalsref{SimultaneousMusic}. A list of all expressions
-available is in the internals manual, under @internalsref{Music
-expressions}.
-
-@item
-  `type' or interface: Each music name has several `types' or interface,
-  for example, a note is an @code{event}, but it is also a @code{note-event},
-  a @code{rhythmic-event} and a @code{melodic-event}.
-
-  All classes of music are listed in the internals manual, under
-  @internalsref{Music classes}.
-@item
-C++ object: Each music object is represented by a C++ object. For technical
-reasons, different music objects may be represented by different C++
-object types. For example, a note is @code{Event} object, while
-@code{\grace} creates a @code{Grace_music} object.
-
-We expect that distinctions between different C++ types will disappear
-in the future.
-@end itemize
-
-The actual information of a music expression is stored in properties.
-For example, a @internalsref{NoteEvent} has @code{pitch} and
-@code{duration} properties that store the pitch and duration of that
-note.  A list of all properties available is in the internals manual,
-under @internalsref{Music properties}.
-
-A compound music expression is a music object that contains other
-music objects in its properties. A list of objects can be stored in
-the @code{elements} property of a music object, or a single `child'
-music object in the @code{element} object. For example,
-@internalsref{SequentialMusic} has its children in @code{elements},
-and @internalsref{GraceMusic} has its single argument in
-@code{element}. The body of a repeat is in @code{element} property of
-@internalsref{RepeatedMusic}, and the alternatives in @code{elements}.
-
-@node Manipulating music expressions
-@subsection Manipulating music expressions
-
-Music objects and their properties can be accessed and manipulated
-directly, through the @code{\apply} mechanism.
-The syntax for @code{\apply} is
-@example
-\apply #@var{func} @var{music}
-@end example
-
-@noindent
-This means that the scheme function @var{func} is called with
-@var{music} as its argument.  The return value of @var{func} is the
-result of the entire expression.  @var{func} may read and write music
-properties using the functions @code{ly:get-mus-property} and
-@code{ly:set-mus-property!}.
-
-An example is a function that reverses the order of elements in
-its argument:
-@lilypond[verbatim,raggedright]
-  #(define (rev-music-1 m)
-     (ly:set-mus-property! m 'elements (reverse
-       (ly:get-mus-property m 'elements)))
-     m)
-  \score { \notes \apply #rev-music-1 { c4 d4 } }
-@end lilypond
-
-The use of such a function is very limited. The effect of this
-function is void when applied to an argument which is does not have
-multiple children.  The following function application has no effect:
-
-@example
-  \apply #rev-music-1 \grace @{ c4 d4 @}
-@end example
-
-@noindent
-In this case, @code{\grace} is stored as @internalsref{GraceMusic}, which has no
-@code{elements}, only a single @code{element}. Every generally
-applicable function for @code{\apply} must -- like music expressions
-themselves -- be recursive.
-
-The following example is such a recursive function: It first extracts
-the @code{elements} of an expression, reverses them and puts them
-back. Then it recurses, both on @code{elements} and @code{element}
-children.
-@example
-#(define (reverse-music music)
-  (let* ((elements (ly:get-mus-property music 'elements))
-         (child (ly:get-mus-property music 'element))
-         (reversed (reverse elements)))
-
-    ; set children
-    (ly:set-mus-property! music 'elements reversed)
-
-    ; recurse
-    (if (ly:music? child) (reverse-music child))
-    (map reverse-music reversed)
-
-    music))
-@end example
-
-A slightly more elaborate example is in
-@inputfileref{input/test,reverse-music.ly}.
-
-Some of the input syntax is also implemented as recursive music
-functions. For example, the syntax for polyphony
-@example
-  <<a \\ b>>
-@end example
-
-@noindent
-is actually  implemented as a recursive function that replaces the
-above by the internal equivalent of
-@example
-  << \context Voice = "1" @{ \voiceOne a @}
-    \context Voice = "2" @{ \voiceTwo b @} >>
-@end example
-
-Other applications of @code{\apply} are writing out repeats
-automatically (@inputfileref{input/test,unfold-all-repeats.ly}),
-saving keystrokes (@inputfileref{input/test,music-box.ly}) and
-exporting
-LilyPond input to other formats  (@inputfileref{input/test,to-xml.ly})
-
-@seealso
-
-@file{scm/music-functions.scm}, @file{scm/music-types.scm},
-@inputfileref{input/test,add-staccato.ly},
-@inputfileref{input/test,unfold-all-repeats.ly}, and
-@inputfileref{input/test,music-box.ly}.
-
-@node Lexical details
-@section Lexical details
-
-
-@cindex string
-@cindex concatenate
-
-By enclosing text in quotes (@code{"}), strings are formed.  To
-include a @code{"} character in a string write @code{\"}.  Various
-other backslash sequences have special interpretations as in the C
-language.  A string that does not contain spaces or special characters
-can be written without the quotes. The exact form of such unquoted
-strings depends on the input mode; there are different rules for
-lyrics, notes and markups.  Strings can be concatenated with the
-@code{+} operator.
-
-
-@node Output details
-@section Output details
-
-LilyPond's default output format is @TeX{}.  Using the option @option{-f}
-(or @option{--format}) other output formats can be selected also, but
-currently none of them work reliably.
-
-At the beginning of the output file, various global parameters are defined.
-It also contains a large @code{\special} call to define PostScript routines
-to draw items not representable with @TeX{}, mainly slurs and ties.  A DVI
-driver must be able to understand such embedded PostScript, or the output
-will be rendered incompletely.
-
-Then the file @file{lilyponddefs.tex} is loaded to define the macros used
-in the code which follows.  @file{lilyponddefs.tex} includes various other
-files, partially depending on the global parameters.
-
-Now the music is output system by system (a `system' consists of all
-staves belonging together).  From @TeX{}'s point of view, a system is an
-@code{\hbox} which contains a lowered @code{\vbox} so that it is centered
-vertically on the baseline of the text.  Between systems,
-@code{\interscoreline} is inserted vertically to have stretchable space.
-The horizontal dimension of the @code{\hbox} is given by the
-@code{linewidth} parameter from LilyPond's @code{\paper} block.
-
-
-After the last system LilyPond emits a stronger variant of
-@code{\interscoreline} only if the macro
-@code{\lilypondpaperlastpagefill} is not defined (flushing the systems
-to the top of the page).  You can avoid that by setting the variable
-@code{lastpagefill} in LilyPond's @code{\paper} block.
-
-It is possible to fine-tune the vertical offset further by defining the
-macro @code{\lilypondscoreshift}:
-
-@example
-\def\lilypondscoreshift@{0.25\baselineskip@}
-@end example
-
-@noindent
-where @code{\baselineskip} is the distance from one text line to the next.
-
-The code produced by LilyPond should be run through La@TeX{}, not
-plain @TeX{}.
-
-Here an example how to embed a small LilyPond file @code{foo.ly} into
-running La@TeX{} text without using the @code{lilypond-book} script
-(@pxref{lilypond-book manual}):
-
-@example
-\documentclass@{article@}
-
-\def\lilypondpaperlastpagefill@{@}
-\lineskip 5pt
-\def\lilypondscoreshift@{0.25\baselineskip@}
-
-\begin@{document@}
-This is running text which includes an example music file
-\input@{foo.tex@}
-right here.
-\end@{document@}
-@end example
-
-The file @file{foo.tex} has been simply produced with
-
-@example
-lilypond foo.ly
-@end example
-
-It is important to set the @code{indent} parameter to zero in the
-@code{\paper} block of @file{foo.ly}.
-
-The call to @code{\lineskip} assures that there is enough vertical space
-between the LilyPond box and the surrounding text lines.
-
-@c EOF
diff --git a/Documentation/user/introduction.itely b/Documentation/user/introduction.itely
deleted file mode 100644
index ae051f5720..0000000000
--- a/Documentation/user/introduction.itely
+++ /dev/null
@@ -1,758 +0,0 @@
-@c -*-texinfo-*-
-
-
-@node Introduction
-@chapter Introduction
-
-There are a lot of programs that let you print sheet music with a
-computer, but most of them do not do good job.  Most computer
-printouts have a bland, mechanical look, and are unpleasant to play
-from.  If you agree with us on that, then you will like LilyPond: we
-have tried to capture the original look of hand-engraved music.  We
-have tuned our algorithms, font-designs, and program settings to make
-the program produce prints that match the quality of the old editions
-we love to see and love to play from.
-
-
-@menu
-* Notation in LilyPond ::       
-* Engraving in LilyPond::       
-* Typography and program architecture::  
-* Music representation::        
-* Example applications::        
-* About this manual::           
-@end menu
-
-
-@node Notation in LilyPond
-@section Notation in LilyPond
-
-
-@cindex engraving
-@cindex typography
-
-
-Printing sheet music consists of two non-trivial tasks. First, one has
-to master music notation: the science of knowing which symbols to use
-for what. Second, one has to master music engraving: the art of
-placing symbols such that the result looks pleasing.
-
-Common music notation is a system of recording music that has evolved
-over the past 1000 years. The form that is now in common use, dates
-from the early renaissance. Although, the basic form (i.e. note heads on a
-5-line staff) has not changed, the details still change to express the
-innovations of contemporary notation.  Hence, it encompasses some 500
-years of music. Its applications range from monophonic melodies to
-monstruous counterpoint for large orchestras.
-
-How can we get a grip on such a many-headed beast, and force it into
-the confines of a computer program?  Our solution is to make a strict
-distinction between notation, @emph{what} symbols to use, and
-engraving, @emph{where} to put them.  Anything related to the second
-question is considered ``engraving'' (i.e. typography).
-
-For tackling the first problem, notation, we have broken up the
-problem into digestible (and programmable) chunks: every type of
-symbol is handled by a separate program module, a so-called plug-in.
-Each plug-in are completely modular and independent, so each can be
-developed and improved separately.  When put together, the plug-ins
-can solve the music notation program in cooperation.  People that put
-graphics to musical ideas are called copyists or engravers, so by
-analogy, each plug-in is also called @code{engraver}.
-
-In the following example, we see how we start out with a note head
-engraver.
-
-@lilypond[]
-\include "engraver-example.lyinc"
-
-\score { \topVoice
-\paper {
-       \translator { \VoiceContext
-       \remove "Stem_engraver"
-       \remove "Phrasing_slur_engraver"
-       \remove "Slur_engraver"
-       \remove "Script_engraver"
-       \remove "Beam_engraver"
-       \remove "Auto_beam_engraver"
-       
-       }
-       \translator { \StaffContext
-       \remove "Accidental_engraver"
-       \remove "Key_engraver"
-       \remove "Clef_engraver"
-       \remove "Bar_engraver"
-       \remove "Time_signature_engraver"
-       \remove "Staff_symbol_engraver"
-       \consists "Pitch_squash_engraver"
-        }
-       
-} 
-}
-@end lilypond
-
-Then a @code{Staff_symbol_engraver} adds the staff:
-
-@lilypond[]
-\include "engraver-example.lyinc"
-
-\score { \topVoice
-\paper {
-       \translator { \VoiceContext
-       \remove "Stem_engraver"
-       \remove "Phrasing_slur_engraver"
-       \remove "Slur_engraver"
-       \remove "Script_engraver"
-       \remove "Beam_engraver"
-       \remove "Auto_beam_engraver"
-       
-       }
-       \translator { \StaffContext
-       \remove "Accidental_engraver"
-       \remove "Key_engraver"
-       \remove "Clef_engraver"
-       \remove "Bar_engraver"
-       \consists "Pitch_squash_engraver"
-       \remove "Time_signature_engraver"
-        }
-       
-} 
-}
-@end lilypond
-
- The @code{Clef_engraver} defines a reference point for the staff:
-
-@lilypond[]
-\include "engraver-example.lyinc"
-
-\score { \topVoice
-\paper {
-       \translator { \VoiceContext
-       \remove "Stem_engraver"
-       \remove "Phrasing_slur_engraver"
-       \remove "Slur_engraver"
-       \remove "Script_engraver"
-       \remove "Beam_engraver"
-       \remove "Auto_beam_engraver"
-       }
-       \translator { \StaffContext
-       \remove "Accidental_engraver"
-       \remove "Key_engraver"
-       \remove "Bar_engraver"
-       \remove "Time_signature_engraver"
-        }
-       
-} 
-}
-@end lilypond
-
-And the @code{Stem_engraver} adds stems:
-
-@lilypond[]
-\include "engraver-example.lyinc"
-
-\score { \topVoice
-\paper {
-       \translator { \VoiceContext
-       \remove "Phrasing_slur_engraver"
-       \remove "Slur_engraver"
-       \remove "Script_engraver"
-       \remove "Beam_engraver"
-       \remove "Auto_beam_engraver"
-       }
-       \translator { \StaffContext
-       \remove "Accidental_engraver"
-       \remove "Key_engraver"
-       \remove "Bar_engraver"
-       \remove "Time_signature_engraver"
-        }
-} 
-}
-@end lilypond
-
-The @code{Stem_engraver} is notified of any note head coming along.
-Every time one (or more, for a chord) note head(s) is seen, a stem
-object is created, and attached to the note head.
-
-By adding engravers for beams, slurs, accents, accidentals, bar lines,
-time signature, and key signature, we get a complete piece of
-notation.
-
-@lilypond[]
-\include "engraver-example.lyinc"
-
-\score { \topVoice }
-@end lilypond
-
-
-
-This system works well for monophonic music, but what about
-polyphony? In polyphonic notation, many voices can share a staff.
-
-@lilypond[]
-\include "engraver-example.lyinc"
-\score { \context Staff << \topVoice \\ \botVoice >> }
-@end lilypond
-
-In this situation, the accidentals and staff are shared, but the
-stems, slurs, beams, etc. are private to each voice. Hence, engravers
-should be grouped. The engravers for note head, stems, slurs, etc. go
-into a group called ``Voice context,'' while the engravers for key,
-accidental, bar, etc. go into a group called ``Staff context.'' In the
-case of polyphony, a single Staff context contains more than one Voice
-context.  In polyphonic notation, many voices can share a staff:
-Similarly, more Staff contexts can be put into a single Score context.
-
-@lilypond[]
-\include "engraver-example.lyinc"
-\score {
-<< \new Staff << \topVoice \\ \botVoice >>
-\new Staff << \pah \\ \hoom >>
-  >>
-}
-@end lilypond
-
-
-
-@node Engraving in LilyPond
-@section Engraving in LilyPond
-
-
-The term music engraving derives from the traditional process of music
-printing.  Only a few decades ago, sheet music was made by cutting and
-stamping the music into zinc or pewter plates, in mirror image. The plate
-would be inked, and the depressions caused by the cutting and stamping
-would hold ink.  An image was formed by pressing paper to the
-plate. The stamping and cutting was completely done by hand. Making
-corrections was cumbersome, so engraving had to be done correctly in
-one go. Of course, this was a highly specialized skill, much more so
-than the traditional process of printing books.
-@cindex craftsmanship
-@cindex master
-In the traditional German system of craftsmanship six years of full-time
-training, more than any other craft, were required before a student
-could call himself a master of the art. After that many more years of
-practical experience were needed to become an established music
-engraver.  Even today, with the use of high-speed computers and
-advanced software, music requires lots of manual fine tuning before it
-is acceptable for publication.
-
-
-Sheet music is performance material: everything is done to aid the
-musician in letting him perform better.  Music often is far away from
-its reader---it might be on a music stand. To make it clearly
-readable, traditionally printed sheet music always uses bold symbols,
-on heavy staff lines, and is printed on large sheets of paper.  This
-``strong'' look is also present in the horizontal spacing.  To
-minimize the number of page breaks, (hand-engraved) sheet music is
-spaced very tightly. Yet, by a careful distribution of white space,
-the feeling of balance is retained, and a clutter of symbols is
-avoided.
-
-
-We have used these observations in designing LilyPond.  The images
-below show the flat symbol. On the left, a scan from a Henle edition,
-which was made by a computer, and in the center is the flat from a
-hand engraved B@"{a}renreiter edition of the same music. The left scan
-illustrates typical flaws of computer print: the symbol is much
-lighter, the staff lines are thinner, and the glyph has a straight
-layout with sharp corners. By contrast, the B@"{a}renreiter has a bold
-and almost voluptuous rounded look.  Our flat symbol is designed
-after, among others, this one.  It is tuned it to harmonize with the
-thickness of our staff lines, which are also much thicker than Henle's
-lines.
-
-@multitable @columnfractions  .1 .3 .3 .3
-@item @tab
-@iftex
-@image{henle-flat-bw,4cm}
-@end iftex
-@html
-<img src=henle-flat-bw.png>
-@end html
-
-@tab
-@iftex
-@image{baer-flat-bw,4cm}
-@end iftex
-@html
-<img  src=baer-flat-bw.png>
-@end html
-
-@tab
-@iftex
-@image{lily-flat-bw,4cm}
-@end iftex
-@html
-<img src=lily-flat-bw.png>
-@end html
-
-@item @tab
-Henle (2000)
-@tab
-B@"{a}renreiter (1950)
-@tab
-LilyPond Feta font (2003)
-
-@end multitable
-
-
-@cindex musical symbols
-@cindex font
-@cindex blackness
-@cindex balance
-
-In spacing, the distribution of space should reflect the durations
-between notes.  However, adhering with mathematical precision to the
-duration will lead to a poor result. Shown here is an example of a
-motive, printed twice. It is printed using exact mathematical spacing,
-and with some corrections. Can you spot which fragment is which?
-
-@cindex optical spacing
-@lilypond[noindent]
-    \score { \notes {
-      \property Staff.NoteSpacing \set #'stem-spacing-correction
-        = #0.6
-      c'4 e''4 e'4 b'4 |
-       \stemDown b'4 e''4 a'4 e''4| \stemBoth
-       \bar "||"
-      \property Staff.NoteSpacing \override #'stem-spacing-correction
-      = #0.0
-      \property Staff.StaffSpacing \override #'stem-spacing-correction
-      = #0.0
-      c'4 e''4 e'4 b'4 |
-      \stemDown b'4 e''4 a'4 e''4|
-    }
-    \paper { raggedright = ##t } }
-@end lilypond
-
-@cindex regular rhythms
-@cindex regular spacing
-
-The fragment only uses quarter notes: notes that are played in a
-constant rhythm. The spacing should reflect that. Unfortunately, the
-eye deceives us a little: not only does it notice the distance between
-note heads, it also takes into account the distance between
-consecutive stems. As a result, the notes of an up-stem/down-stem
-combination should be put farther apart, and the notes of a down-up
-combination should be put closer together, all depending on the
-combined vertical positions of the notes. The first two measures are
-printed with this correction, the last two measures without. The notes
-in the last two measures form down-stem/up-stems clumps of notes.
-
-@node Typography and program architecture
-@section Typography and program architecture
-
-Producing good engraving requires skill and knowledge.  As the
-previous examples show, there is a lot of subtlety involved in music
-engraving, and unfortunately, only a small fraction of these details
-are documented.  Master engravers must learn all these details from
-experience or from other engravers, which is why it takes so long to
-become a master.  As an engraver gets older and wiser, he will be able
-to produce better and more complex pieces.  A similar situation is
-present when putting typographical knowledge into a computer program.
-It is not possible to come up with a definitive solution for a problem
-at the first try. Instead, we start out with simple solution that
-might cover 75% of the cases, and gradually refine that solution over
-the course of months or years, so 90 or 95 % of the cases are
-handled.
-
-This has an important implication for the design of the program: at
-any time, almost every piece of formatting code must be considered as
-temporary. When the need arises, it is to be replaced a solution that
-will cover even more cases.  A ``plug-in'' architecture is a clean
-way to accomplish this. This is an architecture where new pieces of
-code can be inserted in the program dynamically.  In such a program, a
-new solution can be developed along-side the existing code. For
-testing, it is plugged in, but for production use, the old solution is
-used. The new module can be perfected separately until it is better
-than the existing solution, at which point it replaces the old one.
-
-Until that time, users must have a way to deal with imperfections:
-these 25%, 10% or 5% of the cases that are not handled
-automatically. In these cases, a user must be able to override
-formatting decisions. To accomplish this we store decisions in generic
-variables, and let the user manipulate thosed.  For example, consider
-the following fragment of notation:
-
-@lilypond
-\score { \notes \relative c'' {
-\stemUp
-    a4_\f f,8
-  	}
-\paper { raggedright = ##t }
-     }
-@end lilypond
-
-@noindent
-The position of the forte symbol is slightly awkward, because it is
-next to the low note, whereas dynamics should be below notes in
-general. This may be remedied by inserting extra space between the
-high note and the `f', as shown in this example:
-
-@lilypond
-\score { \notes \relative c'' {
-\stemUp
-    \once\property Voice. DynamicLineSpanner  \override #'padding = #4.0 
-    a4_\f f,8
-  	}
-\paper { raggedright = ##t }
-     }
-@end lilypond
-
-This was achieved with the following input statement:
-@example
-   \once \property Voice. DynamicLineSpanner  \override #'padding = #4.0 
-@end example
-It increases the amount of space (@code{padding}) between the note and
-the dynamic symbol to 4.0 (which is measured in staff space, so 4.0
-equals the height of a staff). The keyword @code{\once} indicates that
-this is a tweak: it is only done one time.
-
-Both design aspects, a plug-in architecture, and formatting variables,
-are built on top of GUILE, an interpreter for the programming language
-Scheme, which is a member of the LISP family. Variables are stored as
-Scheme objects, and attached to graphical objects such as note heads
-and stems. The variables are a means to adjust formatting details in
-individual cases, but they are used in a more general manner.
-
-Consider the case of a publisher that is not satisfied with the in the
-default layout, and wants heavier stems. Normally, they are @code{1.3}
-times the thickness of staff lines, but suppose that their editions
-require them to be twice the thickness of the staff lines. The same
-mechanism can be used to adjust a setting globally. By issuing the
-following command, the entire piece is now formatted with thicker stems:
-@example
-    \property Score.Stem \override #'thickness = #3.0 
-@end example
-
-@lilypond
-\score { \notes \relative c'' {
-    \property Score.Stem \override #'thickness = #3.0 
-    \once\property Voice. DynamicLineSpanner  \override #'padding = #4.0 
-\stemUp
-    a4_\f f,8
-  	}
-\paper { raggedright = ##t }
-     }
-@end lilypond
-
-@noindent
-In effect, by setting these variables, users can define their own
-layout styles.
-
-``Plug-ins'' are also implemented using Scheme.  A formatting
-``plug-in'' takes the form of a function written in Scheme (or a C++
-function made available as a Scheme function), and it is also stored
-in a variable.  For example, the placement of the forte symbol in the
-example above is calculated by the function
-@code{Side_position_interface::aligned_side}.  If we want to replace
-this function by a more advanced one, we could issue
-@example
-    \property Voice.DynamicLineSpanner \override #'Y-offset-callbacks
-       = #(list gee-whiz-gadget)
-@end example
-
-@noindent
-Now, the formatting process will trigger a call to our new
-@code{gee-whiz-gadget} function when the position of the f symbol has
-to be determined.
-
-The full scope of this functionality certainly is intimidating, but
-there is no need to fear: normally, it is not necessary to define
-style-sheets or rewrite formatting functions. In fact, LilyPond gets a
-lot of formatting right automatically, so adjusting individual layout
-situations is not needed  often at all.
-
-
-@node Music representation
-@section Music representation
-
-
-Our premise is that LilyPond is a system that does music formatting
-completely automatically. Under this assumption, the output does not
-have to be touched up. Consequently, an interactive display of the
-output, where it is possible to reposition notation elements, is
-superfluous.  This implies that the program should be a batch program:
-the input is entered in a file, which then is @emph{compiled}, i.e.
-put through the program.  The final output is produced as a file ready
-to view or print. The compiler fills in all the details of the
-notation, those details should be left out of the input file. In other
-words, the input should mirror the content as closely as possible. In
-the case of music notation the content is the music itself, so that is
-what the input should consist of.
-
-On paper this theory sounds very good. In practice, it opens a can of
-worms. What really @emph{is} music? Many philosophical treatises must
-have been written on the subject.  Instead of losing ourselves in
-philosophical arguments over the essence of music, we have reversed
-the question to yield a more practical approach. Our assumption is
-that the printed score contains all of the music of piece. We build a
-program that uses some input format to produce such a score. Over the
-course of time, the program evolves. While this happens, we can remove
-more and more elements of the input format: as the program improves,
-it can fill in irrelevant details of the input by itself. At some
-(hypothetical) point, the program is finished: there is no possibility
-to remove any more elements from the syntax.  What we have left is by
-definition exactly the musical meaning of the score.
-
-There are also more practical concerns.  Our users have to key in the
-music into the file directly, so the input format should have a
-friendly syntax: a quarter note C is entered as @code{c4}, the code
-@code{r8.}  signifies a dotted eighth rest.
-
-Notes and rests form the simplest musical expressions in the input
-syntax.  More complex constructs are produced by combining them into
-compound structures. This is done in much the same way that complex
-mathematical formulas are built from simple expressions such as
-numbers and operators.
-
-In effect, the input format is a language, and the rules of that
-language can be specified succinctly with a so-called context-free
-grammar.  The grammar formally specificies what types of input form
-valid `sentences'.  Reading such languages, and splitting them into
-grammatical structures is a problem with standard solutions.
-Moreover, rigid definitions make the format easier to understand: a
-concise formal definition permits a simple informal description.
-
-The user-interface of LilyPond is its syntax.  That part is what users
-see most.  As a results, some users think that music representation is
-a very important or interesting problem. In reality, less than 10% of
-the source code of the program handles reading and representing the
-input, and they form the easy bits of the program.  In our opinion,
-producing music notation, and formatting it prettily are much more
-interesting and important than music representation: solving
-these problems takes up most of the bulk of the code, and they are the
-most difficult things to get right.
-
-@node Example applications
-@section Example applications
-
-We have written LilyPond as an experiment of how to condense the art
-of music engraving into a computer program. Thanks to all that hard
-work, the program can now be used to perform useful tasks.  The
-simplest application is printing notes:
-
-@lilypond[relative=1]
-  \time 2/4 c4 c g'4 g a4 a g2  
-@end lilypond
-
-By adding chord names and lyrics we obtain a lead sheet:
-
-@lilypond[raggedright]
-\score { <<
-  \context ChordNames \chords  { c2 c f2 c }
-  \notes \relative c' { \time 2/4 c4 c g'4 g a4 a g2 }
-  \context LyricsVoice \lyrics  { twin4 kle twin kle lit tle star2 } >> }
-@end lilypond
-
-Polyphonic notation and piano music can also be printed. The following
-example combines some more exotic constructs:
-
-@lilypondfile{screech-boink.ly}
-
-The fragments shown above have all been written by hand, but that is
-not a requirement. Since the formatting engine is mostly automatic, it
-can serve as an output means for other programs that manipulate
-music. For example, it can also be used to convert databases of
-musical fragments to images for use on websites and multimedia
-presentations.
-
-This manual also shows an application: the input format is plain text,
-and can therefore be easily embedded in other text-based formats, such
-as La@TeX{}, HTML or in the case of this manual, Texinfo.  By means of a
-special program, the input fragments can be replaced by music images in
-the resulting PostScript or HTML output files. This makes it easy to
-mix music and text in documents.
-
-
-
-@node About this manual
-@section About this manual
-
-The manual is divided into the following chapters:
-@itemize @bullet
-@item
-@ifhtml The 
-@end ifhtml
-@emph{@ref{Tutorial}}
-gives a  gentle introduction to typesetting music.
-First time users should start here. 
-@item
-@ifhtml
-The
-@end ifhtml
-@emph{@ref{Notation manual}}
-discusses topics grouped by notation construct. Once you master the
-basics, this is the place to look up details.
-@item
-@ifhtml
-The
-@end ifhtml
-@emph{@ref{Literature list}}
- contains a set of useful reference books, for those who wish to know
- more  on notation and engraving. 
-@item
-@ifhtml
- The
- @end ifhtml
-@emph{@ref{Technical manual}}
-@c
-discusses the general design of the program, and how to extend its
-functionality.
-@item
-@ifhtml
-The chapter
-@end ifhtml
-@emph{@ref{Invoking LilyPond}}  explains how to run LilyPond and its helper
-programs.
-
-@item
-@ifhtml
-The 
-@end ifhtml
-@emph{@ref{lilypond-book manual}}
-explains  the details behind creating documents with in-line music
-examples (like this manual).
-
-
-@item
-@ifhtml
-The chapter 
-@end ifhtml
-@emph{@ref{Converting from other formats}}
-explains how to run the conversion programs. These programs
-are supplied with the LilyPond package, and convert a variety of music
-formats to the @code{.ly}  format. In addition, this section explains
-how to upgrade input files from previous versions of LilyPond.
-
-@end itemize
-
-Once you are an experienced user, you can use the manual as reference:
-there is an extensive index@footnote{If you are looking for something,
-and you cannot find it in the manual, that is considered a bug.  In
-that case, please file a bug report.}, but the document is also
-available in
-@ifnothtml
-a big HTML page,
-@end ifnothtml 
-@ifhtml
-@uref{../lilypond.html, a big HTML page}
-@end ifhtml
-which can be searched easily using the search facility of a web
-browser.
-@cindex search in manual
-@cindex using the manual
-
-
-If you are not familiar with music notation or music terminology
-(especially if you are a non-native English speaker), then it is
-advisable to consult the glossary as well. The glossary explains
-musical terms, and includes translations to various languages. It is a
-@ifhtml
-@uref{../music-glossary.html,separate document}.
-@end ifhtml
-@ifnothtml
-separate document, available in HTML and PDF.
-@end ifnothtml
-@cindex idiom
-@cindex jargon
-@cindex terminology
-@cindex foreign languages
-@cindex language
-
-
-This manual is not complete without a number of other documents. They
-are not available in print, but should be included with the
-documentation package for your platform:
-
-@itemize @bullet
-@item
-Program reference
-@ifhtml
-(available @uref{../lilypond-internals/lilypond-internals.html,here})
-@end ifhtml
-
-The program reference is a set of heavily crosslinked HTML pages,
-which documents the nit-gritty details of each and every LilyPond
-class, object and function.  It is produced directly from the
-formatting definitions used.
-
-Almost all formatting functionality that is used internally, is
-available directly to the user. For example, all variables that
-control thicknesses, distances, etc, can be changed in input
-files. There are a huge number of formatting options, and all of them
-are described in the generated documentation.  Each section of the
-notation manual has a @b{See also} subsection, which refers to the
-the generated documentation.  In the HTML document, these subsections
-have clickable links.
-
-@item
-  Templates
-@ifhtml
-(available @uref{../../../input/template/out-www/collated-files.html,here})
-@end ifhtml
-
-After you have gone through the tutorial, you should be able to write
-input files. In practice, writing files from scratch turns out to be
-intimidating.  To give you a headstart, we have collected a number of
-often-used formats in example files.  These files can be used as a
-start: simply copy the template, and add notes in the appropriate
-places.
-
-@item
-  Various input examples
-@ifhtml
-(available @uref{../../../../input/test/out-www/collated-files.html,here})
-@end ifhtml
-@cindex snippets
-
-These small files show various tips and tricks, and are available as a
-big HTML document, with pictures and explanatory texts included.
-
-
-@item
-  The regression tests
-@ifhtml
-(available @uref{../../../input/regression/out-www/collated-files.html,here})
-@end ifhtml
-
-This collection of files tests each notation and engraving feature of
-LilyPond in one file. The collection is primarily there to help us
-debug problems, but it can be instructive to see how we excercise the
-program. The format is like the tips and tricks document.
-
-@end itemize
-
-
-In all HTML documents that have music fragments embedded, the LilyPond
-input that was used to produce that image can be viewed by clicking
-the image.
-
-The location of the documentation files that are mentioned here can
-vary from system to system.  On occasion, this manual refers to
-initialization and example files.  Throughout this manual, we refer to
-input files relative to the top-directory of the source archive. For
-example, @file{input/test/bla.ly} may refer to the file
-@file{lilypond-1.7.19/input/test/bla.ly}.  On binary packages for the
-Unix platform, the documentation and examples can typically be found
-somewhere below @file{/usr/share/doc/lilypond/}. Initialization files,
-for example @file{scm/lily.scm}, or @file{ly/engraver-init.ly}, are
-usually found in the directory @file{/usr/share/lilypond/}.
-
-@cindex adjusting output
-@cindex variables
-@cindex properties
-@cindex lilypond-internals
-@cindex internal documentation
-@cindex Scheme
-@cindex extending lilypond
-@cindex bugreport
-@cindex index
-
-Finally, this and all other manuals, are available online both as PDF
-files and HTML from the web site, which can be found at
-@uref{http://www.lilypond.org/}.
-
-@cindex website 
-@cindex URL
diff --git a/Documentation/user/invoking.itexi b/Documentation/user/invoking.itexi
deleted file mode 100644
index a582d4d77b..0000000000
--- a/Documentation/user/invoking.itexi
+++ /dev/null
@@ -1,640 +0,0 @@
-@c -*-texinfo-*-
-@node Invoking LilyPond
-@chapter Invoking LilyPond
-
-This chapter details the technicalities of running LilyPond.
-
- 
-@menu
-* Invoking lilypond::           Titling LilyPond scores.
-* Invoking the lilypond binary::  
-* Error messages::              
-* Reporting bugs::              
-* Editor support::              
-* Point and click::             
-@end menu
-
-@node Invoking lilypond
-@section Invoking lilypond
-
-Nicely titled output is created through a separate program:
-@file{@code{lilypond}} is a script that uses the LilyPond formatting
-engine (which is in a separate program) and La@TeX{} to create a
-nicely titled piece of sheet music, in PDF (Portable Document Format)
-format.
-
-@example
-        @code{lilypond} [@var{option}]@dots{} @var{file}@dots{}
-@end example
-
-To have @code{lilypond} read from stdin, use a dash @code{-} for @var{file}.
-
-The @code{lilypond} program supports the following options:
-
-@table @code
-@item -k,--keep
-    Keep the temporary directory with all output
-files. The temporary directory is created in the current directory as @code{@code{lilypond}.dir}.
-@item -d,--dependencies
-    Write @code{Makefile} dependencies for every input file.
-@item -h,--help
-    Print usage help.
-@item -I,--include=@var{dir}
-    Add @var{dir} to LilyPond's include path.
-@item -m,--no-paper
-    Produce MIDI output only.
-@item --no-lily
-    Do not run @file{lilypond-bin}. Useful for debugging @code{lilypond}.
-@item -o,--output=@var{file}
-    Generate output to @var{file}.  The extension of @var{file} is ignored.
-@item --no-pdf
-    Do not generate  (PDF) or PS.
-
-@cindex PDF
-@cindex Scalable fonts
-    
-@c why is this comment here? --hwn
-
-        If you use lilypond-book or your own wrapper files, do not use
-@code{\usepackage[[T1]@{fontenc@}} in the file header but do not forget
-@code{\usepackage[latin1]@{inputenc@}} if you use any other
-non-anglosaxian characters.
-
-@item --png
-    Also generate pictures of each page, in PNG format. 
-@item --psgz
-    Gzip the postscript file.
-@item --html
-    Make a .HTML file with links to all output files.
-@item --preview
-    Also generate a picture of the first system of the score.
-
-@cindex preview
-@cindex picture
-@cindex bitmap
-@cindex pixmap
-@cindex thumbnail
-@cindex screenshot
-    
-@item -s,--set=@var{key}=@var{val}
-    Add @var{key}= @var{val} to the settings, overriding those specified
-in the files. Possible keys: @code{language}, @code{latexheaders},
-@code{latexpackages}, @code{latexoptions}, @code{papersize},
-@code{pagenumber}, @code{linewidth}, @code{orientation},
-@code{textheight}.
-@item -v,--version
-Show version information.
-@item -V,--verbose
-Be verbose. This prints out commands as they are executed, and more
-information about the formatting process is printed.
-@item --debug
-Print even more information. This is useful when generating bugreports.
-@item -w,--warranty
-Show the warranty with which GNU LilyPond comes. (It comes with 
-@strong{NO WARRANTY}!)
-@end table
-
-@subsection Titling layout
-
-@code{lilypond} extracts the following header fields from the LY files
-to generate titling; an example demonstrating all these fields is in
-@inputfileref{input/test,lilypond-testpage.ly}:
-
-@table @code
-@item title
-    The title of the music. Centered on top of the first page.
-@item subtitle
-    Subtitle, centered below the title.
-@item poet
-    Name of the poet, left flushed below the subtitle.
-@item composer
-    Name of the composer, right flushed below the subtitle.
-@item meter
-    Meter string, left flushed below the poet.
-@item opus
-    Name of the opus, right flushed below the composer.
-@item arranger
-    Name of the arranger, right flushed below the opus.
-@item instrument
-    Name of the instrument, centered below the arranger.
-@item dedication            
-    To whom the piece is dedicated.
-@item piece
-    Name of the piece, left flushed below the instrument.
-@item head
-    A text to print in the header of all pages. It is not called
-@code{header}, because @code{\header} is a reserved word in LilyPond.
-@item copyright
-    A text to print in the footer of the first page. Default is to 
-    print the standard footer also on the first page. Note that if the
-    score consists of only a single page, the first page is also the
-    last page, and in this case, the tagline is printed instead of the
-    copyright.
-@item footer
-    A text to print in the footer of all but the last page.
-@item tagline
-    Line to print at the bottom of last page. The default text is ``Engraved
-by LilyPond @var{version-number}''.
-@end table
-
-
-@cindex header
-@cindex footer
-@cindex page layout
-@cindex titles
-
-
-
-@subsection Additional parameters
-
-The @code{lilypond} program responds to several parameters specified
-in a @code{\paper} section of the input file. They can be overridden
-by supplying a @code{--set} command line option.
-
-@table @code
-@item language
-    Specify La@TeX{} language: the @code{babel} package will be
-included.  Default: unset.
-
-        Read from the @code{\header} block.
-
-@item latexheaders
-    Specify additional La@TeX{} headers file.
-
-        Normally read from the @code{\header} block. Default value: empty.
-
-@item latexpackages
-    Specify additional La@TeX{} packages file. This works cumulative,
-so you can add multiple packages using multiple @code{-s=latexpackages} options.
-       Normally read from the @code{\header} block. Default value:
-@code{geometry}.
-
-@item latexoptions
-    Specify additional options for the La@TeX{}
-@code{\documentclass}. You can put any valid value here. This was
-designed to allow @code{lilypond} to produce output for double-sided
-paper, with balanced margins and pagenumbers on alternating sides. To
-achieve this specify @code{twoside}.
-
-@item orientation
-    Set orientation. Choices are @code{portrait} or @code{landscape}. Is
-read from the @code{\paper} block, if set.
-        
-@item textheight
-    The vertical extension of the music on the page. It is normally 
-    calculated automatically, based on the paper size.
-
-@item linewidth
-        The music line width. It is normally read from the @code{\paper}
-block.
-
-@item papersize
-   The paper size (as a name, e.g. @code{a4}). It is normally read from
-the @code{\paper} block.
-
-@item pagenumber
-   If set to @code{no}, no page numbers will be printed.  If set to a
-positive integer, start with this value as the first page number.
-
-  
-  @item fontenc
-     The font encoding, should be set identical to the @code{font-encoding}
-     property in the score.
-@end table
-
-
-
-@node Invoking the lilypond binary
-@section Invoking the lilypond binary
-@cindex Invoking LilyPond
-@cindex command line options
-@cindex options, command line
-@cindex switches
-
-
-The LilyPond system consists of two parts: a binary executable, which
-is responsible for the formatting functionality, and support scripts,
-which post-process the resulting output. Normally, the support scripts
-are called, which in turn invoke the @code{lilypond-bin}
-binary. However, @code{lilypond-bin} may be called directly as
-follows.
-
-@example
-        lilypond-bin [@var{option}]@dots{} @var{file}@dots{}
-@end example
-
-
-When invoked with a filename that has no extension, the @file{.ly}
-extension is tried first.  To read input from  stdin, use a
-dash @code{-} for @var{file}.
-
-When @file{filename.ly} is processed it will produce
-@file{filename.tex} as output (or @file{filename.ps} for PostScript
-output).  If @file{filename.ly} contains more than one @code{\score}
-block, then the rest of the scores will be output in numbered files,
-starting with @file{filename-1.tex}.  Several files can be specified;
-they will each be processed independently.  @footnote{The status of
-  GUILE is not reset across invocations, so be careful not to change any
-  system defaults from within Scheme.}
-
-
-@section Command line options
-
-The following options are supported:
-
-@table @code
-
-@item -e,--evaluate=@var{expr}
-Evaluate the Scheme @var{expr} before parsing any @file{.ly} files.
-Multiple @code{-e} options may be given, they will be evaluated
-sequentially.  The function @code{ly:set-option} allows for access to
-some internal variables.  Use @code{-e '(ly:option-usage')} for more
-information.
-
-@item -f,--format=@var{format}
-@c
-@c
-Output format for sheet music. Choices are @code{tex} (for @TeX{}
-output, to be processed with plain @TeX{}, or through @code{lilypond}),
-@code{pdftex} for PDF@TeX{} input, @code{ps} (for PostScript),
-@code{scm} (for a Scheme dump), @code{sk} (for Sketch) and @code{as}
-(for ASCII-art).
-
-@strong{This option is only for developers}. Only the @TeX{} output of
-these is usable for real work.
-
-
-@cindex output format, setting
-@cindex Sketch output
-@cindex ASCII-art output
-@cindex PDFTeX output
-@cindex PostScript output
-@cindex Scheme dump
-
-@item -h,--help
-Show a summary of usage.
-@item --include, -I=@var{directory}
-Add @var{directory} to the search path for input files.
-@cindex file searching
-@cindex search path
-@item -i,--init=@var{file}
-Set init file to @var{file} (default: @file{init.ly}).
-@item -m,--no-paper
-@cindex MIDI
-Disable @TeX{} output. If you have a @code{\midi} definition MIDI output
-will be generated.
-@item -M,--dependencies
-Output rules to be included in Makefile.
-@item -o,--output=@var{FILE}
-Set the default output file to @var{FILE}.
-
-@ignore
-@item -s,--safe
-Disallow untrusted @code{\include} directives, in-line
-Scheme evaluation, backslashes in @TeX{}, code.
-
-@strong{WARNING}: the @code{--safe} option has not been reviewed for a
-long time. Do not rely on it for automatic invocation (e.g. over the
-web). Volunteers are welcome to do a new audit.
-@end ignore
-
-@item -v,--version
-Show version information.
-@item -V,--verbose
-Be verbose: show full paths of all  files read, and give timing
-information.
-
-@item -w,--warranty
-Show the warranty with which GNU LilyPond comes. (It comes with 
-@strong{NO WARRANTY}!)
-@end table
-
-@section Environment variables
-
-
-For processing both the @TeX{} and the PostScript output, the
-appropriate environment variables must be set.  The following scripts
-do this:
-
-@itemize @bullet
-@item @file{buildscripts/out/lilypond-profile}
-(for SH shells)
-@item  @file{buildscripts/out/lilypond-login} (for C-shells)
-@end itemize
-
-They should normally be sourced as part of the login process. If these
-scripts are not run from the system wide login process, then you must
-run it yourself.
-
-@cindex installing LilyPond
-
-If you use sh, bash, or a similar shell, then add the following to
-your @file{.profile}:
-@example
-	. @var{/the/path/to/}lilypond-profile
-@end example
-
-If you use csh, tcsh or a similar shell, then add the following to
-your @file{~/.login}:
-@example
-	source @var{/the/path/to/}lilypond-login
-@end example
-
-Of course, in both cases, you should substitute the proper location of
-either script.
-
-These scripts set the following variables:
-@table @code
-@item TEXMF
- To make sure that @TeX{} and lilypond find data files (among
-others @file{.tex}, @file{.mf} and @file{.tfm}),
-you have to set @code{TEXMF} to point to the lilypond data
-file tree. A typical setting would be
-@example
-@{/usr/share/lilypond/1.6.0,@{!!/usr/share/texmf@}@}
-@end example
-
-
-@item GS_LIB
-For processing PostScript output (obtained with
-@code{-f ps}) with Ghostscript you have to set @code{GS_LIB} to
-point to the directory containing library PS files.
-
-@item GS_FONTPATH
-For processing PostScript output (obtained with
-@code{-f ps}) with Ghostscript you have to set @code{GS_FONTPATH} to
-point to the directory containing  PFA files.
-
-When you print direct PS output, remember to send the PFA files to the
-printer as well.
-@end table
-
-
-@cindex ghostscript
-@cindex PostScript
-@cindex GS_FONTPATH
-@cindex GS_LIB
-@cindex TEXMF
-@cindex printing postscript
-
-The  binary itself recognizes the following environment variables:
-@table @code
-@item LILYPONDPREFIX
-This specifies a directory where locale messages and
-data files will be looked up by default. The directory should contain
-subdirectories called @file{ly/}, @file{ps/}, @file{tex/}, etc.
-
-@item LANG
-This selects the language for the warning messages.
-@end table
-
-@cindex LANG
-@cindex LILYPONDPREFIX
-
-@node Error messages
-@section Error messages
-
-@cindex error messages
-Different error messages can appear while compiling a file:
-
-@table @emph
-@cindex warning
-
-@item Warning
-  Something looks suspect. If you are requesting something out of the
-ordinary then you will understand the message, and can ignore it.
-However, warnings usually indicate that something is wrong with the
-input file.
-
-@item Error
-Something is definitely wrong.  The current processing step (parsing,
-interpreting, or formatting) will be finished, but the next step will
-be skipped.
-
-@cindex error
-@cindex fatal error
-@item Fatal error
-Something is definitely wrong, and LilyPond cannot continue. This
-happens rarely. The most usual cause is misinstalled fonts.
-
-@cindex call trace
-@cindex Scheme error
-@item Scheme error
-Errors that occur while executing Scheme code are caught by the Scheme
-interpreter. If running with the verbose option (@code{-V} or
-@code{--verbose}) then a call trace is printed of the offending
-function call.
-
-@cindex Programming error
-@item Programming error
-There was some internal inconsistency. These error messages are
-intended to help the programmers and debuggers. Usually, they can be
-ignored. Sometimes, they come in such big quantities that they obscure
-other output. In this case, a bug-report should be filed.
-
-@end table
-
-@cindex errors, message format
-If warnings and errors can
-be linked to some part of the input file, then error messages have the
-following form
-
-@example
-  @var{filename}:@var{lineno}:@var{columnno}: @var{message}
-  @var{offending input line}
-@end example 
-
-A line-break is inserted in offending line to indicate the column
-where the error was found. For example, 
-
-@example
-test.ly:2:19: error: not a duration: 5:
-  \notes @{ c'4 e'5 
-                   g' @}
-@end example
-
-
-@node Reporting bugs
-@section Reporting bugs
-
-@cindex bugs
-@cindex reporting bugs
-
-If you have input that results in a crash or an erroneous output, then
-that is a bug. We try respond to bug-reports promptly, and fix them as
-soon as possible. For this, we need to reproduce and isolate the
-problem. Help us by sending a defective input file, so we can
-reproduce the problem. Make it small, so we can easily debug the
-problem. Don't forget to tell which version you use, and on which
-platform you run it.  Send the report to
-@email{bug-lilypond@@gnu.org}.
-
-@node Editor support
-@section Editor support
-
-@cindex editors
-@cindex vim
-@cindex emacs
-@cindex modes, editor 
-@cindex syntax coloring
-@cindex coloring, syntax
-
-There is support from different editors  for LilyPond.
-
-Emacs has a @file{lilypond-mode}, which provides keyword
-autocompletion, indentation, LilyPond specific parenthesis matching
-and syntax coloring, handy compile short-cuts and reading LilyPond
-manuals using Info.  If lilypond-mode is not installed on your
-platform, then refer to the installation instructions for more
-information.
-
-For @uref{http://www.vim.org,VIM}, a vimrc is supplied, along with
-syntax coloring tools. For more information, refer to the
-@ifhtml
-@uref{../../../topdocs/out-www/INSTALL.html,installation instructions}.
-@end ifhtml
-
-@ifnothtml
-installation instructions.
-@end ifnothtml
-
-For both editors, there is also a facility to jump in the input file
-to the source of errors in the graphical output. See @ref{Point and
-click}.
-
-There exists a plugin for @uref{http://www.jedit.org/,jEdit}. Refer to
-the @uref{http://lily4jedit.sourceforget.net,plugin website} for more
-information.
-
-
-@node Point and click
-@section Point and click
-@cindex poind and click
-
-Point and click lets you find notes in the input by clicking on them in
-the Xdvi window. This makes it easier to find input that causes some
-error in the sheet music.
-
-To use it, you need the following software:
-@itemize @bullet
-@item a dvi viewer that supports src specials:
-@itemize @bullet
-@item Xdvi, version 22.36 or newer.  Available from
-@uref{ftp://ftp.math.berkeley.edu/pub/Software/TeX/xdvi.tar.gz,ftp.math.berkeley.edu}.
-
-   Most @TeX{} distributions ship with xdvik, which is always a few
-versions behind the official Xdvi. To find out which Xdvi you are
-running, try @code{xdvi -version} or @code{xdvi.bin -version}.
-@item KDVI.  A dvi viewer for KDE.  You need KDVI from KDE 3.0 or
-newer.  Enable option @emph{Inverse search} in the menu @emph{Settings}.
-
-Apparently, KDVI does not process PostScript specials correctly. Beams
-and slurs will not be visible in KDVI.
-
-@cindex Xdvi
-@cindex KDVI
-@cindex KDE
-
-
-
-@end itemize
-@item an editor with a client/server interface (or a lightweight GUI
-editor):
-
-@cindex editor
-
-@itemize @bullet
-@item Emacs. Emacs is an extensible text-editor.  It is available from
-@uref{http://www.gnu.org/software/emacs/}.  You need version 21 to use
-column location.
-
-@c move this elsewhere?
-
-
-@cindex Emacs
-@cindex Emacs mode
-@cindex lilypond-mode for Emacs
-@cindex syntax coloring
-
-@item XEmacs. XEmacs is very similar to Emacs.
-
-@cindex XEmacs
-
-@item NEdit.  NEdit runs under Windows, and Unix.
-  It is available from @uref{http://www.nedit.org}.
-
-@cindex NEdit
-
-@item GVim.  GVim is a GUI variant of VIM, the popular VI
-clone.  It is available from @uref{http://www.vim.org}.
-
-@cindex GVim
-@cindex Vim
-
-@end itemize
-@end itemize
-
-
-Xdvi must be configured to find the @TeX{} fonts and music
-fonts. Refer to the Xdvi documentation for more information.
-
-To use point-and-click, add one of these lines to the top of your .ly
-file:
-@example
-#(ly:set-point-and-click 'line)
-@end example
-@cindex line-location
-
-When viewing, Control-Mousebutton 1 will take you to the originating
-spot in the @file{.ly} file.  Control-Mousebutton 2 will show all
-clickable boxes.
-
-If you correct large files with point-and-click, be sure to start
-correcting at the end of the file. When you start at the top, and
-insert one line, all following locations will be off by a line.
-
-@cindex Emacs
-For using point-and-click with Emacs,  add the following
-In your Emacs startup file (usually @file{~/.emacs}):
-@example
-(server-start)
-@end example
-
-Make sure that the environment variable @var{XEDITOR} is set to
-@example
-emacsclient --no-wait +%l %f
-@end example
-@cindex @var{XEDITOR}
-If you use XEmacs instead of Emacs, you use @code{(gnuserve-start)} in
-your @file{.emacs}, and set @code{XEDITOR} to @code{gnuclient -q +%l %f}.
-
-For using Vim, set @code{XEDITOR} to @code{gvim --remote +%l %f}, or
-use this argument with Xdvi's @code{-editor} option.
-
-@cindex NEdit
-For using NEdit, set @code{XEDITOR} to @code{nc -noask +%l %f}, or
-use this argument with Xdvi's @code{-editor} option.
-
-If can also make your editor jump to the exact location of the note
-you clicked. This is only supported on Emacs and VIM. Users of Emacs version
-20 must apply the patch @file{emacsclient.patch}. Users of version 21
-must apply @file{server.el.patch} (version 21.2 and earlier).  At the
-top of the @code{ly} file, replace the @code{set-point-and-click} line
-with the following line:
-@example
-#(ly:set-point-and-click 'line-column)
-@end example
-@cindex line-colomn-location
-and set @code{XEDITOR} to @code{emacsclient --no-wait +%l:%c %f}.  Vim
-users can set @var{XEDITOR} to @code{gvim --remote +:%l:norm%c| %f}.
-
-
-
-@refbugs
-
-When you convert the @TeX{} file to PostScript using @code{dvips}, it
-will complain about not finding @code{src:X:Y} files. These complaints
-are harmless, and can be ignored.
-
-
-
diff --git a/Documentation/user/latex-example.latex b/Documentation/user/latex-example.latex
deleted file mode 100644
index d69d815ddf..0000000000
--- a/Documentation/user/latex-example.latex
+++ /dev/null
@@ -1,49 +0,0 @@
-\documentclass[a4paper]{article}
-
-
-
-%\def\preLilyPondExample{}}
-%\def\postLilyPondExample{}
-
-
-\begin{document}
-
-\begin{lilypond}
-\score {
- \notes\relative c' { c d e f g a b c }
-}
-\end{lilypond}
-
-
-\begin[fragment]{lilypond}
-c d e
-\end{lilypond}
-
-
-% generate standard lilypond titles
-\input titledefs.tex
-\def\preLilyPondExample{\def\mustmakelilypondtitle{}}
-
-\begin{lilypond}
-\header {
-  title =	"Title"
-  subtitle =	"Subtitle"
-  subsubtitle =	"Subsubtitle"
-  opus =  "Opus 1"
-  piece = "Piece"
-  composer = 	 "Composer"
-  enteredby = 	 "JCN"
-  instrument = "instrument"
-}
-\paper { linewidth = -1. }
-\score {
-  \notes \relative c'' { a b c d }
-}
-\end{lilypond}
-
-\begin{enumerate}
-\item Vers one.  aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa 
-\item Vers two.  bbb bbb bbb bbb bbb bbb bbb bbb bbb bbb 
-\end{enumerate}
-
-\end{document}
diff --git a/Documentation/user/latex-lilypond-example.latex b/Documentation/user/latex-lilypond-example.latex
deleted file mode 100644
index 8e29ef42c4..0000000000
--- a/Documentation/user/latex-lilypond-example.latex
+++ /dev/null
@@ -1,172 +0,0 @@
-%
-% This is way too long and hairy
-%
-%
-
-
-
-\documentclass[a4paper, 12pt]{article}
-
-%\def\preLilyPondExample{}
-%\def\postLilyPondExample{}
-%\usepackage{graphics}
-%\usepackage{landscape}
-
-\begin{document}
-%uncomment this to try twocolumn mode
-%\twocolumn
-
-
-\section{LilyPond-book + LaTeX}
-
-This is an examplefile for mixing LilyPond and Latex. It is also
-used to test lilypond-book. View the source to see how it is done.
-
-A simple scale:
-
-\begin{lilypond}
-\score{
- \notes\relative c'{c d e f g a b c}
-}
-\end{lilypond}
-
-LilyPond-book search for the \verb|\score| command when it decides
-if the code is only a fragment. Thus, in the following code, you have
-to use \verb|fragment| option, because the comment confuses lilypond-book.
-
-\begin[fragment]{lilypond}
-c d e % \score
-\end{lilypond}
-
-There is also a shorthand version \verb|\lilypond{c' e' g'}|:
-
-\lilypond{c' e' g'}
-
-that is the same as writing
-\begin{verbatim}
-\begin[eps]{lilypond}
-c' e' g'
-\end{lilypond}
-\end{verbatim}
-
-This C major
-\begin[eps, 11pt]{lilypond}
-c' e' g'
-\end{lilypond}
-and C minor \lilypond[11pt]{c' es' g'}  chords are floating inside the text.
-
-\subsection{verb and verbatim}
-
-As you see, the begin/end verbatim command inside 
-does not confuse lilypond-book:
-
-\verb|\begin{lilypond}c d e\end{lilypond}|
-
-Neither does a verbatim inside verb:
-
-\verb|\begin{verbatim}\begin{lilypond}c d e\end{lilypond}\end{verbatim}|
-
-or verb inside verbatim:
-
-\begin{verbatim}
-\verb|\begin{lilypond}c d e\end{lilypond}|
-\end{verbatim}
-
-But this is just to stress \verb|lilypond-book|. What you need is:
-
-\verb|\lilypond{c' d' e'}|
-
-and
-
-\begin{verbatim}
-\begin{lilypond}
-c d e
-\end{lilypond}
-\end{verbatim}
-
-\subsection{The 'verbatim' and 'intertext' option}
-This shows the verbatim option:
-\begin[verbatim, intertext="gives this music:"]{lilypond}
-c' d' e'
-\end{lilypond}
-
-\subsection{LaTeX comments}
-This is a line with lilypond code after the comment char % \lilypond{<c' e' g'>}
-% \lilypond{<c' e' g'>}
-
-If you do not see any music from the heading 'LaTeX comments' and until
-this line, then lilypond-book is handling latex comments pretty well :-)
-
-\subsection{To float or not to float}
-This music
-\begin[eps]{lilypond}
-c' e' 
-\end{lilypond}
-should be floating inside the text by using the \verb|eps| options.
-
-This music
-
-\begin[eps]{lilypond}
-c' e'
-\end{lilypond}
-
-has also the \verb|eps| options, but is not floating because there
-are an emptry line before and after the lilypond block. That is
-correct behaviour because it follows La\TeX{} convention that an
-empty line signals a new paragraph. The \verb|eps| option
-is not necessary when you want the music in a paragraph on its own.
-
-\subsection{More examples}
-
-Itemize environment:
-\begin{itemize}
-\item \lilypond[11pt]{ c'} do
-\item \lilypond[11pt]{d'} re
-\item \lilypond[11pt]{e'} mi
-\item \lilypond[11pt]{f'} fa
-\item \lilypond[11pt]{g'} sol
-\end{itemize}
-
-Tables\footnote{ and footnote: \lilypond[eps,11pt]{c' e' g'} }:
-\marginpar{ Yes, even as marginpar
-\lilypond[eps,11pt]{c' d' e'} }
-
-\begin{tabular}{|l|l|r|}
-\hline
-\em Notes & \em Name \\
-\hline
-\lilypond[11pt, filename="cdur"]{<c' e' g'>} & major \\
-\lilypond[11pt]{<c' es' g'>} & minor \\
-\lilypond[11pt]{<c' es' ges'>} & diminished \\
-\lilypond[11pt]{<c' e' gis'>} & augmented \\
-\hline
-\end{tabular}
-
-\pagebreak
-
-Testing of spacing. The next music is surrounded by an empty line.
-text text text text text text text text text text text text 
-text text text text text text text text text text text text 
-
-\begin{lilypond}
-\score{ \notes\relative c'{ c d e f g a b c} }
-\end{lilypond}
-
-text text text text text text text text text text text text 
-text text text text text text text text text text text text 
-text text text text text text text text text text text text 
-
-Next has no empty lines.
-text text text text text text text text text text text text 
-text text text text text text text text text text text text 
-text text text text text text text text text text text text 
-\begin{lilypond}
-\score{ \notes\relative c'{ c d e f g a b c} }
-\end{lilypond}
-text text text text text text text text text text text text 
-text text text text text text text text text text text text 
-
-%% need to use an -I ../../../input/test to find the file
-%% \lilypondfile{tie.ly}
-
-\end{document}
diff --git a/Documentation/user/lily-flat-bw.png b/Documentation/user/lily-flat-bw.png
deleted file mode 100644
index 23de1a42033f5c5bd95bd007ae7b99e4a464a7cf..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 1997
zcmcIlYfuwc7!5cQYYMSgq=N!#tJbQdEm}lOQWXp!K1K==&_JL(TD5=>W3nVx2Sj{r
zkyk+z)K+kOEeP_=CcaaU1_?qyvl}f+fWW3e$Wk{z)Bdph(00a--^`tR?z!{b``t75
zo0GL=6U%<O%XAWnWFO$~yOl(;;gd+V<Y`udw1&G*Y@KYQH?Vw36PaL>!n%4V$v-TG
zM4~wUHEh&~*kUEgsR0}P$gN~YrzN&05g}n^I03$EzS?(s0BPBK%72C(w^C`GXhbPc
z*RE)a-JORzdI;P5#Ic6b_QTWWC7vq$C&EBCqsi@ZC)4Dxv<M5T^Xygq?342<kk|x@
zEN1<J$Smo^3!>{WboCIka||$n`R9uJ#)CwU^G_D{$V=tBDGkj&Qtw;h{`IayD^CXS
z7b1nJ@oLGNf)W9ii9W&z-9Y>QIp)8rDC!YEaT$&E$l;@B-`+iObw<u{SoQpo$|v_#
zB3t$UE^bn=g-vNxEJkk>G0TwCugOp?ZxiWxPzGmK%G<0xHNMC&ZVDXDo1{^Rmymqb
zq|vX|2)@1AJKjp(xjzj)D5m2u)l*l+vUw4X5#5nqO(js5xWi&F-!%DYSuIS(l2Ca%
z;XMKx-_2|0Gr@6PHLJ07LeZO?EvipbBEe>v;?UCMXF2+@sTJe3=h?e^VxQM3Hi;<d
zn|H)>?DMMH(^Z81aN&xfY>c)eT3#hou5Zro5j$^jOp_Ay+vDZEkE>R1KTTZu!uxkF
z=H);r%|^sBcui}J4>$nsDL&w6>u#DTnUU@7_bZY6IfjmCJ)bzIg5O8B(9bSFrr3!C
zaMI|Ru3yIFoVEI=9_Al`RZnCZ9U*9tGALVPP(_FkT0P>_J=WkM9~$($Zqc{l@oV)X
zPn3Z&0yQ?Cckau{sCSQ|Q<@#ps)%{5Cuh13h__VEw|tGyJ9pcQK?XgR-yCL~2}}Gf
z1u<5CL}s*$j=|a+$~tPOJ)=!@<inZ=>2+X*^X$<eJo@mW##Cl&A#o%kVLn2DKnYPB
zh(u&zGi}N<7PgG-%CloUfE{(cwn)K+Jm4%VPzoIIS}8lT8eefFg;p85eX&ZEEv(fD
z%1nEp;3C45mEn+}*0NuA<>Dq-WixvBmbTy}^*6BQ)F#Ob07+_mIO-~ljTZ1f{;Q#j
z2E>Lv;rdV2g3NG4va01;olhPXB+*jnSE}|f-`ndZO6Ge`iu#UcI(Aixqv@IISn;;I
zP|iS-6q*ZA@TdFC4p<&4AH4Jeb7B`dV7C{PY526-#^p)w9?{zS^;8hB19<qw{x*cQ
zflI?UrU2e0j1k^cquJ~3iqA2tv5d|o_3SvPpRw(IA`LGX8zw91M`28+iGvJ`P!}K!
zFHZ(zpgxWSz5oc!Mc7E^&N`}714k`N(0X=OTYvGr*<5M}w9>e&!%&My(e!9Ke46;O
zp}$Sa20@@wcwLZqn{ywg0*mqW{akEwEVV+RugI)r8dee#VDMsN4IWKPnIp)B4+#qe
z#(SJQuq$w!*F6_-9dQ{(e}E4HEVHel=`(Y9-_&k+5g-GC%_d&=41hjTBbZPO|FjG+
z$?y>H6s|Kgx%Hz(biTy<7AKU>M^9Chst6l%W8YZ}$rRn+9zQDzOxZstBIaU+vX)j>
znfQ2CkKB&1G?V2PF5UIv6uk&?>n~JhGc~^OBUv>UdX8qo>Q$}&uv%6f4RxVM;bVZO
zdA<Sg8ks+gf^a&p&O9A+?HtzN`F(#3qq%ehUINqr5$0XEyuSrI-kF2=RFLbd<EVR$
zJ1zspWRRDrlJ=nzdK)Y%#0Hd-Bpqv@+0ENXDO*$r-8fN0v#Ae8Wl%CS7i&(?L|NbE
z*D()w=drn^-D6~3Y)3h-JK`y?Bg@dp*gsSpxy@gaI<Zc?nAa{M{1hL&I8;xIcr-|S
x@>)as7q5E5t;xpNnP;KT43g?&)RNvvmm_xt-)w9dvYIa`z;Bc9)wNLv{{*CMNNE57

diff --git a/Documentation/user/lilypond-book.itely b/Documentation/user/lilypond-book.itely
deleted file mode 100644
index e0ad3a271e..0000000000
--- a/Documentation/user/lilypond-book.itely
+++ /dev/null
@@ -1,419 +0,0 @@
-@c -*-texinfo-*-
-
-@ignore
-
-TODO: cleanup
-
-** AARGH.e We also have tutorial.itely: Integrating text and music.
-
-   Could also do with a cleanup.  Lost inspiration to fix this manual
-   where to describe what?
-
-@end ignore
-
-
-@node lilypond-book manual
-@chapter lilypond-book manual
-
-If you want to add pictures of music to a document, you can simply do
-it the way you would do with other types of pictures.  The pictures
-are created separately, yielding PostScript pictures or PNG images,
-and those are included into a La@TeX{} or HTML document.
-
-@command{lilypond-book} provides a way to automate this process: this
-program extracts snippets of music from your document, runs LilyPond
-on them, and outputs the document with pictures substituted for the
-music.  The line width and font size definitions for the music are
-adjusted to match the layout of your document.
-
-This procedure may be applied to La@TeX{}, @code{html} or Texinfo
-documents.  A tutorial on using lilypond-book is in @ref{Integrating
-text and music}.  For more information about La@TeX{}
-@uref{http://www.ctan.org/tex-archive/info/lshort/english/,The not so
-Short Introduction to LaTeX} provides a introction to using La@TeX{}.
-
-
-
-
-@menu
-* Integrating Texinfo and music::  
-* Integrating LaTeX and music::  
-* Integrating HTML and music::  
-* Music fragment options::      
-* Invoking lilypond-book::      
-@end menu
-
-
-
-@cindex texinfo
-@cindex latex
-@cindex texinfo
-@cindex @code{texi}
-@cindex html
-@cindex documents, adding music to
-
-
-@node Integrating Texinfo and music
-@section Integrating Texinfo and music
-
-Music is specified like this:
-
-@example
-@@lilypond[options,go,here]
-  YOUR LILYPOND CODE
-@@end lilypond
-@@lilypond[options,go,here]@{ YOUR LILYPOND CODE @}
-@@lilypondfile[options,go,here]@{@var{filename}@}
-@end example
-
-When lilypond-book is run on it, this results in a texinfo file. We
-show two simple examples here.  First a complete block:
-
-@example
-@@lilypond[staffsize=26]
-  c' d' e' f' g'2 g'
-@@end lilypond
-@end example
-
-@noindent
-produces
-
-@lilypond
-  c' d' e' f' g'2 g'
-@end lilypond
-
-Then the short version:
-
-@example
-@@lilypond[staffsize=11]@{<c' e' g'>@}
-@end example
-
-@noindent
-produces
-
-@lilypond[staffsize=11]{ <c' e' g'> }
-
-When producing texinfo, lilypond-book also generates bitmaps of the
-music, so you can make a HTML document with embedded music.
-
-@c @TeX{} in node name seems to barf
-@node Integrating LaTeX and music
-@section Integrating LaTeX and music
-
-
-For La@TeX{}, music is entered using
-
-@example
-\begin[options,go,here]@{lilypond@}
-  YOUR LILYPOND CODE
-\end@{lilypond@}
-@end example
-
-@example
-\lilypondfile[options,go,here]@{@var{filename}@}
-@end example
-
-@noindent
-or
-
-@example
-\lilypond@{ YOUR LILYPOND CODE @}
-@end example
-
-Running lilypond-book yields a file that can be processed with
-La@TeX{}.
-
-
-We show some examples here:
-
-@example
-\begin[staffsize=26]@{lilypond@}
-  c' d' e' f' g'2 g'2
-\end@{lilypond@}
-@end example
-
-@noindent
-produces
-
-@lilypond[staffsize=26]
-  c' d' e' f' g'2 g'2
-@end lilypond
-
-Then the short version:
-
-@example
-\lilypond[staffsize=11]@{<c' e' g'>@}
-@end example
-
-@noindent
-produces
-
-@lilypond[staffsize=11]{<c' e' g'>}
-
-The linewidth of the music will be adjust by examining the commands in
-the document preamble, the part of the document before
-@code{\begin@{document@}}: @command{lilypond-book} sends these to
-La@TeX{} to find out how wide the text is. The line width variable for
-the music fragments are adjusted to the text width.
-
-After @code{\begin@{document@}}, the column changing commands
-@code{\onecolumn}, @code{\twocolumn} commands
-@ignore 
-and the
-@code{multicols} environment from the multicol package
-@end ignore
-are also interpreted.
-
-The titling from the @code{\header} section of the fragments can be
-imported by adding the following to the top of the La@TeX{} file:
-
-@example
-\input titledefs.tex
-\def\preLilyPondExample@{\def\mustmakelilypondtitle@{@}@}
-@end example
-
-The music will be surrounded by @code{\preLilyPondExample} and
-@code{\postLilyPondExample}, which are defined to be empty by default.
-
-@cindex titling and lilypond-book
-@cindex lilypond-book and titling
-@cindex @code{\header} in La@TeX{} documents
-
-To add titling from the @code{\header} section of the files, add the
-following to the top of the La@TeX{} file:
-@example
-\input titledefs.tex
-\def\preLilyPondExample@{\def\mustmakelilypondtitle@{@}@}
-@end example
-
-@cindex outline fonts
-@cindex type1 fonts
-@cindex dvips
-@cindex invoking dvips
-
-For printing the LaTeX document, you will need to use dvips. For
-producing PostScript with scalable fonts, add the following options to
-the dvips command line:
-@example
- -Ppdf -u +lilypond.map
-@end example 
-
-@noindent
-PDF can then be produced with @code{ps2pdf}.
-
-
-@node Integrating HTML and music
-@section Integrating HTML and music
-
-Music is entered using
-
-@example
-<lilypond relative=1 verbatim>
-  \key c \minor r8 c16 b c8 g as c16 b c8 d | g,4
-</lilypond>
-@end example
-
-@noindent
-of which lilypond-book will produce a HTML with appropriate image tags for the
-music fragments:
- 
-@example
-<lilypond relative=1 verbatim>
-  \key c \minor r8 c16 b c8 g as c16 b c8 d | g,4
-</lilypond>
-@end example
-
-@lilypond[relative=1]
-  \key c \minor r8 c16 b c8 g as c16 b c8 d | g,4
-@end lilypond
-
-For inline pictures, use @code{<lilypond ... />} syntax, eg.
-@example
-Some music in <lilypond a b c/> a line of text.
-@end example
-
-A special feature not (yet) available in other output formats, is the
-@code{<lilypondfile>} tag, for example,
-@example
-  <lilypondfile>trip.ly</lilypondfile>
-@end example
-This runs @file{trip.ly} through @code{lilypond} (see also
-@ref{Invoking lilypond}), and substitutes a preview image in the
-output. The image links to a separate HTML file, so clicking it will
-take the viewer to a menu, with links to images, midi and printouts.
-
-@cindex titling in THML
-@cindex preview image
-@cindex thumbnail
-
-@node Music fragment options
-@section Music fragment options
-
-The commands for lilypond-book have room to specify one or more of the
-following options:
-
-@table @code
-@item verbatim
-CONTENTS is copied into the source enclosed in a verbatim block,
-followed by any text given with the @code{intertext} option, then
-the actual music is displayed.  This option does not work with
-the short version of the music blocks:
-
-@code{ @@lilypond@{ CONTENTS @} } and @code{ \lilypond@{ CONTENTS @} }
-
-@item filename=@var{filename}
-name the file (for @code{printfilename} option). The argument should
-be unquoted. 
-
-@item staffsize=POINTS
-@lilypond[staffsize=31.41592658]
-\relative c' {
-  r16 c[ d e] f[ d e c] g'8[ c] b[\prall c] |
-  d16[ g, a b] c[ a b g] d'8[ g f\prall g]
-}
-@end lilypond
-
-@item raggedright
-produces naturally spaced lines (i.e., @code{raggedright = ##t}); this
-works well for small music fragments.
-
-@item linewidth=@var{size}\\@var{unit}
-sets linewidth to @var{size}, where @var{unit} = cm, mm, in, or pt.
-This option affects LilyPond output, not the text layout.
-
-@item notime
-prevents printing time signature.
-
-@item fragment
-@item nofragment
-overrides @command{lilypond-book} auto detection of what type of code is
-in the LilyPond block, voice contents or complete code.
-
-@item indent=@var{size}\\@var{unit}
-sets indentation of the first music system to @var{size},
-where @var{unit} = cm, mm, in, or pt.  This option affects LilyPond,
-not the text layout.  For single-line fragments the default is to
-use no indentation.
-
-For example
-@example
-  \begin[indent=\\5cm,raggedright]@{lilypond@}
-  ...
-  \end@{lilypond@}
-@end example
-
-
-@item noindent
-sets indentation of the first music system to zero.  This option
-affects LilyPond, not the text layout.
-
-@item texidoc
-Includes the @code{texidoc} field, if defined in the file. This is
-only for Texinfo output.
-
-In Texinfo, the music fragment is normally preceded by the
-@code{texidoc} field from the @code{\header}. The LilyPond test
-documents are composed from small @file{.ly} files in this way:
-
-@example
-  \header @{
-    texidoc = "this file demonstrates a single note"
-  @}
-  \score @{ \notes @{ c'4 @} @} 
-@end example
-
-@item relative, relative=@var{N}
-uses relative octave mode.  By default, notes are specified relative
-central C.  The optional integer argument specifies the octave of the
-starting note, where the default @code{1} is central C.
-@end table
-
-
-@node Invoking lilypond-book
-@section Invoking lilypond-book
-
-
-Running @command{lilypond-book} generates lots of small files that
-LilyPond will process.  To avoid all that garbage in the source
-directory, it is advisable to change to a temporary directory first:
-@example
-cd out && lilypond-book ../yourfile.tex
-@end example
-
-@noindent
-or to use the @option{--output} command line option, and change to
-that director before running La@TeX{} or @file{makeinfo}:
-
-@example
-lilypond-book --output=out yourfile.lytex
-cd out && latex yourfile.tex
-@end example
-
-
-@command{lilypond-book} accepts the following command line options:
-
-@table @code
-@item @option{-f @var{format}}, @option{--format=@var{format}}
-Specify the document type to process: @code{html}, @code{latex} or
-@code{texi} (the default).  @command{lilypond-book} usually figures this
-out automatically.
-
-The @code{texi} document type produces a texinfo file with music
-fragments in the DVI output only. For getting images in the HTML
-version,  the format 
-@code{texi-html} must be used.
-
-@item @option{-F @var{filter}}, @option{--filter=@var{filter}}
-Pipe snippets through @var{filter}.
-
-For example:
-@example
-    lilypond-book --filter='convert-ly --from=2.0.0' my-book.tely
-@end example
-
-@item @option{--help}
-Print a short help message.
-
-@item @option{-I @var{dir}}, @option{--include=@var{dir}}
-Add @var{DIR} to the include path.
-
-@item @option{-o @var{dir}}, @option{--output=@var{dir}}
-Place generated files in @var{dir}.
-
-@item @option{-P @var{process}}, @option{--process=@var{COMMAND}}
-Process lilypond snippets using @var{command}.  The default command is
-@var{lilypon-bin}.
-
-@item @option{--verbose}
-Be verbose.
-
-@item @option{--version}
-Print version information.
-@end table
-
-For La@TeX{} input, the file to give to La@TeX{} has extension
-@file{.latex}.  Texinfo input will be written to a file with extension
-@file{.texi}.
-
-
-
-@section Bugs
-
-The La@TeX{} @code{\includeonly@{...@}} command is ignored.
-
-The Texinfo command @code{pagesize} is not interpreted. Almost all
-La@TeX{} commands that change margins and line widths are ignored.
-
-Only the first @code{\score} of a LilyPond block is processed.
-
-@c CHECKME--FIXME
-The size of a music block is limited to 1.5 kb, due to technical
-problems with the Python regular expression engine.  For longer files,
-use @code{\lilypondfile}.
-
-@command{lilypond-book} processes all music fragments in one big run.
-The state of the GUILE interpreter is not reset between fragments;
-this means that changes made to global GUILE definitions, e.g. done
-with @code{set!} or @code{set-cdr!}, can leak from one fragment into
-the next fragment.
-
diff --git a/Documentation/user/lilypond.tely b/Documentation/user/lilypond.tely
deleted file mode 100644
index b83b0dc075..0000000000
--- a/Documentation/user/lilypond.tely
+++ /dev/null
@@ -1,187 +0,0 @@
-\input texinfo @c -*-texinfo-*-
-@setfilename lilypond.info
-@settitle GNU LilyPond
-@iftex
-@afourpaper
-@end iftex
-
-@ignore
-Distributions will want to install lilypond.info doing:
-
-    ./install-info --info-dir=/usr/share/info out/lilypond.info
-    
-@end ignore
-@dircategory GNU music project
-@direntry
-@c    ;; prepend GNU for dir, must be unique
-* GNU LilyPond: (lilypond).                    The GNU music typesetter.
-* lilypond: (lilypond)Invoking lilypond::      Titling LilyPond scores.
-* Glossary: (music-glossary).                  Glossary of music terms.
-* convert-ly: (lilypond)Invoking convert-ly::  Older LilyPond versions.
-* midi2ly: (lilypond)Invoking midi2ly::        Importing MIDI.
-* etf2ly: (lilypond)Invoking etf2ly::          Importing Finale.
-* abc2ly: (lilypond)Invoking abc2ly::          Importing ABC.          
-* pmx2ly: (lilypond)Invoking pmx2ly::          Importing PMX.
-* musedata2ly: (lilypond)Invoking musedata2ly::
-                                               Importing Musedata.
-* mup2ly: (lilypond)Invoking mup2ly::          Importing MUP. 
-@end direntry
-
-
-@ignore
-@omfcreator Han-Wen Nienhuys and Jan Nieuwenhuizen
-@omfdescription User manual  of the LilyPond music engraving system
-@omftype user manual
-@omfcategory Applications|Publishing
-@omflanguage English
-@end ignore
-
-@c don't remove this comment.
-
-@ignore
-
-HINTS FOR STYLE
-
-* don't refer to LilyPond in the text. The reader knows what the
-manual is about
-
-* if you do, capitalization is LilyPond.
-
-
-* don't explicitly refer to the reader/user.  There is no one else
-besides the reader and the writer.
-
-* don't use abbreviations (don't, won't, etc.)
-
-* avoid fluff (``Notice that,'' ``as you can see,'' ``Currently,'') 
-
-* avoid long stretches of input code. Noone is go to read  them in
-print. Instead refer to an example input file (@inputfileref), these
-are clickable in HTML.
-
-* abbrevs in caps, e.g. HTML, DVI, MIDI, etc.
-
-@end ignore
-
-@ifhtml
-This document is also available in @uref{../lilypond.ps.gz,gzipped
-PostScript} and @uref{../lilypond.pdf,PDF}.
-@end ifhtml
-
-
-@titlepage
-@title GNU LilyPond
-@subtitle The music typesetter
-@author Han-Wen Nienhuys
-@author Jan Nieuwenhuizen
-@author J@"{u}rgen Reuter
-@author Rune Zedeler
-
-
-
-Copyright @copyright{} 1999--2004 by the authors
-
-  Permission is granted to copy, distribute and/or modify this document
-  under the terms of the GNU Free Documentation License, Version 1.1
-  or any later version published by the Free Software Foundation;
-  with no Invariant Sections.
-  A copy of the license is included in the section entitled ``GNU
-  Free Documentation License''.
-
-@vskip 20pt
-
-  
-@lilypond[raggedright]
-\score {
-    \context LyricsVoice \notes {
-        \property Score.RehearsalMark \set #'self-alignment-X = #LEFT
-        \mark #(ly:export (string-append
-             "(For LilyPond version " (lilypond-version) ")"))
-        s2
-     }
-     \paper {
-         indent = 0.0\pt
-         raggedright = ##t
-     }
-}
-@end lilypond
-  
-
-@end titlepage
-
-
-@ifnottex
-This file documents GNU LilyPond.
-
-Copyright 1999--2004 by the authors
-
-  Permission is granted to copy, distribute and/or modify this document
-  under the terms of the GNU Free Documentation License, Version 1.1
-  or any later version published by the Free Software Foundation;
-  with no Invariant Sections.
-  A copy of the license is included in the section entitled ``GNU
-  Free Documentation License''.
-
-@end ifnottex
-
-
-@ifnottex
-@node Top
-@top
-
-@chapter GNU LilyPond --- The music typesetter
-
-This is the user manual for GNU LilyPond 2.1.0.
-
-@cindex web site
-
-A further source of information is the website, which can be found at
-@uref{http://www.lilypond.org/}.  The website contains on-line copies of
-this and other documentation.
-
-@include dedication.itely
-
-@menu
-* Preface::                        Preface.
-* Introduction::                   What, Why, How.
-* Tutorial::                       A tutorial introduction.
-* Notation manual::                All notation supported, and how to
-                                   produce it.
-* Literature list::                Books about notation and engraving.
-* Technical manual::               How it all works.
-* Invoking LilyPond::              Operation.
-* Converting from other formats::  Converting to lilypond source format.
-* lilypond-book manual::           Integrating text and music with lilypond-book.
-* Unified index::                  
-* Reference manual details::
-* Cheat sheet::     
-* GNU Free Documentation License:: FDL.
-@end menu
-@end ifnottex
-
-@contents
-
-
-@include macros.itexi
-@include preface.itely
-@include introduction.itely 
-@include tutorial.itely
-@include refman.itely
-@include literature.itely
-@include internals.itely
-@include invoking.itexi
-@include lilypond-book.itely
-@include converters.itely
-
-
-@c FIXME: Index has two alphabetically sorted lists @code vs plain?
-@node Unified index
-@unnumbered Unified index
-
-@printindex cp
-
-@include appendices.itely
-@include cheatsheet.itely
-@include fdl.itexi
-
-@bye
diff --git a/Documentation/user/literature.itely b/Documentation/user/literature.itely
deleted file mode 100644
index 74450e59a5..0000000000
--- a/Documentation/user/literature.itely
+++ /dev/null
@@ -1,95 +0,0 @@
-@node Literature list
-@chapter Literature list
-
-If you need to know more about music notation, here are some
-interesting titles to read. The source archive includes a more
-elaborate Bib@TeX{} bibliography of over 100 entries in
-@file{Documentation/bibliography/}. It is also available online from
-the website.
-
-@table @cite
-@item Banter 1987
-Harald Banter, Akkord Lexikon. Schott's S@"{o}hne
-1987. Mainz, Germany ISBN 3-7957-2095-8.
-
-This book is a comprehensive overview of commonly used chords and
-suggests a unification for all different kinds of chord names.
-
-@item Ignatzek 1995
-Klaus Ignatzek, Die Jazzmethode f@"{u}r Klavier. Schott's S@"{o}hne
-1995. Mainz, Germany ISBN 3-7957-5140-3.
-
-A tutorial introduction to playing Jazz on the piano. One of the first
-chapters contains an overview of chords in common use for Jazz music.
-
-
-@item Gerou 1996
-
-Tom Gerou and Linda Lusk, Essential Dictionary of Music
-Notation. Alfred Publishing, Van Nuys CA ISBN 0-88284-768-6.
-
-A concise, alphabetically ordered list of typesetting and music
-(notation) issues which covers most of the normal cases.
-
-
-@item Hader 1948
-
-Karl Hader, Aus der Werkstatt eines Notenstechers. Waldheim--Eberle
-Verlag, Vienna 1948.
-
-Hader was the chief-engraver of an Austrian engraving firm. This
-beautiful booklet was intended as an introduction for laymen on the
-art of engraving. It contains a step by step, in-depth explanation of
-how to cut and stamp music into zinc plates. It also contains a few
-compactly formulated rules on musical orthography. This book is out of
-print.
-
-
-@item Read 1968
-Gardner Read, Music Notation: a Manual of Modern Practice.
-Taplinger Publishing, New York (2nd edition).
-
-A standard work on music notation. 
-
-
-@item Ross 1987
-Ted Ross, Teach yourself the art of music engraving and processing.
-Hansen House, Miami, Florida 1987.
-
-This book is about music engraving, i.e. professional typesetting.
-It contains directions on stamping, use of pens and notational
-conventions. The sections on reproduction technicalities and history
-are also interesting.
-
-@item Schirmer 2001
-The G.Schirmer/AMP Manual of Style and Usage. G.Schirmer/AMP, NY, 2001.
-(This book can be ordered from the rental department.) 
-
-This manual specifically focuses on preparing print for publication by
-Schirmer. It discusses many details that are not in other, normal
-notation books. It als gives a good idea of what is necessary to bring
-printouts to publication quality.
-
-@item Stone 1980
-
-Kurt Stone, Music Notation in the Twentieth Century
-Norton, New York 1980.
-
-This book describes music notation for modern serious music, but
-starts out with a thorough overview of existing traditional notation
-practices.
-
-@item Wanske 1988
-
-Helene Wanske, Musiknotation --- Von der Syntax des Notenstichs zum
-EDV-gesteuerten Notensatz. Schott-Verlag, Mainz 1988. ISBN
-3-7957-2886-x.
-
-A book in two parts: 1. A very thorough overview of engraving
-practices of various craftsmen. It includes detailed specs of
-characters, dimensions etc. 2. a thorough overview of a anonymous
-automated system, which must be antiquated by now. EDV means
-E(lektronischen) D(aten)v(erarbeitung), electronic data processing.
-
-
-@end table
diff --git a/Documentation/user/macros.itexi b/Documentation/user/macros.itexi
deleted file mode 100644
index 36693d24d7..0000000000
--- a/Documentation/user/macros.itexi
+++ /dev/null
@@ -1,159 +0,0 @@
-@c -*-texinfo-*-
-
-@c Reference GLOSsary
-@macro rglos {NAME}
-@ifhtml
-@c ugh: @ref assumes that external refs are split documents too
-@html
-<a style="text-decoration: none; color: inherit;" href="../music-glossary.html#\NAME\">\NAME\</a>@c
-@end html
-@end ifhtml
-@ifnothtml
-\NAME\@c
-@end ifnothtml
-@end macro
-
-
-@ifnottex
-@macro texisharp {word}
-#
-@end macro
-@end ifnottex
-
-@iftex
-@macro texisharp {word}
-@tex
-$\\sharp$%
-@end tex
-@end macro
-@end iftex
-
-@ifnottex
-@macro texiflat {word}
-b
-@end macro
-@end ifnottex
-
-@iftex
-@macro texiflat {word}
-@tex
-$\\flat$%
-@end tex
-@end macro
-@end iftex
-
-
-
-@iftex
-@macro separate 
-@c I want some space over here,  not silly characters.
-@tex
-@end tex
-@end macro
-@end iftex
-
-@c \heartsf was supposed to be filled?
-
-@c center*** is broken?
-
-@ifinfo
-@macro separate
-
-@quotation
-@end quotation
-@end macro
-@end ifinfo
-
-@ifhtml
-@macro separate
-@html
-<p></p><br><br>
-@end html
-@end macro
-@end ifhtml
-
-
-@c dup?
-@ifhtml
-@macro internalsref{NAME}
-@uref{../lilypond-internals/\NAME\.html,\NAME\}@c
-@cindex \NAME\@c
-@end macro
-
-@macro inputfileref{DIR,NAME}
-@uref{../../../../\DIR\/out-www/collated-files.html#\NAME\,@file{\DIR\/\NAME\}}@c
-@end macro
-
-@end ifhtml
-
-@ifinfo
-@macro internalsref{NAME}
-@inforef{\NAME\,,lilypond-internals}@c
-@cindex \NAME\@c
-@end macro
-
-@macro inputfileref{DIR,NAME}
-@file{\DIR\/\NAME\}
-@end macro
-
-@end ifinfo
-
-@iftex
-@macro internalsref{NAME}@c
-@cindex \NAME\@c
-@code{\NAME\}@c
-@end macro
-@macro inputfileref{DIR,NAME}@c
-@file{\DIR\/\NAME\}@c
-@end macro
-@end iftex
-
-
-@iftex
-@macro seeinternals{NAME}
-internals document,  @internalsref{\NAME\}
-@end macro
-@end iftex
-
-@ifnottex
-@macro seeinternals{NAME}
-@internalsref{\NAME\}
-@end macro
-@end ifnottex
-
-@macro refbugs
-@noindent
-@heading Bugs
-
-@end macro
-
-@macro seealso
-@noindent
-@heading See also
-
-@end macro
-
-@macro refcommands
-@noindent
-@heading Predefined commands
-
-@end macro
-
-
-@c
-@c ARGGGHHHHH! I want
-@c @cindex @code{@backslash\WHAT\}
-@c how do I do that?
-@c   --hwn
-
-@macro refcommand{WHAT}
-@cindex @code{\WHAT\}
-@code{\WHAT\}, 
-@end macro
-
-@macro syntax
-@noindent
-@heading Syntax
-
-@end macro
-
diff --git a/Documentation/user/music-glossary.tely b/Documentation/user/music-glossary.tely
deleted file mode 100644
index 0a613e5227..0000000000
--- a/Documentation/user/music-glossary.tely
+++ /dev/null
@@ -1,4498 +0,0 @@
-\input texinfo  @c -*-texinfo-*-
-@settitle Music Glossary
-@setfilename music-glosssary.info
-
-
-@ifhtml
-This document is also available in @uref{music-glossary.ps.gz,gzipped
-PostScript} and @uref{music-glossary.pdf,PDF}.
-@end ifhtml
-
-@titlepage
-@title Music Glossary
-@author Christian Mondrup
-@c License PD, BSD-ish, GNU GPL, GNU FDL?
-
-Copyright @copyright{} 1999--2004 by the authors
-
-
-  Permission is granted to copy, distribute and/or modify this document
-  under the terms of the GNU Free Documentation License, Version 1.1
-  or any later version published by the Free Software Foundation,
-  without Invariant Sections.
-  
-@end titlepage
-
-
-
-@ignore
-@omfcreator Christian Mondrup
-@omfdescription Glossary of musical terms with translations
-@omftype user's guide
-@omfcategory Applications|Publishing
-@omflanguage English
-@end ignore
-
-@ifnottex
-@node Top
-@top
-@chapter Music Glossary
-@menu
-@end menu
-@end ifnottex
-
-@ifnottex
-Christian Mondrup
-@*
-Copyright 1999--2004 by the authors
-
-
-  Permission is granted to copy, distribute and/or modify this document
-  under the terms of the GNU Free Documentation License, Version 1.1
-  or any later version published by the Free Software Foundation,
-  without Invariant Sections.
-  
-
-@*
-
-@*
-
-@end ifnottex
-
-@c @pagesizes 10.3in
-@c @everyheading @| @thispage @|
-@c @evenheading @thispage @| @|
-@c @oddheading @| @| @thispage @|
-
-@macro ar{}
-@iftex
-@tex $\\Rightarrow$ @end tex@c
-@end iftex
-@ifhtml
--->
-@end ifhtml
-@ifinfo
--->
-@end ifinfo
-@end macro
-
-@ignore
-We do not use refs for Info:
-
-   @w{@ar{}\word\}@c vs:
-   @w{@ar{}@pxref{\word\}}@c
-
-they look too intrusive (says Han-Wen).
-@end ignore
-
-
-@c arrowref
-@macro aref{word}
-@iftex
-@w{@ar{}@strong{\word\}}@c
-@end iftex
-@ifhtml
-@ar{}@ref{\word\, @strong{\word\}}@c
-@end ifhtml 
-@ifinfo
-@w{@ar{}\word\}@c
-@end ifinfo
-@end macro
-
-
-@c If we want hypelinks, we must add anchors.
-@c Hmm, we need the @achor command in the item description itself
-@c (not before or after) to get mozilla jump to the right place.
-@c anchoritem
-@macro aitem{word}
-@item \word\@anchor{\word\}
-@end macro
-@macro aitemii{one,two}
-@item \one\; \two\@anchor{\one\; \two\}@anchor{\one\}
-@end macro
-@macro aitemiii{one,two,three}
-@item \one\; \two\; \three\@anchor{\one\; \two\; \three\}@anchor{\one\}
-@end macro
-
-
-@itemize
-@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
-@item N - Norwegian
-@end itemize
-
-This is an example reference, that points you to the @aref{accent}
-entry.
-
-
-@table @strong
-
-@aitem{A}
-ES: la,
-I: la,
-F: la,
-D: A, a,
-NL: a,
-DK: a,
-S: a,
-FI: A, a,
-N: a.
-
-@aitem{accent}
-ES: acento,
-I: accento,
-F: accent,
-D: Akzent,
-NL: accent,
-DK: accent,
-S: accent,
-FI: aksentti, korostus,
-N: ?.
-
-The stress of one tone over others.
-
-@c F: how to distinguish between accidental and key-sig alteration?
-
-@aitem{accidental}
-ES: alteraci@'on,
-I: alterazione, accidente,
-F: alt@'eration
-D: Vorzeichen, Versetzungszeichen,
-NL: voorteken,
-DK: l@o{}st fortegn,
-S: tillf@"alligt f@"ortecken,
-FI: tilap@"ainen etumerkki,
-N: ?.
-
-@c F: alt@'eration accidentelle,  D: Vorzeichen, Versetzungszeichen,
-@c Akzidenz, NL: toevallig teken, I: accidento.
-
-A sharp raises a tone by a @aref{semitone}, a double sharp raises it
-by a @aref{whole tone}, a flat lowers it by a semitone and a double
-flat lowers it by a whole tone. A natural cancels the effect of a previous
-accidental.
-
-@lilypond[notime]
-\property Score.automaticBars = ##f
-%\property Voice.TextScript \set #'font-style = #'large
-\addlyrics
-\context Staff \notes\relative c'' {
-  gis1 s s gisis s s ges s s geses s s g!
-}
-\context LyricsVoice \lyrics {
-  \property Lyrics . LyricText \set #'self-alignment-X = #-1
-  "sharp  " "db. sharp  " "flat  " "db. flat  " natural
-}
-@end lilypond
-
-@aitem{accelerando}
-ES: acelerando,
-I: accelerando,
-F: accelerando, en acc@'el@'erant,
-D: accelerando, schneller werden,
-NL: accelerando,
-DK: accelerando,
-S: accelerando,
-FI: accelerando, kiihdytt@"aen,
-N: ?.
-
-Increase tempo.
-
-@aitem{adagio}
-ES: adagio,
-I: adagio,
-F: adagio, lent,
-D: Adagio, Langsam,
-NL: adagio,
-DK: adagio,
-S: adagio,
-FI: adagio, hitaasti,
-N: adagio.
-
-It. comfortable, easy.
-1. Slow tempo, slower -- especially in even meter -- than
-@aref{andante} and faster than @aref{largo}.
-2. A movement in slow tempo, especially the second (slow) movement of
-@aref{sonata}s, symphonies, etc.
-
-@aitem{allegro}
-ES: allegro,
-I: allegro,
-F: allegro,
-D: Allegro, Schnell, Fr@"ohlich, Lustig,
-NL: allegro,
-DK: allegro,
-S: allegro,
-FI: allegro, nopeasti,
-N: allegro.
-
-It. cheerful.  Quick tempo.  Also used as a title for pieces in a quick tempo,
-especially the first and last movements of a @aref{sonata}.
-
-@aitem{alto}
-ES: alto,
-I: contralto,
-F: alto, D: Alt,
-D: Alt,
-NL: alt,
-DK: alt,
-S: alt,
-FI: altto, matala nais@"a@"ani,
-N: alt.
-
-A female voice of low range (@emph{contralto}).  Originally the alto was a high
-male voice (hence the name) which by the use of falsetto reached the height of
-the female voice.  This type of voice is also known as @aref{counter
-tenor}.
-
-@aitem{alto clef}
-ES: clave de do en tercera,
-I: chiave di contralto,
-F: clef d'ut troisi@`eme ligne,
-D: Altschl@"ussel, Bratschenschl@"ussel,
-NL: alt sleutel,
-DK: altn@o{}gle,
-S: altklav,
-FI: alttoavain,
-N: ?.
-
-C clef setting central C on the middle line of the staff
-@aref{C clef}.
-
-@aitem{ambitus}
-ES: ambitus,
-I: ambitus,
-F: ambitus,
-D: ambitus,
-NL: ambitus,
-DK: ambitus,
-S: ambitus,
-FI: ambitus, @"a@"aniala, soitinala,
-N: ?.
-
-The term ambitus denotes a range of pitches for a given voice in a part of music. It also may denote the pitch range that a musical instrument is capable of playing.
-
-@aitem{ancient minor scale}
-I: scala minore naturale,
-F: forme du mode mineur ancien, trois@`eme mode, mode hell@'enique
-D: reines Moll,
-NL: authentieke mineurtoonladder,
-DK: ren mol,
-S: ren mollskala,
-FI: luonnollinen molliasteikko,
-N: ?.
-
-@lilypond[notime]
-\property Score.automaticBars = ##f
-\notes\relative c'' {
-a1 b c d e f g a }
-@end lilypond
-
-@aitem{andante}
-ES: andante,
-I: andante,
-F: andante,
-D: Andante, Gehend,
-NL: andante,
-DK: andante,
-S: andante,
-FI: andante, k@"ayden,
-N: andante.
-
-Walking tempo/character.
-
-@aitem{appoggiatura}
-ES: apoyatura,
-I: appoggiatura,
-F: appogiature, (port de voix),
-D: Vorschlag,
-NL: voorslag,
-DK: forslag,
-S: f@"orslag,
-FI: appoggiatura, etuhele,
-N: ?.
-
-Ornamental note, usually a second, that is melodically connected with the main
-note that follows it.  In music before the 19th century a. were usually
-performed on the beat, after that mostly before the beat.  While the short
-a. is performed as a short note regardless of the duration of the main note
-the duration of the long a. is proportional to that of the main note.
-
-@lilypond
-\context Voice \notes\relative c'' {
-\key d \major
-\time 4/4
-
-%\property Score.TextScript \set #'font-style = #'large
-<d a fis>4_"notation" r
-{ \property Voice.Stem \override #'flag-style = #'()
-  \grace g16
-  \property Voice.Stem \revert #'flag-style
-   }
-fis8 e16 fis
-{ \property Voice.Stem \override #'flag-style = #'()
-  \grace a16
-  \property Voice.Stem \revert #'flag-style
-  }
-g8 fis16 g |
-\cadenzaOn a4 \bar "||" \cadenzaOff }
-\notes\relative c'' {
-<d a fis>4_"performance" r g16 ( fis) e fis a ( g) fis g |
-\cadenzaOn a4 \bar "||" \cadenzaOff }
-@end lilypond
-
-An appoggiatura may have more notes preceding the main note.
-
-@lilypond
-\notes\relative c'' {
-  \key as \major
-  \time 2/4
-%  \property Score.TextScript \set #'font-style = #'large
-  \grace { bes16 } as8_"notation" as16 bes as8 g |
-  \grace { as16[( bes] } < c as >4-)
-  \grace { as16[( bes] } < c as >4-) \bar "||"
-  \grace { bes16 } as8_"performance" as16 bes as8 g |
-  << \context Voice = va { \stemUp\tieUp as32 bes c8. as32 bes c8. }
-    \context Voice = vb { \stemDown\tieDown as16 ~ as8. as16 ~ as8. } >>
-  \bar "||"
-}
-@end lilypond
-
-@aitem{arpeggio}
-ES: arpegio,
-I: arpeggio,
-F: arp@`ege,
-D: Arpeggio, Akkordbrechungen, gebrochener Akkord,
-NL: gebroken akoord,
-DK: arpeggio, akkordbrydning,
-S: arpeggio,
-FI: arpeggio, murtosointu,
-N: ?.
-
-@lilypond
-\notes \context PianoStaff <<
-  \context Staff = SA \relative c'' {
-    \time 4/4
-    \clef treble
-    r8 g16 c e g, c e r8 g,16 c e g, c e |
-    r8 a,16 d f a, d f r8 a,16 d f a, d f \bar "||" }
-  \context Staff = SB \relative c' {
-    \clef bass
-    << \context Voice = va {
-        \stemUp
-        r16 e8. ( e4) r16 e8. ( e4) |
-        r16 d8. ( d4) r16 d8. ( d4) }
-      \context Voice = vb {
-        \stemDown
-        c2 c | c c } >>
-  }
->>
-@end lilypond
-
-@aitem{ascending interval}
-ES: Intervalo ascendente,
-I: intervallo ascendente,
-F: intervalle ascendant,
-D: steigendes Intervall,
-NL: stijgend interval,
-DK:@w{ }stigende interval,
-S: stigande intervall,
-FI: nouseva intervalli,
-N: ?.
-
-A distance between a starting lower note and a higher ending note.
-
-@aitem{augmented interval}
-ES: intervalo aumentado,
-I: intervallo aumentato,
-F: intervalle augment@'e,
-D: @"uberm@"a@ss{}iges Intervall,
-NL: overmatig interval,
-DK: forst@o{}rret interval,
-S: @"overstigande intervall,
-FI: ylinouseva intervalli,
-N: ?.
-
-@aref{interval}.
-
-@aitem{autograph	}
-I: autografo,
-F: manuscrit,
-D: Autograph, Handschrift,
-NL: manuscript,
-DK: h@aa{}ndskrift, autograf,
-S: handskrift,
-FI: k@"asinkirjoitettu nuotti,
-N: ?.
-
-1. A manuscript in the composer's own hand.
-2. Music prepared for photoreproduction by freehand drawing,
-with only the aid of a straightedge ruler and T-square,
-which attempts to emulate engraving.
-This required more skill than did engraving.
-
-@aitem{B}
-ES: si,
-I: si,
-F: si,
-D: H, h,
-NL: b,
-DK: h,
-S: h,
-FI: H, h,
-N: h.
-
-@aitemii{backfall,forefall}
-@aref{appoggiatura}.
-
-@aitem{bar line}
-ES: ?,
-I: stanghetta, barra (di divisione),
-F: barre (de mesure),
-D: Taktstrich,
-NL: maatstreep,
-DK: taktstreg,
-S: taktstreck,
-FI: tahtiviiva,
-N: ?.
-
-@aitem{bar}
-ES: comp@'as, @aref{measure}.
-
-@aitem{baritone}
-ES: bar@'{@dotless{i}}tono,
-I: baritono,
-F: bariton,
-D: Bariton,
-NL: bariton,
-DK: baryton,
-S: baryton,
-FI: baritoni, keskikorkuinen mies@"a@"ani,
-N: baryton.
-
-The male voice intermediate between the @aref{bass} and the
-@aref{tenor}.
-
-@c F: clef de troisi@`eme ligne dropped
-
-@aitem{baritone clef}
-ES: clave de fa en tercera,
-I: chiave di baritono,
-F: clef d' Ut cinqui@`eme ligne, clef de Fa troisi@`eme,
-D: Baritonschl@"ussel,
-NL: baritonsleutel,
-DK: barytonn@o{}gle,
-S: barytonklav,
-FI: baritoniavain,
-N: ?.
-
-C or F clef setting central C on the upper staff line.
-@aref{C clef}, @aref{F clef}.
-
-@aitem{bass clef}
-ES: clave de fa en cuarta,
-I: chiave di basso,
-F: cl@'e de fa quatri@`eme ligne,
-D: Bassschl@"ussel,
-NL: bassleutel,
-DK: basn@o{}gle,
-S: basklav,
-FI: bassoavain,
-N: ?.
-
-A clef setting with central C on the first top ledger line.
-@aref{F clef}.
-
-@aitem{bass}
-I: basso,
-F: basse,
-D: Bass,
-NL: bas,
-DK: bas,
-S: bas,
-FI: basso, matala mies@"a@"ani,
-N: bas.
-
-1. The lowest of men's voices.
-2. Sometimes, especially in jazz music, used as
-an abbreviation for double bass.
-@aref{strings}.
-
-@aitem{beam}
-I: coda,
-F: barre,
-D: Balken,
-NL: waardestreep,
-DK: bj@ae{}lke,
-S: balk,
-FI: palkki,
-N: ?.
-
-Line connecting a series of notes (shorter than a quarter note).
-The number of beams determine the note value of the connected notes.
-
-@lilypond[notime]
-\property Score.automaticBars = ##f
-%\property Voice.TextScript \set #'font-style = #'large
-\notes\relative c'' {
-  g8_"1/8"[ g g g] s16
-  g16_"1/16"[ g g g] s16
-  g32_"1/32"[ s32 g32 s32 g32 s32 g32] s16
-  g64_"1/64"[ s32 g64 s32 g64 s32 g64] s32 }
-@end lilypond
-
-@aitem{beat}
-ES: tiempo,
-I: tempi,
-F: temps,
-D: Takt, Taktschlag, Zeit (im Takt),
-NL: tel,
-DK: (takt)slag,
-S: taktslag,
-FI: aika-arvo,
-N: ?.
-
-Note value used for counting, most often half-, fourth-, and eighth notes.
-The base counting value and the number of them per measure is indicated at
-the start of the music.
-
-@lilypond
-\key g \major
-\time 4/4
-\notes\relative c'' { g4 c b a | g1 \bar "||"}
-\time 3/8
-\notes\relative c'' { g8 d' c | b c a | g4. \bar "||"}
-@end lilypond
-
-@aitem{bind}
-@aref{tie}.
-
-@aitem{brace}
-ES: llave, corchete,
-I: graffa,
-F: accolade,
-D: Klammer, Akkolade,
-NL: accolade, teksthaak,
-DK: klamme,
-S: klammer,
-FI: yhdist@"av@"a sulkumerkki,
-N: ?.
-
-Symbol at the start of a system connecting staves.  Curly braces are used
-for connecting piano staves, angular brackets for connecting parts in an
-orchestral or choral score.
-
-@lilypond
-\notes\context GrandStaff <<
-  \relative c''\context Staff = SA  { \clef treble g4 e c2 }
-  \relative c \context Staff = SB { \clef bass c1 \bar "|." } >>
-@end lilypond
-
-@lilypond
-\context StaffGroup <<
-%  \property StaffGroup.minVerticalAlign = #12
-  \notes\relative c'' \context Staff = SA { \clef treble g4 e c2 }
-  \notes\relative c \context Staff = SB { \clef bass c1 \bar "|." } >>
-@end lilypond
-
-@aitem{brass}
-ES: metales,
-I: ottoni,
-D: Blechbl@"aser,
-NL: koper (blazers),
-F: cuivres,
-DK: messingbl@ae{}sere,
-S: brassinstrument, m@"assingsinstrument,
-FI: vaskisoitin,
-N: ?.
-
-A family of blown musical instruments made of brass all using a cup formed
-mouth piece.  The brass instruments commonly used in a symphony orchestra are
-trumpet, trombone, french horn, and tube.
-
-@aitem{breath mark}
-I: respiro,
-F: respiration,
-D: Atemzeichen, Trennungszeichen,
-NL: repercussieteken,
-DK: vejrtr@ae{}kningstegn,
-S: andningstecken,
-FI: hengitysmerkki,
-N: ?.
-
-Indication of where to breathe in vocal and wind instrument parts.
-
-@aitem{breve}
-ES: breve,
-I: breve,
-F: br@`eve,
-D: Brevis,
-NL: brevis,
-DK: brevis,
-S: brevis,
-FI: brevis,
-N: ?.
-
-@aref{note value} twice as long as a whole note.  Mainly used
-in pre-1650 music.
-
-@lilypond[notime]
-\property Score.automaticBars = ##f
-\notes\relative c'' { g\breve }
-@end lilypond
-
-@aitem{C}
-ES: do,
-I: do,
-F: ut,
-D: C, c,
-NL: c,
-DK: c,
-S: c,
-FI: C, c,
-N: c.
-
-@aitem{C clef}
-ES: Clave de do,
-I: chiave di do,
-F: cl@'e d'ut,
-D: C-Schl@"ussel,
-NL: C-sleutel,
-DK: c-n@o{}gle,
-S: c-klav,
-FI: C-avain,
-N: ?.
-
-Clef symbol indicating the position of the central C.  Used on all note
-lines.
-
-@lilypond[notime]
-\property Score.automaticBars = ##f
-\property Score.Clef \override #'full-size-change = ##t
-%\property Score.LyricText \set #'font-style = #'large
-\addlyrics
-\context Staff \notes\relative c' {
-  \clef soprano c1 s s
-  \clef mezzosoprano c s s
-  \clef alto c s s
-  \clef tenor c s s
-  \clef baritone c s s
-}
-\context LyricsVoice \lyrics {
-  \property Lyrics . LyricText \override #'self-alignment-X = #-1
-  "Soprano  " "Mezzosoprano  " "Alto  " "Tenor  " Baritone
-}
-@end lilypond
-
-@aitem{cadence}
-ES: cadencia,
-I: cadenza,
-F: cadence,
-D: Kadenz,
-NL: cadens,
-DK: kadence,
-S: kadens,
-FI: kadenssi, lopuke,
-N: ?.
-
-@aref{harmonic cadence}, @aref{functional harmony}.
-
-@aitem{cadenza}
-ES: cadenza,
-I: cadenza,
-F: cadence,
-D: Kadenz,
-NL: cadens,
-DK: kadence,
-S: kadens,
-FI: kadenssi, lopuke,
-N: ?.
-
-An extended, improvisatory style section inserted near the end of
-movement.  The purpose of a cadenza is to give the singer or player a chance to
-exhibit her technichal skill and not the least her ability to improvise.  Since
-the middle of the 19th century, however, most cadences have been written down
-by the composer.
-
-@aitem{canon}
-ES: canon,
-I: canone,
-F: canon,
-D: Kanon,
-NL: canon,
-DK: kanon,
-S: kanon,
-FI: kaanon, tarkka j@"aljittely,
-N: ?.
-
-@aref{counterpoint}.
-
-@aitem{cent}
-ES: cent,
-I: cent,
-F: cent,
-D: Cent,
-NL: cent,
-DK: cent,
-S: cent,
-FI: sentti, puolis@"avelaskeleen sadasosa tasavireisess@"a viritysj@"arjestelm@"ass@"a,
-N: ?.
-
-Logarithmic unit of measurement.  1 cent is 1/1200 of an octave (1/100 of an
-equally tempered @aref{semitone}).
-@aref{equal temperament}.
-
-@aitem{central C}
-@aref{middle C}.
-
-@aitem{chord}
-ES: acorde,
-I: accordo,
-F: accord,
-D: Akkord,
-NL: akkoord,
-DK: akkord,
-S: ackord,
-FI: sointu,
-N: ?.
-
-Three or more tones sounding simultaneously.  In traditional European music the
-base chord is a @emph{triad} consisting of 2@w{ }thirds.  @emph{Major} (major +
-minor @aref{third}) as well as @emph{minor} (minor + major third)
-chords may be extended with more thirds.  Four-tone @emph{seventh chords}
-and five-tone @emph{ninth} major chords are most often used as dominants
-(@aref{functional harmony}).  A special case is chords having no
-third above the lower notes to define their quality as major or minor.  Such
-chords are denoted open chords
-
-@lilypond[notime]
-\property Score.automaticBars = ##f
-%\property Voice.TextScript \set #'font-style = #'large
-\addlyrics
-\context Staff \notes\relative c'' {
-  <g b d>1 s s
-  <g bes d> s s
-  <g bes des> s s
-  <g b dis> s s
-  <g b d f> s s
-  <g b d f a> s s
-}
-\context LyricsVoice \lyrics{
-  \property Lyrics . LyricText \set #'self-alignment-X = #-1
-  "major  " "minor  " "diminished  " "augmented  "
-  "seventh-chord  " "ninth-chord  "
-}
-@end lilypond
-
-@aitem{chromatic scale}
-ES: escala crom@'atica,
-I: scala cromatica,
-F: gamme chromatique,
-D: chromatische Tonleiter,
-NL: chromatische toonladder,
-DK: kromatisk skala,
-S: kromatisk skala,
-FI: kromaattinen asteikko,
-N: ?.
-
-A scale consisting of all 11 @aref{semitone}s.
-
-@lilypond[notime]
-\property Score.automaticBars = ##f
-\notes\relative c' { c1 cis d dis e f fis g gis a ais b c }
-@end lilypond
-
-@aitem{chromaticism}
-ES: cromatismo,
-I: cromatismo,
-F: chromatisme,
-D: Chromatik,
-NL: chromatiek,
-DK: kromatik,
-S: kromatik,
-FI: kromatiikka,
-N: ?.
-
-Use of tones extraneous to a @aref{diatonic scale} (minor, major).
-
-@aitemii{church mode,ecclesiastical mode}
-ES: modo eclesi@'astico,
-I: modo ecclesiastico,
-F: mode eccl@'esiastique,
-D: Kirchentonart,
-NL: kerktoonladder,
-DK: kirketoneart,
-S: kyrkotonart,
-FI: moodi, kirkkos@"avellaji,
-N: ?.
-
-@aref{diatonic scale}.
-
-@aitem{clef}
-ES: clave,
-I: chiave,
-F: cl@'e, clef,
-D: Schl@"ussel, Notenschl@"ussel,
-NL: sleutel,
-DK: n@o{}gle,
-S: klav,
-FI: avain, nuottiavain,
-N: ?.
-
-@aref{C clef}, @aref{F clef}, @aref{G clef}.
-
-@aitem{comma}
-I: comma,
-F: comma,
-D: Komma,
-NL: komma,
-DK: komma,
-S: komma,
-FI: komma, korvinkuultava ero @"a@"anenkorkeudessa,
-N: ?.
-
-Difference in pitch between a note derived from pure tuning and the same note
-derived from some other tuning method.  @aref{temperament}.
-
-@aitem{common meter}
-@aref{meter}.
-
-@aitem{compound interval}
-ES: intervalo compuesto,
-I: intervallo composto,
-F: intervalle compos@'e,
-D: weites Intervall,
-NL: samengesteld interval,
-DK: sammensat interval,
-S: sammansatt intervall,
-FI: oktaavia laajempi intervalli,
-N: ?.
-
-Intervals larger than an octave.
-
-@aref{interval}.
-
-@aitem{complement}
-I: rivolto,
-F: intervalle compl@'ementaire,
-D: Komplement@"arintervall,
-NL: complementair interval,
-DK: komplement@ae{}rinterval,
-S: komplement@"arintervall (?),
-FI: t@"aydent@"av@"a intervalli,
-N: ?.
-
-@aref{inverted interval}.
-
-@aitem{conjunct movement}
-ES: movimiento conjunto,
-I: moto congiunto,
-F: mouvement conjoint,
-D: schrittweise, stufenweise Bewegung,
-NL: stapsgewijze, trapsgewijze beweging,
-DK: trinvis bev@ae{}gelse,
-S: stegvis r@"orelse,
-FI: asteittainen liike,
-N: ?.
-
-Melody moving in the narrow steps of the scale.
-
-@lilypond
-\key g \major \time 4/4
-\notes\relative c'' { g4 g g a | b2 a | g4 b a a | g1 \bar "||" }
-@end lilypond
-
-@aitem{consonance}
-ES: consonancia,
-I: consonanza,
-F: consonance,
-D: Konsonanz,
-NL: consonant,
-DK: konsonans,
-S: konsonans,
-FI: konsonanssi, sopusointi,
-N: ?.
-
-@aref{harmony}.
-
-@aitem{contralto}
-ES: contralto,
-I: contralto,
-F: contralto,
-D: Alt,
-NL: contralto,
-DK: alt,
-S: alt,
-FI: kontra-altto,
-N: ?.
-
-@aref{alto}.
-
-@aitem{counterpoint}
-ES: contrapunto,
-I: contrappunto,
-F: contrepoint,
-D: Kontrapunkt,
-NL: contrapunt,
-DK: kontrapunkt,
-S: kontrapunkt,
-FI: kontrapunkti, @"a@"ani @"a@"ant@"a vastaan,
-N: ?.
-
-From latin @emph{punctus contra punctum}, note against note.  The combination
-into a single musical fabric of lines or parts which have distinct melodic
-significance.  A frequently used polyphonic technique is imitation, in its
-strictest form found in the canon needing only one part to be written down
-while the other parts are performed with a given displacement.  Imitation is
-also the contrapunctal technique used in the @emph{fugue} which, since the
-music of the baroque era, has been one of the most popular polyphonic
-composition methods.
-
-@lilypond[staffsize=11,noquote]
-\property Score.TimeSignature \override #'style = #'()
-\notes\context PianoStaff <<
-  \context Staff = SA \relative c' {
-    \key bes \major
-    \time 4/4
-    \clef treble
-    << \context Voice = rha {
-        \stemUp
-        r1 | r2 r8 g'8 bes d, |
-        cis4 d r8 e!16 f g8 f16 e |
-        f8 g16 a bes8 a16 g a8
-      }
-      \context Voice = rhb {
-        \stemDown
-        r1 | r | r | r2 s8
-      }
-    >>
-  }
-  \context Staff = SB \relative c' {
-    \clef bass
-    \key bes \major
-    << \context Voice = lha {
-        \stemUp
-        r8 d es g, fis4 g | r8 a16 bes c8 bes16 a bes4 g |
-        r8 a16 g f8 g16 a bes8 g e! cis' |
-        d4. e!8 f
-      }
-      \context Voice = lhb {
-        \stemDown
-        r1 | r | r | r2 s8
-      } >>
-  }
->>
-@end lilypond
-
-@aitem{counter tenor}
-ES: contratenor,
-I: controtenore,
-F: contre-tenor,
-D: Countertenor,
-NL: contratenor,
-DK: kontratenor,
-S: kontratenor, counter tenor,
-FI: kontratenori,
-N: kontratenor.
-
-@aref{contralto}.
-
-@aitem{Copying, Music}
-A music copyist did fast freehand scores and parts on preprinted staff lines
-for performance.  Some of their conventions (e.g., the placement of noteheads
-on stems) varied slightly from those of engravers.  Some of their working
-methods were superior and could well be adopted by music typesetters.  This
-required more skill than engraving.
-
-@aitem{crescendo}
-ES: crescendo,
-I: crescendo,
-F: crescendo,
-D: Crescendo, lauter werden,
-NL: crescendo,
-DK: crescendo,
-S: crescendo,
-FI: cresendo, voimistuen,
-N: crescendo.
-
-Increasing volume.  Indicated by a rightwards opening horizontal wedge or the
-abbreviation ``cresc.''.
-
-@lilypond
-\key g \major \time 4/4
-\notes\relative c'' { g4 \< a b c |  d1\! \bar "|." }
-@end lilypond
-
-@aitem{cue-notes}
-ES: notas guia,
-I: notine,
-F: petites notes pr@'ec@'edent l'entr@'ee d'in instrument, r@'eplique,
-D: Stichnoten,
-NL: stichnoten,
-DK: stiknoder,
-S: inprickningar,
-FI: vihjenuotit,
-N: ?.
-
-In a separate part notes belonging to another part with the purpose of hinting
-when to start playing.  Usually printed in a smaller type.
-
-@aitem{custos}
-
-A custos is a staff symbol that appears at the end of a staff line
-with monophonic musical contents (i.e. with a single voice).  It
-anticipates the pitch of the first note of the following line and thus
-helps the player or singer to manage line breaks during performance,
-thus enhancing readability of a score.
-
-Custodes were frequently used in music notation until the 16th
-century.  There were different appearences for different notation
-styles.  Nowadays, they have survived only in special forms of musical
-notation such as via the editio vaticana dating back to the beginning
-of the 20th century
-
-@lilypond
-\score {
-    \notes {
-	\property Staff.Custos \set #'neutral-position = #4
-	\property Staff.Custos \set #'neutral-direction = #-1
-	\property Staff.Custos \set #'adjust-if-on-staffline = ##t
-
-	\property Staff.Custos \set #'style = #'hufnagel
-	c'1
-	\break < d' a' f''>1
-    }
-    \paper {
-	\translator {
-	    \StaffContext
-	    \consists Custos_engraver
-	}
-raggedright = ##t
-    }
-}
-@end lilypond
-  
-@aitem{D}
-ES: Re,
-I: re,
-F: r@'e,
-D: D, d,
-NL: d,
-DK: d,
-S: d,
-FI: D, d,
-N: d.
-
-@aitem{da capo}
-ES: da capo,
-I: da capo,
-F: da capo, depuis le commencement,
-D: da capo, von Anfang,
-NL: da capo,
-DK: da capo,
-S: da capo,
-FI: da capo, alusta,
-N: ?.
-
-The term indicates repetition of the piece from the beginning to the end or to
-a certain place marked @emph{fine}.  Mostly abbreviated as ``D.C.''.
-
-@aitem{dal segno}
-ES: dal segno,
-I: dal segno,
-F: dal segno, depuis le signe,
-D: dal segno,
-NL: dal segno,
-DK: dal segno,
-S: dal segno,
-FI: dal segno, merkkiin asti,
-N: ?.
-
-Abbreviated ``d.s.''.  Repetition, not from the beginning, but from
-another place frequently near the beginning marked by a sign:
-
-@lilypond
-%\property Voice.TextScript \set #'font-style = #'large
-\property Voice.TextScript \set #'font-shape = #'italic
-\key g \major \time 4/4
-\notes\relative c'' { d1 | g,4^\segno  a b c | b a g2_"d.s." \bar "|." }
-@end lilypond
-
-@aitem{decrescendo}
-ES: decrescendo,
-I: decrescendo,
-D: Decrescendo, leiser werden,
-NL: decrescendo,
-DK: decrescendo,
-S: decrescendo,
-FI: decresendo, hiljentyen,
-N: decrescendo.
-
-Decreasing tone volume.  Indicated by a leftwards opening horizontal wedge
-or the abbreviation ``decresc.''.
-
-@lilypond
-\notes\relative c'' {
-  \key g \major \time 4/4
-  d4 \> c b a |  g1 \! \bar "|."
-}
-@end lilypond
-
-@aitem{descending interval}
-ES: intervalo descendente,
-I: intervallo discendente,
-F: intervalle descendant,
-D: fallendes Intervall, absteigendes Intervall,
-NL: dalend interval,
-DK: faldende interval,
-S: fallande intervall,
-FI: laskeva intervalli,
-N: ?.
-
-A distance between a starting higher note and a lower ending note.
-
-@aitem{diatonic scale}
-ES: escala diat@'onica,
-I: scala diatonica,
-F: gamme diatonique,
-D: diatonische Tonleiter,
-NL: diatonische toonladder,
-DK: diatonisk skala,
-S: diatonisk skala,
-FI: diatoninen asteikko,
-N: ?.
-
-A scale consisting of 5@w{ }@aref{whole tone}s and
-2@w{ }@aref{semitone}s (S).  Scales played on the white keys
-of a piano keybord are diatonic.
-
-The church modes are used in gregorial chant and pre baroque early music but
-also to some extent in newer jazz music.
-
-@lilypond[notime,linewidth=110\mm]
-\property Score.automaticBars = ##f
-%\property Score.LyricText \set #'font-style = #'large
-%\property Score.TextScript \set #'font-style = #'large
-\addlyrics
-  \context Staff \notes\relative c' {
-    c1 d
-    \property Voice.TextScript \set #'padding = #-4
-    e^"~~ S" f g a b^"~~ S" c
-  }
-  \context LyricsVoice \lyrics {
-    Ionian
-  }
-@end lilypond
-
-@lilypond[notime]
-\property Score.automaticBars = ##f
-%\property Score.LyricText \set #'font-style = #'large
-%\property Score.TextScript \set #'font-style = #'large
-\addlyrics
-  \context Staff \notes\relative c' {
-    d1
-    \property Voice.TextScript \set #'padding = #-4
-    e^"~~ S" f g a b^"~~ S" c d
-  }
-  \context LyricsVoice \lyrics {
-    Dorian
-  }
-@end lilypond
-
-@lilypond[notime]
-\property Score.automaticBars = ##f
-%\property Score.LyricText \set #'font-style = #'large
-%\property Score.TextScript \set #'font-style = #'large
-\addlyrics
-  \notes\relative c' {
-    \property Voice.TextScript \set #'padding = #-4
-    e1^"~~ S" f g a b^"~~ S" c d e
-  }
-  \context LyricsVoice \lyrics {
-    Phrygian
-  }
-@end lilypond
-
-@lilypond[notime]
-\property Score.automaticBars = ##f
-%\property Score.LyricText \set #'font-style = #'large
-%\property Score.TextScript \set #'font-style = #'large
-\addlyrics
-  \notes\relative c' {
-    f1 g a
-    \property Voice.TextScript \set #'padding = #-4
-    b^"~~ S" c d e^"~~ S" f
-  }
-  \context LyricsVoice \lyrics {
-    Lydian
-  }
-@end lilypond
-
-@lilypond[notime]
-\property Score.automaticBars = ##f
-%\property Score.LyricText \set #'font-style = #'large
-%\property Score.TextScript \set #'font-style = #'large
-\addlyrics
-  \notes\relative c'' {
-    g1 a
-    \property Voice.TextScript \set #'padding = #-4
-    b^"~~ S" c d e^"~~ S" f g }
-  \context LyricsVoice \lyrics {
-    Mixolydian
-  }
-@end lilypond
-
-@lilypond[notime]
-\property Score.automaticBars = ##f
-%\property Score.LyricText \set #'font-style = #'large
-%\property Score.TextScript \set #'font-style = #'large
-\addlyrics
-  \notes\relative c'' {
-    a1
-    \property Voice.TextScript \set #'padding = #-4
-    b^"~~ S" c d e^"~~ S" f g a
-  }
-  \context LyricsVoice \lyrics {
-    Aeolian
-  }
-@end lilypond
-
-From the beginning of the 17th century the scales used in European
-compositional music are primarily the major and the minor scales.  In the
-harmonic minor scale type an augmented second (A) occurs between the 6th and
-7th tone.
-
-@lilypond[notime]
-\property Score.automaticBars = ##f
-%\property Score.LyricText \set #'font-style = #'large
-%\property Score.TextScript \set #'font-style = #'large
-\addlyrics
-  \notes\relative c' {
-    c1 d
-    \property Voice.TextScript \set #'padding = #-4
-    e^"~~ S" f g a b^"~~ S" c
-  }
-  \context LyricsVoice \lyrics {
-    Major
-  }
-@end lilypond
-
-@lilypond[notime]
-\property Score.automaticBars = ##f
-%\property Score.LyricText \set #'font-style = #'large
-%\property Score.TextScript \set #'font-style = #'large
-\addlyrics
-  \notes\relative c'' {
-    a1
-    \property Voice.TextScript \set #'padding = #-4
-    b^"~~ S" c d e^"~~ S" f g a
-  }
-  \context LyricsVoice \lyrics {
-    "ancient minor"
-  }
-@end lilypond
-
-@lilypond[notime]
-\property Score.automaticBars = ##f
-%\property Score.LyricText \set #'font-style = #'large
-%\property Score.TextScript \set #'font-style = #'large
-\addlyrics
-  \notes\relative c'' {
-    a1
-    \property Voice.TextScript \set #'padding = #-4
-    b^"~~ S" c d e^"~~ S" f!^"~~ A" gis^"~~ S" a
-  }
-  \context LyricsVoice \lyrics {
-    "Harmonic minor"
-  }
-@end lilypond
-
-@lilypond[notime]
-\property Score.automaticBars = ##f
-%\property Score.LyricText \set #'font-style = #'large
-%\property Score.TextScript \set #'font-style = #'large
-\addlyrics
-  \notes\relative c'' {
-    a1
-    \property Voice.TextScript \set #'padding = #-4
-    b^"~~ S" c d e fis gis^"~~ S"
-    a g! f!^"~~ S" e d c^"~~ S" b a
-  }
-  \context LyricsVoice \lyrics {
-    "Melodic minor"
-  }
-@end lilypond
-
-@aitem{diminished interval}
-ES: intervalo disminu@'{@dotless{i}}do,
-I: intervallo diminuito,
-F: intervalle diminu@'e,
-D: vermindertes Intervall,
-NL: verminderd interval,
-DK: formindsket interval,
-S: f@"orminskat intervall,
-FI: v@"ahennetty intervalli,
-N: ?.
-
-@aref{interval}.
-
-@aitem{diminuendo}
-ES: diminuendo,
-I: diminuendo,
-F: diminuendo,
-D: Diminuendo,
-NL: diminuendo,
-DK: diminuendo,
-S: diminuendo,
-FI: diminuendo, hiljentyen,
-N: diminuendo.
-
-@aref{decrescendo}.
-
-@aitem{disjunct movement}
-ES: movimiendo disjunto,
-I: moto disgiunto,
-F: mouvement disjoint,
-D: sprunghafte Bewegung,
-NL: sprongsgewijze beweging,
-DK: springende bev@ae{}gelse,
-S: hoppande r@"orelse,
-FI: melodian hyppiv@"a liike,
-N: ?.
-
-Melody moving in steps greater than those of the
-scale.  Opposite of @aref{conjunct movement}.
-
-@lilypond
-\key a \major
-\time 4/4
-\notes\relative c' {
-  \partial 8 e8 |
-  a4. gis8 b a e cis |
-  fis2 d4. \bar "||" }
-@end lilypond
-
-@aitemii{dissonant interval,dissonance}
-ES: intervalo disonante, disonancias,
-I: intervallo dissonante, dissonanza,
-F: dissonance,
-D: Dissonanz,
-NL: dissonant interval; dissonant,
-DK: dissonerende interval, dissonans,
-S: dissonans,
-FI: dissonanssi, dissonoiva intervalli, riitasointi,
-N: ?.
-
-@aref{harmony}.
-
-@aitem{dominant ninth chord}
-I: accordo di nona di dominante,
-F: accord de neuvi@`eme dominante,
-D: Dominantnoneakkord,
-NL: dominant noon akkoord,
-DK: dominantnoneakkord,
-S: dominantnonackord,
-FI: dominanttinoonisointu,
-N: ?.
-
-@aref{chord}, @aref{functional harmony}.
-
-@aitem{dominant seventh chord}
-ES: acorde de s@'eptima de dominante,
-I: accordo di settima di dominante,
-F: accord de septi@`eme dominante,
-D: Dominantseptakkord,
-NL: dominant septiem akkoord,
-DK: dominantseptimakkord,
-S: dominantseptimackord,
-FI: dominanttiseptimisointu,
-N: ?
-
-@aref{chord}, @aref{functional harmony}.
-
-@aitem{dominant}
-ES: dominante,
-I: dominante,
-F: dominante,
-D: Dominante,
-NL: dominant,
-DK: dominant,
-S: dominant,
-FI: dominantti, huippusointu,
-N: ?.
-
-The fifth @aref{scale degree},
-@aref{functional harmony}.
-
-@aitem{dorian mode}
-ES: modo d@'orico,
-I: modo dorico,
-F: mode dorien,
-D: dorisch, dorischer Kirchenton,
-NL: dorische toonladder,
-DK: dorisk skala,
-S: dorisk tonart,
-FI: doorinen moodi,
-N: ?.
-
-@aref{diatonic scale}.
-
-@aitem{dot (augmentation dot)}
-ES: puntillo,
-I: punto (di valore),
-F: point,
-D: Punkt (Verl@"angerungspunkt),
-NL: punt,
-DK: punkt,
-S: punkt,
-FI: piste,
-N: ?.
-
-@aref{dotted note}.
-
-@aitem{dotted note}
-ES: nota con puntillo,
-I: nota puntata,
-F: note point@'ee,
-D: punktierte Note,
-NL: gepuncteerde noot,
-DK: punkteret node,
-S: punkterad not,
-FI: pisteellinen nuotti,
-N: ?.
-
-@aref{note value}.
-
-@aitem{double appoggiatura}
-ES: apoyatura doble,
-I: appoggiatura doppia,
-F: appoggiature double,
-D: doppelter Vorschlag,
-NL: dubbele voorslag,
-DK: dobbelt forslag,
-S: dubbelslag,
-FI: kaksoisappogiatura, kaksoisetuhele,
-N: ?.
-
-@aref{appoggiatura}.
-
-@aitem{double bar line}
-I: doppia barra,
-F: double barre,
-D: Doppelstrich,
-NL: dubbele maatstreep,
-DK: dobbeltstreg,
-S: dubbelstreck,
-FI: kaksoistahtiviiva,
-N: ?.
-
-Indicates the end of a section within a movement.
-
-@aitem{double dotted note}
-ES: nota con dos puntillos,
-I: nota doppiamente puntata,
-F: note doublement point@'ee,
-D: doppelt punktierte Note,
-NL: dubbelgepuncteerde noot,
-DK: dob@-belt@-punk@-te@-ret node,
-S: dub@-bel@-punk@-te@-rad not,
-FI: kaksoispisteellinen nuotti,
-N: ?.
-
-@aref{note value}.
-
-@aitem{double flat}
-ES: doble bemol,
-I: doppio bemolle,
-F: double b@'emol,
-D: Doppel-B,
-NL: dubbelmol,
-DK: dob@-belt-b,
-S: dubbelbe,
-FI: kaksoisalennusmerkki,
-N: ?.
-
-@aref{accidental}.
-
-@aitem{double sharp}
-ES: doble sostenido,
-I: doppio diesis,
-F: double di@`ese,
-D: Doppelkreuz,
-NL: dubbelkruis,
-DK: dob@-belt@-kryds,
-S: dubbelkors,
-FI: kaksoisylennysmerkki,
-N: ?.
-
-@aref{accidental}.
-
-@aitem{double trill}
-ES: trino doble,
-I: doppio trillo,
-F: trille double,
-D: Doppeltriller,
-NL: dubbele triller,
-DK: dobbelttrille,
-S: dubbeldrill,
-FI: kaksoistrilli,
-N: ?.
-
-A simultaneous trill on two notes, usually in the distance of a third.
-
-@aitem{duple meter}
-ES: tiempo binario,
-I: tempo binario,
-F: temps binaire,
-D: in zwei,
-NL: tweedelige maatsoort,
-DK: todelt takt,
-S: tv@aa{}takt,
-FI: kaksoistempo,
-N: ?.
-
-@aref{meter}.
-
-@aitem{duplet}
-ES: dosillo,
-I: duina,
-F: duolet,
-D: Duole,
-NL: duool,
-DK: duol,
-S: duol,
-FI: duoli,
-N: ?.
-
-@aref{note value}.
-
-@aitem{duration}
-ES: duraci@'on,
-I: durata,
-F: dur@'ee,
-D: Dauer, L@"ange,
-NL: duur, lengte,
-DK: varighed,
-S: tonl@"angd,
-FI: kesto, aika-arvo,
-N: ?.
-
-@aref{note value}.
-
-@aitem{dydimic comma}
-@aref{syntonic comma}.
-
-@aitem{E}
-ES: mi,
-I: mi,
-F: mi,
-D: E, e,
-NL: e,
-DK: e,
-S: e,
-FI: E, e,
-N: e.
-
-@aitem{eighth note}
-ES: corchea,
-I: croma,
-F: croche,
-UK: quaver,
-D: Achtel, Achtelnote,
-NL: achtste noot,
-DK: ottendedelsnode,
-S: @aa{}ttondelsnot,
-FI: kahdeksasosanuotti,
-N: ?.
-
-@aref{note value}.
-
-@aitem{eighth rest}
-ES: silencio de corchea,
-I: pausa di croma,
-F: demi-soupir,
-UK: quaver rest,
-D: Achtelpause,
-NL: achtste rust,
-DK: ottendedelspause,
-S: @aa{}ttonddelspaus,
-FI: kahdeksasosatauko,
-N: ?.
-
-@aref{note value}.
-
-@aitem{engraving}
-ES: Grabar
-I: incisione,
-F: gravure,
-D: Notenstechen, Notendruck
-NL: steken,
-DK: nodestik,
-S: nottryck,
-FI: painatus,
-N: ?.
-
-Engraving means incising or etching a metal plate for
-printing.  Photoengraving means drawing music with ink in a manner
-similar to drafting or engineering drawing, using similar tools.
-
-The traditional process of music printing is done through cutting in a
-plate of metal.  Now also the term for the art of music typesetting.
-
-@aitem{enharmonic}
-ES: enharm@'onico,
-I: enarmonico,
-F: enharmonique,
-D: enharmonisch,
-NL: enharmonisch,
-DK: enharmonisk,
-S: enharmonisk,
-FI: enharmoninen,
-N: ?.
-
-Two notes, intervals, or scales are enharmonic if they have different names
-but equal pitch.
-
-@lilypond[notime]
-\property Score.automaticBars = ##f
-%\property Score.TextScript \set #'font-style = #'large
-\addlyrics
-\context Staff \notes\relative c'' {
-  gis1 s s as s s <des g,!> s s <cis g!> s s
-}
-\context LyricsVoice \lyrics {
-  \property Lyrics . LyricText \set #'self-alignment-X = #-1
-  "g sharp  " "a flat  " "dim fifth  " "augm fourth"
-}
-@end lilypond
-
-@aitem{equal temperament}
-ES: ?,
-I: temperamento equabile,
-F: temp@'erament @'egal,
-D: gleichschwebende Stimmung,
-NL: ge@-lijk@-zwe@-ven@-de temperatuur,
-DK: ligesv@ae{}vende temperatur,
-S: liksv@"avande temperatur,
-FI: tasavireinen,
-N: ?.
-
-Tuning system dividing the octave into 12 equal @aref{semitone}s
-(precisely 100 @aref{cent}s).  @aref{temperament}.
-
-@aitem{expression mark}
-ES: ?,
-I: segno d'espressione,
-F: signe d'expression, indication de nuance,
-D: Vortragszeichen,
-NL: voordrachtsteken,
-DK: foredragsbetegnelse,
-S: f@"oredragsbeteckning,
-FI: nyanssiosoitus, esitysmerkki,
-N: ?.
-
-Performance indications concerning 1. volume, dynamics (for example
-@aref{forte}, @aref{crescendo}), 2. tempo (for example
-@aref{andante}, @aref{allegro}).
-
-@aitem{F}
-ES: fa,
-I: fa,
-F: fa,
-D: F, f,
-NL: f,
-DK: f,
-S: f,
-FI: F, f,
-N: f.
-
-@aitem{F clef}
-ES: Clave de Fa,
-I: chiave di fa,
-F: cl@'e de fa,
-D: F-Schl@"ussel,
-NL: F-sleutel,
-DK: F-n@o{}gle,
-S: f-klav,
-FI: F-avain,
-N: ?.
-
-The position between the dots of the key symbol is the line of the F below
-central@w{ }C.  Used on the third, fourth and fifth note line.  A
-digit@w{ }8 above the clef symbol indicates that the notes must be played
-an octave higher (for example bass recorder) while 8@w{ }below the clef
-symbol indicates playing an octave lower (for example on double bass
-@aref{strings}).
-
-@lilypond[notime]
-\property Score.automaticBars = ##f
-\property Staff.Clef \override #'full-size-change = ##t
-%\property Score.LyricText \set #'font-style = #'large
-\addlyrics
-\notes\relative c {
-  \clef varbaritone
-  f1
-  \clef bass
-  f1
-  \clef subbass
-  f1
-  \clef "F^8"
-  f1
-  \clef "F_8"
-  f1
-}
-\context LyricsVoice \lyrics {
-  \property Lyrics . LyricText \set #'self-alignment-X = #-1
-  "baritone  "
-  "bass  "
-  "sub-bass  "
-  "octaved up  "
-  "octaved down"
-}
-@end lilypond
-
-@c F:  'point d'orgue' on a note, 'point d'arret' on a rest.
-
-@aitem{fermata}
-ES: Calder@'on,
-I: corona,
-F: point d'orgue, point d'arr@^et,
-D: Fermate,
-NL: fermate,
-DK: fermat,
-S: fermat,
-FI: fermaatti, pid@"ake,
-N: ?.
-
-Prolonged note or rest of indefinite duration.
-
-@lilypond
-\time 4/4
-\notes\relative c'' {
-  a4 b c2^\fermata \bar "|."
-}
-@end lilypond
-
-@aitem{fifth}
-ES: quinta,
-I: quinta,
-F: quinte,
-D: Quinte,
-NL: kwint,
-DK: kvint,
-S: kvint,
-FI: kvintti,
-N: kvint.
-
-@aref{interval}.
-
-@aitem{figured bass}
-ES: bajo cifrado, @aref{thorough bass}.
-
-@aitem{fingering}
-ES: digitaci@'on,
-I: diteggiatura,
-F: doigt@'e,
-D: Fingersatz,
-NL: vingerzetting,
-DK: fingers@ae{}tning,
-S: fingers@"attning,
-FI: sormitus,
-N: ?.
-
-The methodical use of fingers in the playing of instruments.
-
-@aitem{flag,pennant}
-ES: corchete,
-I: coda (uncinata), bandiera,
-F: crochet,
-D: Fahne, F@"ahnchen,
-NL: vlaggetje,
-DK: fane,
-S: flagga,
-FI: lippu, viiri,
-N: ?.
-
-Ornament at the end of the stem of a note used for notes with values
-less than a quarter note.  The number of flags determines the
-@aref{note value}.
-
-@lilypond[notime]
-\property Score.automaticBars = ##f
-%\property Score.TextScript \set #'font-style = #'large
-\notes\relative c'' {
-  g8_"1/8" s8
-  g16_"1/16" s8
-  g32_"1/32" s8
-  g64_"1/64" s8
-}
-@end lilypond
-
-@aitem{flat}
-ES: bemol,
-I: bemolle,
-F: b@'emol,
-D: B, b,
-NL: mol,
-DK: b,
-S: bef@"ortecken,
-FI: alennusmerkki,
-N: ?.
-
-@aref{accidental}.
-
-@aitemii{forefall,backfall}
-@aref{appoggiatura}.
-
-@aitem{forte}
-ES: forte,
-I: forte,
-F: forte,
-D: forte, laut,
-NL: forte,
-DK: forte,
-S: forte,
-FI: forte, voimakkaasti,
-N: ?.
-
-Loud, abbreviated @b{f}, @emph{fortissimo} (@b{ff}) very loud,
-@emph{mezzoforte} (@b{mf}) medium loud.
-
-@aitem{fourth}
-ES: cuarta,
-I: quarta,
-F: quarte,
-D: Quarte,
-NL: kwart,
-DK: kvart,
-S: kvart,
-FI: kvartti,
-N: ?.
-
-@aref{interval}.
-
-@aitem{fugue}
-ES: fuga,
-I: fuga,
-F: fugue,
-D: Fuge,
-NL: fuga,
-DK: fuga,
-S: fuga,
-FI: fuuga,
-N: ?.
-
-@aref{counterpoint}.
-
-@aitem{functional harmony}
-ES: armon@'{@dotless{i}}a funcional,
-I: armonia funzionale,
-F: @'etude des functions,
-D: Funktionslehre,
-NL: functionele harmonie,
-DK: funktionsanalyse, funktionsharmonik,
-S: funktionsl@"ara,
-FI: harmoniaj@"arjestelm@"a,
-N: ?.
-
-A system of harmonic analysis.  It is based on the idea that, in a given key,
-there are only three functionally different chords: tonic (T, the chord on the
-first note of the scale), subdominant (S, the chord on the fourth note), and
-dominant (D, the chord on the fifth note).  Other are considered to be
-variants of the base chords.
-
-@lilypond[notime]
-\property Score.automaticBars = ##f
-%\property Score.LyricText \set #'font-style = #'large
-%\property Score.TextScript \set #'font-style = #'large
-\addlyrics
-\context Voice \notes\relative c'' {
-  <g e c >1 < a f d > < b g e >
-  <c a f > < d b g > < e c a > < f d b > }
-\context LyricsVoice \lyrics { T Sp Dp S D Tp "D{\\kern-5pt}$\\mid$" }
-@end lilypond
-
-@aitem{G}
-ES: sol,
-I: sol,
-F: sol,
-D: G, g,
-NL: g,
-DK: g,
-S: g,
-FI: G, g,
-N: g.
-
-@aitem{G clef}
-ES: Clave de sol,
-I: chiave di sol,
-F: cl@'e de sol,
-D: G-Schl@"ussel, Violinschl@"ussel,
-NL: G-sleutel,
-DK: g-n@o{}gle,
-S: g-klav,
-FI: G-avain,
-N: ?.
-
-A clef symbol indicating the G above central@w{ }C.  Used on the first
-and second note lines.  A digit 8 above the clef symbol indicates that
-the notes must be played an octave higher while 8 below the clef symbol
-indicates playing or singing an octave lower (most tenor parts in choral
-scores are notated like that).
-
-@lilypond[notime]
-\property Score.automaticBars = ##f
-\property Staff.Clef \set #'full-size-change = ##t
-%\property Score.LyricText \set #'font-style = #'large
-\addlyrics
-\notes\relative c'' {
-  \clef french
-  g1 s s
-  \clef treble
-  g s s
-  \clef "G^8"
-  g s s
-  \clef "G_8"
-  g s s
-}
-\context LyricsVoice \lyrics {
-  \property Lyrics . LyricText \set #'self-alignment-X = #-1
-  "french violin clef  "
-  "violin clef  "
-  "octaved up  "
-  "octaved down"
-}
-@end lilypond
-
-@aitem{glissando}
-ES: glissando,
-I: glissando,
-F: glissando,
-D: Glissando,
-NL: glissando,
-DK: glissando,
-S: glissando,
-FI: glissando, liukuen,
-N: glissando.
-
-Letting the pitch slide fluently from one note to the other.
-
-@aitem{grace notes}
-SP: ?,
-I: abbellimenti,
-F: fioriture,
-D: Verzierungen, Vorschl@"age, Vorschlagsnoten,
-NL: versieringen,
-DK: forsiringer,
-S: ornament,
-FI: korunuotit,
-N: ?.
-
-Notes printed in small types to indicate that their time values are not
-counted in the rhythm of the bar.  @aref{appoggiatura}.
-
-@aitem{grand staff}
-I: accolatura,
-F: accolade,
-D: Akkolade,
-NL: piano systeem,
-DK: klaversystem,
-S: ackolad, b@"ojd klammer,
-FI: kaksoisnuottiviivasto,
-N: ?.
-
-@aref{brace}.
-
-A combination of two staves with a brace.  Usually used for piano music.
-
-@aitem{grave}
-ES: grave,
-I: grave,
-F: grave,
-D: grave, langsam,
-NL: grave, ernstig,
-DK: grave,
-S: grave,
-FI: grave, raskaasti,
-N: ?.
-
-Slow, solemn.
-
-@aitem{half note}
-ES: blanca,
-I: minima,
-F: blanche,
-UK: minim,
-D: Halbe, halbe Note,
-NL: halve noot,
-DK: halvnode,
-S: halvnot,
-FI: puolinuotti,
-N: ?.
-
-@aref{note value}.
-
-@aitem{half rest}
-SP: ?,
-I: pausa di minima,
-F: demi-pause,
-UK: minim rest,
-D: halbe Pause,
-NL: halve, rust,
-DK: halvnodespause,
-S: halvpaus,
-FI: puolitauko,
-N: ?.
-
-@aref{note value}.
-
-@aitem{harmonic cadence}
-ES: cadencia (arm@'onica),
-I: cadenza (armonica),
-F: cadence harmonique,
-D: Schlusskadenz,
-NL: harmonische cadens,
-DK: harmonisk kadence,
-S: (harmonisk) kadens,
-FI: harmoninen kadenssi,
-N: ?.
-
-Sequence of chords that terminate a musical phrase or
-section.  @aref{functional harmony}.
-
-@lilypond
-\notes\context PianoStaff <<
-  \context Staff = SA \relative c'' {
-    \time 4/4
-    \clef treble
-    \context Voice
-    \partial 4 < c g e >4 |
-    < c a f > < b g d > < c g e >2
-  }
-%  %\property Score.LyricText \set #'font-style = #'large
-  \addlyrics
-  \context Staff = SB \relative c {
-    \clef bass
-    \partial 4 c4 | f, g c2
-    \bar "|."
-  }
-  \context LyricsVoice \lyrics {
-    T S D T
-  }
->>
-@end lilypond
-
-@aitem{harmony}
-ES: armon@'{@dotless{i}}a,
-I: armonia,
-F: harmonie,
-D: Harmonie, Zusammenklang,
-NL: harmonie,
-DK: samklang,
-S: samklang,
-FI: harmonia, yhteissointi,
-N: ?.
-
-Tones sounding simultaneously.  Two note harmonies fall into the categories
-@emph{consonances} and @emph{dissonances}.
-
-Consonances:
-
-@lilypond[notime]
-\property Score.automaticBars = ##f
-%\property Score.TextScript \set #'font-style = #'large
-\context Voice \notes\relative c'' {
-  <g g>1_"unisone  " s
-  <g b>_"third  " s
-  <g c>_"fourth  " s
-  <g d'>_"fifth  " s
-  <g e'>_"sixth  " s
-  <g g'>_"octave  " s
-  <g b'>_"decime" s s
-}
-@end lilypond
-
-Dissonances:
-
-@lilypond[notime]
-\property Score.automaticBars = ##f
-%\property Score.TextScript \set #'font-style = #'large
-\context Voice  \notes\relative c'' {
-  <g a>1_"second  " s s
-  <g f'>_"seventh  " s s
-  <g a'>_"ninth" s s
-}
-@end lilypond
-
-Three note harmony @aref{chord}.
-
-@aitem{homophony}
-ES: homofon@'{@dotless{i}}a,
-I: omofonia,
-F: homophonie,
-D: Homophonie,
-NL: homofonie,
-DK: homofoni,
-S: homofoni,
-FI: homofonia, yksi@"a@"anisyys,
-N: ?.
-
-Music in which one voice leads melodically followed by the other voices more
-or less in the same rhythm.  In contrast to @aref{polyphony}.
-
-@aitem{interval}
-ES: intervalo,
-I: intervallo,
-F: intervalle,
-D: Intervall,
-NL: interval,
-DK: interval,
-S: intervall,
-FI: intervalli, kahden s@"avelen korkeusero,
-N: ?.
-
-Difference in pitch between two notes.  Intervals may be perfect, minor, major,
-diminished, or augmented.  The augmented fourth and the diminished fifth are
-identical (@aref{enharmonic}) and are called @emph{tritonus}
-because they consist of three @aref{whole tone}s.  The addition
-of such two forms an octave.
-
-@lilypond[notime]
-\property Score.automaticBars = ##f
-%\property Score.LyricText \set #'font-style = #'large
-%\property Score.TextScript \set #'font-style = #'large
-\addlyrics
-\context Voice \notes\relative c'' {
-  < g g >1 s
-  < g as >^"minor" s
-  < g a! > s
-  < g ais >^"augm" s
-  < gis bes >^"dimin" s
-  < g! bes >^"minor" s
-  < g b! >^"major" s
-  < g bis >^"augm" s
-}
-\context LyricsVoice \lyrics {
-  "unisone  " "second  " "second  " "second  "
-  "third   " "third  " "third  " "third  "
-}
-@end lilypond
-
-@lilypond[notime]
-\property Score.automaticBars = ##f
-%\property Score.LyricText \set #'font-style = #'large
-%\property Score.TextScript \set #'font-style = #'large
-\addlyrics
-\context Staff \notes\relative c'' {
-  < g c >^"perfect" s
-  < g cis >^"augm"  s
-  < g d' >^"perfect"  s
-  < g des' > ^"dim" s
-  < gis es' >^"dimin"  s
-  < g! es' >^"minor"  s
-  < g e'! >^"major"  s
-  < g eis' >^"augm"  s
-}
-\context LyricsVoice \lyrics {
-  "fourth  " "fourth  " "fifth  " "fifth  "
-  "sixth  " "sixth  " "sixth  " "sixth  "
-}
-@end lilypond
-
-@lilypond[notime]
-\property Score.automaticBars = ##f
-%\property Score.LyricText \set #'font-style = #'large
-%\property Score.TextScript \set #'font-style = #'large
-\addlyrics
-\context Staff \notes\relative c'' {
-  < gis f'! >1^"dimin"  s
-  < g! f'! >^"minor"  s
-  < g fis' >^"major"  s
-  < g g' > s
-  < g as' >^"minor"  s
-  < g a'! >^"major"  s
-  < g bes' >^"minor"  s
-  < g b'! >^"major"  s
-}
-\context LyricsVoice \lyrics {
-  "seventh  " "seventh  " "seventh  " "octave  "
-  "none  " "none  " "decime  " "decime  "
-}
-@end lilypond
-
-@aitem{inverted interval}
-ES: intervalo invertido,
-I: intervallo rivolto,
-F: intervalle revers@'e,
-D: umgekehrtes Intervall,
-NL: interval inversie,
-DK: omvendingsinterval,
-S: intervallets omv@"andning,
-FI: k@"a@"anteisintervalli,
-N: ?.
-
-The difference between an interval and an octave.
-
-@lilypond[notime]
-\property Score.automaticBars = ##f
-%\property Score.TextScript \set #'font-style = #'large
-\context Staff \notes\relative c'' {
-  < g  a >1_"second " s s < g' a, >_"seventh " s s \bar "||"
-  < g, b >_"third  " s s < g' b, >_"sixth  " s s \bar "||"
-  < g, c >_"fourth  " s s < g' c, >_"fifth  " s s \bar "||"
-}
-@end lilypond
-
-@aitem{just intonation}
-I: intonazione giusta,
-F: intonation juste,
-D: reine Stimmung,
-NL: reine stemming,
-DK: ren stemning,
-S: ren st@"amning,
-FI: puhdas viritys,
-N: ?.
-
-Tuning system in which the notes are obtained by adding and subtracting
-natural fifths and thirds.  @aref{temperament}.
-
-@aitem{key}
-ES: tonalidad,
-I: tonalit@`a,
-F: tonalit@'e,
-D: Tonart,
-NL: toonsoort,
-DK: toneart,
-S: tonart,
-FI: tonaliteetti,
-N: ?.
-
-According to the 12@w{ }tones of the @aref{chromatic scale}
-there are 12@w{ }keys, one on@w{ }c, one on c-sharp, etc.
-@aref{key signature}.
-
-@aitem{key signature}
-ES: armadura de clave,
-I: armatura di chiave,
-F: armure, armature [de la cl@'e],
-D: Vorzeichen, Tonart,
-NL: toon@-soort (voortekens),
-DK: faste fortegn,
-S: tonartssignatur,
-FI: s@"avellajiosoitus,
-N: ?.
-
-The sharps or flats appearing at the beginning of each staff indicating the
-key of the music.  @aref{accidental}.
-
-@aitem{largo}
-ES: largo,
-I: largo,
-F: largo,
-D: Largo, Langsam, Breit,
-NL: largo,
-DK: largo,
-S: largo,
-FI: largo, hitaasti, leve@"asti,
-N: largo.
-
-Very slow in tempo, usually combined with great
-expressiveness.  @emph{Larghetto} is less slow than largo.
-
-@aitem{leading note}
-ES: sensible,
-I: sensibile,
-F: note sensible,
-D: Leitton,
-NL: leidtoon,
-DK: ledetone,
-S: ledton,
-FI: johtos@"avel,
-N: ?.
-
-The seventh @aref{scale degree}, a @aref{semitone} below
-the tonic; so called because of its strong tendency to ``lead up'' (resolve
-upwards) to the tonic scale degree.
-
-@aitemii{ledger line,leger line}
-ES: l@'{@dotless{i}}neas adicionales,
-I: tagli addizionali,
-F: ligne suppl@'ementaire,
-D: Hilfslinie,
-NL: hulplijntje,
-DK: hj@ae{}lpelinie,
-S: hj@"alplinje,
-FI: apuviiva,
-N: ?.
-
-A ledger line is an extension of the staff.
-
-@lilypond[notime]
-\property Score.automaticBars = ##f
-\notes\relative c'' { a,1 s c'' }
-@end lilypond
-
-@aitem{legato}
-ES: ligado,
-I: legato,
-F: legato, li@'e,
-D: legato,
-NL: legato,
-DK: legato,
-S: legato,
-FI: legato, sitoen,
-N: ?.
-
-To be performed (a) without any perceptible interruption between the notes 
-unlike (b) @emph{leggiero} or @emph{non-legato}, (c) @emph{portato} and
-(d) @aref{staccato}.
-
-@lilypond[notime]
-\property Score.automaticBars = ##f
-\addlyrics
-\context Staff \notes\relative c'' {
-  c4-( d e-) \bar "||"
-  c4-- d-- e-- \bar "||"
-  c4-.-( d-. e-.-) \bar "||"
-  c4-. d-. e-. \bar "||"
-}
-\context LyricsVoice \lyrics {
-%  \property Lyrics . LyricText \set #'font-style = #'large
-  a
-  b "" ""
-  c
-  d
-}
-@end lilypond
-
-@aitem{legato curve}
-@aref{slur}, @aref{legato}.
-
-@aitem{lilypond}
-ES: estanque de lilas,
-I: stagno del giglio,
-F: @'etang de lis,
-UK: lily pond,
-D: Seerosenteich,
-NL: le@-lie@-vij@-ver,
-DK: liliedam,
-S: liljedamm,
-FI: liljalampi,
-N: ?.
-
-A pond with lilies floating in it, also the name of a music typesetter.
-
-@aitem{line}
-ES: l@'{@dotless{i}}nea,
-I: linea,
-F: ligne,
-D: Linie, Notenlinie,
-NL: lijn,
-DK: nodelinie,
-S: notlinje,
-FI: viiva, nuottiviiva,
-N: ?.
-
-@aref{staff}.
-
-@aitem{long appoggiatura}
-ES: apoyatura larga,
-I: appoggiatura lunga,
-F: appoggiature longue,
-D: langer Vorschlag,
-NL: Lange voorslag,
-DK: langt forslag,
-S: l@aa{}ngt f@"orslag,
-FI: pitk@"a appoggiatura, pitk@"a etuhele,
-N: ?.
-
-@aref{appoggiatura}.
-
-@aitem{longa}
-ES: longa,
-I: longa,
-F: longa,
-D: Longa,
-NL: longa,
-DK: longa,
-S: longa,
-FI: longa,
-N: longa.
-
-Note value: double length of @aref{breve}.
-@aref{note value}.
-
-@lilypond[notime]
-\property Score.automaticBars = ##f
-\notes\relative c'' {
-  \property Voice.NoteHead \set #'style = #'mensural
-  g\longa
-}
-@end lilypond
-
-@aitemii{lyrics,song texts}
-ES: .,
-I: .,
-F: .,
-D: .,
-NL: liedtekst,
-DK: .,
-S: .,
-FI, sanoitus,
-N: ..
-
-@aitem{major interval}
-ES: intervalo mayor,
-I: intervallo maggiore,
-F: intervalle majeur,
-D: gro@ss{}es Intervall,
-NL: groot interval,
-DK: stort interval,
-S: stort intervall,
-FI: suuri intervalli,
-N: ?.
-
-@aref{interval}.
-
-@aitem{major}
-ES: mayor,
-I: maggiore,
-F: [mode] majeur,
-D: Dur,
-NL: majeur,
-DK: dur,
-S: dur,
-FI: duuri,
-N: dur.
-
-@aref{diatonic scale}.
-
-@aitem{meantone temperament}
-I: accordatura mesotonica,
-F: temp@'erament m@'esotonique,
-D: mittelt@"onige Stimmung,
-NL: middenstemming, middentoonstemming,
-DK: middeltonetemperatur,
-S: medeltonstemperatur,
-FI: keskis@"avelviritys,
-N: ?.
-
-Temperament yielding acoustically pure thirds by decreasing the natural fifth
-by 16@w{ }@aref{cent}s.  Due to the non-circular character of this
-@aref{temperament} only a limited set of keys are playable.
-Used for tuning keyboard instruments for performance of pre-1650 music.
-
-@aitem{measure, bar}
-ES: comp@'as,
-I: misura, battuta,
-F: mesure,
-D: Takt,
-NL: maat,
-DK: takt,
-S: takt,
-FI: tahti,
-N: takt.
-
-A group of @aref{beat}s (units of musical time) the first of which
-bears an accent.  Such groups in numbers of two or more recur consistently
-throughout the composition and are marked from each other by
-bar-lines.  @aref{meter}.
-
-@aitem{mediant}
-ES: mediante,
-I: mediante, modale,
-F: m@'ediante,
-NL: mediant,
-D: Mediante,
-DK: mediant,
-S: mediant,
-FI: keskis@"avel,
-N: ?.
-
-1. The third @b{scale degree}.
-2. A @aref{chord} having its base tone
-a third from that of another chord.  For example, the tonic chord may be
-replaced by its lower mediant (variant tonic).  @aref{functional
-harmony}, @aref{relative key}.
-
-@aitem{melisma}
-
-NL: melisma, 
-FI: melisma, laulettavan tavun s@"avelkuvio, 
-
-A melisma (plural: melismata) is a group of notes or tones sung on one
-syllable in plainsong
-
-@aitem{melodic cadence}
-@aref{cadenza}.
-
-@aitem{meter, time}
-ES: comp@'as,
-I: tempo, metro,
-F: indication de m@'esure,
-D: Taktart, Metrum,
-NL: maatsoort,
-DK: taktart,
-S: taktart,
-FI: aika-arvo,
-N: ?.
-
-The basic scheme of @aref{note value}s and
-@aref{accent}s which remains unaltered throughout a composition
-or a section of it.  For instance, 3/4 meter means that the basic
-@aref{note value}s are quarter notes and that a
-@aref{measure} consists of three of those.  According to
-whether there are two, three or four units to the measure,
-one speaks of @emph{duple} (2/2, 2/4, 2/8), @emph{triple} (3/2, 3/4, 3/8), or
-@emph{quadruple} (4/2, 4/4, 4/8) meter.  4/4 is also called common meter.
-
-@lilypond
-\notes\relative c'' {
-  \time 3/4
-  \key f \major
-  c es d | c bes8 a bes4 | c es d | c2 \bar "||"}
-@end lilypond
-
-@lilypond
-\notes\relative c' {
-  \time 6/8
-  \key f \major
-  f8 f f f a16 g a f |
-  c'8 c c c e16 d e c \bar "||"}
-@end lilypond
-
-@lilypond
-\notes\relative c'' {
-  \time 5/4
-  \key g \major
-  d4 b8 g b d d c a4 |
-  g8 g16 g g8 g16 g g8 fis16 g a8 fis16 e d4 \bar "||"}
-@end lilypond
-
-@aitem{metronome}
-ES: metr@'onomo,
-I: metronomo,
-F: m@'etronome,
-D: Metronom,
-NL: metronoom,
-DK: me@-tro@-nom,
-S: me@-tro@-nom,
-FI: metronomi,
-N: metronom.
-
-Device indicating the exact tempo of a piece.  @aref{metronomic
-indication}.
-
-@aitem{metronomic indication}
-ES: indicaci@'on metron@'omica,
-I: indicazione metronomica,
-F: indication m@'etronomique,
-D: Metronomangabe,
-NL: metronoom aanduiding,
-DK: metronomtal,
-S: metronomangivelse,
-FI: metronomiosoitus,
-N: ?.
-
-Exact tempo indication (in beats per minute).  Also denoted by
-M.M. (M@"alzels Metronom).
-
-@aitem{mezzo-soprano}
-ES: mezzo soprano,
-I: mezzo-soprano,
-F: mezzo-soprano,
-D: Mezzosopran,
-NL: mezzosopraan,
-DK: mezzosopran,
-S: mezzosopran,
-FI: mezzosopraano,
-N: mezzosopran.
-
-The female voice between @aref{soprano} and
-@aref{contralto}.
-
-@aitem{middle C}
-ES: do central,
-I: do centrale,
-F: do central,
-D: eingestrichenes@w{ }c,
-NL: centrale@w{ }c,
-DK: enstreget@w{ }c,
-S: ettstruket@w{ }c,
-FI: keski-C,
-N: ?.
-
-First C below the 440 Hz A.
-
-@lilypond[notime]
-\property Score.automaticBars = ##f
-\property Staff.Clef \set #'full-size-change = ##t
-\notes\relative c' {
-  \clef bass c1 s
-  \clef alto c s
-  \clef treble c s
-}
-@end lilypond
-
-@aitem{minor}
-ES: menor,
-I: minore,
-F: mode mineur,
-D: Moll,
-NL: mineur,
-DK: mol,
-S: moll,
-FI: molli,
-N: ?.
-
-@aref{diatonic scale}.
-
-@aitem{minor interval}
-ES: intervalo mayor,
-I: intervallo minore,
-F: intervalle mineur,
-D: kleines Intervall,
-NL: klein interval,
-DK: lille interval,
-S: litet intervall,
-FI: pieni intervalli,
-N: ?.
-
-@aref{interval}.
-
-@aitem{mode}
-ES: modo,
-I: modo,
-F: mode,
-D: Modus,
-NL: modus,
-DK: skala,
-S: modus, skala,
-FI: moodi, kirkkos@"avelasteikko,
-N: ?.
-
-@aref{church mode}, @aref{diatonic scale}.
-
-@aitem{modulation}
-ES: modulaci@'on,
-I: modulazione,
-F: modulation,
-D: Modulation,
-NL: modulatie,
-DK: modulation,
-S: modulering,
-FI: modulaatio, s@"avellajin vaihdos,
-N: ?.
-
-Moving from one @aref{key} to another.  For example, the second
-subject of a @aref{sonata form} movement modulates to the dominant
-key if the key is major and to the @aref{relative key} if the key
-is minor.
-
-@aitem{mordent}
-I: mordente,
-F: mordant,
-D: Mordent,
-NL: mordent,
-DK: mordent,
-S: mordent,
-FI: mordent, korukuvio,
-N: ?.
-
-@aref{ornament}.
-
-@aitemii{motive,motif}
-ES: tema,
-I: inciso,
-F: incise,
-D: Motiv,
-NL: motief,
-DK: motiv,
-S: motiv,
-FI: teema, s@"avelaihe,
-N: ?.
-
-The briefest intelligible and self-contained fragment of a musical theme or
-subject.
-
-@lilypond
-\property Score.TimeSignature \override #'style = #'()
-%\property Score.TextScript \set #'font-style = #'large
-\notes\relative c'' {
-  \time 4/4
-  \key g \major
-  \partial 8 g16_"------" fis |
-  g8 d16_"------" c d8 g16 fis g8 b,16 a b8 g'16 fis |
-  g8 g,16 a b8 cis d16 s
-}
-@end lilypond
-
-@aitem{movement}
-ES: movimiento,
-I: movimento,
-F: mouvement,
-D: Satz,
-NL: deel,
-DK: sats,
-S: sats,
-FI: osa,
-N: ?.
-
-Greater musical works like @aref{symphony} and
-@aref{sonata} most often consist of several -- more or less --
-independant pieces called movements.
-
-@aitem{multibar rest}
-ES: compases de espera,
-I: pausa multipla,
-F: pause multiple,
-NL: meermaats rust,
-D: mehrtaktige Pause,
-DK: flertaktspause,
-S: flertaktspaus,
-FI: usean tahdin mittainen tauko,
-N: ?.
-
-@lilypond
-\notes\relative c'' {
-  a1
-  \property Score.skipBars=##t R1*3
-  a1
-}
-@end lilypond
-
-@aitem{mixolydian mode}
-@aref{diatonic scale}.
-
-@aitem{natural sign}
-ES: becuadro,
-I: bequadro,
-F: b@'ecarre,
-D: Aufl@"osungszeichen,
-NL: herstellingsteken,
-DK: op@-l@o{}sningstegn,
-S: @aa{}terst@"allningstecken,
-FI: palautusmerkki,
-N: ?.
-
-@aref{accidental}.
-
-@aitem{neighbour tones}
-@aref{appoggiatura}.
-
-@aitem{ninth}
-ES: novena,
-I: nona,
-F: neuvi@`eme,
-D: None,
-NL: noon,
-DK: none,
-S: nona,
-FI: nooni,
-N: ?.
-
-@aref{interval}.
-
-@aitem{non-legato}
-@aref{legato}.
-
-@aitem{note}
-ES: nota,
-I: nota,
-F: note,
-D: Note,
-NL: noot,
-DK: node,
-S: not,
-FI: nuotti,
-N: ?,
-
-Notes are signs by means of which music is fixed in writing.  The term is also
-used for the sound indicated by a note, and even for the key of the piano
-which produces the sound.  However, a clear distinction between the terms tone
-and @aref{note} is strongly recommended.  Briefly, one sees a note,
-and hears a tone.
-
-@aitem{note head}
-ES: oval,
-I: testa, testina, capocchia,
-F: t@^ete de la note,
-D: Notenkopf,
-NL: nootballetje,
-DK: nodehovede,
-S: nothuvud,
-FI: nuotin p@"a@"a,
-N: ?.
-
-A head like sign which indicates pitch by its position on a
-@aref{staff} provided with a @aref{clef}, and duration
-by a variety of shapes such as hollow or black heads with or without
-@aref{stem}s, @aref{flag}s, etc.  For percussion
-instruments (often having no defined pitch) the note head may indicate the
-instrument.
-
-@aitem{note value}
-ES: valor,
-I: valore, durata,
-F: dur@'ee, valeur (d'une note),
-D: Notenwert,
-NL: nootwaarde,
-DK nodev@ae{}rdi,
-S: notv@"arde,
-FI: nuotin aika-arvo,
-N: ?.
-
-Note values (durations) are measured as fractions, normally 1/2, of the next
-higher note value.  The longest duration normally used is called @emph{brevis},
-but sometimes (mostly in pre baroque music) the double length note value
-@emph{longa} is used.
-
-@lilypond[notime]
-%\property Score.TextScript \set #'font-style = #'large
-\property Score.automaticBars = ##f
-\notes\relative c'' {
-  \property Voice.NoteHead \override #'style = #'mensural
-  g\longa_"longa" g\breve_"breve"
-  \property Voice.NoteHead \revert #'style
-  g1_"1/1" g2_"1/2" g4_"1/4" s16 g8_"1/8" s16
-  g16_"1/16" s16 g32_"1/32" s16 g64_"1/64" s32 }
-@end lilypond
-
-@lilypond[notime]
-%\property Score.TextScript \set #'font-style = #'large
-\property Score.automaticBars = ##f
-\notes\relative c'' {
-  r\longa_"longa" r\breve_"breve"
-  r1_"1/1" r2_"1/2" r4_"1/4" s16 r8_"1/8" s16
-  r16_"1/16" s16 r32_"1/32" s16 r64_"1/64" s32 }
-@end lilypond
-
-An augmentation dot after a note multiplies the duration by one and a
-half.  Another dot adds yet a fourth of the duration.
-
-@lilypond
-%\property Score.TextScript \set #'font-style = #'large
-\notes\relative c'' {
-  \time 4/4
-  g4._"pointed" g8 g2 | g4 ~ g8 g g2 \bar "||"
-  g4.._"double pointed" g16 g2 | g4 ~ g8 ~ g16 g g2 \bar "||" }
-@end lilypond
-
-Alternatively note values may be subdivided by other ratios.  Most common is
-subdivision by@w{ }3 (@emph{triplets}) and@w{ }5 (@emph{quintuplets}).
-Subdivisions by@w{ }2 (@emph{tuplets}) or@w{ }4 (@emph{quadruplets}) of
-dotted notes are also frequently used.
-
-@lilypond
-%\property Score.TextScript \set #'font-style = #'large
-\notes\relative c'' {
-  \time 4/4
-  \times 2/3 {g8_"triplets" g g} g4 g8 g g4 \bar "||"
-  \times 2/5 {g8_"quintuplets" g g g g} g4 g8 g g4 \bar "||"
-}
-@end lilypond
-
-@lilypond
-\notes\relative c'' {
-  \time 3/4
-  \times 3/2 {g4_"duplets" g} |
-  g4 g g \bar "||"
-  \times 6/4 {g8_"quadruplets" g g g} |
-  g8 g g g g4 \bar "||"
-}
-@end lilypond
-
-@aitem{octave sign}
-@aref{G clef}, @aref{F clef}.
-
-@aitem{octave}
-ES: octava,
-I: ottava,
-F: octave,
-D: Oktave,
-NL: octaaf,
-DK: oktav,
-S: oktav,
-FI: oktaavi,
-N: ?.
-
-@aref{interval}.
-
-@aitemiii{ornament,embellishment,accessory}
-ES: adorno,
-I: abbellimento, fioriture,
-F: agr@'ement, ornement,
-D: Verzierung, Ornament,
-NL: versiering,
-DK: forsiring,
-S: ornament,
-FI: koru, hele,
-N: ?.
-
-Most commonly used is the @emph{trill}, the rapid alternation of a given note
-with the diatonic @aref{second} above it.  In the music from the
-middle of the 19th century and onwards the trill is performed with the main
-note first while in the music from the preceding baroque and classic periods
-the upper note is played first.
-
-@lilypond
-<<
-  \context Staff = sa {
-%        \property Score.TextScript \set #'font-style = #'large
-    \notes\relative c'' {
-      c2._"pre-1850"  b4\trill | c1 \bar "||"
-      c2._"post-1850" b4\trill | c1 \bar "||"
-    }
-  }
-  \notes\relative c'' {
-    c2. c32 b c b c b c b | c1
-    c2. b32 c b c \times 4/5 { b c b c b } | c1
-  }
->>
-@end lilypond
-
-Other frequently used ornaments are the @emph{turn}, the @emph{mordent} and the
-@emph{prall} (inverted mordent).
-
-@lilypond
-<<
-  \context Staff = sa {
-%        \property Score.TextScript \set #'font-style = #'large
-    \notes\relative c'' {
-      a4_"turn" b\turn c2 \bar "||"
-      g4_"mordent" a b\mordent a \bar "||"
-      e'4_"prall" d\prall c2 \bar "||"
-    }
-  }
-  \notes\relative c'' {
-    a4 c16[ b a b] c2
-    g4 a  b16-[ a b8] a4
-    e'4 e32[ d e d ~ d8] c2
-  }
->>
-@end lilypond
-
-@aref{appoggiatura}.
-
-@aitem{ossia}
-ES: ossia,
-I: ossia,
-F: ossia,
-D: Ossia,
-NL: alternatief,
-DK: ossia,
-S: ossia,
-FI: ossia, vaihtoehtoinen esitystapa,
-N: ?.
-
-Ossia (otherwise) marks an alternative.  It is an added staff or piano
-score, usually only a few measures long, which presents another version
-of the music, for example for small hands.
-
-@aitem{part}
-ES: parte,
-I: voce, parte,
-F: partie,
-D: Stimme,
-NL: partij,
-DK: stemme,
-S: st@"amma,
-FI: stemma, instrumenttiosuus,
-N: ?.
-
-1. In instrumental or choral music the music for the single instrument
-or voice.  2. in contrapuntal music @aref{counterpoint} the single
-melodic line of the contrapunctal web.
-
-@aitem{percussion}
-ES: percusi@'on,
-I: percussioni,
-F: percussion,
-D: Schlagzeug, Schlagwerk,
-NL: slagwerk,
-DK: slagt@o{}j,
-S: slagverk,
-FI: ly@"om@"asoittimet,
-N: ?.
-
-A family of musical instruments which are played on by striking or
-shaking.  Percussion instruments commonly used in a symphony orchestra are
-kettledrums (I: @emph{timpani}, D: @emph{Pauken}), snare drum, bass drum,
-tambourine, cymbals, chinese gong (tam-tam), triangle, celesta, glockenspiel,
-and xylophone.
-
-@aitem{perfect interval}
-ES: intervalo justo,
-I: intervallo giusto,
-F: intervalle juste,
-D: reines Intervall,
-NL: rein interval,
-DK: rent interval,
-S: rent intervall,
-FI: puhdas intervalli,
-N: ?.
-
-@aref{interval}.
-
-@aitem{phrase}
-ES: frase,
-I: frase,
-F: phrase,
-D: Phrase,
-NL: frase, zin,
-DK: frase,
-S: fras,
-FI: fraasi, lause,
-N: ?.
-
-A natural division of the melodic line, comparable to a sentence of speech.
-
-@aitem{phrasing}
-ES: fraseo,
-I: fraseggio,
-F: phras@'e,
-D: Phrasierung,
-NL: frasering,
-DK: frasering,
-S: fra@-se@-ring,
-FI: fraseeraus, j@"asent@"aminen,
-N: ?.
-
-The clear rendering in musical performance of the @aref{phrase}s of
-the melody.  Phrasing may be indicated by a @aref{slur}.
-
-@aitem{piano}
-ES: piano,
-I: piano,
-F: piano,
-D: piano, leise,
-NL: piano,
-DK: piano,
-S: piano,
-FI, piano, hiljaa,
-N: ?.
-
-@emph{piano} (@b{p}) soft, @emph{pianissimo} (@b{pp}) very soft,
-@emph{mezzopiano} (@b{mp}) medium soft.
-
-@aitem{pitch}
-ES: altura,
-I: altezza,
-F: hauteur,
-D: Tonh@"ohe,
-NL: toonhoogte,
-DK: toneh@o{}jde,
-S: tonh@"ojd,
-FI: s@"avelkorkeus,
-N: ?.
-
-@aitem{pizzicato}
-ES: pizzicato,
-I: pizzicato,
-F: pizzicato,
-D: pizzicato,
-NL: pizzicato, getokkeld,
-DK: pizzicato,
-S: pizzicato,
-FI: pizzicato, n@"app@"aillen,
-N: ?.
-
-Play by plucking the strings.
-
-@aitem{polyphony}
-ES: polifon@'{@dotless{i}}a,
-I: polifonia,
-F: polyphonie,
-D: Polyphonie,
-NL: polyfonie,
-DK: polyfoni,
-S: polyfoni,
-FI: polyfonia, moni@"a@"anisyys,
-N: ?.
-
-Music written in a combination of several simultaneous voices (parts) of a
-more or less pronounced individuality.  @aref{counterpoint}.
-
-@aitem{portato}
-@aref{legato}.
-
-@aitem{presto}
-ES: presto,
-I: presto,
-F: presto,
-D: Presto, Sehr schnell,
-NL: presto, Sehr schnell,
-DK: presto,
-S: presto,
-FI: presto, hyvin nopeasti,
-N: ?.
-
-Very quick, i.e. quicker than @aref{allegro}.  @emph{prestissimo}
-denotes the highest possible degree of speed.
-
-@aitem{Pythagorean comma}
-ES: coma pitag@'orico,
-I: comma pitagorico,
-F: comma pythagoricien,
-D: Pythagor@"aisches Komma,
-NL: komma van Pythagoras,
-DK: pythagor@ae{}isk komma,
-S: pytagoreiskt komma,
-FI: pytagorinen komma,
-N: ?.
-
-A sequence of fifths starting on@w{ }C eventually circles back to@w{ }C,
-but this@w{ }C, obtained by adding 12@w{ }fifths, is
-24@c{ }@aref{cent}s higher than the@w{ }C obtained by adding
-7@w{ }octaves.  The difference between those two pitches is called the
-Pythagorean comma.
-
-@aitem{quadruplet}
-ES: cuatrillo,
-I: quartina,
-F: quartolet,
-D: Quartole,
-NL: kwartool,
-DK: kvartol,
-S: kvartol,
-FI: kvartoli,
-N: ?.
-
-@aref{note value}.
-
-@aitem{quarter note}
-ES: negra,
-I: semiminima, nera,
-F: noire,
-UK: crotchet,
-D: Viertel, Viertelnote,
-NL: kwartnoot,
-DK: fjerdedelsnode,
-S: fj@"ardedelsnot,
-FI: nelj@"annesosanuotti,
-N: ?.
-
-@aref{note value}.
-
-@aitem{quarter rest}
-ES: silencio de negra,
-I: pausa di semiminima,
-F: soupir,
-UK: crotchet rest,
-D: Viertelpause,
-NL: kwart rust,
-DK:@w{ }fjerdedelspause,
-S: fj@"ardedelspaus,
-FI: nelj@"annesosatauko,
-N: ?.
-
-@aref{note value}.
-
-@aitem{quintuplet}
-ES: quintillo,
-I: quintina,
-F: quintolet,
-D: Quintole,
-NL: kwintool,
-DK: kvintol,
-S: kvintol,
-FI: kvintoli,
-N: ?.
-
-@aref{note value}.
-
-@aitem{rallentando}
-ES: rallentando,
-I: rallentando,
-F: rallentando,
-D: rallentando, langsamer werden,
-NL: rallentando,
-DK: rallentando,
-S: rallentando,
-FI. rallerdando, hidastuen,
-N: rallentando.
-
-Abbreviation "rall.".  @aref{ritardando}.
-
-@aitem{relative key}
-ES: relativa,
-I: tonalit@`a relativa,
-F: tonalit@'e relative,
-D: Paralleltonart,
-NL: paralleltoonsoort,
-DK: paralleltoneart,
-S: parallelltonart,
-FI: rinnakkaiss@"avellaji,
-N: ?.
-
-@aref{major} and @aref{minor} @aref{key}
-with the same @aref{key signature}.
-
-@lilypond[notime]
-\property Score.automaticBars = ##f
-%\property Score.TextScript \set #'font-style = #'large
-\notes\relative c' {
-  \key es \major
-  es1_"e flat major" f g as bes c d es
-  \bar "||"
-}
-@end lilypond
-
-@lilypond[notime]
-\property Score.automaticBars = ##f
-%\property Score.TextScript \set #'font-style = #'large
-\notes\relative c' {
-  \key es \major
-  c1_"c minor" d es f g a! b! c \bar "||"
-}
-@end lilypond
-
-@aitem{repeat}
-ES: barra de repetici@'on,
-I: ritornello,
-F: barre de reprise,
-D: Wiederholung,
-NL: herhaling,
-DK: gen@-ta@-gel@-se,
-S: repris,
-FI: toisto,
-N: ?.
-
-@lilypond
-\key g \major
-\time 4/4
-\notes\relative c'' {
-  \repeat volta 2 {g4 g d' d | e e d2 | c4 c b b | a a g2 }
-}
-@end lilypond
-
-@c F: 'pause' if you mean a whole rest, 'silence' if you do not want to
-@c     specify the rest's value.
-
-@aitem{rest}
-ES: silencio,
-I: pausa,
-F: silence,
-D: Pause,
-NL: rust,
-DK: pause,
-S: paus,
-FI: tauko,
-N: ?.
-
-@aref{note value}.
-
-@aitem{rhythm}
-ES: ritmo,
-I: ritmo,
-F: rythme,
-D: Rhythmus,
-NL: ritme,
-DK: rytme,
-S: rytm,
-FI: rytmi,
-N: ?.
-
-(a) Metrical rhythm in which every time value is a multiple or fraction of a
-fixed unit of time, called @aref{beat}, and in which the normal
-@aref{accent} recurs in regular intervals, called
-@aref{measure}.  The basic scheme scheme of time values is called
-@aref{meter}.  (b) Measured rhythm which lacks regularly recurrent
-accent.  In modern notation such music appears as a free alternation of
-different measures.  (c) Free rhythm, i.e., the use of temporal values having
-no common metrical unit (beat).
-
-@aitem{ritardando}
-ES: retardando,
-I: ritardando,
-F: ritardando,
-D: Ritardando, langsamer werden,
-NL: ritardando,
-DK: ritardando,
-S: ritardando,
-FI. ritardando, hidastuen,
-N: ?.
-
-Gradually slackening in speed.  Mostly abbreviated to rit. or ritard.
-
-@aitem{ritenuto}
-ES: ritenuto,
-I: ritenuto,
-F: ritenuto,
-D: Ritenuto,
-NL: ritenuto,
-DK: ritenuto,
-S: ritenuto,
-FI: ritenuto, hidastaen,
-N: ?.
-
-Immediate reduction of speed.
-
-@aitem{scale}
-ES: escala,
-I: scala,
-F: gamme,
-D: Tonleiter,
-NL: toonladder,
-DK: Skala,
-S: skala,
-FI: asteikko, s@"avelasteikko,
-N: ?.
-
-@aref{diatonic scale}.
-
-@aitem{scale degree}
-ES: grados de la escala,
-I: grado della scala,
-F: degr@'e [de la gamme],
-D: Tonleiterstufe,
-NL: trap [van de toonladder],
-DK: skalatrin,
-S: skalsteg (?),
-FI: s@"avelaste, asteikon s@"avel,
-N: ?.
-
-Names and symbols used in harmonic analysis to denote tones of the scale as
-roots of chords.  The most important are degrees I = tonic (T), IV =
-sub@-do@-mi@-nant (S) and V = dominant (D).
-
-@lilypond[notime]
-\property Score.automaticBars = ##f
-%\property Score.LyricText \set #'font-style = #'large
-%\property Lyrics.minVerticalAlign = #8
-\addlyrics
-\context Staff \notes\relative c' {
-  c1 d e f g a b c
-}
-\context LyricsVoice \lyrics {
-  << { I II III IV V VI VII I }
-    { T "" ""  S  D } >>
-}
-@end lilypond
-
-@aref{functional harmony}.
-
-@aitem{score}
-ES: partitura,
-I: partitura,
-F: partition,
-D: Partitur (full score), Klavierauszug (vocal score)
-NL: partituur,
-DK: partitur,
-S: partitur,
-FI: partituuri,
-N: ?.
-
-A copy of orchestral, choral or chamber music showing what each instrument is
-to play, each voice to sing, having each part arranged one underneath the
-other on different staves @aref{staff}.
-
-@aitem{second}
-ES: segunda,
-I: secunda,
-F: seconde,
-D: Sekund,
-NL: secunde,
-DK: sekund,
-S: sekund,
-FI: sekunti,
-N: ?.
-
-The @aref{interval} between two neigbouring tones of a scale.  A
-@aref{diatonic scale} consists of alternating
-@aref{semitone}s and @aref{whole tone}s, hence the size
-of a se@-cond depends on the scale degrees in question.
-
-@aitem{semitone}
-ES: semitono,
-I: semitono,
-F: demi-ton,
-D: Halbton,
-NL: halve toon,
-DK: halvtone,
-S: halvton,
-FI: puolis@"avel,
-N: ?.
-
-The @aref{interval} of a minor second.  The (usually) smallest
-interval in European composed music.  The interval between two neighbouring
-tones on the piano keyboard -- including black and white keys -- is a
-semitone.  An octave may be divided into 12@w{ }semitones.
-@aref{interval}, @aref{chromatic scale}.
-
-@lilypond[notime]
-\property Score.automaticBars = ##f
-\notes\relative c'' { g1 gis s a bes s b! c }
-@end lilypond
-
-@aitem{seventh}
-ES: s@'eptima,
-I: settima,
-F: septi@`eme,
-D: Septime,
-NL: septiem,
-DK: septim,
-S: septim,
-FI: septimi,
-N: ?.
-
-@aref{interval}.
-
-@aitem{sextuplet, sextolet}
-I: sestina,
-F: sextolet,
-D: Sextole,
-NL: sextool,
-DK: sekstol,
-S: sextol,
-FI: sekstoli,
-N: ?.
-
-@aref{note value}.
-
-@aitem{sharp}
-ES: sostenido,
-I: diesis,
-F: di@`ese,
-D: Kreuz,
-NL: kruis,
-DK: kryds,
-S: korsf@"ortecken,
-FI: korotusmerkki,
-N: ?.
-
-@aref{accidental}.
-
-@aitem{short appoggiatura}
-@aref{appoggiatura}.
-
-@aitem{sixteenth note}
-ES: semicorchea,
-I: semicroma,
-F: double croche,
-UK: semiquaver,
-D: Sechzehntel, Sechzehntelnote,
-NL: zes@-ti@-ende noot,
-DK: sekstendedelsnode,
-S: sextondelsnot,
-FI: kuudestoistaosanuotti,
-N: ?.
-
-@aref{note value}.
-
-@aitem{sixteenth rest}
-ES: silencia de semicorchea,
-I: pausa di semicroma,
-F: quart de soupir,
-UK: semiquaver rest,
-D: Sechzehntelpause,
-NL: zestiende rust,
-DK: sekstendedelspause,
-S: sextondelspaus,
-FI: kuudesosatauko,
-N: ?.
-
-@aref{note value}.
-
-@aitem{sixth}
-ES: sexta,
-I: sesta,
-F: sixte,
-D: Sexte,
-NL: sext,
-DK: sekst,
-S: sext,
-FI: seksti,
-N: ?.
-
-@aref{interval}.
-
-@aitem{sixty-fourth note}
-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,
-S: sextiofj@"ardedelsnot,
-FI: kuudeskymmenesnelj@"asosanuotti,
-N: ?.
-
-@aref{note value}.
-
-@aitem{sixty-fourth rest}
-ES: silencia de semifusa,
-I: pausa di semibiscroma,
-F: seizi@`eme de soupir,
-UK: hemidemisemiquaver rest,
-D: Vierundsechzigstelpause,
-NL: vierenzestigste rust,
-DK: fi@-re@-og@-tred@-sinds@-ty@-ven@-de@-dels@-pau@-se,
-S: sextiofj@"ardedelspaus,
-FI: kuudeskymmenesnelj@"asosatauko,
-N: ?.
-
-@aref{note value}.
-
-@aitem{slur}
-ES: ligadura,
-I: legatura (di portamento or espressiva),
-F: liaison, coul@'e,
-D: Bogen, Legatobogen, Phrasierungsbogen,
-NL: fraseringsboog, legatoboog, streekboog,
-DK: legatobue, fraseringsbue,
-S: b@aa{}ge,
-FI: kaari,
-N: ?.
-
-A slur above or below a group of notes indicates that they are to be played
-@aref{legato}, e.g., with one stroke of the violin bow or with one
-breath in singing.
-
-@aitem{solmization}
-I: solmisazione,
-F: solmisation,
-D: Solmisation,
-NL: solmizatie,
-DK: solmisation,
-S: solmisation,
-FI: suhteelliset laulunimet,
-N: ?.
-
-General term for systems of designating the degrees of the
-@aref{scale}, not by letters, but by syllables (@emph{do}
-(@emph{ut}), @emph{re}, @emph{mi}, @emph{fa}, @emph{sol}, @emph{la}, @emph{si}
-(@emph{ti})).  @aref{scale degree}.
-
-@aitem{sonata}
-ES: sonata,
-I: sonata,
-F: sonate,
-D: Sonate,
-NL: sonate,
-DK: sonate,
-S: sonat,
-FI: sonaatti,
-N: ?.
-
-In its present-day meaning a sonata denotes an instrumental composition for
-piano or for some other instrument with piano accompaniment, which consists of
-three or four independant pieces, called movements.
-
-@aitem{sonata form}
-ES: forma sonata,
-I: forma sonata,
-F: [en] forme de sonate,
-D: Sonatenform,
-NL: hoofdvorm, sonatevorm,
-DK: sonateform,
-S: sonatform,
-FI: sonaattimuoto,
-N: ?.
-
-A form used frequently for single movements of the @aref{sonata},
-@aref{symphony}, quartet, etc.  A movement written in sonata form
-falls into three sections called @emph{exposition}, @emph{development} and
-@emph{recapitulation}.  In the exposition the composer introduces his musical
-ideas, consisting of a number of themes; in the development section he
-"develops" this material, and in the recapitulation he repeats the exposition,
-with certain modifications, however.  The exposition contains a number of themes
-which fall into two groups, often called first and second subject.  Other
-melodies occurring in each group are considered as continuations of these
-two.  The second theme is in another key, normally in the key of the
-@aref{dominant} if the @aref{tonic} is
-@aref{major}, and in the @aref{relative key} if the
-tonic is @aref{minor}.
-
-@aitem{soprano}
-ES: soprano,
-I: soprano,
-F: soprano,
-D: Sopran,
-NL: sopraan,
-DK: sopran,
-S: sopran,
-FI: sopraano, korkea nais@"a@"ani,
-N: ?.
-
-The highest female voice.
-
-@aitem{staccato}
-ES: staccato,
-I: staccato,
-F: staccato, piqu@'e, d@'etach@'e,
-D: staccato,
-NL: staccato,
-DK: staccato,
-S: staccato,
-FI: staccato, lyhyesti, ter@"av@"asti,
-N: ?.
-
-Playing the note(s) short.  Staccato is indicated by a dot above or below the
-notehead.
-
-@lilypond
-\key d \major
-\time 4/4
-\notes\relative c'' {
-  \partial 8 a8 |
-  d4-\staccato cis-\staccato b-\staccato cis-\staccato |
-  d2. \bar "||"
-}
-@end lilypond
-
-@aitem{staff}
-ES: pentagrama,
-I: pentagramma, rigo (musicale),
-F: port@'ee,
-D: Notenzeile,
-NL: (noten)balk, partij,
-DK: nodesystem,
-S: notsystem,
-FI: nuottiviivasto,
-N: ?.
-
-pl. staves.  A series of (normally@w{ }5) horizontal lines upon and between
-which the musical notes are written, thus indicating (in connection
-with a @aref{clef}) their pitch.  Staves for
-@aref{percussion} instruments may have fewer lines.
-
-@aitem{stem}
-ES: plica,
-I: gamba,
-F: queue,
-D: Hals, Notenhals, Stiel,
-NL: stok,
-DK: hals,
-S: skaft,
-FI: nuottipalkki,
-N: ?.
-
-Vertical line above or below a @aref{note head} shorter than a
-whole note.  @aref{beam}.
-
-@lilypond[notime]
-\property Score.autoBeaming = ##f
-\property Score.automaticBars = ##f
-%\property Score.TextScript \set #'font-style = #'large
-\notes\relative c'' {
-  g2_"1/2" g' s16
-  g,4_"1/4" g' s16
-  g,8_"1/8" g' s16
-  g,16_"1/16" g' s16
-}
-@end lilypond
-
-@aitem{strings}
-ES: arcos, cuerdas,
-I: archi,
-F: cordes,
-D: Streicher,
-NL: strijkers,
-DK: strygere,
-S: str@aa{}kar,
-FI: jouset,
-N: ?.
-
-A family of stringed musical instruments played with a bow.  Strings commonly
-used in a symphony orchestra are violin, viola, violoncello, and double bass.
-
-@aitem{strong beat}
-ES: tiempo fuerte,
-I: tempo forte,
-F: temps fort,
-D: betonter Taktteil oder Taktschlag,
-NL: thesis,
-D: betonet taktslag,
-S: betonat taktslag,
-FI: tahdin vahva isku,
-N: ?.
-
-@aref{beat}, @aref{accent}, @aref{measure},
-@aref{rhythm}.
-
-@aitem{subdominant}
-ES: subdominante,
-I: sottodominante,
-F: sous-dominante,
-D: Subdominante,
-NL: subdominant,
-DK: subdominant,
-S: subdominant,
-FI: subdominantti, alidominantti,
-N: ?.
-
-The fourth @aref{scale degree}.  @aref{functional
-harmony}.
-
-@aitem{submediant}
-ES: superdominante,
-I: sopratonica,
-F: sous-m@'ediante,
-D: Submediante,
-NL: submediant,
-DK: Submediant,
-S: submediant,
-FI: alikeskis@"avel,
-N: ?.
-
-The sixth @aref{scale degree}.
-
-@aitem{subtonic}
-ES: sensible,
-I: sottotonica,
-F: sous-tonique,
-D: Subtonika,
-NL: subtonica,
-DK: Subtonika,
-S: subtonika,
-FI: subtoonika, alitoonika,
-N: ?.
-
-The seventh @aref{scale degree}.
-
-@aitem{superdominant}
-ES: superdominante,
-I: sopradominante,
-F: sus-dominante,
-D: Superdominante,
-NL: superdominant,
-DK: superdominant,
-S: superdominant,
-FI: ylidominantti,
-N: ?.
-
-The sixth @aref{scale degree}.
-
-@aitem{supertonic}
-ES: supert@'onica,
-I: sopratonica,
-F: sus-tonique,
-D: Supertonika,
-NL: supertonica,
-DK: supertonika,
-S: supertonika,
-FI: ylitoonika,
-N: ?.
-
-The second @aref{scale degree}.
-
-@aitem{symphony}
-ES: sinfon@'{@dotless{i}}a,
-I: sinfonia,
-F: symphonie,
-D: Sinfonie, Symphonie,
-NL: symfonie,
-DK: symfoni,
-S: symfoni,
-FI: sinfonia,
-N: ?.
-
-A symphony may be defined as a @aref{sonata} for orchestra.
-
-@aitem{syncopation}
-ES: sincopado,
-I: sincope,
-F: syncope,
-D: Synkope,
-NL: syncope,
-DK: synkope,
-S: synkop,
-FI: synkooppi,
-N: ?.
-
-Any deliberate upsetting of the normal pulse of @aref{meter},
-@aref{accent} and @aref{rhythm}.  Our system of musical
-rhythm rests upon the grouping of equal beats into groups of two or three,
-with a regularly recurrent accent on the first beat of each group.  Any
-deviation from this scheme is felt as a disturbance or contradiction between
-the underlaying (normal) pulse and the actual (abnormal) rhythm.
-
-@lilypond
-\time 4/4
-\notes\relative c' {
-  \partial 4
-  d8 dis |
-  e c'4 e,8 c'4 e,8 c' ( |  c2)
-}
-@end lilypond
-
-@aitemii{syntonic comma,dydimic comma}
-I: comma sintonico (o didimico),
-F: comma syntonique,
-D: syntonisches Komma,
-NL: syntonische komma,
-DK: syntonisk komma,
-S: syntoniskt komma,
-FI: syntoninen komma, terssin taajuusero luonnollisessa ja Pytagorisessa viritysj@"arjestelm@"ass@"a,
-N: ?.
-
-Difference between the natural third and the third obtained by Pythagorean
-tuning (@aref{Pythagorean comma}), equal to 22@w{ }cents.
-
-@aitem{system}
-I: accollatura,
-F: syst@`eme,
-D: Notensystem,
-NL: systeem,
-DK: system,
-S: system,
-FI: nuottij@"arjestelm@"a,
-N: ?.
-
-The collection of staves @aref{staff}, two or more, as used for
-writing down of keyboard, chamber, choral, or orchestral music.
-
-@aitem{temperament}
-ES: temperamento,
-I: temperamento,
-F: temp@'erament,
-D: Stimmung, Temperatur,
-NL: stemming, temperatuur,
-DK: temperatur,
-S: temperatur,
-FI: viritysj@"arjestelm@"a,
-N: ?.
-
-Systems of tuning in which the intervals deviate from the acoustically pure
-intervals.  @aref{meantone temperament}, @aref{equal
-temperament}.
-
-@aitem{tempo indication}
-ES: indicaci@'on de tempo,
-I: indicazione di tempo,
-F: indication de temps,
-D: Zeitma@ss{}, Tempobezeichnung,
-NL: tempo aanduiding,
-DK: tempobetegelse,
-S: tempobeteckning,
-FI: tempomerkint@"a,
-N: ?.
-
-The rate of speed of a composition or a section thereof, ranging from the
-slowest to the quickest, as is indicated by tempo marks as
-@aref{largo}, @aref{adagio}, @aref{andante},
-@aref{allegro}, and @aref{presto}.
-
-@aitem{tenor}
-ES: tenor,
-I: tenore,
-F: t@'enor,
-D: Tenor,
-NL: tenor,
-DK: tenor,
-S: tenor,
-FI: tenori, korkea mies@"a@"ani,
-N: ?.
-
-The highest voice of men (apart from @aref{counter tenor}).
-
-@aitem{tenth}
-ES: d@'ecima,
-I: decima,
-F: dixi@`eme,
-D: Dezime,
-NL: deciem,
-DK: decim,
-S: decima,
-FI: desimi,
-N: ?.
-
-@aref{note value}.
-
-@aitem{third}
-ES: tercera,
-I: terza,
-F: tierce,
-D: Terz,
-NL: terts,
-DK: terts,
-S: ters,
-FI: terssi,
-N: ?.
-
-@aref{interval}.
-
-@aitem{thirty-second note}
-ES: fusa,
-I: biscroma,
-F: triple croche,
-UK: demisemiquaver,
-D: Zweiunddreissigstel, Zweiunddreissigstelnote,
-NL: twee-endertig@-ste noot,
-DK: toogtredivtedelsnode,
-S: trettiotv@aa{}ondelsnot,
-FI: kolmanneskymmeneskahdesosanuotti,
-N: ?.
-
-@aref{note value}.
-
-@aitem{thirty-second rest}
-ES: silencio de fusa,
-I: pausa di biscroma,
-F: huiti@`eme de soupir,
-UK: demisemiquaver rest,
-D: Zweiunddreissigstel@-pause,
-NL: 32e rust,
-DK: toogtredivtedelspause,
-S: trettiotv@aa{}ondelspaus,
-FI: kolmanneskymmeneskahdesosatauko,
-N: ?.
-
-@aref{note value}.
-
-@aitemii{thorough bass,figured bass}
-ES: bajo cifrado,
-I: basso continuo, basso numerato,
-F: basse chiffr@'ee,
-D: Generalbass, bezifferter Bass,
-NL: basso continuo, becijferde bas
-DK: generalbas,
-S: generalbas,
-FI: kenraalibasso, numeroitu basso,
-N: ?.
-
-A method of indicating an accompaniment part by the bass notes only, together
-with figures designating the chief @aref{interval}s and
-@aref{chord}s to be played above the bass notes.
-
-@lilypond
-\context GrandStaff <<
-  \context Staff = lh \notes\relative c'' {
-    \time 4/4
-    \key es \major
-    \clef treble
-    << \context Voice = rha {
-        \stemUp
-        es4 d c bes | bes }
-      \context Voice = rhb {
-        \stemDown
-        < bes g >8 as < as f > g < g es > f < d f > es | < g es >4 }
-    >>
-  }
-  \addlyrics
-    \context Staff = rh \notes\relative c' {
-    \clef bass
-    \key es \major
-    es8 c d bes c as bes16 as g f | es4
-  }
-  \context LyricsVoice \lyrics {
-    \property LyricsVoice . VerticalAlign \override #'threshold = #'(6 . 12)
-    << { "" "6" "" "4" "" "6" "" "" "6" "4" }
-      { "" ""  "" "2" "" ""  "" "" ""  "2" } >>
-  }
->>
-@end lilypond
-
-@aitemii{tie,bind}
-ES: ligadura de prolongaci@'on,
-I: legatura (di valore),
-F: liaison,
-D: Haltebogen,
-NL: overbinding, bindingsboog,
-DK: bindebue,
-S: bindeb@aa{}ge, @"overbindning,
-FI: sitominen,
-N: ?.
-
-A curved line, identical in appearance with the @aref{slur}, which
-connects two succesive notes of the same pitch, and which has the function of
-uniting them into a single sound equal to the combined durations.
-
-@lilypond[notime]
-\property Score.automaticBars = ##f
-\notes\relative c'' { g2 ~ g4. }
-@end lilypond
-
-@aitem{time signature}
-ES: cifra indicadora de comp@'as,
-I: segni di tempo,
-F: chiffrage (chiffres indicateurs), signe de valeur,
-D: Taktangabe, Angabe der Taktart,
-NL: maatsoort,
-DK: taktangivelse,
-S: taktartssignatur,
-FI: tahtiosoitus,
-N: ?.
-
-@aref{meter}.
-
-@aitem{tone}
-ES: sonido,
-I: suono,
-F: ton,
-D: Ton,
-NL: toon,
-DK: tone,
-S: ton,
-FI: @"a@"ani,
-N: ?.
-
-A sound of definite pitch and duration, as distinct from @emph{noise}.
-Tone is a primary building material of music.
-Music from the 20th century may be based on non tone related sounds.
-
-@aitem{tonic}
-ES: tonica,
-I: tonica,
-F: tonique,
-D: Tonika,
-NL: tonica,
-DK: tonika,
-S: tonika,
-FI: toonika,
-N: ?.
-
-The first @aref{scale degree}.
-@aref{functional harmony}.
-
-@aitem{transposition}
-ES: transposici@'on,
-I: trasposizione,
-F: transposition,
-D: Transposition,
-NL: transpositie,
-DK: transposition,
-S: transponering,
-FI: transponointi,
-N: ?.
-
-Shifting a melody up or down in pitch, while keeping the same
-relative pitches.
-
-@lilypond
-\context Staff {
-  \time 3/4
-  \notes\relative c'' {
-    \key g \major
-    d4 g,8 a b c | d4 g, g | e' c8 d e fis | g4 g, g \bar "|."
-  }
-}
-@end lilypond
-
-@lilypond
-\context Staff {
-  \time 3/4
-  \transpose c bes \relative c'' {
-    \key g \major
-    d4 g,8 a b c | d4 g, g | e' c8 d e fis | g4 g, g \bar "|."
-  }
-}
-@end lilypond
-
-@aitem{treble clef}
-ES: clave de sol,
-I: chiave di violino,
-F: cl@'e de sol,
-D: Violinschl@"ussel, Sopranschl@"ussel,
-NL: viool sleutel,
-DK:@w{ }diskantn@o{}gle,
-S: diskantklav,
-FI: diskanttiavain,
-N: ?.
-
-@aref{G clef}.
-
-@aitem{tremolo}
-ES: tremolo,
-I: tremolo,
-F: tr@'emolo,
-D: Tremolo,
-NL: tremolo,
-DK: tremolo,
-S: tremolo,
-FI: tremolo,
-N: ?.
-
-On stringed instruments (@aref{strings}) the quick reiteration of
-the same tone, produced by a rapid up-and-down movement movement of the bow
-(a).  The term is also used for the rapid alternation (b) between two notes of
-a @aref{chord}, usually in the distance of a third
-(@aref{interval}).
-
-@lilypond[notime]
-\property Score.automaticBars = ##f
-%\property Score.TextScript \set #'font-style = #'large
-\notes\relative c' {
-  e2:32_"a"
-  f:32 [ e8:16 f:16 g:16 a:16 ] s4
-  \repeat "tremolo" 8 { e32_"b" g }
-}
-@end lilypond
-
-@aitem{triad}
-ES: tr@'{@dotless{i}}ada,
-I: triade,
-F: triade, accord parfait, accord de trois sons,
-D: Dreiklang,
-NL: drieklank,
-DK: treklang,
-S: treklang,
-FI: kolmisointu,
-N: ?.
-
-@aref{chord}.
-
-@aitemii{trill,shake}
-ES: trino,
-I: trillo,
-F: trille, tremblement, battement (cadence),
-D: Triller,
-NL: triller,
-DK: trille,
-S: drill,
-FI: trilli,
-N: ?.
-
-@aref{ornament}.
-
-@aitem{triple meter}
-ES: comp@'as compuesto,
-I: tempo ternario,
-F: mesure ternaire,
-D: in drei,
-NL: driedelige maatsoort,
-DK: tredelt takt,
-S: tretakt,
-FI: kolmijakoinen,
-N: ?.
-
-@aref{meter}.
-
-@aitem{triplet}
-ES: tresillo,
-I: terzina,
-F: triolet,
-D: Triole,
-NL: triool,
-DK: triol,
-S: triol,
-FI: trioli,
-N: ?.
-
-@aref{note value}.
-
-@aitem{tritone}
-ES: tr@'{@dotless{i}}tono,
-I: tritono,
-F: triton,
-D: Tritonus,
-NL: tritoon,
-DK: tritonus,
-S: tritonus,
-FI: tritonus,
-N: ?.
-
-@aref{interval}.
-
-@aitem{tuning fork}
-ES: diapas@'on,
-I: diapason, corista,
-F: diapason,
-D: Stimmgabel,
-NL: stemvork,
-DK: stemmegaffel,
-S: st@"amgaffel,
-FI: viritysavain,
-N: ?.
-
-A two-pronged piece of steel used to indicate absolute pitch.  Tuning forks
-give the international pitch for the tone @emph{a} (440 vibrations per second.)
-
-@aitemii{turn,gruppetto}
-ES: grupo,
-I: gruppetto,
-F: grupetto,
-D: Doppelschlag,
-NL: dubbelslag,
-DK: dobbeltslag,
-S: dubbelslag,
-FI: korukuvio,
-N: ?.
-
-???
-
-@aitem{unison}
-ES: un@'{@dotless{i}}sono,
-I: unisono,
-F: unisson,
-D: unisono,
-NL: unisono,
-DK: unison,
-S: unison,
-FI: unisono, yksi@"a@"anisesti,
-N: ?.
-
-Playing of the same notes or the same melody by various instruments (voices)
-or by the whole orchestra (choir), either at exactly the same pitch or in a
-different octave.
-
-@aitem{upbeat}
-ES: entrada anacr@'usica,
-I: anacrusi,
-F: anacrouse, lev@'ee,
-D: Auftakt,
-NL: opmaat,
-DK: optakt,
-S: upptakt,
-FI: kohotahti,
-N: ?.
-
-Initial note(s) of a melody occurring before the first bar
-line.  @aref{measure}, @aref{meter}.
-
-@lilypond
-\key f \major
-\time 4/4
-\notes\relative c' {
-  \partial 4 f4 | bes4. a8 bes4 c |
-  bes( a) g f | bes4. a8 bes4 c | f,2. \bar "||" }
-@end lilypond
-
-@aitem{voice}
-ES: voz,
-I: voce,
-F: voix,
-D: Stimme,
-NL: stem,
-DK: stemme,
-S: st@"amma,
-FI: @"a@"ani, laulu@"a@"ani,
-N: ?,
-
-1. Human voices: @aref{soprano}, @aref{mezzo-soprano},
-@aref{contralto}, @aref{tenor},
-@aref{baritone}, @aref{bass}.
-2. A melodic layer or part of a polyphonic composition.
-
-@aitem{weak beat}
-ES: tiempo d@'ebil,
-I: tempo debole, arsi,
-F: temps faible,
-D: unbetonter Taktteil oder Taktschlag,
-NL: arsis,
-DK: ubetonet taktslag,
-S: obetonat taktslag,
-FI: tahdin heikko isku,
-N: ?.
-
-@aref{beat}, @aref{measure}, @aref{rhythm}.
-
-@aitem{whole note}
-ES: redonda,
-I: semibreve,
-F: ronde,
-UK: semibreve,
-D: Ganze, ganze Note,
-NL: hele noot,
-DK: helnode,
-S: helnot,
-FI: kokonuotti,
-N: ?.
-
-@aref{note value}.
-
-@aitem{whole rest}
-ES: silencio de redonda,
-I: pausa di semibreve,
-F: pause,
-UK: semibreve rest,
-D: ganze Pause, ganztaktige Pause,
-NL: hele rust,
-DK: helnodespause,
-S: helpaus,
-FI: kokotauko,
-N: ?.
-
-@aref{note value}.
-
-@aitem{whole tone}
-ES: tono,
-I: tono intero,
-F: ton entier,
-D: Ganzton,
-NL: hele toon,
-DK: heltone,
-S: helton,
-FI: kokoaskel,
-N: ?.
-
-The @aref{interval} of a major second.  The interval between two
-tones on the piano keyboard with exactly one key between them -- including
-black and white keys -- is a whole tone.
-
-@aitem{woodwind}
-ES: maderas,
-I: legni,
-F: les bois,
-D: Holzbl@"aser,
-NL: houtblazers,
-DK tr@ae{}bl@ae{}sere,
-S: tr@"abl@aa{}sare,
-FI: puupuhaltimet,
-N: ?.
-
-A family of blown wooden musical instruments.  Today some of these instruments
-are actually made from metal.  The woodwind instruments commonly used in a
-symphony orchestra are flute, oboe, clarinet, saxophone, and bassoon.
-
-@end table
-
-@page
-
-@table @strong
-@item DURATION NAMES, NOTES AND RESTS
-@end table
-
-@multitable @columnfractions .1 .1 .1 .1 .1 .1 .1 .1 .1 .1
-
-@item @tab @strong{UK} @tab @strong{I} @tab @strong{F} @tab @strong{D} @tab
-@strong{NL} @tab @strong{DK} @tab @strong{S} @tab @strong{FI} @tab @strong{N}
-
-@item
-
-@item @strong{longa} @tab longa @tab longa @tab longa @tab Longa @tab longa
-@tab longa @tab longa @tab longa @tab longa
-
-@item
-
-@item @strong{breve} @tab breve @tab breve @tab br@`eve @tab Brevis @tab
-brevis @tab brevis @tab brevis @tab brevis @tab brevis
-
-@item
-
-@item @strong{whole} @tab semi@-breve @tab semi@-breve @tab ronde @tab
-Ganze @tab hele @tab hel @tab hel @tab kokonuotti/-tauko @tab
-
-@item
-
-@item @strong{half} @tab minim @tab minima @tab blanche @tab Halbe @tab
-halve @tab halv @tab halv @tab puoli- @tab
-
-@item
-
-@item @strong{quarter} @tab crotchet @tab semi@-minima @tab noire @tab
-Viertel @tab kwart @tab fjerde@-del @tab fj@"arde@-del @tab nelj@"annes- @tab
-
-@item
-
-@item @strong{eighth} @tab quaver @tab croma @tab croche @tab Achtel @tab
-achtste @tab ottende@-del @tab @aa{}tton@-del @tab kahdeksasosa- @tab
-
-@item
-
-@item @strong{sixteenth} @tab semi@-quaver @tab semi@-croma @tab double croche
-@tab Sech@-zehntel @tab zes@-ti@-ende @tab seks@-tende@-del @tab sexton@-del
-@tab kuudestoistaosa- @tab
-
-@item
-
-@item @strong{thirty-second} @tab demi@-semi@-quaver @tab bis@-croma @tab
-triple croche @tab Zwei@-und@-drei@-@ss{}ig@-stel @tab twee-en@-dertig@-ste
-@tab toog@-tredivte-del @tab trettio@-tv@aa{}on@-del @tab kolmaskymmeneskahdesosa- @tab
-
-@item
-
-@item @strong{sixty-fourth} @tab hemi@-demi@-semi@-quaver @tab
-semi@-bis@-croma @tab qua@-druple croche @tab Vier@-und@-sechzig@-stel @tab
-vier@-en@-zestig@-ste @tab fireog@-tred@-sinds@-ty@-ven@-de@-del @tab
-sextio@-fj@"arde@-del @tab kuudeskymmenesnelj@"asosa- @tab
-
-@end multitable
-@c @item @tab @tab @tab @tab @tab @tab @tab @tab @tab
-
-@page
-
-@table @strong
-@item PITCH NAMES
-@end table
-
-@multitable @columnfractions .111 .111 .111 .111 .111 .111 .111 .111 .111 
-
-@item @tab @strong{I} @tab @strong{F} @tab @strong{D} @tab
-@strong{NL} @tab @strong{DK} @tab @strong{S} @tab @strong{FI} 
-@tab @strong{N}
-
-@item
-
-@item @strong{c} @tab do @tab ut @tab C @tab c @tab c @tab c @tab C @tab c
-
-@item
-
-@item @strong{c-sharp} @tab do diesis @tab ut di@`ese @tab Cis @tab cis @tab
-cis @tab cis @tab Cis @tab cis
-
-@item
-
-@item @strong{d-flat} @tab re bemolle @tab r@'e b@'emol @tab Des @tab des @tab
-des @tab des @tab Des @tab des
-
-@item
-
-@item @strong{d} @tab re @tab r@'e @tab D @tab d @tab d @tab d @tab D @tab d
-
-@item
-
-@item @strong{e} @tab mi @tab mi @tab E @tab e @tab e @tab e @tab E @tab e
-
-@item
-
-@item @strong{f} @tab fa @tab fa @tab F @tab f @tab f @tab f @tab F @tab f
-
-@item
-
-@item @strong{g} @tab sol @tab sol @tab G @tab g @tab g @tab g @tab G @tab g
-
-@item
-
-@item @strong{a-flat} @tab la bemolle @tab la b@'emol @tab As @tab as @tab as
-@tab as @tab As @tab as
-
-@item
-
-@item @strong{a} @tab la @tab la @tab A @tab a @tab a @tab a @tab A @tab a
-
-@item
-
-@item @strong{a-sharp} @tab la diesis @tab la di@`ese @tab Ais @tab ais @tab
-ais @tab ais @tab Ais @tab ais
-
-@item
-
-@item @strong{b-flat} @tab si bemolle @tab si b@'emol @tab B @tab bes @tab b
-@tab b @tab B @tab b
-
-@item
-
-@item @strong{b} @tab si @tab si @tab H @tab b @tab h @tab h @tab H @tab h
-
-@end multitable
-
-@
-
-@table @strong
-
-@item ---------------------
-
-@
-
-@item Literature used
-The Harvard Dictionary of Music, London 1944.  Many more or less literal
-quotes from its articles have been included into the item explanation texts.
-
-Hugo Riemanns Musiklexicon, Berlin 1929.
-
-Polyglottes W@"orterbuch der musikalischen Terminologie, Kassel 1980
-Oxford Advanced Learner's Dictionary of Current English, Third Edition 1974.
-
-@end table
-
-@bye
diff --git a/Documentation/user/preface.itely b/Documentation/user/preface.itely
deleted file mode 100644
index 6e5647a982..0000000000
--- a/Documentation/user/preface.itely
+++ /dev/null
@@ -1,118 +0,0 @@
-@comment @c -*-texinfo-*-
-
-
-@node Preface
-@unnumbered Preface
-
-@menu
-* Preface to version 2.0::
-* Preface to version 1.8::
-* Preface to version 1.6::
-@end menu
-
-
-@node Preface to version 2.0
-@unnumberedsec Preface to version 2.0
-
-
-Due to personal circumstances, Han-Wen was able to do a lot more on
-LilyPond during the past months. A testament to that is the quick
-release of version 2.0, less than two months after 1.8. We have taken
-the opportunity to make a few radical changes to the syntax: note
-attributes, like articulation, dynamics and fingerings are now
-post-fix exclusively. This makes entering scores easier: you never
-have to think about the order of the attributes.  With version 2.0, we
-have a new and improved platform for working on notation and
-typography features for coming versions,
- 
-Due to other personal circumstances, Jan was not able to do more than
-packaging for Cygwin.  The good news is that we now have a nearly
-fool-proof installation for Windows.  He will be back for serious
-hacking in 2.1.
-
-
-Han-Wen and Jan
-
-Utrecht/Eindhoven, The Netherlands, September 2003.
-
-@node Preface to version 1.8
-@unnumberedsec Preface to version 1.8
-
-If you are familiar with LilyPond version 1.6, then version 1.8 will
-no offer no big surprises. The only conspicuous change is in the way
-that formatted text is entered. There is now a new syntax that is more
-friendly, more versatile and extensible. We hope you like it.  In
-general, development on version 1.8 has been focused on improving the
-design of various internal mechanisms.  This includes chord name
-formatting and entry code, music expression storage, and integration
-between LilyPond and Scheme.  These changes may not be evident
-directly, but they make the program more robust and more flexible,
-which translates into fewer bugs and more adjustment options.
-
-Special thanks for version 1.8 go out to Juergen Reuter for lots of
-work on the ancient notation engine, and to Amy Zapf for pushing us to
-rewrite the chord name support.
-
-@c TODO [wie meer?]  
-
-Han-Wen and Jan, 
-
-Utrecht/Eindhoven, The Netherlands, April/May 2003.
-
-@node Preface to version 1.6
-@unnumberedsec Preface to version 1.6
-
-It must have been during a rehearsal of the EJE (Eindhoven Youth
-Orchestra), somewhere in 1995 that Jan, one of the cranked violists
-told Han-Wen, one of the distorted French horn players, about the
-grand new project he was working on.  It was an automated system for
-printing music (to be precise, it was MPP, a preprocessor for
-MusiXTeX).  As it happened, Han-Wen accidentally wanted to print out
-some parts from a score, so he started looking at the software, and he
-quickly got hooked.  It was decided that MPP was a dead end. After
-lots of philosophizing and heated e-mail exchanges Han-Wen started
-LilyPond in 1996.  This time, Jan got sucked into Han-Wen's new
-project.
-
-In some ways, developing a computer program is like learning to play
-an instrument. In the beginning, discovering how it works is fun, and
-the things you cannot do are challenging. After the initial excitement,
-you have to practice and practice. Scales and studies can be dull, and
-if you are not motivated by others---teachers, conductors or
-audience---it is very tempting to give up. You continue, and gradually
-playing becomes a part of your life. Some days it comes naturally, and
-it is wonderful, and on some days it just does not work, but you keep
-playing, day after day.
-
-Like making music, working on LilyPond is can be dull work, and on
-some days it feels like plodding through a morass of
-bugs. Nevertheless, it has become a part of our life, and we keep
-doing it. Probably the most important motivation is that our program
-actually does something useful for people. When we browse around the
-net we find many people that use LilyPond, and produce impressive
-pieces of sheet music.  Seeing that still feels unreal, but in a very
-pleasant way.
-
-Our users not only give us good vibes by using our program, many of
-them also help us by giving suggestions and sending bugreports. So
-first and foremost, we would like to thank all users that sent us
-bugreports, gave suggestions or contributed in any other way to
-LilyPond.
-
-We would also like to thank the following people: Mats Bengtsson for
-the incountable number of questions he answered on the mailing list,
-and Rune Zedeler for his energy in finding and fixing bugs.  Nicola
-Bernardini for inviting us to his workshop on music publishing, which
-was truly a masterclass, and Heinz Stolba and James Ingram for
-teaching us there. 
-
-Playing and printing music is more than nice analogy. Programming
-together is a lot of fun, and helping people is deeply satisfying, but
-ultimately, working on LilyPond is a way to express our deep love for
-music. May it help you create lots of beautiful music!
-
-Han-Wen and Jan
-
-Utrecht/Eindhoven, The Netherlands, July 2002.
-
-
diff --git a/Documentation/user/refman.itely b/Documentation/user/refman.itely
deleted file mode 100644
index 7fcb4c0991..0000000000
--- a/Documentation/user/refman.itely
+++ /dev/null
@@ -1,8985 +0,0 @@
-@c Note: -*-texinfo-*-
-@c
-@c A menu is needed before every deeper *section nesting of @node's; run
-@c     M-x texinfo-all-menus-update
-@c to automagically fill in these menus before saving changes
-@c
-@c FIXME: singular vs. plural:  Beams/Beam
-
-
-@node Notation manual
-@chapter Notation manual
-
-This chapter describes all the different types of notation supported
-by LilyPond. It is intended as a reference for users that are already
-somewhat familiar with using LilyPond.
-
-@menu
-* Note entry::                  
-* Easier music entry::          
-* Staff notation::              
-* Polyphony::                   
-* Beaming::                     
-* Accidentals::                 
-* Expressive marks::            
-* Repeats::                     
-* Rhythmic music::              
-* Piano music::                 
-* Vocal music::                 
-* Tablatures::                  
-* Chord names::                 
-* Orchestral music::            
-* Ancient notation::            
-* Contemporary notation::       
-* Special notation::            
-* Tuning output::               
-* Global layout::               
-* Sound::                       
-@end menu
-
-@c FIXME: Note entry vs Music entry at top level menu is confusing.
-
-@node Note entry
-@section Note entry
-@cindex Note entry
-
-The basic elements of any piece of music are the notes. This section
-is about basic notation elements notes, rests and related constructs,
-such as stems, tuplets and ties.
-
-@menu
-* Notes::                       
-* Pitches::                     
-* Chromatic alterations::       
-* Chords::                      
-* Rests::                       
-* Skips::                       
-* Durations::                   
-* Stems::                       
-* Ties::                        
-* Tuplets::                     
-@end menu
-
-
-@node Notes
-@subsection Notes
-
-
-A note is printed by specifying its pitch and then its duration:
-@footnote{Notes constitute the most basic elements of LilyPond input,
-but they do not form valid input on their own without a @code{\score}
-block.  However, for the sake of brevity and simplicity we will
-generally omit @code{\score} blocks and @code{\paper} declarations in
-this manual.}
-
-@lilypond[fragment,verbatim]
-  cis'4 d'8 e'16 c'16
-@end lilypond
-
-
-@node Pitches
-@subsection Pitches
-
-@cindex Pitch names
-@cindex Note specification
-@cindex pitches
-@cindex entering notes
-
-The most common syntax for pitch entry is used in @code{\chords} and
-@code{\notes} mode.  In Note and Chord mode, pitches may be designated
-by names.  The notes are specified by the letters @code{a} through
-@code{g}, while the octave is formed with notes ranging from @code{c}
-to @code{b}.  The pitch @code{c} is an octave below middle C and the
-letters span the octave above that C:
-
-@lilypond[fragment,verbatim]
-\clef bass
-  a,4 b, c d e f g a b c' d' e' \clef treble f' g' a' b' c''
-@end lilypond
-
-@cindex note names, Dutch
-
-A sharp is formed by adding @code{-is} to the end of a pitch name and
-a flat is formed by adding @code{-es}.  Double sharps and double flats
-are obtained by adding @code{-isis} or @code{-eses}.  These
-names are the Dutch note names.  In Dutch, @code{aes} is contracted to
-@code{as}, but both forms are accepted. Similarly, both
-@code{es} and @code{ees} are accepted.
-
-Half-flats and half-sharps are formed by adding @code{-eh} and
-@code{-ih}; the following is a series of Cs with increasing pitches:
-
-@cindex quarter tones
-@cindex semi-flats, semi-sharps
-
-@lilypond[verbatim,relative=2]
-  ceses4
-  ceseh
-  ces
-  ceh
-  c
-  cih
-  cis 
-  cisih
-  cisis
-@end lilypond  
-
-There are predefined sets of note names for various other languages.
-To use them,  include the language specific init file.  For
-example: @code{\include "english.ly"}.  The available language files
-and the note names they define are:
-
-@anchor{note name}
-@anchor{note names}
-@example 
-                        Note Names               sharp       flat
-nederlands.ly  c   d   e   f   g   a   bes b   -is         -es
-english.ly     c   d   e   f   g   a   bf  b   -s/-sharp   -f/-flat
-                                               -x (double)
-deutsch.ly     c   d   e   f   g   a   b   h   -is         -es
-norsk.ly       c   d   e   f   g   a   b   h   -iss/-is    -ess/-es
-svenska.ly     c   d   e   f   g   a   b   h   -iss        -ess
-italiano.ly    do  re  mi  fa  sol la  sib si  -d          -b
-catalan.ly     do  re  mi  fa  sol la  sib si  -d/-s       -b 
-espanol.ly     do  re  mi  fa  sol la  sib si  -s          -b 
-
-@end example 
-
-@cindex @code{'}
-@cindex @code{,}
-
-
-
-The optional octave specification takes the form of a series of
-single quote (`@code{'}') characters or a series of comma
-(`@code{,}') characters.  Each @code{'} raises the pitch by one
-octave; each @code{,} lowers the pitch by an octave:
-
-@lilypond[fragment,verbatim,center]
-  c' c'' es' g' as' gisis' ais'  
-@end lilypond
-
-
-@refcommands
-
-Notes can be hidden and unhidden with the following commands:
-
-@cindex @code{\hideNotes}
-@code{\hideNotes}, 
-@cindex @code{\unHideNotes}
-@code{\unHideNotes}.
-
-
-@seealso
-
-Internals: @internalsref{NoteEvent}, and @internalsref{NoteHead}.
-
-@node Chromatic alterations
-@subsection Chromatic alterations
-
-Normally accidentals are printed automatically, but you may also
-print them manually.  A reminder accidental
-@cindex reminder accidental
-@cindex @code{?}
-can be forced by adding an exclamation mark @code{!}
-after the pitch.  A cautionary accidental
-@cindex cautionary accidental
-@cindex parenthesized accidental
-(i.e. an accidental within parentheses) can be obtained by adding the
-question mark `@code{?}' after the pitch:
-
-@lilypond[fragment,verbatim]
-  cis' cis' cis'! cis'?
-@end lilypond
-
-
-The automatic production of accidentals can be tuned in many
-ways. For more information, refer to @ref{Accidentals}.
-
-@node Chords
-@subsection Chords
-
-A chord is formed by a enclosing a set of pitches in @code{<} and
-@code{>}. A chord may be followed by  a duration, and a set of
-articulations, just like simple notes.
-
-
-@node Rests
-@subsection Rests
-@cindex Rests
-
-
-
-
-Rests are entered like notes, with the note name @code{r}:
-
-@lilypond[raggedright,verbatim]
-r1 r2 r4 r8
-@end lilypond
-
-Whole bar rests, centered in middle of the bar,
-must be done  with multi measure rests. They are discussed in
-@ref{Multi measure rests}.
-
-
-A rest's vertical position may be explicitly specified by entering a
-note with the @code{\rest} keyword appended. This makes manual
-formatting in polyphonic music easier.  Rest collision testing will
-leave these rests alone:
-
-@lilypond[raggedright,verbatim]
-a'4\rest d'4\rest
-@end lilypond
-
-@seealso
-
-Internals: @internalsref{RestEvent}, and @internalsref{Rest}.
-
-
-@c FIXME: naming.
-@node Skips
-@subsection Skips
-@cindex Skip
-@cindex Invisible rest
-@cindex Space note
-
-An invisible rest (also called a `skip') can be entered like a note
-with note name `@code{s}' or with @code{\skip @var{duration}}:
-
-@lilypond[raggedright,verbatim]
-a2 s4 a4 \skip 1 a4 
-@end lilypond
-
-The @code{s} syntax is only available in note mode and chord mode.  In
-other situations, you should use the @code{\skip} command:
-
-@lilypond[raggedright,verbatim]
-\score {
-  \new Staff <<
-    { \time 4/8 \skip 2 \time 4/4 } 
-    \notes\relative c'' { a2 a1 }
-  >>
-}
-@end lilypond
-
-The skip command is merely an empty musical placeholder.  It does not
-produce any output, not even transparent output.
-
-The @code{s} skip command does create @internalsref{Staff} and
-@internalsref{Voice} when necessary, similar to note and rest
-commands. For example, the following results in an empty staff.
-
-@lilypond[raggedright,verbatim]
-\score { \notes { s4 } } 
-@end lilypond
-
-The same fragment using @code{\skip} results in an empty page.
-
-@seealso
-
-Internals: @internalsref{SkipEvent}, @internalsref{SkipMusic}.
-
-
-
-@node Durations
-@subsection Durations
-
-
-@cindex duration
-
-
-In Note, Chord, and Lyrics mode, durations are designated by numbers
-and dots: durations are entered as their reciprocal values.  For example,
-a quarter note is entered using a @code{4} (since it is a 1/4 note), while
-a half note is entered using a @code{2} (since it is a 1/2 note).  For notes
-longer than a whole you must use variables:
-
-@c FIXME: what is an identifier?  I do not think it's been introduced yet.
-@c and if it has, I obviously skipped that part.     - Graham
-
-@example 
-c'\breve  
-c'1 c'2 c'4 c'8 c'16 c'32 c'64 c'64 
-r\longa r\breve  
-r1 r2 r4 r8 r16 r32 r64 r64 
-@end example 
-
-@lilypond[noindent]
-\score {
-  \notes \relative c'' {
-    a\breve  \autoBeamOff
-    a1 a2 a4 a8 a16 a32 a64 a64 
-    r\longa r\breve  
-    r1 r2 r4 r8 r16 r32 r64 r64 
-  }
-  \paper {
-    \translator {
-      \StaffContext
-        \remove "Clef_engraver"
-        \remove "Staff_symbol_engraver"
-        \remove "Time_signature_engraver"
-        \consists "Pitch_squash_engraver"
-    }
-  }
-}
-@end lilypond
-
-
-If the duration is omitted then it is set to the previously entered
-duration. The default for the first note is a quarter note.  The duration
-can be followed by dots (`@code{.}') in order to obtain dotted note
-lengths:
-@cindex @code{.}
-
-@lilypond[fragment,verbatim,center]
-  a' b' c''8 b' a'4 a'4. b'4.. c'8.
-@end lilypond
-@cindex @code{r}
-@cindex @code{s}
-
-You can alter the length of duration by a fraction @var{N/M}
-appending `@code{*}@var{N/M}' (or `@code{*}@var{N}' if @var{M=1}). This
-will not affect the appearance of the notes or rests produced.
-In the following example, the first three notes take up exactly two
-beats:
-@lilypond[fragment,relative=2,verbatim]
-  \time 2/4
-   a4*2/3 gis4*2/3 a4*2/3
-   a4
-@end lilypond
-
-
-@refcommands
-
-Dots are normally moved up to avoid staff lines, except in polyphonic
-situations. The following commands may be used to force a particular
-direction manually:
-
-@cindex @code{\dotsUp}
-@code{\dotsUp}, 
-@cindex @code{\dotsDown}
-@code{\dotsDown}, 
-@cindex @code{\dotsBoth}
-@code{\dotsBoth}.
-
-@seealso
-
-Internals: @internalsref{Dots}, and @internalsref{DotColumn}. 
-
-@node Stems
-@subsection Stems
-
-Whenever a note is found, a @internalsref{Stem} object is created
-automatically. For whole notes and rests, they are also created but
-made invisible.
-
-@refcommands
-
-@cindex @code{\stemUp}
-@code{\stemUp}, 
-@cindex @code{\stemDown}
-@code{\stemDown}, 
-@cindex @code{\stemBoth}
-@code{\stemBoth}. 
-
-
-@node Ties
-@subsection Ties
-
-@cindex Tie
-@cindex ties
-@cindex @code{~}
-
-A tie connects two adjacent note heads of the same pitch.  The tie in
-effect extends the length of a note.  Ties should not be confused with
-slurs, which indicate articulation, or phrasing slurs, which indicate
-musical phrasing.  A tie is entered using the tilde symbol `@code{~}':
-
-@lilypond[fragment,verbatim,center]
-  e' ~ e' <c' e' g'> ~ <c' e' g'>
-@end lilypond
-
-When a tie is applied to a chord, all note heads whose pitches match
-are connected.  When no note heads match, no ties will be created.
-
-In its meaning a tie is just a way of extending a note duration, similar
-to the augmentation dot; in the following example there are two ways of 
-notating exactly the same concept:
-@c
-@lilypond[fragment,raggedright,quote]
-\time 3/4 c'2. c'2 ~ c'4
-@end lilypond
-If you need to tie a lot of  notes over bars, it may be easier to use automatic
-note splitting (see @ref{Automatic note splitting}).
-
-@refcommands
-
-
-@cindex @code{\tieUp}
-@code{\tieUp}, 
-@cindex @code{\tieDown}
-@code{\tieDown}, 
-@cindex @code{\tieBoth}
-@code{\tieBoth}, 
-@cindex @code{\tieDotted}
-@code{\tieDotted}, 
-@cindex @code{\tieSolid}
-@code{\tieSolid}.
-
-@seealso 
-
-In this manual: @ref{Automatic note splitting}.
-
-Internals: @internalsref{TieEvent}, @internalsref{NewTieEvent},
-@internalsref{Tie}
-
-Examples: if you want less ties created for a chord, see
-@inputfileref{input/test,tie-sparse.ly}.
-
-For tying only a subset of the note heads of a pair of chords, see
-@inputfileref{input/regression,tie-chord-partial.ly}.
-
-@refbugs
-
-
-Switching staves when a tie is active will not produce a slanted tie.
-
-Formatting of ties is a difficult subject. The results are often not
-optimal.
-
-
-
-@node Tuplets
-@subsection Tuplets
-
-@cindex tuplets
-@cindex triplets
-@cindex @code{\times}
-
-Tuplets are made out of a music expression by multiplying all durations
-with a fraction:
-
-@cindex @code{\times}
-@example
-  \times @var{fraction} @var{musicexpr}
-@end example
-
-@noindent
-The duration of @var{musicexpr} will be multiplied by the fraction.
-The fraction's denominator will be printed over the notes, optionally
-with a bracket.  The most common tuplet is the triplet in which 3
-notes have the length of 2, so the notes are 2/3 of their written
-length:
-
-@lilypond[fragment,verbatim,center]
-  g'4 \times 2/3 {c'4 c' c'} d'4 d'4
-@end lilypond
-
-The property @code{tupletSpannerDuration} specifies how long each
-bracket should last.  With this, you can make lots of tuplets while
-typing @code{\times} only once, saving lots of typing. In the next
-example, there are two triplets shown, while @code{\times} was only
-used once:
-
-@lilypond[fragment,relative,raggedright,verbatim]
-\property Voice.tupletSpannerDuration = #(ly:make-moment 1 4)
-\times 2/3 { c'8 c c c c c }
-@end lilypond
-
-The format of the number is determined by the property
-@code{tupletNumberFormatFunction}.  The default prints only the
-denominator, but if it is set to the Scheme function
-@code{fraction-tuplet-formatter}, @var{num}:@var{den} will be printed
-instead.
-
-
-@cindex @code{tupletNumberFormatFunction}
-@cindex tuplet formatting 
-
-
-@refcommands
-
-@cindex @code{\tupletUp}
-@code{\tupletUp}, 
-@cindex @code{\tupletDown}
-@code{\tupletDown}, 
-@cindex @code{\tupletBoth}
-@code{\tupletBoth}.
-
-@seealso
-
-Internals: @internalsref{TupletBracket}, and @internalsref{TimeScaledMusic}.
-
-Examples: @inputfileref{input/regression,tuplet-nest.ly}.
-
-@refbugs
-
-Nested tuplets are not formatted automatically.  In this case, outer
-tuplet brackets should be moved manually, which is demonstrated in
-@inputfileref{input/regression,tuplet-nest.ly}.
-
-
-
-@node Easier music entry
-@section Easier music entry
-@cindex Music entry
-
-When entering music it is easy to introduce errors. This section deals
-with tricks and features of the input language that were added solely
-to help entering music, and find and correct mistakes.
-
-It is also possible to use external programs, for example GUI
-interfaces, or MIDI transcription programs, to enter or edit
-music. Refer to the website for more information. Finally, there are
-tools make debugging easier, by linking the input file and the output
-shown on screen. See @ref{Point and click} for more information.
-
-
-@menu
-* Relative octaves::            
-* Octave check::                
-* Bar check::                   
-* Skipping corrected music::    
-* Automatic note splitting::    
-@end menu
-
-
-
-
-@node Relative octaves
-@subsection Relative octaves
-@cindex Relative
-@cindex relative octave specification
-
-Octaves are specified by adding @code{'} and @code{,} to pitch names.
-When you copy existing music, it is easy to accidentally put a pitch
-in the wrong octave and hard to find such an error. The relative
-octave mode prevents these errors: a single error puts the rest of the
-piece off by one octave:
-
-@cindex @code{\relative}
-@example
-  \relative @var{startpitch} @var{musicexpr}
-@end example
-
-The octave of notes that appear in @var{musicexpr} are calculated as
-follows: If no octave changing marks are used, the basic interval
-between this and the last note is always taken to be a fourth or less
-(; this distance is determined without regarding alterations: a
-@code{fisis} following a @code{ceses} will be put above the
-@code{ceses}).
-
-The octave changing marks @code{'} and @code{,} can be added to raise
-or lower the pitch by an extra octave.  Upon entering relative mode,
-an absolute starting pitch must be specified that will act as the
-predecessor of the first note of @var{musicexpr}.
-
-Here is the relative mode shown in action:
-@lilypond[fragment,raggedright,verbatim,center]
-  \relative c'' {
-    b c d c b c bes a 
-  }
-@end lilypond
-
-Octave changing marks are used for intervals greater than a fourth:
-@lilypond[fragment,verbatim,center]
-  \relative c'' {
-    c g c f, c' a, e'' }
-@end lilypond
-
-If the preceding item is a chord, the first note of the chord is used
-to determine the first note of the next chord:
-
-@lilypond[fragment,verbatim,center]
-  \relative c' {
-    c <c e g> 
-    <c' e g>
-    <c, e' g>
-  }
-@end lilypond 
-@cindex @code{\notes}
-
-The pitch after the @code{\relative} contains a note name.  To parse
-the pitch as a note name, you have to be in note mode, so there must
-be a surrounding @code{\notes} keyword (which is not
-shown here).
-
-The relative conversion will not affect @code{\transpose},
-@code{\chords} or @code{\relative} sections in its argument.  If you
-want to use relative within transposed music, you must place an
-additional @code{\relative} inside the @code{\transpose}.
-
-@node Octave check
-@subsection Octave check
-
-
-Octave checks make octave errors easier to correct:  a note may be
-followed by @code{=}@var{quotes} which indicates what its absolute
-octave should be.  In the following example,
-@example
-  \relative c'' @{ c='' b=' d,='' @}        
-@end example
-
-@noindent
-@c take care with @code, adds confusing quotes.
-the d will generate a warning, because a d'' is expected, but a d' is
-found.  In the output, the octave is corrected this and the following
-notes.
-
-
-
-There is also a syntax that is separate from the notes.
-@example
-  \octave @var{pitch}
-@end example
-
-This checks that @var{pitch} (without octave) yields @var{pitch} (with
-octave) in \relative mode. If not, a warning is printed, and the
-octave is corrected, for example, the first check is passed
-successfully.  The second check fails with an error message.  The
-octave is adjusted so the following notes are in the correct octave
-once again.
-@example
-   \relative c' @{
-     e
-     \octave a'
-     \octave b'
-   @}
-@end example
-
-
-The octave of a note following an octave check is determined with
-respect to the note preceding it. In the next fragment, the last note
-is a @code{a'}, above central C. Hence, the @code{\octave} check may
-be deleted without changing the meaning of the piece.
-
-@lilypond[verbatim,fragment] 
-   \relative c' {
-     e
-     \octave b
-     a        
-   }
-@end lilypond
-
-@node Bar check
-@subsection Bar check
-@cindex Bar check
-
-@cindex bar check
-@cindex @code{barCheckSynchronize}
-@cindex @code{|}
-
-Bar checks help detect errors in the durations.  A bar check is
-entered using the bar symbol, `@code{|}'.  Whenever it is encountered
-during interpretation, it should fall on a measure boundary.  If it
-does not, a warning is printed.  Depending on the value of
-@code{barCheckSynchronize}, the beginning of the measure will be
-relocated.
-
-In the next example, the second bar check will signal an error:
-@example
-  \time 3/4 c2 e4 | g2 | 
-@end example
-
-Bar checks can also be used in lyrics, for example 
-
-@example
-  \lyrics @{
-    \time 2/4
-    Twin -- kle | Twin -- kle
-  @} 
-@end example
-
-
-@cindex skipTypesetting
-
-Failed bar checks are caused by entering incorrect
-durations. Incorrect durations often completely garble up the score,
-especially if it is polyphonic, so you should start correcting the
-score by scanning for failed bar checks and incorrect durations.  To
-speed up this process, you can use @code{skipTypesetting}, described
-in the next section.
-
-@node Skipping corrected music
-@subsection Skipping corrected music
-
-The property @code{Score.skipTypesetting} can be used to switch on and
-off typesetting completely during the interpretation phase. When
-typesetting is switched off, the music is processed much more quickly.
-This can be used to skip over the parts of a score that have already
-been checked for errors:
-
-@lilypond[fragment,raggedright,verbatim]
-\relative c'' { c8 d
-\property Score.skipTypesetting = ##t
-  e f g a g c, f e d
-\property Score.skipTypesetting = ##f
-c d b bes a g c2 } 
-@end lilypond
-
-@node Automatic note splitting
-@subsection Automatic note splitting
-
-Long notes can be converted automatically to tied notes.  This is done
-by replacing the @internalsref{Note_heads_engraver} by the
-@internalsref{Completion_heads_engraver}.
-In the following examples, notes crossing the barline are split and tied.
-
-
-@lilypond[noindent,verbatim]
-\new Voice \with {
-      \remove "Note_heads_engraver"
-      \consists "Completion_heads_engraver"
-} {
-  c2. c8 d4 e f g a b c8 c2 b4 a g16 f4 e d c8. c2 
-}
-@end lilypond
-
-This engraver splits all running notes at the bar line, and inserts
-ties.  One of its uses is to debug complex scores: if the measures are
-not entirely filled, then the ties exactly show how much each measure
-is off.
-
-@refbugs
-
-Not all durations (especially those containing tuplets) can be
-represented exactly; the engraver will not insert tuplets. 
-
-@seealso
-
-Examples: @inputfileref{input/regression,completion-heads.ly}
-
-Internals: @internalsref{Completion_heads_engraver}
-
-
-@node Staff notation
-@section Staff notation
-
-This section describes music notation that occurs on staff level,
-such as keys, clefs and time signatures.
-
-@cindex Staff notation
-
-@menu
-* Staff symbol::                
-* Key signature::               
-* Clef::                        
-* Ottava brackets::             
-* Time signature::              
-* Partial measures::            
-* Unmetered music::             
-* Bar lines::                   
-@end menu
-
-@node Staff symbol
-@subsection Staff symbol
-
-@cindex adjusting staff symbol
-@cindex StaffSymbol, using \property
-
-Notes, dynamic signs, etc. are grouped
-with a set of horizontal lines, into a staff (plural `staves'). In our
-system, these lines are drawn using a separate layout object called
-staff symbol.  
-
-
-@cindex staff lines, setting number of
-@cindex staff lines, setting thickness of
-@cindex thickness of staff lines, setting 
-@cindex number of staff lines, setting 
-
-@seealso
-
-Internals: @internalsref{StaffSymbol},
-
-Examples: @inputfileref{input/test,staff-lines.ly},
-@inputfileref{input/test,staff-size.ly}
-
-@refbugs
-
-If a staff is ended halfway a piece, the staff symbol may not end
-exactly on the barline.
-
-
-@node Key signature
-@subsection Key signature
-@cindex Key signature
-
-@cindex @code{\key}
-
-The key signature indicates the scale in which a piece is played. It
-is denoted by a set of alterations (flats or sharps) at the start of
-the staff.
-
-@syntax
-
-Setting or changing the key signature is done with the @code{\key}
-command:
-@example
-  @code{\key} @var{pitch} @var{type}
-@end example
-
-@cindex @code{\minor}
-@cindex @code{\major}
-@cindex @code{\minor}
-@cindex @code{\ionian}
-@cindex @code{\locrian}
-@cindex @code{\aeolian}
-@cindex @code{\mixolydian}
-@cindex @code{\lydian}
-@cindex @code{\phrygian}
-@cindex @code{\dorian}
-
-Here, @var{type} should be @code{\major} or @code{\minor} to get
-@var{pitch}-major or @var{pitch}-minor, respectively.
-The standard mode names @code{\ionian},
-@code{\locrian}, @code{\aeolian}, @code{\mixolydian}, @code{\lydian},
-@code{\phrygian}, and @code{\dorian} are also defined.
-
-This command sets the context property
-@internalsref{Staff}.@code{keySignature}.  Non-standard key signatures
-can be specified by setting this property directly.
-
-Accidentals and key signatures often confuse new users, because
-unaltered notes get natural signs depending on the keysignature.  The
-tutorial explains why this is so in @ref{More about pitches}.
-
-@refbugs
-
-The ordering of a key cancellation is wrong when it is combined with
-repeat bar lines. The cancellation is also printed after a line break.
-
-@seealso
-
-Internals: @internalsref{KeyChangeEvent}, and @internalsref{KeySignature}.
-
-@cindex @code{keySignature}
-
-
-@node Clef
-@subsection Clef
-@cindex @code{\clef}
-
-The clef indicates which lines of the staff correspond to which
-pitches.
-
-@syntax
-
-The clef can be set or changed with the @code{\clef} command:
-@lilypond[fragment,verbatim]
-  \key f\major  c''2 \clef alto g'2
-@end lilypond
-
-Supported clef-names include:
-@c Moved standard clefs to the top /MB
-@table @code
-@cindex treble clef
-@cindex violin clef
-@item treble, violin, G, G2
-G clef on 2nd line
-@item alto, C
-@cindex alto clef 
- C clef on 3rd line
-@item tenor
-@cindex tenor clef 
- C clef on 4th line. 
-@item bass, F
-@cindex bass clef
- F clef on 4th line
-@item french
-@cindex french clef
- G clef on 1st line, so-called French violin clef
-@item soprano
-@cindex soprano clef
- C clef on 1st line
-@item mezzosoprano
-@cindex mezzosoprano clef
- C clef on 2nd line
-@item baritone
-@cindex baritone clef
- C clef on 5th line
-@item varbaritone
-@cindex varbaritone clef
- F clef on 3rd line
-@item subbass
-@cindex subbass clef
- F clef on 5th line
-@item percussion
- percussion clef
-@end table
-
-By adding @code{_8} or @code{^8} to the clef name, the clef is
-transposed one octave down or up, respectively, and @code{_15} and
-@code{^15} transposes by two octaves.  The argument @var{clefname}
-must be enclosed in quotes when it contains underscores or digits. For
-example,
-
-
-@cindex choral tenor clef  
-@lilypond[verbatim,fragment,relative]
-	\clef "G_8" c4
-@end lilypond
-
-This command is equivalent to setting @code{clefGlyph},
-@code{clefPosition} (which controls the Y position of the clef),
-@code{centralCPosition} and @code{clefOctavation}. A clef is printed
-when any of these properties are changed.
-
-@seealso
-
-Internals: the object for this symbol is @internalsref{Clef}.
-
-
-
-@node Ottava brackets
-@subsection Ottava brackets
-
-``Ottava'' brackets introduce an extra transposition of an octave for
-the staff. They are created by invoking the function
-@code{set-octavation}:
-
-@cindex ottava
-@cindex 15ma
-@cindex octavation
-
-@lilypond[verbatim,fragment]
-\relative c''' {
-  a2 b
-  #(set-octavation 1)
-  a b 
-  #(set-octavation 0)
-  a b }
-@end lilypond
-
-The @code{set-octavation} function also takes -1 (for 8va bassa) and 2
-(for 15ma) as arguments.  Internally the function sets the properties
-@code{ottavation} (eg. to @code{"8va"}) and
-@code{centralCPosition}. For overriding the text of the bracket, set
-@code{ottavation} after invoking @code{set-octavation}, i.e.,
-
-@example
-  #(set-octavation 1)
-  \property Staff.ottavation = #"8"
-@end example
-
-@seealso
-
-Internals: @internalsref{OttavaBracket}.
-
-Examples: @inputfileref{input/regression,ottava.ly},
-@inputfileref{input/regression,ottava-broken.ly}.
-
-@refbugs
-
-@code{set-octavation} will get confused when clef changes happen
-during an octavation bracket.
-
-@node Time signature
-@subsection Time signature
-@cindex Time signature
-@cindex meter
-@cindex @code{\time}
-
-Time signature indicates the metrum of a piece: a regular pattern of
-strong and weak beats. It is denoted by a fraction at the start of the
-staff.
-
-@syntax
-
-The time signature is set or changed by the @code{\time}
-command:
-@lilypond[fragment,verbatim]
- \time 2/4 c'2 \time 3/4 c'2. 
-@end lilypond
-
-The symbol that is printed can be customized with the @code{style}
-property. Setting it to @code{#'()} uses fraction style for 4/4 and
-2/2 time.  There are many more options for its layout.  See
-@inputfileref{input/test,time.ly} for more examples.
-
-
-This command sets the property @code{timeSignatureFraction},
-@code{beatLength} and @code{measureLength} in the @code{Timing}
-context, which is normally aliased to @internalsref{Score}.  The
-property @code{measureLength} determines where bar lines should be
-inserted, and how automatic beams should be generated.  Changing the
-value of @code{timeSignatureFraction} also causes the symbol to be
-printed.
-
-More options are available through the Scheme function
-@code{set-time-signature}. In combination with the
-@internalsref{Measure_grouping_engraver}, it will create
-@internalsref{MeasureGrouping} signs. Such signs ease reading
-rhythmically complex modern music.  In the following example, the 9/8
-measure is subdivided in 2, 2, 2 and 3. This is passed to
-@code{set-time-signature} as the third argument @code{(2 2 2 3)}:
-
-@lilypond[verbatim]
-\score { \notes \relative c'' {
-   #(set-time-signature 9 8 '(2 2 2 3))
-   g8[ g] d[ d] g[ g] a8[( bes g]) | 
-   #(set-time-signature 5 8 '(3 2))
-   a4. g4
-   }
-   \paper {
-       raggedright = ##t
-       \translator { \StaffContext
-         \consists "Measure_grouping_engraver"
-   }}}
-@end lilypond 
-
-@seealso
-
-Internals: @internalsref{TimeSignature}, and @internalsref{Timing_engraver}.
-
-
-@refbugs
-
-Automatic beaming does not use measure grouping specified with
-@code{set-time-signature}.
-
-@node Partial measures
-@subsection Partial measures
-@cindex Partial
-@cindex anacrusis
-@cindex partial measure
-@cindex measure, partial
-@cindex shorten measures
-@cindex @code{\partial}
-
-Partial measures, for example in upsteps, are entered using the
-@code{\partial} command:
-@lilypond[fragment,verbatim,relative=1]
-\partial 16*5  c16 cis d dis e |   a2. c,4 | b2
-@end lilypond
-
-The syntax for this command is 
-@example
-  \partial @var{duration} 
-@end example
-This is  internally translated into
-@example
-  \property Timing.measurePosition = -@var{length of duration}
-@end example
-@cindex @code{|}
-The property @code{measurePosition} contains a rational number
-indicating how much of the measure has passed at this point.
-
-@node Unmetered music
-@subsection Unmetered music
-
-Bar lines and bar numbers are calculated automatically. For unmetered
-music (e.g. cadenzas), this is not desirable.  By setting
-@code{Score.timing} to false, this automatic timing can be switched
-off.
-
-
-@refcommands
-
-@cindex @code{\cadenzaOn}
-@code{\cadenzaOn}, 
-@cindex @code{\cadenzaOff}
-@code{\cadenzaOff}.
-
-@node Bar lines
-@subsection Bar lines
-@cindex Bar lines
-
-@cindex @code{\bar}
-@cindex measure lines
-@cindex repeat bars
-
-
-Bar lines delimit measures, but are also used to indicate repeats.
-Normally, they are inserted automatically.  Line breaks may only
-happen on barlines.
-
-@syntax
-
- Special types
-of barlines can be forced with the @code{\bar} command:
-@c
-@lilypond[relative=1,fragment,verbatim]
-   c4 \bar "|:" c4
-@end lilypond
-
-The following bar types are available:
-@lilypond[fragment,relative,raggedright,verbatim]
-c4
-\bar "|" c
-\bar "" c
-\bar "|:" c
-\bar "||" c
-\bar ":|" c
-\bar ".|" c
-\bar ".|." c
-\bar ":|:" c
-\bar "|." c
-\bar ":" c
-@end lilypond
-For allowing linebreaks, there is a special command,
-@example
-  \bar "empty"
-@end example 
-This will insert an invisible barline, and allow linebreaks at this
-point.
-
-In scores with many staves, a @code{\bar} command in one staff is
-automatically applied to all staves. The resulting bar lines are
-connected between different staves of a @internalsref{StaffGroup}:
-@c
-@lilypond[fragment,verbatim]
-<< \context StaffGroup <<
-  \new Staff { e'4 d'
-     \bar "||"
-     f' e' }
-  \new Staff { \clef bass c4 g e g } >>
-\new Staff { \clef bass c2 c2 } >>
-@end lilypond
-
-
-The command @code{\bar @var{bartype}} is a short cut for doing
-@code{\property Score.whichBar = @var{bartype}} Whenever
-@code{whichBar} is set to a string, a bar line of that type is
-created.  At the start of a measure it is set to
-@code{defaultBarType}. The contents of @code{repeatCommands} are used
-to override default measure bars.
-
-Property @code{whichBar} can also be set directly, using @code{\property} 
-or @code{\bar}.  These settings take precedence over the automatic
-@code{whichBar} settings. 
-
-@cindex whichBar
-@cindex repeatCommands
-@cindex defaultBarType
-
-You are encouraged to use @code{\repeat} for repetitions.  See
-@ref{Repeats}.
-
-
-
-@seealso
-
-In this manual: @ref{Repeats}.
-
-
-Internals: the bar line objects that are created at
-@internalsref{Staff} level are called @internalsref{BarLine}, the bar
-lines that span staves are @internalsref{SpanBar}s.
-
-@cindex bar lines at start of system
-@cindex start of system
-
-The barlines at the start of each system are
-@internalsref{SystemStartBar}, @internalsref{SystemStartBrace}, and
-@internalsref{SystemStartBracket}.  Only one of these types is created
-in every context, and that type is determined by the property
-@code{systemStartDelimiter}.
-
-Examples: @inputfileref{input/test,bar-lines.ly},
-
-@node Polyphony
-@section Polyphony
-@cindex polyphony
-
-The easiest way to enter fragments with more than one voice on a staff
-is to split chords using the separator @code{\\}.  You can use it for
-small, short-lived voices or for single chords:
-
-@lilypond[verbatim,fragment]
-\context Staff \relative c'' {
-  c4 << { f d e  } \\ { b c2 } >>
-  c4 << g' \\ b, \\  f' \\ d >>
-}
-@end lilypond
-
-The separator causes @internalsref{Voice} contexts@footnote{Polyphonic
-voices are sometimes called "layers" other notation packages}
-@cindex layers
-to be instantiated. They bear the names @code{"1"}, @code{"2"}, etc. In
-each of these contexts, vertical direction of slurs, stems, etc. is set
-appropriately.
-
-@cindex @code{\voiceOne}
-@cindex @code{\voiceFour}
-
-This can also be done by instantiating @internalsref{Voice} contexts
-by hand, and using @code{\voiceOne}, up to @code{\voiceFour} to assign
-a stem directions and horizontal shift for each part:
-@c
-
-@lilypond[raggedright,verbatim]
-\relative c''
-\context Staff << \new Voice { \voiceOne cis2 b  }
-  \new Voice { \voiceThree b4 ais ~ ais4 gis4 } 
-  \new Voice { \voiceTwo fis4~  fis4 f ~ f  } >>
-@end lilypond
-
-@noindent
-The command @code{\oneVoice} will revert back to the normal setting.
-@cindex @code{\oneVoice}
-
-
-Normally, note heads with a different number of dots are not merged, but
-when  the object property @code{merge-differently-dotted} is set in
-the @internalsref{NoteCollision} object, they are merged:
-@lilypond[verbatim,fragment,raggedright]
-\relative c'' \context Voice << {
-     g8 g8 
-     \property Staff.NoteCollision \override
-        #'merge-differently-dotted = ##t
-     g8 g8
-  } \\ { g8.[ f16] g8.[ f16] } 
-  >>
-@end lilypond
-
-Similarly, you can merge half note heads with eighth notes, by setting
-@code{merge-differently-headed}:
-@lilypond[fragment,relative=2,verbatim]
-\context Voice << {
-    c8 c4.
-    \property Staff.NoteCollision
-      \override #'merge-differently-headed = ##t
-    c8 c4. } \\ { c2 c2 } >>
-@end lilypond
-
-LilyPond also vertically shifts rests that are opposite of a stem:
-
-
-@lilypond[raggedright,fragment,verbatim]
-\context Voice << c''4 \\  r4 >>
-@end lilypond
-
-
-@refcommands
-
-
-
-@cindex @code{\oneVoice}
-@code{\oneVoice}, 
-@cindex @code{\voiceOne}
-@code{\voiceOne}, 
-@cindex @code{\voiceTwo}
-@code{\voiceTwo}, 
-@cindex @code{\voiceThree}
-@code{\voiceThree}, 
-@cindex @code{\voiceFour}
-@code{\voiceFour}.
-
-
-The following commands specify in what chords of the current voice
-should be shifted: the outer voice has @code{\shiftOff}, and the inner
-voices have @code{\shiftOn}, @code{\shiftOnn}, etc.
-
-
-@cindex @code{\shiftOn}
-@code{\shiftOn}, 
-@cindex @code{\shiftOnn}
-@code{\shiftOnn}, 
-@cindex @code{\shiftOnnn}
-@code{\shiftOnnn}, 
-@cindex @code{\shiftOff}
-@code{\shiftOff}.
-
-
-
-@seealso
-
-Internals: the objects responsible for resolving collisions are
-@internalsref{NoteCollision} and @internalsref{RestCollision}.
-
-Examples: See also example files
-@inputfileref{input/regression,collision-dots.ly},
-@inputfileref{input/regression,collision-head-chords.ly},
-@inputfileref{input/regression,collision-heads.ly},
-@inputfileref{input/regression,collision-mesh.ly}, and
-@inputfileref{input/regression,collisions.ly}.
-
-
-@refbugs
-
-Resolving collisions is a intricate subject, and only a few situations
-are handled. When LilyPond cannot cope, the @code{force-hshift}
-property of the @internalsref{NoteColumn} object and pitched rests can
-be used to override typesetting decisions.
-
-When using @code{merge-differently-headed} with an upstem 8th or a shorter
-note, and a downstem half note, the 8th note gets the wrong offset.
-
-There is no support for clusters where the same note occurs with
-different accidentals in the same chord. In this case, it is
-recommended to use enharmonic transcription, or to use special cluster
-notation (see @ref{Clusters}).
-
-@node Beaming
-@section Beaming
-
-Beams are used to group short notes into chunks that are aligned with
-the metrum. They are inserted automatically in most cases:
-
-@lilypond[fragment,verbatim,relative=2]
-\time 2/4 c8 c c c \time 6/8 c c c c8. c16  c8
-@end lilypond
-
-When these automatic decisions are not good enough, beaming can be
-entered explicitly. It is also possible to define  beaming patterns
-that differ from the defaults.
-
-@seealso
-
-Internals: @internalsref{Beam}. 
-
-
-@cindex Automatic beams
-@menu
-* Manual beams::                
-* Setting automatic beam behavior::  
-@end menu
-
-@node Manual beams
-@subsection Manual beams
-@cindex beams, manual
-@cindex @code{]}
-@cindex @code{[}
-
-In some cases it may be necessary to override the automatic beaming
-algorithm.  For example, the auto beamer will not put beams over rests
-or bar lines. Such beams are specified by manually: the begin and end
-point are marked with @code{[} and @code{]}:
-
-@lilypond[fragment,relative,verbatim]
-  \context Staff {
-    r4 r8[ g' a r8] r8 g[ | a] r8
-  }
-@end lilypond
-
-@cindex @code{stemLeftBeamCount}
-
-Normally, beaming patterns within a beam are determined automatically.
-When this mechanism fouls up, the properties
-@code{Voice.stemLeftBeamCount} and @code{Voice.stemRightBeamCount} can
-be used to control the beam subdivision on a stem.  If either property
-is set, its value will be used only once, and then it is erased.
-
-@lilypond[fragment,relative,verbatim]
-  \context Staff {
-    f8[ r16 f g a]
-    f8[ r16 \property Voice.stemLeftBeamCount = #1 f g a]
-  }
-@end lilypond
-@cindex @code{stemRightBeamCount}
-
-
-The property @code{subdivideBeams} can be set in order to subdivide
-all 16th or shorter beams at beat positions, as defined by the
-@code{beatLength} property .  This accomplishes the same effect as
-twiddling with @code{stemLeftBeamCount} and @code{stemRightBeamCount},
-but it take less typing:
-
-
-@lilypond[relative=1,verbatim,noindent]
-        c16[ c c c c c c c]
-        \property Voice.subdivideBeams = ##t
-        c16[ c c c c c c c]
-        \property Score.beatLength = #(ly:make-moment 1 8)
-        c16[ c c c c c c c]
-@end lilypond
-@cindex subdivideBeams
-
-Kneed beams are inserted automatically, when a large gap is detected
-between the note heads.  This behavior can be tuned through the object
-property @code{auto-knee-gap}.
-
-Normally, line breaks are forbidden when beams cross bar lines.  This
-behavior can be changed by setting @code{allowBeamBreak}.
-
-@cindex @code{allowBeamBreak}
-@cindex beams and line breaks
-
-@cindex beams, kneed
-@cindex kneed beams
-@cindex auto-knee-gap
-
-
-
-@refbugs
-
-@cindex Frenched staves
-
-Automatically kneed beams cannot be used together with hidden staves.
-
-
-
-
-@node Setting automatic beam behavior
-@subsection Setting automatic beam behavior 
-
-@cindex @code{autoBeamSettings}
-@cindex @code{(end * * * *)}
-@cindex @code{(begin * * * *)}
-@cindex automatic beams, tuning
-@cindex tuning automatic beaming
-
-@c [TODO: use \applycontext]
-
-In normal time signatures, automatic beams can start on any note but can
-only end in a few positions within the measure: beams can end on a beat,
-or at durations specified by the properties in
-@code{Voice.autoBeamSettings}. The defaults for @code{autoBeamSettings}
-are defined in @file{scm/auto-beam.scm}.
-
-The value of @code{autoBeamSettings} is changed using
-@code{\override} and restored with @code{\revert}:
-@example
-\property Voice.autoBeamSettings \override #'(@var{BE} @var{P} @var{Q} @var{N} @var{M}) = @var{dur}
-\property Voice.autoBeamSettings \revert #'(@var{BE} @var{P} @var{Q} @var{N} @var{M})
-@end example
-Here, @var{BE} is the symbol @code{begin} or @code{end}. It determines
-whether the rule applies to begin or end-points.  The quantity
-@var{P}/@var{Q} refers to the length of the beamed notes (and `@code{*
-*}' designates notes of any length), @var{N}/@var{M} refers to a time
-signature (wildcards `@code{* *}' may be entered to designate all time
-signatures).
-
-For example, if automatic beams should end on every quarter note, use
-the following:
-@example
-\property Voice.autoBeamSettings \override
-    #'(end * * * *) = #(ly:make-moment 1 4)
-@end example
-Since the duration of a quarter note is 1/4 of a whole note, it is
-entered as @code{(ly:make-moment 1 4)}.
-
-The same syntax can be used to specify beam starting points. In this
-example, automatic beams can only end on a dotted quarter note:
-@example
-\property Voice.autoBeamSettings \override
-    #'(end * * * *) = #(ly:make-moment 3 8)
-@end example
-In 4/4 time signature, this means that automatic beams could end only on
-3/8 and on the fourth beat of the measure (after 3/4, that is 2 times
-3/8, has passed within the measure).
-
-Rules can also be restricted to specific time signatures. A rule that
-should only be applied in @var{N}/@var{M} time signature is formed by
-replacing the second asterisks by @var{N} and @var{M}. For example, a
-rule for 6/8 time exclusively looks like
-@example
-\property Voice.autoBeamSettings \override
-    #'(begin * * 6 8) =  ... 
-@end example
-
-If a rule should be to applied only to certain types of beams, use the
-first pair of asterisks. Beams are classified according to the
-shortest note they contain. For a beam ending rule that only applies
-to beams with 32nd notes (and no shorter notes), use @code{(end 1 32 *
-*)}.
-
-If a score ends while an automatic beam has not been ended and is still
-accepting notes, this last beam will not be typeset at all.
-
-@cindex automatic beam generation
-@cindex autobeam
-@cindex @code{Voice.autoBeaming}
-@cindex lyrics
-
-For melodies that have lyrics, you may want to switch off 
-automatic beaming. This is done by setting @code{Voice.autoBeaming} to
-@code{#f}. 
-
-@refcommands
-
-@cindex @code{\autoBeamOff}
-@code{\autoBeamOff}, 
-@cindex @code{\autoBeamOn}
-@code{\autoBeamOn}.
-
-
-@refbugs
-
-The rules for ending a beam depend on the shortest note in a beam.
-So, while it is possible to have different ending rules for eight
-beams and sixteenth beams, a beam that contains both eight and
-sixteenth notes will use the rules for the sixteenth beam.
-
-In the example below, the autobeamer makes eight beams and sixteenth
-end at 3 eights; the third beam can only be corrected by specifying
-manual beaming.
-
-@lilypond[raggedright,fragment,relative,noverbatim,quote]
-  \property Voice.autoBeamSettings
-  \override #'(end * * * *) = #(ly:make-moment 3 8)
-  % rather show case where it goes wrong
-  %\time 12/8 c'8 c c c16 c c c c c c[ c c c] c8[ c] c4
-  \time 12/8 c'8 c c c16 c c c c c c c c c c8 c c4
-@end lilypond
-It is not possible to specify beaming parameters that act differently in
-different parts of a measure. This means that it is not possible to use
-automatic beaming in irregular meters such as @code{5/8}.
-
-@node Accidentals
-@section Accidentals
-@cindex Accidentals
-
-This section describes how to change the way that accidentals are
-inserted automatically before the running notes.
-
-
-@menu
-* Using the predefined accidental variables::  
-* Customized accidental rules::  
-@end menu
-
-@node Using the predefined accidental variables
-@subsection Using the predefined accidental variables
-
-The constructs for describing the accidental typesetting rules are
-quite hairy, so non-experts should stick to the variables
-defined in @file{ly/property-init.ly}.
-@cindex @file{property-init.ly}
-
-The variables set properties in the ``@code{Current}'' context (see
-@ref{Context properties}). This means that the variables should
-normally be added right after the creation of the context in which the
-accidental typesetting described by the variable is to take
-effect. For example, if you want to use piano-accidentals in a piano
-staff then issue @code{\pianoAccidentals} first thing after the
-creation of the piano staff:
-@example
-\score @{
-    \notes \relative c'' <<
-        \new Staff @{ cis4 d e2 @}
-        \context GrandStaff <<
-            \pianoAccidentals
-            \new Staff @{ cis4 d e2 @}
-            \new Staff @{ es2 c @}
-        >>
-        \new Staff @{ es2 c @}
-    >>
-@}
-@end example
-@lilypond[raggedright]
-\score {
-    \notes \relative c'' <<
-        \new Staff { cis4 d e2 }
-        \context GrandStaff <<
-            \pianoAccidentals
-            \new Staff { cis4 d e2 }
-            \new Staff { es2 c }
-        >>
-        \new Staff { es2 c }
-    >>
-    \paper {
-        \translator {
-            \StaffContext
-            minimumVerticalExtent = #'(-4.0 . 4.0)
-        }
-    }
-}
-@end lilypond
-
-The variables are:
-@table @code
-@item \defaultAccidentals
-      @cindex @code{\defaultAccidentals}
-      This is the default typesetting behaviour. It should correspond
-      to 18th century common practice: Accidentals are
-      remembered to the end of the measure in which they occur and
-      only on their own octave.
-
-@item \voiceAccidentals
-      @cindex @code{\voiceAccidentals}
-@c
-      The normal behaviour is to
-remember the accidentals on Staff-level.  This variable, however,
-typesets accidentals individually for each voice.  Apart from that the
-rule is similar to @code{\defaultAccidentals}.
-
-      This leads to some weird and often unwanted results
-      because accidentals from one voice do not get cancelled in other
-      voices:
-@lilypond[raggedright,relative,fragment,verbatim,quote]
-    \context Staff <<
-        \voiceAccidentals
-        <<
-         { es g } \\
-         { c, e }
-     >> >>
-@end lilypond
-      Hence you should only use @code{\voiceAccidentals} if the voices
-are to be read solely by individual musicians. If the staff is to be
-used by one musician (e.g. a conductor) then you use
-@code{\modernVoiceAccidentals} or @code{\modernVoiceCautionaries}
-instead.
-
-@item \modernAccidentals
-      @cindex @code{\modernAccidentals}
-      This rule  corresponds to the common practice in the 20th
-      century.
-      The rule is  more complex than @code{\defaultAccidentals}.
-      You get all the same accidentals, but temporary
-      accidentals also get cancelled in other octaves. Furthermore,
-      in the same octave, they also get cancelled in the following measure:
-@lilypond[raggedright,fragment,verbatim]
-      \modernAccidentals
-      cis' c'' cis'2 | c'' c'
-@end lilypond
-
-@item \modernCautionaries
-      @cindex @code{\modernCautionaries}
-     This rule is similar to @code{\modernAccidentals}, but the
-     ``extra'' accidentals (the ones not typeset by
-     @code{\defaultAccidentals}) are typeset as cautionary accidentals.
-     They are printed in reduced size or with parentheses:
-@lilypond[raggedright,fragment,verbatim]
-      \modernCautionaries
-      cis' c'' cis'2 | c'' c'
-@end lilypond
-
-      @cindex @code{\modernVoiceAccidentals}
-@item \modernVoiceAccidentals
-is used for multivoice accidentals to be read both by musicians
-playing one voice and musicians playing all voices.  Accidentals are
-typeset for each voice, but they @emph{are} cancelled across voices in
-the same @internalsref{Staff}.
-
-      @cindex @code{\modernVoiceCautionaries}
-@item \modernVoiceCautionaries
-is the same as @code{\modernVoiceAccidentals}, but with the extra
-accidentals (the ones not typeset by @code{\voiceAccidentals}) typeset
-as cautionaries.  Even though all accidentals typeset by
-@code{\defaultAccidentals} @emph{are} typeset by this variable then
-some of them are typeset as cautionaries.
-
-@item \pianoAccidentals
-      @cindex @code{\pianoAccidentals}
-      20th century practice for piano notation. Very similar to
-      @code{\modernAccidentals} but accidentals also get cancelled
-      across the staves in the same @internalsref{GrandStaff} or
-      @internalsref{PianoStaff}.
-
-@item \pianoCautionaries
-      @cindex @code{\pianoCautionaries}
-      As @code{\pianoAccidentals} but with the extra accidentals
-      typeset as cautionaries.
-
-@item \noResetKey
-      @cindex @code{\noResetKey}
-      Same as @code{\defaultAccidentals} but with accidentals lasting
-      ``forever'' and not only until the next measure:
-@lilypond[raggedright,fragment,verbatim,relative]
-      \noResetKey
-      c1 cis cis c
-@end lilypond
-
-@item \forgetAccidentals
-      @cindex @code{\forgetAccidentals}
-      This is sort of the opposite of @code{\noResetKey}: Accidentals
-      are not remembered at all---and hence all accidentals are
-      typeset relative to the key signature, regardless of what was
-      before in the music:
-@lilypond[raggedright,fragment,verbatim,relative]
-      \forgetAccidentals
-      \key d\major c4 c cis cis d d dis dis
-@end lilypond
-@end table
-
-@node Customized accidental rules
-@subsection  Customized accidental rules
-
-For determining when to print an accidental, several different rules
-are tried.  The rule that gives the highest number of accidentals is
-used.  Each rule consists of
-@table @var
-@item context:
-      In which context is the rule applied. For example, if
-@var{context} is @internalsref{Score} then all staves share
-accidentals, and if @var{context} is @internalsref{Staff} then all
-voices in the same staff share accidentals, but staves do not.
-
-@item octavation:
-      Whether the accidental changes all octaves or only the current
-      octave. Valid choices are 
-
-     @table @samp
-      @item same-octave:
-      This is the default algorithm. Accidentals are typeset if the note changes
-      the accidental of that note in that octave. Accidentals lasts to the end of the measure 
-      and then as many measures as specified in the value. I.e. 1 means to the end
-      of next measure, -1 means to the end of previous measure (that is: no duration at all), etc. #t means forever.
-      @item any-octave:
-      Accidentals are typeset if the note is different from 
-      the previous note on the same pitch in any octave. The value has same meaning as in
-      same-octave.
-      @end table
-
-@item lazyness
-
-                        Over how many barlines the accidental lasts.
-                              If @var{lazyness} is @code{-1} then the accidental is forget
-                        immediately, and if @var{lazyness} is @code{#t} then the accidental
-                              lasts forever.
-@end table
-
-
-@refcommands
-
-@cindex @code{\defaultAccidentals}
-@code{\defaultAccidentals}, 
-@cindex @code{\voiceAccidentals}
-@code{\voiceAccidentals}, 
-@cindex @code{\modernAccidentals}
-@code{\modernAccidentals}, 
-@cindex @code{\modernCautionaries}
-@code{\modernCautionaries}, 
-@cindex @code{\modernVoiceAccidentals}
-@code{\modernVoiceAccidentals}, 
-@cindex @code{\modernVoiceCautionaries}
-@code{\modernVoiceCautionaries}, 
-@cindex @code{\pianoAccidentals}
-@code{\pianoAccidentals}, 
-@cindex @code{\pianoCautionaries}
-@code{\pianoCautionaries}, 
-@cindex @code{\noResetKey}
-@code{\noResetKey}, 
-@cindex @code{\forgetAccidentals}
-@code{\forgetAccidentals}.
-
-@seealso
-
-Internals: @internalsref{Accidental_engraver},
-@internalsref{Accidental}, and @internalsref{AccidentalPlacement}.
-
-
-@refbugs
-
-Currently the simultaneous notes are considered to be entered in
-sequential mode. This means that in a chord the accidentals are
-typeset as if the notes in the chord happened once at a time - in the
-order in which they appear in the input file.
-
-This is only a problem when there are simultaneous notes whose
-accidentals depend on each other.  The problem only occurs when using
-non-default accidentals. In the default scheme, accidentals only
-depend on other accidentals with the same pitch on the same staff, so
-no conflicts possible.
-
-This example shows two examples of the same music giving different
-accidentals depending on the order in which the notes occur in the
-input file:
-
-@lilypond[raggedright,fragment,verbatim]
-\property Staff.autoAccidentals = #'( Staff (any-octave . 0) )
-cis'4 <c'' c'> r2 | cis'4 <c' c''> r2
-| <cis' c''> r | <c'' cis'> r | 
-@end lilypond
-
-This problem can be solved by manually inserting @code{!} and @code{?}
-for the problematic notes.
-
-@node Expressive marks
-@section Expressive marks
-
-
-@c todo: should change ordering
-@c where to put text spanners, metronome marks,
-@c fingering?
- 
-@menu
-* Slurs::                       
-* Phrasing slurs::              
-* Breath marks::                
-* Metronome marks::             
-* Text spanners::               
-* Analysis brackets::           
-* Articulations::               
-* Fingering instructions::      
-* Text scripts::                
-* Grace notes::                 
-* Glissando::                   
-* Dynamics::                    
-@end menu
-
-@node Slurs
-@subsection Slurs
-@cindex Slurs
-
-A slur indicates that notes are to be played bound or @emph{legato}.
-
-@syntax
-
-They are entered using parentheses:
-@lilypond[relative=1,fragment,verbatim,center]
-  f( g)( a) a8 b( a4 g2 f4)
-  <c e>2( <b d>2)
-@end lilypond
-
-
-@c TODO: should explain that ^( and _( set directions
-@c should set attachments with ^ and _ ?  
-
-Slurs avoid crossing stems, and are generally attached to note heads.
-However, in some situations with beams, slurs may be attached to stem
-ends.  If you want to override this layout you can do this through the
-object property @code{attachment} of @internalsref{Slur} in
-@internalsref{Voice} context.  Its value is a pair of symbols, specifying
-the attachment type of the left and right end points:
-
-@lilypond[fragment,relative,verbatim]
-  \slurUp
-  \property Voice.Stem \set #'length = #5.5
-  g'8(g g4)
-  \property Voice.Slur \set #'attachment = #'(stem . stem)
-  g8( g g4)
-@end lilypond
-
-If a slur would strike through a stem or beam, the slur will be moved
-away upward or downward. If this happens, attaching the slur to the
-stems might look better:
-
-@lilypond[fragment,relative,verbatim]
-  \stemUp \slurUp
-  d32( d'4 d8..)
-  \property Voice.Slur \set #'attachment = #'(stem . stem)
-  d,32( d'4 d8..)
-@end lilypond
-
-@refcommands
-
-
-@cindex @code{\slurUp}
-@code{\slurUp}, 
-@cindex @code{\slurDown}
-@code{\slurDown}, 
-@cindex @code{\slurBoth}
-@code{\slurBoth}, 
-@cindex @code{\slurDotted}
-@code{\slurDotted}, 
-@cindex @code{\slurSolid}
-@code{\slurSolid}.
-
-@seealso
-
-Internals: @seeinternals{Slur}, and @internalsref{SlurEvent}.
-
-
-@refbugs
-
-Producing nice slurs is a difficult problem, and LilyPond currently
-uses a simple, empiric method to produce slurs. In some cases, its
-results are ugly.
-
-
-@cindex Adjusting slurs
-
-@node Phrasing slurs
-@subsection Phrasing slurs
-
-@cindex phrasing slurs
-@cindex phrasing marks
-
-A phrasing slur (or phrasing mark) connects chords and is used to
-indicate a musical sentence. It is started using @code{\(} and @code{\)}
-respectively:
-
-@lilypond[fragment,verbatim,center,relative]
-  \time 6/4 c'\(  d( e) f( e)  d\) 
-@end lilypond
-
-Typographically, the phrasing slur behaves almost exactly like a
-normal slur.  However, they are treated as different objects.  A
-@code{\slurUp} will have no effect on a phrasing slur; instead, you
-should use @code{\phrasingSlurUp}, @code{\phrasingSlurDown}, and
-@code{\phrasingSlurBoth}.
-
-The commands @code{\slurUp}, @code{\slurDown}, and @code{\slurBoth}
-will only affect normal slurs and not phrasing slurs.
-
-@refcommands
-
-@cindex @code{\phrasingSlurUp}
-@code{\phrasingSlurUp}, 
-@cindex @code{\phrasingSlurDown}
-@code{\phrasingSlurDown}, 
-@cindex @code{\phrasingSlurBoth}
-@code{\phrasingSlurBoth}, 
-
-@seealso
-
-Internals: see also @internalsref{PhrasingSlur}, and
-@internalsref{PhrasingSlurEvent}.
-
-@refbugs
-
-Phrasing slurs have the same limitations in their formatting as normal
-slurs. Putting phrasing slurs over rests leads to spurious warnings.
-
-@node Breath marks
-@subsection Breath marks
-
-Breath marks are entered using @code{\breathe}:
-
-
-@lilypond[fragment,relative,verbatim]
-c'4 \breathe d4
-@end lilypond
-
-The glyph of the breath mark can be tweaked by overriding the
-@code{text} property of the @code{BreathingSign} layout object with
-any markup text.   For example,
-@lilypond[fragment,verbatim,relative]
-c'4
-\property Voice.BreathingSign \override #'text
- = #(make-musicglyph-markup "scripts-rvarcomma")
-\breathe
-d4
-@end lilypond
-
-@seealso 
-
-Internals: @internalsref{BreathingSign},
-@internalsref{BreathingSignEvent}
-
-Examples: @inputfileref{input/regression,breathing-sign.ly}.
-
-
-@node Metronome marks
-@subsection Metronome marks
-
-@cindex Tempo
-@cindex beats per minute
-@cindex metronome marking
-
-Metronome settings can be entered as follows:
-@example 
-  \tempo @var{duration} = @var{perminute} 
-@end example
-
-In the MIDI output, they are interpreted as a tempo change, and in the
-paper output, a metronome marking is printed:
-@cindex @code{\tempo}
-@lilypond[fragment,verbatim]
-  \tempo 8.=120 c''1
-@end lilypond
-
-@seealso
-
-Internals: @internalsref{MetronomeChangeEvent}.
-  
-
-
-@node Text spanners
-@subsection Text spanners
-@cindex Text spanners
-
-Some performance indications, e.g. @i{rallentando} or @i{accelerando},
-are written as texts, and extended over many measures with dotted
-lines.  You can create such texts using text spanners: attach
-@code{\startTextSpan} and @code{\stopTextSpan} to the
-start and ending note of the spanner. 
-
-The string to be printed, as well as the style, is set through object
-properties:
-
-@lilypond[fragment,relative,verbatim]
- \relative c' {  c1 
-  \property Voice.TextSpanner \set #'direction = #-1
-  \property Voice.TextSpanner \set #'edge-text = #'("rall " . "")
-  c2\startTextSpan b c\stopTextSpan a }
-@end lilypond
-
-
-@seealso
-
-Internals @internalsref{TextSpanEvent},
-@internalsref{TextSpanner}.
-
-Examples: @inputfileref{input/regression,text-spanner.ly}.
-
-
-@node Analysis brackets
-@subsection Analysis brackets
-@cindex brackets
-@cindex phrasing brackets
-@cindex musicological analysis
-@cindex note grouping bracket
-
-Brackets are used in musical analysis to indicate structure in musical
-pieces. LilyPond supports a simple form of nested horizontal brackets.
-To use this, add the @internalsref{Horizontal_bracket_engraver} to
-@internalsref{Staff} context.  A bracket is started with
-@code{\startGroup} and closed with @code{\stopGroup}:
-
-@lilypond[raggedright,verbatim]
-\score { \notes \relative c'' {  
-	c4\startGroup\startGroup
-	c4\stopGroup
-	c4\startGroup
-        c4\stopGroup\stopGroup
-  }
-  \paper { \translator {
-	    \StaffContext \consists "Horizontal_bracket_engraver"
-	}}}
-@end lilypond
-
-@seealso
-
-Internals: @internalsref{HorizontalBracket},
-@internalsref{NoteGroupingEvent}
-
-Examples: @inputfileref{input/regression,note-group-bracket.ly}. 
-
-
-@node Articulations
-@subsection Articulations
-@cindex Articulations
-
-@cindex articulations
-@cindex scripts
-@cindex ornaments
-
-A variety of symbols can appear above and below notes to indicate
-different characteristics of the performance. They are added to a note
-by adding a dash and  the character signifying the
-articulation. They are demonstrated here:
-
-@lilypondfile[]{script-abbreviations.ly}
-
-The meanings of these shorthands can be changed: see
-@file{ly/script-init.ly} for examples.
-
-
-The script is automatically placed, but if you need to force
-directions, you can use @code{_} to force them down, or @code{^} to
-put them up:
-@lilypond[fragment,verbatim]
-  c''4^^ c''4_^
-@end lilypond
-
-Other symbols can be added using the syntax
-@var{note}@code{\}@var{name}, e.g. @code{c4\fermata}. Again, they
-can be forced up or down using @code{^} and @code{_},
-eg.
-
-@lilypond[verbatim,fragment,relative=2]
-  c\fermata c^\fermata c_\fermata
-@end lilypond
-
-
-
-@cindex accent
-@cindex marcato
-@cindex staccatissimo
-@cindex fermata
-@cindex stopped
-@cindex staccato
-@cindex portato
-@cindex tenuto
-@cindex upbow
-@cindex downbow
-@cindex foot marks
-@cindex organ pedal marks
-@cindex turn
-@cindex open
-@cindex flageolet
-@cindex reverseturn
-@cindex trill
-@cindex prall
-@cindex mordent
-@cindex prallprall
-@cindex prallmordent
-@cindex prall, up
-@cindex prall, down
-@cindex mordent
-@cindex thumb marking
-@cindex segno
-@cindex coda
-@cindex varcoda
-
-@lilypondfile[]{script-chart.ly}
-
-
-@refcommands
-
-@cindex @code{\scriptUp}
-@code{\scriptUp}, 
-@cindex @code{\scriptDown}
-@code{\scriptDown}, 
-@cindex @code{\scriptBoth}
-@code{\scriptBoth}.
-
-@seealso
-
-Internals: @internalsref{ScriptEvent}, and @internalsref{Script}.
-
-@refbugs
-
-These note ornaments appear in the printed output but have no
-effect on the MIDI rendering of the music.
-
-
-@node Fingering instructions
-@subsection Fingering instructions
-
-@cindex fingering
-
-Fingering instructions can be entered using
-@example
-  @var{note}-@var{digit}
-@end example
-For finger changes, use markup texts:
-@c
-@lilypond[verbatim,raggedright,fragment]
-      c'4-1 c'4-2 c'4-3 c'4-4
-      c'^\markup { \fontsize #-3 \number "2-3" }
-@end lilypond
-
-@cindex finger change
-@cindex scripts
-@cindex superscript
-@cindex subscript
-
-You can use the thumb-script to indicate that a note should be
-played with the thumb (e.g. in cello music):
-
-@lilypond[verbatim,raggedright,fragment]
-      <a' a''-3>8(_\thumb <b' b''-3>)_\thumb
-      <c'' c'''-3>(_\thumb <d'' d'''-3>)_\thumb
-@end lilypond
-
-Fingerings for chords can also be added to individual notes
-of the chord by adding them after the pitches:
-@lilypond[verbatim,raggedright,fragment,relative=1]
-        < c-1  e-2 g-3 b-5 > 4
-@end lilypond
-
-@noindent
-In this case, setting @code{fingeringOrientations} will put  fingerings next
-to note heads:
-
-@lilypond[verbatim,raggedright,fragment,relative=1]
-	\property Voice.fingeringOrientations = #'(left down)
-	<c-1 es-2 g-4 bes-5 > 4
-	\property Voice.fingeringOrientations = #'(up right down)
-	<c-1 es-2 g-4 bes-5 > 4
-@end lilypond
-
-By using single note chords,  fingering instructions can be put close
-to note heads in monophonic music.
-        
-@seealso
-
-Internals: @internalsref{FingerEvent}, and @internalsref{Fingering}.
-
-Examples: @inputfileref{input/regression,finger-chords.ly}
-
-@node Text scripts
-@subsection Text scripts
-@cindex Text scripts
-
-@cindex text items, non-empty
-@cindex non-empty texts
-
-It is possible to place arbitrary strings of text or markup text (see
-@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{\fatText}, the widths
-will be taken into account:
-@c
-@lilypond[fragment,raggedright,verbatim] \relative c' {
-c4^"longtext" \fatText c4_"longlongtext" c4 }
-@end lilypond
-
-It is possible to use @TeX{} commands in the strings, but this should
-be avoided because the exact dimensions of the string can then no
-longer be computed.
-
-@refcommands
-
-@refcommand{fatText}, @refcommand{emptyText}.
-
-
-@seealso
-
-In this manual: @ref{Text markup}.
-
-Internals: @internalsref{TextScriptEvent}, @internalsref{TextScript}
-
-
-
-
-@node Grace notes
-@subsection Grace notes
-
-
-@c should have blurb about accaciatura / appogiatura
-
-@cindex @code{\grace}
-@cindex ornaments
-@cindex grace notes
-
-Grace notes are ornaments that are written out.  The most common ones
-are acciaccatura, which should be played as very short.  It is denoted
-by a slurred small note with a slashed stem.  The appoggiatura is a
-grace note that takes a fixed fraction of the main note, is and
-denoted as a slurred note in small print without a slash.
-They are entered with the commands @code{\acciaccatura} and
-@code{\appoggiatura}, as demonstrated in the following example:
-
-
-@cindex appoggiatura
-@cindex acciaccatura
-
-@lilypond[relative=2,verbatim,fragment]
-b4 \acciaccatura d8 c4 \appoggiatura e8 d4
-\acciaccatura { g16[ f] } e4
-@end lilypond
-
-Both are special forms of the @code{\grace} command. By prefixing this
-keyword to a music expression, a new one is formed, which will be
-printed in a smaller font and takes up no logical time in a measure.
-@lilypond[relative=2,verbatim,fragment]
-  c4 \grace c16 c4
-  \grace { c16[ d16] } c2 c4
-@end lilypond
-
-@noindent
-Unlike @code{\acciaccatura} and @code{\appoggiatura}, the
-@code{\grace} command does not start a slur.
-
-Internally, timing for grace notes is done using a second, `grace'
-time. Every point in time consists of two rational numbers: one
-denotes the logical time, one denotes the grace timing. The above
-example is shown here with timing tuples:
-
-@lilypond[raggedright]
-<<
-  \relative c''{ 
-  c4  \grace c16  c4  \grace {
-  c16[  d16] } c2 c4
-  }
-  \new Lyrics \lyrics {
-      \markup { (0,0)  } 4
-      \grace { \markup {
-	  ( \fraction 1 4 ,  \fraction -1 16 ) } 16 }
-      \markup { (\fraction 1 4 , 0 ) } 4
-      \grace {
-	  \markup { (\fraction 2 4 , \fraction "-1" 8 ) } 16
-	  \markup { (\fraction 2 4 , \fraction "-1" 16 ) } 16
-	  } 
-      \markup { ( \fraction 2 4 , 0 ) }
-  } >>
-@end lilypond
-
-
-The placement of grace notes is synchronized between different staves.
-In the following example, there are two sixteenth graces notes for
-every eighth grace note:
-
-@lilypond[relative=2,verbatim,fragment] 
-<< \new Staff { e4 \grace { c16[ d e f] } e4 }
-  \new Staff { c'4 \grace { g8[ b] } c4 } >>
-@end lilypond
-
-
-
-If you want to end a note with a grace, then the standard trick
-is to put the grace notes after a ``space note'', e.g.
-@lilypond[fragment,verbatim,relative=2]
-\context Voice {
-    << { d1^\trill ( }
-     { s2 \grace { c16[ d] } } >>
-   c4)
-}
-@end lilypond
-
-@noindent
-By adjusting the duration of the skip note (here it is a half-note),
-the space between the main-note and the grace is adjusted.
-
-
-A @code{\grace} section will introduce special typesetting settings,
-for example, to produce smaller type, and set directions. Hence, when
-introducing layout tweaks, they should be inside the grace section,
-for example,
-@lilypond[fragment,verbatim,relative=1]
-\new Voice {
-    \acciaccatura {
-      \property Voice.Stem \override #'direction = #-1
-      f16->
-      \property Voice.Stem \revert #'direction
-    }
-    g4
-}
-@end lilypond
-
-@noindent
-The overrides should also be reverted inside the grace section.
-
-If the layout of grace sections must be changed throughout the music,
-then this can be accomplished through the function
-@code{add-grace-property}. The following example
-undefines the Stem direction  grace section, so stems do not always
-point up.
-
-@example
-  \new Staff @{
-     #(add-grace-property "Voice" Stem direction '())
-     @dots{}
-  @}
-@end example
-
-@noindent
-Another option is to change the variables @code{startGraceMusic},
-@code{stopGraceMusic}, @code{startAccacciaturaMusic},
-@code{stopAccacciaturaMusic}, @code{startAppoggiaturaMusic},
-@code{stopAppoggiaturaMusic}.  More information is in the file
-@file{ly/grace-init.ly}
-
-
-@seealso
-
-Internals: @internalsref{GraceMusic}.
-
-@refbugs
-
-A score that starts with an @code{\grace} section needs an explicit
-@code{\context Voice} declaration, otherwise the main note and grace
-note end up on different staves.
-
-Grace note synchronization can also lead to surprises. Staff notation,
-such as key signatures, barlines, etc. are also synchronized. Take
-care when you mix staves with grace notes and staves without, for example,
-
-@lilypond[relative=2,verbatim,fragment]
-<< \new Staff { e4 \bar "|:" \grace c16 d4 }
-  \new Staff { c4 \bar "|:"  d4 } >>
-@end lilypond
-
-Grace sections should only be used within sequential music
-expressions.  Nesting or juxtaposing grace sections is not supported,
-and might produce crashes or other errors.
-
-
-@node Glissando
-@subsection Glissando
-@cindex Glissando 
-
-@cindex @code{\glissando}
-
-A glissando is a smooth change in pitch. It is denoted by a line or a
-wavy line between two notes.
-
-@syntax
-
-A glissando line can be requested by attaching a @code{\glissando} to
-a note:
-
-@lilypond[fragment,relative,verbatim]
-  c'\glissando c'
-@end lilypond
-
-@seealso
-
-Internals: @internalsref{Glissando}, and @internalsref{GlissandoEvent}.
-
-
-@refbugs
-
-Adding additional texts (such as @emph{gliss.}) is not supported.
-
-
-@node Dynamics
-@subsection Dynamics
-@cindex Dynamics
-
-
-
-@cindex @code{\ppp}
-@cindex @code{\pp}
-@cindex @code{\p}
-@cindex @code{\mp}
-@cindex @code{\mf}
-@cindex @code{\f}
-@cindex @code{\ff}
-@cindex @code{\fff}
-@cindex @code{\ffff}
-@cindex @code{\fp}
-@cindex @code{\sf}
-@cindex @code{\sff}
-@cindex @code{\sp}
-@cindex @code{\spp}
-@cindex @code{\sfz}
-@cindex @code{\rfz}
-
-
-Absolute dynamic marks are specified using an variable after a
-note: @code{c4\ff}.  The available dynamic marks are @code{\ppp},
-@code{\pp}, @code{\p}, @code{\mp}, @code{\mf}, @code{\f}, @code{\ff},
-@code{\fff}, @code{\fff}, @code{\fp}, @code{\sf}, @code{\sff},
-@code{\sp}, @code{\spp}, @code{\sfz}, and @code{\rfz}:
-
-@lilypond[verbatim,raggedright,fragment,relative]
-  c'\ppp c\pp c \p c\mp c\mf c\f c\ff c\fff
-  c2\sf c\rfz
-@end lilypond
-
-@cindex @code{\cr}
-@cindex @code{\rc}
-@cindex @code{\decr}
-@cindex @code{\rced}
-@cindex @code{\<}
-@cindex @code{\>}
-@cindex @code{\"!}
-
-
-
-A crescendo mark is started with @code{\<} and terminated with
-@code{\!}. A decrescendo is started with @code{\>} and also terminated
-with @code{\!}.  Because these marks are bound to notes, if you must
-use spacer notes if multiple marks during one note are needed:
-
-@lilypond[fragment,verbatim,center,quote]
-  c''\< c''\!   d''\decr e''\rced 
-  << f''1 { s4 s4\< s4\! \>  s4\! } >>
-@end lilypond
-This may give rise to very short hairpins. Use @code{minimum-length}
-in @internalsref{Voice}.@internalsref{Hairpin} to lengthen them, for
-example:
-
-@example
- \property Staff.Hairpin \override #'minimum-length = #5
-@end example
-
-You can also use a text saying @emph{cresc.} instead of hairpins. Here
-is an example how to do it:
-
-@lilypond[fragment,relative=2,verbatim]
-  c4 \cresc c4 c c c \endcresc c4
-@end lilypond
-
-@cindex crescendo
-@cindex decrescendo
-
-You can also supply your own texts:
-@lilypond[fragment,relative,verbatim]
-  \context Voice {
-    \property Voice.crescendoText = \markup { \italic "cresc. poco" }
-    \property Voice.crescendoSpanner = #'dashed-line
-    a'2\< a a a\!\mf
-  }
-@end lilypond
-
-@cindex diminuendo
-
-
-@refcommands
-
-@cindex @code{\dynamicUp}
-@code{\dynamicUp}, 
-@cindex @code{\dynamicDown}
-@code{\dynamicDown}, 
-@cindex @code{\dynamicBoth}
-@code{\dynamicBoth}.
-
-@cindex direction, of dynamics
-
-@seealso
-
-Internals: @internalsref{CrescendoEvent}, @internalsref{DecrescendoEvent}, and
-@internalsref{AbsoluteDynamicEvent}.
-
-Dynamics are objects of @internalsref{DynamicText} and
-@internalsref{Hairpin}. Vertical positioning of these symbols is
-handled by the @internalsref{DynamicLineSpanner} object.
-
-If you want to adjust padding or vertical direction of the dynamics, you 
-must set properties for the @internalsref{DynamicLineSpanner} object.
-
-
-@node Repeats
-@section Repeats
-
-
-@cindex repeats
-@cindex @code{\repeat}
-
-
-Repetition is a central concept in music, and multiple notations exist
-for repetitions. In LilyPond, most of these notations can be captured
-in a uniform syntax. One of the advantages is that they can be
-rendered in MIDI accurately.
-
-The following types of repetition are supported:
-
-@table @code
-@item unfold
-Repeated music is fully written (played) out.  Useful for MIDI
-output, and entering repetitive music.
-
-@item volta
-This is the normal notation: Repeats are not written out, but
-alternative endings (voltas) are printed, left to right.
-
-@ignore
-@item fold
-Alternative endings are written stacked. This has limited use but may be
-used to typeset two lines of lyrics in songs with repeats, see
-@inputfileref{input,star-spangled-banner.ly}.
-@end ignore
-
-@c tremolo, beamed
-@item tremolo
-Make tremolo beams.
-
-@item percent
-Make beat or measure repeats. These look like percent signs.
-
-@end table  
-
-@menu
-* Repeat syntax::               
-* Repeats and MIDI::            
-* Manual repeat commands::      
-* Tremolo repeats::             
-* Tremolo subdivisions::        
-* Measure repeats::             
-@end menu
-
-@node Repeat syntax
-@subsection Repeat syntax
-
-@syntax
-
-LilyPond has one syntactic construct for specifying different types of
-repeats.  The syntax is
-
-@example
-  \repeat @var{variant} @var{repeatcount} @var{repeatbody}
-@end example
-
-If you have alternative endings, you may add
-@cindex @code{\alternative}
-@example
- \alternative @code{@{} @var{alternative1}
-            @var{alternative2}
-            @var{alternative3} @dots{} @code{@}}
-@end example
-where each @var{alternative} is a music expression.  If you do not
-give enough alternatives for all of the repeats, then the first
-alternative is assumed to be played more than once.
-
-Normal notation repeats are used like this:
-@lilypond[fragment,verbatim,relative=1]
-  c1
-  \repeat volta 2 { c4 d e f }
-  \repeat volta 2 { f e d c }
-@end lilypond
-
-With alternative endings:
-@lilypond[fragment,verbatim,relative=1]
-  c1
-  \repeat volta 2 {c4 d e f} 
-  \alternative { {d2 d} {f f,} }
-@end lilypond
-
-
-@lilypond[fragment,verbatim,relative=1]
-\context Staff {
-    \partial 4
-    \repeat volta 4 { e | c2 d2 | e2 f2 | }
-    \alternative { { g4 g g } { a | a a a a | b2. } }
-}
-@end lilypond
-
-@refbugs
-
-If you do a nested repeat like
-
-@example 
-\repeat @dots{}
-\repeat @dots{}
-\alternative 
-@end example 
-
-@noindent
-then it is ambiguous to which @code{\repeat} the @code{\alternative}
-belongs. This ambiguity is resolved by always having the
-@code{\alternative} belong to the inner @code{\repeat}.  For clarity,
-it is advisable to use braces in such situations.
-@cindex ambiguity
-
-@node Repeats and MIDI
-@subsection Repeats and MIDI
-
-@cindex expanding repeats
-
-For instructions on how to unfold repeats for MIDI output, see the
-example file @inputfileref{input/test,unfold-all-repeats.ly}.
-
-
-@refbugs
-
-Timing information is not remembered at the start of an alternative,
-so after a repeat timing information must be reset by hand, for
-example by setting @code{Score.measurePosition} or entering
-@code{\partial}.  Similarly, slurs or ties are also not repeated.
-
-
-@node Manual repeat commands
-@subsection Manual repeat commands
-
-@cindex @code{repeatCommands}
-
-The property @code{repeatCommands} can be used to control the layout of
-repeats. Its value is a Scheme list of repeat commands, where each repeat
-command can be
-
-@table @asis
-@item the symbol @code{start-repeat},
-  which prints a @code{|:} bar line,
-@item the symbol @code{end-repeat},
-  which prints a @code{:|} bar line,
-@item the list @code{(volta @var{text})},
-  which prints a volta bracket saying @var{text}: The text can be specified as
-a text string or as a markup text, see @ref{Text markup}. Do not
-forget to change the font, as the default number font does not contain
-alphabetic characters. Or,
-@item the list @code{(volta #f)}, which 
-  stops a running volta bracket:
-@end table
-
-@lilypond[verbatim,fragment,relative=2]
- c4
-    \property Score.repeatCommands = #'((volta "93") end-repeat)
- c4 c4
-    \property Score.repeatCommands = #'((volta #f))
- c4 c4
-@end lilypond
-
-
-@seealso
-
-Internals: @internalsref{VoltaBracket}, @internalsref{RepeatedMusic},
-@internalsref{VoltaRepeatedMusic},
-@internalsref{UnfoldedRepeatedMusic}, and
-@internalsref{FoldedRepeatedMusic}.
-
-@node Tremolo repeats
-@subsection Tremolo repeats
-@cindex tremolo beams
-
-To place tremolo marks between notes, use @code{\repeat} with tremolo
-style:
-@lilypond[verbatim,raggedright]
-\score { 
-  \context Voice \notes\relative c' {
-    \repeat "tremolo" 8 { c16 d16 }
-    \repeat "tremolo" 4 { c16 d16 }    
-    \repeat "tremolo" 2 { c16 d16 }
-  }
-}
-@end lilypond
-
-Tremolo marks can also be put on a single note.  In this case, the
-note should not be surrounded by braces.
-@lilypond[verbatim,raggedright]
-    \repeat "tremolo" 4 c16
-@end lilypond
-
-A similar mechanism  is the tremolo subdivision, described in
-@ref{Tremolo subdivisions}.
-
-@seealso
-
-In this manual: @ref{Tremolo subdivisions}, @ref{Repeats}.
-
-Internals: tremolo beams are @internalsref{Beam} objects. Single stem
-tremolos are @internalsref{StemTremolo}s.  The music expression is
-@internalsref{TremoloEvent},
-
-Example files: @inputfileref{input/regression,chord-tremolo.ly},
-@inputfileref{input/regression,stem-tremolo.ly}.
-
-@node Tremolo subdivisions
-@subsection Tremolo subdivisions
-@cindex tremolo marks
-@cindex @code{tremoloFlags}
-
-Tremolo marks can be printed on a single note by adding
-`@code{:}[@var{length}]' after the note.  The length must be at least 8.
-A @var{length} value of 8 gives one line across the note stem.  If the
-length is omitted, then then the last value (stored in
-@code{Voice.tremoloFlags}) is used:
-
-@lilypond[verbatim,fragment,center]
-  c'2:8 c':32 | c': c': |
-@end lilypond
-
-@c [TODO : stok is te kort bij 32en]
-
-@refbugs
-
-Tremolos in this style do not carry over into the MIDI output.
-
-@seealso
-
-In this manual: @ref{Tremolo repeats}.
-
-Elsewhere: @internalsref{StemTremolo}, @internalsref{TremoloEvent}.
-
-@node Measure repeats
-@subsection Measure repeats
-
-@cindex percent repeats
-@cindex measure repeats
-
-In the @code{percent} style, a note pattern can be repeated. It is
-printed once, and then the pattern is replaced with a special sign.
-Patterns of a one and two measures are replaced by percent-like signs,
-patterns that divide the measure length are replaced by slashes:
-
-@lilypond[verbatim,raggedright]
- \context Voice { \repeat  "percent" 4  { c'4 }
-    \repeat "percent" 2 { c'2 es'2 f'4 fis'4 g'4 c''4 }
-}
-@end lilypond   
-
-@seealso
-
-Internals: @internalsref{RepeatSlash}, @internalsref{PercentRepeat},
-@internalsref{PercentRepeatedMusic}, and
-@internalsref{DoublePercentRepeat}.
-
-
-
-@node Rhythmic music
-@section Rhythmic music
-
-
-@menu
-* Showing melody rhythms::      
-* Entering percussion::         
-* Percussion staves::           
-@end menu
-
-
-@node Showing melody rhythms
-@subsection Showing melody rhythms
-
-Sometimes you might want to show only the rhythm of a melody.  This
-can be done with the rhythmic staff. All pitches of notes on such a
-staff are squashed, and the staff itself has a single line:
-
-@lilypond[fragment,relative,verbatim]
-  \context RhythmicStaff {
-      \time 4/4
-      c4 e8 f  g2 | r4 g r2 | g1:32 | r1 |
-  }
-@end lilypond
-
-@seealso
-
-Internals: @internalsref{RhythmicStaff}.
-
-Examples: @inputfileref{input/regression,rhythmic-staff.ly}.
-
-
-@node Entering percussion
-@subsection Entering percussion
-
-@cindex percussion
-@cindex drums
-
-@syntax
-
-Percussion notes may be entered in @code{\drums} mode, which is
-similar to @code{notes}.  Each piece of percussion has a full name and
-an abbreviated name, and both be used in input files:
-
-@lilypond[raggedright]
- \drums { hihat4 hh4 }
-@end lilypond
-
-The complete list of drum names is in the init file
-@file{ly/drumpitch-init.ly}.
-@c TODO: properly document this.
-
-@seealso
-
-Internals: @internalsref{DrumNoteEvent}
-
-@node Percussion staves
-@subsection Percussion staves
-@cindex percussion
-@cindex drums
-
-A percussion part for more than one instrument typically uses a
-multiline staff where each position in the staff refers to one piece
-of percussion.
-
-
-To typeset the music, the notes must be interpreted in a
-@internalsref{DrumStaff} and @internalsref{DrumVoice} contexts:
-
-@c
-@lilypond[raggedright,verbatim,quote]
-up = \drums { crashcymbal4 hihat8 halfopenhihat hh hh hh openhihat }
-down = \drums { bassdrum4 snare8 bd r bd sn4 }
-\score {
-    \new DrumStaff
-        << \new DrumVoice { \voiceOne \up } 
-           \new DrumVoice { \voiceTwo \down } 
->> }
-@end lilypond
-
-There are also other layout possibilities. To use these, set the
-property @code{drumStyleTable} in context @internalsref{DrumVoice}.
-The following variables have been predefined:
-
-@table @code
-@item drums-style
-is the default. It typesets a typical drum kit on a five-line staff
-
-@lilypond[noindent]
-nam = \lyrics { cymc cyms cymr hh hhc hho hhho hhp cb hc
-    bd sn ss tomh tommh tomml toml tomfh tomfl }
-mus = \drums  { cymc cyms cymr hh | hhc hho hhho hhp | \break cb hc
-    bd sn ss tomh tommh tomml toml tomfh tomfl s16 }
-\score {
-    << \new DrumStaff\with {
-            \remove Bar_engraver
-            \remove Time_signature_engraver
-            Stem \set #'transparent =  ##t
-            Stem \set #'Y-extent-callback =  ##f
-            minimumVerticalExtent = #'(-4.0 . 5.0)
-    } \mus
-        \context Lyrics \nam 
-    >>
-    \paper {
-    %% need to do this, because of indented @itemize
-    linewidth= 9 \cm 
-    \translator { \ScoreContext
-    BarNumber \set #'transparent =##T
-}}}
-@end lilypond
-
-The drum scheme supports six different toms.  When there fewer toms, simply
-select the toms that produce the desired result, i.e. to get toms on
-the three middle lines you use @code{tommh}, @code{tomml} and
-@code{tomfh}.
-
-@item timbales-style
-to typeset timbales on a two line staff:
-
-@lilypond[raggedright]
-nam = \lyrics { timh ssh timl ssl cb }
-mus = \drums  { timh ssh timl ssl cb s16 }
-\score {
-    <<
-        \context DrumStaff \with {
-            \remove Bar_engraver
-            \remove Time_signature_engraver
-            Stem \set #'transparent =  ##t
-            Stem \set #'Y-extent-callback =  ##f
-            StaffSymbol \override #'line-count = #2
-            StaffSymbol \override #'staff-space = #2
-            minimumVerticalExtent = #'(-3.0 . 4.0)
-            drumStyleTable = #timbales-style
-        } \mus
-        \context Lyrics \nam 
-    >>
-}
-@end lilypond
-@item congas-style
-to typeset congas on a two line staff:
-
-@lilypond[raggedright]
-nam = \lyrics { cgh cgho cghm ssh cgl cglo cglm ssl }
-mus = \drums  { cgh cgho cghm ssh cgl cglo cglm ssl s16 }
-\score {
-    <<
-        \context DrumStaff\with {
-            \remove Bar_engraver
-            \remove Time_signature_engraver
-            drumStyleTable = #congas-style
-            StaffSymbol \override #'line-count = #2
-            
-            %% this sucks; it will lengthen stems.
-            StaffSymbol \override #'staff-space = #2
-            Stem \set #'transparent =  ##t
-            Stem \set #'Y-extent-callback =  ##f
-        } \mus
-        \context Lyrics \nam 
-    >>
-}
-@end lilypond
-@item bongos-style
-to typeset bongos on a two line staff:
-
-@lilypond[raggedright]
-nam = \lyrics { boh boho bohm ssh bol bolo bolm ssl }
-mus = \drums  { boh boho bohm ssh bol bolo bolm ssl s16 }
-\score {
-    <<
-        \context DrumStaff\with {
-            \remove Bar_engraver
-            \remove Time_signature_engraver
-            StaffSymbol \override #'line-count = #2
-            drumStyleTable = #bongos-style
-           
-            %% this sucks; it will lengthen stems.
-            StaffSymbol \override #'staff-space = #2
-            Stem \set #'transparent =  ##t
-            Stem \set #'Y-extent-callback =  ##f
-        } \mus
-        \context Lyrics \nam 
-    >>
-}
-@end lilypond
-
-@item percussion-style
-to typeset all kinds of simple percussion on one line staves:
-@lilypond[raggedright]
-nam = \lyrics { tri trio trim gui guis guil cb cl tamb cab mar hc }
-mus = \drums  { tri trio trim gui guis guil cb cl tamb cab mar hc s16 }
-\score {
-    <<
-        \context DrumStaff\with{
-            \remove Bar_engraver
-            drumStyleTable = #percussion-style
-            StaffSymbol \override #'line-count = #1
-            \remove Time_signature_engraver
-            Stem \set #'transparent =  ##t
-            Stem \set #'Y-extent-callback =  ##f
-        } \mus
-        \context Lyrics \nam 
-    >>
-}
-@end lilypond
-@end table
-
-If you do not like any of the predefined lists you can define your own
-list at the top of your file:
-
-@lilypond[raggedright,verbatim]
-#(define mydrums '(
-        (bassdrum     default   #f        -1)
-        (snare        default   #f        0)
-        (hihat        cross     #f        1)
-        (pedalhihat   xcircle   "stopped" 2)
-        (lowtom	      diamond   #f       3)
-))
-up = \drums { hh8 hh hh hh hhp4 hhp }
-down = \drums { bd4 sn bd toml8 toml }
-\score {
-    \new DrumStaff <<
-        \property DrumStaff.drumStyleTable
-           = #(alist->hash-table mydrums)
-        \new DrumVoice { \voiceOne \up }
-        \new DrumVoice { \voiceTwo \down }
-    >>
-}
-@end lilypond
-
-
-@seealso
-
-Init files: @file{ly/drumpitch-init.ly}
-
-Internals: @internalsref{DrumStaff}, @internalsref{DrumVoice} 
-
-@refbugs
-
-Short polyphonic notation, @code{<< @dots{} \\ @dots{} >>}, does not
-work for @internalsref{DrumVoices}.
-
-Because general MIDI does not contain rimshots the sidestick is used
-for this purpose instead.
-
-@node Piano music
-@section Piano music
-
-Piano staves are two normal staves coupled with a brace.  The staves
-are largely independent, but sometimes voices can cross between the
-two staves.  The same notation is also used for harps and other key
-instruments.  The @internalsref{PianoStaff} is especially built to
-handle this cross-staffing behavior.  In this section we discuss the
-@internalsref{PianoStaff} and some other pianistic peculiarities.
-
-
-@menu
-* Automatic staff changes::     
-* Manual staff switches::       
-* Pedals::                      
-* Arpeggio::                    
-* Staff switch lines::          
-@end menu 
-
-@refbugs
-
-There is no support for putting chords across staves.  You can get
-this result by increasing the length of the stem in the lower stave so
-it reaches the stem in the upper stave, or vice versa. An example is
-included with the distribution as
-@inputfileref{input/test,stem-cross-staff.ly}.
-
-Dynamics are not centered, but kludges do exist. See
-@inputfileref{input/template,piano-dynamics.ly}.
-
-@cindex cross staff stem
-@cindex stem, cross staff
-
-
-@c fixme: should have hyperlinks as well.
-
-
-
-
-
-@node Automatic staff changes
-@subsection Automatic staff changes
-@cindex Automatic staff changes
-
-Voices can switch automatically between the top and the bottom
-staff. The syntax for this is
-@example
-  \autochange \context Voice @{ @dots{}@var{music}@dots{} @}
-@end example
-The two staffs of the piano staff must be named @code{up} and
-@code{down}.
-
-The autochanger switches on basis of pitch (central C is the turning
-point), and it looks ahead skipping over rests to switch in
-advance. Here is a practical example:
-        
-@lilypond[verbatim,raggedright,quote]
-\score { \notes \context PianoStaff <<
-  \context Staff = "up" {
-    \autochange \new Voice \relative c' {
-       g4 a  b c d r4 a g } }
-  \context Staff = "down" {
-       \clef bass
-       s1*2
-} >> }
-@end lilypond
-
-@noindent
-In this example, spacer rests are used to prevent the bottom staff from
-terminating too soon.
-
-
-@seealso
-
-In this manual: @ref{Manual staff switches} 
-
-Internals: @internalsref{AutoChangeMusic}.
-
-
-
-@refbugs
-
-The staff switches often do not end up in optimal places. For high
-quality output, staff switches should be specified manually.
-
-
-
-@node Manual staff switches
-@subsection Manual staff switches
-
-@cindex manual staff switches
-@cindex staff switch, manual
-
-Voices can be switched between staves manually, using the following command:
-@example
-  \change Staff = @var{staffname} @var{music}
-@end example
-
-@noindent
-The string @var{staffname} is the name of the staff. It switches the
-current voice from its current staff to the Staff called
-@var{staffname}. Typically @var{staffname} is @code{"up"} or
-@code{"down"}.
-
-
-
-@node Pedals
-@subsection Pedals
-@cindex Pedals
-
-Pianos have pedals that alter the way sound are produced. Generally, a
-piano has three pedals, sustain, una corda, and sostenuto.
-
-@syntax
-
-Piano pedal instruction can be expressed by attaching
-@code{\sustainDown}, @code{\sustainUp}, @code{\unaCorda},
-@code{\treCorde}, @code{\sostenutoDown} and @code{\sostenutoUp} to a
-note or chord:
-
-@lilypond[fragment,verbatim]
-  c'4\sustainDown c'4\sustainUp
-@end lilypond
-
-What is printed can be modified by setting @code{pedal@var{X}Strings},
-where @var{X} is one of the pedal types: @code{Sustain},
-@code{Sostenuto} or @code{UnaCorda}.  Refer to the generated
-documentation of @internalsref{SustainPedal} for more information.
-
-Pedals can also be indicated by a sequence of brackets, by setting the 
-@code{pedalSustainStyle} property to @code{bracket} objects: 
-
-@lilypond[fragment,verbatim]
- \property Staff.pedalSustainStyle = #'bracket
- c''4\sustainDown d''4 e''4
- a'4\sustainUp\sustainDown
- f'4 g'4 a'4\sustainUp
-@end lilypond
-
-A third style of pedal notation is a mixture of text and brackets,
-obtained by setting the @code{pedalSustainStyle} style property to
-@code{mixed}:
-
-@lilypond[fragment,verbatim]
- \property Staff.pedalSustainStyle = #'mixed
-c''4\sustainDown d''4 e''4
-c'4\sustainUp\sustainDown
- f'4 g'4 a'4\sustainUp
-@end lilypond
-
-The default `*Ped' style for sustain and damper pedals corresponds to
-style @code{#'text}. The sostenuto pedal uses @code{mixed} style by
-default.
-
-@lilypond[fragment,verbatim]
-c''4\sostenutoDown d''4 e''4 c'4 f'4 g'4 a'4\sostenutoUp
-@end lilypond
-
-For fine-tuning of the appearance of a pedal bracket, the properties
-@code{edge-width}, @code{edge-height}, and @code{shorten-pair} of
-@code{PianoPedalBracket} objects (see
-@internalsref{PianoPedalBracket} in the Program reference)  can be modified.  For example, the
-bracket may be extended to the end of the note head:
-
-@lilypond[fragment,verbatim]
-\property Staff.PianoPedalBracket \override
-   #'shorten-pair = #'(0 . -1.0)
-c''4\sostenutoDown d''4 e''4 c'4
-f'4 g'4 a'4\sostenutoUp
-@end lilypond
-
-@node Arpeggio
-@subsection Arpeggio
-@cindex Arpeggio
-
-@cindex broken arpeggio
-@cindex @code{\arpeggio}
-
-You can specify an arpeggio sign on a chord by attaching an
-@code{\arpeggio} to a chord:
-
-
-@lilypond[fragment,relative,verbatim]
-  <c e g c>\arpeggio
-@end lilypond
-
-When an arpeggio crosses staves, you attach an arpeggio to the chords
-in both staves, and set
-@internalsref{PianoStaff}.@code{connectArpeggios}:
-
-@lilypond[fragment,relative,verbatim]
-  \context PianoStaff <<
-    \property PianoStaff.connectArpeggios = ##t
-    \new Staff  { <c' e g c>\arpeggio }
-    \new Staff { \clef bass  <c,, e g>\arpeggio }
-  >>
-@end lilypond
-
-The direction of the arpeggio is sometimes denoted by adding an
-arrowhead to the wiggly line.  This can be typeset by setting
-@code{arpeggio-direction}:
-
-@lilypond[fragment,relative,verbatim]
-  \context Voice {
-     \property Voice.Arpeggio \set #'arpeggio-direction = #1
-     <c e g c>\arpeggio
-     \property Voice.Arpeggio \set #'arpeggio-direction = #-1
-     <c e g c>\arpeggio
-  }
-@end lilypond
-
-A square bracket on the left indicates that the player should not
-arpeggiate the chord. To draw these brackets, set the
-@code{print-function} property of @code{Arpeggio} or
-@code{PianoStaff.Arpeggio} objects to @code{\arpeggioBracket}, and use
-@code{\arpeggio} statements within the chords as before:
-
-@lilypond[fragment,relative,verbatim]
-    \property PianoStaff.Arpeggio \override
-        #'print-function = \arpeggioBracket
-       <c' e g c>\arpeggio
-@end lilypond
-
-@refcommands
-
-@cindex @code{\arpeggioBracket}
-@code{\arpeggioBracket}, 
-@cindex @code{\arpeggio}
-@code{\arpeggio}.
-
-@seealso
-
-Internals: @internalsref{ArpeggioEvent} music expressions lead to
-@internalsref{Arpeggio} objects.  Cross staff arpeggios are
-@internalsref{PianoStaff}.@internalsref{Arpeggio}.
-
-@refbugs
-
-It is not possible to mix connected arpeggios and unconnected
-arpeggios in one @internalsref{PianoStaff} at the same time.
-
-@node Staff switch lines
-@subsection Staff switch lines
-
-
-@cindex follow voice
-@cindex staff switching
-@cindex cross staff
-
-@cindex @code{followVoice}
-
-Whenever a voice switches to another staff a line connecting the notes
-can be printed automatically. This is enabled if the property
-@code{PianoStaff.followVoice} is set to true:
-
-@lilypond[fragment,relative,verbatim]
-  \context PianoStaff <<
-    \property PianoStaff.followVoice = ##t
-    \context Staff \context Voice {
-      c1
-      \change Staff=two
-      b2 a
-    }
-    \context Staff=two { \clef bass \skip 1*2 }
-  >>  
-@end lilypond
-
-The associated object is @internalsref{VoiceFollower}.
-
-@refcommands
-
-@cindex @code{\showStaffSwitch}
-@code{\showStaffSwitch}, 
-@cindex @code{\hideStaffSwitch}
-@code{\hideStaffSwitch}.
-
-
-@node Vocal music
-@section Vocal music
-
-This section discusses how to enter and print lyrics.
-
-@menu
-* Entering lyrics::             
-* The Lyrics context::          
-* More stanzas::                
-* Ambitus::                     
-@end menu
-
-@node Entering lyrics
-@subsection Entering lyrics
-
-
-@cindex lyrics
-@cindex @code{\lyrics}
-@cindex punctuation
-
-Lyrics are entered in a special input mode. This mode is is introduced
-by the keyword @code{\lyrics}.  In this mode you can enter lyrics, with
-punctuation and accents without any hassle.  Syllables are entered like
-notes, but with pitches replaced by text.  For example,
-@example
-  \lyrics @{ Twin-4 kle4 twin- kle litt- le star2 @}
-@end example
-
-A word in Lyrics mode begins with: an alphabetic character, @code{_},
-@code{?}, @code{!}, @code{:}, @code{'}, the control characters @code{^A}
-through @code{^F}, @code{^Q} through @code{^W}, @code{^Y}, @code{^^},
-any 8-bit character with ASCII code over 127, or a two-character
-combination of a backslash followed by one of @code{`}, @code{'},
-@code{"}, or @code{^}.
-
-Subsequent characters of a word can be any character that is not a digit
-and not white space.  One important consequence of this is that a word
-can end with @code{@}}. The following example is usually a bug. The
-syllable includes a @code{@}}, and hence the opening brace is not balanced:
-@example
-  \lyrics @{ twinkle@}
-@end example
-
-@cindex @code{\property}, in @code{\lyrics}
-Similarly, a  period following a alphabetic sequence, is included in the
-resulting string. As a consequence, spaces must be inserted around
-@code{\property} commands:
-@example
-  \property Lyrics . LyricText \set #'font-shape = #'italic
-@end example
-
-@cindex @code{_}
-@cindex spaces, in lyrics
-@cindex quotes, in lyrics
-
-Any @code{_} character which appears in an unquoted word is converted
-to a space.  This provides a mechanism for introducing spaces into words
-without using quotes.  Quoted words can also be used in Lyrics mode to
-specify words that cannot be written with the above rules:
-
-@example
-  \lyrics @{ He said: "\"Let" my peo ple "go\"" @}
-@end example
-
-@cindex hyphens
-Hyphens can be entered as ordinary hyphens at the end of a syllable, i.e.
-@example
-        soft- ware
-@end example
-
-These will be attached to the end of the first syllable.
-
-Centered hyphens are entered using the special `@code{-}@code{-}' lyric
-as a separate word between syllables.  The hyphen will have variable
-length depending on the space between the syllables and it will be
-centered between the syllables.
-
-@cindex melisma
-@cindex extender
-
-When a lyric is sung over many notes (this is called a melisma), this is
-indicated with a horizontal line centered between a syllable and the
-next one. Such a line is called an extender line, and it is entered as
-@code{__}.
-
-@seealso
-
-Internals: @internalsref{LyricEvent}, @internalsref{HyphenEvent}, and
-@internalsref{ExtenderEvent}.
-
-Examples: @inputfileref{input/test,lyric-hyphen-retain.ly}
-
-@refbugs
-
-The definition of lyrics mode is too complex.
-
-
-
-@node The Lyrics context
-@subsection  The Lyrics context
-
-Lyrics are printed by interpreting them in a @internalsref{Lyrics} context:
-@example
- \context Lyrics \lyrics @dots{}
-@end example
-
-@cindex automatic syllable durations
-@cindex @code{\lyricsto}
-@cindex lyrics and melodies
-
-This will place the lyrics according to the durations that were
-entered. The lyrics can also be aligned under a given melody
-automatically.  In this case, it is no longer necessary to enter the
-correct duration for each syllable.  This is achieved by combining the
-melody and the lyrics with the @code{\lyricsto} expression:
-@example
-\lyricsto @var{name} \new Lyrics @dots{} 
-@end example
-
-This aligns the lyrics to the
-@c
-notes of the @internalsref{Voice} context called @var{name}, which has
-to exist. Therefore, normally the @code{Voice} is specified first, and
-then the lyrics are specified with @code{\lyricsto}.
-
-For different or more complex orderings, the best way is to setup the
-hierarchy of staves and lyrics first, e.g.
-@example
-\context ChoirStaff \notes <<
-  \context Lyrics = sopranoLyrics @{ s1 @}
-  \context Voice = soprano @{ @emph{music} @}
-  \context Lyrics = tenor @{ s1 @}
-  \context Voice = tenorLyrics @{ @emph{music} @}
->>
-@end example
-and then combine the appropriate melodies and lyric lines:
-@example
-  \lyricsto "soprano" \new Lyrics @emph{the lyrics}
-@end example
-
-@noindent
-The final input would resemble
-
-@example
-  << \context ChoirStaff \notes << @emph{setup the music}  >>
-     \lyricsto "soprano" @emph{etc}
-     \lyricsto "alto" @emph{etc}
-     @emph{etc}
-  >>
-@end example 
-
-
-The @code{\lyricsto} command detects melismata: it only puts one
-syllable under a tied or slurred group of notes. If you want to force
-an unslurred group of notes to be a melisma, then insert
-@code{\melisma} after the first note of the group, and
-@code{\melismaEnd} after the last one, e.g.
-
-@lilypond[relative=1,raggedright,fragment,verbatim]
-<<  \context Voice = "lala" { \time 3/4
-    f4 g8
-    \melisma 
-    f e f
-    \melismaEnd
-     e2 }
-  \lyricsto "lala" \new Lyrics \lyrics {
-    la di __ daah 
-  } >>
-@end lilypond
-
-In addition, notes are considered a melisma if they are manually
-beamed, and automatic beaming (see @ref{Setting automatic beam
-behavior}) is switched off.  The criteria for deciding melismata
-can be tuned with the property @code{melismaBusyProperties}. See
-@internalsref{Melisma_engraver} for more information.
-
-When multiple stanzas are put on the same melody, it can happen that
-two stanzas have melismata in different locations. This can be
-remedied by switching off melismata for one
-@internalsref{Lyrics}. This is achieved by setting
-the @code{ignoreMelismata} property to @code{#t}. An example is shown
-in @inputfileref{input/regression,lyric-combine-new.ly}.
-
-@cindex SATB
-@cindex choral score
-
-A complete example of a SATB score setup is in the file
-@inputfileref{input/template,satb.ly}.
-
-
-@refcommands
-
-@code{\melisma}, @code{\melismaEnd}
-@cindex @code{\melismaEnd}
-@cindex @code{\melisma}
-
-@seealso
-
-Internals: Music expressions: @internalsref{LyricCombineMusic},
-Contexts: @internalsref{Lyrics}, @internalsref{Melisma_engraver}.
-
-Examples: @inputfileref{input/template,satb.ly},
-@inputfileref{input/regression,lyric-combine-new.ly}.
- 
-@refbugs
-
-Melismata are not detected automatically, and extender lines must be
-inserted by hand.
-
-
-For proper processing of extender lines, the
-@internalsref{Lyrics} and @internalsref{Voice} should be
-linked. This can be achieved either by using @code{\lyricsto} or by
-setting corresponding names for both contexts. The latter is explained
-in @ref{More stanzas}.
-
-@node More stanzas
-@subsection More stanzas
-
-@cindex phrasing, in lyrics
-
-
-The lyrics should be aligned with the note heads of the melody. To
-achieve this, each line of lyrics should be marked to correspond with
-the melodic line. This is done automatically when @code{\lyricsto},
-but it can also be done manually. 
-
-To this end, give the @internalsref{Voice} context an identity:
-@example
-\context Voice = duet @{
-     \time 3/4
-     g2 e4 a2 f4 g2.  @}
-@end example
-
-Then set the @internalsref{Lyrics} contexts to names starting with
-that identity followed by a dash.  In the preceding example, the
-@internalsref{Voice} identity is @code{duet}, so the identities of the
-@internalsref{Lyrics}s are marked @code{duet-1} and @code{duet-2}:
-@example
-  \context Lyrics = "duet-1" @{
-    Hi, my name is bert. @}
-  \context Lyrics = "duet-2" @{
-    Ooooo, ch\'e -- ri, je t'aime. @}
-@end example
-
-The complete example is shown here:
-@lilypond[raggedright,verbatim]
-\score {
-  << \notes \relative c'' \context Voice = duet { \time 3/4
-     g2 e4 a2 f4 g2.  }
-  \lyrics << \lyricsto "duet" \new Lyrics {
-    \property Lyrics . stanza = "1"
-    Hi, my name is bert. }
-  \lyricsto "duet" \new Lyrics {
-    \property Lyrics . stanza = "2" 
-    Ooooo, ch\'e -- ri, je t'aime. }
-  >> >>
-}
-@end lilypond
-
-@cindex stanza number
-@cindex singer's names
-@cindex name of singer 
-
-Stanza numbers can be added by setting @code{Lyrics.stanza}, e.g.
-
-@example
-    \property Lyrics . stanza = "Bert"
-    @dots{}
-    \property Lyrics . stanza = "Ernie" 
-@end example
-
-Notice how dots are surrounded with spaces in @code{\lyrics} mode, to
-prevent @code{Lyrics.stanza} being interpreted as a single
-string.
-
-Names of the singers should be added using @code{Lyrics
-. vocalName} and @code{Lyrics . vocNam}, analogous to instrument
-annotations for staves.
- 
-To make empty spaces in lyrics, use @code{\skip}.
-
-
-@seealso
-
-Internals: Layout objects @internalsref{LyricText}
-@internalsref{VocalName}.  Music expressions:
-@internalsref{LyricEvent}.
-
-@refbugs
-
-@cindex ambiguity
-
-Input for lyrics introduces a syntactical ambiguity:
- 
-@example 
-foo = bar 
-@end example 
-
-@noindent
-is interpreted as assigning a string identifier @code{\foo} such that
-it contains @code{"bar"}.  However, it could also be interpreted as
-making or a music identifier @code{\foo} containing the syllable
-`bar'.  The force the latter interpretation, use
-@example
-  foo = \lyrics bar4
-@end example
-
-
-@node Ambitus
-@subsection Ambitus
-@cindex ambitus
-
-The term @emph{ambitus} (plural: ambituses) denotes a range of pitches
-for a given voice in a part of music.  It also may denote the pitch
-range that a musical instrument is capable of playing.  Most musical
-instruments have their ambitus standardized (or at least there is
-agreement upon the minimal ambitus of a particular type of
-instrument), such that a composer or arranger of a piece of music can
-easily meet the ambitus constraints of the targeted instrument.
-However, the ambitus of the human voice depends on individual
-physiological state, including education and training of the voice.
-Therefore, a singer potentially has to check for each piece of music
-if the ambitus of that piece meets his individual capabilities.  This
-is why the ambitus of a piece may be of particular value to vocal
-performers.
-
-The ambitus is typically notated on a per-voice basis at the very
-beginning of a piece, e.g. nearby the initial clef or time signature of
-each staff.  The range is graphically specified by two noteheads, that
-represent the minimum and maximum pitch.  Some publishers use a textual
-notation: they put the range in words in front of the corresponding
-staff.  LilyPond only supports the graphical ambitus notation.
-
-To apply, add the @internalsref{Ambitus_engraver} to the
-@internalsref{Voice} context, i.e.
-
-@example
-  \paper @{
-    \translator @{
-      \VoiceContext
-      \consists Ambitus_engraver
-    @}
-  @}
-@end example
-
-This results in the following output:
-@lilypond[raggedright]
-upper = \notes \relative c {
-  \clef "treble"
-  \key c \minor
-  as'' c e2 bes f cis d4 e f2 g
-}
-lower = \notes \relative c {
-  \clef "treble"
-  \key e \major
-  e'4 b g a c es fis a cis b a g f e d2
-}
-\score {
-  \context ChoirStaff {
-    <<
-      \new Staff { \upper }
-      \new Staff { \lower }
-    >>
-  }
-  \paper {
-    \translator {
-      \StaffContext
-      \consists Ambitus_engraver
-    }
-  }
-}
-@end lilypond
-
-If you have multiple voices in a single staff, and you want a single
-ambitus per staff rather than per each voice, then add the
-@internalsref{Ambitus_engraver} to the @internalsref{Staff} context
-rather than to the @internalsref{Voice} context.
-
-It is possible to tune individual ambituses for multiple voices on a
-single staff, for example by erasing or shifting them horizontally. An
-example is in @inputfileref{input/test,ambitus-mixed.ly}
-
-@seealso
-
-Internals: @internalsref{Ambitus}
-
-Examples:  @inputfileref{input/regression,ambitus.ly},
-@inputfileref{input/test,ambitus-mixed.ly}.
-
-@refbugs
-
-There is no collision handling in the case of multiple per-voice
-ambitus.
-
-@node Tablatures
-@section Tablatures
-
-Tablature notation is used for notating music for plucked string
-instruments.  It notates pitches not by using note heads, but by
-indicating on which string and fret a note must be played.  LilyPond
-offers limited support for tablature.
-
-@menu
-* Tablatures basic::            
-* Non-guitar tablatures::       
-@end menu
-
-@node Tablatures basic
-@subsection Tablatures basic
-@cindex Tablatures basic
-
-The string number associated to a note is given as a backslash
-followed by a number, e.g. @code{c4\3} for a C quarter on the third
-string. By default, string 1 is the highest one, and the tuning
-defaults to the standard guitar tuning (with 6 strings).  The notes
-are printed as tablature, by using @internalsref{TabStaff} and
-@internalsref{TabVoice} contexts:
-
-@lilypond[fragment,verbatim]
-\notes \context TabStaff  {
- a,4\5 c'\2 a\3 e'\1
- e\4 c'\2 a\3 e'\1
-}
-@end lilypond
-
-@cindex minimumFret
-
-When no string is specified, the first string that does not give a
-fret number less than @code{minimumFret} is selected. The default
-value for @code{minimumFret} is 0:
-
-
-@example
-e8 fis gis a b cis' dis' e'
-\property TabStaff.minimumFret = #8
-e8 fis gis a b cis' dis' e'
-@end example
-@lilypond[noindent]
-frag = \notes {
-    \key e \major
-    e8 fis gis a b cis' dis' e'
-    \property TabStaff.minimumFret = #8
-    e8 fis gis a b cis' dis' e'
-}
-\score {
-  \context StaffGroup <<
-    \context Staff { \clef "G_8" \frag }
-    \context TabStaff { \frag }
-  >>
-}
-@end lilypond
-
-@seealso
-
-Internals: @internalsref{TabStaff}, @internalsref{TabVoice}, and
-@internalsref{StringNumberEvent}.
-
-@refbugs
-
-Chords are not handled in a special way, and hence the automatic
-string selector may easily select the same string to two notes in a
-chord.
-
-
-@node Non-guitar tablatures
-@subsection Non-guitar tablatures
-@cindex Non-guitar tablatures
-
-You can change the number of strings, by setting the number of lines
-in the @internalsref{TabStaff}. 
-
-You can change the tuning of the strings. A string tuning is given as
-a Scheme list with one integer number for each string, the number
-being the pitch (measured in semitones relative to central C) of an
-open string.  The numbers specified for @code{stringTuning} are the
-numbers of semitones to subtract or add, starting the specified pitch
-by default middle C, in string order. Thus, the notes are e, a, d, and
-g:
-
-@lilypond[fragment,verbatim]
-  \context TabStaff <<
-    \property TabStaff.stringTunings =  #'(-5 -10 -15 -20)
-    
-    \notes {
-      a,4 c' a e' e c' a e'
-    }
-  >> 
-@end lilypond
-
-It is possible to change the Scheme function to format the tablature
-note text. The default is @code{fret-number-tablature-format}, which
-uses the fret number. For instruments that do not use this notation,
-you can create a special tablature formatting function. This function
-takes three argument: string number, string tuning and note pitch.
-
-@refbugs
-
-No guitar special effects have been implemented.
-
-
-
-@node Chord names
-@section Chord names
-@cindex Chords
-
-LilyPond has support for both printing chord names.  Chords may be
-entered in musical chord notation, i.e. @code{< .. >}, but they can
-also be entered by name. Internally, the chords are represented as a
-set of pitches, so they can be transposed:
-
-
-@lilypond[verbatim,raggedright]
-twoWays = \notes \transpose c c' {
-  \chords {
-    c1 f:sus4 bes/f
-  }
-  <c e g>
-  <f bes c'>
-  <f bes d'>
-  }
-
-\score {
-   << \context ChordNames \twoWays
-     \context Voice \twoWays >> }
-@end lilypond
-
-This example also shows that the chord printing routines do not try to
-be intelligent. The last chord (@code{f bes d}) is not interpreted as
-an inversion.
-
-
-@menu
-* Chords mode::                 
-* Printing chord names::        
-@end menu
-
-
-@node Chords mode
-@subsection Chords mode
-@cindex Chords mode
-
-Chord mode is a mode where you can input sets of pitches using common
-names.  It is introduced by the keyword @code{\chords}.
-In chords mode,  a  chord is entered by the root, which is entered
-like a common pitch:
-@lilypond[fragment,verbatim,quote,relative=1]
-\chords { es4.  d8 c2 }
-@end lilypond
-@cindex chord entry
-@cindex chord mode
-
-Other chords may be entered by suffixing a colon, and introducing a
-modifier, and optionally, a number:
-@c
-@lilypond[fragment,verbatim,quote]
-\chords { e1:m e1:7 e1:m7  }
-@end lilypond
-The first number following the root is taken to be the `type' of the
-chord, thirds are added to the root until it reaches the specified
-number:
-@lilypond[fragment,verbatim]
- \chords { c:3 c:5 c:6 c:7 c:8 c:9 c:10 c:11 }
-@end lilypond
-
-@cindex root of chord
-@cindex additions, in chords
-@cindex removals, in  chords
-
-More complex chords may also be constructed  adding separate steps
-to a chord. Additions are added after the  number following
-the colon, and are separated by dots:
-@c
-@lilypond[verbatim,fragment,quote]
-  \chords { c:5.6 c:3.7.8 c:3.6.13 }
-@end lilypond
-Chord steps can be  altered by suffixing a @code{-} or @code{+} sign
-to the number:
-@lilypond[verbatim,fragment,quote]
-  \chords { c:7+ c:5+.3-  c:3-.5-.7- }
-@end lilypond
-Removals are specified similarly, and are introduced by a caret.  They
-must come after the additions:
-@lilypond[verbatim,fragment]
-  \chords { c^3 c:7^5 c:9^3.5 }
-@end lilypond
-
-Modifiers can be used to change pitches. The following modifiers are
-supported:
-@table @code
-@item m
-  is the minor chord. This modifier lowers the 3rd and (if present) the 7th step.
-@item dim
-  is the   diminished chord. This modifier lowers the 3rd, 5th and (if present)
-  the 7th step.
-@item aug
-  is the augmented chord. This modifier raises the 5th step.
-@item maj
-  is the major 7th chord. This modifier raises the 7th step if present.  
-@item sus
-  is the suspended 4th or 2nd. This modifier removes the 3rd
-step. Append either @code{2} or @code{4} to add the 2nd or 4th step to
-the chord.
-@end table
-Modifiers can be mixed with additions:
-@lilypond[verbatim,fragment]
-  \chords { c:sus4 c:7sus4 c:dim7 c:m6 } 
-@end lilypond
-
-@cindex modifiers, in chords. 
-@cindex @code{aug}
-@cindex @code{dim}
-@cindex @code{maj}
-@cindex @code{sus}
-@cindex @code{m}
-
-Since an unaltered 11 does not sound good when combined with an
-unaltered 13, the 11 is removed in this case (unless it is added
-explicitly):
-@c
-@lilypond[fragment,verbatim]
-  \chords { c:13 c:13.11 c:m13 }
-@end lilypond 
-
-@cindex @code{/}
-
-An inversion (putting one pitch of the chord on the bottom), as well
-as bass notes, can be specified by appending
-@code{/}@var{pitch} to the chord:
-@lilypond[fragment,verbatim,center]
-   \chords { c1 c/g c/f }
-@end lilypond 
-@cindex @code{/+}
-
-A bass note can be added instead of transposed out of the chord,
-by using  @code{/+}@var{pitch}.
-
-@lilypond[fragment,verbatim,center]
-   \chords { c1 c/+g c/+f }
-@end lilypond 
-
-Chords is a mode similar to @code{\lyrics}, @code{\notes} etc.  Most
-of the commands continue to work, for example, @code{r} and
-@code{\skip} can be used to insert rests and spaces, and
-@code{\property} may be used to change various settings.
-
-
-
-@refbugs
-
-Each step can only be present in a chord once.  The following
-simply produces the augmented chord, since @code{5+} is interpreted
-last:
-@cindex clusters
-@lilypond[verbatim,fragment]
-  \chords { c:5.5-.5+ }
-@end lilypond
-
-
-@node Printing chord names
-@subsection Printing chord names
-
-@cindex printing chord names
-@cindex chord names
-@cindex chords
-
-For displaying printed chord names, use the @internalsref{ChordNames} context.
-The chords may be entered either using the notation
-described above, or directly using @code{<} and @code{>}:
-
-@lilypond[verbatim,raggedright]
-scheme = \notes {
-  \chords {a1 b c} <d' f' a'>  <e' g' b'>
-}
-\score {
-  \notes<<
-    \context ChordNames \scheme
-    \context Staff \scheme
-  >>
-}
-@end lilypond
-
-You can make the chord changes stand out by setting
-@internalsref{ChordNames}.@code{chordChanges} to true.  This will only
-display chord names when there is a change in the chords scheme and at
-the start of a new line:
-
-@lilypond[verbatim,linewidth=9\cm]
-scheme = \chords {
-  c1:m c:m \break c:m c:m d
-}
-\score {
-  \notes <<
-    \context ChordNames {
-        \property ChordNames.chordChanges = ##t
-        \scheme }
-    \context Staff \transpose c c' \scheme
-  >>
-}
-@end lilypond
-
-The default chord name layout is a system for Jazz music, proposed by
-Klaus Ignatzek (see @ref{Literature list}).  It can be tuned through the
-following properties:
-
-@table @code
-@cindex chordNameExceptions
-@item chordNameExceptions
-This is a list that contains the chords that have special formatting.
-For an example, see
-@inputfileref{input/regression,chord-name-exceptions.ly}.
-@cindex exceptions, chord names.
-
-
-@cindex majorSevenSymbol
-@item majorSevenSymbol
-This property contains the markup object used for the 7th step, when
-it is major. Predefined options are @code{whiteTriangleMarkup} and
-@code{blackTriangleMarkup}.  See
-@inputfileref{input/regression,chord-name-major7.ly} for an example.
-
-@cindex chordNameSeparator
-@item chordNameSeparator
-Different parts of a chord name are normally separated by a
-slash. By setting @code{chordNameSeparator}, you can specify other
-separators, e.g.
-@lilypond[fragment,verbatim]
-\context ChordNames \chords {
-      c:7sus4
-      \property ChordNames.chordNameSeparator
-        = \markup { \typewriter "|" }
-      c:7sus4 }
-@end lilypond
-
-@cindex chordRootNamer
-@item chordRootNamer
-The root of a chord is usually printed as a letter with an optional
-alteration. The transformation from pitch to letter is done by this
-function.  Special note names (for example, the German ``H'' for a
-B-chord) can be produced by storing a new function in this property.
-
-The pre-defined variables @code{\germanChords},
-@code{\semiGermanChords} set these variables.
-
-
-@cindex chordNoteNamer
-@item chordNoteNamer
-The default is to print single pitch, e.g. the bass note, using the
-@code{chordRootNamer}.  The @code{chordNoteNamer} property can be set
-to a specialized function to change this behavior.  For example, the
-base can be printed in lower case.
-
-@end table
-
-
-There are also two other chord name schemes implemented: an alternate
-Jazz chord notation, and a systematic scheme called Banter chords. The
-alternate jazz notation is also shown on the chart in @ref{Chord name
-chart}.  Turning on these styles is described in the input file
-@inputfileref{input/test,chord-names-jazz.ly}.
-
-@cindex Banter
-@cindex jazz chords
-@cindex chords, jazz  
-
-
-@refcommands
-
-@cindex @code{\germanChords}
-@code{\germanChords}, 
-@cindex @code{\semiGermanChords}
-@code{\semiGermanChords}.
-
-
-
-
-@seealso
-
-Examples: @inputfileref{input/regression,chord-name-major7.ly},
-@inputfileref{input/regression,chord-name-exceptions.ly},
-@inputfileref{input/test,chord-names-jazz.ly},
-@inputfileref{input/test,chord-names-german.ly}.
-
-Init files: @file{scm/chords-ignatzek.scm}, and @file{scm/chord-entry.scm}.
-
-
-@refbugs
-
-Chord names are determined solely from the list of pitches. Chord
-inversions are not identified, and neither are added bass notes. This
-may result in strange chord names when chords are entered with the
-@code{< .. >} syntax.
-
-
-
-
-@node Orchestral music
-@section Orchestral music
-
-@cindex  Writing parts
-
-Orchestral music involves some special notation, both in the full
-score and the individual parts. This section explains how to tackle
-some common problems in orchestral music.
-
-
-
-@menu
-* Multiple staff contexts::     
-* Rehearsal marks::             
-* Bar numbers::                 
-* Instrument names::            
-* Transpose::                   
-* Multi measure rests::         
-* Automatic part combining::    
-* Hiding staves::               
-* Different editions from one source::  
-* Sound output for transposing instruments::  
-@end menu
-
-@node Multiple staff contexts
-@subsection Multiple staff contexts
-
-Polyphonic scores consist of many staves. These staves can be
-constructed in three different ways:
-@itemize @bullet
-@item The group is started with a brace at the left. This is done with the
-@internalsref{GrandStaff} context.
-@item The group is started with a bracket. This is done with the
-@internalsref{StaffGroup} context
-@item The group is  started with a vertical line. This is the default
-for the score.
-@end itemize
-
-@cindex Staff, multiple
-@cindex bracket, vertical
-@cindex brace, vertical
-@cindex grand staff
-@cindex staff group
-
-
-
-
-@node Rehearsal marks
-@subsection Rehearsal marks
-@cindex Rehearsal marks
-@cindex mark
-@cindex @code{\mark}
-
-To print a  rehearsal mark, use the @code{\mark} command:
-@lilypond[fragment,verbatim]
-\relative c'' {
-  c1 \mark \default
-  c1 \mark \default
-  c1 \mark #8 
-  c1 \mark \default
-  c1 \mark \default
-}
-@end lilypond
-
-@noindent
-(The letter I is skipped in accordance with engraving traditions.)
-
-The mark is incremented automatically if you use @code{\mark
-\default}, but you can also use an integer argument to set the mark
-manually.  The value to use is stored in the property
-@code{rehearsalMark}.
-
-The style is defined by the property @code{markFormatter}. It is a
-function taking the current mark (an integer) and the current context
-as argument. It should return a markup object. In the following
-example, @code{markFormatter} is set to a canned procedure. After a
-few measures, it is set to function that produces a boxed number. 
-
-@lilypond[verbatim,fragment,relative=1]
-  \property Score.markFormatter = #format-mark-numbers 
-  c1 \mark \default
-  c1 \mark \default
-  \property Score.markFormatter
-    = #(lambda (mark  context)
-	(make-bold-markup (make-box-markup (number->string mark))))
-  c1 \mark \default
-  c1 \mark \default
-@end lilypond
-
-The file @file{scm/translation-functions.scm} contains the definitions
-of @code{format-mark-numbers} (the default format) and
-@code{format-mark-letters}. They can be used as inspiration for other
-formatting functions.
-
-
-@cindex coda on bar line
-@cindex segno on bar line
-@cindex fermata on bar line
-@cindex bar lines, symbols on
-
-The @code{\mark} command can also be used to put signs like coda,
-segno and fermatas on a barline. Use @code{\markup} to
-to access the appropriate symbol:
-
-@lilypond[fragment,verbatim,relative=1]
-  c1 \mark \markup { \musicglyph #"scripts-ufermata" }
-  c1
-@end lilypond
-
-In this case, during line breaks, marks must also be printed at the
-end of the line, and not at the beginning. Use the following to force
-that behavior:
-@example
-\property Score.RehearsalMark \override
-  #'break-visibility = #begin-of-line-invisible
-@end example
-
-@cindex fermatas
-@cindex coda
-@cindex segno
-@cindex barlines, putting symbols on 
-
-@seealso
-
-Internals: @internalsref{MarkEvent}, @internalsref{RehearsalMark}
-
-Init files: @file{scm/translation-functions.scm} contains the
-definition of @code{format-mark-numbers} and
-@code{format-mark-letters}. They can be used as inspiration for other
-formatting functions.
-
-Examples: @inputfileref{input/regression,rehearsal-mark-letter.ly},
-@inputfileref{input/regression,rehearsal-mark-number.ly}.
-
-
-@node Bar numbers
-@subsection Bar numbers
-
-
-@cindex bar numbers
-@cindex measure numbers
-@cindex currentBarNumber
-
-Bar numbers are printed by default at the start of the line.  The
-number itself is stored in the 
-@code{currentBarNumber} property,
-which is normally updated automatically for every measure.
-
-Bar numbers can be typeset at regular intervals instead of at the
-beginning of each line. This is illustrated in the following example,
-whose source is available as
-@inputfileref{input/test,bar-number-regular-interval.ly}:
-
-@lilypondfile[]{bar-number-regular-interval.ly}
-
-
-@seealso
-
-Internals: @internalsref{BarNumber}.
-
-Examples: @inputfileref{input/test,bar-number-every-five-reset.ly},
-and @inputfileref{input/test,bar-number-regular-interval.ly}.
-
-@refbugs
-
-Bar numbers can collide with the @internalsref{StaffGroup} bracket, if
-there is one at the top. To solve this, the
-@code{padding} property of @internalsref{BarNumber} can be
-used to position the number correctly.
-
-@node Instrument names
-@subsection Instrument names
-
-In an orchestral score, instrument names are printed left side of the
-staves.
-
-This can be achieved by setting @internalsref{Staff}.@code{instrument}
-and @internalsref{Staff}.@code{instr}. This will print a string before
-the start of the staff. For the first start, @code{instrument} is
-used, for the next ones @code{instr} is used:
-
-@quotation
-@lilypond[verbatim,raggedright]
-  \property Staff.instrument = "ploink " { c''4 }  
-@end lilypond
-@end quotation
-
-You can also use markup texts to construct more complicated instrument
-names:
-
-@quotation
-@lilypond[fragment,verbatim,raggedright]
-  \notes {
-    \property Staff.instrument = \markup {
-        \column < "Clarinetti"
-          { "in B"
-            \smaller \musicglyph #"accidentals--1"
-          }
-          >
-     }
-     { c''1 }
-  }
-@end lilypond
-@end quotation
-
-@seealso
-
-Internals: @internalsref{InstrumentName}.
-
-@refbugs
-
-When you put a name on a grand staff or piano staff the width of the
-brace is not taken into account. You must add extra spaces to the end of
-the name to avoid a collision.
-
-@node Transpose
-@subsection Transpose
-@cindex Transpose
-@cindex transposition of pitches
-@cindex @code{\transpose}
-
-A music expression can be transposed with @code{\transpose}.  The syntax
-is
-@example
-  \transpose @var{from} @var{to} @var{musicexpr}
-@end example
-
-This means that @var{musicexpr} is transposed by the interval between
-the pitches @var{from} and @var{to}: any note with pitch @code{from}
-is changed to @code{to}.
-
-
-For example, consider  a piece written in the key of  D major.  If
-this piece is a  little too low for its performer, it can be
-transposed up to E major with
-@example
- \tranpose d e @dots{}
-@end example
-
-Consider a part  written for violin (a C instrument). If
-this part is to be played on the A clarinet, the following
-transposition will produce the appropriate part
-
-@example
-  \transpose a c @dots{}
-@end example   
-
-Since @var{from} and @var{to} are pitches, @code{\transpose} must be
-inside a @code{\notes} section.  @code{\transpose} distinguishes
-between enharmonic pitches: both @code{\transpose c cis} or
-@code{\transpose c des} will transpose up half a tone.  The first
-version will print sharps and the second version will print flats:
-
-@lilypond[raggedright,verbatim]
-mus =\notes { \key d \major cis d fis g }
-\score { \notes \context Staff {
-  \clef "F" \mus
-  \clef "G"
-  \transpose c g' \mus
-  \transpose c f' \mus
-}}
-@end lilypond
-
-
-@seealso
-
-Internals: @internalsref{TransposedMusic}, and
-@internalsref{UntransposableMusic}.
-
-@refbugs
-
-If you want to use both @code{\transpose} and @code{\relative}, then
-you must put @code{\transpose} outside of @code{\relative}, since
-@code{\relative} will have no effect music that appears inside a
-@code{\transpose}.
-
-
-
-
-@node Multi measure rests
-@subsection Multi measure rests
-@cindex multi measure rests
-@cindex Rests, multi measure
-
-@cindex @code{R}
-
-Multi measure rests are entered using `@code{R}'. It is specifically
-meant for full bar rests and for entering parts: the rest can expand
-to fill a score with rests, or it can be printed as a single
-multimeasure rest. This expansion is controlled by the property
-@code{Score.skipBars}. If this is set to true, empty measures will not
-be expanded, and the appropriate number is added automatically:
-
-@lilypond[fragment,verbatim]
- \time 4/4 r1 | R1 | R1*2
- \property Score.skipBars = ##t R1*17  R1*4
-@end lilypond
-
-The @code{1} in @code{R1} is similar to the duration notation used for
-notes. Hence, for time signatures other than 4/4, you must enter other
-durations.  This can be done with augmentation dots or fractions:
-
-@lilypond[fragment,verbatim]
- \property Score.skipBars = ##t
- \time 3/4
-  R2. | R2.*2
- \time 13/8
- R1*13/8
- R1*13/8*12
-@end lilypond
-
-An @code{R} spanning a single measure is printed as either a whole rest
-or a breve, centered in the measure regardless of the time signature.
-
-@cindex text on multi-measure rest
-@cindex script on multi-measure rest
-@cindex fermata on multi-measure rest
-
-Texts can be added to multi-measure rests by using the
-@var{note}-@code{markup} syntax (see @ref{Text markup}).  In this case, the number is
-replaced. If you need both texts and the number, you must add the
-number by hand. A variable (@code{\fermataMarkup}) is provided for
-adding fermatas:
-
-
-@lilypond[verbatim,fragment]
-  \time 3/4
-  R2._\markup { "Ad lib" }
-  R2.^\fermataMarkup
-@end lilypond
-
-If you want to have a text on the left end of a multi-measure rest,
-attach the text to a zero-length skip note, i.e.
-
-@example
-  s1*0^"Allegro"
-  R1*4 
-@end example
-
-
-@cindex whole rests for a full measure 
-
-@seealso
-
-Internals: @internalsref{MultiMeasureRestEvent},
-@internalsref{MultiMeasureTextEvent},
-@internalsref{MultiMeasureRestMusicGroup}, and
-@internalsref{MultiMeasureRest}.
-
-The layout object @internalsref{MultiMeasureRestNumber} is for the
-default number, and @internalsref{MultiMeasureRestText} for user
-specified texts.
-
-@refbugs
-
-It is not possible to use fingerings (e.g. @code{R1-4}) to put numbers
-over multi-measure rests.
-
-@cindex condensing rests
-
-There is no way to automatically condense multiple rests into a single
-multimeasure rest. Multi measure rests do not take part in rest
-collisions.
-
-Be careful when entering multimeasure rests followed by whole
-notes. The following will enter two notes lasting four measures each:
-@example
- R1*4 cis cis 
-@end example
-When @code{skipBars} is set, then the result will look OK, but the
-bar numbering will be off.
-
-@node Automatic part combining
-@subsection Automatic part combining
-@cindex automatic part combining
-@cindex part combiner
-
-
-Automatic part combining is used to merge two parts of music onto a
-staff.  It is aimed at typesetting orchestral scores.  When the two
-parts are identical for a period of time, only one is shown.  In
-places where the two parts differ, they are typeset as separate
-voices, and stem directions are set automatically.  Also, solo and
-@emph{a due} parts are identified and can be marked.
-
-@syntax
-
-The syntax for part combining is
-
-@example
-  \partcombine @var{musicexpr1} @var{musicexpr2}
-@end example
-
-The music expressions will be interpreted as @internalsref{Voice}
-contexts.
-
-The following example demonstrates the basic functionality of the part
-combiner: putting parts on one staff, and setting stem directions and
-polyphony:
-
-@lilypond[verbatim,raggedright,fragment,relative=1]
-  \new Staff \partcombine 
-      {
-        g a( b) r
-      }
-      {
-        g r4 r f
-      }
-@end lilypond
-
-The first @code{g} appears only once, although it was
-specified twice (once in each part).  Stem, slur and tie directions are
-set automatically, depending whether there is a solo or unisono. The
-first part (with context called @code{one}) always gets up stems, and
-`solo', while the second (called @code{two}) always gets down stems and
-`Solo II'.
-
-If you just want the merging parts, and not the textual markings, you
-may set the property @var{soloADue} to false:
-
-@lilypond[verbatim,raggedright,fragment]
-   \new Staff <<
-    \property Staff.soloADue = ##f
-    \partcombine 
-      {
-        g a( b) r
-      }
-      {
-        g r4 r f
-      } >>
-@end lilypond
-
-@seealso
-
-Internals: @internalsref{PartCombineMusic},
-@internalsref{SoloOneEvent}, and
-@internalsref{SoloTwoEvent}, and
-@internalsref{UnisonoEvent}.
-
-@refbugs
-
-In @code{soloADue} mode, when the two voices play the same notes on and
-off, the part combiner may typeset @code{a2} more than once in a
-measure.
-
-@code{\partcombine} can not be inside @code{\times}. 
-
-
-
-@node Hiding staves
-@subsection Hiding staves
-
-@cindex Frenched scores
-@cindex Hiding staves
-
-In orchestral scores, staff lines that only have rests are usually
-removed.  This saves some space. This style is called `French Score'.
-For @internalsref{Lyrics}, @internalsref{Lyrics},
-@internalsref{ChordNames} and @internalsref{FiguredBass}, this is
-switched on by default.  When these line of these contexts turn out
-empty after the line-breaking process, they are removed.
-
-For normal staves, a specialized @internalsref{Staff} context is
-available, which does the same: staves containing nothing (or only
-multi measure rests) are removed. The context definition is stored in
-@code{\RemoveEmptyStaffContext} variable. Observe how the second staff
-in this example disappears in the second line:
-
-
-@lilypond[verbatim]
-\score  {
-  \notes \relative c' <<
-    \new Staff { e4 f g a \break c1 }
-    \new Staff { c4 d e f \break R1 }
-  >>
-  \paper {
-    linewidth = 6.\cm 
-    \translator { \RemoveEmptyStaffContext }
-  }
-}
-@end lilypond
-
-The first page shows all staffs in full. If they should be  removed
-from  the first page too, set @code{remove-first} to false
-in @internalsref{RemoveEmptyVerticalGroup}.
-
-@node Different editions from one source
-@subsection Different editions from one source
-
-The @code{\tag} command marks music expressions with a name. These
-tagged expressions can be filtered out later.  With this mechanism it
-is possible to make different versions of the same music source.
-
-In the following example, we see two versions of a piece of music, one
-for the full score, and one with cue notes for the instrumental part:
-
-@example
-    c1
-    \relative c' <<
-        \tag #'part <<
-          R1 \\
-          @{
-              \property Voice.fontSize = #-1
-              c4_"cue" f2 g4 @} 
-        >>
-        \tag #'score R1
-     >>
-     c1
-@end example
-
-The same can be applied to articulations, texts, etc.: they are
-made by prepending
-@example
-        -\tag #@var{your-tag} 
-@end example
-to an articulation, for example, 
-@example
-    c1-\tag #'part ^4
-@end example
-
-This defines a note with a conditional fingering indication.
-
-By applying the @code{remove-tag} function, tagged expressions can be
-filtered. For example,
-@example
-\simultaneous @{
-        @var{the music}
-        \apply #(remove-tag 'score) @var{the music}
-        \apply #(remove-tag 'part) @var{the music}
-@}
-@end example
-would yield
-
-@lilypondfile[]{tag-filter.ly}
-
-The argument of the @code{\tag} command should be a symbol, or a list
-of symbols, for example,
-@example
-  \tag #'(original-part transposed-part) @dots{}
-@end example
-
-@seealso
-
-Examples: @inputfileref{input/regression,tag-filter.ly}
-
-
-@node Sound output for transposing instruments
-@subsection Sound output for transposing instruments
-
-When you want to make a MIDI file from a score containing transposed
-and untransposed instruments, you have to instruct LilyPond the pitch
-offset (in semitones) for the transposed instruments. This is done
-using the @code{transposing} property. It does not affect printed
-output:
-
-@cindex @code{transposing}
-
-@example
-        \property Staff.instrument = #"Cl. in B-flat"
-        \property Staff.transposing = #-2
-@end example
-
-
-@node Ancient notation
-@section Ancient notation
-
-@cindex Vaticana, Editio
-@cindex Medicaea, Editio
-@cindex hufnagel
-@cindex Petrucci
-@cindex mensural
-
-@c [TODO: write more comprehensive introduction on ancient notation]
-
-Support for ancient notation is still under heavy development.
-Regardless of all of the current limitations (see the bugs section
-below for details), it includes features for mensural
-notation and Gregorian Chant notation.  There is also limited support
-for figured bass notation.
-
-Many graphical objects provide a @code{style} property, see
-@ref{Ancient note heads}, @ref{Ancient accidentals}, @ref{Ancient
-rests}, @ref{Ancient clefs}, @ref{Ancient flags} and @ref{Ancient time
-signatures}.  By manipulating such a grob property, the typographical
-appearance of the affected graphical objects can be accomodated for a
-specific notation flavour without need for introducing any new
-notational concept.
-
-
-Other aspects of ancient notation can not that easily be expressed as
-in terms of just changing a style property of a graphical object.
-Therefore, some notational concepts are introduced specifically for
-ancient notation, see @ref{Custodes}, @ref{Divisiones},
-@ref{Ligatures}, and @ref{Figured bass}.
-
-
-@menu
-* Ancient note heads::          
-* Ancient accidentals::         
-* Ancient rests::               
-* Ancient clefs::               
-* Ancient flags::               
-* Ancient time signatures::     
-* Custodes::                    
-* Divisiones::                  
-* Ligatures::                   
-* Figured bass::                
-* Vaticana style contexts::     
-@end menu
-
-If this all is way too much of documentation for you, and you just
-want to dive into typesetting without worrying too much about the
-details on how to customize a context, then you may have a look at the
-predefined contexts (see @ref{Vaticana style contexts}).  Use them to
-set up predefined style-specific voice and staff contexts, and
-directly go ahead with the note entry.
-
-@refbugs
-
-Ligatures need special spacing that has not yet been implemented.  As
-a result, there is too much space between ligatures most of the time,
-and line breaking often is unsatisfactory.  Also, lyrics do not
-correctly align with ligatures.
-
-Accidentals must not be printed within a ligature, but instead need to
-be collected and printed in front of it.
-
-Augmentum dots within ligatures are  not handled correctly.
-
-
-@node Ancient note heads
-@subsection Ancient note heads
-
-@cindex note heads
-
-@syntax
-
-For ancient notation, a note head style other than the @code{default}
-style may be chosen.  This is accomplished by setting the @code{style}
-property of the NoteHead object to the desired value (@code{baroque},
-@code{neo_mensural} or @code{mensural}).  The @code{baroque} style
-differs from the @code{default} style only in using a square shape for
-@code{\breve} note heads.  The @code{neo_mensural} style differs from
-the @code{baroque} style in that it uses rhomboidal heads for whole
-notes and all smaller durations.  Stems are centered on the note
-heads.  This style is in particular useful when transcribing mensural
-music, e.g. for the incipit.  The @code{mensural} style finally
-produces note heads that mimick the look of note heads in historic
-printings of the 16th century.
-
-The following example demonstrates the @code{neo_mensural} style:
-
-@lilypond[fragment,raggedright,verbatim]
-  \property Voice.NoteHead \set #'style = #'neo_mensural
-  a'\longa a'\breve a'1 a'2 a'4 a'8 a'16
-@end lilypond
-
-When typesetting a piece in Gregorian Chant notation, a Gregorian
-ligature engraver will automatically select the proper note heads,
-such there is no need to explicitly set the note head style.  Still,
-the note head style can be set e.g. to @code{vaticana_punctum} to
-produce punctum neumes.  Similarly, a mensural ligature engraver is
-used to automatically assemble mensural ligatures.  See
-@ref{Ligatures} for how ligature engravers work.
-
-@seealso
-
-In this manual:
-@ref{Percussion staves} use note head styles of their own that are
-frequently used in contemporary music notation.
-
-Examples: @inputfileref{input/regression,note-head-style.ly} gives an
-overview over all available note head styles.
-
-
-@node Ancient accidentals
-@subsection Ancient accidentals
-
-@cindex accidentals
-
-@syntax
-
-Use the @code{style} property of grob @internalsref{Accidental} to
-select ancient accidentals.   Supported styles are
-@code{mensural}, @code{vaticana}, @code{hufnagel} and @code{medicaea}.
-
-@lilypond[raggedright,staffsize=26]
-\score {
-    \notes {
-        \fatText
-        s
-        ^\markup {
-            \column <
-                "vaticana" 
-                { " " \musicglyph #"accidentals-vaticana-1"
-                  " " \musicglyph #"accidentals-vaticana0" }
-            >
-            \column <
-                "medicaea"
-                { " " \musicglyph #"accidentals-medicaea-1" }
-            >
-            \column <
-                "hufnagel"
-                { " " \musicglyph #"accidentals-hufnagel-1" }
-            >
-            \column <
-                "mensural"
-                { " " \musicglyph #"accidentals-mensural-1"
-                  " " \musicglyph #"accidentals-mensural1" }
-            >
-        }
-    }
-    \paper {
-        raggedright = ##t 
-        interscoreline = 1
-        \translator {
-            \ScoreContext
-            \remove "Bar_number_engraver"
-        }
-        \translator{
-            \StaffContext
-            \remove "Clef_engraver"
-            \remove "Key_engraver"
-            \remove "Time_signature_engraver"
-            \remove "Staff_symbol_engraver"
-            minimumVerticalExtent = ##f
-        }
-    }
-}
-@end lilypond
-
-As shown, not all accidentals are supported by each style.  When
-trying to access an unsupported accidental, LilyPond will switch to a
-different style, as demonstrated in
-@inputfileref{input/test,ancient-accidentals.ly}.
-
-Similarly to local accidentals, the style of the key signature can be
-controlled by the @code{style} property of the
-@internalsref{KeySignature} grob.
-
-@seealso
-
-In this manual: @ref{Pitches}, @ref{Chromatic alterations} and
-@ref{Accidentals} give a general introduction into the use of
-accidentals.  @ref{Key signature} gives a general introduction into
-the use of key signatures.
-
-Internals: @internalsref{KeySignature}
-
-Examples: @inputfileref{input/test,ancient-accidentals.ly}.
-
-@node Ancient rests
-@subsection Ancient rests
-
-@cindex rests
-
-@syntax
-
-Use the @code{style} property of grob @internalsref{Rest} to select
-ancient accidentals.   Supported styles are @code{classical},
-@code{neo_mensural} and @code{mensural}.  @code{classical} differs
-from the @code{default} style only in that the quarter rest looks like
-a horizontally mirrored 8th rest.  The @code{neo_mensural} style suits
-well for e.g. the incipit of a transcribed mensural piece of music.
-The @code{mensural} style finally mimicks the appearance of rests as
-in historic prints of the 16th century.
-
-The following example demonstrates the @code{neo_mensural} style:
-
-@lilypond[fragment,raggedright,verbatim]
-  \property Voice.Rest \set #'style = #'neo_mensural
-  r\longa r\breve r1 r2 r4 r8 r16
-@end lilypond
-
-There are no 32th and 64th rests specifically for the mensural or
-neo-mensural style.  Instead, the rests from the default style will be
-taken.  See @inputfileref{input/test,rests.ly} for a chart of all
-rests.
-
-There are no rests in Gregorian Chant notation; instead, it uses
-@ref{Divisiones}.
-
-@seealso
-
-In this manual: @ref{Rests} gives a general introduction into the use of rests.
-
-
-@node Ancient clefs
-@subsection Ancient clefs
-
-@cindex clefs
-
-@syntax
-
-LilyPond supports a variety of clefs, many of them ancient.
-
-The following table shows all ancient clefs that are supported via the
-@code{\clef} command.  Some of the clefs use the same glyph, but
-differ only with respect to the line they are printed on.  In such
-cases, a trailing number in the name is used to enumerate these clefs.
-Still, you can manually force a clef glyph to be typeset on an
-arbitrary line, as described in @ref{Clef}.  The note printed to the
-right side of each clef in the example column denotes the @code{c'}
-with respect to that clef.
-
-@multitable @columnfractions  .3 .3 .3 .1
-
-@item
-@b{Glyph Name} @tab
-@b{Description} @tab
-@b{Supported Clefs} @tab
-@b{Example}
-
-@item
-@code{clefs-neo_mensural_c} @tab
-modern style mensural C clef @tab
-@code{neo_mensural_c1}, @code{neo_mensural_c2},
-@code{neo_mensural_c3}, @code{neo_mensural_c4} @tab
-@lilypond[relative,notime]
-\property Staff.TimeSignature \set #'transparent = ##t
-\clef "neo_mensural_c2" c
-@end lilypond
-
-@item
-@code{clefs-petrucci_c1}
-@code{clefs-petrucci_c2}
-@code{clefs-petrucci_c3}
-@code{clefs-petrucci_c4}
-@code{clefs-petrucci_c5}
-
-@tab
-petrucci style mensural C clefs, for use  on different  stafflines
-(the examples shows the 2nd staffline C clef).
-
-@tab
-@code{petrucci_c1}
-@code{petrucci_c2}
-@code{petrucci_c3}
-@code{petrucci_c4}
-@code{petrucci_c5}
-
-@tab
-@lilypond[relative,notime]
-\property Staff.TimeSignature \set #'transparent = ##t
-\clef "petrucci_c2" c
-@end lilypond
-
-@item
-@code{clefs-petrucci_f} @tab
-petrucci style mensural F clef @tab
-@code{petrucci_f} @tab
-@lilypond[relative,notime]
-\property Staff.TimeSignature \set #'transparent = ##t
-\clef "petrucci_f" c
-@end lilypond
-
-@item
-@code{clefs-petrucci_g} @tab
-petrucci style mensural G clef @tab
-@code{petrucci_g} @tab
-@lilypond[relative,notime]
-\property Staff.TimeSignature \set #'transparent = ##t
-\clef "petrucci_g" c
-@end lilypond
-
-@item
-@code{clefs-mensural_c} @tab
-historic style mensural C clef @tab
-@code{mensural_c1}, @code{mensural_c2}, @code{mensural_c3},
-@code{mensural_c4} @tab
-@lilypond[relative,notime]
-\property Staff.TimeSignature \set #'transparent = ##t
-\clef "mensural_c2" c
-@end lilypond
-
-@item
-@code{clefs-mensural_f} @tab
-historic style mensural F clef @tab
-@code{mensural_f} @tab
-@lilypond[relative,notime]
-\property Staff.TimeSignature \set #'transparent = ##t
-\clef "mensural_f" c
-@end lilypond
-
-@item
-@code{clefs-mensural_g} @tab
-historic style mensural G clef @tab
-@code{mensural_g} @tab
-@lilypond[relative,notime]
-\property Staff.TimeSignature \set #'transparent = ##t
-\clef "mensural_g" c
-@end lilypond
-
-@item
-@code{clefs-vaticana_do} @tab
-Editio Vaticana style do clef @tab
-@code{vaticana_do1}, @code{vaticana_do2}, @code{vaticana_do3} @tab
-@lilypond[relative,notime]
-    \property Staff.StaffSymbol \set #'line-count  = #4
-\property Staff.TimeSignature \set #'transparent = ##t
-\clef "vaticana_do2" c
-@end lilypond
-
-@item
-@code{clefs-vaticana_fa} @tab
-Editio Vaticana style fa clef @tab
-@code{vaticana_fa1}, @code{vaticana_fa2} @tab
-@lilypond[relative,notime]
-    \property Staff.StaffSymbol \set #'line-count  = #4
-\property Staff.TimeSignature \set #'transparent = ##t
-\clef "vaticana_fa2" c
-@end lilypond
-
-@item
-@code{clefs-medicaea_do} @tab
-Editio Medicaea style do clef @tab
-@code{medicaea_do1}, @code{medicaea_do2}, @code{medicaea_do3} @tab
-@lilypond[relative,notime]
-    \property Staff.StaffSymbol \set #'line-count  = #4
-\property Staff.TimeSignature \set #'transparent = ##t
-\clef "medicaea_do2" c
-@end lilypond
-
-@item
-@code{clefs-medicaea_fa} @tab
-Editio Medicaea style fa clef @tab
-@code{medicaea_fa1}, @code{medicaea_fa2} @tab
-@lilypond[relative,notime]
-    \property Staff.StaffSymbol \set #'line-count  = #4
-\property Staff.TimeSignature \set #'transparent = ##t
-\clef "medicaea_fa2" c
-@end lilypond
-
-@item
-@code{clefs-hufnagel_do} @tab
-historic style hufnagel do clef @tab
-@code{hufnagel_do1}, @code{hufnagel_do2}, @code{hufnagel_do3} @tab
-@lilypond[relative,notime]
-    \property Staff.StaffSymbol \set #'line-count  = #4
-\property Staff.TimeSignature \set #'transparent = ##t
-\clef "hufnagel_do2" c
-@end lilypond
-
-@item
-@code{clefs-hufnagel_fa} @tab
-historic style hufnagel fa clef @tab
-@code{hufnagel_fa1}, @code{hufnagel_fa2} @tab
-@lilypond[relative,notime]
-    \property Staff.StaffSymbol \set #'line-count  = #4
-\property Staff.TimeSignature \set #'transparent = ##t
-\clef "hufnagel_fa2" c
-@end lilypond
-
-@item
-@code{clefs-hufnagel_do_fa} @tab
-historic style hufnagel combined do/fa clef @tab
-@code{hufnagel_do_fa} @tab
-@lilypond[relative,notime]
-\property Staff.TimeSignature \set #'transparent = ##t
-\clef "hufnagel_do_fa" c
-@end lilypond
-
-@end multitable
-
-@c --- This should go somewhere else: ---
-@c @item modern style percussion clef (glyph: @code{clefs-percussion})
-@c
-@c Supported clefs:
-@c @code{percussion}
-@c
-@c @lilypond{\property Staff.TimeSignature \set #'transparent = ##t \clef "percussion" c'}
-@c
-@c @item modern style tab clef (glyph: @code{clefs-tab})
-@c
-@c Supported clefs:
-@c @code{tab}
-@c
-@c @lilypond{\context Staff \outputproperty #(make-type-checker 'staff-symbol-interface) #'line-count = #6 \property Staff.TimeSignature \set #'transparent = ##t \clef "tab" c'}
-
-@emph{Modern style} means ``as is typeset in contemporary editions of
-transcribed mensural music''.
-
-@emph{Petrucci style} means ``inspired by printings published by the
-famous engraver Petrucci (1466-1539)''.
-
-@emph{Historic style} means ``as was typeset or written in historic
-editions (other than those of Petrucci)''.
-
-@emph{Editio XXX style} means ``as is/was printed in Editio XXX''.
-
-Petrucci used C clefs with differently balanced left-side vertical
-beams, depending on which staffline it is printed.
-
-@seealso
-
-In this manual: for the percussion clef, see @ref{Percussion staves}.
-For the @code{TAB} clef, see @ref{Tablatures}.
-
-Internals: for modern clefs, see @ref{Clef}.
-
-@refbugs
-
-The mensural g clef is temporarily mapped to the Petrucci g clef,
-until a new mensural g clef will have been implemented.
-
-
-
-@node Ancient flags
-@subsection Ancient flags
-
-@cindex flags
-
-@syntax
-
-Use the @code{flag-style} property of grob @internalsref{Stem} to
-select ancient flags.  Besides the @code{default} flag style,
- only @code{mensural} style is supported:
-
-@lilypond[fragment,raggedright,verbatim]
-  \property Voice.Stem \set #'flag-style = #'mensural
-  \property Voice.Stem \set #'thickness = #1.0
-  \property Voice.NoteHead \set #'style = #'mensural
-  \autoBeamOff
-  c'8 d'8 e'8 f'8 c'16 d'16 e'16 f'16 c'32 d'32 e'32 f'32 s8
-  c''8 d''8 e''8 f''8 c''16 d''16 e''16 f''16 c''32 d''32 e''32 f''32
-@end lilypond
-
-Note that the innermost flare of each mensural flag always is
-vertically aligned with a staff line.  If you do not like this
-behaviour, you can set the @code{adjust-if-on-staffline} property of
-grob @internalsref{Stem} to @code{##f}.  Then, the vertical position
-of the end of each flare is different between notes on staff lines and
-notes between staff lines:
-
-@lilypond[fragment,raggedright]
-  \property Voice.Stem \set #'flag-style = #'mensural
-  \property Voice.Stem \set #'thickness = #1.0
-  \property Voice.Stem \set #'adjust-if-on-staffline = ##f
-  \property Voice.NoteHead \set #'style = #'mensural
-  \autoBeamOff
-  c'8 d'8 e'8 f'8 c'16 d'16 e'16 f'16 c'32 d'32 e'32 f'32 s8
-  c''8 d''8 e''8 f''8 c''16 d''16 e''16 f''16 c''32 d''32 e''32 f''32
-@end lilypond
-
-There is no particular flag style for neo-mensural notation.  Hence,
-when typesetting e.g. the incipit of a transcibed piece of mensural
-music, the default flag style should be used.  There are no flags in
-Gregorian Chant notation.
-
-
-@node Ancient time signatures
-@subsection Ancient time signatures
-
-@cindex time signatures
-
-@syntax
-
-There is limited support for mensural time signatures.   The
-glyphs are hard-wired to particular time fractions.  In other words,
-to get a particular mensural signature glyph with the @code{\time n/m}
-command, @code{n} and @code{m} have to be chosen according to the
-following table:
-
-@lilypond
-\score {
-    \notes {
-        \property Score.timing = ##f
-        \property Score.barAlways = ##t
-        s_\markup { "$\\backslash$time 4/4" }
-         ^\markup { "       " \musicglyph #"timesig-neo_mensural4/4" }
-	s
-	s_\markup { "$\\backslash$time 2/2" }
-	 ^\markup { "       " \musicglyph #"timesig-neo_mensural2/2" }
-	s
-	s_\markup { "$\\backslash$time 6/4" }
-	 ^\markup { "       " \musicglyph #"timesig-neo_mensural6/4" }
-	s
-	s_\markup { "$\\backslash$time 6/8" }
-	 ^\markup { "       " \musicglyph #"timesig-neo_mensural6/8" }
-	\break
-	s_\markup { "$\\backslash$time 3/2" }
-	 ^\markup { "       " \musicglyph #"timesig-neo_mensural3/2" }
-	s
-	s_\markup { "$\\backslash$time 3/4" }
-	 ^\markup { "       " \musicglyph #"timesig-neo_mensural3/4" }
-	s
-	s_\markup { "$\\backslash$time 9/4" }
-	 ^\markup { "       " \musicglyph #"timesig-neo_mensural9/4" }
-        s
-	s_\markup { "$\\backslash$time 9/8" }
-	 ^\markup { "       " \musicglyph #"timesig-neo_mensural9/8" }
-        \break
-	s_\markup { "$\\backslash$time 4/8" }
-	 ^\markup { "       " \musicglyph #"timesig-neo_mensural4/8" }
-	s
-	s_\markup { "$\\backslash$time 2/4" }
-	 ^\markup { "       " \musicglyph #"timesig-neo_mensural2/4" }
-	\break
-    }
-    \paper {
-	indent = 0.0
-	raggedright = ##t
-	\translator {
-	    \StaffContext
-	    \remove Staff_symbol_engraver
-	    \remove Clef_engraver
-	    \remove Time_signature_engraver
-	}
-    }
-}
-@end lilypond
-
-Use the @code{style} property of grob @internalsref{TimeSignature} to
-select ancient time signatures.  Supported styles are
-@code{neo_mensural} and @code{mensural}.  The above table uses the
-@code{neo_mensural} style.  This style is appropriate e.g. for the
-incipit of transcriptions of mensural pieces.  The @code{mensural}
-style mimicks the look of historical printings of the 16th century.
-
-@inputfileref{input/test,time.ly} gives an overview over all available
-ancient and modern styles.
-
-@seealso
-
-Internals: @ref{Time signature} gives a general introduction into the use of time
-signatures.
-
-@refbugs
-
-Mensural signature glyphs are  mapped to time fractions in a
-hard-wired way.  This mapping is sensible, but still arbitrary: given
-a mensural time signature, the time fraction represents a modern meter
-that usually will be a good choice when transcribing a mensural piece
-of music.  For a particular piece of mensural music, however, the
-mapping may be unsatisfactory.  In particular, the mapping assumes a
-fixed transcription of durations (e.g. brevis = half note in 2/2,
-i.e. 4:1).  Some glyphs (such as the alternate glyph for 6/8 meter)
-are  not at all accessible through the @code{\time} command.
-
-Mensural time signatures are supported typographically, but not yet
-musically.  The internal representation of durations is 
-based on a purely binary system; a ternary division such as 1 brevis =
-3 semibrevis (tempus perfectum) or 1 semibrevis = 3 minima (cum
-prolatione maiori) is not correctly handled: event times in ternary
-modes will be badly computed, resulting e.g. in horizontally
-misaligned note heads, and bar checks are likely to erroneously fail.
-
-The syntax and semantics of the @code{\time} command for mensural
-music is subject to change.
-
-@node Custodes
-@subsection Custodes
-
-@cindex custos
-@cindex custodes
-
-A @emph{custos} (plural: @emph{custodes}; latin word for `guard') is a
-symbol that appears at the end of a staff.  It anticipates the pitch
-of the first note(s) of the following line and thus helps the player
-or singer to manage line breaks during performance, thus enhancing
-readability of a score.
-
-Custodes were frequently used in music notation until the 17th
-century.  Nowadays, they have survived only in a few particular forms
-of musical notation such as contemporary editions of Gregorian chant
-like the @emph{editio vaticana}.  There are different custos glyphs
-used in different flavours of notational style.
-
-@syntax
-
-For typesetting custodes, just put a @internalsref{Custos_engraver} into the
-@internalsref{Staff} context when declaring the @code{\paper} block,
-as shown in the following example:
-
-@example
-\paper @{
-  \translator @{
-     \StaffContext
-     \consists Custos_engraver
-     Custos \override #'style = #'mensural
-  @}
-@}
-@end example
-
-The result looks like this:
-
-@lilypond
-\score {
-    \notes {
-	a'1
-	\property Staff.Custos \set #'style = #'mensural
-	\break
-	g'
-    }
-    \paper {
-	\translator {
-	    \StaffContext
-	    \consists Custos_engraver
-	}
-	linewidth = 4.0\cm
-    }
-}
-@end lilypond
-
-The custos glyph is selected by the @code{style} property. The styles
-supported are @code{vaticana}, @code{medicaea}, @code{hufnagel} and
-@code{mensural}.  They are demonstrated in the following fragment:
-
-@lilypond
-\score {
-    \notes {
-        \fatText
-        s
-        ^\markup {
-            \column <
-                "vaticana" 
-                { " " \musicglyph #"custodes-vaticana-u0" }
-            >
-	    \column <
-                "medicaea"
-		{ " " \musicglyph #"custodes-medicaea-u0" }
-            >
-	    \column <
-                "hufnagel"
-		{ " " \musicglyph #"custodes-hufnagel-u0" }
-            >
-            \column <
-                "mensural"
-                { " " \musicglyph #"custodes-mensural-u0" }
-            >
-        }
-    }
-    \paper {
-	raggedright = ##t 
-        interscoreline = 1
-        \translator {
-            \ScoreContext
-            \remove "Bar_number_engraver"
-        }
-        \translator{
-            \StaffContext
-            \remove "Clef_engraver"
-            \remove "Key_engraver"
-            \remove "Time_signature_engraver"
-            \remove "Staff_symbol_engraver"
-            minimumVerticalExtent = ##f
-        }
-    }
-}
-@end lilypond
-
-If the boolean property @code{adjust-if-on-staffline} is set to
-@code{#t} (which it is by default), lily typesets slightly different
-variants of the custos glyph, depending on whether the custos, is
-typeset on or between stafflines.   The glyph will
-optically fit well into the staff, with the appendage on the right of
-the custos always ending at the same vertical position between two
-stafflines regardless of the pitch.  If you set
-@code{adjust-if-on-staffline} to @code{#f}, then
-a compromise between both forms is  used.
-
-Just like stems can be attached to noteheads in two directions
-@emph{up} and @emph{down}, each custos glyph is available with its
-appendage pointing either up or down.  If the pitch of a custos is
-above a selectable position, the appendage will point downwards; if
-the pitch is below this position, the appendage will point upwards.
-Use property @code{neutral-position} to select this position.  By
-default, it is set to @code{0}, such that the neutral position is the
-center of the staff.  Use property @code{neutral-direction} to control
-what happens if a custos is typeset on the neutral position itself.
-By default, this property is set to @code{-1}, such that the appendage
-will point downwards.  If set to @code{1}, the appendage will point
-upwards.  Other values such as @code{0} are reserved for future
-extensions and should not be used.
-
-@seealso
-
-Internals: @internalsref{Custos}
-
-Examples: @inputfileref{input/regression,custos.ly}.
-
-
-@node Divisiones
-@subsection Divisiones
-
-@cindex divisio
-@cindex divisiones
-@cindex finalis
-
-A @emph{divisio} (plural: @emph{divisiones}; latin word for
-`division') is a staff context symbol that is used to structure
-Gregorian music into phrases and sections.  The musical meaning of
-@emph{divisio minima}, @emph{divisio maior} and @emph{divisio maxima}
-can be characterized as short, medium and long pause, somewhat like
-@ref{Breath marks}.  The @emph{finalis} sign not only marks the end of
-a chant, but is also frequently used within a single
-antiphonal/responsorial chant to mark the end of each section.
-
-@syntax
-
-To use divisiones, include the file @code{gregorian-init.ly}.  It
-contains definitions that you can apply by just inserting
-@code{\divisioMinima}, @code{\divisioMaior}, @code{\divisioMaxima},
-and @code{\finalis} at proper places in the input.  Some editions use
-@emph{virgula} or @emph{caesura} instead of divisio minima.
-Therefore, @code{gregorian-init.ly} also defines @code{\virgula} and
-@code{\caesura}:
-
-@lilypondfile[]{divisiones.ly}
-
-@refcommands
-
-@cindex @code{\virgula}
-@code{\virgula},
-@cindex @code{\caesura}
-@code{\caesura},
-@cindex @code{\divisioMinima}
-@code{\divisioMinima},
-@cindex @code{\divisioMaior}
-@code{\divisioMaior},
-@cindex @code{\divisioMaxima}
-@code{\divisioMaxima},
-@cindex @code{\finalis}
-@code{\finalis}.
-
-@seealso
-
-In this manual: @ref{Breath marks}.
-
-Internals: @internalsref{BreathingSign}, @internalsref{BreathingSignEvent},
-
-Examples: @inputfileref{input/test,divisiones.ly} 
-
-@node Ligatures
-@subsection Ligatures
-
-@cindex Ligatures
-
-@c TODO: Should double check if I recalled things correctly when I wrote
-@c down the following paragraph by heart.
-
-In musical terminology, a ligature is a coherent graphical symbol that
-represents at least two distinct notes.  Ligatures originally appeared
-in the manuscripts of Gregorian chant notation roughly since the 9th
-century as an allusion to the accent symbols of greek lyric poetry to
-denote ascending or descending sequences of notes.  Both, the shape
-and the exact meaning of ligatures changed tremendously during the
-following centuries: In early notation, ligatures were used for
-monophonic tunes (Gregorian chant) and very soon denoted also the way
-of performance in the sense of articulation.  With upcoming
-multiphony, the need for a metric system arised, since multiple voices
-of a piece have to be synchronized some way.  New notation systems
-were invented that used the manifold shapes of ligatures to now denote
-rhythmical patterns (e.g. black mensural notation, mannered notation,
-ars nova).  With the invention of the metric system of the white
-mensural notation, the need for ligatures to denote such patterns
-disappeared.  Nevertheless, ligatures were still in use in the
-mensural system for a couple of decades until they finally disappeared
-during the late 16th / early 17th century.  Still, ligatures have
-survived in contemporary editions of Gregorian chant such as the
-Editio Vaticana from 1905/08.
-
-@syntax
-
-Syntactically, ligatures are simply enclosed by @code{\[} and
-@code{\]}.  Some ligature styles (such as Editio Vaticana) may need
-additional input syntax specific for this particular type of ligature.
-By default, the @internalsref{LigatureBracket} engraver just puts a
-square bracket above the ligature:
-
-@lilypond[raggedright,verbatim]
-\score {
-    \notes \transpose c c' {
-        \[ g c a f d' \]
-        a g f
-        \[ e f a g \]
-    }
-}
-@end lilypond
-
-To select a specific style of ligatures, a proper ligature engraver
-has to be added to the @internalsref{Voice} context, as explained in
-the following subsections.   Only white mensural ligatures
-are supported with certain limitations.  Support for Editio Vaticana
-will be added in the future.
-
-@menu
-* White mensural ligatures::    
-* Gregorian square neumes ligatures::  
-@end menu
-
-@node White mensural ligatures
-@subsubsection White mensural ligatures
-
-@cindex Mensural ligatures
-@cindex White mensural ligatures
-
-There is limited support for white mensural ligatures.  The
-implementation is still experimental; it may output strange
-warnings or even crash in some cases or produce weird results on more
-complex ligatures.
-
-@syntax
-
-To engrave white mensural ligatures, in the paper block the
-@internalsref{Mensural_ligature_engraver} has to be put into the
-@internalsref{Voice} context, and remove the
-@internalsref{Ligature_bracket_engraver}:
-
-@example
-    \paper @{
-        \translator @{
-            \VoiceContext
-            \remove Ligature_bracket_engraver
-            \consists Mensural_ligature_engraver
-        @}
-    @}
-@end example
-
-There is no additional input language to describe the shape of a
-white mensural ligature.  The shape is rather determined solely from
-the pitch and duration of the enclosed notes.  While this approach may
-take a new user a while to get accustomed, it has the great advantage
-that the full musical information of the ligature is known internally.
-This is not only required for correct MIDI output, but also allows for
-automatic transcription of the ligatures.
-
-For example,
-
-@example
-        \property Score.timing = ##f
-        \property Score.defaultBarType = "empty"
-        \property Voice.NoteHead \set #'style = #'neo_mensural
-        \property Staff.TimeSignature \set #'style = #'neo_mensural
-        \clef "petrucci_g"
-        \[ g\longa c\breve a\breve f\breve d'\longa \]
-        s4
-        \[ e1 f1 a\breve g\longa \]
-@end example
-@lilypond[raggedright]
-\score {
-    \notes \transpose c c' {
-        \property Score.timing = ##f
-        \property Score.defaultBarType = "empty"
-        \property Voice.NoteHead \set #'style = #'neo_mensural
-        \property Staff.TimeSignature \set #'style = #'neo_mensural
-        \clef "petrucci_g"
-        \[ g\longa c\breve a\breve f\breve d'\longa \]
-        s4
-        \[ e1 f1 a\breve g\longa \]
-    }
-    \paper {
-        \translator {
-            \VoiceContext
-            \remove Ligature_bracket_engraver
-            \consists Mensural_ligature_engraver
-        }
-    }
-}
-@end lilypond
-
-Without replacing @internalsref{Ligature_bracket_engraver} with
-@internalsref{Mensural_ligature_engraver}, the same music transcribes
-to the following:
-
-@lilypond[raggedright]
-\score {
-    \notes \transpose c c' {
-        \property Score.timing = ##f
-        \property Score.defaultBarType = "empty"
-        \property Voice.NoteHead \set #'style = #'neo_mensural
-        \property Staff.TimeSignature \set #'style = #'neo_mensural
-        \clef "petrucci_g"
-        \[ g\longa c\breve a\breve f\breve d'\longa \]
-        s4
-        \[ e1 f1 a\breve g\longa \]
-    }
-}
-@end lilypond
-
-
-@node Gregorian square neumes ligatures
-@subsubsection Gregorian square neumes ligatures
-
-@cindex Square neumes ligatures
-@cindex Gregorian square neumes ligatures
-
-Gregorian square neumes notation (following the style of the Editio
-Vaticana) is under heavy development, but not yet really usable for
-production purposes.  Core ligatures can already be typeset, but
-essential issues for serious typesetting are still under development,
-such as (among others) horizontal alignment of multiple ligatures,
-lyrics alignment and proper accidentals handling.  Still, this section
-gives a sneak preview of what Gregorian chant may look like once it
-will work.
-
-The following table contains the extended neumes table of the 2nd
-volume of the Antiphonale Romanum (@emph{Liber Hymnarius}), published
-1983 by the monks of Solesmes.
-
-@multitable @columnfractions .4 .2 .2 .2
-
-@item
-@b{Neuma aut@*Neumarum Elementa} @tab
-@b{Figurae@*Rectae} @tab
-@b{Figurae@*Liquescentes Auctae} @tab
-@b{Figurae@*Liquescentes Deminutae}
-
-@c TODO: \paper block is identical in all of the below examples.
-@c Therefore, it should somehow be included rather than duplicated all
-@c the time. --jr
-
-@c why not make identifiers in ly/engraver-init.ly? --hwn
-
-@c Because it's just used to typeset plain notes without
-@c a staff for demonstration purposes rather than something
-@c special of Gregorian chant notation. --jr
-
-@item
-@code{1. Punctum}
-@tab
-@lilypond[noindent,staffsize=26,nofragment,linewidth=1.5\cm]
-\include "gregorian-init.ly"
-\score {
-    \notes \transpose c c' {
-        % Punctum
-        \[ b \]
-        \noBreak s^\markup {"a"} \noBreak
-
-        % Punctum Inclinatum
-        \[ \inclinatum b \]
-        \noBreak s^\markup {"b"}
-    }
-    \paper {
-        interscoreline = 1
-        \translator {
-            \ScoreContext
-            \remove "Bar_number_engraver"
-        }
-        \translator {
-            \StaffContext
-            \remove "Clef_engraver"
-            \remove "Key_engraver"
-            StaffSymbol \set #'transparent = ##t
-            \remove "Time_signature_engraver"
-            \remove "Bar_engraver"
-            minimumVerticalExtent = ##f
-        }
-        \translator {
-            \VoiceContext
-            \remove Ligature_bracket_engraver
-            \consists Vaticana_ligature_engraver
-            NoteHead \set #'style = #'vaticana_punctum
-            Stem \set #'transparent = ##t
-        }
-    }
-}
-@end lilypond
-@tab
-@lilypond[noindent,staffsize=26,nofragment,linewidth=2.5\cm]
-\include "gregorian-init.ly"
-\score {
-    \notes \transpose c c' {
-        % Punctum Auctum Ascendens
-        \[ \auctum \ascendens b \]
-        \noBreak s^\markup {"c"} \noBreak
-
-        % Punctum Auctum Descendens
-        \[ \auctum \descendens b \]
-        \noBreak s^\markup {"d"} \noBreak
-
-        % Punctum Inclinatum Auctum
-        \[ \inclinatum \auctum b \]
-        \noBreak s^\markup {"e"}
-    }
-    \paper {
-        interscoreline = 1
-        \translator {
-            \ScoreContext
-            \remove "Bar_number_engraver"
-        }
-        \translator {
-            \StaffContext
-            \remove "Clef_engraver"
-            \remove "Key_engraver"
-            StaffSymbol \set #'transparent = ##t
-            \remove "Time_signature_engraver"
-            \remove "Bar_engraver"
-            minimumVerticalExtent = ##f
-        }
-        \translator {
-            \VoiceContext
-            \remove Ligature_bracket_engraver
-            \consists Vaticana_ligature_engraver
-            NoteHead \set #'style = #'vaticana_punctum
-            Stem \set #'transparent = ##t
-        }
-    }
-}
-@end lilypond
-@tab
-@lilypond[noindent,staffsize=26,nofragment,linewidth=1.0\cm]
-\include "gregorian-init.ly"
-\score {
-    \notes \transpose c c' {
-        % Punctum Inclinatum Parvum
-        \[ \inclinatum \deminutum b \]
-        \noBreak s^\markup {"f"}
-    }
-    \paper {
-        interscoreline = 1
-        \translator {
-            \ScoreContext
-            \remove "Bar_number_engraver"
-        }
-        \translator {
-            \StaffContext
-            \remove "Clef_engraver"
-            \remove "Key_engraver"
-            StaffSymbol \set #'transparent = ##t
-            \remove "Time_signature_engraver"
-            \remove "Bar_engraver"
-            minimumVerticalExtent = ##f
-        }
-        \translator {
-            \VoiceContext
-            \remove Ligature_bracket_engraver
-            \consists Vaticana_ligature_engraver
-            NoteHead \set #'style = #'vaticana_punctum
-            Stem \set #'transparent = ##t
-        }
-    }
-}
-@end lilypond
-
-@item
-@code{2. Virga}
-@tab
-@lilypond[noindent,staffsize=26,nofragment,linewidth=1.0\cm]
-\include "gregorian-init.ly"
-\score {
-    \notes \transpose c c' {
-        % Virga
-        \[ \virga b \]
-        \noBreak s^\markup {"g"}
-    }
-    \paper {
-        interscoreline = 1
-        \translator {
-            \ScoreContext
-            \remove "Bar_number_engraver"
-        }
-        \translator {
-            \StaffContext
-            \remove "Clef_engraver"
-            \remove "Key_engraver"
-            StaffSymbol \set #'transparent = ##t
-            \remove "Time_signature_engraver"
-            \remove "Bar_engraver"
-            minimumVerticalExtent = ##f
-        }
-        \translator {
-            \VoiceContext
-            \remove Ligature_bracket_engraver
-            \consists Vaticana_ligature_engraver
-            NoteHead \set #'style = #'vaticana_punctum
-            Stem \set #'transparent = ##t
-        }
-    }
-}
-@end lilypond
-@tab
-@tab
-
-@item
-@code{3. Apostropha vel Stropha}
-@tab
-@lilypond[noindent,staffsize=26,nofragment,linewidth=1.0\cm]
-\include "gregorian-init.ly"
-\score {
-    \notes \transpose c c' {
-        % Stropha
-        \[ \stropha b \]
-        \noBreak s^\markup {"h"}
-    }
-    \paper {
-        interscoreline = 1
-        \translator {
-            \ScoreContext
-            \remove "Bar_number_engraver"
-        }
-        \translator {
-            \StaffContext
-            \remove "Clef_engraver"
-            \remove "Key_engraver"
-            StaffSymbol \set #'transparent = ##t
-            \remove "Time_signature_engraver"
-            \remove "Bar_engraver"
-            minimumVerticalExtent = ##f
-        }
-        \translator {
-            \VoiceContext
-            \remove Ligature_bracket_engraver
-            \consists Vaticana_ligature_engraver
-            NoteHead \set #'style = #'vaticana_punctum
-            Stem \set #'transparent = ##t
-        }
-    }
-}
-@end lilypond
-@tab
-@lilypond[noindent,staffsize=26,nofragment,linewidth=1.0\cm]
-\include "gregorian-init.ly"
-\score {
-    \notes \transpose c c' {
-        % Stropha Aucta
-        \[ \stropha \auctum b \]
-        \noBreak s^\markup {"i"}
-    }
-    \paper {
-        interscoreline = 1
-        \translator {
-            \ScoreContext
-            \remove "Bar_number_engraver"
-        }
-        \translator {
-            \StaffContext
-            \remove "Clef_engraver"
-            \remove "Key_engraver"
-            StaffSymbol \set #'transparent = ##t
-            \remove "Time_signature_engraver"
-            \remove "Bar_engraver"
-            minimumVerticalExtent = ##f
-        }
-        \translator {
-            \VoiceContext
-            \remove Ligature_bracket_engraver
-            \consists Vaticana_ligature_engraver
-            NoteHead \set #'style = #'vaticana_punctum
-            Stem \set #'transparent = ##t
-        }
-    }
-}
-@end lilypond
-@tab
-
-@item
-@code{4. Oriscus}
-@tab
-@lilypond[noindent,staffsize=26,nofragment,linewidth=1.0\cm]
-\include "gregorian-init.ly"
-\score {
-    \notes \transpose c c' {
-        % Oriscus
-        \[ \oriscus b \]
-        \noBreak s^\markup {"j"}
-    }
-    \paper {
-        interscoreline = 1
-        \translator {
-            \ScoreContext
-            \remove "Bar_number_engraver"
-        }
-        \translator {
-            \StaffContext
-            \remove "Clef_engraver"
-            \remove "Key_engraver"
-            StaffSymbol \set #'transparent = ##t
-            \remove "Time_signature_engraver"
-            \remove "Bar_engraver"
-            minimumVerticalExtent = ##f
-        }
-        \translator {
-            \VoiceContext
-            \remove Ligature_bracket_engraver
-            \consists Vaticana_ligature_engraver
-            NoteHead \set #'style = #'vaticana_punctum
-            Stem \set #'transparent = ##t
-        }
-    }
-}
-@end lilypond
-@tab
-@tab
-
-@item
-@code{5. Clivis vel Flexa}
-@tab
-@lilypond[noindent,staffsize=26,nofragment,linewidth=1.0\cm]
-\include "gregorian-init.ly"
-\score {
-    \notes \transpose c c' {
-        % Clivis vel Flexa
-        \[ b \flexa g \]
-        s^\markup {"k"}
-    }
-    \paper {
-        interscoreline = 1
-        \translator {
-            \ScoreContext
-            \remove "Bar_number_engraver"
-        }
-        \translator {
-            \StaffContext
-            \remove "Clef_engraver"
-            \remove "Key_engraver"
-            StaffSymbol \set #'transparent = ##t
-            \remove "Time_signature_engraver"
-            \remove "Bar_engraver"
-            minimumVerticalExtent = ##f
-        }
-        \translator {
-            \VoiceContext
-            \remove Ligature_bracket_engraver
-            \consists Vaticana_ligature_engraver
-            NoteHead \set #'style = #'vaticana_punctum
-            Stem \set #'transparent = ##t
-        }
-    }
-}
-@end lilypond
-@tab
-@lilypond[noindent,staffsize=26,nofragment,linewidth=2.0\cm]
-\include "gregorian-init.ly"
-\score {
-    \notes \transpose c c' {
-        % Clivis Aucta Descendens
-        \[ b \flexa \auctum \descendens g \]
-        \noBreak s^\markup {"l"} \noBreak
-
-        % Clivis Aucta Ascendens
-        \[ b \flexa \auctum \ascendens g \]
-        \noBreak s^\markup {"m"}
-    }
-    \paper {
-        interscoreline = 1
-        \translator {
-            \ScoreContext
-            \remove "Bar_number_engraver"
-        }
-        \translator {
-            \StaffContext
-            \remove "Clef_engraver"
-            \remove "Key_engraver"
-            StaffSymbol \set #'transparent = ##t
-            \remove "Time_signature_engraver"
-            \remove "Bar_engraver"
-            minimumVerticalExtent = ##f
-        }
-        \translator {
-            \VoiceContext
-            \remove Ligature_bracket_engraver
-            \consists Vaticana_ligature_engraver
-            NoteHead \set #'style = #'vaticana_punctum
-            Stem \set #'transparent = ##t
-        }
-    }
-}
-@end lilypond
-@tab
-@lilypond[noindent,staffsize=26,nofragment,linewidth=1.0\cm]
-\include "gregorian-init.ly"
-\score {
-    \notes \transpose c c' {
-        % Cephalicus
-        \[ b \flexa \deminutum g \]
-        s^\markup {"n"}
-    }
-    \paper {
-        interscoreline = 1
-        \translator {
-            \ScoreContext
-            \remove "Bar_number_engraver"
-        }
-        \translator {
-            \StaffContext
-            \remove "Clef_engraver"
-            \remove "Key_engraver"
-            StaffSymbol \set #'transparent = ##t
-            \remove "Time_signature_engraver"
-            \remove "Bar_engraver"
-            minimumVerticalExtent = ##f
-        }
-        \translator {
-            \VoiceContext
-            \remove Ligature_bracket_engraver
-            \consists Vaticana_ligature_engraver
-            NoteHead \set #'style = #'vaticana_punctum
-            Stem \set #'transparent = ##t
-        }
-    }
-}
-@end lilypond
-
-@item
-@code{6. Podatus vel Pes}
-@tab
-@lilypond[noindent,staffsize=26,nofragment,linewidth=1.0\cm]
-\include "gregorian-init.ly"
-\score {
-    \notes \transpose c c' {
-        % Podatus vel Pes
-        \[ g \pes b \]
-        s^\markup {"o"}
-    }
-    \paper {
-        interscoreline = 1
-        \translator {
-            \ScoreContext
-            \remove "Bar_number_engraver"
-        }
-        \translator {
-            \StaffContext
-            \remove "Clef_engraver"
-            \remove "Key_engraver"
-            StaffSymbol \set #'transparent = ##t
-            \remove "Time_signature_engraver"
-            \remove "Bar_engraver"
-            minimumVerticalExtent = ##f
-        }
-        \translator {
-            \VoiceContext
-            \remove Ligature_bracket_engraver
-            \consists Vaticana_ligature_engraver
-            NoteHead \set #'style = #'vaticana_punctum
-            Stem \set #'transparent = ##t
-        }
-    }
-}
-@end lilypond
-@tab
-@lilypond[noindent,staffsize=26,nofragment,linewidth=2.0\cm]
-\include "gregorian-init.ly"
-\score {
-    \notes \transpose c c' {
-        % Pes Auctus Descendens
-        \[ g \pes \auctum \descendens b \]
-        \noBreak s^\markup {"p"} \noBreak
-
-        % Pes Auctus Ascendens
-        \[ g \pes \auctum \ascendens b \]
-        \noBreak s^\markup {"q"}
-    }
-    \paper {
-        interscoreline = 1
-        \translator {
-            \ScoreContext
-            \remove "Bar_number_engraver"
-        }
-        \translator {
-            \StaffContext
-            \remove "Clef_engraver"
-            \remove "Key_engraver"
-            StaffSymbol \set #'transparent = ##t
-            \remove "Time_signature_engraver"
-            \remove "Bar_engraver"
-            minimumVerticalExtent = ##f
-        }
-        \translator {
-            \VoiceContext
-            \remove Ligature_bracket_engraver
-            \consists Vaticana_ligature_engraver
-            NoteHead \set #'style = #'vaticana_punctum
-            Stem \set #'transparent = ##t
-        }
-    }
-}
-@end lilypond
-@tab
-@lilypond[noindent,staffsize=26,nofragment,linewidth=1.0\cm]
-\include "gregorian-init.ly"
-\score {
-    \notes \transpose c c' {
-        % Epiphonus
-        \[ g \pes \deminutum b \]
-        s^\markup {"r"}
-    }
-    \paper {
-        interscoreline = 1
-        \translator {
-            \ScoreContext
-            \remove "Bar_number_engraver"
-        }
-        \translator {
-            \StaffContext
-            \remove "Clef_engraver"
-            \remove "Key_engraver"
-            StaffSymbol \set #'transparent = ##t
-            \remove "Time_signature_engraver"
-            \remove "Bar_engraver"
-            minimumVerticalExtent = ##f
-        }
-        \translator {
-            \VoiceContext
-            \remove Ligature_bracket_engraver
-            \consists Vaticana_ligature_engraver
-            NoteHead \set #'style = #'vaticana_punctum
-            Stem \set #'transparent = ##t
-        }
-    }
-}
-@end lilypond
-
-@item
-@code{7. Pes Quassus}
-@tab
-@lilypond[noindent,staffsize=26,nofragment,linewidth=1.0\cm]
-\include "gregorian-init.ly"
-\score {
-    \notes \transpose c c' {
-        % Pes Quassus
-        \[ \oriscus g \pes \virga b \]
-        s^\markup {"s"}
-    }
-    \paper {
-        interscoreline = 1
-        \translator {
-            \ScoreContext
-            \remove "Bar_number_engraver"
-        }
-        \translator {
-            \StaffContext
-            \remove "Clef_engraver"
-            \remove "Key_engraver"
-            StaffSymbol \set #'transparent = ##t
-            \remove "Time_signature_engraver"
-            \remove "Bar_engraver"
-            minimumVerticalExtent = ##f
-        }
-        \translator {
-            \VoiceContext
-            \remove Ligature_bracket_engraver
-            \consists Vaticana_ligature_engraver
-            NoteHead \set #'style = #'vaticana_punctum
-            Stem \set #'transparent = ##t
-        }
-    }
-}
-@end lilypond
-@tab
-@lilypond[noindent,staffsize=26,nofragment,linewidth=1.0\cm]
-\include "gregorian-init.ly"
-\score {
-    \notes \transpose c c' {
-        % Pes Quassus Auctus Descendens
-        \[ \oriscus g \pes \auctum \descendens b \]
-        s^\markup {"t"}
-    }
-    \paper {
-        interscoreline = 1
-        \translator {
-            \ScoreContext
-            \remove "Bar_number_engraver"
-        }
-        \translator {
-            \StaffContext
-            \remove "Clef_engraver"
-            \remove "Key_engraver"
-            StaffSymbol \set #'transparent = ##t
-            \remove "Time_signature_engraver"
-            \remove "Bar_engraver"
-            minimumVerticalExtent = ##f
-        }
-        \translator {
-            \VoiceContext
-            \remove Ligature_bracket_engraver
-            \consists Vaticana_ligature_engraver
-            NoteHead \set #'style = #'vaticana_punctum
-            Stem \set #'transparent = ##t
-        }
-    }
-}
-@end lilypond
-@tab
-
-@item
-@code{8. Quilisma Pes}
-@tab
-@lilypond[noindent,staffsize=26,nofragment,linewidth=1.0\cm]
-\include "gregorian-init.ly"
-\score {
-    \notes \transpose c c' {
-        % Quilisma Pes
-        \[ \quilisma g \pes b \]
-        s^\markup {"u"}
-    }
-    \paper {
-        interscoreline = 1
-        \translator {
-            \ScoreContext
-            \remove "Bar_number_engraver"
-        }
-        \translator {
-            \StaffContext
-            \remove "Clef_engraver"
-            \remove "Key_engraver"
-            StaffSymbol \set #'transparent = ##t
-            \remove "Time_signature_engraver"
-            \remove "Bar_engraver"
-            minimumVerticalExtent = ##f
-        }
-        \translator {
-            \VoiceContext
-            \remove Ligature_bracket_engraver
-            \consists Vaticana_ligature_engraver
-            NoteHead \set #'style = #'vaticana_punctum
-            Stem \set #'transparent = ##t
-        }
-    }
-}
-@end lilypond
-@tab
-@lilypond[noindent,staffsize=26,nofragment,linewidth=1.0\cm]
-\include "gregorian-init.ly"
-\score {
-    \notes \transpose c c' {
-        % Quilisma Pes Auctus Descendens
-        \[ \quilisma g \pes \auctum \descendens b \]
-        s^\markup {"v"}
-    }
-    \paper {
-        interscoreline = 1
-        \translator {
-            \ScoreContext
-            \remove "Bar_number_engraver"
-        }
-        \translator {
-            \StaffContext
-            \remove "Clef_engraver"
-            \remove "Key_engraver"
-            StaffSymbol \set #'transparent = ##t
-            \remove "Time_signature_engraver"
-            \remove "Bar_engraver"
-            minimumVerticalExtent = ##f
-        }
-        \translator {
-            \VoiceContext
-            \remove Ligature_bracket_engraver
-            \consists Vaticana_ligature_engraver
-            NoteHead \set #'style = #'vaticana_punctum
-            Stem \set #'transparent = ##t
-        }
-    }
-}
-@end lilypond
-@tab
-
-@item
-@code{9. Podatus Initio Debilis}
-@tab
-@lilypond[noindent,staffsize=26,nofragment,linewidth=1.0\cm]
-\include "gregorian-init.ly"
-\score {
-    \notes \transpose c c' {
-        % Pes Initio Debilis
-        \[ \deminutum g \pes b \]
-        s^\markup {"w"}
-    }
-    \paper {
-        interscoreline = 1
-        \translator {
-            \ScoreContext
-            \remove "Bar_number_engraver"
-        }
-        \translator {
-            \StaffContext
-            \remove "Clef_engraver"
-            \remove "Key_engraver"
-            StaffSymbol \set #'transparent = ##t
-            \remove "Time_signature_engraver"
-            \remove "Bar_engraver"
-            minimumVerticalExtent = ##f
-        }
-        \translator {
-            \VoiceContext
-            \remove Ligature_bracket_engraver
-            \consists Vaticana_ligature_engraver
-            NoteHead \set #'style = #'vaticana_punctum
-            Stem \set #'transparent = ##t
-        }
-    }
-}
-@end lilypond
-@tab
-@lilypond[noindent,staffsize=26,nofragment,linewidth=1.0\cm]
-\include "gregorian-init.ly"
-\score {
-    \notes \transpose c c' {
-        % Pes Auctus Descendens Initio Debilis
-        \[ \deminutum g \pes \auctum \descendens b \]
-        s^\markup {"x"}
-    }
-    \paper {
-        interscoreline = 1
-        \translator {
-            \ScoreContext
-            \remove "Bar_number_engraver"
-        }
-        \translator {
-            \StaffContext
-            \remove "Clef_engraver"
-            \remove "Key_engraver"
-            StaffSymbol \set #'transparent = ##t
-            \remove "Time_signature_engraver"
-            \remove "Bar_engraver"
-            minimumVerticalExtent = ##f
-        }
-        \translator {
-            \VoiceContext
-            \remove Ligature_bracket_engraver
-            \consists Vaticana_ligature_engraver
-            NoteHead \set #'style = #'vaticana_punctum
-            Stem \set #'transparent = ##t
-        }
-    }
-}
-@end lilypond
-@tab
-
-@item
-@code{10. Torculus}
-@tab
-@lilypond[noindent,staffsize=26,nofragment,linewidth=1.0\cm]
-\include "gregorian-init.ly"
-\score {
-    \notes \transpose c c' {
-        % Torculus
-        \[ a \pes b \flexa g \]
-        s^\markup {"y"}
-    }
-    \paper {
-        interscoreline = 1
-        \translator {
-            \ScoreContext
-            \remove "Bar_number_engraver"
-        }
-        \translator {
-            \StaffContext
-            \remove "Clef_engraver"
-            \remove "Key_engraver"
-            StaffSymbol \set #'transparent = ##t
-            \remove "Time_signature_engraver"
-            \remove "Bar_engraver"
-            minimumVerticalExtent = ##f
-        }
-        \translator {
-            \VoiceContext
-            \remove Ligature_bracket_engraver
-            \consists Vaticana_ligature_engraver
-            NoteHead \set #'style = #'vaticana_punctum
-            Stem \set #'transparent = ##t
-        }
-    }
-}
-@end lilypond
-@tab
-@lilypond[noindent,staffsize=26,nofragment,linewidth=1.0\cm]
-\include "gregorian-init.ly"
-\score {
-    \notes \transpose c c' {
-        % Torculus Auctus Descendens
-        \[ a \pes b \flexa \auctum \descendens g \]
-        s^\markup {"z"}
-    }
-    \paper {
-        interscoreline = 1
-        \translator {
-            \ScoreContext
-            \remove "Bar_number_engraver"
-        }
-        \translator {
-            \StaffContext
-            \remove "Clef_engraver"
-            \remove "Key_engraver"
-            StaffSymbol \set #'transparent = ##t
-            \remove "Time_signature_engraver"
-            \remove "Bar_engraver"
-            minimumVerticalExtent = ##f
-        }
-        \translator {
-            \VoiceContext
-            \remove Ligature_bracket_engraver
-            \consists Vaticana_ligature_engraver
-            NoteHead \set #'style = #'vaticana_punctum
-            Stem \set #'transparent = ##t
-        }
-    }
-}
-@end lilypond
-@tab
-@lilypond[noindent,staffsize=26,nofragment,linewidth=1.0\cm]
-\include "gregorian-init.ly"
-\score {
-    \notes \transpose c c' {
-        % Torculus Deminutus
-        \[ a \pes b \flexa \deminutum g \]
-        s^\markup {"A"}
-    }
-    \paper {
-        interscoreline = 1
-        \translator {
-            \ScoreContext
-            \remove "Bar_number_engraver"
-        }
-        \translator {
-            \StaffContext
-            \remove "Clef_engraver"
-            \remove "Key_engraver"
-            StaffSymbol \set #'transparent = ##t
-            \remove "Time_signature_engraver"
-            \remove "Bar_engraver"
-            minimumVerticalExtent = ##f
-        }
-        \translator {
-            \VoiceContext
-            \remove Ligature_bracket_engraver
-            \consists Vaticana_ligature_engraver
-            NoteHead \set #'style = #'vaticana_punctum
-            Stem \set #'transparent = ##t
-        }
-    }
-}
-@end lilypond
-
-@item
-@code{11. Torculus Initio Debilis}
-@tab
-@lilypond[noindent,staffsize=26,nofragment,linewidth=1.0\cm]
-\include "gregorian-init.ly"
-\score {
-    \notes \transpose c c' {
-        % Torculus Initio Debilis
-        \[ \deminutum a \pes b \flexa g \]
-        s^\markup {"B"}
-    }
-    \paper {
-        interscoreline = 1
-        \translator {
-            \ScoreContext
-            \remove "Bar_number_engraver"
-        }
-        \translator {
-            \StaffContext
-            \remove "Clef_engraver"
-            \remove "Key_engraver"
-            StaffSymbol \set #'transparent = ##t
-            \remove "Time_signature_engraver"
-            \remove "Bar_engraver"
-            minimumVerticalExtent = ##f
-        }
-        \translator {
-            \VoiceContext
-            \remove Ligature_bracket_engraver
-            \consists Vaticana_ligature_engraver
-            NoteHead \set #'style = #'vaticana_punctum
-            Stem \set #'transparent = ##t
-        }
-    }
-}
-@end lilypond
-@tab
-@lilypond[noindent,staffsize=26,nofragment,linewidth=1.0\cm]
-\include "gregorian-init.ly"
-\score {
-    \notes \transpose c c' {
-        % Torculus Auctus Descendens Initio Debilis
-        \[ \deminutum a \pes b \flexa \auctum \descendens g \]
-        s^\markup {"C"}
-    }
-    \paper {
-        interscoreline = 1
-        \translator {
-            \ScoreContext
-            \remove "Bar_number_engraver"
-        }
-        \translator {
-            \StaffContext
-            \remove "Clef_engraver"
-            \remove "Key_engraver"
-            StaffSymbol \set #'transparent = ##t
-            \remove "Time_signature_engraver"
-            \remove "Bar_engraver"
-            minimumVerticalExtent = ##f
-        }
-        \translator {
-            \VoiceContext
-            \remove Ligature_bracket_engraver
-            \consists Vaticana_ligature_engraver
-            NoteHead \set #'style = #'vaticana_punctum
-            Stem \set #'transparent = ##t
-        }
-    }
-}
-@end lilypond
-@tab
-@lilypond[noindent,staffsize=26,nofragment,linewidth=1.0\cm]
-\include "gregorian-init.ly"
-\score {
-    \notes \transpose c c' {
-        % Torculus Deminutus Initio Debilis
-        \[ \deminutum a \pes b \flexa \deminutum g \]
-        s^\markup {"D"}
-    }
-    \paper {
-        interscoreline = 1
-        \translator {
-            \ScoreContext
-            \remove "Bar_number_engraver"
-        }
-        \translator {
-            \StaffContext
-            \remove "Clef_engraver"
-            \remove "Key_engraver"
-            StaffSymbol \set #'transparent = ##t
-            \remove "Time_signature_engraver"
-            \remove "Bar_engraver"
-            minimumVerticalExtent = ##f
-        }
-        \translator {
-            \VoiceContext
-            \remove Ligature_bracket_engraver
-            \consists Vaticana_ligature_engraver
-            NoteHead \set #'style = #'vaticana_punctum
-            Stem \set #'transparent = ##t
-        }
-    }
-}
-@end lilypond
-
-@item
-@code{12. Porrectus}
-@tab
-@lilypond[noindent,staffsize=26,nofragment,linewidth=1.0\cm]
-\include "gregorian-init.ly"
-\score {
-    \notes \transpose c c' {
-        % Porrectus
-        \[ a \flexa g \pes b \]
-        s^\markup {"E"}
-    }
-    \paper {
-        interscoreline = 1
-        \translator {
-            \ScoreContext
-            \remove "Bar_number_engraver"
-        }
-        \translator {
-            \StaffContext
-            \remove "Clef_engraver"
-            \remove "Key_engraver"
-            StaffSymbol \set #'transparent = ##t
-            \remove "Time_signature_engraver"
-            \remove "Bar_engraver"
-            minimumVerticalExtent = ##f
-        }
-        \translator {
-            \VoiceContext
-            \remove Ligature_bracket_engraver
-            \consists Vaticana_ligature_engraver
-            NoteHead \set #'style = #'vaticana_punctum
-            Stem \set #'transparent = ##t
-        }
-    }
-}
-@end lilypond
-@tab
-@lilypond[noindent,staffsize=26,nofragment,linewidth=1.0\cm]
-\include "gregorian-init.ly"
-\score {
-    \notes \transpose c c' {
-        % Porrectus Auctus Descendens
-        \[ a \flexa g \pes \auctum \descendens b \]
-        s^\markup {"F"}
-    }
-    \paper {
-        interscoreline = 1
-        \translator {
-            \ScoreContext
-            \remove "Bar_number_engraver"
-        }
-        \translator {
-            \StaffContext
-            \remove "Clef_engraver"
-            \remove "Key_engraver"
-            StaffSymbol \set #'transparent = ##t
-            \remove "Time_signature_engraver"
-            \remove "Bar_engraver"
-            minimumVerticalExtent = ##f
-        }
-        \translator {
-            \VoiceContext
-            \remove Ligature_bracket_engraver
-            \consists Vaticana_ligature_engraver
-            NoteHead \set #'style = #'vaticana_punctum
-            Stem \set #'transparent = ##t
-        }
-    }
-}
-@end lilypond
-@tab
-@lilypond[noindent,staffsize=26,nofragment,linewidth=1.0\cm]
-\include "gregorian-init.ly"
-\score {
-    \notes \transpose c c' {
-        % Porrectus Deminutus
-        \[ a \flexa g \pes \deminutum b \]
-        s^\markup {"G"}
-    }
-    \paper {
-        interscoreline = 1
-        \translator {
-            \ScoreContext
-            \remove "Bar_number_engraver"
-        }
-        \translator {
-            \StaffContext
-            \remove "Clef_engraver"
-            \remove "Key_engraver"
-            StaffSymbol \set #'transparent = ##t
-            \remove "Time_signature_engraver"
-            \remove "Bar_engraver"
-            minimumVerticalExtent = ##f
-        }
-        \translator {
-            \VoiceContext
-            \remove Ligature_bracket_engraver
-            \consists Vaticana_ligature_engraver
-            NoteHead \set #'style = #'vaticana_punctum
-            Stem \set #'transparent = ##t
-        }
-    }
-}
-@end lilypond
-
-@item
-@code{13. Climacus}
-@tab
-@lilypond[noindent,staffsize=26,nofragment,linewidth=1.0\cm]
-\include "gregorian-init.ly"
-\score {
-    \notes \transpose c c' {
-        % Climacus
-        \[ \virga b \inclinatum a \inclinatum g \]
-        s^\markup {"H"}
-    }
-    \paper {
-        interscoreline = 1
-        \translator {
-            \ScoreContext
-            \remove "Bar_number_engraver"
-        }
-        \translator {
-            \StaffContext
-            \remove "Clef_engraver"
-            \remove "Key_engraver"
-            StaffSymbol \set #'transparent = ##t
-            \remove "Time_signature_engraver"
-            \remove "Bar_engraver"
-            minimumVerticalExtent = ##f
-        }
-        \translator {
-            \VoiceContext
-            \remove Ligature_bracket_engraver
-            \consists Vaticana_ligature_engraver
-            NoteHead \set #'style = #'vaticana_punctum
-            Stem \set #'transparent = ##t
-        }
-    }
-}
-@end lilypond
-@tab
-@lilypond[noindent,staffsize=26,nofragment,linewidth=1.0\cm]
-\include "gregorian-init.ly"
-\score {
-    \notes \transpose c c' {
-        % Climacus Auctus
-        \[ \virga b \inclinatum a \inclinatum \auctum g \]
-        s^\markup {"I"}
-    }
-    \paper {
-        interscoreline = 1
-        \translator {
-            \ScoreContext
-            \remove "Bar_number_engraver"
-        }
-        \translator {
-            \StaffContext
-            \remove "Clef_engraver"
-            \remove "Key_engraver"
-            StaffSymbol \set #'transparent = ##t
-            \remove "Time_signature_engraver"
-            \remove "Bar_engraver"
-            minimumVerticalExtent = ##f
-        }
-        \translator {
-            \VoiceContext
-            \remove Ligature_bracket_engraver
-            \consists Vaticana_ligature_engraver
-            NoteHead \set #'style = #'vaticana_punctum
-            Stem \set #'transparent = ##t
-        }
-    }
-}
-@end lilypond
-@tab
-@lilypond[noindent,staffsize=26,nofragment,linewidth=1.0\cm]
-\include "gregorian-init.ly"
-\score {
-    \notes \transpose c c' {
-        % Climacus Deminutus
-        \[ \virga b \inclinatum a \inclinatum \deminutum g \]
-        s^\markup {"J"}
-    }
-    \paper {
-        interscoreline = 1
-        \translator {
-            \ScoreContext
-            \remove "Bar_number_engraver"
-        }
-        \translator {
-            \StaffContext
-            \remove "Clef_engraver"
-            \remove "Key_engraver"
-            StaffSymbol \set #'transparent = ##t
-            \remove "Time_signature_engraver"
-            \remove "Bar_engraver"
-            minimumVerticalExtent = ##f
-        }
-        \translator {
-            \VoiceContext
-            \remove Ligature_bracket_engraver
-            \consists Vaticana_ligature_engraver
-            NoteHead \set #'style = #'vaticana_punctum
-            Stem \set #'transparent = ##t
-        }
-    }
-}
-@end lilypond
-
-@item
-@code{14. Scandicus}
-@tab
-@lilypond[noindent,staffsize=26,nofragment,linewidth=1.0\cm]
-\include "gregorian-init.ly"
-\score {
-    \notes \transpose c c' {
-        % Scandicus
-        \[ g \pes a \virga b \]
-        s^\markup {"K"}
-    }
-    \paper {
-        interscoreline = 1
-        \translator {
-            \ScoreContext
-            \remove "Bar_number_engraver"
-        }
-        \translator {
-            \StaffContext
-            \remove "Clef_engraver"
-            \remove "Key_engraver"
-            StaffSymbol \set #'transparent = ##t
-            \remove "Time_signature_engraver"
-            \remove "Bar_engraver"
-            minimumVerticalExtent = ##f
-        }
-        \translator {
-            \VoiceContext
-            \remove Ligature_bracket_engraver
-            \consists Vaticana_ligature_engraver
-            NoteHead \set #'style = #'vaticana_punctum
-            Stem \set #'transparent = ##t
-        }
-    }
-}
-@end lilypond
-@tab
-@lilypond[noindent,staffsize=26,nofragment,linewidth=1.0\cm]
-\include "gregorian-init.ly"
-\score {
-    \notes \transpose c c' {
-        % Scandicus Auctus Descendens
-        \[ g \pes a \pes \auctum \descendens b \]
-        s^\markup {"L"}
-    }
-    \paper {
-        interscoreline = 1
-        \translator {
-            \ScoreContext
-            \remove "Bar_number_engraver"
-        }
-        \translator {
-            \StaffContext
-            \remove "Clef_engraver"
-            \remove "Key_engraver"
-            StaffSymbol \set #'transparent = ##t
-            \remove "Time_signature_engraver"
-            \remove "Bar_engraver"
-            minimumVerticalExtent = ##f
-        }
-        \translator {
-            \VoiceContext
-            \remove Ligature_bracket_engraver
-            \consists Vaticana_ligature_engraver
-            NoteHead \set #'style = #'vaticana_punctum
-            Stem \set #'transparent = ##t
-        }
-    }
-}
-@end lilypond
-@tab
-@lilypond[noindent,staffsize=26,nofragment,linewidth=1.0\cm]
-\include "gregorian-init.ly"
-\score {
-    \notes \transpose c c' {
-        % Scandicus Deminutus
-        \[ g \pes a \pes \deminutum b \]
-        s^\markup {"M"}
-    }
-    \paper {
-        interscoreline = 1
-        \translator {
-            \ScoreContext
-            \remove "Bar_number_engraver"
-        }
-        \translator {
-            \StaffContext
-            \remove "Clef_engraver"
-            \remove "Key_engraver"
-            StaffSymbol \set #'transparent = ##t
-            \remove "Time_signature_engraver"
-            \remove "Bar_engraver"
-            minimumVerticalExtent = ##f
-        }
-        \translator {
-            \VoiceContext
-            \remove Ligature_bracket_engraver
-            \consists Vaticana_ligature_engraver
-            NoteHead \set #'style = #'vaticana_punctum
-            Stem \set #'transparent = ##t
-        }
-    }
-}
-@end lilypond
-
-@item
-@code{15. Salicus}
-@tab
-@lilypond[noindent,staffsize=26,nofragment,linewidth=1.0\cm]
-\include "gregorian-init.ly"
-\score {
-    \notes \transpose c c' {
-        % Salicus
-        \[ g \oriscus a \pes \virga b \]
-        s^\markup {"N"}
-    }
-    \paper {
-        interscoreline = 1
-        \translator {
-            \ScoreContext
-            \remove "Bar_number_engraver"
-        }
-        \translator {
-            \StaffContext
-            \remove "Clef_engraver"
-            \remove "Key_engraver"
-            StaffSymbol \set #'transparent = ##t
-            \remove "Time_signature_engraver"
-            \remove "Bar_engraver"
-            minimumVerticalExtent = ##f
-        }
-        \translator {
-            \VoiceContext
-            \remove Ligature_bracket_engraver
-            \consists Vaticana_ligature_engraver
-            NoteHead \set #'style = #'vaticana_punctum
-            Stem \set #'transparent = ##t
-        }
-    }
-}
-@end lilypond
-@tab
-@lilypond[noindent,staffsize=26,nofragment,linewidth=1.0\cm]
-\include "gregorian-init.ly"
-\score {
-    \notes \transpose c c' {
-        % Salicus Auctus Descendens
-        \[ g \oriscus a \pes \auctum \descendens b \]
-        s^\markup {"O"}
-    }
-    \paper {
-        interscoreline = 1
-        \translator {
-            \ScoreContext
-            \remove "Bar_number_engraver"
-        }
-        \translator {
-            \StaffContext
-            \remove "Clef_engraver"
-            \remove "Key_engraver"
-            StaffSymbol \set #'transparent = ##t
-            \remove "Time_signature_engraver"
-            \remove "Bar_engraver"
-            minimumVerticalExtent = ##f
-        }
-        \translator {
-            \VoiceContext
-            \remove Ligature_bracket_engraver
-            \consists Vaticana_ligature_engraver
-            NoteHead \set #'style = #'vaticana_punctum
-            Stem \set #'transparent = ##t
-        }
-    }
-}
-@end lilypond
-@tab
-
-@item
-@code{16. Trigonus}
-@tab
-@lilypond[noindent,staffsize=26,nofragment,linewidth=1.0\cm]
-\include "gregorian-init.ly"
-\score {
-    \notes \transpose c c' {
-        % Trigonus
-        \[ \stropha b \stropha b \stropha a \]
-        s^\markup {"P"}
-    }
-    \paper {
-        interscoreline = 1
-        \translator {
-            \ScoreContext
-            \remove "Bar_number_engraver"
-        }
-        \translator {
-            \StaffContext
-            \remove "Clef_engraver"
-            \remove "Key_engraver"
-            StaffSymbol \set #'transparent = ##t
-            \remove "Time_signature_engraver"
-            \remove "Bar_engraver"
-            minimumVerticalExtent = ##f
-        }
-        \translator {
-            \VoiceContext
-            \remove Ligature_bracket_engraver
-            \consists Vaticana_ligature_engraver
-            NoteHead \set #'style = #'vaticana_punctum
-            Stem \set #'transparent = ##t
-        }
-    }
-}
-@end lilypond
-@tab
-@tab
-
-@end multitable
-
-@syntax
-
-Unlike most other neumes notation systems, the input language for
-neumes does not necessarily reflect directly the typographical
-appearance, but is designed to solely focuse on musical meaning.  For
-example, @code{\[ a \pes b \flexa g \]} produces a Torculus consisting
-of three Punctum heads, while @code{\[ a \flexa g \pes b \]} produces
-a Porrectus with a curved flexa shape and only a single Punctum head.
-There is no command to explicitly typeset the curved flexa shape; the
-decision of when to typeset a curved flexa shape is purely taken from
-the musical input.  The idea of this approach is to separate the
-musical aspects of the input from the notation style of the output.
-This way, the same input can be reused to typeset the same music in a
-different style of Gregorian chant notation such as Hufnagel (also
-known as German gothic neumes) or Medicaea (kind of a very simple
-forerunner of the Editio Vaticana).  As soon as Hufnagel ligature
-engraver and Medicaea ligature engraver will have been implemented, it
-will be as simple as replacing the ligature engraver in the
-@internalsref{Voice} context to get the desired notation style from
-the same input.
-
-The following table shows the code fragments that produce the
-ligatures in the above neumes table.  The letter in the first column
-in each line of the below table indicates to which ligature in the
-above table it refers.  The second column gives the name of the
-ligature.  The third column shows the code fragment that produces this
-ligature, using @code{g}, @code{a} and @code{b} as example pitches.
-
-@multitable @columnfractions .1 .4 .5
-
-@item
-@b{#} @tab
-@b{Name} @tab
-@b{Input Language}
-
-@item
-a @tab
-Punctum @tab
-@code{\[ b \]}
-
-@item
-b @tab
-Punctum Inclinatum @tab
-@code{\[ \inclinatum b \]}
-
-@item
-c @tab
-Punctum Auctum Ascendens @tab
-@code{\[ \auctum \ascendens b \]}
-
-@item
-d @tab
-Punctum Auctum Descendens @tab
-@code{\[ \auctum \descendens b \]}
-
-@item
-e @tab
-Punctum Inclinatum Auctum @tab
-@code{\[ \inclinatum \auctum b \]}
-
-@item
-f @tab
-Punctum Inclinatum Parvum @tab
-@code{\[ \inclinatum \deminutum b \]}
-
-@item
-g @tab
-Virga @tab
-@code{\[ \virga b \]}
-
-@item
-h @tab
-Stropha @tab
-@code{\[ \stropha b \]}
-
-@item
-i @tab
-Stropha Aucta @tab
-@code{\[ \stropha \auctum b \]}
-
-@item
-j @tab
-Oriscus @tab
-@code{\[ \oriscus b \]}
-
-@item
-k @tab
-Clivis vel Flexa @tab
-@code{\[ b \flexa g \]}
-
-@item
-l @tab
-Clivis Aucta Descendens @tab
-@code{\[ b \flexa \auctum \descendens g \]}
-
-@item
-m @tab
-Clivis Aucta Ascendens @tab
-@code{\[ b \flexa \auctum \ascendens g \]}
-
-@item
-n @tab
-Cephalicus @tab
-@code{\[ b \flexa \deminutum g \]}
-
-@item
-o @tab
-Podatus vel Pes @tab
-@code{\[ g \pes b \]}
-
-@item
-p @tab
-Pes Auctus Descendens @tab
-@code{\[ g \pes \auctum \descendens b \]}
-
-@item
-q @tab
-Pes Auctus Ascendens @tab
-@code{\[ g \pes \auctum \ascendens b \]}
-
-@item
-r @tab
-Epiphonus @tab
-@code{\[ g \pes \deminutum b \]}
-
-@item
-s @tab
-Pes Quassus @tab
-@code{\[ \oriscus g \pes \virga b \]}
-
-@item
-t @tab
-Pes Quassus Auctus Descendens @tab
-@code{\[ \oriscus g \pes \auctum \descendens b \]}
-
-@item
-u @tab
-Quilisma Pes @tab
-@code{\[ \quilisma g \pes b \]}
-
-@item
-v @tab
-Quilisma Pes Auctus Descendens @tab
-@code{\[ \quilisma g \pes \auctum \descendens b \]}
-
-@item
-w @tab
-Pes Initio Debilis @tab
-@code{\[ \deminutum g \pes b \]}
-
-@item
-x @tab
-Pes Auctus Descendens Initio Debilis @tab
-@code{\[ \deminutum g \pes \auctum \descendens b \]}
-
-@item
-y @tab
-Torculus @tab
-@code{\[ a \pes b \flexa g \]}
-
-@item
-z @tab
-Torculus Auctus Descendens @tab
-@code{\[ a \pes b \flexa \auctum \descendens g \]}
-
-@item
-A @tab
-Torculus Deminutus @tab
-@code{\[ a \pes b \flexa \deminutum g \]}
-
-@item
-B @tab
-Torculus Initio Debilis @tab
-@code{\[ \deminutum a \pes b \flexa g \]}
-
-@item
-C @tab
-Torculus Auctus Descendens Initio Debilis @tab
-@code{\[ \deminutum a \pes b \flexa \auctum \descendens g \]}
-
-@item
-D @tab
-Torculus Deminutus Initio Debilis @tab
-@code{\[ \deminutum a \pes b \flexa \deminutum g \]}
-
-@item
-E @tab
-Porrectus @tab
-@code{\[ a \flexa g \pes b \]}
-
-@item
-F @tab
-Porrectus Auctus Descendens @tab
-@code{\[ a \flexa g \pes \auctum \descendens b \]}
-
-@item
-G @tab
-Porrectus Deminutus @tab
-@code{\[ a \flexa g \pes \deminutum b \]}
-
-@item
-H @tab
-Climacus @tab
-@code{\[ \virga b \inclinatum a \inclinatum g \]}
-
-@item
-I @tab
-Climacus Auctus @tab
-@code{\[ \virga b \inclinatum a \inclinatum \auctum g \]}
-
-@item
-J @tab
-Climacus Deminutus @tab
-@code{\[ \virga b \inclinatum a \inclinatum \deminutum g \]}
-
-@item
-K @tab
-Scandicus @tab
-@code{\[ g \pes a \virga b \]}
-
-@item
-L @tab
-Scandicus Auctus Descendens @tab
-@code{\[ g \pes a \pes \auctum \descendens b \]}
-
-@item
-M @tab
-Scandicus Deminutus @tab
-@code{\[ g \pes a \pes \deminutum b \]}
-
-@item
-N @tab
-Salicus @tab
-@code{\[ g \oriscus a \pes \virga b \]}
-
-@item
-O @tab
-Salicus Auctus Descendens @tab
-@code{\[ g \oriscus a \pes \auctum \descendens b \]}
-
-@item
-P @tab
-Trigonus @tab
-@code{\[ \stropha b \stropha b \stropha a \]}
-
-@end multitable
-
-@refcommands
-
-The following head prefixes are supported:
-
-@cindex @code{\virga}
-@code{\virga},
-@cindex @code{\stropha}
-@code{\stropha},
-@cindex @code{\inclinatum}
-@code{\inclinatum},
-@cindex @code{\auctum}
-@code{\auctum},
-@cindex @code{\descendens}
-@code{\descendens},
-@cindex @code{\ascendens}
-@code{\ascendens},
-@cindex @code{\oriscus}
-@code{\oriscus},
-@cindex @code{\quilisma}
-@code{\quilisma},
-@cindex @code{\deminutum}
-@code{\deminutum}.
-
-Head prefixes can be accumulated, though restrictions apply.  For
-example, either @code{\descendens} or @code{\ascendens} can be applied
-to a head, but not both to the same head.
-
-@cindex @code{\pes}
-@cindex @code{\flexa}
-Two adjacent heads can be tied together with the @code{\pes} and
-@code{\flexa} infix commands for a rising and falling line of melody,
-respectively.
-
-@refbugs
-
-Trigonus: apply equal spacing, regardless of pitch.
-
-@node Figured bass
-@subsection Figured bass
-
-@cindex Basso continuo
-
-@c TODO: musicological blurb about FB
-
-@syntax
-
-LilyPond has limited support for figured bass:
-
-@lilypond[verbatim,fragment]
-<<
- \context Voice \notes { \clef bass dis4  c d ais}
- \context FiguredBass
-   \figures {
-       < 6 >4 < 7 >8 < 6+ [_!] >
-    < 6 >4 <6 5 [3+] >
-   }
- >>
-@end lilypond
-
-The support for figured bass consists of two parts: there is an input
-mode, introduced by @code{\figures}, where you can enter bass figures
-as numbers, and there is a context called @internalsref{FiguredBass} that
-takes care of making @internalsref{BassFigure} objects.
-
-In figures input mode, a group of bass figures is delimited by
-@code{<} and @code{>}. The duration is entered after the @code{>>}:
-@example
-        <4 6>
-@end example
-@lilypond[fragment]
-\context FiguredBass
-\figures { <4 6> }
-@end lilypond
-
-Accidentals are added when you append @code{-}, @code{!}  and @code{+}
-to the numbers:
-
-@example
-  <4- 6+ 7!>
-@end example
-@lilypond[fragment]
-  \context FiguredBass
-    \figures { <4- 6+ 7!> }
-@end lilypond
-
-Spaces or dashes may be inserted by using @code{_}. Brackets are
-introduced with @code{[} and @code{]}:
-
-@example
-        < [4 6] 8 [_! 12]>
-@end example
-@lilypond[fragment]
- \context FiguredBass
-\figures { < [4 6] 8 [_! 12]> }
-@end lilypond
-
-Although the support for figured bass may superficially resemble chord
-support, it works much simpler.  The @code{\figures} mode simply
-stores the numbers , and @internalsref{FiguredBass} context prints
-them as entered. There is no conversion to pitches, and no
-realizations of the bass are played in the MIDI file.
-
-Internally, the code produces markup texts. You can use any of the
-markup text properties to override formatting. For example, the
-vertical spacing of the figures may be set with @code{baseline-skip}.
-
-@seealso
-
-Internals: @internalsref{BassFigureEvent} music, @internalsref{BassFigure} object, 
-and @internalsref{FiguredBass} context.
-
-@refbugs
-
-Slash notation for alterations is not supported.
-
-
-@node Vaticana style contexts
-@subsection Vaticana style contexts
-
-@cindex VaticanaVoiceContext
-@cindex VaticanaStaffContext
-
-The predefined @code{VaticanaVoiceContext} and
-@code{VaticanaStaffContext} can be used to easily engrave a piece of
-Gregorian Chant in the style of the Editio Vaticana.  These contexts
-initialize all relevant context properties and grob properties to
-proper values.  With these contexts, you can immediately go ahead
-entering the chant, as the following short excerpt demonstrates:
-
-@lilypond[raggedright,verbatim,noindent]
-\include "gregorian-init.ly"
-\score {
-<<
-  \context VaticanaVoice = "cantus" {
-    \property Score.BarNumber \set #'transparent = ##t
-    \notes {
-      \[ c'\melisma c' \flexa a \] \[ a \flexa \deminutum g\melismaEnd \] f \divisioMinima
-      \[ f\melisma \pes a c' c' \pes d'\melismaEnd \] c' \divisioMinima \break
-      \[ c'\melisma c' \flexa a \] \[ a \flexa \deminutum g\melismaEnd \] f \divisioMinima
-    }
-  }
-  \lyricsto "cantus" \new Lyrics \lyrics {
-    San- ctus, San- ctus, San- ctus
-  } >>
-  
-}
-@end lilypond
-
-@node Contemporary notation
-@section Contemporary notation
-
-In the 20th century, composers have greatly expanded the musical
-vocabulary. With this expansion, many innovations in musical notation
-have been tried. The book by Stone (1980) gives a comprehensive
-overview (see @ref{Literature list}). In general, the use of new,
-innovative notation makes a piece harder to understand and perform and
-its use should therefore be avoided if possible.  For this reason,
-support for contemporary notation in LilyPond is limited.
-
-
-@menu
-* Clusters::                    
-* Fermatas::                    
-@end menu
-
-@node Clusters
-@subsection Clusters
-
-@cindex cluster
-
-In musical terminology, a @emph{cluster} denotes a range of
-simultaneously sounding pitches that may change over time.  The set of
-available pitches to apply usually depends on the accoustic source.
-Thus, in piano music, a cluster typically consists of a continous range
-of the semitones as provided by the piano's fixed set of a chromatic
-scale.  In choral music, each singer of the choir typically may sing an
-arbitrary pitch within the cluster's range that is not bound to any
-diatonic, chromatic or other scale.  In electronic music, a cluster
-(theoretically) may even cover a continuous range of pitches, thus
-resulting in coloured noise, such as pink noise.
-
-Clusters can be denoted in the context of ordinary staff notation by
-engraving simple geometrical shapes that replace ordinary notation of
-notes.  Ordinary notes as musical events specify starting time and
-duration of pitches; however, the duration of a note is expressed by the
-shape of the note head rather than by the horizontal graphical extent of
-the note symbol.  In contrast, the shape of a cluster geometrically
-describes the development of a range of pitches (vertical extent) over
-time (horizontal extent).  Still, the geometrical shape of a cluster
-covers the area in wich any single pitch contained in the cluster would
-be notated as an ordinary note.  From this point of view, it is
-reasonable to specify a cluster as the envelope of a set of notes.
-
-@syntax
-
-A cluster is engraved as the envelope of a set of
-cluster-notes. Cluster notes are created by applying the function
-@code{notes-to-clusters} to a sequence of chords, e.g.
-@c
-@lilypond[relative=1,verbatim]
-    \apply #notes-to-clusters {  <c e > <b f'>  }
-@end lilypond
-
-The following example (from
-@inputfileref{input/regression,cluster.ly}) shows what the result
-looks like:
-
-@lilypondfile[]{cluster.ly}
-
-By default, @internalsref{Cluster_spanner_engraver} is in the
-@internalsref{Voice} context.  This allows putting ordinary notes and
-clusters together in the same staff, even simultaneously.  In such a
-case no attempt is made to automatically avoid collisions between
-ordinary notes and clusters.
-
-@seealso
-
-Internals: @internalsref{ClusterSpanner},
-@internalsref{ClusterSpannerBeacon},
-@internalsref{Cluster_spanner_engraver}, and
-@internalsref{ClusterNoteEvent}.
-
-Examples: @inputfileref{input/regression,cluster.ly}.
-
-@refbugs
-
-Music expressions like @code{<< @{ g8 e8 @} a4 >>} are not printed
-accurately.  Use @code{<g a>8 <e a>8} instead.
-
-
-
-@node Fermatas
-@subsection Fermatas
-
-@cindex fermatas
-
-
-
-Contemporary music notation frequently uses special fermata symbols to
-indicate fermatas of differing lengths.
-
-@syntax
-
-The following are supported
-
-@lilypond[raggedright]
-\score {
-  <<  \addlyrics \notes {
-        b'
-        ^\shortfermata
-        _\shortfermata
-        r
-        b'
-        ^\fermata
-        _\fermata
-
-        r
-        b'
-        ^\longfermata
-        _\longfermata
-
-        r
-        b'
-        ^\verylongfermata
-        _\verylongfermata
-        r
-    }
-    \context Lyrics \lyrics {
-      "shortfermata" "fermata"  "longfermata" "verylongfermata"
-    } >>
-}
-@end lilypond
-
-See @ref{Articulations} for general instructions how to apply scripts
-such as fermatas to a @code{\notes@{@}} block.
-
-
-@node Special notation
-@section Special notation
-
-@menu
-* Balloon help::                
-* Easy Notation note heads::    
-@end menu
-
-@node Balloon help
-@subsection Balloon help
-
-Elements of notation can be marked and named with the help of a square
-balloon.  The primary purpose of this feature is to explain notation.
-
-The following example demonstrates its use.
-
-@lilypond[verbatim,fragment,raggedright,relative=1]
-  \context Voice
-     \applyoutput
-        #(add-balloon-text 'NoteHead "heads, or tails?"
-          '(1 . -3))
-  c8
-@end lilypond
-
-@noindent
-The function @code{add-balloon-text} takes the name of a grob, the
-label to print and where to put the label relative to the object. In
-the above example, the text ``heads or tails?'' ends 3 spaces below
-the `balloon.' 
-
-@cindex balloon
-@cindex notation, explaining
-
-@seealso
-
-Internals: @internalsref{text-balloon-interface}
-
-Examples: @inputfileref{input/regression,balloon.ly}
-
-@node Easy Notation note heads
-@subsection Easy Notation note heads
-
-@cindex easy notation
-@cindex Hal Leonard
-
-The `easy play' note head includes a note name inside the head.  It is
-used in music aimed at beginners:
-
-@lilypond[raggedright,verbatim,staffsize=26]
-\score {
-  \notes { c'2 e'4 f' | g'1 }
-  \paper { \translator { \EasyNotation } } 
-}
-@end lilypond
-
-The @code{EasyNotation} variable overrides a @internalsref{Score}
-context.  To make the letters readable, it has to be printed in a
-large font size.  To print with a larger font, see @ref{Font Size}.
-
-@cindex Xdvi
-@cindex ghostscript
-
-If you view the result with Xdvi, then staff lines may show through
-the letters.  Printing the PostScript file obtained does produce the
-correct result.
-
-
-
-@node Tuning output
-@section Tuning output
-
-There are situations where default layout decisions are not
-sufficient.  In this section we discuss ways to override these
-defaults.
-
-Formatting is internally done by manipulating so called objects
-(graphic objects). Each object carries with it a set of properties
-(object or layout properties) specific to that object.  For example, a
-stem object has properties that specify its direction, length and
-thickness.
-
-The most direct way of tuning the output is by altering the values of
-these properties. There are two ways of doing that: first, you can
-temporarily change the definition of one type of object, thus
-affecting a whole set of objects.  Second, you can select one specific
-object, and set a layout property in that object.
-
-Do not confuse layout properties with translation
-properties. Translation properties always use a mixed caps style
-naming, and are manipulated using @code{\property}:
-@example
-  \property Context.propertyName  = @var{value}
-@end example
-
-Layout properties are use Scheme style variable naming, i.e.  lower
-case words separated with dashes. They are symbols, and should always
-be quoted using @code{#'}.  For example, this could be an imaginary
-layout property name:
-@example
-  #'layout-property-name
-@end example
-
-@seealso
-
-The introduction of the @ref{Technical manual} gives a more in-depth
-treatment of the difference between translation and layout.
-
-@menu
-* Tuning objects::              
-* Constructing a tweak::        
-* Applyoutput::                 
-* Font selection::              
-* Text markup::                 
-@end menu
-
-
-
-@node Tuning objects
-@subsection Tuning objects 
-
-@cindex object description
-
-The definition of an object is a list of default object
-properties. For example, the definition of the Stem object (available
-in @file{scm/define-grobs.scm}), includes the following definitions
-for @internalsref{Stem}:
-
-@example
-        (thickness . 1.3)
-	(beamed-lengths . (3.5 3.5 3.5 4.5 5.0))
-        (Y-extent-callback . ,Stem::height)
-        @var{...}
-@end example
-
-
-Adding variables on top of this existing definition overrides the
-system default, and alters the resulting appearance of the layout
-object.
-
-@syntax
-
-
-Changing a variable for only one object is commonly achieved with
-@code{\once}:
-
-@example
-\once \property @var{context}.@var{objectname}
-  \override @var{symbol} = @var{value}
-@end example
-Here @var{symbol} is a Scheme expression of symbol type, @var{context}
-and @var{objectname} is a string and @var{value} is a Scheme expression.
-This command applies a setting only during one moment in the score.
-
-In the following example, only one @internalsref{Stem} object is
-changed from its original setting:
-
-@lilypond[verbatim,fragment,relative=1]
-  c4 
-  \once \property Voice.Stem \set #'thickness = #4
-  c4
-  c4
-@end lilypond
-@cindex @code{\once}
-
-For changing more objects, the same command, without @code{\once} can
-be used:
-@example
-\property @var{context}.@var{objectname} \override @var{symbol} = @var{value}
-@end example
-This command adds @code{@var{symbol} = @var{value}} to the definition
-of @var{objectname} in the context @var{context}, and this definition
-stays in place until it is removed.
-
-An existing definition may be removed by the following command:
-@c
-@example
-\property @var{context}.@var{objectname} \revert @var{symbol}
-@end example
-@c
-All @code{\override} and @code{\revert} commands should be balanced.
-The @code{\set} shorthand performs a revert followed by an override,
-and is often more convenient to use
-
-@example
-\property @var{context}.@var{objectname} \set @var{symbol} = @var{value}
-@end example
-
-Some examples: 
-@lilypond[verbatim,quote]
-c'4 \property Voice.Stem \override #'thickness = #4.0
-c'4
-c'4 \property Voice.Stem \revert #'thickness
-c'4
-@end lilypond
-
-The following example gives exactly the same result as the previous
-one (assuming the system default for stem thickness is 1.3):
-@c
-@lilypond[verbatim,quote]
-  c'4 \property Voice.Stem \set #'thickness = #4.0
-  c'4
-  c'4 \property Voice.Stem \set #'thickness = #1.3
-  c'4
-@end lilypond
-
-Reverting a setting which was not set in the first place has no
-effect. However, if the setting was set as a system default, this may
-remove the default value, and this may give surprising results,
-including crashes.  In other words, @code{\override} and
-@code{\revert} must be carefully balanced.  The following are examples
-of correct nesting of @code{\override}, @code{\set}, @code{\revert}:
-
-@itemize @bullet
-@item
-a clumsy but correct form:
-@example
-  \override \revert \override \revert \override \revert
-@end example
-
-@item
-shorter version of the same:
-@example 
-  \override \set \set  \revert
-@end example
-
-@item
-a short form, using only @code{\set}. This requires you to know the
-default value:
-@example
-  \set \set \set \set @var{to default value}
-@end example
-
-@item
-if there is no default (i.e. by default, the object property is unset),
-then you can use
-@example
-  \set \set \set \revert
-@end example
-@end itemize
-
-The object description is an Scheme association list. Since a Scheme
-list is a singly linked list, we can treat it as a stack, and
-@code{\override} and @code{\revert} are push and pop operations.  The
-association list is stored in a normal context property, hence
-@example
- \property Voice.NoteHead  = #'() 
-@end example
-will effectively erase @internalsref{NoteHead}s from the current
-@internalsref{Voice}. Typically, this will blank the object. However,
-this mechanism should not be used: it may cause crashes or other
-anomalous behavior.
-
-@seealso
-
-Internals: @internalsref{OverrideProperty}, @internalsref{RevertProperty},
-@internalsref{PropertySet}, @internalsref{All-backend-properties}, and
-@internalsref{All-layout-objects}.
-
-
-@refbugs
-
-The backend is not very strict in type-checking object properties.
-Cyclic references in Scheme values for properties cause hangs and/or
-crashes.  Reverting properties that are system defaults may also lead
-to crashes.
-
-@menu
-* Constructing a tweak::        
-* Applyoutput::                 
-* Font selection::              
-* Text markup::                 
-@end menu
-
-@node Constructing a tweak
-@subsection Constructing a tweak
-
-
-@cindex internal documentation
-@cindex finding graphical objects
-@cindex graphical object descriptions 
-@cindex tweaking
-@cindex @code{\override}
-@cindex @code{\set}
-@cindex internal documentation
-
-
-
-Three pieces of information are required to use @code{\override} and
-@code{\set}: the name of the layout object, the context and the name
-of the property.  We demonstrate how to glean this information from
-the notation manual and the generated documentation.
-
-The generated documentation is a set of HTML pages which should be
-included if you installed a binary distribution, typically in
-@file{/usr/share/doc/lilypond}.  They are also available on the web:
-go to the @uref{http://lilypond.org,LilyPond website}, click
-``Documentation'', select the correct version, and click then
-``Program reference.'' It is advisable to bookmark the local HTML
-files. They will load faster than the ones on the web.  If you use the
-version from the web, you must check whether the documentation matches
-the program version: it is generated from the definitions that the
-program uses, and therefore it is strongly tied to the LilyPond
-version.
-
-
-@c  [TODO: revise for new site.]
-
-Suppose we want to move the fingering indication in the fragment below:
-
-@lilypond[relative=2,verbatim]
-c-2
-\stemUp
-f
-@end lilypond
-
-If you visit the documentation of @code{Fingering} (in @ref{Fingering
-instructions}), you will notice that there is written:
-
-@quotation
-@seealso
-
-Internals: @internalsref{FingerEvent} and @internalsref{Fingering}.
-
-@end quotation
-
-@separate
-
-@noindent
-In other words, the fingerings once entered, are internally stored as
-@code{FingerEvent} music objects. When printed, a @code{Fingering}
-layout object is created for every @code{FingerEvent}.
-
-The Fingering object has a number of different functions, and each of
-those is captured in an interface. The interfaces are listed under
-@internalsref{Fingering} in the program reference.
-
-
-
-The @code{Fingering} object has a fixed size
-(@internalsref{item-interface}), the symbol is a piece of text
-(@internalsref{text-interface}), whose font can be set
-(@internalsref{font-interface}).  It is centered horizontally
-(@internalsref{self-alignment-interface}), it is placed next to other
-objects (@internalsref{side-position-interface}) vertically, and its
-placement is coordinated with other scripts
-(@internalsref{text-script-interface}).  It also has the standard
-@internalsref{grob-interface} (grob stands for Graphical object)
-@cindex grob
-@cindex graphical object
-@cindex layout object
-@cindex object, layout 
-with all the variables that come with
-it.  Finally, it denotes a fingering instruction, so it has
-@internalsref{finger-interface}.
-
-For the vertical placement, we have to look under
-@code{side-position-interface}:
-@quotation
-@code{side-position-interface}
-
-  Position a victim object (this one) next to other objects (the
-  support).  In this case, the property @code{direction} signifies where to put the
-  victim object relative to the support (left or right, up or down?)
-@end quotation
-
-@cindex padding
-@noindent
-below this description, the variable @code{padding} is described as
-@quotation
-@table @code
-@item padding
- (dimension, in staff space)
-
-   add this much extra space between objects that are next to each
-other. Default value: @code{0.6}
-@end table
-@end quotation
-
-By increasing the value of @code{padding}, we can move away the
-fingering.  The following command inserts 3 staff spaces of white
-between the note and the fingering:
-@example
-\once \property Voice.Fingering \set #'padding = #3
-@end example
-
-Inserting this command before the Fingering object is created,
-i.e. before @code{c2}, yields the following result:
-
-@lilypond[relative=2,fragment,verbatim]
-\once \property Voice.Fingering
-  \set #'padding = #3
-c-2
-\stemUp
-f
-@end lilypond
-
-The context name @code{Voice} in the example above can be determined
-as follows. In the documentation for @internalsref{Fingering}, it says
-@quotation
-Fingering grobs are created by: @internalsref{Fingering_engraver}
-@end quotation
-
-Clicking @code{Fingering_engraver} shows the documentation of
-the module responsible for interpreting the fingering instructions and
-translating them to a @code{Fingering} object.  Such a module is called
-an @emph{engraver}.  The documentation of the @code{Fingering_engraver}
-says
-@example
-Fingering_engraver is part of contexts: Voice 
-@end example
-so tuning the settings for Fingering should be done with
-@example
-  \property Voice.Fingering \set @dots{}
-@end example
-
-Of course, the tweak may also done in a larger context than
-@code{Voice}, for example, @internalsref{Staff} or
-@internalsref{Score}.
-
-@seealso
-
-Internals: the program reference also contains alphabetical lists of
-@internalsref{Contexts}, @internalsref{All-layout-objects} and
-@internalsref{Music-expressions}, so you can also find which objects
-to tweak by browsing the internals document.
-
-
-@node Applyoutput
-@subsection Applyoutput
-
-The most versatile way of tuning an object is @code{\applyoutput}. Its
-syntax is
-@example
-\applyoutput @var{proc}
-@end example
-
-@noindent
-where @var{proc} is a Scheme function, taking three arguments.
-
-When interpreted, the function @var{proc} is called for every layout
-object found in the context, with the following arguments:
-@itemize @bullet
-@item the layout object itself,
-@item the context where the layout object was created, and
-@item the context where @code{\applyoutput} is processed.
-@end itemize
-
-
-In addition, the cause of the layout object, i.e.  the music
-expression or object that was responsible for creating it, is in the
-object property @code{cause}.  For example, for a note head, this is a
-@internalsref{NoteHead} event, and for a @internalsref{Stem} object,
-this is a @internalsref{NoteHead} object.
-
-Here is a simple example of @code{\applyoutput}; it blanks note-heads on the
-center-line:
-@example
-(define (blanker grob grob-origin context)
-  (if (and (memq (ly:get-grob-property grob 'interfaces)
-                 note-head-interface)
-           (eq? (ly:get-grob-property grob 'staff-position) 0))
-
-           (ly:set-grob-property! grob 'transparent #t)))
-@end example
-
-
-
-@node Font selection
-@subsection Font selection
-
-The most common thing to change about the appearance of fonts is their
-size. The font size of any context can be easily changed by setting
-the @code{fontSize} property for that context.  Its value is a number:
-negative numbers make the font smaller, positive numbers larger. An
-example is given below:
-@c
-@lilypond[fragment,relative=1,verbatim,quote]
-  c4 c4 \property Voice.fontSize = #-1
-  f4 g4
-@end lilypond
-This command will set @code{font-size} (see below), and does
-not change the size of variable symbols, such as beams or slurs.
-
-One of the uses of @code{fontSize} is to get smaller symbols for cue
-notes. An elaborate example of those is in
-@inputfileref{input/test,cue-notes.ly}.
-
-@cindex magnification
-@cindex cue notes
-
-The font used for printing a object can be selected by setting
-@code{font-name}, e.g.
-@example
-  \property Staff.TimeSignature
-    \set #'font-name = #"cmr17"
-@end example
-
-@noindent
-Any font can be used, as long as it is available to @TeX{}. Possible
-fonts include foreign fonts or fonts that do not belong to the
-Computer Modern font family.  The size of fonts selected in this way
-can be changed with the @code{font-magnification} property.  For
-example, @code{2.0} blows up all letters by a factor 2 in both
-directions.
-
-@cindex font size
-@cindex font magnification
-
-Font selection for the standard fonts, @TeX{}'s Computer Modern fonts,
-can also be adjusted with a more fine-grained mechanism.  By setting
-the object properties described below, you can select a different font;
-all three mechanisms work for every object that supports
-@code{font-interface}:
-
-
-@table @code
-@item font-family
- is a symbol indicating the general class of the typeface.  Supported are
-@code{roman} (Computer Modern), @code{braces} (for piano staff
-braces), @code{music} (the standard music font, including ancient
-glyphs), @code{dynamic} (for dynamic signs) and @code{typewriter}.
-  
-@item font-shape
-  is a symbol indicating the shape of the font, there are typically several
-  font shapes available for each font family. Choices are @code{italic},
-  @code{caps} and @code{upright}.
-
-@item font-series
-is a  symbol indicating the series of the font. There are typically several
-font series for each font family and shape. Choices are @code{medium}
-and @code{bold}. 
-
-@end table
-
-For any of these properties, the value @code{*} (i.e. the symbol
-@code{*}, entered as @code{#'*}), acts as a wildcard. This can be used
-to override default setting, which are always present. For example:
-@example
-  \property Lyrics . LyricText \override #'font-series = #'bold
-  \property Lyrics . LyricText \override #'font-family = #'typewriter
-  \property Lyrics . LyricText \override #'font-shape  = #'*
-@end example
-
-@cindex @code{font-style}
-
-The font size is set by modifying the @code{font-size} property.  Its
-value is a number indicating the size relative to the standard size.
-Each step up is an increase of approximately 12% of the font size. Six
-steps is exactly a factor two. The Scheme function @code{magstep}
-converts a @code{font-size} number to a scaling factor.
-
-LilyPond has fonts in different design sizes: the music fonts for
-smaller sizes are chubbier, while the text fonts are relatively wider.
-Font size changes are achieved by scaling the design size that is
-closest to the desired size.
-
-The @code{font-size} mechanism does not work for fonts selected
-through @code{font-name}. These may be scaled with
-@code{font-magnification}.
-
-@refcommands
-
-The following commands set @code{fontSize} for the current voice.
-
-@cindex @code{\tiny}
-@code{\tiny}, 
-@cindex @code{\small}
-@code{\small}, 
-@cindex @code{\normalsize}
-@code{\normalsize}, 
-
-@seealso
-
-Init files: @file{ly/declarations-init.ly} contains hints how new
-fonts may be added to LilyPond.
-
-@refbugs
-
-There is no style sheet provided for other fonts besides the @TeX{}
-Computer Modern family.
-
-@cindex font selection
-@cindex font magnification
-@cindex @code{font-interface}
-
-
-@node Text markup
-@subsection Text markup
-@cindex text markup
-@cindex markup text
-
-
-@cindex typeset text
-
-LilyPond has an internal mechanism to typeset texts. You can access it
-with the keyword @code{\markup}. Within markup mode, you can enter texts
-similar to lyrics: simply enter them, surrounded by spaces:
-@cindex markup
-
-@lilypond[verbatim,fragment,relative=1]
- c1^\markup { hello }
- c1_\markup { hi there }
- c1^\markup { hi \bold there, is \italic anyone home? }
-@end lilypond
-
-@cindex font switching
-
-The markup in the example demonstrates font switching commands.  The
-command @code{\bold} and @code{\italic} only apply to the first
-following word; enclose a set of texts with braces to apply a command
-to more words:
-@example
-  \markup @{ \bold @{ hi there @} @}
-@end example
-
-@noindent
-For clarity, you can also do this for single arguments, e.g.
-
-@verbatim
-  \markup { is \italic { anyone } home }
-@end verbatim
-
-@cindex font size, texts
-
-
-
-
-
-@menu
-* Common text markup commands::  
-* Markup construction in scheme::  
-* Markup command definition::   
-@end menu
-
-@node Common text markup commands
-@subsubsection Common text markup commands
-
-
-The following size commands set absolute sizes:
-
-@cindex @code{\teeny}
-@cindex @code{\tiny}
-@cindex @code{\small}
-@cindex @code{\large}
-@cindex @code{\huge}
-
-@table @code
-@item \teeny
-@item \tiny
-@item \small
-@item \large
-@item \huge
-@end table
-
-You can also make letter larger or smaller relative to their neighbors,
-with the commands @code{\larger} and @code{\smaller}.
-@cindex smaller
-@cindex larger
-
-@cindex font style, for texts
-@cindex @code{\bold}
-@cindex @code{\dynamic}
-@cindex @code{\number}
-@cindex @code{\italic}
-
-The following font change commands are defined:
-@table @code
-@item \dynamic
-changes to the font used in dynamic signs.  This font does not
-contain all characters of the alphabet, so when producing ``piu f'',
-the ``piu'' should be done in a different font.
-
-
-@item \number
-changes to the font used in time signatures. It only contains
-numbers and a few punctuation marks.
-@item \italic
-changes @code{font-shape} to @code{italic}.
-@item \bold
-changes @code{font-series} to @code{bold}.
-@end table
-
-@cindex raising text
-@cindex lowering text
-@cindex moving text
-@cindex translating text
-
-@cindex @code{\sub}
-@cindex @code{\super}
-
-Raising and lowering texts can be done with @code{\super} and
-@code{\sub}:
-
-@lilypond[verbatim,fragment,relative=1]
- c1^\markup { E "=" mc \super "2" }
-@end lilypond
-
-@cindex @code{\raise}
-
-If you want to give an explicit amount for lowering or raising, use
-@code{\raise}.  This command takes a Scheme valued first argument, and
-a markup object as second argument:
-@c
-@lilypond[verbatim,fragment,relative=1,quote]
- c1^\markup { C \small \raise #1.0 \bold { "9/7+" }}
-@end lilypond
-The argument to @code{\raise} is the vertical displacement amount,
-measured in (global) staff spaces.  @code{\raise} and @code{\super}
-raise objects in relation to their surrounding markups. They cannot be
-used to move a single text up or down, when it is above or below a
-note, since the mechanism that positions it next to the note cancels
-any vertical shift. For vertical positioning, use the @code{padding}
-and/or @code{extra-offset} properties.
-
-Other commands taking  single arguments include
-@table @code
-
-@item \bracket, \hbracket
- Bracket the argument markup with normal and horizontal brackets
-respectively.
-
-@item \musicglyph
-@cindex @code{\musicglyph}
-  This is converted to a musical symbol, e.g. @code{\musicglyph
-#"accidentals-0"} will select the natural sign from the music font.
-See @ref{The Feta font} for  a complete listing of the possible glyphs.
-
-@item \char
-This produces a single character, e.g. @code{\char #65} produces the 
-letter 'A'.
-
-@item \note  @var{duration} @var{dir}
-@cindex @code{\note}
-
-This produces a note with a stem pointing in @var{dir} direction, with
-the @var{duration} for the note head type and augmentation dots. For
-example, @code{\note #"4." #-0.75} creates a dotted quarter note, with
-a shortened down stem.
-
-@item \hspace #@var{amount}
-@cindex @code{\hspace}
-This produces a invisible object taking horizontal space.
-@example 
-\markup @{ A \hspace #2.0 B @} 
-@end example
-will put extra space between A and B, on top of the space that is
-normally inserted before elements on a line.
-
-@item \fontsize #@var{size}
-@cindex @code{\fontsize}
-This sets the relative font size, eg.
-@example
-A \fontsize #2 @{ B C @} D
-@end example
-
-
-This will enlarge the B and the C by two steps.
-@item  \translate #(cons @var{x} @var{y})
-@cindex  \translate
-This translates an object. Its first argument is a cons of numbers
-@example
-A \translate #(cons 2 -3) @{ B C @} D
-@end example
-This moves `B C' 2 spaces to the right, and 3 down, relative to its
-surroundings. This command cannot be used to move isolated scripts
-vertically, for the same reason that @code{\raise} cannot be used for
-that.
-
-@item \magnify  #@var{mag}
-@cindex @code{\magnify}
-This sets the font magnification for the its argument. In the following
-example, the middle A will be 10% larger:
-@example
-A \magnify #1.1 @{ A @} A
-@end example
-
-
-@item \override #(@var{key} . @var{value})
-@cindex @code{\override}
-This overrides a  formatting property for its argument. The argument
-should be a key/value pair, e.g.
-@example
-  m \override #'(font-family . math) m m
-@end example
-@end table
-
-In markup mode you can compose expressions, similar to mathematical
-expressions, XML documents and music expressions.  The braces group
-notes into horizontal lines. Other types of lists also exist: you can
-stack expressions grouped with @code{<}, and @code{>} vertically with
-the command @code{\column}. Similarly, @code{\center} aligns texts by
-their center lines:
-
-@lilypond[verbatim,fragment,relative=1]
- c1^\markup { \column < a bbbb c > }
- c1^\markup { \center < a bbbb c > }
- c1^\markup { \line < a b c > }
-@end lilypond
-
-
-Markups can be stored in variables, and these variables
-may be attached to notes, like
-@verbatim
-allegro = \markup { \bold \large { Allegro } }
-\notes { a^\allegro b c d }
-@end verbatim
-
-
-Some objects have alignment procedures of their own, which cancel out
-any effects of alignments applied to their markup arguments as a
-whole.  For example, the @internalsref{RehearsalMark} is horizontally
-centered, so using @code{\mark \markup @{ \left-align .. @}} has no
-effect. Similarly, whole texts over notes cannot be moved vertically
-with @code{\raise}. For moving and aligning complete objects, grob
-properties should be used.
-
-@seealso
-
-Internals: @internalsref{Markup-functions} contains a complete list of
-all markup commands.
-
-Init files:  @file{scm/new-markup.scm}.
-
-
-@refbugs
-
-@cindex kerning
-
-
-Text layout is ultimately done by @TeX{}, which does kerning of
-letters.  LilyPond does not account for kerning, so texts will be
-spaced slightly too wide.
-
-Syntax errors for markup mode are confusing.
-
-Markup texts cannot be used in the titling of the @code{\header}
-field. Titles are made by La@TeX{}, so La@TeX{} commands should be used
-for formatting.
-
-
-
-@node Markup construction in scheme
-@subsubsection Markup construction in scheme
-
-@cindex defining markup commands 
-
-The @code{markup} macro builds markup expressions in Scheme while
-providing a LilyPond-like syntax. For example,
-@example
-(markup #:column (#:line (#:bold #:italic "hello" #:raise 0.4 "world")
-                  #:bigger #:line ("foo" "bar" "baz")))
-@end example
-
-@noindent
-is equivalent to:
-@example
-\markup \column < @{ \bold \italic "hello" \raise #0.4 "world" @}
-                  \bigger @{ foo bar baz @} >
-@end example
-
-@noindent
-This example exposes the main translation rules between regular
-LilyPond markup syntax and scheme markup syntax, which are summed up
-is this table:
-@multitable @columnfractions .5 .5
-@item @b{LilyPond} @tab @b{Scheme}
-@item @code{\command} @tab @code{#:command}
-@item @code{\variable} @tab @code{variable}
-@item @code{@{ ... @}} @tab @code{#:line ( ... )}
-@item @code{\center < ... >} @tab @code{#:center ( ... )}
-@item @code{string} @tab @code{"string"}
-@item @code{#scheme-arg} @tab @code{scheme-arg}
-@end multitable
-
-Besides, the whole scheme language is accessible inside the
-@code{markup} macro: thus, one may use function calls inside
-@code{markup} in order to manipulate character strings for
-instance. This proves useful when defining new markup commands (see
-@ref{Markup command definition}).
-
-@refbugs
-
-One can not feed the @code{#:line} (resp @code{#:center},
-@code{#:column}) command with a variable or the result of a function
-call. Eg:
-@lisp
-(markup #:line (fun-that-returns-markups))
-@end lisp
-is illegal. One should use the @code{make-line-markup} (resp
-@code{make-center-markup}, @code{make-column-markup}) function
-instead:
-@lisp
-(markup (make-line-markup (fun-that-returns-markups)))
-@end lisp
-
-@node Markup command definition
-@subsubsection Markup command definition
-
-New markup commands can be defined thanks to the @code{def-markup-command} scheme macro.
-@lisp
-(def-markup-command (@emph{command-name} @emph{paper} @emph{props} @emph{arg1} @emph{arg2} ...) (@emph{arg1-type?} @emph{arg2-type?} ...)
-  ..command body..)
-
-    @emph{argi}: i@emph{th} command argument
-    @emph{argi-type?}: a type predicate for the i@emph{th} argument
-    @emph{paper}: the `paper' definition
-    @emph{props}: a list of alists, containing all active properties. 
-@end lisp
-
-As a simple example, we show how to add a @code{\smallcaps} command,
-which selects @TeX{}'s small caps font.  Normally, we could select the
-small caps font as follows:
-
-@verbatim
-  \markup { \override #'(font-shape . caps)  Text-in-caps }
-@end verbatim
-
-This selects the caps font by setting the @code{font-shape} property to
-@code{#'caps} for interpreting @code{Text-in-caps}.
-
-To make the above available as @code{\smallcaps} command, we have to
-define a function using @code{def-markup-command}. The command should
-take a single argument, of markup type. Therefore, the start of the
-definition should read
-@example
-  (def-markup-command (smallcaps paper props argument) (markup?)
-@end example
-
-@noindent
-
-What follows is the content of the command: we should interpret
-the @code{argument} as a markup, i.e.
-
-@example
-    (interpret-markup paper  @dots{} argument)
-@end example
-
-@noindent
-This interpretation should add @code{'(font-shape . caps)} to the active
-properties, so we substitute the the following for the @dots{} in the
-above example:
-
-@example
- (cons (list '(font-shape . caps) ) props)
-@end example
-
-@noindent
-The variable @code{props} is a list of alists, and we prepend to it by
-consing a list with the extra setting.
-
-However, suppose that we are using a font that does not have a
-small-caps variant. In that case, we have to fake the small caps font,
-by setting a string in upcase, with the first letter a little larger:
-
-@example
-#(def-markup-command (smallcaps paper props str) (string?)
-   "Print the string argument in small caps. Syntax: \\smallcaps #\"string\""
-   (interpret-markup paper props
-    (make-line-markup
-     (map (lambda (s)
-            (if (= (string-length s) 0)
-                s
-                (markup #:large (string-upcase (substring s 0 1))
-                        #:translate (cons -0.6 0)
-                        #:tiny (string-upcase (substring s 1)))))
-          (string-split str #\Space)))))
-@end example
-
-The @code{smallcaps} command first splits its string argument into
-tokens separated by spaces (@code{(string-split str #\Space)}); for
-each token, a markup is built with the first letter made large and
-upcased (@code{#:large (string-upcase (substring s 0 1))}), and a
-second markup built with the following letters made tiny and upcased
-(@code{#:tiny (string-upcase (substring s 1))}). As LilyPond
-introduces a space between markups on a line, the second markup is
-translated to the left (@code{#:translate (cons -0.6 0) ...}). Then,
-the markups built for each token are put in a line
-(@code{(make-line-markup ...)}). Finally, the resulting markup is
-passed to the @code{interpret-markup} function, with the @code{paper}
-and @code{props} arguments.
-
-Finally, suppose that we are typesetting a recitative in an opera, and
-we would like to define a command that will show character names in a
-custom manner. Names should be printed with small caps and translated a
-bit to the left and top.  We will define a @code{\character} command
-that takes into account the needed translation, and uses the newly
-defined @code{\smallcaps} command:
-
-@verbatim
-#(def-markup-command (character paper props name) (string?)
-   "Print the character name in small caps, translated to the left and
-   top. Syntax: \\character #\"name\""
-   (interpret-markup paper props 
-    (markup "" #:translate (cons -4 2) #:smallcaps name)))
-@end verbatim
-
-There is one complication that needs explanation: texts above and below
-the staff are moved vertically to be at a certain distance (the
-@code{padding} property) from the staff and the notes. To make sure
-that this mechanism does not annihilate the vertical effect of our
-@code{#:translate}, we add an empty string (@code{""}) before the
-translated text.  Now the @code{""} will be put above the notes, and the
-@code{name} is moved in relation to that empty string. The net effect is
-that the text is moved to the upper left.
-
-The final result is as follows:
-@verbatim
-\score {
-    \notes { \fatText
-        c''^\markup \character #"Cleopatra"
-        e'^\markup \character #"Giulio Cesare"
-    }
-}
-@end verbatim
-
-@lilypond[raggedright]
-#(def-markup-command (smallcaps paper props str) (string?)
-   "Print the string argument in small caps. Syntax: \\smallcaps #\"string\""
-   (interpret-markup paper props
-    (make-line-markup
-     (map (lambda (s)
-            (if (= (string-length s) 0)
-                s
-                (markup #:large (string-upcase (substring s 0 1))
-                        #:translate (cons -0.6 0)
-                        #:tiny (string-upcase (substring s 1)))))
-          (string-split str #\Space)))))
-
-#(def-markup-command (character paper props name) (string?)
-   "Print the character name in small caps, translated to the left and
-   top. Syntax: \\character #\"name\""
-   (interpret-markup paper props 
-    (markup "" #:translate (cons -4 0) #:smallcaps name)))
-
-\score {
-    \notes { \fatText
-        c''^\markup \character #"Cleopatra"
-        e'^\markup \character #"Giulio Cesare"
-    }
-}
-@end lilypond
-
-
-
-@node Global layout
-@section Global layout
-
-The global layout determined by three factors: the page layout, the
-line breaks and the spacing. These all influence each other. The
-choice of spacing determines how densely each system of music is set,
-which influences where line breaks breaks are chosen, and thus
-ultimately how many pages a piece of music takes. This section
-explains how to tune the algorithm for spacing.
-
-Globally spoken, this procedure happens in three steps: first,
-flexible distances (``springs'') are chosen, based on durations. All
-possible line breaking combination are tried, and the one with the
-best results---a layout that has uniform density and requires as
-little stretching or cramping as possible---is chosen. When the score
-is processed by @TeX{}, each page is filled with systems, and page breaks
-are chosen whenever the page gets full.
-
-
-
-@menu
-* Vertical spacing::            
-* Horizontal spacing::          
-* Font Size::                   
-* Line breaking::               
-* Page layout::                 
-@end menu
-
-
-@node Vertical spacing
-@subsection Vertical spacing
-
-@cindex vertical spacing
-@cindex distance between staves
-@cindex staff distance
-@cindex between staves, distance
-@cindex staffs per page
-@cindex space between staves
-
-The height of each system is determined automatically by LilyPond, to
-keep systems from bumping into each other, some minimum distances are
-set.  By changing these, you can put staves closer together, and thus
-put more  systems onto one page.
-
-Normally staves are stacked vertically. To make
-staves maintain a distance, their vertical size is padded. This is
-done with the property @code{minimumVerticalExtent}. It takes a pair
-of numbers, so if you want to make it smaller from its, then you could
-set
-@example
-  \property Staff.minimumVerticalExtent = #'(-4 . 4)
-@end example
-This sets the vertical size of the current staff to 4 staff spaces on
-either side of the center staff line.  The argument of
-@code{minimumVerticalExtent} is interpreted as an interval, where the
-center line is the 0, so the first number is generally negative.  The
-staff can be made larger at the bottom by setting it to @code{(-6
-. 4)}.
-
-The piano staves are handled a little differently: to make cross-staff
-beaming work correctly, it is necessary that the distance between staves
-is fixed beforehand.  This is also done with a
-@internalsref{VerticalAlignment} object, created in
-@internalsref{PianoStaff}. In this object the distance between the
-staves is fixed by setting @code{forced-distance}. If you want to
-override this, use a @code{\translator} block as follows:
-@example
-  \translator @{
-    \PianoStaffContext
-    VerticalAlignment \override #'forced-distance = #9
-  @}
-@end example
-This would bring the staves together at a distance of 9 staff spaces,
-measured from the center line of each staff.
-
-@seealso
-
-Internals: Vertical alignment of staves is handled by the
-@internalsref{VerticalAlignment} object.
-
-
-
-@node Horizontal spacing
-@subsection Horizontal Spacing
-
-The spacing engine translates differences in durations into
-stretchable distances (``springs'') of differing lengths. Longer
-durations get more space, shorter durations get less.  The shortest
-durations get a fixed amount of space (which is controlled by
-@code{shortest-duration-space} in the @internalsref{SpacingSpanner} object). 
-The longer the duration, the more space it gets: doubling a
-duration adds a fixed amount (this amount is controlled by
-@code{spacing-increment}) of space to the note.
-
-For example, the following piece contains lots of half, quarter and
-8th notes, the eighth note is followed by 1 note head width (NHW). 
-The quarter note is followed by 2 NHW, the half by 3 NHW, etc.
-@lilypond[fragment,verbatim,relative=1] c2 c4. c8 c4. c8 c4. c8 c8
-c8 c4 c4 c4
-@end lilypond
-
-Normally, @code{shortest-duration-space} is set to 1.2, which is the
-width of a note head, and @code{shortest-duration-space} is set to
-2.0, meaning that the shortest note gets 2 NHW (i.e. 2 times
-@code{shortest-duration-space}) of space. For normal notes, this space
-is always counted from the left edge of the symbol, so the shortest
-notes are generally followed by one NHW of space.
-
-If one would follow the above procedure exactly, then adding a single
-32th note to a score that uses 8th and 16th notes, would widen up the
-entire score a lot. The shortest note is no longer a 16th, but a 32nd,
-thus adding 1 NHW to every note. To prevent this, the
-shortest duration for spacing is not the shortest note in the score,
-but the most commonly found shortest note.  Notes that are even
-shorter this are followed by a space that is proportional to their
-duration relative to the common shortest note.  So if we were to add
-only a few 16th notes to the example above, they would be followed by
-half a NHW:
-
-@lilypond[fragment,verbatim,relative=2]
- c2 c4. c8 c4. c16[ c] c4. c8 c8 c8 c4 c4 c4
-@end lilypond
-
-The most common shortest duration is determined as follows: in every
-measure, the shortest duration is determined. The most common short
-duration, is taken as the basis for the spacing, with the stipulation
-that this shortest duration should always be equal to or shorter than
-1/8th note. The shortest duration is printed when you run lilypond
-with @code{--verbose}.  These durations may also be customized. If you
-set the @code{common-shortest-duration} in
-@internalsref{SpacingSpanner}, then this sets the base duration for
-spacing. The maximum duration for this base (normally 1/8th), is set
-through @code{base-shortest-duration}.
-
-@cindex @code{common-shortest-duration}
-@cindex @code{base-shortest-duration}
-@cindex @code{stem-spacing-correction}
-@cindex @code{spacing}
-
-In the introduction it was explained that stem directions influence
-spacing. This is controlled with @code{stem-spacing-correction}
-property in @internalsref{NoteSpacing}, which are generated for every
-@internalsref{Voice} context. The @code{StaffSpacing} object
-(generated at @internalsref{Staff} context) contains the same property
-for controlling the stem/barline spacing. The following example
-shows these corrections, once with default settings, and once with
-exaggerated corrections:
-
-@lilypond
-    \score { \notes {
-      c'4 e''4 e'4 b'4 |
-      b'4 e''4 b'4 e''4|
-      \property Staff.NoteSpacing \override #'stem-spacing-correction
-      = #1.5
-      \property Staff.StaffSpacing \override #'stem-spacing-correction
-      = #1.5
-      c'4 e''4 e'4 b'4 |
-      b'4 e''4 b'4 e''4|      
-    }
-    \paper { raggedright = ##t } }
-@end lilypond
-
-@cindex SpacingSpanner, overriding properties
-
-Properties of the  @internalsref{SpacingSpanner} must be overridden
-from the @code{\paper} block, since the @internalsref{SpacingSpanner} is
-created before any @code{\property} statements are interpreted.
-@example
-\paper @{ \translator  @{
-  \ScoreContext
-  SpacingSpanner \override #'spacing-increment = #3.0
-@} @}
-@end example
-
-
-@seealso
-
-Internals: @internalsref{SpacingSpanner}, @internalsref{NoteSpacing},
-@internalsref{StaffSpacing}, @internalsref{SeparationItem}, and
-@internalsref{SeparatingGroupSpanner}.
-
-@refbugs
-
-Spacing is determined on a score wide basis. If you have a score that
-changes its character (measured in durations) halfway during the
-score, the part containing the longer durations will be spaced too
-widely.
-
-There is no convenient mechanism to manually override spacing.
-
-
-
-@node Font Size
-@subsection Font size
-@cindex font size, setting
-@cindex staff size, setting
-@cindex @code{paper} file
-
-The Feta font provides musical symbols at eight seven different
-sizes. Each font is tuned for a different staff size: at smaller sizes
-the font gets heavier, to match the relatively heavier staff lines.
-The recommended font sizes are listed in the following table:
-
-@multitable @columnfractions  .25 .25 .25 .25
-
-@item @b{name}
-@tab @b{staff height (pt)}
-@tab @b{staff height (mm)}
-@tab @b{use}
-
-@item feta11
-@tab 11.22
-@tab 3.9 
-@tab pocket scores
-
-@item feta13
-@tab 12.60pt
-@tab 4.4mm
-@tab
-
-@item feta14
-@tab 14.14pt
-@tab 5.0mm
-@tab 
-
-@item feta16
-@tab 15.87pt
-@tab 5.6mm
-@tab 
-
-@item feta18
-@tab 17.82pt
-@tab 6.3mm
-@tab song books
-
-@item feta20
-@tab 17.82pt
-@tab 7.0mm
-@tab standard parts 
-
-@item feta23
-@tab 22.45 pt
-@tab 7.9mm
-@tab 
-
-@item feta20
-@tab 25.2 pt
-@tab 8.9mm
-@tab
-@c modern rental material  ?
-
-@end multitable
-
-These fonts are available in any sizes. The context property
-@code{fontSize} and the layout property @code{staff-space} (in
-@internalsref{StaffSymbol}) can be used to tune size for individual
-staffs. The size of individual staffs are relative to the global size,
-which can be set   in the following manner:
-
-@example
-  #(set-global-staff-size 14)
-@end example
-
-This sets the global default size to 14pt staff height, and scales all
-fonts accordingly.
-
-
-
-@node Line breaking
-@subsection Line breaking
-
-@cindex line breaks
-@cindex breaking lines
-
-Line breaks are normally computed automatically. They are chosen such
-that lines look neither cramped nor loose, and that consecutive lines
-have similar density.
-
-Occasionally you might want to override the automatic breaks; you can
-do this by  specifying @code{\break}. This will force a line break at
-this point.  Line breaks can only occur at places where there are bar
-lines.  If you want to have a line break where there is no bar line,
-you can force an invisible bar line by entering @code{\bar
-""}. Similarly, @code{\noBreak} forbids a line break at a 
-point.
-
-
-@cindex regular line breaks
-@cindex four bar music. 
-
-For linebreaks at regular intervals  use @code{\break} separated by
-skips and repeated with @code{\repeat}:
-@example
-<<  \repeat unfold 7 @{
-         s1 \noBreak s1 \noBreak
-         s1 \noBreak s1 \break  @}
-   @emph{the real music}
->> 
-@end  example
-
-@noindent
-This makes the following 28 measures (assuming 4/4 time) be broken every
-4 measures, and only there.
-
-@refcommands
-
-@code{\break}, @code{\noBreak}
-@cindex @code{\break}
-@cindex @code{\noBreak}
-
-@seealso
-
-Internals: @internalsref{BreakEvent}.
-
-
-@node Page layout
-@subsection Page layout
-
-@cindex page breaks
-@cindex breaking pages
-
-@cindex @code{indent}
-@cindex @code{linewidth}
-
-The most basic settings influencing the spacing are @code{indent} and
-@code{linewidth}. They are set in the @code{\paper} block. They
-control the indentation of the first line of music, and the lengths of
-the lines.
-
-If  @code{raggedright} is set to true in the @code{\paper}
-block, then the lines are justified at their natural length. This
-useful for short fragments, and for checking how tight the natural
-spacing is.
-
-@cindex page layout
-@cindex vertical spacing
-
-The page layout process happens outside the LilyPond formatting
-engine: variables controlling page layout are passed to the output,
-and are further interpreted by @code{lilypond} wrapper program. It
-responds to the following variables in the @code{\paper} block.  The
-variable @code{textheight} sets the total height of the music on each
-page.  The spacing between systems is controlled with
-@code{interscoreline}, its default is 16pt.  The distance between the
-score lines will stretch in order to fill the full page
-@code{interscorelinefill} is set to a positive number.  In that case
-@code{interscoreline} specifies the minimum spacing.
-
-@cindex @code{textheight}
-@cindex @code{interscoreline}
-@cindex @code{interscorelinefill}
-
-If the variable @code{lastpagefill} is defined,
-@c fixme: this should only be done if lastpagefill= #t 
-systems are evenly distributed vertically on the last page.  This
-might produce ugly results in case there are not enough systems on the
-last page.  The @command{lilypond-book} command ignores
-@code{lastpagefill}.  See @ref{lilypond-book manual} for more
-information.
-
-@cindex @code{lastpagefill}
-
-Page breaks are normally computed by @TeX{}, so they are not under
-direct control of LilyPond.  However, you can insert a commands into
-the @file{.tex} output to instruct @TeX{} where to break pages.  This
-is done by setting the @code{between-systems-strings} on the
-@internalsref{NonMusicalPaperColumn} where the system is broken.
-An example is shown in @inputfileref{input/regression,between-systems.ly}.
-The predefined command @code{\newpage} also does this.
-
-@cindex paper size
-@cindex page size
-@cindex @code{papersize}
-
-To change the paper size, use the following Scheme code:
-@example
-        \paper@{
-           #(set-paper-size "a4")
-        @}
-@end example
-
-
-@refcommands
-
-@cindex @code{\newpage}
-@code{\newpage}. 
-
-
-@seealso
-
-In this manual @ref{Invoking lilypond}
-
-Examples: @inputfileref{input/regression,between-systems.ly}
-
-Internals: @internalsref{NonMusicalPaperColumn}.
-
-@refbugs
-
-LilyPond has no concept of page layout, which makes it difficult to
-reliably choose page breaks in longer pieces.
-
-
-
-
-@node Sound
-@section Sound
-@cindex Sound
-
-Entered music can also be converted to MIDI output.  The performance
-is good enough for proof-hearing the music for errors.
-
-Ties, dynamics and tempo changes are interpreted.  Dynamic marks,
-crescendi and decrescendi translate into MIDI volume levels.  Dynamic
-marks translate to a fixed fraction of the available MIDI volume
-range, crescendi and decrescendi make the volume vary linearly between
-their two extremities.  The fractions can be adjusted by
-@code{dynamicAbsoluteVolumeFunction} in @internalsref{Voice} context.
-For each type of MIDI instrument, a volume range can be defined.  This
-gives a basic equalizer control, which can enhance the quality of
-the MIDI output remarkably.  The equalizer can be controlled by
-setting @code{instrumentEqualizer}.
-
-@refbugs
-
-Many musically interesting effects, such as swing, articulation,
-slurring, etc., are not translated to MIDI.
-
-Since slurs are not interpreted, @code{\lyricsto} and
-@code{\addlyrics} sections will be interpreted wrongly.
-
-The MIDI output allocates a channel for each Staff, and one for global
-settings.  Hence, the MIDI file should not have more than 15 staves
-(or 14 if you do not use drums).
-
-
-@menu
-* MIDI block::                  
-* MIDI instrument names::       
-@end menu
-
-
-@node MIDI block
-@subsection MIDI block
-@cindex MIDI block
-
-
-The MIDI block is analogous to the paper block, but it is somewhat
-simpler.  The @code{\midi} block can contain:
-@cindex MIDI block
-
-@itemize @bullet
-  @item a @code{\tempo} definition, and
-  @item context definitions.
-@end itemize
-
-Assignments in the @code{\midi} block are not allowed.
-
-A number followed by a period is interpreted as a real number, so
-for setting the tempo for dotted notes, an extra space should be
-inserted, for example:
-
-@example
-  \midi @{ \tempo 4 . = 120 @} 
-@end example
-
-
-@cindex context definition
-
-Context definitions follow precisely the same syntax as within the
-\paper block.  Translation modules for sound are called performers.
-The contexts for MIDI output are defined in @file{ly/performer-init.ly}.
-
-
-@node MIDI instrument names
-@subsection MIDI instrument names
-
-@cindex instrument names
-@cindex @code{Staff.midiInstrument}
-
-The MIDI instrument name is set by the @code{Staff.midiInstrument}
-property.  The instrument name should be chosen from the list in
-@ref{MIDI instruments}.
-
-@refbugs
-
-If the selected string does not exactly match, then the default is
-used, which is the Grand Piano. 
-
diff --git a/Documentation/user/tutorial.itely b/Documentation/user/tutorial.itely
deleted file mode 100644
index 90ea60ad7b..0000000000
--- a/Documentation/user/tutorial.itely
+++ /dev/null
@@ -1,1877 +0,0 @@
-@c -*-texinfo-*-
-
-@c TODO:
-@c   * more details about running lilypond; error messages,
-@c     compiling/viewing (emacs?)
-@c   * where to go from  First steps+More basics?
-
-@node Tutorial
-@chapter Tutorial
-
-
-
-Using LilyPond comes down to encoding music in an input file. After
-entering the music, the program is run on the file producing output
-which can be viewed or printed.  In this tutorial, we will show step
-by step how to enter such files, and illustrate the process with
-fragments of input and the corresponding output.  At the end of every
-section, a paragraph will list where to find further information on
-the topics discussed.
-
-Many people learn programs by trying and fiddling around with the
-program.  This is also possible with LilyPond. If you click on a
-picture in the HTML version of this manual, you will see the exact
-LilyPond input that was used to generate that image.
-@ifhtml
-For example, consider the following input:
-@example
-  c'^\markup @{ \bold \huge @{ Click on this image! @} @}
-@end example
-@c @lily pond[relative=1,raggedright,with the following output:]
-with the following output:
-@lilypond[relative=1,raggedright]
-  c'^\markup { \bold \huge { Click on this image! } }
-@end lilypond
-
-@end ifhtml
-By cutting and pasting the full input into a test file, you have a
-starting template for experiments. If you like learning in this way,
-you will probably want to print out or bookmark
-@ifhtml
-the
-@end ifhtml
-@ref{Cheat sheet}, which is a table listing all commands for quick
-reference.
-
-
-This tutorial starts with a short introduction to the LilyPond music
-language.  After this first contact, we will show you how to to
-produce printed output.  You should then be able to create and print
-your first sheets of music.
-
-@menu
-* First steps::                 
-* Running LilyPond::            
-* More about pitches::          
-* Octave entry::                
-* Combining music into compound expressions::  
-* Adding articulation marks to notes::  
-* Combining notes into chords::  
-* Basic rhythmical commands::   
-* Commenting input files::      
-* Printing lyrics::             
-* A lead sheet::                
-* Listening to output::         
-* Titling::                     
-* Single staff polyphony::      
-* Piano staves::                
-* Setting variables::           
-* Fine tuning layout::          
-* Organizing larger pieces::    
-* An orchestral part::          
-* Integrating text and music::  
-@end menu
-
-
-@node First steps
-@section First steps
-
-We start off by showing how very simple music is entered in LilyPond:
-you get a note simply by typing its note name, from @samp{a}
-through @samp{g}.  So if you enter
-
-@example
-c d e f g a b
-@end example
-
-@noindent
-then the result looks like this:
-
-@lilypond[notime,relative]
-c d e f g a b
-@end lilypond
-
-The length of a note is specified by adding a number, @samp{1} for a
-@rglos{whole note}, @samp{2} for a @rglos{half note}, and so on:
-
-@example
-a1 a2 a4 a16 a32
-@end example
-
-@lilypond[notime]
-\property Score.timing = ##f
-\property Staff.autoBeaming = ##f
-\transpose c c' { a1 a2 a4 a16 a32 s16_" " }
-@end lilypond
-
-If you do not specify a @rglos{duration}, the previous one is used: 
-
-@example
-a4 a a2 a
-@end example
-
-@lilypond[notime]
-\property Score.timing = ##f
-\transpose c c' { a a a2 a s16_" " }
-@end lilypond
-
-
-Rests are entered just like notes, but with the name ``@code{r}'':
-
-@cindex rests
-@quotation
-@example
-r2 r4 r8 r16
-@end example
-
-@lilypond[fragment]
-\property Score.timing = ##f
-\property Staff.Clef = \turnOff
-\property Staff.TimeSignature = \turnOff
-r2 r4 r8 r16
-s16_" "
-@end lilypond
-@end quotation
-@separate
-
-
-Add a dot @samp{.} after the duration to get a @rglos{dotted note}:
-
-@example
-a2. a4 a8. a16
-@end example
-
-@lilypond[notime]
-\property Score.timing = ##f
-\transpose c c' { a2. a4 a8. a16 s16_" " }
-@end lilypond
-
-
-The @rglos{meter} (or @rglos{time signature}) can be set with the
-@code{\time} command:
-
-@example
-\time 3/4
-\time 6/8
-\time 4/4
-@end example
-
-@c a clef here may lead to confusion
-@lilypond
-\property Staff.Clef \set #'transparent = ##t 
-\time 3/4
-s4_" "
-\time 6/8
-s4_" "
-\time 4/4
-s16_" "
-@end lilypond
-
-
-The @rglos{clef} can be set using the @code{\clef} command:
-
-@c what is more common name treble or violin?
-@c in Dutch, its violin.
-@c in English its definitely treble.
-@example
-\clef treble
-\clef bass
-\clef alto
-\clef tenor
-@end example
-
-@lilypond[notime]
-\property Score.timing = ##f
-\clef violin
-s4_" "
-\clef bass
-s4_" "
-\clef alto
-s4_" "
-\clef tenor
-s16_" "
-@end lilypond
-
-Notes and commands like @code{\clef} and @code{\time}, are enclosed
-in @code{\notes @{@dots{}@}}.  This indicates that music (as opposed
-to @rglos{lyrics}) follows:
-
-@example
-\notes @{
-  \time 3/4
-  \clef bass
-  c2 e4 g2.
-  f4 e d c2 r4
-@}
-@end example
-Now the piece of music is almost ready to be printed.  The final step is to
-combine the music with a printing command.
-
-The printing command is the so-called @code{\paper} block:
-
-@example
-\paper @{ @} 
-@end example
-
-The @code{\paper} block is used to customize printing specifics. The
-customization commands go between @code{@{} and @code{@}}, but for
-now, we accept the defaults.  The music and the @code{\paper} block
-are combined by enclosing them in @code{\score @{ ... @}}, so the
-following is a complete and valid input file:
-
-@example
-\score @{
-  \notes @{
-    \time 3/4
-    \clef bass
-    c2 e4 g2.
-    f4 e d c2 r4
-  @}
-  \paper @{ @}
-@}
-@end example
-
-@lilypond[noindent]
-\score {
-  \notes {
-     \time 3/4
-     \clef bass
-     c2 e4 g2.
-     f4 e d c2 r4
-  }
-  \paper {
-    linewidth = 55 * \staffspace
-  }
-}
-@end lilypond
-
-In the rest of the tutorial we will often leave out @code{\score}
-and @code{\paper} for clarity. However, both must be present when
-feeding the file to LilyPond.
-
-For more elaborate information on
-
-@table @asis
-@item  entering pitches and durations
-see 
-@ref{Pitches} and @ref{Durations}.
-@item Clefs
-see @ref{Clef}
-@item Time signatures and other timing commands
-see  @ref{Time signature}.
-@end table 
-
-@node Running LilyPond
-@section Running LilyPond
-
-In the last section we explained what kind of things you could enter
-in a LilyPond file.  In this section we explain what commands to run
-and how to view or print the output.  If you have not used LilyPond
-before, want to test your setup, or want to run an example file
-yourself, read this section.  The instructions that follow are for
-Unix-like systems.  Some additional instructions for Microsoft Windows
-are given at the end of this section.
-
-Begin by opening a terminal window and starting a text editor.  For
-example, you could open an xterm and execute
-@code{joe}.@footnote{There are macro files for VIM addicts, and there
-is a @code{LilyPond-mode} for Emacs addicts. If it has not been
-installed already, then refer to the file @file{INSTALL.txt}}.  In
-your text editor, enter the following input and save the file as
-@file{test.ly}:
-
-@quotation
-@example
-\score @{
-  \notes @{ c'4 e' g' @}
-@} 
-@end example
-@end quotation
-
-To process @file{test.ly}, proceed as follows:
-
-@quotation
-@example
-lilypond test.ly
-@end example
-@end quotation
-
-You will see something resembling:
-
-@quotation
-@example
-GNU LilyPond 1.8.0
-Now processing: `/home/fred/ly/test.ly'
-Parsing...
-Interpreting music...[1]
- @emph{ ... more interesting stuff ... }
-PDF output to `test.pdf'...
-DVI output to `test.dvi'...
-@end example
-@end quotation
-@cindex DVI file
-@cindex Viewing music
-@cindex xdvi
-
-The result is the file @file{test.pdf}.@footnote{For @TeX{}
-afficionados: there is also a @file{test.dvi} file. It can be viewed
-with @code{xdvi}. The DVI uses a lot of PostScript specials, which do
-not show up in the magnifying glass. The specials also mean that the
-DVI file cannot be processed with @code{dvilj}. Use @code{dvips} for
-printing.
-@cindex dvips
-@cindex dvilj
-@cindex DVI driver
-}  One of the following commands should put the PDF on your
-screen:
-@quotation
-@example
-  gv test.pdf
-  ghostview test.pdf
-  ggv test.pdf
-  kghostview test.pdf
-  xpdf test.pdf
-  gpdf test.pdf
-  acroread test.pdf
-  gsview32 test.pdf
-@end example
-@end quotation
-
-@noindent
-If the music on your screen looks good, you can print it by clicking
-File/Print inside your viewing program.
-
-@cindex Ghostscript
-@cindex @code{lpr}
-@cindex Printing output
-@cindex PostScript
-@cindex PDF
-
-
-On Windows, the same procedure should work, the terminal is started by
-clicking on the LilyPond or Cygwin icon.  Any text editor (such as
-NotePad, Emacs or Vim) may be used to edit the LilyPond file.
-
-To view the PDF file, try the following:
-@itemize
-@item
-If your system has a PDF viewer installed, open
-@file{C:\Cygwin\home\@var{your-name}} in the explorer and double-click
-@file{test.pdf}.
-@item
-If you prefer the keyboard, you can try to enter one of the commands
-from the list shown before in the terminal. If none work, go to
-@uref{http://www.cs.wisc.edu/~ghost/} to install the proper software.
-@end itemize
-
-The commands for formatting and printing music on all platforms are
-detailed in @ref{Invoking LilyPond}.
-
-@node More about pitches
-@section More about pitches 
-
-A @rglos{sharp} (@texisharp{}) pitch is made by adding @samp{is} to
-the name, a @rglos{flat} (@texiflat{}) pitch by adding @samp{es}.  As
-you might expect, a @rglos{double sharp} or @rglos{double flat} is
-made by adding @samp{isis} or @samp{eses}:@footnote{This syntax
-derived from note naming conventions in Nordic and Germanic languages,
-like German and Dutch.}
-
-@example
-cis1 ees fisis aeses
-@end example
-
-@lilypond[notime]
-\property Score.timing = ##f
-\transpose c c' { cis1 ees fisis aeses s16_" " }
-@end lilypond
-
- 
-@cindex key signature, setting
-
-The key signature is set with the command ``@code{\key}'', followed by
-a pitch and @code{\major} or @code{\minor}:
-@quotation
-@example
-\key d \major
-g1
-\key c \minor
-g
-@end example
-
-@lilypond[fragment]
-\property Staff.TimeSignature = \turnOff
-\key d \major
-g'1
-\key c \minor
-g'
-@end lilypond
-@end quotation
-
-
-Key signatures together with the pitch (including alterations) are
-used together to determine when to print accidentals.  This is a
-feature that often causes confusion to newcomers, so let us explain it
-in more detail:
-
-
-LilyPond has a sharp distinction between musical content and
-layout. The alteration (flat, natural or sharp) of a note is part of
-the pitch, and is therefore musical content. Whether an accidental (a
-flat, natural or sharp @emph{sign}) is a printed in front of the
-corresponding note is a question of layout. Layout is something that
-follows rules, so accidentals are printed automatically according to
-those rules.  The pitches in your music are works of art, so they will
-not be added automatically, and you must enter what you want to hear.
-
-For example, in this example:
-@lilypond[fragment]
-\property Staff.TimeSignature = #'()
-\key d \major
-d' cis' fis'
-@end lilypond
-
-@noindent
-no note gets an explicit accidental, but still you enter
-
-@example
-\key d \major
-d cis fis
-@end example
-
-The code @code{d} does not mean ``print a black dot just below the
-staff.'' Rather, it means: ``a note with pitch D-natural.'' In the key
-of A-flat, it gets an accidental:
-
-@lilypond[fragment]
-\property Staff.TimeSignature = #'()
-\key as \major
-d'
-@end lilypond
-
-@noindent
-@example
-\key as \major
-d
-@end example
-
-Adding all alterations explicitly might require some more effort when
-typing, but the advantage is that transposing is easier, and music can
-be printed according to different conventions.  See @ref{Accidentals}
-for some examples how accidentals can be printed according to
-different rules.
-
-
-@cindex tie
-A tie is created by adding a tilde ``@code{~}'' to the first note
-being tied:
-@quotation
-@lilypond[fragment,verbatim,relative=2]
-g4~ g a2~ a4
-@end lilypond
-@end quotation
-@separate
-
-This example shows the key signature, accidentals and ties in action:
-
-@quotation
-@example
-\score @{
-  \notes @{
-    \time 4/4
-    \key g \minor
-    \clef violin
-    r4 r8 a8 gis4 b
-    g8 d4.~ d e8
-    fis4 fis8 fis8 eis4  a8 gis~
-    gis2 r2
-  @}
-  \paper @{ @}
-@}
-@end example
-
-@lilypond
-\score {
-  \notes { \transpose c c' { 
-    \time 4/4
-    \key g \minor
-    \clef violin
-    r4 r8 a8 gis4 b
-    g8 d4.~ d e8
-    fis4 fis8 fis8 eis4  a8 gis~
-    gis2 r2
-  }}
-  \paper { linewidth = #(* 50 staffspace) }
-}
-@end lilypond
-@end quotation
-@cindex accidentals
-
-There are some interesting points to note in this example.  Bar lines
-and beams are drawn automatically.  Line breaks are calculated
-automatically; it does not matter where the lines breaks are in the
-source file. Finally, the order of time, key and clef changes is not
-relevant: in the printout, these are ordered according to standard
-notation conventions.
-
-
-@cindex beams, by hand 
-Beams are drawn automatically, but if you do not like where they are
-put, they can be entered by hand. Mark the first note to be beamed
-with @code{[} and the last one with @code{]}:
-@quotation
-@lilypond[fragment,relative=1,verbatim]
-a8[ ais] d[ es r d]
-@end lilypond
-@end quotation
-@separate
-
-For more information on
-@table @asis
-@item Rests
-see @ref{Rests}. 
-
-@item Ties
-see  @ref{Ties}.
-
-@item Accidentals
-see @ref{Accidentals}
-
-@item Key signature
-see @ref{Key signature}
-
-@item Beams
-see @ref{Beaming}
-@end table
-
-
-@node Octave entry
-@section Octave entry
-
-
-@c Tim wants to move this quotes example just before the: quotes-do not-work
-@c score, but we'd need to remove quotes from the other two (key and
-@c tie) examples...
-
-@c better to have this just before the `octaves are bad' snipped
-@c but we'd need to remove the ', from \key and tie 
-To raise a note by an octave, add a high quote @code{'} (apostrophe) to
-the note name, to lower a note one octave, add a ``low quote'' @code{,}
-(a comma).  Middle C is @code{c'}:
-
-@quotation
-@example
-c'4 c'' c''' \clef bass c c,
-@end example
-
-@lilypond[fragment]
-\property Score.timing = ##f
-\property Staff.TimeSignature = \turnOff
-c'4 c'' c''' \clef bass c c,
-@end lilypond
-@end quotation
-@separate
-
-An example of the use of quotes is in the following Mozart fragment:
-@lilypond[raggedright,fragment,verbatim]
-  \key a \major
-  \time 6/8
-  cis''8. d''16 cis''8 e''4 e''8
-  b'8. cis''16 b'8 d''4 d''8 
-@end lilypond 
-
-This example shows that music in a high register needs lots of quotes.
-This makes the input less readable, and it is a source of errors.  The
-solution is to use ``relative octave'' mode.  In practice, this is the
-most convenient way to copy existing music.  To use relative mode, add
-@code{\relative} before the piece of music.  You must also give a note
-from which relative starts, in this case @code{c''}.  If you do not
-use octavation quotes (i.e. do not add @code{'} or @code{,} after a
-note), relative mode chooses the note that is closest to the previous
-one.  For example, @code{c f} goes up while @code{c g} goes down:
-
-@quotation
-@example
-\relative c'' @{
-  c f c g c
-@}
-@end example
-
-@lilypond[fragment]
-\property Score.timing = ##f
-\property Staff.TimeSignature = \turnOff
-\relative c'' {
-  c f c g c
-}
-@end lilypond
-@end quotation
-@separate
-
-
-Since most music has small intervals, pieces can be written almost
-without octavation quotes in relative mode.  The previous example is
-entered as
-@c
-@lilypond[raggedright,fragment,verbatim]
-\relative c'' {
-  \key a \major
-  \time 6/8
-  cis8. d16 cis8 e4 e8
-  b8. cis16 b8 d4 d8
-}
-@end lilypond 
-
-
-@c needed better, maybe even redundant explanation
-@c   added another example below.
-@c grappig: Pa vond het heel logies, en slim toen-i eenmaal begreep.
-@c in eerste instantie drong het `relative' niet door zonder extra uitleg.
-Larger intervals are made by adding octavation quotes.
-@quotation
-@example
-\relative c'' @{
-  c f, f c' c g' c,
-@}
-@end example
-
-@lilypond[fragment]
-\property Score.timing = ##f
-\property Staff.TimeSignature = \turnOff
-\relative c'' {
-  c f, f c' c g' c,
-}
-@end lilypond
-@end quotation
-@separate
-
-Quotes or commas do not determine the absolute height of a note; the
-height of a note is relative to the previous one.
-@c do not use commas or quotes in this sentence
-For example: @code{c f,} goes down; @code{f, f} are both the same;
-@code{c' c} are the same; and @code{c g'} goes up:
-
-
-
-Here is an example of the difference between relative mode and
-``normal'' (non-relative) mode:
-
-@quotation
-@example
-\relative a @{
-\clef bass
-  a d a e d c' d'
-@}
-@end example
-
-@lilypond[fragment]
-\property Score.timing = ##f
-\property Staff.TimeSignature = \turnOff
-\relative a {
-\clef bass
-  a d a e d c' d'
-}
-@end lilypond
-@end quotation
-@separate
-
-@quotation
-@example
-\clef bass
-  a d a e d c' d'
-@end example
-
-@lilypond[fragment]
-\property Score.timing = ##f
-\property Staff.TimeSignature = \turnOff
-\clef bass
-  a d a e d c' d'
-@end lilypond
-@end quotation
-@separate
-
-
-For more information on Relative octaves see @ref{Relative octaves}
-and @ref{Octave check}.
-
-
-
-
-
-
-@node Combining music into compound expressions
-@section Combining music into compound expressions
-
-To print more than one staff, each piece of music that makes up a
-staff is marked by adding @code{\context Staff} before it.  These
-@code{Staff}'s are then grouped inside @code{\simultaneous @{} and
-@code{@}}, as is demonstrated here:
-
-@quotation
-@lilypond[fragment,verbatim]
-\simultaneous {
-  \new Staff { \clef violin c'' }
-  \new Staff { \clef bass c }
-}
-@end lilypond
-@end quotation
-
-
-In this example, @code{\simultaneous } indicates that both music
-fragments happen at the same time, and must be printed stacked
-vertically.  The notation @code{<< .. >>} can also be used as a
-shorthand for @code{\simultaneous @{ .. @}}.
-
-The command @code{\new} introduces a ``notation context''.  To
-understand this concept, imagine that you are performing a piece of
-music. When you are playing, you combine the symbols printed at a
-certain point with contextual information. For example, without
-knowing the current clef, and the accidentals in the last measure, it
-would be impossible to determine the pitch of a note. In other words,
-this information forms context that helps you decipher a
-score. LilyPond produces notation from music, so in effect, it does
-the inverse of reading scores. Therefore, it also needs to keep track
-of contextual information. This information is maintained in
-``notation contexts.''  There are several types of contexts,
-e.g. @code{Staff}, @code{Voice} and @code{Score}, but also
-@code{Lyrics} and @code{ChordNames}. Prepending @code{\new} to a chunk
-of music indicates what kind of context to use for interpreting it,
-and ensures that the argument is interpreted with a fresh instance of
-the context indicated.
-
-
-@separate
-
-We can now typeset a melody with two staves:
-
-@quotation
-@lilypond[verbatim,raggedright]
-\score {
-  \notes 
-  << \new Staff {
-      \time 3/4
-      \clef violin
-      \relative c'' {
-        e2( d4 c2 b4 a8[ a]
-        b[ b] g[ g] a2.) }  
-    }
-    \new Staff {
-       \clef bass
-       c2 e4  g2.
-       f4 e d c2.
-    }
-  >>
-  \paper {} 
-}
-@end lilypond
-@end quotation
-
-The example shows how small chunks of music, for example, the notes
-@code{c2}, @code{e4}, etc. of the second staff, are combined to form a
-larger chunk by enclosing it in braces. Again, a larger chunk is
-formed by prefix @code{\new Staff} to it, and that chunk is combined
-with @code{<< >>}. This mechanism is similar with mathematical
-formulas: a big formula is created by composing small formulas.  Such
-formulas are called expressions, and their definition is recursive, so
-you can make arbitrarily complex and large expressions.  For example,
-
-@quotation
-  1
-
-  1 + 2
-  
-  (1 + 2) * 3
-  
-  ((1 + 2) * 3) / (4 * 5)
-@end quotation
-@cindex expression
-@cindex music expression
-This example shows a sequence of expressions, where each expression is
-contained in the next one.  The simplest expressions are numbers and
-operators (like +, * and /). Parentheses are used to group
-expressions.  In LilyPond input, a similar mechanism is used. Here,
-the simplest expressions are notes and rests.  By enclosing
-expressions in @code{<< >>} and @code{@{ @}}, more complex music is
-formed. The @code{\new} command also forms new expressions; prepending
-it to a music expression yields a new expression.
-
-Like mathematical expressions, music expressions can be nested
-arbitrarily deep, e.g.
-@lilypond[verbatim,relative=1] 
-  { c <<c e>>
-      << { e f } { c <<b d>> }
-      >>
-  }
-@end lilypond 
-
-
-@cindex indent
-When spreading expressions over multiple lines, it is customary to use
-an indent that indicates the nesting level. Formatting music like this
-eases reading, and helps you  insert the right amount of closing
-braces at the end of an expression. For example,
-@example
-\score @{
-  \notes <<
-    @{
-      @dots{}
-    @}
-    @{
-      @dots{}
-    @}
-  >>
-@}
-@end example
-
-
-For more information on context see the Technical manual description
-in @ref{Interpretation context}.
-
-
-
-@node Adding articulation marks to notes
-@section Adding articulation marks to notes
-
-@cindex articulation
-@cindex accents
-@cindex staccato
-
-Common accents can be added to a note using a dash (`@code{-}') and a
-single character:
-@quotation
-@lilypond[verbatim,relative=1]
-c-. c-- c-> c-^ c-+ c-_
-@end lilypond
-@end quotation
-@separate
-
-@cindex fingering
-Similarly, fingering indications can be added to a note using a dash
-(`@code{-}') and the digit to be printed:
-@c
-@lilypond[verbatim,relative=1]
-  c-3 e-5 b-2 a-1
-@end lilypond
-
-
-Dynamic signs are made by adding the markings to the note:
-@quotation
-@lilypond[verbatim,relative=1]
-c\ff c\mf
-@end lilypond
-@end quotation
-@separate
-
-@cindex dynamics
-@cindex decrescendo
-@cindex crescendo
-
-Crescendi and decrescendi are started with the commands @code{\<} and
-@code{\>}. The command @code{\!} finishes a crescendo on the note it
-is attached to:
-@quotation
-@lilypond[verbatim,relative=1]
-c2\<  c2\!\ff\>  c2  c2\!
-@end lilypond
-@end quotation
-@separate
-
-
-
-@cindex slur
-
-A slur is drawn across many notes, and indicates bound articulation
-(legato).  The starting note and ending note are marked with a
-``@code{(}'' and a ``@code{)}'' respectively:
-
-@quotation
-@lilypond[fragment,relative=1,verbatim]
-d4( c16)( cis d e c cis d e)( d4)
-@end lilypond
-@end quotation
-@separate
-@cindex slurs versus ties
-A slur looks like a tie, but it has a different meaning. A tie simply
-makes the first note sound longer, and can only be used on pairs of
-notes with the same pitch. Slurs indicate the articulations of notes,
-and can be used on larger groups of notes. Slurs and ties are also
-nested in practice:
-@c
-@lilypond[fragment,relative=1]
-c2~( c8 fis fis4 ~ fis2 g2)
-@end lilypond
-
-@cindex phrasing slurs
-If you need two slurs at the same time (one for articulation, one for
-phrasing), you can also make a phrasing slur with @code{\(} and
-@code{\)}.
-
-@quotation
-@lilypond[fragment,relative=1,verbatim]
-a8(\( ais b  c) cis2 b'2 a4 cis,  c\)
-@end lilypond
-@end quotation
-
-
-For more information on
-@table @asis
-@item fingering
-  see @ref{Fingering instructions}
-@item articulations
-  see @ref{Articulations}
-@item slurs
-  see @ref{Slurs}
-@item phrasing slurs
-  see  @ref{Phrasing slurs}
-@item dynamics
-  see  @ref{Dynamics}
-@item fingering
-@end table
-
-@node Combining notes into chords
-@section Combining notes into chords
-
-@cindex chords
-Chords can be made by
-surrounding pitches with @code{<} and @code{>}:
-@quotation
-@lilypond[relative,fragment,verbatim]
-r4 <c e g>4 <c f a>8
-@end lilypond
-@end quotation
-@separate
-
-
-You can combine beams and ties with chords.  Beam and tie markings
-must be placed outside the chord markers:
-@quotation
-@lilypond[relative,fragment,verbatim]
-r4 <c e g>8[ <c f a>]~ <c f a>
-@end lilypond
-@end quotation
-
-@quotation
-@example
-r4 <c e g>8\>( <c e g> <c e g>  <c f a>8\!)
-@end example
-@lilypond[relative,fragment]
-\slurUp
-r4 <c e g>8\>( <c e g> <c e g>  <c f a>8\!)
-@end lilypond
-@end quotation
-@separate
-
-
-
-
-@node Basic rhythmical commands
-@section  Basic rhythmical commands
-
-@cindex pickup
-@cindex anacruse
-@cindex upstep
-@cindex partial measure
-A pickup (or upstep) is entered with the keyword @code{\partial}. It
-is followed by a duration: @code{\partial 4} is a quarter note upstep
-and @code{\partial 8} an eighth note:
-@lilypond[relative=1,verbatim,fragment]
-  \partial 8
-  f8 c2 d e
-@end lilypond
-
-@cindex tuplets
-@cindex triplets
-Tuplets are made with the @code{\times} keyword.  It takes two
-arguments: a fraction and a piece of music.  The duration of the piece
-of music is multiplied by the fraction.  Triplets make notes occupy
-2/3 of their notated duration, so  a triplet has  2/3 as its fraction:
-@c
-@lilypond[relative,verbatim,fragment]
-  \times 2/3 { f8 g a }
-  \times 2/3 { c r c }
-@end lilypond 
-
-@cindex grace notes
-@cindex accacciatura
-Grace notes are also made by prefixing a note, or a set of notes with
-a keyword. In this case, the keywords are @code{\appoggiatura}
-and @code{\acciaccatura}
-@cindex appoggiatura
-@cindex acciaccatura
-      
-@lilypond[relative=1,verbatim,fragment]
-  c4 \appoggiatura b16 c4
-  c4 \acciaccatura b16 c4
-@end lilypond
-
-@noindent
-
-For more information on
-@table @asis
-@item  grace notes
-see @ref{Grace notes},
-@item tuplets
-see @ref{Tuplets},
-@item upsteps 
-see @ref{Partial measures}.
-@end table
-
-
-
-@node Commenting input files
-@section Commenting input files
-
-@cindex comments
-@cindex line comment
-@cindex block comment
-Comments are pieces of the input that are ignored.  There are two
-types of comments. A line comments is introduced by @code{%}: after
-that, the rest of that line is ignored.  Block comments span larger
-sections of input.  Anything that is enclosed in @code{%@{} and
-@code{%@}} is ignored too. The following fragment shows possible uses
-for comments:
-
-@example
-  % notes for twinkle twinkle follow:
-  c4 c   g' g  a a
-  
-  %@{
-  
-    This line, and the notes below
-    are ignored, since they are in a
-    block comment.
-
-    g g f f e e d d c2 
-  %@}
-@end example
-
-
-
-
-@node Printing lyrics
-@section Printing lyrics
-@cindex lyrics
-
-@cindex Lyrics
-@cindex Songs
-Lyrics are entered by separating each syllable with a space, and
-surrounding them with @code{\lyrics @{ @dots{} @}}, for example,
-@example
-  \lyrics @{ I want to break free @}
-@end example
-
-Like notes, lyrics are also a form of music, but they must not be
-printed on a staff, which is the default way to print music. To print
-them as lyrics, they must be marked with @code{ \new LyricsVoice}:
-@example
-  \new LyricsVoice  \lyrics @{ I want to break free @}
-@end example
-The melody for this song is as follows:
-
-@lilypond[fragment,relative=1]
-   \partial 8
-     c8
-   \times 2/3 {  f4 g g } \times 2/3 { g4( a2) }
-@end lilypond
-
-The lyrics can be set to these notes, combining both with the
-@code{\lyricsto} keyword:
-@example
-  \lyricsto "@var{name}" \new LyricsVoice @dots{}
-@end example
-where @var{name} identifies to which melody the lyrics should be
-aligned. In this case, there is only one melody, so we can leave it
-empty.
-
-The final result is 
-@lilypond[verbatim,linewidth=6.0\cm]
-\score  {
- \notes <<
-   \relative c' \new Voice {
-     \partial 8
-     c8
-     \times 2/3 { f g g } \times 2/3 { g4( a2) }
-   }
-   \lyricsto "" \new LyricsVoice \lyrics { I want to break free }
- >>
- \paper{ }
-}
-@end lilypond
-
-@cindex melisma
-@cindex extender line
-@c synonyms?
-This melody ends on a @rglos{melisma}, a single syllable (``free'')
-sung to more than one note. This is indicated with an @emph{extender
-line}. It is entered as two underscores, i.e.
-@example
-  \lyrics @{ I want to break free __ @}
-@end example 
-@lilypond[]
-\score  {
- \notes <<
-   \relative c' \new Voice {
-     \partial 8
-     c8
-     \times 2/3 { f g g } \times 2/3 { g4( a2) } }
-   \lyricsto "" \new LyricsVoice \lyrics { I want to break free __ }
-   >>
- \paper{ }
-}
-@end lilypond
-
-Similarly, hyphens between words can be entered as two dashes,
-resulting in a centered hyphen between two syllables:
-@example
-  Twin -- kle twin -- kle
-@end example
-@lilypond[raggedright]
-\score {
-  << \notes \relative f' { \time 2/4
-    f4 f c' c' }
-    \new Lyrics \lyrics { Twin -- kle twin -- kle }
-  >>
-  \paper { raggedright = ##t }
- }
-@end lilypond
-
-More options, like putting multiple lines of lyrics below a melody are
-discussed in @ref{Vocal music}.
-
-
-
-@node A lead sheet
-@section A lead sheet
-
-@cindex Lead sheets
-@cindex chords
-@cindex chord names
- 
-In popular music, it is common to denote accompaniment as chord-names.
-Using them in LilyPond has two parts, just like lyrics: entering the
-chords (with @code{\chords}), and printing them (with @code{\new
-ChordNames}).
-
-Chord names are entered by starting chords mode (with @code{\chords}).
-In chords mode, you can enter chords with a letter (indicating the
-root of the chord), and a durations following that:
-@c
-@lilypond[verbatim]
-  \chords { c2 f4. g8 } 
-@end lilypond
-
-@noindent
-The result of @code{\chords} is a list of chords, and is  equivalent
-to entering chords with @code{<@dots{}>}.
-
-Other chords can be created by adding modifiers, after a colon.  The
-following example shows a few common modifiers:
-@c
-@lilypond[verbatim]
-  \chords { c2 f4:m g4:maj7 gis1:dim7 }
-@end lilypond
-
-Printing chords is done by adding @code{\context ChordNames}
-before the chords thus entered:
-@c
-@lilypond[verbatim]
- \context ChordNames \chords { c2 f4.:m g4.:maj7 gis8:dim7 }
-@end lilypond
-
-@cindex lead sheet
-@separate
-When put together,  chord names, lyrics and a melody form
-a lead sheet, for example,
-
-@example
-\score @{
-  <<
-    \context ChordNames \chords @{ @emph{chords} @}
-    \notes @emph{the melody}
-    \lyricsto "" \new LyricsVoice \lyrics @{ @emph{the text} @}
-  >>
-  \paper @{ @}
-@}
-@end example
-@lilypond[]
-\score  {
-  << 
-   \context ChordNames \chords { r8 c2:sus4 f } 
-    \notes \relative c' {
-     \partial 8
-     c8
-     \times 2/3 { f g g } \times 2/3 { g4( a2) } }
-   \new LyricsVoice \lyricsto "" \lyrics { I want to break free __ }
-  >>
- \paper{ raggedright = ##t }
-}
-@end lilypond
-
-
-A complete list of modifiers, and other options for layout are in the
-reference manual section @ref{Chords}.
-
-@node Listening to output
-@section Listening to output
-
-@cindex sound
-@cindex MIDI
-
-MIDI (Musical Instrument Digital Interface) is a standard for
-connecting and recording digital instruments.  A MIDI file is like a
-tape recording of a MIDI instrument. The @code{\midi} block makes the
-music go to a MIDI file, so you can listen to the music you entered.
-It is great for checking the music: octaves that are off, or
-accidentals that were mistyped, stand out very much when listening to
-the musical transcription.
-
-@code{\midi} can be used in similarly to @code{\paper @{ @}}, for
-example,
-@example 
-\score @{
-    @var{..music..}
-    \midi  @{ \tempo 4=72 @}
-    \paper  @{ @}
-@}
-@end example 
-
-Here, the tempo is specified using the @code{\tempo} command.  In this
-case the tempo of quarter notes is set to 72 beats per minute. More
-information on auditory output is in the @ref{Sound} section in the
-notation manual.
-
-
-
-@node Titling
-@section Titling
-
-Bibliographic information is entered in a separate block, the
-@code{\header} block. The name of the piece, its composer, etc. are
-entered as an assignment, within @code{\header @{ @dots{} @}}. For
-example,
-@example 
-  \header @{
-    title = "Eight miniatures" 
-    composer = "Igor Stravinsky"
-    tagline = "small is beautiful"
-  @}
-  
-  \score @{ @dots{} @}
-@end example
-
-@cindex bibliographic information
-@cindex titles
-@cindex composer
-@cindex Engraved by LilyPond
-
-When the file is processed by the @code{lilypond} wrapper script, then
-the title and composer specified are printed above the music. The
-`tagline' is a short line printed at bottom of the last page, which
-normally says ``Engraved by LilyPond, version @dots{}''. In the
-example above, it is replaced by the line ``small is
-beautiful.''@footnote{Nicely printed parts are good PR for us, so do
-us a favor, and leave the tagline if you can.}
-
-Normally, the @code{\header} is put at the top of the file. However,
-for a document that contains multiple pieces (e.g. an etude book, or
-an orchestral part with multiple movements), then the header can be
-put into the @code{\score} block as follows; in this case, the name of
-each piece will be printed before each movement:
-
-
-@cindex Engraved by LilyPond
-@cindex signature line
-@cindex tag line
-
-@example 
-  \header @{
-    title = "Eight miniatures" 
-    composer = "Igor Stravinsky"
-    tagline = "small is beautiful"
-  @}
-  
-  \score @{ @dots{}
-    \header @{ piece = "Adagio" @}
-  @}
-  \score @{ @dots{}
-    \header @{ piece = "Menuetto" @}
-  @}
-@end example
-
-More information on titling can be found in @ref{Invoking lilypond}.
-
-
-@node Single staff polyphony
-@section Single staff polyphony
-
-@cindex polyphony
-@cindex multiple voices
-@cindex voices, more -- on a staff
-
-When different melodic lines are combined on a single staff, these are
-printed as polyphonic voices: each voice has its own stems, slurs and
-beams, and the top voice has the stems up, while the bottom voice has
-them down.
-
-Entering such parts is done by entering each voice as a sequence (with
-@code{@{ .. @}}), and combining those simultaneously, separating the
-voices with @code{\\}:
-
-@example
-  << @{ a4 g2 f4~ f4 @} \\
-    @{ r4 g4 f2 f4 @} >>
-@end example
-@lilypond[relative=1]
-\context Staff   << { a4 g2 f4~ f4 } \\
-    { r4 g4 f2 f4 } >>
-@end lilypond
-
-For polyphonic music typesetting, spacer rests can also be convenient: these
-are rests that do not print.  It is useful for filling up voices that
-temporarily do not play:
-@example
-  << @{ a4 g2 f4~ f4 @} \\
-    @{ s4 g4 f2 f4 @} >>
-@end example
-@lilypond[relative=1]
-\context Staff  << { a4 g2 f4~ f4 } \\
-    { s4 g4 f2 f4 } >>
-@end lilypond
-
-Again, these expressions can be nested arbitrarily:
-
-@lilypond[fragment]
-<<
- \new Staff 
-  \relative c''
-    << { a4 g2 f4~ f4 } \\
-      { s4 g4 f2 f4 } >>
- \new Staff 
-  <<  { \clef bass <c g>1 ~ <c g>4   } \\
-     { f4 d e2  ~ e4}
-  >>
->>
-@end lilypond
-
-
-More features of polyphonic typesetting are in the notation manual
-in @ref{Polyphony}.
-
-@node Piano staves
-@section Piano staves
-
-@cindex staff switch, manual
-@cindex cross staff voice, manual
-@cindex @code{\translator}
-
-Piano music is always typeset in two staves connected by a brace.
-Printing such a staff is done similar to the polyphonic example in
-@ref{Combining music into compound expressions}:
-@example
- << \new Staff @{ @dots{} @}
-   \new Staff @{ @dots{} @}
- >>
-@end example
-but now this entire expression must be interpreted as a
-@code{PianoStaff}:
-@example
- \new PianoStaff << \new Staff @dots{} >>
-@end example
-
-Here is a full-fledged example:
-
-@lilypond[relative,fragment]
-\new PianoStaff
- << \new Staff { \time 2/4
-     c4 c g' g  }
-   \new Staff {
-     \clef bass c,, c' e c }
- >>
-@end lilypond
-
-More information on formatting piano music is in @ref{Piano music}. 
-
-@node Setting variables
-@section Setting variables
-
-When the music is converted from notes to print, it is interpreted
-from left-to-right order, similar to what happens when we read
-music. During this step, context-sensitive information, such as the
-accidentals to print, and where barlines must be placed, are stored in
-variables. These variables are called @emph{context properties}.
-The properties can also be manipulated from input files. Consider this input:
-@example
-\property Staff.autoBeaming = ##f
-@end example 
-
-@noindent
-It sets the property named @code{autoBeaming} in the current staff at
-this point in the music to @code{##f}, which means `false'. This
-property controls whether beams are printed automatically:
-@c
-@lilypond[relative=1,fragment,verbatim]
-  c8 c c c
-  \property Staff.autoBeaming = ##f
-  c8 c c c  
-@end lilypond
-
-@noindent
-LilyPond includes a built-in programming language, namely, a dialect
-of Scheme.  The argument to @code{\property}, @code{##f}, is an
-expression in that language.  The first hash-mark signals that a piece
-of Scheme code follows. The second hash character is part of the
-boolean value true (@code{#t}).  Values of other types may be
-entered as follows:
-@itemize @bullet
-@item a string, enclosed in double quotes, for example,
-@example
-  \property Staff.instrument = #"French Horn"
-@end example
-@item a boolean: either @code{#t} or @code{#f}, for true and false
-respectively, e.g.
-@example
-  \property Voice.autoBeaming = ##f
-  \property Score.skipBars = ##t
-@end example
-
-@item a number, such as
-@example
-  \property Score.currentBarNumber = #20
-@end example
-
-@item a symbol, which is introduced by a quote character, as in 
-@example
-  \property Staff.crescendoSpanner = #'dashed-line
-@end example
-
-@item a pair, which is also introduced by a quote character, like in
-the following statements, which set properties to the pairs (-7.5, 6) 
-and (3, 4) respectively:
-
-@example
-  \property Staff.minimumVerticalExtent  = #'(-7.5 . 6)
-  \property Staff.timeSignatureFraction  = #'(3 . 4)
-@end example
-
-@item a list, which is also introduced by a quote character. In the
-following example, the @code{breakAlignOrder} property is set to a
-list of symbols:
-@example
-  \property Score.breakAlignOrder =
-    #'(left-edge time-signature key-signatures)
-@end example
-
-
-@end itemize
-
-There are many different properties, and not all of them are listed in
-this manual. However, the program reference lists them all in the
-section @internalsref{Context-properties}, and most properties are
-demonstrated in one of the
-@ifhtml
-@uref{../../../input/test/out-www/collated-files.html,tips-and-tricks}
-@end ifhtml
-@ifnothtml
-tips-and-tricks
-@end ifnothtml
-examples.
-
-
-@node Fine tuning layout
-@section Fine tuning layout
-
-Sometimes it is necessary to change music layout by hand.  When music
-is formatted, layout objects are created for each symbol.  For
-example, every clef and every note head is represented by a layout
-object.  These layout objects also carry variables, which we call
-@emph{layout properties}. By changing these variables from their
-values, we can alter the look of a formatted score:
-
-@lilypond[verbatim,relative]
-  c4
-  \property Voice.Stem \override #'thickness = #3.0
-  c4 c4 c4 
-@end lilypond
-
-@noindent
-In the example shown here, the layout property @code{thickness} (a
-symbol) is set to 3 in the @code{Stem} layout objects of the current
-Voice.  As a result, the notes following @code{\property} have thicker
-stems.
-
-In most cases of manual overrides, only a single object must be
-changed. This can be achieved by prefixing @code{\once} to the
-@code{\property} statement, i.e.
-
-@example
- \once \property Voice.Stem \set #'thickness = #3.0
-@end example
-
-@lilypond[relative]
-  c4
-  \once \property Voice.Stem \set #'thickness = #3.0
-  c4 c4 c4 
-@end lilypond
-
-@noindent
-Some overrides are so common that predefined commands are provided as
-a short cut.  For example, @code{\slurUp} and @code{\stemDown}. These
-commands are described in
-@ifhtml
-the
-@end ifhtml
-@ref{Notation manual}, under the sections for slurs and stems
-respectively.
-
-The exact tuning possibilities for each type of layout object are
-documented in the program reference of the respective
-object. However, many layout objects share properties, which can be
-used to apply generic tweaks.  We mention a couple of these:
-
-@itemize @bullet
-@item The @code{extra-offset} property, which
-@cindex @code{extra-offset}
-has a pair of numbers as value, moves around objects in the printout.
-The first number controls left-right movement; a positive number will
-move the object to the right.  The second number controls up-down
-movement; a positive number will move it higher.  The unit of these
-offsets are staff-spaces.  The @code{extra-offset} property is a
-low-level feature: the formatting engine is completely oblivious to
-these offsets.
-
-In the following example, the second fingering is moved a little to
-the left, and 1.8 staff space downwards:
-
-@cindex setting object properties
-
-@lilypond[relative=1,verbatim]
-\stemUp
-f-5
-\once \property Voice.Fingering
-  \set #'extra-offset = #'(-0.3 . -1.8) 
-f-5
-@end lilypond
-
-@item
-Setting the @code{transparent} property will make an object be printed
-in `invisible ink': the object is not printed, but all its other
-behavior is retained. The object still takes space, it takes part in
-collisions, and slurs, ties and beams can be attached to it.
-
-@cindex transparent objects
-@cindex removing objects
-@cindex invisible objects
-The following example demonstrates how to connect different voices
-using ties. Normally ties only happen between notes of the same
-voice. By introducing a tie in a different voice, and blanking a stem
-in that voice, the tie appears to cross voices:
-
-@lilypond[fragment,relative=1,verbatim]
-  c4 << {
-      \once \property Voice.Stem \set #'transparent = ##t
-      b8~ b8
-  } \\ {
-       b[ g8]
-  } >>
-@end lilypond
-
-@item
-The @code{padding} property for objects with
-@cindex @code{padding}
-@code{side-position-interface} can be set to increase distance between
-symbols that are printed above or below notes. We only give an
-example; a more elaborate explanation is in @ref{Constructing a
-tweak}:
-
-@lilypond[relative=1,verbatim]
-  c2\fermata
-  \property Voice.Script \set #'padding = #3
-  b2\fermata
-@end lilypond
-
-@end itemize
-
-More specific overrides are also possible.  The notation manual
-discusses in depth how to figure out these statements for yourself, in
-@ref{Tuning output}.
-
-@node Organizing larger pieces
-@section Organizing larger pieces
-
-When all of the elements discussed earlier are combined to produce
-larger files, the @code{\score} blocks get a lot bigger, because the
-music expressions are longer, and, in the case of polyphonic and/or
-orchestral pieces, more deeply nested. Such large expressions can
-become unwieldy.
-
-By using variables, also known as identifiers, it is possible to break
-up complex music expressions.  An identifier is assigned as follows:
-@c
-@example
-  namedMusic = \notes @{ @dots{}
-@end example
-
-The contents of the music expression @code{namedMusic}, can be used
-later by preceding the name with a backslash, i.e. @code{\namedMusic}.
-In the next example, a two note motive is repeated two times by using
-variable substitution:
-
-@lilypond[raggedright,verbatim]
-seufzer  = \notes {
-  dis'8 e'8
-}
-\score { \notes {
-  \seufzer \seufzer 
-} }
-@end lilypond
-
-The name of an identifier should have alphabetic characters only, and
-no numbers, underscores or dashes. The assignment should be outside of
-the @code{\score} block.
-
-It is possible to use variables for many other types of objects in the
-input.  For example,
-@example
-  width = 4.5\cm
-  name = "Wendy"
-  aFivePaper = \paper @{ paperheight = 21.0 \cm @}
-@end example
-Depending on its contents, the identifier can be used in different
-places. The following example uses the above variables:
-@example
-  \score @{
-    \notes @{ c4^\name @}
-    \paper @{
-      \aFivePaper
-      linewidth = \width
-    @}
-  @}
-@end example
-
-More information on the possible uses of identifiers is in the
-technical manual, in @ref{Scheme datatypes}.
-
-
-@node An orchestral part
-@section An orchestral part
-
-In orchestral music, all notes are printed twice: both in a part for
-the musicians, and in a full score for the conductor. Identifiers can
-be used to avoid double work: the music is entered once, and stored in
-variable. The contents of that variable is then used to generate
-both the part and the score.
-
-It is convenient  to define the notes in a  special file, for example,
-suppose that the @file{horn-music.ly} contains the following part of a
-horn/bassoon duo.
-@example
-hornNotes = \notes \relative c @{
-  \time 2/4
-  r4 f8 a cis4 f e d
-@}
-@end example
-
-Then, an individual part is made by putting the following in a file:
-@example
-\include "horn-music.lyinc"
-\header @{
-  instrument = "Horn in F"
-@}
-\score @{
-  \notes \transpose f c' \hornNotes
-@}
-@end example
-The @code{\include} command substitutes the contents of the file at
-this position in the file, so that @code{hornNotes} is defined
-afterwards.  The code @code{\transpose f c'} indicates that the
-argument, being @code{\hornNotes}, should be transposed by a fifth
-downwards: sounding @code{f} is denoted by notated @code{c'}, which
-corresponds with tuning of a normal French Horn in F. The
-transposition can be seen in the following output:
-
-@lilypond[raggedright]
-\score {
-  \notes \transpose f c' \notes \relative c {
-  \time 2/4
-  r4 f8 a cis4 f e d
-}
-}
-@end lilypond
-
-In ensemble pieces, one of the voices often does not play for many
-measures. This is denoted by a special rest, the multi-measure
-rest. It is entered with a capital R, and followed by a duration (1
-for a whole note, 2 for a half note, etc.) By multiplying the
-duration, longer rests can be constructed. For example, the next rest
-takes 3 measures in 2/4 time:
-@example
-  R2*3
-@end example
-
-When printing the part, the following @code{skipBars} property must be
-set to false, to prevent the rest from being expanded in three one bar
-rests:
-@example
-  \property Score.skipBars = ##t
-@end example
-Prepending the rest and the property setting above, leads to the
-following result:
-
-@lilypond[raggedright]
-\score {\notes { \transpose f c' \relative c { \time 2/4
-\property Score.skipBars = ##t 
-        R2*3
-    r4 f8 a cis4 f e d } }}
-@end lilypond
-
-The score is made by combining all of the music in a @code{\score}
-block, assuming that the other voice is in @code{bassoonNotes}, in the
-file @file{bassoon-music.ly}:
-@example
-\include "bassoon-music.lyinc"
-\include "horn-music.lyinc"
-
-\score @{
-  \simultaneous @{
-    \new Staff \hornNotes
-    \new Staff \bassoonNotes
-  @} @}
-@end example
-
-This would lead to the simple score depicted below:
-
-@lilypond[raggedright]
-\score {
-  \notes \relative c \simultaneous {
-    \new Staff { \time 2/4
-        R2*3
-    r4 f8 a cis4 f e d }
-    \new Staff { \clef bass
-      r4 d,8 f | gis4 c |  b bes |
-      a8 e f4 |  g d | gis f }
-  } }
-@end lilypond 
-
-More in-depth information on preparing parts and scores is in the
-notation manual, in @ref{Orchestral music}.
-
-
-@node Integrating text and music
-@section Integrating text and music
-
-@cindex La@TeX{}, music in
-@cindex HTML, music in
-@cindex Texinfo, music in
-
-Sometimes you might want to use music examples in a text that you are
-writing (for example, a musicological treatise, a songbook, or (like us)
-the LilyPond manual).  You can make such texts by hand, simply by
-importing a PostScript figure into your word processor.  However,
-there is an automated procedure to reduce the amount of work.
-
-If you use HTML, La@TeX{}, or Texinfo, you can mix text and LilyPond
-code.  A script called @code{lilypond-book} will extract the music
-fragments, run LilyPond on them, and put back the resulting notation.
-This program is fully described in @ref{lilypond-book manual}.  Here
-we show a small example;  since the example contains also explanatory
-text, we will not comment it further:
-
-@example
-\documentclass[a4paper]@{article@}
-\begin@{document@}
-
-In a lilypond-book document, you can freely mix music and text. For
-example:
-\begin@{lilypond@}
-  \score @{ \notes \relative c' @{
-     c2 g'2 \times 2/3 @{ f8 e d @} c'2 g4
-  @} @}
-\end@{lilypond@}
-
-If you have no \verb+\score+ block in the fragment,
-\texttt@{lilypond-book@} will supply one:
-
-\begin@{lilypond@}
-  c'4
-\end@{lilypond@}
-
-In the example you see here, two things happened: a
-\verb+\score+ block was added, and the line width was set to natural
-length. You can specify  options by putting them in brackets:
-
-\begin[staffsize=26,verbatim]@{lilypond@}
-  c'4 f16
-\end@{lilypond@}
-
-If you want to include large examples into the text, it is more
-convenient to put it in a separate file:
-
-\lilypondfile@{screech-boink.ly@}
-
-\end@{document@}
-@end example
-
-Under Unix, you can view the results as follows:
-@example
-$ cd input/tutorial
-$ mkdir -p out/
-$ lilypond-book --output=out/ lilybook.tex
-lilypond-book (GNU LilyPond) 2.1.19
-Reading `input/tutorial/lilybook.tex'
-Reading `input/screech-boink6.ly'
-@var{lots of stuff deleted}
-Writing `out/lilybook.latex'
-$ cd out
-$ latex lilybook.latex
-@var{lots of stuff deleted}
-$ xdvi lilybook 
-@end example
-
-To convert the file into a nice PDF document, run the following
-commands:
-@example
-$ dvips -Ppdf -u +lilypond lilybook
-$ ps2pdf lilybook.ps
-@end example
-
-
-Running lilypond-book and running latex creates a lot of temporary
-files, and you would not want those to clutter up your working
-directory.  The @code{outdir} option to lilypond-book creates the
-temporary files in a separate subdirectory @file{out}.
-
-The result looks more or less like this: 
-
-@separate
-
-In a lilypond-book document, you can freely mix music and text. For
-example:
-@lilypond
-\score {
-  \notes \relative c' {
-    c2 g'2 \times 2/3 { f8 e d } c'2 g4
-  }
-  \paper {
-    raggedright = ##t
-  }
-}
-@end lilypond
-
-If you have no @code{\score} block in the fragment,
-@code{lilypond-book} will supply one:
-
-@lilypond
-  c'4
-@end lilypond
-
-In the example you see here, two things happened: a
-@code{score} block was added, and the line width was set to natural
-length.  You can specify options by putting them in brackets:
-
-@lilypond[staffsize=26,verbatim]
-  c'4 f16
-@end lilypond
-
-If you want to include large examples into the text, it is more
-convenient to put it in a separate file:
-
-@lilypondfile{screech-boink.ly}
diff --git a/GNUmakefile.in b/GNUmakefile.in
deleted file mode 100644
index 5c7e563e3b..0000000000
--- a/GNUmakefile.in
+++ /dev/null
@@ -1,149 +0,0 @@
-# -*-Makefile-*-
-# title	   specific top level makefile for LilyPond  
-
-# subdir level:
-#
-depth = .
-#
-
-# descent order into subdirectories
-# 
-SUBDIRS = buildscripts python scripts \
-	elisp \
-	flower lily \
-	mf ly tex ps scm \
-	po make \
-	cygwin debian stepmake \
-	Documentation input
-#
-
-SCRIPTS = configure aclocal.m4 autogen.sh lexer-gcc-3.1.sh
-README_FILES = ChangeLog  COPYING DEDICATION ROADMAP THANKS TODO
-README_TXT_FILES = AUTHORS.txt README.txt INSTALL.txt NEWS.txt
-IN_FILES := $(wildcard *.in)
-PATCH_FILES = emacsclient.patch server.el.patch darwin.patch
-VIM_FILES = vimrc lilypond.vim
-EXTRA_DIST_FILES = VERSION .cvsignore $(README_FILES) $(SCRIPTS) $(IN_FILES) \
-  $(PATCH_FILES) $(VIM_FILES)
-NON_ESSENTIAL_DIST_FILES = $(README_TXT_FILES)
-INSTALLATION_DIR=$(local_lilypond_datadir)
-INSTALLATION_FILES=$(config_make) VERSION
-
-# bootstrap stepmake:
-#
-STEPMAKE_TEMPLATES=toplevel po install
-include $(depth)/make/stepmake.make 
-
-doc: 
-	$(MAKE) -C Documentation
-
-install-WWW:
-	-$(INSTALL) -m 755 -d $(webdir) 
-	tar -C $(webdir)/ -xzf $(outdir)/web.tar.gz
-
-web-install:
-	$(MAKE) out=www install-WWW
-
-local-install:
-	$(INSTALL) -d $(local_lilypond_datadir)
-
-final-install:
-	@echo
-	@echo " *** Before running, buildscripts/out/lilypond-{profile,login}"
-	@echo " *** must be run. You're advised to source these scripts from your "
-	@echo " *** login scripts. For more information, see Invoking LilyPond in the manual."
-	@echo 
-
-web-ext = gz html midi pdf png txt ly
-
-footify = MAILADDRESS=bug-lilypond@gnu.org  $(PYTHON) $(step-bindir)/add-html-footer.py  --name $(PACKAGE_NAME) --version $(TOPLEVEL_VERSION)
-
-bla:
-	cd $(builddir) && $(footify) `$(FIND) . -name '*.html' -print`
-
-local-WWW-post:  
-	$(PYTHON) $(buildscript-dir)/mutopia-index.py -o $(builddir)/examples.html ./
-	cd $(builddir) && $(footify) `$(FIND) . -name '*.html' -print`
-	cd $(builddir) && rm -f `find . -name \*.html~ -print`
-	cd $(builddir) && find Documentation input \
-		$(web-ext:%=-path '*/out-www/*.%' -or) -false \
-		> $(outdir)/weblist
-	echo '<META HTTP-EQUIV="refresh" content="0;URL=Documentation/out-www/index.html">' > $(builddir)/index.html
-	echo '<html><body>Redirecting to the documentation index...</body></html>' >> $(builddir)/index.html
-	cd $(builddir) && ls *.html >> $(outdir)/weblist
-	cat $(outdir)/weblist | (cd $(builddir); GZIP=-9v tar -czf $(outdir)/web.tar.gz  -T -)
-
-
-src-ext = c cc yy ll hh icc py scm tex ps texi itexi tely itely sh
-
-# FIXME: rename to TAGS; should include deeper TAGS files, see guile-core
-ALL-TAGS:
-	etags $(shell find . $(src-ext:%=-name '*.%' -or) -false \
-		| grep -v '/out')
-
-web-clean:
-	$(MAKE) out=www clean
-	$(MAKE) $(builddir)/share/lilypond-force
-
-default: $(config_h) builddir-setup 
-
-builddir-setup: $(builddir)/share/lilypond-force
-
-PO_FILES = $(wildcard $(srcdir)/po/*.po)
-HELP_CATALOGS = $(PO_FILES:$(srcdir)/po/%.po=%)
-CATALOGS = $(HELP_CATALOGS:lilypond=) 
-
-$(builddir)/share/lilypond-force:
-# Preparing LilyPond tree for builddir exec
-	cd $(builddir) && rm -rf lib share
-	mkdir -p $(builddir)/lib/lilypond
-	mkdir -p $(builddir)/share/lilypond
-	mkdir -p $(builddir)/share/lilypond/elisp
-	mkdir -p $(builddir)/share/lilypond/fonts
-	mkdir -p $(builddir)/share/lilypond/tex
-	cd $(builddir)/lib/lilypond && \
-		ln -s  ../../python/$(outconfbase) python
-	cd $(builddir)/share/lilypond && \
-		ln -s $(abs-srcdir)/ly ly && \
-		ln -s ../../mf/$(outconfbase) dvips && \
-		ln -s ../../mf/$(outconfbase) afm && \
-		ln -s ../../mf/$(outconfbase) tfm && \
-		ln -s $(abs-srcdir)/mf && \
-		ln -s $(abs-srcdir)/ps && \
-		ln -s ../../python/$(outconfbase) python && \
-		ln -s $(abs-srcdir)/scm
-	cd $(builddir)/share/lilypond/tex && \
-		ln -s $(abs-srcdir)/tex source && \
-		ln -s ../../../mf/$(outconfbase) generate
-	cd $(builddir)/share/lilypond/fonts && \
-		ln -s $(abs-srcdir)/mf source && \
-		ln -s ../../../mf/$(outconfbase) afm && \
-		ln -s ../../../mf/$(outconfbase) tfm && \
-		ln -s ../../../mf/$(outconfbase) type1
-	cd $(builddir)/share/lilypond/elisp && \
-		ln -sf ../../../elisp/$(outconfbase)/lilypond.words.el . && \
-		ln -s $(abs-srcdir)/elisp/*.el .
-	$(foreach i,$(CATALOGS), \
-		mkdir -p $(builddir)/share/locale/$i/LC_MESSAGES && \
-		cd $(builddir)/share/locale/$i/LC_MESSAGES && \
-		ln -fs ../../../../po/$(outconfbase)/$i.mo lilypond.mo &&) true
-	touch $@
-
-local-clean: builddir-setup-clean
-builddir-setup-clean:
-	cd $(builddir) && rm -rf share
-
-$(config_h): config.hh.in 
-#
-# this is to prevent people from getting
-# undefined symbols  when we add them to config.h.in,
-# and they blindly run "cvs update; make".
-#
-	@echo
-	@echo ' *** $(config_h) is out of date'
-	@echo ' *** Remove it and rerun autogen:'
-	@echo '         rm $(config_h); ./autogen.sh'
-	@echo
-	@false
-
-
diff --git a/ROADMAP b/ROADMAP
deleted file mode 100644
index 3ef99035a4..0000000000
--- a/ROADMAP
+++ /dev/null
@@ -1,47 +0,0 @@
-Prebuilt Documentation and packages are available from:
-
-    http://lilypond.org
-
-LilyPond development is hosted at:
-
-    http://savannah.gnu.org/projects/lilypond
-
-Here is a simple explanation of the directory layout for LilyPond's
-source files.
-
-   .			Toplevel READMEs, ChangeLog, build bootstrapping,
-			patches for third party programs
-   Documentation/
-       bibliography/	.bib files with references to books and articles
-       misc		Old announcements, ChangeLogs and NEWS
-       pictures/	The logo
-       topdocs/		Sources for the toplevel READMEs
-		  	(README.txt, INSTALL.txt, NEWS.txt etc.)
-       user/		User manuals
-   buildscripts/	Scripts for the build process
-   cygwin/		Cygwin (Windows) package support
-   debian/		Debian package support
-   elisp/		Emacs LilyPond mode and syntax coloring
-   flower/		A simple c++ library
-       include/
-   input/		Music input examples
-       bugs/		Buggy or problematic notation
-       mutopia/		Real music, more at www.mutopiaproject.org
-       no-notation/	Examples or bugs that do not produce output
-       regression/	Testing of [all] features, one test per file
-       templates/	Boilerplates for typical music layouts
-       test/		Tips and tricks
-       tutorial/	Examples from the tutorial 
-   lily/		C++ sources for LilyPond (lilypond-bin)
-     include/
-   ly/			System music include files
-   make/		Specific make subroutines and packaging for
-			Red Hat-like distributions (.spec files)
-   mf/			MetaFont sources for the feta font
-   po/			Translations
-   ps/			PostScript library files
-   python/		Python modules, MIDI module
-   scm/			Scheme sources for LilyPond and subroutine files
-   scripts/		End-user scripts
-   stepmake/		Generic make subroutine files
-   tex/			TeX library files
diff --git a/THANKS b/THANKS
deleted file mode 100644
index d52980667e..0000000000
--- a/THANKS
+++ /dev/null
@@ -1,106 +0,0 @@
-Release 2.1
-***********
-
-BUG HUNTERS/SUGGESTIONS
-
-Matthias Kilian
-Eric Wurbel
-John Williams
-José Luis Cruz
-Reuben Thomas
-Thomas Willhalm
-Werner Lemberg
-Nicolas Sceaux 
-Nick Busigin
-Matthias Kilian
-Erik Sandberg
-
-Release 2.0
-***********
-
-HEAD HACKERS
-
-Han-Wen Nienhuys
-Jan Nieuwenhuizen
-
-CONTRIBUTORS
-
-Mats Bengtsson
-Heikki Junes
-Juergen Reuter
-
-BUG HUNTERS/SUGGESTIONS
-
-Antonio Palama
-Benjamin Milde
-Daniel Berjon Diez
-David Bobroff
-David Rayleigh Arnold
-Erik Ronstroem
-Fabio dos Santos
-Fodor Bertalan 
-Frederic Bron
-Graham Parcival
-Ian Bailey-Mortimer
-John Williams
-Josza Marton
-Marco Caliari
-Matthieu Amiguet
-Michael Welsh Duggan
-Patrick Atamaniuk
-Paul Scott
-Pedro Kroeger
-Peter Lutek
-Richard Schoeller
-Thorkil Wolvendans
-Werner Trobin 
-
-
-Release 1.8
-***********
-
-HEAD HACKERS
-
-Han-Wen Nienhuys
-Jan Nieuwenhuizen
-
-CONTRIBUTORS
-
-Graham Percival
-Heikki Junes
-Juergen Reuter
-Kim Shrier
-Rune Zedeler
-Werner Lemberg
-
-
-BUG HUNTERS
-
-Amelie Zapf
-Andrew Schaaf
-Atte Andre Jensen
-Bob Harrington
-Chris Jackson
-Chris Sawer
-David Bobroff
-Erik Sandberg
-Fernando Pablo Lopez-Lezcano
-Hans Kieserman
-Jeremie Lumbroso
-John Potelle
-John Williams
-Karl Berry
-Karl-Johan Karlsson 
-Klaus Zimmermann
-Koblinger Egmont
-Paul Scott
-Pedro Kroger
-Richard Shann
-Roland Stigge
-Ryan O'Neil
-Simon Bailey
-Simon Weatherill
-Stanislav Brabec
-Thomas Rijniers
-Werner Lemberg
-Yotam Medini
diff --git a/TODO b/TODO
deleted file mode 100644
index af6c6de53f..0000000000
--- a/TODO
+++ /dev/null
@@ -1,171 +0,0 @@
-
-This file is our personal scrapbook, listing what we want to do in the
-nearby future
-
-
-* Website
-
-** mission.html
-
-** benchmark Schubert
-
-
-* Bugs
-
-** pc-solo.ly
-
-** staff-padding / padding.
-
-* Code
-
-** \set / \override syntax
-
-* Documentation
-
-** split refman
-
-** Prune internals documentation.
-
-** Move Markup doc to docstrings.
-
-** Sift examples, move into main doc. 
-
-
-* Release 2.2/3.0
-
-** upload
-
-** binaries
-
-** announce
-
-  News:
-  
-  Mail:
-  
-  Web:
-  
-** translation project.
-
-** mutopia submissions
-
-
-* Book
-
-** Status and planning
-
-[L] The book still needs a lot of work, but it is not insurmountable.
-The pieces are there; they need to be re-ordered and integrated
-better.
-
-[L] There are still some rough patches - whole pages - that still need
-real work.  The general polished sections still have a large number of
-English errors.  Some errors collected together; whole sentences need
-to be completely rewritten.
-
-[L] This will take an active partnership between the editing staff and
-one or more authors.  It will take 2 months or more of a lot of time
-(~15hrs a week) on the part of the LilyPond maintainers, and then
-another couple of months of occasional follow-up emails as we do the
-fine-tooth comb English edits and get it ready for press.
-
-
-** Manual structure, fitting pieces together
-
-*** [L] SKIP: Regression Tests for Developers -- input/regression
-
-*** Templates -- input/templates/out-www/collated-files.tely
-[L] Appendix to the printed manual.
-
-*** Glossary -- Documentation/user/music-glossary.tely
-[L] Appendix to the printed manual.
-
-Get authors and license.
-
-*** Examples  -- input/examples 
-
-[L] These (or some of these) need to be integrated into the book.  To
-save space, each example should show just one page of music.
-
-[L] The best way is to add an illustrative example as it's own sub-section
-within the tutorial, after a section discussing a certain technique,
-music issue, or typesetting problem.  For instance, after a discussion
-of how to do multi-voice notation, put a half page or one page choral
-piece.
-
-[L] I think this extra time is well worth it.  It will add a *lot* of
-value to the book relative to the amount of work being done.  (A much
-better value/time ratio than the countless necesary-evil hours we
-spend doing "fine-tooth comb" English editing.)
-
-[L] Before you spend any time on it, you should post a request to your
-mailing list.
-
-
-*** Compile  -- Documentation/topdocs/INSTALL.texi
-
-[L] Normally, all our technical manuals include a section on How to
-Install.  Too terse and UNIX (problems) only.
-
-UNDECIDED: Possibly get info from newweb/site/download/,
-
-*** Program Reference  -- Documentation/user/out-www/lilypond-internals
-
-[L] Big problem.
-
-[L] I leave it up to you to decide which cross
-references really must be included and then add the information to the
-main text.  Any reference to internal commands that aren't included in
-the main text should be cut from the printed version.  We can make a
-note in the book that says "for complete information on every single
-internal command, see http://www....."
-
-Either add to manual in condensed form (we'll try that first), or
-remove all x-references.
-
-*** Tips and Tricks -- input/test/out-www/collated-files.tely
-
-[L] I worry that important updates and helpful advice are lost in
-here, instead of integrated into the manuscript.
-
-[L] It sounds like a lot of the material is already completed.  Can you
-convert the Templates file into a Texinfo-formatted appendix?
-
-Ask users.
-
-
-*** SKIP: why switch?  -- newweb/site/switch/advantages.html
-*** SKIP: feature list -- newweb/site/about/features.html
-
-[L] Useful source material for me when writing back-cover text, a sales
-sheet or ad, but not needing integration into the manual itself.
-
-*** SKIP: crash course -- newweb/site/switch/howto.html
-
-[L] Some part of this might be useful as back-cover text, to help quickly
-explain things while someone is standing in a bookstore, thinking
-about it.  However, it does not need to be integrated into the
-manual.
-
-*** SKIP: faq -- newweb/site/about/faq.html
-
-*** SKIP: essay -- newweb/site/about/automated-engraving/
-
-[L] The majority of the info in this essay has already been added to
-the manual.
-
-** Issues
-
-*** INSTALL.texi -- CD
-
-[L] After reading your notes about the compilation problems, I am even
-more committed to doing it as a book&CD.
-
-UNDECIDED: [L] I am not going to bother creating a ready-to-run live-CD.
-
-*** Graphical interfaces
-
-    	* NoteEdit
-    	* RoseGarden 
-        [* Denemo]
-	
diff --git a/VERSION b/VERSION
deleted file mode 100644
index 10726fa34f..0000000000
--- a/VERSION
+++ /dev/null
@@ -1,6 +0,0 @@
-PACKAGE_NAME=LilyPond
-MAJOR_VERSION=2
-MINOR_VERSION=1
-PATCH_LEVEL=21
-MY_PATCH_LEVEL=
-
diff --git a/autogen.sh b/autogen.sh
deleted file mode 100755
index bc99b2d1af..0000000000
--- a/autogen.sh
+++ /dev/null
@@ -1,62 +0,0 @@
-#!/bin/sh
-# Run this to generate configure and initial GNUmakefiles
-
-srcdir=`dirname $0`
-
-
-if [ ! -f aclocal.m4 -o stepmake/aclocal.m4 -nt aclocal.m4 ]; then
-    echo "stepmake/aclocal.m4 is newer. Copying file." 
-    cp -f stepmake/aclocal.m4 aclocal.m4
-fi
-
-if [ ! -f autogen.sh -o stepmake/autogen.sh -nt autogen.sh ]; then
-    echo "stepmake/autogen.sh is newer. Copying file." 
-    cp -f stepmake/autogen.sh autogen.sh
-    exec ./autogen.sh
-fi
-
-# Be paranoid: check for autoconf >= 2.50
-# Some setups have both autoconf 2.13 and 2.5x available through
-# a wrapper script: /usr/bin/autoconf.
-# This wrapper may incorrectly autoselect autoconf 2.50, but it
-# advertises itself as autoconf 2.13.
-# If you have such a setup, invoke this script as:
-#   autoconf=autoconf2.50 ./autogen.sh
-for i in autoconf2.50 autoconf-2.50 autoconf  false; do
-  version=`$i --version 2>/dev/null | head -n 1 | awk '{print $NF}' | awk -F. '{print $1 * 100 + $2}'`
-  if test "0$version" -ge 250; then
-    autoconf=$i
-    break
-  fi
-done
-
-if test -z "$autoconf"; then
-    echo "ERROR: Please install autoconf 2.50 or newer"
-    exit 1
-fi
-
-if test -z "$*"; then
-  echo "WARNING: I am going to run \`configure' with no arguments."
-  echo "If you wish to pass any to it, please specify them on the"
-  echo \`$0\'" command line."
-  echo
-fi
-
-for coin in $srcdir/configure.in #`find $srcdir -name configure.in -print`
-do 
-  dr=`dirname $coin`
-  echo processing $dr
-  (
-      cd $dr
-      echo "Running autoconf ..."
-      $autoconf
-  )
-done
-
-#conf_flags="--enable-maintainer-mode --enable-compile-warnings" #--enable-iso-c
-if test -z "$NOCONFIGURE"; then
-  echo Running $srcdir/configure $conf_flags "$@" ...
-  $srcdir/configure $conf_flags "$@"
-else
-  echo Skipping configure process.
-fi
diff --git a/buildscripts/GNUmakefile b/buildscripts/GNUmakefile
deleted file mode 100644
index aff844b167..0000000000
--- a/buildscripts/GNUmakefile
+++ /dev/null
@@ -1,14 +0,0 @@
-depth = ..
-
-STEPMAKE_TEMPLATES=script install po
-
-include $(depth)/make/stepmake.make 
-
-# Should we install these? This should be handled by sysadmin or
-# packager but if she forgets...
-#INSTALLATION_OUT_SUFFIXES=1
-#INSTALLATION_OUT_DIR1=$(local_lilypond_datadir)/scripts
-#INSTALLATION_OUT_FILES1=$(outdir)/lilypond-login $(outdir)/lilypond-profile
-
-all: $(INSTALLATION_FILES)
-
diff --git a/buildscripts/bib2html.py b/buildscripts/bib2html.py
deleted file mode 100644
index 37bc4694fd..0000000000
--- a/buildscripts/bib2html.py
+++ /dev/null
@@ -1,86 +0,0 @@
-#!@PYTHON@
-import os
-import sys
-import getopt
-import tempfile
-import string
-
-# usage:
-def usage ():
-    print 'usage: %s [-s style] [-o <outfile>] BIBFILES...';
-
-
-
-(options, files) = getopt.getopt(sys.argv[1:], 's:o:', [])
-
-output = 'bib.html'
-style = 'long'
-for (o,a) in options:
-	if o == '-h' or o == '--help':
-		usage ()
-		sys.exit (0)
-	elif o == '-s' or o == '--style':
-		style = a
-	elif o == '-o' or o == '--output':
-		output = a
-	else:
-		raise 'unknown opt ', o
-
-
-if style not in ['alpha','index','long','longp','long-pario','short','short-pario','split']:
-    sys.stderr.write ("Unknown style \`%s'\n" % style)
-
-tempfile = tempfile.mktemp ('bib2html')
-
-if not files:
-    usage ()
-    sys.exit (2)
-
-
-def strip_extension (f, ext):
-	(p, e) = os.path.splitext (f)
-	if e == ext:
-		e = ''
-	return p + e
-
-nf = []
-for f in files:
-    nf.append (strip_extension(f, '.bib'))
-
-files = string.join (nf,',')
-
-open(tempfile + '.aux', 'w').write (r'''
-\relax 
-\citation{*}
-\bibstyle{html-%(style)s}
-\bibdata{%(files)s}''' % vars ()) 
-
-cmd = "bibtex %s" % tempfile;
-
-sys.stdout.write ("Invoking `%s'\n" % cmd)
-os.system (cmd) 
-
-
-#TODO: do tex -> html on output 
-
-bbl =open (tempfile + '.bbl').read ()
-
-open (output, 'w').write  (bbl)
-
-
-def cleanup (tempfile):
-    for a in ['aux','bbl', 'blg']:
-	os.unlink (tempfile + '.' + a)
-
-cleanup(tempfile)
-
-
-
-
-
-
-
-
-
-
-
diff --git a/buildscripts/clean-fonts.sh b/buildscripts/clean-fonts.sh
deleted file mode 100644
index 0dc0ff2684..0000000000
--- a/buildscripts/clean-fonts.sh
+++ /dev/null
@@ -1,42 +0,0 @@
-#!@SHELL@
-# use kpsewhich?
-# maybe (optionally) (not) clean stuff from other versions, ie, don't clean
-#     /var/spool/texmf/tfm/lilypond/<NOT-OUR-VERSION>/
-# ?
-
-VERSION="@TOPLEVEL_VERSION@"
-
-case  $# in
-0) 
-    WHAT="" ;;
-1)
-    WHAT=$1;;
-esac
-
-dirs=".
-/var/lib/texmf
-/var/spool/texmf
-/var/tmp/texfonts
-/var/texfonts
-/var/cache/fonts
-/usr/share/texmf/fonts
-"
-
-for i in $dirs; do
-	if [ -d "$i" ]; then
-		TEXDIRS="$TEXDIRS $i"
-	fi
-done
-
-if [ -z "$TEXDIRS" -o "$TEXDIRS" = "." ]; then
-    TEXDIRS=". /var"
-fi
-
-# remove possibly stale .pk/.tfm files 
-FILES=$(find $TEXDIRS -name "feta*$WHAT*tfm" \
-  -or -name "feta*$WHAT*pk" \
-  -or -name "parmesan$WHAT*tfm" \
-  -or -name "parmesan*$WHAT*pk")
-
-echo removing $FILES
-rm  -f $FILES /tmp/cleaning-font-dummy
diff --git a/buildscripts/help2man.pl b/buildscripts/help2man.pl
deleted file mode 100644
index 9cb09c4859..0000000000
--- a/buildscripts/help2man.pl
+++ /dev/null
@@ -1,559 +0,0 @@
-#!@PERL@ -w
-
-# Generate a short man page from --help and --version output.
-# Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002 Free Software
-# Foundation, Inc.
-
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2, or (at your option)
-# any later version.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software Foundation,
-# Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-
-# Written by Brendan O'Dea <bod@debian.org>
-# Available from ftp://ftp.gnu.org/gnu/help2man/
-
-use 5.005;
-use strict;
-use Getopt::Long;
-use Text::Tabs qw(expand);
-use POSIX qw(strftime setlocale LC_TIME);
-
-my $this_program = 'help2man';
-my $this_version = '1.28';
-my $version_info = <<EOT;
-GNU $this_program $this_version
-
-Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002 Free Software Foundation, Inc.
-This is free software; see the source for copying conditions.  There is NO
-warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
-
-Written by Brendan O'Dea <bod\@debian.org>
-EOT
-
-my $help_info = <<EOT;
-`$this_program' generates a man page out of `--help' and `--version' output.
-
-Usage: $this_program [OPTIONS]... EXECUTABLE
-
- -n, --name=STRING       description for the NAME paragraph
- -s, --section=SECTION   section number for manual page (1, 6, 8)
- -m, --manual=TEXT       name of manual (User Commands, ...)
- -S, --source=TEXT       source of program (FSF, Debian, ...)
- -i, --include=FILE      include material from `FILE'
- -I, --opt-include=FILE  include material from `FILE' if it exists
- -o, --output=FILE       send output to `FILE'
- -p, --info-page=TEXT    name of Texinfo manual
- -N, --no-info           suppress pointer to Texinfo manual
-     --help              print this help, then exit
-     --version           print version number, then exit
-
-EXECUTABLE should accept `--help' and `--version' options although
-alternatives may be specified using:
-
- -h, --help-option=STRING     help option string
- -v, --version-option=STRING  version option string
-
-Report bugs to <bug-help2man\@gnu.org>.
-EOT
-
-my $section = 1;
-my $manual = '';
-my $source = '';
-my $help_option = '--help';
-my $version_option = '--version';
-my ($opt_name, @opt_include, $opt_output, $opt_info, $opt_no_info);
-
-my %opt_def = (
-    'n|name=s'		 => \$opt_name,
-    's|section=s'	 => \$section,
-    'm|manual=s'	 => \$manual,
-    'S|source=s'	 => \$source,
-    'i|include=s'	 => sub { push @opt_include, [ pop, 1 ] },
-    'I|opt-include=s'	 => sub { push @opt_include, [ pop, 0 ] },
-    'o|output=s'	 => \$opt_output,
-    'p|info-page=s'	 => \$opt_info,
-    'N|no-info'		 => \$opt_no_info,
-    'h|help-option=s'	 => \$help_option,
-    'v|version-option=s' => \$version_option,
-);
-
-# Parse options.
-Getopt::Long::config('bundling');
-GetOptions (%opt_def,
-    help    => sub { print $help_info; exit },
-    version => sub { print $version_info; exit },
-) or die $help_info;
-
-die $help_info unless @ARGV == 1;
-
-my %include = ();
-my %append = ();
-my @include = (); # retain order given in include file
-
-# Process include file (if given).  Format is:
-#
-#   [section name]
-#   verbatim text
-#
-# or
-#
-#   /pattern/
-#   verbatim text
-#
-
-while (@opt_include)
-{
-    my ($inc, $required) = @{shift @opt_include};
-
-    next unless -f $inc or $required;
-    die "$this_program: can't open `$inc' ($!)\n"
-	unless open INC, $inc;
-
-    my $key;
-    my $hash = \%include;
-
-    while (<INC>)
-    {
-	# [section]
-	if (/^\[([^]]+)\]/)
-	{
-	    $key = uc $1;
-	    $key =~ s/^\s+//;
-	    $key =~ s/\s+$//;
-	    $hash = \%include;
-	    push @include, $key unless $include{$key};
-	    next;
-	}
-
-	# /pattern/
-	if (m!^/(.*)/([ims]*)!)
-	{
-	    my $pat = $2 ? "(?$2)$1" : $1;
-
-	    # Check pattern.
-	    eval { $key = qr($pat) };
-	    if ($@)
-	    {
-		$@ =~ s/ at .*? line \d.*//;
-		die "$inc:$.:$@";
-	    }
-
-	    $hash = \%append;
-	    next;
-	}
-
-	# Check for options before the first section--anything else is
-	# silently ignored, allowing the first for comments and
-	# revision info.
-	unless ($key)
-	{
-	    # handle options
-	    if (/^-/)
-	    {
-		local @ARGV = split;
-		GetOptions %opt_def;
-	    }
-
-	    next;
-	}
-
-	$hash->{$key} ||= '';
-	$hash->{$key} .= $_;
-    }
-
-    close INC;
-
-    die "$this_program: no valid information found in `$inc'\n"
-	unless $key;
-}
-
-# Compress trailing blank lines.
-for my $hash (\(%include, %append))
-{
-    for (keys %$hash) { $hash->{$_} =~ s/\n+$/\n/ }
-}
-
-# Turn off localisation of executable's output.
-@ENV{qw(LANGUAGE LANG LC_ALL)} = ('C') x 3;
-
-# Turn off localisation of date (for strftime).
-setlocale LC_TIME, 'C';
-
-# Grab help and version info from executable.
-my ($help_text, $version_text) = map {
-    join '', map { s/ +$//; expand $_ } `$ARGV[0] $_ 2>/dev/null`
-	or die "$this_program: can't get `$_' info from $ARGV[0]\n"
-} $help_option, $version_option;
-
-my $date = strftime "%B %Y", localtime;
-(my $program = $ARGV[0]) =~ s!.*/!!;
-my $package = $program;
-my $version;
-
-if ($opt_output)
-{
-    unlink $opt_output
-	or die "$this_program: can't unlink $opt_output ($!)\n"
-	if -e $opt_output;
-
-    open STDOUT, ">$opt_output"
-	or die "$this_program: can't create $opt_output ($!)\n";
-}
-
-# The first line of the --version information is assumed to be in one
-# of the following formats:
-#
-#   <version>
-#   <program> <version>
-#   {GNU,Free} <program> <version>
-#   <program> ({GNU,Free} <package>) <version>
-#   <program> - {GNU,Free} <package> <version>
-#
-# and seperated from any copyright/author details by a blank line.
-
-($_, $version_text) = split /\n+/, $version_text, 2;
-
-if (/^(\S+) +\(((?:GNU|Free) +[^)]+)\) +(.*)/ or
-    /^(\S+) +- *((?:GNU|Free) +\S+) +(.*)/)
-{
-    $program = $1;
-    $package = $2;
-    $version = $3;
-}
-elsif (/^((?:GNU|Free) +)?(\S+) +(.*)/)
-{
-    $program = $2;
-    $package = $1 ? "$1$2" : $2;
-    $version = $3;
-}
-else
-{
-    $version = $_;
-}
-
-$program =~ s!.*/!!;
-
-# No info for `info' itself.
-$opt_no_info = 1 if $program eq 'info';
-
-# --name overrides --include contents.
-$include{NAME} = "$program \\- $opt_name\n" if $opt_name;
-
-# Default (useless) NAME paragraph.
-$include{NAME} ||= "$program \\- manual page for $program $version\n";
-
-# Man pages traditionally have the page title in caps.
-my $PROGRAM = uc $program;
-
-# Set default page head/footers
-$source ||= "$program $version";
-unless ($manual)
-{
-    for ($section)
-    {
-	if (/^(1[Mm]|8)/) { $manual = 'System Administration Utilities' }
-	elsif (/^6/)	  { $manual = 'Games' }
-	else		  { $manual = 'User Commands' }
-    }
-}
-
-# Extract usage clause(s) [if any] for SYNOPSIS.
-if ($help_text =~ s/^Usage:( +(\S+))(.*)((?:\n(?: {6}\1| *or: +\S).*)*)//m)
-{
-    my @syn = $2 . $3;
-
-    if ($_ = $4)
-    {
-	s/^\n//;
-	for (split /\n/) { s/^ *(or: +)?//; push @syn, $_ }
-    }
-
-    my $synopsis = '';
-    for (@syn)
-    {
-	$synopsis .= ".br\n" if $synopsis;
-	s!^\S*/!!;
-	s/^(\S+) *//;
-	$synopsis .= ".B $1\n";
-	s/\s+$//;
-	s/(([][]|\.\.+)+)/\\fR$1\\fI/g;
-	s/^/\\fI/ unless s/^\\fR//;
-	$_ .= '\fR';
-	s/(\\fI)( *)/$2$1/g;
-	s/\\fI\\fR//g;
-	s/^\\fR//;
-	s/\\fI$//;
-	s/^\./\\&./;
-
-	$synopsis .= "$_\n";
-    }
-
-    $include{SYNOPSIS} ||= $synopsis;
-}
-
-# Process text, initial section is DESCRIPTION.
-my $sect = 'DESCRIPTION';
-$_ = "$help_text\n\n$version_text";
-
-# Normalise paragraph breaks.
-s/^\n+//;
-s/\n*$/\n/;
-s/\n\n+/\n\n/g;
-
-# Temporarily exchange leading dots, apostrophes and backslashes for
-# tokens.
-s/^\./\x80/mg;
-s/^'/\x81/mg;
-s/\\/\x82/g;
-
-# Start a new paragraph (if required) for these.
-s/([^\n])\n(Report +bugs|Email +bug +reports +to|Written +by)/$1\n\n$2/g;
-
-sub convert_option;
-
-while (length)
-{
-    # Convert some standard paragraph names.
-    if (s/^(Options|Examples): *\n//)
-    {
-	$sect = uc $1;
-	next;
-    }
-
-    # Copyright section
-    if (/^Copyright +[(\xa9]/)
-    {
-	$sect = 'COPYRIGHT';
-	$include{$sect} ||= '';
-	$include{$sect} .= ".PP\n" if $include{$sect};
-
-	my $copy;
-	($copy, $_) = split /\n\n/, $_, 2;
-
-	for ($copy)
-	{
-	    # Add back newline
-	    s/\n*$/\n/;
-
-	    # Convert iso9959-1 copyright symbol or (c) to nroff
-	    # character.
-	    s/^Copyright +(?:\xa9|\([Cc]\))/Copyright \\(co/mg;
-
-	    # Insert line breaks before additional copyright messages
-	    # and the disclaimer.
-	    s/(.)\n(Copyright |This +is +free +software)/$1\n.br\n$2/g;
-
-	    # Join hyphenated lines.
-	    s/([A-Za-z])-\n */$1/g;
-	}
-
-	$include{$sect} .= $copy;
-	$_ ||= '';
-	next;
-    }
-
-    # Catch bug report text.
-    if (/^(Report +bugs|Email +bug +reports +to) /)
-    {
-	$sect = 'REPORTING BUGS';
-    }
-
-    # Author section.
-    elsif (/^Written +by/)
-    {
-	$sect = 'AUTHOR';
-    }
-
-    # Examples, indicated by an indented leading $, % or > are
-    # rendered in a constant width font.
-    if (/^( +)([\$\%>] )\S/)
-    {
-	my $indent = $1;
-	my $prefix = $2;
-	my $break = '.IP';
-	$include{$sect} ||= '';
-	while (s/^$indent\Q$prefix\E(\S.*)\n*//)
-	{
-	    $include{$sect} .= "$break\n\\f(CW$prefix$1\\fR\n";
-	    $break = '.br';
-	}
-
-	next;
-    }
-
-    my $matched = '';
-    $include{$sect} ||= '';
-
-    # Sub-sections have a trailing colon and the second line indented.
-    if (s/^(\S.*:) *\n / /)
-    {
-	$matched .= $& if %append;
-	$include{$sect} .= qq(.SS "$1"\n);
-    }
-
-    my $indent = 0;
-    my $content = '';
-
-    # Option with description.
-    if (s/^( {1,10}([+-]\S.*?))(?:(  +(?!-))|\n( {20,}))(\S.*)\n//)
-    {
-	$matched .= $& if %append;
-	$indent = length ($4 || "$1$3");
-	$content = ".TP\n\x83$2\n\x83$5\n";
-	unless ($4)
-	{
-	    # Indent may be different on second line.
-	    $indent = length $& if /^ {20,}/;
-	}
-    }
-
-    # Option without description.
-    elsif (s/^ {1,10}([+-]\S.*)\n//)
-    {
-	$matched .= $& if %append;
-	$content = ".HP\n\x83$1\n";
-	$indent = 80; # not continued
-    }
-
-    # Indented paragraph with tag.
-    elsif (s/^( +(\S.*?)  +)(\S.*)\n//)
-    {
-	$matched .= $& if %append;
-	$indent = length $1;
-	$content = ".TP\n\x83$2\n\x83$3\n";
-    }
-
-    # Indented paragraph.
-    elsif (s/^( +)(\S.*)\n//)
-    {
-	$matched .= $& if %append;
-	$indent = length $1;
-	$content = ".IP\n\x83$2\n";
-    }
-
-    # Left justified paragraph.
-    else
-    {
-	s/(.*)\n//;
-	$matched .= $& if %append;
-	$content = ".PP\n" if $include{$sect};
-	$content .= "$1\n";
-    }
-
-    # Append continuations.
-    while (s/^ {$indent}(\S.*)\n//)
-    {
-	$matched .= $& if %append;
-	$content .= "\x83$1\n"
-    }
-
-    # Move to next paragraph.
-    s/^\n+//;
-
-    for ($content)
-    {
-	# Leading dot and apostrophe protection.
-	s/\x83\./\x80/g;
-	s/\x83'/\x81/g;
-	s/\x83//g;
-
-	# Convert options.
-	s/(^| )(-[][\w=-]+)/$1 . convert_option $2/mge;
-    }
-
-    # Check if matched paragraph contains /pat/.
-    if (%append)
-    {
-	for my $pat (keys %append)
-	{
-	    if ($matched =~ $pat)
-	    {
-		$content .= ".PP\n" unless $append{$pat} =~ /^\./;
-		$content .= $append{$pat};
-	    }
-	}
-    }
-
-    $include{$sect} .= $content;
-}
-
-# Refer to the real documentation.
-unless ($opt_no_info)
-{
-    my $info_page = $opt_info || $program;
-
-    $sect = 'SEE ALSO';
-    $include{$sect} ||= '';
-    $include{$sect} .= ".PP\n" if $include{$sect};
-    $include{$sect} .= <<EOT;
-The full documentation for
-.B $program
-is maintained as a Texinfo manual.  If the
-.B info
-and
-.B $program
-programs are properly installed at your site, the command
-.IP
-.B info $info_page
-.PP
-should give you access to the complete manual.
-EOT
-}
-
-# Output header.
-print <<EOT;
-.\\" DO NOT MODIFY THIS FILE!  It was generated by $this_program $this_version.
-.TH $PROGRAM "$section" "$date" "$source" "$manual"
-EOT
-
-# Section ordering.
-my @pre = qw(NAME SYNOPSIS DESCRIPTION OPTIONS EXAMPLES);
-my @post = ('AUTHOR', 'REPORTING BUGS', 'COPYRIGHT', 'SEE ALSO');
-my $filter = join '|', @pre, @post;
-
-# Output content.
-for (@pre, (grep ! /^($filter)$/o, @include), @post)
-{
-    if ($include{$_})
-    {
-	my $quote = /\W/ ? '"' : '';
-	print ".SH $quote$_$quote\n";
-	
-	for ($include{$_})
-	{
-	    # Replace leading dot, apostrophe and backslash tokens.
-	    s/\x80/\\&./g;
-	    s/\x81/\\&'/g;
-	    s/\x82/\\e/g;
-	    print;
-	}
-    }
-}
-
-exit;
-
-# Convert option dashes to \- to stop nroff from hyphenating 'em, and
-# embolden.  Option arguments get italicised.
-sub convert_option
-{
-    local $_ = '\fB' . shift;
-
-    s/-/\\-/g;
-    unless (s/\[=(.*)\]$/\\fR[=\\fI$1\\fR]/)
-    {
-	s/=(.)/\\fR=\\fI$1/;
-	s/ (.)/ \\fI$1/;
-	$_ .= '\fR';
-    }
-
-    $_;
-}
diff --git a/buildscripts/install-info-html.sh b/buildscripts/install-info-html.sh
deleted file mode 100644
index f4df714b76..0000000000
--- a/buildscripts/install-info-html.sh
+++ /dev/null
@@ -1,156 +0,0 @@
-#!@BASH@
-
-name=install-info-html
-version=1.0
-
-all=
-index_dir=.
-
-#
-# debugging
-#
-debug_echo=:
-
-
-#
-# print usage
-#
-help ()
-{
-	cat << EOF
-$name $version
-Install HTML info document.
-
-Usage: $name [OPTIONS]... [DOCUMENT-DIR]...
-
-Options:
-  -a, --all            assume all subdirectories of index to be DOCUMENT-DIRs
-  -d, --dir=DIR        set index directory to DIR (default=.)
-  -D, --debug          print debugging info
-  -h, --help           show this help text
-  -v, --version        show version
-EOF
-}
- 
-
-cleanup ()
-{
-	$debug_echo "cleaning ($?)..."
-}
-
-trap cleanup 0 9 15
-
-#
-# Find command line options and switches
-#
-
-# "x:" x takes argument
-#
-options="adhvW:"
-#
-# ugh, "\-" is a hack to support long options
-# must be in double quotes for bash-2.0
-
-while getopts "\-:$options" O
-do
-	$debug_echo "O: \`$O'"
-	$debug_echo "arg: \`$OPTARG'"
-	case $O in
-		a)
-			all=yes
-			;;
-		D)
-		 	[ "$debug_echo" = "echo" ] && set -x
-		      	debug_echo=echo
-			;;
-		h)
-      			help;
-			exit 0
-			;;
-		v)
-			echo $name $version
-			exit 0
-			;;
-		d)
-			index_dir=$OPTARG
-			;;
-	# a long option!
-	-)
-		case "$OPTARG" in
-			a*|-a*)
-				all=yes
-				;;
-			de*|-de*)
-				[ "$debug_echo" = "echo" ] && set -x
-				debug_echo=echo
-				;;
-			h*|-h*)
-				help;
-				exit 0
-				;;
-			di*|-di*)
-				index_dir="`expr \"$OPTARG\" ':' '[^=]*=\(.*\)'`"
-				;;
-			version|-version)
-				echo $name $version
-				exit 0
-				;;
-			*|-*)
-				echo "$0: invalid option -- \"$OPTARG\""
-				help;
-				exit -1
-				;;
-		esac
-	esac
-done
-shift `expr $OPTIND - 1`
-
-#
-# Input file name
-#
-if [ -z "$all" -a -z "$1" ]; then
-	help
-	echo "$name: No HTML documents given"
-	exit 2
-fi
-
-if [ -n "$all" -a -n "$1" ]; then
-	echo "$name: --all specified, ignoring DIRECTORY-DIRs"
-fi
-
-if [ -n "$all" ]; then
-	document_dirs=`/bin/ls -d1 $index_dir`
-else
-	document_dirs=$*
-fi
-
-index_file=$index_dir/index.html
-rm -f $index_file
-echo -n "$name: Writing index: $index_file..."
-
-# head
-cat >> $index_file <<EOF
-<html> 
-<title>Info documentation index</title>
-<body>
-<h1>Info documentation index</h1>
-This is the directory file \`index.html' a.k.a. \`DIR', which contains the
-topmost node of the HTML Info hierarchy.
-<p>
-This is all very much Work in Progress (WiP).
-<p>
-<ul>
-EOF
-
-#list
-for i in $document_dirs; do
-	echo "<li> <a href=$i/$i.html>$i</a>"
-done >> $index_file
-
-# foot
-cat >> $index_file <<EOF
-</ul>
-</body>
-</html>
-EOF
-echo
diff --git a/buildscripts/lilypond-login.sh b/buildscripts/lilypond-login.sh
deleted file mode 100644
index d0c0377945..0000000000
--- a/buildscripts/lilypond-login.sh
+++ /dev/null
@@ -1,47 +0,0 @@
-#!/bin/csh
-
-# Setup TeX/LaTeX Ghostscript C-shell environment for LilyPond.
-# 
-# Red Hat-like systems should install this in /etc/profile.d/
-
-# If run by hand or from you .login, run as follows
-#   source lilypond-profile
-
-
-
-# strange shell, this C
-set datadir="@local_lilypond_datadir@"
-
-# setenv LILYPONDPREFIX "$datadir"
-# bit silly. for lilypond, overrules compiled-in datadir...
-# setenv LILYPONDPREFIX "@local_lilypond_datadir@"
-
-# Add the installation directory to the teTeX system tree, 
-# see Documentation/misc/fontinstallation
-
-set alreadyset = `kpsexpand \$TEXMF | grep "$datadir"`
-if ( "$alreadyset" == "" ) then
-    set noglob
-    setenv TEXMF "{$datadir,"`kpsexpand  \$TEXMF`"}"
-    unset noglob
-endif
-unset alreadyset
-
-
-
-# if ( $?GS_LIB ) then
-#       setenv GS_LIB "$datadir/ps:$GS_LIB"
-# else
-#       setenv GS_LIB "$datadir/ps"
-# endif
-
-
-
-# Add all available TeX Type1 fonts (including Feta) to Ghostscript:
-#if ( $?GS_FONTPATH ) then
-#       setenv GS_FONTPATH `kpsewhich -expand-path=\$T1FONTS`:$GS_FONTPATH
-#else
-#       setenv GS_FONTPATH `kpsewhich -expand-path=\$T1FONTS`
-#endif
-
-
diff --git a/buildscripts/lilypond-profile.sh b/buildscripts/lilypond-profile.sh
deleted file mode 100644
index d8ea2d3e67..0000000000
--- a/buildscripts/lilypond-profile.sh
+++ /dev/null
@@ -1,93 +0,0 @@
-#!/bin/sh
-
-# Setup TeX/LaTeX Ghostscript environment for LilyPond.
-
-# Red Hat-like systems should install this in /etc/profile.d/
-
-# If run by hand or from you .profile, run as follows
-#   . /PATH/TO/lilypond-profile
-
-
-
-# workaround for ZSH posix $0-problem
-
-# for zsh: start removing here
-if [ -n "$ZSH_NAME" ] ; then
-    echo "You are running this script under zsh. Edit this script by hand. "
-    echo 
-    echo "(failed to source lilypond-profile)"
-    return 2
-fi
-
-if [ `basename "$0"` = "lilypond-profile" ] ; then 
-    cat >/dev/stderr <<EOF
-    
-Error: This script cannot be run in a subshell; it MUST be sourced.
-
-
-EXAMPLE 1: One time use 
-
-	* Do
-
-	    . $0
-
-
-
-EXAMPLE 2: Install for self
-
-	* Do
-
-	    cp lilypond-profile $HOME/bin/
-
-	* Add
-
-	    .  $HOME/bin/lilypond-profile
-
-	to either $HOME/.profile or $HOME/.bash_profile, 
-
-	* Logout.
-
-
-EXAMPLE 3: Install for all users.
-
-	* Do
-
-	     mv lilypond-profile /etc/profile.d/lilypond.sh
-
-	* Logout
-
-EOF
-
-    return 2
-else
-#  for zsh: till here
-
-	if [ -z "$LILYPONDPREFIX" ]; then
-	    datadir=`echo "@local_lilypond_datadir@" | sed 's!//!/!g'`
-	else
-	    if [ -d "$LILYPONDPREFIX/share" ]; then
-		datadir=$LILYPONDPREFIX/share/lilypond/
-	    fi
-	    echo "Setting tree to $datadir"
-	fi
-
-	# Add the installation directory to the teTeX system tree, 
-	# see Documentation/misc/fontinstallation
-	if [ -z `echo $TEXMF | grep "$datadir"` ]; then
-		TEXMF="{$datadir,"`kpsexpand  \\$TEXMF`"}"
-		export TEXMF
-	fi
-
-
-	# For direct ps output: ps/lilyponddefs.ps
-	## GS_LIB="$datadir/ps:"${GS_LIB:=""}
-	## export GS_LIB
-
-	# For direct ps output fonts. Add all available TeX Type1 fonts
-	## GS_FONTPATH=`kpsewhich -expand-path=\\$T1FONTS`:${GS_FONTPATH:=""}
-	## export GS_FONTPATH
-
-fi # remove for zsh
- 	
-
-
diff --git a/buildscripts/lilypond.words.py b/buildscripts/lilypond.words.py
deleted file mode 100755
index 0de3329c80..0000000000
--- a/buildscripts/lilypond.words.py
+++ /dev/null
@@ -1,175 +0,0 @@
-#!@PYTHON@
-
-# Created 01 September 2003 by Heikki Junes.
-# Generates lilypond.words.el for (X)Emacs and lilypond.words.vim for Vim.
-
-import string
-import re
-import sys
-
-kw = []
-rw = []
-notes = []
-
-# keywords not otherwise found
-for line in ['include','maininput','version']:
-    kw = kw + [line]
-
-# the main keywords
-F = open('lily/my-lily-lexer.cc', 'r')
-for line in F.readlines():
-    m = re.search(r"(\s*{\")(.*)(\",\s*.*},\s*\n)",line)
-    if m:
-	kw = kw + [m.group(2)]
-F.close()
-
-# keywords in markup
-F = open('scm/new-markup.scm', 'r')
-for line in F.readlines():
-    m = re.search(r"^(\s*\(cons\s*)([a-z-]*)(-markup)",line)
-    if m:
-	kw = kw + [m.group(2)]
-F.close()
-
-# identifiers and keywords
-for name in [
-'ly/a4-init.ly',
-'ly/chord-modifiers-init.ly',
-'ly/dynamic-scripts-init.ly',
-'ly/engraver-init.ly',
-'ly/grace-init.ly',
-'ly/gregorian-init.ly',
-'ly/performer-init.ly',
-'ly/property-init.ly',
-'ly/scale-definitions-init.ly',
-'ly/script-init.ly',
-'ly/spanners-init.ly',
-]:
-    F = open(name, 'r')
-    for line in F.readlines():
-        m = re.search(r"^([a-zA-Z]+)(\s*=)",line)
-        if m:
-	    kw = kw + [m.group(1)]
-    F.close()
-
-# more identifiers
-for name in [
-'ly/declarations-init.ly',
-'ly/params-init.ly',
-]:
-    F = open(name, 'r')
-    for line in F.readlines():
-        m = re.search(r"^(\s*)([a-zA-Z]+)(\s*=)",line)
-        if m:
-	    kw = kw + [m.group(2)]
-    F.close()
-
-# note names
-for name in [
-'ly/catalan.ly',
-'ly/deutsch.ly',
-'ly/drumpitch-init.ly',
-'ly/english.ly',
-'ly/espanol.ly',
-'ly/italiano.ly',
-'ly/nederlands.ly',
-'ly/norsk.ly',
-'ly/suomi.ly',
-'ly/svenska.ly',
-]:
-    F = open(name, 'r')
-    for line in F.readlines():
-	m = re.search(r"^(\s*\()([a-z]+)([^l]+ly:make-pitch)",line)
-	if m:
-	    notes = notes + ['' + m.group(2)]
-    F.close()
-
-
-    
-# reserved words
-for name in [
-'ly/engraver-init.ly',
-'ly/performer-init.ly',
-]:
-    F = open(name, 'r')
-    for line in F.readlines():
-      	for pattern in [
-	r"^(\s*.consists\s+\")([a-zA-Z_]+)(\")",
-	r"([\\]name\s+[\"]?)([a-zA-Z_]+)([\"]?)",
-	r"(\s+)([a-zA-Z_]+)(\s*[\\]((set)|(override)))",
-	]:
-	    m = re.search(pattern,line)
-	    if m:
-	        rw = rw + ['' + m.group(2)]
-    F.close()
-
-# the output file
-if sys.argv[1:] == []:
-  out_el = open('lilypond.words.el', 'w')
-  out_vim = open('lilypond.words.vim', 'w')
-else:
-  out_el = open(sys.argv[1]+'/lilypond.words.el', 'w')
-  out_vim = open(sys.argv[1]+'/lilypond.words.vim', 'w')
-   
-# alphabetically ordered words
-kw.sort()
-kw.reverse()
-prevline = ''
-out_vim.write('syn match lilyKeyword \"[-_^]\\?\\\\\\(');
-for line in kw:
-    if line != prevline:
-        out_el.write('\\\\' + line + '\n')
-	out_vim.write(line + '\\|')
-    prevline = line
-out_vim.write('n\\)\\(\\A\\|\\n\\)\"me=e-1\n')
-
-rw.sort()
-rw.reverse()
-prevline = ''
-out_vim.write('syn match lilyReservedWord \"\\(\\A\\|\\n\\)\\(');
-for line in rw:
-    if line != prevline:
-        out_el.write(line + '\n')
-	out_vim.write(line + '\\|')
-    prevline = line
-out_vim.write('Score\\)\\(\\A\\|\\n\\)\"ms=s+1,me=e-1\n')
-
-notes.sort()
-notes.reverse()
-prevline = ''
-out_vim.write('syn match lilyNote \"\\<\\(\\(\\(');
-for line in notes:
-    if line != prevline:
-        out_el.write(line + '\n')
-	out_vim.write(line + '\\|')
-    prevline = line
-out_vim.write('a\\)\\([,\']\\)\\{,4}\\([?!]\\)\\?\\)\\|s\\|r\\)\\(\\(128\\|64\\|32\\|16\\|8\\|4\\|2\\|1\\|\\\\breve\\|\\\\longa\\|\\\\maxima\\)[.]\\{,8}\\)\\?\\(\\A\\|\\n\\)\"me=e-1\n')
-
-# the menu in lilypond-mode.el
-for line in [
-'/( - _ /) -',
-'/[ - _ /] -',
-'< - _ > -',
-'<< - _ >> -',
-'///( - _ ///) -',
-'///[ - _ ///] -',
-'///< - _ ///! -',
-'///> - _ ///! -',
-'//center - / << _ >> -',
-'//column - / << _ >> -',
-'//context/ Staff/ = - % { _ } -',
-'//context/ Voice/ = - % { _ } -',
-'//markup - { _ } -',
-'//notes - { _ } -',
-'//relative - % { _ } -',
-'//score - { //n /? //simultaneous { //n _ //n } /! //n //paper {  } //n /? //midi {  } //n /! } //n -',
-'//simultaneous - { _ } -',
-'//sustainDown - _ //sustainUp -',
-'//times - % { _ } -',
-'//transpose - % { _ } -',
-]:
-    # urg. escape char '/' is replaced with '\\' which python writes as a '\'.
-    out_el.write(string.join(string.split(line,'/'),'\\') + '\n')
- 
-out_el.close()
-out_vim.close()
diff --git a/buildscripts/lys-to-tely.py b/buildscripts/lys-to-tely.py
deleted file mode 100644
index 1fd82e4cd2..0000000000
--- a/buildscripts/lys-to-tely.py
+++ /dev/null
@@ -1,106 +0,0 @@
-#!@PYTHON@
-
-
-'''
-TODO:
-
-  * Add @nodes, plit at sections?
-  * Less kludged first introduction file
-  * include *.texi files for text at start of section?
-
-'''
-
-
-import sys
-import os
-import string 
-import getopt
-
-program_name = 'lys-to-tely'
-
-def help ():
-	sys.stdout.write (r"""Usage: lys-to-tely [OPTIONS]... LY-FILE...
-Construct tely doc from LY-FILEs.
-
-Options:
-  -h, --help                print this help
-  -o, --output=NAME         write tely doc to NAME
-  -t, --title=TITLE         set tely doc title TITLE
-
-""")
-	sys.exit (0)
-
-(options, files) = getopt.getopt(sys.argv[1:], 'hn:t:', [
-	'help', 'name=', 'title='])
-
-name="ly-doc"
-title="Ly Doc"
-for opt in options:
-	o = opt[0]
-	a = opt[1]
-	if o == '-h' or o == '--help':
-		help ()
-	elif o == '-n' or o == '--name':
-		name = a
-	elif o == '-t' or o == '--title':
-		title = a
-	else:
-		raise 'unknown opt ', o
-
-def strip_extension (f, ext):
-	(p, e) = os.path.splitext (f)
-	if e == ext:
-		e = ''
-	return p + e
-
-if files:
-	dir = os.path.dirname (name)
-	if not dir:
-		dir = "."
-	name = strip_extension (os.path.basename (name), ".tely")
-
-	s = '''\input texinfo
-@setfilename %s.info
-@settitle %s
-
-@iftex
-@afourpaper
-@end iftex
-
-@finalout @c we do not want black boxes.
-  
-@c fool ls-latex
-@ignore
-@author Han-Wen Nienhuys and Jan Nieuwenhuizen
-@title %s
-@end ignore
-
-@node Top, , , (dir)
-''' % (name, title, title)
-
-	def name2line (n):
-		# UGR
-		s = r"""
-@ifhtml
-@html
-<A NAME="%s">
-@end html
-@end ifhtml
-""" % n
-		
-		s += "\n\n@lilypondfile[printfilename,texidoc]{%s}" % n
-		return s
-	files.sort ()
-	s = s + string.join (map (lambda x: name2line (x), files), "\n")
-	s = s + '\n@bye\n'
-	f = "%s/%s.tely" % (dir, name)
-	sys.stderr.write ("%s: writing %s..." % (program_name, f))
-	h = open (f, "w")
-	h.write (s)
-	h.close ()
-	sys.stderr.write ('\n')
-else:
-	# not Unix philosophy, but hey, at least we notice when
-	# we don't distribute any .ly files.
-	sys.stderr.write ("No files specified. Doing nothing")
-
diff --git a/buildscripts/make-font-dir.py b/buildscripts/make-font-dir.py
deleted file mode 100644
index 21da1906ea..0000000000
--- a/buildscripts/make-font-dir.py
+++ /dev/null
@@ -1,259 +0,0 @@
-#!@PYTHON
-
-
-
-## make a fonts.scale file.
-
-
-import re
-import sys
-import string
-import os
-
-
-### mftrace/afm.py
-
-# Read some global vars 
-class Afm_reader:
-	def __init__ (self, filename):
-		self.filename = filename
-		self.lines = open (self.filename).readlines ()
-
-	def get_afm (self):
-		afm = Afm_font_metric (self.filename)
-		for i in self.lines[:20]:
-			m = re.match ('([^ \t\n]*)[ \t]*(.*[^ \t\n])', i)
-			if m and m.group (1):
-				key = m.group (1)
-				value = m.group (2)
-				if key != 'Comment':
-					afm.__dict__[key] = value
-		return afm
-
-class Afm_font_metric:
-	def __init__ (self, filename):
-		m = re.match ('.*/(.+)', filename)
-		self.filename = m.group (1)
-		m = re.match ('([-_A-Za-z]*)([0-9]*)', self.filename)
-		self.name = m.group (1) + m.group (2)
-		self.basename = m.group (1)
-		self.designsize = m.group (2)
-	
-def read_afm_file (filename):
-	reader = Afm_reader (filename)
-	return reader.get_afm ()
-
-#if __name__ == '__main__':
-#	i = read_afm_file  (sys.argv[1])
-#	print i, i.FullName, i.FontName
-
-### mftrace
-
-class Font_info:
-	cm = {
-		'bx': ('bold', 'roman'),
-		'bxti' : ('bold', 'italic'),
-		'csc' : ('smallcaps', 'roman'),
-		'r' : ('regular', 'roman'),
-		'ss' : ('regular', 'sansserif'),
-		'tt' : ('regular', 'typewriter'),
-		'ti' : ('regular', 'italic'),
-		}
-	      
-	def set_defaults (self, name):
-		self.FontName = name
-		self.FullName = name
-		self.EncodingScheme = 'AdobeStandard'
-		
-		self.foundry = 'GNU'
-		self.family = 'LilyPond'
-		self.weight = 'Feta'
-		self.slant = 'r'
-		self.setwidth = 'normal'
-		self.style = ''
-		self.pixelsize = '0'
-		self.pointsize = '0'
-		self.xresolution = '0'
-		self.yresolution = '0'
-		self.spacing = 'p'
-		self.averagewidth = '0'
-		self.registry = 'GNU'
-		self.encoding = 'FontSpecific'
-
-		split = string.split (name, '-')
-		if len (split) >= 4:
-			# Assume
-			#   Adobe FontName = X11 foundry-family-weight-style
-			if 1:
-				self.foundry, self.family = split[:2]
-			else: # testin'
-				self.foundry = split[0]
-				self.family = string.join (split[1:-2], ' ')
-			self.weight = string.join (split[2:-1], ' ')
-			self.style = split[-1:][0]
-			self.FamilyName = '%s %s' % (self.family, self.weight)
-			self.designsize = self.style
-		elif name[:2] == 'cm':
-			self.foundry = 'TeX' # Knuth?
-			self.FamilyName = 'Computer Modern'
-			self.family = self.FamilyName
-			m = re.match ('^cm([a-z]*)([0-9]*)', name)
-			self.weight = string.join (self.cm[m.group (1)], ' ')
-			self.designsize = m.group (2)
-			self.style = self.designsize
-		else:
-			self.FamilyName = name
-
-	def __init__ (self, x):
-		if type (x) == type ("hallo"):
-			m = re.match ('([-_A-Za-z]*)([0-9]*)', x)
-			self.name = x
-			self.basename = m.group (1)
-			self.designsize = m.group (2)
-			self.set_defaults (x)
-		elif type (x) == type ({}):
-			self.set_defaults (x['FontName'])
-			for k in x.keys ():
-				self.__dict__[k] = x[k]
-
-	def __getitem__ (self, key):
-		return self.__dict__[key]
-
-	def get_X11 (self):
-		return (self.foundry, self.family, self.weight,
-			self.slant, self.setwidth, self.style,
-			self.pixelsize, self.pointsize,
-			self.xresolution, self.yresolution,
-			self.spacing, self.averagewidth,
-			self.registry, self.encoding)
-
-fontinfo = {}
-
-# wat een intervaas...
-ls =  sys.stdin.readline ()
-ls = string.split (ls)
-
-sketch_p = 0
-sodipodi_p = 0
-if len (ls) and ls[0] == 'sodipodi':
-	ls = ls[1:]
-	sodipodi_p = 1
-elif len (ls) and ls[0] == 'sketch':
-	ls = ls[1:]
-	sketch_p = 1
-
-if not (sketch_p or sodipodi_p):
-	print len(ls)
-	
-for filename in ls:
-	basename = re.sub ('\.pf[ab]', '',filename)	
-	fontname = re.sub ('-', ' ',basename)
-
-	m = re.search ("([0-9]+)$", fontname)
-	designsize = 'normal'
-
-	
-	if m:
-		designsize =  m.group (1)
-		fontbase = re.sub ("([0-9]+)$", "", fontname)
-		
-
-	# FIXME: Font naming  -- what a mess
-	# Check sane naming with xfontsel and gtkfontsel
-
-	# Adobe's font naming scheme and X11's seem to be conflicting.
-	# Adobe's FontFamily seems to be X11's family + weight
-	# Also, text selection applets like gtkfontsel, gfontview and
-	# GNOME-applications specific ones, display X11's `family'
-	# parameter as `Font', and X11's `Weight' parameter as `Style'.
-
-	# Using X11 description/convention -- good for xfontsel:
-	#  1 foundry: GNU
-	#  2 family: LilyPond <basename>
-	#  3 weight: <designsize>
-	#  4 slant: r(oman) =upright
-	#  5 setwidth: normal
-	#  6 style:
-	#  7 pixelsize: 0
-	#  8 pointsize: 0 (20 crashes xfs, moved to style)
-	#  9 xresolution: 0
-	# 10 yresolution: 0
-	# 11 spacing: p(roportional)
-	# 12 averagewidth: 0
-	# 13 registry: GNU
-	# 14 encoding: fonstpecific
-
-	# gives:
-	# feta20.pfa -GNU-LilyPond feta-20-r-normal--0-0-0-0-p-0-gnu-fontspecific
-
-	# However, GNOME (gtkfontsel, gnome apps) seems to want:
-
-	#  1 foundry: GNU
-	#  2 family: LilyPond
-	#  3 weight:  <basename>
-	#  4 slant: r(oman) =upright
-	#  5 setwidth: normal
-	#  6 style: <designsize>
-	#  7 pixelsize: 0
-	#  8 pointsize: 0 (20 crashes xfs, moved to style)
-	#  9 xresolution: 0
-	# 10 yresolution: 0
-	# 11 spacing: p(roportional)
-	# 12 averagewidth: 0
-	# 13 registry: GNU
-	# 14 encoding: fonstpecific
-
-	# which gives:
-	# feta20.pfa -GNU-LilyPond-feta-r-normal--20-0-0-0-p-0-gnu-fontspecific
-	# foundry: GNU
-	
-	## ouch, pointsize 20 crashes xfs
-	## XXXfeta20.pfa -GNU-LilyPond Feta-regular-r-normal--0-20-0-0-p-0-gnu-fontspecific
-
-	## feta20.pfa -GNU-LilyPond feta-regular-r-normal-20-0-0-0-0-p-0-gnu-fontspecific
-
-	afmfile = ''
-	if not afmfile:
-		#afmfile = find_file (basename + '.afm')
-		afmfile = basename + '.afm'
-		
-	if afmfile:
-		afmfile = os.path.abspath (afmfile)
-	if os.path.exists (afmfile):	
-		afm = read_afm_file (afmfile)
-		fontinfo = Font_info (afm.__dict__)
-	else:
-		fontinfo = Font_info (basename)
-		
-	family_name = string.join (string.split (fontinfo['FamilyName'],
-							'-'), ' ')
-
-	if sodipodi_p:
-		print string.join ((os.path.abspath (filename),
-				    fontinfo.FamilyName,
-				    fontinfo.FamilyName,''
-				    ),
-				   
-				   ',')
-				   
-	elif sketch_p:
-		# Sketch's lilypond.sfd map:
-		s = string.join ([fontinfo.FontName,
-				  fontinfo.family,
-				  '%s %s' % (fontinfo.weight, fontinfo.style),
-				  string.join (fontinfo.get_X11 ()[:4], '-'),
-				  string.join (fontinfo.get_X11 ()[-2:], '-'),
-				  fontinfo.name],
-				 ',')
-		print s
-
-		s = string.join ([fontinfo.FamilyName + fontinfo.designsize,
-				  fontinfo.family,
-				  '%s %s' % (fontinfo.weight, fontinfo.style),
-				  string.join (fontinfo.get_X11 ()[:4], '-'),
-				  string.join (fontinfo.get_X11 ()[-2:], '-'),
-				  fontinfo.name],
-				 ',')
-		print s
-	else:
-		print filename + ' -' + string.join (fontinfo.get_X11 (), '-')
diff --git a/buildscripts/mf-to-table.py b/buildscripts/mf-to-table.py
deleted file mode 100644
index d24d38ee1d..0000000000
--- a/buildscripts/mf-to-table.py
+++ /dev/null
@@ -1,291 +0,0 @@
-#!@PYTHON@
-
-# mf-to-table.py -- convert spacing info in  MF logs .afm and .tex
-# 
-# source file of the GNU LilyPond music typesetter
-# 
-# (c) 1997--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-
-import os
-import sys
-import getopt
-import string
-import re
-import time
-
-
-postfixes = ['log', 'dvi', '2602gf', 'tfm']
-
-def read_log_file (fn):
-	str = open (fn).read ()
-	str = re.sub ('\n', '', str) 	
-	str = re.sub ('[\t ]+', ' ', str) 
-
-	deps = []
-	autolines = []
-	def include_func (match, d = deps):
-		d.append (match.group (1))
-		return ''
-
-	def auto_func (match, a = autolines):
-		a.append (match.group (1))
-		return ''
-
-	str = re.sub ('\(([a-zA-Z_0-9-]+\.mf)', include_func, str)
-	str = re.sub ('@{(.*?)@}', auto_func, str)
-
-	return (autolines, deps)
-
-
-
-class Char_metric:
-	def __init__ (self):
-		pass
-
-
-def tfm_checksum (fn):
-	sys.stderr.write ("Reading checksum from `%s'\n" % fn) 
-	s = open (fn).read ()
-	s = s[ 12 * 2 : ]
-	cs_bytes = s[:4]
-
-	shift = 24
-	cs = 0
-	for b in cs_bytes:
-		cs = cs  + (ord (b) << shift)
-		shift = shift - 8
-
-	return cs
-
-## ugh.  What's font_family supposed to be?  It's not an afm thing.
-font_family = 'feta'
-def parse_logfile (fn):
-	(autolines, deps) = read_log_file (fn)
-	charmetrics = []
-	global_info = {}
-	group = ''
-
-	for l in autolines:
-		tags = string.split(l, '@:')
-		if tags[0] == 'group':
-			group = tags[1]
-		elif tags[0] == 'char':
-			m = {
-				'description':  tags[1],
-				'name': group + '-' + tags[9],
-				'tex': tags[10],
-				'code': string.atoi (tags[2]),
-				'breapth':string.atof (tags[3]),
-				'width': string.atof (tags[4]),
-				'depth':string.atof (tags[5]),
-				'height':string.atof (tags[6]),
-				'wx': string.atof (tags[7]),
-				'wy':string.atof (tags[8]),
-				}
-			charmetrics.append (m)
-		elif tags[0] == 'font':
-			global font_family
-			font_family = (tags[3])
-			# To omit 'GNU' (foundry) from font name proper:
-			# name = tags[2:]
-			#urg
-			if 0: #testing
-				tags.append ('Regular')
-			name = tags[1:]
-			global_info['FontName'] = string.join (name,'-')
-			global_info['FullName'] = string.join (name,' ')
-			global_info['FamilyName'] = string.join (name[1:-1],
-								 '-')
-			if 1:
-				global_info['Weight'] = tags[4]
-			else: #testing
-				global_info['Weight'] = tags[-1]
-			global_info['FontBBox'] = '0 0 1000 1000'
-			global_info['Ascender'] = '0'
-			global_info['Descender'] = '0'
-			global_info['EncodingScheme'] = 'FontSpecific'
-	
-	return (global_info, charmetrics, deps)
-
-
-def write_afm_char_metric(file, charmetric):
-
-	f = 1000;
-	tup = (charmetric['code'],
-		charmetric['name'],
-		-charmetric['breapth'] *f,
-		-charmetric['depth']*f,
-		charmetric['width']*f,
-		charmetric['height']*f,
-	       charmetric['wx'] * f,
-	       charmetric['wy'] * f)
-	
-	file.write ('C %d ; N %s ; B %d %d %d %d ; W %d %d ;\n'% tup)
-
-def write_afm_header (file):
-	file.write ("StartFontMetrics 2.0\n")
-	file.write ("Comment Automatically generated by mf-to-table.py\n")
-
-def write_afm_metric (file, global_info, charmetrics):
-	for (k,v) in global_info.items():
-		file.write ("%s %s\n" % (k,v))
-	file.write ('StartCharMetrics %d\n' % len(charmetrics ))
-	for m in charmetrics:
-		write_afm_char_metric (file,m)
-	file.write ('EndCharMetrics\n')
-	file.write ('EndFontMetrics\n')
-
-
-def write_tex_defs (file, global_info, charmetrics):
-	##nm = global_info['FontFamily']
-	nm = font_family
-	for m in charmetrics:
-		file.write (r'''\gdef\%s%s{\char%d}%%%s''' % (nm, m['tex'], m['code'],'\n'))
-	file.write ('\\endinput\n')
-
-def write_ps_encoding (file, global_info, charmetrics):
-	encs = ['.notdef'] * 256
-	for m in charmetrics:
-		encs[m['code']] = m['tex']
-		
-	file.write ('/FetaEncoding [\n')
-	for m in range(0,256):
-		file.write ('  /%s %% %d\n' % (encs[m], m))
-	file.write ('] def\n')
-	
-def write_fontlist (file, global_info, charmetrics):
-	##nm = global_info['FontFamily']
-	nm = font_family
-	per_line = 3
-	file.write (r"""
-%% LilyPond file to list all font symbols and the corresponding names
-%% Automatically generated by mf-to-table.py
-\score{\notes{\fatText\time %d/4
-""" % per_line)
-
-	count = 0
-	for m in charmetrics:
-
-		count += 1
-		
-## \musicglyph and \markup require "_" to be escaped differently:
-		
-
-		scm_string = re.sub('_', r'_', m['name'])
-		tex_string = re.sub ('_', r'\\_' , m['name'])
-		
-## prevent TeX from interpreting "--" as long dash:
-		tex_string=re.sub('--','-{}-', tex_string)
-
-		file.write ('  s^\\markup { \\musicglyph #"%s" "%s" }\n' % (scm_string, tex_string))
-
-		if (count % 3) ==0:
-			file.write ('  \\break\n')
-	file.write (r"""
-}
-  \paper{
-    interscoreline=1
-    \translator{
-      \ScoreContext
-      \remove "Bar_number_engraver"
-      TextScript \override #'extra-X-extent = #'(-1 . 1)
-    }
-    \translator{
-      \StaffContext
-      \remove "Clef_engraver"
-      \remove "Key_engraver"
-      \remove "Time_signature_engraver"
-      \remove "Staff_symbol_engraver"
-      minimumVerticalExtent = ##f
-    }
-  }
-}
-""")
-
-def write_deps (file, deps, targets):
-	
-	
-	for t in targets:
-		t = re.sub ( '^\\./', '', t)
-		file.write ('%s '% t)
-	file.write (": ")
-	for d in deps:
-		file.write ('%s ' % d)
-	file.write ('\n')
-
-def help():
-    sys.stdout.write(r"""Usage: mf-to-table [OPTIONS] LOGFILEs
-Generate feta metrics table from preparated feta log.
-
-Options:
-  -a, --afm=FILE         specify .afm file
-  -d, --dep=FILE         print dependency info to FILE
-  -h, --help             print this help
-  -l, --ly=FILE          name output table
-  -o, --outdir=DIR       prefix for dependency info
-  -p, --package=DIR      specify package
-  -t, --tex=FILE         name output tex chardefs
-
-  """
-)
-    sys.exit (0)
-
-
-
-(options, files) = getopt.getopt(
-    sys.argv[1:], 'a:d:hl:o:p:t:', 
-    ['enc=', 'afm=', 'outdir=', 'dep=',  'tex=', 'ly=', 'debug', 'help', 'package='])
-
-
-enc_nm = ''
-texfile_nm = ''
-depfile_nm = ''
-afmfile_nm = ''
-lyfile_nm = ''
-outdir_prefix = '.'
-
-for opt in options:
-	o = opt[0]
-	a = opt[1]
-	if o == '--dep' or o == '-d':
-		depfile_nm = a
-	elif o == '--outdir' or o == '-o':
-		outdir_prefix = a
-	elif o == '--tex' or o == '-t':
-		texfile_nm = a
-	elif o == '--enc':
-		enc_nm = a
-	elif o == '--ly' or o == '-':
-		lyfile_nm = a
-	elif o== '--help' or o == '-h':
-		help()
-	elif o=='--afm' or o == '-a':
-		afmfile_nm = a
-	elif o == '--debug':
-		debug_b = 1
-	elif o == '-p' or o == '--package':
-		topdir = a
-	else:
-		print o
-		raise getopt.error
-
-base = re.sub ('.tex$', '', texfile_nm)
-
-for filenm in files:
-	(g,m, deps) =  parse_logfile (filenm)
-	cs = tfm_checksum (re.sub ('.log$', '.tfm', filenm))
-	afm = open (afmfile_nm, 'w')
-
-	write_afm_header (afm)
-	afm.write ("Comment TfmCheckSum %u\n" % cs)
-	write_afm_metric (afm, g, m)
-	
-	write_tex_defs (open (texfile_nm, 'w'), g, m)
-	write_ps_encoding (open (enc_nm, 'w'), g, m)
-
-	write_deps (open (depfile_nm, 'wb'), deps, [base + '.dvi', base + '.pfa', base + '.pfb',  texfile_nm, afmfile_nm])
-	if lyfile_nm != '':
-		write_fontlist(open (lyfile_nm, 'w'), g, m)
-
-
-
diff --git a/buildscripts/mutopia-index.py b/buildscripts/mutopia-index.py
deleted file mode 100644
index 1e0d594394..0000000000
--- a/buildscripts/mutopia-index.py
+++ /dev/null
@@ -1,216 +0,0 @@
-#!@PYTHON@
-# mutopia-index.py
-
-name = 'mutopia-index'
-
-import fnmatch
-import os
-
-_debug = 0
-
-_prune = ['(*)']
-
-def find(pattern, dir = os.curdir):
-        list = []
-        names = os.listdir(dir)
-        names.sort()
-        for name in names:
-                if name in (os.curdir, os.pardir):
-                        continue
-                fullname = os.path.join(dir, name)
-                if fnmatch.fnmatch(name, pattern):
-                        list.append(fullname)
-                if os.path.isdir(fullname) and not os.path.islink(fullname):
-                        for p in _prune:
-                                if fnmatch.fnmatch(name, p):
-                                        if _debug: print "skip", `fullname`
-                                        break
-                        else:
-                                if _debug: print "descend into", `fullname`
-                                list = list + find(pattern, fullname)
-        return list
-
-
-import re
-import os
-import sys
-import stat
-
-def gulp_file (fn):
-	try:
-		f = open (fn)
-	except:
-		raise 'not there' , fn
-	return f.read ()
-
-def file_exist_b (fn):
-	try:
-		f = open (fn)
-		return 1
-	except:
-		return 0
-
-
-headertext= r"""
-
-<p>You're looking at a page with some LilyPond samples.  These files
-are also included in the distribution. The output is completely
-generated from the <tt>.ly</tt> source file, without any further touch
-up.
-
-<p>
-
-The pictures are 90 dpi anti-aliased snapshots of the printed output.
-If you want a better impression of the appearance, do print out one of
-the PDF or PostScript files; they use scalable fonts, and should look
-good at any resolution.
-
-"""
-
-headertext_nopics= r"""
-<p>Nothing to be seen here, move along.
-"""
-
-#
-# FIXME breaks on multiple strings.
-#
-def read_lilypond_header (fn):
-	s = open(fn).read ()
-	s = re.sub('%.*$', '', s)
-	s = re.sub('\n', ' ', s)		
-
-	dict = {}
-	m = re.search (r"""\\header\s*{([^}]*)}""", s)
-
-	if m:
-			s = m.group(1)
-	else:
-			return dict
-
-	while s:
-		m = re.search (r'''\s*(\S+)\s*=\s*"([^"]+)"''', s)
-		if m == None:
-			s = ''
-		else:
-			s = s[m.end (0):]
-			left  = m.group	 (1)
-			right = m.group (2)
-
-			left = re.sub ('"', '', left)
-			right = re.sub ('"', '', right)
-			dict[left] = right
-
-	return dict
-
-def help ():
-	sys.stdout.write (r"""Usage: mutopia-index [OPTIONS] INFILE OUTFILE
-Generate index for mutopia.
-
-Options:
-  -h, --help                 print this help
-  -o, --output=FILE          write output to file
-  -s, --subdirs=DIR	     add subdir
-      --suffix=SUF	     specify suffix
-      
-"""
-					  )
-	sys.exit (0)
-
-# ugh.
-def gen_list(inputs, filename):
-	print "generating HTML list %s\n" % filename
-	if filename:
-		list = open(filename, 'w')
-	else:
-		list = sys.stdout
-	list.write ('<html><title>Rendered Examples</title>\n')
-	list.write ('<body bgcolor=white>\n')
-	
-	if inputs:
-			list.write (headertext)
-	else:
-			list.write (headertext_nopics)
-
-
-	for ex in inputs:
-		(base, ext) = os.path.splitext (ex)
-		(base, ext2) = os.path.splitext (base)		
-		ext = ext2 + ext
-		
-		header = read_lilypond_header(ex)
-		def read_dict(s, default, h =header):
-				try:
-					ret = h[s]
-				except KeyError:
-					ret = default
-				return ret
-		head = read_dict('title', os.path.basename (base))
-		composer = read_dict('composer', '')
-		desc = read_dict('description', '')
-		list.write('<hr>\n')
-		list.write('<h1>%s</h1>\n' % head);
-		if composer:
-			list.write('<h2>%s</h2>\n' % composer)
-		if desc:
-			list.write('%s<p>' % desc)
-		list.write ('<ul>\n')
-		def list_item(filename, desc, type, l = list):
-			if file_exist_b(filename):
-				
-				l.write ('<li><a href="%s">%s</a>' % (filename, desc))
-
-				# todo: include warning if it uses \include
-				# files.
-				
-				size=os.stat(filename)[stat.ST_SIZE]
-				kB=(size + 512) / 1024
-				if kB:
-					l.write (' (%s %d kB)' % (type, kB))
-				else:
-					l.write (' (%s %d characters)' % (type, size))
-				pictures = ['jpeg', 'png', 'xpm']
-				l.write ('\n')
-
-		list_item(base + ext, 'The input', 'ASCII')
-		for pageno in range(1,100):
-			f  = base + '-page%d.png' % pageno
-			if not file_exist_b (f):
-				break
-			list_item(f, 'See a picture of page %d' % pageno, 'png')
-		list_item(base + '.pdf', 'Print', 'PDF')
-		list_item(base + '.ps.gz', 'Print', 'gzipped PostScript')
-		list_item(base + '.midi', 'Listen', 'MIDI')
-		list.write ("</ul>\n");
-
-	list.write('</body></html>\n');
-	list.close()
-
-import getopt
-
-(options, files) = getopt.getopt(sys.argv[1:], 
-  'ho:', ['help', 'output='])
-outfile = 'examples.html'
-
-subdirs =[]
-for opt in options:
-	o = opt[0]
-	a = opt[1]
-	if o == '--help' or o == '-h':
-		help()
-	elif o == '--output' or o == '-o':
-		outfile = a
-
-dirs  = []
-for f in files:
-	dirs = dirs + find ('out-www', f)
-
-if not dirs:
-	dirs = ['.']
-
-allfiles = []
-
-for d in dirs:
-	allfiles = allfiles + find ('*.ly.txt', d)
-
-gen_list (allfiles, outfile)
-
diff --git a/buildscripts/ontgaar.py b/buildscripts/ontgaar.py
deleted file mode 100644
index 51b277e494..0000000000
--- a/buildscripts/ontgaar.py
+++ /dev/null
@@ -1,206 +0,0 @@
-#!@PYTHON@
-# -*-python-*-
-
-'''
-
-Remove (ont-) LilyPond specific kind of HunGA(a)Rian notation.
-
-
-   ontgaar $(find flower lily python -name '*cc' -o -name '*hh' -o -name '*ll' -o -name '*yy')
-
-   for i in $(find flower lily python -name '*.ontgaar'); do diff -u $(dirname $i)/$(basename $i .ontgaar) $i; done > pats
-
-
-
-When done, move this to Coding Standads doco.
-
-
-Mandatory suffixes:
-  _       :  _       member var
-
-
-Optional suffixes:
-  _b      : bool
-  _p      : as in lispy pair_p ()?
-  _x      : x-coor
-  _y      : y-coor
-
-  _byte   :
-  _char   :
-  _count  : counter
-  _drul   : Drul_array
-  _global : global var
-  _grob   : Grob
-  _mom    : moment
-  _req    : Request
-  _scm    : SCM
-  _str    : C string
-  _str0   : C string
-  _string : C++ string
-
-Prefixes:
-  get_    :  
-  gh_     :  Do not use: part of deprecated Guile api
-  ly_     :
-  scm_    :
-
-
-The Grand Ontgaaring (some may remain):
-
-  _str    -> _string
-  _ch   -> _str0
-  _ch_C -> _str0
-  _sz   -> _str0
-  
-  _ch    -> _char
-  
-  _C     : junk
-  _c     : junk
-  _f     : junk
-  _i     : junk
-  _l     : junk
-  _p     : junk, except for lispy is_foo_p ()
-  _arr   : junk
-  _array : junk
-
-
-
-
-Voor alle suffixen waar het funcienamen betreft, als ik zeg maar wat,
-multiplicity_i (), wordt naam dan zoveel mogelijk: get_mulitiplity ().
-Als je dat niet doet, krijg je naam clashes met variabelen.
-
-
-
-
-'''
-		  
-import re
-import sys
-
-files = sys.argv[1:]
-
-for f in files:
-	print f
-	s = open (f).read ()
-	
-	# shield stuff
-	s = re.sub (r'equal_p', r'equal_pX', s)
-	s = re.sub (r'less_p', r'less_pX', s)
-	s = re.sub (r'pair_p', r'pair_pX', s)
-	s = re.sub (r'smob_p', r'smob_pX', s)
-	s = re.sub (r'list_p(\W)', r'list_pX\1', s)
-
-	s = re.sub (r'(gh_\w*_(p|str)) *\(', r'\1X (', s)
-	s = re.sub (r'(ly_\w*_(p|str)) *\(', r'\1X (', s)
-	s = re.sub (r'(scm_\w*_(p|str)) *\(', r'\1X (', s)
-	
-	s = re.sub (r'to_c(\W)', r'to_cX\1', s)
-	s = re.sub (r'P_C', r'P_XC', s)
-
-	s = re.sub (r'(\W)get_music(\W)', r'\1Yget_pending_events\2', s)
-
-	s = re.sub (r'2_i(\W)', r'2int\1', s)
-	s = re.sub (r'2_u(\W)', r'2unsigned\1', s)
-	s = re.sub (r'2_f(\W)', r'2double\1', s)
-
-	s = re.sub (r'(\w+)_str *\(', r'\1_string (', s)
-
-
-	# member vars or multipart names
-	s = re.sub (r'(\w+)_(c|f|i|l|p)_(\W)', r'\1_\3', s)
-	s = re.sub (r'(\w+)_(c|f|i|l|p)_arr(_|\W)', r'\1_array\3', s)
-	s = re.sub (r'(\w+)_arr_', r'\1_array_', s)
-	s = re.sub (r'(\w+)_str_', r'\1_string_', s)
-	s = re.sub (r'(\w+)_sz', r'\1_str0', s)
-	
-	# functions
-	s = re.sub (r'(\W)ch_C *\(', r'\1Yto_str0 (', s)
-	s = re.sub (r'(\W)byte_C *\(', r'\1Yto_bytes (', s)
-	s = re.sub (r'(\W)byte_l *\(', r'\1Yget_bytes (', s)
-	s = re.sub (r'(\W)value_i *\(', r'\1Yto_int (', s)
-	s = re.sub (r'(\W)value_f *\(', r'\1Yto_double (', s)
-	s = re.sub (r'find_i *\(', r'Yfind_index (', s)
-	s = re.sub (r'compare_i *\)', r'compare)', s)
-
-	
-	s = re.sub (r'(\w+)_(c|f|i|l|p) *\(', r'Yget_\1 (', s)
-	
-	s = re.sub (r'(\w+)_arr *\(', r'\1_array (', s)
-	s = re.sub (r'(\w+)_ch *\(', r'\1_str0 (', s)
-	s = re.sub (r'(\w+)_str *\(', r'\1_string (', s)
-	
-	s = re.sub (r'(\W)str *\(', r'\1string (', s)
-	s = re.sub (r'(\W)arr *\(', r'\1array (', s)
-	
-	s = re.sub (r'(\w+)_ch_C *\(', r'\1_str0 (', s)
-	s = re.sub (r'(\w+)_ch *\(', r'\1_str0 (', s)
-
-	# more member vars or multipart names
-	s = re.sub (r'(\w+)_ch_C', r'\1_str0', s)
-	s = re.sub (r'(\w+)_ch_', r'\1_char_', s)
-	s = re.sub (r'(\W)ch_C(\W)', r'\1str0\2', s)
-
-	# plain vars -- can't do, as we have
-	# Real foo_f, int foo_i, SCM foo constructs
-	# s = re.sub (r'(\w+)_(c|f|i|l|p)(\W)', r'\1_\3', s)
-
-	
-	# but these will go
-	s = re.sub (r'(\W)arr_(l|p)(\W)', r'\1array\3', s)
-	s = re.sub (r'new_(l|p)', r'new_pX', s)
-	s = re.sub (r'(\w+)_(l|p)(\W)', r'\1\3', s)
-
-	s = re.sub (r'(\w+)_arr(\W)', r'\1_array\2', s)
-	s = re.sub (r'(\w+)_str(\W)', r'\1_string\2', s)
-	
-	s = re.sub (r'(\w+)_ch_C(\W)', r'\1_str0\2', s)
-	s = re.sub (r'(\w+)_ch(\W)', r'\1_char\2', s)
-
-	s = re.sub (r'(\w+)_C(\W)', r'\1\2', s)
-	
-	# fixups
-	s = re.sub (r'Yfind', 'find', s)
-	s = re.sub (r'Yget_argument_to', 'get_argument_index', s)
-	s = re.sub (r'Yget_compare', 'compare', s)
-	s = re.sub (r'Yget_cons', 'cons', s)
-	s = re.sub (r'Yget_create', 'create', s)
-	s = re.sub (r'Yget_find', 'find', s)
-	s = re.sub (r'Yget_hex', 'hex', s)
-	s = re.sub (r'Yget_index', 'index', s)
-	s = re.sub (r'Yget_length', 'length', s)
-	s = re.sub (r'Yget_remove', 'remove', s)
-	s = re.sub (r'Yget_report', 'report', s)
-	s = re.sub (r'Yget_size', 'size', s)
-	s = re.sub (r'Yget_get', 'get', s)
-	s = re.sub (r'Yget', 'get', s)
-	s = re.sub (r'Yto', 'to', s)
-
-	
-	s = re.sub (r'(bin2dec|bin2hex|dec2bin|hex2bin)_string', r'\1', s)
-	s = re.sub (r'i2hex_string', 'int2hex', s)
-	s = re.sub (r'u2hex_string', 'unsigned2hex', s)
-	s = re.sub (r'i2dec_string', 'int2dec', s)
-
-	# Would this work?
-	s = re.sub (r'split_array', 'split', s)
-	s = re.sub (r'custos_array', 'custodes', s)
-	s = re.sub (r'primitives_array', 'primitives', s)
-	s = re.sub (r'span_array', 'spanners', s)
-	s = re.sub (r'(Pointer|Link|Drul|get|heap|_of|remove)_array',
-		    r'\1_Xarray', s)
-	s = re.sub (r'([a-rt-zA-RT-Z])_array', r'\1s', s)
-	s = re.sub (r'([sS])_array', r'\1es', s)
-	s = re.sub (r'_Xarray', '_array', s)
-	
-	# shields down
-	s = re.sub (r'_pX', r'_p', s)
-	s = re.sub (r'_cX', r'_c', s)
-	s = re.sub (r'_strX', r'_str', s)
-	s = re.sub (r'P_XC', 'P_C', s)
-	s = re.sub (r'Xget_music', 'get_music', s)
-
-	h = open (f + '.ontgaar', 'w')
-	h.write (s)
-	h.close ()
-	
diff --git a/buildscripts/texi2omf.py b/buildscripts/texi2omf.py
deleted file mode 100644
index f87fea1623..0000000000
--- a/buildscripts/texi2omf.py
+++ /dev/null
@@ -1,148 +0,0 @@
-import time
-import re
-import sys
-import getopt
-import os
-
-def usage ():
-	sys.stderr.write ('''
-texi2omf [options] texifile
-
-Options:
-
---format=FORM         format is FORM. Supported: HTML, PS, PDF
---location=FILE       path to file on disk.
---version=VERSION
-
-Use the following commands (enclose in @ignore)
-
-@omfsubject . .
-@omfdescription . .
-@omftype . . 
-
-etc.
-
-
-''')
-	
-(options, files) = getopt.getopt (sys.argv[1:], '',
-				  ['format=', 'location=', 'version='])
-
-license = 'FDL'
-location = ''
-version = ''
-email = os.getenv ('MAILADDRESS')
-name = os.getenv ('USERNAME')
-
-for (o,a) in options:
-	if o == '--format':
-		format = a
-	elif o == '--location':
-		location = 'file:%s' % a
-	elif o == '--version':
-		version = a
-	else:
-		assert 0
-
-		
-if not files:
-	usage()
-	sys.exit (2)
-
-
-formats = {
-	'html' : 'text/html',
-	'pdf' : 'application/pdf',
-	'ps.gz' : 'application/postscript',
-	'ps' : 'application/postscript',
-	}
-
-if not formats.has_key (format):
-	sys.stderr.write ("Format `%s' unknown\n" % format)
-	sys.exit (1)
-
-
-infile =files[0]
-
-today = time.localtime()
-
-texi = open (infile).read()
-
-if not location:
-	location = 'file:%s' % re.sub (r'\.*', '.html', infile)
-	
-
-omf_vars = {
-	'date': '%d-%d-%d' %  today[:3],
-	'mimeformat': formats[format],
-	'maintainer':  "%s (%s)" % (name, email),
-	'version' : version,
-	'location' : location, 
-	}
-
-for a in ['subject','creator', 'title', 'subtitle', 'version', 'category', 'type',
-	  'description',  'license']:
-	
-	m = re.search ('@omf%s (.*)\n'% a, texi)
-	if m:
-		omf_vars[a] = m.group (1)
-	elif not omf_vars.has_key (a):
-		omf_vars[a] = ''
-		
-if not omf_vars['title']:
-	title = ''
-	m = re.search ('@title (.*)\n', texi)
-	if m:
-		title = m.group (1)
-
-	subtitle = ''
-	m = re.search ('@subtitle (.*)\n', texi)
-	if m:
-		subtitle = m.group (1)
-
-	if subtitle:
-		title  = '%s -- %s' % (title, subtitle)
-
-	omf_vars['title'] = title
-	
-if not omf_vars['creator']:
-	m = re.search ('@author (.*)\n', texi)
-	if m:
-		omf_vars['creator'] = m.group (1)
-
-
-
-print r'''<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE omf PUBLIC "-//OMF//DTD Scrollkeeper OMF Variant V1.0//EN" "http://scrollkeeper.sourceforge.net/dtds/scrollkeeper-omf-1.0/scrollkeeper-omf.dtd">
-<omf>
-  <resource>
-    <creator>
-      %(creator)s
-    </creator>
-    <maintainer>
-      %(maintainer)s
-    </maintainer>
-    <title>
-      %(title)s
-    </title>
-    <date>
-      %(date)s
-    </date>
-    <version identifier="%(version)s" date="%(date)s" />
-    <subject category="%(category)s"/>
-    <description>
-    %(description)s
-    </description>
-    <type>
-    %(type)s
-    </type>
-    <format mime="%(mimeformat)s" />
-    <identifier url="%(location)s"/>
-    <language code="C"/>
-    <rights type="%(license)s" />
-  </resource>
-</omf>
-
-''' % omf_vars
-
-
diff --git a/config.hh.in b/config.hh.in
deleted file mode 100644
index 96ede6ebae..0000000000
--- a/config.hh.in
+++ /dev/null
@@ -1,93 +0,0 @@
-/* @AUTOGENERATE@ */
-
-#define PACKAGE "@package@"
-
-#define TOPLEVEL_VERSION "@TOPLEVEL_VERSION@"
-
-/* datadir */
-#define DATADIR "@DATADIR@"
-
-/* LilyPond init and input base directory */
-#define PACKAGE_DATADIR DATADIR "/" PACKAGE
-#define LILYPOND_DATADIR PACKAGE_DATADIR
-
-/* LilyPond specific init and input directory */
-#define LOCAL_PACKAGE_DATADIR PACKAGE_DATADIR "/" TOPLEVEL_VERSION
-#define LOCAL_LILYPOND_DATADIR LOCAL_PACKAGE_DATADIR
-
-/* default lilypond locale dir */
-#define LOCALEDIR "@LOCALEDIR@"
-
-/* define if you have memmem */
-#define HAVE_MEMMEM 0
-
-/* define if you have snprintf */
-#define HAVE_SNPRINTF 0
-
-/* define if you have vsnprintf */
-#define HAVE_VSNPRINTF 0
-
-/* define if you have yyFlexLexer.yy_current_buffer */
-#undef HAVE_FLEXLEXER_YY_CURRENT_BUFFER
-
-/* define if you have gettext */
-#define HAVE_GETTEXT 0
-
-/* define if you have isinf */
-#define HAVE_ISINF 0
-
-/* define if you have lrint */
-#define HAVE_LRINT 0
-
-/* define if you want KPATHSEA */
-#define KPATHSEA @KPATHSEA@
-
-/* define if you have kpatsea header */
-#define HAVE_KPATHSEA_KPATHSEA_H 0
-
-/* define if you have kpse_find_file */
-#define HAVE_KPSE_FIND_FILE 0
-
-/* define if you have kpse_find_tfm */
-#define HAVE_KPSE_FIND_TFM 0
-
-/* define if you have Python.h header */
-#define HAVE_PYTHON_H 0
-
-/* define if explicit instantiation is needed */
-#undef NEED_EXPLICIT_INSTANTIATION
-
-/* define directory and path separators */
-#define DIRSEP '@DIRSEP@'
-#define PATHSEP '@PATHSEP@'
-
-/* define if you have assert */
-#define HAVE_ASSERT_H 0
-
-/* define if you have sys/stat.h */
-#define HAVE_SYS_STAT_H 0
-
-/* define if you have sys/stat.h */
-#define STAT_MACROS_BROKEN 0
-
-/* define if you have sstream */
-#define HAVE_SSTREAM 0
-
-/* GUILE only includes version in headers (libguile/version.h) as of
-   1.5.x.  For some strange reason, they call it SCM.*VERSION. */
-#include <libguile.h>
-
-#ifndef GUILE_MAJOR_VERSION
-#ifdef SCM_MAJOR_VERSION
-#define GUILE_MAJOR_VERSION SCM_MAJOR_VERSION
-#define GUILE_MINOR_VERSION SCM_MINOR_VERSION
-#define GUILE_PATCH_LEVEL SCM_MICRO_VERSION
-#else
-/* define GUILE major version */
-#define GUILE_MAJOR_VERSION 0
-/* define GUILE minor version */
-#define GUILE_MINOR_VERSION 0
-/* define GUILE patch level */
-#define GUILE_PATCH_LEVEL 0
-#endif
-#endif
diff --git a/config.make.in b/config.make.in
deleted file mode 100644
index a133e48f4c..0000000000
--- a/config.make.in
+++ /dev/null
@@ -1,103 +0,0 @@
-# -*-Makefile-*-
-
-MISSING_OPTIONAL = @OPTIONAL@
-MISSING_REQUIRED = @REQUIRED@
-
-
-# @configure_input@
-
-package-depth = @package_depth@
-
-USER_CFLAGS = @CFLAGS@ @CPPFLAGS@ @GUILE_CFLAGS@
-USER_CXXFLAGS = @CXXFLAGS@ @CPPFLAGS@ @GUILE_CFLAGS@
-USER_LDFLAGS = @LDFLAGS@ @GUILE_LDFLAGS@
-EXTRA_LIBES = @EXTRA_LIBES@ @LIBS@
-
-PACKAGE = @PACKAGE@
-package = @package@
-PACKAGE_NAME = @PACKAGE_NAME@
-
-prefix = $(DESTDIR)@prefix@
-exec_prefix = @exec_prefix@
-
-builddir = @ugh_ugh_autoconf250_builddir@
-build_lilypond_datadir = @build_package_datadir@
-build_lilypond_libdir = @build_package_libdir@
-bindir = @bindir@
-datadir = @datadir@
-includedir = @includedir@
-infodir = @infodir@
-libdir = @libdir@
-localedir = @localedir@
-mandir = @mandir@
-program_prefix = @program_prefix@
-program_suffix = @program_suffix@
-sharedstatedir = @sharedstatedir@
-srcdir = @srcdir@
-stepmake = @stepmake@
-docdir = $(datadir)/doc/
-omfdir = $(datadir)/omf/
-elispdir = $(datadir)/emacs/site-lisp
-
-# move out of config.make.in?
-package_datadir = $(datadir)/$(package)
-package_libdir = $(libdir)/$(package)
-package_docdir = $(docdir)/$(package)
-package_omfdir = $(omfdir)/$(package)
-
-local_package_datadir = $(lilypond_datadir)/$(TOPLEVEL_VERSION)
-local_package_libdir = $(lilypond_libdir)/$(TOPLEVEL_VERSION)
-local_package_docdir = $(lilypond_docdir)/$(TOPLEVEL_VERSION)
-local_package_omfdir = $(lilypond_omfdir)/$(TOPLEVEL_VERSION)
-
-lilypond_datadir = $(package_datadir)
-lilypond_libdir = $(package_libdir)
-lilypond_docdir = $(package_docdir)
-lilypond_omfdir = $(package_omfdir)
-
-local_lilypond_datadir = $(local_package_datadir)
-local_lilypond_libdir = $(local_package_libdir)
-
-CC = @CC@
-GCC = @GCC@
-CROSS = @cross_compiling@
-CXX = @CXX@
-GXX = @GXX@
-LD = @LD@
-CONFIGSUFFIX = @CONFIGSUFFIX@
-MAKEINFO_PROGRAM = @MAKEINFO@
-SPLITTING_MAKEINFO = @SPLITTING_MAKEINFO@
-ICFLAGS = @ICFLAGS@
-ILDFLAGS = @ILDFLAGS@
-TFM_PATH = @TFM_PATH@
-RANLIB = @RANLIB@
-DEFS = @DEFS@
-DEFINES = @DEFS@ @DEFINES@
-DOTEXE = @DOTEXE@
-INSTALL = @INSTALL@
-BASH = @BASH@
-BISON = @BISON@
-FIND = @FIND@
-FLEX = @FLEX@
-GROFF = @GROFF@
-GUILE = @GUILE@
-GUILE_CONFIG = @GUILE_CONFIG@
-GUILE_CFLAGS = @GUILE_CFLAGS@
-GUILE_LDFLAGS = @GUILE_LDFLAGS@
-INIMETAFONT = @INIMETAFONT@
-LN = @LN@
-LN_S = @LN_S@
-METAFONT = @METAFONT@
-MFMODE = @MFMODE@
-MSGFMT = @MSGFMT@
-ROOTSEP = @ROOTSEP@
-PATHSEP = @PATHSEP@
-PERL = @PERL@
-MFTRACE = @MFTRACE@
-PYTHON = @PYTHON@
-SHELL = @SHELL@
-TAR = @TAR@
-YACC = @YACC@
-ZIP = @ZIP@
-
-PAPERSIZE=a4
diff --git a/configure.in b/configure.in
deleted file mode 100644
index c86e919778..0000000000
--- a/configure.in
+++ /dev/null
@@ -1,94 +0,0 @@
-dnl configure.in   -*-shell-script-*-
-dnl Process this file with autoconf to produce a configure script. 
-
-# Bootstrap the init proces.
-AC_INIT
-
-# Bootstrap StepMake configure
-# For user package:
-AC_CONFIG_AUX_DIR([stepmake/bin])
-# For stepmake package:
-# AC_CONFIG_AUX_DIR(bin)
-
-
-STEPMAKE_INIT
-
-
-
-# List a file that identifies your package.
-AC_CONFIG_SRCDIR([lily/main.cc])
-
-# Move to aclocal.m4?
-AC_CONFIG_HEADER([$CONFIGFILE.h:config.hh.in])
-
-# Uncomment the configuration options your package needs.
-
-# must come before any header checks
-STEPMAKE_COMPILE
-
-STEPMAKE_PYTHON(REQUIRED,2.1)
-STEPMAKE_GCC(REQUIRED, 2.8)
-STEPMAKE_CXX(REQUIRED)
-STEPMAKE_GXX(REQUIRED, 3.0.5)
-STEPMAKE_CXXTEMPLATE
-STEPMAKE_LIB(REQUIRED)
-# Do not use bison 1.50 and 1.75.
-STEPMAKE_BISON(REQUIRED, 1.25)
-STEPMAKE_FLEX(REQUIRED)
-STEPMAKE_FLEXLEXER(REQUIRED)
-STEPMAKE_LOCALE
-STEPMAKE_GETTEXT
-STEPMAKE_MSGFMT(REQUIRED)
-STEPMAKE_TEXMF
-STEPMAKE_TEXMF_DIRS
-STEPMAKE_GUILE_DEVEL(REQUIRED, 1.6)
-STEPMAKE_KPATHSEA
-STEPMAKE_MAKEINFO(REQUIRED)
-STEPMAKE_PYTHON_DEVEL(REQUIRED)
-
-
-AC_CHECK_HEADERS([assert.h sys/stat.h sstream])
-AC_HEADER_STAT
-
-AC_FUNC_MEMCMP
-AC_FUNC_VPRINTF
-AC_CHECK_FUNCS([gettext isinf memmem snprintf vsnprintf gettext])
-
-
-## Optional tools for building documentation, website, extra fonts.
-
-# guile executable for some scripts
-STEPMAKE_GUILE(OPTIONAL)
-# perl for help2man.
-STEPMAKE_PERL(OPTIONAL)
-# mftrace for generating pfa's, pfb's
-STEPMAKE_PROGS(MFTRACE, mftrace, OPTIONAL, 1.0.27)
-
-# new makeinfo for multi-page website docs
-STEPMAKE_PROGS(MAKEINFO, makeinfo, OPTIONAL, 4.6)
-
-
-if test "$optimise_b" = yes; then
-    DEFINES="$DEFINES -DSTRING_UTILS_INLINED"
-    AC_DEFINE(STRINGS_UTILS_INLINED)
-fi
-
-
-AC_DEFINE_UNQUOTED(TOPLEVEL_VERSION, "${FULL_VERSION}")
-AC_DEFINE_UNQUOTED(FLOWER_VERSION, "${FULL_FLOWER_VERSION}")
-
-# Gather requirements and generate output.
-STEPMAKE_END
-
-
-test -n "$CONFIGURATION" && mc=" conf=$CONFIGURATION" || mc=""
-
-cat <<EOF
-
-Type:
-    make$mc all       to build LilyPond
-    make$mc install   to install LilyPond
-    make$mc help      to see all possible targets
-
-Do not worry if ./Documentation should not build.
-EOF
diff --git a/cygwin/GNUmakefile b/cygwin/GNUmakefile
deleted file mode 100644
index eaef835078..0000000000
--- a/cygwin/GNUmakefile
+++ /dev/null
@@ -1,56 +0,0 @@
-depth = ..
-
-NAME = cygwin
-
-MKNETRELS = $(wildcard mknetrel mknetrel.*[a-z])
-EXTRA_DIST_FILES = changelog $(MKNETRELS) $(wildcard *.hint)
-
-SEXECUTABLES=bug-lilypond-cygwin lily-wins
-STEPMAKE_TEMPLATES = install install-out script
-
-include $(depth)/make/stepmake.make
-
-# For Cygwin builds only
-ifneq ($(CYGWIN_BUILD),)
-
-include $(stepdir)/executable-targets.make
-
-POSTINSTALLS=$(wildcard postinstall*.sh)
-OUT_POSTINSTALLS=$(POSTINSTALLS:%=$(outdir)/%)
-
-POSTREMOVES=$(wildcard postremove*.sh)
-OUT_POSTREMOVES=$(POSTREMOVES:%=$(outdir)/%)
-
-PROFILES=$(wildcard *-profile.sh) lilypond-profile.sh
-OUT_PROFILES=$(PROFILES:%=$(outdir)/%)
-
-# profiles
-$(outdir)/%.sh: %.sh $(config_make)
-	cat $< | sed $(sed-atvariables) > $@
-	chmod 755 $@
-
-# Get profile from buildscripts
-$(outdir)/lilypond-profile.sh: $(outdir)/../$(depth)/buildscripts/$(outconfbase)/lilypond-profile
-	cp $< $@
-	chmod 755 $@
-
-default: $(OUT_POSTINSTALLS) $(OUT_POSTREMOVES) $(OUT_PROFILES) $(OUTIN_FILES) 
-
-INSTALLATION_OUT_SUFFIXES=1 2 # 3
-
-# Avoid collapsed directory constructs '//'
-etc=$(patsubst %/, %, $(dir $(prefix)))/etc
-INSTALLATION_DIR=$(etc)/postinstall
-INSTALLATION_FILES=$(OUT_POSTINSTALLS)
-
-INSTALLATION_OUT_DIR1=$(etc)/profile.d
-INSTALLATION_OUT_FILES1=$(OUT_PROFILES)
-
-INSTALLATION_OUT_DIR2=$(etc)/postremove
-INSTALLATION_OUT_FILES2=$(OUT_POSTREMOVES)
-
-# INSTALLATION_OUT_DIR3=$(local_lilypond_datadir)/tex
-# INSTALLATION_OUT_FILES3=$(shell kpsewhich geometry.sty)
-
-endif
-
diff --git a/cygwin/README.in b/cygwin/README.in
deleted file mode 100644
index fae792513c..0000000000
--- a/cygwin/README.in
+++ /dev/null
@@ -1,105 +0,0 @@
-LilyPond
-------------------------------------------
-LilyPond - The GNU music typesetter.
-
-For more information, tutorial, documentation, packaging instructions, visit:
-  http://lilypond.org
-
-Runtime requirements:
-  cygwin-1.5.2 or newer
-  libguile12-1.6.4-12 or newer
-  bash
-  ghostscript
-  libiconv2
-  libintl2
-  libkpathsea3-2.0.2-12 or newer
-  python
-  tetex-bin-2.0.2-12 or newer
-  tetex-tiny or tetex-base
-
-Suggested:
-  XFree86-serv
-  emacs or vim
-  ghostscript-x11
-  rxvt
-  tetex-x11
-  gv
-
-Build requirements:
-  cygwin-1.5.2 or newer
-  binutils-20011102 or newer
-  gcc-2.95.3-5 or newer
-  bison-1.35 or newer
-  guile-devel-1.6.4-11 or newer
-  fileutils
-  flex-2.5.4 or newer
-  libguile12-1.6.4-12 or newer
-  libkpathsea3-2.0.2-12 or newer
-  python-2.2 or newer
-  sed-3.02 or newer
-  sh-utils
-  tetex-devel-2.0.2-12 or newer
-  texinfo-4.2 or newer
-
-Website/documentation build requirements (lilypond-doc package):
-  tetex-bin
-  tetex-tiny or tetex-base
-  ghostscript or ghostscript-x11
-
-  mftrace, http://www.cs.uu.nl/people/hanwen/mftrace
-  autotrace, http://autotrace.sourceforge.net
-  netpbm, http://netpbm.sourceforge.net
-  t1utils, http://www.lcdf.org/~eddietwo/type/
-
-Recommended website/documentation build requirements:
-  pfaedit 020215 or newer, http://pfaedit.sourceforge.net
-
-Canonical homepage:
-  http://www.lilypond.org/development
-
-Canonical download:
-  ftp://ftp.lilypond.org/pub/LilyPond
-  
-------------------------------------
-
-Build instructions:
-
-  # Unpack lilypond-@TOPLEVEL_VERSION@-1-src.tar.bz2 in /usr/src
-
-    cd /usr/src
-    tar xjf lilypond-@TOPLEVEL_VERSION@-1-src.tar.bz2
-    # (or, if you use setup to install this src package, it will be
-    #  unpacked under /usr/src automatically)
-
-  # Get mknetrel from:
-     cvs -d:pserver:anoncvs@sources.redhat.com:/cvs/cygwin-apps co mknetrel
-
-  # Copy the extra mknetrel script for LilyPond to mknetrel:
-     cp lilypond-@TOPLEVEL_VERSION@-1/cygwin/mknetrel mknetrel/extra/lilypond
-
-  # Build the package:
-
-     ./mknetrel/bin/mknetrel lilypond
-
-This will create:
-  /usr/src/uploads/lilypond-@TOPLEVEL_VERSION@-1-src.tar.bz2
-  /usr/src/uploads/lilypond-@TOPLEVEL_VERSION@-1.tar.bz2
-  /usr/src/uploads/lilypond-doc/lilypond-doc-@TOPLEVEL_VERSION@-1.tar.bz2
-
-------------------
-
-Port notes:
-
-  These packages were built on GNU/Linux using mknetrel.
-
-  Jan Nieuwenhuizen
-  janneke@gnu.org
-
-Cygwin port maintained by: Jan Nieuwenhuizen  <janneke@gnu.org> 
-
-------------------
-
-Please send questions or comments on the LilyPond Cygwin package or
-installation to the Cygwin mailing list at: cygwin@cygwin.com.
-However, if you're having problems related to LilyPond, please write
-to lilypond-user@gnu.org.  Please do not email the authors directly.
diff --git a/cygwin/bug-lilypond-cygwin.sh b/cygwin/bug-lilypond-cygwin.sh
deleted file mode 100644
index cd46270fdc..0000000000
--- a/cygwin/bug-lilypond-cygwin.sh
+++ /dev/null
@@ -1,104 +0,0 @@
-#!@SHELL@
-# /usr/bin/bug-lilypond-cygwin.sh -- harvest relevant info for bugreport
-#
-# Ideas
-#   * add some kpathsea tricks
-#   * distribute for other platforms too
-#   * failure/success tracking and indication (-> rewrite in python)
-
-set -x
-
-name="$(basename $0)"
-# Running this in new shell may yield deceptive results
-if [ "$name" = "bug-lilypond-cygwin" ]; then
-    # HMM
-    cat <<EOF
-Please source this script, ie do:
-
-    . /usr/bin/bug-lilypond-cygwin > bug.txt
-
-EOF
-fi
-
-docdir=@prefix@/share/doc/lilypond-@TOPLEVEL_VERSION@-1
-[ ! -d $docdir ] && docdir=@prefix@/doc/lilypond-@TOPLEVEL_VERSION@-1
-[ ! -d $docdir ] && docdir=$(echo @prefix@/share/doc/lilypond-[.-0-9]*)
-[ ! -d $docdir ] && docdir=$(echo @prefix@/doc/lilypond-[.-0-9]*)
-
-echo
-echo Availability of executables
-echo ===========================
-type -p tex
-type -p latex
-type -p kpsewhich
-type -p lilypond-bin
-type -p python
-type -p lilypond
-
-type -p tex.exe
-type -p latex.exe
-type -p kpsewhich.exe
-type -p lilypond-bin.exe
-type -p python.exe
-
-lilypond-bin --version
-python -V
-lilypond --version
-
-
-echo
-echo Test runs
-echo =========
-mkdir -p /tmp/lily
-cd /tmp/lily
-rm -f example-1.* sample2e.*
-ls -l
-latex \\nonstopmode \\input sample2e
-kpsewhich feta20.mf
-kpsewhich feta20.pk
-cp $docdir/input/example-1.ly .
-cp $docdir/input/example-2.ly .
-lilypond example-1.ly
-latex \\nonstopmode \\input example-1.tex
-dvips -o example-1.ps example-1.dvi
-ls -l
-lilypond --verbose example-2
-ls -l
-
-echo
-echo Environment settings
-echo ====================
-# If python is ok and lilypond runs, this all is not really necessary.
-echo HOME="<$HOME>"
-echo SHELL="<$SHELL>"
-echo LILYPONDPREFIX="<$LILYPONDPREFIX>"
-echo TEXMF="<$TEXMF>"
-echo MFINPUTS="<$MFINPUTS>"
-echo TFMFONTS="<$TFMFONTS>"
-echo TEXINPUTS="<$TEXINPUTS>"
-# do we want to know all?
-#set
-
-echo
-echo Registry settings
-echo =================
-regtool get /root/.ly/
-regtool get /root/LilyPond/
-regtool get /root/LilyPond/shell/open/command/
-regtool get /root/.pdf/
-pdfname=$(regtool get /root/.pdf/)
-regtool get /root/$pdfname/shell/open/command/
-regtool get /root/AcroExch.Document/shell/open/command/
-
-echo
-echo System information
-echo ==================
-uname -a
-cygcheck -s
-
-if false; then
-    cat /var/log/setup.log
-    # cat /var/log/setup.log.full
-fi
-
-
diff --git a/cygwin/changelog b/cygwin/changelog
deleted file mode 100644
index 2a306b649b..0000000000
--- a/cygwin/changelog
+++ /dev/null
@@ -1,108 +0,0 @@
-lilypond (1.9.8-1) unstable; urgency=low
-
-  * New upstream release.
-
- -- Jan Nieuwenhuizen <janneke@gnu.org>  Fri, 19 Sep 2003 23:20:46 +0200
-
-lilypond (1.8.2-1) unstable; urgency=low
-
-  * New upstream release.
-
- -- Jan Nieuwenhuizen <janneke@gnu.org>  Wed, 17 Sep 2003 18:46:53 +0200
-
-lilypond (1.8.1-12) unstable; urgency=low
-
-  * Cygwin build fix: add cygwin-specific profile and postinstall scripts.
-
- -- Jan Nieuwenhuizen <janneke@gnu.org>  Fri, 29 Aug 2003 13:10:17 +0200
-  
-lilypond (1.8.1-11) unstable; urgency=low
-
-  * New upstream release.
-  * ly2dvi fixes for /dev/std* redirection in Python's os.system () for
-    when /bin/sh is the lesser /bin/ash from CVS.
-  * lilypond-book fix from CVS.
-
- -- Jan Nieuwenhuizen <janneke@gnu.org>  Wed, 27 Aug 2003 19:29:23 +0200
-
-lilypond (1.8.0-11) unstable; urgency=low
-
-  * New upstream release.
-  * Build on 1.5.1.
-  * Omit moving of /usr/share/doc -> /usr/doc.
-
- -- Jan Nieuwenhuizen <janneke@gnu.org>  Thu,  7 Aug 2003 17:47:52 +0200
-
-lilypond (1.7.29-11) unstable; urgency=low
-
-  * New upstream release; pre1.8 build.
-  * Build for 1.5 abi.
-
- -- Jan Nieuwenhuizen <janneke@gnu.org>  Sun, 27 Jul 2003 22:44:27 +0200
-
-lilypond (1.7.28-2) unstable; urgency=low
-
-  * New upstream release; pre1.8 build.
-
- -- Jan Nieuwenhuizen <janneke@gnu.org>  Thu, 24 Jul 2003 19:31:59 +0200
-
-lilypond (1.7.25-1) unstable; urgency=low
-
-  * New upstream release: pre1.8 build.
-
- -- Jan Nieuwenhuizen <janneke@gnu.org>  Fri, 18 Jul 2003 14:08:55 +0200
-
-lilypond (1.6.5-1) unstable; urgency=low
-
-  * New upstream release.
-
- -- Jan Nieuwenhuizen <janneke@gnu.org>  Mon,  7 Oct 2002 14:54:12 +0200
-
-lilypond (1.6.4-1) stable; urgency=low
-
-  * New upstream release.
-
- -- Jan Nieuwenhuizen <janneke@gnu.org>  Fri, 20 Sep 2002 23:02:21 +0200
-
-lilypond (1.6.0-1) stable; urgency=low
-
-  * New upstream release.
-
- -- Jan Nieuwenhuizen <janneke@gnu.org>  Mon, 19 Aug 2002 16:03:02 +0200
-
-lilypond (1.5.73-1) unstable; urgency=low
-
-  * New upstream release.
-  * Fix man pages for midi2ly and lilypond.
-
- -- Jan Nieuwenhuizen <janneke@gnu.org>  Wed, 14 Aug 2002 00:58:58 +0200
-
-lilypond (1.5.71.jcn2-1) unstable; urgency=low
-
-  * lilypond-doc.hint (category): doc.
-  * mknetnel: Also install pfa's.
-  
- -- Jan Nieuwenhuizen <janneke@gnu.org>  Fri,  9 Aug 2002 18:28:27 +0200
-
-lilypond (1.5.71.jcn1-1) unstable; urgency=low
-
-  * Python module now named midi.dll.
-  * Fix detection of Cygwin build, which fixes installation of profile.d
-    scripts.
-  * Build fix.
-
- -- Jan Nieuwenhuizen <janneke@gnu.org>  Fri,  9 Aug 2002 17:47:41 +0200
-
-lilypond (1.5.68.jcn1-1) unstable; urgency=low
-
-  * First full mknetrel build.
-
- -- Jan Nieuwenhuizen <janneke@gnu.org>  Thu, 18 Jul 2002 01:35:18 +0200
-
-lilypond (1.5.64.jcn1-1) unstable; urgency=low
-
-  * Initial Release.
-
- -- Jan Nieuwenhuizen <janneke@gnu.org>  Thu,  4 Jul 2002 12:54:08 +0200
-
-
diff --git a/cygwin/lily-wins.py b/cygwin/lily-wins.py
deleted file mode 100644
index 299cfe46f8..0000000000
--- a/cygwin/lily-wins.py
+++ /dev/null
@@ -1,91 +0,0 @@
-#!@PYTHON@
-# lily-wins.py -- LilyPond command for .ly on Windows
-
-import os
-import re
-import sys
-
-def usage ():
-	print 'Usage [-h,--help] lily-wins LY-FILE'
-
-# print debugging stuff for now
-def debug (s):
-	print s
-
-def read_pipe (command):
-	debug ('command:' + command)
-	s = os.popen (command).read ()
-	if s and s[-1] == '\n':
-		return s[:-1]
-	return s 
-
-def system (command):
-	debug ('command:' + command)
-	os.system (command)
-
-def strip_extension (f, ext):
-	(p, e) = os.path.splitext (f)
-	if e == ext:
-		e = ''
-	return p + e
-
-def escape_shell (x):
- 	return re.sub ("(\s|[`'\"\\\\])", r'\\\1',x)
-#	return re.sub (r'''([^\\])([`'"\\\s])''', r'\1\\\2', x)
-        # help emacs'" broken python mode
-	
-debug (`sys.argv`)
-
-if len (sys.argv) != 2 \
-   or sys.argv[1] == '-h' or sys.argv[1] == '--help':
-	usage ()
-	sys.exit (0)
-	
-native_file = sys.argv[1]
-	
-file = read_pipe ('/usr/bin/cygpath -au %s' % escape_shell (native_file))
-if not file:
-	file = native_file
-
-cwd = os.getcwd ()
-
-dir = os.path.dirname (file)
-if not dir:
-	dir = '.'
-base = os.path.basename (file)
-stem = strip_extension (base, '.ly')
-print `vars ()`
-
-native_base = '%(dir)s/%(stem)s' % vars ()
-native_base = read_pipe ('/usr/bin/cygpath -aw %s' % escape_shell (native_base))
-			 
-if not native_base:
-	native_base = '%(dir)s/%(stem)s' % vars ()
-
-pdfname = read_pipe ('/usr/bin/regtool get /root/.pdf/')
-pdfopencommand = read_pipe ('/usr/bin/regtool get /root/%s/shell/open/command/' % escape_shell (pdfname))
-
-# hmm
-native_view = re.sub ('"([^"]*).*"', '\\1', pdfopencommand)
-if not native_view:
-	native_view = 'acrobat'
-	
-if native_view:
-	pdfview = read_pipe ('/usr/bin/cygpath -au %s' % escape_shell (native_view))
-if not pdfview:
-	# message box?
-	sys.stderr.write ('no pdf viewer found\n')
-	pdfview = 'xpdf'
-
-os.chdir (dir)
-if os.path.exists ('/usr/bin/ly2dvi'):
-	system ('/usr/bin/ly2dvi -p %s > %s.log 2>&1' % (escape_shell (base),
-							 escape_shell (stem)))
-else:
-	system ('/usr/bin/lilypond %s > %s.log 2>&1' % (escape_shell (base),
-							escape_shell (stem)))
-if not os.path.exists ('%(stem)s.pdf' % vars ()):
-	# message box?
-	sys.stderr.write ('pdf output not found\n')
-
-system ('%s %s.pdf' % (escape_shell (pdfview), escape_shell (native_base)))
diff --git a/cygwin/lilypond-doc.hint b/cygwin/lilypond-doc.hint
deleted file mode 100644
index 83c6d795f7..0000000000
--- a/cygwin/lilypond-doc.hint
+++ /dev/null
@@ -1,8 +0,0 @@
-sdesc: "LilyPond documentation."
-test: 1.9.8-1
-curr: 1.8.2-1
-category: Doc
-ldesc: "LilyPond Documentation in HTML, PS, PDF and DVI formats.  This
-package contains the HTML, PostScript PDF and DVI documentation for
-the LilyPond music typesetting software.  Info and man pages are in
-the lilypond package."
diff --git a/cygwin/lilypond.hint b/cygwin/lilypond.hint
deleted file mode 100644
index 7878a9ce0a..0000000000
--- a/cygwin/lilypond.hint
+++ /dev/null
@@ -1,11 +0,0 @@
-sdesc: "A program for printing sheet music"
-test: 1.9.8-1
-curr: 1.8.2-1
-category: Publishing
-requires: bash cygwin fileutils findutils ghostscript libguile12abi13 libguile12 libiconv2 libintl2 libkpathsea3 libkpathsea3abi13 python tetex-bin tetex-tiny
-#requires: tetex-bin, tetex-tiny | tetex-base
-#suggests: emacs gsview lilypond-doc rxvt tetex-x11 XFree86-serv
-ldesc: "A program for printing sheet music.
-LilyPond prints beautiful sheet music.  It produces music notation
-from a description file. It excels at typesetting classical music, but
-you can also print pop-songs.  LilyPond is part of the GNU Project."
\ No newline at end of file
diff --git a/cygwin/mknetrel b/cygwin/mknetrel
deleted file mode 100644
index 49954d4f5f..0000000000
--- a/cygwin/mknetrel
+++ /dev/null
@@ -1,169 +0,0 @@
-# -*- shell-script -*-
-# cygwin/mknetrel - LilyPond mknetrel overrides
-
-# This script should be used to package LilyPond for Cygwin.
-# It can be used to build LilyPond on Cygwin, but also on GNU/Linux.
-#
-# See http://lilypond.org/web/devel/packaging.html for more information,
-# report bugs to bug-lilypond@gnu.org.
-#
-# To build the package, do:
-cat >/dev/null <<EOC
-
-   cd /
-   cvs -d:pserver:anoncvs@sources.redhat.com:/cvs/cygwin-apps co -d netrel mknetrel
-   wget -P/var/tmp ftp://lilypond.org/pub/LilyPond/v1.9/lilypond-1.9.9.tar.gz
-   mkdir -p /netrel/src && cd /netrel/src
-   rm -rf /netrel/src/lilypond-*
-   tar xzf /var/tmp/lilypond-*
-   mv lilypond-1.9.9 lilypond-1.9.9-1
-   cp lilypond-1.9.9-1/cygwin/mknetrel /netrel/extra/lilypond
-   /netrel/bin/mknetrel -xX lilypond
-
-EOC
-
-sub_packages="doc"
-old_path=$PATH
-
-patch=$mknetrel_root/patch
-
-# for cross-compiling LilyPond:
-if ! iscygwin; then
-    uploads=$here/uploads/$base && mkdir -p $uploads/
-    tarstem=$uploads/$package
-fi
-
-# copy and include extra mknetrel stuff
-extras="doc patch auto cross split"
-for i in $extras; do
-    f=mknetrel.$i
-    [ -r $extra/$f ] && cp -pv $extra/$f $src/cygwin/$f
-    . $src/cygwin/$f
-done
-
-
-needdevoflags () {
-    return 1
-}
-
-preconfig () {
-
-    patchsrc 
-    rm -f config.cache
-
-    # for cross-compiling LilyPond, fake a guile-config
-    if ! iscygwin; then
-	cd $build || exit 1
-	GUILE=1.6.4
-	cat > guile-config <<EOF
-[ "\$1" == "--version" ] && echo "guile-config - Guile version $GUILE"
-[ "\$1" == "compile" ] && echo "-I$cygwin_root/usr/include"
-[ "\$1" == "link" ] && echo "-L$cygwin_root/usr/lib -lguile"
-exit 0
-EOF
-	chmod 755 guile-config
-	PATH=$(pwd):$PATH
-    fi
-}
-
-postconfig () {
-    # cross-compiling: configure for build-host
-    if ! iscygwin; then
-	rm -f config.cache
-	export HOST_CC=gcc
-	export HOST_CXX=g++
-	if [ "$ABI" = "1.3" ]; then
-	    HOST_CC=gcc-2.95
-	    HOST_CXX=g++-2.95
-	    (cd $src && ln -s GNUmakefile.in GNUmakefile)
-	fi
-	(PATH="$old_path" \
-	    PATH="$HOME/usr/pkg/guile-1.6/bin:$PATH" \
-	    CFLAGS="-O2 -g" \
-	    CC=$HOST_CC \
-	    CXX=$HOST_CXX \
-	    $src/configure --prefix=/usr --enable-config=for-build)
-    fi
-}
-
-prebuild () {
-    for i in $sub_packages; do
-	rm -rf $inst-$i
-	mkdir -p $inst-$i || exit 1
-    done
-    
-    # cross-compiling: build for build-host, generate doc
-    if ! iscygwin; then
-	cd $build || exit 1
-
-	PATH=/bin:/usr/bin:$PATH \
-	    make conf=for-build all doc web || exit 1
-	
-	mkdir -p mf/out
-	cp -pv mf/out-for-build/* mf/out
-    fi
-
-    # set LDFLAGS to find the python library
-    # EXTRABUILDARGS="LDFLAGS=$cygwin_root/usr/bin/libpython2.3.dll"
-
-    addmakeflags LDFLAGS="$cygwin_root/usr/bin/libpython2.3.dll" ' ' "target=i686-pc-cygwin" ' '
-
-    if iscygwin; then
-	# EXTRABUILDARGS="$EXTRABUILDARGS all doc web"
-	addmakeflags all ' ' doc ' ' web ' '
-    fi
-}
-
-preinstall () {
-
-    # set LDFLAGS to find the python library
-    # addmakeflags LDFLAGS="$cygwin_root/usr/bin/libpython2.3.dll" ' ' "target=i686-pc-cygwin"
-#    if ! iscygwin; then
-#	EXTRAINSTALLARGS="target=i686-pc-cygwin"
-#    else
-    if iscygwin; then
-	#EXTRAINSTALLARGS="web-install target=i686-pc-cygwin"
-	addmakeflags webdir="$inst-doc/$packagedocdir" ' ' web-install
-    fi
-}
-
-postinstall () {
-    fixdoc
-    
-    mkdir -p $inst-doc/$docprefix
-    cd $build || exit 1
-    
-    if ! iscygwin; then
-	make conf=for-build webdir=$inst-doc/$packagedocdir web-install
-    fi
-
-    ## copy READMEs etc
-
-    cd $src || exit 1
-    install -d -m755 $inst/$packagedocdir
-
-    install -m644  COPYING ChangeLog DEDICATION THANKS VERSION $inst/$packagedocdir
-
-    # txt files reside elsewhere
-    cd $build/Documentation/topdocs/out
-    install -m644 AUTHORS.txt INSTALL.txt NEWS.txt README.txt $inst/$packagedocdir
-
-    ## Cygwin readmes
-    cygwin=cygwin
-    cd $src || exit 1
-    install -d -m755 $inst/$cygdocdir
-    install -m644 $cygwin/changelog $inst/$cygdocdir/changelog.Cygwin
-
-    cd $build || exit 1
-    install -m644 $cygwin/out/README $inst/$packagedocdir/README.Cygwin
-    install -m644 $cygwin/out/README $inst/$cygdocdir/$package.README
-
-    ## copy examples
-    cd $src || exit 1
-    cp -prv input $inst/$packagedocdir
-       cd $inst/$packagedocdir
-       rm -rf $(find -name 'CVS')
-
-    #cd $inst-doc/$packagedocdir &&
-    #ln -s $(find html/Documentation -name '*.ps.gz') .
-}
diff --git a/cygwin/mknetrel.auto b/cygwin/mknetrel.auto
deleted file mode 100644
index 75875c74c6..0000000000
--- a/cygwin/mknetrel.auto
+++ /dev/null
@@ -1,21 +0,0 @@
-# -*- shell-script -*-
-
-#
-# mknetrel.split -- autotools
-#
-
-autoupdate () {
-    for i in bootstrap autogen.sh; do
-	if [ -x ./$i ]; then
-	    ./$i || exit 1
-	    return 0
-	fi
-    done
-    
-    aclocal
-    rm -rf libltdl
-    libtoolize --force --copy --automake --ltdl
-    autoheader
-    autoconf
-    automake --add-missing
-}
diff --git a/cygwin/mknetrel.cross b/cygwin/mknetrel.cross
deleted file mode 100644
index e002f44b25..0000000000
--- a/cygwin/mknetrel.cross
+++ /dev/null
@@ -1,47 +0,0 @@
-# -*- shell-script -*-
-
-#
-# mknetrel.cross -- set cross.cache for configure
-#
-
-crosscache () {
-	cat <<EOF > config.cache
-ac_cv_c_bigendian=\${ac_cv_c_bigendian=no}
-ac_cv_sizeof_char=\${ac_cv_sizeof_char=1}
-ac_cv_sizeof_char_p=\${ac_cv_sizeof_char_p=4}
-ac_cv_sizeof_double=\${ac_cv_sizeof_double=8}
-ac_cv_sizeof_float=\${ac_cv_sizeof_float=4}
-ac_cv_sizeof_int=\${ac_cv_sizeof_int=4}
-ac_cv_sizeof_long=\${ac_cv_sizeof_long=4}
-ac_cv_sizeof_long_double=\${ac_cv_sizeof_long_double=12}
-ac_cv_sizeof_long_long=\${ac_cv_sizeof_long_long=8}
-ac_cv_sizeof_short=\${ac_cv_sizeof_short=2}
-ac_cv_sizeof_void_p=\${ac_cv_sizeof_void_p=4}
-ac_cv_c_long_size_t=\${ac_cv_c_long_size_t=no}
-ac_cv_c_long_time_t=\${ac_cv_c_long_time_t=yes}
-ac_16bit_type=\${ac_16bit_type=short}
-ac_32bit_type=\${ac_32bit_type=int}
-ac_64bit_type=\${ac_64bit_type=none}
-ac_cv_sys_restartable_syscalls=\${ac_cv_sys_restartable_syscalls=no}
-ac_cv_sprintf_count=\${ac_cv_sprintf_count=yes}
-ac_cv_spinlocks=\${ac_cv_spinlocks=no}
-ac_cv_func_getpgrp_void=\${ac_cv_func_getpgrp_void=yes}
-ac_cv_func_setvbuf_reversed=\${ac_cv_func_setvbuf_reversed=no}
-ac_cv_func_mkfifo=yes
-ac_cv_search_dlopen=\${ac_cv_search_dlopen="none required"}
-ac_exeext=\${ac_exeext=}
-ac_cv_exeext=\${ac_cv_exeext=}
-
-# libtool searches not only in the cross libpath
-#     /cygwin/usr/lib:/cygwin/usr/lib/w32api:/usr/i686-cygwin/lib
-# but also in /usr/lib.  there it finds libdl.a and adds -ldl
-# to LIBS
-# it seems that libtool is broken wrt cross compilation:
-#    sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib"
-lt_cv_dlopen=\${lt_cv_dlopen="dlopen"}
-lt_cv_dlopen_libs=\${lt_cv_dlopen_libs="none required"}
-ac_cv_lib_dld_shl_load=\${ac_cv_lib_dld_shl_load=no}
-ac_cv_lib_dl_dlopen=\${ac_cv_lib_dl_dlopen=no}
-EOF
-}
-
diff --git a/cygwin/mknetrel.doc b/cygwin/mknetrel.doc
deleted file mode 100644
index 6239e1c4f9..0000000000
--- a/cygwin/mknetrel.doc
+++ /dev/null
@@ -1,37 +0,0 @@
-# -*- shell-script -*-
-
-#
-# mknetrel.doc -- fixup doc
-#
-
-if [ "$ABI" = "1.3" ]; then
-    docprefix=$prefix
-else
-    docprefix=$prefix/share
-fi
-
-docdir=$docprefix/doc
-
-cygdocdir=$docdir/Cygwin
-infodir=$docprefix/info
-mandir=$docprefix/man
-packagedocdir=$docdir/$base-$ver
-
-if [ "$ABI" = "1.3" ]; then
-fixdoc () { :; }
-else
-fixdoc () {
-    #
-    cd $inst || exit 1
-    mkdir -p $inst/$docprefix
-    for i in info man doc; do
-	#if [ -d $inst/$docprefix/$i ]; then
-	if [ -d $inst/$prefix/$i ]; then
-	    cd $inst/$prefix
-	    tar -cf - $i | tar -C $inst/$docprefix -xf -
-	    rm -rf $inst/$prefix/$i
-	fi
-    done
-    true
-}
-fi
diff --git a/cygwin/mknetrel.patch b/cygwin/mknetrel.patch
deleted file mode 100644
index 31eed60f83..0000000000
--- a/cygwin/mknetrel.patch
+++ /dev/null
@@ -1,18 +0,0 @@
-# -*- shell-script -*-
-
-#
-# mknetrel.patch -- patch sources
-#
-
-dopatchsrc () {
-    cd $src
-    cp -p $patch/$package.patch $src/cygwin/
-    patch -p1 < $patch/$package.patch
-    [ -d cygwin -a ! -e CYGWIN-PATCHES ] && ln -s cygwin CYGWIN-PATCHES
-    [ -d CYGWIN-PATCHES -a ! -e cygwin ] && ln -s CYGWIN-PATCHES cygwin
-    [ -d CYGWIN-PATCHES ] || mkdir CYGWIN-PATCHES
-}
-
-patchsrc () {
-    [ -r $patch/$package.patch -a ! -r $src/CYGWIN-PATCHES -a ! -r $src/cygwin ] && dopatchsrc
-}
diff --git a/cygwin/mknetrel.split b/cygwin/mknetrel.split
deleted file mode 100644
index a2ce0cb9e6..0000000000
--- a/cygwin/mknetrel.split
+++ /dev/null
@@ -1,125 +0,0 @@
-# -*- shell-script -*-
-
-#
-# mknetrel.split -- split subpackages
-#
-
-presplit () { true; }
-
-lib_name () {
-    echo lib$base$sover
-}
-
-devel_name () {
-    echo $base-devel
-}
-
-doc_name () {
-    echo $base-doc
-}
-
-lib_split () {
-    mkdir -p ./$prefix/bin || exit 1
-    mv $inst/$prefix/bin/*.dll ./$prefix/bin
-    # dlopen-able .la files go in BIN dir, lib package
-    mkdir -p ./$prefix/bin || exit 1
-    mv $inst/$prefix/lib/lib*[0-9]*.la ./$prefix/bin
-    mkdir -p ./$prefix/share || exit 1
-    mv $inst/$prefix/share/$base ./$prefix/share
-    true
-}
-   
-devel_split () {
-    mkdir -p ./$prefix/bin || exit 1
-    mv $inst/$prefix/include ./$prefix/include
-    mkdir -p ./$prefix/lib || exit 1
-    mv $inst/$prefix/lib/*.a ./$prefix/lib
-    # link time .la files go in LIB dir devel package
-    mkdir -p ./$prefix/lib || exit 1
-    mv $inst/$prefix/lib/*.la ./$prefix/lib
-    mkdir -p ./$prefix/share || exit 1
-    mv $inst/$prefix/share/aclocal ./$prefix/share
-    true
-}
-
-doc_split () {
-    mkdir -p ./$docprefix || exit 1
-    #mv $inst/$infodir ./$infodir
-    true
-}
-
-prebuild () {
-    for i in $sub_packages; do
-	rm -rf $inst-$i
-	mkdir -p $inst-$i || exit 1
-    done
-}
-    
-domkdist() {
-    #
-    # Fix up installation slightly
-    #
-    cd $inst || exit 1
-    chmod -R u+w,og-w,a+rX .
-    cd usr 2>/dev/null && dousrstuff
-
-    # Split off any sub-packages.  The actual splitting is handled by
-    # a package's specific code in extra/.
-
-    # To package `foo' in foo, foo-doc and foo-devel, set
-    # sub_packages='doc devel'.
-
-    # Then provide functions doc_name and devel_name, that return the
-    # full name of the sub-package.  Also provide functions doc_split
-    # and devel_split, that mv part of foo's installation in $inst to
-    # the sub-packages' installation roots $inst-doc and $inst-devel.
-
-    cd $inst || exit 1
-    presplit
-
-    for i in $sub_packages; do
-	subname=$(${i}_name)
-  	cd $inst-$i || exit 1
-	${i}_split || exit 1
-    done
-    
-    cd $inst || exit 1
-    prepackage
-
-    cd $inst || exit 1
-    hard2soft
-
-    #
-    # Make tar balls
-    #
-
-    # The base package
-    echo creating $tarstem.tar.bz2
-    cd $inst || exit 1
-
-    f=$src/cygwin/setup.hint && test -r $f && cp $f $uploads
-    f=$src/cygwin/$base.hint && test -r $f && cp $f $uploads/setup.hint
-    find * -print | sort | tar -T - --no-recursion --owner=0 --group=0 -cjf $tarstem.tar.bz2
-
-    # Any sub-packages
-    for i in $sub_packages; do
-	subname=$(${i}_name)
-	subload=$uploads/$subname
-	subtarstem=$subload/$subname-$ver
-	mkdir -p $subload || exit 1
-	echo creating $subtarstem.tar.bz2
-	f=$src/cygwin/$subname.hint && test -r $f && cp $f $subload/setup.hint
-  	cd $inst-$i
-	hard2soft
-	find * -print | sort | tar -T - --no-recursion --owner=0 --group=0 -cjf $subtarstem.tar.bz2
-    done
-
-    # The source package
-    cd $src/.. || exit 1
-    echo creating "$tarstem"-src.tar.bz2
-    find $package_src/* -print -follow | egrep -v '\.cvsignore|\.bak$|\.orig$|\.o$|~$|^.#|CVS|%redact|/tags$' | egrep -v "$src_exclude" | sort | tar -T - --no-recursion --owner=0 --group=0 -cjf "$tarstem"-src.tar.bz2
-    postpackage
-}
-
-
-
diff --git a/cygwin/postinstall-lilypond.sh b/cygwin/postinstall-lilypond.sh
deleted file mode 100644
index b7b4b50947..0000000000
--- a/cygwin/postinstall-lilypond.sh
+++ /dev/null
@@ -1,59 +0,0 @@
-#!@SHELL@
-# /etc/postinstall/lilypond.sh  -- Setup LilyPond
-
-# register .ly
-ROOT=$(cygpath -w /)
-[ -z "$ROOT" ] && ROOT=$(regtool get '/machine/Software/Cygnus Solutions/Cygwin/mounts v2/\\\//native')
-[ -z "$ROOT" ] && ROOT=$(cat '/proc/registry/HKEY_LOCAL_MACHINE/Software/Cygnus Solutions/Cygwin/mounts v2/\\\//native')
-[ -z "$ROOT" ] && ROOT='c:\cygwin'
-
-regtool add '/root/.ly'
-regtool set '/root/.ly/' 'LilyPond'
-regtool set '/root/.ly/Content Type' 'text/lilypond-source'
-regtool add '/root/LilyPond'
-regtool set '/root/LilyPond/' 'LilyPond source'
-regtool add '/root/LilyPond/shell'
-regtool add '/root/LilyPond/shell/open'
-regtool add '/root/LilyPond/shell/open/command'
-
-# old ideas - discarded for now
-# regtool set '/root/LilyPond/shell/open/command/' $ROOT'\bin\python /usr/bin/lily-wins %1'
-# invoking python directly does not work
-# regtool set '/root/LilyPond/shell/open/command/' $ROOT'\bin\run-lily-wins.bat %1'
-# we now use generated run-lily-wins.bat in /
-# regtool set '/root/LilyPond/shell/open/command/' $ROOT'\run-lily-wins.bat %1'
-# the direct bash route:
-
-# TODO: should 'open' run LilyPond?
-#       should 'open' also start PDF viewer?
-regtool set '/root/LilyPond/shell/open/command/' $ROOT'\bin\bash.exe --login -c '"'"'/usr/bin/lily-wins "%1"'"'"
-regtool add '/root/LilyPond/shell/edit'
-regtool set '/root/LilyPond/shell/edit/' '&Edit source in Notepad ...'
-regtool add '/root/LilyPond/shell/edit/command'
-regtool set '/root/LilyPond/shell/edit/command/' '%SystemRoot%\system32\notepad.exe %1'
-regtool add '/root/LilyPond/shell/generate'
-regtool set '/root/LilyPond/shell/generate/' '&Generate PDF ...'
-regtool add '/root/LilyPond/shell/generate/command'
-# regtool set '/root/LilyPond/shell/generate/command/' $ROOT'\bin\python /usr/bin/lily-wins %1'
-regtool set '/root/LilyPond/shell/generate/command/' $ROOT'\bin\bash.exe --login -c '"'"'/usr/bin/lily-wins "%1"'"'"
-
-# static run-lily-wins.bat, does not work.
-# @echo off
-# rem run-lily-wins.bat - Invoke /usr/bin/lily-wins from explorer
-# rem cd %~dp0%
-# rem bash.exe --login -c "/usr/bin/lily-wins '%1%'"
-# rem only works in Windows NT
-# rem %~dp0~bin\bash.exe --login -c "/usr/bin/lily-wins '%1%'"
-
-# generate run-lily-wins.bat - not necessary: direct bash route
-# how to handle \r\n endings? text/bin mode?
-#cat > /run-lily-wins.bat <<EOF
-#@echo off
-#rem run-lily-wins.bat - Invoke /usr/bin/lily-wins from explorer
-#$ROOT\\bin\\bash.exe --login -c "/usr/bin/lily-wins '%1%'"
-#EOF
-
-# cleanup old fonts
-touch /tmp/.lilypond-install
-rm $(find /var/lib/texmf /var/spool/texmf /var/cache/fonts -name 'feta*pk' -or -name 'feta*tfm' -or -name 'parmesan*pk' -or -name 'parmesan*tfm')
-rm -f /tmp/.lilypond-install
diff --git a/cygwin/postremove-lilypond.sh b/cygwin/postremove-lilypond.sh
deleted file mode 100644
index d7ab762cc5..0000000000
--- a/cygwin/postremove-lilypond.sh
+++ /dev/null
@@ -1,17 +0,0 @@
-#!@SHELL@
-# /etc/postremove/lilypond.sh -- Remove all traces of LilyPond
-
-regtool remove '/root/.ly'
-regtool remove '/root/LilyPond/shell/open/command'
-regtool remove '/root/LilyPond/shell/open'
-regtool remove '/root/LilyPond/shell/edit/command'
-regtool remove '/root/LilyPond/shell/edit'
-regtool remove '/root/LilyPond/shell/generate/command'
-regtool remove '/root/LilyPond/shell/generate'
-regtool remove '/root/LilyPond/shell'
-regtool remove '/root/LilyPond'
-
-# cleanup old fonts
-touch /tmp/.lilypond-install
-rm $(find /var/lib/texmf /var/spool/texmf /var/cache/fonts -name 'feta*pk' -or -name 'feta*tfm' -or -name 'parmesan*pk' -or -name 'parmesan*tfm')
-rm -f /tmp/.lilypond-install
diff --git a/darwin.patch b/darwin.patch
deleted file mode 100644
index f50c32de44..0000000000
--- a/darwin.patch
+++ /dev/null
@@ -1,32 +0,0 @@
---- lily/out/parser.hh.orig	Tue Mar 12 16:10:02 2002
-+++ lily/out/parser.hh	Tue Mar 12 16:23:58 2002
-@@ -14,7 +14,7 @@
- 
-     Request * request;
- 
--    //* We use SCMs to do strings, because it saves us the trouble of
-+    /* We use SCMs to do strings, because it saves us the trouble of
- deleting them.  Let's hope that a stack overflow doesnt trigger a move
- of the parse stack onto the heap. */
- 
---- lily/out/parser.cc.orig	Tue Mar 12 16:08:40 2002
-+++ lily/out/parser.cc	Tue Mar 12 16:16:02 2002
-@@ -227,7 +227,7 @@
- 
- 
- // needed for bison.simple's malloc () and free ()
--#include <malloc.h>
-+#include <stdlib.h>
- 
- #ifndef NDEBUG
- #define YYDEBUG 1
-@@ -258,7 +258,7 @@
- 
-     Request * request;
- 
--    //* We use SCMs to do strings, because it saves us the trouble of
-+    /* We use SCMs to do strings, because it saves us the trouble of
- deleting them.  Let's hope that a stack overflow doesnt trigger a move
- of the parse stack onto the heap. */
- 
-     SCM scm;
diff --git a/debian/GNUmakefile b/debian/GNUmakefile
deleted file mode 100644
index 1239828f36..0000000000
--- a/debian/GNUmakefile
+++ /dev/null
@@ -1,23 +0,0 @@
-# debian/Makefile
-
-depth = ..
-
-NAME = debian
-at-dir = $(outdir)/
-at-ext =
-
-CONF_FILES = changelog control copyright emacsen-startup \
-	preinst postinst postrm prerm rules watch
-EXTRA_DIST_FILES = README.Debian $(CONF_FILES) \
-	control.foka control.potato \
-	lilypond.dirs lilypond.doc-base \
-	lilypond-doc.dirs lilypond-doc.doc-base lilypond-doc.README.Debian \
-	lilypond1.3.copyright \
-	lilypond1.7.dirs lilypond1.7-doc.dirs
-#OUTCONF_FILES = $(addprefix $(outdir)/, $(basename $(CONF_FILES))) $(OUTIN_FILES)
-OUTCONF_FILES = $(OUTIN_FILES)
-OUT_DIST_FILES = $(OUTIN_FILES)
-
-STEPMAKE_TEMPLATES = debian
-include $(depth)/make/stepmake.make 
-
diff --git a/debian/README.Debian b/debian/README.Debian
deleted file mode 100644
index c257da906c..0000000000
--- a/debian/README.Debian
+++ /dev/null
@@ -1,43 +0,0 @@
-lilypond for Debian
--------------------
-
-Dear music lover:
-
-  Welcome to the wonderful world of music typesetting!  ^_^
-  This is the Debian package of GNU LilyPond.
-  Hope you enjoy producing beautiful music scores with GNU LilyPond
-  and other related packages!  ^_^
-
-  Note:
-    If you experience problems about missing EC fonts during the TeX run,
-    please make sure you have the tetex-extra package installed.
-
-Old LilyPond Fonts Issue:
-~~~~~~~~~~~~~~~~~~~~~~~~~
-
-  If you installed the lilypond_0.1.48-1 or previous versions of the
-  Debian GNU LilyPond package, please note the following:
-
-    LilyPond comes with its own MF fonts starting with version 0.1.12.
-
-    The old lilypond fonts were not listed in
-    /usr/lib/texmf/fontname/special.map (from the teTeX 0.4 package),
-    therefore the fonts were created in a non-standard directory
-    somewhere under /var/spool/texmf.  The problem was usually only
-    aesthetic.  TeTeX could create and find the *.tfm and *.pk files
-    without any problems.
-
-    However, if you experience any font problems (such as the note
-    heads not showing up, characters in the wrong places, error
-    messages from TeX), especially after upgrading to a new version of
-    LilyPond, you may need to delete the relevant *.tfm and *.pk files
-    under the directory /var/spool/texmf.  You may also file a bug
-    report about this if you like.
-
-  Nonetheless, GNU LilyPond now comes with the standard "feta" fonts,
-  and they are already listed in the latest teTeX 0.9 / Web2C 7.2
-  /usr/share/texmf/fontname/special.map file, so there shouldn't be any
-  more problems!  Enjoy!  :-)
-
-
-Anthony Fok <foka@debian.org>, Wed,  7 Jul 1999 15:19:48 -0600
diff --git a/debian/changelog b/debian/changelog
deleted file mode 100644
index d4c384b66d..0000000000
--- a/debian/changelog
+++ /dev/null
@@ -1,1012 +0,0 @@
-lilypond (2.1.0-1) unstable; urgency=low
-
-  * New upstream release.
-  * Build-Requires: pfaedit (>= 0.0.20031020-3) to prevent FTBFS on alpha.
-    Thanks to Petter Reinholdtsen for the bug report, and thanks to
-     Peter Hawkins for adopting the PfaEdit package!  (Closes: Bug#217216)
-  * Build process used to redirect to /dev/stderr which does not exist in
-    all environments.  Upstream replaced it with ">&2" in 1.9.0 in August.
-    Thanks to Daniel Schepler for the bug report.  (Closes: #215481)
-  * Added symlink from /usr/share/lilypond/$(VERSION)/fonts/type1 to
-    /usr/share/texmf/fonts/type1/public/lilypond.  Thanks to Pedro Kroger
-    and Mats Bengtsson's discussion on the lilypond-devel:
-    http://mail.gnu.org/archive/html/lilypond-devel/2003-10/msg00016.html
-
- -- Anthony Fok <foka@debian.org>  Sat, 25 Oct 2003 19:34:41 +0800
-
-lilypond (1.8.1-1) unstable; urgency=low
-
-  * New upstream release.
-  * Thanks to Jan Nieuwenhuizen for the following fixes:
-    debian/control (Build-Depends): Add flex-old as alternative to flex.
-                                    Deprecate bison 1.75.
-
- -- Anthony Fok <foka@debian.org>  Wed, 27 Aug 2003 00:24:20 +0800
-
-lilypond (1.8.0-1) unstable; urgency=low
-
-  * New upstream release.
-
- -- Anthony Fok <foka@debian.org>  Wed, 13 Aug 2003 00:23:36 +0800
-
-lilypond (1.7.29-1) unstable; urgency=medium
-
-  * New upstream release, preparing for lilypond-1.8.  :-)
-  * stepmake/bin/add-html-footer.py: Use LOGNAME only if it exists.
-    pbuilder unsets LOGNAME and Python returns KeyError.
-    Thanks to Daniel Schepler for the report.  (Closes: Bug#193065)
-  * debian/rules: Revert to calling ./configure rather than ./autogen.sh.
-  * An issue with autoconf <= 2.57 and g++ >= 3.3 has been preventing
-    getopt-long.cc from compiling.  A workaround was checked in by upstream
-    author Jan Nieuwenhuizen on 2003-06-08, and the fix in aclocal.m4 was
-    backported from 1.7.29.  (Closes: Bug#197761)
-  * Mark Brown says 1.7.27 has fixed FTBFS on m86k too.  Thanks for the
-    note!  (Closes: Bug#200510)
-  * Run dh_scrollkeeper to register *.omf files.
-
- -- Anthony Fok <foka@debian.org>  Fri,  1 Aug 2003 05:40:04 +0800
-
-lilypond (1.6.9-2) unstable; urgency=medium
-
-  * CVS updates as of 2003-04-29.  (Thanks, Jan!)
-  * "Empty midi2ly.1" problem has been fixed upstream.  (Closes: Bug#181927)
-  * Build-Depends: autoconf2.13 and run autogen.sh in debian/rules
-    to ensure this package passes the auto-build daemons.  :-)
-
- -- Anthony Fok <foka@debian.org>  Thu,  1 May 2003 13:18:57 +0800
-
-lilypond (1.6.9-1) unstable; urgency=medium
-
-  * New upstream release with CVS updates as of 2003-04-15.
-    Jan Nieuwenhuizen has backported fixes to deal with build problems
-    with flex (>= 2.5.29).
-  * Rebuild with guile-1.6 packages.
-  * Merged debian/* fixes by upstream author Jan Nieuwenhuizen (Thanks!):
-    - Depend on mftrace (>= 1.0.17-1) instead of pktrace.
-    - Add guile-1.6-dev as alternative dependency to libguile-dev
-    - Bugfix for docdir when with changed package name.
-    - Remove bibtex2html dependencies.  (LilyPond has come with its own
-      bib2html for some time now.  However, xpmtoppm and pnmtopng from
-      netpbm is still needed - foka)
-    - Remove gcc-3.x/lexer kludge.
-  * midi2ly.1 was empty because help2man calls midi2ly but it couldn't
-    "import midi": python/out/midi.so wasn't built until later.  Added
-    a kludge in debian/rules to regenerate midi2ly.1 manually.
-    Thanks to Colin Watson for reporting the bug.  (See Bug#181927)
-
- -- Anthony Fok <foka@debian.org>  Mon, 28 Apr 2003 03:50:50 +0800
-
-lilypond (1.6.6-2) unstable; urgency=high
-
-  * Hmm, so /usr/share/texmf/dvips/config is an symlink, and thus
-    /usr/share/lilypond/1.6.6/dvips/lilypond.map conflicts with tetex-base.
-    Let's move it to /etc/texmf/dvips/lilypond.map then, and make it a
-    conffile.  Thanks for all the (duplicate) bug reports!  ;-)
-    (Closes: Bug#169811, #169812, #169877, #169946)
-
- -- Anthony Fok <foka@debian.org>  Sat, 23 Nov 2002 19:21:04 +0800
-
-lilypond (1.6.6-1) unstable; urgency=medium
-
-  * New upstream release.
-  * Updated Debian section in Documentation/topdocs/INSTALL.texi.
-  * FTBFS bug due to bugs in bison-1.50.  Now explicitly Build-Depends
-    on bison << 1:1.50 or >= 1:1.75-1.  (Closes: Bug#165662)
-
- -- Anthony Fok <foka@debian.org>  Tue, 22 Oct 2002 02:05:33 +0800
-
-lilypond (1.6.4-1) unstable; urgency=medium
-
-  * New upstream release.
-  * Higher urgency because of memory corruption bugs in previous releases.
-
- -- Anthony Fok <foka@debian.org>  Sun, 22 Sep 2002 01:55:29 +0800
-
-lilypond (1.6.3-1) unstable; urgency=low
-
-  * New upstream release.
-
- -- Anthony Fok <foka@debian.org>  Sat, 21 Sep 2002 11:14:48 +0800
-
-lilypond (1.6.2-1) unstable; urgency=low
-
-  * New upstream release.
-  * Check g++ version and run lexer-gcc-3.1.sh if necessary.
-
- -- Anthony Fok <foka@debian.org>  Tue, 10 Sep 2002 23:37:27 +0800
-
-lilypond (1.6.0-1) unstable; urgency=medium
-
-  * New upstream release.
-  * binary-arch: Changed "DH_OPTIONS=-a" to "DH_OPTIONS=-s" so that
-    dpkg-gencontrol would not 't choke on lilypond1.3 for unlisted
-    architectures.  Thanks to Ryan Murray for the report and suggested
-    fix.  (Closes: Bug#157766)
-
- -- Anthony Fok <foka@debian.org>  Sun, 25 Aug 2002 11:59:01 +0800
-
-lilypond (1.5.68-2) unstable; urgency=low
-
-  * Oops, I was missing Build-Depends on python-dev.  Thanks to LaMont
-    Jones and his hppa build daemon for the report. (Closes: Bug#153402)
-  * lilypond should Depends instead of Recommends tetex-extra.
-    Thanks to Russell Neches for the report.  (Closes: Bug#152228)
-  * lilypond-indent.el is now installed in lilypond 1.5.x.
-    Thanks to Christophe Rhodes for the report.  (Closes: Bug#139070)
-
- -- Anthony Fok <foka@debian.org>  Thu, 18 Jul 2002 23:41:44 +0800
-
-lilypond (1.5.68-1) unstable; urgency=low
-
-  * New upstream release, gearing up for 1.6.0.
-  * Thanks to upstream author Jan Nieuwenhuizen for updating the Debian
-    package to work with 1.5.68.
-  * As per Jan's suggestion, now Build-Depends: pktrace (>= 1.0.3-1),
-    pfaedit (>= 0.0.20020312-1), autotrace, t1utils
-
- -- Anthony Fok <foka@debian.org>  Wed, 17 Jul 2002 03:20:23 +0800
-
-lilypond (1.4.13-1) unstable; urgency=low
-
-  * New upstream release.
-  * Depends: pktrace
-
- -- Anthony Fok <foka@debian.org>  Mon,  6 May 2002 04:09:32 +0800
-
-lilypond (1.4.12-1) unstable; urgency=high
-
-  * New upstream maintenance release.
-  * Several important fixes (including our bison-related patch added
-    to 1.4.10-1) are included since 1.4.11 this release.  (Now, I
-    don't even need to increase teTeX's extra_mem_top, extra_mem_bot
-    or pool_size!  :-)  Please include in Woody.
-  * Fixed a typo in lilypond-doc package description: typestting ->
-    typesetting.  Thanks, Matt Zimmerman!  (Closes: Bug#125083)
-
- -- Anthony Fok <foka@debian.org>  Sun, 24 Feb 2002 02:06:15 +0800
-
-lilypond (1.4.10-1) unstable; urgency=high
-
-  * New upstream release.
-  * lilypond failed to build with bison >= 1.30 because bison's output file
-    has been renamed.  Applied an upstream fix.  (Closes: Bug#133692)
-  * lilypond's documentation also failed to build with the latest
-    tetex or texinfo package.  Instead of increasing extra_mem_top and
-    extra_mem_bot, increasing pool_size does the trick.
-
- -- Anthony Fok <foka@debian.org>  Mon, 18 Feb 2002 11:41:31 +0800
-
-lilypond (1.4.9-1) unstable; urgency=high
-
-  * New upstream release.
-  * Oops, libc6-dev is known as libc6.1-dev and libc-dev on some
-    architectures.  Fixed Build-Depends so that lilypond can be built
-    on all platforms.  Thanks to Colin Watson for reporting the bug.
-    (Closes: Bug#120208)
-
- -- Anthony Fok <foka@debian.org>  Tue, 27 Nov 2001 23:28:11 +0800
-
-lilypond (1.4.8-2) unstable; urgency=high
-
-  * [debian/rules]: Use -s instead of -a so that lilypond would get built
-     on all architectures even when the dummy lilypond1.3 package isn't
-     built.  Thanks to Ryan Murray for the report.  (Closes: Bug#117622)
-  * Depends on python instead of python-base.  The python scripts in
-    lilypond work with old and new Python versions.
-  * Build-Depends on "-z combreloc"-enabled binutils (>= 2.11.92.0.10-2)
-    and libc6-dev (>= 2.2.4-5) so that lily runs faster!  :-)
-
- -- Anthony Fok <foka@debian.org>  Sun, 11 Nov 2001 10:45:10 +0800
-
-lilypond (1.4.8-1) unstable; urgency=high
-
-  * New upstream release.  (Closes: Bug#111132)
-  * Stopped using $(PWD) in make, as it doesn't seems to work on
-    potato systems with older "make".  Reverted to `pwd`.
-    Thanks to Wolfgang Schnitker for notifying me this problem.
-  * Changed the lilypond1.3 dummy package's Architecture from "all"
-    to "arm i386 m68k powerpc sparc".  Also, as upstream updated
-    config.sub and config.guess to recognize ia64 and hppa.
-    Thanks to Anthony Towns for the bug report.  (Closes: Bug#114266)
-  * Versioned Build-Depends: flex (>= 2.5.4a-14) to ensure gcc-3.0
-    compatibility.
-
- -- Anthony Fok <foka@debian.org>  Sun, 14 Oct 2001 18:28:45 +0800
-
-lilypond (1.4.5-1) unstable; urgency=low
-
-  * New upstream release.
-  * Upstream includes lexer-gcc-3.0.patch which should fix compilation
-    problems with g++-3.0.  (Closes: Bug#105001)
-  * Hurray!  texinfo-4.0b is finally in Debian!  Thanks, Josip!  :-)
-    Updated Build-Depends.
-
- -- Anthony Fok <foka@debian.org>  Wed, 25 Jul 2001 03:04:37 +0800
-
-lilypond (1.4.3-1) unstable; urgency=high
-
-  * New upstream release.
-  * Urgency high because LilyPond-1.2.17 is too buggy and yet it has
-    been stuck in testing forever.  LilyPond-1.4.x fixes multiple
-    serious bugs.  :-)
-  * Ah, silly me, lilypond was conflicting against itself!  I forgot
-    to remove this relics during the switch from lilypond1.3 to lilypond.
-  * Fixed a new bug in lily/main.cc which caused lilypond to skip over every
-    other command-line argument.
-  * [configure.in]: Added -mieee to CFLAGS and CXXFLAGS when building on
-     Alpha to prevent FP exception.  Thanks to Christopher C. Chimelis
-     for the fix!
-
- -- Anthony Fok <foka@debian.org>  Fri, 15 Jun 2001 00:42:46 -0600
-
-lilypond (1.4.2-1) unstable; urgency=low
-
-  * New upstream release.
-  * Moved "bibtex2html, gs | gs-aladdin, netpbm (>= 2:9.10-1)"
-    from Build-Depends to Build-Depends-Indep because these packages
-    are only needed for building lilypond-doc.
-
- -- Anthony Fok <foka@debian.org>  Tue, 29 May 2001 02:26:58 -0600
-
-lilypond (1.4.1-1) unstable; urgency=low
-
-  * New upstream release.  (Closes: Bug#97598)
-  * export extra_mem_top=100000 and extra_mem_bot=100000, otherwise
-    latex runs out of memory when processing standchen.dvi.latex.
-  * Split the documentation into the "lilypond-doc" package, which
-    provides the LilyPond website in /usr/share/doc/lilypond/html.
-
- -- Anthony Fok <foka@debian.org>  Wed, 16 May 2001 16:03:40 -0600
-
-lilypond (1.3.150-1) unstable; urgency=low
-
-  * New upstream version.
-  * Renamed package from lilypond1.3 back to lilypond.
-    This also fixes a lot of bugs from the old lilypond-1.2.17 package.
-    lilypond1.3 is temporarily provided as a dummy transitional package.
-    Closes: Bug#67697, 84352, 48731, 72223, 85834.
-  * [debian/rules]:
-     - No longer blindly copy intermediate DVI files into
-       the deb package.  Thanks to Daniel Burrows for the reminder.
-       Closes: Bug#87852.
-     - Added "export MODE=ljfour" and "export BDPI=600" because I use
-       something different in my local /etc/texmf/mktex.cnf and that
-       broke the build.
-  * Fixed Build-Depends because pnmtopng has been merged into the netpbm
-    package.  Thanks to Adrian Bunk for the notice.  Closes: Bug#93961.
-  * [lily/kpath.cc]: Modified to better conform to web2c fontpath policy.
-
- -- Anthony Fok <foka@debian.org>  Thu, 26 Apr 2001 03:25:50 -0600
-
-lilypond1.3 (1.3.132-1) unstable; urgency=medium
-
-  * New upstream version.
-  * Oops, in 1.3.129-1, the "(setq auto-mode-alist (append ..." line in
-    /etc/emacs/site-start.d/50lilypond1.3.el (debian/emacsen-startup)
-    and in FAQ.txt was buggy.  Thanks to Erik Demaine for the bug report.
-    Closes: Bug#86685.
-
- -- Anthony Fok <foka@debian.org>  Sun, 25 Feb 2001 20:27:09 -0700
-
-lilypond1.3 (1.3.129-1) unstable; urgency=low
-
-  * In memory of Werner Icking + (August 26, 1943 - February 8, 2001),
-    a dear friend, a kind educator, and a hard worker in sharing beautiful
-    typeset music to the world.  (Maintainer of the GMD Music Archive,
-    http://www.gmd.de/Misc/Music/).
-
-  * New upstream release.
-  * Upstream has changed from "lilypond-mode" to the "studly caps name"
-    "LilyPond-mode".  Fixed /etc/emacs/site-start.d/50lilypond1.3.el
-    (debian/emacsen-startup).  Thanks to Christophe Rhodes for the bug
-    report.  Closes: Bug#83732.
-  * Added "Build-Conflicts: lilypond, lilypond1.3" to prevent old
-    lilypond font files from potentially interfering with the build on
-    other Debian ports autobuilders.
-  * Built with libguile-dev (1:1.4-9) or newer to ensure correct
-    linkage to libqthreads.so.9.  Also updated the Build-Depends and
-    Depends fields accordingly.  Thanks to guile1.4 package maintainer
-    Rob Browning for his notification and to Daniel Burrows for his bug
-    report.  Closes: Bug#85896.
-
- -- Anthony Fok <foka@debian.org>  Sat, 10 Feb 2001 01:38:36 -0700
-
-lilypond1.3 (1.3.121-1) unstable; urgency=low
-
-  * New upstream release.
-  * Added more detailed instruction for building lilypond1.3 on Debian
-    in Documentation/topdocs/INSTALL.texi (hence INSTALL.txt).
-  * Applied Han-wen's one-line patch to lily/system-start-delimiter.cc
-    to remove bracket-width.
-  * It seems that bracket-width needs to be removed from
-    scm/grob-description.scm and scm/interface-description.scm too.
-
- -- Anthony Fok <foka@debian.org>  Sun,  7 Jan 2001 02:34:46 -0700
-
-lilypond1.3 (1.3.119-1) unstable; urgency=low
-
-  * New upstream release.
-  * Merged debian/* fixes by upstream author Jan Nieuwenhuizen.  Thanks!
-     - The lilypond info files are back!  Partially fixed Bug#72233.
-     - Uses the new libguile9 instead of the old libguile6.
-  * Depends on libkpathsea3 instead of the old tetex-lib; Build-Depends
-    is also changed accordingly.  Closes: Bug#79469, Bug#79837.
-  * Edited Documentation/user/development.itexi so that it builds
-    without error.
-
- -- Anthony Fok <foka@debian.org>  Fri, 22 Dec 2000 12:54:49 -0700
-
-lilypond1.3 (1.3.107) unstable; urgency=low
-
-  * Fixed watch location.
-  * Local build, not uploaded to Debian.
-
- -- Jan Nieuwenhuizen <janneke@gnu.org>  Mon, 13 Nov 2000 13:33:53 +0100
-   
-lilypond1.3 (1.3.103) unstable; urgency=low
-
-  * Re-enabled info doc rules.
-  * Local build, not uploaded to Debian.
-
- -- Jan Nieuwenhuizen <janneke@gnu.org>  Sun,  5 Nov 2000 22:15:57 -0100
-
-lilypond1.3 (1.3.99-1) unstable; urgency=low
-
-  * New upstream release.
-
- -- Anthony Fok <foka@debian.org>  Tue, 31 Oct 2000 00:48:20 -0700
-
-lilypond1.3 (1.3.94-1) unstable; urgency=low
-
-  * New upstream release.
-
- -- Anthony Fok <foka@debian.org>  Sun,  8 Oct 2000 12:36:52 -0600
-
-lilypond1.3 (1.3.80.jcn1-1) unstable; urgency=low
-
-  * New upstream release.
-  * s/tetex-devel/tetex-dev/ in Build-Depends.  Thanks to bug report
-    filed by fellow developer Roman Hodek (closes: Bug#69772).
-
- -- Anthony Fok <foka@debian.org>  Sun, 27 Aug 2000 06:11:22 -0600
-   
-lilypond1.3 (1.3.79-1) unstable; urgency=low
-
-  * New upstream release.
-  * Added tetex-dev to Build-Depends.  Thanks to bug report by fellow
-    developer Daniel Jacobowitz (closes: Bug#68441).
-  * Install two documentation files NEWS and ROADMAP.
-
- -- Anthony Fok <foka@debian.org>  Thu, 17 Aug 2000 22:57:57 -0600
-
-lilypond1.3 (1.3.78-1) unstable; urgency=low
-
-  * New upstream release.
-
- -- Anthony Fok <foka@debian.org>  Wed, 16 Aug 2000 06:32:14 -0600
-
-lilypond1.3 (1.3.75-1) unstable; urgency=low
-
-  * New upstream release.
-  * Updated the link to the http://sca.uwaterloo.ca/lilypond/ mirror in
-    the package description.
-
- -- Anthony Fok <foka@debian.org>  Wed, 26 Jul 2000 01:56:28 -0600
-
-lilypond1.3 (1.3.58-1) unstable; urgency=low
-
-  * New upstream release with patch from Han-wen.
-
- -- Anthony Fok <foka@debian.org>  Thu,  8 Jun 2000 17:19:08 -0600
-
-lilypond1.3 (1.3.48-1) unstable; urgency=low
-
-  * New upstream release.
-  * [debian/control]: Added Depends: guile, for /usr/bin/as2text (Lintian).
-  * [debian/rules]: Changed the symlink /usr/share/lilypond/cmtfm from
-      absolute to relative.
-
- -- Anthony Fok <foka@debian.org>  Wed, 10 May 2000 12:17:54 -0600
-
-lilypond1.3 (1.3.45-1) unstable; urgency=low
-
-  * New upstream release.
-
- -- Anthony Fok <foka@debian.org>  Fri, 14 Apr 2000 21:39:40 -0600
-
-lilypond1.3 (1.3.44-1) unstable; urgency=low
-
-  * New upstream development release with numerous bug fixes, small
-    enhancements, and updates to documentation.
-  * [debian/postinst]: Fixed the pathname to README.Debian.  Thanks to
-      Olivier Abad for the bug report (closes: Bug#58674).
-  * [debian/rules]: Now configure with --enable-optimise again.
-      Yes, it appears that LilyPond and glibc2.1.3 finally get along
-      nicely even with optimisation turned on.  Hurray!  :-)
-  * [Documentation/user/*]: Fixed some formatting bugs in the texinfo files.
-  * [debian/control]: Modified description to hint that 1.3.43 is better
-      than 1.2.17.  :-)
-  * [debian/{rules,emacsen-startup}]: Added an Emacs startup file
-      /etc/emacs/site-start.d/50lilypond1.3.el so that lilypond-mode is
-      automatically loaded for *.ly files.
-
- -- Anthony Fok <foka@debian.org>  Wed, 12 Apr 2000 21:22:31 -0600
-
-lilypond1.3 (1.3.24-1) frozen unstable; urgency=low
-
-  * New upstream development release with lots of bug fixes.  :-)
-  * [debian/control]: Added missing build dependencies.  Thanks to
-     Roman Hodek for the bug report and solution (closes: Bug#58078).
-
- -- Anthony Fok <foka@debian.org>  Sat, 19 Feb 2000 15:14:31 -0700
-
-lilypond1.3 (1.3.17-1) unstable; urgency=low
-
-  * New upstream release.  Merry Christmas!
-
- -- Anthony Fok <foka@debian.org>  Fri, 24 Dec 1999 08:59:21 -0700
-
-lilypond1.3 (1.3.16-1) unstable; urgency=low
-
-  * New upstream release.
-
- -- Anthony Fok <foka@debian.org>  Wed, 22 Dec 1999 22:12:30 -0700
-
-lilypond1.3 (1.3.12-1) unstable; urgency=low
-
-  * New upstream release.
-  * [debian/rules]: Commented out "$(MAKE) -C Documentation/programmer ps"
-      temporarily because of error making lilypond-overview.dvi.
-
- -- Anthony Fok <foka@debian.org>  Fri, 17 Dec 1999 00:33:47 -0700
-
-lilypond1.3 (1.3.5-1) unstable; urgency=low
-
-  * New upstream release.  lilypond1.3 is the developmental branch.
-  * [debian/rules]: Removed "install-stamp".
-  * [debian/control]:
-      - Standards-Version: 3.1.0
-      - Added the Build-Depends field.
-      - Updated dependencies of tetex-{base,bin,extra} packages to
-        1.0*-1.
-
- -- Anthony Fok <foka@debian.org>  Sat, 13 Nov 1999 23:25:42 -0700
-
-lilypond (1.2.17-1) unstable; urgency=low
-
-  * New upstream release.
-  * [debian/rules]:
-     - Reverted to configuring with --disable-optimise.
-     - The documentation files are now built properly, and both
-       ps and dvi versions are included.
-  * Standards-Version: 3.0.1
-
- -- Anthony Fok <foka@debian.org>  Sat, 30 Oct 1999 06:57:04 -0600
-
-lilypond (1.2.2-1) unstable; urgency=low
-
-  * New upstream release.
-  * [debian/control]:
-     - Removed recommendation for python-misc (>= 1.5.1)
-       and updated the recommendation of python-base to 1.5.2-4.
-       Thanks to Gregor Hoffleit for the note (closes: Bug#41343).
-     - Updated package description to that provided by the upstream
-       authors in the new version.
-  * [debian/rules]: Now configure with --enable-optimise.
-
- -- Anthony Fok <foka@debian.org>  Tue, 24 Aug 1999 22:05:12 -0600
-
-lilypond (1.1.53-1) unstable; urgency=low
-
-  * New upstream release.
-  * Partially upgraded to standards version 3.0.0:
-     - Updated copyright to point to /usr/share/common-licenses
-     - First step towards FHS-compliance: Man pages are now installed
-       under /usr/share/man.
-
- -- Anthony Fok <foka@debian.org>  Wed,  7 Jul 1999 15:23:57 -0600
-
-lilypond (1.1.47-1) unstable; urgency=low
-
-  * New upstream release.
-
- -- Anthony Fok <foka@debian.org>  Thu, 10 Jun 1999 18:10:13 -0600
-
-lilypond (1.1.42-1) unstable; urgency=low
-
-  * New upstream release.
-  * [postinst]: Runs "/usr/bin/mktexlsr /usr/share/texmf" to save time.
-  * [postrm]: Removed the unnecessary "/usr/bin/mktexlsr" call.
-  * The segfault problem has disappeared on my computer (running
-    the latest potato system).  Please test.
-
- -- Anthony Fok <foka@debian.org>  Tue, 11 May 1999 11:16:58 -0600
-
-lilypond (1.1.37-1) unstable; urgency=low
-
-  * New upstream release.
-  * Known problem: LilyPond simply segfaults under glibc 2.1 on my i386
-    system, and I don't know how to fix the problem yet.  I hope users of
-    other platforms have better luck.
-  * [debian/rules]:
-      - Make and install info files.
-      - Removed "CC=egcc" because the default gcc on all platforms is
-        now the one from egcs.
-      - Install *.png instead of *.xpm.
-      - Minor clean-ups.
-  * Added debian/compress to make sure *.png are not compressed.
-  * Added debian/doc-base and postinst/prerm for the LilyPond info files.
-  * s!usr/lib/texmf!usr/share/texmf!g and cleaned up old hacks
-    in {pre,post}{inst,rm} files due to tetex's new FHS-compliant
-    directory structure.
-  * [debian/control]: Now Depends/Recommends the latest FHS-compliant
-      tetex-{bin,base,extra} (>= 0.9.99031{0,1}-1) packages.
-
- -- Anthony Fok <foka@debian.org>  Mon,  5 Apr 1999 20:43:30 -0600
-
-lilypond (1.1.31-1) unstable; urgency=low
-
-  * New upstream release.
-  * Re-incorporated the changes in debian/rules and debian/postinst
-    from lilypond_1.0.xx series.  I forgot these changes when I moved
-    from 1.0.19.uu3-1 to 1.1.29-1.  Sorry!  :-)
-  * [make/lilypond-vars.make]: Copied the definition of TEX_TFMDIR from
-      make/toplevel.make.in and added it to LILYINCLUDE...
-  * Applied the patch lilypond-1.1.31.jcn1.diff from Jan Nieuwenhuizen.
-  * [debian/rules]:
-      - Temporarily use "-$(MAKE) -k -C Documentation/tex dvi" to
-        circumvent the occasional \times segfault problem when building
-        refman.dvi.
-      - Added symlink /usr/lib/texmf/fonts/tfm/public/lilypond.
-
- -- Anthony Fok <foka@debian.org>  Thu, 18 Feb 1999 00:25:04 -0700
-
-lilypond (1.1.29-1) unstable; urgency=low
-
-  * New upstream release.
-  * [stepmake/aclocal.m4]: AC_STEPMAKE_GUILE now calls the GUILE_FLAGS
-      macro to set -lqthreads etc., otherwise Guile would not be detected
-      by the configure script.
-
- -- Anthony Fok <foka@debian.org>  Sun, 14 Feb 1999 09:05:00 -0700
-
-lilypond (1.0.19.uu3-1) frozen unstable; urgency=low
-
-  * New upstream bug-fix release.
-
- -- Anthony Fok <foka@debian.org>  Sat, 12 Dec 1998 04:23:15 -0700
-
-lilypond (1.0.19.uu1-2) frozen unstable; urgency=low
-
-  * [debian/rules]: Now builds the LilyPond documentation in dvi format.
-      Thanks to Roland Rosenfeld <roland@spinnaker.rhein.de>
-      for the bug report. (closes: Bug#30123).
-  * [debian/control]: Now also Recommends: tetex-extra (>= 0.9.981030-1)
-      because the .dvi documentation uses the EC fonts in that package.
-
- -- Anthony Fok <foka@debian.org>  Thu, 10 Dec 1998 17:43:57 -0700
-
-lilypond (1.0.19.uu1-1) frozen unstable; urgency=low
-
-  * New upstream bug-fix release.
-
- -- Anthony Fok <foka@debian.org>  Mon,  7 Dec 1998 13:12:02 -0700
-
-lilypond (1.0.18-2) frozen unstable; urgency=low
-
-  * [debian/rules]: Added symlink /usr/lib/texmf/fonts/afm/public/lilypond.
-      Thanks to Julian Gilbey <jdg@maths.qmw.ac.uk> for the bug report
-      (closes: Bug#29407).
-  * [scripts/ly2dvi.py]: Re-added a patch similar to the one in 1.0.17-1,
-      but teTeX's default search path is now placed *before* the ones that
-      ly2dvi adds.  Thanks to Roland Rosenfeld <roland@spinnaker.rhein.de>
-      for the bug report. (closes: Bug#29459).
-
- -- Anthony Fok <foka@debian.org>  Mon, 23 Nov 1998 21:29:25 -0700
-
-lilypond (1.0.18-1) frozen unstable; urgency=low
-
-  * New upstream bug-fix release.
-  * [debian/control]:
-      - Upgraded to standards version 2.5.0.0 (no changes).
-      - Recommends: python-misc (>= 1.5.1) because ly2dvi needs the glob
-        module in the python-misc package (closes: Bug#29283).
-      - Updated dependencies on tetex* to the latest versions:
-          Depends: tetex-bin (>= 0.9.981031-2)
-          Recommends: tetex-base (>= 0.9.981030-1)
-        due to changes in tetex's directory structure.
-  * [debian/rules]:
-      - The symlink ../../../../../share/lilypond/mf is now named
-        /usr/lib/texmf/fonts/source/public/lilypond instead of
-        /usr/lib/texmf/fonts/source/public/mf (Bug#29284).
-      - In the latest tetex-base package, /usr/lib/texmf/doc is now a
-        symlink to /usr/doc/texmf.  Therefore, we now install lilypond's
-        documentation into /usr/doc/texmf/musixtex/lilypond.
-        (closes: Bug#28999, Bug#29326)
-  * [debian/preinst]:
-      - The script now removes the directories
-        /var/spool/texmf/pk/*/public/mf and /var/spool/texmf/tfm/public/mf
-        created inadvertently by Debian's buggy lilypond 1.0.17-1.  :-)
-        (Bug#29284)
-      - Since 1.0.17-1, /usr/lib/texmf/tex/lilypond has been changed to a
-        symbolic directory.  The script now removes the old real directory
-        to prevent problems during upgrade (closes: Bug#29284).
-  * [debian/postinst]: I copied a few lines from tetex-nonfree's postinst
-      to remove the old directory /usr/lib/texmf/doc if lilypond is the
-      last package to use that directory, and create a symlink to
-      /usr/doc/texmf.  :-)
-  * Rebuilt with yodl (1.31.7-1) installed to ensure the documentations
-    are compiled properly (closes: Bug#29285).
-  * Thanks to Fabien Ninoles <fab@tzone.org>, Roland Rosenfeld
-    <roland@spinnaker.rhein.de> and Julian Gilbey <jdg@maths.qmw.ac.uk>
-    for reporting the bugs listed above. :-)
-
- -- Anthony Fok <foka@debian.org>  Thu, 12 Nov 1998 03:14:25 -0700
-
-lilypond (1.0.17-1) frozen unstable; urgency=low
-
-  * New upstream "stable" release.
-  * [debian/{copyright,control}]: pcnov095.win.tue.nl -> ftp.cs.uu.nl
-      (New upstream master FTP site).  Also updated JCN's web site URL.
-  * [debian/rules]: 
-      - Now, in the "clean:" target, runs either 
-        "find . -user root | xargs -r chown $$SUDO_USER.$$SUDO_GID" or
-        "find . -user root | xargs -r chown $$LOGNAME" to deal with all those
-        root-owned "out/*" files generated during a "sudo debian/rules clean"
-        run.  Thanks to Roman Hodek <Roman.Hodek@informatik.uni-erlangen.de>
-        for reporting the problem!  (closes: Bug#27044)
-      - Updated debian/rules according to the new debhelper rules example.
-      - Now configures with --disable-optimise instead of --enable-optimise,
-        otherwise it would not compile.
-      - Added symlinks to directories under /usr/lib/texmf because lilypond
-        now puts everything under /usr/share/lilypond.
-  * [Documentation/topdocs/AUTHORS.yo]: Added a trailing "/" on URLs. 
-  * [scripts/ly2dvi.py]: Added a hack to add an extra os.pathsep (":" on
-      Linux) to TEXINPUTS and MFINPUTS, otherwise ly2dvi and TeX would fail
-      to find the necessary files.
-  * Compiled with libstdc++2.9.  :-)
-
- -- Anthony Fok <foka@debian.org>  Tue,  3 Nov 1998 14:31:18 -0700
-
-lilypond (1.0.2-1) unstable; urgency=low
-
-  * New upstream release.
-
- -- Anthony Fok <foka@debian.org>  Sat, 15 Aug 1998 04:32:08 -0600
-
-lilypond (1.0.1-1) unstable; urgency=low
-
-  * New upstream release.
-  * [aclocal.m4]: Temporarily changed OPTIMIZE="-O2" to OPTIMIZE="-O"
-      to avoid egcs (c++) complaint of "Internal compiler error"
-      on my computer.
-  * [scripts/mudela-book.py]: Added "#!@PYTHON@" at the top.  This string
-      expands to "#!/usr/bin/python" in /usr/bin/mudela-book.
-      (Thanks to Lintian.  :-)
-  * [debian/control]: Recommends: python-base (>= 1.5.1).
-      (Again, thanks to Lintian.  :-)
-  * [debian/postrm]: Now also removes the generated LilyPond fonts
-      *.{tfm,pk} under /var/spool/texmf when called as "postrm remove".
-  * [debian/preinst]: Yes, have to bring this back to remove the generated
-      LilyPond fonts in /var/spool/texmf because "postrm remove" didn't do
-      its jobs in previous versions.  Oops.  :-)
-  * [debian/rules]: Installs a few new upstream documentation files, and
-      the example files in out/ directories are moved to parent directories.
-
- -- Anthony Fok <foka@debian.org>  Fri, 14 Aug 1998 03:30:05 -0600
-
-lilypond (0.1.76-1) unstable; urgency=low
-
-  * support for 'make deb' target
-  * Not uploaded to Debian's FTP site.
-
- -- Jan Nieuwenhuizen <janneke@gnu.org>  Fri,  3 Jul 1998 17:53:37 +0200
-
-lilypond (0.1.71-1) unstable; urgency=low
-
-  * New upstream release.
-
- -- Anthony Fok <foka@debian.org>  Sat,  6 Jun 1998 00:00:00 -0600
-
-lilypond (0.1.66-1) unstable; urgency=low
-
-  * New upstream release.
-
- -- Anthony Fok <foka@debian.org>  Wed, 20 May 1998 06:50:12 -0600
-
-lilypond (0.1.61-1) frozen unstable; urgency=low
-
-  * New upstream release with tons of bug fixes.
-    Please put this in Hamm.
-  * Revised debian/rules w.r.t. make/lilypond.spec.in.
-
- -- Anthony Fok <foka@debian.org>  Mon,  4 May 1998 03:36:06 -0600
-
-lilypond (0.1.60-1) frozen unstable; urgency=medium
-
-  * New upstream release with lots of bug fixes, including the MIDI
-    generation bug in 0.1.48.  Please put this in Hamm.
-  * debian/control:
-     - Upgraded to standards version 2.4.1.0 (no changes).
-  * debian/rules:
-     - lilypond now also depends on tetex-base (>= 0.9-5)
-       and conflicts with tetex-base (<< 0.9).
-  * Modified postinst and postrm to work with teTeX 0.9 / Web2C 7.2:
-     - Removed all the *ugly* kludges and functions that were supposed to
-       deal with non-Debian teTeX installations.  Those kludges were
-       specifically made for teTeX 0.4, but they failed to work as intended
-       due to the changes in teTeX 0.9.
-     - No longer messes with special.map because the standard
-       Web2C 7.2 special.map already lists the feta fonts.
-     - Since postinst is so much simpler, it is now a sh script!  :-)
-  * Removed preinst which contained yet another obsolete kludge to clean
-    obsolete/ancient lilypond fonts.
-  * Updated the GNU LilyPond Home Page URIs.
-
- -- Anthony Fok <foka@debian.org>  Fri,  1 May 1998 01:14:49 -0600
-
-lilypond (0.1.48-1) unstable; urgency=low
-
-  * New upstream release.
-
- -- Anthony Fok <foka@debian.org>  Fri, 13 Mar 1998 22:15:11 -0800
-
-lilypond (0.1.46-1) unstable; urgency=low
-
-  * New upstream release.
-
- -- Anthony Fok <foka@debian.org>  Fri, 27 Feb 1998 22:43:41 -0800
-
-lilypond (0.1.45-1) unstable; urgency=low
-
-  * New upstream "The Utrecht Release".
-  * Compiled on va.debian.org because egcs 1.0.1 on my computer
-    no longer comes with libg++.  :-(  But hey, va.debian.org
-    sure is fast!  <grin>
-  * Temporarily includes *.xpm instead of *.gif files because
-    the netpbm package is not installed on va.debian.org, and
-    also because it violates Policy 2.1.2.  Thanks to
-    James Troup <J.J.Troup@scm.brad.ac.uk> for bug report!  :-)
-    (Fixes Bug#18212)
-  * debian/rules: Added "dh_undocumented ly2dvi.1".
-
- -- Anthony Fok <foka@debian.org>  Sat, 21 Feb 1998 01:37:57 -0700
-
-lilypond (0.1.44-1) unstable; urgency=low
-
-  * New upstream release.
-
- -- Anthony Fok <foka@debian.org>  Fri,  6 Feb 1998 22:07:39 -0700
-
-lilypond (0.1.43-1) unstable; urgency=low
-
-  * New upstream release.
-  * Upgraded to standards version 2.4.0.0 (no changes).
-  * Minor fixes to the copyright file (GPL.gz -> GPL).
-  * Revised the package description based on the new lilypond.lsm.
-  * Now includes *.gif instead of *.xpm files.
-  * Other minor revisions to debian/rules.
-  * Added version numbering to the libflower shared library.
-  * Now installs /usr/lib/emacs/site-lisp/mudela-mode.el,
-    but I haven't figured out how to use it myself.  <grin>
-
- -- Anthony Fok <foka@debian.org>  Fri,  6 Feb 1998 17:26:55 -0700
-
-lilypond (0.1.42-1) unstable; urgency=low
-
-  * New upstream release.
-  * Now places ly2dvi in /usr/bin.
-
- -- Anthony Fok <foka@debian.org>  Thu, 29 Jan 1998 02:50:36 -0700
-
-lilypond (0.1.41-1) unstable; urgency=low
-
-  * New upstream "The Birthday Release".
-
- -- Anthony Fok <foka@debian.org>  Wed, 21 Jan 1998 02:20:00 -0700
-
-lilypond (0.1.40-1) unstable; urgency=low
-
-  * New upstream release.
-
- -- Anthony Fok <foka@debian.org>  Mon, 12 Jan 1998 19:19:50 -0700
-
-lilypond (0.1.39-2) unstable; urgency=low
-
-  * debian/control:
-     - Description: Remove the note about installing musixtex or
-       musixtex-fonts.
-     - Added "Conflicts: musixtex-fonts".
-
- -- Anthony Fok <foka@debian.org>  Tue,  6 Jan 1998 02:42:56 -0700
-
-lilypond (0.1.39-1) unstable; urgency=low
-
-  * New upstream LilyPond '98 "New Year Gift" release.
-  * debian/control:
-     - No longer Recommends: "musixtex" or "musixtex-fonts" because
-       LilyPond no longer needs them.
-     - Therefore, Section: is changed from "contrib/tex" to "tex".
-       LilyPond can finally go into the main distribution.  Hurray!
-  * debian/rules: Now also dh_installdocs ANNOUNCE-0.1 and ONEWS.
-  * preinst, postinst, postrm: Added #DEBHELPER#.
-  * preinst, postrm: Changed #!/bin/bash to #!/bin/sh.
-
- -- Anthony Fok <foka@debian.org>  Mon,  5 Jan 1998 18:42:30 -0700
-
-lilypond (0.1.38-1) unstable; urgency=low
-
-  * New upstream Xmas release.
-  * Applied patch patch-0.1.38.jcn1 from Jan Nieuwenhuizen.
-  * Have fun, Merry Christmas and a Happy 1998. -- Han-Wen Nienhuys
-
- -- Anthony Fok <foka@debian.org>  Wed, 24 Dec 1997 16:38:14 -0700
-
-lilypond (0.1.37-1) unstable; urgency=low
-
-  * New upstream release
-  * Minor modifications to debian/rules due to changes in
-    debhelper 0.32.
-
- -- Anthony Fok <foka@debian.org>  Fri, 12 Dec 1997 11:11:12 -0700
-
-lilypond (0.1.36-1) unstable; urgency=low
-
-  * New upstream release
-
- -- Anthony Fok <foka@debian.org>  Tue,  9 Dec 1997 18:33:50 -0700
-
-lilypond (0.1.35-1) unstable; urgency=low
-
-  * New upstream release
-
- -- Anthony Fok <foka@debian.org>  Fri,  5 Dec 1997 21:06:31 -0700
-
-lilypond (0.1.34-1) unstable; urgency=low
-
-  * New upstream release
-
- -- Anthony Fok <foka@debian.org>  Thu,  4 Dec 1997 19:42:22 -0700
-
-lilypond (0.1.33-1) unstable; urgency=low
-
-  * New upstream release
-  * Changed my maintainer e-mail address to <foka@debian.org>.  :)
-
- -- Anthony Fok <foka@debian.org>  Tue, 25 Nov 1997 00:22:57 -0700
-
-lilypond (0.1.32-2) unstable; urgency=low
-
-  * Commented out run_texhash() in postinst by mistake.  Fixed.
-
- -- Anthony Fok <foka@gpu.srv.ualberta.ca>  Sun, 23 Nov 1997 03:04:29 -0700
-
-lilypond (0.1.32-1) unstable; urgency=low
-
-  * New upstream release
-  * Applied a small fix to postinst.  The font-entries-search-and-replace
-    add_fonts() subroutine was slightly buggy.
-  * Unpatched ./configure.  It turned out that I spelt "--enable-optimise"
-    as "--enable-optimize" in debian/rules by mistake.  Oops!  :)  Thanks
-    to the upstream author for pointing this out!  :)
-  * The upstream authors has included the ./debian/* files in the pristine
-    source archive!  They also fixed some minor errors in README.debian
-    and copyright.  Thanks a lot!  :)
-  * Removed the line "dh_clean" from "binary-arch:" and switched the order
-    of dh_clean in "clean:" in debian/rules.  dh_clean was deleting
-    the zero-byte file ./make/out/Site.make, causing the build to fail.
-
- -- Anthony Fok <foka@gpu.srv.ualberta.ca>  Sun, 23 Nov 1997 01:39:31 -0700
-
-lilypond (0.1.29-1) unstable; urgency=low
-
-  * New upstream release
-  * Patched ./configure in source package to make c++ use the -O2 -g options
-    on all the files.  Now, /usr/bin/lilypond is a lot leaner!  <smile>
-    (I will discuss it with the upstream author.)
-  * Adapted postinst (a Perl script) from the musixtex package for lilypond.
-    Now postinst adds the new LilyPond font entries into
-    /usr/lib/texmf/fontname/special.map.
-  * Added preinst to clean up my mess from previous releases: the old
-    "stray" automatically generated TFM and PK font files were placed in
-    the wrong directories because they were not listed in
-    /usr/lib/texmf/fontname/special.map.
-  * Did some minor clean-up in debian/rules and switched to debhelper.
-  * Updated Standards-Version to 2.3.0.1
-
- -- Anthony Fok <foka@gpu.srv.ualberta.ca>  Tue, 11 Nov 1997 02:31:33 -0700
-
-lilypond (0.1.25-1) unstable; urgency=low
-
-  * Added a note in README.debian about the possibility of some LilyPond
-    fonts not showing up after an upgrade, and a possible solution to this
-    problem.
-  * New upstream release
-
- -- Anthony Fok <foka@gpu.srv.ualberta.ca>  Thu, 23 Oct 1997 17:00:14 -0600
-
-lilypond (0.1.24-1) unstable; urgency=low
-
-  * New upstream release
-
- -- Anthony Fok <foka@gpu.srv.ualberta.ca>  Tue, 21 Oct 1997 04:12:01 -0600
-
-lilypond (0.1.23-1) unstable; urgency=low
-
-  * New upstream release
-
- -- Anthony Fok <foka@gpu.srv.ualberta.ca>  Thu, 16 Oct 1997 02:15:55 -0600
-
-lilypond (0.1.22-1) unstable; urgency=low
-
-  * New upstream release
-
- -- Anthony Fok <foka@gpu.srv.ualberta.ca>  Mon, 13 Oct 1997 23:51:01 -0600
-
-lilypond (0.1.21-1) unstable; urgency=low
-
-  * New upstream release
-
- -- Anthony Fok <foka@gpu.srv.ualberta.ca>  Thu,  9 Oct 1997 22:58:26 -0600
-
-lilypond (0.1.18.jcn1-1) unstable; urgency=low
-
-  * New upstream release
-
- -- Anthony Fok <foka@gpu.srv.ualberta.ca>  Sat,  4 Oct 1997 03:48:45 -0600
-
-lilypond (0.1.17-1) unstable; urgency=low
-
-  * New upstream release
-  * Remove redundancy in package's description (Fixed bug #12511)
-  * Added a note about the new LilyPond MF fonts which are not yet listed
-    in the current standard special.map (in the teTeX package)
-  * Added SHELL=/bin/bash to debian/rules because I use bashism. <smile>
-
- -- Anthony Fok <foka@gpu.srv.ualberta.ca>  Sun, 28 Sep 1997 01:41:15 -0600
-
-lilypond (0.1.12-1) unstable; urgency=low
-
-  * New upstream release
-  * Updated the mailing address of the Free Software Foundation
-    listed in /usr/doc/lilypond/copyright
-  * Updated Standards-Version to 2.3.0.0
-  * Built with debmake 3.3.14 and fakeroot 0.0-9 <grin>
-
- -- Anthony Fok <foka@gpu.srv.ualberta.ca>  Sun,  7 Sep 1997 23:00:53 -0600
-
-lilypond (0.1.9-1) unstable; urgency=low
-
-  * New upstream release
-
- -- Anthony Fok <foka@gpu.srv.ualberta.ca>  Mon, 18 Aug 1997 15:14:24 -0600
-
-lilypond (0.1.7-1) unstable; urgency=low
-
-  * New upstream release
-
- -- Anthony Fok <foka@gpu.srv.ualberta.ca>  Thu, 14 Aug 1997 15:18:40 -0600
-
-lilypond (0.1.6-1) unstable; urgency=low
-
-  * New upstream release
-
- -- Anthony Fok <foka@gpu.srv.ualberta.ca>  Thu, 14 Aug 1997 05:14:06 -0600
-
-lilypond (0.1.3-1) unstable; urgency=low
-
-  * New upstream release
-
- -- Anthony Fok <foka@gpu.srv.ualberta.ca>  Sat,  9 Aug 1997 14:15:11 -0600
-
-lilypond (0.1.2-1) unstable; urgency=low
-
-  * New upstream release
-
- -- Anthony Fok <foka@gpu.srv.ualberta.ca>  Thu,  7 Aug 1997 22:54:20 -0600
-
-lilypond (0.1.0-1) unstable; urgency=low
-
-  * Initial Release.
-
- -- Anthony Fok <foka@gpu.srv.ualberta.ca>  Wed,  6 Aug 1997 04:40:57 -0600
diff --git a/debian/control b/debian/control
deleted file mode 100644
index d7f0c16c96..0000000000
--- a/debian/control
+++ /dev/null
@@ -1,42 +0,0 @@
-Source: lilypond
-Build-Depends: debhelper (>= 4.0.0), binutils (>= 2.11.92.0.10-2), libc6-dev (>= 2.2.4-6) | libc6.1-dev (>= 2.2.4-6) | libc0.2-dev (>= 2.2.4-6), python-dev, guile-1.6-dev | libguile-dev, tetex-bin, libkpathsea-dev, tetex-extra, flex (>= 2.5.4a-14) | flex-old, bison (<< 1:1.50) | bison (>> 1:1.75-1), texinfo (>= 4.6-1), groff, m4, gettext (>= 0.10.36-1), mftrace (>= 1.0.17-1), pfaedit (>= 0.0.20031020-3), autotrace (>= 0.29-1.4), t1utils
-Build-Depends-Indep: gs | gs-aladdin, netpbm (>= 2:9.10-1)
-Section: tex
-Priority: optional
-Maintainer: Anthony Fok <foka@debian.org>
-Standards-Version: 3.6.1
-
-Package: lilypond
-Architecture: any
-Replaces: lilypond1.3
-Provides: lilypond1.3
-Depends: ${shlibs:Depends}, tetex-bin (>= 1.0.5-1), tetex-extra (>= 1.0-1), python, guile-1.6 | guile, ${misc:Depends}
-Recommends: lilypond-doc
-Conflicts: lilypond1.3 (<= 1.3.132-1), musixtex-fonts
-Description: A program for printing sheet music
- LilyPond is a music typesetter.  It produces beautiful sheet music
- using a high level description file as input.  LilyPond is part of 
- the GNU Project.
- .
-  Home Page: http://lilypond.org/
-  Authors: Han-Wen Nienhuys <hanwen@cs.uu.nl>
-           Jan Nieuwenhuizen <janneke@gnu.org>
-
-Package: lilypond-doc
-Section: doc
-Architecture: all
-Suggests: lilypond (>= ${Source-Version}), postscript-viewer, www-browser
-Description: LilyPond Documentation in HTML, PS and DVI formats
- This package contains the HTML, PostScript and DVI documentation for the
- LilyPond music typesetting software.
-
-Package: lilypond1.3
-Architecture: arm i386 m68k powerpc sparc
-Depends: lilypond (>= ${Source-Version})
-Description: Dummy package for transition to new stable lilypond
- This dummy package provides a transition from the previous lilypond1.3
- package back to a newer lilypond because the stable 1.4/1.6/1.8 series
- have arrived.
- .
- Please feel free to remove this dummy package after you have upgraded
- to the latest lilypond.
diff --git a/debian/control.foka b/debian/control.foka
deleted file mode 100644
index d7f0c16c96..0000000000
--- a/debian/control.foka
+++ /dev/null
@@ -1,42 +0,0 @@
-Source: lilypond
-Build-Depends: debhelper (>= 4.0.0), binutils (>= 2.11.92.0.10-2), libc6-dev (>= 2.2.4-6) | libc6.1-dev (>= 2.2.4-6) | libc0.2-dev (>= 2.2.4-6), python-dev, guile-1.6-dev | libguile-dev, tetex-bin, libkpathsea-dev, tetex-extra, flex (>= 2.5.4a-14) | flex-old, bison (<< 1:1.50) | bison (>> 1:1.75-1), texinfo (>= 4.6-1), groff, m4, gettext (>= 0.10.36-1), mftrace (>= 1.0.17-1), pfaedit (>= 0.0.20031020-3), autotrace (>= 0.29-1.4), t1utils
-Build-Depends-Indep: gs | gs-aladdin, netpbm (>= 2:9.10-1)
-Section: tex
-Priority: optional
-Maintainer: Anthony Fok <foka@debian.org>
-Standards-Version: 3.6.1
-
-Package: lilypond
-Architecture: any
-Replaces: lilypond1.3
-Provides: lilypond1.3
-Depends: ${shlibs:Depends}, tetex-bin (>= 1.0.5-1), tetex-extra (>= 1.0-1), python, guile-1.6 | guile, ${misc:Depends}
-Recommends: lilypond-doc
-Conflicts: lilypond1.3 (<= 1.3.132-1), musixtex-fonts
-Description: A program for printing sheet music
- LilyPond is a music typesetter.  It produces beautiful sheet music
- using a high level description file as input.  LilyPond is part of 
- the GNU Project.
- .
-  Home Page: http://lilypond.org/
-  Authors: Han-Wen Nienhuys <hanwen@cs.uu.nl>
-           Jan Nieuwenhuizen <janneke@gnu.org>
-
-Package: lilypond-doc
-Section: doc
-Architecture: all
-Suggests: lilypond (>= ${Source-Version}), postscript-viewer, www-browser
-Description: LilyPond Documentation in HTML, PS and DVI formats
- This package contains the HTML, PostScript and DVI documentation for the
- LilyPond music typesetting software.
-
-Package: lilypond1.3
-Architecture: arm i386 m68k powerpc sparc
-Depends: lilypond (>= ${Source-Version})
-Description: Dummy package for transition to new stable lilypond
- This dummy package provides a transition from the previous lilypond1.3
- package back to a newer lilypond because the stable 1.4/1.6/1.8 series
- have arrived.
- .
- Please feel free to remove this dummy package after you have upgraded
- to the latest lilypond.
diff --git a/debian/control.potato b/debian/control.potato
deleted file mode 100644
index 7d58814faa..0000000000
--- a/debian/control.potato
+++ /dev/null
@@ -1,34 +0,0 @@
-Source: lilypond
-Build-Depends: debhelper (>= 2.0.72), python-base (>= 1.5.2-4), libguile6-dev, tetex-bin, tetex-lib, tetex-extra, flex, bison, texinfo (>= 4.0-4), groff, m4, gettext (>= 0.10.35-13)
-Build-Depends-Indep: gs | gs-aladdin, netpbm, pnmtopng
-Section: tex
-Priority: optional
-Maintainer: Anthony Fok <foka@debian.org>
-Standards-Version: 3.1.1
-
-Package: lilypond
-Architecture: any
-Replaces: lilypond1.3
-Provides: lilypond1.3
-Depends: ${shlibs:Depends}, tetex-bin (>= 1.0.5-1), python-base (>= 1.5.2-4), guile
-Recommends: lilypond-doc, tetex-extra (>= 1.0-1)
-Conflicts: lilypond1.3 (<= 1.3.132-1), musixtex-fonts
-Description: A program for printing sheet music.
- LilyPond is a music typesetter.  It produces beautiful sheet music
- using a high level description file as input.  LilyPond is part of 
- the GNU Project.
- .
-  URLs: http://www.cs.uu.nl/~hanwen/lilypond/
-        http://www.xs4all.nl/~jantien/lilypond/
-        http://sca.uwaterloo.ca/lilypond/
-        http://www.lilypond.org/
-  Authors: Han-Wen Nienhuys <hanwen@cs.uu.nl>
-           Jan Nieuwenhuizen <janneke@gnu.org>
-
-Package: lilypond-doc
-Section: doc
-Architecture: all
-Suggests: lilypond (>= 1.4.11-1), postscript-viewer, www-browser
-Description: LilyPond Documentation in HTML, PS and DVI formats
- This package contains the HTML, PostScript and DVI documentation for the
- LilyPond music typesetting software.
diff --git a/debian/copyright b/debian/copyright
deleted file mode 100644
index 5ce05852a3..0000000000
--- a/debian/copyright
+++ /dev/null
@@ -1,51 +0,0 @@
-This package was Debianized by Anthony Fok <foka@debian.org> on
-Wed,  6 Aug 1997 04:30:28 -0600
-
-The development branch, lilypond1.3, was packaged separately
-on Tue,  9 Nov 1999 22:30:32 -0700
-but was merged back into the lilypond package
-as of Mon, 16 Apr 2001 21:58:42 -0600
-
-It was downloaded from
-    ftp://ftp.lilypond.org/pub/LilyPond/
-
-For more information about GNU LilyPond, please visit:
-    http://www.lilypond.org/
-
-Authors:
-      Han-Wen Nienhuys <hanwen@cs.uu.nl>
-      Jan Nieuwenhuizen <janneke@gnu.org>
- 
-Copyright:
-
-  GNU LilyPond is Copyright (C) 1996--2004
-  Jan Nieuwenhuizen & Han-Wen Nienhuys
-
-    This program is free software; you can redistribute it and/or modify
-    it under the terms of the GNU General Public License as published by
-    the Free Software Foundation; either version 2 of the License, or
-    (at your option) any later version.
-
-    This program is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with this program; if not, write to the Free Software
-    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
-
-    *** NOTE
-
-            This license applies to all files except the included example
-    input files (which are in the subdirectory input/ )
-
-    *** END NOTE
-
-
-All the other scripts and control files for building and installing
-GNU LilyPond under Debian GNU/Linux are also under the GNU General
-Public License (GPL) version 2 or later.  
-
-On Debian GNU/Linux systems, the complete text of the GNU General
-Public License can be found in `/usr/share/common-licenses/GPL'.
diff --git a/debian/emacsen-startup b/debian/emacsen-startup
deleted file mode 100644
index 379d566663..0000000000
--- a/debian/emacsen-startup
+++ /dev/null
@@ -1,3 +0,0 @@
-(autoload 'LilyPond-mode "lilypond-mode" nil t)
-(setq auto-mode-alist (cons '("\\.ly$" . LilyPond-mode) auto-mode-alist))
-(add-hook 'LilyPond-mode-hook (lambda () (turn-on-font-lock)))
diff --git a/debian/lilypond-doc.README.Debian b/debian/lilypond-doc.README.Debian
deleted file mode 100644
index cfa4cb54ac..0000000000
--- a/debian/lilypond-doc.README.Debian
+++ /dev/null
@@ -1,7 +0,0 @@
-lilypond-doc for Debian
------------------------
-
-The HTML, PostScript and DVI documentation files are installed under
-`/usr/share/doc/lilypond', not `/usr/share/doc/lilypond-doc'.
-
-Anthony Fok <foka@debian.org>, Wed, 16 May 2001 01:37:00 -0600
diff --git a/debian/lilypond-doc.dirs b/debian/lilypond-doc.dirs
deleted file mode 100644
index d3ff8f268a..0000000000
--- a/debian/lilypond-doc.dirs
+++ /dev/null
@@ -1 +0,0 @@
-usr/share/doc/lilypond/html
diff --git a/debian/lilypond-doc.doc-base b/debian/lilypond-doc.doc-base
deleted file mode 100644
index e31177e679..0000000000
--- a/debian/lilypond-doc.doc-base
+++ /dev/null
@@ -1,11 +0,0 @@
-Document: lilypond-doc
-Title: GNU LilyPond, the music typesetter
-Author: Various
-Abstract: This documentation describes LilyPond (the GNU Project music
- typesetter), the LilyPond music input language, and the Mutopia project,
- a.k.a. "Music To the People."
-Section: Apps/Music
-
-Format: HTML
-Index: /usr/share/doc/lilypond/html/index.html
-Files: /usr/share/doc/lilypond/html/*.html /usr/share/doc/lilypond/html/Documentation/out-www/*.html  /usr/share/doc/lilypond/html/Documentation/*/out-www/*.html
diff --git a/debian/lilypond.dirs b/debian/lilypond.dirs
deleted file mode 100644
index 69698c0923..0000000000
--- a/debian/lilypond.dirs
+++ /dev/null
@@ -1,8 +0,0 @@
-usr/share/doc/lilypond/examples
-usr/share/doc/texmf
-usr/share/emacs/site-lisp
-usr/share/texmf/tex
-usr/share/texmf/fonts/source/public
-usr/share/texmf/fonts/afm/public
-usr/share/texmf/fonts/tfm/public
-etc/texmf/dvips
diff --git a/debian/lilypond.doc-base b/debian/lilypond.doc-base
deleted file mode 100644
index 44f43ae184..0000000000
--- a/debian/lilypond.doc-base
+++ /dev/null
@@ -1,11 +0,0 @@
-Document: lilypond
-Title: GNU LilyPond, the music typesetter
-Author: Various
-Abstract: This documentation describes LilyPond (the GNU Project music
- typesetter), the LilyPond music input language, and the Mutopia project,
- a.k.a. "Music To the People."
-Section: Apps/Music
-
-Format: info
-Index: /usr/share/info/lilypond.info.gz
-Files: /usr/share/info/lilypond.info* /usr/share/info/lilypond-internals.info*
diff --git a/debian/lilypond1.3.copyright b/debian/lilypond1.3.copyright
deleted file mode 100644
index 29e3390e68..0000000000
--- a/debian/lilypond1.3.copyright
+++ /dev/null
@@ -1,21 +0,0 @@
-This is a dummy package to aid the transition from the old
-"lilypond1.3" package to the newer "lilypond" package.
-It was created by Anthony Fok <foka@debian.org>
-Mon, 16 Apr 2001 22:17:10 -0600
-
-Copyright:
-
-  This program is free software; you can redistribute it and/or modify
-  it under the terms of the GNU General Public License as published by
-  the Free Software Foundation; either version 2 of the License, or
-  (at your option) any later version.
-
-  This program is distributed in the hope that it will be useful,
-  but WITHOUT ANY WARRANTY; without even the implied warranty of
-  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-  GNU General Public License for more details.
-
-  You should have received a copy of the GNU General Public License with
-  the Debian GNU/Linux distribution in file /usr/share/common-licenses/GPL;
-  if not, write to the Free Software Foundation, Inc., 59 Temple Place,
-  Suite 330, Boston, MA  02111-1307  USA
diff --git a/debian/lilypond1.7-doc.dirs b/debian/lilypond1.7-doc.dirs
deleted file mode 100644
index 79ac261578..0000000000
--- a/debian/lilypond1.7-doc.dirs
+++ /dev/null
@@ -1 +0,0 @@
-usr/share/doc/lilypond1.7/html
diff --git a/debian/lilypond1.7.dirs b/debian/lilypond1.7.dirs
deleted file mode 100644
index 6b711775af..0000000000
--- a/debian/lilypond1.7.dirs
+++ /dev/null
@@ -1,8 +0,0 @@
-usr/share/doc/lilypond1.7/examples
-usr/share/doc/texmf
-usr/share/emacs/site-lisp
-usr/share/texmf/tex
-usr/share/texmf/fonts/source/public
-usr/share/texmf/fonts/afm/public
-usr/share/texmf/fonts/tfm/public
-etc/texmf/dvips
diff --git a/debian/postinst b/debian/postinst
deleted file mode 100644
index 03e952e92c..0000000000
--- a/debian/postinst
+++ /dev/null
@@ -1,29 +0,0 @@
-#!/bin/sh
-#
-# postinst script for the Debian GNU/Linux lilypond package
-#   by Anthony Fok <foka@debian.org>
-#   Initial release:  Sun, 26 Oct 1997 03:23:00 -0700
-#     Last modified:  Thu, 26 Apr 2001 03:20:10 -0600
-
-set -e
-
-package=lilypond		# This is used for filenames!  Don't change it!
-pkg_name="GNU LilyPond"
-
-std_TEXMFMAIN=/usr/share/texmf	# Debian's standard $TEXMFMAIN
-
-TEXMFMAIN=`/usr/bin/kpsewhich -expand-var '$TEXMFMAIN'`
-: ${TEXMFMAIN:=$std_TEXMFMAIN}
-
-echo " Running /usr/bin/mktexlsr $TEXMFMAIN..."
-/usr/bin/mktexlsr $TEXMFMAIN
-
-install-info --quiet \
-	--section "Music" "Music" \
-	--description='LilyPond, the GNU Project music typesetter' \
-	/usr/share/info/lilypond.info.gz
-
-#DEBHELPER#
-echo
-echo " $pkg_name configuration completed."
-echo " Please read /usr/share/doc/lilypond/README.Debian to get started."
diff --git a/debian/postrm b/debian/postrm
deleted file mode 100644
index a6461fb272..0000000000
--- a/debian/postrm
+++ /dev/null
@@ -1,43 +0,0 @@
-#!/bin/sh
-#
-# postrm script for the Debian GNU/Linux lilypond package
-#   by Anthony Fok <foka@debian.org>
-#   This is free software; see the GNU General Public Licence
-#   version 2 or later for copying conditions.  There is NO warranty.
-#   Last modified:  Tue, 11 May 1999 11:16:35 -0600
-
-set -e
-
-package=lilypond
-font_supplier=public
-font_typeface=lilypond
-std_TEXMFMAIN=/usr/share/texmf
-std_VARTEXFONTS=/var/spool/texmf
-
-#DEBHELPER#
-TEXMFMAIN=`/usr/bin/kpsewhich -expand-var '$TEXMFMAIN'`
-: ${TEXMFMAIN:=$std_TEXMFMAIN}
-VARTEXFONTS=`/usr/bin/kpsewhich -expand-var '$VARTEXFONTS'`
-: ${VARTEXFONTS=$std_VARTEXFONTS}
-
-case "$1" in
-    upgrade)
-	# Clear out the old TFM and PK files in case the fonts were modified
-	rm -rf $VARTEXFONTS/tfm/$font_supplier/$font_typeface
-	rm -rf $VARTEXFONTS/pk/*/$font_supplier/$font_typeface
-    ;;
-
-    remove|purge)
-	# Clear out the old TFM and PK files in case the fonts were modified
-	rm -rf $VARTEXFONTS/tfm/$font_supplier/$font_typeface
-	rm -rf $VARTEXFONTS/pk/*/$font_supplier/$font_typeface
-    ;;
-
-    failed-upgrade|abort-install|abort-upgrade|disappear)
-    ;;
-
-    *)
-	echo "postrm called with unknown argument \`$1'" >&2
-	exit 0
-    ;;
-esac
diff --git a/debian/preinst b/debian/preinst
deleted file mode 100644
index 270b2db61d..0000000000
--- a/debian/preinst
+++ /dev/null
@@ -1,49 +0,0 @@
-#!/bin/sh
-#
-# preinst script for the Debian GNU/Linux lilypond package
-#   by Anthony Fok <foka@debian.org>
-#   This is free software; see the GNU General Public Licence
-#   version 2 or later for copying conditions.  There is NO warranty.
-#   Last modified:  Mon,  5 Apr 1999 20:30:12 -0600
-
-set -e
-
-package=lilypond
-font_supplier=public
-font_typeface=lilypond
-std_TEXMFMAIN=/usr/share/texmf
-std_VARTEXFONTS=/var/spool/texmf
-
-#DEBHELPER#
-
-TEXMFMAIN=`/usr/bin/kpsewhich -expand-var '$TEXMFMAIN'`
-: ${TEXMFMAIN:=$std_TEXMFMAIN}
-VARTEXFONTS=`/usr/bin/kpsewhich -expand-var '$VARTEXFONTS'`
-: ${VARTEXFONTS=$std_VARTEXFONTS}
-
-LILYTEXINPUTS=$TEXMFMAIN/tex/$package
-LILYMFINPUTS=$TEXMFMAIN/fonts/source/$font_supplier/$font_typeface
-
-case "$1" in
-    install|upgrade)
-	# Clear out the old TFM and PK files in case the fonts were
-	# left-over from previous installations
-	rm -rf $VARTEXFONTS/tfm/$font_supplier/$font_typeface
-	rm -rf $VARTEXFONTS/pk/*/$font_supplier/$font_typeface
-
-	# Fix a silly bug in Debian's lilypond 1.0.17-1.  :-)
-	if [ "$2" = "1.0.17-1" ]; then
-	    rm -rf $VARTEXFONTS/tfm/$font_supplier/mf
-	    rm -rf $VARTEXFONTS/pk/*/$font_supplier/mf
-	fi
-    ;;
-
-    abort-upgrade)
-    ;;
-
-    *)
-	echo "$0 called with unknown argument \`$1'" >&2
-	exit 0
-    ;;
-
-esac
diff --git a/debian/prerm b/debian/prerm
deleted file mode 100644
index 0c665397e0..0000000000
--- a/debian/prerm
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-set -e
-
-install-info --quiet --remove /usr/share/info/lilypond.info.gz
-
-#DEBHELPER#
diff --git a/debian/rules b/debian/rules
deleted file mode 100644
index c95956fbd1..0000000000
--- a/debian/rules
+++ /dev/null
@@ -1,176 +0,0 @@
-#!/usr/bin/make -f
-# debian/rules for LilyPond in Debian.
-#
-# This is free software; see the GNU General Public Licence
-# version 2 or later for copying conditions.  There is NO warranty.
-#
-# Currently maintained by Anthony Fok <foka@debian.org>
-# for Debian GNU/Linux.
-
-package = lilypond
-
-SHELL = /bin/sh
-r = debian/$(package)
-r_doc = debian/$(package)-doc
-d = usr/share/doc/$(package)
-
-include VERSION
-VERSION = $(MAJOR_VERSION).$(MINOR_VERSION).$(PATCH_LEVEL)
-
-# "main_memory = 263000" in /etc/texmf/texmf.cnf isn't large enough
-# for latex to process standchen.dvi.latex, so adding extra_mem_* ...
-# export extra_mem_top = 100000
-# export extra_mem_bot = 100000
-# But now, building lilypond.dvi requires increased pool_size (2002-02-18)
-# export pool_size = 500000
-# But now, it seems that none of the above is needed in 1.4.11  (2002-02-24)
-export MODE = ljfour
-export BDPI = 600
-export USER_CFLAGS = -DDEBIAN
-export DEB_BUILD = yes
-export MAILADDRESS = lilypond@packages.debian.org
-
-# Uncomment this to turn on verbose mode.
-#export DH_VERBOSE=1
-
-# This is the debhelper compatibility version to use.
-export DH_COMPAT=4
-
-# This has to be exported to make some magic below work.
-export DH_OPTIONS
-
-build: build-stamp
-build-stamp:
-	dh_testdir
-
-	./configure --enable-checking --enable-debugging \
-		--prefix=/usr --enable-optimise \
-		--infodir='$${prefix}/share/info' \
-		--mandir='$${prefix}/share/man'
-	$(MAKE) MAKE_PFA_FILES=1
-
-	touch build-stamp
-
-build-doc: build build-doc-stamp
-build-doc-stamp:
-	dh_testdir
-
-	# make info
-	$(MAKE) -C Documentation
-	# make html
-	$(MAKE) web
-	$(MAKE) -C Documentation/user omf
-#	find . -type d -name 'out-www' | xargs rm -rf
-
-	touch build-doc-stamp
-
-clean:
-	dh_testdir
-	dh_testroot
-	rm -f build-stamp build-doc-stamp
-	-$(MAKE) WWW-clean top-WWW-clean
-	-$(MAKE) distclean
-
-	# Still not clean enough?  Let's use... BRUTE STRENGTH!  :-)
-	find . -type d -name 'out' -o -name 'out-www' | xargs rm -rf
-
-	dh_clean
-
-install: DH_OPTIONS=
-install: build
-	dh_testdir
-	dh_testroot
-	dh_clean -k
-
-	# Add here commands to install the package into debian/tmp.
-	dh_installdirs
-	$(MAKE) prefix=$(PWD)/$(r)/usr MAKE_PFA_FILES=1 install
-	# Ugh, remove hundred music-glossary copies
-#	find . -name 'music-glossary.info-*' | xargs rm -f
-
-#	# Change from an absolute symlink to a relative symlink (Lintian)
-#	if [ -L $(r)/usr/share/lilypond/cmtfm ]; then \
-#		rm -f $(r)/usr/share/lilypond/cmtfm; \
-#		ln -s ../texmf/fonts/tfm/public/cm $(r)/usr/share/lilypond/cmtfm; \
-#	fi
-
-# Build architecture-independent files here.
-binary-indep: DH_OPTIONS=-i
-binary-indep: build-doc install
-	dh_testdir
-	dh_testroot
-	# Install LilyPond web documentation...
-	$(MAKE) prefix=$(PWD)/$(r_doc)/usr webdir=$(PWD)/$(r_doc)/$(d)/html out=www web-install
-	# Add symlinks to the PostScript docs and LilyPond logo PNGs ...
-	cd $(r_doc)/$(d) \
-	    && cp -s `find html/Documentation -name '*.ps.gz'` . \
-	    && cp -s html/Documentation/pictures/out-www/*.png .
-#	# Copy the DVI docs too ...
-#	cp -a `find Documentation -name '*.dvi' ! -name 'lily-[0-9]*.dvi'` \
-#		$(r_doc)/$(d)/
-	dh_installdocs
-	dh_installchangelogs
-	dh_link
-	dh_compress -X$(d)/html/
-	dh_fixperms
-	dh_installdeb
-	dh_gencontrol
-	dh_md5sums
-	dh_builddeb
-
-binary-arch: DH_OPTIONS=-s
-binary-arch: build install
-	dh_testdir
-	dh_testroot
-	dh_installdocs AUTHORS.txt NEWS.txt README.txt \
-		DEDICATION THANKS 
-
-#	dh_installdocs DEDICATION NEWS ROADMAP *.txt \
-#		Documentation/pictures/out/*.png
-#		Documentation/out/*.txt
-#		$(DVI_FILES) $(PS_FILES)
-#	mkdir $(r)/$(d)/bibliography $(r)/$(d)/misc
-#	cp -a Documentation/bibliography/*.bib $(r)/$(d)/bibliography/
-#	cp -a Documentation/misc/[ACN]* $(r)/$(d)/misc/
-
-#	dh_installexamples input
-
-	find input \( -name '*.*ly' -o -name '*.abc' -o -name '*.tex' -o -name 'TODO' \) ! -regex '.*/out-www/.*' \
-		-exec cp -a --parents '{}' $(r)/$(d)/examples ';'
-#	for i in `find $(r)/$(d)/examples/ -type d -name out`; do \
-#		mv -fv $$i/* $$i/..; rmdir $$i; done
-
-#	dh_installmenu
-	dh_installemacsen
-	dh_scrollkeeper
-#	dh_installcron
-#	dh_installman
-#	dh_undocumented
-	dh_installchangelogs ChangeLog
-
-	mv $(r)/usr/share/lilypond/$(VERSION)/dvips/lilypond.map \
-	   $(r)/etc/texmf/dvips/lilypond.map
-	dh_link	usr/share/lilypond/$(VERSION)/tex \
-			usr/share/texmf/tex/lilypond \
-		usr/share/lilypond/$(VERSION)/fonts/source \
-			usr/share/texmf/fonts/source/public/lilypond \
-		usr/share/lilypond/$(VERSION)/fonts/afm \
-			usr/share/texmf/fonts/afm/public/lilypond \
-		usr/share/lilypond/$(VERSION)/fonts/tfm \
-			usr/share/texmf/fonts/tfm/public/lilypond \
-		usr/share/lilypond/$(VERSION)/fonts/type1 \
-			usr/share/texmf/fonts/type1/public/lilypond \
-		etc/texmf/dvips/lilypond.map \
-			usr/share/lilypond/$(VERSION)/dvips/lilypond.map
-	dh_strip
-	dh_compress
-	dh_fixperms
-	dh_installdeb
-	dh_shlibdeps
-	dh_gencontrol
-#	dh_makeshlibs
-	dh_md5sums
-	dh_builddeb
-
-binary: binary-indep binary-arch
-.PHONY: build clean install binary-indep binary-arch binary
diff --git a/debian/watch b/debian/watch
deleted file mode 100644
index 7f3b86469e..0000000000
--- a/debian/watch
+++ /dev/null
@@ -1,5 +0,0 @@
-# Example watch control file for uscan
-# Rename this file to "watch" and then you can run the "uscan" command
-# to check for upstream updates and more.
-# Site		Directory		Pattern			Version	Script
-ftp.lilypond.org	/pub/LilyPond/v1.9	lilypond-*.tar.gz	debian	uupdate
diff --git a/elisp/GNUmakefile b/elisp/GNUmakefile
deleted file mode 100644
index 09e23a203d..0000000000
--- a/elisp/GNUmakefile
+++ /dev/null
@@ -1,25 +0,0 @@
-depth = ..
-
-# elispdir defined in config.make
-
-INSTALLATION_DIR=$(elispdir)
-INSTALLATION_FILES=$(EL_FILES)
-
-INSTALLATION_OUT_DIR=$(elispdir)
-INSTALLATION_OUT_FILES=$(outdir)/lilypond.words.el
-
-STEPMAKE_TEMPLATES=elisp install install-out
-
-include $(depth)/make/stepmake.make 
-
-LILYPOND_WORDS = $(outdir)/lilypond.words.el $(outdir)/lilypond.words.vim
-LILYPOND_WORDS_DEPENDS =\
-  $(topdir)/lily/my-lily-lexer.cc \
-  $(buildscript-dir)/lilypond.words.py \
-  $(topdir)/scm/new-markup.scm \
-  $(topdir)/ly/engraver-init.ly
-
-$(LILYPOND_WORDS): 
-	cd $(topdir) && $(PYTHON) buildscripts/lilypond.words.py $(builddir)/elisp/$(outconfbase)
-
-all: $(LILYPOND_WORDS)
diff --git a/elisp/lilypond-font-lock.el b/elisp/lilypond-font-lock.el
deleted file mode 100644
index 87e218638c..0000000000
--- a/elisp/lilypond-font-lock.el
+++ /dev/null
@@ -1,198 +0,0 @@
-;;; lilypond-font-lock.el --- syntax coloring for LilyPond mode
-
-;; Copyright (C) 1992,1993,1994  Tim Peters
-
-;; Author: 2001-2003: Heikki Junes
-;;  * Emacs-mode: new keywords, reserved words, identifiers, notenames, 
-;;    some dynamics and brackets are font-lock-keywords
-;;  * context-dependent syntax-tables
-;; Author: 1997: Han-Wen Nienhuys
-;; Author: 1995-1996 Barry A. Warsaw
-;;         1992-1994 Tim Peters
-;; Created:       Feb 1992
-;; Version:       1.9.9
-;; Last Modified: 23SEP2003
-;; Keywords: lilypond languages music notation
-
-;; This software is provided as-is, without express or implied
-;; warranty.  Permission to use, copy, modify, distribute or sell this
-;; software, without fee, for any purpose and by any individual or
-;; organization, is hereby granted, provided that the above copyright
-;; notice and this paragraph appear in all copies.
-
-;; This started out as a cannabalised version of python-mode.el, by hwn
-;; For changes see the LilyPond ChangeLog
-;;
-
-;; TODO:
-;;   - handle lexer modes (\header, \melodic) etc.
-
-(defconst LilyPond-font-lock-keywords
-  (let* ((kwregex (mapconcat (lambda (x) (concat "\\" x))  LilyPond-keywords "\\|"))
-	 (iregex (mapconcat (lambda (x) (concat "\\" x))  LilyPond-identifiers "\\|"))
-	 (ncrwregex (mapconcat (lambda (x) (concat "" x))  LilyPond-non-capitalized-reserved-words "\\|"))
-	 (rwregex (mapconcat (lambda (x) (concat "" x))  LilyPond-Capitalized-Reserved-Words "\\|"))
-	 (duration "\\([ \t]*\\(128\\|6?4\\|3?2\\|16?\\|8\\)[.]*\\([ \t]*[*][ \t]*[0-9]+\\(/[1-9][0-9]*\\)?\\)?\\)") 
-	 (longduration "\\([ \t]*\\(\\\\\\(longa\\|breve\\|maxima\\)\\)[.]*\\([ \t]*[*][ \t]*[0-9]+\\(/[1-9][0-9]*\\)?\\)?\\)") 
-)
-
-    (list 
-;; Fonts in use (from GNU Emacs Lisp Reference Manual, elisp.ps):
-;; font-lock- (c)omment / (s)tring / (k)eyword / (b)uiltin / (f)unction-name / 
-;;            (v)ariable-name / (t)ype / co(n)stant / (w)arning -face
-
-;; The order below is designed so that proofreading would be possible.
-
-;; Fontify...
-;; ... (f) identifiers and (k) keywords.
-;; ... (n) user defined indetifiers
-;; ... (v) the right and the left side of '='-marks.
-;; ... (v) reserved words, e.g., FiguredBass.
-;; ... (t) notes and rests
-;; "on top", ... (s) lyrics-mode
-;; "on top", ... (w) horizontal grouping
-;; "on top", ... (f) vertical grouping
-;; "on top", ... (b) expressional grouping
-;; "on top", ... (s) (multiline-)scheme; urgh. one should count the slurs
-;; "on top", ... (s) strings
-;; "on top", ... (c) (multiline-)comments
-
-;; One should note 'font-lock-multiline' has been possible since Emacs 21.1.
-;; See, e.g., text in "http://emacs.kldp.org/emacs-21.1/etc/NEWS".
-
-;; ... identifiers (defined above, see iregex)
-      (cons (concat "\\(\\([_^-]?\\(" iregex "\\)\\)+\\)\\($\\|[] \t(~{}>\\\\_()^*-]\\)") '(1 font-lock-function-name-face))
-
-;; ... keywords (defined above, see kwregex)
-      (cons (concat "\\(\\([_^-]?\\(" kwregex "\\)\\)+\\)\\($\\|[] \t(~{}>\\\\_()^*-]\\)") '(1 font-lock-keyword-face))
-
-;; ... user defined identifiers \[a-zA-Z]+
-      '("\\([_^-]?\\\\\\([a-zA-Z][a-zA-Z]*\\)\\)" 1 font-lock-constant-face)
-
-;; ... the left side of '=' -mark
-      '("\\([_a-zA-Z.0-9-]+\\)[ \t]*=[ \t]*" 1 font-lock-variable-name-face)
-
-;; ... the right side of '=' -mark
-      '("[ \t]*=[ \t]*\\([_a-zA-Z.0-9-]+\\)" 1 font-lock-variable-name-face)
-
-;; ... reserved words (defined above, see rwregex)
-      (cons (concat "\\(" rwregex "\\)") 'font-lock-variable-name-face)
-
-;; ... note or rest with (an accidental and) a duration, e.g., b,?16.*3/4
-      (cons (concat "\\(^\\|[ <\{[/~(!)\t\\\|]\\)\\(\\(\\(" ncrwregex "\\)[,']*[?!]?\\|[srR]\\)" duration "?\\)") '(2 font-lock-type-face))
-
-;; "on top", ... notes and rests with a long duration
-      (cons (concat "\\(^\\|[ <\{[/~(!)\t\\\|]\\)\\(\\(\\(" ncrwregex "\\)[,']*[?!]?\\|[srR]\\)" longduration "\\)") '(2 font-lock-type-face t))
-
-;; "on top", ... lyrics-mode: fontify everything between '<'...'>' or '{'...'}'
-;            URGH, does not know anything about inner brackets.
-;            Multiple lines may need refontifying (C-c f).
-      '("\\(\\\\lyrics[^{<]*\\)\\({[^}]*\\|<[^>]*\\)" 2 font-lock-string-face t)
-
-;; "on top", ... horizontal grouping, also as postfix syntax '-*':
-;;               - brackets '{[]}'
-;;               - ties '~'
-;;               - ligatures \[, \]
-      '("\\(-?[][~}{]\\|\\\\[][]\\)" 0 font-lock-warning-face t)
-
-;; "on top", ... vertical grouping:
-;;               - '<>'-chord brackets with '\\'-voice sep., not marcato '->'
-;;               - '<< a b >>8' -chords
-      (cons (concat "\\(\\(-.\\)+\\|[^-^_]\\)\\([<>]+\\(" duration "\\|" longduration "\\)?\\|\\\\\\\\\\)") '(3 font-lock-function-name-face t))
-
-;; "on top", ... expressional grouping, also as postfix syntax '-*':
-;;               - slurs ( ), \( \), [-^_][()]
-;;               - hairpins \<, \>, \! 
-      '("\\(-?\\\\[(<!>)]\\|[-^_]?[()]\\)" 0 font-lock-builtin-face t)
-
-;; "on top", ... (multiline-)scheme: try find slurs up to 7th
-      '("[_^-]?#\\(#[ft]\\|-?[0-9.]+\\|\"[^\"]*\"\\|['`]?[a-zA-Z:-]+\\|['`]?([^()]*\\(([^()]*\\(([^()]*\\(([^()]*\\(([^()]*\\(([^()]*\\(([^)]*)[^()]*\\)*)[^()]*\\)*)[^()]*\\)*)[^()]*\\)*)[^()]*\\)*)[^()]*\\)*[^)]*)\\)" 0 font-lock-string-face t)
-
-;; "on top", ... strings, match also unending strings at eof:
-;;               if '\n' was not found, it must be '$' which is eof (?).
-      '("\\([_^-]?\"\\([^\"\\\\]\\|\\\\.\\|\\\\\n\\)*\\(\"\\|$\\)\\)" 0 font-lock-string-face t)
-
-;; "on top", ... (multiline-)comments
-      '("\\(%\\({[^%]*%\\(}\\|\\([^}][^%]*%\\)+}\\)\\|.*\\)\\)" 0 font-lock-comment-face t)
-
-      )
-    )
-  "Additional expressions to fontify in LilyPond mode.")
-
-;; define a mode-specific abbrev table for those who use such things
-(defvar LilyPond-mode-abbrev-table nil
-  "Abbrev table in use in `LilyPond-mode' buffers.")
-
-(define-abbrev-table 'LilyPond-mode-abbrev-table nil)
-
-(defvar LilyPond-mode-syntax-table nil
-  "Syntax table used in `LilyPond-mode' buffers.")
-
-(defun LilyPond-mode-set-syntax-table (&optional not-punct)
-  "Change syntax table according to the argument `not-punct' which contains characters which are given a context dependent non-punctuation syntax: parentheses may be set to parenthesis syntax and characters `-', `^' and `_' may be set to escape syntax."
-  (if (not not-punct) (setq not-punct '()))
-  (setq LilyPond-mode-syntax-table (make-syntax-table))
-  (let ((defaults 	  
-	  '(
-	    ;; NOTE: Emacs knows only "13"-style (used), XEmacs knows also "1b3b", etc.
-	    ( ?\% . "< 13" )   ; comment starter, 1st char in block-comments
-	    ( ?\n . ">")       ; newline: comment ender
-	    ( ?\r . ">")       ; formfeed: comment ender
-	    ( ?\\ . "\\" )     ; escape characters (as '\n' in strings)
-	    ( ?\" . "\"" )     ; string quote characters
-	    ;; word constituents (e.g., belonging to a note)
-	    ( ?\' . "w") ( ?\, . "w") ; transposing octaves
-	    ;; punctuation characters (separate symbols from another)
-	    ( ?\$ . "." ) ( ?\& . "." )
-	    ( ?\* . "." ) ( ?\+ . "." ) ( ?\/ . "." )  ( ?\= . "." )
-	    ( ?\| . "." )      ; bar line
-	    )))
-    ;; all the paren characters are now handled by lily-specific indenting/matching code in lilypond-indent.el
-    (if (or (memq ?\{ not-punct) (memq ?\} not-punct))
-	(setq defaults (cons '( ?\{ . "(} 2" ) (cons '( ?\} . "){ 4" ) defaults))) ; begin and end of a block-comment
-      (setq defaults (cons '( ?\{ . ". 2" ) (cons '( ?\} . ". 4" ) defaults))))    ; begin and end of a block-comment
-    (if (or (memq ?\[ not-punct) (memq ?\] not-punct))
-	(setq defaults (cons '( ?\[ . "(]" ) (cons '( ?\] . ")[" ) defaults)))
-      (setq defaults (cons '( ?\[ . "." ) (cons '( ?\] . "." ) defaults))))
-    (if (or (memq ?\< not-punct) (memq ?\> not-punct))
-	(setq defaults (cons '( ?\< . "(>" ) (cons '( ?\> . ")<" ) defaults)))
-      (setq defaults (cons '( ?\< . "." ) (cons '( ?\> . "." ) defaults))))
-    (if (or (memq ?\( not-punct) (memq ?\) not-punct))
-	(setq defaults (cons '( ?\( . "()" ) (cons '( ?\) . ")(" ) defaults)))
-      (setq defaults (cons '( ?\( . "." ) (cons '( ?\) . "." ) defaults))))
-    ;; In LilyPond the following chars serve as escape chars, e.g., c^> d-) e_( , 
-    ;; but they may be set to punctuation chars, since inside strings they should not act as escape chars
-    (setq defaults (cons (if (memq ?- not-punct) '( ?\- . "\\" ) '( ?\- . "." ) ) defaults))
-    (setq defaults (cons (if (memq ?^ not-punct) '( ?^ . "\\" ) '( ?^ . "." ) ) defaults))
-    (setq defaults (cons (if (memq ?\_ not-punct) '( ?\_ . "\\" ) '( ?\_ . "." ) ) defaults))
-    (mapcar (function
-	     (lambda (x) (modify-syntax-entry
-			  (car x) (cdr x) LilyPond-mode-syntax-table)))
-	    defaults)
-    (set-syntax-table LilyPond-mode-syntax-table)))
-
-(defun LilyPond-mode-context-set-syntax-table ()
-  "Change syntax table according to current context."
-  (interactive)
-  ;; default syntax table sets parentheses to punctuation characters
-  (LilyPond-mode-set-syntax-table) 
-  ;; find current context
-  (setq context (parse-partial-sexp (point-min) (point)))
-  (cond ((nth 3 context)) ; inside string
-	((nth 4 context)) ; inside a comment
-	((eq (char-syntax (char-before (point))) ?\\)) ; found escape-char
-	((and (eq (char-syntax (char-before (- (point) 1))) ?\\)
-	      (memq (char-before (point)) '( ?\) ?\] )))) ; found escape-char
-	((memq (char-before (point)) '( ?\) ))
-	 (LilyPond-mode-set-syntax-table '( ?\( ?\) )))
-	((memq (char-before (point)) '( ?\] ))
-	 (LilyPond-mode-set-syntax-table '( ?\[ ?\] )))
-	((memq (char-before (point)) '( ?\> ?\} ))
-	 (LilyPond-mode-set-syntax-table '( ?\< ?\> ?\{ ?\} ?\^ ?\- ?\_ )))
-	((memq (char-after (point)) '( ?\( ))
-	 (LilyPond-mode-set-syntax-table '( ?\( ?\) )))
-	((memq (char-after (point)) '( ?\[ ))
-	 (LilyPond-mode-set-syntax-table '( ?\[ ?\] )))
-	((memq (char-after (point)) '( ?\< ?\{ ))
-	 (LilyPond-mode-set-syntax-table '( ?\< ?\> ?\{ ?\} ?\^ ?\- ?\_ )))
-	))
diff --git a/elisp/lilypond-indent.el b/elisp/lilypond-indent.el
deleted file mode 100644
index 4626646d06..0000000000
--- a/elisp/lilypond-indent.el
+++ /dev/null
@@ -1,566 +0,0 @@
-;;; lilypond-indent.el --- Auto-indentation for lilypond code
-;;;
-;;; Heikki Junes <hjunes@cc.hut.fi>
-;;; * ond-char paren matching is handled by context dependent syntax tables
-;;; * match two-char slurs '\( ... \)' and '\[ ... \]' separately.
-;;; * adopt Emacs' f90-comment-region
-
-;;; Chris Jackson <chris@fluffhouse.org.uk>
-;;; some code is taken from ESS (Emacs Speaks Statistics) S-mode by A.J.Rossini <rossini@biostat.washington.edu>
-
-;;; Variables for customising indentation style
-
-;;; TODO:
-;;;    * currently, in bracket matching one may need a non-bracket 
-;;;      chararacter between the bracket characters, like ( ( ) )
-
-(defcustom LilyPond-indent-level 4
-  "*Indentation of lilypond statements with respect to containing block.")
-
-(defcustom LilyPond-brace-offset 0
-  "*Extra indentation for open braces.
-Compares with other text in same context.")
-
-(defcustom LilyPond-angle-offset 0
-  "*Extra indentation for open angled brackets.
-Compares with other text in same context.")
-
-(defcustom LilyPond-square-offset 0
-  "*Extra indentation for open square brackets.
-Compares with other text in same context.")
-
-(defcustom LilyPond-scheme-paren-offset 0
-  "*Extra indentation for open scheme parens.
-Compares with other text in same context.")
-
-(defcustom LilyPond-close-brace-offset 0
-  "*Extra indentation for closing braces.")
-
-(defcustom LilyPond-close-angle-offset 0
-  "*Extra indentation for closing angle brackets.")
-
-(defcustom LilyPond-close-square-offset 0
-  "*Extra indentation for closing square brackets.")
-
-(defcustom LilyPond-close-scheme-paren-offset 0
-  "*Extra indentation for closing scheme parens.")
-
-(defcustom LilyPond-fancy-comments t
-  "*Non-nil means distiguish between %, %%, and %%% for indentation.")
-
-(defcustom LilyPond-comment-region "%%$"
-  "*String inserted by \\[LilyPond-comment-region]\
- at start of each line in region.")
-
-(defun LilyPond-comment-region (beg-region end-region)
-  "Comment/uncomment every line in the region.
-Insert LilyPond-comment-region at the beginning of every line in the region
-or, if already present, remove it."
-  (interactive "*r")
-  (let ((end (make-marker)))
-    (set-marker end end-region)
-    (goto-char beg-region)
-    (beginning-of-line)
-    (if (looking-at (regexp-quote LilyPond-comment-region))
-	(delete-region (point) (match-end 0))
-      (insert LilyPond-comment-region))
-    (while (and  (zerop (forward-line 1))
-		 (< (point) (marker-position end)))
-      (if (looking-at (regexp-quote LilyPond-comment-region))
-	  (delete-region (point) (match-end 0))
-	(insert LilyPond-comment-region)))
-    (set-marker end nil)))
-
-(defun LilyPond-calculate-indent ()
-  "Return appropriate indentation for current line as lilypond code.
-In usual case returns an integer: the column to indent to.
-Returns nil if line starts inside a string"
-  (save-excursion
-    (beginning-of-line)
-    (let ((indent-point (point))
-	  (case-fold-search nil)
-	  state)
-      (setq containing-sexp (save-excursion (LilyPond-scan-containing-sexp)))
-      (beginning-of-defun)
-      (while (< (point) indent-point)
-	(setq state (parse-partial-sexp (point) indent-point 0)))
-      ;; (setq containing-sexp (car (cdr state))) is the traditional way for languages
-      ;; with simpler parenthesis delimiters
-      (cond ((nth 3 state) 
-	     ;; point is in the middle of a string 
-	     nil)
-	    ((nth 4 state)
-	     ;; point is in the middle of a block comment
-	     (LilyPond-calculate-indent-within-blockcomment))
-	    ((null containing-sexp)
-	     ;; Line is at top level - no indent
-	     (beginning-of-line)
-	     0)
-	    (t
-	     ;; Find previous non-comment character.
-	     (goto-char indent-point)
-	     (LilyPond-backward-to-noncomment containing-sexp)
-	     ;; Now we get the answer.
-	     ;; Position following last unclosed open.
-	     (goto-char containing-sexp)
-	     (or
-	      ;; Is line first statement after an open brace or bracket?
-	      ;; If no, find that first statement and indent like it.
-	      (save-excursion
-		(forward-char 1)
-		;; Skip over comments following open brace.
-		(skip-chars-forward " \t\n")
-		(cond ((looking-at "%{")
-		       (while  (progn 
-				 (and (not (looking-at "%}"))
-				      (< (point) (point-max))))
-			 (forward-line 1)
-			 (skip-chars-forward " \t\n"))
-		       (forward-line 1)
-		       (skip-chars-forward " \t\n"))
-		      ((looking-at "%")
-		       (while (progn (skip-chars-forward " \t\n")
-				     (looking-at "%"))
-			 (forward-line 1))))
-		;; The first following code counts
-		;; if it is before the line we want to indent.
-		(and (< (point) indent-point)
-		     (current-column)))
-	      ;; If no previous statement,
-	      ;; indent it relative to line brace is on.
-	      ;; For open brace in column zero, don't let statement
-	      ;; start there too.  If LilyPond-indent-level is zero, use
-	      ;; LilyPond-brace-offset instead
-	      (+ (if (and (bolp) (zerop LilyPond-indent-level))
-		     (cond ((= (following-char) ?{) 
-			    LilyPond-brace-offset)
-			   ((= (following-char) ?<) 
-			    LilyPond-angle-offset)
-			   ((= (following-char) ?[) 
-			    LilyPond-square-offset)
-			   ((= (following-char) ?\))
-			    LilyPond-scheme-paren-offset)
-			   (t
-			    0))
-		   LilyPond-indent-level)
-		 (progn
-		   (skip-chars-backward " \t")
-		   (current-indentation)))))))))
-
-
-(defun LilyPond-indent-line ()
-  "Indent current line as lilypond code.
-Return the amount the indentation changed by."
-  (let ((indent (LilyPond-calculate-indent))
-	beg shift-amt
-	(case-fold-search nil)
-	(pos (- (point-max) (point))))
-    (beginning-of-line)
-    (setq beg (point))
-    (cond ((eq indent nil)
-	   (setq indent (current-indentation)))
-	  (t
-	   (skip-chars-forward " \t")
-	   (if (and LilyPond-fancy-comments (looking-at "%%%\\|%{\\|%}"))
-	       (setq indent 0))
-	   (if (and LilyPond-fancy-comments
-		    (looking-at "%")
-		    (not (looking-at "%%\\|%{\\|%}")))
-	       (setq indent comment-column)
-	     (if (eq indent t) (setq indent 0))
-	     (if (listp indent) (setq indent (car indent)))
-	     (cond
-	      ((= (following-char) ?})
-	       (setq indent  (+ indent (- LilyPond-close-brace-offset LilyPond-indent-level))))
-	      ((= (following-char) ?>)
-	       (setq indent  (+ indent (- LilyPond-close-angle-offset LilyPond-indent-level))))
-	      ((= (following-char) ?])
-	       (setq indent  (+ indent (- LilyPond-close-square-offset LilyPond-indent-level))))
-	      ((and (= (following-char) ?\)) (LilyPond-inside-scheme-p))
-	       (setq indent  (+ indent (- LilyPond-close-scheme-paren-offset LilyPond-indent-level))))
-	      ((= (following-char) ?{)
-	       (setq indent  (+ indent LilyPond-brace-offset)))
-	      ((= (following-char) ?<)
-	       (setq indent  (+ indent LilyPond-angle-offset)))
-	      ((= (following-char) ?[)
-	       (setq indent  (+ indent LilyPond-square-offset)))
-	      ((and (= (following-char) ?\() (LilyPond-inside-scheme-p))
-	       (setq indent  (+ indent LilyPond-scheme-paren-offset)))
-	      ))))
-    (skip-chars-forward " \t")
-    (setq shift-amt (- indent (current-column)))
-    (if (zerop shift-amt)
-	(if (> (- (point-max) pos) (point))
-	    (goto-char (- (point-max) pos)))
-      (delete-region beg (point))
-      (indent-to indent)
-      ;; If initial point was within line's indentation,
-      ;; position after the indentation.
-      ;; Else stay at same point in text.
-      (if (> (- (point-max) pos) (point))
-	  (goto-char (- (point-max) pos))))
-    shift-amt))
-
-
-(defun LilyPond-inside-comment-p ()
-  "Return non-nil if point is inside a line or block comment"
-  (setq this-point (point))
-  (or (save-excursion (beginning-of-line)
-		      (skip-chars-forward " \t")
-		      (looking-at "%"))
-      (save-excursion 
-	;; point is in the middle of a block comment
-	(setq lastopen  (save-excursion (re-search-backward "%{[ \\t]*" (point-min) t)))
-	(setq lastclose (save-excursion (re-search-backward "%}[ \\t]*" (point-min) t)))
-	(if (or (and (= (char-before) ?%) (= (char-after) ?{))
-		(and (= (char-after)  ?%) (= (char-after (1+ (point))) ?{)))
-	    (setq lastopen (save-excursion (backward-char) (point))))
-	(and 
-	 lastopen
-	 (or (not lastclose)
-	     (<= lastclose lastopen))))
-      ))
-
-
-(defun LilyPond-inside-string-or-comment-p ()
-  "Test if point is inside a string or a comment"
-  (setq this-point (point))
-  (or (save-excursion (beginning-of-line)
-		      (skip-chars-forward " \t")
-		      (looking-at "%"))
-      (save-excursion 
-	(beginning-of-defun)
-	(while (< (point) this-point)
-	  (setq state (parse-partial-sexp (point) this-point 0)))
-	(cond ((nth 3 state) 
-	       ;; point is in the middle of a string 
-	       t )
-	      ((nth 4 state)
-	       ;; point is in the middle of a block comment
-	       t ) 
-	      (t
-	       nil)))))
-
-
-(defun LilyPond-backward-over-blockcomments (lim)
-  "Move point back to closest non-whitespace character not part of a block comment"
-  (setq lastopen  (save-excursion (re-search-backward "%{[ \\t]*" lim t)))
-  (setq lastclose (save-excursion (re-search-backward "%}[ \\t]*" lim t)))
-  (if lastopen
-      (if lastclose
-	  (if (<= lastclose lastopen)
-	      (goto-char lastopen))
-	(goto-char lastopen)))
-  (skip-chars-backward " %\t\n\f"))
-
-
-(defun LilyPond-backward-over-linecomments (lim)
-  "Move point back to the closest non-whitespace character not part of a line comment.
-Argument LIM limit."
-  (let (opoint stop)
-    (while (not stop)
-      (skip-chars-backward " \t\n\f" lim)
-      (setq opoint (point))
-      (beginning-of-line)
-      (search-forward "%" opoint 'move)
-      (skip-chars-backward " \t%")
-      (setq stop (or (/= (preceding-char) ?\n) (<= (point) lim)))
-      (if stop (point)
-	(beginning-of-line)))))
-
-
-(defun LilyPond-backward-to-noncomment (lim)
-  "Move point back to closest non-whitespace character not part of a comment"
-  (LilyPond-backward-over-linecomments lim)
-  (LilyPond-backward-over-blockcomments lim))
-
-
-(defun LilyPond-calculate-indent-within-blockcomment ()
-  "Return the indentation amount for line inside a block comment."
-  (let (end percent-start)
-    (save-excursion
-      (beginning-of-line)
-      (skip-chars-forward " \t")
-      (skip-chars-backward " \t\n")
-      (setq end (point))
-      (beginning-of-line)
-      (skip-chars-forward " \t")
-      (and (re-search-forward "%{[ \t]*" end t)
-	   (goto-char (1+ (match-beginning 0))))
-      (if (and (looking-at "[ \t]*$") (= (preceding-char) ?\%))
-	  (1+ (current-column))
-	(current-column)))))
-
-
-;; Key:   Type of bracket (character). 
-;; Value: Pair of regexps representing the corresponding open and close bracket
-;; () are treated specially (need to indent in Scheme but not in music)
-
-(defconst LilyPond-parens-regexp-alist
-  `( ( ?>  .  ("\\([^\\]\\|^\\)<" . "\\([^ \\n\\t_^-]\\|[_^-][-^]\\|\\s-\\)\\s-*>"))
-     ;; a b c->, a b c^> and a b c_> are not close-angle-brackets, they're accents
-     ;; but a b c^-> and a b c^^> are close brackets with tenuto/marcato before them
-     ;; also \> and \< are hairpins
-     ;; duh .. a single '>', as in chords '<< ... >>', was not matched here
-     ( ?}  .  ("{" . "}"))
-     ;; ligatures  '\[ ... \]' are skipped in the following expression
-     ( ?]  .  ("\\([^\\]\\([\\][\\]\\)*\\|^\\)[[]" . "\\([^\\]\\([\\][\\]\\)*\\|^\\)[]]"))
-     ( "\\]" . ("\\([^\\]\\|^\\)\\([\\][\\]\\)*[\\][[]" . "\\([^\\]\\|^\\)\\([\\][\\]\\)*[\\][]]"))
-     ( "\\)" . ("\\([^\\]\\|^\\)\\([\\][\\]\\)*[\\][(]" . "\\([^\\]\\|^\\)\\([\\][\\]\\)*[\\][)]"))
-     ))
-
-
-(defconst LilyPond-parens-alist
-  `( ( ?<  .  ?> )    
-     ( ?{  .  ?} )    
-     ( ?[  .  ?] )
-     ( "\\["  .  "\\]" )
-     ( ?\(  .  ?\) )
-     ( "\\("  .  "\\)" )
-     ))
-
-
-(defun LilyPond-matching-paren (bracket-type)
-  "Returns the open corresponding to the close specified by bracket-type, or vice versa"
-  (cond ( (member bracket-type (mapcar 'car LilyPond-parens-alist))
-	  (cdr (assoc bracket-type LilyPond-parens-alist)) )
-	( (member bracket-type (mapcar 'cdr LilyPond-parens-alist))
-	  (car (rassoc bracket-type LilyPond-parens-alist)) )
-	nil))
-
-
-(defun LilyPond-scan-containing-sexp (&optional bracket-type slur-paren-p dir)
-  "Move point to the beginning of the deepest parenthesis pair enclosing point. 
-
-If the optional argument bracket-type, a character representing a
-close bracket such as ) or }, is specified, then the parenthesis pairs
-searched are limited to this type.
-
-If the optional argument slur-paren-p is non-nil, then slur
-parentheses () are considered as matching pairs. Otherwise Scheme
-parentheses are considered to be matching pairs, but slurs are not.
-slur-paren-p defaults to nil.
-"
-;;; An user does not call this function directly, or by a key sequence.
-  ;;  (interactive)
-  (let ( (level (if (not (eq dir 1)) 1 -1))
-	 (regexp-alist LilyPond-parens-regexp-alist) 
-	 (oldpos (point))
-	 (assoc-bracket-type (if (not (eq dir 1)) bracket-type (LilyPond-matching-paren bracket-type))))
-    
-    (if (LilyPond-inside-scheme-p)
-	(setq paren-regexp "(\\|)")
-      (if slur-paren-p
-	  ;; expressional slurs  '\( ... \)' are not taken into account
-	  (setq regexp-alist (cons '( ?\) . ("\\([^\\]\\([\\][\\]\\)*\\|^\\)(" . "\\([^\\]\\([\\][\\]\\)*\\|^\\))")) regexp-alist)))
-      (if (member assoc-bracket-type (mapcar 'car regexp-alist))
-	  (progn (setq paren-regexp (cdr (assoc assoc-bracket-type regexp-alist)))
-		 (setq paren-regexp (concat (car paren-regexp) "\\|" (cdr paren-regexp))))
-	(setq paren-regexp (concat (mapconcat 'car (mapcar 'cdr regexp-alist) "\\|") "\\|"
-				   (mapconcat 'cdr (mapcar 'cdr regexp-alist) "\\|")))))
-    ;; match concurrent one-char opening and closing slurs
-    (if (and (eq dir 1)
-	     (not (sequencep bracket-type))
-	     (eq (char-syntax (char-after oldpos)) ?\()
-	     (not (eq (char-after oldpos) ?<)))
-	;; anyway do not count open slur, since already level = -1
-        (progn (forward-char 1)
-	       (if (eq (following-char) 
-		       (LilyPond-matching-paren (char-after oldpos)))
-		   ;; matching char found, go after it and set level = 0
-		   (progn (forward-char 1)
-			  (setq level 0)))))
-    ;; browse the code until matching slur is found, or report mismatch
-    (while (and (if (not (eq dir 1)) 
-		    (> level 0) 
-		  (< level 0))
-		;; dir tells whether to search backward or forward
-		(if (not (eq dir 1))
-		    (re-search-backward paren-regexp nil t)
-		  (re-search-forward paren-regexp nil t))
-		;; note: in case of two-char bracket only latter is compared
-		(setq match (char-before (match-end 0))))
-;;;      (message "%d" level) (sit-for 0 300)
-      (if (not (save-excursion (goto-char (match-end 0))
-			       ;; skip over strings and comments
-			       (LilyPond-inside-string-or-comment-p)))
-	  (if (memq match '(?} ?> ?] ?\)))
-	      ;; count closing brackets
-	      (progn (setq level (1+ level))
-		     ;; slurs may be close to each other, e.g.,
-		     ;; a single '>' was not matched .. need to be corrected
-		     (if (and (eq dir 1) (eq (char-after (match-end 0)) match))
-			 (if (/= level 0)
-			     (progn
-			       (setq level (1+ level))
-			       (forward-char 1))))
-;;;		     (message "%d %c" level match) (sit-for 0 300)
-		     ;; hmm..
-		     (if (and (= match ?>) 
-			      (looking-at ".\\s-+>\\|\\({\\|}\\|<\\|>\\|(\\|)\\|[][]\\)>"))
-			 (forward-char 1)))
-	    ;; count opening brackets
-	    (progn (setq level (1- level))
-;;;		   (message "%d %c" level match) (sit-for 0 300)
-		   ;; hmm..
-		   (if (and (= match ?<)
-			    (looking-at ".\\s-+<\\|\\({\\|}\\|<\\|>\\|(\\|)\\|[][]\\)<"))
-		       (forward-char 1))))))
-    ;; jump to the matching slur
-    (if (not (eq dir 1))
-	(progn
-	  (if (sequencep bracket-type)
-	      ;; match the latter char in two-char brackets
-	      (if (looking-at "..[][)(]") (forward-char 1)))
-	  ;; if the following char is not already a slur
-	  (if (and (not (looking-at "[)(]"))
-		   ;; match the slur which follows
-		   (looking-at ".[][><)(]")) (forward-char 1)))
-      (backward-char 1))
-    (if (= level 0) 
-	(point)
-      (progn (goto-char oldpos)
-	     nil))))
-
-
-(defun LilyPond-inside-scheme-p ()
-  "Tests if point is inside embedded Scheme code"
-;;; An user does not call this function directly, or by a key sequence.
-  ;;  (interactive)
-  (let ( (test-point (point))
-	 (level 0) )
-    (save-excursion 
-      (if (or (and (/= (point) (point-max))
-		   (= (char-after (point)) ?\()
-		   (or (= (char-after (- (point) 1)) ?#)
-		       (and (= (char-after (- (point) 2)) ?#)
-			    (= (char-after (- (point) 1)) ?`))))
-	      (and (re-search-backward "#(\\|#`(" nil t)
-		   (progn 
-		     (search-forward "(")
-		     (setq level 1)
-		     (while (and (> level 0)
-				 (re-search-forward "(\\|)" test-point t)
-				 (setq match (char-after (match-beginning 0)))
-				 (<= (point) test-point))
-		       (if (= match ?\()
-			   (setq level (1+ level))
-			 (setq level (1- level))))
-		     (> level 0))))
-	  t
-	nil))))
-
-
-;;; Largely taken from the 'blink-matching-open' in lisp/simple.el in
-;;; the Emacs distribution.
-
-(defun LilyPond-blink-matching-paren (&optional dir)
-  "Move cursor momentarily to the beginning of the sexp before
-point. In lilypond files this is used for closing ), ], } and >, whereas the
-builtin 'blink-matching-open' is not used. In syntax table, see
-`lilypond-font-lock.el', all brackets are punctuation characters."
-;;; An user does not call this function directly, or by a key sequence.
-  ;;  (interactive)
-  (let ( (oldpos (point))
-	 (level 0) 
-	 (mismatch) )
-    (if (not (or (equal this-command 'LilyPond-electric-close-paren)
-		 (eq dir 1)))
-	(goto-char (setq oldpos (- oldpos 1))))
-    ;; Test if a ligature \] or expressional slur \) was encountered
-    (setq bracket-type (char-after (point)))
-    (setq char-before-bracket-type nil)
-    (if (memq bracket-type '(?] ?\) ?[ ?\())
-      (progn 
-	(setq np -1)
-	(while (eq (char-before (- (point) (setq np (+ np 1)))) ?\\)
-	  (setq char-before-bracket-type (if char-before-bracket-type nil ?\\)))
-        (if (eq char-before-bracket-type ?\\)
-	    (setq bracket-type (string char-before-bracket-type bracket-type)))))
-    (when blink-matching-paren-distance
-      (narrow-to-region
-       (max (point-min) (- (point) blink-matching-paren-distance))
-       (min (point-max) (+ (point) blink-matching-paren-distance))))
-    (if (and (equal this-command 'LilyPond-electric-close-paren)
-	     (memq bracket-type '(?> ?} ?< ?{)))
-	;; < { need to be mutually balanced and nested, so search backwards for both of these bracket types 
-	(LilyPond-scan-containing-sexp nil nil dir)  
-      ;; whereas ( ) slurs within music don't, so only need to search for ( )
-      ;; use same mechanism for [ ] slurs
-      (LilyPond-scan-containing-sexp bracket-type t dir))
-    (setq blinkpos (point))
-    (setq mismatch
-	  (or (null (LilyPond-matching-paren (char-after blinkpos)))
-	      (/= (char-after oldpos)
-		  (LilyPond-matching-paren (char-after blinkpos)))))
-    (if mismatch (progn (setq blinkpos nil)
-			(message "Mismatched parentheses")))
-    (if (and blinkpos
-	     (equal this-command 'LilyPond-electric-close-paren))
-	(if (pos-visible-in-window-p)
-	    (and blink-matching-paren-on-screen
-		 (sit-for blink-matching-delay))
-	  (message
-	   "Matches %s"
-	   ;; Show what precedes the open in its line, if anything.
-	   (if (save-excursion
-		 (skip-chars-backward " \t")
-		 (not (bolp)))
-	       (buffer-substring (progn (beginning-of-line) (point))
-				 (1+ blinkpos))
-	     ;; Show what follows the open in its line, if anything.
-	     (if (save-excursion
-		   (forward-char 1)
-		   (skip-chars-forward " \t")
-		   (not (eolp)))
-		 (buffer-substring blinkpos
-				   (progn (end-of-line) (point)))
-	       ;; Otherwise show the previous nonblank line,
-	       ;; if there is one.
-	       (if (save-excursion
-		     (skip-chars-backward "\n \t")
-		     (not (bobp)))
-		   (concat
-		    (buffer-substring (progn
-					(skip-chars-backward "\n \t")
-					(beginning-of-line)
-					(point))
-				      (progn (end-of-line)
-					     (skip-chars-backward " \t")
-					     (point)))
-		    ;; Replace the newline and other whitespace with `...'.
-		    "..."
-		    (buffer-substring blinkpos (1+ blinkpos)))
-		 ;; There is nothing to show except the char itself.
-		 (buffer-substring blinkpos (1+ blinkpos))))))))
-    (if (not (equal this-command 'LilyPond-electric-close-paren))
-	(goto-char (setq oldpos (+ oldpos 1)))
-      (goto-char oldpos))
-    (if (not (eq dir 1))
-	blinkpos
-      (+ blinkpos 1))))
-
-
-(defun LilyPond-electric-close-paren ()
-  "Blink on the matching open paren when a >, ), } or ] is inserted"
-  (interactive)
-  (let ((oldpos (point)))
-    (self-insert-command 1)
-    ;; Refontify buffer if a block-comment-ender '%}' is inserted
-    (if (and (eq (char-before (point)) ?})
-	     (eq (char-before (- (point) 1)) ?%))
-	(font-lock-fontify-buffer)
-      ;; Match paren if the cursor is not inside string or comment.
-      (if (and blink-matching-paren
-	       (not (LilyPond-inside-string-or-comment-p))
-	       (save-excursion (re-search-backward 
-				(concat (mapconcat 'cdr (mapcar 'cdr LilyPond-parens-regexp-alist) "\\|") "\\|)") nil t)
-			       (eq oldpos (1- (match-end 0)))))
-	  (progn (backward-char 1)
-		 (LilyPond-blink-matching-paren)
-		 (forward-char 1))))))
-
-(defun LilyPond-scan-sexps (pos dir) 
-  "This function is redefined to be used in Emacs' show-paren-function and
-in XEmacs' paren-highlight."
-  (LilyPond-blink-matching-paren dir))
diff --git a/elisp/lilypond-init.el b/elisp/lilypond-init.el
deleted file mode 100644
index 960c886aa5..0000000000
--- a/elisp/lilypond-init.el
+++ /dev/null
@@ -1,20 +0,0 @@
-;;; lilypond-init.el --- Startup code for LilyPond mode
-;;
-;; Instructions, extracted from Documentation/topdocs/INSTALL.texi: 
-
-;; Emacs mode for entering music and running LilyPond is contained in
-;; the source archive as `lilypond-mode.el', `lilypond-indent.el',
-;; `lilypond-font-lock.el' and `lilypond.words.el'. You should install 
-;; these files to a directory included in your `load-path'. 
-;; File `lilypond-init.el' should be placed to `load-path/site-start.d/' 
-;; or appended to your `~/.emacs' or `~/.emacs.el'. 
-
-;; As a user, you may want add your source path or, e.g., `~/site-lisp/' to
-;; your `load-path'. Append the following line (modified) to your `~/.emacs':
-
-;(setq load-path (append (list (expand-file-name "~/site-lisp")) load-path))
-
-(autoload 'LilyPond-mode "lilypond-mode" "LilyPond Editing Mode" t)
-(add-to-list 'auto-mode-alist '("\\.ly$" . LilyPond-mode))
-(add-hook 'LilyPond-mode-hook (lambda () (turn-on-font-lock)))
-
diff --git a/elisp/lilypond-mode.el b/elisp/lilypond-mode.el
deleted file mode 100644
index 7eb59cec71..0000000000
--- a/elisp/lilypond-mode.el
+++ /dev/null
@@ -1,1158 +0,0 @@
-;;;
-;;; lilypond-mode.el --- Major mode for editing GNU LilyPond music scores
-;;;
-;;; source file of the GNU LilyPond music typesetter
-;;;  
-;;; (c)  1999--2004 Jan Nieuwenhuizen <janneke@gnu.org>
-;;; 
-;;; Changed 2001--2003 Heikki Junes <heikki.junes@hut.fi>
-;;;    * Add PS-compilation, PS-viewing and MIDI-play (29th Aug 2001)
-;;;    * Keyboard shortcuts (12th Sep 2001)
-;;;    * Inserting tags, inspired on sgml-mode (11th Oct 2001)
-;;;    * Autocompletion & Info (23rd Nov 2002)
-
-;;; Inspired on auctex
-
-;;; Look lilypond-init.el or Documentation/topdocs/INSTALL.texi
-;;; for installing instructions.
-
-(require 'easymenu)
-(require 'compile)
-
-(defconst LilyPond-version "1.9.9"
-  "`LilyPond-mode' version number.")
-
-(defconst LilyPond-help-address "bug-lilypond@gnu.org"
-  "Address accepting submission of bug reports.")
-
-(defvar LilyPond-mode-hook nil
-  "*Hook called by `LilyPond-mode'.")
-
-(defvar LilyPond-region-file-prefix "emacs-lily"
-  "File prefix for commands on buffer or region.")
-
-;; FIXME: find ``\score'' in buffers / make settable?
-(defun LilyPond-master-file ()
-  ;; duh
-  (buffer-file-name))
-
-(defvar LilyPond-kick-xdvi nil
-  "If true, no simultaneous xdvi's are started, but reload signal is sent.")
-
-(defvar LilyPond-command-history nil
-  "Command history list.")
-	
-(defvar LilyPond-regexp-alist
-  '(("\\([a-zA-Z]?:?[^:( \t\n]+\\)[:( \t]+\\([0-9]+\\)[:) \t]" 1 2))
-  "Regexp used to match LilyPond errors.  See `compilation-error-regexp-alist'.")
-
-(defvar LilyPond-imenu nil
-  "A flag to tell whether LilyPond-imenu is turned on.")
-(make-variable-buffer-local 'LilyPond-imenu)
-
-(defcustom LilyPond-include-path ".:/tmp"
-  "* LilyPond include path."
-  :type 'string
-  :group 'LilyPond)
-
-(defun LilyPond-words-filename ()
-  "The file containing LilyPond \keywords \Identifiers and ReservedWords.
-Finds file lilypond-words.el from load-path."
-  (let ((fn nil)
-	(lp load-path)
-	(words-file "lilypond.words.el"))
-    (while (and (> (length lp) 0) (not fn))
-      (setq fn (concat (car lp) "/" words-file))
-      (if (not (file-readable-p fn)) 
-	  (progn (setq fn nil) (setq lp (cdr lp)))))
-    (if (not fn)
-	(progn (message "Warning: `lilypond.words.el' not found in `load-path'. See `lilypond-init.el'.")
-	       (sit-for 5 0)))
-    fn))
-
-(defun LilyPond-add-dictionary-word (x)
-  "Contains all words: \keywords \Identifiers and ReservedWords."
-  (nconc '(("" . 1)) x))
-
-;; creates dictionary if empty
-(if (and (eq (length (LilyPond-add-dictionary-word ())) 1)
-	 (not (eq (LilyPond-words-filename) nil)))
-    (progn
-      (setq b (find-file-noselect (LilyPond-words-filename) t t))
-      (setq m (set-marker (make-marker) 1 (get-buffer b)))
-      (setq i 1)
-      (while (> (buffer-size b) (marker-position m))
-	(setq i (+ i 1))
-	(setq copy (copy-alist (list (eval (symbol-name (read m))))))
-	(setcdr copy i)
-	(LilyPond-add-dictionary-word (list copy)))
-      (kill-buffer b)))
-
-(defvar LilyPond-insert-tag-current ""
-  "The last command selected from the LilyPond-Insert -menu.")
-
-(defconst LilyPond-menu-keywords 
-  (let ((wordlist '())
-	(co (all-completions "" (LilyPond-add-dictionary-word ())))
-	(currword ""))
-    (progn
-      (while (> (length co) 0)
-	(setq currword (car co))
-	(if (string-equal "-" (car (setq co (cdr co))))
-	    (progn
-	      (add-to-list 'wordlist currword)
-	      (while (and (> (length co) 0)
-			  (not (string-equal "-" (car (setq co (cdr co))))))))))
-      (reverse wordlist)))
-  "Keywords inserted from LilyPond-Insert-menu.")
-
-(defconst LilyPond-keywords
-  (let ((wordlist '("\\score"))
-	(co (all-completions "" (LilyPond-add-dictionary-word ())))
-	(currword ""))
-    (progn
-      (while (> (length co) 0)
-	(setq currword (car co))
-	(if (> (length currword) 1)
-	    (if (and (string-equal "\\" (substring currword 0 1))
-	             (string-match "[a-z-]+" currword)
-	    	     (= (match-beginning 0) 1)
-	    	     (= (match-end 0) (length currword))
-		     (not (string-equal "\\longa" currword))
-		     (not (string-equal "\\breve" currword))
-		     (not (string-equal "\\maxima" currword))
-		     (string-equal (downcase currword) currword))
-		(add-to-list 'wordlist currword)))
-	(if (string-equal "-" (car (setq co (cdr co))))
-	    (while (and (> (length co) 0)
-			(not (string-equal "-" (car (setq co (cdr co)))))))))
-      (reverse wordlist)))
-  "LilyPond \\keywords")
-
-(defconst LilyPond-identifiers 
-  (let ((wordlist '("\\voiceOne"))
-	(co (all-completions "" (LilyPond-add-dictionary-word ()))))
-    (progn
-      (while (> (length co) 0)
-	(setq currword (car co))
-	(if (> (length currword) 1)
-	    (if (and (string-equal "\\" (substring currword 0 1))
-	             (string-match "[a-zA-Z-]+" currword)
-	    	     (= (match-beginning 0) 1)
-	    	     (= (match-end 0) (length currword))
-		     (not (string-equal (downcase currword) currword)))
-		(add-to-list 'wordlist currword)))
-	(if (string-equal "-" (car (setq co (cdr co))))
-	    (while (and (> (length co) 0)
-			(not (string-equal "-" (car (setq co (cdr co)))))))))
-      (reverse wordlist)))
-  "LilyPond \\Identifiers")
-
-(defconst LilyPond-Capitalized-Reserved-Words 
-  (let ((wordlist '("StaffContext"))
-	(co (all-completions "" (LilyPond-add-dictionary-word ()))))
-    (progn
-      (while (> (length co) 0)
-	(setq currword (car co))
-	(if (> (length currword) 0)
-	    (if (and (string-match "[a-zA-Z_]+" currword)
-	    	     (= (match-beginning 0) 0)
-	    	     (= (match-end 0) (length currword))
-		     (not (string-equal (downcase currword) currword)))
-		(add-to-list 'wordlist currword)))
-	(if (string-equal "-" (car (setq co (cdr co))))
-	    (while (and (> (length co) 0)
-			(not (string-equal "-" (car (setq co (cdr co)))))))))
-      (reverse wordlist)))
-  "LilyPond ReservedWords")
-
-(defconst LilyPond-non-capitalized-reserved-words
-  (let ((wordlist '("cessess"))
-	(co (all-completions "" (LilyPond-add-dictionary-word ()))))
-    (progn
-      (while (> (length co) 0)
-	(setq currword (car co))
-	(if (> (length currword) 0)
-	    (if (and (string-match "[a-z]+" currword)
-	    	     (= (match-beginning 0) 0)
-	    	     (= (match-end 0) (length currword))
-		     (string-equal (downcase currword) currword))
-		(add-to-list 'wordlist currword)))
-	(if (string-equal "-" (car (setq co (cdr co))))
-	    (while (and (> (length co) 0)
-			(not (string-equal "-" (car (setq co (cdr co)))))))))
-      (reverse wordlist)))
-  "LilyPond notenames")
-
-(defun LilyPond-check-files (derived originals extensions)
-  "Check that DERIVED is newer than any of the ORIGINALS.
-Try each original with each member of EXTENSIONS, in all directories
-in LilyPond-include-path."
-  (let ((found nil)
-	(regexp (concat "\\`\\("
-			(mapconcat (function (lambda (dir)
-				      (regexp-quote (expand-file-name dir))))
-				   LilyPond-include-path "\\|")
-			"\\).*\\("
-			(mapconcat 'regexp-quote originals "\\|")
-			"\\)\\.\\("
-			(mapconcat 'regexp-quote extensions "\\|")
-			"\\)\\'"))
-	(buffers (buffer-list)))
-    (while buffers
-      (let* ((buffer (car buffers))
-	     (name (buffer-file-name buffer)))
-	(setq buffers (cdr buffers))
-	(if (and name (string-match regexp name))
-	    (progn
-	      (and (buffer-modified-p buffer)
-		   (or (not LilyPond-save-query)
-		       (y-or-n-p (concat "Save file "
-					 (buffer-file-name buffer)
-					 "? ")))
-		   (save-excursion (set-buffer buffer) (save-buffer)))
-	      (if (file-newer-than-file-p name derived)
-		  (setq found t))))))
-    found))
-
-(defun LilyPond-running ()
-  "Check the currently running LilyPond compiling jobs."
-  (let ((process-names (list "lilypond" "tex" "2dvi" "2ps" "2midi" 
-			     "book" "latex"))
-	(running nil))
-    (while (setq process-name (pop process-names))
-      (setq process (get-process process-name))
-      (if (and process 
-	       (eq (process-status process) 'run))
-	  (push process-name running)))
-    running)) ; return the running jobs
-
-(defun LilyPond-midi-running ()
-  "Check the currently running Midi processes."
-  (let ((process-names (list "midi" "midiall"))
-	(running nil))
-    (while (setq process-name (pop process-names))
-      (setq process (get-process process-name))
-      (if (and process 
-	       (eq (process-status process) 'run))
-	  (push process-name running)))
-    running)) ; return the running jobs
-
-(defun LilyPond-kill-jobs ()
-  "Kill the currently running LilyPond compiling jobs."
-  (interactive)
-  (let ((process-names (LilyPond-running))
-	(killed nil))
-    (while (setq process-name (pop process-names))
-      (quit-process (get-process process-name) t)
-      (push process-name killed))
-    killed)) ; return the killed jobs
-
-(defun LilyPond-kill-midi ()
-  "Kill the currently running midi processes."
-  (let ((process-names (LilyPond-midi-running))
-	(killed nil))
-    (while (setq process-name (pop process-names))
-      (quit-process (get-process process-name) t)
-      (push process-name killed))
-    killed)) ; return the killed jobs
-
-;; URG, should only run LilyPond-compile for LilyPond
-;; not for tex,xdvi (lilypond?)
-(defun LilyPond-compile-file (command name)
-  ;; We maybe should know what we run here (Lily, lilypond, tex)
-  ;; and adjust our error-matching regex ?
-  (compile-internal
-   (if (eq LilyPond-command-current 'LilyPond-command-master)
-       command
-     ;; use temporary directory for Commands on Buffer/Region
-     ;; hm.. the directory is set twice, first to default-dir
-     (concat "cd " (LilyPond-temp-directory) "; " command))
-   "No more errors" name))
-
-;; do we still need this, now that we're using compile-internal?
-(defun LilyPond-save-buffer ()
-  "Save buffer and set default command for compiling."
-  (interactive)
-  (if (buffer-modified-p)
-      (progn (save-buffer)
-	     (setq LilyPond-command-default "LilyPond"))))
-
-;;; return (dir base ext)
-(defun split-file-name (name)
-  (let* ((i (string-match "[^/]*$" name))
-	 (dir (if (> i 0) (substring name 0 i) "./"))
-	 (file (substring name i (length name)))
-	 (i (string-match "[^.]*$" file)))
-    (if (and
-	 (> i 0)
-	 (< i (length file)))
-	(list dir (substring file 0 (- i 1)) (substring file i (length file)))
-      (list dir file ""))))
-
-
-;; Should check whether in command-alist?
-(defcustom LilyPond-command-default "LilyPond"
-  "Default command. Must identify a member of LilyPond-command-alist."
-
-  :group 'LilyPond
-  :type 'string)
-;;;(make-variable-buffer-local 'LilyPond-command-last)
-
-(defvar LilyPond-command-current 'LilyPond-command-master)
-;;;(make-variable-buffer-local 'LilyPond-command-master)
-
-
-;; If non-nil, LilyPond-command-query will return the value of this
-;; variable instead of quering the user. 
-(defvar LilyPond-command-force nil)
-
-(defcustom LilyPond-xdvi-command "xdvi"
-  "Command used to display DVI files."
-
-  :group 'LilyPond
-  :type 'string)
-
-(defcustom LilyPond-gv-command "gv -watch"
-  "Command used to display PS files."
-
-  :group 'LilyPond
-  :type 'string)
-
-(defcustom LilyPond-midi-command "timidity"
-  "Command used to play MIDI files."
-
-  :group 'LilyPond
-  :type 'string)
-
-(defcustom LilyPond-all-midi-command "timidity -ia"
-  "Command used to play MIDI files."
-
-  :group 'LilyPond
-  :type 'string)
-
-(defun LilyPond-command-current-midi ()
-  "Play midi corresponding to the current document."
-  (interactive)
-  (LilyPond-command (LilyPond-command-menu "Midi") 'LilyPond-master-file))
-
-(defun LilyPond-command-all-midi ()
-  "Play midi corresponding to the current document."
-  (interactive)
-  (LilyPond-command (LilyPond-command-menu "MidiAll") 'LilyPond-master-file))
-
-(defun count-rexp (start end rexp)
-  "Print number of found regular expressions in the region."
-  (interactive "r")
-  (save-excursion
-    (save-restriction
-      (narrow-to-region start end)
-      (goto-char (point-min))
-      (count-matches rexp))))
-
-(defun count-midi-words ()
-  "Check number of midi-scores before the curser."
-  (if (eq LilyPond-command-current 'LilyPond-command-region)
-      (count-rexp (mark t) (point) "\\\\midi")
-    (count-rexp (point-min) (point-max) "\\\\midi")))
- 
-(defun count-midi-words-backwards ()
-  "Check number of midi-scores before the curser."
-  (if (eq LilyPond-command-current 'LilyPond-command-region)
-      (count-rexp (mark t) (point) "\\\\midi")
-    (count-rexp (point-min) (point) "\\\\midi")))
- 
-(defun LilyPond-string-current-midi ()
-  "Check the midi file of the following midi-score in the current document."
-  (let ((fnameprefix (if (eq LilyPond-command-current 'LilyPond-command-master)
-			 (substring (LilyPond-master-file) 0 -3); suppose ".ly"
-		       LilyPond-region-file-prefix))
-	(allcount (string-to-number (substring (count-midi-words) 0 -12)))
-	(count (string-to-number (substring (count-midi-words-backwards) 0 -12))))
-    (concat  fnameprefix
-	     (if (and (> allcount 1) (> count 0)) ; not first score
-		 (if (eq count allcount)          ; last score
-		     (concat "-" (number-to-string (+ count -1)))
-		   (concat "-" (number-to-string count))))
-	     ".midi")))
-
-(defun LilyPond-string-all-midi ()
-  "Return the midi files of the current document in ascending order."
-  (let ((fnameprefix (if (eq LilyPond-command-current 'LilyPond-command-master)
-			 (substring (LilyPond-master-file) 0 -3); suppose ".ly"
-		       LilyPond-region-file-prefix))
-	(allcount (string-to-number (substring (count-midi-words) 0 -12))))
-    (concat (if (> allcount 0)  ; at least one midi-score
-		(concat fnameprefix ".midi "))
-	    (if (> allcount 1)  ; more than one midi-score
-		(concat fnameprefix "-[1-9].midi "))
-	    (if (> allcount 9)  ; etc.
-		(concat fnameprefix "-[1-9][0-9].midi"))
-	    (if (> allcount 99) ; not first score
-		(concat fnameprefix "-[1-9][0-9][0-9].midi")))))
-
-;; This is the major configuration variable.
-(defcustom LilyPond-command-alist
-  ;; Should expand this to include possible keyboard shortcuts which
-  ;; could then be mapped to define-key and menu.
-  `(
-    ("LilyPond" . ("lilypond-bin %s" . "LaTeX"))
-    ("TeX" . ("tex '\\nonstopmode\\input %t'" . "View"))
-
-    ("2Dvi" . ("lilypond %s" . "View"))
-    ("2PS" . ("lilypond -P %s" . "ViewPS"))
-    ("2Midi" . ("lilypond -m %s" . "View"))
-
-    ("Book" . ("lilypond-book %x" . "LaTeX"))
-    ("LaTeX" . ("latex '\\nonstopmode\\input %l'" . "View"))
-
-    ;; point-n-click (arg: exits upop USR1)
-    ("SmartView" . ("xdvi %d" . "LilyPond"))
-
-    ;; refreshes when kicked USR1
-    ("View" . (,(concat LilyPond-xdvi-command " %d") . "LilyPond"))
-    ("ViewPS" . (,(concat LilyPond-gv-command " %p") . "LilyPond"))
-
-    ;; The following are refreshed in LilyPond-command:
-    ;; - current-midi depends on cursor position and
-    ("Midi" . (,(concat LilyPond-midi-command " " (LilyPond-string-current-midi)) . "LilyPond" )) ; 
-    ;; - all-midi depends on number of midi-score.
-    ("MidiAll" . (,(concat LilyPond-all-midi-command " " (LilyPond-string-all-midi)) . "LilyPond"))
-    )
-
-  "AList of commands to execute on the current document.
-
-The key is the name of the command as it will be presented to the
-user, the value is a cons of the command string handed to the shell
-after being expanded, and the next command to be executed upon
-success.  The expansion is done using the information found in
-LilyPond-expand-list.
-"
-  :group 'LilyPond
-  :type '(repeat (cons :tag "Command Item"
-		       (string :tag "Key")
-		       (cons :tag "How"
-			(string :tag "Command")
-			(string :tag "Next Key")))))
-
-;; drop this?
-(defcustom LilyPond-file-extension ".ly"
-  "*File extension used in LilyPond sources."
-  :group 'LilyPond
-  :type 'string)
-
-
-(defcustom LilyPond-expand-alist 
-  '(
-    ("%s" . ".ly")
-    ("%t" . ".tex")
-    ("%d" . ".dvi")
-    ("%p" . ".ps")
-    ("%l" . ".tex")
-    ("%x" . ".tely")
-    ("%m" . ".midi")
-    )
-    
-  "Alist of expansion strings for LilyPond command names."
-  :group 'LilyPond
-  :type '(repeat (cons :tag "Alist item"
-		  (string :tag "Symbol")
-		  (string :tag "Expansion")))) 
-
-
-(defcustom LilyPond-command-Show "View"
-  "*The default command to show (view or print) a LilyPond file.
-Must be the car of an entry in `LilyPond-command-alist'."
-  :group 'LilyPond
-  :type 'string)
-  (make-variable-buffer-local 'LilyPond-command-Show)
-
-(defcustom LilyPond-command-Print "Print"
-  "The name of the Print entry in LilyPond-command-Print."
-  :group 'LilyPond
-  :type 'string)
-
-(defun xLilyPond-compile-sentinel (process msg)
-  (if (and process
-	   (= 0 (process-exit-status process)))
-      (setq LilyPond-command-default
-	      (cddr (assoc LilyPond-command-default LilyPond-command-alist)))))
-
-;; FIXME: shouldn't do this for stray View/xdvi
-(defun LilyPond-compile-sentinel (buffer msg)
-  (if (string-match "^finished" msg)
-      (setq LilyPond-command-default
-	    (cddr (assoc LilyPond-command-default LilyPond-command-alist)))))
-
-;;(make-variable-buffer-local 'compilation-finish-function)
-(setq compilation-finish-function 'LilyPond-compile-sentinel)
-
-(defun LilyPond-command-query (name)
-  "Query the user for what LilyPond command to use."
-  (let* ((default (cond ((if (string-equal name LilyPond-region-file-prefix)
-			     (LilyPond-check-files (concat name ".tex")
-						   (list name)
-						   (list LilyPond-file-extension))
-			   (if (verify-visited-file-modtime (current-buffer))
-			       (if (buffer-modified-p)
-				   (if (y-or-n-p "Save buffer before next command? ")
-				       (LilyPond-save-buffer)))
-			     (if (y-or-n-p "The command will be invoked to an already saved buffer. Revert it? ")
-				 (revert-buffer t t)))
-			   ;;"LilyPond"
-			   LilyPond-command-default))
-			(t LilyPond-command-default)))
-
-         (completion-ignore-case t)
-	 
-	 (answer (or LilyPond-command-force
-		     (completing-read
-		      (concat "Command: (default " default ") ")
-		      LilyPond-command-alist nil t nil 'LilyPond-command-history))))
-
-    ;; If the answer is "LilyPond" it will not be expanded to "LilyPond"
-    (let ((answer (car-safe (assoc answer LilyPond-command-alist))))
-      (if (and answer
-	       (not (string-equal answer "")))
-	  answer
-	default))))
-
-(defun LilyPond-command-master ()
-  "Run command on the current document."
-  (interactive)
-  (LilyPond-command-select-master)
-  (LilyPond-command (LilyPond-command-query (LilyPond-master-file))
-		    'LilyPond-master-file))
-
-(defun LilyPond-command-lilypond ()
-  "Run lilypond for the current document."
-  (interactive)
-  (LilyPond-command (LilyPond-command-menu "LilyPond") 'LilyPond-master-file)
-)
-
-(defun LilyPond-command-formatdvi ()
-  "Format the dvi output of the current document."
-  (interactive)
-  (LilyPond-command (LilyPond-command-menu "2Dvi") 'LilyPond-master-file)
-)
-
-(defun LilyPond-command-formatps ()
-  "Format the ps output of the current document."
-  (interactive)
-  (LilyPond-command (LilyPond-command-menu "2PS") 'LilyPond-master-file)
-)
-
-(defun LilyPond-command-formatmidi ()
-  "Format the midi output of the current document."
-  (interactive)
-  (LilyPond-command (LilyPond-command-menu "2Midi") 'LilyPond-master-file)
-)
-
-(defun LilyPond-command-smartview ()
-  "View the dvi output of current document."
-  (interactive)
-  (LilyPond-command (LilyPond-command-menu "SmartView") 'LilyPond-master-file)
-)
-
-(defun LilyPond-command-view ()
-  "View the dvi output of current document."
-  (interactive)
-  (LilyPond-command (LilyPond-command-menu "View") 'LilyPond-master-file)
-)
-
-(defun LilyPond-command-viewps ()
-  "View the ps output of current document."
-  (interactive)
-  (LilyPond-command (LilyPond-command-menu "ViewPS") 'LilyPond-master-file)
-)
-
-;; FIXME, this is broken
-(defun LilyPond-region-file (begin end)
-  (let (
-	;; (dir "./")
- 	(dir (LilyPond-temp-directory))
-	(base LilyPond-region-file-prefix)
-	(ext LilyPond-file-extension))
-    (concat dir base ext)))
-
-;;; Commands on Region work if there is an appropriate '\score'.
-(defun LilyPond-command-region (begin end)
-  "Run LilyPond on the current region."
-  (interactive "r")
-  (if (or (> begin (point-min)) (< end (point-max)))
-      (LilyPond-command-select-region))
-  (write-region begin end (LilyPond-region-file begin end) nil 'nomsg)
-  (LilyPond-command (LilyPond-command-query
-		     (LilyPond-region-file begin end))
-		    '(lambda () (LilyPond-region-file begin end)))
-  ;; Region may deactivate even if buffer was intact, reactivate?
-  ;; Currently, also deactived regions are used.
-  )
-
-(defun LilyPond-command-buffer ()
-  "Run LilyPond on buffer."
-  (interactive)
-  (LilyPond-command-select-buffer)
-  (LilyPond-command-region (point-min) (point-max)))
-
-(defun LilyPond-command-expand (string file)
-  (let ((case-fold-search nil))
-    (if (string-match "%" string)
-	(let* ((b (match-beginning 0))
-	       (e (+ b 2))
-	       (l (split-file-name file))
-	       (dir (car l))
-	       (base (cadr l)))
-	  (LilyPond-command-expand
-	   (concat (substring string 0 b)
-		   dir
-		   base
-		   (let ((entry (assoc (substring string b e)
-				       LilyPond-expand-alist)))
-		     (if entry (cdr entry) ""))
-		   (substring string e))
-	   file))
-      string)))
-
-(defun LilyPond-shell-process (name buffer command)
-  (let ((old (current-buffer)))
-    (switch-to-buffer-other-window buffer)
-    ;; If we empty the buffer don't see messages scroll by.
-    ;; (erase-buffer)
-    
-    (start-process-shell-command name buffer command)
-    (switch-to-buffer-other-window old)))
-  
-
-(defun LilyPond-command (name file)
-  "Run command NAME on the file you get by calling FILE.
-
-FILE is a function return a file name.  It has one optional argument,
-the extension to use on the file.
-
-Use the information in LilyPond-command-alist to determine how to run the
-command."
-  
-  (let ((entry (assoc name LilyPond-command-alist)))
-    (if entry
-	(let ((command (LilyPond-command-expand (cadr entry)
-						(apply file nil)))
-	      (jobs nil)
-	      (job-string "no jobs"))
-	  (if (member name (list "View" "ViewPS"))
-	      ;; is USR1 a right signal for viewps?
-	      (let ((buffer-xdvi (get-buffer-create (concat "*" name "*"))))
-		(if LilyPond-kick-xdvi
-		  (let ((process-xdvi (get-buffer-process buffer-xdvi)))
-		    (if process-xdvi
-			(signal-process (process-id process-xdvi) 'SIGUSR1)
-		      (LilyPond-shell-process name buffer-xdvi command)))
-		  (LilyPond-shell-process name buffer-xdvi command)))
-	    (progn
-	      (if (string-equal name "Midi")
-		  (progn
-		    (setq command (concat LilyPond-midi-command " " (LilyPond-string-current-midi)))
-		    (if (LilyPond-kill-midi)
-			(setq job-string nil)))) ; either stop or start playing
-	      (if (string-equal name "MidiAll")
-		  (progn
-		    (setq command (concat LilyPond-all-midi-command " " (LilyPond-string-all-midi)))
-		    (LilyPond-kill-midi))) ; stop and start playing
-	      (if (and (member name (list "Midi" "MidiAll")) job-string)
-		  (if (file-newer-than-file-p
-		       (LilyPond-master-file)
-		       (concat (substring (LilyPond-master-file) 0 -3) ".midi"))
-		      (if (y-or-n-p "Midi older than source. Reformat midi?")
-			  (progn
-			    (LilyPond-command-formatmidi)
-			    (while (LilyPond-running)
-			      (message "Starts playing midi once it is built.")
-			      (sit-for 0 100))))))
-	      (if (member name (list "LilyPond" "TeX" "2Midi" "2PS" "2Dvi" 
-				     "Book" "LaTeX"))
-		  (if (setq jobs (LilyPond-running))
-		      (progn
-			(setq job-string "Process") ; could also suggest compiling after process has ended
-			(while jobs
-			  (setq job-string (concat job-string " \"" (pop jobs) "\"")))
-			(setq job-string (concat job-string " is already running; kill it to proceed "))
-			(if (y-or-n-p job-string)
-			    (progn
-			      (setq job-string "no jobs")
-			      (LilyPond-kill-jobs)
-			      (while (LilyPond-running)
-				(sit-for 0 100)))
-			  (setq job-string nil)))))
-
-	      (setq LilyPond-command-default name)
-	      (if (string-equal job-string "no jobs")
-		  (LilyPond-compile-file command name))))))))
-	  
-(defun LilyPond-mark-active ()
-  "Check if there is an active mark."
-  (and transient-mark-mode
-       (if (string-match "XEmacs\\|Lucid" emacs-version) (mark) mark-active)))
-
-(defun LilyPond-temp-directory ()
-  "Temporary file directory for Commands on Region."
-  (interactive)
-  (if (string-match "XEmacs\\|Lucid" emacs-version)
-      (concat (temp-directory) "/")
-    temporary-file-directory))
-
-;;; Keymap
-
-(defvar LilyPond-mode-map ()
-  "Keymap used in `LilyPond-mode' buffers.")
-
-;; Note:  if you make changes to the map, you must do
-;;    M-x set-variable LilyPond-mode-map nil
-;;    M-x eval-buffer
-;;    M-x LilyPond-mode
-;; to let the changest take effect
-
-(if LilyPond-mode-map
-    ()
-  (setq LilyPond-mode-map (make-sparse-keymap))
-  ;; Put keys to LilyPond-command-alist and fetch them from there somehow.
-  (define-key LilyPond-mode-map "\C-c\C-l" 'LilyPond-command-lilypond)
-  (define-key LilyPond-mode-map "\C-c\C-r" 'LilyPond-command-region)
-  (define-key LilyPond-mode-map "\C-c\C-b" 'LilyPond-command-buffer)
-  (define-key LilyPond-mode-map "\C-c\C-k" 'LilyPond-kill-jobs)
-  (define-key LilyPond-mode-map "\C-c\C-c" 'LilyPond-command-master)
-  (define-key LilyPond-mode-map "\C-cm" 'LilyPond-command-formatmidi)
-  (define-key LilyPond-mode-map "\C-c\C-d" 'LilyPond-command-formatdvi)
-  (define-key LilyPond-mode-map "\C-c\C-f" 'LilyPond-command-formatps)
-  (define-key LilyPond-mode-map "\C-c\C-s" 'LilyPond-command-smartview)
-  (define-key LilyPond-mode-map "\C-c\C-v" 'LilyPond-command-view)
-  (define-key LilyPond-mode-map "\C-c\C-p" 'LilyPond-command-viewps)
-  (define-key LilyPond-mode-map [(control c) return] 'LilyPond-command-current-midi)
-  (define-key LilyPond-mode-map [(control c) (control return)] 'LilyPond-command-all-midi)
-  (define-key LilyPond-mode-map "\C-x\C-s" 'LilyPond-save-buffer)
-  (define-key LilyPond-mode-map "\C-cf" 'font-lock-fontify-buffer)
-  (define-key LilyPond-mode-map "\C-ci" 'LilyPond-insert-tag-current)
-  ;; the following will should be overriden by Lilypond Quick Insert Mode
-  (define-key LilyPond-mode-map "\C-cq" 'LilyPond-quick-insert-mode)
-  (define-key LilyPond-mode-map "\C-c;" 'LilyPond-comment-region)
-  (define-key LilyPond-mode-map ")" 'LilyPond-electric-close-paren)
-  (define-key LilyPond-mode-map ">" 'LilyPond-electric-close-paren)
-  (define-key LilyPond-mode-map "}" 'LilyPond-electric-close-paren)
-  (define-key LilyPond-mode-map "]" 'LilyPond-electric-close-paren)
-  (if (string-match "XEmacs\\|Lucid" emacs-version)
-      (define-key LilyPond-mode-map [iso-left-tab] 'LilyPond-autocompletion)
-    (define-key LilyPond-mode-map [iso-lefttab] 'LilyPond-autocompletion))
-  (define-key LilyPond-mode-map "\C-c\t" 'LilyPond-info-index-search)
-  )
-
-;;; Menu Support
-
-;;; This mode was originally LilyPond-quick-note-insert by Heikki Junes.
-;;; The original version has been junked since CVS-1.97,
-;;; in order to merge the efforts done by Nicolas Sceaux.
-;;; LilyPond Quick Insert Mode is a major mode, toggled by C-c q.
-(defun LilyPond-quick-insert-mode ()
-  "Insert notes with fewer key strokes by using a simple keyboard piano."
-  (interactive)
-  (progn 
-    (message "Invoke (C-c q) from keyboard. If you still see this message,") (sit-for 5 0)
-    (message "then you have not installed LilyPond Quick Insert Mode (lyqi).") (sit-for 5 0)
-    (message "Download lyqi from http://nicolas.sceaux.free.fr/lilypond/lyqi.html,") (sit-for 5 0)
-    (message "see installation instructions from lyqi's README -file.") (sit-for 5 0)
-    (message "You need also eieio (Enhanced Integration of Emacs Interpreted Objects).") (sit-for 5 0)
-    (message "Download eieio from http://cedet.sourceforge.net/eieio.shtml,") (sit-for 5 0)
-    (message "see installation instructions from eieio's INSTALL -file.") (sit-for 5 0)
-    (message "")
-    ))    
-
-(defun LilyPond-pre-word-search ()
-  "Fetch the alphabetic characters and \\ in front of the cursor."
-  (let ((pre "")
-	(prelen 0)
-	(ch (char-before (- (point) 0))))
-    (while (and ch (or (and (>= ch 65) (<= ch 90))  ; not bolp, A-Z
-		       (and (>= ch 97) (<= ch 122)) ; a-z
-		       (= ch 92)))                  ; \\
-      (setq pre (concat (char-to-string ch) pre))
-      (setq prelen (+ prelen 1))
-      (setq ch (char-before (- (point) prelen))))
-    pre))
-
-(defun LilyPond-post-word-search ()
-  "Fetch the alphabetic characters behind the cursor."
-  (let ((post "")
-	(postlen 0)
-	(ch (char-after (+ (point) 0))))
-    (while (and ch (or (and (>= ch 65) (<= ch 90))    ; not eolp, A-Z
-		       (and (>= ch 97) (<= ch 122)))) ; a-z
-      (setq post (concat post (char-to-string ch)))
-      (setq postlen (+ postlen 1))
-      (setq ch (char-after (+ (point) postlen))))
-    post))
-
-(defun LilyPond-autocompletion ()
-  "Show completions in mini-buffer for the given word."
-  (interactive)
-  (let ((pre (LilyPond-pre-word-search))
-	(post (LilyPond-post-word-search))
-	(compsstr ""))
-    ;; insert try-completion and show all-completions
-    (if (> (length pre) 0)
-	(progn
-	  (setq trycomp (try-completion pre (LilyPond-add-dictionary-word ())))
-	  (if (char-or-string-p trycomp)
-	      (if (string-equal (concat pre post) trycomp)
-		  (goto-char (+ (point) (length post)))
-		(progn
-		  (delete-region (point) (+ (point) (length post)))
-		  (insert (substring trycomp (length pre) nil))))
-	    (progn
-	      (delete-region (point) (+ (point) (length post)))
-	      (font-lock-fontify-buffer))) ; only inserting fontifies
-	
-	(setq complist (all-completions pre (LilyPond-add-dictionary-word ())))
-	(while (> (length complist) 0)
-	  (setq compsstr (concat compsstr "\"" (car complist) "\" "))
-	  (setq complist (cdr complist)))
-	(message compsstr) 
-	(sit-for 0 100)))))
-
-(defun LilyPond-info ()
-  "Launch Info for lilypond."
-  (interactive)
-  (info "lilypond"))
-  
-(defun LilyPond-music-glossary-info ()
-  "Launch Info for music-glossary."
-  (interactive)
-  (info "music-glossary"))
-
-(defun LilyPond-internals-info ()
-  "Launch Info for lilypond-internals."
-  (interactive)
-  (info "lilypond-internals"))
-  
-(defun LilyPond-info-index-search ()
-  "In `*info*'-buffer, launch `info lilypond --index-search word-under-cursor'"
-  (interactive)
-  (let ((str (concat (LilyPond-pre-word-search) (LilyPond-post-word-search))))
-    (if (and (> (length str) 0) 
-	     (string-equal (substring str 0 1) "\\"))
-	(setq str (substring str 1 nil)))
-    (LilyPond-info)
-    (Info-index str)))
-
-(defun LilyPond-insert-tag-current (&optional word)
-  "Set the current tag to be inserted."
-  (interactive)
-  (if word
-      (setq LilyPond-insert-tag-current word))
-  (if (memq LilyPond-insert-tag-current LilyPond-menu-keywords)
-      (LilyPond-insert-tag)
-    (message "No tag was selected from LilyPond->Insert tag-menu.")))
-
-(defun LilyPond-insert-tag ()
-  "Insert syntax for given tag. The definitions are in LilyPond-words-filename."
-  (interactive)
-  (setq b (find-file-noselect (LilyPond-words-filename) t t))
-  (let ((word LilyPond-insert-tag-current)
-	(found nil)
-	(p nil)
-	(query nil)
-        (m (set-marker (make-marker) 1 (get-buffer b)))
-        (distance (if (LilyPond-mark-active)
-		      (abs (- (mark-marker) (point-marker))) 0))
-       )
-   ;; find the place first
-   (if (LilyPond-mark-active)
-       (goto-char (min (mark-marker) (point-marker))))
-   (while (and (not found) (> (buffer-size b) (marker-position m)))
-    (setq copy (car (copy-alist (list (eval (symbol-name (read m)))))))
-    (if (string-equal word copy) (setq found t)))
-   (if found (insert word))
-   (if (> (buffer-size b) (marker-position m))
-       (setq copy (car (copy-alist (list (eval (symbol-name (read m))))))))
-   (if (not (string-equal "-" copy)) 
-       (setq found nil))
-   (while (and found (> (buffer-size b) (marker-position m)))
-    ;; find next symbol
-    (setq copy (car (copy-alist (list (eval (symbol-name (read m)))))))
-    ;; check whether it is the word, or the word has been found
-    (cond 
-     ((string-equal "-" copy) (setq found nil))
-     ((string-equal "%" copy) (insert " " (read-string "Give Arguments: ")))
-     ((string-equal "_" copy) 
-      (progn 
-       (setq p (point))
-       (goto-char (+ p distance))))
-     ((string-equal "\?" copy) (setq query t))
-     ((string-equal "\!" copy) (setq query nil))
-     ((string-equal "\\n" copy) 
-      (if (not query)
-       (progn (LilyPond-indent-line) (insert "\n") (LilyPond-indent-line))))
-     ((string-equal "{" copy) 
-      (if (not query) 
-	  (progn (insert " { "))))
-     ((string-equal "}" copy)
-      (if (not query)
-       (progn (insert " } ") (setq query nil) )))
-     ((not query)
-      (insert copy))
-     (query
-      (if (y-or-n-p (concat "Proceed with `" copy "'? "))
-       (progn (insert copy) (setq query nil))))
-   ))
-   (if p (goto-char p))
-   (kill-buffer b))
-)
-
-(defun LilyPond-command-menu-entry (entry)
-  ;; Return LilyPond-command-alist ENTRY as a menu item.
-  (let ((name (car entry)))
-    (cond ((and (string-equal name LilyPond-command-Print)
-		LilyPond-printer-list)
-	   (let ((command LilyPond-print-command)
-		 (lookup 1))
-	     (append (list LilyPond-command-Print)
-		     (mapcar 'LilyPond-command-menu-printer-entry
-			     LilyPond-printer-list))))
-	  (t
-	   (vector name (list 'LilyPond-command-menu name) t)))))
-
-
-(easy-menu-define LilyPond-command-menu
-  LilyPond-mode-map
-  "Menu used in LilyPond mode."
-  (append '("Command")
-	  '(("Command on"
-	     [ "Master File" LilyPond-command-select-master
-	       :keys "C-c C-c" :style radio
-	       :selected (eq LilyPond-command-current 'LilyPond-command-master) ]
-	     [ "Buffer" LilyPond-command-select-buffer
-	       :keys "C-c C-b" :style radio
-	       :selected (eq LilyPond-command-current 'LilyPond-command-buffer) ]
-	     [ "Region" LilyPond-command-select-region
-	       :keys "C-c C-r" :style radio
-	       :selected (eq LilyPond-command-current 'LilyPond-command-region) ]))
-;;;	  (let ((file 'LilyPond-command-on-current))
-;;;	    (mapcar 'LilyPond-command-menu-entry LilyPond-command-alist))
-;;; Some kind of mapping which includes :keys might be more elegant
-;;; Put keys to LilyPond-command-alist and fetch them from there somehow.
-	  '([ "LilyPond" LilyPond-command-lilypond t])
-	  '([ "TeX" (LilyPond-command (LilyPond-command-menu "TeX") 'LilyPond-master-file) ])
-	  '([ "2Dvi" LilyPond-command-formatdvi t])
-	  '([ "2PS" LilyPond-command-formatps t])
-	  '([ "2Midi" LilyPond-command-formatmidi t])
-	  '([ "Book" (LilyPond-command (LilyPond-command-menu "Book") 'LilyPond-master-file) ])
-	  '([ "LaTeX" (LilyPond-command (LilyPond-command-menu "LaTeX") 'LilyPond-master-file) ])
-	  '([ "Kill jobs" LilyPond-kill-jobs t])
-	  '("-----")
-	  '([ "SmartView" LilyPond-command-smartview t])
-	  '([ "View" LilyPond-command-view t])
-	  '([ "ViewPS" LilyPond-command-viewps t])
-	  '("-----")
-	  '([ "Midi (toggle)" LilyPond-command-current-midi t])
-	  '([ "Midi all" LilyPond-command-all-midi t])
-	  ))
-
-(defun LilyPond-menu-keywords-item (arg)
-  "Make vector for LilyPond-mode-keywords."
-  (vector arg (list 'LilyPond-insert-tag-current arg) :style 'radio :selected (list 'eq 'LilyPond-insert-tag-current arg)))
-
-(defun LilyPond-menu-keywords ()
-  "Make Insert Tag menu. 
-
-The Insert Tag -menu is splitted into parts if it is long enough."
-
-  (let ((li (mapcar 'LilyPond-menu-keywords-item LilyPond-menu-keywords))
-	(w (round (sqrt (length LilyPond-menu-keywords))))
-	(splitted '())
-	(imin 0) imax lw rw)
-    (while (< imin (length LilyPond-menu-keywords))
-      (setq imax (- (min (+ imin w) (length LilyPond-menu-keywords)) 1))
-      (setq lw (nth imin LilyPond-menu-keywords)) 
-      (setq rw (nth imax LilyPond-menu-keywords))
-      (add-to-list 'splitted
-         (let ((l (list (concat (substring lw 0 (min 7 (length lw))) 
-				" ... " 
-				(substring rw 0 (min 7 (length rw)))))))
-	   (while (<= imin imax)
-	     (add-to-list 'l (nth imin li))
-	     (setq imin (1+ imin)))
-	   (reverse l))))
-    (if (> (length LilyPond-menu-keywords) 12) (reverse splitted) li)))
-
-;;; LilyPond-mode-menu should not be interactive, via "M-x LilyPond-<Tab>"
-(easy-menu-define LilyPond-mode-menu
-  LilyPond-mode-map
-  "Menu used in LilyPond mode."
-  (append '("LilyPond")
-	  '(["Add index menu" LilyPond-add-imenu-menu])
-	  (list (cons "Insert tag" 
-                (cons ["Previously selected" LilyPond-insert-tag-current t] 
-                (cons "-----"
-		      (LilyPond-menu-keywords)))))
-	  '(("Miscellaneous"
-	     ["Autocompletion"   LilyPond-autocompletion t]
-	     ["(Un)comment Region" LilyPond-comment-region t]
-	     ["Refontify buffer" font-lock-fontify-buffer t]
-	     "-----"
-	     ["Quick Insert Mode"  LilyPond-quick-insert-mode :keys "C-c q"]
- 	     ))
-	  '(("Info"
-	     ["LilyPond" LilyPond-info t]
-	     ["LilyPond index-search" LilyPond-info-index-search t]
-	     ["Music Glossary" LilyPond-music-glossary-info t]
-	     ["LilyPond internals" LilyPond-internals-info t]
-	     ))
-	  ))
-
-(defconst LilyPond-imenu-generic-re "^\\([a-zA-Z]+\\) *="
-  "Regexp matching Identifier definitions.")
-
-(defvar LilyPond-imenu-generic-expression
-  (list (list nil LilyPond-imenu-generic-re 1))
-  "Expression for imenu")
-
-(defun LilyPond-command-select-master ()
-  (interactive)
-  (message "Next command will be on the master file")
-  (setq LilyPond-command-current 'LilyPond-command-master))
-
-(defun LilyPond-command-select-buffer ()
-  (interactive)
-  (message "Next command will be on the buffer")
-  (setq LilyPond-command-current 'LilyPond-command-buffer))
-
-(defun LilyPond-command-select-region ()
-  (interactive)
-  (message "Next command will be on the region")
-  (setq LilyPond-command-current 'LilyPond-command-region))
-
-(defun LilyPond-command-menu (name)
-  ;; Execute LilyPond-command-alist NAME from a menu.
-  (let ((LilyPond-command-force name))
-    (if (eq LilyPond-command-current 'LilyPond-command-region)
-	(if (eq (mark t) nil)
-	    (progn (message "The mark is not set now") (sit-for 0 500))
-	  (progn (if (not (not (LilyPond-mark-active)))
-		     (progn (message "Region is not active, using region between inactive mark and current point.") (sit-for 0 500)))
-		 (LilyPond-command-region (mark t) (point))))
-      (funcall LilyPond-command-current))))
-
-(defun LilyPond-add-imenu-menu ()
-  (interactive)
-  "Add an imenu menu to the menubar."
-  (if (not LilyPond-imenu)
-      (progn
-	(imenu-add-to-menubar "Index")
-	(redraw-frame (selected-frame))
-	(setq LilyPond-imenu t))
-    (message "%s" "LilyPond-imenu already exists.")))
-(put 'LilyPond-add-imenu-menu 'menu-enable '(not LilyPond-imenu))
-
-(defun LilyPond-mode ()
-  "Major mode for editing LilyPond music files.
-
-This mode knows about LilyPond keywords and line comments, not about
-indentation or block comments.  It features easy compilation, error
-finding and viewing of a LilyPond source buffer or region.
-
-COMMANDS
-\\{LilyPond-mode-map}
-VARIABLES
-
-LilyPond-command-alist\t\talist from name to command
-LilyPond-xdvi-command\t\tcommand to display dvi files -- bit superfluous"
-  (interactive)
-  ;; set up local variables
-  (kill-all-local-variables)
-
-  (make-local-variable 'font-lock-defaults)
-  (setq font-lock-defaults '(LilyPond-font-lock-keywords))
-
-  ;; string and comments are fontified explicitly
-  (make-local-variable 'font-lock-keywords-only)
-  (setq font-lock-keywords-only t)
-
-  ;; Multi-line font-locking needs Emacs 21.1 or newer.
-  ;; For older versions there is hotkey "C-c f".
-  (make-local-variable 'font-lock-multiline) 
-  (setq font-lock-multiline t) 
-
-  (make-local-variable 'paragraph-separate)
-  (setq paragraph-separate "^[ \t]*$")
-
-  (make-local-variable 'paragraph-start)
-  (setq	paragraph-start "^[ \t]*$")
-
-  (make-local-variable 'comment-start)
-  (setq comment-start "%")
-
-  (make-local-variable 'comment-start-skip)
-  (setq comment-start-skip "%{? *")
-
-  (make-local-variable 'comment-end)
-  (setq comment-end "")
-
-  (make-local-variable 'block-comment-start)
-  (setq block-comment-start "%{")
-
-  (make-local-variable 'block-comment-end)  
-  (setq block-comment-end   "%}")
-
-  (make-local-variable 'indent-line-function)
-  (setq indent-line-function 'LilyPond-indent-line)
-
-  (LilyPond-mode-set-syntax-table '(?\< ?\> ?\{ ?\}))
-  (setq major-mode 'LilyPond-mode)
-  (setq mode-name "LilyPond")
-  (setq local-abbrev-table LilyPond-mode-abbrev-table)
-  (use-local-map LilyPond-mode-map)
-
-  ;; In XEmacs imenu was synched up with: FSF 20.4
-  (make-local-variable 'imenu-generic-expression)
-  (setq imenu-generic-expression LilyPond-imenu-generic-expression)
-  ;; (imenu-add-to-menubar "Index") ; see LilyPond-add-imenu-menu
-
-  ;; In XEmacs one needs to use 'easy-menu-add'.
-  (if (string-match "XEmacs\\|Lucid" emacs-version)
-      (progn
-	(easy-menu-add LilyPond-mode-menu)
-	(easy-menu-add LilyPond-command-menu)))
-
-  ;; Use Command on Region even for inactive mark (region).
-  (if (string-match "XEmacs\\|Lucid" emacs-version)
-      (setq zmacs-regions nil)
-    (setq mark-even-if-inactive t))
-
-  ;; Context dependent syntax tables in LilyPond-mode
-  (make-local-hook 'post-command-hook) ; XEmacs requires
-  (add-hook 'post-command-hook 'LilyPond-mode-context-set-syntax-table nil t)
-
-  ;; Turn on paren-mode buffer-locally, i.e., in LilyPond-mode
-  (if (string-match "XEmacs\\|Lucid" emacs-version)
-      (progn
-	(make-local-variable 'paren-mode)
-	(paren-set-mode 'paren)
-	(make-local-variable 'blink-matching-paren)
-	(setq blink-matching-paren t)
-	)
-    (progn
-      (make-local-variable 'blink-matching-paren-on-screen)
-      (setq blink-matching-paren-on-screen t)
-     ))
-
-  ;; run the mode hook. LilyPond-mode-hook use is deprecated
-  (run-hooks 'LilyPond-mode-hook))
-
-(defun LilyPond-version ()
-  "Echo the current version of `LilyPond-mode' in the minibuffer."
-  (interactive)
-  (message "Using `LilyPond-mode' version %s" LilyPond-version))
-
-(load-library "lilypond-font-lock")
-(load-library "lilypond-indent")
-
-(provide 'lilypond-mode)
-;;; lilypond-mode.el ends here
-
diff --git a/emacsclient.patch b/emacsclient.patch
deleted file mode 100644
index e2df3ede6b..0000000000
--- a/emacsclient.patch
+++ /dev/null
@@ -1,148 +0,0 @@
-diff -ur emacs-20.5/lib-src/ChangeLog emacs-hanwen/lib-src/ChangeLog
---- emacs-20.5/lib-src/ChangeLog	Fri Dec 10 17:25:36 1999
-+++ emacs-hanwen/lib-src/ChangeLog	Sun Jul 16 23:00:54 2000
-@@ -1,3 +1,7 @@
-+2000-07-16  Han-Wen Nienhuys  <hanwen@cs.uu.nl>
-+	
-+	* emacsclient.c: Added support for +LINE:COLUMN style arguments.
-+
- 1999-12-04  Gerd Moellmann  <gerd@gnu.org>
- 
- 	* Version 20.5 released.
-Only in emacs-hanwen/lib-src: ChangeLog~
-diff -ur emacs-20.5/lib-src/emacsclient.c emacs-hanwen/lib-src/emacsclient.c
---- emacs-20.5/lib-src/emacsclient.c	Wed Nov  3 14:12:46 1999
-+++ emacs-hanwen/lib-src/emacsclient.c	Sun Jul 16 22:10:35 2000
-@@ -27,6 +27,7 @@
- #undef close
- #undef signal
- 
-+#include <ctype.h> 
- #include <stdio.h>
- #include <getopt.h>
- #ifdef STDC_HEADERS
-@@ -323,7 +324,7 @@
-       if (*argv[i] == '+')
- 	{
- 	  char *p = argv[i] + 1;
--	  while (*p >= '0' && *p <= '9') p++;
-+	  while (isdigit (*p) || *p == ':') p++;
- 	  if (*p != 0)
- 	    fprintf (out, "%s/", quote_file_name (cwd));
- 	}
-@@ -466,7 +467,8 @@
-       if (*modified_arg == '+')
- 	{
- 	  char *p = modified_arg + 1;
--	  while (*p >= '0' && *p <= '9') p++;
-+	  while (isdigit (*p) || *p == ':')
-+	    p++;
- 	  if (*p != 0)
- 	    need_cwd = 1;
- 	}
-Only in emacs-hanwen/lib-src: emacsclient.c~
-diff -ur emacs-20.5/lib-src/emacsserver.c emacs-hanwen/lib-src/emacsserver.c
---- emacs-20.5/lib-src/emacsserver.c	Mon Feb 22 21:44:14 1999
-+++ emacs-hanwen/lib-src/emacsserver.c	Sun Jul 16 22:09:52 2000
-@@ -61,6 +61,7 @@
- #include <errno.h>
- #include <sys/stat.h>
- 
-+
- #ifdef HAVE_UNISTD_H
- #include <unistd.h>
- #endif
-Only in emacs-hanwen/lib-src: emacsserver.c~
-Only in emacs-hanwen/lib-src: suf.el~
-diff -ur emacs-20.5/lisp/ChangeLog emacs-hanwen/lisp/ChangeLog
---- emacs-20.5/lisp/ChangeLog	Fri Dec 10 17:25:02 1999
-+++ emacs-hanwen/lisp/ChangeLog	Sun Jul 16 23:00:04 2000
-@@ -1,3 +1,8 @@
-+2000-07-16  Han-Wen Nienhuys  <hanwen@cs.uu.nl>
-+
-+	* server.el (server-process-filter,server-visit-files): add support for "LINE:COLUMN"
-+	style emacsclient calls.
-+
- 1999-12-04  Gerd Moellmann  <gerd@gnu.org>
- 
- 	* Version 20.5 released.
-Only in emacs-hanwen/lisp: ChangeLog~
-diff -ur emacs-20.5/lisp/server.el emacs-hanwen/lisp/server.el
---- emacs-20.5/lisp/server.el	Sat Mar 13 01:20:25 1999
-+++ emacs-hanwen/lisp/server.el	Sun Jul 16 23:04:41 2000
-@@ -215,7 +215,8 @@
- 				  default-file-name-coding-system)))
- 	  client nowait
- 	  (files nil)
--	  (lineno 1))
-+	  (lineno 1)
-+	  (columnno 0))
-       ;; Remove this line from STRING.
-       (setq string (substring string (match-end 0)))	  
-       (if (string-match "^Error: " request)
-@@ -232,9 +233,17 @@
- 		  (setq request (substring request (match-end 0)))
- 		  (if (string-match "\\`-nowait" arg)
- 		      (setq nowait t)
--		    (if (string-match "\\`\\+[0-9]+\\'" arg)
--			;; ARG is a line number option.
--			(setq lineno (read (substring arg 1)))
-+		    (cond
-+    			;; ARG is a line number option.
-+		     ((string-match "\\`\\+[0-9]+\\'" arg)
-+		      (setq lineno (read (substring arg 1)))
-+		      )
-+		     ;; ARG is line number / column option. 
-+		     ((string-match "\\`\\+[0-9]+:[0-9]+\\'" arg)
-+		      (setq lineno (read (substring arg 1 (string-match ":" arg))))
-+		      (setq columnno (read (substring arg (+ 1 (string-match ":" arg)))))
-+		      )
-+		     (t
- 		      ;; ARG is a file name.
- 		      ;; Collapse multiple slashes to single slashes.
- 		      (setq arg (command-line-normalize-file-name arg))
-@@ -253,9 +262,11 @@
- 		      (if coding-system
- 			  (setq arg (decode-coding-string arg coding-system)))
- 		      (setq files
--			    (cons (list arg lineno)
-+			    (cons (list arg lineno columnno)
- 				  files))
--		      (setq lineno 1)))))
-+		      (setq lineno 1)
-+		      (setq columnno 0)
-+		      )))))
- 	      (server-visit-files files client nowait)
- 	      ;; CLIENT is now a list (CLIENTNUM BUFFERS...)
- 	      (or nowait
-@@ -267,9 +278,11 @@
-   ;; Save for later any partial line that remains.
-   (setq server-previous-string string))
- 
-+
-+
- (defun server-visit-files (files client &optional nowait)
-   "Finds FILES and returns the list CLIENT with the buffers nconc'd.
--FILES is an alist whose elements are (FILENAME LINENUMBER).
-+FILES is an alist whose elements are (FILENAME LINENUMBER COLUMNNUMBER).
- NOWAIT non-nil means this client is not waiting for the results,
- so don't mark these buffers specially, just visit them normally."
-   ;; Bind last-nonmenu-event to force use of keyboard, not mouse, for queries.
-@@ -297,6 +310,7 @@
- 	      (set-buffer (find-file-noselect filen))
- 	      (run-hooks 'server-visit-hook)))
- 	  (goto-line (nth 1 (car files)))
-+	  (move-to-column (nth 2 (car files)))
- 	  (if (not nowait)
- 	      (setq server-buffer-clients
- 		    (cons (car client) server-buffer-clients)))
-@@ -304,6 +318,7 @@
- 	  (setq files (cdr files)))
-       (set-buffer obuf))
-     (nconc client client-record)))
-+
- 
- (defun server-buffer-done (buffer &optional for-killing)
-   "Mark BUFFER as \"done\" for its client(s).
-Only in emacs-hanwen/lisp: server.el.orig
-Only in emacs-hanwen/lisp: server.el~
diff --git a/flower/GNUmakefile b/flower/GNUmakefile
deleted file mode 100644
index 9a36eea33f..0000000000
--- a/flower/GNUmakefile
+++ /dev/null
@@ -1,23 +0,0 @@
-# title	   top level makefile for FlowerLib
-# file	   flower/Makefile
-
-# should reinstate versioning if shared libs are enabled.
-
-depth = ..
-
-NAME = flower
-MODULE_NAME = flower
-SUBDIRS = include 
-
-SCRIPTS = 
-README_FILES = NEWS-1.0 NEWS-1.1.46 README TODO
-EXTRA_DIST_FILES= VERSION $(README_FILES) $(SCRIPTS)
-STEPMAKE_TEMPLATES=library c++ po
-
-
-
-include $(depth)/make/stepmake.make 
-
-foo:
-	echo $(DIST_FILES) $(O_FILES) $(OBJECT_FILES)
-
diff --git a/flower/NEWS-1.0 b/flower/NEWS-1.0
deleted file mode 100644
index 9f4df5bb07..0000000000
--- a/flower/NEWS-1.0
+++ /dev/null
@@ -1,34 +0,0 @@
-history of flower lib 0.0
-
-version 1.1  release
-
-pl 27-3
-	- debug memmove code
-	- StringData bugfix
-	- old String::String( char, int ) bugfix
-
-pl 27-1,2 (not released)
-	patches by JCN
-	- stringutils.cc included again 
-	- bin2hex_str bugfix
-	- String class handles null bytes
-	- StringUtils inlined/outlined by #define
-	- StringConversion (only hex for now)
-
-pl 27
-	- (temporarily?) removed findcursor* t*mat*
-
-pl 26
-	- docxx 3.0
-
-pl 25
-	- merge sstack and Array
-
-pl 24
-	- small fix in vector print
-
-pl 23
-	- win32 patches (JN)
-
-pl 22
-	- Array::add -> Array::push
diff --git a/flower/NEWS-1.1.46 b/flower/NEWS-1.1.46
deleted file mode 100644
index 176bced2fe..0000000000
--- a/flower/NEWS-1.1.46
+++ /dev/null
@@ -1,203 +0,0 @@
-As of 1.1.46, FlowerLib does not have its own versioning scheme.
-
-May be some later time we might reinstate it. ..
-
-
-pl 46
-	- simpler double -> Rational conversion
-
-pl 45
-	- virtual method class_size ()
-
-pl 44
-	- Data_file::gulp ()
-
-pl 43
-	- String_convert::split_arr
-	- varray.hh -> array.hh
-
-
-pl 42
-	- interval.*: Slice (Interval of int)
-	trying to get rid of 2.8 ice:
-        - moved functions with loops from varray.hh to varray.cc
-
-pl 41
-	- matrix fixes; more inlining no virtual methods
-
-pl 40
-	- do some Complex number stuff in Offset
-	- included axies, offset from lily
-
-pl 39
-	- fixes to Array
-	- fixes to Interval
-
-
-pl 38
-	- Rational
-	- Real.hh fixes
-pl 37
-	- various String/File_path mucking
-
-pl 36
-	- memmem fix: bugfree and *really* conforming to /usr/include/string.h
-
-pl 35
-	- bf: libc-extension: memmem
-
-pl 34
-	- string.icc
-	- String_convert::precision_str: double to string with fixed precision
-
-pl 33
-	- String naming
-	- unix style paths
-
-pl 32
-	- Assoc::clear
-	- bf: Assoc[PreviouslyUsedAndDeletedKey] = foo
-
-	
-pl 31
-	- removed String::bool () [Sigh], String::operator char const * 
-pl 30
-	- Cpu_timer
-pl 29 
-	- Dictionary_iter, Dictionary
-
-pl 28
-	- String::bool ()
-	- GNU indentation.
-
-pl 27
-	- naming: macros are MACROS
-
-pl 26
-	- Getopt_long : command -- and command - 
-	- Getopt_long: cosmetics
-
-pl 25
-	- unordered_substitute and unordered_del
-	- Full_storage inline functions
-	- more Diagonal_storage fixes
-
-pl 24 
-	- Diagonal_storage for band matrices.
-	- matrix hackings: support for other Matrix_storage
-	- NAME_MEMBERS(); -> DECLARE_MY_RUNTIME_TYPEINFO;
-	- Matrix::band_i()
-
-pl 23:
-	- virtual-methods : static_is_type_b
-	- Choleski checks off if not PARANOID
-
-pl 22:
-	- ACursor and PACursor to give array a List like interface.
-
-pl 21:
-pl 20.mb
-	- bf: Warning about NPRINT only if debugging requested.
-
-pl 20
-	- List::junk_links()
-
-pl 19
-	- Array::reverse()
-
-pl 18
-	- Path::find("/usr/..") fix
-	- Directed_graph_node
-	- some Link_array extensions
-	- Pointer_list::junk()
-
-pl 17
-	- naming: Pointer->Link, IPointer->Pointer
-
-pl 16
-	- Array::get()
-	- P< > doco.
-
-pl 15
-	- #ifndef fixes (MB)
-	- Dstream::clear ()
-
-pl 14
-	- interval methods
-
-pl 13
-	- better test-bed
-	- Heap PQueue implementation
-
-pl 12
-	- No path search for "" and "-"
-
-pl 11
-	- template<> class P
-	- assoc elem() methods
-
-pl 10
-	- Matrix_storage naming
-	- Matrix_storage::try_right_multiply to help speed up
-	  matrix multiply routines.
-
-pl 9
-	- _C iso _c_l
-	- flower-debug.
-	
-pl 8
-	
-
-pl 7
-	- PQueue blondification.
-	- String_convert::i2hex_str fix, unsigned eqvs introduced
-	- long long depreciated, now named I64
-	- type I32 introduced. should be used iso int where 32 bits are 
-	  needed(or, brr, assumed...)
-
-pl 6-2
-Bugfix
-	- silly String( int... ) -> String( (char)... ) fix
-	  really should junk ambiguous constructor overload
-pl 6-1	
-
-Bugfix
-	- small but nasty include/fversion.hh fixed
-
-pl 6
-	- all of 4-1 and 5
-Bugfix	
-	- null_terminated -> is_binary test
-
-pl 5
-	- memmem interface, conditional compilation
-	- snprintf
-
-pl 4-1
-	- included in new make structure, as a library of lilypond; 
-	  for compiling you-ll need ../make and ../bin dirs from 
-	  lilypond...
-	
-pl 4
-	- great file-renaming.
-	- String cleanup (binary <-> null terminate), several bugfixes
-	- great renaming of String and String_convert interfaces
-	- more conversions moved (copied actually) to String_convert
-	- String indexing now all base = 0, not found = -1
-	- renamed by to byte
-
-pl 3
-	- String::mid
-	- memmove test code
-
-pl 2 
-	- StringConversio::bin2int_i
-	- dumb prioq
-
-pl 1
-	- separated StringHandle and StringData
-	- String::compare
-
-0:
-		
-
diff --git a/flower/README b/flower/README
deleted file mode 100644
index 75bc0679e7..0000000000
--- a/flower/README
+++ /dev/null
@@ -1,12 +0,0 @@
-This library contains some general purpose routines which aren't
-standardised libraries yet. It may be replaced by STL in time.
-
-It was written by:
-
-	Han-Wen Nienhuys <hanwen@stack.nl>
-
-and
-
-	Jan Nieuwenhuizen <janneke@gnu.org>
-
-It is licensed under the GNU LGPL.
diff --git a/flower/TODO b/flower/TODO
deleted file mode 100644
index 5586845c99..0000000000
--- a/flower/TODO
+++ /dev/null
@@ -1,38 +0,0 @@
-
-
-	* Unicode support in strings
-
-	* write a decent Dictionary
-	- write a Pointer_hash template
-
-	* Array::slice() upper too
-
-	* fix ambiguous String constructor overloads, e.g.:
-	  String( int ) and String( char ), use 
-	
-	class String { 
-		explicit String(int);
-	}
-
-	* Automake, libtool
-
-	* LGPL?
-
-	* disable this auto conv: const pointer -> bool -> string
-
-	* Pointer_array
-
-	* PCursor -> Pointer_cursor / PointerCursor ?
-
-	* efficient copy cons for List
-
-	* extend Interval
-
-	* use template handle in handle.hh for strings?
-
-	* move towards gnu or STL?
-
-		parsestream.h
-		vector.h
-
-	* lgetopt: cmd -, or cmd --
diff --git a/flower/VERSION b/flower/VERSION
deleted file mode 100644
index 90f2855e7f..0000000000
--- a/flower/VERSION
+++ /dev/null
@@ -1,9 +0,0 @@
-PACKAGE_NAME=LilyPond
-MAJOR_VERSION=0
-MINOR_VERSION=1
-PATCH_LEVEL=83
-MY_PATCH_LEVEL=hwn5
-
-# use the above to send patches, always empty for released version:
-# please don't move these comments up; the patch should fail if 
-# the previous version was wrong.
diff --git a/flower/axis.cc b/flower/axis.cc
deleted file mode 100644
index 7b264c2da9..0000000000
--- a/flower/axis.cc
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
-  axis.cc -- implement Axis
-
-
-
-  (c) 1997--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-*/
-
-#include <assert.h>
-#include "axes.hh"
-#include "string.hh"
-
-String
-axis_name_string (Axis a)
-{
-  return to_string (char (a + 'x'));
-}
-
-
-Axis
-other_axis (Axis a)
-{
-  return a ==  Y_AXIS ? X_AXIS : Y_AXIS;
-}
-
-/*
-  TODO inline these.
- */
-Axis
-post_incr (Axis &a)
-{
-  assert (a < NO_AXES);
-  Axis b= a;
-  a = Axis (int (a) + 1);
-  return b;
-}
-
-Axis
-incr (Axis &a)
-{
-  assert (a < NO_AXES);
-  a = Axis (int (a) + 1);
-  return a;
-}
-
diff --git a/flower/cpu-timer.cc b/flower/cpu-timer.cc
deleted file mode 100644
index 0ed394409d..0000000000
--- a/flower/cpu-timer.cc
+++ /dev/null
@@ -1,38 +0,0 @@
-/*
-  cpu-timer.cc -- implement Cpu_timer
-
-  source file of the Flower Library
-
-  (c) 1997--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-*/
-
-#include "cpu-timer.hh"
-#include <unistd.h>
-// nextstep
-#ifndef CLOCKS_PER_SEC
-#ifdef CLK_TCK
-#define CLOCKS_PER_SEC  CLK_TCK
-#elif defined _SC_CLK_TCK
-#define CLOCKS_PER_SEC  sysconf (_SC_CLK_TCK)
-#else
-#error cannot determine CLOCKS_PER_SEC
-#endif
-#endif
-
-
-Cpu_timer::Cpu_timer ()
-{
-  restart ();
-}
-void
-Cpu_timer::restart ()
-{
-  start_clock_ = clock ();
-}
-
-Real
-Cpu_timer::read ()
-{
-  clock_t stop = clock ();
-  return (stop-start_clock_)/Real (CLOCKS_PER_SEC);
-}
diff --git a/flower/direction.cc b/flower/direction.cc
deleted file mode 100644
index e5ab18e848..0000000000
--- a/flower/direction.cc
+++ /dev/null
@@ -1,26 +0,0 @@
-/*   
-  direction.cc --  implement Direction
-  
-  source file of the GNU LilyPond music typesetter
-  
-  (c) 1998--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-  
- */
-
-#include "direction.hh"
-#include "string.hh"
-
-String
-direction_string (Direction d, Axis a)
-{
-  String s ("center");
-  if (a == Y_AXIS)
-    {
-       s = ( d == UP ? "up" : "down");
-    }
-  else if (a == X_AXIS)
-    {
-      s = (d == LEFT ? "left" : "right" );
-    }
-  return s;
-}
diff --git a/flower/file-path.cc b/flower/file-path.cc
deleted file mode 100644
index c59d218cd1..0000000000
--- a/flower/file-path.cc
+++ /dev/null
@@ -1,245 +0,0 @@
-/*
-   path.cc - manipulation of paths and filenames.
-*/
-
-#include "config.h"
-#include <stdio.h>
-#include <errno.h>
-#include <limits.h>
-
-#if HAVE_SYS_STAT_H 
-#include <sys/stat.h>
-#endif
-
-#ifdef __CYGWIN__
-#include <sys/cygwin.h>
-
-// URGURG
-#include "../lily/include/scm-option.hh"
-#endif
-
-#include "file-path.hh"
-
-
-#ifndef PATHSEP
-#define PATHSEP ':'
-#endif
-
-/* We don't have multiple roots, set this to '\0'? */
-#ifndef ROOTSEP
-#define ROOTSEP ':'
-#endif
-
-#ifndef DIRSEP
-#define DIRSEP '/'
-#endif
-
-#ifndef EXTSEP
-#define EXTSEP '.'
-#endif
-
-
-
-#ifdef __CYGWIN__
-static String
-dos_to_posix (String path)
-{
-  char buf[PATH_MAX];
-  char *filename = path.get_copy_str0 ();
-  /* urg, wtf? char const* argument gets modified! */
-  cygwin_conv_to_posix_path (filename, buf);
-  delete filename;
-  return buf;
-}
-
-static String
-dos_to_posix_list (String path)
-{
-  char *filename = path.get_copy_str0 ();
-  int len = cygwin_win32_to_posix_path_list_buf_size (filename);
-  if (len < PATH_MAX)
-    len = PATH_MAX;
-  char *buf = new char[len];
-  /* urg, wtf? char const* argument gets modified! */
-  cygwin_win32_to_posix_path_list (filename, buf);
-  delete filename;
-  
-  String ret = buf;
-  delete buf;
-  return ret;
-}
-#endif /* __CYGWIN__ */
-
-/* Join components to full path. */
-String
-Path::to_string () const
-{
-  String s;
-  if (!root.is_empty ())
-    s = root + ::to_string (ROOTSEP);
-  if (!dir.is_empty ())
-    s += dir + ::to_string (DIRSEP);
-  s += base;
-  if (!ext.is_empty ())
-    s += ::to_string (EXTSEP) + ext;
-  return s;
-}
-
-/**
-   @param path the original full filename
-   @return 4 components of the path. They can be empty
-*/
-Path
-split_path (String path)
-{
-#ifdef __CYGWIN__
-  /* All system functions would work, even if we don't convert to
-     posix path, but we'd think that \foe\bar\baz.ly is in the cwd.
-     On by default.  */
-  if (!(testing_level_global & 1))
-    path = dos_to_posix (path);
-#endif
-
-  Path p;
-  int i = path.index (ROOTSEP);
-  if (i >= 0)
-    {
-      p.root = path.left_string (i);
-      path = path.right_string (path.length () - i - 1);
-    }
-
-  i = path.index_last (DIRSEP);
-  if (i >= 0)
-    {
-      p.dir = path.left_string (i);
-      path = path.right_string (path.length () - i - 1);
-    }
-
-  i = path.index_last ('.');
-  if (i >= 0)
-    {
-      p.base = path.left_string (i);
-      p.ext = path.right_string (path.length () - i - 1);
-    }
-  else
-    p.base = path;
-  return p;
-}
-
-void
-File_path::parse_path (String p)
-{
-#ifdef __CYGWIN__
-  if (testing_level_global & 4)
-    p = dos_to_posix_list (p);
-#endif
-
-  int l;
-  
-  while ((l = p.length ()) )
-    {
-      int i = p.index (PATHSEP);
-      if (i <0) 
-	i = l;
-      add (p.left_string (i));
-      p = p.right_string (l- i - 1);
-    }
-}
-
-
-
-
-/** Find a file.
-  It will search in the current dir, in the construction-arg, and
-  in any other added path, in this order.
-
-  @return
-  The full path if found, or empty string if not found
-  */
-String
-File_path::find (String nm) const
-{
-  if (!nm.length () || (nm == "-") )
-    return nm;
-  for (int i=0; i < size (); i++)
-    {
-      String path  = elem (i);
-      String sep = ::to_string (DIRSEP);
-      String right (path.right_string (1));
-      if (path.length () && right != sep)
-	path += ::to_string (DIRSEP);
-
-      path += nm;
-
-
-#if 0
-      /*
-	Check if directory. TODO: encapsulate for autoconf
-       */
-      struct stat sbuf;
-      if (stat (path.to_str0 (), &sbuf) != 0)
-	continue;
-      
-      if (! (sbuf.st_mode & __S_IFREG))
-	continue;
-#endif
-#if !STAT_MACROS_BROKEN
-      
-      struct stat sbuf;
-      if (stat (path.to_str0 (), &sbuf) != 0)
-	continue;
-
-      if (S_ISDIR (sbuf.st_mode))
-	continue;
-#endif
-
-      FILE *f = fopen (path.to_str0 (), "r"); // ugh!
-      if (f)
-	{
-	  fclose (f);
-	  return path;
-	}
-    }
-  return "";
-}
-
-/**
-   Add a directory, return false if failed
- */
-bool
-File_path::try_add (String s)
-{
-  if (s == "")
-    s =  ".";
-  FILE  * f = fopen (s.to_str0 (), "r");
-  if (!f)
-    return false;
-  fclose (f);
-    
-  add (s);
-  return true;
-}
-
-void
-File_path::add (String s)
-{
-#ifdef __CYGWIN__
-  if (testing_level_global & 2)
-    s = dos_to_posix (s);
-#endif
-
-  push (s);
-}
-
-String
-File_path::to_string () const
-{
-  String s;
-  for (int i=0; i< size (); i++)
-    {
-      s = s + elem (i);
-      if (i < size () -1 )
-	s += ":";
-    }
-  return s;
-}
diff --git a/flower/getopt-long.cc b/flower/getopt-long.cc
deleted file mode 100644
index 643527c91a..0000000000
--- a/flower/getopt-long.cc
+++ /dev/null
@@ -1,355 +0,0 @@
-/*
-   process command line, GNU style.
-
-   this is Copyleft (c) 1996--2004 Han-Wen Nienhuys, <hanwen@cs.uu.nl>
- */
-
-#include <string.h>
-#include <stdio.h>
-#include <assert.h>
-#include <stdlib.h>
-
-#include <iostream>
-
-#include "config.h"
-#include "getopt-long.hh"
-#include "international.hh"
-#include "string-convert.hh"
-
-
-#if !HAVE_GETTEXT
-inline char*
-gettext (char const* s)
-{
-  return (char*)s;
-}
-#else
-#include <libintl.h>
-#endif
-
-long
-Getopt_long::get_argument_index ()
-{
-  long l;
-  if (!optional_argument_str0_
-      || sscanf (optional_argument_str0_, "%ld", &l) != 1)
-    report (E_ILLEGALARG);
-
-  return l;
-}
-
-const Long_option_init *
-Getopt_long::parselong ()
-{
-  char const *optnm = arg_value_char_a_a_[array_index_] + 2 ;
-  assert (*optnm);
-
-  char const *endopt = strchr (optnm, '=');
-  int searchlen  = (endopt) ? endopt - optnm : strlen (optnm);
-
-  found_option_=0;
-  for (int i=0; i< table_len_; i++)
-    {
-      char const *ln = option_a_[i].longname_str0_;
-
-      if (ln && !strncmp (ln, optnm, searchlen))
-	{
-	  found_option_ = option_a_+i;
-	  break;
-	}
-    }
-
-  if (!found_option_)
-    {
-      report (E_UNKNOWNOPTION);
-      return 0;
-    }
-  array_index_++;
-  argument_index_ = 0;
-
-
-  if (found_option_->take_arg_str0_)
-    {
-      if (endopt)
-	optional_argument_str0_ = endopt +1; // a '='
-      else
-	{
-	  optional_argument_str0_ = arg_value_char_a_a_[array_index_];
-	  array_index_++;
-	}
-      if (!optional_argument_str0_)
-	report (E_ARGEXPECT);
-
-    }
-  else
-    {
-      optional_argument_str0_ = 0;
-      if (endopt)
-	report (E_NOARGEXPECT);
-    }
-
-  return found_option_;
-}
-
-String
-Long_option_init::to_string () const
-{
-  String str;
-  if (shortname_char_)
-    str +=  "-" + shortname_char_;
-  if (shortname_char_ && longname_str0_)
-    str += ", ";
-  if (longname_str0_)
-    str += String ("`--") + longname_str0_ + "'";
-  return str;
-}
-
-String
-Long_option_init::str_for_help () const
-{
-  String s;
-  if (shortname_char_)
-    s = "-" + ::to_string (shortname_char_);
-  else
-    s = "  ";
-
-  s = s + ((shortname_char_ && longname_str0_) ? ", " : "  ");
-
-  if (longname_str0_)
-    s = s + "--" + longname_str0_;
-
-  if (take_arg_str0_)
-    {
-      if (longname_str0_)
-	s = s + "=";
-      else
-	s = s + " ";
-      
-      s = s + gettext (take_arg_str0_);
-    }
-  return s;
-}
-
-// report an error, GNU style.
-void
-Getopt_long::report (Errorcod c)
-{
-  error_ = c;
-  if (!error_out_)
-    return;
-
-  String str = arg_value_char_a_a_[0];
-  str += ": ";
-  switch (c)
-    {
-    case E_ARGEXPECT:
-      str += _f ("option `%s' requires an argument",
-	found_option_->to_string ());
-      break;
-    case  E_NOARGEXPECT:
-      str += _f ("option `%s' doesn't allow an argument",
-	found_option_->to_string ());
-      break;
-    case E_UNKNOWNOPTION:
-      str += _f ("unrecognized option: `%s'",
-      String (argument_index_ 
-	      ? String ("-" + String_convert::form_string ("%c", 
-	        arg_value_char_a_a_[array_index_][argument_index_]))
-	      : String (arg_value_char_a_a_[array_index_])));
-      break;
-    case E_ILLEGALARG:
-      str += _f ("invalid argument `%s' to option `%s'",
-        optional_argument_str0_, found_option_->to_string ());
-      break;
-    default:
-      assert (false);
-    }
-  fprintf(error_out_, "%s\n", str.to_str0 ());
-  exit (2);
-}
-
-const Long_option_init *
-Getopt_long::parseshort ()
-{
-  char c=arg_value_char_a_a_[array_index_][argument_index_];
-  found_option_=0;
-  assert (c);
-
-  for (int i=0; i < table_len_; i++)
-    if (option_a_[i].shortname_char_ == c)
-      {
-	found_option_  = option_a_+i;
-	break;
-      }
-
-  if (!found_option_)
-    {
-      report (E_UNKNOWNOPTION);
-      return 0;
-    }
-
-  argument_index_++;
-  if (!found_option_->take_arg_str0_)
-    {
-      optional_argument_str0_ = 0;
-      return found_option_;
-    }
-  optional_argument_str0_ = arg_value_char_a_a_[array_index_] + argument_index_;
-
-  array_index_ ++;
-  argument_index_ = 0;
-
-  if (!optional_argument_str0_[0])
-    {
-      optional_argument_str0_ = arg_value_char_a_a_[array_index_];
-      array_index_ ++;
-    }
-  if (!optional_argument_str0_)
-    {
-      report (E_ARGEXPECT);
-    }
-
-  return found_option_;
-}
-
-const Long_option_init *
-Getopt_long::operator () ()
-{
-  if (!ok ())
-    return 0;
-
-  next ();
-  if (!ok ())
-    return 0;
-
-  if (argument_index_)
-    return parseshort ();
-
-  const char * argument = arg_value_char_a_a_[array_index_];
-
-  if (argument[0] != '-')
-    return 0;
-
-  if (argument[1] == '-') {// what to do with "command  --  bla"
-    if (argument[2])
-      return parselong ();
-    else
-      return 0;
-  }
-  else
-    {
-      if (argument[ 1 ])
-	{
-	  argument_index_ = 1;
-	  return parseshort ();
-	}
-      else
-	{
-	  return 0;
-	}
-    }
-}
-
-
-
-Getopt_long::Getopt_long (int c, char  **v, Long_option_init *lo)
-{
-  option_a_ = lo;
-  error_out_ = stderr;
-  arg_value_char_a_a_ = v;
-  argument_count_ = c;
-  array_index_ = 1;
-  argument_index_ = 0;
-
-  //    reached end of option table?
-  table_len_ =0;
-  for (int i = 0;  option_a_[i].longname_str0_ ||option_a_[i].shortname_char_; i++)
-    table_len_ ++;
-
-}
-
-bool
-Getopt_long::ok () const
-{
-  return  array_index_ < argument_count_;
-}
-
-void
-Getopt_long::next ()
-{
-  error_ = E_NOERROR;
-  while (array_index_ < argument_count_
-	 && !arg_value_char_a_a_[array_index_][argument_index_])
-    {
-      array_index_++;
-      argument_index_ = 0;
-    }
-}
-
-char const *
-Getopt_long::current_arg ()
-{
-  if (array_index_ >= argument_count_)
-    return 0;
-  char const * a = arg_value_char_a_a_[array_index_];
-  return a + argument_index_;
-}
-
-char const *
-Getopt_long::get_next_arg ()
-{
-  char const * a = current_arg ();
-  if (a)
-    {
-      array_index_ ++;
-      argument_index_= 0;
-    }
-  return a;
-}
-
-
-const int EXTRA_SPACES = 5;
-
-String
-Long_option_init::table_string (Long_option_init *l) 
-{
-  String argstr = "ARG";
-  String tabstr = "";
-
-  int wid = 0;
-  for (int i=0; l[i].shortname_char_ || l[i].longname_str0_; i++)
-    {
-      wid = wid >? l[i].str_for_help ().length ();
-    }
-
-  for (int i=0; l[i].shortname_char_ || l[i].longname_str0_; i++)
-    {
-      String s  =  "  " + l[i].str_for_help ();
-      s += String_convert::char_string (' ', wid - s.length () + EXTRA_SPACES);
-
-      tabstr += s + gettext (l[i].help_str0_) + "\n";
-    }
-
-    
-  return tabstr;
-}
-
-int
-Long_option_init::compare (Long_option_init const &a, Long_option_init const &b)
-{
-  if (a.shortname_char_ && b.shortname_char_ && a.shortname_char_- b.shortname_char_)
-    return a.shortname_char_ - b.shortname_char_;
-
-  if (b.shortname_char_ && a.longname_str0_)
-    {
-      char s[2] = {b.shortname_char_, 0};
-      return strcmp (a.longname_str0_, s);
-    }
-  if (a.shortname_char_ && b.longname_str0_)
-    {
-      char s[2] = {a.shortname_char_, 0};
-      return strcmp (s, b.longname_str0_);
-    }
-  
-  return strcmp (a.longname_str0_, b.longname_str0_);
-}
diff --git a/flower/include/GNUmakefile b/flower/include/GNUmakefile
deleted file mode 100644
index 1d726fc78a..0000000000
--- a/flower/include/GNUmakefile
+++ /dev/null
@@ -1,9 +0,0 @@
-# flower/lib/include/Makefile
-
-depth = ../..
-
-STEPMAKE_TEMPLATES=c++
-
-include $(depth)/make/stepmake.make
-
-
diff --git a/flower/include/arithmetic-operator.hh b/flower/include/arithmetic-operator.hh
deleted file mode 100644
index 1f874a7d23..0000000000
--- a/flower/include/arithmetic-operator.hh
+++ /dev/null
@@ -1,22 +0,0 @@
-/*   
-  arithmetic-operator.hh -- declare 
-  
-  source file of the Flower Library
-  
-  (c) 1997--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-  
- */
-
-#ifndef ARITHMETIC_OPERATOR_HH
-#define ARITHMETIC_OPERATOR_HH
-
-#define IMPLEMENT_ARITHMETIC_OPERATOR(type, op)  \
-inline type \
-operator op (type a1, type const& a2)		\
-{						\
-  a1 op ## = a2;					\
-  return a1;					\
-}
-
-#endif /* ARITHMETIC_OPERATOR_HH */
-
diff --git a/flower/include/array.hh b/flower/include/array.hh
deleted file mode 100644
index 9185cb8fa5..0000000000
--- a/flower/include/array.hh
+++ /dev/null
@@ -1,259 +0,0 @@
-/*
-  (c) 1995--2004 Han-Wen Nienhuys
-
-  Distributed under GNU GPL  
-*/
-
-#ifndef ARRAY_H
-#define ARRAY_H
-#include <assert.h>
-
-#ifndef INLINE
-#define INLINE inline
-#endif
-
-/// copy a bare (C-)array from #src# to #dest# sized  #count#
-template<class T> void arrcpy (T*dest, T const*src, int count);
-
-/**
-  Scaleable array/stack template, for a type T with default constructor.
-  
-  
-  This template implements a scaleable vector. With (or without) range
-  checking. The type T should have a default constructor. It is
-  best suited for simple types, such as int, double or String, it
-  provides a paranoidly safe replacement for the new T[int] construct.
-
-  You should \bf{never} store pointers to objects in an Array (since
-  the array may be relocated without the pointer knowing it).
-  
-  It uses stack terminology, (push, pop, top), and  can be used as a stack.
-
-  
-  */
-template<class T>
-class Array
-{
-protected:
-  /// maximum length of array.
-  int max_;
-
-  /// the data itself
-  T *array_;
-
-  /// stretch or shrink  array.
-  void remax (int newmax) 
-    {	 
-      T* newarr = new T[newmax];
-      size_ = (newmax < size_) ? newmax : size_;
-      arrcpy (newarr, array_, size_);
-	
-      delete[] array_;
-      array_ = newarr;
-      max_ = newmax;
-    }
-  int size_;
-
-public:
-  /// check invariants
-  void OK () const ;
-  /** report the size_.
-      @see 
-      {setsize_}
-  */
-
-  int size () const  
-    {
-      return size_;
-    }
-    
-  /// POST: size () == 0
-  void clear () 
-    {
-      size_ = 0;
-    }
-
-  Array (T *tp, int n)
-    {
-      array_ = new T[n];
-      max_ =size_ = n;
-      arrcpy (array_, tp, n);      
-    }
-  
-  Array () 
-    { array_ = 0; max_ =0; size_ =0; }
-
-  // ugh, get around gcc 2.8.1 ice; see bezier.cc
-  Array (int i) 
-    { 
-      max_ = size_ = i; 
-      array_ = new T[i];
-    }
-
-
-  /** set the size_ to #s#.
-      POST: size () == s.
-      Warning: contents are unspecified */
-  void set_size (int s) 
-    {
-      if (s > max_) remax (s);
-      size_ = s;    
-    }
-    
-  ~Array () 
-    { delete[] array_; }
-
-  /// return a  "new"ed copy of array 
-  T* copys () const 
-    {
-      T* Tarray = new T[size_];
-      arrcpy (Tarray, array_, size_);
-      return Tarray;
-    }
-
-  T const *accesses () const
-    {
-      return array_;
-    }
-  void operator= (Array const & src) 
-    {
-      set_size (src.size_);
-      arrcpy (array_,src.array_, size_);
-    }
-  Array (Array const & src) 
-    {
-      array_ = src.copys ();
-      max_ = size_ = src.size_;	
-    }
-
-  /// tighten array size_.
-  void tighten_maxsize ()     {
-    remax (size_);
-  }
-    
-  T * remove_array ();
-
-  /// access element
-  T &operator[] (int i)  
-    {
-      return elem_ref (i);
-    }
-  /// access element
-  T const & operator[] (int i) const 
-    {
-      return elem_ref (i);
-    }
-  /// access element
-  T &elem_ref (int i) const 
-    {
-      assert (i >=0&&i<size_);
-      return ((T*)array_)[i];	
-    }
-  /// access element
-  T elem (int i) const 
-    {
-      return elem_ref (i);
-    }
-
-  /// add to the end of array
-  void push (T x) 
-    {
-      if (size_ == max_)
-	remax (2*max_ + 1);
-
-      // T::operator= (T &) is called here. Safe to use with automatic
-      // vars
-      array_[size_++] = x;
-    }
-  /// remove and return last entry 
-  T pop () 
-    {
-      assert (!is_empty ());
-      T l = top (0);
-      set_size (size ()-1);
-      return l;
-    }
-  /// access last entry
-  T& top (int j=0) 
-    {
-      return (*this)[size_-j-1];
-    }
-  /// return last entry
-  T top (int j=0) const 
-    {
-      return (*this)[size_-j-1];
-    }
-  
-  T& boundary (int dir, int idx)
-    {
-      assert (dir);
-      if (dir == 1)
-	return top (idx);
-      else
-	return elem_ref (idx);
-    }
-  T boundary (int dir, int idx) const
-    {
-      assert (dir);
-      if (dir == 1)
-	return top (idx);
-      else
-	return elem (idx);
-    }
-  void swap (int i,int j) 
-    {
-      T t ((*this)[i]);
- (*this)[i]= (*this)[j];
- (*this)[j]=t;
-    }
-  bool is_empty () const 
-    { return !size_; }
-
-  void insert (T k, int j);
-  /**
-     remove  i-th element, and return it.
-  */
-  T get (int i) 
-    {
-      T t = elem (i);
-      del (i);
-      return t;
-    }
-  void unordered_del (int i)
-    {
-      elem_ref (i) = top ();
-      set_size (size () -1);
-    }
-  void del (int i) 
-    {
-      assert (i >=0&& i < size_);
-      arrcpy (array_+i, array_+i+1, size_-i-1);
-      size_--;
-    }
-  // quicksort.
-  void sort (int (*compare) (T const&,T const&),
-	     int lower = -1, int upper = -1);
-  void concat (Array<T> const &src) 
-    {
-      int s = size_;
-      set_size (size_ + src.size_);
-      arrcpy (array_+s,src.array_, src.size_);	
-    }
-  Array<T> slice (int lower, int upper) const; 
-  void reverse ();
-};
-
-template<class T>
-int default_compare (T const&a , T const&b)
-{
-  if (a < b)
-    return -1;
-  else if (a > b)
-    return 1;
-  else
-    return 0;
-}
-
-#include "array.icc"
-
-#endif
diff --git a/flower/include/array.icc b/flower/include/array.icc
deleted file mode 100644
index 88558426dc..0000000000
--- a/flower/include/array.icc
+++ /dev/null
@@ -1,159 +0,0 @@
-/*
-  (c) 1995--2004  Han-Wen Nienhuys  <hanwen@cs.uu.nl>
-
-  Distributed under GNU GPL
-*/
-
-
-#if 0
-#include "array.hh"
-#ifdef INLINE
-#undef INLINE
-#endif
-
-#define INLINE
-#endif
-
-/*
- functions with loops don't inline
- */
-
-template<class T> INLINE void 
-arrcpy (T*dest, T const* src, int count)
-{
-  for (int i_shadows_local=0; i_shadows_local < count ; i_shadows_local++)
-#ifdef __powerpc__
-    {
-      /*
-	urg: wierd egcs-1.1.2-12c (stock LinuxPPC R5) bug on ppc
-	bug report filed
-	fixed in egcs-1.1.2-12f
-	ftp://dev.linuxppc.org/users/fsirl/R5/RPMS/ppc/ 
-      */
-      *dest = *src;
-      dest++, src++;
-    }
-#else
-    *dest++ = *src++;
-#endif
-}
-
-template<class T> INLINE void
-Array<T>::insert (T k, int j) 
-{
-  assert (j >=0 && j<= size_);
-  set_size (size_+1);
-  for (int i=size_-1; i > j; i--)
-    array_[i] = array_[i-1];
-  array_[j] = k;
-}
-
-template<class T> INLINE void
-Array<T>::sort (int (*compare) (T const&,T const&), int lower, int upper)
-{
-  if (lower < 0) 
-    {
-      lower = 0 ;
-      upper = size () - 1;
-    }
-  if (lower >= upper)
-    return;
-  swap (lower, (lower+upper)/2);
-  int last = lower;
-  for (int i= lower +1; i <= upper; i++)
-    if (compare (array_[i], array_[lower]) < 0)
-      swap (++last,i);
-  swap (lower, last);
-  sort (compare, lower, last-1);
-  sort (compare, last+1, upper);
-}
-
-template<class T> INLINE void
-Array<T>::reverse () 
-{
-  int h = size_/2;
-  for (int i =0,j = size_-1; i < h; i++,j--)
-    swap (i,j);
-}
-
-template<class T> INLINE
-void
-Array<T>::OK () const
-{
-  assert (max_ >= size_ && size_ >=0);
-  if (max_) assert (array_);
-}
-
-template<class T> INLINE
-T *
-Array<T>::remove_array ()
-{
-  T * p = array_;
-  size_ = 0;
-  max_ = 0;
-  array_ =0;
-  return p;
-}
-
-template<class T> INLINE
-Array<T>
-Array<T>::slice (int lower, int upper) const
-{
-  assert (lower >= 0 && lower <=upper&& upper <= size_);
-  Array<T> r;
-  int s =upper-lower;
-  r.set_size (s);
-  arrcpy (r.array_, array_  + lower, s);
-  return r;
-}
-
-
-template<class T>
-void
-binary_search_bounds (Array<T> const &table,
-		      T const &key, int (*compare) (T const&, T const &),
-		      int *lo,
-		      int *hi)
-{
-  int cmp;
-  int result;
-
-  /* binary search */
-  do
-  {
-      cmp = (*lo + *hi) / 2;
-
-      result = (*compare)  (key, table[cmp]);
-
-      if (result < 0)
-          *hi = cmp;
-      else
-          *lo = cmp;
-    }
-  while (*hi - *lo > 1);
-}
-
-
-/*
-  lookup with binsearch, return array index.
-*/
-template<class T>
-int
-binary_search (Array<T> const &table,
-	       T const &key, int (*compare) (T const&, T const &),
-	       int lo = 0,
-	       int hi = -1
-	       ) 
-{
-  if (hi < 0)
-    hi = table.size ();
-
-  binary_search_bounds (table, key, compare, &lo, &hi);
-
-  if (! (*compare) (key, table[lo]))
-    {
-      return lo;
-    }
-  else
-    return -1;              /* not found */
-}
diff --git a/flower/include/axes.hh b/flower/include/axes.hh
deleted file mode 100644
index b01ef9915f..0000000000
--- a/flower/include/axes.hh
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
-  axes.hh -- declare Axis
-
-  source file of the GNU LilyPond music typesetter
-
-  (c) 1997--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-*/
-
-
-#ifndef AXES_HH
-#define AXES_HH
-
-enum Axis {
-    X_AXIS =0,
-    Y_AXIS =1,
-    NO_AXES=2,
-};
-
-
-class String;
-
-String axis_name_string (Axis);
-
-
-/**
-  the operator ++ for Axis. 
- */
-Axis other_axis (Axis); 
-Axis post_incr (Axis &);
-Axis incr (Axis &);
-//Axis operator++ (Axis);
-
-
-
-#endif // AXES_HH
diff --git a/flower/include/compare.hh b/flower/include/compare.hh
deleted file mode 100644
index e8e9d76d68..0000000000
--- a/flower/include/compare.hh
+++ /dev/null
@@ -1,55 +0,0 @@
-/*
-  flowerlib
-
-  (c) 1996--2004 Han-Wen Nienhuys
-  */
-#ifndef COMPARE_HH
-#define COMPARE_HH
-
-#define ONE_OPERATOR(type, function, op) \
-inline bool \
-operator op (type t1, type t2) {\
-    return function (t1, t2) op 0;\
-}\
-
-#define GPP_MINMAX_OPERATOR(type, op, opp) \
-inline type \
-operator op (type t1, type t2)\
-{\
-     return (t1 opp t2) ? t1 :  t2;\
-}\
-
-
-#if defined (__GNUG__) && ! defined (__STRICT_ANSI__)
-#define GPP_MINMAX(type, prefix)\
-       prefix GPP_MINMAX_OPERATOR (type, <?, <)\
-       prefix GPP_MINMAX_OPERATOR (type, >?, >)
-#else
-#define GPP_MINMAX(type, prefix)
-#endif
-
-/**  handy notations for a signed comparison. 
-    make the operators{<,<=,==,>=,>} and the MAX and MIN of two.
-    Please fill a & in the type argument if necessary.    
-    */
-#define TEMPLATE_INSTANTIATE_COMPARE(type, function, prefix) \
-prefix ONE_OPERATOR (type, function, >)\
-prefix ONE_OPERATOR (type, function, >=)\
-prefix ONE_OPERATOR (type, function, ==)\
-prefix ONE_OPERATOR (type, function, !=)\
-prefix ONE_OPERATOR (type, function, <)\
-prefix ONE_OPERATOR (type, function, <=)\
-GPP_MINMAX (type, prefix)\
-prefix inline type max (type t1, type t2) {  return (t1 > t2)? t1 : t2; }\
-prefix inline type min (type t1, type t2) {  return (t1 < t2)? t1 : t2; }\
-  \
-prefix  bool operator< (type t1, type t2) /* stupid fix to allow ; */
-
-
-    
-#define INSTANTIATE_COMPARE(type, func) TEMPLATE_INSTANTIATE_COMPARE (type,func,)
-     
-
-     
-#endif
-     
diff --git a/flower/include/cons.hh b/flower/include/cons.hh
deleted file mode 100644
index dec3e29d64..0000000000
--- a/flower/include/cons.hh
+++ /dev/null
@@ -1,172 +0,0 @@
-/*   
-  cons.hh -- declare LISP like datatypes
-  
-  source file of the GNU LilyPond music typesetter
-  
-  (c) 1999--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-  
- */
-
-#ifndef CONS_HH
-#define CONS_HH
-
-
-#include <assert.h>
-
-template<class T>
-class Cons
-{
-public:
-  T * car_;
-  Cons * next_;
-  Cons ()
-    {
-      car_=0;
-      next_ =0;
-    }
-  Cons (T*t, Cons<T>*c)
-    {
-      car_ = t;
-      next_ = c;
-    }
- virtual ~Cons ()
-    {
-      delete next_;
-    }
-};
-
-template<class T>
-class Killing_cons : public Cons<T>
-{
-public:
-  Killing_cons (T *t, Cons<T> *p)
-    : Cons<T> ( t,p)
-    {
-    }
-  virtual ~Killing_cons ();
-};
-
-
-/// remove the link pointed to by *p.
-template<class T>
-Cons<T> *remove_cons (Cons<T> **pp)
-{
-  Cons<T> *knip = *pp;
-  *pp = (*pp)->next_;
-  knip->next_ = 0;
-  return knip;
-}
-
-template<class T> int cons_list_size (Cons<T> *l)
-{
-  int i=0;
-  while (l)
-    {
-      l = l->next_;
-	i++;
-    }
-  return i;
-}
-
-
-
-
-
-template<class T>
-Cons<T> * last_cons (Cons<T> * head)
-{
-  while (head && head->next_)
-    {
-      head = head->next_;
-    }
-  return head;
-}
-
-/**
-
-   Invariants:
-
- (*tail_) is either the head_ pointer, or a next_ pointer from the list.
-   
-   **tail_ == NULL
- */
-
-template<class T>
-class Cons_list
-{
-public:
-  Cons<T> * head_;
-  Cons<T> ** nil_pointer_address_;
-  Cons_list ()
-    {
-      init ();
-    }
-  void init ()
-    {
-      head_ =0;
-      nil_pointer_address_ = &head_;
-    }
-  void append (T *c)
-    {
-      append (new Cons<T> (c,0));
-    }
-  void append (Cons<T> *c)
-    {
-      assert (!c->next_);
-      *nil_pointer_address_ = c;
-      while (*nil_pointer_address_)
-	nil_pointer_address_ = & (*nil_pointer_address_)->next_;
-    }
-  /**
-     PRE: *pp should either be the head_ pointer, or the next_ pointer
-     from a list cell.
-  */
-  Cons<T> *remove_cons (Cons<T> **pp)
-    {
-      if (& (*pp)->next_ == nil_pointer_address_)
-	nil_pointer_address_ = pp;
-
-      return ::remove_cons (pp);
-    }
-
-  /// junk everything after the  first I elements.
-  void truncate (int i)
-    {
-      Cons<T> **p  = &head_;
-      for (; *p && i;  p = & ((*p)->next_))
-	{
-	  i--;
-	}
-
-      if (*p)
-	{
-	  delete *p;
-	  *p = 0;
-	}
-      nil_pointer_address_ = p;
-    }
-
-  void junk ()
-    {
-      delete head_;
-      head_ =0;
-    }
-  ~Cons_list ()
-    {
-      junk ();
-    }
-  int size ()
-    {
-      return cons_list_size (head_);
-    }
-};
-
-
-template<class T>
-void  copy_killing_cons_list (Cons_list<T>&, Cons<T> *src);
-template<class T>
-void
-clone_killing_cons_list (Cons_list<T>&, Cons<T> *src);
-
-#endif /* CONS_HH */
-
diff --git a/flower/include/cpu-timer.hh b/flower/include/cpu-timer.hh
deleted file mode 100644
index e4bbec09b2..0000000000
--- a/flower/include/cpu-timer.hh
+++ /dev/null
@@ -1,24 +0,0 @@
-/*
-  cpu-timer.hh -- declare Cpu_timer
-
-  source file of the Flower Library
-
-  (c) 1997--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-*/
-
-
-#ifndef CPU_TIMER_HH
-#define CPU_TIMER_HH
-
-#include <time.h>
-#include "real.hh"
-
-class Cpu_timer {
-  clock_t start_clock_;
-public:
-  Cpu_timer ();
-  void restart ();
-  Real read ();
-};
-
-#endif // CPU_TIMER_HH
diff --git a/flower/include/direction.hh b/flower/include/direction.hh
deleted file mode 100644
index 0572f786ce..0000000000
--- a/flower/include/direction.hh
+++ /dev/null
@@ -1,60 +0,0 @@
-/*
-  direction.hh -- declare Direction
-
-  source file of the GNU LilyPond music typesetter
-
-  (c) 1997--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-*/
-
-
-#ifndef DIRECTION_HH
-#define DIRECTION_HH
-
-#include "axes.hh"
-
-enum Direction 
-{
-  UP=1,
-  DOWN=-1,
-  LEFT=-1,
-  RIGHT=1,
-  MIN=-1,
-  MAX=1,
-  CENTER=0,
-  SMALLER=-1,
-  BIGGER=1,
-  START = -1,
-  STOP = 1,
-};
-
-inline Direction
-other_dir (Direction const d)
-{
-  return (Direction) (-d);
-}
-
-inline Direction
-operator - (Direction const d)
-{
-  return other_dir (d);
-}
-
-// huh?
-inline Direction
-flip (Direction *i) {
-  if (*i == (Direction)1)
-    *i = (Direction)-1;
-  else if (*i == (Direction)-1)
-    *i = (Direction)1;
-  return *i;
-}
-
-/**
-   if d > 0: the max operator
-   if d < 0: the min operator
- */
-template<class T> T minmax (Direction d, T, T);
-
-// String direction_string (Direction, Axis);
-
-#endif // DIRECTION_HH
diff --git a/flower/include/drul-array.hh b/flower/include/drul-array.hh
deleted file mode 100644
index 8599576f6e..0000000000
--- a/flower/include/drul-array.hh
+++ /dev/null
@@ -1,68 +0,0 @@
-/*
-  drul-array.hh -- declare Drul_array
-
-  source file of the GNU LilyPond music typesetter
-
-  (c) 1997--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-*/
-
-
-#ifndef DRUL_ARRAY_HH
-#define DRUL_ARRAY_HH
-
-#include "direction.hh"
-#include "real.hh"
-
-#include <assert.h>
-
-/**
-  Left/right or Up/down arrays. Drul is nicer sounding than udlr
- */
-template<class T>
-struct Drul_array
-{
-  T array_[2];
-  T &elem (Direction d)
-    {
-      assert (d==1 || d== -1);
-      return array_[ (d+1)/2];
-
-    }
-  T &operator[] (Direction d)
-  {
-    return elem (d);
-  }
-  T elem (Direction d) const
-    {
-    assert (d==1 || d== -1);
-    return array_[ (d+1)/2];
-    }
-  
-  T operator[] (Direction d) const
-  {
-    return elem (d);
-  }
-  Drul_array ()
-    {}
-  Drul_array (T t1, T t2)
-    {
-      array_[0] = t1;
-      array_[1] = t2;
-    }
-};
-
-template<class T>
-void
-scale_drul (Drul_array<T> * dr, T x)
-{
-  dr->elem (LEFT) *= x;
-  dr->elem (RIGHT) *= x;
-}
-
-inline Real
-linear_combination (Drul_array<Real> const &d, Real x)
-{
-  return ((1.0 - x) * Real (d.elem (LEFT))  + (x + 1.0) * Real (d.elem (RIGHT))) * 0.5;
-}
-
-#endif // DRUL_ARRAY_HH
diff --git a/flower/include/file-path.hh b/flower/include/file-path.hh
deleted file mode 100644
index 40579d00fe..0000000000
--- a/flower/include/file-path.hh
+++ /dev/null
@@ -1,51 +0,0 @@
-/*
-  file-path.hh -- declare Path and File_path
-
-  source file of the Flower Library
-
-  (c) 1997--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-*/
-
-#ifndef FILE_PATH_HH
-#define FILE_PATH_HH
-
-#include "string.hh"
-#include "array.hh"
-
-
-/**    
-  search in directories for a file.
-
-   Abstraction of PATH variable. An interface for searching input files.
-   Search a number of dirs for a file.
-
-   TODO: add a unix style PATH interface 
-*/
-
-class Path
-{
-public:
-  String root;
-  String dir;
-  String base;
-  String ext;
-
-  String to_string () const;
-};
-
-class File_path : private Array<String>
-{
-public:
-  String find (String nm) const;
-
-  Array<String>::push;
-  void prepend (String str) { Array<String>::insert (str, 0); }
-  String to_string ()const;
-  bool try_add (String str);
-  void add (String);
-  void parse_path (String);
-};
-
-Path split_path (String path);
-
-#endif /* FILE_PATH */
diff --git a/flower/include/file-storage.hh b/flower/include/file-storage.hh
deleted file mode 100644
index bd173e1233..0000000000
--- a/flower/include/file-storage.hh
+++ /dev/null
@@ -1,27 +0,0 @@
-/*
-  file-storage.hh -- declare File_storage, Mapped_file_storage, Simple_file_storage
-
-  source file of the GNU LilyPond music typesetter
-
-  (c) 1997--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-*/
-
-
-#ifndef FILE_STORAGE_HH
-#define FILE_STORAGE_HH
-
-#include "flower-proto.hh"
-
-
-/**
-  store a file in-memory.
- */
-class File_storage
-{
-public:
-  virtual char const* to_str0 () const=0;
-  virtual int length () const=0;
-  virtual ~File_storage (){}
-};
-
-#endif // FILE_STORAGE_HH
diff --git a/flower/include/flower-proto.hh b/flower/include/flower-proto.hh
deleted file mode 100644
index 84b6280521..0000000000
--- a/flower/include/flower-proto.hh
+++ /dev/null
@@ -1,64 +0,0 @@
-
-/*
-  fflower-proto.hh -- typenames in flowerlib
-
-  (c) 1996--2004 Han-Wen Nienhuys
-*/
-
-#ifndef FPROTO_HH
-#define FPROTO_HH
-
-
-char const * flower_version_str0 ();
-
-template<class T> struct Link_array;
-template<class T> struct Array;
-template<class T,class K> struct Assoc;
-template<class K, class V> struct Hash_table;
-template<class K, class V> struct Hash_table_iter;
-template<class T> struct Link_list;
-template<class T> struct Interval_t;
-template<class T> struct PQueue;
-
-#include "real.hh"
-
-typedef Interval_t<Real> Interval;
-typedef Interval_t<int> Slice;	// junkme.
-
-struct Offset;
-struct Long_option_init;
-struct Rational;
-struct File_path;
-struct Getopt_long;
-struct String_data;
-struct String_handle;
-struct String_convert;
-struct String;
-
-struct Text_stream;
-struct Data_file;
-struct Text_db;
-struct Scalar;
-
-typedef unsigned char U8;
-typedef short I16;
-typedef unsigned short U16;
-typedef unsigned U32;
-typedef int I32;
-typedef long long I64;
-
-typedef unsigned char Byte;
-
-struct Duration;
-struct Duration_iterator;
-struct Source_file;
-struct Binary_source_file;
-struct Sources;
-struct File_storage;
-struct Mapped_file_storage;
-struct Simple_file_storage;
-
-
-
-#endif // FPROTO_HH
-
diff --git a/flower/include/getopt-long.hh b/flower/include/getopt-long.hh
deleted file mode 100644
index a909326d4c..0000000000
--- a/flower/include/getopt-long.hh
+++ /dev/null
@@ -1,108 +0,0 @@
-#ifndef GETOPT_LONG_HH
-#define GETOPT_LONG_HH
-
-
-#include "string.hh"
-
-/**
-  a struct this for initialising the commandline options.
- */
-struct Long_option_init {
-  char const * take_arg_str0_;
-  char const * longname_str0_;
-  char        shortname_char_;
-
-  char const * help_str0_;
-  
-  String to_string () const;
-  String str_for_help () const;
-  //   NO constructor!
-
-  static int compare (Long_option_init const&,Long_option_init const&);
-  static String table_string (Long_option_init *); 
-};
-
-
-/** C++ for version of long_getopt.  For processing GNU style command
-  line arguments.  No pointer (return values, arguments) contents are
-  copied.
-  
-  TODO: handle 
-  command  - , and command --
-  
-  argument reordering
-  */
-class Getopt_long {
-
-  /// the option info.
-  const Long_option_init *option_a_;
-  int table_len_;
-    
-  /// if doing short option, arg_value_char_a_a_[optind][optindind] is processed next.
-  int argument_index_;
-
-  /// the option found
-  const Long_option_init *found_option_;
-
-
-public: 
-  /** errorcodes: no error, argument expected, no argument expected,
-    unknown option, illegal argument (eg. int expected).  */
-  enum Errorcod { E_NOERROR = 0, E_ARGEXPECT, E_NOARGEXPECT, E_UNKNOWNOPTION,
-		  E_ILLEGALARG } ;
-
-  /// argument. Set to 0 if not present
-  char const * optional_argument_str0_;
-
-  /// current error status
-  Errorcod error_;
-
-  /// arg_value_char_a_a_[array_index_] will be processed next.
-  int array_index_;
-
-  /// the arguments
-  char **arg_value_char_a_a_;
-
-  /// the arg. count
-  int argument_count_;
-
-  FILE *error_out_;
-
-public:
-  /// get ready for processing next error.
-  void next ();
-  const Long_option_init *parselong ();
-  const Long_option_init *parseshort ();
-  void OK () const;
-  bool ok () const;
-
-  /// report an error and abort
-  void report (Errorcod c);
-
-
-  /// return an integer (with err. detect)
-  long get_argument_index ();
- 
-    
-  /**
-    What to do with  errors. 
-    report messages on  #*os#, and abort.
-    if #os# is null, then do not report nor abort, just set #error#
-    */
-       
-  void seterror (FILE *os);
-
-  /// construct: pass arguments and option info.
-  Getopt_long (int c,  char **v, Long_option_init *lo);
-
-  /**  get the next option. 
-    @return pointer to next option found.
-    0 if error occurred, or next argument is no option.
-    */
-  const Long_option_init *operator () ();
-
-  char const *current_arg ();
-  char const * get_next_arg ();
-};
-
-#endif // GETOPT_LONG_HH
diff --git a/flower/include/international.hh b/flower/include/international.hh
deleted file mode 100644
index b50bb1f68c..0000000000
--- a/flower/include/international.hh
+++ /dev/null
@@ -1,36 +0,0 @@
-/*   
-  international.hh -- declare stuff for internationalization
-  
-  source file of the GNU LilyPond music typesetter
-  
-  (c) 1997--2004 Jan Nieuwenhuizen <janneke@gnu.org>
-  
- */
-
-#ifndef INTERNATIONAL_HH
-#define INTERNATIONAL_HH
-
-#include "string.hh"
-
-/**
- Internationalisation: _i ("to be translated") gets an entry in the POT file
- gettext () must be invoked explicitely to do the actual "translation".
- See flower/getopt-long.cc.
- */
-#define _i(sz) sz
-
-// don't inline: get warnings only once
-/**
- Internationalisation: _ ("to be translated") gets "translated" by GNU gettext
-*/
-String _ (char const *ch);
-
-/**
- Internationalisation: _f ("Usage: %s [FILE]", "lilypond") gets "translated" by 
- GNU gettext
-*/
-String _f (char const* format, ...);
-String _f (char const* format, String s, String s2 = "", String s3 = "");
-
-#endif // INTERNATIONAL_HH
-
diff --git a/flower/include/interval.hh b/flower/include/interval.hh
deleted file mode 100644
index be5f560d7e..0000000000
--- a/flower/include/interval.hh
+++ /dev/null
@@ -1,197 +0,0 @@
-/*
-  interval.hh -- part of flowerlib
-  
-  (c) 1996--2004 Han-Wen Nienhuys
-*/
-
-#ifndef INTERVAL_HH
-#define INTERVAL_HH
-
-#include <assert.h> 
-#include "flower-proto.hh"
-#include "real.hh"
-#include "drul-array.hh"
-
-/** a T interval.  this represents the closed interval [left,right].
-  No invariants. T must be a totally ordered ring (with division, anyway ..)
-  At instantiation, the function infinity () has to be defined explicitely.
-  
-  */
-template<class T>
-struct Interval_t : public Drul_array<T> {
-
-  /* ************** */
-    
-  static T infinity () ;
-  static String T_to_string (T arg);
-  T center () const {
-    assert (!is_empty ());
-    return (elem (LEFT) + elem (RIGHT)) / T (2);
-  }
-  void translate (T t)
-    {
-      elem (LEFT) += t;
-      elem (RIGHT) += t;
-    }
-  void widen (T t)
-  {
-    elem (LEFT) -= t;
-    elem (RIGHT) += t;    
-  }
-  
-  /**
-    PRE
-    *this and h are comparable
-    */
-  void unite (Interval_t<T> h);
-  void intersect (Interval_t<T> h);
-  void add_point (T p) {
-    elem(LEFT) = elem (LEFT) <? p;
-    elem(RIGHT) = elem (RIGHT) >? p;
-  }
-  T length () const;
-  T delta () const;
-  void set_empty () ;
-  void set_full ();
-
-  /*
-    TODO: strip hungarian suffix.
-   */
-  bool is_empty () const { return elem (LEFT) > elem (RIGHT); }
-  bool contains_b (Interval_t<T> const&) const;
-  Interval_t () {
-    set_empty ();
-  }
-  Interval_t (T m, T M) : Drul_array<T> (m,M)
-    {
-    }
-  Interval_t<T> &operator -= (T r) {
-    *this += -r;
-    return *this;
-  }
-
-  Interval_t<T> &operator += (T r) {
-    elem (LEFT) += r;
-    elem (RIGHT) +=r;
-    return *this;
-  }
-  Interval_t<T> &operator *= (T r) {
-    if (!is_empty ())
-      {
-	elem (LEFT) *= r;
-	elem (RIGHT) *= r;
-	if (r < T (0))
-	  swap();
-
-      }
-    return *this;
-  }
-
-  Real linear_combination (Real x) const {
-    Drul_array<Real> da (elem (LEFT),
-			 elem (RIGHT));
-    return ::linear_combination (da, x);
-  }
-  String to_string () const;    
-
-  bool contains (T r);
-  void negate () {
-    T r = -elem (LEFT);
-    T l = -elem (RIGHT);
-    elem (LEFT) = l;
-    elem (RIGHT) =r;
-  }
-  
-  void swap ()
-  {
-    T t = elem (LEFT);
-    elem (LEFT) = elem (RIGHT);
-    elem (RIGHT) = t;
-  }
-};
-
-
-/**
-  inclusion ordering. Crash if not  comparable.
-  */
-template<class T>
-int Interval__compare (const Interval_t<T>&,Interval_t<T> const&);
-
-/**
-   Inclusion ordering.  return -2 if not comparable
- */
-template<class T>
-int
-_Interval__compare (const Interval_t<T>&a,Interval_t<T> const&b);
-
-
-/*
-  INLINE
- */
-
-#include "compare.hh"
-
-TEMPLATE_INSTANTIATE_COMPARE (Interval_t<T>&, Interval__compare, template<class T>);
-
-
-template<class T>
-inline Interval_t<T>
-intersection (Interval_t<T> a, Interval_t<T> const&b)
-{
-  a.intersect (b);
-  return a;
-    
-}
-
-template<class T>
-inline
-Interval_t<T> operator + (T a,Interval_t<T> i)
-{
-  i += a;
-  return i;
-}
-
-template<class T>
-inline
-Interval_t<T> operator - (Interval_t<T> i, T a)
-{
-  i += -a;
-  return i;
-}
-
-template<class T>
-inline
-Interval_t<T> operator - (T a,Interval_t<T> i)
-{
-  i.negate ();
-  i += a;
-  return i;
-}
-
-template<class T>
-inline
-Interval_t<T> operator + (Interval_t<T> i,T a){
-  return a+i;
-}
-
-template<class T>
-inline
-Interval_t<T> operator * (T a,Interval_t<T> i)
-{
-  i *= a;
-  return i;
-}
-
-template<class T>
-inline
-Interval_t<T> operator * (Interval_t<T> i,T a){
-  return a*i;
-}
-
-// again? see flower-proto.hh
-typedef Interval_t<Real> Interval;
-typedef Interval_t<int> Slice;	// weird name
-
-
-#endif // INTERVAL_HH
-
diff --git a/flower/include/interval.tcc b/flower/include/interval.tcc
deleted file mode 100644
index 79e7c548e6..0000000000
--- a/flower/include/interval.tcc
+++ /dev/null
@@ -1,150 +0,0 @@
-/*
-  interval.tcc -- implement Interval_t
-
-  source file of the Flower Library
-
-  (c)  1996--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-*/
-
-
-#ifndef INTERVAL_TCC
-#define INTERVAL_TCC
-
-#include <assert.h> 
-#include <math.h>
-#include "interval.hh"
-#include "string.hh"
-
-
-template<class T>
-int
-_Interval__compare (const Interval_t<T>&a,Interval_t<T> const&b)
-{
-  if (a.elem (LEFT) == b.elem (LEFT) && a.elem (RIGHT) == b.elem (RIGHT))
-    return 0;
-  
-  if (a.elem (LEFT) <= b.elem (LEFT) && a.elem (RIGHT) >= b.elem (RIGHT))
-    return 1;
-
-  if (a.elem (LEFT) >= b.elem (LEFT) && a.elem (RIGHT) <= b.elem (RIGHT))
-    return -1;
-
-  return -2;
-}
-
-template<class T>
-bool 
-Interval_t<T>::contains_b (Interval_t<T> const& a) const
-{
-  int c_i= _Interval__compare (*this, a);
-  if (c_i == -2)
-    return false;
-  return c_i >= 0;
-}
-
-template<class T>
-int
-Interval__compare (const Interval_t<T>&a,Interval_t<T> const&b)
-{
-  int i = _Interval__compare (a,b);
-  if (i < -1)
-    assert (false);
-  return i;
-}
-
-template<class T>
-void
-Interval_t<T>::set_empty ()
-{
-  elem (LEFT) = (T) infinity ();
-  elem (RIGHT) = (T) -infinity ();
-}
-
-template<class T>
-void
-Interval_t<T>::set_full ()
-{
-  elem (LEFT) = (T) -infinity ();
-  elem (RIGHT) = (T) infinity ();
-}
-
-template<class T>
-T
-Interval_t<T>::length () const 
-{
-  if (elem (RIGHT) <= elem (LEFT)) 
-    return 0;
-  else 
-    return elem (RIGHT)-elem (LEFT);
-}
-
-template<class T>
-T
-Interval_t<T>::delta () const 
-{
-  return elem (RIGHT) - elem (LEFT);
-}
-
-/**
-  smallest Interval which includes *this and #h#
- */
-template<class T>
-void
-Interval_t<T>::unite (Interval_t<T> h)
-{
-  elem (LEFT) = h.elem (LEFT) <? elem (LEFT);
-  elem (RIGHT) = h.elem (RIGHT) >?elem (RIGHT);
-
-#if 0
-  if (h.elem (LEFT)<elem (LEFT))
-    elem (LEFT) = h.elem (LEFT);
-  if (h.elem (RIGHT)>elem (RIGHT))
-  elem (RIGHT) = h.elem (RIGHT);
-#endif
-}
-
-
-template<class T>
-void
-Interval_t<T>::intersect (Interval_t<T> h)
-{
-#if defined (__GNUG__) && ! defined (__STRICT_ANSI__)
-  elem (LEFT) = h.elem (LEFT) >? elem (LEFT);
-  elem (RIGHT) = h.elem (RIGHT) <?elem (RIGHT);
-#else
-  elem (LEFT) = max (h.elem (LEFT), elem (LEFT));
-  elem (RIGHT) = min (h.elem (RIGHT), elem (RIGHT));
-#endif
-}
-
-template<class T>
-Interval_t<T>
-intersect (Interval_t<T> x, Interval_t<T> const &y)
-{
-  x.intersect (y);
-  return x;
-}
-
-template<class T>
-String
-Interval_t<T>::to_string () const
-{
-  if (is_empty ())
-    return "[empty]";
-  String s ("[");
- 
-  return s + T_to_string (elem (LEFT)) + String ("," ) + T_to_string (elem (RIGHT) ) + String ("]" );
-}
-
-template<class T>
-bool
-Interval_t<T>::contains (T r)
-{
-  return r >= elem (LEFT) && r <= elem (RIGHT);
-}
-
-
-#define INTERVAL__INSTANTIATE(T) struct Interval_t<T>;\
-template  int Interval__compare (const Interval_t<T>&,Interval_t<T> const&)
-
-#endif // INTERVAL_TCC
diff --git a/flower/include/killing-cons.tcc b/flower/include/killing-cons.tcc
deleted file mode 100644
index ebf78d66b8..0000000000
--- a/flower/include/killing-cons.tcc
+++ /dev/null
@@ -1,44 +0,0 @@
-/*   
-  killing-cons.tcc -- declare Killing_cons
-  
-  source file of the GNU LilyPond music typesetter
-  
-  (c)  1999--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-  
- */
-
-#ifndef KILLING_CONS_TCC
-#define KILLING_CONS_TCC
-
-#include "cons.hh"
-
-template<class T>
-Killing_cons<T>::~Killing_cons ()
-{
-  delete car_;
-}
-
-template<class T>
-void 
-copy_killing_cons_list (Cons_list<T> &dest, Cons<T> *src) 
-{
-  for (; src; src  = src->next_)
-    {
-      T *t = new T (*src->car_);
-      dest.append ( new Killing_cons<T> (t, 0));
-    }
-}
-
-template<class T>
-void
-clone_killing_cons_list (Cons_list<T> & dest, Cons<T> *src)
-{
-  for (; src; src  = src->next_)
-    {
-      T *t = src->car_->clone ();
-      dest.append (new Killing_cons<T> (t, 0));      
-    }
-}
-
-#endif /* KILLING_CONS_TCC */
-
diff --git a/flower/include/libc-extension.hh b/flower/include/libc-extension.hh
deleted file mode 100644
index a5385b4b01..0000000000
--- a/flower/include/libc-extension.hh
+++ /dev/null
@@ -1,49 +0,0 @@
-/*
-  libc-extension.hh -- declare some string.h extensions
-
-  source file of the flowerlib
-
-  (c) 1997--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-*/
-
-
-#ifndef LIBC_EXTENSION_HH
-#define LIBC_EXTENSION_HH
-
-#include "flower-proto.hh"
-#include "config.h"
-
-
-#include <cstddef>
-#include <stdarg.h>
-
-char* strnlwr (char* start ,int n);
-char* strnupr (char* start, int n);
-
-#if !HAVE_MEMMEM		// GNU extension.
-void *memmem (void const * haystack, int haystack_len,
-	     void const *needle, int needle_len);
-#endif /* HAVE_MEMMEM */
-
-#if !HAVE_SNPRINTF		// GNU extension.
-int snprintf (char *str, size_t n, char const *format, ...);
-#endif
-
-#if !HAVE_VSNPRINTF	 	// GNU extension.
-int vsnprintf (char *str, size_t, char const *format, va_list args);
-#endif
-
-#ifndef isinf
-#if !HAVE_ISINF			// BSD extension 
-int isinf (double x);
-#endif
-#endif
-
-
-Byte *memrchr (Byte const * p, int n, char c);
-Byte *strrev (Byte* byte, int length_i);
-
-
-double my_round (double);
-
-#endif // LIBC_EXTENSION_HH
diff --git a/flower/include/offset.hh b/flower/include/offset.hh
deleted file mode 100644
index a59b354526..0000000000
--- a/flower/include/offset.hh
+++ /dev/null
@@ -1,110 +0,0 @@
-/*
-  offset.hh -- part of GNU LilyPond
-
-  (c) 1996--2004 Han-Wen Nienhuys
-*/
-
-#ifndef OFFSET_HH
-#define OFFSET_HH
-
-#include "real.hh"
-#include "axes.hh"
-#include "arithmetic-operator.hh"
-
-struct Offset;
-
-Offset complex_multiply (Offset, Offset);
-Offset complex_divide (Offset, Offset);
-Offset complex_exp (Offset);
-
-
-/** 2d vector
-    should change to Complex
-*/
-struct Offset {
-public:
-  Real coordinate_a_[NO_AXES];
-    
-  Real &operator[] (Axis i) {
-    return coordinate_a_[i];
-  }
-  Real operator[] (Axis i) const{
-    return coordinate_a_[i];
-  }
-    
-  Offset& operator+= (Offset o) {
- (*this)[X_AXIS] += o[X_AXIS];
- (*this)[Y_AXIS] += o[Y_AXIS];
-    return *this;
-  }
-  Offset operator - () const {
-    Offset o = *this;
-    
-    o[X_AXIS]  = - o[X_AXIS];
-    o[Y_AXIS]  = - o[Y_AXIS];
-    return o;
-  }
-  Offset& operator-= (Offset o) {
- (*this)[X_AXIS] -= o[X_AXIS];
- (*this)[Y_AXIS] -= o[Y_AXIS];
-
-    return *this;
-  }
-  
-  Offset &scale (Offset o) {
- (*this)[X_AXIS] *= o[X_AXIS];
- (*this)[Y_AXIS] *= o[Y_AXIS];
-
-    return *this;
-  }
-  Offset &operator *= (Real a) {
- (*this)[X_AXIS] *= a;
- (*this)[Y_AXIS] *= a;
-
-    return *this;
-  }
-      
-  Offset (Real ix , Real iy) {
-    coordinate_a_[X_AXIS] =ix;
-    coordinate_a_[Y_AXIS] =iy;    
-  }
-  Offset () {
-    coordinate_a_[X_AXIS]=
-      coordinate_a_[Y_AXIS]=
-      0.0;
-  }
-
-  String to_string () const;
-
-  void mirror (Axis);
-  Real  arg () const;
-  Real length () const;
-  Offset operator *= (Offset z2) {
-    *this = complex_multiply (*this,z2);
-    return *this;
-  }
-
-};
-
-IMPLEMENT_ARITHMETIC_OPERATOR (Offset, +);
-IMPLEMENT_ARITHMETIC_OPERATOR (Offset, -);
-IMPLEMENT_ARITHMETIC_OPERATOR (Offset, *);
-
-inline Offset
-operator* (Real o1, Offset o2)
-{
-  o2 *= o1;
-  return o2;
-}
-
-inline Offset
-operator* (Offset o1, Real o2)
-{
-  o1 *= o2;
-  return o1;
-}
-
-
-#endif // OFFSET_HH
-
-
diff --git a/flower/include/parray.hh b/flower/include/parray.hh
deleted file mode 100644
index e37a316503..0000000000
--- a/flower/include/parray.hh
+++ /dev/null
@@ -1,327 +0,0 @@
-/*
-  parray.hh -- declare Pointer_array
-
-  source file of the Flower Library
-
-  (c) 1997--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-*/
-
-
-#ifndef PARRAY_HH
-#define PARRAY_HH
-
-#include "array.hh"
-
-
-
-/**
-  an array of pointers.
-
-  TODO
-  should init to 0.
- */
-template<class T>
-class Link_array : private Array<void *>
-{
-
-  Link_array (Array<void*> v)
-    :Array<void*> (v)
-    {
-    }
-public:
-  Link_array ()
-    {}
-
-  static int default_compare (T *const& p1, T  *const&p2)
-  {
-    /* can't do p1 -p2, since T might be an incomplete type */
-    if (p1 < p2)
-      return -1 ;
-    if (p2 < p1)
-      return 1;
-    return 0;
-  }
-  Link_array (T * const *tp, int n)
-    : Array<void*> ((void **)tp, n)
-    {
-    }
-
-  Link_array (Link_array<T> const &src)
-    : Array<void*> (src)
-    {
-    }
-  /// access element
-  T *elem (int i) const 
-    {
-      return elem_ref (i);
-    }
-  T *&elem_ref (int i) const
-    {
-      return (T*&) Array<void*>::elem_ref (i);
-    }
-
-  /// access element
-  T* &operator[] (int i)  
-    {
-      return (T*&) Array<void*>::elem_ref (i);
-    }
-  /// access element
-  T *const operator[] (int i) const 
-    {
-      return (T *const) Array<void*>::elem (i);
-    }
-  T *pop ()
-    {
-      return (T*) Array<void*>::pop ();
-    }
-  void insert (T *t, int i)
-    {
-      Array<void*>::insert (t, i);
-    }
-  void push (T* t)
-    {
-      Array<void*>::push (t);
-    }
-  /// return last entry
-  T* top (int j=0) const 
-    {
-      return (T*) Array<void*>::top (j);
-    }
-  T *& top (int i=0)
-    {
-      return (T*&) Array<void*>::top (i);
-    }
-  void substitute (T *old, T*new_p)
-    {
-      int i;
-      while ((i = find_index (old)) >=0) 
-	if (new_p)
-	  elem_ref (i) =new_p;
-	else
-	  del (i);
-    }
-  void unordered_substitute (T* old, T * new_p)
-    {
-      int i;
-      while ((i = find_index (old)) >=0) 
-	if (new_p)
-	  elem_ref (i) =new_p;
-	else {
-	  unordered_del (i);
-	}
-    
-    }
-  void default_sort () {
-    sort (default_compare);
-  }
-  // quicksort.
-  void sort (int (*compare) (T *const&,T *const&),
-	     int lower = -1, int upper = -1);
-  
-  void uniq () {
-    Link_array<T> ls;
-    for (int i=0; i < size (); i++) 
-      if (!i || elem (i-1) != elem (i))
-	ls.push (elem (i)); 
-    *this = ls;
-  }
-  Array<void*>::del;
-  Array<void*>::unordered_del;  
-  Array<void*>::size;
-  Array<void*>::clear;
-  Array<void*>::set_size;
-  Array<void*>::is_empty;
-  Array<void*>::reverse;
-  Array<void*>::tighten_maxsize;
-
-  T *& boundary (int d, int i)
-  {
-    assert (d);
-    if (d == 1)
-      return top (i);
-    else
-      return elem_ref (i);
-  }
-  T * boundary (int d, int i)const
-  {
-    assert (d);
-    if (d == 1)
-      return top (i);
-    else
-      return elem_ref (i);
-  }
-
-  
-  T ** accesses () const
-    {
-      return (T**) Array<void*>::accesses ();
-    }
-  T * get (int i)
-    {
-      return (T*) Array<void*>::get (i);
-    }
-  Link_array<T>
-  slice (int l,int u)
-    {
-      return Array<void*>::slice (l,u);
-    }
-  void concat (Link_array<T> const &a2)
-    {
-      Array<void*>::concat (a2);
-    }
-  int find_index (T const * t) const {
-    for (int i=0; i < size (); i++)
-      if (elem (i) == t)
-	return i;
-    return -1;
-  }
-  T *find (T const *t) const
-    {
-      int i = find_index (t);
-      if (i >= 0)
-	return elem (i);
-      else
-	return 0;
-    }
-};
-
-template<class T, class V>
-Link_array<T>
-typecasts (Link_array<V> const &a, T * /* dummy */ )
-{
-  Link_array<T> ret;
-  for (int i=a.size (); i-- ; )
-	ret.push (dynamic_cast<T*> (a[i]));	// ugh?
-  return ret;
-}
-
-
-
-template<class T> inline void
-Link_array<T>::sort (int (*compare)(T *const&,T *const&), int lower, int upper)
-{
-  if (lower < 0) 
-    {
-      lower = 0 ;
-      upper = size () - 1;
-    }
-  if (lower >= upper)
-    return;
-  swap (lower, (lower+upper)/2);
-  int last = lower;
-  for (int i= lower +1; i <= upper; i++)
-    if (compare (elem (i), elem (lower)) < 0)
-      swap (++last,i);
-  swap (lower, last);
-  sort (compare, lower, last-1);
-  sort (compare, last+1, upper);
-}
-
-template<class T>
-void
-junk_pointers (Link_array<T> &a)
-{
-  for (int i=0; i < a.size ();  i++)
-    {
-      delete a[i];
-    }
-  a.clear ();
-}
-
-
-
-/*
-  lookup with binsearch, return tokencode.
-*/
-template<class T>
-int
-binsearchs (Array<T> const &arr, T t, int (*compare) (T const&,T const&))
-{
-  int lo;
-  int hi;
-  int cmp;
-  int result;
-  lo = 0;
-  hi = maxkey;
-
-  /* binary search */
-  do
-  {
-      cmp = (lo + hi) / 2;
-
-      result = compare (t, arr[cmp]);
-
-      if (result < 0)
-          hi = cmp;
-      else
-          lo = cmp;
-    }
-  while (hi - lo > 1);
-  if (!compare (t, arr[lo]))
-    return lo;
-  else
-    return -1;              /* not found */
-}
-
-
-template<class T>
-int
-binsearch_links (Link_array<T> const &arr, T *t,
-		      int (*compare) (T *const&,T *const&),
-		      int lo = 0, int hi = -1 )
-{
-  int cmp;
-  int result;
-  if (hi< 0)
-    hi = arr.size ();
-
-  if (hi == 0)
-    return -1;
-  
-  /* binary search */
-  do
-  {
-      cmp = (lo + hi) / 2;
-
-      result = compare (t, arr[cmp]);
-
-      if (result < 0)
-          hi = cmp;
-      else
-          lo = cmp;
-    }
-  while (hi - lo > 1);
-  if (!compare (t, arr[lo]))
-    return lo;
-  else
-    return -1;              /* not found */
-}
-
-
-template<class T>
-void
-binary_search_bounds (Link_array<T> const &table,
-		      T const *key, int (*compare) (T * const& , T *const &),
-		      int *lo,
-		      int *hi)
-{
-  int cmp;
-  int result;
-
-  /* binary search */
-  do
-  {
-      cmp = (*lo + *hi) / 2;
-
-      result = (*compare)  ((T*) key, table[cmp]);
-
-      if (result < 0)
-          *hi = cmp;
-      else
-          *lo = cmp;
-    }
-  while (*hi - *lo > 1);
-}
-
-#endif // PARRAY_HH
-
diff --git a/flower/include/parse-afm.hh b/flower/include/parse-afm.hh
deleted file mode 100644
index 51b43b3e1f..0000000000
--- a/flower/include/parse-afm.hh
+++ /dev/null
@@ -1,330 +0,0 @@
-/* Modified 1999 Morten Welinder:
- * 1. ANSI prototype.
- * 2. parseFileFree function.
- */
-// 2000 HWN: AFM_ prefixes.
-/*
- * (C) 1988, 1989 by Adobe Systems Incorporated. All rights reserved.
- *
- * This file may be freely copied and redistributed as long as:
- *   1) This entire notice continues to be included in the file, 
- *   2) If the file has been modified in any way, a notice of such
- *      modification is conspicuously indicated.
- *
- * PostScript, Display PostScript, and Adobe are registered trademarks of
- * Adobe Systems Incorporated.
- * 
- * ************************************************************************
- * THE INFORMATION BELOW IS FURNISHED AS IS, IS SUBJECT TO CHANGE WITHOUT
- * NOTICE, AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY ADOBE SYSTEMS
- * INCORPORATED. ADOBE SYSTEMS INCORPORATED ASSUMES NO RESPONSIBILITY OR 
- * LIABILITY FOR ANY ERRORS OR INACCURACIES, MAKES NO WARRANTY OF ANY 
- * KIND (EXPRESS, IMPLIED OR STATUTORY) WITH RESPECT TO THIS INFORMATION, 
- * AND EXPRESSLY DISCLAIMS ANY AND ALL WARRANTIES OF MERCHANTABILITY, 
- * FITNESS FOR PARTICULAR PURPOSES AND NONINFRINGEMENT OF THIRD PARTY RIGHTS.
- * ************************************************************************
- */
-
-/* ParseAFM.h
- *
- * This header file is used in conjuction with the parseAFM.c file.
- * Together these files provide the functionality to parse Adobe Font
- * Metrics files and store the information in predefined data structures.
- * It is intended to work with an application program that needs font metric
- * information. The program can be used as is by making a procedure call to 
- * parse an AFM file and have the data stored, or an application developer
- * may wish to customize the code. 
- *
- * This header file defines the data structures used as well as the key 
- * strings that are currently recognized by this version of the AFM parser.
- * This program is based on the document "Adobe Font Metrics Files, 
- * Specification Version 2.0".
- *
- * AFM files are separated into distinct sections of different data. Because
- * of this, the parseAFM program can parse a specified file to only save
- * certain sections of information based on the application's needs. A record 
- * containing the requested information will be returned to the application.
- * 
- * AFM files are divided into five sections of data:
- *	1) The Global Font Information
- *	2) The Character Metrics Information 
- *	3) The Track Kerning Data
- *	4) The Pair-Wise Kerning Data
- *	5) The Composite Character Data
- *
- * Basically, the application can request any of these sections independent
- * of what other sections are requested. In addition, in recognizing that
- * many applications will want ONLY the x-width of characters and not all
- * of the other character metrics information, there is a way to receive
- * only the width information so as not to pay the storage cost for the 
- * unwanted data. An application should never request both the 
- * "quick and dirty" char metrics (widths only) and the Character Metrics 
- * Information since the Character Metrics Information will contain all 
- * of the character widths as well.
- * 
- * There is a procedure in parseAFM.c, called parseFile, that can be 
- * called from any application wishing to get information from the AFM File.
- * This procedure expects 3 parameters: a vaild file descriptor, a pointer
- * to a (FontInfo *) variable (for which space will be allocated and then 
- * will be filled in with the data requested), and a mask specifying
- * which data from the AFM File should be saved in the FontInfo structure.
- * 
- * The flags that can be used to set the appropriate mask are defined below.
- * In addition, several commonly used masks have already been defined. 
- * 
- * History:
- *	original: DSM  Thu Oct 20 17:39:59 PDT 1988
- *  modified: DSM  Mon Jul  3 14:17:50 PDT 1989
- *    - added 'storageProblem' return code
- *	  - fixed typos
- */
-
-#include <stdio.h>
-
-
-/* your basic constants */
-#define TRUE 1
-#define FALSE 0
-#define EOL '\n'                /* end-of-line indicator */
-#define MAX_NAME 4096           /* max length for identifiers */
-#define BOOL int
-#define FLAGS int
-
-
-
-/* Flags that can be AND'ed together to specify exactly what
- * information from the AFM file should be saved.
- */
-#define P_G	0x01	/* 0000 0001 */   /* Global Font Info      */
-#define P_W	0x02	/* 0000 0010 */   /* Character Widths ONLY */
-#define P_M	0x06	/* 0000 0110 */   /* All Char Metric Info  */
-#define P_P	0x08	/* 0000 1000 */   /* Pair Kerning Info     */
-#define P_T	0x10	/* 0001 0000 */   /* Track Kerning Info    */
-#define P_C	0x20	/* 0010 0000 */   /* Composite Char Info   */
-
-
-/* Commonly used flags
- */
-#define P_GW\
-	(P_G | P_W) 
-#define P_GM\
-	(P_G | P_M)
-#define P_GMP\
-	(P_G | P_M | P_P)
-#define P_GMK\
-	(P_G | P_M | P_P | P_T) 
-#define P_GALL\
-	(P_G | P_M | P_P | P_T | P_C)
-
-
-/* Possible return codes from the parseFile procedure.
- * 
- * ok means there were no problems parsing the file.
- *
- * parseError means that there was some kind of parsing error, but the
- * parser went on. This could include problems like the count for any given
- * section does not add up to how many entries there actually were, or
- * there was a key that was not recognized. The return record may contain
- * vaild data or it may not. 
- *
- * earlyEOF means that an End of File was encountered before expected. This
- * may mean that the AFM file had been truncated, or improperly formed.
- * 
- * storageProblem means that there were problems allocating storage for
- * the data structures that would have contained the AFM data.
- */
-#define AFM_ok 0
-#define AFM_parseError -1
-#define AFM_earlyEOF -2
-#define AFM_storageProblem -3
-
-
-
-/************************* TYPES *********************************/
-/* Below are all of the data structure definitions. These structures
- * try to map as closely as possible to grouping and naming of data 
- * in the AFM Files.
- */
-
-
-/* Bounding box definition. Used for the Font AFM_BBox as well as the 
- * Character AFM_BBox.
- */
-typedef struct
-{ 
-   int llx;	/* lower left x-position  */
-   int lly;	/* lower left y-position  */
-   int urx;	/* upper right x-position */
-   int ury;	/* upper right y-position */
-} AFM_BBox;
-
-
-/* Global Font information.
- * The key that each field is associated with is in comments. For an 
- * explanation about each key and its value please refer to the AFM
- * documentation (full title & version given above). 
- */
-typedef struct
-{  
-   char *afmVersion;		/* key: StartFontMetrics */
-   char *fontName;		/* key: FontName */
-   char *fullName;		/* key: FullName */
-   char *familyName;		/* key: FamilyName */
-   char *weight;		/* key: Weight */
-   float italicAngle;		/* key: ItalicAngle */
-   BOOL isFixedPitch;		/* key: IsFixedPitch */
-   AFM_BBox fontBBox;		/* key: FontBBox */
-   int underlinePosition;  	/* key: UnderlinePosition */
-   int underlineThickness; 	/* key: UnderlineThickness */
-   char *version;		/* key: Version */
-   char *notice;		/* key: Notice */
-   char *encodingScheme;	/* key: EncodingScheme */
-   int capHeight;		/* key: CapHeight */
-   int xHeight;			/* key: XHeight */
-   int ascender;		/* key: Ascender */
-   int descender;		/* key: Descender */
-} AFM_GlobalFontInfo;
-
-
-/* Ligature definition is a linked list since any character can have
- * any number of ligatures.
- */
-typedef struct _t_ligature
-{
-    char *succ, *lig;
-    struct _t_ligature *next;
-} AFM_Ligature;
-
-
-/* Character Metric Information. This structure is used only if ALL 
- * character metric information is requested. If only the character
- * widths is requested, then only an array of the character x-widths
- * is returned.
- *
- * The key that each field is associated with is in comments. For an 
- * explanation about each key and its value please refer to the 
- * Character Metrics section of the AFM documentation (full title
- * & version given above). 
- */
-typedef struct
-{
-    int code, 		/* key: C */
-        wx,		/* key: WX */
-        wy;		/* together wx and wy are associated with key: W */
-    char *name; 	/* key: N */
-    AFM_BBox charBBox;	/* key: B */
-    AFM_Ligature *ligs;	/* key: L (linked list; not a fixed number of Ls */
-} AFM_CharMetricInfo;
-
-
-/* Track kerning data structure.
- * The fields of this record are the five values associated with every 
- * TrackKern entry.
- *  
- * For an explanation about each value please refer to the 
- * Track Kerning section of the AFM documentation (full title
- * & version given above). 
- */
-typedef struct 
-{
-    int degree;  
-    float minPtSize, 
-          minKernAmt, 
-          maxPtSize, 
-          maxKernAmt;
-} AFM_TrackKernData;
-
-
-/* Pair Kerning data structure.
- * The fields of this record are the four values associated with every
- * KP entry. For KPX entries, the yamt will be zero.
- *
- * For an explanation about each value please refer to the 
- * Pair Kerning section of the AFM documentation (full title
- * & version given above). 
- */
-typedef struct 
-{
-    char *name1;
-    char *name2;
-    int xamt,
-        yamt;
-} AFM_PairKernData;
-
-
-/* AFM_Pcc is a piece of a composite character. This is a sub structure of a
- * AFM_CompCharData described below.
- * These fields will be filled in with the values from the key AFM_Pcc.
- * 
- * For an explanation about each key and its value please refer to the 
- * Composite Character section of the AFM documentation (full title
- * & version given above).  
- */
-typedef struct
-{
-    char *AFM_PccName;
-    int deltax,
-        deltay;
-} AFM_Pcc;
-
-
-/* Composite Character Information data structure. 
- * The fields ccName and numOfPieces are filled with the values associated
- * with the key CC. The field pieces points to an array (size = numOfPieces)
- * of information about each of the parts of the composite character. That
- * array is filled in with the values from the key AFM_Pcc.
- * 
- * For an explanation about each key and its value please refer to the 
- * Composite Character section of the AFM documentation (full title
- * & version given above).  
- */
-typedef struct
-{
-    char *ccName;
-    int numOfPieces;
-    AFM_Pcc *pieces;
-} AFM_CompCharData;
-
-
-/*  FontInfo
- *  Record type containing pointers to all of the other data
- *  structures containing information about a font.
- *  A a record of this type is filled with data by the
- *  parseFile function.
- */
-typedef struct
-{ 
-    AFM_GlobalFontInfo *gfi;	/* ptr to a AFM_GlobalFontInfo record */
-    int *cwi;			/* ptr to 256 element array of just char widths */ 
-    int numOfChars;		/* number of entries in char metrics array */
-    AFM_CharMetricInfo *cmi;	/* ptr to char metrics array */
-    int numOfTracks;		/* number to entries in track kerning array */
-    AFM_TrackKernData *tkd;		/* ptr to track kerning array */
-    int numOfPairs;		/* number to entries in pair kerning array */
-    AFM_PairKernData *pkd;		/* ptr to pair kerning array */
-    int numOfComps;		/* number to entries in comp char array */
-    AFM_CompCharData *ccd;		/* ptr to comp char array */
-} AFM_Font_info;
-
-
-
-/************************* PROCEDURES ****************************/
-
-/*  Call this procedure to do the grunt work of parsing an AFM file.
- *
- *  "fp" should be a valid file pointer to an AFM file.
- *
- *  "fi" is a pointer to a pointer to a FontInfo record sturcture 
- * (defined above). Storage for the FontInfo structure will be
- *  allocated in parseFile and the structure will be filled in
- *  with the requested data from the AFM File.
- *
- *  "flags" is a mask with bits set representing what data should
- *  be saved. Defined above are valid flags that can be used to set
- *  the mask, as well as a few commonly used masks.
- *
- *  The possible return codes from parseFile are defined above.
- */
-
-int AFM_parseFile (FILE *fp, AFM_Font_info **fi, FLAGS flags);
-void AFM_free (AFM_Font_info *fi);
diff --git a/flower/include/polynomial.hh b/flower/include/polynomial.hh
deleted file mode 100644
index f2b725b689..0000000000
--- a/flower/include/polynomial.hh
+++ /dev/null
@@ -1,83 +0,0 @@
-
-/*
- * poly.h -- routines for manipulation of polynomials in one var
- *
- * (c) 1993--2004 Han-Wen Nienhuys
- */
-
-#ifndef POLY_H
-#define POLY_H
-
-#include "array.hh"
-#include "arithmetic-operator.hh"
-#include "real.hh"
-
-/// structure for a polynomial in one var. 
-struct Polynomial
-{
-  /// degree of polynomial
-  int degree ()const;
-
-  /// coefficients 
-  Array<Real>     coefs_;
-
-  // leading coef
-  Real &lc ();
-
-  // leading coef
-  Real lc () const;
-  void print () const ;	
-  Real eval (Real) const ;
-  void print_sols (Array<Real>) const ;
-  void check_sols (Array<Real>) const ;
-  void check_sol (Real x) const;
-  static Polynomial multiply (const Polynomial & p1, const Polynomial & p2);
-  static Polynomial power (int exponent, const Polynomial & src);
-
-  /// chop low coefficients
-  void clean ();
-
-  /// eliminate #x#  close to  zero
-  void real_clean ();
-  void scalarmultiply (Real fact);
-  void operator *= (Real f) { scalarmultiply (f); }
-  void operator /= (Real f) { scalarmultiply (1/f); }
-  void operator += (Polynomial const &p2);
-  void operator *= (Polynomial const &p2);
-  void operator -= (Polynomial const &p2);
-  Polynomial (Real a, Real b =0.0);
-  Polynomial (){}
-  void set_negate (const Polynomial & src);
-    
-  /// take the derivative
-  void differentiate ();
-  int set_mod (const Polynomial &u, const Polynomial &v);
-
-  void debug_clean ();
-
-  Array<Real> solve_quadric ()const;
-  Array<Real> solve_cubic ()const;
-  Array<Real> solve_linear ()const;
-
-  Array<Real> solve () const;
-};
-
-
-IMPLEMENT_ARITHMETIC_OPERATOR (Polynomial, - );
-IMPLEMENT_ARITHMETIC_OPERATOR (Polynomial, + );
-IMPLEMENT_ARITHMETIC_OPERATOR (Polynomial, * );
-
-inline Polynomial
-operator * (Polynomial p, Real a)
-{
-  p *=a;
-  return p;
-}
-inline Polynomial
-operator * (Real a,Polynomial p)
-{
-  p *=a;
-  return p;
-}
-#endif
-
diff --git a/flower/include/pqueue.hh b/flower/include/pqueue.hh
deleted file mode 100644
index dc674dc51e..0000000000
--- a/flower/include/pqueue.hh
+++ /dev/null
@@ -1,109 +0,0 @@
-/*
-  pqueue.hh -- declare PQueue_ent and PQueue
-
-  source file of the Flower Library
-
-  (c) 1997--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-*/
-
-
-#ifndef PQUEUE_HH
-#define PQUEUE_HH
-#include "array.hh"
-
-
-template<class K, class T>
-struct PQueue_ent
-{
-    T val;
-    K key;
-};
-
-template<class K, class T>
-int compare (PQueue_ent<K,T> const &e1 , PQueue_ent<K,T> const &e2) {
-    return compare (e1.key , e2.key);
-}
-
-/**
-  Priority queue using a (variable size) in-situ heap.
-
-  Hungarian postfix pq
-  
-  TODO: add increase/decrease operations,
-  add max () operation
- */
-template<class T>
-class PQueue {
-    Array<T> heap_array_;
-    T &elt (int i) {
-	return heap_array_[i-1];
-    }
-    T const&elt (int i) const {
-	return heap_array_[i-1];
-    }
-public:
-    /** acces an heap element.  Careful with this, as changing the
-      priority might fuck up the invariants
-
-      @param 1 <= i < size () */
-    T& operator[] (int i) { return heap_array_[i]; }
-    T operator[] (int i) const { return heap_array_[i]; }
-    void OK () const
-    {
-#ifndef NDEBUG
-	for (int i =2; i <= size (); i++)
-	    assert (compare (elt (i/2), elt (i)) <= 0);
-#endif
-    }
-    T front () const { return elt (1); }
-    int size () const { return heap_array_.size (); }
-    void insert (T v) {
-	heap_array_.push (v);
-	int i = heap_array_.size ();
-	int j = i / 2 ;
-	while (j) {
-	    if (compare (elt (j), v) > 0) {
-		elt (i) = elt (j);	
-		i = j;
-		j = i/2;
-	    } else {
-		break;
-	    }
-	}
-	elt (i) = v;
-	OK ();
-    }
-    T max () const {
-	//int first_leaf_i = size ();
-	T max_t;
-	return max_t;
-    }
-    void delmin () {
-	assert (size ());
-	T last = heap_array_.top ();
-	
-	int mini=2;
-	int lasti=1;
-
-	while (mini < size ()) {
-	    if (compare (elt (mini + 1), elt (mini)) <0)
-		mini++;
-	    if (compare (last,elt (mini)) < 0)
-		break;
-	    elt (lasti) = elt (mini);
-	    lasti = mini;
-	    mini *= 2;
-	}
-	elt (lasti) = last;
-	heap_array_.pop ();
-	OK ();
-    }
-    T get () { 
-	T t = front ();
-	delmin ();
-	return t;
-    }
-};
-
-
-#endif // PQUEUE_HH
diff --git a/flower/include/rational.hh b/flower/include/rational.hh
deleted file mode 100644
index 4c4b0a3891..0000000000
--- a/flower/include/rational.hh
+++ /dev/null
@@ -1,99 +0,0 @@
-/*
-  rational.hh -- declare rational helpers
-
-  source file of the Flower Library
-
-  (c) 1997--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-*/
-
-
-#ifndef RATIONAL_HH
-#define RATIONAL_HH
-
-#include "compare.hh"
-#include "arithmetic-operator.hh"
-#include "flower-proto.hh"
-#include "string.hh"
-
-
-/**
-   Rational numbers.  Included is support for + and - infinity.
- */
-class Rational {
-  /**
-     Sign of rational.
-     -2, .. 2
-
-     -2,2 is - and + infinity.
-     -1,1 is negative and positive.
-     0 if *this is zero.
-   */
-  int sign_;
-  unsigned int num_, den_;
-  void normalise ();
-  void copy (Rational const &);
-
-public:
-  void set_infinite (int sign);
-  bool is_infinity () const;
-  void invert ();
-  int num () const { return sign_ * num_; }
-  int den () const { return den_; }
-
-  Rational trunc_rat () const;
-  Rational div_rat (Rational) const;
-  Rational mod_rat (Rational) const;
-  void negate ();
-  //   operator bool () const;
-  int to_int () const;
-  operator double () const;
-  Rational operator - () const;
-  /**
-     Initialize to 0. 
-   */
-  Rational ();
-  Rational (int);
-  Rational (int, int);
-  Rational (double);
-  Rational (Rational const&r) {   copy (r);}
-  Rational &operator = (Rational const &r) {
-    copy (r); return *this;
-  }
-
-  Rational &operator *= (Rational);
-  Rational &operator /= (Rational);  
-  Rational &operator += (Rational);
-  Rational &operator -= (Rational);
-  Rational &operator %= (Rational);
-  static int compare (Rational const&, Rational const&);
-  int sign () const;
-  String to_string () const;
-};
-
-IMPLEMENT_ARITHMETIC_OPERATOR (Rational, / );
-IMPLEMENT_ARITHMETIC_OPERATOR (Rational, + );
-IMPLEMENT_ARITHMETIC_OPERATOR (Rational, * );
-IMPLEMENT_ARITHMETIC_OPERATOR (Rational, - );
-IMPLEMENT_ARITHMETIC_OPERATOR (Rational, % );
-
-INSTANTIATE_COMPARE (Rational const&, Rational::compare);
-
-int compare (Rational const&,Rational const&);
-int sign (Rational r);
-
-inline void
-Rational::copy (Rational const&r)
-{
-  sign_ = r.sign_;
-  num_ = r.num_;
-  den_ = r.den_;
-}
-
-#if 0
-ostream &
-operator << (ostream &,  Rational);
-#endif
-
-const Rational infinity_rat = INT_MAX;
-
-#endif // RATIONAL_HH
diff --git a/flower/include/real.hh b/flower/include/real.hh
deleted file mode 100644
index e00c2880e3..0000000000
--- a/flower/include/real.hh
+++ /dev/null
@@ -1,53 +0,0 @@
-/*
-  real.hh -- declare Real
-
-  source file of the Flower Library
-
-  (c) 1997--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-*/
-
-
-#ifndef REAL_HH
-#define REAL_HH
-
-
-#include <limits.h>
-
-typedef double Real;
-extern const Real infinity_f;
-
-template<class T> inline T abs (T x)
-{
-  return x > 0 ? x : -x;
-}
-
-template<class T> inline int sign (T x)
-{
-  if (x)
-    return x > T (0) ? 1 : -1;
-  return 0;
-}
-
-template<class T> inline T max (T x, T y)
-{
-  return x >? y;
-}
-
-template<class T> inline T sqr (T x)
-{
-  return x*x;
-}
-
-
-template<class T> inline T min (T x, T y)
-{
-  return x <? y;
-}
-
-inline Real
-distance (Real x,Real y)
-{
-    return abs (x-y);
-}
-
-#endif
diff --git a/flower/include/string-convert.hh b/flower/include/string-convert.hh
deleted file mode 100644
index 6e109e604a..0000000000
--- a/flower/include/string-convert.hh
+++ /dev/null
@@ -1,50 +0,0 @@
-/*
-  PROJECT: FlowerSoft C++ library
-  FILE   : string-convert.hh
-
-*/
-
-#ifndef STRING_CONVERT_HH
-#define STRING_CONVERT_HH
-
-#include <stdarg.h>
-#include "flower-proto.hh"
-#include "string.hh"
-
-
-/** The functor String_convert handles all conversions to/from String
- (some time, anyway).  The class is quite empty from data view.  */
-class String_convert {
-  static int hex2bin (String hex_string, String& bin_string_r);
-  static int hex2nibble (Byte byte);
-  static Byte nibble2hex_byte (Byte byte);
-public:
-  static String pad_to (String s, int length);
-  static String bool_string (bool b);
-  static String bin2dec (String bin_string);
-  static String bin2hex (String bin_string);
-  static String dec2bin (String str);
-  static int bin2int (String bin_string);
-  static unsigned bin2unsigned (String bin_string);
-  static String char_string (char c, int n);
-  static int dec2int (String dec_string);
-  static double dec2double (String dec_string);
-  static String double_string (double f, char const* fmt=0);
-  static String form_string (char const* format, ...);
-  static String vform_string (char const* format, va_list args);
-  static int hex2int (String str);
-  static unsigned hex2unsigned (String str);
-  static String hex2bin (String str);
-  static String int_string (int i, char const *fmt=0 );
-  static String long_string (long);
-  static String int2hex (int i, int length_i, char ch);
-  static String unsigned2hex (unsigned u, int length_i, char ch);
-  static String int2dec (int i, int length_i, char ch);
-  static String rational_string (Rational);
-  static String pointer_string (void const *);
-  static String precision_string (double x, int n);
-  static Array<String> split (String str, char c);
-  static String i64_string (I64, char const * fmt = 0);
-};
-
-#endif // __STRING_CONVERT_HH //
diff --git a/flower/include/string-data.hh b/flower/include/string-data.hh
deleted file mode 100644
index 9b23c48716..0000000000
--- a/flower/include/string-data.hh
+++ /dev/null
@@ -1,95 +0,0 @@
-/*
-  string-data.hh -- declare  String_data
-
-  source file of the LilyPond music typesetter
-
-  (c) 1997--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-*/
-
-
-#ifndef STRINGDATA_HH
-#define STRINGDATA_HH
-
-
-/**Internal String struct.
-   the data itself. Handles simple tasks (resizing, resetting)
-   */
-class String_data {
-    // GNU malloc: storage overhead is 8 bytes anyway.
-
-friend class String_handle;
-    int maxlen;	// maxlen is arraysize-1
-    
-    int length_;
-    Byte* data_byte_;
-    int ref_count_;
-
-    /// init to ""
-    String_data ();
-
-    /// init from src. Conservative allocation.
-    String_data (String_data const &src); 
-    
-    ~String_data ();
-
-    /** POST: maxlen >= j.
-      @param j, maximum stringlength_.    
-      contents thrown away.
-    */
-    void setmax (int j);
-    
-    /** POST: maxlen >= j.
-      @param j, maximum stringlength_.
-      contents are kept if it grows.
-      */
-    void remax (int j);
-
-    /// check if writeable.
-    void OKW ();
-
-    /// check state.
-    void OK ();
-
-    /// reduce memory usage.
-    void tighten ();
-
-    // assignment.
-    void set (Byte const* byte, int length_i);
-
-    void set (char const* str0);
-    
-    /// concatenation.
-    void append (Byte const* byte, int length_i);
-
-    void operator += (char const* str0);
-
-    char const* to_str0 () const; 
-
-    char* get_str0 ();
-
-    Byte const* to_bytes () const;
-
-    // idem, non const
-    Byte* get_bytes ();
-
-    void trunc (int j);
-
-    /** access element. not really safe. Can alter length_ without
-      #String_data# knowing it.  */
-    Byte &operator [] (int j);
-    Byte operator [] (int j) const;
-    bool is_binary_bo () const;
-};
-
-
-
-#ifdef STRING_UTILS_INLINED
-#ifndef INLINE
-#define INLINE inline
-#endif
-#include "string-data.icc"
-
-#endif
-
-
-#endif // STRING_DATA_HH
diff --git a/flower/include/string-data.icc b/flower/include/string-data.icc
deleted file mode 100644
index 00691cc57b..0000000000
--- a/flower/include/string-data.icc
+++ /dev/null
@@ -1,213 +0,0 @@
-/* -*-C++-*-
-  String_data.inl -- implement String_data
-
-  source file of Flower lib
-
-  (c)  1997--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-*/
-
-#ifndef STRINGDATA_INL
-#define STRINGDATA_INL
-
-#include <assert.h>
-#include <memory.h>
-#include <string.h>
-
-#include "string-data.hh"
-const int INITIALMAX=8;
-
-#include <sys/types.h>
-
-INLINE void 
-String_data::OKW () 
-{
-  assert (ref_count_ == 1);
-}
-
-INLINE void 
-String_data::OK () 
-{
-  assert (maxlen >= length_);
-  assert (bool (data_byte_));
-  assert (ref_count_ >= 1);
-}
-
-
-INLINE
-String_data::String_data () 
-{
-  ref_count_=0;
-  maxlen = INITIALMAX;
-  data_byte_ = new Byte[maxlen + 1];
-  data_byte_[0] = 0;
-  length_ = 0;
-}
-
-INLINE
-String_data::String_data (String_data const &src) 
-{
-  ref_count_=0;	
-  maxlen = length_ = src.length_;		
-  data_byte_ = new Byte[maxlen+1]; // should calc GNU 8byte overhead. 	
-  memcpy (data_byte_, src.data_byte_, length_ + 1);	
-}
-
-INLINE
-String_data::~String_data () 
-{
-  assert (ref_count_ == 0);
-  delete[] data_byte_;
-}
-
-INLINE void 
-String_data::setmax (int j) 
-{	
-  OKW ();
-  if (j > maxlen) 
-    {
-      delete[] data_byte_;
-      maxlen = j;
-      data_byte_ = new Byte[maxlen + 1];
-  
-      data_byte_[0] = 0;
-      length_ = 0;
-    }
-}
-
-/* this is all quite hairy:  
-	 update of length_
-	 update of maxlen
-	 alloc of buffer
-	 copying of buffer
- needs blondification: 
- 	split tasks
-	define change authority
-*/
-INLINE void 
-String_data::remax (int j) 
-{
-  OKW ();
-  if (j > maxlen) 
-    {
-      Byte *p = new Byte[j + 1];	
-      memcpy (p, data_byte_, (maxlen <? length_) + 1 );	    
-      maxlen = j;
-      delete[] data_byte_;
-      data_byte_ = p;
-    }
-}
-
-INLINE void 
-String_data::tighten () 
-{ // should be dec'd const
-  maxlen = length_;
-  Byte *p = new Byte[maxlen + 1];	    
-  memcpy (p, data_byte_, length_ + 1);	    
-  delete[] data_byte_;
-  data_byte_ = p;		
-}
-// assignment.
-INLINE void 
-String_data::set (Byte const* byte, int length_i) 
-{
-  OKW ();
-
-  assert (byte && byte != data_byte_);
-
-  length_ = length_i;
-  remax (length_);     // copies too
-  memcpy (data_byte_, byte, length_);
-  data_byte_[ length_ ] = 0;
-}
-
-INLINE
-void 
-String_data::set (char const* str0) 
-{
-  set ((Byte const*)str0, strlen (str0) );
-}
-
-
-/// concatenation.
-INLINE void 
-String_data::append (Byte const* byte, int length_i) 
-{
-  OK ();
-  OKW ();
-  int old_i = length_;
-  
-  length_ += length_i;
-  remax (length_);
-  memcpy (data_byte_ + old_i, byte, length_i);	
-  data_byte_[ length_ ] = 0;
-}
-
-INLINE
-void 
-String_data::operator += (char const* str0) 
-{
-  append ((Byte const*)str0, strlen (str0) );
-}
-
-
-
-INLINE
-char const*
-String_data::to_str0 () const
-{
-  return (char const*)data_byte_; 
-}
-INLINE char* 
-String_data::get_str0 () 
-{ 
-  return (char*)data_byte_; 
-}
-
-INLINE Byte const*
-String_data::to_bytes () const 
-{ 
-  return data_byte_; 
-}
-
-INLINE Byte* 
-String_data::get_bytes () 
-{
-  OKW ();
-  return data_byte_;
-}
-
-INLINE
-void 
-String_data::trunc (int j) 
-{
-  OKW (); 
-  assert (j >= 0 && j <= length_);
-  data_byte_[j] = 0;
-  length_ = j;
-}
-
-INLINE bool
-String_data::is_binary_bo () const
-{
-  //    return !memchr (data_byte_, length_, 0);
-  return ((int)strlen ((char const*)data_byte_) != length_ );
-}
-
-INLINE Byte&
-String_data::operator [] (int j) 
-{
-  assert (j >= 0 && j <= length_);
-  return data_byte_[j] ; 
-}
-
-INLINE Byte 
-String_data::operator [] (int j) const 
-{
-  assert (j >= 0 && j <= length_);
-  return data_byte_[j]; 
-}
-
-
-
-
-#endif // __STRING_UTIL_CC //
diff --git a/flower/include/string-handle.hh b/flower/include/string-handle.hh
deleted file mode 100644
index 25caad3fd1..0000000000
--- a/flower/include/string-handle.hh
+++ /dev/null
@@ -1,70 +0,0 @@
-/*
-  string-handle.hh -- declare String_handle
-
-  source file of the LilyPond music typesetter
-
-  (c) 1997--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-*/
-
-
-#ifndef STRINGHANDLE_HH
-#define STRINGHANDLE_HH
-
-#include "flower-proto.hh"
-
-
-/**
-  Reference counting for strings.
-  
-   handles ref. counting, and provides a very thin interface using
-   Byte *
-
-   */
-class String_handle {
-  String_data* data;
-    
-  /// decrease ref count. Named kind of like a Tanenbaum semafore 
-  void down ();
-
-  void up (String_data *d);
-    
-  /** make sure data has only one reference.      
-      POST: data->ref_count_ == 1
-  */
-  void copy ();
-    
-public:
-  String_handle ();
-  ~String_handle ();
-  String_handle (String_handle const & src);
-
-  Byte const* to_bytes () const;
-  char const* to_str0 () const;
-  Byte* get_bytes ();
-  char* get_str0 ();    
-  bool is_binary_bo () const;
-  void operator = (String_handle const &src);
-  void operator += (char const *s);
-  Byte operator[] (int j) const;
-
-  /** Access elements. WARNING: NOT SAFE
-      don't use this for loops. Use to_bytes ()
-  */
-  Byte &operator[] (int j);
-  void append (Byte const* byte, int length_i);
-  void set (Byte const* byte, int length_i);
-  void operator = (char const *p);
-  void trunc (int j);
-  int length () const;
-};
-
-#ifdef STRING_UTILS_INLINED
-#ifndef INLINE
-#define INLINE inline
-#endif
-#include "string-handle.icc"
-/* we should be resetting INLINE. oh well. */
-#endif
-
-
-#endif // STRINGHANDLE_HH
diff --git a/flower/include/string-handle.icc b/flower/include/string-handle.icc
deleted file mode 100644
index f5bd77fcd9..0000000000
--- a/flower/include/string-handle.icc
+++ /dev/null
@@ -1,164 +0,0 @@
-/* -*-c++-*-
-   
-  stringhandle.inl -- implement String_handle
-
-  source file of Flower lib
-
-  (c)  1997--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-*/
-
-#ifndef STRINGHANDLE_INL
-#define STRINGHANDLE_INL
-
-#include <assert.h>
-#include <memory.h>
-
-#include "string-data.hh"
-#include "string-handle.hh"
-
-INLINE void 
-String_handle::down () 
-{ 
-  if (! (--data->ref_count_))
-    delete data;
-  data = 0; 
-}
-
-/*
-  increase ref count
-
-  THIS does not have to be initialized.
-*/
-INLINE void 
-String_handle::up (String_data *d) 
-{ 
-  data=d;
-  data->ref_count_ ++; 
-}
-
-INLINE void 
-String_handle::copy () 
-{
-  if (data->ref_count_ !=1)
-    {
-      String_data *newdata = new String_data (*data);
-      down ();
-      up (newdata);
-    }
-}
-
-INLINE
-String_handle::String_handle () 
-{
-  up (new String_data);
-}
-
-INLINE
-String_handle::~String_handle () 
-{	
-  down ();
-}    
-
-INLINE
-String_handle::String_handle (String_handle const & src) 
-{	
-  up (src.data);
-}
-
-INLINE Byte* 
-String_handle::get_bytes () 
-{
-  copy ();
-  return data->get_bytes ();
-}
-
-INLINE char* 
-String_handle::get_str0 () 
-{
-  copy ();
-  return (char*)data->get_bytes ();
-}
-
-INLINE Byte 
-const* String_handle::to_bytes () const 
-{
-  return data->to_bytes ();
-}
-
-INLINE char const* 
-String_handle::to_str0 () const 
-{
-  return (char const*)data->to_bytes ();
-}
-
-INLINE void 
-String_handle::operator = (String_handle const &src) 
-{
-  if (this == &src)
-    return;
-  down ();
-  up (src.data);
-}
-
-INLINE void 
-String_handle::operator += (char const *s) 
-{	
-  copy ();
-  *data += s;
-}    
-
-
-INLINE Byte 
-String_handle::operator[] (int j) const 
-{ 
-  return (*data)[j]; 
-}
-
-// !NOT SAFE!
-// don't use this for loops. Use to_bytes ()
-INLINE Byte &
-String_handle::operator[] (int j) 
-{
-  copy (); 	// hmm. Not efficient
-  return data->get_bytes ()[j];
-}
-
-INLINE void 
-String_handle::append (Byte const* byte, int length_i) 
-{
-  copy ();
-  data->append (byte, length_i);
-}
-			   
-INLINE void 
-String_handle::set (Byte const* byte, int length_i) 
-{
-  copy ();
-  data->set (byte, length_i);
-}
-			   
-INLINE void 
-String_handle::operator = (char const *p) 
-{
-  copy ();
-  data->set (p);
-}
-			   
-INLINE void 
-String_handle::trunc (int j) 
-{
-  copy (); data->trunc (j); 
-}
-
-INLINE int 
-String_handle::length () const 
-{ 
-  return data->length_; 
-}
-
-INLINE bool
-String_handle::is_binary_bo () const {
-  return data->is_binary_bo ();
-}
-
-#endif
diff --git a/flower/include/string.hh b/flower/include/string.hh
deleted file mode 100644
index bee1cf986a..0000000000
--- a/flower/include/string.hh
+++ /dev/null
@@ -1,221 +0,0 @@
-/*
-
-  FILE   : string.hh -- declare String
- 
-  Rehacked by HWN 3/nov/95
-  removed String & 's
-  introduced Class String_handle
- */
-
-#ifndef STRING_HH
-#define STRING_HH
-
-
-// too darn slow with gcc3
-#ifdef STREAM_SUPPORT
-#if ( __GNUC__ > 2 )
-#include <iostream.h>
-#else
-class ostream;
-#endif
-#endif
-
-#include "arithmetic-operator.hh"
-#include "flower-proto.hh"
-#include "string-handle.hh"
-
-/** 
- 
-  Intuitive string class. provides 
-\begin{itemize}
-\item
-  ref counting through #String_handle#
-\item
-  conversion from bool, int, double, char* , char.  
-\item
-  to be moved to String_convert:
-  conversion to int, upcase, downcase 
-
-\item
-  printable. 
-
-\item
-  indexing (index_i, index_any_i, last_index_i)
-
-\item
-  cutting (left_string, right_string, mid_string)
-
-\item
-  concat (+=, +)
-
-\item
-  signed comparison (<, >, ==, etc)
-
-\item
-  No operator[] is provided, since this would be enormously  slow. If needed,
-  convert to char const* .
-\end{itemize}
-
-*/
-class String
-{
-protected:
-  String_handle strh_; 
-
-  bool null_terminated ();
-    
-public:
-
-  /** init to empty string. This is needed because other
-    constructors are provided.*/
-  String ();
-
-  /// String s = "abc";
-  String (char const* source); 
-  String (Byte const* byte, int length_i); 
-    
-  ///  return "new"-ed copy of contents
-  Byte* get_copy_byte () const;
-  char* get_copy_str0 () const;
-
-  char const* to_str0 () const;
-  Byte const* to_bytes () const;
-  char* get_str0 ();
-  Byte* get_bytes ();
-
-  String &operator = (String const & source);
-
-  /// concatenate s
-  void operator += (char const* s) { strh_ += s; }
-  void operator += (String s);
-
-  bool is_empty () const;
-
-  void append (String);
-  void prepend (String);
-
-  /**
-    Return a char.  UNSAFE because it may change strlen () result
-   */
-  char &operator [] (int n);
-  char operator [] (int n) const;
-
-  /// return n leftmost chars
-  String left_string (int n) const;
-
-  /// return n rightmost chars
-  String right_string (int n) const;
-
-  /// return uppercase of *this
-  String upper_string () const;
-
-  /// return lowercase of *this
-  String lower_string () const;
-
-  /// return the "esrever" of *this
-  String reversed_string () const;
-
-  /// return a piece starting at index (first char = index_i 0), length n
-  String cut_string (int index_i, int n) const;
-
-  /// cut out a middle piece, return remainder
-  String nomid_string (int index_i, int n) const;
-
-  /// signed comparison,  analogous to memcmp;
-  static int compare (String const & s1,const  String& s2);
-	
-  /// index of rightmost c 
-  int index_last (char c) const;
-
-  /// index of rightmost element of string (???)
-  int index_last (char const* string) const;
-
-  int index (char c) const;
-
-  /// index of leftmost occurance of STRING
-  int index (String) const;
-
-
-  int index_any (String) const;
-
-  void to_upper ();
-  void to_lower ();
-
-#ifdef STREAM_SUPPORT
-  /// provide Stream output
-  void print_on (ostream& os) const;
-#endif
-  
-  /// the length of the string
-  int length () const;
-
-  /// convert to an integer
-  int to_int () const;
-
-  /// convert to a double
-  double to_double () const;
-};
-
-/*
- better to clutter global namespace, than suffer *ugh, ugh, ugh*
- implicit conversions.
-
- it might be cool to have no type-checking at all in a language,
- but once there is, having this silently circumvented is a nightmare.
-
- whenever implicit conversions seem necessary (e.g. operator << ()),
- use Scalar as the generic type iso String.
- */
-
-/// for completeness (=handy)
-inline String to_string (String s) { return s; }
-/// "cccc"
-String to_string (char c, int n = 1);
-String to_string (int i, char const* format = 0);
-String to_string (double f , char const* format = 0);
-String to_string (long  b);
-String to_string (bool b);
-String to_string (char const* format, ... );
-
-/*
-  technically incorrect, but lets keep it here: this is a
-  catch all place for this stuff.
-  */
-  
-#include "international.hh"
-
-
-#include "compare.hh"
-INSTANTIATE_COMPARE (String const &, String::compare);
-
-#ifdef STRING_UTILS_INLINED
-#ifndef INLINE
-#define INLINE inline
-#endif
-#include "string.icc"
-/* we should be resetting INLINE. oh well. */
-#endif
-
-
-// because char const* also has an operator ==, this is for safety:
-inline bool operator== (String s1, char const* s2)
-{
-  return s1 == String (s2);
-}
-inline bool operator== (char const* s1, String s2)
-{
-  return String (s1)==s2;
-}
-inline bool operator!= (String s1, char const* s2 ) {
-  return s1!=String (s2);
-}
-inline bool operator!= (char const* s1,String s2) {
-  return String (s2) !=s1;
-}
-
-IMPLEMENT_ARITHMETIC_OPERATOR (String, +);
-#ifdef STREAM_SUPPORT
-ostream &operator << (ostream& os, String d);
-#endif
-
-#endif
diff --git a/flower/include/string.icc b/flower/include/string.icc
deleted file mode 100644
index 2436dfaeb2..0000000000
--- a/flower/include/string.icc
+++ /dev/null
@@ -1,41 +0,0 @@
-/*   
-  string.icc -- implement String inlines
-  
-  source file of the Flower Library
-  
-  (c)  1997--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-  
- */
-
-#ifndef STRING_ICC
-#define STRING_ICC
-
-
-INLINE 
-char &
-String::operator [] (int n)
-{
-  return (char &) strh_[n]; 
-}
-
-INLINE 
-char 
-String::operator [] (int n) const
-{
-  return strh_[n]; 
-}
-
-INLINE 
-String::String () 
-{
-}
-
-INLINE
-String::String (char const* source)
-{   
-  assert (source);    
-  strh_ = source;    
-}
-
-
-#endif /* STRING_ICC */
diff --git a/flower/include/virtual-methods.hh b/flower/include/virtual-methods.hh
deleted file mode 100644
index 6d4d840879..0000000000
--- a/flower/include/virtual-methods.hh
+++ /dev/null
@@ -1,50 +0,0 @@
-/*
-  virtual-methods.hh -- declare macros for our do-it-yourself RTTI
-
-  source file of the Flower Library
-
-  (c) 1997--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-*/
-
-
-#ifndef VIRTUAL_METHODS_HH
-#define VIRTUAL_METHODS_HH
-
-#include <typeinfo>
-
-#define classname(class_ptr)   demangle_classname (typeid (* (class_ptr)))
-
-const char *
-demangle_classname (std::type_info const &);
-
-/**
-
-   Virtual copy constructor. Make up for C++'s lack of a standard
-   clone () function.  Uses a typeof hack.  Usage:
-
-   class Foo : Baseclass {
-   	VIRTUAL_COPY_CONS (Baseclass);
-   };
-   
- */
-
-/*
-  fix constness: gcc-2.95 is correct in defining
-  
-    typeof (*this)
-    
-  in a const member function to be const
-*/
-#define VIRTUAL_COPY_CONS(base) \
-  virtual base* clone_const_helper () \
-    { \
-      return new typeof (*this) (*this); \
-    } \
-  virtual base* clone () const \
-    { \
-      base* urg = (base*)this; \
-      return urg->clone_const_helper (); \
-    }
-
-
-#endif /* VIRTUAL_METHODS_HH */
diff --git a/flower/include/warn.hh b/flower/include/warn.hh
deleted file mode 100644
index f56757f00c..0000000000
--- a/flower/include/warn.hh
+++ /dev/null
@@ -1,19 +0,0 @@
-/*
-  warn.hh -- declare Error message functions
-
-  source file of the LilyPond music typesetter
-
-  (c) 1997--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-*/
-
-
-#ifndef WARN_HH
-#define WARN_HH
-
-#include "string.hh"
-
-void programming_error (String s);
-void warning (String message_string);
-void error (String message_string);
-void non_fatal_error (String);
-#endif // WARN_HH
diff --git a/flower/international.cc b/flower/international.cc
deleted file mode 100644
index 9e66e5c69b..0000000000
--- a/flower/international.cc
+++ /dev/null
@@ -1,46 +0,0 @@
-/*   
-  international.cc -- implement stuff for internationalisation
-  
-  source file of the GNU LilyPond music typesetter
-  
-  (c) 1997--2004 Jan Nieuwenhuizen <janneke@gnu.org>
-  
- */
-
-#include <stdarg.h>
-#include "config.h"
-#include "string-convert.hh"
-#include "international.hh"
-
-#if !HAVE_GETTEXT
-inline char*
-gettext (char const* s)
-{
-  return (char*)s;
-}
-#else
-#include <libintl.h>
-#endif
-
-String 
-_ (char const *ch)
-{
-  return String (gettext (ch));
-}
-
-String 
-_f (char const* format, ...)
-{
-  va_list args;
-  va_start (args, format);
-  String str = String_convert::vform_string (gettext (format), args);
-  va_end (args);
-  return str;
-}
-
-String 
-_f (char const* format, String s, String s2, String s3)
-{
-  return String_convert::form_string (gettext (format), s.to_str0 (), s2.to_str0 (), 
-    s3.to_str0 ());
-}
diff --git a/flower/interval.cc b/flower/interval.cc
deleted file mode 100644
index 965888ade5..0000000000
--- a/flower/interval.cc
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
-  interval.cc -- instantiate Interval_t<Real>
-
-  source file of the Flower Library
-
-  (c) 1997--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-*/
-
-
-#include "interval.hh"
-#include "real.hh"
-#include "interval.tcc"
-
-Real
-Interval_t<Real>::infinity () 
-{
-  return HUGE_VAL;
-}
-
-String
-Interval_t<Real>::T_to_string (Real r)
-{
-  return ::to_string (r);
-}
-
-
-int
-Interval_t<int>::infinity () 
-{
-  return INT_MAX;
-}
-
-String
-Interval_t<int>::T_to_string (int i)
-{
-  return ::to_string (i);
-}
-
-template INTERVAL__INSTANTIATE (int);
-template INTERVAL__INSTANTIATE (Real);
-
-
diff --git a/flower/libc-extension.cc b/flower/libc-extension.cc
deleted file mode 100644
index e072826d30..0000000000
--- a/flower/libc-extension.cc
+++ /dev/null
@@ -1,159 +0,0 @@
-/*
-  libc-extension.cc --  compensate for lacking libc functions.
-
-
-  source file of the flowerlib
-
-  (c) 1997--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-         Jan Nieuwenhuizen <janneke@gnu.org>
-*/
-
-#include <math.h>
-
-#include <stdio.h>
-#include <string.h>
-#include <ctype.h>
-#include "libc-extension.hh"
-
-char* 
-strnlwr (char* start ,int n)
-{
-  char * p = start + n;
-  while (--p >= start) 
-    {
-      *p = tolower (*p);    /* a macro on some compilers */
-    }
-  return start;
-}
-
-char* 
-strnupr (char* start, int n)
-{
-  char * p = start + n;
-  while (--p >= start) 
-    {
-      *p = toupper (*p);    /* a macro on some compilers */
-    }
-  return start;
-}
-
-/*
-  There are some strange problems with round() on early glibcs.
- */
-double
-my_round (double x)
-{
-  return floor (x -0.5)+ 1.0 ;
-}
-
-#ifndef isinf
-#if !HAVE_ISINF
-int
-isinf (double x)
-{
-  return x && ( x == x/ 2) ;
-}
-#endif
-#endif
-
-#if !HAVE_MEMMEM
-
-/** locate a substring. #memmem# finds the first occurrence of
-  #needle# in #haystack#.  This is not ANSI-C.
-
-  The prototype is not in accordance with the Linux Programmer's
-  Manual v1.15, but it is with /usr/include/string.h   */
-
-Byte *
-_memmem (Byte const *haystack, int haystack_len,
-	Byte const *needle,int needle_len)
-{
-  Byte const * end_haystack = haystack + haystack_len - needle_len + 1;
-  Byte const * end_needle = needle + needle_len ;
-
-  /* Ahhh ... Some minimal lowlevel stuff. This *is* nice; Varation
-     is the spice of life */
-  while (haystack < end_haystack) 
-    {
-      Byte const *subneedle = needle;
-      Byte const *subhaystack = haystack;
-      while (subneedle < end_needle) 
-        if (*subneedle++ != *subhaystack++)
-	  goto next;
-	
-      /* Completed the needle.  Gotcha.  */
-      return (Byte *) haystack;
-      next:
-	haystack++;
-    }
-  return 0;
-}
-
-void *
-memmem (void const *haystack, int haystack_len,
-	void const *needle,int needle_len)
-{
-  Byte const* haystack_byte_c = (Byte const*)haystack;
-  Byte const* needle_byte_c = (Byte const*)needle;
-  return _memmem (haystack_byte_c, haystack_len, needle_byte_c, needle_len);
-}
-
-#endif
-
-Byte *
-memrchr (Byte const * p, int n, char c)
-{
-  const    Byte * q = p+n;
-  while (q > p) 
-    {
-      if (*--q == c)
-	return (Byte*)q;
-    }
-  return 0;
-}
-
-
-template<class T>
-inline void
-my_swap (T &t1, T &t2, T &tmp)
-{
-  tmp = t1;
-  t1 = t2;
-  t2 = tmp;
-}
-
-Byte*
-strrev (Byte* byte, int length_i)
-{
-  Byte tmp_byte;
-  
-  Byte* left = byte;
-  Byte* right = byte + length_i;
-
-  while (right > left) 
-    {
-      my_swap (*right-- , *left++ , tmp_byte);
-    }
-  return byte;
-}
-
-#if ! HAVE_SNPRINTF
-int 
-snprintf (char *str, size_t, char const *format, ...)
-{
-  va_list ap;
-  va_start (ap, format);
-  int i = vsprintf (str, format, ap);
-  va_end (ap);
-  return i;
-}
-#endif
-
-#if ! HAVE_VSNPRINTF
-int 
-vsnprintf (char *str, size_t, char const *format, va_list args)
-{
-  int i = vsprintf (str, format, args);
-  return i;
-}
-#endif
diff --git a/flower/offset.cc b/flower/offset.cc
deleted file mode 100644
index dd205661fc..0000000000
--- a/flower/offset.cc
+++ /dev/null
@@ -1,98 +0,0 @@
-/*
-  offset.cc -- implement Offset
-
-  source file of the GNU LilyPond music typesetter
-
-  (c) 1997--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-*/
-#include <math.h>
-
-#ifndef STANDALONE
-#include "string.hh"
-#endif
-#include "offset.hh"
-
-
-#ifndef STANDALONE
-String
-Offset::to_string () const
-{
-  String s;
-  s = String (" (") + ::to_string (coordinate_a_[X_AXIS]) + ", " 
-    + ::to_string (coordinate_a_[Y_AXIS]) + ")";
-  return s;
-}
-#endif
-
-
-bool
-isinf_b (Real r)
-{
-  return (fabs (r) > 1e20);
-}
-
-/*
-  free bsd fix by John Galbraith
- */
-  
-Offset
-complex_multiply (Offset z1, Offset z2)
-{
-  Offset z;
-  if (!isinf_b (z2[Y_AXIS]))
-  {
-      z[X_AXIS] = z1[X_AXIS] * z2[X_AXIS] - z1[Y_AXIS]*z2[Y_AXIS];
-      z[Y_AXIS] = z1[X_AXIS] * z2[Y_AXIS] + z1[Y_AXIS] * z2[X_AXIS];
-  }
-  return z;
-}
-
-
-Offset
-complex_conjugate (Offset o)
-{
-  o[Y_AXIS] = - o[Y_AXIS];
-  return o;
-}
-
-Offset
-complex_divide (Offset z1, Offset z2)
-{
-  z2 = complex_conjugate (z2);
-  Offset z = complex_multiply (z1, z2);
-  z *= 1/z2.length ();
-  return z;
-}
-
-
-
-Offset
-complex_exp (Offset o)
-{
-  Real s = sin (o[Y_AXIS]);
-  Real c = cos (o[Y_AXIS]);
-  
-  Real r = exp (o[X_AXIS]);
-
-  return Offset (r*c, r*s);
-}
-
-Real
-Offset::arg () const
-{
-  return atan2 (coordinate_a_[Y_AXIS], coordinate_a_[X_AXIS]);
-}
-
-/**
-   euclidian vector length / complex modulus
- */
-Real
-Offset::length () const
-{
-  return sqrt (sqr (coordinate_a_[X_AXIS]) + sqr (coordinate_a_[Y_AXIS]));
-}
-void
-Offset::mirror (Axis a)
-{
-  coordinate_a_[a] = - coordinate_a_[a];
-}
diff --git a/flower/parse-afm.cc b/flower/parse-afm.cc
deleted file mode 100644
index 2634ab1e20..0000000000
--- a/flower/parse-afm.cc
+++ /dev/null
@@ -1,1316 +0,0 @@
-/* Our mods:
-
-1. FontInfo has become AFM_AFM_Font_info to avoid namespace collisions.
-2. Version is a linetoken because Bitstream Charter has a space in the version.
-3. Added some necessary #include headers.
-4. Added AFM_ prefixes to error codes.
-5. Made it recognize both '\n' and '\r' as line terminators. Sheesh!
-6. Stopped buffer overflows in token and linetoken.
-
-Raph Levien <raph@acm.org> writing on 4 Oct 1998, updating 21 Oct 1998
-
-
-1. parseFileFree function.
-2. Leak fix in parseFile.
-
-Morten Welinder <terra@diku.dk> September 1999.
-
-*/
-
-/*
- * (C) 1988, 1989, 1990 by Adobe Systems Incorporated. All rights reserved.
- *
- * This file may be freely copied and redistributed as long as:
- *   1) This entire notice continues to be included in the file, 
- *   2) If the file has been modified in any way, a notice of such
- *      modification is conspicuously indicated.
- *
- * PostScript, Display PostScript, and Adobe are registered trademarks of
- * Adobe Systems Incorporated.
- * 
- * ************************************************************************
- * THE INFORMATION BELOW IS FURNISHED AS IS, IS SUBJECT TO CHANGE WITHOUT
- * NOTICE, AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY ADOBE SYSTEMS
- * INCORPORATED. ADOBE SYSTEMS INCORPORATED ASSUMES NO RESPONSIBILITY OR 
- * LIABILITY FOR ANY ERRORS OR INACCURACIES, MAKES NO WARRANTY OF ANY 
- * KIND (EXPRESS, IMPLIED OR STATUTORY) WITH RESPECT TO THIS INFORMATION, 
- * AND EXPRESSLY DISCLAIMS ANY AND ALL WARRANTIES OF MERCHANTABILITY, 
- * FITNESS FOR PARTICULAR PURPOSES AND NONINFRINGEMENT OF THIRD PARTY RIGHTS.
- * ************************************************************************
- */
-
-/* parseAFM.c
- * 
- * This file is used in conjuction with the parseAFM.h header file.
- * This file contains several procedures that are used to parse AFM
- * files. It is intended to work with an application program that needs
- * font metric information. The program can be used as is by making a
- * procedure call to "parseFile" (passing in the expected parameters)
- * and having it fill in a data structure with the data from the 
- * AFM file, or an application developer may wish to customize this
- * code.
- *
- * There is also a file, parseAFMclient.c, that is a sample application
- * showing how to call the "parseFile" procedure and how to use the data
- * after "parseFile" has returned.
- *
- * Please read the comments in parseAFM.h and parseAFMclient.c.
- *
- * History:
- *	original: DSM  Thu Oct 20 17:39:59 PDT 1988
- *  modified: DSM  Mon Jul  3 14:17:50 PDT 1989
- *    - added 'storageProblem' return code
- *	  - fixed bug of not allocating extra byte for string duplication
- *    - fixed typos
- *  modified: DSM  Tue Apr  3 11:18:34 PDT 1990
- *    - added free (ident) at end of parseFile routine
- *  modified: DSM  Tue Jun 19 10:16:29 PDT 1990
- *    - changed (width == 250) to (width = 250) in initializeArray
- */
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <errno.h>
-#include <sys/file.h>
-#include <math.h>
-#include <string.h>
-#include "parse-afm.hh"
-#include "warn.hh"
-
-#define lineterm EOL	/* line terminating character */
-#define lineterm_alt '\r' /* alternative line terminating character */
-#define normalEOF 1	/* return code from parsing routines used only */
-			/* in this module */
-#define Space "space"   /* used in string comparison to look for the width */
-			/* of the space character to init the widths array */
-#define False "false"   /* used in string comparison to check the value of */
-			/* boolean keys (e.g. IsFixedPitch)  */
-
-#define MATCH(A,B) (strncmp ((A), (B), MAX_NAME) == 0)
-
-
-
-/*************************** GLOBALS ***********************/
-
-static char *ident = NULL; /* storage buffer for keywords */
-
-
-/* "shorts" for fast case statement 
- * The values of each of these enumerated items correspond to an entry in the
- * table of strings defined below. Therefore, if you add a new string as 
- * new keyword into the keyStrings table, you must also add a corresponding
- * parseKey AND it MUST be in the same position!
- *
- * IMPORTANT: since the sorting algorithm is a binary search, the strings of
- * keywords must be placed in lexicographical order, below. [Therefore, the 
- * enumerated items are not necessarily in lexicographical order, depending 
- * on the name chosen. BUT, they must be placed in the same position as the 
- * corresponding key string.] The NOPE shall remain in the last position, 
- * since it does not correspond to any key string, and it is used in the 
- * "recognize" procedure to calculate how many possible keys there are.
- */
-
-enum parseKey {
-  ASCENDER, CHARBBOX, CODE, COMPCHAR, CAPHEIGHT, COMMENT, 
-  DESCENDER, ENCODINGSCHEME, ENDCHARMETRICS, ENDCOMPOSITES, 
-  ENDFONTMETRICS, ENDKERNDATA, ENDKERNPAIRS, ENDTRACKKERN, 
-  FAMILYNAME, FONTBBOX, FONTNAME, FULLNAME, ISFIXEDPITCH, 
-  ITALICANGLE, KERNPAIR, KERNPAIRXAMT, LIGATURE, CHARNAME, 
-  NOTICE, COMPCHARPIECE, STARTCHARMETRICS, STARTCOMPOSITES, 
-  STARTFONTMETRICS, STARTKERNDATA, STARTKERNPAIRS, 
-  STARTTRACKKERN, TRACKKERN, UNDERLINEPOSITION, 
-  UNDERLINETHICKNESS, VERSION, XYWIDTH, XWIDTH, WEIGHT, XHEIGHT,
-  NOPE };
-
-/* keywords for the system:  
- * This a table of all of the current strings that are vaild AFM keys.
- * Each entry can be referenced by the appropriate parseKey value (an
- * enumerated data type defined above). If you add a new keyword here, 
- * a corresponding parseKey MUST be added to the enumerated data type
- * defined above, AND it MUST be added in the same position as the 
- * string is in this table.
- *
- * IMPORTANT: since the sorting algorithm is a binary search, the keywords
- * must be placed in lexicographical order. And, NULL should remain at the
- * end.
- */
-
-static char *keyStrings[] = {
-  "Ascender", "B", "C", "CC", "CapHeight", "Comment",
-  "Descender", "EncodingScheme", "EndCharMetrics", "EndComposites", 
-  "EndFontMetrics", "EndKernData", "EndKernPairs", "EndTrackKern", 
-  "FamilyName", "FontBBox", "FontName", "FullName", "IsFixedPitch", 
-  "ItalicAngle", "KP", "KPX", "L", "N", 
-  "Notice", "PCC", "StartCharMetrics", "StartComposites", 
-  "StartFontMetrics", "StartKernData", "StartKernPairs", 
-  "StartTrackKern", "TrackKern", "UnderlinePosition", 
-  "UnderlineThickness", "Version", "W", "WX", "Weight", "XHeight",
-  NULL };
-  
-/*************************** PARSING ROUTINES **************/ 
-  
-/*************************** token *************************/
-
-/*  A "AFM File Conventions" tokenizer. That means that it will
- *  return the next token delimited by white space.  See also
- *  the `linetoken' routine, which does a similar thing but 
- *  reads all tokens until the next end-of-line.
- */
- 
-static char *token (FILE *stream)
-{
-  int ch, idx;
-
-  /* skip over white space */
-  while ((ch = fgetc (stream)) == ' ' || ch == lineterm ||
-	 ch == lineterm_alt ||
-	 ch == ',' || ch == '\t' || ch == ';');
-    
-  idx = 0;
-  while (idx < MAX_NAME - 1 &&
-	 ch != EOF && ch != ' ' && ch != lineterm && ch != lineterm_alt
-	 && ch != '\t' && ch != ':' && ch != ';') 
-    {
-      ident[idx++] = ch;
-      ch = fgetc (stream);
-    } /* while */
-
-  if (ch == EOF && idx < 1) return ((char *)NULL);
-  if (idx >= 1 && ch != ':' ) ungetc (ch, stream);
-  if (idx < 1 ) ident[idx++] = ch;	/* single-character token */
-  ident[idx] = 0;
-    
-  return (ident);	/* returns pointer to the token */
-
-} /* token */
-
-
-/*************************** linetoken *************************/
-
-/*  "linetoken" will get read all tokens until the EOL character from
- *  the given stream.  This is used to get any arguments that can be
- *  more than one word (like Comment lines and FullName).
- */
-
-static char *linetoken (FILE *stream)
-{
-  int ch, idx;
-
-  while ((ch = fgetc (stream)) == ' ' || ch == '\t' ); 
-    
-  idx = 0;
-  while (idx < MAX_NAME - 1 &&
-	 ch != EOF && ch != lineterm && ch != lineterm_alt) 
-    {
-      ident[idx++] = ch;
-      ch = fgetc (stream);
-    } /* while */
-    
-  ungetc (ch, stream);
-  ident[idx] = 0;
-
-  return (ident);	/* returns pointer to the token */
-
-} /* linetoken */
-
-
-/*************************** recognize *************************/
-
-/*  This function tries to match a string to a known list of
- *  valid AFM entries (check the keyStrings array above). 
- *  "ident" contains everything from white space through the
- *  next space, tab, or ":" character.
- *
- *  The algorithm is a standard Knuth binary search.
- */
-
-static enum parseKey recognize (  register char *ident)
-{
-  int lower = 0,
-    upper = (int) NOPE,
-    midpoint = 0,
-    cmpvalue = 0;
-  BOOL found = FALSE;
-
-  while ((upper >= lower) && !found)
-    {
-      midpoint = (lower + upper)/2;
-      if (keyStrings[midpoint] == NULL) break;
-      cmpvalue = strncmp (ident, keyStrings[midpoint], MAX_NAME);
-      if (cmpvalue == 0) found = TRUE;
-      else if (cmpvalue < 0) upper = midpoint - 1;
-      else lower = midpoint + 1;
-    } /* while */
-
-  if (found) return (enum parseKey) midpoint;
-  else return NOPE;
-    
-} /* recognize */
-
-
-/************************* parseGlobals *****************************/
-
-/*  This function is called by "parseFile". It will parse the AFM File
- *  up to the "StartCharMetrics" keyword, which essentially marks the
- *  end of the Global Font Information and the beginning of the character
- *  metrics information. 
- *
- *  If the caller of "parseFile" specified that it wanted the Global
- *  Font Information (as defined by the "AFM File Specification"
- *  document), then that information will be stored in the returned 
- *  data structure.
- *
- *  Any Global Font Information entries that are not found in a 
- *  given file, will have the usual default initialization value
- *  for its type (i.e. entries of type int will be 0, etc).
- *
- *  This function returns an error code specifying whether there was 
- *  a premature EOF or a parsing error. This return value is used by 
- *  parseFile to determine if there is more file to parse.
- */
- 
-static BOOL parseGlobals (FILE *fp, register AFM_GlobalFontInfo *gfi)
-{  
-  BOOL cont = TRUE, save = (gfi != NULL);
-  int error = AFM_ok;
-  register char *keyword;
-    
-  while (cont)
-    {
-      keyword = token (fp);
-        
-      if (keyword == NULL)
-	/* Have reached an early and unexpected EOF. */
-	/* Set flag and stop parsing */
-        {
-	  error = AFM_earlyEOF;
-	  break;   /* get out of loop */
-        }
-      if (!save)	
-	/* get tokens until the end of the Global Font info section */
-	/* without saving any of the data */
-	switch (recognize (keyword))  
-	  {				
-	  case STARTCHARMETRICS:
-	    cont = FALSE;
-	    break;
-	  case ENDFONTMETRICS:	
-	    cont = FALSE;
-	    error = normalEOF;
-	    break;
-	  default:
-	    break;
-	  } /* switch */
-      else
-	/* otherwise parse entire global font info section, */
-	/* saving the data */
-	switch (recognize (keyword))
-	  {
-	  case STARTFONTMETRICS:
-	    keyword = token (fp);
-	    gfi->afmVersion = (char *) malloc (strlen (keyword) + 1);
-	    strcpy (gfi->afmVersion, keyword);
-	    break;
-	  case COMMENT:
-	    keyword = linetoken (fp);
-	    break;
-	  case FONTNAME:
-	    keyword = token (fp);
-	    gfi->fontName = (char *) malloc (strlen (keyword) + 1);
-	    strcpy (gfi->fontName, keyword);
-	    break;
-	  case ENCODINGSCHEME:
-	    keyword = token (fp);
-	    gfi->encodingScheme = (char *) 
-	      malloc (strlen (keyword) + 1);
-	    strcpy (gfi->encodingScheme, keyword);
-	    break; 
-	  case FULLNAME:
-	    keyword = linetoken (fp);
-	    gfi->fullName = (char *) malloc (strlen (keyword) + 1);
-	    strcpy (gfi->fullName, keyword);
-	    break; 
-	  case FAMILYNAME:           
-	    keyword = linetoken (fp);
-	    gfi->familyName = (char *) malloc (strlen (keyword) + 1);
-	    strcpy (gfi->familyName, keyword);
-	    break; 
-	  case WEIGHT:
-	    keyword = token (fp);
-	    gfi->weight = (char *) malloc (strlen (keyword) + 1);
-	    strcpy (gfi->weight, keyword);
-	    break;
-	  case ITALICANGLE:
-	    keyword = token (fp);
-	    gfi->italicAngle = atof (keyword);
-	    if (errno == ERANGE) error = AFM_parseError;
-	    break;
-	  case ISFIXEDPITCH:
-	    keyword = token (fp);
-	    if (MATCH (keyword, False))
-	      gfi->isFixedPitch = 0;
-	    else 
-	      gfi->isFixedPitch = 1;
-	    break; 
-	  case UNDERLINEPOSITION:
-	    keyword = token (fp);
-	    gfi->underlinePosition = atoi (keyword);
-	    break; 
-	  case UNDERLINETHICKNESS:
-	    keyword = token (fp);
-	    gfi->underlineThickness = atoi (keyword);
-	    break;
-	  case VERSION:
-	    keyword = linetoken (fp);
-	    gfi->version = (char *) malloc (strlen (keyword) + 1);
-	    strcpy (gfi->version, keyword);
-	    break; 
-	  case NOTICE:
-	    keyword = linetoken (fp);
-	    gfi->notice = (char *) malloc (strlen (keyword) + 1);
-	    strcpy (gfi->notice, keyword);
-	    break; 
-	  case FONTBBOX:
-	    keyword = token (fp);
-	    gfi->fontBBox.llx = atoi (keyword);
-	    keyword = token (fp);
-	    gfi->fontBBox.lly = atoi (keyword);
-	    keyword = token (fp);
-	    gfi->fontBBox.urx = atoi (keyword);
-	    keyword = token (fp);
-	    gfi->fontBBox.ury = atoi (keyword);
-	    break;
-	  case CAPHEIGHT:
-	    keyword = token (fp);
-	    gfi->capHeight = atoi (keyword);
-	    break;
-	  case XHEIGHT:
-	    keyword = token (fp);
-	    gfi->xHeight = atoi (keyword);
-	    break;
-	  case DESCENDER:
-	    keyword = token (fp);
-	    gfi->descender = atoi (keyword);
-	    break;
-	  case ASCENDER:
-	    keyword = token (fp);
-	    gfi->ascender = atoi (keyword);
-	    break;
-	  case STARTCHARMETRICS:
-	    cont = FALSE;
-	    break;
-	  case ENDFONTMETRICS:
-	    cont = FALSE;
-	    error = normalEOF;
-	    break;
-	  case NOPE:
-	  default:
-	    error = AFM_parseError;
-	    break;
-	  } /* switch */
-    } /* while */
-    
-  return (error);
-    
-} /* parseGlobals */    
-
-
-
-/************************* initializeArray ************************/
-
-/*  Unmapped character codes are (at Adobe Systems) assigned the
- *  width of the space character (if one exists) else they get the
- *  value of 250 ems. This function initializes all entries in the
- *  char widths array to have this value. Then any mapped character 
- *  codes will be replaced with the width of the appropriate character 
- *  when parsing the character metric section.
- 
- *  This function parses the Character Metrics Section looking
- *  for a space character (by comparing character names). If found,
- *  the width of the space character will be used to initialize the
- *  values in the array of character widths. 
- *
- *  Before returning, the position of the read/write pointer of the
- *  file is reset to be where it was upon entering this function.
- */
- 
-static int initializeArray (FILE *fp, register int *cwi)
-{  
-  BOOL cont = TRUE, found = FALSE;
-  long opos = ftell (fp);
-  int code = 0, width = 0, i = 0, error = 0;
-  register char *keyword;
-  
-  while (cont)
-    {
-      keyword = token (fp);
-      if (keyword == NULL)
-        {
-	  error = AFM_earlyEOF;
-	  break; /* get out of loop */
-        }
-      switch (recognize (keyword))
-        {
-	case COMMENT:
-	  keyword = linetoken (fp);
-	  break;
-	case CODE:
-	  code = atoi (token (fp));
-	  break;
-	case XWIDTH:
-	  width = atoi (token (fp));
-	  break;
-	case CHARNAME: 
-	  keyword = token (fp);
-	  if (MATCH (keyword, Space))
-	    {    
-	      cont = FALSE;
-	      found = TRUE;
-	    } 
-	  break;            
-	case ENDCHARMETRICS:
-	  cont = FALSE;
-	  break; 
-	case ENDFONTMETRICS:
-	  cont = FALSE;
-	  error = normalEOF;
-	  break;
-	case NOPE:
-	default: 
-	  error = AFM_parseError;
-	  break;
-        } /* switch */
-    } /* while */
-    
-  if (!found)
-    width = 250;
-    
-  for (i = 0; i < 256; ++i)
-    cwi[i] = width;
-    
-  fseek (fp, opos, 0);
-    
-  return (error);
-        
-} /* initializeArray */    
-
-
-/************************* parseCharWidths **************************/
-
-/*  This function is called by "parseFile". It will parse the AFM File
- *  up to the "EndCharMetrics" keyword. It will save the character 
- *  width info (as opposed to all of the character metric information)
- *  if requested by the caller of parseFile. Otherwise, it will just
- *  parse through the section without saving any information.
- *
- *  If data is to be saved, parseCharWidths is passed in a pointer 
- *  to an array of widths that has already been initialized by the
- *  standard value for unmapped character codes. This function parses
- *  the Character Metrics section only storing the width information
- *  for the encoded characters into the array using the character code
- *  as the index into that array.
- *
- *  This function returns an error code specifying whether there was 
- *  a premature EOF or a parsing error. This return value is used by 
- *  parseFile to determine if there is more file to parse.
- */
- 
-static int parseCharWidths (FILE *fp, register int *cwi)
-{  
-  BOOL cont = TRUE, save = (cwi != NULL);
-  int pos = 0, error = AFM_ok;
-  register char *keyword;
-    
-  while (cont)
-    {
-      keyword = token (fp);
-      /* Have reached an early and unexpected EOF. */
-      /* Set flag and stop parsing */
-      if (keyword == NULL)
-        {
-	  error = AFM_earlyEOF;
-	  break; /* get out of loop */
-        }
-      if (!save)	
-	/* get tokens until the end of the Char Metrics section without */
-	/* saving any of the data*/
-	switch (recognize (keyword))  
-	  {				
-	  case ENDCHARMETRICS:
-	    cont = FALSE;
-	    break; 
-	  case ENDFONTMETRICS:
-	    cont = FALSE;
-	    error = normalEOF;
-	    break;
-	  default: 
-	    break;
-	  } /* switch */
-      else
-	/* otherwise parse entire char metrics section, saving */
-	/* only the char x-width info */
-	switch (recognize (keyword))
-	  {
-	  case COMMENT:
-	    keyword = linetoken (fp);
-	    break;
-	  case CODE:
-	    keyword = token (fp);
-	    pos = atoi (keyword);
-	    break;
-	  case XYWIDTH:
-	    /* PROBLEM: Should be no Y-WIDTH when doing "quick & dirty" */
-	    keyword = token (fp); keyword = token (fp); /* eat values */
-	    error = AFM_parseError;
-	    break;
-	  case XWIDTH:
-	    keyword = token (fp);
-	    if (pos >= 0) /* ignore unmapped chars */
-	      cwi[pos] = atoi (keyword);
-	    break;
-	  case ENDCHARMETRICS:
-	    cont = FALSE;
-	    break; 
-	  case ENDFONTMETRICS:
-	    cont = FALSE;
-	    error = normalEOF;
-	    break;
-	  case CHARNAME:	/* eat values (so doesn't cause AFM_parseError) */
-	    keyword = token (fp); 
-	    break;
-	  case CHARBBOX: 
-	    keyword = token (fp); keyword = token (fp);
-	    keyword = token (fp); keyword = token (fp);
-	    break;
-	  case LIGATURE:
-	    keyword = token (fp); keyword = token (fp);
-	    break;
-	  case NOPE:
-	  default: 
-	    error = AFM_parseError;
-	    break;
-	  } /* switch */
-    } /* while */
-    
-  return (error);
-    
-} /* parseCharWidths */    
-
-
-/************************* parseCharMetrics ************************/
-
-/*  This function is called by parseFile if the caller of parseFile
- *  requested that all character metric information be saved
- * (as opposed to only the character width information).
- *
- *  parseCharMetrics is passed in a pointer to an array of records
- *  to hold information on a per character basis. This function
- *  parses the Character Metrics section storing all character
- *  metric information for the ALL characters (mapped and unmapped) 
- *  into the array.
- *
- *  This function returns an error code specifying whether there was 
- *  a premature EOF or a parsing error. This return value is used by 
- *  parseFile to determine if there is more file to parse.
- */
- 
-static int parseCharMetrics (FILE *fp, register AFM_Font_info *fi)
-{  
-  BOOL cont = TRUE, firstTime = TRUE;
-  int error = AFM_ok, count = 0;
-  register AFM_CharMetricInfo *temp = fi->cmi;
-  register char *keyword;
-  
-  while (cont)
-    {
-      keyword = token (fp);
-      if (keyword == NULL)
-        {
-	  error = AFM_earlyEOF;
-	  break; /* get out of loop */
-        }
-      switch (recognize (keyword))
-        {
-	case COMMENT:
-	  keyword = linetoken (fp);
-	  break; 
-	case CODE:
-	  if (count < fi->numOfChars)
-	    { 
-	      if (firstTime)
-		firstTime = FALSE;
-	      else
-		temp++;
-	      temp->code = atoi (token (fp));
-	      count++;
-	    }
-	  else
-	    {
-	      warning ("Too many metrics.");
-	      error = AFM_parseError;
-	      cont = FALSE;
-	    }
-	  break;
-	case XYWIDTH:
-	  temp->wx = atoi (token (fp));
-	  temp->wy = atoi (token (fp));
-	  break;                 
-	case XWIDTH: 
-	  temp->wx = atoi (token (fp));
-	  break;
-	  
-	case CHARNAME: 
-	  keyword = token (fp);
-	  temp->name = (char *) malloc (strlen (keyword) + 1);
-	  strcpy (temp->name, keyword);
-	  break;
-	  
-	case CHARBBOX: 
-	  temp->charBBox.llx = atoi (token (fp));
-	  temp->charBBox.lly = atoi (token (fp));
-	  temp->charBBox.urx = atoi (token (fp));
-	  temp->charBBox.ury = atoi (token (fp));
-	  break;
-
-	case LIGATURE: {
-	  AFM_Ligature **tail = & (temp->ligs);
-	  AFM_Ligature *node = *tail;
-                
-	  if (*tail != NULL)
-	    {
-	      while (node->next != NULL)
-		node = node->next;
-	      tail = & (node->next); 
-	    }
-                
-	  *tail = (AFM_Ligature *) calloc (1, sizeof (AFM_Ligature));
-	  keyword = token (fp);
-	  (*tail)->succ = (char *) malloc (strlen (keyword) + 1);
-	  strcpy ((*tail)->succ, keyword);
-	  keyword = token (fp);
-	  (*tail)->lig = (char *) malloc (strlen (keyword) + 1);
-	  strcpy ((*tail)->lig, keyword);
-	  break; }
-	case ENDCHARMETRICS:
-	  cont = FALSE;;
-	  break; 
-	case ENDFONTMETRICS: 
-	  cont = FALSE;
-	  error = normalEOF;
-	  break; 
-	case NOPE:
-	default:
-	  warning ("Unknown token");
-	  
-	  error = AFM_parseError; 
-	  break; 
-        } /* switch */
-    } /* while */
-    
-  if ((error == AFM_ok) && (count != fi->numOfChars))
-    {
-      warning ("Incorrect char count");
-      error = AFM_parseError;
-    }
-  return (error);
-    
-} /* parseCharMetrics */    
-
-
-
-/************************* parseAFM_TrackKernData ***********************/
-
-/*  This function is called by "parseFile". It will parse the AFM File 
- *  up to the "EndTrackKern" or "EndKernData" keywords. It will save the
- *  track kerning data if requested by the caller of parseFile.
- *
- *  parseAFM_TrackKernData is passed in a pointer to the FontInfo record.
- *  If data is to be saved, the FontInfo record will already contain 
- *  a valid pointer to storage for the track kerning data.
- *
- *  This function returns an error code specifying whether there was 
- *  a premature EOF or a parsing error. This return value is used by 
- *  parseFile to determine if there is more file to parse.
- */
- 
-static int parseAFM_TrackKernData (FILE *fp, register AFM_Font_info *fi)
-{  
-  BOOL cont = TRUE, save = (fi->tkd != NULL);
-  int pos = 0, error = AFM_ok, tcount = 0;
-  register char *keyword;
-  
-  while (cont)
-    {
-      keyword = token (fp);
-        
-      if (keyword == NULL)
-        {
-	  error = AFM_earlyEOF;
-	  break; /* get out of loop */
-        }
-      if (!save)
-	/* get tokens until the end of the Track Kerning Data */
-	/* section without saving any of the data */
-	switch (recognize (keyword))
-	  {
-	  case ENDTRACKKERN:
-	  case ENDKERNDATA:
-	    cont = FALSE;
-	    break;
-	  case ENDFONTMETRICS:
-	    cont = FALSE;
-	    error = normalEOF;
-	    break;
-	  default:
-	    break;
-	  } /* switch */
-      else
-	/* otherwise parse entire Track Kerning Data section, */
-	/* saving the data */
-	switch (recognize (keyword))
-	  {
-	  case COMMENT:
-	    keyword = linetoken (fp);
-	    break;
-	  case TRACKKERN:
-	    if (tcount < fi->numOfTracks)
-	      {
-		keyword = token (fp);
-		fi->tkd[pos].degree = atoi (keyword);
-		keyword = token (fp);
-		fi->tkd[pos].minPtSize = atof (keyword);
-		if (errno == ERANGE) error = AFM_parseError;
-		keyword = token (fp);
-		fi->tkd[pos].minKernAmt = atof (keyword);
-		if (errno == ERANGE) error = AFM_parseError;
-		keyword = token (fp);
-		fi->tkd[pos].maxPtSize = atof (keyword);
-		if (errno == ERANGE) error = AFM_parseError;
-		keyword = token (fp);
-		fi->tkd[pos++].maxKernAmt = atof (keyword);
-		if (errno == ERANGE) error = AFM_parseError;
-		tcount++;
-	      }
-	    else
-	      {
-		error = AFM_parseError;
-		cont = FALSE;
-	      }
-	    break;
-	  case ENDTRACKKERN:
-	  case ENDKERNDATA:
-	    cont = FALSE;
-	    break;
-	  case ENDFONTMETRICS:
-	    cont = FALSE;
-	    error = normalEOF;
-	    break;
-	  case NOPE:
-	  default:
-	    error = AFM_parseError;
-	    break;
-	  } /* switch */
-    } /* while */
-    
-  if (error == AFM_ok && tcount != fi->numOfTracks)
-    error = AFM_parseError;
-        
-  return (error);
-    
-} /* parseAFM_TrackKernData */    
-
-
-/************************* parseAFM_PairKernData ************************/
-
-/*  This function is called by "parseFile". It will parse the AFM File 
- *  up to the "EndKernPairs" or "EndKernData" keywords. It will save
- *  the pair kerning data if requested by the caller of parseFile.
- *
- *  parseAFM_PairKernData is passed in a pointer to the FontInfo record.
- *  If data is to be saved, the FontInfo record will already contain 
- *  a valid pointer to storage for the pair kerning data.
- *
- *  This function returns an error code specifying whether there was 
- *  a premature EOF or a parsing error. This return value is used by 
- *  parseFile to determine if there is more file to parse.
- */
- 
-static int parseAFM_PairKernData (FILE *fp, register AFM_Font_info *fi)
-{  
-  BOOL cont = TRUE, save = (fi->pkd != NULL);
-  int pos = 0, error = AFM_ok, pcount = 0;
-  register char *keyword;
-  
-  while (cont)
-    {
-      keyword = token (fp);
-        
-      if (keyword == NULL)
-        {
-	  error = AFM_earlyEOF;
-	  break; /* get out of loop */
-        }
-      if (!save)
-	/* get tokens until the end of the Pair Kerning Data */
-	/* section without saving any of the data */
-	switch (recognize (keyword))
-	  {
-	  case ENDKERNPAIRS:
-	  case ENDKERNDATA:
-	    cont = FALSE;
-	    break;
-	  case ENDFONTMETRICS:
-	    cont = FALSE;
-	    error = normalEOF;
-	    break;
-	  default:
-	    break;
-	  } /* switch */
-      else
-	/* otherwise parse entire Pair Kerning Data section, */
-	/* saving the data */
-	switch (recognize (keyword))
-	  {
-	  case COMMENT:
-	    keyword = linetoken (fp);
-	    break;
-	  case KERNPAIR:
-	    if (pcount < fi->numOfPairs)
-	      {
-		keyword = token (fp);
-		fi->pkd[pos].name1 = (char *) 
-		  malloc (strlen (keyword) + 1);
-		strcpy (fi->pkd[pos].name1, keyword);
-		keyword = token (fp);
-		fi->pkd[pos].name2 = (char *) 
-		  malloc (strlen (keyword) + 1);
-		strcpy (fi->pkd[pos].name2, keyword);
-		keyword = token (fp);
-		fi->pkd[pos].xamt = atoi (keyword);
-		keyword = token (fp);
-		fi->pkd[pos++].yamt = atoi (keyword);
-		pcount++;
-	      }
-	    else
-	      {
-		error = AFM_parseError;
-		cont = FALSE;
-	      }
-	    break;
-	  case KERNPAIRXAMT:
-	    if (pcount < fi->numOfPairs)
-	      {
-		keyword = token (fp);
-		fi->pkd[pos].name1 = (char *) 
-		  malloc (strlen (keyword) + 1);
-		strcpy (fi->pkd[pos].name1, keyword);
-		keyword = token (fp);
-		fi->pkd[pos].name2 = (char *) 
-		  malloc (strlen (keyword) + 1);
-		strcpy (fi->pkd[pos].name2, keyword);
-		keyword = token (fp);
-		fi->pkd[pos++].xamt = atoi (keyword);
-		pcount++;
-	      }
-	    else
-	      {
-		error = AFM_parseError;
-		cont = FALSE;
-	      }
-	    break;
-	  case ENDKERNPAIRS:
-	  case ENDKERNDATA:
-	    cont = FALSE;
-	    break;
-	  case ENDFONTMETRICS:
-	    cont = FALSE;
-	    error = normalEOF;
-	    break;
-	  case NOPE:
-	  default:
-	    error = AFM_parseError;
-	    break;
-	  } /* switch */
-    } /* while */
-    
-  if (error == AFM_ok && pcount != fi->numOfPairs)
-    error = AFM_parseError;
-        
-  return (error);
-    
-} /* parseAFM_PairKernData */    
-
-
-/************************* parseAFM_CompCharData **************************/
-
-/*  This function is called by "parseFile". It will parse the AFM File 
- *  up to the "EndComposites" keyword. It will save the composite 
- *  character data if requested by the caller of parseFile.
- *
- *  parseAFM_CompCharData is passed in a pointer to the FontInfo record, and 
- *  a boolean representing if the data should be saved.
- *
- *  This function will create the appropriate amount of storage for
- *  the composite character data and store a pointer to the storage
- *  in the FontInfo record.
- *
- *  This function returns an error code specifying whether there was 
- *  a premature EOF or a parsing error. This return value is used by 
- *  parseFile to determine if there is more file to parse.
- */
- 
-static int parseAFM_CompCharData (FILE *fp, register AFM_Font_info *fi)
-{  
-  BOOL cont = TRUE, firstTime = TRUE, save = (fi->ccd != NULL);
-  int pos = 0, j = 0, error = AFM_ok, ccount = 0, pcount = 0;
-  register char *keyword;
-  
-  while (cont)
-    {
-      keyword = token (fp);
-      if (keyword == NULL)
-	/* Have reached an early and unexpected EOF. */
-	/* Set flag and stop parsing */
-        {
-	  error = AFM_earlyEOF;
-	  break; /* get out of loop */
-        }
-      if (ccount > fi->numOfComps)
-        {
-	  error = AFM_parseError;
-	  break; /* get out of loop */
-        }
-      if (!save)
-	/* get tokens until the end of the Composite Character info */
-	/* section without saving any of the data */
-	switch (recognize (keyword))
-	  {
-	  case ENDCOMPOSITES:
-	    cont = FALSE;
-	    break;
-	  case ENDFONTMETRICS:
-	    cont = FALSE;
-	    error = normalEOF;
-	    break;
-	  default:
-	    break;
-	  } /* switch */
-      else
-	/* otherwise parse entire Composite Character info section, */
-	/* saving the data */
-	switch (recognize (keyword))
-	  {
-	  case COMMENT:
-	    keyword = linetoken (fp);
-	    break;
-	  case COMPCHAR:
-	    if (ccount < fi->numOfComps)
-	      {
-		keyword = token (fp);
-		if (pcount != fi->ccd[pos].numOfPieces)
-		  error = AFM_parseError;
-		pcount = 0;
-		if (firstTime) firstTime = FALSE;
-		else pos++;
-		fi->ccd[pos].ccName = (char *) 
-		  malloc (strlen (keyword) + 1);
-		strcpy (fi->ccd[pos].ccName, keyword);
-		keyword = token (fp);
-		fi->ccd[pos].numOfPieces = atoi (keyword);
-		fi->ccd[pos].pieces = (AFM_Pcc *)
-		  calloc (fi->ccd[pos].numOfPieces, sizeof (AFM_Pcc));
-		j = 0;
-		ccount++;
-	      }
-	    else
-	      {
-		error = AFM_parseError;
-		cont = FALSE;
-	      }
-	    break;
-	  case COMPCHARPIECE:
-	    if (pcount < fi->ccd[pos].numOfPieces)
-	      {
-		keyword = token (fp);
-		fi->ccd[pos].pieces[j].AFM_PccName = (char *) 
-		  malloc (strlen (keyword) + 1);
-		strcpy (fi->ccd[pos].pieces[j].AFM_PccName, keyword);
-		keyword = token (fp);
-		fi->ccd[pos].pieces[j].deltax = atoi (keyword);
-		keyword = token (fp);
-		fi->ccd[pos].pieces[j++].deltay = atoi (keyword);
-		pcount++;
-	      }
-	    else
-	      error = AFM_parseError;
-	    break;
-	  case ENDCOMPOSITES:
-	    cont = FALSE;
-	    break;
-	  case ENDFONTMETRICS:
-	    cont = FALSE;
-	    error = normalEOF;
-	    break;
-	  case NOPE:
-	  default:
-	    error = AFM_parseError;
-	    break;
-	  } /* switch */
-    } /* while */
-    
-  if (error == AFM_ok && ccount != fi->numOfComps)
-    error = AFM_parseError;
-    
-  return (error);
-    
-} /* parseAFM_CompCharData */    
-
-
-
-
-/*************************** 'PUBLIC' FUNCTION ********************/ 
-
-void
-AFM_free (AFM_Font_info *fi)
-{
-  if (fi->gfi) {
-    free (fi->gfi->afmVersion);
-    free (fi->gfi->fontName);
-    free (fi->gfi->fullName);
-    free (fi->gfi->familyName);
-    free (fi->gfi->weight);
-    free (fi->gfi->version);
-    free (fi->gfi->notice);
-    free (fi->gfi->encodingScheme);
-    free (fi->gfi);
-  }
-
-  /* This contains just scalars.  */
-  free (fi->cwi);
-
-  if (fi->cmi) {
-    int i;
-    for (i = 0; i < fi->numOfChars; i++) {
-      free (fi->cmi[i].name);
-      while (fi->cmi[i].ligs) {
-	AFM_Ligature *tmp;
-	tmp = fi->cmi[i].ligs;
-	free (tmp->succ);
-	free (tmp->lig);
-	free (tmp);
-	fi->cmi[i].ligs = fi->cmi[i].ligs->next;
-      }
-    }
-    free (fi->cmi);
-  }
-
-  /* This contains just scalars.  */
-  free (fi->tkd);
-
-  if (fi->pkd) {
-    int i;
-    for (i = 0; i < fi->numOfPairs; i++) {
-      free (fi->pkd[i].name1);
-      free (fi->pkd[i].name2);
-    }
-    free (fi->pkd);
-  }
-
-  if (fi->ccd) {
-    int i, j;
-    for (i = 0; i < fi->numOfComps; i++) {
-      free (fi->ccd[i].ccName);
-      for (j = 0; j < fi->ccd[i].numOfPieces; j++) {
-	free (fi->ccd[i].pieces[j].AFM_PccName);
-      }
-      free (fi->ccd[i].pieces);
-    }
-    free (fi->ccd);
-  }
-
-  free (fi);
-}
-
-
-/*************************** parseFile *****************************/
-
-/*  parseFile is the only 'public' procedure available. It is called 
- *  from an application wishing to get information from an AFM file.
- *  The caller of this function is responsible for locating and opening
- *  an AFM file and handling all errors associated with that task.
- *
- *  parseFile expects 3 parameters: a vaild file pointer, a pointer
- *  to a (FontInfo *) variable (for which storage will be allocated and
- *  the data requested filled in), and a mask specifying which
- *  data from the AFM File should be saved in the FontInfo structure.
- *
- *  The file will be parsed and the requested data will be stored in 
- *  a record of type FontInfo (refer to ParseAFM.h).
- *
- *  parseFile returns an error code as defined in parseAFM.h. 
- *
- *  The position of the read/write pointer associated with the file 
- *  pointer upon return of this function is undefined.
- */
-
-extern int AFM_parseFile (FILE *fp, AFM_Font_info **fi, int flags)
-{
-    
-  int code = AFM_ok; 	/* return code from each of the parsing routines */
-  int error = AFM_ok;	/* used as the return code from this function */
-    
-  register char *keyword; /* used to store a token */	 
-    
-   			      
-  /* storage data for the global variable ident */			      
-  if (!ident)
-    ident = (char *) calloc (MAX_NAME, sizeof (char)); 
-  if (ident == NULL) {error = AFM_storageProblem; return (error);}      
-  
-  (*fi) = (AFM_Font_info *) calloc (1, sizeof (AFM_Font_info));
-  if ((*fi) == NULL) {error = AFM_storageProblem; return (error);}      
-  
-  if (flags & P_G) 
-    {
-      (*fi)->gfi = (AFM_GlobalFontInfo *) calloc (1, sizeof (AFM_GlobalFontInfo));
-      if ((*fi)->gfi == NULL) {error = AFM_storageProblem; return (error);}      
-    }
-    
-  /* The AFM File begins with Global Font Information. This section */
-  /* will be parsed whether or not information should be saved. */     
-  code = parseGlobals (fp, (*fi)->gfi); 
-    
-  if (code < 0)
-    error = code;
-    
-  /* The Global Font Information is followed by the Character Metrics */
-  /* section. Which procedure is used to parse this section depends on */
-  /* how much information should be saved. If all of the metrics info */
-  /* is wanted, parseCharMetrics is called. If only the character widths */
-  /* is wanted, parseCharWidths is called. parseCharWidths will also */
-  /* be called in the case that no character data is to be saved, just */
-  /* to parse through the section. */
-  
-  if ((code != normalEOF) && (code != AFM_earlyEOF))
-    {
-      (*fi)->numOfChars = atoi (token (fp));
-      if (flags & (P_M ^ P_W))
-        {
-	  (*fi)->cmi = (AFM_CharMetricInfo *) 
-	    calloc ((*fi)->numOfChars, sizeof (AFM_CharMetricInfo));
-	  if ((*fi)->cmi == NULL) {
-	    error = AFM_storageProblem;
-	    return (error);
-
-	  }
-	  code = parseCharMetrics (fp, *fi);             
-        }
-      else
-        {
-	  if (flags & P_W)
-            { 
-	      (*fi)->cwi = (int *) calloc (256, sizeof (int)); 
-	      if ((*fi)->cwi == NULL) 
-                {
-		  error = AFM_storageProblem; 
-		  return (error);
-                }
-            }
-	  /* parse section regardless */
-	  code = parseCharWidths (fp, (*fi)->cwi);
-        } /* else */
-    } /* if */
-    
-  if ((error != AFM_earlyEOF) && (code < 0))
-    error = code;
-    
-  /* The remaining sections of the AFM are optional. This code will */
-  /* look at the next keyword in the file to determine what section */
-  /* is next, and then allocate the appropriate amount of storage */
-  /* for the data (if the data is to be saved) and call the */
-  /* appropriate parsing routine to parse the section. */
-    
-  while ((code != normalEOF) && (code != AFM_earlyEOF))
-    {
-      keyword = token (fp);
-      if (keyword == NULL)
-	/* Have reached an early and unexpected EOF. */
-	/* Set flag and stop parsing */
-        {
-	  code = AFM_earlyEOF;
-	  break; /* get out of loop */
-        }
-      switch (recognize (keyword))
-        {
-	case STARTKERNDATA:
-	  break;
-	case ENDKERNDATA:
-	  break;
-	case STARTTRACKKERN:
-	  keyword = token (fp);
-	  if (flags & P_T)
-	    {
-	      (*fi)->numOfTracks = atoi (keyword);
-	      (*fi)->tkd = (AFM_TrackKernData *) 
-		calloc ((*fi)->numOfTracks, sizeof (AFM_TrackKernData));
-	      if ((*fi)->tkd == NULL) 
-		{
-		  error = AFM_storageProblem; 
-		  return (error);
-		}
-	    } /* if */
-	  code = parseAFM_TrackKernData (fp, *fi);
-	  break;
-	case STARTKERNPAIRS:
-	  keyword = token (fp);
-	  if (flags & P_P)
-	    {
-	      (*fi)->numOfPairs = atoi (keyword);
-	      (*fi)->pkd = (AFM_PairKernData *) 
-		calloc ((*fi)->numOfPairs, sizeof (AFM_PairKernData));
-	      if ((*fi)->pkd == NULL) 
-		{
-		  error = AFM_storageProblem; 
-		  return (error);
-		}
-	    } /* if */
-	  code = parseAFM_PairKernData (fp, *fi);
-	  break;
-	case STARTCOMPOSITES:
-	  keyword = token (fp);
-	  if (flags & P_C)
-	    { 
-	      (*fi)->numOfComps = atoi (keyword);
-	      (*fi)->ccd = (AFM_CompCharData *) 
-		calloc ((*fi)->numOfComps, sizeof (AFM_CompCharData));
-	      if ((*fi)->ccd == NULL) 
-		{
-		  error = AFM_storageProblem; 
-		  return (error);
-		}
-	    } /* if */
-	  code = parseAFM_CompCharData (fp, *fi); 
-	  break;    
-	case ENDFONTMETRICS:
-	  code = normalEOF;
-	  break;
-	case NOPE:
-	default:
-	  code = AFM_parseError;
-	  break;
-        } /* switch */
-        
-      if ((error != AFM_earlyEOF) && (code < 0))
-	error = code;
-        
-    } /* while */
-  
-  if ((error != AFM_earlyEOF) && (code < 0))
-    error = code;
-    
-  if (ident != NULL) { free (ident); ident = NULL; }
-        
-  return (error);
-  
-} /* parseFile */
-
diff --git a/flower/polynomial.cc b/flower/polynomial.cc
deleted file mode 100644
index a6ee02d183..0000000000
--- a/flower/polynomial.cc
+++ /dev/null
@@ -1,348 +0,0 @@
-/*
-   poly.cc -- routines for manipulation of polynomials in one var
-
-  (c) 1993--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
- */
-
-#include <math.h>
-
-#include "polynomial.hh"
-
-/*
-   Een beter milieu begint bij uzelf. Hergebruik!
-
-
-   This was ripped from Rayce, a raytracer I once wrote. 
-*/
-
-Real
-Polynomial::eval (Real x)const
-{
-  Real p = 0.0;
-
-  // horner's scheme
-  for (int i = coefs_.size (); i--; )
-    p = x * p + coefs_[i];
-  
-  return p;
-}
-
-
-Polynomial
-Polynomial::multiply (const Polynomial & p1, const Polynomial & p2)
-{
-  Polynomial dest;
-
-  int deg= p1.degree () + p2.degree ();
-  for (int i = 0; i <= deg; i++)
-    {
-      dest.coefs_.push (0);
-      for (int j = 0; j <= i; j++)
-	if (i - j <= p2.degree () && j <= p1.degree ())
-	  dest.coefs_.top () += p1.coefs_[j] * p2.coefs_[i - j];
-    }
-    
-  return dest;
-}
-
-void
-Polynomial::differentiate ()
-{
-  for (int i = 1; i<= degree (); i++)
-    {
-      coefs_[i-1] = coefs_[i] * i;
-    }
-  coefs_.pop ();
-}
-
-Polynomial
-Polynomial::power (int exponent, const Polynomial & src)
-{
-  int e = exponent;
-  Polynomial dest (1), base (src);
-    
-  /*
-    classic int power. invariant: src^exponent = dest * src ^ e
-    greetings go out to Lex Bijlsma & Jaap vd Woude */
-  while (e > 0)
-    {
-      if (e % 2)
-        {
-	  dest = multiply (dest, base);
-	  e--;
-        } else
-	  {
-            base = multiply (base, base);
-            e /= 2;
-	  }
-    }
-  return  dest;
-}
-
-static Real const FUDGE = 1e-8;
-
-void
-Polynomial::clean ()
-{
-/*
-  We only do relative comparisons. Absolute comparisons break down in
-  degenerate cases.  */
-  while (degree () > 0 &&
- (fabs (coefs_.top ()) < FUDGE * fabs (coefs_.top (1))
-	  || !coefs_.top ()))
-    coefs_.pop ();
-}
-
-
-
-void
-Polynomial::operator += (Polynomial const &p)
-{
-  while (degree () < p.degree())
-    coefs_.push (0.0);
-
-  for (int i = 0; i <= p.degree(); i++)
-    coefs_[i] += p.coefs_[i];
-}
-
-
-void
-Polynomial::operator -= (Polynomial const &p)
-{
-  while (degree () < p.degree())
-    coefs_.push (0.0);
-
-  for (int i = 0; i <= p.degree(); i++)
-    coefs_[i] -= p.coefs_[i];
-}
-
-
-void
-Polynomial::scalarmultiply (Real fact)
-{
-  for (int i = 0; i <= degree (); i++)
-    coefs_[i] *= fact;
-}
-
-
-
-void
-Polynomial::set_negate (const Polynomial & src)
-{
-  for (int i = 0; i <= src.degree (); i++)
-    coefs_[i] = -src.coefs_[i];
-}
-
-/// mod of #u/v#
-int 
-Polynomial::set_mod (const Polynomial &u, const Polynomial &v)
-{
- (*this) = u;
-    
-  if (v.lc () < 0.0) {
-    for (int k = u.degree () - v.degree () - 1; k >= 0; k -= 2)
-      coefs_[k] = -coefs_[k];
-
-    for (int k = u.degree () - v.degree (); k >= 0; k--)
-      for (int j = v.degree () + k - 1; j >= k; j--)
-	coefs_[j] = -coefs_[j] - coefs_[v.degree () + k] * v.coefs_[j - k];
-  } else {
-    for (int k = u.degree () - v.degree (); k >= 0; k--)
-      for (int j = v.degree () + k - 1; j >= k; j--)
-	coefs_[j] -= coefs_[v.degree () + k] * v.coefs_[j - k];
-  }
-
-  int k = v.degree () - 1;
-  while (k >= 0 && coefs_[k] == 0.0)
-    k--;
-
-  coefs_.set_size (1+ ((k < 0) ? 0 : k));
-  return degree ();
-}
-
-void
-Polynomial::check_sol (Real x) const 
-{
-  Real f=eval (x);
-  Polynomial p (*this);
-  p.differentiate ();
-  Real d = p.eval (x);
-  
-  if ( abs (f) > abs (d) * FUDGE)
-    ;
-  /*
-    warning ("x=%f is not a root of polynomial\n"
-    "f (x)=%f, f' (x)=%f \n", x, f, d);	*/
-}
-	
-void
-Polynomial::check_sols (Array<Real> roots) const
-{
-  for (int i=0; i< roots.size (); i++)
-    check_sol (roots[i]);
-}
-
-Polynomial::Polynomial (Real a, Real b)
-{
-  coefs_.push (a);
-  if (b)
-    coefs_.push (b);
-}
-
-/* cubic root. */
-inline Real cubic_root (Real x)
-{
-  if (x > 0.0)
-    return pow (x, 1.0/3.0) ;
-  else if (x < 0.0)
-    return -pow (-x, 1.0/3.0);
-  else
-    return 0.0;
-}
-
-static bool
-iszero (Real r)
-{
-  return !r;
-}
-
-Array<Real>
-Polynomial::solve_cubic ()const
-{
-  Array<Real> sol;
-  
-  /* normal form: x^3 + Ax^2 + Bx + C = 0 */
-  Real A = coefs_[2] / coefs_[3];
-  Real B = coefs_[1] / coefs_[3];
-  Real C = coefs_[0] / coefs_[3];
-
-  /*
-   * substitute x = y - A/3 to eliminate quadric term: x^3 +px + q = 0
-   */
-
-  Real sq_A = A * A;
-  Real p = 1.0 / 3 * (-1.0 / 3 * sq_A + B);
-  Real q = 1.0 / 2 * (2.0 / 27 * A * sq_A - 1.0 / 3 * A * B + C);
-
-  /* use Cardano's formula */
-
-  Real cb = p * p * p;
-  Real D = q * q + cb;
-
-  if (iszero (D)) {
-    if (iszero (q)) {	/* one triple solution */
-      sol.push (0);
-      sol.push (0);
-      sol.push (0);      
-    } else {		/* one single and one double solution */
-      Real u = cubic_root (-q);
-
-      sol.push (2 * u);
-      sol.push (-u);
-    }
-  } else if (D < 0) {		/* Casus irreducibilis: three real solutions */
-    Real phi = 1.0 / 3 * acos (-q / sqrt (-cb));
-    Real t = 2 * sqrt (-p);
-
-    sol.push (t * cos (phi));
-    sol.push (-t * cos (phi + M_PI / 3));
-    sol.push ( -t * cos (phi - M_PI / 3));
-  } else {			/* one real solution */
-    Real sqrt_D = sqrt (D);
-    Real u = cubic_root (sqrt_D - q);
-    Real v = -cubic_root (sqrt_D + q);
-
-    sol.push ( u + v);
-  }
-
-  /* resubstitute */
-  Real sub = 1.0 / 3 * A;
-
-  for (int i = sol.size (); i--;)
-    {
-      sol[i] -= sub;
-
-#ifdef PARANOID
-      assert (fabs (eval (sol[i]) ) < 1e-8);
-#endif
-    }
-  
-  return sol;
-}
-
-Real
-Polynomial::lc () const
-{
-  return coefs_.top ();
-}
-
-Real&
-Polynomial::lc () 
-{
-  return coefs_.top ();
-}
-
-int
-Polynomial::degree ()const
-{
-  return coefs_.size () -1;
-}
-/*
-   all roots of quadratic eqn.
- */
-Array<Real>
-Polynomial::solve_quadric ()const
-{
-  Array<Real> sol;
-  /* normal form: x^2 + px + q = 0 */
-  Real p = coefs_[1] / (2 * coefs_[2]);
-  Real q = coefs_[0] / coefs_[2];
-
-  Real D = p * p - q;
-
-  if (D>0) {
-    D = sqrt (D);
-
-    sol.push ( D - p);
-    sol.push ( -D - p);
-  }
-  return sol; 
-}
-
-/* solve linear equation */
-Array<Real>
-Polynomial::solve_linear ()const
-{
-  Array<Real> s;
-  if (coefs_[1])
-    s.push ( -coefs_[0] / coefs_[1]);
-  return s;
-}
-
-
-Array<Real>
-Polynomial::solve () const
-{
-  Polynomial * me = (Polynomial*) this;
-  me->clean ();
-  
-  switch (degree ())
-    {
-    case 1:
-      return solve_linear ();
-    case 2:
-      return solve_quadric ();
-    case 3:
-      return solve_cubic ();
-    }
-  Array<Real> s;
-  return s;
-}
-
-void
-Polynomial:: operator *= (Polynomial const &p2)
-{
-  *this = multiply (*this,p2);
-}  
-
-
diff --git a/flower/rational.cc b/flower/rational.cc
deleted file mode 100644
index 54ac55bdaf..0000000000
--- a/flower/rational.cc
+++ /dev/null
@@ -1,310 +0,0 @@
-/*
-  rational.cc -- implement Rational
-  
-  source file of the Flower Library
-
-  (c) 1997--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-*/
-#include <math.h>
-#include <stdlib.h>
-#include "rational.hh"
-#include "string.hh"
-#include "string-convert.hh"  
-#include "libc-extension.hh"
-
-Rational::operator double () const
-{
-  return (double)sign_ * num_ / den_;
-}
-
-#ifdef STREAM_SUPPORT
-ostream &
-operator << (ostream &o, Rational r)
-{
-  o <<  r.string ();
-  return o;
-}
-#endif
-
-
-Rational
-Rational::trunc_rat () const
-{
-  return Rational (num_ - (num_ % den_), den_);
-}
-
-Rational::Rational ()
-{
-  sign_ = 0;
-  num_ = den_ = 1;
-}
-
-Rational::Rational (int n, int d)
-{
-  sign_ = ::sign (n) * ::sign (d);
-  num_ = abs (n);
-  den_ = abs (d);
-  normalise ();
-}
-
-Rational::Rational (int n)
-{
-  sign_ = ::sign (n);
-  num_ = abs (n);
-  den_= 1;
-}
-
-static
-int gcd (int a, int b)
-{
-  int t;
-  while ((t = a % b))
-    {
-      a = b;
-      b = t;
-    }
-  return b;
-}
-
-#if 0
-static
-int lcm (int a, int b)
-{
-  return abs (a*b / gcd (a,b));
-}
-#endif
-
-void
-Rational::set_infinite (int s)
-{
-  sign_ = ::sign (s) * 2; 
-}
-
-Rational
-Rational::operator - () const
-{
-  Rational r (*this);
-  r.negate ();
-  return r;
-}
-
-Rational
-Rational::div_rat (Rational div) const
-{
-  Rational r (*this);
-  r /= div;
-  return r.trunc_rat ();
-}
-
-Rational
-Rational::mod_rat (Rational div) const
-{
-  Rational r (*this);
-  r = (r / div - r.div_rat (div)) * div;
-  return r;
-}
-
-void
-Rational::normalise ()
-{
-  if (!sign_)
-    {
-      den_ = 1;
-      num_ = 0;
-    }
-  else if (!den_)
-    {
-      sign_ = 2;
-      num_ = 1;
-    }
-  else if (!num_)
-    {
-      sign_ = 0;
-      den_ = 1;
-    }
-  else
-    {
-      int g = gcd (num_ , den_);
-
-      num_ /= g;
-      den_ /= g;
-    }
-}
-int
-Rational::sign () const
-{
-  return ::sign (sign_);
-}
-
-int
-Rational::compare (Rational const &r, Rational const &s)
-{
-  if (r.sign_ < s.sign_)
-    return -1;
-  else if (r.sign_ > s.sign_)
-    return 1;
-  else if (r.is_infinity ())
-    return 0;
-  else if (r.sign_ == 0)
-    return 0;
-  else
-    {
-      return r.sign_ * ::sign  (int (r.num_ * s.den_) - int (s.num_ * r.den_));
-    }
-}
-
-int
-compare (Rational const &r, Rational const &s)
-{
-  return Rational::compare (r, s );
-}
-
-Rational &
-Rational::operator %= (Rational r)
-{
-  *this = r.mod_rat (r);
-  return *this;
-}
-
-Rational &
-Rational::operator += (Rational r)
-{
-  if (is_infinity ())
-    ;
-  else if (r.is_infinity ())
-    {
-      *this = r;
-    }
-  else 
-    {
-      int n = sign_ * num_ *r.den_ + r.sign_ * den_ * r.num_;
-      int d = den_ * r.den_;
-      sign_ =  ::sign (n) * ::sign (d);
-      num_ = abs (n);
-      den_ = abs (d);
-      normalise ();
-    }
-  return *this;
-}
-    
-
-/*
-  copied from libg++ 2.8.0
- */ 
-Rational::Rational (double x)
-{
-  if (x != 0.0)
-    {
-      sign_ = ::sign (x);
-      x *= sign_;
-
-      int expt;
-      double mantissa = frexp (x, &expt);
-
-      const int FACT = 1 << 20;
-
-      /*
-	Thanks to Afie for this too simple  idea.
-
-	do not blindly substitute by libg++ code, since that uses
-	arbitrary-size integers.  The rationals would overflow too
-	easily.
-      */
-
-      num_ = (unsigned int) (mantissa * FACT);
-      den_ = (unsigned int) FACT;
-      normalise ();      
-      if (expt < 0)
-	den_ <<= -expt;
-      else
-	num_ <<= expt;
-      normalise ();
-    }
-  else
-    {
-      num_ = 0;
-      den_ = 1;
-      sign_ =0;
-      normalise ();
-    }
-}
-
-
-void
-Rational::invert ()
-{
-  int r (num_);
-  num_  = den_;
-  den_ = r;
-}
-
-Rational &
-Rational::operator *= (Rational r)
-{
-  sign_ *= ::sign (r.sign_);
-  if (r.is_infinity ())
-    {	
-      sign_ = sign () * 2;
-      goto exit_func;
-    }
-
-  num_ *= r.num_;
-  den_ *= r.den_;
-
-  normalise ();
- exit_func:
-  return *this;
-}
-  
-Rational &
-Rational::operator /= (Rational r)
-{
-  r.invert ();
-  return (*this *= r);
-}
-
-void
-Rational::negate ()
-{
-  sign_ *= -1;
-}
-
-Rational&
-Rational::operator -= (Rational r)
-{
-  r.negate ();
-  return (*this += r);
-}
-
-String
-Rational::to_string () const
-{
-  if (is_infinity ())
-    {
-      String s (sign_ > 0 ? "" : "-" );
-      return String (s + "infinity");
-    }
-
-  String s = ::to_string (num ());
-  if (den () != 1 && num ())
-    s += "/" + ::to_string (den ());
-  return s;
-}
-
-int
-Rational::to_int () const
-{
-  return num () / den ();
-}
-
-int
-sign (Rational r)
-{
-  return r.sign ();
-}
-
-bool
-Rational::is_infinity () const
-{
-  return sign_ == 2 || sign_ == -2;
-}
diff --git a/flower/real.cc b/flower/real.cc
deleted file mode 100644
index a043b98f4f..0000000000
--- a/flower/real.cc
+++ /dev/null
@@ -1,4 +0,0 @@
-#include <math.h>
-#include "real.hh"
-
-const Real infinity_f = HUGE_VAL;
diff --git a/flower/rtti.cc b/flower/rtti.cc
deleted file mode 100644
index fc278636a1..0000000000
--- a/flower/rtti.cc
+++ /dev/null
@@ -1,13 +0,0 @@
-#include <typeinfo>
-#include <ctype.h>
-#include "virtual-methods.hh"
-
-
-const char *
-demangle_classname (std::type_info const &t)
-{
-  char const *s = t.name ();
-  while (isdigit (*s))
-    s++;
-  return s;
-}
diff --git a/flower/string-convert.cc b/flower/string-convert.cc
deleted file mode 100644
index 74b6c23277..0000000000
--- a/flower/string-convert.cc
+++ /dev/null
@@ -1,351 +0,0 @@
-/*
-  PROJECT: FlowerSoft C++ library
-  FILE   : string-convert.cc
-
---*/
-
-#include <string.h>
-#include <stdio.h>
-#include <assert.h>
-#include <limits.h>
-#include "libc-extension.hh"
-#include "string.hh"
-#include "string-convert.hh"
-#include "rational.hh"
-#include "array.hh"
-
-/**
-   A safe length for stringconversion buffers.
-
-   worst case would be %f printing HUGE (or 1/HUGE), which is approx
-   2e318, this number would have approx 318 zero's in its string.
-
-   Should enlarge buff dynamically.
-   
-   @see
-   man 3 snprintf
-   */
-static const int STRING_BUFFER_LEN=1024;
-
-String
-String_convert::bool_string (bool b)
-{
-  return String (b ? "true" : "false");
-}
-
-String
-String_convert::bin2hex (String bin_string)
-{
-  String str;
-  Byte const* byte = bin_string.to_bytes ();
-  for (int i = 0; i < bin_string.length (); i++) 
-    {
-      str += to_string ((char)nibble2hex_byte (*byte >> 4));
-      str += to_string ((char)nibble2hex_byte (*byte++));
-    }
-  return str;
-}
-
-int
-String_convert::bin2int (String bin_string)
-{
-  return bin2unsigned (bin_string);
-}
-
-unsigned
-String_convert::bin2unsigned (String bin_string)
-{
-  assert (bin_string.length () <= (int)sizeof (unsigned));
-
-  unsigned result_u = 0;
-  for (int i = 0; i < bin_string.length (); i++) 
-    {
-      result_u <<= 8;
-      result_u += (Byte)bin_string[ i ];
-    }
-  return result_u;
-}
-
-// breendet imp from String
-int
-String_convert::dec2int (String dec_string)
-{
-  if (!dec_string.length ())
-    return 0;
-
-  long l = 0;
-  int conv = sscanf (dec_string.to_str0 (), "%ld", &l);
-  assert (conv);
-
-  return (int)l;
-}
-
-String
-String_convert::i64_string (I64 i64, char const* fmt)
-{
-  char buffer[STRING_BUFFER_LEN];
-  snprintf (buffer, STRING_BUFFER_LEN,
- (fmt ? fmt : "%Ld"), i64);     // assume radix 10
-  return String (buffer);
-
-}
-// breendet imp from String
-double
-String_convert::dec2double (String dec_string)
-{
-  if (!dec_string.length ())
-    return 0;
-  double d = 0;
-  int conv = sscanf (dec_string.to_str0 (), "%lf", &d);
-  assert (conv);
-  return d;
-}
-
-int
-String_convert::hex2bin (String hex_string, String& bin_string_r)
-{
-  if (hex_string.length () % 2)
-    hex_string = "0" + hex_string;
-
-  bin_string_r = "";
-  Byte const* byte= hex_string.to_bytes ();
-  int i = 0;
-  while (i < hex_string.length ()) 
-    {
-      int high_i = hex2nibble (*byte++);
-      int low_i = hex2nibble (*byte++);
-      if (high_i < 0 || low_i < 0)
-	return 1; // illegal char
-      bin_string_r += to_string ((char) (high_i << 4 | low_i), 1 );
-      i += 2;
-    }
-  return 0;
-}
-
-String 
-String_convert::hex2bin (String hex_string)
-{
-  String str;
-  //  silly, asserts should alway be "on"!
-  //    assert (!hex2bin (hex_string, str) );
-  int error_i = hex2bin (hex_string, str);
-  assert (!error_i);
-  return str;
-}
-
-int 
-String_convert::hex2nibble (Byte byte)
-{
-  if (byte >= '0' && byte <= '9')
-    return byte - '0';
-  if (byte >= 'A' && byte <= 'F')
-    return byte - 'A' + 10;
-  if (byte >= 'a' && byte <= 'f')
-    return byte - 'a' + 10;
-  return -1;
-}
-
-// stupido.  Should use int_string ()
-String 
-String_convert::int2dec (int i, int length_i, char ch)
-{
-  char fill_char = ch;
-  if (fill_char)
-    fill_char = '0';
-
-  // ugh
-  String dec_string = to_string (i);
-  
-  // ugh
-  return to_string (fill_char, length_i - dec_string.length ()) + dec_string;
-}
-
-
-// stupido.  Should use int_string ()
-String 
-String_convert::unsigned2hex (unsigned u, int length_i, char fill_char)
-{
-  String str;
-  if (!u)
-    str = "0";
-
-#if 1 // both go...
-  while (u) 
-    {
-      str = to_string ((char) ((u % 16)["0123456789abcdef"] ) ) + str;
-      u /= 16;
-    }
-#else
-  str += int_string (u, "%x");	// hmm. %lx vs. %x -> portability?
-#endif
-
-  str = to_string (fill_char, length_i - str.length ()) + str;
-  while ((str.length () > length_i) && (str[ 0 ] == 'f' ) )
-    str = str.cut_string (2, INT_MAX);
-
-  return str;
-}
-
-String 
-String_convert::int2hex (int i, int length_i, char fill_char)
-{
-  return unsigned2hex ((unsigned)i, length_i, fill_char);
-}
-
-Byte
-String_convert::nibble2hex_byte (Byte byte)
-{
-  if ((byte & 0x0f) <= 9 )
-    return (byte & 0x0f) + '0';
-  else
-    return (byte & 0x0f) - 10 + 'a';
-}
-/**
-  Convert an integer to a string
-
-  @param
-  #fmt# is a printf style format, default assumes "%d" as format. 
-  */
-String
-String_convert::int_string (int i, char const* fmt)
-{
-  char buffer[STRING_BUFFER_LEN];
-  snprintf (buffer, STRING_BUFFER_LEN,
- (fmt ? fmt : "%d"), i);     // assume radix 10
-  return String (buffer);
-}
-
-String
-String_convert::form_string (char const* format, ...)
-{
-  va_list args;
-  va_start (args, format);
-  char buffer[STRING_BUFFER_LEN];
-  vsnprintf (buffer, STRING_BUFFER_LEN, format, args);
-  va_end (args);
-  return String (buffer);
-}
-
-String 
-String_convert::vform_string (char const* format, va_list args)
-{
-  char buffer[STRING_BUFFER_LEN];
-  vsnprintf (buffer, STRING_BUFFER_LEN, format, args);
-  return String (buffer);
-}
-
-/**
-  Convert a double to a string.
-
-  @param #fmt# is a printf style format, default assumes "%lf" as format
- */
-String
-String_convert::double_string (double f, char const* fmt)
-{
-  char buf[STRING_BUFFER_LEN]; 
-
-  snprintf (buf, STRING_BUFFER_LEN, fmt ? fmt : "%f", f);
-  return String (buf);
-}
-
-/**
-Make a string from a single character.
-
-  @param
-  #n# is a repetition count, default value is 1
- */
-String
-String_convert::char_string (char c, int n)
-{
-  n = n >= 0 ? n : 0;
-  char* ch = new char[ n ];
-  memset (ch, c, n);
-  String s ((Byte*)ch, n);
-  delete[] ch;
-  return s;
-}
-
-String
-String_convert::rational_string (Rational r)
-{
- return r.to_string ();
-}
-
-String
-String_convert::pointer_string (void const *l)
-{
-  char buffer[STRING_BUFFER_LEN];
-  snprintf (buffer, STRING_BUFFER_LEN, "%p", l);     // assume radix 10
-  return String (buffer);
-}
-
-/**
-  Convert a double to a string.
-
-  @param
-  #n# is the number of nonzero digits
- */
-String
-String_convert::precision_string (double x, int n)
-{
-  String format = "%." + to_string (0 >? n - 1) + "e";
-  String str = double_string (abs (x), format.to_str0 ());
-
-  int exp = str.right_string (3).to_int ();
-  str = str.left_string (str.length () - 4);
-
-  while (str[str.length () - 1] == '0')
-    str = str.left_string (str.length () - 1);
-  if (str[str.length () - 1] == '.')
-    str = str.left_string (str.length () - 1);
-
-  if (exp == 0)
-    return (sign (x) > 0 ? str : "-" + str);
-
-  str = str.left_string (1) + str.cut_string (2, INT_MAX);
-  int dot = 1 + exp;
-  if (dot <= 0)
-    str = "0." + to_string ('0', -dot) + str;
-  else if (dot >= str.length ())
-    str += to_string ('0', dot - str.length ());
-  else if (( dot > 0) && (dot < str.length ()))
-    str = str.left_string (dot) + "." + str.cut_string (dot, INT_MAX);
-  else
-    assert (0);
-
-  return (sign (x) > 0 ? str : "-" + str);
-}
-
-Array<String>
-String_convert::split (String str, char c)
-{
-  Array<String> a;
-  int i = str.index (c);
-  while (i >=0)
-    {
-      String s = str.left_string (i);
-      a.push (s);
-      while (str[++i] == c)
-	;
-      str = str.cut_string (i, INT_MAX);
-      i = str.index (c);
-    }
-  if (str.length ())
-    a.push (str);
-  return a;
-}
-
-
-String
-String_convert::long_string (long l)
-{
-  char s[STRING_BUFFER_LEN];
-  sprintf (s,"%ld", l);
-  return s;
-}
-
-String
-String_convert::pad_to (String s, int n)
-{
-  return s + to_string (' ' , (n - s.length ()) >? 0);
-}
diff --git a/flower/string.cc b/flower/string.cc
deleted file mode 100644
index b08bf68d3b..0000000000
--- a/flower/string.cc
+++ /dev/null
@@ -1,410 +0,0 @@
-/*
-
- string.cc - implement String
- 
-  (c) 1997--2004 Han-Wen Nienhuys & Jan Nieuwenhuizen
-
- */
-
-#ifndef _GNU_SOURCE // we want memmem
-#define _GNU_SOURCE
-#endif
-
-#include <stdlib.h>
-#include <stdio.h>
-#include <assert.h>
-#include <string.h>
-#include <stdarg.h>
-
-#include <iostream>
-
-#include "string.hh"
-#include "libc-extension.hh"
-#include "string-convert.hh"
-
-#ifdef STRING_DEBUG
-void* mymemmove (void* dest, void const* src, size_t n);
-#define memmove mymemmove
-#endif
-
-// return array, alloced with new.
-Byte*
-String::get_copy_byte () const
-{
-  Byte const* src = strh_.to_bytes ();
-  Byte* dest = new Byte[strh_.length () + 1];
-  memcpy (dest, src, strh_.length () + 1);
-  return dest;    
-}
-
-char*
-String::get_copy_str0 () const
-{
-  return (char*)get_copy_byte ();
-}
-
-
-/*
-  copying, constructing.
- */
-String&
-String::operator = (String const&source)
-{
-  strh_ = source.strh_;
-  return *this;
-}
-
-
-String::String (Byte const* byte, int len_i)
-{   
-  strh_.set (byte, len_i);
-}
-
-/**
-  @see
-  String_convert::
- */
-String
-to_string (char c, int n)
-{
-  return String_convert::char_string (c, n);
-}
-
-String
-to_string (double f, char const* format)
-{
-  return String_convert::double_string (f, format);
-}
-
-String
-to_string (int i, char const * format)
-{
-  return String_convert::int_string (i, format);
-}
-
-String
-to_string (bool b)
-{
-  return String_convert::bool_string (b);
-}
-String
-to_string (long b)
-{
-  return String_convert::long_string (b);
-}
-
-String 
-to_string (char const* format, ... )
-{
-  va_list args;
-  va_start (args, format);
-  String str = String_convert::vform_string (format, args);
-  va_end (args);
-  return str;
-}
-
-
-void
-String::append (String s)
-{
-  strh_.append (s.to_bytes (), s.length ());
-}
-void
-String::operator += (String s)
-{
-  append (s);
-}
-
-void
-String::prepend (String s)
-{
-  s += *this;
-  *this = s;
-}
-
-int
-String::length () const
-{
-  return strh_.length ();
-}
-
-Byte const*
-String::to_bytes () const
-{
-  return strh_.to_bytes ();
-}
-
-char const*
-String::to_str0 () const
-{
-  return strh_.to_str0 ();
-}
-
-Byte*
-String::get_bytes ()
-{
-  return strh_.get_bytes ();
-}
-
-char*
-String::get_str0 ()
-{
-  return strh_.get_str0 ();
-}
-
-bool 
-String::is_empty () const
-{
-  return !length ();
-}
-/**
-  Do a signed comparison,  analogous to memcmp;
- */
-int
-String::compare (String const& s1, String const& s2) 
-{
-  Byte const* p1 = s1.to_bytes ();
-  Byte const* p2 = s2.to_bytes ();
-  if (p1 == p2)
-    return 0;
-
-  /*
-    don't forget the terminating '\0'
-   */
-  int f = (s1.length () <? s2.length ());
-  int cmp_length = 1+ f;
-  int i = memcmp (p1, p2, cmp_length);
-  return i;
-}
-
-
-int
-String::index_last (char const c) const
-{
-  if (!length ()) 
-    return -1;
-
-  char const* me = strh_.to_str0 ();
-  char const* p = (char const*)memrchr ((Byte*)me, length (), c);
-  if (p)
-    return p - me;
-  return -1;
-}
-
-int
-String::index_last (char const* string) const // UGK!
-{
-  assert (false);		// broken
-  int len = strlen (string); // ugrh
-  if (!length () || !len) 
-    return -1;
-  
-  int next_i = index (string);
-  if (next_i == -1)
-    return -1;
-  
-  int index_i = 0;
-  while (next_i >= 0) 
-    {
-      index_i += next_i;
-      next_i = right_string (length () - index_i - len).index (string );
-    }
-  return index_i;
-}
-
-/** find  a character.
-
-  @return
-  the index of the leftmost character #c# (0 <= return < length ()),
-  or   -1 if not found. 
-
-  ? should return length ()?, as in string.left_string (index (delimiter))
-*/
-int
-String::index (char c) const
-{
-  char const* me = strh_.to_str0 ();
-  char const* p = (char const *) memchr (me,c,  length ());
-  if (p)
-    return p - me;
-  return -1;
-}
-
-/**
-  find a substring.
-
-  @return
-1  index of leftmost occurrence of #searchfor#
- */
-int
-String::index (String searchfor) const
-{
-  char const* me = strh_.to_str0 ();
-
-  char const* p = (char const *) 
-    memmem (me, length (), searchfor.to_str0 (), searchfor.length ());
-  
-  if (p)
-    return p - me;
-  else
-    return -1;
-}
-
-/** find chars of a set.
-
-  @return
-
-  the index of the leftmost occurance of an element of #set#.  -1 if
-  nothing is found.
-
-
-*/
-int
-String::index_any (String set) const
-{
-  int n = length ();
-  if (!n)
-    return -1;
-
-  void const * me = (void const *) strh_.to_str0 ();
-  for (int i=0; i  < set.length (); i++) 
-    {
-      char * found= (char*) memchr (me, set[i], n );
-      if (found) 
-	{
-	  return found - (char const*)me;
-	}
-    }
-  return -1;
-}
-
-String
-String::left_string (int n) const
-{
-  if (n >= length ())
-    return *this;
-
-  String retval;    	
-  if (n < 1)
-    return retval;
-  
-  retval = *this;
-  retval.strh_.trunc (n);
-  return retval;
-}
-
-String
-String::right_string (int n) const
-{
-  if (n > length ())
-    return *this;
-  
-  if (n < 1)
-    return "";
-  
-  return String (strh_.to_bytes () + length () - n, n); 
-}
-
-
-String
-String::nomid_string (int index_i, int n) const
-{
-  if (index_i < 0) 
-    {
-      n += index_i;
-      index_i = 0;
-    }
-  if (n <= 0)
-    return *this;
-  
-  return
-    left_string (index_i)   +
-    right_string (length () - index_i - n) ;
-}
-
-String
-String::cut_string (int index_i, int n) const
-{
-  if (index_i <0) 
-    {
-      n += index_i;
-      index_i=0;
-    }
-  
-  if (!length () || (index_i < 0) || (index_i >= length () ) || (n < 1 ) )
-    return String ();
-
-  if ((n > length ()) || (index_i + n > length () ) )
-    n = length () - index_i;
-
-  return String (to_bytes () + index_i, n);
-}
-
-String
-String::upper_string () const
-{
-  String str = *this;
-  str.to_upper ();
-  return str;
-}
-void
-String::to_upper ()
-{
-  char *s = (char*)strh_.get_bytes ();
-  strnupr (s ,length ());
-}
-
-void
-String::to_lower ()
-{
-  char* s = strh_.get_str0 ();
-  strnlwr (s,length ());    
-}
-
-
-String 
-String::lower_string () const
-{
-  String str = *this;
-  str.to_lower ();
-  return str;
-}
-String 
-String::reversed_string () const
-{
-  String str = *this;
-  strrev (str.get_bytes (), str.length ());
-  return str;    
-}
-
-int
-String::to_int () const
-{
-  return String_convert::dec2int (*this);
-}
-
-double
-String::to_double () const
-{
-  return String_convert::dec2double (*this);
-}
-
-#ifdef STREAM_SUPPORT
-ostream &
-operator << (ostream& os, String d)
-{
-  d.print_on (os);
-  return os;
-}
-
-
-void
-String::print_on (ostream& os) const
-{
-  if (!strh_.is_binary_bo ())
-    os << to_str0 ();
-  else
-    for (int i = 0; i < length (); i++)
-      os << (Byte) (*this)[ i ];
-}
-#endif
diff --git a/flower/stringutil.cc b/flower/stringutil.cc
deleted file mode 100644
index 037eae03a3..0000000000
--- a/flower/stringutil.cc
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
-  stringutil.cc -- generate non-inline members. 
-
-  This should be in a separate file, because one can include the .icc
-  only once.
-
-  source file of the LilyPond music typesetter
-
-  (c) 1997--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl> */
-
-#ifdef STRING_DEBUG 
-#define memmove mymemmove
-#endif
-
-#ifdef STRING_UTILS_INLINED
-#undef STRING_UTILS_INLINED
-#endif
-
-#ifdef INLINE
-#undef INLINE
-#endif
-
-#define INLINE
-
-#include "string-handle.hh"
-#include "string-data.hh"
-#include "string.hh"
-#include "string-data.icc"
-#include "string-handle.icc"
-#include "string.icc"
-
-#ifdef STRING_DEBUG
-#include <sys/types.h>
-#include <memory.h>
-void* 
-mymemmove (void* dest, void const* src, size_t n)
-{
-	return memcpy (dest, src, n); 
-}
-#endif
diff --git a/flower/warn.cc b/flower/warn.cc
deleted file mode 100644
index 117e8fdc6b..0000000000
--- a/flower/warn.cc
+++ /dev/null
@@ -1,47 +0,0 @@
-/*
-  warn.cc -- implement warnings
-
-  source file of the Flower Library
-
-  (c) 1997--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-*/
-
-#include <stdlib.h>
-#include <stdio.h>
-
-#include "warn.hh"
-
-
-void
-message (String s)
-{
-  fputs (s.to_str0 (), stderr);
-  fflush (stderr);
-}
-
-void
-warning (String s)
-{
-  message (_f ("warning: %s\n", s.to_str0 ()));
-}
-
-void
-non_fatal_error (String s)
-{
-  message (_f ("error: %s\n", s.to_str0 ()));
-}
-
-void
-error (String s)
-{
-  non_fatal_error (s);
-  exit (1);
-}
-
-void
-programming_error (String s)
-{
-  message (_f ("programming error: %s (Continuing; cross thumbs)\n",
-	       s.to_str0 ()));
-}
-
diff --git a/input/GNUmakefile b/input/GNUmakefile
deleted file mode 100644
index c10ea6e64e..0000000000
--- a/input/GNUmakefile
+++ /dev/null
@@ -1,14 +0,0 @@
-depth = ..
-
-SUBDIRS=test regression tutorial no-notation ascii-art template mutopia 
-
-examples= les-nereides puer-fragment
-
-LOCALSTEPMAKE_TEMPLATES=ly mutopia
-EXTRA_DIST_FILES=paddy.abc
-
-include $(depth)/make/stepmake.make 
-
-local-check: $(addsuffix .dvi, $(addprefix $(outdir)/, $(examples)))
-
-
diff --git a/input/ascii-art/GNUmakefile b/input/ascii-art/GNUmakefile
deleted file mode 100644
index 516974621f..0000000000
--- a/input/ascii-art/GNUmakefile
+++ /dev/null
@@ -1,5 +0,0 @@
-depth = ../..
-
-LOCALSTEPMAKE_TEMPLATES=ly mutopia
-include $(depth)/make/stepmake.make 
-
diff --git a/input/ascii-art/as-email.ly b/input/ascii-art/as-email.ly
deleted file mode 100644
index 8996897962..0000000000
--- a/input/ascii-art/as-email.ly
+++ /dev/null
@@ -1,28 +0,0 @@
-#(ly:set-option 'old-relative)
-\version "2.1.21"
-% ASCII Art output
-%
-% Process as:
-%
-%     lilypond -fas foo.ly
-%     as2text foo.as
-
-\include "paper-as5.ly"
-
-\score {
-  \notes\relative c'' {
-    \time 3/8
-    a8 a a 
-    \time 5/8
-    a a a a a
-    %a16 a  a a a a a a a a 
-  }
-  \paper {
-    raggedright = ##t
-    \translator {
-      \StaffContext
-      StaffSymbol \override #'print-function = #(lambda (x) '())
-    }
-  }
-}
-
diff --git a/input/ascii-art/as1.ly b/input/ascii-art/as1.ly
deleted file mode 100644
index 85fc04cf6d..0000000000
--- a/input/ascii-art/as1.ly
+++ /dev/null
@@ -1,14 +0,0 @@
-#(ly:set-option 'old-relative)
-
-\version "2.1.7"
-
-\score { 
-  \context Voice \notes\relative c {
-    \time 4/4
-	g''1 a2 b4. c8
-	\repeat "volta" 2 { a4 b c d } \alternative { { c c c c } { d2 d4 [d8 d] } }
-	
-  }
-  \paper { }  
-  \midi { }
-}
diff --git a/input/ascii-art/as2.ly b/input/ascii-art/as2.ly
deleted file mode 100644
index bce52f6846..0000000000
--- a/input/ascii-art/as2.ly
+++ /dev/null
@@ -1,23 +0,0 @@
-#(ly:set-option 'old-relative)
-\version "2.1.11"
-
-% test for ascii-art output
-
-\include "paper-as9.ly"
-
-\score {
-	\notes\relative c'{
-		\time 4/4
-		c8( e g )b
-		d( d d )d
-		\bar "|."
-	}
-	\paper {
-		linewidth=65.0\char
-    		\translator { \StaffContext barSize = #9 }
-		%\translator { \VoiceContext beamHeight = #0 }
-		\translator { \VoiceContext beamHeight = ##f }
-	}
-
-}
-
diff --git a/input/ascii-art/asciiscript5.ly b/input/ascii-art/asciiscript5.ly
deleted file mode 100644
index 4055f90a9b..0000000000
--- a/input/ascii-art/asciiscript5.ly
+++ /dev/null
@@ -1,26 +0,0 @@
-#(ly:set-option 'old-relative)
-\version "2.1.11"
-% ASCII Art output
-%
-% Process as:
-%
-%     lilypond -fas foo.ly
-%     as2text foo.as
-
-\include "paper-as5.ly"
-
-\score {
-  \notes\relative c'' {
-    \time 4/4
-    g1 a b c 
-    g2 a b c
-    g4 a b c
-  }
-  \paper {
-    \translator {
-      \StaffContext
-      BarLine \override #'bar-size = #5
-    }
-  }
-}
-
diff --git a/input/ascii-art/asciiscript9.ly b/input/ascii-art/asciiscript9.ly
deleted file mode 100644
index c5b211e1c4..0000000000
--- a/input/ascii-art/asciiscript9.ly
+++ /dev/null
@@ -1,20 +0,0 @@
-#(ly:set-option 'old-relative)
-\version "2.1.11"
-% ASCII Art output
-%
-% Process as:
-%
-%     lilypond -fas foo.ly
-%     as2text foo.as
-
-\include "paper-as9.ly"
-
-\score {
-  \notes\relative c'' {
-    \time 4/4
-    g1 a b c 
-    g2 a b c
-    g4 a b c
-  }
-}
-
diff --git a/input/ascii-art/r-as.ly b/input/ascii-art/r-as.ly
deleted file mode 100644
index 74c603c693..0000000000
--- a/input/ascii-art/r-as.ly
+++ /dev/null
@@ -1,29 +0,0 @@
-#(ly:set-option 'old-relative)
-\version "2.1.21"
-% ASCII Art output
-%
-% Process as:
-%
-%     lilypond -fas foo.ly
-%     as2text foo.as
-
-\include "paper-as5.ly"
-
-\score{
-  <<
-      \context Staff \notes\relative c'{ 
-        c d e f
-        \repeat "volta" 2 { g a b c }
-        \alternative { { c b a g } { f e d c } }
-      }
-      \context Lyrics \lyrics {
-        De eer- ste << { maat } { moet } >>
-        \repeat fold 2 { }
-        \alternative {
-          { en dan twee keer } 
-          { een koe- plet _ } 
-        }
-        en dan nog dit er ach- ter aan
-      }
-  >>
-}
diff --git a/input/ascii-art/standchen-as5.ly b/input/ascii-art/standchen-as5.ly
deleted file mode 100644
index 5f5739c14f..0000000000
--- a/input/ascii-art/standchen-as5.ly
+++ /dev/null
@@ -1,43 +0,0 @@
-#(ly:set-option 'old-relative)
-\version "2.1.11"
-% ASCII Art output
-%
-% Process as:
-%
-%     lilypond -fas foo.ly
-%     as2text foo.as
-
-
-\include "paper-as5.ly"
-
-\score {
-  \context StaffGroup <<
-    \context Staff=upper \notes\relative c{
-      \key f \major
-      \time 3/4
-      r8^"Moderato" %\pp 
-      <<g'-. c-.>> <<c-. es-.>> <<g-. c-.>> <<c-. es-.>> <<g-. c-.>> |
-      r8 <<as-. c-.>> <<c-. es-.>>
-    }
-    \context Staff=lower \notes\relative c{
-      \key f \major
-      \time 3/4
-      \clef "bass"
-      <<c,2 c'>> r4 
-      <<as2 as'>> r4
-    }
-  >>
-  \paper {
-    indent=4.0\char
-    linewidth=78.0\char
-    \translator { \StaffContext Bar \override #'bar-size = #5 }
-    \translator { 
-      \VoiceContext 
-      % horizontal beams
-      Beam \override #'height = #0
-      autoBeamSettings \override #'(begin * * * *) = #(ly:make-moment 0 1)
-      TextScript \set #'no-spacing-rods = ##t
-    }
-  }
-}
-
diff --git a/input/ascii-art/standchen-as9.ly b/input/ascii-art/standchen-as9.ly
deleted file mode 100644
index 18a7044f2b..0000000000
--- a/input/ascii-art/standchen-as9.ly
+++ /dev/null
@@ -1,43 +0,0 @@
-#(ly:set-option 'old-relative)
-\version "2.1.11"
-% ASCII Art output
-
-% Process as:
-%
-%     lilypond -fas foo.ly
-%     as2text foo.as
-
-% FIXME: broken system-start-delimiter.cc:staff_brace lookup
-
-\include "paper-as9.ly"
-
-\score {
-  \context GrandStaff <<
-    \context Staff=upper \notes\relative c{
-      \key f \major
-      \time 3/4
-      r8^"Moderato" %\pp 
-      <<g'-. c-.>> <<c-. es-.>> <<g-. c-.>> <<c-. es-.>> <<g-. c-.>> |
-      r8 <<as-. c-.>> <<c-. es-.>>
-    }
-    \context Staff=lower \notes\relative c{
-      \key f \major
-      \time 3/4
-      \clef "bass"
-      <<c,2 c'>> r4 
-      <<as2 as'>> r4
-    }
-  >>
-  \paper {
-    indent=4.0\char
-    linewidth=78.0\char
-    \translator { 
-      \VoiceContext 
-      % horizontal beams
-      Beam \override #'height = #0
-      autoBeamSettings \override #'(begin * * * *) = #(ly:make-moment 0 1)
-      TextScript \set #'no-spacing-rods = ##t
-    }
-  }
-}
-
diff --git a/input/ascii-art/twinkle-as5.ly b/input/ascii-art/twinkle-as5.ly
deleted file mode 100644
index 2571f5cf83..0000000000
--- a/input/ascii-art/twinkle-as5.ly
+++ /dev/null
@@ -1,77 +0,0 @@
-#(ly:set-option 'old-relative)
-\version "2.1.21"
-% ASCII Art output
-%
-% Process as:
-%
-%     lilypond -fas foo.ly
-%     as2text foo.as
-
-
-\header{
-filename = 	"twinkle.ly"
-title = 		"Twinkle Twinkle Little Star"
-composer = 	"Traditional"
-enteredby = 	"hwn and jcn"
-copyright = 	"public domain"
-}
-
-
-
-\include "paper-as5.ly"
-
-melody =  \notes \relative c'' {
-	\time 2/4
-	c4 c | g' g | a a | g g |
-%{
-	f f | e e | d d8.( e16 | )c2 |
-
-	g'4 g | f f | e e | d d |
-	g g | f f | e( e8. f16 | e4 )d |
-
-	c c | g' g | a a | g g |
-	f f | e e | d d8.( e16 | )c2 |
-%}
-}
-
-accompany =  \notes \relative c {
-	\clef "bass"
-	\time 2/4
-	c4 c' | e c | f c | e c | 
-%{
-	d b | c a | f g | c,2 | 
-
-	e'4 g, | d' g, | c g | b g | 
-	e' g, | d' g, | c c8.( d16 | c4 )b |
-
-	c, c' | e c | f c | e c | 
-	d b | c a | f g | c,2 
-%}
-}
-
-
-text =  \lyrics{
-	Twin -- kle, twin -- kle, lit -- tle star, " "
-%{
-	How I won -- der what you  " " are.
-	Up a -- bove the world so high, " "
-	Like a dia -- mond in the  " " sky. " "
-	Twin -- kle, twin -- kle, lit -- tle star, " "
-	How I won -- der what you  " " are!
-%}
-}
-
-\score{
-	\context GrandStaff <<
-		\addlyrics
-			\context Staff=upper \melody
-		\context Lyrics=between \text
-		\context Staff=lower \accompany 
-	>>
-	\paper{
-		\translator { \GrandStaffContext \accepts "Lyrics" }
-		indent=4.0\char
-		linewidth=78.0\char
-	}
-}
-
diff --git a/input/bugs/rhytmicstaff-tie.ly b/input/bugs/rhytmicstaff-tie.ly
deleted file mode 100644
index 197e3ac264..0000000000
--- a/input/bugs/rhytmicstaff-tie.ly
+++ /dev/null
@@ -1,14 +0,0 @@
-% from José Luis Cruz <joseluis AT jazzartistas.com>
-\version "2.1.0"
-
-\header { 
-  texidoc="@cindex A tie in RhythmicStaff fails to compile."
-}
-
-\score { 
-  \context RhythmicStaff {
-    \notes { 
-        c1 ~ c1
-    }
-  }
-}
diff --git a/input/example-1.ly b/input/example-1.ly
deleted file mode 100644
index 82095e1b9c..0000000000
--- a/input/example-1.ly
+++ /dev/null
@@ -1,22 +0,0 @@
-\version "2.1.7"
-
-% A simple scale in LilyPond
-%
-% Type:
-%
-%     lilypond example-1
-%     xdvi example-1     # or your dvi viewer here
-%
-
-%%
-%% For learning LilyPond, please read the tutorial, included in the
-%% user-manual.
-%% 
-
-\score { 
-  \context Voice \notes\relative c {
-    c' d e f g a b c
-  }
-  \paper {  }  
-  \midi { }
-}
diff --git a/input/example-2.ly b/input/example-2.ly
deleted file mode 100644
index b4bcb5c9ac..0000000000
--- a/input/example-2.ly
+++ /dev/null
@@ -1,21 +0,0 @@
-\version "2.1.7"
-% Some beamed and slurred notes of different taste in LilyPond
-%
-% Type:
-%
-%     lilypond example-2
-%     xdvi example-2     # or your dvi viewer here
-%
-
-%%
-%% For learning LilyPond, please read the tutorial, included in the
-%% user-manual.
-%% 
-
-\score { 
-  \context Voice \notes\relative c {
-    a''2 ~ a4( e8[ )e] a,16[ a a a]
-  }
-  \paper {  }  
-  \midi { }
-}
diff --git a/input/example-3.ly b/input/example-3.ly
deleted file mode 100644
index 8714771e22..0000000000
--- a/input/example-3.ly
+++ /dev/null
@@ -1,32 +0,0 @@
-#(ly:set-option 'old-relative)
-\version "2.1.7"
-
-one =  \notes\relative c{
-	c'' d e f
-}
-
-two =  \notes\relative c{
-	\clef "bass"
-	c'2 g2
-}
-
-\score{
-	<<
-		\one
-		\two
-	>>
-	\paper{}
-	\midi{}
-}
-
-% A full example with two staves
-%
-% Type:
-%
-%     lilypond example-3
-%     xdvi example-3     # or your dvi viewer here
-
-%%
-%% For learning LilyPond, please read the tutorial, included in the
-%% user-manual.
-%% 
diff --git a/input/les-nereides.ly b/input/les-nereides.ly
deleted file mode 100644
index a0f2465e0c..0000000000
--- a/input/les-nereides.ly
+++ /dev/null
@@ -1,375 +0,0 @@
-#(ly:set-option 'old-relative)
-\version "2.1.7"
-
-\header {
-    composer =   "ARTHUR GRAY"
-    title =      "LES NÉRÉIDES"
-    subtitle =   "THE NEREIDS"
-    enteredby =  "JCN"
-    piece =      "Allegretto scherzando"
-    copyright =  "public domain"
-}
-
-%{
-
-Nastiest piece of competition at
-http://www.orphee.com/comparison/study.html, see
-http://www.orphee.com/comparison/gray.pdf
-
-
-lines that contain tweaks (17 currently, not counting reverts) are
-marked with %tweak
-
-possibly more impressive to render without tweaks?
-
-  grep -v tweak input/les-nereides.ly >> lnnt.ly
-  lilypond lnnt.ly
-
-%}
-
-#(ly:set-point-and-click 'line-column)
-#(define (make-text-checker text)
-  (lambda (elt) (equal? text (ly:get-grob-property elt 'text))))
-
-
-treble = \new Voice \notes\relative c''{
-    \key a \major
-    r2
-    | %2
-    \stemUp
-    r4 <cis eis a cis>\arpeggio r2
-    | %3
-    r4 <cis fis a cis>\arpeggio r8.
-
-    \change Staff=bass
-
-    \once\property Voice.TextScript \set #'extra-offset = #'(-3 . -4) %tweak
-	    
-    cis,16^2(^\markup {\small \italic "m.d." }
-    <fis fis,>8 <e! e,!>
-    | %4
-    <dis, a' dis>4)
-    
-    \change Staff=treble
-    
-    \slurUp
-    \property PianoStaff.connectArpeggios = ##t
-
-    #(set-octavation 1)
-
-    \once\property Voice.TextScript \set #'extra-offset = #'(-3 . -2) %tweak
-	    
-    \tieUp
-    cis''''4^\markup { \small \italic "m.g." }\arpeggio~
-    \grace {
-	\property Voice.Stem \override #'stroke-style = #"grace"
-  
-         cis8
-	 
-         %\stemBoth Hmm
-	
-	 \property Voice.Stem \set #'direction = #0
-	 
-          a16[-5( fis dis]
-	 #(set-octavation 0)
-	
- 	 cis32[ a-1 fis-4 dis]   cis[ a  fis)-2]
-	 % the small grace in lower staff comes after us
-	 s32
-    
-	\property Voice.Stem \revert #'stroke-style
-    }
-
-
-    \stemUp
-    cis'4( bis)
-
-    | %5
-    r8 <a' a,>8(\mf <gis gis,> <fis fis,>
-    
-    % \fingerUp
-    \property Voice.Fingering \set #'direction = #1
-    
-    % Manual fix for collision with slur
-    \property Voice.Fingering \set #'extra-offset = #'(0 . 1) %tweak
-    <gis gis,> <fis fis,> e)-1-4-5 r
-
-    | %6
-    r <a a,>8(\mf <gis gis,> <fis fis,>
-    <gis gis,> <fis fis,>  e) r
-    
-    | %7
-    \bar "||"
-}
-
-trebleTwo =  \new Voice \notes\relative c''{
-    \stemDown
-    \slurDown
-    % \fingerDown
-    \property Voice.Fingering \set #'direction = #-1
-    \property Voice.Fingering \set #'extra-offset = #'(0 . 1.2)
-    s2
-    | %1
-    s1*2
-    | %4
-    s4
-    <cis' a fis dis>4\arpeggio
-    <e, gis, e d!>2
-    | %5
-    s8 cis4. d4
-    %%<cis e,>8[( <b-3 d,-1>
-    <cis e,>8[( <b d,>-3-1
-    | %6
-    %%<a-2 cis,-1>)] cis4. d4 
-    <a cis,>)]-2-1 cis4. d4 
-    <cis e,>8[( <b d,>
-    | %7
-    <a cis,>)]
-}
-
-bass =  \new Voice \notes\relative c{
-    \partial 2
-    \key a \major
-    
-    % Allow ugly (highly blown-up) slurs
-    \property Voice.Slur \override #'beautiful = #5.0 %tweak
-    \property Voice.Slur \override #'attachment-offset = #'((0 . 3) . (0 . -4))  %tweak
-    \slurDown
-    
-    \dynamicUp
-
-    r8. e,16(\f_2 <a a,>8[ <b b,>]
-    | %2
-    <cis cis,>4
-    \change Staff=treble
-    \stemDown
-    \property Voice.Slur \override #'attachment = #'(stem . stem) %tweak
-    <a'' eis cis>4)\arpeggio
-    
-    \property Voice.Slur \revert #'attachment %tweak
-    \change Staff=bass
-    \stemBoth
-    
-    \property Voice.Slur \revert #'y-free %tweak
-    \property Voice.Slur \override #'y-free = #0.1 %tweak
-    \property Voice.Slur \revert #'attachment-offset %tweak
-    \property Voice.Slur \override #'attachment-offset = #'((0 . 3) . (0 . 8)) %tweak
-    r8. cis,,16( <fis fis,>8 <gis gis,>
-    
-    | %3
-    \property Voice.Stem \set #'length = #5 %tweak
-    <a a,>4
-    \change Staff=treble
-			    
-    \property Voice.Stem \revert #'length %tweak
-    \property Voice.Stem \revert #'direction
-    \property Voice.Stem \override #'direction = #-1
-    <a' fis cis>)\arpeggio
-    \change Staff=bass
-    \property Voice.Stem \revert #'direction
-    r2
-    
-    | %4
-    \property Voice.Slur \revert #'beautiful %tweak
-    \property Voice.Slur \revert #'attachment-offset %tweak
-    \stemDown
-    <b,, b,>4
-    \clef treble
-    \stemBoth
-    <<
-        %urg: staff-change: ! on dis
-        <cis'' a fis dis!>\arpeggio
-    >>
-    
-    \grace {
-	\property Voice.Stem \override #'stroke-style = #"grace"
-  
-        s8
-        s16 s s
- 	s32 s s
-	s s s
-	\clef bass
-	<e,,, e,>32(
-    
-	\property Voice.Stem \revert #'stroke-style
-    }
-    <gis' e>2)
-    
-    | %5
-    \slurUp
-    
-    % \fingerDown
-    \property Voice.Fingering \set #'direction = #-1
-    
-    %%a,8 e'[-5(<a-2 cis-3>])
-    a,8 e'[-5(<a cis>])-2-3
-    %%r b,-5 <e-3 gis-5 d'>4
-    r b,-5 <e gis d'>4-3-5
-    \slurBoth
-    \once \property Voice.Fingering \set #'extra-offset = #'(0 . -1) %tweak
-    e,8[-5(
-    
-    | %6
-    \once \property Voice.Fingering \set #'extra-offset = #'(0 . -1) %tweak
-    a)-2]
-    \slurUp
-    e'[(<a cis>)] r b, <e gis d'>4
-    \slurBoth
-    e,8[(
-    
-    | %7
-    a)]
-}
-
-bassTwo =  \new Voice \notes\relative c{
-    \skip 2
-    \skip 1*2
-    \skip 2
-
-    \stemUp
-    \slurUp
-
-    cis'4( bis)
-}
-
-middleDynamics = \notes{
-    \property Dynamics.TextScript \set #'padding = #-1 %tweak
-    s2
-    s1*2
-    | %4
-    s2
-    \grace {
-  \property Voice.Stem \override #'stroke-style = #"grace"
-  
-    	   s8
-    	   s16 s s
-    	   s32 s
-           \once\property Dynamics.Hairpin \set #'extra-offset = #'(0 . 2) %tweak
-	   s\> s
-     	   s32 s s s\!
-    
-  \property Voice.Stem \revert #'stroke-style }
-
-    s32 s-"rall." s s s8 s4
-    | %5
-    s2-"a tempo" s8
-    \once\property Dynamics.Hairpin \set #'extra-offset = #'(1 . 0) %tweak
-    s \> s s
-    | %6 
-    s8\!
-    s2 s8 s\> s
-    | %7
-    s8\!
-}
-
-lowerDynamics = \notes{
-    s2
-    | %2
-    s2\sustainDown s8. s16\sustainUp s4
-    | %3
-    s2\sustainDown s8. s16\sustainUp s4
-    | %4
-    s4\sustainDown
-    \property Dynamics.pedalSustainStrings = #'("Ped." "*Ped." "*")
-    
-    % grace destroys pedal-line-spanner?
-    % let's do manual tweak:
-    \once\property Dynamics.SustainPedal \set #'extra-offset = #'(10 . 0) %tweak
-    s8\sustainUp
-    \once\property Dynamics.SustainPedal \set #'extra-offset = #'(16 . 0) %tweak
-    s8\sustainDown
-%{
-    s4
-    \grace {
-  \property Voice.Stem \override #'stroke-style = #"grace"
-  
-    	   s8
-    	   s16 s s
-    	   s32 s s s\sustainUp
-     	   s32 s s s\sustainDown
-    
-  \property Voice.Stem \revert #'stroke-style }
-
-%}
-    s2
-
-    | %5
-    % ugh, I don't think that 'mixed should show last edge, but rather:
-    %
-    %   Ped__________/\__________ *
-    %
-    % that's what gray wants, anyway.
-    
-    \property Dynamics.pedalSustainStyle = #'mixed
-    s8\sustainDown s s
-    s s\sustainUp\sustainDown s
-    s
-    \once \property Dynamics.pedalSustainStyle = #'text
-    s\sustainUp
-
-    | %6
-    \property Dynamics.pedalSustainStyle = #'mixed
-    s8\sustainDown s s
-    s s\sustainUp\sustainDown s
-    s
-    \once \property Dynamics.pedalSustainStyle = #'text
-    s\sustainUp
-    | %7
-}
-
-\score{
-    \context PianoStaff <<
-        \context Staff=treble <<
-	    \treble
-	    \trebleTwo
-        >>
-	\new Dynamics <<
-	    \middleDynamics
-	>>
-        \context Staff=bass <<
-	    \clef bass
-	    \bass
-	    \bassTwo
-        >>
-	\new Dynamics <<
-	    \lowerDynamics
-	>>
-    >>
-    \paper {
-	\translator {
-	    \ScoreContext
-	    \remove Bar_number_engraver
-        }
-	\translator {
-	    \type "Engraver_group_engraver"
-	    \name Dynamics
-	    \consists "Output_property_engraver"
-	    minimumVerticalExtent = #'(-1 . 1)
-
-	    pedalSustainStrings = #'("Ped." "*Ped." "*")
-	    
-	    \consists "Piano_pedal_engraver"
-	    \consists "Script_engraver"
-	    \consists "Dynamic_engraver"
-	    \consists "Text_engraver"
-
-	    TextScript \override #'font-size = #2
-	    TextScript \override #'font-shape = #'italic
-
-	    \consists "Skip_event_swallow_translator"
-
-	    \consistsend "Axis_group_engraver"
-    	}
-
-	\translator {
-	    \PianoStaffContext
-	    \accepts Dynamics
-	    VerticalAlignment \override #'forced-distance = #7
-        }
-    }
-}
-
-%%% Local variables:
-%%% LilyPond-indent-level:4
-%%% End:
-%% new-chords-done %%
diff --git a/input/mutopia-header.ly b/input/mutopia-header.ly
deleted file mode 100644
index f83fc41297..0000000000
--- a/input/mutopia-header.ly
+++ /dev/null
@@ -1,34 +0,0 @@
-\version "2.1.7"
-\header {
-  title =	"Title"
-  subtitle =	"Subtitle"
-  subsubtitle =	"Subsubtitle"
-  opus =  "Opus 1"
-  piece = "Piece"
-  composer = 	 "Composer"
-  enteredby = 	 "JCN"
-  instrument = "Instrument printed over the score"
-
-  % mutopia headers.
-  mutopiatitle = ""
-  mutopiacomposer = ""
-  mutopiaopus = ""
-  mutopiainstrument = "File under these instruments at mutopia."
-  date = "1807"
-
-  source = "Urtext edition"
-    
-  style = "Classical"
-  copyright = "Public Domain"
-  maintainer = "Jan Nieuwenhuizen"
-  maintainerEmail = "janneke@gnu.org"
-  lastupdated =	 "2001/Mar/19"
-  mutopiapublicdomain = "\\parbox{\hsize}{\\thefooter\\quad\\small
-    \\\\This music is part of the Mutopia project,
-    \\texttt{http://www.mutopiaproject.org/}\\\\It has been typeset
-    and placed in the public domain by " + \maintainer +
-    ".\\\\Unrestricted modification and redistribution is permitted
-    and encouraged---copy this music and share it.}"
- tagline = \mutopiapublicdomain
- footer = "pre-Mutopia-2001/mm/dd-nn"
-}
diff --git a/input/mutopia/E.Satie/GNUmakefile b/input/mutopia/E.Satie/GNUmakefile
deleted file mode 100644
index fecc9eade1..0000000000
--- a/input/mutopia/E.Satie/GNUmakefile
+++ /dev/null
@@ -1,9 +0,0 @@
-
-depth = ../../..
-
-examples=petite-ouverture-a-danser
-LOCALSTEPMAKE_TEMPLATES=ly mutopia
-
-include $(depth)/make/stepmake.make
-
-
diff --git a/input/mutopia/E.Satie/petite-ouverture-a-danser.ly b/input/mutopia/E.Satie/petite-ouverture-a-danser.ly
deleted file mode 100644
index 7794bfe524..0000000000
--- a/input/mutopia/E.Satie/petite-ouverture-a-danser.ly
+++ /dev/null
@@ -1,157 +0,0 @@
-\header {
-  title =       "Petite Ouverture à danser"
-  subtitle =	"4"
-  source =      ""
-  composer =    "Erik Satie (1866-1925)"
-  enteredby =   "jcn"
-  copyright =   "Public Domain"
-}
-
-\version "2.1.7"
-
-\include "nederlands.ly"
-
-global =  \notes {
-  \key a \minor
-  \time 2/4
-  s2*10
-  \bar "||"
-  s2*11
-  \bar "||"
-  \time 3/4
-  s2.
-  \bar "||"
-  \time 2/4
-  s2*4
-  \bar "||"
-  \time 3/4
-  s2.*2
-  \bar "||"
-  \time 2/4
-  s2*18
-  \bar "|."
-}
-  
-i =  \context Staff \notes\relative c''{
-  \context Voice=i
-  \voiceOne
-
-  c8.( es16 bes4 ~ |  bes8) r c8.( bes16 | des4 c8. bes16 | c4 ~  c8) r |
-  c4( f,8. as16 | bes4 ~  bes8) r | f8.( es16 f4 | es  f) |
-  g8.( es16 f4 ~ |  f) f8 r
-
-  % Au mouvement
-  f4 ( g | a2 ~ |  a) | a4-- a-> ~ | a8 r b!8.( a16 |  b4) c-- ~ |
-  c8 r b8.( d16 | a4 ~  a8) r | d4( cis | c! b8. d16 | a4 ~  a8) r
-
-  a8.( g16 a4 ~  a8) r |
-
-  a4-> ~ a8 r | g8.( a16  fis4) | e8.( d16 e4 | fis ~  fis8) r
-
-  d4( d-- ~  d8) r e4( f!2 ~ |
-
-  f4 ~  f8) r | es4( g | as bes ~ |  bes) c( |  b!2) | c4( d |  bes2) | c4~ c8 r |
-  
-  % copy from begin: 1-10
-  c8.( es16 bes4 ~ |  bes8) r c8.( bes16 | des4 c8. bes16 | c4 ~  c8) r |
-  c4( f,8. as16 | bes4 ~  bes8) r | f8.( es16 f4 | es  f) |
-%  g8.( es16 f4 ~ |  f) f8 r ?
-  g8.( es16 f4 ~ |  f) ~ f8 r
-  
-}
-
-ii =  \context Staff \notes\relative c'{
-  \context Voice=ii
-  \voiceTwo
-
-  r8 <es as> r <des f> | r <es g> r <es as> | r <f as> r <f as> |
-  r <es g> r <es g> | r <es as> r <as, des> | r <des f> r <des f> |
-  r <as des> r <bes des> | r bes r <as c> | r <g des'> r <bes d> |
-  r <a! c> r <a c>
-
-  % Au movement
-  r <as des> r <c e> | r <c f> r <d! f> | r <cis e> r <cis e> |
-  r <c! f> r <d f> | r <d f> r <d g> | r <e g> r <e g> | r <e g> r <d g> |
-  r <d fis> r <d fis> | r <fis b> r <fis a> | r <e a> r <d g> |
-  r <d fis> r <d fis> |
-
-  r <cis e> r <cis fis> r <cis f> |
-
-  r <cis e> r <cis e> | r <b d> r <a d> | r <g b> r <a cis> |
-  r <a cis> r <a cis> |
-
-  \change Staff=bass\voiceOne
-  r <g b> r <fis a> r <fis a> | r <g bes>
-  \change Staff=treble\voiceTwo
-  r <a c> r <a d> |
-
-  r <bes d> r <bes d> | r <g c> r <bes d> | r <c es> r <d g> |
-  r <d f> r <es g> | r <e! g> r <d fis> | r <e a> r <fis a> |
-  r <es g> r <es g> | r <es g> r <es g> |
-
-  
-  % copy from begin: 1-10
-  r8 <es as> r <des f> | r <es g> r <es as> | r <f as> r <f as> |
-  r <es g> r <es g> | r <es as> r <as, des> | r <des f> r <des f> |
-  r <as des> r <bes des> | r bes r <as c> | r <g des'> r <bes d> |
-  r <a! c> r <a c>
- 
-}
-
-lower =  \context Staff \notes \relative c{
-  \context Voice=iii
-
-  <as as'>4 <es es'> | r <as as'> | <des, des'> <f f'> | <c c'> r |
-  <as as'> <des des'> | <bes bes'> r | <des des'> <bes bes'> |
-  <g g'> <f f'> | <c' c'> <bes bes'> | <f f'> r |
-
-  % Au movement
-  <des' des'> <c c'> | <f f'> <d! d'!> | <a a'> r | <f' f'> <d d'> |
-  r <f f'> | <e e'> <c c'> | r <g g'> | <d' d'> r | <b b'> <fis fis'> |
-  <a a'> <b b'> | <d d'> r |
-
-  <a a'> <fis fis'> r |
-
-  <a a'> r | <b b'> <d d'> | <e e'> <a, a'> | <fis fis'> r |
-
-  <g g'> <d d'> r | <g g'> <f! f'!> <d' d'> |
-
-  <bes bes'> r | <c c'>  <bes bes'> | <as as'> <g g'> | <d' d'> <c c'> |
-  <e! e'!> <b! b'!> | <a a'> <d d'> | <es es> r | <c c'> r
-  
-  % copy from begin: 1-10
-  <as' as'>4 <es es'> | r <as as'> | <des, des'> <f f'> | <c c'> r |
-  <as as'> <des des'> | <bes bes'> r | <des des'> <bes bes'> |
-  <g g'> <f f'> | <c' c'> <bes bes'> | <f f'> r |
-
-}
-
-\score {
-    \context GrandStaff <<
-      \context Staff = treble << 
-        \global 
-        \clef violin
-	\i
-	\ii
-      >>
-      \context Staff = bass <<
-        \global
-	\clef bass
-        \lower
-      >>
-    >>
-
-  \paper {
-    \translator{
-	    \VoiceContext
-	    Slur \override #'attachment = #'(stem . stem)
-	    autoBeamSettings \override #'(end 1 8 * *) = #(ly:make-moment 1 4)
-	    autoBeamSettings \override #'(end 1 16 * *) = #(ly:make-moment 1 4)
-    }
-  }
-  \midi {
-    \tempo 4 = 60
-  }
-}
-
-
diff --git a/input/mutopia/F.Schubert/GNUmakefile b/input/mutopia/F.Schubert/GNUmakefile
deleted file mode 100644
index e592e2832f..0000000000
--- a/input/mutopia/F.Schubert/GNUmakefile
+++ /dev/null
@@ -1,8 +0,0 @@
-depth = ../../..
-
-examples=morgenlied
-LOCALSTEPMAKE_TEMPLATES=ly mutopia
-
-include $(depth)/make/stepmake.make
-
-
diff --git a/input/mutopia/F.Schubert/morgenlied.ly b/input/mutopia/F.Schubert/morgenlied.ly
deleted file mode 100644
index 8d008ce4b9..0000000000
--- a/input/mutopia/F.Schubert/morgenlied.ly
+++ /dev/null
@@ -1,189 +0,0 @@
-\header {
-    title = "Sängers Morgenlied"
-    composer  = "Franz Schubert"
-    date = "27. Februar 1815"
-    source = "Edition Peters"
-    editor = "Paul Losse"
-    enteredby="Han-Wen Nienhuys"
-    maintainer="hanwen@xs4all.nl"
-
-    texidoc = "The source is a rather tightly set Peters in Edition is
-    a heavy font. The Peters edition (4622c) was `herausgegeben' by
-    Paul Losse, whose name also appears on a 1956 edition of some
-    other music. Strictly speaking, his edititorial enhancements will
-    not be in the PD - but I am assuming there are no notable ones in
-    this small piece.
-
-    The original compresses the entire music onto a single page, in 4
-    systems.  Lily does so too if you tune down spacing-increment, but
-    chooses line breaks differently.
-
-    Further manual tweaks: the slur in measure 12 has been flattened
-    manually. The beam in measure 3, left-hand, technically is wrong,
-    but has been added following the original.
-
-"
-
-}
-
-\version "2.1.21"
-manuscriptBreak = { \break }
-
-
-
-\paper  {
-    #(paper-set-staff-size (* 5.8 mm))
-    linewidth = #(* mm 160)
-    indent = 8\mm
-    interscoreline = 2.\mm
-    }
-
-modernAccidentals = {
-  \property Staff.extraNatural = ##f
-  \property Staff.autoAccidentals = #'(Staff (same-octave . 1) (any-octave . 0))
-  \property Staff.autoCautionaries = #'()  
-}
-
-
-melody = \notes   \relative c'' \repeat volta 2 \context Voice = singer {
-    \time 6/8
-    \autoBeamOff
-    s1*0^\markup { \bold \large\bigger\bigger { \hspace #-3.0 Lieblich, etwas geschwind } }
-  R2.
-  r4 r8 c4 g8 |
-  e4 c8
-    <<
-	\new Voice { \stemUp f8. g16 }
-	{ \stemDown f8.[ g16] } >> \stemBoth a8 |
-  fis4  g8 c16[ b a g] f[ e] |
-  d4 f8 a16[ g fis g] f[ d] |
-  g4. r8 gis gis |
-  a4 a16.[ b32] c4 fis,8 |
-  g4.~ g8-\fermata g8 g |
-  as4 as8 g4 g8 |
-  fis4 fis8 r8 g g  |
-  a!4 a8 g4 g8 |
-  fis4 fis8 d'16[ c b a] g[ f] |
-  e4 g8 d4 g8 e4 r8 b'16[ c d b] g[ f] |
-  e4 g8 d4 a'16[ g] |
-  c,4 r8 r4 r8 |
-
-    % TODO : make \fermata work. 
-  R2.^\fermataMarkup 
-}
-
-
-ignoreMelisma =	\property Lyrics . ignoreMelismata = ##t
-ignoreMelismaOff = \property Lyrics . ignoreMelismata \unset
-
-
-firstVerse = \lyrics {
-    \property Lyrics . stanza = "1."
-    
-    Sü -- ßes Licht! Aus
-    \ignoreMelisma
-    gol --
-    \ignoreMelismaOff
-
-    de -- nen  Pfor -- ten brichst du __ \manuscriptBreak | 
-    sie -- gend durch __ die Nacht. Schö -- ner Tag, du __ bist er -- wacht. __ Mit ge -- |
-    \manuscriptBreak
-    heim -- nis -- vol -- len Wor -- ten, in me -- lo -- di -- schen Ak -- kor -- den, grüß __ ich __ \manuscriptBreak |
-    dei -- ne Ro -- sen -- pracht, grüß ich __ dei -- ne Ro -- sen -- pracht. 
-    }
-
-secondVerse = \lyrics {
-    \property Lyrics . stanza = "2."
-    Ach, der Lie -- be sanf
-    -- tes We -- hen schwellt mir |
-    das be -- weg -- te __ Herz, sanft, wie ein ge -- lieb -- ter Schmerz. __ Dürft ich | 
-    nur auf gold -- nen Hö -- hen mich im Mor -- gen -- duft er -- ge -- hen! Sehn -- sucht |
-    zieht mich him -- mel -- wärts, Sehn -- sucht zieht mich him -- mel -- wärts.
-    }
-
-pianoRH = \notes \relative c''' \repeat volta 2 {
-    \modernAccidentals
-    g16(_\p fis a g fis g f e d c b a ) | 
-    <g e>8( <es fis a> <d f b> <c e c'>) r8 r | 
-    r8 c'( e,) f r a |
-    \once \property Voice.DynamicLineSpanner \set #'padding =#3
-    r8_\> << { s8 s8-\! }  << { fis( g)
-			    } \\ { c,4 } >> >> r8 <e c g> <e c g> |
-    <d c a>4. r8 \clef bass  <d b f> <d b f> |
-    e,16_" "_\markup { \bold\italic cresc. } g c g e g d gis b gis d gis |
-    c, e a e c e a,-\f d fis d a d |
-    b d g  d b g r4\fermata \clef treble g''8 |
-    as4.( g 4.) | fis4. r4 <d g>8 ( |
-    <f a>4.) <e g>4.( <es fis> ) <d f>\sf |
-    r8 <e c g> <e c g> r <d b g > <d b g> |
-    r <e c g> <e c g> r <f d b g> <f d b g> |
-    r <e c g> <e c g> r <d b f> <d b f> |
-    c16(_\f b c e g b c b c e g <e b'>) |
-    <c c'>8 r r <c, g e>8 r r\fermata |  
-}
-
-pianoLH = \notes \relative c'' \repeat volta 2 {
-    \modernAccidentals
-    g16( fis a g fis g f e d c b a) | 
-    \clef bass g4.( c,8) r r
-    \clef treble r4 <bes' c>8([ <a c>)] r <f c'> |
-    \clef bass r8 dis( e) r c c |
-    f,4. r8 g g |
-    <c, c,>4. <e e,>4. |
-    a,4. <d d,>4. |
-    g,8 r r g16 r16\fermata r8 g''8 |
-    as4.( g ) |
-    fis r4 <g b>8( |
-    <f c'>4.)
-
-    \once \property Voice.Slur \set #'height-limit = #1.0
-
-    <g c>4.( | <a c>4.) <g b,> |
-    c,4 r8 g4 r8 |
-    c4 r8 g4 r8 |
-    c4 r8 g4 r8 |
-    <c g e c>8 <c e g> <c e g>     <c e g> <c e g> <c e g> |
-    <c e g> r r <c, c,>8 r r\fermata \clef treble
-    }
-
-\score {
-
-    << \time 6/8
-     \new Staff <<
-	 \context Staff \modernAccidentals
-	 \melody >>
-	 \lyricsto "singer" \new Lyrics \firstVerse
-	 \lyricsto "singer" \new Lyrics \secondVerse
-     \new PianoStaff << 
-	 \property PianoStaff.instrument = \markup {
-	     \bold
-	     \bigger\bigger\bigger\bigger \huge "2.  " }
-	 \new Staff \pianoRH
-	 \new Staff \pianoLH
-	>> 
-    >>
-
-    \paper {
-	\translator {
-	    \LyricsContext
-	    minimumVerticalExtent = #'(-1.0 . 0)
-	}
-	\translator {
-	    \ScoreContext
-	    Beam \override #'thickness = #0.55
-	    SpacingSpanner \set #'spacing-increment = #1.0
-	    Slur \set #'height-limit = #1.5
-	}
-	\translator {
-	    \PianoStaffContext
-	    VerticalAlignment \override #'forced-distance = #10
-	}
-	\translator {
-	    \StaffContext
-	    minimumVerticalExtent = #'(-3. . 6)
-	}
-    }
-    \midi {
-	\tempo 4 = 70
-	}
-}
diff --git a/input/mutopia/F.Schubert/standchen.ly b/input/mutopia/F.Schubert/standchen.ly
deleted file mode 100644
index f0d45209b4..0000000000
--- a/input/mutopia/F.Schubert/standchen.ly
+++ /dev/null
@@ -1,460 +0,0 @@
-#(ly:set-option 'old-relative)
-
-% #(ly:set-point-and-click 'line-column)
-
-instrument = "Piano"
-
-\header {
-  title = "Ständchen"
-  subtitle = "(Serenade)"
-  subsubtitle = "Leise flehen meine Lieder"
-  opus = "D. 957 No. 4"
-  date = "August 1828"
-  composer = "Franz Schubert (1797-1828)"
-  poet = "Text by Ludwig Rellstab (1799-1860)"
-  enteredby = "JCN"
-  copyright = "public domain"
-  % instrument = \instrument
-
-  % mutopia headers.
-  mutopiatitle = "Standchen"
-  mutopiasubtitle = "Leise flehen meine Lieder"
-  mutopiacomposer = "Franz Schubert (1797-1828)"
-  mutopiapoet = "Ludwig Rellstab (1799-1860)"
-  mutopiaopus = "D957.4"
-  mutopiainstrument = \instrument
-  date = "1828/08"
-  style = "Romantic"
-  source = "Schubert-Lieder Edition Schott No. 608, (Not dated).
-    Jubilaeums-Ausgabe zum 100. Todestage (~1928)."
-
-  copyright = "Public Domain"
-  maintainer = "Jan Nieuwenhuizen"
-  maintainerEmail = "janneke@gnu.org"
-  lastupdated =	 "2001/Apr/27"
-  mutopiapublicdomain = "\\parbox[b]{\\hsize}{\\thefooter\\quad\\small
-    \\\\This music is part of the Mutopia project,
-    \\texttt{http://www.mutopiaproject.org/}\\\\It has been typeset
-    and placed in the public domain by " + \maintainer +
-    ".\\\\Unrestricted modification and redistribution is permitted
-    and encouraged---copy this music and share it.}"
- tagline = \mutopiapublicdomain
- footer = "Mutopia-2001/04/27-xx"
-} 
-
-\version "2.1.21"
-
-dynamicUp = \property Voice.DynamicLineSpanner \override #'direction = #1
-dynamicRevert = \property Voice.DynamicLineSpanner \revert #'direction
-
-#(set-global-staff-size 16)
-
-vocalVerse =  \notes\relative c''{
-	\dynamicUp
-	\times 2/3 {  g8[(  as)] g } c4. g8 |
-	\times 2/3 {  f8[(  g)] f } c'4 f,8 r |
-	g4.-> f8 \times 2/3 {  f[(  es)] d } |
-	es2 r4 |
-	R2. |
-	R2. |
-	\times 2/3 {  g8[(  as)] g } es'4. g,8 |
-	\times 2/3 {  f8[(  g)] f } d'4. c8 |
-	bes4. as8 \times 2/3 {  as[(  g)] f } |
-	g2 r4 |
-	R2. |
-	R2. |
-	g8. b16 es4. d8 |
-	c8. g16 es4. c8 |
-	\grace {
-  \property Voice.Stem \override #'stroke-style = #"grace"
-    as'32[( bes ] 
-  \property Voice.Stem \revert #'stroke-style }
- \times 2/3 {  as8[)(  g)] as } c4. as8 |
-	g2. |
-	\grace {
-  \property Voice.Stem \override #'stroke-style = #"grace"
-    f32[( g ] 
-  \property Voice.Stem \revert #'stroke-style }
- \times 2/3 {  f8[)(  e)] f } as4. f8 |
-  
-	es!2. |
-	g8. b16 es4. d8 |
-	c8. g16 e4. c8 |
- 	\grace {
-  \property Voice.Stem \override #'stroke-style = #"grace"
-    a'32[( b ] 
-  \property Voice.Stem \revert #'stroke-style }
- \times 2/3 {  a!8[)(  gis)] a } c4. a8 |
-	g!2. |
-	\times 2/3 {  d'8[\f(  cis)] d } f4. b,8 |
-	c!2. |
-}
-
-vocalThrough =  \notes\relative c{
-	\dynamicUp
-	g''8. g16 b8. b16 d8. d16 |
-	c4 b r |
-	g4. b8 d8. c16 |
-	b2 r4 |
-	e4. d8 \times 2/3 {  d[(  c)] b } |
-	a8. b16 c4-> a8 r |
-	R2. |
-	R2. |
-	\grace {
-  \property Voice.Stem \override #'stroke-style = #"grace"
-    a32[( b ] 
-  \property Voice.Stem \revert #'stroke-style }
- \times 2/3 {  a!8[)(  gis)] a } c4. a8 |
-	g!2. |
-	\times 2/3 {  d'8[\f(  cis)] d } f4. b,8 |
-	c!2. ~ |
-	% bug: slur on other staff fools lily into extending melisma
-	c4 r c |
-	as2. |
-	g |
-	e2 r4 |
-}
-
-lyricVerseOne =  \lyrics {
-	Lei -- se fle -- hen mei -- ne Lie -- der
-	durch die Nacht zu dir;
-	in den stil -- len Hain her nie -- der,
-	Lieb -- chen, komm zu mir! 
-	
-	Flüs -- ternd schlan -- ke Wip -- fel rau -- schen
-	in des Mon -- des Licht,
-	in des Mon -- des Licht;
-
-	des Ver -- rä -- ters feind -- lich Lau -- schen
-	fürch -- te, Hol -- de, nicht,
-	fürch -- te, Hol -- de, nicht.
-}
-	
-lyricVerseTwo =  \lyrics{
-	Hörst die Nach -- ti -- gal -- len schla -- gen?
-	ach! sie fle -- hen dich, 
-	mit der Tö -- ne sü -- "\ss en" Kla -- gen
-	fle -- hen sie für mich. 
-	
-	Sie -- ver -- "steh'n" des Bu -- sens Seh -- nen,
-	ken -- nen Lieb -- es -- schmerz,
-	ken -- nen Lieb -- es -- schmerz,
-
-	rüh -- ren mit den Sil -- ber -- tö -- nen
-	jed -- es wei -- che Herz,
-	jed -- es wei -- che Herz.
-}
-
-lyricThrough =  \lyrics{
-	La\ss auch dir die Brust be -- we -- gen 
-	Lieb -- chen, hö -- re mich! 
-	be -- bend harr' ich dir ent -- ge -- gen! 
-	
-	komm, be -- glük -- ke mich!
-	komm, be -- glük -- ke mich, __ 
-	be -- glük -- ke mich!
-}
-
-trebleIntro =  \notes\relative c{
-	r8^"\bf Mäßig"\pp <g' c>-. <c es>-. <g c>-. <c es>-. <g c>-. |
-	r8 <as c>-. <c es>-. <as c>-. <c es>-. <as c>-. |
-	r8 <as c>-. <c d>-. <as c>-. <c d>-. <as c>-. |
-	r8 <g b>-. <b d>-. <g b>-. <b d>-. <g b>-. |
-}
-
-trebleVerseOne =  \notes\relative c{
-	%5
-	r8 <g' c> <c es> <g c> <c es> <g c> |
-	r8 <f c'> <c' d> <f, c'> <c' d> <f, c'> |
-	r8 <f g b> <g b d> <f g b> <g b d> <f g b> |
-	r8 <es g c> <g c es> <es g c> <g c es> <es g c> |
-	<g'' b,>4.( <f d>8)
-	\times 2/3 { <f d>([ <es c> <d b>)] }
-
-	%10
-	<c es>2. |
-	r8 <g, c> <c es> <g c> <c es> <g c> |
-	r8 <f c'> <c' d> <f, c'> <c' d> <f, c'> |
-	r8 <f as bes> <as bes d> <f as bes> <as bes d> <f as bes> |
-	r8
-	<es g bes>[
-	<g bes es>
-	<es g bes>
-	<g bes es>]
-	<es' c'>(
-	<d bes'>4.()
-	<f as>8)
-	
-	\times 2/3 { <f as>([ <es g> <d f>)] }
-	%16
-	<es g>2. |
-	r8 <f, g> <g b> <f g> <g b> <f g> |
-	r8 <es g> <g c> <es g> <g c> <es g> |
-	r8\pp <es as c> <as c es> <es as c> <as c es> <es as c> |
-	%20
-	r8 <es g bes> <g bes es> <es g bes> <g bes es> <es g bes> |
-	\property Voice.Slur \override #'attachment = #'(stem . stem)
-	\grace {
-  \property Voice.Stem \override #'stroke-style = #"grace"
-    as'32[( bes ] 
-  \property Voice.Stem \revert #'stroke-style }
-
-	\times 2/3 {  as8[)( g as] } c4.->  as8) |
-	\property Voice.Slur \revert #'attachment
-	g2. |
-	r8 <f, g> <g b> <f g> <g b> <f g> |
-	r8 <e g> <g c> <e g> <g c> <e g> |
-	r8 <f a c> <a c f> <f a c> <a c f> <f a c> |
-	r8 <e g c> <g c e> <e g c> <g c e> <e g c> |
-	\times 2/3  { <f' f'>\f( <e e'> <f f'> }
-	<a a'>4.-> <f f'>8)  |
-}
-
-trebleEentje =  \notes \relative c' \context Voice {
-	\stemBoth
-	<e e'>2 r4 |
-	<f as!>2\(\mf <as c>8.(-> <f as>16)\) |
-	% urg: slurs with staccati are ugly
-	<e g>4. <e g>8-.( <e g>-. <e g>)-. |
-	<f g>4. <b, g'>8-.( <d g>-. <f g>)-. |
-	<e g>2 <e g>4\pp |
-	<f a>2\( <a c>8.( <f a>16)\) |
-	<e g>4.\( <e g>8(-. <e g>-. <e g>)\)-. |
-	<f g>4. <b, g'>8(-. <d g>-. <f g>)-. |
-	%60
-	<e g>2 r4 |
-}
-
-trebleThrough =  \notes \relative c'{
-	\stemBoth
-	<e e'>2. |
-	%61
-	R2. |
-	<g, g'>8.[\< <g g'>16 <b b'>8. <b b'>16\>\! <d d'>8. <d d'>16] |
-
-	%% score has double slur on chord.
-	<c c'>4( <b c'>) r\!
-
-	<g g'>4. <b b'>8 <d' d, >8.->[ c16] |
-	%65
-        <d, e b'>2.~(\f
-	<c e a>2)  r4
-	<< 
-	{ 	a'8. b16 c4^> ( a8) r |
-		a8. b16 c4^> ( a8) r |
-	}\\{ 
-		<d, f>4 <d f>2 |
-		<c! es>4 <c es>2 |
-	} >>
-
-	% 4 bars copied from end verse1
-	r8 <f, a c> <a c f> <f a c> <a c f> <f a c> |
-	%70
-	r8 <e g c> <g c e> <e g c> <g c e> <e g c> |
-	\times 2/3 {  <f' f'>8( <e e'> <f f'> }
-
-	<a a'>4.-> <f f'>8)
-	<e e'>2. |
-	<es! es'! >2. |
-	\property Voice . TextScript \override #'font-shape = #'italic
-	<d d'>2._"decresc."
-	\property Voice . TextScript \revert #'font-shape
-
-	%75
-	<b b'>2. |
-	<c c'>2 <e g>4\pp |
-
-	% four copied from begin eentje
-	<f as!>2( <as c>8.-> <f as>16) |
-	<e g>4. <e g>8(-. <e g>-. <e g>)-. |
-	<f g>4. <b, g'>8(-. <d g>-. <f g>)-. |
-	%80
-
-	\property Voice . TextScript \override #'font-shape = #'italic
-	<e g>2._"dim."
-	\property Voice . TextScript \revert #'font-shape
-
-	<g, e' g>2. |
-	<g e' g>2.\fermata |
-}
-
-bassIntro =  \notes\relative c{
-	\dynamicUp
-%1
-	<c, c'>2 r4 |
-	<as as'>2 r4 |
-	<f f'>2 r4 |
-	<g g'>2 r4 |
-}
-
-bassVerseOne =  \notes\relative c{
-%	\clef bass
-	\dynamicUp
-%5
-	<c, c'>2 r4 |
-	<as as'>2 r4 |
-	<g g'>2 r4 |
-	<c c'>2 r4 |
-	<g g'>8 <g'' d'>[ <d' f> <g, d'> <d' f> <g, d'>] |
-%10
-	<c,, c'>8 <g'' c>[ <c es> <g c> <c es> <g c>] |
-	<c,, c'>2 r4 |
-	<as as'>2 r4 |
-	<bes bes'>2 r4 |
-	<es, es'>2 r4 |
-%15
-	bes'8 <bes' f'>[ <f' as> <bes, f'> <f' as> <bes, f'>] |
-	es,8 <bes' es>[ <es g> <bes es> <es g> <bes es>] |
-	<g, g'>2 r4 |
-	<c c'>2 r4 |
-	<as as'>2 r4 |
-	<es es'>2 r4 |
-	<bes' bes'>8 <f'' bes>[ <bes d> <f bes> <bes d> <f bes>] |
-	<es,, es'>8 <es'' g bes>[ <g bes es> <es g bes> <g bes es> <es g bes>] |
-	<g,, g'>2 r4 |
-	<c c'>2 r4 |
-	<f, f'>2 r4 |
-	<c' c'>2 r4 |
-	<g g'>8 <d'' g>[ <g b> <d g> <g b> <d g>] |
-	c,8 <c' e g>[ <e g c> <c e g> <e g c> <c e g>] |
-}
-
-bassEentje =  \notes\relative c{
-	\dynamicUp
-	<c, c'>8 <c' f as!>[ <f as c> <c f as> <f as c> <c f as>] |
-	c,8 <c' e g>[ <e g c> <c e g> <e g c> <c e g>] |
-	<g, g'>8 <d'' g>[ <g b> <d g> <g b> <d g>] |
-	c,8 <e' g>[ <g c> <e g> <g c> <e g>] |
-	<c, c'>8 <c' f a>[ <f a c> <c f a> <f a c> <c f a>] |
-	c,8 <c' e g>[ <e g c> <c e g> <e g c> <c e g>] |
-	<g, g'>8 <d'' g>[ <g b> <d g> <g b> <d g>] |
-	c,8 <e' g>[ <g c> <e g> <g c> <e g>] |
-}
-
-bassThrough =  \notes\relative c{
-	\dynamicUp
-	%61
-	<g, g'>8^"cresc." <g' b d>[ <b d f> <g b d> <as! b d >-> <b d f>] |
-	<g, g'>8 <g' d'>[ <d' f> <g, d'> <as b d >-> <b d f>] |
-	% copied
-	<g, g'>8 <g' d'>[ <d' f> <g, d'> <as b d >-> <b d f>] |
-	<g, g'>8 <g' d'>[ <d' f> <g, d'> <gis b d >-> <b d f>] |
-	%65
-	<gis, gis'>8 <d'' e>[\> <e b'> <d e> <e b'> <d e> \!] |
-	<a, a'>8 <c' e>[ <e a> <c e> <e a> <c e>] |
-	<a, a'>8 <a' d f>[ <d f a> <a d f> <d f a> <a d f>] |
-	<a, a'>8 <a' c e>[ <c e a> <a c e> <c e a> <a c e>] |
-	% 4 bars copied from end verse1
-	<f, f'>2\p r4 |
-	%70
-	<c' c'>2 r4 |
-	<g g'>8 <d'' g>[ <g b> <d g> <g b> <d g>] |
-	c,8\> <c' e g>[ < e g c> \! <c e g> <e g c> <c e g>] |
-
-	<c, c'>8 <c' es! g>[ <es g c> <c es g> <es g c> <c es g>] |
-	<f,, f'>8 <d'' f>[ <f as!> <d f> <f as> <d f>] |
-	%75
-	<g,, g'>8 <d'' f>[ <f g> <d f> <f g> <d f>] |
-	c,8 <c' e>[ <e g> <c e> <e g> <c e>] |
-	c,8 <c' f>[ <f as> <c f> <f as> <c f>] |
-	c,8 <c' e>[ <e g> <c e> <e g> <c e>] |
-	g,8 <g' d'>[ <d' f> <g, d'> <d' f> <g, d'>] |
-	%80
-	c,8 <c' e>[ <e g> <c e> <e g> <c e>] |
-	c,8 <c' g>[ <e c> <c g> <e c> <c g>] |
-	<c, g' c>2._\fermata |
-}
-		
-global =  \notes{
-	\time 3/4 
-	\key es \major
-	\skip 1 * 3/4 * 4
-	\break
-	\skip 1 * 3/4 * 25
-	\break
-	\skip 1 * 3/4 * 6
-	\break
-	\skip 1 * 3/4 * 41
-	\break
-	\skip 1 * 3/4 * 6
-	\bar "|."
-}
-
-allLyrics =  {
-	% maybe should be bigger by default, in grob-description.scm ?
-	\lyricsto "leise" \new Lyrics {
-	    \lyricVerseOne
-	    \lyricVerseTwo
-	    \lyricThrough 
-} }
-
-vocals = \context Voice = leise \notes {
-	\clef treble
- 	% certainly no auto-beaming for vocals
- 	\autoBeamOff
-
-	\dynamicUp
-	% duh 1 != 3/4
-	R1 * 3/4 * 4
-	\vocalVerse 
-	R1 * 3/4 * 8
-	\vocalVerse
-	\vocalThrough
-	R1 * 3/4 * 6
-}
-
-trebleStaff =  \context Staff = treble<< 
-        \property Staff.midiInstrument = "acoustic grand"
-	\global
-	{\clef treble
-	\property Voice.autoBeamSettings \override #'(begin * * * *) = #(ly:make-moment 0 1)
-	\trebleIntro 
-	\trebleVerseOne 
-	\trebleEentje
-	\trebleVerseOne 
-	\trebleThrough }
->>
-
-bassStaff =  \context Staff = bass<<
-        \property Staff.midiInstrument = "acoustic grand"
-	\global
-	\clef bass
-	{\bassIntro 
-	\bassVerseOne 
-	\bassEentje
-	\bassVerseOne 
-	\bassThrough}
->>
-
-
-\score{
-    <<
-	\new Staff <<
-	    \property Staff.midiInstrument = "synth voice"
-	    %% insert \transpose if necessary, depending on voice range.
-	    \global
-	    \vocals
-	>>
-	\allLyrics
-	\context PianoStaff <<
-	    \trebleStaff
-	    \bassStaff
-	>>
-    >>
-    \paper {
-				% Use
-				%   textheight = 280.\mm
-				%   linewidth = 190.\mm
-				% to get this on 3 pages of a4.
-	
-				% Mandatory Mutopia settings yield 4 pages :(
-	textheight = 270.0\mm
-	linewidth = 180.0\mm
-
-	\translator { \RemoveEmptyStaffContext }
-    }
-    \midi{
-	\tempo 4 = 54
-    }
-}
-
diff --git a/input/mutopia/GNUmakefile b/input/mutopia/GNUmakefile
deleted file mode 100644
index c714662fab..0000000000
--- a/input/mutopia/GNUmakefile
+++ /dev/null
@@ -1,9 +0,0 @@
-depth = ../..
-
-LOCALSTEPMAKE_TEMPLATES=ly mutopia
-EXTRA_DIST_FILES += claop.py
-SUBDIRS = J.S.Bach F.Schubert E.Satie  W.A.Mozart R.Schumann
-
-include $(depth)/make/stepmake.make 
-
-
diff --git a/input/mutopia/J.S.Bach/GNUmakefile b/input/mutopia/J.S.Bach/GNUmakefile
deleted file mode 100644
index e65ceefe04..0000000000
--- a/input/mutopia/J.S.Bach/GNUmakefile
+++ /dev/null
@@ -1,11 +0,0 @@
-# input/mutopia/J.S.Bach/GNUmakefile
-
-depth = ../../..
-
-EXTRA_DIST_FILES=
-
-LOCALSTEPMAKE_TEMPLATES=ly mutopia
-examples=wtk1-fugue2 baerenreiter-sarabande
-
-include $(depth)/make/stepmake.make
-
diff --git a/input/mutopia/J.S.Bach/baerenreiter-sarabande.ly b/input/mutopia/J.S.Bach/baerenreiter-sarabande.ly
deleted file mode 100644
index a32f548f74..0000000000
--- a/input/mutopia/J.S.Bach/baerenreiter-sarabande.ly
+++ /dev/null
@@ -1,190 +0,0 @@
-\version "2.1.21"
-
-% #(ly:set-point-and-click 'line-column)
-
-forcedLastBreak = \notes { \break }
-
-%% We want this to perfectly match the Baerenreiter spacing.
-%% If we're not using 6 systems, there's definately a problem.
-#(define (assert-system-count smob n)
-  (let ((systems (length (ly:get-broken-into
-			  (ly:get-original
-			   (ly:get-system smob))))))
-    (if (not (equal? n systems))
-	(error
-	;;(warn
-	(string-append "Got " (number->string systems)
-			     " systems (expecting " (number->string n))))))
-            
-
-\header {
-  title = "Solo Cello Suite II"
-  piece ="Sarabande"
-  composer = "J.S. Bach"
-  editor = "August Wenzinger"
-  source= "B\\\"arenreiter Urtext"
-
-  texidoc = "The B\\\"arenreiter edition of the Cello Suites is the
-most beautifully typeset piece of music in our collection of music (we
-both own one. It is also lovely on French Horn). This piece does not
-include articulation, but it does follows the same beaming and
-linebreaking as the printed edition. This is done in order to
-benchmark the quality of the LilyPond output.
-
-As of lilypond 1.5.42, the spacing and beam quanting is almost
-identical.
-
-There are two tweaks in this file: a line-break was forced before
-measure 25, we get back the linebreaking of Baerenreiter.  The stem
-direction is forced in measure 24. The last beam of that measure is up
-in Baerenreiter because of context. We don't detect that yet.
-
-Note that the Barenreiter edition contains a few engraving
-mistakes. The second line begins with measure 6 (but prints 5). The |:
-half way in measure 13 has been forgotten.
- "
-}
-
-
-sarabandeA =  \context Voice \notes \relative c {
-  \property Staff.NoteCollision \set #'merge-differently-dotted = ##t
-
-  
-  << { d8. e16 e4.\trill d16 e } \\
-    { d4 a2 } >>
-  <d, a' f'>4.  e'8[ d c] |
-  bes[ g'] f[ e16(f] g[ a bes d,)] |
-  cis4.\trill b8[ a g] |
-
-  %% check spacing without accs: 
-  %%	c4.\trill bes8[ a g] |
-  
-  << { d'8. e16 e4.\trill d16 e |
-      f4. d8[ e f] }
-    \\
-    { <a, f>4 a2 <a d,>4.  } >> |
-
-  %%7
-  g'8 bes16(a) c(bes) a(g) d'8 f, |
-  <<  e4.\trill
-    \\ <c, g'>4 >>
-  d'8[ c bes]
-
-  %%9
-  << { f'8 g16(a) a4. g16(f)  |
-      g8 a16(bes) bes4. c16(d) }
-    \\
-    { a,4 <bes d >4. r8 bes4 <g f'>2  }
-  >> |
-
-  %% 11
-  e'8[ f] c,[ g'] f'[ e] |
-  f4 f,2 |
-  << {  a'4 a4.\trill bes8 
-       c bes16 a } \\
-    { f8[ es] es4. r8 d4 } >>
-
-  fis8.\trill es16 d8 c |
-  bes[ g']
-  a,[ fis']
-  es'[ d] |
-  
-  %%16
-  < bes d, g, >4.\trill a8[ g f!] |
-  e bes a f' g a |
-  d, as g es' f g |
-  cis,[ bes'] a[ g16 f] e!8[ f16 d] |
-  cis8 e16 a a,8. g'16 f8(e) |
-  
-  %%21
-  << { d e16(f) f4. e16(d) |
-      e8 f16(g) g4. a16(bes) |
-      a8 cis16 d d,8 e16 f32 g f8\trill e16(d) } \\
-    { bes4 g2 |
-      g4 <bes cis,>4. s8 |
-      <d a f>8 r r g, a4 } >>
-  |
-  \stemUp
-  d4 d,16 a'( b cis d e f g) |
-  \stemBoth
-  \forcedLastBreak
-  %%25
-  << { a16(b c b) c4. b16(a) |
-      b cis d cis d4. e16(f) | }
-    \\
-    { f,4 fis4. s8 |
-      <d g,>4 gis4.   } >>
-  \voiceOne
-  d'16(cis  d) f,
-  a,8[ e']
-  \oneVoice
-  d'[ cis] |
-  %%  d4 d,,2 |
-  d4
-  \property Voice.NoteHead
-  \override #'after-line-breaking-callback
-  = #(lambda (smob) (assert-system-count smob 6))
-  d,,2 |
-}
-
-
-sarabandeCelloGlobal =  \notes{
-  \time 3/4
-  \key f \major
-  \clef bass
-  \repeat "volta" 2 {
-    s2.*12
-  } \repeat "volta" 2 {
-    s2.*16
-  }
-}
-
-sarabandeCelloScripts =  \notes{
-}
-
-sarabandeCelloStaff =  \context Staff <<
-  \sarabandeA
-  \sarabandeCelloGlobal
-  \sarabandeCelloScripts
->>
-
-% size perversions
-smallerPaper = \paper {
-    \translator { \StaffContext
-		  fontSize = #-1
-		  StaffSymbol \override  #'staff-space = #0.8
-		  }
-    \translator { \ScoreContext
-		   SpacingSpanner \override #'spacing-increment = #0.96
-		}
-	
-    indent = 5.6 \mm
-    linewidth = 146.8 \mm
-}
-
-baerPaper = \paper {
-    indent = 7. \mm
-    linewidth =183.5 \mm
-    interscoreline=4.0\mm
-    \translator {
-	     \ScoreContext
-%	     System \override #'print-function = #box-grob-molecule
-    }
-}
-
-
-\score{
-  \sarabandeCelloStaff
-  \paper{
-    \baerPaper
-  }
-  \midi{ \tempo 4 = 40 }
-  \header{
-    opus= "" 
-    piece ="Sarabande" }
-}
-
-%%% Local variables:
-%%% LilyPond-indent-level:2
-%%% End:
-
diff --git a/input/mutopia/J.S.Bach/bwv940.ly b/input/mutopia/J.S.Bach/bwv940.ly
deleted file mode 100644
index 06995fe580..0000000000
--- a/input/mutopia/J.S.Bach/bwv940.ly
+++ /dev/null
@@ -1,162 +0,0 @@
-#(ly:set-option 'old-relative)
-\version "2.1.7"
-
-%{
- Header for Petites Preludes.
-
- Six Petits Preludes,
- Collection Johann Peter Kellner
- ca 1703 - 1707
-
- Kellner was a student of Bach's that copied some 90 works of his master.
-%}
-
-
-\header{
-  title =	 "Praeludium"
-  composer =	 "Johann Sebastian Bach (1685-1750)"
-  enteredby =	 "JCN,HWN"
-  opus= "BWV 940"
-
-
-  % mutopia headers.
-  mutopiacomposer = "J.S.Bach (1685-1750)"
-  mutopiaopus = "BWV940"
-
-  mutopiainstrument = "Harpsichord,Clavichord"
-  date = "1700s"
-  source = "Ed. Henry Lemoine Urtext"
-  style = "Baroque"
-  copyright = "Public Domain"
-  maintainer = "Jan Nieuwenhuizen"
-  maintainerEmail = "janneke@gnu.org"
-  lastupdated =	 "2003/Aug/22"
-  mutopiapublicdomain = "\\parbox{\hsize}{\\thefooter\\quad\\small
-    \\\\This music is part of the Mutopia project,
-    \\texttt{http://www.mutopiaproject.org/}\\\\It has been typeset
-    and placed in the public domain by " + \maintainer +
-    ".\\\\Unrestricted modification and redistribution is permitted
-    and encouraged---copy this music and share it.}"
- tagline = \mutopiapublicdomain
- footer = "Mutopia-2003/08/22-nr"
-}
-
-one =   \notes\relative c{
-	\skip 1 |
-	\stemUp
-	r4 d''2 cis4 |
-	\stemBoth
-	d16 a' g f  e f cis d 
-	e8.\mordent f16  d8.\prall cis16 |
-	\stemUp\tieUp
-	cis4 ~ cis16 a d8 ~ d4 a |
-	%5
-	b2 ~ b4 a ~ |
-	a16 a \stemUp g! f g4 ~ g f ~ |
-	f16 a g f  e16 g8. ~  g16 g f e  d f8. ~ |
-	f16 f e d b'4 a g |
-
-	fis4 g r8 g16 bes e4 |
-	%10
-	d1
-	\bar "|."
-}
-
-two =   \notes\relative c{
-	r16 d'' c bes  a bes f g 
-	a8.\mordent bes16  g8.\prall f16 |
-	\stemDown
-	f2 e2 |
-	\change Staff=lower \stemUp
-	r4 a, bes b |
-	\change Staff=upper \stemDown\tieDown
-	r16 b' a g  f8. f16 e2 ~ |
-	%5
-	e2 ~ e4 ~ e16 e f! d |
-	s4 e4_\mordent~ e4 d4 ~ |
-	d4. cis16 d cis4 d ~ |
-	d8 r r16 e f d r16 e f d r d e cis |
-	r16 e d c!  bes! d8. s4 r16 bes' a g |
-	%10
-	fis1
-}
-
-three = \notes\relative c{
-	\stemUp
-	f2 e |
-	\stemBoth
-	d16 d' c bes  a bes f g 
-	a8.\mordent bes16 
-	g8.\prall f16 |
-	f2 g4 gis |
-	a2 ~ a16 a g f  e f c d |
-	%5
-	e8.\mordent f16  d8.\prall c16 \stemBoth c4. d8 |
-	\stemDown	\tieDown
-
-	e4 ~ e16 f e d  cis a b cis  d e f d |
-	\property Voice.TextScript \set #'font-style = #'finger
-	bes2 a ~ |
-	a a |
-	d, cis' |
-	%10
-	a'1
-	\bar "|."
-}
-
-four =   \notes\relative c{
-	\stemDown 
-	d2 cis |
-	\skip 1*2 |
-	\skip 4*3
-	\change Staff=upper \stemUp
-	\property Voice.NoteColumn \override #'horizontal-shift = #1
-	c''4 |
-	%5
-	a gis ~ gis16 gis fis e 
-	\skip 4*1
-	\change Staff=lower \stemDown
-	\property Voice.NoteColumn \override #'horizontal-shift = #0
-	\stemUp\tieUp
-	b2 a |
-	g a4. gis16 a |
-	gis2 < g cis,>8 <f d> e4 |
-	d4. fis16 g r16 bes8. ~ bes4 |
-	%10
-	\stemDown
-	<< d,1  { \fatText s4^\markup { \hspace #20 }
-		 s4^\markup { \hspace #1 }  s4 }
-	     >>
-}
-
-global =  \notes{
-	\time 4/4
-	\key f \major
-}
-
-\score{
-	% Allegretto
-	\context PianoStaff <<
-		\context Staff = upper <<
-			\global
-			\context Voice = i\one
-			\context Voice = ii \two
-		>>
-		\context Staff = lower <<
-			\global
-			\clef "bass"
-			\context Voice= iii \three
-			\context Voice = iv \four
-		>>
-	>>
-	\paper{
-		linewidth = 17.0 \cm  
-		\translator {
-		    \ScoreContext
-		    SpacingSpanner \set #'spacing-increment = #2.0
-		}
-	}
-	\midi{ \tempo 4 = 40 }
-}
-
-
diff --git a/input/mutopia/J.S.Bach/wtk1-fugue2.ly b/input/mutopia/J.S.Bach/wtk1-fugue2.ly
deleted file mode 100644
index 8fdf10a48a..0000000000
--- a/input/mutopia/J.S.Bach/wtk1-fugue2.ly
+++ /dev/null
@@ -1,224 +0,0 @@
-\header {
-  title =       "Fuga a 3 voci"
-  opus =        "BWV 847-Fuga"
-  source =      "Henle's Urtext"
-  composer =    "Johann Sebastian Bach (1685-1750)"
-  enteredby =   "hwn, wl, jcn"
-
-  % mutopia headers.
-  mutopiatitle = "Das Wohltemperierte Clavier I, Fuga II (c-minor)"
-  mutopiacomposer = "J. S. Bach (1685-1750)"
-  mutopiainstrument = "Piano"
-  mutopiaopus = "BWV847"
-  style = "baroque"
-  copyright = "Public Domain"
-  maintainer = "hanwen@cs.uu.nl"
-  mutopiapublicdomain = "\\parbox{\\hsize}{\\thefooter\\quad\\small
-    \\\\This music is part of the Mutopia project,
-    \\texttt{http://www.mutopiaproject.org/}\\\\It has been typeset
-    and placed in the public domain by " + \maintainer +
-    ".\\\\Unrestricted modification and redistribution is permitted
-    and encouraged---copy this music and share it.}"
-  tagline = \mutopiapublicdomain
-  lastupdated = "2002/August/19"
-  footer = "Mutopia-2002/08/19-6"
-}
-
-
-%{
- We really want this piece on 2 pages.
-
- tweaks:  we use 19 iso. 20 pt staff space, and squeeze up the spacing a bit.
-
- the few forced linebreaks were an earlier attempt to get the spacing
- to match up.
-
-%}
-
-
-\version "2.1.7"
-
-
-
-
-dux =  \context Voice=two \notes \relative c''{
-  \voiceTwo
-  \clef violin
-
-  r8 c16 b c8 g as c16 b c8 d |
-  g, c16 b c8 d f,16 g as4 g16 f |
-  es c' b a g f! es d c8 es' d c | \break 
-  bes a bes c fis, g a fis |
-%%5
-  g4 r16 c, d es f g as8~ as16 d, es f |
-  g a bes8 ~ bes16 es, f g as g f es d8 c'16 b! |  \break
-          % forced accident!
-  c4 r4 r8 f es d |
-  r8 as g f g f16 es f8 d | 
-  g4 r8 b c c16 b c8 g |
-%%10 
-  as4 r8 a bes bes16 a bes8 f |
-  g4 r8 g as as g
-  \change Staff = bass \stemUp 
-  f |
-  r8 
-  as, bes c r8 as16 g as8 f8 |
-  bes8 c bes as bes g f es |
-  f des' c bes c as g f |
-%%15
-  g8
- \change Staff = treble
-   \stemDown
-
-  g'16 fis g8 c, 
-  es
-  g16 fis! g8 a |
-  d, g16 fis g8 a! c,16 d es4 d16 c |  % forced accident!
-  bes8 r8 r16 d e fis g a bes8 ~ bes16 e, f g |
-  a bes c8 ~ c16 fis,16 g a bes8 es,!16 d es8 g, |
-  \break 
-  as f'16 es f8 a,8 bes g'16 f g8 b, |
-%%20
-  c16 f es d
-   c
-  \change Staff = bass
-  \stemUp
-   bes! as g 
-  f8 \change Staff = treble
-  \stemDown
-  as' g f |
-  es d es f b, c d b |
-  c4 r8 e8 f f16 e f8 c |
-  d4 r8 d8 es8 es16 d es8 bes |
-  c2 ~ c8 d16 es f es f d |
-%%25
-  b8 r8 r b c r r es |
-  d r r f ~ f r r f |
-  es as g f es d es f |
-  b, c d b b c r c |
-  f16 d es c ~ c8 b c4 r8 e |
-%%30
-  f4 r8 f f es16 d es8 <f as> |
-  <b, d> r <b d> r <g c>2 |
-}
-
-
-comes =  \context Voice=one \notes \relative c'' {
-  \voiceOne
-  \property Voice.MultiMeasureRest \override #'staff-position = #6 
-  R1 |
-  R1 |
-  r8 g'16 fis g8 c, es g16 fis g8 a |
-  d,8 g16 fis g8 a c,16 d es4 d16 c |
-%%5
-  bes8 es16 d es8 g,8 as f'16 es f8 a, 
-  bes8 g'16 f g8 b, c8 d16 es f4 ~ |
-  f8 es16 d c16 bes ! as g f8 as' g f 
-  es d es f b, c d b |
-  c g'16 fis g8 d es4 r8 e8 |
-%%10 
-  f f16 e f8 c8 d4 r8 d |
-  es8 es16 d es8 bes c es16 d es8 f |
-  bes, es16 d es8 f as,16 bes c4 bes16 as |
-  \stemBoth g16 es f g as bes c d es d c d es f g a |
-  bes f, g as bes c d e f es d es f g a b |
-%%15
-  \stemUp c8 b16 a g f! es d c8 es d c |
-  bes a bes c fis,! g a fis |    % forced accident
-  g8 d'16 c d8 r8 r8 e16 d e8 r8 |
-  r fis16 e fis8 r r g,16 f g8 r8 |
-  r8 a16 g a8 r r b16 a b8 r |
-%%20
-  r8 c16 b c8 g as c16 b c8 d |
-  g, c16 b c8 d f,16 g as4 g16 f |
-  es8 c'16 b c8 g as4 r8 a |
-  bes8 bes16 a bes8 f8 g4 r8 g ~ |
-  g as16 bes c b c as f2 ~ |
-%%25
-  f8 d'16 c d8 f, es es'16 d es8 g, |
-  f f'16 es f8 as, g16 f' es d c b a g |
-  c8 f es d r as g f |
-  g f16 es f8 d as' g r a |
-  b c f,16 es d c c8 c'16 b c8 g |
-%%30
-  as c16 b c8 <d b ! as !> g,8 c16 b c8 d |
-  f,16 g as4 g16 f e2 |
-}
-
-bassdux =  \context Voice=three \notes \relative c' {
-  \clef bass
-  R1 |
-  R |
-  R |
-  R |
-%%5
-  R |
-  R1 |
-  r8 c16 b c8 g as c16 b c8 d |
-  g, c16 b c8 d f,16 g as4 g16 f | 
-  es c' b a g f es d c d es d c bes! as! g |
-          % -> \classic_accidentals
-%%10
-  f bes' as g f es d c bes c d c bes as g f |
-  es as' g f es des c bes as8 c' bes as |
-  g8 f g as d, es f d |
-  es as g f g es d c |
-  d bes' as g as f es d! |
-%%15
-  es8 r8 r4 r8 c bes a |
-  r es' d c d c16 bes c8 d |
-  g,8 bes'16 a bes8 d, es c'16 bes c8 e, |
-  f d'16 c d8 fis, g4 r16 g, a b |
-  c16 d es8~ es16 a, bes c d es f8~ f16 b, c d |
-%%20 
-% es8 r r e f f, es! d |     % -> \classic_accidentals
-  es8 r r e \stemBoth \stemDown f f, es! d \stemBoth |
-  r as' g f g f16 es f8 g |
-  c16 d es d c bes as g f bes' as g f es d c |
-  bes c d c bes as g f es as' g f es d c bes |
-  as bes c bes as g f es d g' f es d c b a |
-%%25
-  g4 r4 r16 g a b c d es f |
-  g f as g f es d c b8 c16 b c8 g |
-  as c16 b c8 d g, c16 b c8 d |
-  f,16 g as4 g16 f es4 r8 es' |
-  d c g' g, 
-%%30
-  << {  c2 ~ | c1 ~ | c1 } \\
-    {   c,2 ~ | c1 ~ | c1 }
-  >> 
-}
-
-\score {
- 
-    \notes \context PianoStaff << 
-        \property Score.TimeSignature \override #'style = #'C
-	\context Staff = treble <<
-	    \key c \minor
-	    \dux
-	    { \comes \bar "|." }
-	      \time 4/4
-	  >>
-	\context Staff = bass <<
-	    \key c \minor
-	    \bassdux
-	>>
-    >>
-
-    \paper {
-        linewidth = 18.0 \cm
-	\translator { \ScoreContext
-	SpacingSpanner \override #'spacing-increment = #1.0
-	SpacingSpanner \override #'shortest-duration-space = #1.9	
-	}
-    }
-    \header{
-	opus = "BWV 847"
-    }
-
-    \midi {
-	\tempo 4 =84
-    }
-}
-
-
diff --git a/input/mutopia/R.Schumann/GNUmakefile b/input/mutopia/R.Schumann/GNUmakefile
deleted file mode 100644
index 7fe3f3f523..0000000000
--- a/input/mutopia/R.Schumann/GNUmakefile
+++ /dev/null
@@ -1,8 +0,0 @@
-depth = ../../..
-
-examples=romanze-op28-2
-LOCALSTEPMAKE_TEMPLATES=ly mutopia
-
-include $(depth)/make/stepmake.make
-
-
diff --git a/input/mutopia/R.Schumann/romanze-op28-2.ly b/input/mutopia/R.Schumann/romanze-op28-2.ly
deleted file mode 100644
index 2d32473ee1..0000000000
--- a/input/mutopia/R.Schumann/romanze-op28-2.ly
+++ /dev/null
@@ -1,292 +0,0 @@
-#(ly:set-option 'old-relative)
-% NOT FINISHED!!!!
-
-\include "deutsch.ly"
-
-#(set-global-staff-size 16)
-\version "2.1.21"
-
-\header {
-  title = "Romanzen"
-  opus = "op. 28/2"
-  composer = "R. Schumann (1810-1856)"
-  enteredby="Rune Zedeler"
-  maintainer="rune@zedeler.dk"
-  mutopiatitle = "Romanzen - op. 28/2"
-  mutopiacomposer = "R. Schumann 1810-1856"
-  mutopiainstrument = "Piano"
-  style = "Romantic"
-  copyright = "Public Domain"
-}
-
-u = { \change Staff = up  \stemDown }
-m = { \change Staff = mid  \stemUp  }
-d = { \change Staff = down  \stemUp }
-
-forcedBreak = \break
-
-global = \notes { \key fis \major \time 6/8
-  \property Score.beatLength = #(ly:make-moment 3 8)
-  \repeat volta 2 { s2.*8 } s2.*26 \bar "|."
-}
-
-righta = \notes \transpose c cis' {
- % \stemUp \slurUp \tieUp
- \stemUp
- \property Voice.Slur \override #'attachment = #'(stem . stem)
- \repeat volta 2 {
-  \property Voice.TextScript \override #'extra-offset = #'(-8.0 . 2.5)
-  \m  a,16[^\p( \u c^\markup {
-      \large "Einfach ("
-      \note #"8" #1
-      \large " = 100)" }
-  a c ] \m  g,[ \u c^3 ] \m  b,[ \u c^2 b c] \m  a,[ \u c^3]) | 
-  \property Voice.TextScript \revert #'extra-offset
-  \m  f,[( \u c f c] \m  g,[ \u c^4] \m  a,[ \u c^2 a c8  c16)] | 
-  \m  c16[( \u f c' f] \m  b,[ \u f] \m  d[ \u f^3 d' f^2] \m  c[ \u  f)^4] |
-  \m  f,16[( \u c16^3 f c] \m  g,[ \u c^4] \m  a,[ \u c^2 a c8  c16)] |
-  \m  a,[( \u c a c] \m  c[ \u d c' d] \m  b,[ \u d] \m  a,[ \u  d)^3] |
-  \m  g,[( \u c^2 g c] \m  b,[ \u c b c] \m  a,[ \u c] \m  g,[ \u  cis)^3] |
-  \m  f,[( \u d^3 f d] \m  g,[ \u d g d] \m  g,[ \u c] \m  a,[ \u  a)] |
-  \m  g,[( \u c g c] \m  f,[ \u h,^2 g h,] \m  e,[ \u c^2 g  c)] |
- }
- \forcedBreak
- \stemUp \slurUp \tieUp
- b4^5( <a g>8~<a g> a g^4 |
- f4^5 e8^5~e  d4)^4 |
- as4^4( <g f>8~<g f> g^5 f^4 |
- es4^5 d8^5~d  c4)^4 |
- c^4( es8^5~<es as,_1> d^3  f) |
- e4^4( g8^5~<g ces_4> f^3  as) |
- g4^4 b8^5~b a c'^5~ |
- c' b^4 ges^5 des^3 b,^5 \d  ges,16[^4 f,] |
- e,^2^\markup { \large "ritard..." } cis,^1 \u r8 r r4 r16 \d gis,^2^"R.H."] |
-
-
- \forcedBreak
- \m  a,16[^\p( \u c a c] \m  g,[ \u c^3] \m  b,[ \u c^2 b c] \m  a,[ \u  c)^3 ]| 
- \m  f,[( \u c f c] \m  g,[ \u c^4] \m  a,[ \u c^2 a c8  c16)] | 
- \m  c16[( \u f c' f] \m  b,[ \u f] \m  d[ \u f^3 d' f^2] \m  c[ \u  f)]^4 | 
- \m  f,[( \u c^3 f c] \m  g,[ \u c^4] \m  a,[ \u c^2 a c8  cis16)] |
- \m  a,[( \u d^2 a d] \m  c[ \u d c' d] \m  b,[ \u  d)^3] r8 |
- \m  c16[( \u f c' f] \m  es[ \u f es' f] \m  d[ \u  f)^3] \m  f[( \u as^2] |
-  f'[  as)] \m  f[( \u as f'  as)] r8^\fermata r16 e'^2( f' g' | \stemBoth \tieBoth
- as' des'^1 c'8^\markup { \finger "2-3" } h~h  c'16) \clef F  e,16[(^2 f, g,] |
- \forcedBreak
-
-  as,[^5 h,,^2)] \clef G <c a^3>8[( <c g^2>16 c'] <c es ges c'^5>4.~
- <c es ges c'>8) s4 s8 r16 h^2( c' d' | 
- es' ges-1 f-2 a-1 c'-2 f'-4 \stemUp \tieUp e'-5 d' c' b-4 a^\prall^\markup { \finger "2-4-3" } g |
-  f) f'-5( e'-5 d'-4 c'-3  f')-5 <f^4 a^5>4( <e^3 g^5>8 |
- <a, f^4>4 <g, e^3>8 f16^4 d'^5~ d'8.[ c'16^4] |
- \forcedBreak 
- << f8)^3_\pp \context Voice = another { \m  a,16[ \u c8 c16] } >> \m  g,[ \u c_3] \m  b,[^\markup { \finger "2-1" } \u c8 c16] \m  a,[ \u c]~ | \stemBoth
- c16 c8_4 c c16~c c8_2 c c16~ |
- c16 c8 c c16~c c8 c c16~ |
- c16 c8 c c16 r4^\fermata r8 | \bar "|."
-
-}
-
-rightb = \notes \transpose c cis' {
- \relative c { \stemDown \slurDown
-  \repeat volta 2 {
-   a4^1( g8^1 b4^1 a8^1 |
-   f8..^1 f32^1 g8^2  a4.)^1 |
-   c4^1( b8 d4 c8 |
-   f,8.. f32^1 g8^2  a4.) |
-   a4(^1 c8^1_\accent~c b^1 a^1 |
-    g4) b8^1_\accent(~b a^1 g^1 |
-    f4)^1 g8_\accent(~g g_. a_. |
-   g4 f8~f  e4) |
-  }
- }
- \u \slurUp
- g16_4 d b, d g e cis g_4 f_3 d_1 e_2 b, |
- d_3 a,_2 f, a, cis_4 a, e, a, d a,8 g,16 |
- f_4 c as, c f d h, f_4 es_3 c_1 d_2 as, |
- c_3 g,_2 es, g, h,_4 g, d, g, c g,8 f,16 |
- c g, es, g, es c_3 as, c^2 d^3 c h, c |
- e des b,\< des g e_3 ces_4 d_2 f^3 d cis d |
- \property Voice.PhrasingSlur \override #'extra-offset =  #'(0 . 3)
- \property Voice.PhrasingSlur \override #'beautiful = #42
- g\( fes des fes b g_3 es_1\! ges_2 a^3 ges f_1 ges_2 |
- r ges_2 b des_1 ges b,_2 des ges,^1 b, \d des,^1 \stemDown \transpose c' c { b,[_1 as,] |
- g,8  b,16[ g, e, cis,]  d,\)_4 \< f, h, d_3 f_2  r16\! }
- \property Voice.PhrasingSlur \revert #'extra-offset
- \property Voice.PhrasingSlur \revert #'beautiful
-
- \change Staff=mid
- \relative c { \stemDown \slurDown
-  a4^1( g8^1 b4^1 a8^1 |
-  f8..^1 f32^1 g8^2  a4.)^1 |
-  c4^1( b8 d4 c8 |
-  f,8.. f32^1 g8^2  a4.) |
-  a4^1( c8^1_\accent~[c b)] g16^1([ b^2] |
-   c4)^1 es8^1~es d^1 f^1~ |
-  \property PianoStaff.Arpeggio \override #'direction = #1
-  f f8.. f32^1( as4.)^\fermata\arpeggio ~ |
-  \property PianoStaff.Arpeggio \revert #'direction
-  \stemUp \tieUp as r4 r8 |
- }
-  s2. s
- \u s4. \grace {
-  \property Voice.Stem \override #'stroke-style = #"grace"
-  f8(
-  \property Voice.Stem \revert #'stroke-style }
-  f4) e8 |
- f g16_2 b_1 a_2 gis_1 c_2 h, c cis_1 d_2 b,_1 |
- \tieDown c4.~<f, c  >16\< \tieBoth <f h>~ < f^3 h >8[\>\! < e b^2> \!] |
- \change Staff=mid
- \transpose c' c {
-  a4^1( g8^1 b4 a8^2 |
-  f8..^1 f32^1 g8^2  a8..)   \slurUp <f f'^3>32( <g g'^4>8 |
-  <a a'^5>8..) <f f'^3>32( <g g'^4>8 <a a'^5 >4.\>) ~ |
-  a~ a\!^\fermata \bar "|."
- }
-}
-
-lefta = \notes \transpose c cis {
- \stemUp \slurUp \tieUp
- \repeat volta 2 {
-  f4^1( e8^1 g4^1 f8^1 |
-  d8..^1 d32^2 e8^1  f4.) |
-  a4^1( g8 b4 a8 |
-  d8..^1 d32^2 e8^1  f4.) |
-  fis4^1 a8^1^\accent(~a g^1 f^1 |
-   e4)^1 g8^1^\accent(~g f^1 e^1 |
-   d4)^1 f8^1^\accent(~f e^. dis^1^. |
-  e4^1 d8^1~d  c4)^1 |
- }
- \d \tieBoth \slurDown
- <<
- \transpose c' c {
-  g4 a8~a f g | a4 g8~g f e |
-  d4 g8~g es f | g4 f8~f es d |
-  c4 r8 f4 as8~ | as g b as4 ces'8~ |
-  ces' b des' c'4 \context Voice=another { \stemUp \tieUp <es' es>8~ |
-  es' des'4^1~ \stemDown  des'8.[ c'16] }
- }
- \transpose c' c, {
-  g4(-4 a8-3~a f-5 g-4 | a4-3 g8-\markup { \finger "4-3" } ~g f-4 e-5 |
-   d4)-\markup { \finger "4-5" }( g8-3~g es f-4 | g4-3 f8-4~f es d-4 |
-   c4) r8 f4-4( as8-5~ | as g-4  b)-5 as4-5( ces'8-4~ |
-  ces' b des'-4  c'4)-5( <es'-4 es''>8 |
-  \stemDown \tieDown  des'4.)_5~des'~ |
-  \property Voice.NoteColumn \override #'horizontal-shift = #-1 des' s
- }
- >>
- \change Staff=down \stemUp \slurUp \tieUp \phrasingSlurUp
- f4^1( e8^1 g4^1 f8^1 |
- d8..^1 d32^2 e8^1  f4.) |
- a4^1( g8 b4 a8 |
- d8..^1 d32^2 e8^1  f4.) |
- fis4 a8^\accent~a g s |
- a4 c'8^\accent(~c'  b) d'^\accent~ |
- d' d'8..^\accent d'32-1 s4. |
- s2.*2
- s8 r16 h\( c' d' es' as g8\arpeggio  fis(
- ges)\) f16-2( a-1 c'-3  f')-1 \grace {
-  \property Voice.Stem \override #'stroke-style = #"grace"
-  \stemDown \slurUp  b,[( f] \stemUp 
-  \property Voice.Stem \revert #'stroke-style }
-  e')-1( d' c' b-1 a-2\prall g 
-  f16)-4 f' <c' e'> d'-1 c'-2 h-1 s4.
- s2.
- f4^1( e8 g4 f8 |
- d8..^1 d32-2 e8^1  f8..) d32^2( e8^1 |
-  f8..) d32-2( e8^1  f4.)^1 ~ |
- f~ f\fermata |
-}
-
-leftb = \notes \transpose c cis {
- \stemDown \slurDown \tieDown
- \repeat volta 2 {
-  f16^\p c f, c e c-3 g c-2 f, c f c |
-  d c f, c-3 e c f c f, c8 c16-3 |
-  a16 c f, c g c-3 b c f, c a c |
-  d c f, c-3 e c f c-2 f, c8 c16 |
-  fis d-2 d, d  a[ d] g, d g d f h,-3 |
-  e c-2 c, c  g[ c] f, c f c e a,-3 |
-  d a, d, a,  f[ g,-2] h,, g, e c, dis fis,-5 |
-  e c g,-4 c d g,-2  c,[ g, c g,] c,8 |
- }
-
- s2.*9 |
-
- f16^\p c c, c e c-3 g c-2 c, c f c |
- d c c, c-3 e c f c f, c8 c16-3 |
- a16 c f, c g c-3 b c f, c a c |
- d c f, c-3 e c f c-2 f, c8 cis16 |
- fis^1 d d, d  a[ d_2] g, d g d_3  b,[_5( g_2] |
-  a) c_3 f, c  c'[ f_2] b, f b f_3 d' as |
- h, as d' as h, as( f'4.)^\fermata\arpeggio_2 ~
- \d \stemDown f'8. \clef G \stemBoth \tieBoth \phrasingSlurDown
-   \transpose c c' { e16[_4( f g]  as[ des_3]  c8[_4 <h, d f d'>)]~ |
- <h, d f d'>} \clef F <c_3 f_1>[( <b,_4 e^2>] <a,_5 eis^1>8.) h,16_4\( c d |
- \voiceTwo
- es as,_3 g,8 fis,~fis, g,_4\arpeggio gis,_5~ |
- gis, <a, c>16\) r16 r8 r4 cis8( |
-  d) e( f16_4 d_5  c4.)_ \markup { \finger "4-3" }~ |
- \oneVoice
- c16( h,_4 c_3 cis_1 d_2 b,_3 a,_4 as,_1 g,8  c,8) |
- \change Staff = down \stemDown \tieDown
- f16^\pp c f, c e c-3 g c-2 f, c f c |
- d c f, c-3 e c f c-2 f, c-3 e c |
- f c-2 f, c-3 e c ~ c c8 c c16 ~ |
- c c8 c c16 r4_\fermata r8 \bar "|." |
-}
-
-\score { \notes
-  \context PianoStaff <<
-    \pianoCautionaries
-    \property PianoStaff.NoteCollision \override #'merge-differently-dotted = ##t
-    \property PianoStaff.connectArpeggios = ##t
-    \property PianoStaff.Arpeggio \override #'print-function = \arpeggioBracket
-
-    \property PianoStaff.InstrumentName \set #'font-size = #6
-    \property PianoStaff.InstrumentName \set #'font-shape   = #'italic
-    \property PianoStaff.InstrumentName \set #'font-magnification   = #3
-    
-    \property PianoStaff.instrument="2. "
-    \context Staff = up {
-      \property Staff.DynamicLineSpanner \override #'direction = #-1
-      \clef G <<\global \context Voice=upv \righta >>
-    }
-    \context Staff = mid {
-    \property Staff.InstrumentName \set #'font-size = #0
-    \property Staff.InstrumentName \set #'font-shape   = #'upright
-    \property Staff.InstrumentName \set #'font-magnification   = #1
-    \property Staff.InstrumentName \set #'extra-offset = #'(0 . 6)
-   % \property Staff.instrument="\\begin{turn}{-90}{Rechte Hand}\\end{turn}"
-    \property Staff.instrument= \markup { \column < Rechte Hand >  }
-      \clef F <<\global \context Voice=midv \rightb>>
-    }
-      \context Staff = down {
-        \property Staff.DynamicLineSpanner \override #'direction = #1
-        \clef F
-	<< \global \context Voice=lva \lefta \context Voice=lvb \leftb >>
-    }
-  >>
-  \paper {
-    interscoreline = 0.0
-    interscorelinefill = 1
-    indent = 0.5 \in
-    % textheight = 29.8 \cm
-    pagenumber = no
-    linewidth = 17.0 \cm
-    \translator {
-      \RemoveEmptyStaffContext
-    }
-    \translator {
-      \ScoreContext
-      SpacingSpanner \override #'common-shortest-duration = #(ly:make-moment 1 8)
-    }
-    \translator {
-      \PianoStaffContext
-      VerticalAlignment \override #'forced-distance = #13.0
-    }
-  }
-  \midi { \tempo 8=100 }
-}
-
-
diff --git a/input/mutopia/W.A.Mozart/GNUmakefile b/input/mutopia/W.A.Mozart/GNUmakefile
deleted file mode 100644
index f4fc66c5e0..0000000000
--- a/input/mutopia/W.A.Mozart/GNUmakefile
+++ /dev/null
@@ -1,10 +0,0 @@
-# 
-
-depth = ../../..
-
-examples=mozart-hrn-3
-LOCALSTEPMAKE_TEMPLATES=ly mutopia
-
-include $(depth)/make/stepmake.make
-
-
diff --git a/input/mutopia/W.A.Mozart/mozart-hrn-3.ly b/input/mutopia/W.A.Mozart/mozart-hrn-3.ly
deleted file mode 100644
index 6c18d94845..0000000000
--- a/input/mutopia/W.A.Mozart/mozart-hrn-3.ly
+++ /dev/null
@@ -1,41 +0,0 @@
-\header{
-  title =	 "Konzert Nr. 3 Es dur"
-  subtitle = "f\\\"ur Horn und Orchester"
-  composer =	 "Wolfgang Amadeus Mozart (1756-1792)"
-  enteredby =	 "HWN"
-  opus = "KV 447"
-
-  copyright = "public domain"
-  instrument = "Horn in F"
-  editor = "Henri Kling"
-  mutopiatitle = "Horn Concerto 3"
-  mutopiacomposer = "W.A.Mozart"
-  mutopiaopus = "KV447"
-  style = "classical"
-  maintainer = "hanwen@cs.uu.nl"
-  maintainerEmail = "hanwen@cs.uu.nl"
-  maintainerWeb = "http://www.cs.uu.nl/~hanwen/"	
-  lastupdated = "2002/May/21"
-  source = "Edition Breitkopf 2563"
-  footer = "Mutopia-2002/05/21-25"
-
-  tagline =  "\\parbox{\hsize}{\\thefooter\\quad\\small This music is part of the Mutopia project, \\texttt{http://sca.uwaterloo.ca/Mutopia/}. It has been typeset and placed in the public domain by " + \maintainer + ". Unrestricted modification and redistribution is permitted and encouraged---copy this music and share it!}"
-
-}
-%{
-
-This is the Mozart 3 for horn.  It's from an Edition Breitkopf EB
-2563, edited by Henri Kling. Henri Kling (1842-1918) was a horn
-virtuoso that taught in Geneva. 
-
-%}
-
-\version "2.1.7"
-
-\include "mozart-hrn3-defs.ly"
-\include "mozart-hrn3-allegro.ly"
-\include "mozart-hrn3-romanze.ly"
-\include "mozart-hrn3-rondo.ly"
-
-
-
diff --git a/input/mutopia/W.A.Mozart/mozart-hrn3-allegro.ly b/input/mutopia/W.A.Mozart/mozart-hrn3-allegro.ly
deleted file mode 100644
index f2ba62f4e0..0000000000
--- a/input/mutopia/W.A.Mozart/mozart-hrn3-allegro.ly
+++ /dev/null
@@ -1,205 +0,0 @@
-#(ly:set-option 'old-relative)
-\version "2.1.7"
-\include  "mozart-hrn3-defs.ly"
-
-allegro =
-	\notes
-	\relative c'
-{
-	\time 4/4
-	\key c \major
-	\partial 4
-	r4 
-	|
-	R1*4
-	c'2^"Tutti" g
-	c, r
-	R1*1
-	r8 g' g g  g g e c
-	g'4 g, r2
-	R1*18
-	r2 r4^"Solo" g'4 |
-	\mark "A"
-	e'4. ( c8)  f[ (d c  b) ]
-	 b[( c)] g4 r8  g[ c e]
-	g2.   g16[( f e  f)]
-	dis4 ( e4) r8  c8[-. c-. c-.]
-	c4.(  d16[ e]  f4  e)
-	a,( d g, c)
-	d-. d-. \grace {
-  \property Voice.Stem \override #'stroke-style = #"grace"
-   e16( 
-  \property Voice.Stem \revert #'stroke-style }
- d8.[) c16 d8. e16]
-	c4 r r2
-	R1*3
-	c,2 ~  c8[ e g c]
-	 c[  b ] b4 r2
-	 c,8[ ( e) g c]  e[( g) e c]
-	 c[( b)] b4 r2
-	c4.( g8 e'4. c8)
-	 g'[( d) ] d4 r4 d
-	 d8[ ( c)] c4.(  d16[ e]  d8[  c)]
-	 c8[(\trill  b)] b4 r2 |
-	d2( ~   d8[ e16 d]  c8[  b)] |
-	 b[( a)] a4 r8  a[ a a]
-	a4( cis e  g)
-	\grace {
-  \property Voice.Stem \override #'stroke-style = #"grace"
-   \longgrace g16( \endlonggrace 
-  \property Voice.Stem \revert #'stroke-style }
-
-	 fis8[)( e16  d)] d4-. r2 | 
-	\mark "B"
-	R1*3
-	r2 r4  d8[(_\markup { \italic \bold "con espressione" } b) ]
-	 a[(  g) d'(  b)]  a[(  g) e'(  c) ]
-	 b8[(  a)] a4 r4  a8[ a]
-	 a[( \< b c cis\!\> ]  d4  c\!)
-	 ais8[( b)] r8 \cresc b  b[( c)] r c
-	 cis[ ( d)] r4 r2
-	\endcresc g,1\f ~ g2 ~  g8[ a16 b]  c[( d) e c]
-	%% 64
-	f4-. d-. b-. g-.
-	R1
-
-	c,2\p e4 g c \cresc e g4. e8 |
-	\endcresc d4.\f  e16[ fis]  g[ ( fis) e d]  c[( b) a g]
-
-	<< a1(\trill
-	  { s2 \grace {
-  \property Voice.Stem \override #'stroke-style = #"grace"
-    g16[ a] 
-  \property Voice.Stem \revert #'stroke-style }
- } >>
-	\mark "C"
-	 g4) r r2
-	R1*15
-	\mark "D"
-	bes2\mf d4 f
-	g,2~  g8[ g' es c]|
-	bes4(  a4.)  c8[( d  es)]
-	cis4( d) r8  bes[ (c  d)]
-	es2 ( d4) r
-	es2 ( d4) r
-	 c8[( g' es  c)] bes4( c)
-	c4.( cis8  d4) r
-	R1*2
-	es1~es1|
-	e!
-	d
-	c
-	c,
-	e'
-	e,
-	c'2  b8[( a gis  a)]
-	 gis8[ e gis b ] e4 r |
-	r8  e,[ a c] dis4 r
-	r8  e,[ a c] dis4 r
-	r8  e,[ g b] e4 r
-	r8  fis,[ b dis] fis4 r
-	r8  gis,[ b d] f4 r
-	r8  g,[ b d_\ritenuto ] f4 r
-	\mark  "E"
-	R1*8
-	r2 r8  g,[ g g]
-	e'4.( c8)  f[( d c  b)]
-	 b[( c)] g4 r8  g[ c e] |
-	g2.   g16[( f e  f)]
-	dis4( e) r8  c[-. c-. c-.]
-	c4.(  d16[ e] f4  e)
-	a, ( d g,  c)
-	d d 
-	    \grace {
-  \property Voice.Stem \override #'stroke-style = #"grace"
-   e8( 
-  \property Voice.Stem \revert #'stroke-style }
-
-	   d8.[) c16 d8. e16] 
-	c4 r r2
-	\mark "F"
-	R1*3
-	c,2~ c8[ e g c]
-	 c8[( b)] b4 r2
-	 c,8[ e g c ]  e[ ( g) e c]
-	 c[( b)] b4 r2
-	c2 (bes  a)  a8[(b c  cis)]
-	d2( ~  d8[ e16 d] \grace {
-  \property Voice.Stem \override #'stroke-style = #"grace"
-   \longgrace d16( \endlonggrace 
-  \property Voice.Stem \revert #'stroke-style }
- c8[) b16  c)]
-	\grace {
-  \property Voice.Stem \override #'stroke-style = #"grace"
-   \longgrace c16 \endlonggrace 
-  \property Voice.Stem \revert #'stroke-style }
- b8[( a16  g)] g4 r2 |
-	R1*3
-	r2 r4  g'8[( e)]
-	\mark "G"
-	 d[( c) g'( e)]  d[( c) a'( f)]
-	 e[( d)] d4 r  d8[ d]
-	d4(~  d16[ e d  e)]  g8[( f) e d] |
-	c4 r r2
-	R1
-	c1 ~
-	c |
-	 c8[-. c-.] r c-.  cis[( d)] r\cresc d-. |
-	 dis[( e)] r e-.  e[( f)] r f-. |
-	g4-.\f\endcresc  e-. c-. bes-. |
-	g-.\ff e-. c-. r |
-	a'2 ~  a8[_""_\markup { \bold \italic "sempre " \dynamic "f" }  b16 c]  d[( e d  e)]
-
-	
-	f4. ( d8)  f8[ ( d) f d]
-	 c[ (e]  g2) \grace {
-  \property Voice.Stem \override #'stroke-style = #"grace"
-   \longgrace f16(  \endlonggrace 
-  \property Voice.Stem \revert #'stroke-style }
-  e8[)( d16  c)]
-
-	<< d1\trill (
-	  { s2 \grace {
-  \property Voice.Stem \override #'stroke-style = #"grace"
-    c16[ d] 
-  \property Voice.Stem \revert #'stroke-style }
- } >>
-	
-	 c4) r r2
-	R1 |
-	\mark "H"
-	\times 2/3 {  c8[ b a ] } \times 2/3 {  g[ a b] }
-	  \times 2/3 {  c[ d e] } \times 2/3 {  f[ e d] } |
-	\times 2/3 {  c[ b a ] } \times 2/3 {  g[ a b] }
-	  \times 2/3 {  c[ d e] } \times 2/3 {  f[ e d] }|
-	c4 \times 2/3 {  r8  g'[( e)]} c4 \times 2/3 {  r8  e[ ( c)]} |
-	g4 \times 2/3 {  r8  c8[( g)] } \times 2/3 {  e[ ( g) e-. ] } \times 2/3 {  c[ ( e) c-.] }|
-	g4 r8 g'\f  a[ b c d]|
-
-	<< d1(\trill
-	  { s2 \grace {
-  \property Voice.Stem \override #'stroke-style = #"grace"
-    c16[ d] 
-  \property Voice.Stem \revert #'stroke-style }
- }  >>
-	 c4) r r2
-	R1*3
-
-	c4.^\fermata_"Cadenza ad lib." ( d8) d4.\trill^\fermata (  c16[  d)] 
-	c4 r r2
-	R1*8
-	r4  c8.[^"tutti"\f c16] c4 c
-	c  c,8.[ c16] c4 c|
-	c2 r2 \bar "|."
-	
-}
-
-
-\score
-{
-	\notes { \transpose c' bes \allegro }
-	\paper{ }
-	\header { piece = "allegro" opus = "" }	
-	\midi{ \tempo 4=90 }
-}
-
diff --git a/input/mutopia/W.A.Mozart/mozart-hrn3-defs.ly b/input/mutopia/W.A.Mozart/mozart-hrn3-defs.ly
deleted file mode 100644
index a2070ed616..0000000000
--- a/input/mutopia/W.A.Mozart/mozart-hrn3-defs.ly
+++ /dev/null
@@ -1,59 +0,0 @@
-% #(ly:set-point-and-click 'line-column)
-
-longgrace = \property Voice.Stem \override #'stroke-style = #'()
-endlonggrace = \property Voice.Stem \revert #'stroke-style
-ritenuto = \markup { \italic  "rit." }
-
-\version "2.1.7"
-  
-cresc = \notes {
-    #(ly:export (make-event-chord (list (make-span-event 'CrescendoEvent START)))) 
-    \property Voice.crescendoText = \markup { \italic \bold "cresc." }
-    \property Voice.crescendoSpanner = #'dashed-line
-}
-
-%%
-%% TODO: a better mechanism for tweaking Grace settings.
-%%
-
-startGraceMusic = \sequential { 
-    \startGraceMusic 
-    \property Voice.Beam \override #'space-function
-       = #(lambda (beam mult) (* 0.8 0.8))
-    \property Voice.Beam \override #'thickness = #(* 0.384 (/ 0.6 0.48))
-}
-
-stopGraceMusic= \sequential {
-    \property Voice.Beam \revert #'thickness
-    \property Voice.Beam \revert #'space-function
-    \stopGraceMusic
-}
-
-\paper{
-    \translator {
-        \ScoreContext
-        skipBars = ##t
-        midiInstrument = #"french horn"
-        %% try to mimic Breitkopf
-        RehearsalMark \override #'padding = #1
-        MultiMeasureRest \override #'padding = #0.5
-        restNumberThreshold = #1
-
-	RehearsalMark \override #'font-series = #'bold
-	RehearsalMark \override #'font-size = #6
-
-        Beam \override #'thickness = #0.6
-        Beam \override #'space-function = #(lambda (beam mult) 0.8)
-        Slur \override #'beautiful = #0.3
-    }
-    \translator {
-        \StaffContext
-        minimumVerticalExtent = #'(-4.5 . 4.5)
-    }
-    % #(define fonts my-sheet)
-
-    indent = 10. \mm
-    linewidth = 189. \mm
-
-}
-
diff --git a/input/mutopia/W.A.Mozart/mozart-hrn3-romanze.ly b/input/mutopia/W.A.Mozart/mozart-hrn3-romanze.ly
deleted file mode 100644
index 64b08c77b7..0000000000
--- a/input/mutopia/W.A.Mozart/mozart-hrn3-romanze.ly
+++ /dev/null
@@ -1,99 +0,0 @@
-#(ly:set-option 'old-relative)
-
-\version "2.1.7"
-\include  "mozart-hrn3-defs.ly"
-
-romanze = \notes \relative c' {
-	\key f \major
-	\time 2/2
-	\property Score.skipBars = ##t
-
-	c'4.( _\markup { \dynamic "p" \italic { "" con molto espressione } }
-		 f8) a,4 a
-	 bes8[( c d bes]  g4) r8 g
-	a r bes r c r  d[( bes)]
-	a2(  g8[) a( bes  b)]
-	c4. ( f8) a,4 a |
-	% 6 
-	 bes8[ (c d bes)] g4 r8 c,
-	 c8[( e g  bes)]  a[( c f  d)]
-	c r e r f r r4
-	\mark "A"
-	R1*8
-	g4.\mf f8   e[ d c bes]
-	% 18
-	 bes[( a d  c)] c4 r
-	R1*2
-	g'4. f8  e[ d c bes]
-	 bes[ (a d  c)] c4 r
-	R1
-	% 25
-	 c16[ ( d c  d)]  e[ ( f e  f)]  g[( e) c-. c-.]  f[( d) b-. b-.]
-	 c16[\p ( d c  d)]  e[ ( f e  f)]  g[( e) c-. c-.]  f[( d) b-. b-.]
-	 c8[ \< c, c c]  c[ c c c\!]
-	\mark "B"
-	c1\f
-	R1*9
-	f'4.(\p  d8) b4 r8 g
-	g'4.( e8) c4 r8 cis |
-	% 39
-	d4(~  d16[ e d  e)]  f8[ ( d) f( d)]
-	c2( b4) r
-	R1*4
-	e4. ( g8) c,4 ( cis)
-	 d8[( e f  d)] b4 r8 g
-	 c[ ( e) g g]  g[( f e  d)]
-	c4(
-	\grace {
-  \property Voice.Stem \override #'stroke-style = #"grace"
-   \longgrace e16 \endlonggrace 
-  \property Voice.Stem \revert #'stroke-style }
-
-	 d8.[  c16) \< ]  c8[ c-.( c-. c)-.]\!
-	\mark "C"
-
-	%% this is a trick to get the sfp-s to align. 
-	\property Voice.Hairpin \override #'transparent = ##t
-	des1\sfp \> 
-	g,1\sfp\!  \> 
-	c\sfp \!   \> 
-	c,\sfp\!
-	\property Voice.Hairpin \revert #'transparent 
-	R1*3
-	r8  c[\p c c] c2~
-	 c8[ c' c c] c2~
-	 c8[ \< e( g f]  e[  d\!\> c bes]
-	\mark "D"
-	a4\!) r r2
-	R1*3
-	c4.\p ( f8) a,4 a |
-	 bes8[ (c d bes)] g4 r8 c,
-	 c8[( e g  bes)]  a[( c f  d)]
-	c r e r f4 r4
-	R1*3
-	r2 r4 r8 c,8
-	 c8[( e g  bes)]  a[( c f  d)]
-	c r e r f4 r4	
-	g,1
-	c,2 c4. c8
-	 c8[( e g  bes)]  a[( c f  d)]
-	c r e r f4 r4			% -. ? 
-
-	R1
-	c8-.   r e-. r f4 r4
-
-	% Finish with F if played separately 
-	c8-.(   r c,-. r  c4) r4| 
-	\bar "|."
-}
-
-
-
-\score
-{
-    \notes { \transpose c' bes \romanze }
-	\header { piece = "romanze" opus = "" }	
-	\midi{ \tempo 4 = 70  }
-	\paper{}
-}
-
diff --git a/input/mutopia/W.A.Mozart/mozart-hrn3-rondo.ly b/input/mutopia/W.A.Mozart/mozart-hrn3-rondo.ly
deleted file mode 100644
index ef5d0d8929..0000000000
--- a/input/mutopia/W.A.Mozart/mozart-hrn3-rondo.ly
+++ /dev/null
@@ -1,204 +0,0 @@
-#(ly:set-option 'old-relative)
-\version "2.1.7"
-
-% \include "mozart-hrn3-defs.ly"
-
-rondotheme = \notes \relative c' {
-	 c'8[ c c]  c[ c c]
-	c4( cis8  d) r g,
-	 d'8[ d d]  d[ d d]
-	d4( dis8  e) r c |
-	 c[( d) e]  f[ g a]
-	 g[ ( e) c] c4 d8
-	e4( d8) e4( f8)
-	e4.( d8) r r |
-}
-
-lipbreaker = \notes \relative c'
-{
- 	r8  g'[-. g-.]  c[( e) g,-.]
-	 c[( e) g,-.]  c[( e) g,-.]
-	 c[ c, c]  c[ c c]
-	 c[ c c]  c[ c c]
-}
-
-rightsixteenth = { \property Voice.stemLeftBeamCount = 1
-  \property Voice.stemRightBeamCount = 2 }
-leftsixteenth = { \property Voice.stemLeftBeamCount = 2
-  \property Voice.stemRightBeamCount = 1 }
-bothsixteenth = { \property Voice.stemLeftBeamCount = 2
-  \property Voice.stemRightBeamCount = 2 }
-
-rondo = \notes 	\relative c'
-{
-	\partial 8
-	\time 6/8
-	\key c \major
-	
-	g'8\p |
-	
-	\rondotheme
-	
-	R2.*13 |
-	r8 r^\fermata d  d[ e f]
-	 g[ ( e) c-.]  d[( e) d-.]
-	c4 c8  d[ e f]
-	 g[( e) c-.]  d[( e) d-.]
-	c4 r8 r4 r8 |
-	R2.*7
-	\mark  "A"
-	c4.\p \grace {
-  \property Voice.Stem \override #'stroke-style = #"grace"
-   e16( 
-  \property Voice.Stem \revert #'stroke-style }
-  d8[) c d]
-	c4 r8 r4 r8
-	e4. \grace {
-  \property Voice.Stem \override #'stroke-style = #"grace"
-   g16( 
-  \property Voice.Stem \revert #'stroke-style }
-  f8[) e f]
-	e4 r8 r4 r8
-	g4. e4 c8
-	g2.~
-	 g8[ a b]  c[ d e ]
-	e4.( d8) r r
-	R2.*4
-	e2.~ |
-	 e8[ d c]  c[ b a]
-	d2.~
-	 d8[ c b]  b[ a g]
-	g'4( e8) b4( cis8)
-	\mark "B"
-	d4 r8 r4 r8
-	R2.*3 |
-	r8  d[-. d-.]  d[( g) d-.]
-	 d[( g) d-.]  d[ d d]
-	 d[( g)] r r4 r8
-	R2.*1
-	\lipbreaker
-	c4 r8  c'[ d e]
-	d4( g8)  c,[ d e]
-	d4 r8 r4 r8
-	R2. |
-	r4 r8  c[-. d-. e-.]
-	d4( g8)  c,[ d e]
-	 d[( g) fis]  e[ d c]
-	 b[ ( e) d]  c[ b a]
-	\mark "C"
-	g4 r8 r4 r8
-	R2. |
-	%
-	r8  g[\f g]  g[(  b) b-.]
-	 b[( d) d-.]  d[( g) g-.]
-	g2.~
-	 g8[ \> a g]  f[ e d]
-	<< \rondotheme
-	  { s8\!\p } >>
-	  
-	R2.*12
-	r4 r8 r4 c8
-	\mark "D"
-	c4 f8 c4 a8
-	a4.~a4 a8
-	bes4 c8 d4 bes8
-	g4. ~ g8 r r
-	R2.*3
-	r4 r8 r4 c8
-	a4. c
-	f ~  f8.[ \rightsixteenth e16(  \bothsixteenth d  c)]
-	bes4 g8 e4 g8
-	c,4. ~ c8 r r
-	R2.*3| 
-	r4 r8 r4 c'8
-	b4( c8) b4( c8)
-	bes4. ~ bes4 g8
-	a4 ( c8) f4 ( b,8)
-	d4. ( c8) r r
-	R2.*3| 
-	r4 r8 r4 c8
-	b4( c8) b4( c8)
-	bes4. ~ bes4 g8
-	a4 c8  f[ ( d) b!]
-	d4. ( c8) r r
-	\mark "E"
-	R2.*9  |
-	\lipbreaker 
-	c8[ c' c] c4.~
-	c8[ c d]  e[ e fis] 
-	g4 r8 r4 r8
-	R2.
-	r8  g,[ g]  g[ g g] |
-	es'4. ~  es8[ d c]
-	b4 r8 r4 r8
-	R2. |
-	r8  g[ g]  g[ g g]
-	es'4. ~  es8[ d c]
-	\cresc b4.  c4. d4. e4.
-	\mark "F"
-	\endcresc
-	
-	f2.\f ~ |
-	f4 r8 r4 r8
-	r8  g,[\> g]  g[ g g]
-	
-	% Edition breitkopf says a-flat (silly!)
-	 fis[  g gis] 
-		  a[ bes b]\!
-
-	%% EB does the slur in the Rondo differently from the 1st adn 2nd time.
-	%% why. Should check with MS.
-	<< \rondotheme
-	  { s8\p } >>
-	R2.*7
-	\mark "G"
-	R2.*4
-	c,4.\mf c4 c8
-	c4. e4 c8
-	g'4. g4 g8
-	g4. g,4 g8
-	c4 r8 r4 r8
-	r4 r8 r4 g'8
-	 c[ ( e) g,-.] 	 c[ ( e) g,-.]
-	 c[ ( e) g,-.] 	 c[ ( e) g,-.]
-	\mark "H"
-	\cresc g'2.  bes,2.
-	a4.  b16[ c d e f g]
-	a4. f4 d8
-	[\endcresc c8\f g' e]  c[ g e]
-	 c[ e' c]   g[ e c]
-	g4 r8  g''8[ e c]
-
-	
-	<< d2.(\trill
-	  { s2 	\grace {
-  \property Voice.Stem \override #'stroke-style = #"grace"
-     c16[ d] 
-  \property Voice.Stem \revert #'stroke-style }
- } >>
-	
-	
-	 c4) r8 r4 r8
-	R2.*5
-	r8 r8^\fermata d8\p  d[ e f]
-	 g[ ( e) c]  d[( e) d]
-	\cresc  c[  c c]  d[ e f]
-	 g[( e) c]  d[( e) d]
-	\endcresc c4\f  r8 r4 r8
-	R2.*5
-	 c8[\f c, c]  c[ c c]
-	c4 r8 c4 r8
-
-        %This is technically incorrect, since we started with an 8th
-	% upstep, but both eulenburg and EB do this as well.
-	c4 r8 r4 r8 \bar "|."		
-}
-
-\score
-{
-    \notes { \transpose c' bes	\rondo }
-	\header { piece = "rondo" opus = "" }
-	\midi{ \tempo 4 = 100 }
-	\paper { }
-}
-
diff --git a/input/mutopia/claop.py b/input/mutopia/claop.py
deleted file mode 100644
index efef518631..0000000000
--- a/input/mutopia/claop.py
+++ /dev/null
@@ -1,306 +0,0 @@
-import sys
-
-
-copyright = """copyright 1992. Peter Wallin. Verbatim redistribution
-permitted """
-
-
-
-"""
-
-This file produces the Score for CLA(O)P II  -- a piece by
-Peter Wallin (pwallin@post8.tele.dk).
-
-The score produced by this file is
-copyright 1992. Peter
-Wallin. Verbatim redistribution permitted
-
-
-
-
-From: Rune Zedeler <rune@zedeler.dk>
-Sender: lilypond-devel-admin@gnu.org
-To: LilyPond Devel <lilypond-devel@gnu.org>
-Subject: CLA(O)P II
-Date: Wed, 12 Jun 2002 02:14:05 +0200
-
-The concert went well.
-I talked to the composer and he agreed to include the score in lilypond 
-as long as his name was maintained and as long as he kept the copyrights 
-- that is people are not allowed to make changes to the score.
-
-I think including CLA(O)P II is a Good Thing because it stress tests 
-lilypond very well. This is also why I think that including only an 
-excerpt from it is stupid.
-I am not sure how the inclusion should be.
-The raw lilypond file is 750k; gzip'ed 40k.
-Alternatively one could include the generating c-file into lilypond.
-Or perhaps we should just wait till I manage to redo it in scheme... :-)
-
--Rune
-
-"""
-
-
-
-#//set to 1, 385 to typeset the whole score
-start_measure =1
-no_measures = 385
-voices = 48
-
-durs = ["16","8","8.","4"]
-grund = [
-  "x x x x xx x",
-  "x x xx xx x xx x",
-  "xx xx x xx xx x xx xx x ",
-  
-  "x x x xx xx ",
-  "x xx xx x xx xx ",
-  "x xx x xx xx x xx xx x x",
-  
-  "x x xx xx x ",
-  "xx xx x xx xx x ",
-  "xx x xx xx x xx xx x xx ",
-  
-  "x xx xx x x ",
-  "x xx x xx xx x x",
-  "x x xx xx x xx xx x xx x",
-  
-  "xx xx x x x ",
-  "xx x xx xx x xx ",
-  "x xx xx x xx xx x xx xx ",
-  
-  "x xx x x x x",
-  "x x xx xx x xx x",
-  "xx xx x xx xx x xx xx x ",
-  
-  "xx x x x xx ",
-  "x xx xx x xx xx ",
-  "x xx x xx xx x xx xx x x",
-  
-  
-  "x x x x xx x",
-  "xx xx x xx xx x ",
-  "xx x xx xx x xx xx x xx ",
-  
-  "x x x xx xx ",
-  "x xx x xx xx x x",
-  "x x xx xx x xx xx x xx x",
-  
-  "x x xx xx x ",
-  "xx x xx xx x xx ",
-  "x xx xx x xx xx x xx xx ",
-  
-  "x xx xx x x ",
-  "x x xx xx x xx x",
-  "xx xx x xx xx x xx xx x ",
-  
-  "xx xx x x x ",
-  "x xx xx x xx xx ",
-  "x xx x xx xx x xx xx x x",
-  
-  "x xx x x x x",
-  "xx xx x xx xx x ",
-  "xx x xx xx x xx xx x xx ",
-  
-  "xx x x x xx ",
-  "x xx x xx xx x x",
-  "x x xx xx x xx xx x xx x",
-  
-  "x x x x xx x",
-  "xx x xx xx x xx ",
-  "x xx xx x xx xx x xx xx ",
-  
-  "x x x xx xx ",
-  "x x xx xx x xx x",
-  "xx xx x xx xx x xx xx x " 
-]
-
-accents = ''
-accstr = '' 
-
-
-def stemme(st) :
-  adr = [0] * (385*16)
-  pos = st*48+44
-
-  for i in range(0,100):
-    adr[384*16-i*28] = ord ('X')
-
-  for k in range(0,48):
-    if k: 
-      for j in range(0,8):
-        adr[pos] = 0
-	pos += 1
-	
-    for j in range(0,4):
-      for c in grund[k]:
-	  if c ==' ' :
-	      adr[pos] = 0
-	  else:
-	      adr[pos] = 3-j+ord ('a')
-	  pos += 1
-	  
-  for i in range(0,385*16):
-    ac = accents[48*4+i-((48+24-st)%48)*4]
-    if ac:
-      adr[i]=ac
-  
-  return adr
-
-
-def print1(ch) :
-  accstr=""
-  if ch >= ord('A') and ch <=ord('D'):
-    ch += ord('a')-ord('A')
-    accstr="->"
-
-  namestr = ''
-  cr = chr (ch)
-  
-  if cr=='a':
-      namestr="a"
-  elif cr=='b':
-      namestr="b"
-  elif cr=='c':
-      namestr="d'"
-  elif cr=='d':
-      namestr="e'"
-  elif cr=='X':
-      namestr="\\property Staff.NoteHead \\override #'style = #'cross c'"
-      accstr="-^ \\property Staff.NoteHead \\revert #'style"
-  else:
-      print 'foo', cr, chr(ch), ch == 'd', "A%sA" % cr
-      raise 'foo'
-
-  return (namestr,accstr)
-
-
-namestr = ''
-accstr = ''
-
-def print4(ptr):
-    val = reduce (lambda x,y : x|y,  ptr)
-#    sys.stderr.write ('%d ' % val)
-    if not val:
-	sys.stdout.write ("r4 ")
-    else:
-	dur=-1
-
-	global namestr
-	global accstr
-	if ptr[0]==0:
-	    sys.stdout.write ("~")
-            (namestr, accstr) = print1(val)
-
-        for c in ptr:
-	    if c==0:
-		dur += 1
-	    else:
-		if dur>=0:
-		    sys.stdout.write( "%s%s%s " % (namestr,durs[dur],accstr))
-		(namestr, accstr)  = print1(c)
-		dur=0
-      
-        sys.stdout.write( "%s%s%s "% (namestr,durs[dur],accstr))
-  
-
-
-def print8(ptr) :
-    val = reduce (lambda x,y : x|y,  ptr)
-    if val:
-	print4(ptr[0:4])
-	print4(ptr[4:8])
-    else:
-	sys.stdout.write ("r2 ")
-
-
-def print16(ptr):
-    val = reduce (lambda x,y : x|y,  ptr)
-    if val:
-	print8(ptr[0:8])
-	print8(ptr[8:16])
-    else:
-	sys.stdout.write("R1 ")  
-
-accents = [0] *(500*16)
-for i in range(0,32):
-    pos=i*12*16+4*48
-    accents[pos]=ord('D')
-    if(i<31) :
-	if(i>0):
-	    accents[pos+4*12]=ord('A')
-	accents[pos+4*23]=ord('C')
-	accents[pos+4*35]=ord('B' )
-
-
-sys.stdout.write ('%%{\n %s \n %%}' % copyright)
-sys.stdout.write (r"""
-\include "paper11.ly"
-
-\header {
-    title = "CLA(O)P II"
-    composer = "Peter Wallin (1992-93)"
-    copyright = "Copyright  (1992-93) Peter Wallin, verbatim redistribution permitted"
-}
-
-
-""")
-
-
-
-
-
-for st in range(1,voices+1):
-    str=stemme(st)
-    ststr=chr((st-1)/24+ord('A')) + chr ((st-1)%24+ord('A'))
-    sys.stdout.write( """
-
-stemme%s = \\notes {\n\\clef percussion
-\\property Staff.instrument = \"%d\"\n
-\\property Staff.instr = \"%d\"\n
-\\property Score.currentBarNumber = #%d\n""" % (ststr,st,st,start_measure))
-    
-    for i in range(start_measure-1, start_measure-1+no_measures):
-      print16(str[i*16:i*16+16])
-      sys.stdout.write (" |\n")
-    
-    sys.stdout.write ("\\bar\"|.\" }\n")
-    
-
-sys.stdout.write (r"""
-\score {
-    \notes <
-	\property Score.BarNumber \override #'padding = #2.5
-	\property Score.autoBeamSettings \override
-	  #'(end * * * *) = #(ly:make-moment 1 4)
-	\property Score.skipBars = ##t
-	\context StaffGroup <
-	    \property StaffGroup.Stem \override #'direction = #1
-""")
-
-
-for   st in range(1,voices+1):
-  ststr=chr((st-1)/24+ord('A')) + chr ((st-1)%24+ord('A'))
-  ststr = 'stemme' + ststr
-  sys.stdout.write (r"""\context Staff="%s" \%s
-""" % (ststr,ststr))
-
-sys.stdout.write (r""">
-    >
-    \paper {
-	linewidth = 26.0\cm
-	indent = 0
-	textheight = 38.0\cm
-	%hsize = 30.0 \cm
-	%vsize = 42.0 \cm
-
-	\translator {
-	    \StaffContext 
-	    StaffSymbol \override #'line-count  = #3
-            minimumVerticalExtent = #'(-3 . 3)
-	}
-    }
-    
-}
-""")
diff --git a/input/no-notation/GNUmakefile b/input/no-notation/GNUmakefile
deleted file mode 100644
index 7bdc0ec440..0000000000
--- a/input/no-notation/GNUmakefile
+++ /dev/null
@@ -1,8 +0,0 @@
-depth = ../..
-
-EXTRA_DIST_FILES=README
-LOCALSTEPMAKE_TEMPLATES=ly mutopia
-
-include $(depth)/make/stepmake.make 
-
-
diff --git a/input/no-notation/README b/input/no-notation/README
deleted file mode 100644
index d162aad83c..0000000000
--- a/input/no-notation/README
+++ /dev/null
@@ -1,9 +0,0 @@
-These examples test various non-typesetting things. Since they 
-do not generate output, they are not in test/ or regression/
-
-Some (notably parse*.ly) are just error/warning generation tests
-and should remain here.
-
-Some (notably midi-*.ly) test midi output, which does not usually
-get tested in ../regression files.
-
diff --git a/input/no-notation/bar-check.ly b/input/no-notation/bar-check.ly
deleted file mode 100644
index 184525ec0b..0000000000
--- a/input/no-notation/bar-check.ly
+++ /dev/null
@@ -1,13 +0,0 @@
-\version "2.1.7"
-
-\header {
-
-texidoc = "skipTypesetting doesn't affect bar checks."
-
-}
-
-\score { \notes {
-	\property Score.skipTypesetting = ##t
-	c4 c4
-	|
-	c4 c4 }}
diff --git a/input/no-notation/beam-warn.ly b/input/no-notation/beam-warn.ly
deleted file mode 100644
index 82ae4a62be..0000000000
--- a/input/no-notation/beam-warn.ly
+++ /dev/null
@@ -1,11 +0,0 @@
-\version "2.1.7"
-
-\header	{
-
-texidoc = "The first duration following a beam-open request is checked if it is short enough."
-
-}
-
-\score {
-  \notes { [c4 c] }
-}
diff --git a/input/no-notation/denneboom.ly b/input/no-notation/denneboom.ly
deleted file mode 100644
index e3d5f91b34..0000000000
--- a/input/no-notation/denneboom.ly
+++ /dev/null
@@ -1,116 +0,0 @@
-\version "2.1.21"
-\header{
-filename = 	 "denneboom.ly"
-enteredby = 	 "jcn"
-copyright = 	 "public domain"
-}
-%{ file tests silly line shapes %}
-
-#(set-global-staff-size 20)
-
-
-
-oden = \lyrics{ 
-	O |
-	den- ne- boom, o | 
-	den- ne- boom  Wat |
-	zijn uw tak- ken | 
-	won- der- schoon 
-}
-
-ikheb = \lyrics{
-	Ik | 
-	heb u laatst in_'t |
-	bos zien staan  toen |
-	zat- en er geen |
-	kaars- jes aan 
-}
-
-ugloeit = \lyrics{
-	U |
-	gloeit in bar- re | 
-	win- ter- tijd, als |
-	sneeuw op aar- de | 
-	licht ge- spreid 
-}
-
-oboom = \notes\transpose c c'{
-	g,8 |
-	c8. c16 c4. d8 | 
-	e8. e16 e4. e8 | 
-	d  e f4 b, | 
-	d8. c16 c4 r8
-}
-
-bos = \notes\transpose c c'{
-	g8 | 
-	g e a4. g8 | 
-	g8. f16 f4 r8 f8 |
-	f d g4. f8 | 
-	f8. e16 e4 r8
-}
-
-
-melody = \notes{
-	\oboom
-	\oboom
-	\bos
-	\oboom
-}
-
-
-verseOne = \notes{
-	\oden
-	\oden
-	\ikheb
-	\oden
-}
-
-verseOneStaff = \context Lyrics = one 
-	\verseOne
-
-
-verseTwo = \notes{
-	\oden
-	\oden
-	\ugloeit
-	\oden
-}
-
-verseTwoStaff = \context Lyrics = two 
-	\verseTwo
-
-
-denneboomShape = \paper{ 
-	\paperTwenty
-	indent = 20. \mm
-
-	% UGH -- THIS IS HAIRY 
-	#'margin-shape = #(map
-		(lambda (x) (cons-map mm-to-pt x)) 
-		'((70.0 .  20.)
-		 (65.0 .  30.0)
-		 (57.5  .  45.0)
-		 (50.0 .  60.0) 
-		 (42.5  .  75.)  
-		 (35.0 .  90.)
-		 (27.5  .  105.)
-		 (20.0 .  120.0)
-		 (10.0 .  140.0) 
-		 (65.0 .  30.0))
-	)
-
-	gourlay_maxmeasures = 30.
-	arithmetic_basicspace = 3.8
-	arithmetic_multiplier = 8.\pt
-}
-
-\score{
-	\addlyrics
-		\context Staff { \time 3/4 \melody }
-		\context Lyrics \verseOne
-	\paper{ 
-		\denneboomShape 
-	}
-	\midi{ \tempo 4 = 90 }
-}
diff --git a/input/no-notation/die-staff.ly b/input/no-notation/die-staff.ly
deleted file mode 100644
index 7c8e3544e9..0000000000
--- a/input/no-notation/die-staff.ly
+++ /dev/null
@@ -1,23 +0,0 @@
-\version "2.1.7"
-
-\header  {
-texidoc = "a staff should really die, if no one's referencing it."
-}
-\score {
- {
-    \context Staff = q {
-      \notes { a' b' c' d' }
-    }
-
-    \break
-
-    \context PianoStaff <<
-      \context Staff = i {
-        \notes { a' b' c' d' }
-      }
-      \context Staff = ii {
-        \notes { \clef "bass" a b c d }
-      }
-    >>
-  }
-}
diff --git a/input/no-notation/dos-guile.ly b/input/no-notation/dos-guile.ly
deleted file mode 100644
index db4ccbbc8f..0000000000
--- a/input/no-notation/dos-guile.ly
+++ /dev/null
@@ -1,14 +0,0 @@
-\version "2.1.16"
-
-\header{
-    
-    texidoc = "This should not hang lilypond --safe-mode."
-    
-}
-
-% DOS
-#(do () (#f))
-
-\score{
-    \notes c''
-}
\ No newline at end of file
diff --git a/input/no-notation/dos-ps.ly b/input/no-notation/dos-ps.ly
deleted file mode 100644
index 3ef1932cf6..0000000000
--- a/input/no-notation/dos-ps.ly
+++ /dev/null
@@ -1,13 +0,0 @@
-\version "2.1.16"
-
-\header{
-
-    texidoc = "This should not hang lilypond --safe-mode --no-pdf
-    --png run.
-
-}
-
-\score{
-    % DOS
-    \notes c''-"\\embeddedps{ { 0 0 moveto } loop }"
-}
diff --git a/input/no-notation/dos-tex.ly b/input/no-notation/dos-tex.ly
deleted file mode 100644
index 0f47f97552..0000000000
--- a/input/no-notation/dos-tex.ly
+++ /dev/null
@@ -1,12 +0,0 @@
-\version "2.1.16"
-
-\header{
-    
-    texidoc = "This should not hang lilypond --safe-mode run."
-
-}
-
-\score{
-    % DOS
-    \notes c''-"\\loop\\iftrue\\repeat"
-}
diff --git a/input/no-notation/midi-grace.ly b/input/no-notation/midi-grace.ly
deleted file mode 100644
index a432f686ce..0000000000
--- a/input/no-notation/midi-grace.ly
+++ /dev/null
@@ -1,23 +0,0 @@
-#(ly:set-option 'old-relative)
-\version "2.1.7"
-\header{ texidoc = "Tests MIDI output with grace notes. " }
-
-\score { 
-  \context Voice \notes\relative c {
-    \context Voice=VoiceOne
-	\grace {
-  \property Voice.Stem \override #'stroke-style = #"grace"
-   c8 
-  \property Voice.Stem \revert #'stroke-style }
- d4 d d d d
-	\grace {
-  \property Voice.Stem \override #'stroke-style = #"grace"
-   e16 f e f 
-  \property Voice.Stem \revert #'stroke-style }
- d4 d d d d 
-	
-  }
-  \paper { }  
-  \midi { }
-}
-
diff --git a/input/no-notation/midi-lyric-barcheck.ly b/input/no-notation/midi-lyric-barcheck.ly
deleted file mode 100644
index d3c90e4036..0000000000
--- a/input/no-notation/midi-lyric-barcheck.ly
+++ /dev/null
@@ -1,24 +0,0 @@
-\version "2.1.20"
-\header {
-
-    texidoc = "Lyrics in MIDI are aligned to ties and beams:
-this examples causes no bar checks in MIDI.
-"
-
-
-    }
-\score {
-
-    <<\notes\relative c'' \context Voice = A {
-	\autoBeamOff
-	c8[ c] c2.
-	c1~c4 c2.
-	c4 ( d e) d
-	c1
-
-    }
-    \lyricsto "A" \lyrics\new Lyrics { bla bla | bla bla | bla bla | bla }
-    >>
-    \paper {}
-      \midi {}
-    }
diff --git a/input/no-notation/midi-transposing.ly b/input/no-notation/midi-transposing.ly
deleted file mode 100644
index 844e4c9325..0000000000
--- a/input/no-notation/midi-transposing.ly
+++ /dev/null
@@ -1,25 +0,0 @@
-#(ly:set-option 'old-relative)
-\version "2.1.7"
-
-\header { texidoc = "@cindex Transposing
-The transposing property leaves output invariant, but has effect on MIDI. "
-}
-
-\score { 
-  \context Voice \notes\relative c {
-    % btw: this is not how transposing is done in lilypond
-	% this is a transposing performer, i.e. for midi-output only
-	\property Staff.transposing = #0 c
-	\property Staff.transposing = #2 c
-	\property Staff.transposing = #4 c
-	\property Staff.transposing = #5 c
-	\property Staff.transposing = #7 c
-	\property Staff.transposing = #9 c
-	\property Staff.transposing = #11 c
-	\property Staff.transposing = #12 c
-	
-  }
-  \paper { raggedright = ##t } 
-  \midi { }
-}
-
diff --git a/input/no-notation/midi-tuplets.ly b/input/no-notation/midi-tuplets.ly
deleted file mode 100644
index 35488164f7..0000000000
--- a/input/no-notation/midi-tuplets.ly
+++ /dev/null
@@ -1,36 +0,0 @@
-#(ly:set-option 'old-relative)
-\version "2.1.7"
-\header {
-texidoc = "
-
-Midi2ly tuplet test.
-
-@example
-  python scripts/midi2ly.py --duration-quant=32 \
-      --allow-tuplet=4*2/3 \
-      --allow-tuplet=8*2/3 \
-      --allow-tuplet=4*3/5 \
-      --allow-tuplet=8*3/5 \
-      tu.midi 
-@end example
-"
-}
-
-
-\score { 
-  \context Voice \notes \relative c' {
-
-    a1 a2 a2. a4 a4. a8 a8. a16 a16. a32 a32. a64
-
-    \times 2/3 { b4 b4 b4 }
-    \times 3/5 { b4 b4 b4 b4 b4 }
-
-    \times 2/3 { c8 c8 c8 }
-    \times 3/5 { c8 c8 c8 c8 c8 }
-
-  }
-  \paper { }  
-  \midi { }
-}
-
-
diff --git a/input/no-notation/midi-volume-equaliser.ly b/input/no-notation/midi-volume-equaliser.ly
deleted file mode 100644
index 636ac3e0ee..0000000000
--- a/input/no-notation/midi-volume-equaliser.ly
+++ /dev/null
@@ -1,161 +0,0 @@
-#(ly:set-option 'old-relative)
-\version "2.1.13"
-\header {
-texidoc = "@cindex Midi Volume Equaliser
-The full orchestra plays a notes, where groups stop one after
-another. Use this to tune equalizer settings. "
-}
-
-#(set-global-staff-size 16)
-
-%{
-
-Override, see scm/midi.scm:
-
-#(set! instrument-equalizer-alist
-      (append 
-       '(
-	 ("flute" . (0 . 0.7))
-        )
-      instrument-equalizer-alist))
-
-%}
-
-flauti = \notes \relative c' {
-  \property Staff.midiInstrument = #"flute"
-  \property Staff.instrument	= #"2 Flauti"
-  \property Staff.instr		= #"Fl."
-
-  c1\f R1*10
-}
-
-oboi = \notes \relative c' {
-  \property Staff.midiInstrument = #"oboe"
-  \property Staff.instrument	= #"2 Oboi"
-  \property Staff.instr		= #"Ob."
-
-  R1*1 c1\f R1*9
-}
-
-clarinetti = \notes \relative c' {
-  \property Staff.midiInstrument = #"clarinet"
-  \property Staff.instrument	= #"Clarinetti"
-  \property Staff.instr		= #"Cl"
-
-  R1*2 c1\f R1*8
-}
-
-fagotti = \notes \relative c' {
-  \property Staff.midiInstrument = #"bassoon"
-  \property Staff.instrument	= #"2 Fagotti"
-  \property Staff.instr		= #"Fg."
-
-  \clef bass
-  R1*3 c1\f R1*7
-}
-
-corni = \notes \relative c' {
-  \property Staff.midiInstrument = #"french horn"
-  \property Staff.instrument	= #"Corni"
-  \property Staff.instr		= #"Cor"
-
-  R1*4 c1\f R1*6
-}
-
-trombe = \notes \relative c' {
-  \property Staff.midiInstrument = #"trumpet"
-  \property Staff.instrument	= #"Trombe"
-  \property Staff.instr		= #"Tp."
-
-  \clef bass
-  R1*5 c1\f R1*5
-}
-
-timpani = \notes \relative c' {
-  \property Staff.midiInstrument = #"timpani"
-  \property Staff.instrument	= #"Timpani"
-  \property Staff.instr		= #"Timp."
-
-  R1*6 c1\f R1*4
-}
-
-violinoI = \notes \relative c' {
-  \property Staff.midiInstrument = #"violin"
-  \property Staff.instrument	= #"Violino I "
-  \property Staff.instr		= #"Vl. I "
-
-  R1*7 c1\f R1*3
-}
-
-violinoII = \notes \relative c' {
-  \property Staff.midiInstrument = #"violin"
-  \property Staff.instrument	= #"Violino II "
-  \property Staff.instr		= #"Vl. II "
- 
-  R1*8 c1\f R1*2
-}
-
-viola = \notes \relative c' {
-  \property Staff.midiInstrument = #"viola"
-  \property Staff.instrument	= #"Viola"
-  \property Staff.instr		= #"Vla."
-
-  \clef alto
-  R1*9 c1\f R1*1
-}
-
-violoncello = \notes \relative c' {
-  \property Staff.midiInstrument = #"cello"
-  %\property Staff.midiInstrument = #"contrabass"
-  \property Staff.instrument	= #"Violoncello"
-  \property Staff.instr		= #"Vc."
-  
-  \clef bass
-  R1*10 c1\f
-}
-
-
-\score {
-  << 
-    \context StaffGroup ="legni" << 
-      \context Staff ="flauti" \flauti
-      \context Staff ="oboi" \oboi
-      \context Staff ="clarinetti" \clarinetti 
-      \context Staff ="fagotti" \fagotti 
-    >>
-    \context StaffGroup ="ottoni" <<
-      \context Staff ="corni" \corni
-      \context Staff ="trombe" \trombe
-    >>
-    \context StaffGroup ="timpani" <<
-      \context Staff ="timpani" \timpani
-     { 
-       \skip 1 
-       % Hmm: this forces a staff-bracket, that's good!
-       % However, I can't find where is decided on staff-bracket yes/no
-     }
-    >>
-    \context StaffGroup ="archi" <<
-      \context GrandStaff ="violini" <<
-        \context Staff ="violino1" \violinoI
-        \context Staff ="violino2" \violinoII
-      >>
-      \context Staff ="viola" \viola
-      \context Staff ="violoncello" \violoncello
-    >>
-  >>
-
-  \paper {
-  	\paperSixteen
-  	indent=100.0\mm
-  	linewidth=150.0\mm
-    \translator {
-      \RemoveEmptyStaffContext
-    }
-  }
-  \midi {
-  	\tempo 1 = 60
-  }
-}
-
-
diff --git a/input/no-notation/parse.ly b/input/no-notation/parse.ly
deleted file mode 100644
index 3b305713aa..0000000000
--- a/input/no-notation/parse.ly
+++ /dev/null
@@ -1,5 +0,0 @@
-\version "2.1.7"
-
-% Test parser error
-
-\score{
diff --git a/input/no-notation/parse2.ly b/input/no-notation/parse2.ly
deleted file mode 100644
index 595c8eeaff..0000000000
--- a/input/no-notation/parse2.ly
+++ /dev/null
@@ -1,9 +0,0 @@
-\version "2.1.7"
-
-% Test parser error
-
-foo = \notes{
-
-
-\score{
-}
diff --git a/input/no-notation/parse3.ly b/input/no-notation/parse3.ly
deleted file mode 100644
index be74782dca..0000000000
--- a/input/no-notation/parse3.ly
+++ /dev/null
@@ -1,9 +0,0 @@
-\version "2.1.7"
-
-% Test parser error
-
-foo = \notes{
-
-
-\score{
-
diff --git a/input/no-notation/parse4.ly b/input/no-notation/parse4.ly
deleted file mode 100644
index c0f6de07de..0000000000
--- a/input/no-notation/parse4.ly
+++ /dev/null
@@ -1,12 +0,0 @@
-\version "2.1.7"
-
-% Test parser error
-
-foo = \notes{
-}
-
-
-\score{
-  burp
-}
-
diff --git a/input/no-notation/parse5.ly b/input/no-notation/parse5.ly
deleted file mode 100644
index 12a313d1d6..0000000000
--- a/input/no-notation/parse5.ly
+++ /dev/null
@@ -1,11 +0,0 @@
-\version "2.1.7"
-%If you specify two different key sigs at one point, a
-%warning is printed.
-
-\score { \notes
-\context Voice <<
- { \key cis \major cis4 \key bes \major bes4 }
- { \key cis \major fis4 \key es \major g4 }  
->>
-}
-
diff --git a/input/no-notation/recording.ly b/input/no-notation/recording.ly
deleted file mode 100644
index 375979c5c9..0000000000
--- a/input/no-notation/recording.ly
+++ /dev/null
@@ -1,24 +0,0 @@
-\version "2.1.19"
-\header {
-
-texidoc = "The @code{Recording_group_engraver} will record events
-synchronized in time, collecting them in a list.  This file also shows
-how to skip the rendering and outputting step of the process, using
-@code{ly:run-translator}."
-
-}
-
-theMusic = \context Staff \notes { c4 d8-. }
-
-#(define (notice-the-events context lst)
-  (map (lambda (x) (display x) (newline))  lst))
-
-listener = \paper {
- \translator {
-   \VoiceContext
-   \type "Recording_group_engraver"
-   recordEventSequence = #notice-the-events
- }
-}
-
-#(ly:run-translator theMusic listener)
diff --git a/input/no-notation/safe-guile.ly b/input/no-notation/safe-guile.ly
deleted file mode 100644
index a9a97ca662..0000000000
--- a/input/no-notation/safe-guile.ly
+++ /dev/null
@@ -1,14 +0,0 @@
-\version "2.1.16"
-
-\header{
-    
-    texidoc = "This should not survive lilypond --safe-mode, and
-    certainly not write /tmp/safe-guile.scm"
-    
-}
-
-#(write "hallo" (open-file "/tmp/safe-guile.scm" "w"))
-
-\score{
-    \notes c''
-}
\ No newline at end of file
diff --git a/input/no-notation/safe-include.ly b/input/no-notation/safe-include.ly
deleted file mode 100644
index 08cdfceab1..0000000000
--- a/input/no-notation/safe-include.ly
+++ /dev/null
@@ -1,13 +0,0 @@
-\version "2.1.16"
-
-\header{
-    
-    texidoc = "This should not survive lilypond --safe-mode"
-    
-}
-
-\include "safe-ps.ly"
-
-\score{
-    \notes c''
-}
\ No newline at end of file
diff --git a/input/no-notation/safe-ps.ly b/input/no-notation/safe-ps.ly
deleted file mode 100644
index d7529e7028..0000000000
--- a/input/no-notation/safe-ps.ly
+++ /dev/null
@@ -1,10 +0,0 @@
-\version "2.1.16"
-
-\header{
-    texidoc = "This should not survive lilypond --safe-mode
-    --no-pdf --png run, and certainly not write /tmp/safe-ps.ps"
-}
-
-\score{
-    \notes c''-"\\embeddedps{ (/tmp/safe-ps.ps) (w) file (hallo) writestring }"
-}
diff --git a/input/no-notation/safe-tex.ly b/input/no-notation/safe-tex.ly
deleted file mode 100644
index ae6ab2c886..0000000000
--- a/input/no-notation/safe-tex.ly
+++ /dev/null
@@ -1,16 +0,0 @@
-\version "2.1.16"
-
-\header{
-    
-    texidoc = "This should not survive lilypond --safe-mode run, and
-    certainly not write /tmp/safe-tex.tex"
-
-    % beware
-    % openout_any=y lilypond --keep --safe-mode -S latexoptions=']{article}
-    % \let\nofiles\relax%' input/no-notation/safe-tex.ly
-
-}
-
-\score{
-    \notes c''-"\\newwrite\\barf\\immediate\\openout\\barf=/tmp/safe-tex.tex\\immediate\\write\\barf{hallo}"
-}
diff --git a/input/no-notation/textcresc.ly b/input/no-notation/textcresc.ly
deleted file mode 100644
index 54a9de71fa..0000000000
--- a/input/no-notation/textcresc.ly
+++ /dev/null
@@ -1,15 +0,0 @@
-\version "2.1.7"
-\header{
-texidoc="crashes lily"
-}
-
-\score { \notes {
-  \context Voice {
-    \property Voice.crescendoText = "cresc."
-    \property Voice.crescendoSpanner = #'dashed-line
-    c2. r8 c8 \< \break \! c1
-  }
-}
-\paper { linewidth = 5.\cm}
-}
-
diff --git a/input/paddy.abc b/input/paddy.abc
deleted file mode 100644
index 0aadebc63c..0000000000
--- a/input/paddy.abc
+++ /dev/null
@@ -1,16 +0,0 @@
-%
-%  This is NOT a lilypond input file. It is an ABC file, see
-%  http://www.gre.ac.uk/~c.walshaw/abc/
-%  
-%  LilyPond includes import tools for Finale, Musedata, ABC, MIDI and PMX
-%
-X:1
-T:Paddy O'Rafferty
-C:Trad.
-M:6/8
-K:D
-dff cee|def gfe|dff cee|dfe dBA|dff cee|def gfe|faf gfe|1 dfe dBA:|2 dfe dcB||
-~A3 B3|gfe fdB|AFA B2c|dfe dcB|~A3 ~B3|efe efg|faf gfe|1 dfe dcB:|2 dfe dBA||
-fAA eAA|def gfe|fAA eAA|dfe dBA|fAA eAA|def gfe|faf gfe|dfe dBA:|
-
-
diff --git a/input/puer-fragment.ly b/input/puer-fragment.ly
deleted file mode 100644
index c41f00d66c..0000000000
--- a/input/puer-fragment.ly
+++ /dev/null
@@ -1,107 +0,0 @@
-\version "2.1.21"
-\header {
-    title	= "Puer natus est nobis (excerptum)"
-    subtitle	= "Antiphona ad introitum VII"
-    texidoc = "
-
-Demonstrate gregorian chant notation
-
-This file pretty nicely demonstrates what still does
-not work among ligatures: (i) horizontal spacing between ligatures and
-lyrics aligment is broken; (ii) lily crashes when removing
-Stem_engraver, but still using Slur_engraver (this is useful needed
-for the \addlyrics feature when no slurs are to be typeset); (iii)
-episem causes a parse error (this used to work a while ago); (iv)
-support for augmentum dots is missing; (v) accidentals must be placed
-before the ligature (not demonstrated in this example)."
-
-}
-
-#(set-global-staff-size 26)
-\include "gregorian-init.ly"
-
-%%% N.B.: Yes, I know, the formatting of the following looks awful,
-%%% but this is intentional for editorial purposes (simplifies some
-%%% global search/replace operations in emacs).
-
-cantus = \context VaticanaVoice = "cantus" \notes {
-  \[ g4\melisma %%% Pu-
-    \pes
-    d'\melismaEnd
-  \]
-  d'		%%% er
-  \[ d'\melisma %%% na-
-    \pes e' \flexa
-    d'\melismaEnd
-  \]
-  c'		%%% tus
-  \[ c'\melisma %%% est
-    c'
-    c'\melismaEnd
-  \]
-  \[ d'\melisma %%% no-
-    \flexa c' e' \flexa
-    d'\melismaEnd
-  \]
-  d'            %%% bis,
-  \divisioMaior
-  \[ g\melisma %%% et
-    \pes \deminutum
-    d'\melismaEnd
-  \]
-  \[ d'\melisma %%% fi-
-    \pes e' \flexa
-    d'\melismaEnd
-  \]
-  \[ c'\melisma %%% li-
-    \flexa
-    b\melismaEnd
-  \]
-  a		%%% us
-  \[ c'\melisma %%% da-
-    c' \pes
-    d'\melismaEnd
-  \]
-  c'		%%% tus-
-  c'		%%% est
-  \[ c'\melisma %%% no-
-    \pes d' \flexa c'
-    c'\melismaEnd
-  \]
-  \[ g\melisma %%% bis:
-    \pes a \flexa
-    g\melismaEnd
-  \]
-  \divisioMaxima
-}
-
-verba = \context Lyrics = "verba" \lyrics {
-  Pu- er na- tus est no- bis,
-  et fi- li- us da- tus est no- bis:
-}
-
-\score {
-  <<
-    \cantus
-    \lyricsto "cantus" \verba
-  >>
-  \paper {
-    linethickness = \staffspace / 7.0
-    linewidth = 137.0\mm
-    width = 137.0\mm
-    indent = 0.0
-    raggedright = ##t
-    packed = ##t
-    \translator {
-      \ScoreContext
-      \remove Bar_number_engraver
-%     SpacingSpanner \set #'spacing-increment = #0.5
-      timing = ##f
-
-      % Maybe don't do this except for transcription -- it may produce
-      % additional space
-      barAlways = ##t
-%     skipBars = ##t
-    }
-  }
-}
diff --git a/input/regression/+.ly b/input/regression/+.ly
deleted file mode 100644
index ba5ad519e2..0000000000
--- a/input/regression/+.ly
+++ /dev/null
@@ -1,25 +0,0 @@
-\version "2.1.21"
-%% +.ly: Be the first .ly file for lys-to-tely.py.
-%% Better to make lys-to-tely.py include "introduction.texi" or
-%% other .texi documents too?
-
-
-\header{
-texidoc =
-
-#(string-append "@section Introduction
-
-This document presents a feature test for
-LilyPond " (lilypond-version) ".  When the
-text correspond with the shown notation, we consider LilyPond Officially
-BugFree (tm).  This document is intended for finding bugs, and
-documenting bugfixes.
-
-TODO: order of tests (file names!), test only one feature per test.
-Smaller and neater tests.
-")
-
-}
-
-\score { \context Lyrics \lyrics { " " }}
-
diff --git a/input/regression/GNUmakefile b/input/regression/GNUmakefile
deleted file mode 100644
index 5b51006a89..0000000000
--- a/input/regression/GNUmakefile
+++ /dev/null
@@ -1,19 +0,0 @@
-depth = ../..
-
-STEPMAKE_TEMPLATES=documentation texinfo tex
-LOCALSTEPMAKE_TEMPLATES=lilypond ly lysdoc
-LILYPOND_BOOK_FLAGS = --process="lilypond-bin --header=texidoc -I $(srcdir)/input/test -e '(ly:set-option (quote internal-type-checking) \#t)'"
-
-
-include $(depth)/make/stepmake.make 
-TITLE=LilyPond Regression Tests
-
-
-local-clean: local-delete
-
-# have to do it in 2 steps to prevent
-# argument-list too long.
-local-delete:
-	rm -f $(outdir)/lily-1*
-	rm -f $(outdir)/*
-
diff --git a/input/regression/accidental-cautionary.ly b/input/regression/accidental-cautionary.ly
deleted file mode 100644
index a7e5b3cb04..0000000000
--- a/input/regression/accidental-cautionary.ly
+++ /dev/null
@@ -1,23 +0,0 @@
-\version "2.1.7"
-\header {
-
-texidoc = "Cautionary accidentals are indicated using either
-parentheses (default) or smaller accidentals.
-
-"
-
-}
-
-\score {
-    \notes {
-    c''4
-    cis''?4
-    \property Staff.Accidental \set #'cautionary-style = #'smaller
-    cis''?4
-    \property Staff.Accidental \set #'cautionary-style = #'parentheses
-    cis''?4
-    }
-
-\paper { raggedright = ##t }
-}
-
diff --git a/input/regression/accidental-double.ly b/input/regression/accidental-double.ly
deleted file mode 100644
index f6e6e14667..0000000000
--- a/input/regression/accidental-double.ly
+++ /dev/null
@@ -1,20 +0,0 @@
-\version "2.1.7"
-\header {
-	texidoc = "If two forced accidentals happen at the same time, only one
-	sharp sign is printed."
-}
-
-
-\score { \notes \transpose c c'
-   \context Staff <<
-     \key g \major
-     \context Voice=va { \stemUp c' fis! }
-     \context Voice=vb { \stemDown c fis! }
-   >>
-
-    \paper { raggedright= ##t }
-	 
-}
-
-
-
diff --git a/input/regression/accidental-ledger.ly b/input/regression/accidental-ledger.ly
deleted file mode 100644
index d7270c032b..0000000000
--- a/input/regression/accidental-ledger.ly
+++ /dev/null
@@ -1,39 +0,0 @@
-\version "2.1.7"
-
-\header {
-
-    texidoc = "Ledger lines are shortened when there are accidentals.
-This happens only for the single ledger line close to the note head,
-and only if the accidental is horizontally close to the head.  "
-    
-}
-
-
-\score {
-    \notes
-	\relative c {
-	    disis
-	    dis
-	    d
-	    des
-	    deses
-	    eses
-	    es
-	    e
-	    eis
-	    eisis
-	    eses'''
-	    es
-	    e
-	    eis
-	    eisis
-	    feses
-	    fes
-	    f
-	    fis
-	    fisis
-	    <cis,, gis'>
-	    
-	} 
-
-}
diff --git a/input/regression/accidental-octave.ly b/input/regression/accidental-octave.ly
deleted file mode 100644
index e5b7091317..0000000000
--- a/input/regression/accidental-octave.ly
+++ /dev/null
@@ -1,55 +0,0 @@
-
-\version "1.9.6"
-
-\header {
-texidoc="
-This shows how accidentals in different octaves are handled.
-(DOCME)
-"
-
-
-}
-
-#(define  (lo-octave p)
-  (let* ((a (ly:pitch-alteration p))
-         (n (ly:pitch-notename p)))
-    (ly:make-pitch -1 n a)))
-
-#(define (no-octaves music)
-  (let* ((es (ly:get-mus-property music 'elements))
-         (e (ly:get-mus-property music 'element))
-         (p (ly:get-mus-property music 'pitch)))
-
-    (if (pair? es)
-        (ly:set-mus-property!
-         music 'elements
-         (map no-octaves es)))
-
-    (if (ly:music? e)
-        (ly:set-mus-property!
-         music 'element
-         (no-octaves e)))
-
-    (if (ly:pitch? p)
-        (begin
-          (set! p (lo-octave p))
-          (ly:set-mus-property! music 'pitch p)))
-
-
-    music))
-
-
-
-mel = \notes \transpose c c' {
-  \time 4/4 \key d \major
-  gis4 g' g gis' | gis2 g' | g1 | gis | g | gis' | g |
-  fis4 f' f fis' | fis2 f' | f1 | fis | f | fis' | f |
-  \bar "|." \break
-}
-
-\score {
-  << \context Staff \mel
-     \context NoteNames \apply #no-octaves \mel
-  >>
-}
-
diff --git a/input/regression/accidental-placement.ly b/input/regression/accidental-placement.ly
deleted file mode 100644
index c9e70e58ea..0000000000
--- a/input/regression/accidental-placement.ly
+++ /dev/null
@@ -1,34 +0,0 @@
-
-\version "2.1.7"
-
-\header {
-
-    texidoc ="Accidentals are placed as closely as possible.
-Accidentals in corresponding octaves are aligned.
-The top accidental should be nearest to the chord. The
-flats in a sixth should be staggered.  "
-    
-}
-
-
-\score { \notes \context Voice \relative c' {
-    cis4
-    c4
- \transpose c c' {    
-  <bis es gis>4
-  <es! as!>
-  <gis! cis!>
-  <g! des'>
-  <ges! es'!>
-}    
-    <cis d es fis gis ases bes ces d e! >4
-    <bes'! fis!>     
-    <bes! cis!>
-    <c! es ges beses>
-    <bes! c d f >    
-    <bes,! c d f >
-}
-\paper { raggedright = ##t}
-     }
-
-
diff --git a/input/regression/accidental-quarter.ly b/input/regression/accidental-quarter.ly
deleted file mode 100644
index 2381296e6d..0000000000
--- a/input/regression/accidental-quarter.ly
+++ /dev/null
@@ -1,23 +0,0 @@
-\header {
-
-    texidoc = "Quarter tone notation is supported, including
-    threequarters flat."
-    }
-
-
-\score {
-    \notes \relative c'' {
-	\time 12/4 
-	ceses4
-	ceseh
-	ces
-	ceh
-	c
-	c
-	cih
-	cis 
-	cisih
-	cisis
-    }
-    \paper { raggedright = ##t }
-}
diff --git a/input/regression/accidental-single-double.ly b/input/regression/accidental-single-double.ly
deleted file mode 100644
index e91cd28cc2..0000000000
--- a/input/regression/accidental-single-double.ly
+++ /dev/null
@@ -1,25 +0,0 @@
-
-\version "2.1.7"
-\header{
-texidoc="
-A sharp sign after a double sharp sign, as well as a flat sign
-after a double flat sign is automatically prepended with a
-natural sign.
-"
-}
-
-
-
-thenotes =  \notes \relative cis' { \time 4/4
-gisis'4 gis gisis ges |
-}
-
-\score { << \context Staff \thenotes
-	\context NoteNames  {
-		\property NoteNames.NoteName \override  #'no-spacing-rods  = ##f 
-		\thenotes
-	}
-	>>
-\paper { raggedright = ##t }
-}
-
diff --git a/input/regression/accidental-unbroken-tie-spacing.ly b/input/regression/accidental-unbroken-tie-spacing.ly
deleted file mode 100644
index d1e87b1230..0000000000
--- a/input/regression/accidental-unbroken-tie-spacing.ly
+++ /dev/null
@@ -1,22 +0,0 @@
-
-\header {
-texidoc = "Tied accidentaled notes (which cause reminder accidentals) don't wreak havoc in
-the spacing when unbroken."
-}
-
-\version "2.1.7"
-
-rechts = \notes \relative c' {
-  \clef treble
-  \time 3/4
-    c8 b2  <g b des f>8 ~ |
-    <g b des f>8
-}
-
-\score {
-  \rechts
-
-  \paper {
-    raggedright = ##t
-  }
-}
diff --git a/input/regression/accidental-voice.ly b/input/regression/accidental-voice.ly
deleted file mode 100644
index ee0654a914..0000000000
--- a/input/regression/accidental-voice.ly
+++ /dev/null
@@ -1,61 +0,0 @@
-\version "1.9.6"
-
-\header{
-texidoc="
-This shows how modern cross voice auto cautionary accidentals are handled.
-The first two fisses get accidentals because they belong to different voices.
-The first f gets cautionary natural because of previous measure.
-The last f gets cautionary natural because fis was only in the other voice.
-"
-}
-
-#(define  (lo-octave p)
-  (let* ((a (ly:pitch-alteration p))
-         (n (ly:pitch-notename p)))
-    (ly:make-pitch -1 n a)))
-
-#(define (no-octaves music)
-  (let* ((es (ly:get-mus-property music 'elements))
-         (e (ly:get-mus-property music 'element))
-         (p (ly:get-mus-property music 'pitch)))
-
-    (if (pair? es)
-        (ly:set-mus-property!
-         music 'elements
-         (map no-octaves es)))
-
-    (if (ly:music? e)
-        (ly:set-mus-property!
-         music 'element
-         (no-octaves e)))
-
-    (if (ly:pitch? p)
-        (begin
-          (set! p (lo-octave p))
-          (ly:set-mus-property! music 'pitch p)))
-
-
-    music))
-
-voicea = \notes \transpose c c' {
-    \stemUp
-    fis2 a2 f4 fis a2
-}
-voiceb = \notes \transpose c c' {
-    \stemDown
-    c2 fis2  f4 c   f2
-}
-
-\score {
-    <<
-	\notes
-	\new NoteNames \apply #no-octaves \voicea
-	\context Staff << 
-	    \modernVoiceCautionaries
-	    \new Voice \voicea
-	    \new Voice \voiceb
-	>>
-	\new NoteNames \apply #no-octaves \voiceb
-    >>
-\paper { raggedright = ##t }
-}
diff --git a/input/regression/accidental.ly b/input/regression/accidental.ly
deleted file mode 100644
index fd73d1ef92..0000000000
--- a/input/regression/accidental.ly
+++ /dev/null
@@ -1,18 +0,0 @@
-
-\version "2.1.7"
-
-\header{
-texidoc="
-Accidentals work: the second note does not get a sharp. The third and
-fourth show forced and courtesy accidentals.
-"
-}
-
-foo = \notes\relative c''   {   \key as \major dis4 dis dis!^"force" dis? }
-
-\score {
-  << \foo 
-   \context NoteNames \foo
-  >>
-\paper { raggedright = ##t }
-}
diff --git a/input/regression/accidentals.ly b/input/regression/accidentals.ly
deleted file mode 100644
index 835aa8708e..0000000000
--- a/input/regression/accidentals.ly
+++ /dev/null
@@ -1,49 +0,0 @@
-\version "1.9.6"
-
-\header{
-texidoc="
-This shows how accidentals are handled.
-"
-}
-
-#(define  (lo-octave p)
-  (let* ((a (ly:pitch-alteration p))
-         (n (ly:pitch-notename p)))
-    (ly:make-pitch -1 n a)))
-
-#(define (no-octaves music)
-  (let* ((es (ly:get-mus-property music 'elements))
-         (e (ly:get-mus-property music 'element))
-         (p (ly:get-mus-property music 'pitch)))
-
-    (if (pair? es)
-        (ly:set-mus-property!
-         music 'elements
-         (map no-octaves es)))
-
-    (if (ly:music? e)
-        (ly:set-mus-property!
-         music 'element
-         (no-octaves e)))
-
-    (if (ly:pitch? p)
-        (begin
-          (set! p (lo-octave p))
-          (ly:set-mus-property! music 'pitch p)))
-
-
-    music))
-
-
-mel = \notes { \key d \major \time 4/4
- d4  dis dis8 dis, d4 | d dis disis8 d, dis4 | d des disis8 dis, d4 | dis deses d dis ~ | dis dis ~ dis8 d, dis4 ~ | \break
- dis dis cis c | c cis cisis cis | c ces cisis c | cis ceses c cis ~ | cis cis ~ cis cis \bar "|."  | \break
-}
-
-\score { \notes
- <<
-  \context Staff \transpose c c'' \mel
-  \context NoteNames  \apply #no-octaves \mel
- >>
-}
-
diff --git a/input/regression/allfontstyle.lyinc b/input/regression/allfontstyle.lyinc
deleted file mode 100644
index ac670d1aca..0000000000
--- a/input/regression/allfontstyle.lyinc
+++ /dev/null
@@ -1,23 +0,0 @@
-\version "1.9.4"
-
-\header{
-texidoc="
-Different text styles are used for various purposes.
-"
-}
-
-\score {  \notes
-	\relative c'' \context Staff {
-		\emptyText
-		\repeat volta 2 { \time 4/4 c4^"cuivr\\'e"_\fermata }
-		 \alternative {
-		 	{
-			    d-4_\markup { \italic "cantabile"  } }
-		 	{  e }  } \acciaccatura { c16 }
-			  
-			 f4\ff^""^\markup  { \large "Largo" } \mark "B" g 
-	}
-	\paper { raggedright = ##t
-	% \translator {\BarNumberingStaffContext} }
-	}
-}
diff --git a/input/regression/ambitus.ly b/input/regression/ambitus.ly
deleted file mode 100644
index ddee5e71b0..0000000000
--- a/input/regression/ambitus.ly
+++ /dev/null
@@ -1,100 +0,0 @@
-
-\header {
-    texidoc = "Ambituses indicate pitch ranges for voices.
-
-By default, the ambitus grob is put before the clef.  You can control
-this behaviour through the @code{breakAlignOrder} property of the score
-context by redefining the order.
-
-
-The shape of the note heads to use can be changed via the
-@code{note-head-style} property, which holds the glyph name of the
-note head.  The vertical line between the upper and lower head can be
-switched on or off via the @code{join-heads} property.
-
-"
-}
-
-%{
-
- tex chokes on #
-
-, e.g. with the following addition to the
-paper block:
-
-@example
-\translator @{
-  \ScoreContext
-  breakAlignOrder = #'(
-    instrument-name
-    left-edge
-    span-bar
-    breathing-sign
-    clef
-    ambitus
-    key-signature
-    staff-bar
-    time-signature
-    custos
-  )
-@}
-@end example
-
- 
-@example
-\translator @{
-  \VoiceContext
-  \consists Ambitus_engraver
-  Ambitus \set #'note-head-style = #'noteheads-2mensural
-  Ambitus \set #'join-heads = ##f
-@}
-@end example
-
-
- %}
-\version "2.1.7"
-
-upper = \notes \relative c {
-	\clef "treble"
-	\key c \minor
-	as'' c e bes f cis d e f g f e d f d e
-	f d e e d f d e e d f d e e d f d e
-	f d e e d f d e e d f d e e d f d e
-}
-
-lower = \notes \relative c {
-	\clef "treble"
-	\key e \major
-	e'2 b4 g a c es fis a cis b a g f e d
-	f e d e f g f e d e f g f e d e f g
-	f e d e f g f e d e f g f e d e f g
-}
-
-\score { \context ChoirStaff {
-	<<
-		\new Staff { \upper }
-		\new Staff { \lower }
-	>> }
-	\paper {
-	       \translator {
-			\ScoreContext
-			breakAlignOrder = #'(
-				instrument-name
-				left-edge
-				ambitus
-				span-bar
-				breathing-sign
-				clef
-				key-signature
-				staff-bar
-				time-signature
-				custos
-			)
-		}
-		\translator {
-			\VoiceContext
-			\consists Ambitus_engraver
-		}
-	}
-}
-
diff --git a/input/regression/apply-context.ly b/input/regression/apply-context.ly
deleted file mode 100644
index 96eea73f99..0000000000
--- a/input/regression/apply-context.ly
+++ /dev/null
@@ -1,30 +0,0 @@
-
-\version "2.1.7"
-
-
-\header {
-
-texidoc = "With @code{\\applycontext}, @code{\\properties} can be modified
-procedurally. Applications include: checking bar numbers, smart
-octavation.
-
-
-This example prints a bar-number during processing on stdout.
-"
-
-}
-
-    \paper { raggedright= ##t }
-
-
-\score { \notes \relative c'' {
-    c1 c1
-
-    %% todo: should put something interesting in the .tex output.
-    
-    \applycontext
-	#(lambda (tr)
-	 (format #t "\nWe were called in barnumber ~a.\n"
-	  (ly:get-context-property tr 'currentBarNumber)))
-    c1 c1
-}}
diff --git a/input/regression/apply-output.ly b/input/regression/apply-output.ly
deleted file mode 100644
index f2458f2c13..0000000000
--- a/input/regression/apply-output.ly
+++ /dev/null
@@ -1,51 +0,0 @@
-
-\version "2.1.21" 
-\header {
-
-texidoc = "The @code{\applyoutput} expression is the most flexible way to
-tune properties for individual grobs.
-
-Here, the layout of a note head is changed depending on its vertical
-position.
-"
-
-}
-
-#(define  (mc-squared gr org cur)
-  (let*
-      (
-       (ifs (ly:get-grob-property gr 'interfaces))
-       (sp (ly:get-grob-property gr 'staff-position))
-       )
-  (if (and (memq 'note-head-interface ifs)
-	   (memq sp '(-2 -3 -5)))
-      (begin
-	(ly:set-grob-property! gr 'print-function brew-new-markup-molecule)
-	(ly:set-grob-property! gr 'font-family 'roman)
-	(ly:set-grob-property!
-	 gr 'text
-	 (make-raise-markup -0.5
-			    (case sp
-			      ((-5) (make-simple-markup "m"))
-			      ((-3) (make-simple-markup "c "))
-			      ((-2) (make-smaller-markup (make-bold-markup "2")))
-			      (else (make-simple-markup "bla"))
-			      ))))
-      )))
-
-\score {
-
-\notes \context Voice \relative  c' {
-				      \stemUp
-				      \property Voice.autoBeaming = ##f
-   { <d f g b>8
-     \context Voice \applyoutput #mc-squared
-
-	 <d f g b>
-   }
-	      
-   }
-\paper { raggedright = ##t
-%		     outputscale = 5
-		     } 
-}
diff --git a/input/regression/arpeggio-bracket.ly b/input/regression/arpeggio-bracket.ly
deleted file mode 100644
index d5fcc2624f..0000000000
--- a/input/regression/arpeggio-bracket.ly
+++ /dev/null
@@ -1,20 +0,0 @@
-
-
-\version "2.1.21"
-\header{
-texidoc="
-A square bracket on the left indicates that the player should not
-arpeggiate the chord.
-"
-}
-
-\score{
-     \notes\relative c''{
-	 \property Staff.Arpeggio \override #'print-function = \arpeggioBracket
-	 
-	 <fis,  d a >\arpeggio
-	 }
-     
-    \paper { raggedright= ##t }
-}
-
diff --git a/input/regression/arpeggio-collision.ly b/input/regression/arpeggio-collision.ly
deleted file mode 100644
index c242801b44..0000000000
--- a/input/regression/arpeggio-collision.ly
+++ /dev/null
@@ -1,22 +0,0 @@
-\version "2.1.7"
-
-\header  {
-texidoc = "Arpeggio stays clear of accidentals and flipped note heads."
-}
-
-\score{
-    \notes \transpose c c' {
-	<fis'' g d a>\arpeggio
-	<fis, g d a>\arpeggio
-	<fis'' g d a>\arpeggio
-	}
-    \paper {
-        raggedright = ##t
-	\translator{
-	    \StaffContext
-	    connectArpeggios = ##t
-	}
-	}
-}
-
-
diff --git a/input/regression/arpeggio.ly b/input/regression/arpeggio.ly
deleted file mode 100644
index 6c0b2436fb..0000000000
--- a/input/regression/arpeggio.ly
+++ /dev/null
@@ -1,30 +0,0 @@
-
-\version "2.1.7"
-\header{
-texidoc="
-Arpeggios are supported, both cross-staff and broken single staff.
-"
-}
-
-
-
-\score{
-    \context PianoStaff\notes << 
-	 \new Staff \relative c''{
-	     <fis,  d a>\arpeggio
-	    \property Staff.Arpeggio \override #'arpeggio-direction = #1 
-	     <fis d a >\arpeggio	    
-	     %%\property PianoStaff.SpanArpeggio \override #'connect = ##t
-	     \property PianoStaff.connectArpeggios = ##t
-	     <fis d a>\arpeggio
-	  }
-	 \new Staff\relative c{
-	     \clef bass
-	     <g b d>\arpeggio
-	    \property Staff.Arpeggio \override #'arpeggio-direction = #-1
-	     <g b d>\arpeggio
-	     <g b d>\arpeggio
-	 }
-    >>
-    \paper { raggedright= ##t }
-}
diff --git a/input/regression/auto-beam-bar.ly b/input/regression/auto-beam-bar.ly
deleted file mode 100644
index 7569239afd..0000000000
--- a/input/regression/auto-beam-bar.ly
+++ /dev/null
@@ -1,16 +0,0 @@
-
-\version "2.1.7"
-
-\header{
-texidoc="No auto beams will be put over (manual) repeat bars."
-}
-
-\score {
-    \notes {
-        \time 3/4
-        a'4 b' c''8 \bar ":|:" d''8
-    }
-    \paper{
-   raggedright = ##t
-}
-}
diff --git a/input/regression/auto-beam-triplet.ly b/input/regression/auto-beam-triplet.ly
deleted file mode 100644
index 05b64595ce..0000000000
--- a/input/regression/auto-beam-triplet.ly
+++ /dev/null
@@ -1,15 +0,0 @@
-
-\header
-{
-texidoc = "Automatic beaming is also done on tuplets."
-}
-
-\version "2.1.7"
-
-\score{
-	\notes\relative c''{
-		c8 c c c
-		\times 4/6 { c c c c c c}
-	}
-    \paper { raggedright= ##t }
-}
diff --git a/input/regression/auto-beam-tuplets.ly b/input/regression/auto-beam-tuplets.ly
deleted file mode 100644
index f4c684db74..0000000000
--- a/input/regression/auto-beam-tuplets.ly
+++ /dev/null
@@ -1,18 +0,0 @@
-
-\version "2.1.7"
-
-\header {
-texidoc = "Tuplet-spanner should not put (visible) brackets on
-beams even if they're auto generated."
-}
-
-\score { \notes \relative c' {
-  \property Voice.tupletSpannerDuration = #(ly:make-moment 1 4)
-  \property Voice.TupletBracket \override #'bracket-visibility = #'if-no-beam
-  \times 2/3 {
-	 f8[ f f ] f8[ f f ] f f f f f f 
- }
-}
-    \paper { raggedright= ##t }
-
-     }
diff --git a/input/regression/auto-beam.ly b/input/regression/auto-beam.ly
deleted file mode 100644
index 151d11dd9e..0000000000
--- a/input/regression/auto-beam.ly
+++ /dev/null
@@ -1,27 +0,0 @@
-
-\header {
-
-texidoc="Test automatic beamer: the last measure should have a single beam."
-
-}
-
-\version "2.1.7"
-
-
-
-\paper  { raggedright = ##t } 
-
-\score {
-  \notes \relative c'' {
-    a\longa a\breve  
-    a1 a2 a4 a8 a16 a32 a64 a64 
-  }
-  \paper {
-    \translator {
-      \StaffContext
-	\remove "Clef_engraver"
-%%	\remove "Staff_symbol_engraver"
-    }
-  }
-}
-
diff --git a/input/regression/auto-change.ly b/input/regression/auto-change.ly
deleted file mode 100644
index 3f5c9f8b43..0000000000
--- a/input/regression/auto-change.ly
+++ /dev/null
@@ -1,27 +0,0 @@
-
-\version "2.1.18"
-
-\header {
-
-texidoc=" Auto change piano staff switches voices between up
-and down staves automatically rests are switched along with the coming
-note. When central C is reached, we don't switch (by default).
-
-"
-}
-    \paper { raggedright= ##t }
-
-\score {
-	\notes \context PianoStaff <<
-	\context Staff = "up" {
-		\autochange  \context Voice = VA << \relative c' { g4 c e d c r4 a g } >>
-	}
-	\context Staff = "down" {
-		\clef bass 
-		s1*2
-	}
-
-	>>
-	
-}
-
diff --git a/input/regression/balloon.ly b/input/regression/balloon.ly
deleted file mode 100644
index 3a9bd6154a..0000000000
--- a/input/regression/balloon.ly
+++ /dev/null
@@ -1,32 +0,0 @@
-
-\header {
-    texidoc = "With balloon texts, objects in the output can be marked,
-with lines and explanatory text added."
-    }
-\version "2.1.21"
-
-\score  {
- \notes {
-     
-   \relative c'  {
-
-       %% by hand:
-       \once\property Voice.Stem \set #'print-function = #Balloon_interface::print
-       \once\property Voice.Stem \set #'balloon-original-callback = #Stem::print
-       \once\property Voice.Stem \set #'balloon-text = #"I'm a stem"
-       \once\property Voice.Stem \set #'balloon-text-offset = #'(3 . 4)
-       \once\property Voice.Stem \set #'balloon-text-props
-         = #'((font-family .  roman))
-
-
-       %% use predefd function. 
-       \context Voice \applyoutput #(add-balloon-text
-				     'NoteHead "heads, or tails?"
-				     '(0 . -3))
-
-      
-       c8
-       }
-  }
- \paper{ raggedright = ##t }
-}
diff --git a/input/regression/bar-number.ly b/input/regression/bar-number.ly
deleted file mode 100644
index 786d43beb0..0000000000
--- a/input/regression/bar-number.ly
+++ /dev/null
@@ -1,30 +0,0 @@
-
-\version "2.1.7"
-
-\header {
-
-texidoc="Bar number settable and padding adjustable.  Bar numbers
-start counting after the anacrusis.
-
-The padding should be increased, to prevent clashes at the start of the line.
- 
-"
-
-}
-
-\score {
-  \notes \relative c'' {
-      \partial 4 c4 
-      c1 c c
-      \property Score.currentBarNumber = #99999
-      \property Score.BarNumber \override #'padding = #3
-      c1 c
-  }
-  \paper {
-    raggedright = ##t
-    \translator {
-	\ScoreContext
-	BarNumber \override #'break-visibility = #all-visible
-    }
-  }
-}
diff --git a/input/regression/bar-scripts.ly b/input/regression/bar-scripts.ly
deleted file mode 100644
index 9a51400d5f..0000000000
--- a/input/regression/bar-scripts.ly
+++ /dev/null
@@ -1,30 +0,0 @@
-\version "2.1.7"
-\header{
-texidoc="
-
-Markings that are attached to (invisible) barlines are 
-delicate: the are attached to the rest of the score without the score
-knowing it.  Consequently, they fall over  often.
-"
-}
-
-\paper { raggedright = ##t }
-
-onestaff =  \new Staff\notes\relative c''  {
-	\property Staff.instr = instr
-	\property Staff.instrument = instrument \mark "B"
-	 c1 \mark "A" \break c2  c2 \break
-}
-
-grstaff =  \notes \relative c'' \context GrandStaff <<
-	\new Staff {
-
-	\property Staff.instr = instr
-	
-	 \mark "B" \break c1 \mark "A" c2  }
-	\new Staff { c1 c2  }
->>
-
-
-\score {\grstaff}
-
diff --git a/input/regression/beam-auto-knee.ly b/input/regression/beam-auto-knee.ly
deleted file mode 100644
index 87d90160b1..0000000000
--- a/input/regression/beam-auto-knee.ly
+++ /dev/null
@@ -1,18 +0,0 @@
-
-\version "2.1.7"
-
-\header{ texidoc="Automatic kneeing. A knee is made when a horizontal
-beam fits in a gap between note heads that is larger than a predefined
-threshold.
-"
-}
-
-\score {
-  \context Staff \notes\relative c''{ 
-     c'8[ c,,]  c8[ e']
-     c,16[ e g c e g c c,,] 
-  }
-  \paper{
-    linewidth = 40*\staffspace
-  }
-}
diff --git a/input/regression/beam-break.ly b/input/regression/beam-break.ly
deleted file mode 100644
index b4df6e5579..0000000000
--- a/input/regression/beam-break.ly
+++ /dev/null
@@ -1,13 +0,0 @@
-
-\header {
-    texidoc = "Beams can be printed across line breaks if forced.
-"
-
-}
-\version "2.1.7"
-    \paper { raggedright= ##t }
-
-\score { \notes \relative c''  {
-    \property Score.forbidBeamBreak = ##f
-   \time 3/16 c16-[ d e \break f-] 
-}}
diff --git a/input/regression/beam-center-slope.ly b/input/regression/beam-center-slope.ly
deleted file mode 100644
index c375f25480..0000000000
--- a/input/regression/beam-center-slope.ly
+++ /dev/null
@@ -1,42 +0,0 @@
-
-
-\version "2.1.7"
-\header{
-
-    texidoc="Simple beams on middle staffline are allowed to be
-    slightly sloped, even if the notes have ledgers.  Beams reaching
-    beyond middle line can have bigger slope."
-
-}
-
-\score{
-    \notes\relative c'{
-	%%\property Staff.Stem \set #'beamed-lengths = #'(3.50)
-	%%  c8[ d]
-	%%  d[ c]
-	%% r2
-	%% \property Staff.Stem \set #'beamed-lengths = #'(3.26)
-
-         a8[^"small slope" b]
-         b[ a]
-
-	 c''[ b]
-	 b[ c]
-	
-	 c,,[ d]
-	 d[ c]
-	
-	 a''[ g]
-	 g[ a]
-
-	 c,,[^"bigger slope" e]
-	 e[ c]
-	
-	 a''[ f]
-	 f[ a]
-    }
-    \paper{
-	raggedright = ##t
-    }
-}
-
diff --git a/input/regression/beam-concave.ly b/input/regression/beam-concave.ly
deleted file mode 100644
index d58b2f83c1..0000000000
--- a/input/regression/beam-concave.ly
+++ /dev/null
@@ -1,84 +0,0 @@
-
-\version "2.1.7"
-\header{
-
-texidoc = "Concave beams should be horizontal. Informally spoken,
-  concave refers to the shape of the notes that are opposite a
-  beam. If an up-beam has high notes on its center stems, then we call
-  it concave.  This example shows borderline cases. Only the beams
-  that are marked `horiz' should be printed horizontally.  " }
-
-
-%{
- However, what exactly
-it is that makes a beam concave is still unclear.
-
-Beams 1 and 3 should be sloped, 2 and 4 should be horizontal.  Two
-sane attempts of calculating concaveness of a beam fail to distinguish
-beams this way."
-%}
-
-
-\score{
-  \notes\relative c'{
-
-%% This case seems easy: second beam should be horizontal.
-    
-    %% SCS-I Menuet I, m15
-    %% sloped
-    %% slope = -0.5ss
-    %% concaveness: 0.06
-    \clef bass
-    \time 3/4
-    \key g\major
-    a8 g fis e b dis
-    
-    %% SCS-I Menuet II, m20
-    %% horizontal
-    %% slope = 0
-    %% concaveness: 0.09
-    \key f\major
-    fis,^"horiz." a c es d c
-
-%%% Sarabande: the first beam, obviously more concave, is not horizontal,
-%%% but is matched with the next beam in the piece: context.
-    
-    %% Sarabande: m24
-    %% sloped
-    %% concaveness: 0.00
-    \stemUp
-     d,16[ a' b cis]
-
-    %% Sarabande: m25
-    %% horizontal
-    %% concaveness:a: 0.12
-     a'16[^"horiz." b c b]
-    
-% Hmm.  Concaveness of both: 1.75
-%     %% SCS-VI Prelude, m81
-%     %% slope = 0.0
-%     \stemBoth
-%     \key d\major
-%      e,8[ cis a']
-    
-%     %% SCS-VI Prelude, m82
-%     %% slope = 0.1ss (possibly b.o. context?)
-%      g,[ e' cis]
-
-    
-%%% Han-Wen: this should be concave
-     a,16[^"horiz." a' a a]
-
-    \clef treble
-
-%%%% This should not be concave (hwn)
-    \stemUp bes8[  \stemDown d'8 bes8]  
-  }
-  \paper{
-    raggedright = ##t
-  }
-}
-
-%% Local variables:
-%% LilyPond-indent-level:2
-%% End:
diff --git a/input/regression/beam-cross-staff-auto-knee.ly b/input/regression/beam-cross-staff-auto-knee.ly
deleted file mode 100644
index 16d0e5ccbb..0000000000
--- a/input/regression/beam-cross-staff-auto-knee.ly
+++ /dev/null
@@ -1,26 +0,0 @@
-
-\version "2.1.7"
-
-\header{
-
-    texidoc="Automatic cross-staff knees also work (here we see them
-with explicit staff switches)."
-
-     }
-
-\score {
-  \notes \context PianoStaff <<
-    \context Staff = "up" \notes\relative c''{
-      b8[ \change Staff="down" d,, ]
-      c[ \change Staff="up" c'' ]
-      b,[ \change Staff="down" d^"no knee" ]
-    }
-    \context Staff = "down" {
-      \clef bass 
-      s2.
-    }
-  >>
-  \paper{
-    raggedright = ##t
-  }
-}
diff --git a/input/regression/beam-cross-staff-slope.ly b/input/regression/beam-cross-staff-slope.ly
deleted file mode 100644
index c2556c5038..0000000000
--- a/input/regression/beam-cross-staff-slope.ly
+++ /dev/null
@@ -1,32 +0,0 @@
-\version "2.1.7"
-\header {
-    texidoc = "Cross staff  (kneed) beams don't cause extreme slopes."
-}
-
-\score {
-    \notes\context PianoStaff <<
-    \context Staff = up
-    \relative c'' <<
-        {
-	    \stemDown
-            f16( \> d b\! \change Staff = down \stemUp
-            \clef treble g ~ < g e>8)
-	    
-	     e[ \change Staff = up
-	    \stemDown
-	    e e]
-	    \change Staff = down
-	    \stemUp
-	    e8.[
-		\change Staff = up
-	    \stemDown
-	    e8.]
-	    
-	} \\
-    >>
-    \context Staff = down {
-        \time 3/8 \clef bass s4.*3 }
-    >>
-    \paper { raggedright = ##t}
-}
-
diff --git a/input/regression/beam-cross-staff.ly b/input/regression/beam-cross-staff.ly
deleted file mode 100644
index 9173d6b33f..0000000000
--- a/input/regression/beam-cross-staff.ly
+++ /dev/null
@@ -1,34 +0,0 @@
-
-\version "2.1.7"
-\header{
-texidoc="
-Beams can be typeset over fixed distance aligned staves, beam
-beautification doesn't really work, but knees do. Beams should be
-behave well, wherever the switching point is.
-"
-}
-\score{
-	\context PianoStaff <<
-	\context Staff=one \notes\relative c'{
-		\stemUp  c8[ c \change Staff=two \stemUp c c]
-		 c[ c c c]
-		\change Staff=one
-		\stemDown  c8[ c \change Staff=two \stemUp c c]
-		r2
-		\stemDown  c8[ c \change Staff=one \stemDown c c]
-		r2
-		\change Staff=two
-		\stemUp  c8[ c \change Staff=one \stemDown c c]
-		r2
-	}
-	\context Staff=two \notes\relative c'{
-		\clef bass
-		s1
-		s1
-		s1
-		s1
-	}
-	>>
-}
-
-
diff --git a/input/regression/beam-damp.ly b/input/regression/beam-damp.ly
deleted file mode 100644
index de3acf0888..0000000000
--- a/input/regression/beam-damp.ly
+++ /dev/null
@@ -1,26 +0,0 @@
-
-\version "2.1.7"
-\header { texidoc = "@cindex Beam Damp
-Beams are less steep than the notes they encompass. " }
-
-\score{
-	\notes\relative c''{
-%		\stemUp
-%		 a16[ b b c]
-%		 c[ b b a]
-%		\stemDown
-%		 c[ b b a]
-%		 a[ b b c]
-		\stemUp
-		 g16[ a b c]
-		 c[ b a g]
-		\stemDown
-		 d'[ c b a]
-		 a[ b c d]
-	}
-	\paper{
-		raggedright = ##t
-	}
-}
-
-
diff --git a/input/regression/beam-default-lengths.ly b/input/regression/beam-default-lengths.ly
deleted file mode 100644
index e492909457..0000000000
--- a/input/regression/beam-default-lengths.ly
+++ /dev/null
@@ -1,18 +0,0 @@
-
-\version "2.1.7"
-
-\header{
-    texidoc="Beamed stems have standard lengths if possible. Quantization is switched off in this example."
-    }
-
-\score{
-    \notes\relative c'{
-	\property Voice.Beam \set #'position-callbacks =
-	 #`(,Beam::least_squares
-	 ,Beam::check_concave
-	 ,Beam::slope_damping)
-
-        f4  f8[ f]  f16[ f]  f32[ f]  f64[ f]  f128[ f] 
-    }
-    \paper{ raggedright = ##t}
-}          
diff --git a/input/regression/beam-extreme.ly b/input/regression/beam-extreme.ly
deleted file mode 100644
index fb86e86c3c..0000000000
--- a/input/regression/beam-extreme.ly
+++ /dev/null
@@ -1,48 +0,0 @@
-
-\version "2.1.7"
-\header{
-texidoc="
-Beams should behave reasonably well, even under extreme circumstances.
-Stems may be short, but noteheads should never touch the beam.  Note that
-under normal circumstances, these beams would get knees here
-@code{Beam.auto-knee-gap} was set to false.
-"
-}
-
-extreme = \notes\relative c'' {
-  \stemBoth
-   g8[ c c,]
-   c16[ c'' a f]
-  \stemUp 
-   c,,32[ c'' a f]
-
-  %%%%%%%
-  \stemBoth
-  \times 2/3{ d16[ fis' d,]} \times 2/3{ cis[ g'' cis,,]}
-  a'16 cis a, g''' % Used to give a nice beam directed upwards.
-  \stemBoth
-
-  \transpose c c {
-	  \stemDown  e'8[ e e']
-      }
-}
-
-\score {
-  {
-    % If we want to test extreme beams,
-    % we should not have them auto-kneed
-    \property Voice.Beam \override #'auto-knee-gap = ##f
-    \extreme
-
-
-    %% what does this test? --hwn
-%{
-    \property Voice.Beam \override #'slope-limit = #1000
-    \extreme
-    %}
-  }
-  \paper{
-%    raggedright = ##t
-    raggedright = ##t
-  }
-}
diff --git a/input/regression/beam-french.ly b/input/regression/beam-french.ly
deleted file mode 100644
index c2bf98eca6..0000000000
--- a/input/regression/beam-french.ly
+++ /dev/null
@@ -1,24 +0,0 @@
-
-\version "2.1.7"
-
-\header {
-
-    texidoc = "French style beaming. In french beaming, the
-    stems do not go to the outer beams."
-
-}
-
-\score { \notes
-	 \relative c'
-	 {
-	     \property Voice.Stem \override #'french-beaming = ##t
-	     c16[ c c c]
-	     c8[ c16 c16 c8]
-	     c8[ c16 e16 g8]
-	 }
-
-    \paper { raggedright= ##t }
-
-     }
-
-
diff --git a/input/regression/beam-funky-beamlet.ly b/input/regression/beam-funky-beamlet.ly
deleted file mode 100644
index dfcabaf1c5..0000000000
--- a/input/regression/beam-funky-beamlet.ly
+++ /dev/null
@@ -1,21 +0,0 @@
-
-\version "2.1.7"
-\header {
-
-texidoc=" Funky kneed beams with beamlets also work. The beamlets
-should be pointing to the note head.
-"
-
-}
-
-
-\score {
-  \notes\relative c' {
-     c16 c''8 c,,16
-     c16 c''8 c16
-     c16 c,,8 c16          
-     
-  }
-  \paper { raggedright = ##t}
-}
-	  
diff --git a/input/regression/beam-funky.ly b/input/regression/beam-funky.ly
deleted file mode 100644
index f6f99900b8..0000000000
--- a/input/regression/beam-funky.ly
+++ /dev/null
@@ -1,39 +0,0 @@
-
-\version "2.1.7"
-\header {
-    
-    texidoc = "Knee beaming, complex configurations.  According to
-Paul Roberts, the first stem of a beam determines the direction of the
-beam, and as such the way that following (kneed) stems attach to the
-beam. This is in disagreement with the current algorithm."
-    
-}
-
-\score { \notes
-\relative c'
-	 {
-	     \property Voice.Beam \set #'auto-knee-gap = #7
-	     \property Voice.subdivideBeams = ##t	     
-	     \time 8/8
-	      c,16[  g'''16  
-	     c,,,16  g'''16 
-	     c,,,16  g'''16 	     	     
-	     c,,,16  g'''16 ]
-
-	      c,,,16[ c c c
-	      b'''   b b b]
-
-	     \transpose c' a, { \relative b'' {  g,16[  g'''16  
-	     g,,,16  g'''16 
-	     g,,,16  g'''16 	     	     
-	     g,,,16  g'''16
-	     g g,,,
-	     g''' g,,,
-	     g''' g,,,
-	     g''' g,,,]	    }  }
-	     
-	 }
-\paper { raggedright = ##t} 
-
-     }
-
diff --git a/input/regression/beam-knee-symmetry.ly b/input/regression/beam-knee-symmetry.ly
deleted file mode 100644
index c8b8e82cf1..0000000000
--- a/input/regression/beam-knee-symmetry.ly
+++ /dev/null
@@ -1,18 +0,0 @@
-
-\version "2.1.7"
-\header {
-
-    texidoc = "Point-symmetric beams should receive the same
-    quanting. There is no up/down bias in the quanting code."
-
-}
-
-\score{
-    \notes\relative c'{
-	 a8[ b'' a,, b'']
-	 b8[ a,, b'' a,,]
-    }
-    \paper{
-	raggedright = ##t 
-    }
-}
diff --git a/input/regression/beam-length.ly b/input/regression/beam-length.ly
deleted file mode 100644
index c70c0c8f9e..0000000000
--- a/input/regression/beam-length.ly
+++ /dev/null
@@ -1,17 +0,0 @@
-
-\version "2.1.7"
-
-\header{
-texidoc="
-Beams should look the same.
-"
-}
-    \paper { raggedright= ##t }
-
-    
-\score { 
-  \context Voice \notes\relative c {
-			 d''8[ d d]  d[ g d]
-			c c
-  }
-}
diff --git a/input/regression/beam-manual-beaming.ly b/input/regression/beam-manual-beaming.ly
deleted file mode 100644
index 4877eeffbe..0000000000
--- a/input/regression/beam-manual-beaming.ly
+++ /dev/null
@@ -1,28 +0,0 @@
-
-\version "2.1.7"
-
-
-\header {
-texidoc =  
-"Beaming can be overidden for individual stems."
-}
-\score {
-\notes \relative c'' {
-  c32[ c
-
-
-%% WARNING: #'beaming is written, so this
-%% property can not be shared between objects. Always use
-%%  \once.
-%%
-
-
-  \once \property Voice.Stem \override
-   #'beaming = #(cons (list   1 2) (list 0 2 4))
-c
-  \once \property Voice.Stem \override
-   #'beaming = #(cons (list 0 2 4) (list 0 1 4))
-c c c]
-}
-\paper{ linewidth = -1.0 }
-}
diff --git a/input/regression/beam-multiple-cross-staff.ly b/input/regression/beam-multiple-cross-staff.ly
deleted file mode 100644
index 64db00d1e0..0000000000
--- a/input/regression/beam-multiple-cross-staff.ly
+++ /dev/null
@@ -1,30 +0,0 @@
-\version "2.1.7"
-\header {
-
-    texidoc = "Kneed beams (often happens with cross-staff beams)
-should look good when there are multiple beams: all the beams should
-go on continuously at the staff change. Stems in both staffs reach up
-to the last beam.
-"
-}
-
-\score { \notes
-	 \context PianoStaff \relative c' <<
-	     \context Staff = SA {
-		 \stemDown
-		  c8[ c16 \change Staff = SB \stemUp c16 ]
-		 \stemBoth
-		  f[ g \change Staff = SA a c] 
-			       }
-	     \context Staff = SB \relative c' {
-\clef bass
-		  b8[ b16 \stemUp b,,16 ]
-
-		 g'4\rest
-		  b,8[ b16 \stemDown b''16 b ]
-	     }	     
-	     
-	     >>
-    \paper { raggedright= ##t }
-
-}
diff --git a/input/regression/beam-over-barline.ly b/input/regression/beam-over-barline.ly
deleted file mode 100644
index 067346afec..0000000000
--- a/input/regression/beam-over-barline.ly
+++ /dev/null
@@ -1,11 +0,0 @@
-
-\version "2.1.7"
-\header {
-texidoc = "Explicit beams may cross barlines. "
-}
-\score {
-\notes \relative c'' { c2.  c8[ c8 c8 c8] }
-
-    \paper { raggedright= ##t }
-
-}
diff --git a/input/regression/beam-position.ly b/input/regression/beam-position.ly
deleted file mode 100644
index 3009c73c41..0000000000
--- a/input/regression/beam-position.ly
+++ /dev/null
@@ -1,29 +0,0 @@
-
-\version "2.1.7"
-\header{
-
-texidoc=" Beams on ledgered notes should always reach the middle staff
-line.  The second beam counting from the note head side, should never
-be lower than the second staff line.  This does not hold for grace
-note beams.  Override with @code{no-stem-extend}.  "
-
-}
-
-
-\score { 
-  \context Voice \notes\relative c {
-     f8[ f]   f64[ f] 
-     \grace { 
-       f8[ e8] 
-      \property Voice.Stem \override #'no-stem-extend = ##f
-       f8[ e8] 
-      \property Voice.Stem \revert #'no-stem-extend
-    }
-	 f8[ f]
-	
-  }
-  \paper {
-    raggedright = ##t
-  }  
-  \midi { }
-}
diff --git a/input/regression/beam-postfix-notation.ly b/input/regression/beam-postfix-notation.ly
deleted file mode 100644
index dd718ad13b..0000000000
--- a/input/regression/beam-postfix-notation.ly
+++ /dev/null
@@ -1,18 +0,0 @@
-
-\version "2.1.7"
-\header {
-
-texidoc = "Beams and ties may be entered in postfix notation, separating the
-    notes and the brackets with a dash."
-
-}
-    \paper { raggedright= ##t }
-
-
-\score
-{
- \notes\relative c''
-   {
-       c8[~ c]
-   }
-}
diff --git a/input/regression/beam-quanting-32nd.ly b/input/regression/beam-quanting-32nd.ly
deleted file mode 100644
index 0e1137bfc1..0000000000
--- a/input/regression/beam-quanting-32nd.ly
+++ /dev/null
@@ -1,31 +0,0 @@
-
-\header {
-
-texidoc = "Stem lengths take precedence over beam quants: `forbidden'
-    quants are only avoided for 32nd beams when they are outside of
-    the staff. However, that leads to very long stems, which is even
-    worse."
-
-}
-
-\version "2.1.7"
-
-\score {
-    \notes \relative c''{ 
-\time 3/8
-a'16[ b] g[ b]
-a32[ b] g[ b] 
-g16[ a] f[ a]
-g32[ a] f[ a] 
-f16[ g] e[ g]
-f32[ g] e[ g] 
-e16[ f] d[ f]
-e32[ f] d[ f] 
-d16[ e] c[ e]
-d32[ e] c[ e]
-c16[ d] b[ d]
-c32[ d] b[ d]
-a'32[ a] g[ g] f[ f] e[ e] d[ d] c[ c]
-}
-\paper {  }
-}
diff --git a/input/regression/beam-quanting-horizontal.ly b/input/regression/beam-quanting-horizontal.ly
deleted file mode 100644
index b0533084c0..0000000000
--- a/input/regression/beam-quanting-horizontal.ly
+++ /dev/null
@@ -1,29 +0,0 @@
-
-\version "2.1.7"
-
-\header{
-
-    texidoc = "Test beam quant positions for horizontal beams.  Staff
-lines should be covered in all cases. For 32nd beams, the free stem
-lengths are between 2 and 1.5."
-
-}
-
-\score{
-	\notes\relative c' { 
-		 c8[ c]  a''[ a]
-		 a,[ a]  c[ c]
-		 d,8[ d]  g'[ g]
-		 g,[ g]  d'[ d]
-		 c,16[ c]  a''[ a]
-		 a,[ a ]  c[ c]
-		\break
-		 c,32[  c]  a''[ a]
-		 f,[ f]  e'[ e]
-		 c,64[ c]  a''[ a]
-		 f,[ f]  e'[ e]
-		\break
-	}
-}
-
-
diff --git a/input/regression/beam-quarter.ly b/input/regression/beam-quarter.ly
deleted file mode 100644
index d98f737177..0000000000
--- a/input/regression/beam-quarter.ly
+++ /dev/null
@@ -1,12 +0,0 @@
-
-\version "2.1.7"
-\header
-{
-    texidoc= "Quarter notes may be beamed: the beam is halted momentarily."
-}
-
-\score {\notes \relative c'' {
-	 c8[ c4 c8] % should warn here!
-}
-\paper { raggedright = ##t} 
-}
diff --git a/input/regression/beam-rest.ly b/input/regression/beam-rest.ly
deleted file mode 100644
index d785ee7234..0000000000
--- a/input/regression/beam-rest.ly
+++ /dev/null
@@ -1,13 +0,0 @@
-
-\header {
- texidoc = "The number of beams doesn't change on a rest."
-}
-
-\version "2.1.7"
-
-\score { \notes \relative c, {
-  \clef bass	 
-   e8[ r16 f d'8 e16 e16]  c8[ c16 r16 bes8 r16 c16] |
- }
-\paper { raggedright = ##t}
-}
diff --git a/input/regression/beam-second.ly b/input/regression/beam-second.ly
deleted file mode 100644
index 1f09ce7a1e..0000000000
--- a/input/regression/beam-second.ly
+++ /dev/null
@@ -1,20 +0,0 @@
-
-\version "2.1.7"
-\header{
-  texidoc="
-Seconds are tricky.  We used to have problems with seconds being too
-steep, or getting too long stems.  In a file like this, showing
-seconds, you'll spot something fishy very quickly.
- 
-" }
-\score{
-    \notes\relative c''{
-	\stemUp
-	 b8[ c]
-	 b16[ c]
-	 a'[ b]
-    }
-    \paper{
-	raggedright = ##t
-    }
-}
diff --git a/input/regression/beam-shortened-lengths.ly b/input/regression/beam-shortened-lengths.ly
deleted file mode 100644
index cf0417a0cf..0000000000
--- a/input/regression/beam-shortened-lengths.ly
+++ /dev/null
@@ -1,18 +0,0 @@
-
-\version "2.1.7"
-
-\header{
-    texidoc="Beams in unnatural direction, have shortened stems, but do not look too short."
-    }
-
-\score{
-    \notes\relative c'{
-	\property Voice.Beam \set #'position-callbacks =
-	 #`(,Beam::least_squares
-	 ,Beam::check_concave
-	 ,Beam::slope_damping)
-	\stemUp
-        f'4  f8[ f]  f16[ f]  f32[ f]  f64[ f]  f128[ f] 
-    }
-    \paper{ raggedright = ##t}
-}          
diff --git a/input/regression/beamed-chord.ly b/input/regression/beamed-chord.ly
deleted file mode 100644
index e7f698467b..0000000000
--- a/input/regression/beamed-chord.ly
+++ /dev/null
@@ -1,21 +0,0 @@
-
-\version "2.1.7"
-
-\header{
-texidoc = "Hairy case for beam, chord, and automatic knees."
-
-%texidoc = "Beam thinks that first two notes should be stem down.  Can
-%be fixed by uncommenting \stemUp"
-}
-
-\paper { raggedright= ##t }
-
-
-\score{
-  \notes\relative c'{
-    %\stemUp
-    \clef alto
-    \time 3/4
-    r8 <d  bes >( bes') d <e g, c, c,>-> r |
-  }
-}
diff --git a/input/regression/beaming-ternary-metrum.ly b/input/regression/beaming-ternary-metrum.ly
deleted file mode 100644
index 0e17f782f3..0000000000
--- a/input/regression/beaming-ternary-metrum.ly
+++ /dev/null
@@ -1,14 +0,0 @@
-
-\version "2.1.7"
-\header {
-texidoc = "Automatic beaming works also in ternary time sigs."
-}
-
-\score {
-   \notes \relative c'' {
-\time 6/8
- c8.[ c16 c16 c16] 
-}
-\paper { raggedright = ##t}
-}
-
diff --git a/input/regression/beaming.ly b/input/regression/beaming.ly
deleted file mode 100644
index 7fb2154377..0000000000
--- a/input/regression/beaming.ly
+++ /dev/null
@@ -1,31 +0,0 @@
-
-\version "2.1.7"
-
-\header{
-texidoc="
-Beaming is generated automatically. Beams may cross bar lines. In that
-case, line breaks are forbidden.  Yet clef and key signatures are
-hidden just as with breakable bar lines.
-"
-}
-
-\score { \context Staff \notes \relative c''  {
-	 c8.[ c16]
-	 c8.[ c16 c8.  c16]
-	 c16[ c8.] |
-	 c8.[ c16  c16  c8.]
-	 c8.[ c32  c32]
-	 c8[ c8] |
-	 c16[ c16]
-	 c32[ c32]
-	 c64[ c64]	
-	c32
-	c2
-
-	 c8[ c c] c8 % over barline
-	 c16[ c8 c16]
-	 c32[ c16 c16 c16 c32]
-	 c32[ c16 c8 c32]		 % hmm ?
-	
-		}}
-
diff --git a/input/regression/beams.ly b/input/regression/beams.ly
deleted file mode 100644
index 95cca693c6..0000000000
--- a/input/regression/beams.ly
+++ /dev/null
@@ -1,17 +0,0 @@
-
-\version "2.1.7"
-\header {
-    texidoc = "Beams (simple)."
-}
-
-    \paper { raggedright= ##t }
-
-\score { \notes
-\relative c'
-	 {
-	 c16[ c8.]
-	 c8.[ c16]
-	 c8[ c16 c16 c8]
-	 c8[ c16 e16 g8]
-
-    }}
diff --git a/input/regression/between-systems.ly b/input/regression/between-systems.ly
deleted file mode 100644
index 3540a09bd1..0000000000
--- a/input/regression/between-systems.ly
+++ /dev/null
@@ -1,32 +0,0 @@
-
-\version "2.1.7"
-
-\header{
-texidoc="
-By inserting @TeX{} commands between systems, you can force pagebreaks.
-
-In reality, you'd use the LateX command @code{\\newpage} instead of (pagebreak)
-of course. 
-"
-}
-
-
-#(define (set-page-break grob grob-c context)
-  (let*
-   ((meta (ly:get-grob-property grob 'meta))
-    (name (cdr (assoc 'name meta))))
-   
-   (if (equal? 'NonMusicalPaperColumn name)
-    (ly:set-grob-property! grob 'between-system-string "(pagebreak)\n\n"))
-))
-
-\score {
-    \notes \relative c' {
-	c1
-	\context Score \applyoutput #set-page-break
-	\break
-	
-	c1
-    }
-}
-
diff --git a/input/regression/break.ly b/input/regression/break.ly
deleted file mode 100644
index c5fbc2ec3f..0000000000
--- a/input/regression/break.ly
+++ /dev/null
@@ -1,20 +0,0 @@
-
-\version "2.1.7"
-
-\header{
-texidoc="
-Breaks can be encouraged and discouraged using @code{\\break} and
-@code{\\noBreak}."
-}
-
-
-\score{
-	\notes\relative c'' \context Voice{
-	\emptyText
-	c1 \noBreak c1 \noBreak \mark "nobreak" c1 \noBreak
-	c1 \break \mark "break" c1 \break \mark "break" c1 
-	}
-	\paper {
-	    indent = 0.0
-	    linewidth = 4.0\cm}
-}
diff --git a/input/regression/breathing-sign-ancient.ly b/input/regression/breathing-sign-ancient.ly
deleted file mode 100644
index 26d2061da4..0000000000
--- a/input/regression/breathing-sign-ancient.ly
+++ /dev/null
@@ -1,50 +0,0 @@
-\version "2.1.7"
-
-\header{
-texidoc="
-Gregorian chant notation sometimes also uses commas and ticks, but in
-smaller font size (we call it 'virgula' and 'caesura').  However, the
-most common breathing signs are divisio minima/maior/maxima and
-finalis, the latter three looking similar to bar glyphs.
-
-" }
-
-\include "gregorian-init.ly"
-
-\score {
-
-    %
-    % Gregorian notation:
-    %
-    \context VaticanaStaff {
-      \notes \relative c' {
-
-	% we turn bars and bar numbers off for Gregorian stuff
-	\property Staff.BarLine \set #'transparent = ##t
-	\property Score.BarNumber \set #'transparent = ##t
-
-	% here is no \breathe
-	c g c
-
-	% \virgula applies rcomma, but in a smaller font
-	c \virgula g c
-
-	% \caesura applies rvarcomma, but in a smaller font
-	c \caesura g c
-
-	% \divisioMinima is a simple vertical stroke through the
-	% uppermost staffline, just like the original implementation
-	% of breathing signs.
-	c \divisioMinima g c
-
-	% \divisio{maior,maxima} and \finalis look like bars and are
-	% vertically centered on the staff; the direction property has
-	% no effect
-	c \divisioMaior g c
-	c \divisioMaxima g c
-
-	% this one looks almost like a "||" type bar
-	\finalis
-      }
-    }
-}
diff --git a/input/regression/breathing-sign.ly b/input/regression/breathing-sign.ly
deleted file mode 100644
index b03c5230cd..0000000000
--- a/input/regression/breathing-sign.ly
+++ /dev/null
@@ -1,58 +0,0 @@
-#(ly:set-option 'old-relative)
-\version "2.1.7"
-\header{
-texidoc="
-Breathing signs are available in different tastes: commas (default),
-ticks, vees and `railroad tracks' (caesura)."
- }
-
-
-\score {
-
-  {
-    %
-    % Modern notation:
-    %
-    \new Staff {
-      \notes \relative c'' {
-	\key es \major \time 3/4
-
-	% this bar contains no \breathe
-	<<
-	  { g4 as g } \\
-	  { es4 bes es }
-	>> |
-
-	% by default, \breathe uses the rcomma, just as if saying:
-	% \property Voice.BreathingSign \set #'text =
-	%	#(make-musicglyph-markup "scripts-rcomma")
-	<<
-	  { g4 as g } \\
-	  { es4 \breathe bes es }
-	>> |
-
-	% rvarcomma and lvarcomma are variations of the default rcomma
-	% and lcomma
-
-    	% N.B.: must use Staff context here, since we start a Voice below
-	\property Staff.BreathingSign \set #'text =
-		#(make-musicglyph-markup "scripts-rvarcomma")
-	<<
-	  { g4 as g } \\
-	  { es4 \breathe bes es }
-	>> |
-
-	% wedge
-	\property Voice.BreathingSign \set #'text =
-		 #(make-musicglyph-markup "scripts-upbow")
-	es8 d es f g8 \breathe f |
-
-	% caesura
-	\property Voice.BreathingSign \set #'text =
-		 #(make-musicglyph-markup "scripts-caesura")
-	es8[ d] \breathe  es[ f g f] |
-	es2 r4 \bar "||" \break
-      }
-    }
-  }
-}
diff --git a/input/regression/chord-changes.ly b/input/regression/chord-changes.ly
deleted file mode 100644
index 39ea66c4e6..0000000000
--- a/input/regression/chord-changes.ly
+++ /dev/null
@@ -1,27 +0,0 @@
-\version "2.1.7"
-
-\header{
-texidoc="Property chordChanges: display chord names only when
-there's a change in the chords scheme, but always display the
-chord name after a line break.
-"
-}
-
-scheme = \chords {
-  c1:m \break c:m c:m c:m d
-  c1:m \break c:m c:m c:m d
-}
-
-settings = {
-  \property ChordNames.chordChanges = ##t
-}
-
-\score {
-  \notes <<
-    \context ChordNames << \scheme \settings >>
-    \context Staff \transpose c c' \scheme
-  >>
-  \paper{
-    linewidth = 40 * \staffspace
-  }
-}
diff --git a/input/regression/chord-name-entry-11.ly b/input/regression/chord-name-entry-11.ly
deleted file mode 100644
index e7943b8644..0000000000
--- a/input/regression/chord-name-entry-11.ly
+++ /dev/null
@@ -1,14 +0,0 @@
-\version "2.1.7" 
-
-\header {
-
-    texidoc = "The 11 is only added to natural-3 if it
- is mentioned explicitly."
-
-}
-
-\score {
-      \chords { c:13 c:13.11 c:m13 }
-      \paper { raggedright = ##t } 
-}
-    
diff --git a/input/regression/chord-name-entry.ly b/input/regression/chord-name-entry.ly
deleted file mode 100644
index 0a3864052f..0000000000
--- a/input/regression/chord-name-entry.ly
+++ /dev/null
@@ -1,44 +0,0 @@
-\version "2.1.7"
-
-
-\header {
-
-texidoc = "Test file for the new chordname entry code (@code{\chords}
-mode): the suffixes are printed below the pitches."
-
-}
-
-\score
-{
-\notes  { \context Voice \chords {
-c1_"(nothing)"
-c:7_":7"
-c:m_":m"
-c:m7_":m7"
-c:aug_":aug"
-c:maj7_":maj7"
-c:dim_":dim"
-c:dim7_":dim7"
-c:sus4_":sus4"
-c:sus2_":sus2"
-c:6_":6"
-c:m6_":m6"
-c:7sus4_":7sus4"
-c:3-_":3-"
-c:3+_":3+"
-c:5+.3-_":5+.3-"
-c:7_":7"
-c:9_":9"
-c:11_":11"
-c:13_":13"
-c:m13_":m13"
-c:7^5_":7\\^{ }5"
-c^3_"\\^{ }3"
-c/g_"/g"
-c/gis_"/gis"
-c/a_"/a"
-c/+f_"/+f"
-c/+g_"/+g"
-}
-}
-}
diff --git a/input/regression/chord-name-exceptions.ly b/input/regression/chord-name-exceptions.ly
deleted file mode 100644
index 8d7ae1f982..0000000000
--- a/input/regression/chord-name-exceptions.ly
+++ /dev/null
@@ -1,44 +0,0 @@
-\version "2.1.7"
-\header { texidoc = "The property @code{chordNameExceptions} can used
-    to store a list of special notations for specific chords.
-
-Putting the exceptions list encoded as
-@example
-	\\notes @{ <c f g bes>1\\markup @{ \\super \"7\" \"wahh\" @} @}
-@end example
-into @code{chordNameExceptions} takes a little manoeuvring. The
-following code transforms @code{chExceptionMusic} (which is a
-sequential music) into a list of exceptions.
-@example
-	(sequential-music-to-chord-exceptions chExceptionMusic \#t)
-@end example
-Then,
-@example
-	(append
-	  ... ignatzekExceptions)
-@end example
-adds the new exceptions to the default ones, which are defined in
-@file{ly/chord-modifier-init.ly}.
-" }
-
-
-% 7sus4 denoted with ^7 wahh
-chExceptionMusic = \notes {
-  <c f g bes>1-\markup { \super "7" "wahh" }}
-
-% add to existing exceptions.
-chExceptions = #(append
-  (sequential-music-to-chord-exceptions chExceptionMusic #t)
-  ignatzekExceptions)
-
-theMusic =    \chords {
-      c:7sus4 c:dim7/+f
-      \property Current.chordNameExceptions = #chExceptions
-      c:7sus4 c:dim7/+f }
-
-  
-\score {
-  << \context ChordNames \theMusic
-    \context Voice \theMusic
-  >>  
-  }
diff --git a/input/regression/chord-name-major7.ly b/input/regression/chord-name-major7.ly
deleted file mode 100644
index 44ddf8f7d9..0000000000
--- a/input/regression/chord-name-major7.ly
+++ /dev/null
@@ -1,11 +0,0 @@
-\version "2.1.7"
-\header {
-    texidoc = "The layout of the major 7 can be tuned with
-@code{majorSevenSymbol}."
-}
-
-\score {\context ChordNames \chords {
-      c:7+
-      \property ChordNames.majorSevenSymbol = \markup { "j7" }
-      c:7+ }
-}
diff --git a/input/regression/chord-names-bass.ly b/input/regression/chord-names-bass.ly
deleted file mode 100644
index 8c1c84b049..0000000000
--- a/input/regression/chord-names-bass.ly
+++ /dev/null
@@ -1,20 +0,0 @@
-\version "2.1.7"
-
-\header {
-
-texidoc = "Test igatzek inversion and bass notes.
-Above the staff: computed chord names. Below staff: entered chord name. 
-"
-
-}
-
-
-bladidbla = \chords { 
-    f4:maj7/e_":maj7/e" f:maj7/f_":maj7/f" f2:maj7/g_":maj7/g"
-    f4:maj7/+e_":maj7/+e" f:maj7/+f_":maj7/+f" f2:maj7/+g_":maj7/+g"
- }
-
-\score {
-<< \context ChordNames \bladidbla
-  \context Voice \bladidbla >>
-}
diff --git a/input/regression/chord-scripts.ly b/input/regression/chord-scripts.ly
deleted file mode 100644
index 8404662be2..0000000000
--- a/input/regression/chord-scripts.ly
+++ /dev/null
@@ -1,23 +0,0 @@
-
-\version "2.1.7"
-\header {
-
-texidoc = "Scripts can also be attached to chord elements."
-
-}
-
-\score {
-    \notes \relative c''{
-	< c-.  > 4
-	< c->  > 4
-	< c-. e-. g-. b-. >  
-	< c^^  > 4
-	< c_^  > 4
-	< c_^ e^^ > 4
-	< c_^ e^^ > 4
-
-
-    }
-
-}
-
diff --git a/input/regression/chord-tremolo-short.ly b/input/regression/chord-tremolo-short.ly
deleted file mode 100644
index 64b03d4540..0000000000
--- a/input/regression/chord-tremolo-short.ly
+++ /dev/null
@@ -1,18 +0,0 @@
-\version "2.1.7"
-\header {
-  texidoc = "
-  Tremolo repeats can be constructed for short tremolos (total duration smaller than 1/4) too. Only some of the beams are connected to the stems. 
-  "
-}
-
-\score {
-  \context Staff \notes \relative c' {
-    \repeat "tremolo"  2 { c32 e32 }
-    \stemDown
-    \repeat "tremolo"  2 { c32 e32 }
-  }
-  \paper { raggedright = ##t }
-}
-
-%% new-chords-done %%
-
diff --git a/input/regression/chord-tremolo.ly b/input/regression/chord-tremolo.ly
deleted file mode 100644
index 0dd1b95701..0000000000
--- a/input/regression/chord-tremolo.ly
+++ /dev/null
@@ -1,46 +0,0 @@
-\version "2.1.7"
-
-\header{
-texidoc="
-Chord tremolos look like beams, but are a kind of repeat symbol.
-To avoid confusion, chord tremolo beams do not reach the stems, but 
-leave a gap.  Chord tremolo beams on half notes are not ambiguous,
-as half notes cannot appear in a regular beam, and should reach the 
-stems.
-
-In this example, each tremolo lasts exactly one measure.
-
-(To ensure that the spacing engine is not confused we add some regular
-notes as well.)
-
-"
-}
-
-\score { 
-  \context Voice \notes\relative c' {
-	\time 4/4
-	\repeat "tremolo" 16 { d32 e }
-	\repeat "tremolo" 8 { d16 e }
-	\repeat "tremolo" 4 { d8 e }
-
-	\time 3/4
-	\repeat "tremolo" 12 { d32 e }
-	\repeat "tremolo" 6 { d16 e } 
-	\repeat "tremolo" 3 { d8 e } 
-
-	\time 2/4
-	\repeat "tremolo" 8 { d32 e }
-	\repeat "tremolo" 4 { d16 e }
-	\repeat "tremolo" 2 { d8 e }
-
-	\time 1/4
-	\repeat "tremolo" 4 { d32 e }
-	\repeat "tremolo" 2 { d16 e }
-
-	c4 c4 c4 c4 c4 
-  }
-
-  \midi { }
-  \paper {} 
-}
-
diff --git a/input/regression/chords-funky-ignatzek.ly b/input/regression/chords-funky-ignatzek.ly
deleted file mode 100644
index 1725812698..0000000000
--- a/input/regression/chords-funky-ignatzek.ly
+++ /dev/null
@@ -1,30 +0,0 @@
-\version "2.1.7"
-
-
-\header {
-texidoc = "Jazz chords, unusual combinations."
-}
-
-chs = \notes 
-{
-<c d  f g>1
-<c d  e f g>1
-<c d  e  g>1
-<c d es  g as>1
-<c d e f g bes d' f'>1
-<c d e f g bes c'  d' e'>1
-<c e g bes c'  d' e'>1
-<c e g a bes>1
-<c e g a d'>1
-}
-
-
-\score{
-    <<
-	\context ChordNames {
-%	#(set-chord-name-style 'ignatzek)
-	\chs
-    }
-	\context Staff \notes \transpose c c' { \chs }
-    >>
-}
diff --git a/input/regression/clef-oct.ly b/input/regression/clef-oct.ly
deleted file mode 100644
index 68887d85b4..0000000000
--- a/input/regression/clef-oct.ly
+++ /dev/null
@@ -1,30 +0,0 @@
-
-\version "2.1.7" \header {
-
-    texidoc = "Octavation signs may be added to clefs.  These
-octavation signs may be placed below or above (meaning an octave
-higher or lower), and can take any value, including 15 for two octaves."
-
-}
-
-\score { \notes
-
-	\relative c'' {
-
-	    \clef "G_8"
-	    c4
-	    \clef "G_15"
-	    c4
-	    \clef "G_7"
-	    c4
-	    \clef "G_6"
-	    c4 
-	    \clef "G^8"
-	    c4 
-	    \clef "G^15"
-	    c4 
-	    \clef "G^9"
-	    c4 
-}
-	 \paper { raggedright = ##t  }
-	     }
diff --git a/input/regression/clefs.ly b/input/regression/clefs.ly
deleted file mode 100644
index 4ccdb268f7..0000000000
--- a/input/regression/clefs.ly
+++ /dev/null
@@ -1,33 +0,0 @@
-\version "2.1.7"
-
-\header{
-
-    texidoc=" Clefs with @code{full-size-change} should be typeset in
-full size. For octaviated clefs, the ``8'' should appear closely above
-or below the clef respectively."
-
-}
-
-
-
-\score {
-       \notes{ 
-       
-         \clef "treble" c'1^"{treble}" \bar "||"
-         \clef "french"c'1^"{french}" \bar "||"
-         \clef "soprano"c'1^"{soprano}" \bar "||"
-         \clef "mezzosoprano"c'1^"{mezzosoprano}" \bar "||"
-         \clef "alto"c'1^"{alto}" \bar "||"
-         \clef "tenor"c'1^"{tenor}" \bar "||"
-         \clef "baritone"c'1^"{baritone}" \bar "||"
-         \clef "varbaritone"c'1^"{varbaritone}" \bar "||"
-         \clef "bass"c'1^"{bass}" \bar "||"
-         \clef "subbass"c'1^"{subbass}" \bar "||"
-	 \property Staff.Clef \override #'full-size-change  = ##t 
-         \clef "treble" c'1^"full-size-change = \#t" \bar "|."
-         }
-         \paper{
-	  raggedright = ##t
-         }
-}
-
diff --git a/input/regression/cluster.ly b/input/regression/cluster.ly
deleted file mode 100644
index 332ce4c950..0000000000
--- a/input/regression/cluster.ly
+++ /dev/null
@@ -1,22 +0,0 @@
-
-\version "2.1.7"
-\header {
-    texidoc = "Clusters are a device to denote that a complete range of
-notes is to be played."
-}
-
-fragment =\notes \relative c' {
-         c4 f4 <e d'>4
-         <g a>8 <e a> a4 c2 <d b>4 e4 
-         c4 }
-
-\score {
- \notes <<
-     \new Staff \fragment
-     \new Staff \apply #notes-to-clusters \fragment
-     >>
- \paper { raggedright = ##t }
-}
-
-
-
diff --git a/input/regression/collision-2.ly b/input/regression/collision-2.ly
deleted file mode 100644
index a41f71a642..0000000000
--- a/input/regression/collision-2.ly
+++ /dev/null
@@ -1,17 +0,0 @@
-\version "2.1.7"
-\header {
-texidoc = "Collisions for single head notes. "
-}
-    \paper { raggedright= ##t }
-
-
-\score {
-    \notes
-
-  \context Staff \notes \transpose c c' <<  
-	{  c4 d e f g2 g4 a | }  \\
-	{ g4 f e g  g2 g2 } 
-  >>
-}
-
-
diff --git a/input/regression/collision-dots-invert.ly b/input/regression/collision-dots-invert.ly
deleted file mode 100644
index e7842f4b81..0000000000
--- a/input/regression/collision-dots-invert.ly
+++ /dev/null
@@ -1,14 +0,0 @@
-\header {
-
-    texidoc = "When notes are colliding, the resolution depends on the
-    dots: notes with dots should go to the right, if there could be
-    confusion to which notes the dots belong."
-}
-\version "2.1.19"
-\score { 
-  \notes \relative c'' { 
-    << <a c>2\\ { <b d>4 <b d>4 }   >>
-    << { <a c>2 } \\ { <b d>4. <b e>8 } >> 
-  }
-  \paper {  raggedright = ##t } 
-}   
diff --git a/input/regression/collision-dots-move.ly b/input/regression/collision-dots-move.ly
deleted file mode 100644
index 31ca437497..0000000000
--- a/input/regression/collision-dots-move.ly
+++ /dev/null
@@ -1,16 +0,0 @@
-\header {
-    
-    texidoc = "If collision resolution finds dotted note head must
-	remain on left hand side, move dots to the right."
-
-}
-
-\paper { raggedright = ##t }
-
-\score {
-  \notes \relative c {
-    \key d \minor
-    \clef bass
-    << <cis a' cis>4 \\ { g'8. bes16} >>
-  }
-}
diff --git a/input/regression/collision-dots.ly b/input/regression/collision-dots.ly
deleted file mode 100644
index 48dbd571ee..0000000000
--- a/input/regression/collision-dots.ly
+++ /dev/null
@@ -1,27 +0,0 @@
-
-
-
-\header { texidoc = "Collision resolution tries to put notes with dots
-  on the right side."
-}
-
-\version "2.1.7"
-    \paper { raggedright= ##t }
-
-
-\score{
-        \context Staff \notes <<
-                \clef "bass"
-                \new Voice {
-                        \stemUp
-			b8.  c'16  d'4 b8  c'8  d'4
-                }
-                \new Voice {
-                        \stemDown
-			b2 b2 
-                }
-        >>
-}
-
-
-
diff --git a/input/regression/collision-head-chords.ly b/input/regression/collision-head-chords.ly
deleted file mode 100644
index da70f0bf8a..0000000000
--- a/input/regression/collision-head-chords.ly
+++ /dev/null
@@ -1,18 +0,0 @@
-\version "2.1.7"
-\header {
-texidoc = "Note heads in collisions should be merged if
-they have the same positions in the extreme note heads.  
-"
-
-}
-
-
-\score {
-\notes  \relative c'' {
-c4 
-  << { c4 d4 <c d>8  <c d> <c d> } \\  { c4 c <a b>8 <b c> <c d>8 } >>
-}
-\paper {raggedright = ##t} 
-}
-
-
diff --git a/input/regression/collision-heads.ly b/input/regression/collision-heads.ly
deleted file mode 100644
index c8e34d3a29..0000000000
--- a/input/regression/collision-heads.ly
+++ /dev/null
@@ -1,31 +0,0 @@
-\version "2.1.7"
-\header {
-    texidoc =
-
-    "If @code{merge-differently-headed}, then
-open note heads may be merged with black noteheads, but only
-if the black note heads are from 8th or shorter notes.
-"
-    
-}
-
-\paper { raggedright= ##t }
-
-
-\score {
-    \context Staff \notes \relative c'' <<
-	{
-	    c2 c8 c4.
-	    
-	    \property Staff.NoteCollision \override #'merge-differently-headed = ##t
-	    c2 c8 c4.
-	    c2
-	}\\
-	{
-	    c8 c4. c2
-	    
-	    c8 c4. c2
-	    c4
-	}
-    >>
-}
diff --git a/input/regression/collision-merge-differently-dotted.ly b/input/regression/collision-merge-differently-dotted.ly
deleted file mode 100644
index b6050de2aa..0000000000
--- a/input/regression/collision-merge-differently-dotted.ly
+++ /dev/null
@@ -1,31 +0,0 @@
-\version "2.1.7"
-\header {
-    
-    texidoc = "If NoteCollision has merge-differently-dotted = \\#t note
-heads that have differing dot counts may be merged anyway.  Dots
-should not disappear when merging similar note heads."
-    
-}
-
-\paper { raggedright= ##t }
-	
-\score {
-    \context Staff \notes\relative c'' <<
-	{
-	    g8[ g8]
-	    \property Staff.NoteCollision
-	    \override #'merge-differently-dotted = ##t
-	    g8[ g8]
-	    g4. r8 g8. g16
-	    g8 g4 r8 g4
-	}
-	\\
-	{
-	    g8.[ f16]
-	    g8.[ f16]
-	    g8 g4 r8 g4
-	    g4. r8 g8. g16
-	}
-    >>
-}
-
diff --git a/input/regression/collision-merge-dots.ly b/input/regression/collision-merge-dots.ly
deleted file mode 100644
index 578751a82a..0000000000
--- a/input/regression/collision-merge-dots.ly
+++ /dev/null
@@ -1,14 +0,0 @@
-\header {
-
-    texidoc  = "When merging heads, the dots are merged too."
-    }
-\version "2.1.7"
-
-\score {
-\notes {
-\relative c'' \new Staff {
-    << { d8. e16 } \\ { d8. b16 } >> 
-    }
-}
-
-\paper { raggedright = ##t }}
diff --git a/input/regression/collision-mesh.ly b/input/regression/collision-mesh.ly
deleted file mode 100644
index 8d73e58fff..0000000000
--- a/input/regression/collision-mesh.ly
+++ /dev/null
@@ -1,35 +0,0 @@
-\version "2.1.7"
-\header {
-texidoc = "Oppositely stemmed chords,  meshing into each other,
-are resolved."
-}
-
-    \paper { raggedright= ##t }
-
-
-\score {
-  \context Staff \notes \transpose c c' {
-     \time 3/4
-     % Here's what I was trying to do:
-     <<          {
-         d'4
-         d'4.	 
-	 <a c'>4
-	 <g b g'>4
-	 <g b g'>4.	 	 
-	   }\\ {
-       <g b g'>4
-       <g b g'>4.       
-       <g b d'>4
-       d'4
-       d'4.       
-       }
- >>
-
-  }
-}
-
-
-
-
-
diff --git a/input/regression/collisions.ly b/input/regression/collisions.ly
deleted file mode 100644
index f0b5507c52..0000000000
--- a/input/regression/collisions.ly
+++ /dev/null
@@ -1,56 +0,0 @@
-#(ly:set-option 'old-relative)
-\version "2.1.7"
-\header{
-texidoc="
-Normal collisions. We have support for polyphony, where the
-middle voices are horizontally shifted.
-"
-filename = 	 "collisions.ly"
-enteredby = 	 "HWN,JCN"
-copyright = 	 "public domain"
-}
-
-
-twovoice =
-\notes \relative c' \context Staff \notes << 
-	 {  g4 f f e e d d c } 
-\\ {  c4 c  d d e e f f }
->>
-
-twovoicechords = \context Staff \notes <<
- \relative c' {
- e4 d c b a g f
-	}\\
- \relative c' {
-	 <a c>4 <a c>4 <a c>4 <a c>4 <a c>
-		<a c> <a c>  
-	}
->>
-
-
-threevoice =  \context Staff \notes <<
-	 { g4 f e f g a g2 } \\
-	 {  c4 d e d c d es } \\
-	 { e4 e e e e e e e  }
->>
-
-hairyChord =  \context Staff \notes \relative c''
-    << e \\
-      fis, \\
-      cis' \\
-      \\
-      ais
-      >>
-
-
-\score{
-	\notes { \transpose c c' {
-	   \twovoice
-	   \twovoicechords
-	   \threevoice   }
-	 \hairyChord
-	}
-	
-%	\midi { \tempo 4:80 }
-}
-
diff --git a/input/regression/completion-heads-polyphony.ly b/input/regression/completion-heads-polyphony.ly
deleted file mode 100644
index bed5eefaad..0000000000
--- a/input/regression/completion-heads-polyphony.ly
+++ /dev/null
@@ -1,24 +0,0 @@
-\version "2.1.19"
-\header {
-
-    texidoc = "Completion heads are broken across bar lines. This was
-intended as a debugging tool, but it can be used to ease music entry.
-Completion heads are not fooled by polyphony with a different rhythm.
-"
-
-}
-
-\score{ 
-	\context Staff \notes \relative c'' << 
-	    { c2. c bes2 } \\
-	    { c2. a8 g4 f4. g4 f  }
-	>>
-
-	\paper {
-		\translator{
-			\VoiceContext
-			\remove "Note_heads_engraver"
-			\consists "Completion_heads_engraver"
-		}
-	}
-}
diff --git a/input/regression/completion-heads.ly b/input/regression/completion-heads.ly
deleted file mode 100644
index 76c99c2756..0000000000
--- a/input/regression/completion-heads.ly
+++ /dev/null
@@ -1,28 +0,0 @@
-\version "2.1.19"
-
-\header{
-texidoc="
-
-If the @code{Note_heads_engraver} is replaced by the @code{Completion_heads_engraver}, notes that cross bar lines are split into tied notes.
-
-"
-}
-
-\paper { raggedright= ##t }
-
-
-
-\score{
-  \notes\relative c'{
-  \time 2/4
-
-  c2. c8 d4 e f g a b c2.. b8 a g16 f4 e d c8. c2 
-  }
-  \paper{
-    \translator{
-      \VoiceContext
-      \remove "Note_heads_engraver"
-      \consists "Completion_heads_engraver"
-    }
-  }
-}
diff --git a/input/regression/custos.ly b/input/regression/custos.ly
deleted file mode 100644
index d47c124ee6..0000000000
--- a/input/regression/custos.ly
+++ /dev/null
@@ -1,34 +0,0 @@
-\version "2.1.7"
-\header {
-    texidoc = "Custodes in various styles."
-}
-
-\score {
-    \notes {
-	\property Staff.Custos \set #'neutral-position = #4
-
-	\property Staff.Custos \set #'style = #'hufnagel
-	c'1^"hufnagel"
-	\break < d' a' f''>1
-
-	\property Staff.Custos \set #'style = #'medicaea
-	c'1^"medicaea"
-	\break < d' a' f''>1
-
-	\property Staff.Custos \set #'style = #'vaticana
-	c'1^"vaticana"
-	\break < d' a' f''>1
-
-	\property Staff.Custos \set #'style = #'mensural
-	c'1^"mensural"
-	\break < d' a' f''>1
-    }
-    \paper {
-	\translator {
-	    \StaffContext
-	    \consists Custos_engraver
-	}
-	raggedright = ##t
-    }
-}
-
diff --git a/input/regression/dot-flag-collision.ly b/input/regression/dot-flag-collision.ly
deleted file mode 100644
index fe89674e56..0000000000
--- a/input/regression/dot-flag-collision.ly
+++ /dev/null
@@ -1,19 +0,0 @@
-
-\version "2.1.7"
-\header {
-    texidoc = "Dots move to the right when a collision with the (up)flag happens."
-}
-
-\score {
-    \notes\relative c''
-    {
-	\time 8/4
-	\property Staff.autoBeaming = ##f
-	a,16.
-	g''16.
-	a,4. a8 a8. a16. c,16. g16.
-    }
-    \paper { raggedright = ##t}
-}
-
-
diff --git a/input/regression/dots.ly b/input/regression/dots.ly
deleted file mode 100644
index ef9d8fa2dd..0000000000
--- a/input/regression/dots.ly
+++ /dev/null
@@ -1,44 +0,0 @@
-\version "2.1.7" \header{
-
-
-    texidoc=" Noteheads can have dots, and rests
-can too.  Augmentation dots should never be printed on a staff line,
-but rather be shifted vertically. They should go up, but in case of
-multiple parts, the down stems have down shifted dots.  In case of
-chords, all dots should be in a column.  The dots go along as rests
-are shifted to avoid collisions.
-
-The priorities, are (ranked in importance):
-
-@itemize @bullet
-@item keeping dots off staff lines
-@item keeping dots close to their  note heads
-@item moving dots in the direction specified by the voice
-@item moving dots up
-@end itemize
-
-"
-}
-
-
-
-\score { 
-  \context Voice \notes\relative c'' {
-    \time 6/8
-	d4. g,,
-    \stemDown
-    <b'' c d e>4.  <f g a b>
-    <f a c> <e a c> <b f' c' g'>
-	
-	
-    <<
-	{ f  <b c> r4.  }\\
-	{ b, <a b> r4. }
-    >>
-	
-	
-  }
-  \paper { }  
-  \midi { }
-}
-
diff --git a/input/regression/drums.ly b/input/regression/drums.ly
deleted file mode 100644
index 8d1785b43e..0000000000
--- a/input/regression/drums.ly
+++ /dev/null
@@ -1,36 +0,0 @@
-
-\header {
-   texidoc = "Test drum notation."
-}
-
-
-\version "2.1.19"
-
-drh = \drums { cymc4.^"crash" hhc16^"h.h." hh \repeat "unfold" 5 {hhc8 hho hhc8 hh16 hh} hhc4 r4 r2 }
-drl = \drums {\repeat "unfold" 3 {bd4 sn8 bd bd4 << bd ss >> } bd8 tommh tommh bd toml toml bd tomfh16 tomfh }
-timb = \drums \repeat "unfold" 2 {timh4 ssh timl8 ssh r timh r4 ssh8 timl r4 cb8 cb}
-
-\score {
-    \repeat "volta" 2
-    <<
-	\new DrumStaff \with {
-	    drumStyleTable = #timbales-style
-	    StaffSymbol \override #'line-count = #2
-	    BarLine \override #'bar-size = #2
-	} <<
-	    \property Staff.instrument="timbales"
-	    \timb
-	>>
-	\new DrumStaff <<
-	    \property Staff.instrument="drums"
-	    \new DrumVoice {\stemUp \drh }
-	    \new DrumVoice {\stemDown \drl }
-	>>
-    >>
-    \paper {}
-
-    %% broken:
-    \midi{ \tempo 4=120 }
-}
-
-
diff --git a/input/regression/dynamics-broken-hairpin.ly b/input/regression/dynamics-broken-hairpin.ly
deleted file mode 100644
index 677efb0049..0000000000
--- a/input/regression/dynamics-broken-hairpin.ly
+++ /dev/null
@@ -1,15 +0,0 @@
-
-\version "2.1.7"
-\header{
-texidoc = "Broken crescendi should be open on one side."
-}
-
-\score { \notes \relative c'' { 
-    c1 \< \break c1\!  \> \break c1\!
-  }
-  \paper {
-    linewidth = 4.\cm
-  }
-}
-  
-
diff --git a/input/regression/dynamics-glyphs.ly b/input/regression/dynamics-glyphs.ly
deleted file mode 100644
index 1f8777654b..0000000000
--- a/input/regression/dynamics-glyphs.ly
+++ /dev/null
@@ -1,22 +0,0 @@
-
-\version "2.1.7"
-
-\header {texidoc = "Dynamic letters are kerned, and their weight
-matches that of the hairpin signs.  The dynamic scripts should be
-horizontally centered on the note head.  Scripts that should appear
-closer to the note head (staccato, accent) are reckoned with.
-"  }
-
-\score {
-    
-\notes\relative c'' { c1\ff
-		      e,-.-> \f
-		      e \rfz		      
-		      c' \mf
-		      c \mp \> 
-		      c\!\ppppp \< 
-		      c\sfp\!
-		      
-}
-}
-
diff --git a/input/regression/dynamics-line.ly b/input/regression/dynamics-line.ly
deleted file mode 100644
index da79f7819f..0000000000
--- a/input/regression/dynamics-line.ly
+++ /dev/null
@@ -1,33 +0,0 @@
-
-\version "2.1.7"
-\header{
-texidoc=" Dynamics appear below or above the staff.  If multiple
-dynamics are linked with (de)crescendi, they should be on the same
-line. Isolated dynamics may be forced up or down.
- "
-}
-
-
-
-\score{
-\notes\relative c''{
-a1^\sfz
-a1\fff\> c,,\!\pp a'' a\p
-
-% We need this to test if we get two Dynamic line spanners
-a
-
-% because do_removal_processing ()
-% doesn't seem to post_process elements
-d\f
-
-a
-
-}
-\paper{
-}
-\midi{
-\tempo 1 = 60
-}
-}
-
diff --git a/input/regression/dynamics-unbound-hairpin.ly b/input/regression/dynamics-unbound-hairpin.ly
deleted file mode 100644
index e1ac4db0f4..0000000000
--- a/input/regression/dynamics-unbound-hairpin.ly
+++ /dev/null
@@ -1,13 +0,0 @@
-\version "2.1.7"
-
-\header {
-texidoc = "Crescendi may start off-notes. In that case, they should  not collapse into flat lines."
-}
-
-\score { \notes { \context  Voice { 
-  << f''1 { s4 s4 \< s4\! \> s4\! } >>
-}}
-
-\paper { raggedright = ##t}
-}
-
diff --git a/input/regression/easy-notation.ly b/input/regression/easy-notation.ly
deleted file mode 100644
index 954dddbe64..0000000000
--- a/input/regression/easy-notation.ly
+++ /dev/null
@@ -1,14 +0,0 @@
-\version "2.1.7"
-
-\header {
-texidoc  = " Ez-notation prints names in note heads.
-You also get ledger lines, of course."
-}
-
-\score {
-        \notes { c'2 e'4 f' | g'1 b8 }
-        \paper { \translator { \EasyNotation }
-		 raggedright = ##t
-	     } 
-}
-
diff --git a/input/regression/figured-bass.ly b/input/regression/figured-bass.ly
deleted file mode 100644
index d798a4d53d..0000000000
--- a/input/regression/figured-bass.ly
+++ /dev/null
@@ -1,37 +0,0 @@
-\version "2.1.7"
-\header {
-texidoc = "
-Figured bass is created by the FiguredBass context which eats
-figured bass requests and  rest-requests.  You must enter these using
-the special @code{\figures @{ @}} mode, which allows you to type
-numbers, like @code{<<4 6+>>}.
-
-You can also type letters by entering quoted strings, as demonstrated in the last example. 
-" }
-
-\score { \notes  <<
- \context FiguredBass {
-   \figures { 
-	<3 [5 7]>
-\once \property FiguredBass.BassFigure \set #'direction = #-1
-	<3 [5 7]>
-	<3 [5] 7 [9 11]>
-	<3+ 5- 7!>
-	<3 _! 5 _- 7>
-	<3 _ 5 _ 7>
-\property FiguredBass.BassFigure \set #'font-family = #'roman
-	<"V7" ["bla" 6] 7>
-    }
- }
-
- \context Voice { \clef bass
-   c 4
-   c c c c c 
-   g8
-  }
- 
->>
-	\paper  { raggedright = ##t }  
- }
-
-
diff --git a/input/regression/finger-chords.ly b/input/regression/finger-chords.ly
deleted file mode 100644
index 641b06463a..0000000000
--- a/input/regression/finger-chords.ly
+++ /dev/null
@@ -1,45 +0,0 @@
-
-\version "2.1.7"
-\header {
-
-texidoc = "With the new chord syntax it's possible to associate
-fingerings uniquely with notes. This makes horizontal fingering much
-easier to process."
-
-}
-    \paper { raggedright= ##t }
-
-
-\score {
-    \notes \relative c'{
-
-	%% input order is not 1 2 3 , output is.
-	<c-1 g'-3 e-2  b'-4 d-5 f-6 a-7 c-8 > 4	
-
-	\property Voice.fingeringOrientations = #'(left)
-	< c-1  e-2 g-3 b-5 > 4
-
-	\property Voice.fingeringOrientations = #'(down left)
-	< c-1  e-2 g-3 b-5 > 4
-
-	\property Voice.fingeringOrientations = #'(down left up)
-	< c-1  e-2 g-3 b-5 > 4
-
-	\once \property Voice.Fingering \set #'staff-padding = #'()
-	< c-1  e-2 g-3 b-5 > 4
-
-	\property Voice.fingeringOrientations = #'(up left)
-	< c-1  e-2 g-3 b-5 > 4
-
-	\property Voice.fingeringOrientations = #'(right)
-	< c-1  e-2 g-3 b-5 > 4
-
-
-	
-}
-
-}
-
-
-
-
diff --git a/input/regression/fingering.ly b/input/regression/fingering.ly
deleted file mode 100644
index c5e4fe24b9..0000000000
--- a/input/regression/fingering.ly
+++ /dev/null
@@ -1,22 +0,0 @@
-
-\version "2.1.7"
-\header {
-
-texidoc = "Automatic fingering tries to put fingering instructions
-next to noteheads.
-"
-}
-
-    \paper { raggedright= ##t }
-
-
-\score {
-
- \notes\relative c' {
- c4-4
-  <c-1 f-4>
-  < c-1 e-2 g-3  b-4 >
-}}
- 
-
-
diff --git a/input/regression/follow-voice-break.ly b/input/regression/follow-voice-break.ly
deleted file mode 100644
index 068dfc7f63..0000000000
--- a/input/regression/follow-voice-break.ly
+++ /dev/null
@@ -1,24 +0,0 @@
-
-\version "2.1.7"
-\header{
-       texidoc = "
-When put across line breaks, only the part before the line break is
-printed. The line-spanners connects to the Y position of the note  on the next line.
-"
-
-}
-
-\score{
-        \context PianoStaff <<
-	    \property PianoStaff.followVoice = ##t	    
-                \context Staff=one \notes\relative c''{
-		    a1 \break
-		    \change Staff=two
-		    a,
-		}
-        \context Staff=two { \clef bass \skip 1*2 }
-    >>
-    \paper{
-	raggedright = ##t
-    }
-}
diff --git a/input/regression/font-magnification.ly b/input/regression/font-magnification.ly
deleted file mode 100644
index 3d9e5c1db3..0000000000
--- a/input/regression/font-magnification.ly
+++ /dev/null
@@ -1,26 +0,0 @@
-
-\version "2.1.7"
-\header { texidoc = "The magnification can be set for any font. Note
-that this doesn't change variable symbols such as beams or slurs. " }
-
-\score {
-\notes \relative c'' \context Voice {
-\property Voice .NoteHead \set #'font-magnification = #0.9
-c4
-\property Voice .NoteHead \set #'font-magnification = #0.8
-
-
-c4-"normal"
-  % why doesn't this  work?
-  c4-\markup \bold \magnify #2.0 "foobar"
-
-  \property Voice .NoteHead \set #'font-magnification = #1.2
-  \property Voice.TextScript \set #'font-magnification = #2.0
-  c4-"big"
-  \property Voice .NoteHead \set #'font-magnification = #1.6
-  c4
-}
-
-}
-
-
diff --git a/input/regression/font-name.ly b/input/regression/font-name.ly
deleted file mode 100644
index 3a593d8cb8..0000000000
--- a/input/regression/font-name.ly
+++ /dev/null
@@ -1,41 +0,0 @@
-\version "2.1.7"
-
-\header {
-
-    texidoc = "Using other fonts can be done by setting font-name for
-the appropriate object. This may include Postscript fonts that are
-available through (La)TeX.
-
-"
-
-
-}
-
-%{
-
- Postscript fonts are switched off by default,
- for compatibility with TeX installations that have no
- PS fonts installed.
-%}
-
-\score {
-    \notes {
-	\property Staff.TimeSignature 	\set #'font-name = #"cmr17"
-	\property Score.skipBars = ##t
-
-	% use font-name putri8r for Utopia Italic :
-	
-	\property Staff.MultiMeasureRestText \set  #'font-name = #"cmss12"
-
-
-	% use "ptmb8r" for Times Roman
-	
-	c'1_\markup { \override #'(font-name . "cmdunh10")
-			  { This text is Dunhill } }
-
-	     R1*21^"Wait for Utopia Italic"
-	     }
-    
-    \paper { raggedright = ##t }
-
-}
diff --git a/input/regression/generic-output-property.ly b/input/regression/generic-output-property.ly
deleted file mode 100644
index 1e890f4e7e..0000000000
--- a/input/regression/generic-output-property.ly
+++ /dev/null
@@ -1,28 +0,0 @@
-
-\version "2.1.7"
-
-\header{
-texidoc="
-As a last resort, the placement of grobs can be adjusted manually, by
-setting the @code{extra-offset} of a grob.
-"
-}
-
-\score{
-	\notes\relative c''{
-	    \applyoutput #(outputproperty-compatibility (make-type-checker 'note-head-interface) 'extra-offset '(2 . 3))
-  	c2
-	c
-	\context Score {
-	    \applyoutput #(outputproperty-compatibility (make-type-checker 'mark-interface) 'extra-offset '(-1 . 4))
-	}
-	\mark A
-	d1
-	\mark \default
-	e
-}
-\paper{
-	raggedright = ##t
-}
-}
-
diff --git a/input/regression/glissando.ly b/input/regression/glissando.ly
deleted file mode 100644
index 81944583e7..0000000000
--- a/input/regression/glissando.ly
+++ /dev/null
@@ -1,35 +0,0 @@
-#(ly:set-option 'old-relative)
-\version "2.1.7"
-
-\header{
-
-texidoc=" Simple glissando lines between notes are supported.
-The first two glissandi are not consecutive.
-
-The engraver does no time-keeping, so it involves some trickery to get
-<< @{ s8 s8 s4 @} @{ c4 \\gliss d4 @} >> working correctly.
-
-"
-}
-
-\score{
-        \context Staff=one \notes\relative c''{
-		     % gliss non gliss and 
-	     c4 \glissando d e \glissando f \glissando \break
-	     % consecutive 
-	     c \glissando d, \glissando e'
-	      << { \stemUp e8 \glissando g8 }
-	        \context Voice = VB {\stemDown \repeat unfold 4 d16 } >>
-		\property Voice.Glissando \override #'style = #'zigzag
-		c4 \glissando c,, \glissando c' \glissando d
-    }
-    \paper{
-        linewidth = 50.\mm indent = 0
-	\translator{
-	       \StaffContext
-	       % makes for handier debugging
-	       % \remove Clef_engraver
-	}
-    }
-}
-
diff --git a/input/regression/grace-auto-beam.ly b/input/regression/grace-auto-beam.ly
deleted file mode 100644
index bfa5820df5..0000000000
--- a/input/regression/grace-auto-beam.ly
+++ /dev/null
@@ -1,16 +0,0 @@
-
-\version "2.1.7"
-\header
-{
-    texidoc = "The autobeamer is not confused by grace notes."
-}
-
-\score{
-  \notes\context Voice \relative c''{
-
-    \grace a8 g16 f e f \grace a8 g16 f e f \grace a8 g16 f e f 
-        \grace a8 g16 f e f |
-  }
-  \paper { raggedright = ##t }
-}
-
diff --git a/input/regression/grace-bar-line.ly b/input/regression/grace-bar-line.ly
deleted file mode 100644
index f77b2c20f1..0000000000
--- a/input/regression/grace-bar-line.ly
+++ /dev/null
@@ -1,15 +0,0 @@
-
-\version "2.1.7"
-\header {
-texidoc = "Bar line should come before the grace note."
-}
-
-	
-
-
-
-\score  {\notes \relative c' \context Staff  { 
- f1 \grace {  a'16[ f]  } g1 }
-		\paper { raggedright = ##t}
- } 
-
diff --git a/input/regression/grace-bar-number.ly b/input/regression/grace-bar-number.ly
deleted file mode 100644
index 3a57526eb0..0000000000
--- a/input/regression/grace-bar-number.ly
+++ /dev/null
@@ -1,19 +0,0 @@
-
-\version "2.1.7"
-\header {
-
-texidoc = "Grace notes do tricky things with timing. If a measure
-starts with a grace note, the measure does not start at 0, but
-earlier. Nevertheless, lily should not get confused. For example, line
-breaks should be possible at grace notes, and the bar number should be
-printed correctly.
-"
-}
-
-\score { \notes\relative c'' { c1 \break
-\grace c8
-c1  }
-
-\paper { raggedright = ##t }
-}
-
diff --git a/input/regression/grace-beam.ly b/input/regression/grace-beam.ly
deleted file mode 100644
index ffc86350c7..0000000000
--- a/input/regression/grace-beam.ly
+++ /dev/null
@@ -1,14 +0,0 @@
-
-\header
-{
-texidoc = "Grace beams and normal beams may occur simultaneously.
-Unbeamed grace notes are not put into normal beams.
-"
-}
-
-    \paper { raggedright= ##t }
-
-
-\version "2.1.7"
-\score { \notes\relative c'' { c4  d8[ \grace {  e32[  d c d] } e8]  e[  e \grace { f16 } e8 e]   }}
-
diff --git a/input/regression/grace-end.ly b/input/regression/grace-end.ly
deleted file mode 100644
index 2da5aa27a1..0000000000
--- a/input/regression/grace-end.ly
+++ /dev/null
@@ -1,22 +0,0 @@
-
-\version "2.1.7"
-\header {
-
-    texidoc="@cindex Grace End
- Grace notes after the last note do not confuse the timing code."
-
-
-}
-
-\score { 
-  \context Voice \notes\relative c' {
-    
-	c4 \grace {  d16[ d16] }
-	
-  }
-	\paper {
-		raggedright = ##t
-	}  
-  \midi { }
-}
-
diff --git a/input/regression/grace-nest.ly b/input/regression/grace-nest.ly
deleted file mode 100644
index d864fa9fea..0000000000
--- a/input/regression/grace-nest.ly
+++ /dev/null
@@ -1,16 +0,0 @@
-\version "2.1.7"
-\header {
-texidoc = "Grace code should not be confused by nested sequential musics, containing grace notes; practically speaking, this means that the end-bar and measure bar coincide in this example." 
-
-}
-\score {
-    \notes {
-	c''2 { \grace  b'16  c''2 }  \bar "|."
-    }
-    \paper {
-
-	raggedright = ##t 
-    }
-}
-
-
diff --git a/input/regression/grace-nest1.ly b/input/regression/grace-nest1.ly
deleted file mode 100644
index 105bff0309..0000000000
--- a/input/regression/grace-nest1.ly
+++ /dev/null
@@ -1,17 +0,0 @@
-\version "2.1.7"
-\header {
-texidoc = "Grace code should not be confused by nested sequential musics, containing grace notes; practically speaking, this means that the end-bar and measure bar coincide in this example." 
-
-}
-    \paper { raggedright= ##t }
-
-
-\score{
-\notes 
-
-{ c''2 { \grace  b'16  c''2 }  \bar "|." }
-  \paper {
-}
- }
-
-
diff --git a/input/regression/grace-nest2.ly b/input/regression/grace-nest2.ly
deleted file mode 100644
index eb1bafa9b1..0000000000
--- a/input/regression/grace-nest2.ly
+++ /dev/null
@@ -1,13 +0,0 @@
-\version "2.1.7"
-\header {
-texidoc = "Grace code should not be confused by nested sequential musics, containing grace notes; practically speaking, this means that the end-bar and measure bar coincide in this example." 
-
-}
-
-    \paper { raggedright= ##t }
-
-\score { \notes \context Voice {
-	 { \grace b'8 c''2 }
-       \grace b'16 c''4 c''4 \bar "|."
-    }}
-
diff --git a/input/regression/grace-nest3.ly b/input/regression/grace-nest3.ly
deleted file mode 100644
index 75eabbd516..0000000000
--- a/input/regression/grace-nest3.ly
+++ /dev/null
@@ -1,13 +0,0 @@
-\version "2.1.7"
-\header {
-    texidoc = "Another nested grace situation."
-    }
-    \paper { raggedright= ##t }
-
-\score { \notes \relative c'' {
-	f1
-    \grace e8 f1
-        << { \grace { e8 } f1 } >>
-}
-}
-
diff --git a/input/regression/grace-nest4.ly b/input/regression/grace-nest4.ly
deleted file mode 100644
index c837e8d624..0000000000
--- a/input/regression/grace-nest4.ly
+++ /dev/null
@@ -1,18 +0,0 @@
-\version "2.1.7"
-\header {
-texidoc = "Another combination of grace note nesting."
-}
-
-\score { \notes \context Voice \relative c'' {
-
-    <<
-     { \grace  g32 f4 }
-    >>
-    \grace c16 c2. \bar "|."
-}
-  \paper { raggedright = ##t }
-	 
-}
-
-
-
diff --git a/input/regression/grace-nest5.ly b/input/regression/grace-nest5.ly
deleted file mode 100644
index c7eb20ee58..0000000000
--- a/input/regression/grace-nest5.ly
+++ /dev/null
@@ -1,15 +0,0 @@
-
-\version "2.1.7"
-\header {
-    texidoc = "Another nested grace situation."
-    }
-
-\score
-{ \notes \relative c'' {
-     s2 <f>4
-    \grace g e4
-}
-
-  \paper { raggedright = ##t }
-}
-
diff --git a/input/regression/grace-part-combine.ly b/input/regression/grace-part-combine.ly
deleted file mode 100644
index 6530118f17..0000000000
--- a/input/regression/grace-part-combine.ly
+++ /dev/null
@@ -1,21 +0,0 @@
-
-\version "2.1.18"
-\header {
-    texidoc = "Partcombiner and grace notes can go together."
-}
-
-\paper { raggedright= ##t }
-
-\score {
-    \new Staff
-	    \partcombine 
-	     \notes \relative c'' {
-		c4 d e f  \grace f16 g1
-	    }
-	     \notes \relative c' {
-		c4 d e2  g1
-	    }
-	
-    
-}
-
diff --git a/input/regression/grace-staff-length.ly b/input/regression/grace-staff-length.ly
deleted file mode 100644
index f5b1fbea9b..0000000000
--- a/input/regression/grace-staff-length.ly
+++ /dev/null
@@ -1,24 +0,0 @@
-\version "2.1.7"
-\header{
-texidoc = "Stripped version of trip.ly.  Staffs should be of correct length."
-}
-
-    \paper { raggedright= ##t }
-
-\score{
-  \context PianoStaff \notes \relative c'' <<
-    \new Staff {
-       r1
-       r1
-       \bar "|."
-    }
-    \new Staff {
-      r1
-      \context Staff {
-	\grace { c16 } c1
-      }
-    }
-  >> 
-  \paper { }
-}
-
diff --git a/input/regression/grace-start.ly b/input/regression/grace-start.ly
deleted file mode 100644
index d181d4ea26..0000000000
--- a/input/regression/grace-start.ly
+++ /dev/null
@@ -1,14 +0,0 @@
-
-\version "2.1.7"
-\header {
-texidoc = "Pieces may begin with grace notes."
-}
-\score  {\notes \relative c' \context Staff  { 
- \grace {  a'16[ f]  } g1
- \bar "||"  % test if | and || are synced.
- \grace {  a16[ bes]  }  c1
- \bar "||"  % test if | and || are synced. 
-  }
-  \paper { raggedright = ##t}
-}
-
diff --git a/input/regression/grace-stems.ly b/input/regression/grace-stems.ly
deleted file mode 100644
index 7315701fae..0000000000
--- a/input/regression/grace-stems.ly
+++ /dev/null
@@ -1,26 +0,0 @@
-
-\version "2.1.7"
-\header{
-texidoc = "Here startGraceMusic should set no-stem-extend to true;
-the two grace beams should be the same here.
-"
-}
-
-
-\score { 
-  \context Voice \notes\relative c {
-    \grace { 
-       f8[ e8] 
-      \property Voice.Stem \override #'no-stem-extend = ##t
-       f8[ e8] 
-      \property Voice.Stem \revert #'no-stem-extend
-    }
-    a4
-	
-  }
-  \paper {
-    raggedright = ##t
-  }  
-  \midi { }
-}
-
diff --git a/input/regression/grace-sync.ly b/input/regression/grace-sync.ly
deleted file mode 100644
index 8b49f77ea2..0000000000
--- a/input/regression/grace-sync.ly
+++ /dev/null
@@ -1,17 +0,0 @@
-\version "2.1.7"
-\header  {
-  texidoc = "Grace notes in different voices/staves are synchronized."
-}
-
-\score  {\notes\relative c'' << \context Staff  { c2
-	 \grace  c8
-  c4 c4 }
-		\new Staff { c2 \clef bass
- \grace {  dis8[ ( d8] \key es\major  }
-
-    c4) c4 }
-		\new Staff { c2 c4 c4 \bar "|." }
-		>>
-		\paper { raggedright = ##t}
- } 
-
diff --git a/input/regression/grace-types.ly b/input/regression/grace-types.ly
deleted file mode 100644
index 1d7c6cdf88..0000000000
--- a/input/regression/grace-types.ly
+++ /dev/null
@@ -1,14 +0,0 @@
-\version "2.1.7"
-\header {
-    texidoc = "Different grace types explained: the base grace switches to smaller type. The appoggiatura also inserts a slur, and the
-acciaccatura inserts a slur and slashes the stem." 
-    }
-
-\score  {
-    \notes \relative c'' { c4 \grace { d8 }  c4
-			   \appoggiatura { d8 } c
-			   \acciaccatura { d } c
-		       }
-    
-}
- 
diff --git a/input/regression/grace-unfold-repeat.ly b/input/regression/grace-unfold-repeat.ly
deleted file mode 100644
index 8a74c50595..0000000000
--- a/input/regression/grace-unfold-repeat.ly
+++ /dev/null
@@ -1,15 +0,0 @@
-\version "2.1.7"
-\header {
-    texidoc = "Grace notes and unfolded repeats.
-Line breaks may happen before  grace  notes.
-"
-}
-    
-
-\score{
-  \notes\context Voice \relative c'{
-    \repeat unfold  10 {\grace d8 c4 d e f}
-
-  }
-}
-
diff --git a/input/regression/grace-volta-repeat-2.ly b/input/regression/grace-volta-repeat-2.ly
deleted file mode 100644
index cc1911bb7f..0000000000
--- a/input/regression/grace-volta-repeat-2.ly
+++ /dev/null
@@ -1,20 +0,0 @@
-\version "2.1.7"
-
-\header {
-
-    texidoc = "Graces at combined with volta repeats: a repeat
-starting with a grace, following a repeat directly. The bars should be
-merged into one @code{:||:}."
-
-      }
-
-    \paper { raggedright= ##t }
-
-\score {\notes\relative c' {
-\repeat volta 2 {
-        c1 
-}
-\repeat volta 2 {
-        \grace {c8 } c4
-}
-}}
diff --git a/input/regression/grace-volta-repeat.ly b/input/regression/grace-volta-repeat.ly
deleted file mode 100644
index 9e0973aa93..0000000000
--- a/input/regression/grace-volta-repeat.ly
+++ /dev/null
@@ -1,22 +0,0 @@
-\version "2.1.7"
-
-\header {
-
-    texidoc = "Repeated music can start with grace notes.  Bar checks
-    preceding the grace notes do not cause synchronization effects.  "
-
-}
-
-\score{
-   \notes\relative c''{\key a \minor \time 2/4
-     \repeat "volta" 2 {
-     \grace {  a16[ b] }  c4 c4  |
-     \grace {  d16[ b] } c4 c4 |
-     
-     }
-   }
-   \paper { raggedright = ##t}
- }
-
-
-
diff --git a/input/regression/grace.ly b/input/regression/grace.ly
deleted file mode 100644
index d5d2f643bf..0000000000
--- a/input/regression/grace.ly
+++ /dev/null
@@ -1,36 +0,0 @@
-
-\version "2.1.7"
-
-\header{
-texidoc="
-Grace notes are typeset as an encapsulated piece of music. You can
-have beams, notes, chords, stems etc. within a @code{\grace} section.
-Slurs that start within a grace section, but aren't ended are attached
-to the next normal note.  Grace notes have zero duration.  If there
-are tuplets, the grace notes won't be under the brace.  Grace notes
-can have accidentals, but they are (currently) spaced at a fixed
-distance.  Grace notes (of course) come before the accidentals of the
-main note.  Grace notes can also be positioned after the main note.
-
-Grace notes without beams should have a slash, if @code{flagStyle} is
-not set.  Main note scripts don't end up on the grace note.
-
-"
-}
-
-\score {\notes \context Voice = VA \relative c'' {
-	\grace b8 c4\fermata
-	\grace {  c32[ cis32] } gis4
-	\grace {  cis32[ dis32] } e4
-	\grace {  c32[ d] }\times 2/3 {  c8[ c c] }
-	 \grace {  b32[ ( c32] }   c4)
-	\grace  <c d>16  c8[ c8]
-%	\grace  c16  c8[ c8]
-        %% broken?
-	%%\grace  { \property Grace.graceAlignPosition = \right c16} c4
-	c4 \grace  { c16 } c4
-}
-\paper {raggedright = ##t}
-\midi{ }
-}
-
diff --git a/input/regression/hairpin-dashed.ly b/input/regression/hairpin-dashed.ly
deleted file mode 100644
index 30ac62e611..0000000000
--- a/input/regression/hairpin-dashed.ly
+++ /dev/null
@@ -1,13 +0,0 @@
-\version "2.1.7"
-
-\header {
-texidoc ="Hairpin crescendi may be dashed. "
-
-}
-
-\score {
-    \notes \relative c' {
-	\property Voice.Hairpin \set #'dash-fraction = #0.4
-	\property Voice.Hairpin \set #'dash-period = #1
-	f2\< g c1 d4\> b a gis\! }     
-    }
diff --git a/input/regression/hairpin-ending.ly b/input/regression/hairpin-ending.ly
deleted file mode 100644
index 91cbd65187..0000000000
--- a/input/regression/hairpin-ending.ly
+++ /dev/null
@@ -1,17 +0,0 @@
-
-\version "2.1.7"
-
-\header {
-
-texidoc = "Hairpin dynamics start under notes if there are
-no text-dynamics. If there are text dynamics, the hairpin does not run
-into them."
-
-}
-
-
-\score {
-\notes \relative c'' { c4 \> c4 c4\! c4_\ff \> c4 c4\!\p }
-\paper { raggedright = ##t} 
-}
-
diff --git a/input/regression/hara-kiri-pianostaff.ly b/input/regression/hara-kiri-pianostaff.ly
deleted file mode 100644
index ed645ef91e..0000000000
--- a/input/regression/hara-kiri-pianostaff.ly
+++ /dev/null
@@ -1,37 +0,0 @@
-\version "2.1.7"
-
-\header { texidoc =
-
-	  " Hara kiri staves kill themselves if they are empty.  This
-example really contains three staves, but as they progress, empty ones
-are removed: this example has three staves, but some of them
-disappear: note how the 2nd line only has the bar number 2. (That the
-bar number is printed might be considered a bug, however, the scenario
-of all staves disappearing doesn't happen in practice.)
-
-Any staff brackets and braces are removed, both in the single staff
-and no staff case.
-
-This example was done with a pianostaff, which has fixed distance
-alignment; this should not confuse the mechanism.
-"
-	  
-}
-
-\paper { raggedright= ##t }
-
-	
-\score { \notes \transpose c c''
- \context PianoStaff <<
-   \new Staff {  c4 c c c \break  s1 \break c4 c c c \break c c c c}
-   \new Staff {  d4 d d d s1 s1 s1 s1 }
-   \new Staff {  e4 e e e s1 e4 e e e s1 }
- >>
- \paper {
-  \translator {
-   \RemoveEmptyStaffContext
-  }
- }
-}
-
-
diff --git a/input/regression/instrument-name-markup.ly b/input/regression/instrument-name-markup.ly
deleted file mode 100644
index 928041192d..0000000000
--- a/input/regression/instrument-name-markup.ly
+++ /dev/null
@@ -1,28 +0,0 @@
-\header {
-
-texidoc = "Instrument names are set with @code{Staff.instrument} and
-@code{Staff.instr}. You can enter markup texts to create more funky names,
-including alterations. "
-
-}
-
-
-\version "2.1.7"
-
-
-textFlat = \markup {\smaller \musicglyph #"accidentals--1"}
-
-\score {
-  \notes \new Staff {
-    \property Staff.instrument
-	= \markup { \column < "Clarinetti" { "in B" \textFlat } > }
-    \property Staff.instr
-	= \markup { \smaller  { "Cl(B" \textFlat ")" } }
-
-    { c''1 \break c'' }
-
-  }
-  \paper { raggedright = ##t }
-}
-
-
diff --git a/input/regression/instrument-name-partial.ly b/input/regression/instrument-name-partial.ly
deleted file mode 100644
index 841f87ee7c..0000000000
--- a/input/regression/instrument-name-partial.ly
+++ /dev/null
@@ -1,11 +0,0 @@
-
-\version "2.1.7"
-\header {
-    texidoc = "Instrument names are also printed on  partial starting measures."
-}
-
-\score {
-  \notes \relative c'' { \property Staff.instrument = "foo" \partial 4 c4 c1 }
-  \paper { raggedright = ##t }
-}
-
diff --git a/input/regression/instrument-name.ly b/input/regression/instrument-name.ly
deleted file mode 100644
index 5d8850e4da..0000000000
--- a/input/regression/instrument-name.ly
+++ /dev/null
@@ -1,25 +0,0 @@
-\version "2.1.7"
-\header{
-texidoc="
-Staff margins are also markings attached to barlines.  They should be
-left of the staff, and be centered vertically wrt the staff.  They may
-be on normal staves, but also on compound staves, like the PianoStaff.
-"
-}
-
-	
-
-
-\score {
-
-  \notes \context PianoStaff <<
-    \context Staff = treble    {
-      \property PianoStaff.instrument = "Piano "
-      \property Staff.instrument = "Right " { c''4 }}
-    \context Staff = bass { \property Staff.instrument = "Left " \clef bass c4 }>>
-
-\paper {
-raggedright = ##t
-}}
-
-
diff --git a/input/regression/key-clefs.ly b/input/regression/key-clefs.ly
deleted file mode 100644
index ee9bccc1f2..0000000000
--- a/input/regression/key-clefs.ly
+++ /dev/null
@@ -1,28 +0,0 @@
-
-\version "2.1.7"
-\header { texidoc = "Tests placement of accidentals in every clef. " }
-
-\score { \notes
-  \relative cis' {
-
-% \clef french % same as octaviated bass
-\clef violin
-\key cis \major cis1  \key ces \major ces
-\clef soprano
-\key cis \major cis \key ces \major ces
-\clef mezzosoprano
-\key cis \major cis \key ces \major ces
-\clef alto
-\key cis \major cis \key ces \major ces
-\clef tenor
-\key cis \major cis \key ces \major ces
-\clef baritone
-\key cis \major cis \key ces \major ces
-\clef bass
-\key cis \major cis \key ces \major  ces
-}
-
-	\paper{\paperSixteen}
-
-}
-
diff --git a/input/regression/key-signature-scordatura.ly b/input/regression/key-signature-scordatura.ly
deleted file mode 100644
index cbda2d43b4..0000000000
--- a/input/regression/key-signature-scordatura.ly
+++ /dev/null
@@ -1,18 +0,0 @@
-
-\version "1.9.6"
-
-\header { texidoc = "Key signatures can be set per pitch
-individually. This can be done by setting @code{Staff.keySignature}
-directly."
-
-}
-\score { \notes
-\relative c'
-\context Staff {
-  \property Staff.keySignature = #'(((1 .  2) . 1) ((0 . 3) . -1))
-  f8 a c e
-  \property Staff.keySignature = #'(((1 .  2) . -1) ((0 . 4) . 2))
-  e a, g a
-}
-}
-
diff --git a/input/regression/keys.ly b/input/regression/keys.ly
deleted file mode 100644
index 7fb37292bb..0000000000
--- a/input/regression/keys.ly
+++ /dev/null
@@ -1,29 +0,0 @@
-
-\version "2.1.7"
-\header{
-texidoc="
-Key signatures appear on key  changes. They may also
-appear without barlines.  The restoration accidentals are not printed at
-the start of the line. If @code{createKeyOnClefChange} is set, they're
-also created on a clef change.
-"
-}
-
-
-
-\score {
-  \notes \relative c''
-  {
-	\property Staff. createKeyOnClefChange = ##t  
-    \key bes \major c2
-%    \key c \major %  \minor
-    \key es \major %  \minor
-    c2
-    \break
-    \key bes \major % \major
-    c2 \clef alto c2   \key d \major \clef treble c2
-  	\property Staff. keySignature = #'((2 . -1)  (6 . 3) (4 . -2))
-	e2
-  }
-}
-
diff --git a/input/regression/lyric-combine-new.ly b/input/regression/lyric-combine-new.ly
deleted file mode 100644
index 52519e010d..0000000000
--- a/input/regression/lyric-combine-new.ly
+++ /dev/null
@@ -1,33 +0,0 @@
-\version "2.1.21"
-\header {
-
-    texidoc = "With the @code{\\lyricsto} mechanism, individual lyric
-    lines can be associated with one melody line. For each lyric line,
-    can be tuned whether to follow melismata or not."
-    
-}
-
-\score {
-<<
-    \notes \context Voice = "bla" \relative c'' {
-	\autoBeamOff
-	c2( d4) e8[ c b c] f4
-    }
-    \lyricsto "bla" \lyrics \new Lyrics { bla ab blob blob }
-    \lyricsto "bla" \lyrics \new Lyrics {
-	bla 
-
-	\property Lyrics . ignoreMelismata = ##t
-	
-	blob
-
-	%% note: effect of ignoreMelismata delayed one time step.
-	\property Lyrics . ignoreMelismata \unset
-	blob
-	
-	blob
-    }
-    
-    \lyricsto "bla" \lyrics \new Lyrics { nes ted lyrics voice with more words than no tes } >>
-
-    }
diff --git a/input/regression/lyric-combine-polyphonic.ly b/input/regression/lyric-combine-polyphonic.ly
deleted file mode 100644
index ec9d670966..0000000000
--- a/input/regression/lyric-combine-polyphonic.ly
+++ /dev/null
@@ -1,35 +0,0 @@
-\version "2.1.21"
-\header {
-
-texidoc ="Polyphonic rhythms and rests don't disturb
-@code{\lyricsto}."
-
-}
-
-\score {
-    \notes {
-       \clef violin
-       \time 8/8
-       \key des \major
-       <<
-	   \context Voice = one {
-	       \voiceOne
-	       bes'4 bes'4
-	       bes'4 bes'4
-	   }
-	  \context Voice = two {
-	      \voiceTwo
-	      ees'8 r8 r8 r8 ees' r8 r8 r8 
-          }
-          \lyricsto "two" \lyrics \new Lyrics {
-             Do na
-         }
-	 \lyrics  \lyricsto "one" \new Lyrics
-	   {
-	       Do mi nus ex
-	   }
-       >>
-    }
-    \paper { raggedright = ##t}
-}
-
diff --git a/input/regression/lyric-combine.ly b/input/regression/lyric-combine.ly
deleted file mode 100644
index 068fbad770..0000000000
--- a/input/regression/lyric-combine.ly
+++ /dev/null
@@ -1,49 +0,0 @@
-
-\version "2.1.21"
-
-\header{
-texidoc= "Lyrics can be set to a melody automatically.  Excess lyrics will be
-discarded.  Lyrics will not be set over rests.  You can have melismata
-either by setting a property melismaBusy, or by setting
-automaticMelismas (which will set melismas during slurs and ties).  If
-you want a different order than first Music, then Lyrics, you must
-precook a chord of staves/lyrics and label those.  Of course
-@code{\rhythm} ignores any other rhythms in the piece.  Hyphens and
-extenders do not assume anything about lyric lengths, so they continue
-to work."
-}
-
-    \paper { raggedright= ##t }
-
-
-
-m = \notes  \relative c'' {
-	\autoBeamOff
-	g8( a)  r8 \times 2/3 { g'8( f e) } r8 \grace {  d16[ c b] } e4
-	\emptyText
-	d8.^"melisma" 	\melisma c16
-	\melismaEnd
-	b }
-
-noise = \repeat unfold 6 \notes \relative c'' { g16 g g g }
-
- textI = \context Lyrics = "middle-1" \lyrics { la2 __ la -- la __ la la la la la  }
-textII = \context Lyrics = "middle-1" \lyrics { da -- da __ da -- da da da da da  }
-
-\score {
-    \notes << \context Staff = SA \noise
-      \context Lyrics = LA { s1 }
-      \context Staff = SB { s1 }
-      \context Lyrics = LB { s1 }
-      \context Staff = SC \noise
-      
-      \addlyrics
-	  \context Staff = SB \context Voice="middle" \m
-	  << \context Lyrics = LA \textI
-	    \context Lyrics = LB \textII
-	  >>
-	  
-    >>
-}
-
-
diff --git a/input/regression/lyric-extender-broken.ly b/input/regression/lyric-extender-broken.ly
deleted file mode 100644
index a07af0590b..0000000000
--- a/input/regression/lyric-extender-broken.ly
+++ /dev/null
@@ -1,23 +0,0 @@
-\version "2.1.21"
-\header
-{
-
-    texidoc = "Lyric extenders run to the end of the line if it
-continues the next line. Otherwise, it should run to the last note
-of the melisma."
-
-}
-
-\score {
-    << 
-	\context Voice=A \notes {
-	    a1 ( a1 \break
-	    a) a2( b) \break
-	    a2 
-	}
-	\lyricsto A \context Lyrics \lyrics { a __ a __ ha }
-    >>
-    \paper {
-	raggedright = ##t
-    }
-}
diff --git a/input/regression/lyric-extender.ly b/input/regression/lyric-extender.ly
deleted file mode 100644
index 7e3b3400a7..0000000000
--- a/input/regression/lyric-extender.ly
+++ /dev/null
@@ -1,17 +0,0 @@
-\version "2.1.21"
-
-\header { texidoc= "Tests lyric extenders. "}
-
-    \paper { raggedright= ##t }
-\score{
-\notes \relative c'	<<
-	\context Staff {
-	    c8[ ( d] )
-	    r4 f4 }
-	\context Lyrics \lyrics { xxx __ \skip 4 x  }
-	>>
-}
-
-
-
-
diff --git a/input/regression/lyric-hyphen-break.ly b/input/regression/lyric-hyphen-break.ly
deleted file mode 100644
index 2abcbe5d85..0000000000
--- a/input/regression/lyric-hyphen-break.ly
+++ /dev/null
@@ -1,35 +0,0 @@
-\version "2.1.20"
-
-\header {
-
-    texidoc = "Hyphens only print at the beginning of the line, when
-they go past the first note. "
-
-    }
-
-\score {
-<<    \notes \new Staff \relative c'' { \time 1/4 c16[ c c  c]
-\time 1/4
-c16[ c c c]
-\time 1/4
-r c16[ c c]
-
-}
-    \lyrics \new LyricsVoice {
-	bla16 -- bla -- bla -- bla --
-	bla -- bla -- bla -- bla8 --
-	       bla16 -- bla -- bla 
-       }>>
-    \paper   {
-	indent = 0.0 \cm
-	linewidth =  3.4 \cm
-
-	\translator {
-	    \StaffContext \remove "Time_signature_engraver"
-	}
-	
-    }
-      
-}
-
-	
diff --git a/input/regression/lyric-hyphen.ly b/input/regression/lyric-hyphen.ly
deleted file mode 100644
index a6d00e81e2..0000000000
--- a/input/regression/lyric-hyphen.ly
+++ /dev/null
@@ -1,14 +0,0 @@
-\version "2.1.21"
-\header {texidoc="Tests lyric hyphens. "}
-\score{
-	<<
-	\context Staff \notes { c' (c') (c') c' }
-	\context Lyrics \lyrics { bla -- alb xxx -- yyy }
-	>>
-}
-
-
-
-
-
-
diff --git a/input/regression/lyric-phrasing-new.ly b/input/regression/lyric-phrasing-new.ly
deleted file mode 100644
index b9143f69e1..0000000000
--- a/input/regression/lyric-phrasing-new.ly
+++ /dev/null
@@ -1,26 +0,0 @@
-\version "2.1.21"
-\header {
-
-texidoc = "Lyric phrasing:
-
-  Normally, the lyric is centered on the note head. However, on
-  melismata, the text is left aligned on the left-side of the note head.
-
-"
-}
-
-
-\score{
-<<	\notes \relative c' \context Voice = "bla" {
-	    \autoBeamOff
-	    c4( c16 d c b)  c4
-	    d16[ e f g]
-	    
-	}
-	\lyrics  \lyricsto  "bla" \context Lyrics {
-	    al tijd
-	    izzz
-	} >>
-	
-    \paper { raggedright = ##t }
-}
diff --git a/input/regression/lyric-phrasing.ly b/input/regression/lyric-phrasing.ly
deleted file mode 100644
index f9b64b985f..0000000000
--- a/input/regression/lyric-phrasing.ly
+++ /dev/null
@@ -1,43 +0,0 @@
-
-\version "2.1.21"
-\header{
-  texidoc="Lyric phrasing
-
-  We find start and end of phrases, and align lyrics of multiple stanzas
-  accordingly.
-
-  Also, lyrics at start of melismata should be left aligned.
-  (is that only lyrics that are followed by `__'?  Because
-  that seems to be the case now -- jcn)
-
-@example
-	   |        |        |     |      |
-	  x|       x|       x|    x|     x|
-
-     1:  Start  sentence  melisma      end.
-     2:  x         x         x______      x
-@end example
-
-  Only lyrics that are followed by '__' while there's a melisma,
-  are left-aligned, in this case the third x."
-}
-
-\paper { raggedright = ##t}
-\score {
-  \addlyrics
-    \context Voice = "v" \notes  \relative c'' {
-      \autoBeamOff
-      a a a8 ( a) a4
-    }
-  <<
-      \new Lyrics \lyricsto "v"  \lyrics {
-        \property Lyrics . stanza = "1:"
-        Start sentence melisma end.
-      }
-      \new Lyrics \lyricsto "v" \lyrics {
-        \property Lyrics . stanza = "2:"
-        x x x __ x.
-      }
-   >>
-}
-
diff --git a/input/regression/lyrics-bar.ly b/input/regression/lyrics-bar.ly
deleted file mode 100644
index ba619808fb..0000000000
--- a/input/regression/lyrics-bar.ly
+++ /dev/null
@@ -1,39 +0,0 @@
-\version "2.1.21"
-
-\header{
-texidoc="
-Adding a @code{Bar_engraver} to the Lyrics context makes sure that
-lyrics don't collide with barlines.
-"
-}
-
-\score {
-	\context StaffGroup <<
-	\notes \context Staff {
-	        b1 \bar "|:" b1 \bar ":|"
-	}
-	\lyrics <<
-	 	\context LyricsWithBars {
-%		        thisContextHasBarEngraver1  added
-		        ThisContextCertainlyHasBarEngraverAddedButThereHasBeenSomethingFunnyBefore1.  Here.
-		}
-		\context Lyrics {
-		        this4 one has no BarEngraverAddedToContext1
-		}
-	>>
-	\notes \new Staff { b1 b1 }
-	>>
-	\paper {
-		raggedright = ##t
-		\translator {
-			\ScoreContext
-			\accepts "LyricsWithBars"
-		}
-		\translator {
-			\LyricsContext
-			\consists "Bar_engraver"
-			\name "LyricsWithBars"
-		}
-	}
-}
-
diff --git a/input/regression/lyrics-melisma-beam.ly b/input/regression/lyrics-melisma-beam.ly
deleted file mode 100644
index 52f48053c3..0000000000
--- a/input/regression/lyrics-melisma-beam.ly
+++ /dev/null
@@ -1,18 +0,0 @@
-\version "2.1.21"
-\header
-{
-    texidoc = "Melismata are triggered by manual beams." 
-}
-
-
-\score {
-    <<
-	\new Staff
-	    \notes \relative c'' {
-		\property Staff.autoBeaming = ##f
-		c8 c8[ c8 c8]  c8    }
-	
-	\lyricsto "" \new Lyrics \lyrics { bla bla bla }
-    >>
-    \paper { raggedright = ##t }
-}
diff --git a/input/regression/markup-note.ly b/input/regression/markup-note.ly
deleted file mode 100644
index efb6e9f27d..0000000000
--- a/input/regression/markup-note.ly
+++ /dev/null
@@ -1,43 +0,0 @@
-\header {
-
-    texidoc = "The note markup function is used to make metronome
- markings. It works for a variety of flag dot and duration settings."
-}
-\version "2.1.11"
-
-\score { \notes { c4^\markup {
-    \note #"1" #1
-    \note #"2" #1
-    \note #"4" #1
-    \note #"8" #1
-    \note #"16" #1
-    \note #"32" #1
-    \note #"64" #1
-
-    \note #"1" #-1
-    \note #"2" #-1
-    \note #"4" #-1
-    \note #"8" #-1
-    \note #"16" #-1
-    \note #"32" #-1
-    \note #"64" #-1
-
-    \note #"1." #-1
-    \note #"2." #-1
-    \note #"4." #-1
-    \note #"8." #-1
-    \note #"16." #-1
-    \note #"32." #-1
-    \note #"64." #-1
-
-    \note #"1." #1
-    \note #"2." #1
-    \note #"4." #1
-    \note #"8." #1
-    \note #"16." #1
-    \note #"32." #1
-    \note #"64." #1
-
-}
-
-} }
diff --git a/input/regression/markup-stack.ly b/input/regression/markup-stack.ly
deleted file mode 100644
index a3d9e0e58b..0000000000
--- a/input/regression/markup-stack.ly
+++ /dev/null
@@ -1,6 +0,0 @@
-\version "2.1.7"
-\header {texidoc="Stacking of markup scripts."}
-\paper { raggedright = ##t}
-\score { \notes { c''^\markup { "a" \column < "1" \bold "2"  "3" > } } }
-
-
diff --git a/input/regression/markup-user.ly b/input/regression/markup-user.ly
deleted file mode 100644
index d1563e6d8f..0000000000
--- a/input/regression/markup-user.ly
+++ /dev/null
@@ -1,22 +0,0 @@
-
-\header {
-
-    texidoc = "Users may define their own markup commands using the
-    @code{def-markup-command} scheme macro."
-
-
-      }
-
-\version "2.1.14" % to be updated
-
-#(def-markup-command (upcase paper props str) (string?)
-  "Upcase the string characters. Syntax: \\upcase #\"string\""
-   (interpret-markup paper props (make-simple-markup (string-upcase str))))
-
-\score { 
-    \notes { 
-        c''-\markup \upcase #"hello world"
-        % produces a "HELLO WORLD" markup
-    }
-    \paper { raggedright = ##t }
-}
diff --git a/input/regression/measure-grouping.ly b/input/regression/measure-grouping.ly
deleted file mode 100644
index 6662a20f4a..0000000000
--- a/input/regression/measure-grouping.ly
+++ /dev/null
@@ -1,33 +0,0 @@
-
-\header
-{
-
-    texidoc = "The @code{Measure_grouping_engraver} adds triangles and
-brackets above beats when you set beatGrouping.  "
-
-}
-
-\version "2.1.7"
-
-
-%% TODO: should have 2/4 + 5/8 time sig style.
-\score { \notes
-\context Staff
-	 \relative c' {
-	     #(set-time-signature 2 4) 
-	     c8 a'4 a8~
-	     #(set-time-signature 5 8 '(3 2)) 
-	     a8 bes4 r8 bes8->
-	     \time 2/4
-	     c,8 g'4 g8~
-	     #(set-time-signature 5 8 '(3 2)) 
-	     g8 a4 g a4.->
-	 }
-	 \paper  {
-	     raggedright = ##t
-	     \translator { \StaffContext
-			   \consists "Measure_grouping_engraver"
-			   }
-	     }
-	 }
-
diff --git a/input/regression/mensural.ly b/input/regression/mensural.ly
deleted file mode 100644
index a4cfa0290f..0000000000
--- a/input/regression/mensural.ly
+++ /dev/null
@@ -1,16 +0,0 @@
-\version "2.1.7"
-\header {
-    
-texidoc = "There is limited support for mensural notation: note head
-shapes are available. Mensural stems are centered on the note heads,
-both for up and down stems."
-
-}
-
-
-\score {\notes { \context Voice { 
-    \property Voice.NoteHead \override #'style = #'mensural
-\transpose c d'' {  c4 c2 c8  c16 c16  c1 c\breve c\longa }
-\transpose c c' { c4 c2 c8  c16 c16  c1 c\breve c\longa }
-}}}
-
diff --git a/input/regression/metronome-marking.ly b/input/regression/metronome-marking.ly
deleted file mode 100644
index d7e1855b16..0000000000
--- a/input/regression/metronome-marking.ly
+++ /dev/null
@@ -1,18 +0,0 @@
-
-
-\header {
-
-    texidoc = "Here @code{\tempo} directives are printed as metronome markings.
-
-The marking is left aligned with the time signature, if there is one.
-"
-    
-    }
-
-\version "2.1.7"
-
-\score { \notes \relative c'' {   \tempo \breve = 100 c1 c1 \tempo 8.. = 50 c1 }
-\paper {  raggedright = ##t }
-
-     }
-	 
diff --git a/input/regression/mm-rests2.ly b/input/regression/mm-rests2.ly
deleted file mode 100644
index fb501c2e2e..0000000000
--- a/input/regression/mm-rests2.ly
+++ /dev/null
@@ -1,34 +0,0 @@
-
-\version "2.1.7"
-
-\header{
-texidoc="
-If @code{Score.skipBars} is set,
-the signs for four, two, and one measure rest are combined to
-produce the graphical representation of rests for up to 10 bars.
-The number of bars will be written above the sign.
-"
-}
-
-thenotes = \notes \relative cis' {
-\property Score. skipBars = ##t
-\time 4/4
-R1 |
-R1*1 |
-R1*2 |
-R1*3 |
-R1*4 |
-R1*5 |
-R1*6 |
-R1*7 |
-R1*8 |
-R1*9 |
-R1*10 |
-R1*11 | 
-}
-
-\score { << \context Staff \thenotes
-
-	>>
-}
-
diff --git a/input/regression/mmrest-collision.ly b/input/regression/mmrest-collision.ly
deleted file mode 100644
index b7366e9b98..0000000000
--- a/input/regression/mmrest-collision.ly
+++ /dev/null
@@ -1,29 +0,0 @@
-\version "2.1.7"
-\header { texidoc = "Tests a collision between multimeasure rests in
-different voices. " }
-\score {
-  \context Staff \notes <<
-    \new Voice {
-      \property Voice.MultiMeasureRest \override #'staff-position = #3
-      R1
-    }
-    \new Voice {
-      \property Voice.MultiMeasureRest \override #'staff-position = #-3
-      R1
-    }
-  >>
-  \paper {
-    \translator {
-      \StaffContext
-      \remove Multi_measure_rest_engraver
-      \remove Bar_engraver
-    }
-    \translator {
-      \VoiceContext
-      \consists Multi_measure_rest_engraver
-      \consists Bar_engraver
-    }
-	raggedright = ##t
-  }
-}
-
diff --git a/input/regression/molecule-hacking.ly b/input/regression/molecule-hacking.ly
deleted file mode 100644
index 6dd67c9004..0000000000
--- a/input/regression/molecule-hacking.ly
+++ /dev/null
@@ -1,78 +0,0 @@
-
-\version "2.1.21"
-
-\header { texidoc=" You can write molecule callbacks in Scheme, thus
-providing custom glyphs for notation elements.  A simple example is
-adding parentheses to existing molecule callbacks.
-
-The parenthesized beam is less successful due to implementation of the
-Beam. The note head is also rather naive, since the extent of the
-parens are also not seen by accidentals.
-"
-	
-}
-
-#(define (parenthesize-callback callback)
-   "Construct a function that will do CALLBACK and add parentheses.
-Example usage:
-
-  \\property Voice.NoteHead \\override #'print-function
-		      =
-		      #(parenthesize-callback Note_head::print)
-		    
-"
-
-   
-   (define (parenthesize-molecule grob)
-     "This function adds parentheses to the original callback for
-GROB.  The dimensions of the molecule is not affected.
-"
-     
-     (let* (
-	    (fn (ly:get-default-font grob))
-	    (pclose (ly:find-glyph-by-name fn "accidentals-rightparen"))
-	    (popen (ly:find-glyph-by-name fn "accidentals-leftparen"))
-	    (subject (callback grob))
-
-	    ; remember old size
-	    (subject-dim-x (ly:molecule-get-extent subject 0))
-	    (subject-dim-y (ly:molecule-get-extent subject 1))
-	)
-
-        ; add parens
-        (set! subject
-	     (ly:molecule-combine-at-edge 
-	      (ly:molecule-combine-at-edge subject 0 1 pclose 0.2)
-	      0 -1 popen  0.2))
-
-	; revert old size.
-       (ly:molecule-set-extent! subject 0 subject-dim-x)
-       (ly:molecule-set-extent! subject 1 subject-dim-y)
-       subject
-    )
-     )
-   parenthesize-molecule
-   )
-    
-
-
-\score {
-	\notes \relative c' { c4 e
-
-		    \property Voice.NoteHead \override #'print-function
-		      =
-		      #(parenthesize-callback Note_head::print)
-		    g bes
-		    \property Voice.NoteHead \revert #'print-function
-		    \property Voice.Beam \override #'print-function
-		      =
-		      #(parenthesize-callback Beam::print)
-
-		    a8 gis8 a2.
-		    
-		    }
-
-	\paper { raggedright = ##t}
-	}
-
-
diff --git a/input/regression/multi-measure-rest-center.ly b/input/regression/multi-measure-rest-center.ly
deleted file mode 100644
index 2fe246af64..0000000000
--- a/input/regression/multi-measure-rest-center.ly
+++ /dev/null
@@ -1,20 +0,0 @@
-\version "2.1.7"
-\header
-{
-  texidoc = "The multimeasure rest is centered exactly between bar lines."
-
-}
-
-\score {
-    \notes
-    {
-	\property Score.skipBars = ##t
-	\property Staff.BarLine \set #'hair-thickness = #7.5
-	\property Staff.MultiMeasureRest \set #'hair-thickness = #10
-
-	c'1 R1*20 c'1
-    }
-    \paper { raggedright = ##t} 
-}
-	 
-
diff --git a/input/regression/multi-measure-rest-grace.ly b/input/regression/multi-measure-rest-grace.ly
deleted file mode 100644
index 9b296b91e3..0000000000
--- a/input/regression/multi-measure-rest-grace.ly
+++ /dev/null
@@ -1,13 +0,0 @@
-\version "2.1.7"
-
-
-\header {
-texidoc= "Grace notes and multi-measure rests."
-}
-
-\score   {
-\notes <<
-	\new Staff { R1 R1 R1*3 }
-	\new Staff { \clef bass c1 \grace c8 c2 c2 c1  \grace c16 c2 c2 c1 }
->>
-}
diff --git a/input/regression/multi-measure-rest-instr-name.ly b/input/regression/multi-measure-rest-instr-name.ly
deleted file mode 100644
index 7e75fccaff..0000000000
--- a/input/regression/multi-measure-rest-instr-name.ly
+++ /dev/null
@@ -1,20 +0,0 @@
-\version "2.1.7"
-\header { texidoc = "This combines instrument names and multimeasure rests (there was an
-interesting bug in 1.3.98). " }
-
-\score{
-	\context Staff <<
-	      \property Staff.instrument = "instrument"
-	      \property Staff.instr = "instr"
-	      \notes{c''1 \break R1 }
-	    >>
-	 \paper {
-	    \translator { \StaffContext
-	    \consists Instrument_name_engraver
-
-	    }
-	  }
-	\paper { raggedright =  ##t }
-	}
-
-
diff --git a/input/regression/multi-measure-rest-multi-staff-center.ly b/input/regression/multi-measure-rest-multi-staff-center.ly
deleted file mode 100644
index 93ee2c4d2d..0000000000
--- a/input/regression/multi-measure-rest-multi-staff-center.ly
+++ /dev/null
@@ -1,14 +0,0 @@
-\header { texidoc = "The centering of multi-measure rests is
-independent on prefatory matter in other staves."
-
-	  }
-\version "2.1.7"
-
-\score {
-\notes    << \new Staff  { R1 } 
-     \new Staff { f'1  \clef bass } 
-
-    >>
-
-\paper { raggedright = ##t } 
-}
diff --git a/input/regression/multi-measure-rest-text.ly b/input/regression/multi-measure-rest-text.ly
deleted file mode 100644
index ad683e81c7..0000000000
--- a/input/regression/multi-measure-rest-text.ly
+++ /dev/null
@@ -1,22 +0,0 @@
-\version "2.1.7"
-
-\header  {
-
-texidoc = "
-Texts may be added to the multi measure rests.
-
-"
-
-
-}
-
-\score { \notes {
-  \time 3/4
-  \property Score.skipBars = ##t
-  R2._\markup { \center < \musicglyph  #"scripts-dfermata" \roman "Ad lib"  >  }
-  R2.^\fermataMarkup
-  R2.^"4"
-  R2.*3_\markup { \roman "a1b2c3" }
-  R2.*10^"inner"^"top"_"inner"_"bot"
-  c'2.
-}}
diff --git a/input/regression/multi-measure-rest.ly b/input/regression/multi-measure-rest.ly
deleted file mode 100644
index 7b2332191e..0000000000
--- a/input/regression/multi-measure-rest.ly
+++ /dev/null
@@ -1,37 +0,0 @@
-\version "2.1.7"
-\header{
-
-texidoc="
-Multiple measure rests do not collide with barlines and clefs.  They
-are not expanded when you set @code{Score.skipBars}.  Although the
-multi-measure-rest is a Spanner, minimum distances are set to keep it
-colliding from barlines. 
-
-Rests over measures during longer than 2 wholes use breve rests. When
-more than 10 or more measures (tunable through @code{expand-limit})
-are used then a different symbol is used.
-
-"
-}
-
-
-\score { \notes {
-    \time 3/4 \key cis \major
-    R2.*15
-  
-    R2.
-    R2.*3
-    R2.*9
-    R2.*11
-
-\time 8/4 R1*2
-}
-	\paper {
-	\translator {
-		\ScoreContext
-		skipBars = ##t
-	}
-	raggedright = ##t	
-	}
-}
-
diff --git a/input/regression/music-map.ly b/input/regression/music-map.ly
deleted file mode 100644
index eb0d2a6b78..0000000000
--- a/input/regression/music-map.ly
+++ /dev/null
@@ -1,41 +0,0 @@
-\header {
-
-texidoc =
-
-"With @code{music-map}, you can apply functions operating on a single
-piece of music to an entire music expression. In this example, the the
-function @code{notes-to-skip} changes a note to a skip. When applied
-to an entire music expression in the 1st measure, the scripts and
-dynamics are left over. These are put onto the 2nd measure."
-
-}
-
-\version "2.1.7"
-
-#(define (notes-to-skip m)
-"Convert all stuff with duration (notes, lyrics, bass figures, etc.) to skips.
-Scripts and dynamics are maintained.
-"
-  (if (memq 'rhythmic-event (ly:get-mus-property m 'types))
-	(let* ((newmus 	  (make-music-by-name 'SkipEvent)))
-		(map
-		  (lambda (x) (ly:set-mus-property! newmus (car x) (cdr x)))
-		  (ly:get-mutable-properties m))
-		newmus
-	)
-	m)
-)
-
-
-    \paper { raggedright= ##t }
-
-foobar = \notes \transpose c c' { c4\>-^ c4-^ c4\!-^ c4-^  } 
-
-\score {
-  \notes \relative c''  \context Voice {
-	\foobar
-
-	<< \apply #(lambda (x) (music-map notes-to-skip x))
-		\foobar
-	   { d2 d2 } >> 
-}}
diff --git a/input/regression/new-markup-scheme.ly b/input/regression/new-markup-scheme.ly
deleted file mode 100644
index 81eb14fa20..0000000000
--- a/input/regression/new-markup-scheme.ly
+++ /dev/null
@@ -1,64 +0,0 @@
-
-\header {
-
-    texidoc = "There is a Scheme macro @code{markup} to produce markup
-    texts using a similar syntax as @code{\\markup}."
-
-    }
-\version "2.1.16"
-\score {
-    \notes {
-        \fatText
-        f'1-\markup {
-            foo
-            \raise #0.2 \hbracket \bold bar
-            \override #'(baseline-skip . 4)
-
-            \bracket \column < baz bazr bla >
-            \hspace #2.0
-            \override #'(font-family . music) {
-                \lookup #"noteheads-0"
-                \char #53
-            }
-            \musicglyph #"accidentals--1"
-            \combine "X" "+"   
-            \combine "o" "/"
-            \box \column < { "string 1" } { "string 2" } >
-            "$\\emptyset$"
-            \italic Norsk
-            \super "2"
-            \dynamic sfzp
-            \huge { "A" \smaller "A" \smaller \smaller "A"
-                    \smaller \smaller \smaller "A" }
-            \sub "alike"
-        }	
-        \break
-        f'1-#(markup* 
-              "foo"
-              #:raise 0.2 #:hbracket #:bold "bar"
-              #:override '(baseline-skip . 4) 
-              #:bracket #:column ( "baz" "bazr" "bla" )
-              #:hspace 2.0
-              #:override '(font-family . music) #:line (#:lookup "noteheads-0" 
-                                                        #:char 53)
-              #:musicglyph "accidentals--1"
-              #:combine "X" "+"   
-              #:combine "o" "/"
-              #:box #:column ("string 1" "string 2")
-              "$\\emptyset$"
-              #:italic "Norsk"
-              #:super "2"
-              #:dynamic "sfzp"
-              #:huge #:line ("A" #:smaller "A" #:smaller #:smaller "A" 
-                             #:smaller #:smaller #:smaller "A")
-              #:sub "alike")
-    }
-    \paper { 
-        raggedright = ##t
-        indent = #0
-        \translator {
-            \StaffContext
-            \remove Time_signature_engraver 
-        }
-    }
-}
diff --git a/input/regression/new-markup-syntax.ly b/input/regression/new-markup-syntax.ly
deleted file mode 100644
index 104e24743d..0000000000
--- a/input/regression/new-markup-syntax.ly
+++ /dev/null
@@ -1,37 +0,0 @@
-\header  {
-texidoc = "New markup syntax."
-}
-
-\version "2.1.7"
-
-
-\score {
-  \notes
-   {
-    f'-\markup {
-		foo
-		\raise #0.2 \hbracket \bold bar
-		\override #'(baseline-skip . 4)
-
-		\bracket \column < baz bazr bla >
-		\hspace #2.0
-		\override #'(font-family . music) {
-			\lookup #"noteheads-0"
-			\char #53
-		}
-		\musicglyph #"accidentals--1"
-		\combine "X" "+"   
-		\combine "o" "/"
-%		\char-number #"abc1234abc"
-		\box \column < { "string 1" } { "string 2" } >
-		"$\\emptyset$"
-		\italic Norsk
-		\super "2"
-		\dynamic sfzp
-		\huge { "A" \smaller "A" \smaller \smaller "A"
-			\smaller \smaller \smaller "A" }
-		\sub "alike"
-	}	
-    c''4
-    }
-}
diff --git a/input/regression/non-empty-text.ly b/input/regression/non-empty-text.ly
deleted file mode 100644
index 2d95c668fe..0000000000
--- a/input/regression/non-empty-text.ly
+++ /dev/null
@@ -1,22 +0,0 @@
-
-\version "2.1.7"
-
-\header{
-    texidoc=" Text is set with empty horizontal dimensions.  The
-boolean property @code{no-spacing-rods} in @code{TextScript} is used
-to control the horizontal size of text.  " }
-
-\score{
-    \notes\relative c''{
-	%% \emptyText
-	%% short for \property Voice.TextScript \set #'no-spacing-rods = ##t
-	c2_"very wide and long text" c | \break
-	%% short for \property Voice.TextScript \set #'no-spacing-rods = ##f
-	\fatText
-	c_"very wide and long text" c
-    }
-    \paper {
-	linewidth  = 3.0\cm
-    }
-}
-
diff --git a/input/regression/note-group-bracket.ly b/input/regression/note-group-bracket.ly
deleted file mode 100644
index 76439dd008..0000000000
--- a/input/regression/note-group-bracket.ly
+++ /dev/null
@@ -1,38 +0,0 @@
-
-\version "2.1.7"
-
-\header {
-
-    texidoc = "Note grouping events are used to indicate where
-brackets for analysis start and end.
-
-@cindex bracket
-@cindex note groups
-@cindex music analysis
-@cindex analysis
-
-"
-    
-}
-
-
-
-\score {
-    \notes\relative c''
-    {
-	c4\startGroup\startGroup\startGroup
-	c4\stopGroup
-	c4\startGroup
-	c4\stopGroup\stopGroup
-	c4\startGroup
-	c4\stopGroup\stopGroup
-    }
-
-    \paper {
-	\translator {
-	    \StaffContext \consists "Horizontal_bracket_engraver"
-	}
-	raggedright = ##t
-    }
-}
-
diff --git a/input/regression/note-head-chord.ly b/input/regression/note-head-chord.ly
deleted file mode 100644
index ee53a766aa..0000000000
--- a/input/regression/note-head-chord.ly
+++ /dev/null
@@ -1,21 +0,0 @@
-
-\version "2.1.19"
-
-\header {
-    texidoc = "Note heads are flipped on the stem to prevent collisions.
-It also works for whole heads that have invisible stems.
-"
-
-}
-
-    \paper { raggedright= ##t }
-
-\score { \notes \relative c''
-	 \context Voice {
-	     <g a c>4
-	     <c d g a>
-	     <c d e >
-	     <c c g>
-	     <c d f g>1
-    }}
-
diff --git a/input/regression/note-head-harmonic.ly b/input/regression/note-head-harmonic.ly
deleted file mode 100644
index 2e49e43c8d..0000000000
--- a/input/regression/note-head-harmonic.ly
+++ /dev/null
@@ -1,19 +0,0 @@
-\header
-{
-    texidoc = "  The handling of stems for harmonic notes must be
-   completely identical to normal note heads."
-}
-
-\version "2.1.9"
-
-\score {
- \notes {
-    < c''     f''\harmonic >4
-    \stemUp
-    < c''     f''\harmonic >
-  }
-
-  \paper {
-      raggedright = ##t 
-  }
-}
diff --git a/input/regression/note-head-style.ly b/input/regression/note-head-style.ly
deleted file mode 100644
index b6f34f5928..0000000000
--- a/input/regression/note-head-style.ly
+++ /dev/null
@@ -1,82 +0,0 @@
-\version "2.1.19"
-\header{
-texidoc="
-Note head shapes are settable.  The stem endings should be adjusted
-per note head.  If you want different note head styles on one stem,
-you must create a special context called Voice.
-
-Harmonic notes have a different shape and different
-dimensions. 
-"
-}
-
-pattern = \notes <<
-      \new Voice {
-        \property Voice.Stem \set #'direction = #UP
-        e'4
-         e'2. e'1 e'\breve*1/2 e'\longa*1/4
-      }
-      \new Voice {
-        \property Voice.Stem \set #'direction = #DOWN
-         a4 a2. a1 a\breve*1/2 a\longa*1/4
-      }
-    >>
-
-\score {
-  \notes \transpose c c {
-    \clef C
-
-    \property Staff.NoteHead \set #'style = #'default
-    s1*0^\markup { "default" }
-    \pattern
-
-    \property Staff.NoteHead \set #'style = #'baroque
-    s1*0^\markup { "baroque" }
-    \pattern
-        \break
-
-    \property Staff.NoteHead \set #'style = #'neo_mensural
-    s1*0^\markup { "neomensural" }
-    \pattern
-
-    \property Staff.NoteHead \set #'style = #'mensural
-    s1*0^\markup { "mensural" }
-    \pattern
-    
-    \break
-
-    \property Staff.NoteHead \set #'style = #'harmonic
-    s1*0^\markup { "harmonic" }
-    \pattern
-
-    \property Staff.NoteHead \set #'style = #'diamond
-    s1*0^\markup { "diamond" }
-    \pattern
-    \break
-
-    \property Staff.NoteHead \set #'style = #'cross
-    s1*0^\markup { "cross" }
-    \pattern
-
-    \property Staff.NoteHead \set #'style = #'xcircle
-    s1*0^\markup { "xcircle" }
-\pattern
-    
-    \break
-
-    \property Staff.NoteHead \set #'style = #'triangle
-    s1*0^\markup { "triangle" }
-    \pattern
-    
-
-    \property Staff.NoteHead \set #'style = #'slash
-    s1*0^\markup { "slash" }
-    \pattern
-    \break
-  }
-
-  \paper {
-    indent = 0.0
-    raggedright = ##t
-  }
-}
diff --git a/input/regression/note-line.ly b/input/regression/note-line.ly
deleted file mode 100644
index 0059f64e94..0000000000
--- a/input/regression/note-line.ly
+++ /dev/null
@@ -1,29 +0,0 @@
-\version "2.1.7"
-
-\header {
-texidoc = "Note head lines (e.g. glissando)
-run between centers of the note heads."
-}
-
-su = \notes{ \change Staff = up}
-sd = \notes{ \change Staff = down}
-
-\score {
-    \context PianoStaff
-        \notes <<
-	\context Staff = up   {
-            \property PianoStaff.connectArpeggios = ##t
-	    \showStaffSwitch
-	    \clef F
-	    c4 d \sd b a g8 f16 e32 d \su g2 \glissando a,4 \sd \break a2. \su g4 \glissando f1
-	}
-	\context Staff = down {
-	    \clef F s1*4
-	}
-    >>
-\paper {
-    linewidth = 8.0 \cm
-}
-}
-
-
diff --git a/input/regression/number-staff-lines.ly b/input/regression/number-staff-lines.ly
deleted file mode 100644
index 6e7140cca2..0000000000
--- a/input/regression/number-staff-lines.ly
+++ /dev/null
@@ -1,21 +0,0 @@
-
-\version "2.1.7"
-
-\header{
-texidoc=" The number of stafflines of a staff can be set.  Ledger
-lines both on note heads and rests are adjusted.  Barlines also are
-adjusted.  "
-}
-
-\score { 
-\context Voice \notes\relative c {
-	c' c c c | g' g g g 	\bar ":|"
-  }
-  \paper {
-
-\translator { \StaffContext
-StaffSymbol \override #'line-count = #3
-}  }
-  \midi { }
-}
-
diff --git a/input/regression/ottava-broken.ly b/input/regression/ottava-broken.ly
deleted file mode 100644
index 1b6b12afe5..0000000000
--- a/input/regression/ottava-broken.ly
+++ /dev/null
@@ -1,25 +0,0 @@
-
-
-\header
-{
-    
-texidoc = "Ottava brackets behave properly at line breaks: no vertical
-line, and the horizontal line doesn't stick out."
-
-
-}
-\version "2.1.7"
-
-
-\paper { raggedright = ##t} 
-\score {
-  \notes\relative c''' \notes {
-  a2 b
-  #(set-octavation 1)
-  a2 b \break c''1 \break
-  a
-  #(set-octavation 0)
-  g,,2 b c a 
-}
-}
-
diff --git a/input/regression/ottava.ly b/input/regression/ottava.ly
deleted file mode 100644
index bf6e3cc7b0..0000000000
--- a/input/regression/ottava.ly
+++ /dev/null
@@ -1,68 +0,0 @@
-
-\header
-{
-texidoc = "Ottava brackets are supported, through the
-use of the scheme function @code{set-octavation}.
-
-The spanner should go below for 8va bassa, and the string can be tuned
-with @code{Staff.ottavation}.
-
-"
-
-}
-\version "2.1.7"
-
-% . There must be a minimum distance between the octavation line and the
-%   topmost staff line, taking into account the height of the closing
-%   vertical dashed line.
-%
-% . Octavation lines broken across staves must always start with `8va'
-%   (or something similar).
-%
-% . The `8va' should be slightl offset to the left.
-%
-% . The final vertical dashed line of the octavation line should be offset
-%   to the right.
-%
-% . Octavation lines for `8va bassa' must be below the staff, not above.
-%
-% . The `8va bassa' string is far too long for short octavation lines.
-%   LilyPond should select between `8va bassa', `8ba', and `8', depending
-%   on the available horizontal space (and the octavation style selected
-%   by the user).  The same holds for `8va' and `15ma'.
-
-
-\paper { raggedright = ##t} 
-\score {
-  \notes\relative c''' \notes {
-  a b c a
-  #(set-octavation 1)
-  a b c a
-  #(set-octavation 0)
-  #(set-octavation 2)
-  a b c a
-  #(set-octavation 0)
-  #(set-octavation -1)
-  a b c a 
-  #(set-octavation 0)
-  \break
-  a, 
-  #(set-octavation 1)
-  \property Staff.ottavation = #"8"
-  b
-  #(set-octavation 0)
-  c a 
-  #(set-octavation -1) b a g 
-  #(set-octavation 0)
-  c 
-  #(set-octavation -1)
-  \property Staff.ottavation = #"8"
-  c,,16
-  #(set-octavation 0)
-  c'16
-  #(set-octavation -1)
-  \property Staff.ottavation = #"8"
-  g,,16
-}
-}
-
diff --git a/input/regression/part-combine-a2.ly b/input/regression/part-combine-a2.ly
deleted file mode 100644
index e49b9f92e5..0000000000
--- a/input/regression/part-combine-a2.ly
+++ /dev/null
@@ -1,17 +0,0 @@
-
-\version "2.1.18"
-\header {
-    texidoc ="The a2 string is only printed on notes, not on rests,
-and only after chords, solo or polyphony."
-    }
-
-vone = \notes \relative a' { R1*2 g2 r2 g2 r2 a4 r4 g
-			 }
-vtwo = \notes \relative a' { R1*2 g2 r2 g2 r2 f4 r4 g }
-
-\score {
-    << \property Score.skipBars = ##t 
-   \partcombine \vone \vtwo
-       >>
-}
- 
diff --git a/input/regression/part-combine-global.ly b/input/regression/part-combine-global.ly
deleted file mode 100644
index 15df3513f8..0000000000
--- a/input/regression/part-combine-global.ly
+++ /dev/null
@@ -1,34 +0,0 @@
-
-
-\header { texidoc=
-
-	  "The analysis of the part combiner is non-local:
-in the following example, the decision for using separate voices in
-the 1st measure is made on the 2nd note, but influences the 1st note.
-
-In the 2nd measure, the pattern without the tie, leads to combined
-voices.
-  
-"
-    }
-\version "2.1.18"
-
-vone =\notes
-
-%%%%%%%%%%%%%%  0   1   2   3  
-\relative c'' {
-    \time 2/4
-    a8[ a]  a8[ a] |
-    a8[ a]  a8[ a]
-}
-
-vtwo =\notes
-\relative c' {
-    \time 2/4
-    f8[ f]~ f8[ f] |
-    f8[ f]  f8[ f]
-}
-
-\score {
-    \partcombine \vone \vtwo
-    }
diff --git a/input/regression/part-combine-solo-global.ly b/input/regression/part-combine-solo-global.ly
deleted file mode 100644
index 47c1a2ff86..0000000000
--- a/input/regression/part-combine-solo-global.ly
+++ /dev/null
@@ -1,19 +0,0 @@
-
-\header { texidoc = "Solo/Solo2 also is global: In this example, solo1
-	  should not printed over the 1st note, because the voice
-	  switch would kill the slur."
-
-}
-
-\version "2.1.18"
-
-\score {
-    \new Staff
-    \partcombine \notes \relative c'' {
-	bes2(
-	 a4)
-	}
-    \notes \relative c' {
-	r2 cis4
-    }
-}
diff --git a/input/regression/part-combine-solo.ly b/input/regression/part-combine-solo.ly
deleted file mode 100644
index ed08c13f4f..0000000000
--- a/input/regression/part-combine-solo.ly
+++ /dev/null
@@ -1,28 +0,0 @@
-
-\header { texidoc =
-
-	  "A solo string can only be printed when a note
-    starts. Hence, in this example, there is no Solo-2 although the
-    2nd voice has a dotted quarter, while the first voice has a rest.
-
-A Solo indication is only printed once; (shared) rests do not require
-reprinting a solo indication.
-
-Solo 1/2 can not be used when a spanner is active, so there is no solo
- over any of the tied notes.
-
-"
-    }
-
-vone = \notes \relative a' { d4 r8 d8 d8 r8 d8 r8 d2 ~ d2 ~ d4 }
-vtwo = \notes \relative g' { g4.   g8 r2          g4 r4 r2  g4 } 
-
-\version "2.1.18"
-
-\score {
-    
-    << \property Score.skipBars = ##t
-   \partcombine \vone \vtwo
-       >>
-}
- 
diff --git a/input/regression/part-combine-text.ly b/input/regression/part-combine-text.ly
deleted file mode 100644
index ac3f7bd719..0000000000
--- a/input/regression/part-combine-text.ly
+++ /dev/null
@@ -1,21 +0,0 @@
-
-\header {
-    texidoc ="The new part combiner:
-
-Detect a2, solo1, solo2  and print texts accordingly.
-
-"
-
-    
-    }
-
-
-\version "2.1.18"
-
-vone = \notes \relative a' { R1 a2    r4 r a a a a }
-vtwo = \notes \relative a' { R1 f4 f4 f4 f f f a a  }
-
-\score {
-   \partcombine \vone \vtwo
-}
- 
diff --git a/input/regression/part-combine.ly b/input/regression/part-combine.ly
deleted file mode 100644
index 77b7510c3f..0000000000
--- a/input/regression/part-combine.ly
+++ /dev/null
@@ -1,26 +0,0 @@
-
-\header {
-    texidoc ="The new part combiner.
-Apart for:
-@itemize @bullet
-@item different durations (start points)
-@item different articulations (only slur/beam/tie work)
-@item wide pitch ranges
-@end itemize
-"
-    }
-
-\version "2.1.18"
-
-vone = \notes \relative a' { g2 g    g  g4 g f' c c( c) c c  c ~ c
-			     c2. c4   c
-			 }
-vtwo = \notes \relative a' { f2 f4 f f2 g4 g c, f f  f  f f~ f ~ f
-			     f4 f2. ~ f4
-
-			 }
-
-\score {
-   \partcombine \vone \vtwo
-}
- 
diff --git a/input/regression/pedal-bracket.ly b/input/regression/pedal-bracket.ly
deleted file mode 100644
index 5f2d7588ef..0000000000
--- a/input/regression/pedal-bracket.ly
+++ /dev/null
@@ -1,24 +0,0 @@
-
-\header {
-
-    texidoc = "Piano pedal brackets.  Brackets should start and end at
- the left side of the note. If a note is shared between two brackets,
- the ends are flared.
-
-There are no vertical endings at a line-break.  " }
-
-\score {
-    \notes \relative c'' {
-        \property Staff.pedalSustainStyle = #'bracket
-
-        c4 d e \sustainDown b c c, \sustainUp \sustainDown  d8[ c]  e8[ 
-	    e \sustainUp \sustainDown] f4 d
-        \sustainUp g \sustainDown b b, \sustainUp c'
-
-        \property Staff.pedalUnaCordaStyle = #'mixed
-
-        c4 d \unaCorda e f g
-        b  | \break c b c \treCorde c
-    }
-    \paper { raggedright = ##t }
-}
diff --git a/input/regression/pedal-ped.ly b/input/regression/pedal-ped.ly
deleted file mode 100644
index 94d31bc196..0000000000
--- a/input/regression/pedal-ped.ly
+++ /dev/null
@@ -1,25 +0,0 @@
-\header
-{
-    texidoc = "Piano pedals: the standard style is with Ped symbols.
-The string can be tuned. This example shows the shorter tilde/P variant
-at the end of the melody."
-
-}
-
-
-\score{
-    \context Staff \notes\relative c'{
-
-        c4 d e f g
-        \sustainDown b c
-        c, d16[  c  c c]  e[ e \sustainUp \sustainDown e e ] f4 \sustainUp 
-        g\sustainDown  b \sustainUp c 
-        \property Staff.pedalSustainStrings = #'("-" "-P" "P")
-        \property Staff.SustainPedal \override #'padding = #-2
-        c, \sustainDown d e \sustainUp \sustainDown f
-        \sustainUp g b c
-
-
-
-    }
-}
diff --git a/input/regression/phrasing-slur.ly b/input/regression/phrasing-slur.ly
deleted file mode 100644
index 28f2307b43..0000000000
--- a/input/regression/phrasing-slur.ly
+++ /dev/null
@@ -1,16 +0,0 @@
-
-\version "2.1.7"
-
-\header {
-texidoc="Slurs play well with phrasing slur."
-}
-
-\score {
-  \notes\relative c'' {
-    \time 6/4 c\((d e) f(e d)\)
-  }
-  \paper {
-    raggedright = ##t
-  }
-}
-
diff --git a/input/regression/prefatory-empty-spacing.ly b/input/regression/prefatory-empty-spacing.ly
deleted file mode 100644
index 3debb0f9c1..0000000000
--- a/input/regression/prefatory-empty-spacing.ly
+++ /dev/null
@@ -1,17 +0,0 @@
-\version "2.1.7"
-
-\header {
-
-texidoc =" The A is atop an invisible barline. The barline
-although invisible, is also translated because it is the last one of
-the break alignment."
-    
-}
-
-\paper { raggedright= ##t }
-
-\score{ \notes {
-a a a a \break
-\mark A
-a a a a}}
-
diff --git a/input/regression/prefatory-spacing-matter.ly b/input/regression/prefatory-spacing-matter.ly
deleted file mode 100644
index e16a6f4ed8..0000000000
--- a/input/regression/prefatory-spacing-matter.ly
+++ /dev/null
@@ -1,21 +0,0 @@
-
-\version "2.1.7"
-\header {
-
-    texidoc = "Distances between prefatory items (eg. clef, bar, etc.)
-   are done using engraving standard distances.  These distances
-   depend on which items are combined."
-
-}
-
-\score { \notes \relative c'' {
-	\property Staff.instrument = "fobar"
-	\bar "||:"
-	\key cis \major
-	cis4 cis4 cis4 cis4 \clef bass  cis,1
-	\clef treble
-	\bar ":|"
-}
-\paper  { raggedright = ##t}
-}
-
diff --git a/input/regression/property-once.ly b/input/regression/property-once.ly
deleted file mode 100644
index 7c54c67293..0000000000
--- a/input/regression/property-once.ly
+++ /dev/null
@@ -1,18 +0,0 @@
-
-\version "2.1.7"
-\header {
-    texidoc = "Once properties take effect during a single time step only."
-}
-
-\score {
-      \notes \relative c' {
-	  c4
-	  \once \property Voice.Stem = #'()
-	  c4
-	  \once \property Voice.Stem \override #'thickness = #5.0
-	  c4
-	  c4
-  }
-}
- 
-
diff --git a/input/regression/rehearsal-mark-letter.ly b/input/regression/rehearsal-mark-letter.ly
deleted file mode 100644
index b28c22156f..0000000000
--- a/input/regression/rehearsal-mark-letter.ly
+++ /dev/null
@@ -1,21 +0,0 @@
-
-
-\header { texidoc= "Rehearsal marks in letter style: the I is skipped,
-and after Z, we continue with double letters.  The mark may be set
-with @code{\mark NUMBER}, or with @code{Score.rehearsalMark}."
-      }
-
-\version "2.1.7"
-\score {  \notes \relative c'' {
-  c1  \mark \default
-  c1  \mark #7
-  c1  \mark \default
-  c1  \mark \default
-  c1  \mark \default
-  \property Score.rehearsalMark = #24
-  c1  \mark \default
-  c1  \mark \default
-  c1  \mark \default
-  c1  \mark \default
-  }
-}
diff --git a/input/regression/rehearsal-mark-number.ly b/input/regression/rehearsal-mark-number.ly
deleted file mode 100644
index 8b8d3f4bcc..0000000000
--- a/input/regression/rehearsal-mark-number.ly
+++ /dev/null
@@ -1,23 +0,0 @@
-\header { texidoc= "
-
-Marks can be printed as numbers.  
-By setting @code{markFormatter} we may choose a different style of mark printing. Also, marks can be specified manually, with a markup argument" 
-	  
-      }
-
-\version "2.1.7"
-\score {
-  \notes \relative c''{
-    \property Score.markFormatter = #format-mark-numbers 
-  c1 | \mark \markup { \musicglyph #"scripts-coda" }
-  c1 | \mark \default
-  c1 | \mark \default
-    \property Score.markFormatter
-    = #(lambda (mark  context)
-	(make-bold-markup (make-box-markup (number->string mark))))
-	
-    c1 | \mark \default
-    c1 | \mark \default
-  }
-}
-
diff --git a/input/regression/repeat-fold.ly b/input/regression/repeat-fold.ly
deleted file mode 100644
index 1622f54c02..0000000000
--- a/input/regression/repeat-fold.ly
+++ /dev/null
@@ -1,19 +0,0 @@
-\version "2.1.7"
-
-\header{
-texidoc="
-Folded.  This doesn't make sense without alternatives, but it works.
-"
-}
-
-\score {
-  \context Staff \notes \relative c'' {
-    \repeat fold 3 { c^"3$\\times$ 0alt" d }
-    % less alts than body
-    \repeat fold 4 { c^"4$\\times$ 2alt" d } \alternative { e f }
-    % more alts than body
-    \repeat fold 2 { c^"2$\\times$ 3alt" d } \alternative { e f g }
-  }
-}
-
-
diff --git a/input/regression/repeat-line-break.ly b/input/regression/repeat-line-break.ly
deleted file mode 100644
index 2fdf4b9fa1..0000000000
--- a/input/regression/repeat-line-break.ly
+++ /dev/null
@@ -1,21 +0,0 @@
-\version "2.1.7"
-
-\header{
-texidoc="
-Across linebreaks, the left edge of a first and second alternative
-bracket should be equal.
-"
-}
-
-    \paper { raggedright= ##t }
-
-\score  {
-\notes
-\context Staff\relative c''  {
-	\repeat "volta" 2 { c1 \break } \alternative { d e }
-	c1
-	\repeat "volta" 2 { c1 } \alternative { { d \break}  e }
-
-}
-}
-
diff --git a/input/regression/repeat-percent-skipbars.ly b/input/regression/repeat-percent-skipbars.ly
deleted file mode 100644
index eeb2066c1b..0000000000
--- a/input/regression/repeat-percent-skipbars.ly
+++ /dev/null
@@ -1,18 +0,0 @@
-\version "2.1.7"
-
-
-\header {
-texidoc = "Percent repeats are not skipped, even when skipBars is set.  "
-}
-
-    \paper { raggedright= ##t }
-
-\score {
-     \context Staff <<
-	\property Score.skipBars = ##t
-	\notes {
-	\repeat "percent" 2 { g2 a g a }
-	}
-     >>
-}
-
diff --git a/input/regression/repeat-percent.ly b/input/regression/repeat-percent.ly
deleted file mode 100644
index 0f755284bb..0000000000
--- a/input/regression/repeat-percent.ly
+++ /dev/null
@@ -1,13 +0,0 @@
-\version "2.1.7"
-\header {
-texidoc = "Measure  repeats are supported, and may be nested with beat repeats."
-}
-	
-\score { \notes \relative c'' \context Voice { \time 4/4
-   % riff
-   \repeat "percent" 2 { r8. a16 g8. a16 bes8. a16 f8 d |  a c8 ~ c8 d8 ~ d8 r8 r4 }
-   
-   \repeat "percent" 2 { \repeat "percent" 4 { c8 es } }   
-  }
-}
-
diff --git a/input/regression/repeat-slash.ly b/input/regression/repeat-slash.ly
deleted file mode 100644
index 890dd9fec0..0000000000
--- a/input/regression/repeat-slash.ly
+++ /dev/null
@@ -1,15 +0,0 @@
-\version "2.1.7"
-\header {
-texidoc = "Beat repeats are supported."
-}
-
-\score { \notes \relative c'
-	 \context Voice { \time 4/4
-   \repeat "percent" 2 { c2 }
-
-   % the chairman dances
-   \repeat "percent" 2 { g'8 g c, c  }   
-   \repeat "percent" 4 { b8 b8  }
-  }
-	 \paper { raggedright = ##t }
-}
diff --git a/input/regression/repeat-unfold-all.ly b/input/regression/repeat-unfold-all.ly
deleted file mode 100644
index 66387bab44..0000000000
--- a/input/regression/repeat-unfold-all.ly
+++ /dev/null
@@ -1,18 +0,0 @@
-\version "2.1.7"
-
-\header {
-    texidoc = "Repeats may be unfolded through the Scheme function @code{unfold-repeats}."
-}
-
-nots = \notes\relative c'   {
-    c4 \repeat volta 2 c4 \alternative { d e  }
-    \repeat tremolo 4 { c16 d }
-}
-
-\score { \notes \context Voice {
-\nots
-\apply #unfold-repeats \nots
-}
-\paper {raggedright = ##t} 
-     }
-
diff --git a/input/regression/repeat-unfold.ly b/input/regression/repeat-unfold.ly
deleted file mode 100644
index 15063a98db..0000000000
--- a/input/regression/repeat-unfold.ly
+++ /dev/null
@@ -1,28 +0,0 @@
-\version "2.1.7"
-
-\header{
-texidoc="
-LilyPond has three modes for repeats: folded, unfolded and
-semi-unfolded.  Unfolded repeats are fully written out. Semi unfolded
-repeats have the body written and all alternatives sequentially.
-Folded repeats have the body written and all alternatives
-simultaneo.ly.  If the number of alternatives is larger than the
-repeat count, the excess alternatives are ignored.  If the number of
-alternatives is smaller, the first alternative is multiplied to get to
-the number of repeats.
-
-Unfolded behavior:
-"
-}
-
-\score {
-
-  \context Voice \notes\relative c'' {
-\repeat unfold 3 { c^"3x 0a" d }
-% less alts than body
-\repeat unfold 4 { c^"4x 0a" d } \alternative { e f }
-% more alts than body
-\repeat unfold 2 { c^"2x 3a" d } \alternative { e f g } 
-}}
-
-
diff --git a/input/regression/repeat-volta-skip-alternatives.ly b/input/regression/repeat-volta-skip-alternatives.ly
deleted file mode 100644
index 54b7310e7b..0000000000
--- a/input/regression/repeat-volta-skip-alternatives.ly
+++ /dev/null
@@ -1,13 +0,0 @@
-\version "2.1.7"
-\header {
-
-    texidoc = "When too few alternatives are present, the first
-alternative is repeated, by printing a range for the 1st repeat."
-
-}
-
-
-\score {  \notes \relative c'' \context Voice {
-  \repeat volta 3 c1
-    \alternative { d f } e4 } } 
-
diff --git a/input/regression/repeat-volta.ly b/input/regression/repeat-volta.ly
deleted file mode 100644
index 1febb9d395..0000000000
--- a/input/regression/repeat-volta.ly
+++ /dev/null
@@ -1,24 +0,0 @@
-\version "2.1.7"
-
-\header{
-texidoc="
-Volta (Semi folded) behavior.  Voltas can start on non-barline moments.
-If they don't barlines should still be shown.
-"
-}
-
-%  no alts.
-\score {
-  \notes \context Voice \relative c'' {
-    % repeat non aligning with barlines.
-    \repeat volta 3 { c^"3$\\times$ 0alt" d e }
-    % less alts than body
-    \repeat volta 4 { c^"4$\\times$ 2alt" d } \alternative { e f }
-    % more alts than body
-    \repeat volta 2 { c^"2$\\times$ 3alt" d } \alternative { e f g }
-  }
-  \paper {}
-  \midi {}
-}
-
-
diff --git a/input/regression/rest-collision-beam.ly b/input/regression/rest-collision-beam.ly
deleted file mode 100644
index 4359bb0697..0000000000
--- a/input/regression/rest-collision-beam.ly
+++ /dev/null
@@ -1,25 +0,0 @@
-
-\header {
-    
-    texidoc = "Rests under beams are only moved if necessary."
-
-}
-
-\version "2.1.14"
-
-\score {
-    \new Staff
-    \notes {
-	\stemUp
-	\transpose c c' {
-	    c''8[ r8 c''8 c''8]
-	    c8[ r8 c8 c8]
-	    c8[ r8 r8 c'''8]	
-	    \stemDown
-	    c8[ r8 c8 c8]
-	    c''8[ r8 c''8 c''8]
-	    c'8[ r8 r8 c'''8]
-	}
-    }
-    \paper { raggedright = ##t }
-}
diff --git a/input/regression/rest-collision-default.ly b/input/regression/rest-collision-default.ly
deleted file mode 100644
index a2bde79c54..0000000000
--- a/input/regression/rest-collision-default.ly
+++ /dev/null
@@ -1,19 +0,0 @@
-\version "2.1.7"
-
-\header
-{
-texidoc = "Rests in collisions sit opposite of the note if no direction is
-  specified for the voice containing the rest."
-}
-
-
-    \paper { raggedright= ##t }
-
-\score{\notes\relative c''
-       \context Staff <<
-\time 2/4
-\new Voice {
-    r4 }
-\new Voice {\voiceTwo
-b8  }>>}
-
diff --git a/input/regression/rest-collision.ly b/input/regression/rest-collision.ly
deleted file mode 100644
index eeace72687..0000000000
--- a/input/regression/rest-collision.ly
+++ /dev/null
@@ -1,55 +0,0 @@
-
-\version "2.1.7"
-\header{
-texidoc="
-Rests should not collide with beams, stems and noteheads.  Rests may
-be under beams.  Rests should be move by integral number of spaces
-inside the staff, and by half spaces outside.  Notice that the half
-and whole rests just outside the staff get ledger lines in different
-cases.
-"
-}
-
-scale =  \notes \relative c' {
-  c8 d e f g a b c c d e f g a b c
-
-}
-rests =  \notes             {
-  r r r  r r r r r r r r r r r r r
-} 
-different = <<  {
-      \notes \relative c'' {
-        r8 a e4 a e
-      }
-    }\\ {
-      
-      \notes \relative c'' {
-        r1
-      }} >>
-
-scales =  \context Staff \notes <<
-	 {  r1 r2 r2   \scale    c''1 c'2 a'2 \rests  }
-	 \\
-	 { a'1 a'2 d'2 \rests r1 r2 r2  \scale }
->>
-
-restsII =  \context Staff \notes {
-	r4 r8
-	\context Staff << {  r8 } \\{  r8} >>
-	\context Staff << { r8} r8 \\{  r8} >>
-	\context Staff << { r8} r8 r8 \\ {  r8} >>
-	\context Staff << { r} \\ {  r} >>
-	\context Staff << { r} r\\ { \stemDown r} >>
-	\different	
-	}
-
-\score{
-	\notes { 
-		\scales 
-		\restsII 
-	}
-	\paper { raggedright = ##t }
-}	
-
-
-
diff --git a/input/regression/rest-ledger.ly b/input/regression/rest-ledger.ly
deleted file mode 100644
index 3a74722372..0000000000
--- a/input/regression/rest-ledger.ly
+++ /dev/null
@@ -1,32 +0,0 @@
-\version "2.1.7"
-\header {
-texidoc = "Whole and half rests moving outside the staff should get
-ledger lines."
-}
-
-
-\score {
-\notes  {
-   \property Voice.Rest \set #'staff-position  = #4
-  r1 \property Voice.Rest \set #'staff-position  = #5
-  r1 \property Voice.Rest \set #'staff-position  = #6
-  
-  r1 \property Voice.Rest \set #'staff-position  = #-6
-  r1 \property Voice.Rest \set #'staff-position  = #-7
-  r1 \property Voice.Rest \set #'staff-position  = #-8
-  r1
-
-   \property Voice.Rest \set #'staff-position  = #6
-  r2 \property Voice.Rest \set #'staff-position  = #7
-  r2 \property Voice.Rest \set #'staff-position  = #8
-  
-  r2 \property Voice.Rest \set #'staff-position  = #-4
-  r2 \property Voice.Rest \set #'staff-position  = #-5
-  r2 \property Voice.Rest \set #'staff-position  = #-6
-  r2
-
-  
-
-  
-}}
-
diff --git a/input/regression/rest-pitch.ly b/input/regression/rest-pitch.ly
deleted file mode 100644
index 3269b8996f..0000000000
--- a/input/regression/rest-pitch.ly
+++ /dev/null
@@ -1,23 +0,0 @@
-\version "2.1.7"
-\header {
-
-texidoc = "Rests can have pitches--these will be affected by
-transposition and relativization. If a rest has a pitch, rest/rest and
-beam/rest collision resolving will leave it alone."
-
-}
-
-    \paper { raggedright= ##t }
-
-\score { \notes\relative c'' 
-	 {
-	     a4\rest b4\rest c4\rest
-
-	     <<d \\  d\rest^"rest pitch" >>
-	     <<d \\  r>>
-	     c16 [ d r e] 
-	     c16 [ d e\rest^"rest pitch" e] 
-	     
-	 }
-     }
-
diff --git a/input/regression/rest-polyphonic.ly b/input/regression/rest-polyphonic.ly
deleted file mode 100644
index f6a4d213c9..0000000000
--- a/input/regression/rest-polyphonic.ly
+++ /dev/null
@@ -1,18 +0,0 @@
-\header {
-
-    texidoc = "In polyphonic situations, rests are moved down
-even if there is no opposite note or rest. The amount is two
-staff-spaces. "
-
-    }
-
-
-\version "2.1.15"
-
-\score {
-  \new Staff \notes \relative c' {
-     << { r8 g''4 g8 r g4 g8 } \\
-            { d,4    r   d   r   } >>
-  }
-
-}
diff --git a/input/regression/rest.ly b/input/regression/rest.ly
deleted file mode 100644
index cddc4ab58c..0000000000
--- a/input/regression/rest.ly
+++ /dev/null
@@ -1,19 +0,0 @@
-\version "2.1.7"
-
-\header{
-texidoc="
-Rests.  Note that the dot of 8th, 16th and 32nd rests rest should be
-next to the top of the rest.  All rests except the whole rest are
-centered on the middle staff line.
-"
-}
-
-
-	\score { \notes {
-	\time 4/4
-r \longa * 1/4  r\breve * 1/2 
-r1 r2 r4 r8 r16 r32 r64 r128 r128
-\time 6/4
-r1. r2. r4. r8. r16. r32. r64. r128. r128.
-}}
-
diff --git a/input/regression/rhythmic-staff.ly b/input/regression/rhythmic-staff.ly
deleted file mode 100644
index b3cff734c6..0000000000
--- a/input/regression/rhythmic-staff.ly
+++ /dev/null
@@ -1,13 +0,0 @@
-\version "2.1.7"
-\header
-{
-
-    texidoc = "In rhythmic staffs, stems should go up, and bar lines have the size for a  5 line staff. The whole note hangs from the rhythmic staff."
-}
-
-\score { \notes \context RhythmicStaff
-  {
-	     r4 c4. c8 r8 c8 | c2 r2 | r1
-  }
-}
-
diff --git a/input/regression/script-collision.ly b/input/regression/script-collision.ly
deleted file mode 100644
index b2e3a6962b..0000000000
--- a/input/regression/script-collision.ly
+++ /dev/null
@@ -1,18 +0,0 @@
-\version "2.1.7"
-
-\header {
-
-    texidoc = "Scripts are put on the utmost head, so they are
-      positioned correctly when there are collisions."
-}
-
-\score  {
-\notes \relative c'' {
-  c4
-  <c d c'>\marcato
-  <<  { c4^^ }\\
-     { d4_^ } >>
-    }
-\paper { raggedright = ##t}
-    }
-
diff --git a/input/regression/script-stack-order.ly b/input/regression/script-stack-order.ly
deleted file mode 100644
index 7caf5e5989..0000000000
--- a/input/regression/script-stack-order.ly
+++ /dev/null
@@ -1,13 +0,0 @@
-
-\version "2.1.7"
-\header {
-    texidoc = "Scripts can be stacked. The order is determined by a
-priority field, but when objects have the same priority, the input
-order determines the order. Objects specified first are closest to the note.
-"
-}
-
-\score{ \notes\relative c'' { c4^"inner up"^"outer up"_"inner down"_"outer down" }
-	\paper { raggedright = ##t}
-    } 
-
diff --git a/input/regression/script-stacked.ly b/input/regression/script-stacked.ly
deleted file mode 100644
index 58599225b2..0000000000
--- a/input/regression/script-stacked.ly
+++ /dev/null
@@ -1,10 +0,0 @@
-\version "2.1.7"
-
-\paper { raggedright= ##t }
-
-\header { 
-texidoc = "Scripts may be stacked."
-}
-
-\score { \notes { c'''->-. } }
-
diff --git a/input/regression/size11.ly b/input/regression/size11.ly
deleted file mode 100644
index b99037b005..0000000000
--- a/input/regression/size11.ly
+++ /dev/null
@@ -1,18 +0,0 @@
-\version "2.1.13"
-
-\header{
-texidoc="
-Fonts are  available in a default set of sizes: 11, 13, 16, 20, 23 and
-26pt staffheight.  Sizes of the text fonts and symbol fonts are made
-to match the staff dimensions.    
-"
-foollilypondbook = "
-\score
-"
-
-}
-
-
-
-#(set-global-staff-size 11)
-\include "allfontstyle.lyinc"
diff --git a/input/regression/size13.ly b/input/regression/size13.ly
deleted file mode 100644
index 2ecef9c4a2..0000000000
--- a/input/regression/size13.ly
+++ /dev/null
@@ -1,11 +0,0 @@
-\version "2.1.13"
-foollilypondbook = "
-\score
-"
-
-\header {
-    texidoc ="Staff height 13 pt."
-    }
-
-#(set-global-staff-size 13)
-\include "allfontstyle.lyinc"
diff --git a/input/regression/size16.ly b/input/regression/size16.ly
deleted file mode 100644
index 35b8945a2e..0000000000
--- a/input/regression/size16.ly
+++ /dev/null
@@ -1,13 +0,0 @@
-\version "2.1.13"
-foollilypondbook = "
-\score
-"
-
-\header {
-    texidoc ="Staff height 16 pt."
-    }
-
-
-
-#(set-global-staff-size 16)
-\include "allfontstyle.lyinc"
diff --git a/input/regression/size20.ly b/input/regression/size20.ly
deleted file mode 100644
index 8030e36c21..0000000000
--- a/input/regression/size20.ly
+++ /dev/null
@@ -1,13 +0,0 @@
-\version "2.1.13"
-foollilypondbook = "
-\score
-"
-
-\header {
-    texidoc ="Staff height 20 pt."
-    }
-
-
-
-#(set-global-staff-size 20)
-\include "allfontstyle.lyinc"
diff --git a/input/regression/size23.ly b/input/regression/size23.ly
deleted file mode 100644
index 0544666362..0000000000
--- a/input/regression/size23.ly
+++ /dev/null
@@ -1,12 +0,0 @@
-\version "2.1.13"
-foollilypondbook = "
-\score
-"
-
-\header {
-    texidoc ="Staff height 23 pt."
-    }
-
-
-#(set-global-staff-size 23)
-\include "allfontstyle.lyinc"
diff --git a/input/regression/size26.ly b/input/regression/size26.ly
deleted file mode 100644
index 888d9e6023..0000000000
--- a/input/regression/size26.ly
+++ /dev/null
@@ -1,13 +0,0 @@
-\version "2.1.13"
-foollilypondbook = "
-\score
-"
-
-\header {
-    texidoc ="Staff height 26 pt."
-    }
-
-
-
-#(set-global-staff-size 26)
-\include "allfontstyle.lyinc"
diff --git a/input/regression/slur-area.ly b/input/regression/slur-area.ly
deleted file mode 100644
index 56e56da060..0000000000
--- a/input/regression/slur-area.ly
+++ /dev/null
@@ -1,35 +0,0 @@
-
-\version "2.1.7"
-\header {
-    
-    texidoc = "The area underneath an (up) slur is minimised to improve the shape. "
-
-}
-
-\score{
-\notes\relative c''{
-
-\slurUp
-\stemDown
-a(a' a, a)
-a(a a' a,)
-a(d a a)
-a(a d a)
-
-e'8(e e e e e e e)
-a,8(d a a a a a a)
-a(a a a a a d a)
-
-c,(g' c e f d b g) 
-c,(g' c e f d b g) 
-
-\property Voice.autoBeaming = ##f
-\stemUp
-a8(a a a a a a a)
-
-}
-\paper{
-indent=0.0\mm
-}
-}
-
diff --git a/input/regression/slur-attachment.ly b/input/regression/slur-attachment.ly
deleted file mode 100644
index c209fe95ce..0000000000
--- a/input/regression/slur-attachment.ly
+++ /dev/null
@@ -1,23 +0,0 @@
-
-\version "2.1.7"
-
-\header{
-texidoc="
-Slurs should be attached to note heads, except when they would collide
-with beams.  
-"
-}
-\score{
-	\notes \relative c''{
-	        \property Voice.Slur \set #'direction = #1
-	        a8( a a4)
-		a4( a8 a)
-	        a8 a(a4)
-		a4( a8) a
-	}
-	\paper{ 
-		indent = 0.0
-		linewidth = 100.\mm
-	}
-}
-
diff --git a/input/regression/slur-broken-trend.ly b/input/regression/slur-broken-trend.ly
deleted file mode 100644
index a1fbbecdaf..0000000000
--- a/input/regression/slur-broken-trend.ly
+++ /dev/null
@@ -1,25 +0,0 @@
-
-\version "2.1.7"
-
-\header{
-texidoc="
-Across line breaks, slurs behave nicely.  On the left, they extend to
-just after the preferatory matter, and on the right to the end of the
-staff.  A slur should follow the same vertical direction it would have
-in unbroken state.
-"
-}
-\score{
-	\notes \relative c''{
-		e1( \break a,)
-		\time 2/4
-		e'2( \break a,)(\break
-		a2\break
-		 e'2)
-	}
-	\paper {
-		linewidth=40.\mm
-		indent=0.
-	}
-}
-
diff --git a/input/regression/slur-cross-staff.ly b/input/regression/slur-cross-staff.ly
deleted file mode 100644
index 2f287d94c3..0000000000
--- a/input/regression/slur-cross-staff.ly
+++ /dev/null
@@ -1,51 +0,0 @@
-
-\version "2.1.7"
-\header{
-texidoc="
-The same goes for slurs. They behave decently when broken across
-linebreak.
-"
-}
-
-	
-\score{
-	\context PianoStaff <<
-	\context Staff=one \notes\relative c'{
-		\stemUp \slurUp
-		 c4( c \change Staff=two c  c) |
-		\change Staff=one
-		\stemUp \slurUp
-		 c4( c \change Staff=two c  c) |
-		\stemUp \slurUp
-		 c4( c \change Staff=one c  c) |
-		\change Staff=two
-		\stemUp \slurUp
-		 c4( c \change Staff=one c  c) |
-		\change Staff=two
-		\stemUp \slurUp
-		 c4( \change Staff=one c c  c) |
-		r2
-		\change Staff=two
-		\stemUp \slurUp
-		 c4( \change Staff=one c
-		   \break
-		c  c)
-		r2
-%		\stemDown \slurDown
-%		 c4( \change Staff=two c c \change Staff=one  c)
-		\stemDown \slurDown
-		 d4( \change Staff=two c c \change Staff=one  d)
-		\change Staff=two
-		\stemUp \slurUp
-		 c4( \change Staff=one c c \change Staff=two  c)
-		r1
-	}
-	\context Staff=two \notes\relative c'{
-		\clef bass
-		s1 s1 s1 s1 s1 s1 s1 s1 s1 s1
-	}
-	>>
-}
-
-
-
diff --git a/input/regression/slur-dots.ly b/input/regression/slur-dots.ly
deleted file mode 100644
index 5ee7e3cd48..0000000000
--- a/input/regression/slur-dots.ly
+++ /dev/null
@@ -1,16 +0,0 @@
-
-\version "2.1.7"
-\header{
-texidoc="Slurs should not get confused by augmentation dots.  We use a lot
-of dots here, to make problems more visible."
-}
-\score {
-  \notes\relative c'' {
-    c4.............( c)
-  }
-  \paper {
-    raggedright = ##t
-  }
-}
-
-
diff --git a/input/regression/slur-nice.ly b/input/regression/slur-nice.ly
deleted file mode 100644
index 05a688659c..0000000000
--- a/input/regression/slur-nice.ly
+++ /dev/null
@@ -1,26 +0,0 @@
-
-\version "2.1.7"
-\header{
-texidoc="
-Slurs should look nice and symmetric.  The curvature may increase
-only to avoid noteheads, and as little as possible.  Slurs never
-run through noteheads or stems.
-"
-}
-
-\score{
-	\notes\relative c''{
-		\time 3/4
-		\slurUp
-		\stemBoth a ( \stemDown a \stemBoth  a) a( c  a) a( e'  a,) a( g'  a,)
-		\stemUp a( e'  a,)
-		\break
-		\slurDown
-		\stemBoth c ( \stemUp c \stemBoth  c) c ( a  c) c( d,  c') c( f,  c')
-		\stemDown c( f,  c')
-	}
-	\paper{
-		linewidth = 120.\mm
-	}
-}
-
diff --git a/input/regression/slur-rest.ly b/input/regression/slur-rest.ly
deleted file mode 100644
index 787a6a5a58..0000000000
--- a/input/regression/slur-rest.ly
+++ /dev/null
@@ -1,20 +0,0 @@
-
-\version "2.1.7"
-\header
-{
-    texidoc ="Slurs may be placed over rest. The slur will avoid colliding with
-the rest.
-
-"
-}
-\score{ \notes  { \stemDown c'4 ( r4  c'2)
-
-		  \relative c'' { 
-	% Finish with F if played separately 
-	c8-.(   r c,-. r  c4) r4|  }
-		  
-
-	      }
-\paper { raggedright = ##t}
-    }
-
diff --git a/input/regression/slur-staccato.ly b/input/regression/slur-staccato.ly
deleted file mode 100644
index 3cca5e2e7c..0000000000
--- a/input/regression/slur-staccato.ly
+++ /dev/null
@@ -1,18 +0,0 @@
-
-\version "2.1.7"
-\header {
-texidoc="Manual hack for slur and staccato."
-}
-
-\paper { raggedright = ##t}
-
-\score {
-  \context Staff \notes\relative c'' {
-    \property Voice.Slur \override
-      #'attachment-offset = #'((0 . 1) . (0 . 1))
-    a-.( g-.  a)-.
-    \property Voice.Slur \override
-      #'attachment-offset = #'((0 . 1.5) . (0 . 1.5))
-    b-.( a-.  b)-.
-  }
-}	
diff --git a/input/regression/slur-stem-broken.ly b/input/regression/slur-stem-broken.ly
deleted file mode 100644
index 028054cf65..0000000000
--- a/input/regression/slur-stem-broken.ly
+++ /dev/null
@@ -1,17 +0,0 @@
-
-\version "2.1.7"
-\header {
-texidoc="Trend of broken slur with user-overridden stem attachment should also
-follow the same vertical direction it would have had in unbroken state."
-}
-\score {
-  \notes\relative c' {
-    \property Voice.Slur \override #'attachment = #'(stem . stem)
-    f( c' c c \break
-    c c c \stemUp  c)
-  }
-  \paper {
-    linewidth=40*\staffspace
-  }
-}
-
diff --git a/input/regression/slur-symmetry-1.ly b/input/regression/slur-symmetry-1.ly
deleted file mode 100644
index fbda3c1187..0000000000
--- a/input/regression/slur-symmetry-1.ly
+++ /dev/null
@@ -1,21 +0,0 @@
-\version "2.1.7"
-\header
-{
-  texidoc = "Symmetric figures should lead to symmetric slurs."
-}
-
-\score{
-	\notes\relative c''<<
-		\time 4/4
-		\context Staff{
-			f8(f f f) f(g g f) f(a a f) f(b b f)
-		}
-		\new Staff{
-			e,(e e e) e(d d e) e(c c e) e(b b e)
-		}
-	>>
-	\paper{
-		raggedright = ##t
-	}
-}
-
diff --git a/input/regression/slur-symmetry.ly b/input/regression/slur-symmetry.ly
deleted file mode 100644
index 7aa3659082..0000000000
--- a/input/regression/slur-symmetry.ly
+++ /dev/null
@@ -1,22 +0,0 @@
-\version "2.1.7"
-\header
-{
-    texidoc = "Symmetric figures should lead to symmetric slurs."
-
-}
-
-\score{
-	\notes\relative c'<<
-		\time 6/8
-		\context Staff{
-			e8(e e) e(d e) e(c e) e(b e)
-		}
-		\new Staff{
-			f'8(f f) f(g f) f(a f) f(b f)
-		}
-	>>
-	\paper{
-		raggedright = ##t
-	}
-}
-
diff --git a/input/regression/spacing-accidental-staffs.ly b/input/regression/spacing-accidental-staffs.ly
deleted file mode 100644
index 768909b8de..0000000000
--- a/input/regression/spacing-accidental-staffs.ly
+++ /dev/null
@@ -1,21 +0,0 @@
-\version "2.1.7"
-
-\header { 
-texidoc = "Accidentals in different staffs don't effect the
-spacing of the quarter notes here."
-}
-
-\score { \notes \relative c'' << \new Staff { \time 4/4
-
- c8[ c8 cis8 cis8]
- cis8[ cis8 cis8 cis]
-
-
- }
-   { \key d \major cis4 cis4 cis4 cis!4  } >>
-
-   \paper { raggedright = ##t} 
- }
-
-
-
diff --git a/input/regression/spacing-accidental-stretch.ly b/input/regression/spacing-accidental-stretch.ly
deleted file mode 100644
index 36101c1e6d..0000000000
--- a/input/regression/spacing-accidental-stretch.ly
+++ /dev/null
@@ -1,18 +0,0 @@
-
-\version "2.1.7"
-
-\header {
-    texidoc = "Accidentals don't influence the amount of stretchable space. "
-}
-
-\score {
-     \notes \relative c'' \context GrandStaff {
-	\pianoCautionaries
-	d16 d d d d d cis d 
-	
-     }
-
-     %% not raggedright!!
-     \paper {  linewidth = 14.\cm
-     }
-}
diff --git a/input/regression/spacing-accidental.ly b/input/regression/spacing-accidental.ly
deleted file mode 100644
index 4dfd920457..0000000000
--- a/input/regression/spacing-accidental.ly
+++ /dev/null
@@ -1,18 +0,0 @@
-
-\version "2.1.7"
-
-\header {
-texidoc = "Accidentals sticking out to the left
-of a note will take a little more space, but only if the spacing is tight." 
-}
-
-\score { \notes \relative c'' {
-    \time 8/4
-    c2 c2 cis2 cis2 |
-    c8 c8 cis8 cis8 cis c c c]
-}
-\paper { raggedright = ##t}
-
-}
-
-
diff --git a/input/regression/spacing-bar-stem.ly b/input/regression/spacing-bar-stem.ly
deleted file mode 100644
index ac2652155b..0000000000
--- a/input/regression/spacing-bar-stem.ly
+++ /dev/null
@@ -1,26 +0,0 @@
-
-\version "2.1.7"
-\header {
-texidoc = "Downstem notes following a barline are
-printed with some extra space. This is an optical correction similar
-to juxtaposed stems.
-
-Accidentals after the barline get some space as well.
-"
-}
-
-sd = \property Voice.Stem \set #'direction = #-1
-su = \property Voice.Stem \set #'direction = #1
-\score { \notes\relative c''
-{
-
-%\property Staff.StaffSpacing \override #'stem-spacing-correction = #10
-%\property Staff.NoteSpacing \override #'stem-spacing-correction = #10
-
-\time 1/4 \sd c4 \su c4
-\sd c4 \su c4
-\sd f c,4  c'4 cis4 \stemUp c4
-}
-\paper { raggedright = ##t}
-}
-
diff --git a/input/regression/spacing-clef-first-note.ly b/input/regression/spacing-clef-first-note.ly
deleted file mode 100644
index 7f0f8f31f7..0000000000
--- a/input/regression/spacing-clef-first-note.ly
+++ /dev/null
@@ -1,25 +0,0 @@
-\version "2.1.7"
-\header {
-
-    texidoc = "Clef changes at the start of a line get much more space
-than clef changes halfway the line."
-
-}
-
-\score  {\notes  {
-    << \new Staff {
-	c'2
-	\clef bass e16 f a
-	\clef treble b
-	}
-      \new Staff  {
-	  c'4 c'4 c'4 
-      }>>
-    }
-    \paper { raggedright = ##t
-\translator { \StaffContext
-	      TimeSignature = \turnOff
-	 }
-
-     }}
-
diff --git a/input/regression/spacing-end-of-line.ly b/input/regression/spacing-end-of-line.ly
deleted file mode 100644
index 56d42053e8..0000000000
--- a/input/regression/spacing-end-of-line.ly
+++ /dev/null
@@ -1,19 +0,0 @@
-
-\version "2.1.7"
-\header {
-    
-    texidoc ="Broken matter at the end of line does not upset the
-    space following rests and notes."  }
-
-\score
-{
-\notes \relative c' {
-    c2.. r8
-    c2.. r8
-    \time 3/4 \break
-    e2 e4 | e2 e4 \time 4/4 \break
-}
-\paper {
-    raggedright = ##t }  
-}
-
diff --git a/input/regression/spacing-ended-voice.ly b/input/regression/spacing-ended-voice.ly
deleted file mode 100644
index 1ae5f5ba8f..0000000000
--- a/input/regression/spacing-ended-voice.ly
+++ /dev/null
@@ -1,22 +0,0 @@
-#(ly:set-option 'old-relative)
-\version "2.1.7"
-\header { texidoc = "
-A voicelet (a very short voice to get polyphonic chords correct)
-should not confuse the spacing engine."
-}
-
-
-	\score {
-\notes {  \context Staff \relative c' {
-  c4
-  <<
-      { r4 dis'4 } \\
-      { r4 fis,4 } \\
-      { r bis } \\
-      { s gis }
-  >>
-  c4
-}}
-  \paper { raggedright = ##t }
-}
-
diff --git a/input/regression/spacing-folded-clef.ly b/input/regression/spacing-folded-clef.ly
deleted file mode 100644
index 3eb01b5c16..0000000000
--- a/input/regression/spacing-folded-clef.ly
+++ /dev/null
@@ -1,14 +0,0 @@
-\version "2.1.7"
-\header {
-texidoc = "A clef can be folded below notes in a different staff, if
-this doesn't disrupt the flow of the notes."
-}
-
-\score { \notes \relative c'' <<
-\new Staff  { c4  c16[ c c  c] c4 c4 }
-	\new Staff { \clef bass c,2 \clef treble  c'2 }
-	>>
-
-	\paper { raggedright = ##t}
-	}
-
diff --git a/input/regression/spacing-folded-clef2.ly b/input/regression/spacing-folded-clef2.ly
deleted file mode 100644
index 13cdd618c6..0000000000
--- a/input/regression/spacing-folded-clef2.ly
+++ /dev/null
@@ -1,25 +0,0 @@
-\version "2.1.21"
-\header {
-
-texidoc = "A clef can be folded below notes in a different staff, if
-there is space enough. With @code{Paper_column} molecule callbacks we can
-show where columns are in the score."
-}
-
-\score { \notes \relative c'' <<
-	\new Staff  { c4 c4 c4 \bar "|." }
-	\new Staff { \clef bass c,2 \clef treble  c'2 }
-	>>
-
-	\paper { raggedright = ##t
-
-	\translator { \ScoreContext
-	  NonMusicalPaperColumn \override #'print-function = #Paper_column::print
-	  PaperColumn \override #'print-function = #Paper_column::print	  
-	  NonMusicalPaperColumn \override #'font-family = #'roman
-	  PaperColumn \override #'font-family = #'roman	  
-
-	}
-	}}
-
-
diff --git a/input/regression/spacing-grace-duration.ly b/input/regression/spacing-grace-duration.ly
deleted file mode 100644
index 0b01ee99e2..0000000000
--- a/input/regression/spacing-grace-duration.ly
+++ /dev/null
@@ -1,23 +0,0 @@
-
-\version "2.1.7"
-\header {
-
-    texidoc = "Spacing uses the duration of the notes, but disregards
-    grace notes for this. In this example, the 8ths around the grace
-    are spaced exactly as the other 8th notes.
-
-"
-}
-
-\score { \notes \relative c''
-	 \context Voice 
-{
-     c8[  c8]
-    \grace {  b16 }
-     c8[ c8]  c8[ c8] 
-
-}
-
-	 \paper { raggedright = ##t}
-}
-
diff --git a/input/regression/spacing-grace.ly b/input/regression/spacing-grace.ly
deleted file mode 100644
index 2f64aa2f62..0000000000
--- a/input/regression/spacing-grace.ly
+++ /dev/null
@@ -1,12 +0,0 @@
-
-\version "2.1.7"
-\header {
-  texidoc = "Grace note spacing. Should be tuned? "
-}
-	
-\score {
- \notes \context Voice \relative c'' { \grace {  c16[ d] } c4 }
-  \paper { raggedright = ##t}
-
-}
-
diff --git a/input/regression/spacing-knee.ly b/input/regression/spacing-knee.ly
deleted file mode 100644
index 1dd77fe473..0000000000
--- a/input/regression/spacing-knee.ly
+++ /dev/null
@@ -1,22 +0,0 @@
-\version "2.1.7"
-\header {
-
-    texidoc = "For knees, the spacing correction is such that the
-stems are put at regular distances. This effect takes into account the
-width of the note heads and the thickness of the stem.
-"
-    }
-\score { \notes
-{
- g''8[ g g'' g''] 
-
- % check code independent of default settings.
- \property Voice.NoteSpacing \override #'knee-spacing-correction = #1.0 
- g''8[ g g'' g''] 
- \property Voice.Stem \override #'thickness = #10 
- g''8[ g g'' g''] 
-    }
-\paper { raggedright = ##t}
-     }
-
-
diff --git a/input/regression/spacing-multi-tuplet.ly b/input/regression/spacing-multi-tuplet.ly
deleted file mode 100644
index b268960882..0000000000
--- a/input/regression/spacing-multi-tuplet.ly
+++ /dev/null
@@ -1,34 +0,0 @@
-\version "2.1.7"
-\header{
-texidoc =  "Concurrent tuplets should be spaced equidistantly on
-all staffs.
-
-Note that this only spaces correctly (exactly) when raggedright
-is. For non-raggedright, it still shows a bug: uneven spacing. 
-"  }
-
-
-
-multipart =  \notes \relative c'{ 
-    \context StaffGroup << 
-                \new Staff  \context Voice { 
-                   \times 2/10 {  c8[ c c c c c c c c c] } 
-                   \times 2/10 {  c[  c c c c c c c c c] } 
-		}
-                \new Staff  \context Voice { 
-                   \times 2/11 {  c8[ c c c c c c c c c c] } 
-                   \times 2/11 {  c[  c c c c c c c c c c] } 
-                }
-            >>
-	}
-    
-\score{
-    \notes { 
-	\multipart 
-    }
-
-%    \paper { raggedright = ##t }
-
-}
-
-
diff --git a/input/regression/spacing-note-flags.ly b/input/regression/spacing-note-flags.ly
deleted file mode 100644
index 50f2f9bb39..0000000000
--- a/input/regression/spacing-note-flags.ly
+++ /dev/null
@@ -1,21 +0,0 @@
-
-\header {
-
-texidoc = "The flags of 8th notes take some space, but not
-    too much: the space following a flag is less than the space
-    following a beamed 8th head."
-
-}
-
-\score { \notes \relative c'' \context Staff {
-    \property Voice.autoBeaming = ##f
-    a8[ a8 a8 a8]
-    a8 a8 a8 a8
-}
-\paper {
-raggedright = ##t
-    }
-     }
-
-\version "2.1.7"
-
diff --git a/input/regression/spacing-rest.ly b/input/regression/spacing-rest.ly
deleted file mode 100644
index 84a94c9851..0000000000
--- a/input/regression/spacing-rest.ly
+++ /dev/null
@@ -1,17 +0,0 @@
-
-\version "2.1.7"
-\header {
-    texidoc = "Rests get a little less space, since they are narrower.
-However, the feta quarter rest is relatively wide, causing this effect to be
-very small.
-"
-    }
-\score { \notes \relative c'' \context Staff {
-    \time 12/4
-    r4 c4 c4 c4 r4 r4 c4
-}
-\paper {
-raggedright = ##t
-    }
-     }
-
diff --git a/input/regression/spacing-short-notes.ly b/input/regression/spacing-short-notes.ly
deleted file mode 100644
index ff67aa28d3..0000000000
--- a/input/regression/spacing-short-notes.ly
+++ /dev/null
@@ -1,25 +0,0 @@
-
-\version "2.1.7"
-\header {
-    
-texidoc = "Notes that are shorter than the common shortest note, Get a
-space (i.e. without the space needed for the note) proportional to
-their duration. So 16th notes get 1/2 of the space of an eigth note.
-The total distance for a 16th is (including note head) is 3/4 of the
-eighth note. "
-
-}
-
-\score { \notes \relative c''
-{
-    \time 2/4 
-    c16 c c c c4 c4
-    c8 c8 c8 c8
-    c8 c8 c4
-    c8 c8 c4
-
-}
-
-	 \paper { raggedright = ##t}
-}
-
diff --git a/input/regression/spacing-stem-bar.ly b/input/regression/spacing-stem-bar.ly
deleted file mode 100644
index 47b17b6fbf..0000000000
--- a/input/regression/spacing-stem-bar.ly
+++ /dev/null
@@ -1,29 +0,0 @@
-
-\version "2.1.7"
-\header {
-
-texidoc = "Upstem notes before a barline are printed with some extra
-space. This is an optical correction similar to juxtaposed stems.
-"
-
-}
-
-sd = \property Voice.Stem \set #'direction = #-1
-su = \property Voice.Stem \set #'direction = #1
-\score { \notes\relative e'
-{
-
-%\property Staff.StaffSpacing \override #'stem-spacing-correction = #0.5
-%\property Staff.NoteSpacing \override #'stem-spacing-correction = #0.5
-
-\time 3/8
-\su
-e8 e e
-f f f
-a a a
-c c c
-e e e
-}
-\paper { raggedright = ##t}
-}
-
diff --git a/input/regression/spacing-stem-direction.ly b/input/regression/spacing-stem-direction.ly
deleted file mode 100644
index 12425074dc..0000000000
--- a/input/regression/spacing-stem-direction.ly
+++ /dev/null
@@ -1,25 +0,0 @@
-
-\version "2.1.7"
-
-\header{
-
-texidoc="
-
-LilyPond corrects for optical spacing of stems. The overlap between to
-adjacent stems of different direction is used as a measure for how
-much to correct."
-
-}
-
-\score { 
-  \context Voice \notes\relative c {
-  % make sure neutral is down.
-    \property Voice.Stem \override #'neutral-direction = #-1
-	\time 16/4  c''4 c c,  c' d, c' e, c' f, c' g c a c b c
-	
-  }
-  \paper {
-    raggedright = ##t
-  }  
-}
-
diff --git a/input/regression/spacing-stem-same-direction.ly b/input/regression/spacing-stem-same-direction.ly
deleted file mode 100644
index 868588151c..0000000000
--- a/input/regression/spacing-stem-same-direction.ly
+++ /dev/null
@@ -1,17 +0,0 @@
-
-\version "2.1.7"
-\header {
-	texidoc = "For juxtaposed chords with the same direction, a
-slight optical correction is used. It is constant, and only works if
-two chords have no common head-positions range."
-}
-
-\score { \notes \relative c'' {
-\stemDown
-\time 12/4
-  f8[
-      e f e]  f[ d f d]  f[ c f c]  f[ b, f' b,]  f'[ a, f' a,]
-}
-\paper { raggedright = ##t}
-}
-
diff --git a/input/regression/spacing-to-grace.ly b/input/regression/spacing-to-grace.ly
deleted file mode 100644
index fc1ddc6184..0000000000
--- a/input/regression/spacing-to-grace.ly
+++ /dev/null
@@ -1,22 +0,0 @@
-
-\version "2.1.7"
-\header {
-
-    texidoc ="Space from a normal note/barline to a grace note is
-    smaller than to a normal note."
-    
-}
-
-\score {
-    \context Voice \notes
-    { \time 2/4
-      \relative c'' {
-	  e8 e \grace d8 e e \grace f8 e es, d' d
-	  e8 e e e \grace { \stemDown f8 \stemBoth } e es, d'
-
-		  }  
-
-    }
-    \paper { raggedright = ##t}
-    }
-
diff --git a/input/regression/spacing-very-tight.ly b/input/regression/spacing-very-tight.ly
deleted file mode 100644
index f47499af95..0000000000
--- a/input/regression/spacing-very-tight.ly
+++ /dev/null
@@ -1,23 +0,0 @@
-
-\version "2.1.7"
-\header {
-texidoc = "
- When tightly spaced, hinterfleisch -> 0.
- Stems may touch the bar lines, opposite stems may touch eachother.
- We need a mininum of about a note-width/interline space in these
- situations, so that in tightly spaced music all vertical lines
- are about equally spaced.
-
- "
- 
- }
-\score {
-	\notes \relative c''{ 
-		r1 e4 f, e' f,
-	}
-	\paper { 
-		linewidth = 25.0 \mm
-		indent = 0.0\mm
-	}
-}
-
diff --git a/input/regression/span-bar.ly b/input/regression/span-bar.ly
deleted file mode 100644
index 560a7b2839..0000000000
--- a/input/regression/span-bar.ly
+++ /dev/null
@@ -1,24 +0,0 @@
-\version "2.1.21"
-\header {
-texidoc = "Span bars draw only in between staff bar lines, so setting those to transparent shows bar lines between systems only.
-"
-}
-
-\score {
- \notes \relative c' \new StaffGroup <<
- \new Staff { a1 a1 a1}
-  \new Lyrics \lyrics <<
-   { bla1 die bla }
-   { foo bar foo }
-  >>
-  \new Staff { f1 f1 f1}
- >>
- \paper {
-  \translator {
-   \StaffContext
-   BarLine \override #'transparent = ##t
-  }
-  raggedright =##t 
- }
-}
-
diff --git a/input/regression/staccato-pos.ly b/input/regression/staccato-pos.ly
deleted file mode 100644
index 247de66def..0000000000
--- a/input/regression/staccato-pos.ly
+++ /dev/null
@@ -1,18 +0,0 @@
-
-\version "2.1.7"
-
-\header{
-texidoc="
-The staccato dot (and all scripts with follow-into-staff set), must
-not be on staff lines.
-"
-}
-\score { 
-  \context Voice \notes\relative c' {
-	e'4-. f-. d-. c-. b-. 
-  }
-  \paper {
-    raggedright = ##t
-  }  
-}
-
diff --git a/input/regression/staff-mixed-size.ly b/input/regression/staff-mixed-size.ly
deleted file mode 100644
index 5762f24d0d..0000000000
--- a/input/regression/staff-mixed-size.ly
+++ /dev/null
@@ -1,32 +0,0 @@
-\header {
-    
-texidoc = "Staffs may be present in several sizes within a score.
-This is achieved with an internal scaling factor. When code forgets
-factor, objects generally become too thick or too large.
-"
-
-}
-\version "2.1.13"
-
-\score {
-  <<
-    \new Staff \with {
-      fontSize = #-4
-      StaffSymbol \set #'staff-space = #(magstep -4)
-    }
-    \notes \relative c' {
-\property Voice.DynamicText \set #'extra-offset = #'(0 . 3)
-      s1-\f c''8[(\< r a g]) e[ r d( <f a>])\! \times 2/3 { d4 d d }
-    }
-    \new Staff
-    \notes \relative c' {
-\property Voice.DynamicText \set #'extra-offset = #'(0 . 3)
-      s1-\f c''8[(\< r a g]) e[ r d( <f a>])\! \times 2/3 { d4 d d }
-    }
-  >>
-
-  \paper {
-    #(paper-set-staff-size 6)
-    raggedright = ##t
-  }
-}
diff --git a/input/regression/staff-tweak.ly b/input/regression/staff-tweak.ly
deleted file mode 100644
index fcc21b8f44..0000000000
--- a/input/regression/staff-tweak.ly
+++ /dev/null
@@ -1,30 +0,0 @@
-\version "2.1.7"
-
-\header {
-texidoc = "The staff is a grob, and may be adjusted as well: this one
- shows a staff with 6 thick line, and a slightly large staffspace.
-Beams remain correctly quantized."    
-
-}
-
-
-mus = \notes \relative c' { c4 g' d'8 d d d }
-
-\score {
-  \notes <<
-    \new Staff {
-	\property
-	Staff.	StaffSymbol \set #'thickness = #2.0
-	\property
-	Staff.StaffSymbol \set #'line-count = #6
-	\property
-	Staff.StaffSymbol \set #'staff-space = #1.1
-	\mus
-    }
-    \mus
-  >>
-  \paper  {
-    raggedright = ##t
-  }
-}
-
diff --git a/input/regression/stanza-number.ly b/input/regression/stanza-number.ly
deleted file mode 100644
index dc92b0ab06..0000000000
--- a/input/regression/stanza-number.ly
+++ /dev/null
@@ -1,21 +0,0 @@
-\version "2.1.21"
-
-\header {
-texidoc = "Stanza numbers are put left of their lyric."
-}
-
-\score {
-<<
-    \notes { r4 r4 c4  c4 }
-    \context Lyrics
-    \lyrics {
-	\skip 2
-	\property Lyrics . stanza = "1."
-	Foo8 Bar8
-    }
->>
-
-\paper { raggedright = ##t } 
-} 
-
-
diff --git a/input/regression/stem-direction.ly b/input/regression/stem-direction.ly
deleted file mode 100644
index 73ae30999f..0000000000
--- a/input/regression/stem-direction.ly
+++ /dev/null
@@ -1,27 +0,0 @@
-
-\version "2.1.7"
-
-\header{
-texidoc="
-Beams, stems and noteheads often have communication troubles, since
-the two systems for y dimensions (1 unit = staffspace, 1 unit = 1
-point) are mixed.
-
-Stems, beams, ties and slurs should behave similarly, when placed
-on the middle staff line. Of course stem-direction is down for high
-notes, and up for low notes.
-"
-}
-
-
-\score { 
-  \context Voice \notes\relative c {
-    b''4 ~ b8(b8) e4 e,
-	
-  }
-  \paper {
-    raggedright = ##t
-  }  
-  \midi { }
-}
-
diff --git a/input/regression/stem-shorten.ly b/input/regression/stem-shorten.ly
deleted file mode 100644
index 40d6160280..0000000000
--- a/input/regression/stem-shorten.ly
+++ /dev/null
@@ -1,17 +0,0 @@
-
-\version "2.1.7"
-
-\header {
-    
-    texidoc = "Stems in forced directions (as well as the ones
-    starting from the middle line) are shortened."
-
-}
-
-\score {
-    \notes \relative c'' { \stemDown d c b a g f e
-			   \stemBoth
-			   \stemUp a b c d e f g a 
-		       } 
-    \paper  {raggedright = ##t }
-}
diff --git a/input/regression/stem-spacing.ly b/input/regression/stem-spacing.ly
deleted file mode 100644
index 9b1ae59904..0000000000
--- a/input/regression/stem-spacing.ly
+++ /dev/null
@@ -1,35 +0,0 @@
-
-\version "2.1.7"
-
-\header{
-texidoc="
-In a limited number of cases, LilyPond corrects for optical spacing
-effects.  In this example, space for opposite pointed stems is adjusted.
-"
-
-}
-
-\score { 
-  \context Voice \notes\relative c {
-    
-	\time 12/4  c''4 c c c  a f' f, a 
-	
-  }
-  \paper {
-    raggedright = ##t
-  }  
-}
-
-\score { 
-  \context Voice \notes\relative c {
-    
-	\time 12/4  c''4 c c c  a f' f, a 
-	
-  }
-  \paper {
-    raggedright = ##t
-    \translator { \ScoreContext
-    SpacingSpanner \override #'stem-spacing-correction = #0.0
-  }  }
-}
- 
diff --git a/input/regression/stem-tremolo.ly b/input/regression/stem-tremolo.ly
deleted file mode 100644
index 286bbabd92..0000000000
--- a/input/regression/stem-tremolo.ly
+++ /dev/null
@@ -1,32 +0,0 @@
-
-\version "2.1.7"
-\header{
-texidoc="
-Stem tremolos or rolls are tremolo signs that look like beam segments
-crossing stems.  If the stem is in a beam, the tremolo must be parallel
-to the beam.  If the stem is invisible (e.g. on a whole note), the
-tremolo must be centered on the note.
-"
-}
-
-
-\score{
-	\context Voice\notes \relative c''{
-		\property Voice.TextScript \set #'direction = #1
-		\property Voice.TextScript \set #'padding = #5
-		a1:4^":4" a:8^":8" c:16^":16" a:32^":32" a^"x" a:^":"
-		a4:4 c:8 a:16 c:32 a a: a2:
-		\break
-		\stemUp
-		a4:32 a'4:64 
-		\stemDown
-		c,4:32 c,4:64
-		\stemBoth
-		c'8:16 c c c
-		a': a a: a
-		c,16:32 c: c c a16:32 a: a a
-		c8:16 g: d: a:
-		c8:32 f: b: e:
-	}
-}
-
diff --git a/input/regression/system-extents.ly b/input/regression/system-extents.ly
deleted file mode 100644
index dc72137612..0000000000
--- a/input/regression/system-extents.ly
+++ /dev/null
@@ -1,23 +0,0 @@
-\version "2.1.21"
-\header {
-
-    texidoc = "LilyPond correctly determines the size of every
-    system. This includes postscript constructs such as slurs."
-
-    }
-	  
-\score { \notes
-\context Voice
-{ \property Staff.minimumVerticalExtent \unset
-    \slurDown c4 ( g4  c''4)
-
-}
-
-    \paper { 
-	 \translator {
-	     \ScoreContext
-	     System \override #'print-function = #box-grob-molecule
-	     }
-    }
-}
-
diff --git a/input/regression/system-start-bracket.ly b/input/regression/system-start-bracket.ly
deleted file mode 100644
index 2bdc183f24..0000000000
--- a/input/regression/system-start-bracket.ly
+++ /dev/null
@@ -1,21 +0,0 @@
-\version "2.1.7"
-\header {
-    texidoc =
-"
-The piano brace should be shifted horizontally if it  is enclosed in a bracket.
-"
-}
-
-
-\score { \notes  {
-    \context StaffGroup <<
-	c4
-	\context PianoStaff <<
-	    \new Staff d
-	    \new Staff e
-	   >>
-    >>
-    }
-    \paper {raggedright = ##t}
-}
-
diff --git a/input/regression/tablature.ly b/input/regression/tablature.ly
deleted file mode 100644
index f11eec0062..0000000000
--- a/input/regression/tablature.ly
+++ /dev/null
@@ -1,34 +0,0 @@
-\version "2.1.7"
-
-\header{ texidoc = "@cindex Tabulature
-A sample tablature, with both normal staff and tab.
-
-Tablature is done by overriding the note-head formatting function, and
-putting it on a 6-line staff. A special engraver takes care of going
-from string-number + pitch to number.
-
-String numbers can be entered as note articulations (inside a chord) and
-chord articulations (outside a chord)
-"
-}
-
-partition = \notes {
-    \key e \major
-    <e\5 dis'\4>
-    <e dis'>
-    <<e\5 dis'\4>>
-    <e dis'>\5\4
-}
-
-\score {
-  \context StaffGroup <<
-    \context Staff <<
-	\clef "G_8"
-	\partition
-    >>
-    \context TabStaff <<
-	\partition
-    >>
-  >>
-}
-
diff --git a/input/regression/tag-filter.ly b/input/regression/tag-filter.ly
deleted file mode 100644
index 45f5cc27ea..0000000000
--- a/input/regression/tag-filter.ly
+++ /dev/null
@@ -1,53 +0,0 @@
-
-\version "2.1.7"
-\header {
-
-texidoc = "The @code{\\tag} command marks music expressions with a
-name. These tagged expressions can be filtered out later. This
-mechanism can be used to make different versions of the same music. In
-this example, the top stave displays the music expression with all
-tags included. The bottom two staves are filtered: the part has cue
-notes and fingerings, but the score has not."
-
-}
-
-\paper { raggedright= ##t }
-
-common =
-\notes \relative c''  {
-
-    c1
-    \relative c' <<
-	\tag #'part <<
-	  R1 \\
-	  {
-	      \property Voice.fontSize = #-1
-	      c4_"cue" f2 g4 } 
-        >>
-	\tag #'score R1
-     >>
-    c1-\tag #'part ^4
-}
-
-
-\score {
-    \notes \simultaneous { 
-    \new Staff {
-	\property Staff.instrument = #"both"
-	\common
-	}
-    \new Staff {
-	\property Staff.instrument = #"part"
-	\apply #(remove-tag 'score) \common
-	}
-    \new Staff {
-	\property Staff.instrument = #"score"
-	\apply #(remove-tag 'part) \common
-	}
-    }
-}
-
-
-
-
-
diff --git a/input/regression/text-spanner.ly b/input/regression/text-spanner.ly
deleted file mode 100644
index 24f79f7a6e..0000000000
--- a/input/regression/text-spanner.ly
+++ /dev/null
@@ -1,18 +0,0 @@
-
-\version "2.1.7"
-\header {
-texidoc= "Text spanners should not repeat start text when broken."
-}
-
-\score {
-  \notes \relative c'' {
-    \property Voice.crescendoText = #"cresc."
-    \property Voice.crescendoSpanner = #'dashed-line
-    c1\< c \break
-    c1 c\! \break
-    }
-  \paper {
-    linewidth = 40*\staffspace
-  }
-}
-
diff --git a/input/regression/tie-accidental.ly b/input/regression/tie-accidental.ly
deleted file mode 100644
index 3a4f6484a7..0000000000
--- a/input/regression/tie-accidental.ly
+++ /dev/null
@@ -1,58 +0,0 @@
-
-\version "2.1.7"
-
-\header{
-texidoc="
-When tying notes with accidentals across a bar boundary, the
-accidental must not be drawn on the note in the next bar.  Unless the
-tie crosses a line break, in which case the accidental is repeated if
-it would be different from an untied note.  The next note of the same
-pitch in this next bar should always show the accidental (even if it's
-natural).  Slurring a accidentaled note to a natural one across bar
-boundaries should be explicit.
-
-Pitches can be verified by printing them  with the @code{NoteNames} context.
-"
-}
-
-thenotes = \notes \relative cis' {
-  \time 4/4
-  g'2 g ~ |
-  g g4 gis |
-  gis2 gis ~ |
-  gis4 gis8 ~ gis g4 gis |
-  g2 gis ~ |
-  gis g4 gis |
-  g2 gis( |
-  g!) gis4 gis |
-  \break
-  \key a \major
-  gis2 gis ~ |
-  gis4 gis8 ~ gis g4 gis |
-  gis2 g ~ |
-  g4 gis8 ~ gis g4 gis |
-  g2 gis ~ |
-  gis g4 gis |
-  g2 gis( |
-  
-  % FIXME: check for accidentals at line break could look more cute
-  % maybe move to tie-break-accidental?
-  
-  % Btw: I don't even know what the rule is for the second note in the
-  % next bar, if a reminder accidental was printed.  These are really
-  % not very common cases.  Technically, if it is not tied, it
-  % should get an accidental but it looks a bit silly and redundant.
-  % See last g.
-  
-  g!) gis4 gis ~ | \break
-  gis2  gis ~ | gis g ~\break
-  g2 g
-}
-
-\score {
-  <<
-    \context Staff \thenotes
-    \context NoteNames \thenotes
-  >>
-}
-
diff --git a/input/regression/tie-break-accidental.ly b/input/regression/tie-break-accidental.ly
deleted file mode 100644
index a04d7c9171..0000000000
--- a/input/regression/tie-break-accidental.ly
+++ /dev/null
@@ -1,20 +0,0 @@
-\version "2.1.7"
-
-\header {
-texidoc = "First and second bes (tied across line break)
-should get an accidental, but others should not.
-Only first B should get natural sign."
-}
-
-\score {
-  \notes {
-    bes1 ~ | \break
-    bes2 ~ bes4 ~ bes4 ~ | bes1
-    \key  f\major
-    bes1 ~|bes2 b ~|b ~ b ~|b1
-  }
-  \paper {
-    linewidth = 40*\staffspace
-  }
-}
-
diff --git a/input/regression/tie-busy-grobs.ly b/input/regression/tie-busy-grobs.ly
deleted file mode 100644
index 9016f3f44b..0000000000
--- a/input/regression/tie-busy-grobs.ly
+++ /dev/null
@@ -1,23 +0,0 @@
-\version "2.1.7"
-\header {
-
-texidoc = "Tie engraver uses @code{busyGrobs} to keep track of
-note heads. Test if this queue works by throwing many  mixed tuplets at it.
-
-This test may show collisions between tie and beam. 
-" 
-
-}
-
-\score
-{
-\notes \context Staff \relative c'' 
- <<
- {  \times 2/3 { c'8~  c8~ c8~ c8~ c8~ c8 } }
- \\
-  { \voiceTwo \times 2/5 { a,4 ~a4 ~a4~ a4~ a4 }}
- \\
-  { \voiceThree  { b,8 ~ b8 ~ b8 ~  b8 }}
- >>
-}
-
diff --git a/input/regression/tie-chord.ly b/input/regression/tie-chord.ly
deleted file mode 100644
index ae03122c34..0000000000
--- a/input/regression/tie-chord.ly
+++ /dev/null
@@ -1,24 +0,0 @@
-
-\version "2.1.7"
-\header{
-texidoc="
-When tying chords, the outer slurs point outwards, the inner slurs
-point away from the center of the staff.  Override with
-@code{tieVerticalDirection}.
-"
-}
-
-
-t =  \notes \relative c' {   <c e g> ~ <c e g> }
-
-	\score { 
-\notes \context Voice {
-   \t
-   \transpose c g \t
-
-   \property Voice.TieColumn \override #'direction = #-1
-   \t
-
-  }
-}
-
diff --git a/input/regression/tie-dots.ly b/input/regression/tie-dots.ly
deleted file mode 100644
index 96e956ab68..0000000000
--- a/input/regression/tie-dots.ly
+++ /dev/null
@@ -1,13 +0,0 @@
-\version "2.1.7"
-\header {
-texidoc = "Ties should not collide with dots."
-}
-
-\score{\notes{\time 9/8 \key f \major\clef bass
-  g4 d8 bes4.  ~    bes4    a8    \bar "|"
-  a8    gis8    d8 f4.    gis,4.    \bar "|"
-  a,4.   ~    a,4    r8   r4   r8   \bar "|"
-  c4.   ~    c8    a8    g8    f8
-}}
-
-
diff --git a/input/regression/tie-grace.ly b/input/regression/tie-grace.ly
deleted file mode 100644
index ee166af335..0000000000
--- a/input/regression/tie-grace.ly
+++ /dev/null
@@ -1,13 +0,0 @@
-
-\version "2.1.7"
-\header {
-    texidoc = "Tieing a grace to the to a following grace or main note works."
-}
-
-    \paper { raggedright= ##t }
-
-\score { \notes \context Voice \relative c'' {
-    c4 \grace { c8 ~ c16 ~ } c4 
-  }
-}
-
diff --git a/input/regression/tie.ly b/input/regression/tie.ly
deleted file mode 100644
index 1e3fe202e9..0000000000
--- a/input/regression/tie.ly
+++ /dev/null
@@ -1,23 +0,0 @@
-
-\version "2.1.7"
-
-\header{
-texidoc="
-Ties are strictly horizontal.  They are placed in between note heads.
-The horizontal middle should not overlap with a staffline.
-"
-}
-\score{
-	\notes\relative c''{
-		%b2~b4~b8~b16~b32~b64 r64\break
-		%a2~a4~a8~a16~a32~a64 r64
-		\time 8/4
-		d1 ~ d2~d4~d8~d16~d32~d64 r64\break
-		a1~ a2~a4~a8~a16~a32~a64 r64
-		%c2~c4~c8~c16~c32~c64 r64
-	}
-	\paper{
-		linewidth=0.
-	}
-}
-
diff --git a/input/regression/tuplet-beam.ly b/input/regression/tuplet-beam.ly
deleted file mode 100644
index 00f3ec82d4..0000000000
--- a/input/regression/tuplet-beam.ly
+++ /dev/null
@@ -1,17 +0,0 @@
-
-\version "2.1.7"
-\header {
-
-texidoc = "In combination with a beam, the bracket of the tuplet
-bracket is removed. This only happens if there is one beam, as long as
-the bracket."
-
-}
-    \paper { raggedright= ##t }
-
-\score { \notes \context Voice\relative c'' {
-\times 2/3 { r  c8[ c8] }
-\times 2/3 {  c8[ c c] }
-\times 2/3 {  c16[ c16]  c8[ c8] }
-}}
-
diff --git a/input/regression/tuplet-nest.ly b/input/regression/tuplet-nest.ly
deleted file mode 100644
index 53d870fdf5..0000000000
--- a/input/regression/tuplet-nest.ly
+++ /dev/null
@@ -1,34 +0,0 @@
-
-\version "2.1.7"
-\header {
-  texidoc="Manual hack for nested tuplets, move outer tuplet up."
-}
-
-#(define (make-text-checker-once text)
-  (lambda (grob) (and text-checker-once
-		      (if (equal? text (ly:get-grob-property grob 'text))
-			  (begin
-			    (set! text-checker-once #f) #t)
-			  #f))))
-
-#(define text-checker-once #t)
-
-\score {
-  \notes\relative c'' {
-
-    \property Voice.tupletNumberFormatFunction = #fraction-tuplet-formatter
-
-    \applyoutput #(outputproperty-compatibility (make-text-checker-once "2:3")
-		   'extra-offset '(0 . 1.5))
-    \times 2/3 {
-      \times 2/3 {
-        a a a
-      }
-      \times 3/5 {
-        a a a a a
-      }
-    }
-  }
-  \paper { raggedright = ##t}
-}
-
diff --git a/input/regression/tuplet-properties.ly b/input/regression/tuplet-properties.ly
deleted file mode 100644
index 310d7234a2..0000000000
--- a/input/regression/tuplet-properties.ly
+++ /dev/null
@@ -1,45 +0,0 @@
-
-\header {
-texidoc = "Tuplet bracket formatting supports numerous options:
-NB should have no bracket, B should have bracket.
-"
-}
- 
-
-\version "2.1.7"
-
-
-\score { 
-    \context Voice \notes\relative c'' {
-
- 	\times 2/3 { c'8 c,, c }
- 	\times 2/3 { c'8 c'' c,, }
-
-	
- 	\times 2/3 {  c8[^"NB" c c]  }
-	
- 	\times 2/3 { c8^"B"  c[ c]  }
- 	\times 2/4 { r8_"B"  c,[ c'] r8 }
-	
- 	\property Voice.TupletBracket \override #'bracket-visibility = #'if-no-beam  
- 	\times 2/3 {  c8[ c c]  }
-	
-	\property Voice.TupletBracket \override #'direction = #1
- 	\property Voice.TupletBracket \override #'number-visibility = ##f
- 	\times 2/3 { c8^""^""^"up, no digit"  c[ c]  }
- 	\property Voice.TupletBracket \revert #'number-visibility
-
-	\property Voice.TupletBracket \override #'bracket-visibility = ##t
-	\property Voice.TupletBracket \override #'edge-height = #'(0.0 . 0.0)
-	\property Voice.TupletBracket \override #'shorten-pair = #'(2.0 . 2.0)
-	\times 4/6 { c_"shorter, no edges" f b  b f c}	
-	\property Voice.TupletBracket \revert #'edge-height
-	\property Voice.TupletBracket \revert #'shorten-pair
-    	\property Voice.TupletBracket \override #'bracket-flare = #'(0.5 . 0.5)
-	\times 2/3 { b^""^""^"angled edges" b b }
- 	\property Voice.TupletBracket \revert #'direction
-	\times 2/3 { b b b }
-
-    }
-}
-
diff --git a/input/regression/tuplet-rest.ly b/input/regression/tuplet-rest.ly
deleted file mode 100644
index 814ffdc1f0..0000000000
--- a/input/regression/tuplet-rest.ly
+++ /dev/null
@@ -1,19 +0,0 @@
-
-\version "2.1.7"
-\header {texidoc = "Tests tuplet rests. "}
-
-\score {
-  \context Voice \notes \relative c'' {
-    \time 2/4
-    \times 2/3 { r c,,, c''' }
-    \times 2/3 { r c c }
-    \times 2/3 { r c r}
-    \times 2/3 { r r r}
-    \times 2/3 { r c e}
-    \times 2/3 { c r e}
-    \times 2/3 { r c g}
-    \times 2/3 { c r g}
-  }
-}
-
-
diff --git a/input/regression/tuplet-slope.ly b/input/regression/tuplet-slope.ly
deleted file mode 100644
index f5d9de3ea2..0000000000
--- a/input/regression/tuplet-slope.ly
+++ /dev/null
@@ -1,31 +0,0 @@
-\header {
-
-    texidoc = "Tuplet brackets stay clear of the staff. The
-slope is determined by the graphical characteristic of the notes, but
-if the musical pattern does not follow graphical slope, then the
-bracket is horizontal
-
-The bracket direction is determined by the dominating stem direction.
- 
-"
-
-    }
- 
-
-\version "2.1.12"
-
-\score {
-  \notes \relative c' {
-    \times 4/5 { a'4 as g fis f }
-    \times 4/5 { fis4 e es d des }
-    \times 4/5 { fis,4 e es d des }
-    \times 4/5 { bes'''4 bes,, b c cis }
-    \times 4/5 { a''4 b b c cis }
-  }
-
-  \paper {
-    linewidth = -1
-  }
-}
-
-% EOF
diff --git a/input/regression/tuplet-staffline-collision.ly b/input/regression/tuplet-staffline-collision.ly
deleted file mode 100644
index 881a3097cb..0000000000
--- a/input/regression/tuplet-staffline-collision.ly
+++ /dev/null
@@ -1,18 +0,0 @@
-
-\version "2.1.7"
-\header {
-
-texidoc = "Horizontal tuplet brackets are shifted vertically
-to avoid staff line collisions."
-
-}
-
-    \paper { raggedright= ##t }
-
-\score { \notes \context Voice\relative c'' {
-\times 2/3 { b'4 b b }
-\times 2/3 { f4 f f }
-\times 2/3 { g4 g g }
-\times 2/3 { a4 a a }
-}}
-
diff --git a/input/regression/tuplets.ly b/input/regression/tuplets.ly
deleted file mode 100644
index 3c257ddb5d..0000000000
--- a/input/regression/tuplets.ly
+++ /dev/null
@@ -1,38 +0,0 @@
-
-\version "2.1.7"
-\header{
-    
-texidoc="
-Tuplets are indicated by a bracket with a number.  There should be no
-bracket if there is a beam exactly  matching  the length of the tuplet.
-The bracket does not interfere with the stafflines, and the number is
-centered in the gap in the bracket.
-
-The bracket stops at the end of the stems, if the stems have the same
-direction as the bracket. The endings can be adjusted with
-@code{bracket-flare}.
-
-
-"
-
-}
-\paper { raggedright= ##t }
-
-\score{
-	\notes \context Voice \relative c'' {
-		 \times 2/3 { a8 b c }
-		 \times 2/3 { r8  b[ f] }
-		 \property Voice.TupletBracket \set #'bracket-flare = #'(0.5 . 0.5)
-		 \times 2/3 { r8 b r8 }
-		 c4 |
-		 
-		 \times 3/4 { c4 c4 c4 c4 } c4 | 
-		 
-		 \time 6/8
-		 \times 6/9 { c8 c c c c c c c c }
-
-		 }
-}
-
-
-
diff --git a/input/regression/voice-follower.ly b/input/regression/voice-follower.ly
deleted file mode 100644
index c34be884e1..0000000000
--- a/input/regression/voice-follower.ly
+++ /dev/null
@@ -1,23 +0,0 @@
-\version "2.1.19"
-
-
-\header { texidoc= "
-
-Whenever a voice switches to another staff a line connecting the notes
-can be printed automatically. This is enabled if the property
-@code{Voice.followVoice} is set to true. "
-
-}
-\score {
-\notes \relative c'
-\context PianoStaff <<
-    \property PianoStaff.followVoice = ##t
-    \context Staff = one \context Voice {
-      c1
-      \change Staff=two
-      b2 a
-    }
-    \context Staff = two {\clef bass \skip 1*2 }
-  >>\paper{ 
-linewidth =-1.
-}}
diff --git a/input/regression/volta-broken-left-edge.ly b/input/regression/volta-broken-left-edge.ly
deleted file mode 100644
index 4e6bf3e865..0000000000
--- a/input/regression/volta-broken-left-edge.ly
+++ /dev/null
@@ -1,123 +0,0 @@
-\version "2.1.7"
-
-\header {
-texidoc ="Broken volta spanners behave correctly at left edge in all cases."
-
-}
-
-%{
-
-
-I recently discovered that although the following patch seemed to fix
-the original complaint that it causes other problems (the following
-tests were done in 1.3.116.
-
-I have attached a file which has several break-volta interactions.
-
-With the test file and unmodified 1.3.116 I see the following:
-
-Bar 3 - 1st volta spanner centered on first note - prefer it to start
-	closer to key signature (can live with this)
-Bar 6 - 1st volta continuation - perfect
-Bar 9 - 2nd volta spanner starts on left edge of key signature - prefer
-	it to start right of key signature
-Bar 12 	1st volta starts between first two slurred notes in measure -
-	this is not acceptable
-Bar 17	like above with hairpin.
-Bar 23	like above (I had expected this to be OK)
-Bar 20	2nd volta continuation perfect
-
-With the test file and 1.3.116 modified as below I see the following:
-
-Bar 3	Perfect
-Bar 6	1st volta continuation starts with staff - oops
-Bar 9  	2nd volta starts on papers left margin - OOPS!
-Bar 12	Perfect
-Bar 17 	Perfect
-Bar 20	2nd volta continuation starts with staff - oops
-Bar 23	Perfect
-
-%}
-
-voiceB = \notes {
-    \clef bass
-     \property Staff.instrument = "Bass"
-     \property Staff.instr = "B"
-     \key f \minor 
-     \time 4/4  
-    f1
-    \repeat  volta 2
-    {
-        f1    \break
-    }
-    \alternative
-    {
-        { 	
-	  f1 f g \break   
-	  f e d  \break   
-	}
-        {   
-	    f1      | 
-	}
-    }
-}
-voiceC = \notes {
-    \repeat volta 2
-    {
-f f 
-     \break
-    }
-    \alternative
-    {
-        f
-        { f f }
-    }
-}
-
-voiceD = \notes {
-    \repeat volta 2
-    {
-f f 
-     \break
-    }
-    \alternative
-    {
-        {	f
-	}
-        {	f f \break f 
-        }
-    }
-}
-voiceE = \notes {
-    \repeat volta 2
-    {
-f f\break
-    }
-    \alternative
-    {
-        {	
-	 f
-
-	}
-        {	
-	  f f 
-        }
-    }
-}
-\score{
-        \notes <<
-
-
-	\new Staff
-	{
-	    \voiceB 
-	    \voiceC
-	    \break
-	    \voiceD
-	    \voiceE
-	}
-
-    >>
-	\paper { raggedright =##t }
-}
-
diff --git a/input/regression/volta-multi-staff.ly b/input/regression/volta-multi-staff.ly
deleted file mode 100644
index 52d5fbf691..0000000000
--- a/input/regression/volta-multi-staff.ly
+++ /dev/null
@@ -1,27 +0,0 @@
-\header {
-
-    texidoc = "By setting @code{voltaOnThisStaff}, repeats can be put on more staffs in a score."
-
-}
-\version "2.1.7"
-
-
-vmus = \notes { \repeat volta 2 c1 \alternative { d e } } 
-
-\score  {
-
-    \notes \relative c'' <<
-	\new StaffGroup <<
-	    \context Staff \vmus
-	    \new Staff \vmus
-	>>
-	\new StaffGroup <<
-	    \new Staff <<
-		\property Staff.voltaOnThisStaff = ##t
-		\vmus >>
-	    \new Staff \vmus
-	>>
-    >>
-
-    \paper { raggedright = ##t }
-}
diff --git a/input/screech-boink.ly b/input/screech-boink.ly
deleted file mode 100644
index 253e28a26b..0000000000
--- a/input/screech-boink.ly
+++ /dev/null
@@ -1,63 +0,0 @@
-\version "2.1.7"
-\header {
-    title = "Screech and boink"
-    subtitle = "Random complex notation"
-    composer = "Han-Wen Nienhuys"
-}
-
-\score {
-    \notes \context PianoStaff <<
-	\context Staff = up {
-	    \time 4/8
-	    \key c \minor
-
-
-	    << {
-		\property Voice.Stem \revert #'direction
-		\change Staff = down
-		\property Voice.subdivideBeams = ##t	     
-		g16.[
-		    \change Staff = up
-		    c'''32 	\change Staff = down
-		    g32 \change Staff = up
-		    c'''32	\change Staff = down
-		    g16]
-		\change Staff = up
-		\property Voice.Stem \set #'direction = #1
-		\property Voice.followVoice = ##t
-		c'''32([ b''16 a''16 gis''16 g''32)]  } \\
-	       { s4 \times 2/3 { d'16[ f' g'] } as'32[ b''32 e'' d''] } \\
-	       { s4 \autoBeamOff d''8.. f''32  } \\
-	       { s4 es''4 }
-	   >>
-	}
-
-	\context Staff = down {
-	    \clef bass
-	    \key c \minor
-	    \property Voice.subdivideBeams = ##f
-	    \property Voice.Stem \set #'french-beaming =  ##t
-	    \property Voice.Beam \set #'thickness = #0.3
-	    \property Voice.Stem \set #'thickness = #4.0
-	    g'16[ b16 fis16 g16]
-	    << \apply #notes-to-clusters { 
-		as16 <as b>
-		<g b>
-		<g cis>
-	    } \\
-	       {
-		   \property Staff.Arpeggio \set #'arpeggio-direction =#-1
-		   <cis, e, gis, b, cis>4\arpeggio  }
-	   >>
-	}
-    >>
-
-    \paper { linewidth = -1.0
-
-	     \translator {
-		 \StaffContext
-		 \consists Horizontal_bracket_engraver }
-
-	 }
-    \midi { \tempo 8 = 60 }
-}
diff --git a/input/template/GNUmakefile b/input/template/GNUmakefile
deleted file mode 100644
index 370b3e4398..0000000000
--- a/input/template/GNUmakefile
+++ /dev/null
@@ -1,13 +0,0 @@
-depth = ../..
-
-STEPMAKE_TEMPLATES=documentation texinfo tex
-LILYPOND_BOOK_FLAGS = --process="lilypond-bin --header=texidoc -I $(srcdir)/input/regression -e '(ly:set-option (quote internal-type-checking) \#t)'"
-LOCALSTEPMAKE_TEMPLATES=lilypond ly lysdoc
-EXTRA_DIST_FILES=README
-
-include $(depth)/make/stepmake.make 
-
-TITLE=LilyPond Template Files
-
-
-.PRECIOUS: $(outdir)/collated-files.texi
diff --git a/input/template/README b/input/template/README
deleted file mode 100644
index 6f39e7f8af..0000000000
--- a/input/template/README
+++ /dev/null
@@ -1,51 +0,0 @@
-
-* Naming conventions for voices/staves
-  (think: \autochange, \partcombine)?
-
-* Add (commented-out) stuff like \time 3/4
-  \property Staff.TimeSignature \set #'style = #xxx?
-
-* Handy emacs shortcuts to (these) templates?
-
-* Mutopia headers?
-
-* Another approach would be to not include any music in the templates,
-  and standardise the naming of the music, so that you'd do:
-
-    title = 'Piano piece'
-    upper = \notes { ... }
-    lower = \notes { ... }
-
-    \include "template/piano.ly"
-
-  In this case, we'd also need one simple music example file per
-  template.  This approach can be even easier to use, but is not very
-  flexible, it only works for simple and uniform pieces.
-
-* Possibly some of you already have created something like this?  I was
-  thinking of having templates for:
-
-  single melody  = melody.ly
-  melody with lyrics = melody-lyrics.ly 
-  melody with lyrics and chords = melody-lyrics-chords.ly
-  piano = piano.ly
-  piano with several voices = piano-4-voices.ly
-  piano with lyrics (between staves) = piano-lyrics.ly
-  piano with melody and lyrics = piano-melody-lyrics.ly
-
-TODO (Choral templates, anyone?)
-  piano with lyrics and chords
-  (string) duet 
-  (string) duet parts
-  string quartet
-  string quintet parts
-  orchestral score
-  orchestral parts
-  choral score with piano reduction (i.e., the piano staves have the
-          same notes as the choral parts)
-  choral score with piano accompaniment
-  choral parts
-
-
-
-
diff --git a/input/template/gregorian-transcription.ly b/input/template/gregorian-transcription.ly
deleted file mode 100644
index 74bfd5a4f0..0000000000
--- a/input/template/gregorian-transcription.ly
+++ /dev/null
@@ -1,28 +0,0 @@
-\version "2.1.7"
-
-
-\header {
-texidoc = "Modern  transcriptions  of gregrorian music.
-Gregorian music has no measure, no stems, only uses half and quarter notes,
-and two types of barlines, a short one indicating a rest, a second indicating a breath mark."
-}
-
-
-barOne = \notes { \once \property Staff.BarLine \override #'bar-size = #2
-	\bar "|" }
-barTwo = \notes { \once \property Staff.BarLine \override #'extra-offset = #'(0 . 2)
-
-		\once \property Staff.BarLine \override #'bar-size = #2
-	\bar "|" }
-\score {
-
-\notes \relative c' {
-	\property Score.timing = ##f
-	\property Staff.Stem \set #'transparent = ##t
-	f4 a2 \barTwo g4 a2  f2 \barOne g4( f) f(
-	\bar "empty" 
-	\break
-	g) a2
-}
-
-}
diff --git a/input/template/header.ly b/input/template/header.ly
deleted file mode 100644
index 097fb3cfce..0000000000
--- a/input/template/header.ly
+++ /dev/null
@@ -1,27 +0,0 @@
-\version "2.1.7"
-\header {
-  dedication = "dedication"
-  title = "Title"
-  subtitle = "Subtitle"
-  subsubtitle = "Subsubtitle"
-  composer = "Composer (xxxx-yyyy)"
-  opus = "Opus 0"
-  piece = "Piece I"
-  instrument = "Instrument"
-  arranger = "Arranger"
-  poet = "Poet"
-  texttranslator = "Translator"
-  copyright = "public domain"
-  source =  "urtext "
-  enteredby = "your name here"
-  maintainerEmail = "your email here"
-  texidoc = "The standard header that ought to be above a file."
-
-}
-
-% insert a score otherwise lilypond-book gets confused. 
-\score {
-  \notes {
-  c'4
-  }
-} 
diff --git a/input/template/jazz-combo.ly b/input/template/jazz-combo.ly
deleted file mode 100644
index 65ecdd424d..0000000000
--- a/input/template/jazz-combo.ly
+++ /dev/null
@@ -1,252 +0,0 @@
-\version "2.1.19"
-\header {
-        title = "Song"
-        subtitle = "(tune)"
-        composer = "Me"
-        meter = "moderato"
-        piece = "Swing"
-	tagline = "LilyPond example file by Amelie Zapf, Berlin 07/07/2003"
-	texidoc = "Jazz tune for combo (horns, piano, drums, bass, guitar)."
-}
-
-#(set-global-staff-size 16)
-\include "english.ly"
-
-%%%%%%%%%%%% Some macros %%%%%%%%%%%%%%%%%%%
-
-sl = {
-    \property Voice.NoteHead \override #'style = #'slash
-    \property Voice.Stem \override #'transparent = ##t
-}
-nsl = {
-    \property Voice.NoteHead \revert #'style
-    \property Voice.Stem \revert #'transparent
-}
-cr = \property Voice.NoteHead \override #'style = #'cross
-ncr = \property Voice.NoteHead \revert #'style
-
-%% insert chord name style stuff here.
-
-jzchords = { } 
-
-
-%%%%%%%%%%%% Keys'n'thangs %%%%%%%%%%%%%%%%%
-
-global = \notes {
-    \time 4/4
-}
-
-Key = \notes { \key c \major }
-
-% ############ Horns ############
-% ------ Trumpet ------
-trpt = \notes \transpose c d \relative c'' {
-    \Key
-    c1 c c
-}
-
-trpharmony = \chords \transpose c' d { \jzchords }
-trumpet = {
-    \global 
-    \property Staff.instrument = #"Trumpet"
-    \clef treble
-    \context Staff <<
-	\trpt
-    >>
-}
-
-% ------ Alto Saxophone ------
-alto = \notes \transpose c a \relative c' {
-	\Key
-        c1 c c
-}
-
-altoharmony = \chords \transpose c' a { \jzchords }
-altosax = {
-        \global
-        \property Staff.instrument = #"Alto Sax"
-        \clef treble
-        \context Staff <<
-                \alto
-        >>
-}
-
-% ------ Baritone Saxophone ------
-bari = \notes \transpose c a' \relative c {
-	\Key
-        c1 c \sl d4^"Solo" d d d \nsl
-}
-
-bariharmony = \chords \transpose c' a { \jzchords s1 s d2:maj e:m7 }
-barisax = {
-        \global
-        \property Staff.instrument = #"Bari Sax"
-        \clef treble
-        \context Staff <<
-                \bari
-        >>
-}
-% ------ Trombone ------
-tbone = \notes \relative c {
-	\Key
-        c1 c c
-}
-
-tboneharmony = \chords { \jzchords }
-trombone = {
-        \global
-        \property Staff.instrument = #"Trombone"
-        \clef bass
-        \context Staff <<
-                \tbone
-        >>
-}
-% ############ Rhythm Section #############
-% ------ Guitar ------
-gtr = \notes \relative c'' {
-	\Key
-        c1 \sl b4 b b b \nsl c1
-}
-
-gtrharmony = \chords { \jzchords
-        s1 c2:min7+ d2:maj9
-}
-
-guitar = {
-        \global
-        \property Staff.instrument = #"Guitar"
-        \clef treble
-        \context Staff <<
-        	\gtr
-        >>
-}
-
-%% ------ Piano ------
-rhUpper = \notes \relative c'' {
-        \voiceOne
-	\Key
-        c1 c c
-}
-
-rhLower = \notes \relative c' {
-        \voiceTwo
-	\Key
-        e1 e e
-}
-
-lhUpper = \notes \relative c' {
-        \voiceOne
-	\Key
-        g1 g g
-}
-
-lhLower = \notes \relative c {
-        \voiceTwo
-	\Key
-        c1 c c
-}
-
-PianoRH = {
-        \clef treble
-        \global
-        \property Staff.midiInstrument = "acoustic grand"
-        \context Staff <<
-                \context Voice = one \rhUpper
-        	\context Voice = two \rhLower
-        >>
-}
-
-PianoLH = {
-        \clef bass
-        \global
-        \property Staff.midiInstrument = "acoustic grand"
-        \context Staff <<
-        	\context Voice = one \lhUpper
-        	\context Voice = two \lhLower
-        >>
-}
-
-piano = {
-	\context PianoStaff <<
-		\property PianoStaff.instrument = #"Piano"
-        	\context Staff = upper \PianoRH
-        	\context Staff = lower \PianoLH
-        >>
-}
-
-% ------ Bass Guitar ------
-bass = \notes \relative c {
-	\Key
-        c1 c c
-}
-
-bass = {
-    \global
-    \property Staff.instrument = #"Bass"
-    \clef bass
-    \context Staff <<
-	\bass
-    >>
-}
-
-				% ------ Drums ------
-
-up = \drums {
-    hh4 <hh sn>4 hh <hh sn> hh <hh sn>4
-    hh4 <hh sn>4
-    hh4 <hh sn>4
-    hh4 <hh sn>4
-}
-
-down = \drums {
-    bd4 s bd s bd s bd s bd s bd s
-}
-
-drumContents = {
-	\global
-	<<
-		\property DrumStaff.instrument = #"Drums"
-		\new DrumVoice { \voiceOne \up }
-		\new DrumVoice { \voiceTwo \down }
-	>>
-}
-
-%%%%%%%%% It All Goes Together Here %%%%%%%%%%%%%%%%%%%%%%
-
-\score {
-<<
-        \context StaffGroup = horns <<
-                \context Staff = trumpet \trumpet
-
-                \context Staff = altosax \altosax
-
-		\context ChordNames = barichords \bariharmony
-
-                \context Staff = barisax \barisax
-
-                \context Staff = trombone \trombone
-        >>
-
-        \context StaffGroup = rhythm <<
-		\context ChordNames = chords \gtrharmony
-                \context Staff = guitar \guitar
-		\context PianoStaff = piano \piano
-                
-                \context Staff = bass \bass
-                
-                \new DrumStaff { \drumContents }
-        >>
->>
-        \paper {
-                linewidth = 15.0 \cm
-                \translator { \RemoveEmptyStaffContext }
-                \translator {
-                        \ScoreContext
-                        BarNumber \override #'padding = #3
-                        RehearsalMark \override #'padding = #2
-                        skipBars = ##t
-                }
-        }
-        \midi { \tempo 4 = 75 }
-}
-
diff --git a/input/template/melody-chords.ly b/input/template/melody-chords.ly
deleted file mode 100644
index 23d98e43e8..0000000000
--- a/input/template/melody-chords.ly
+++ /dev/null
@@ -1,26 +0,0 @@
-\version "2.1.7"
-
-\header {
-  texidoc = "Lead sheet format: chords with melody."
-}
-
-harmonies = \chords {
-  c4:m f:min7 g:maj c:aug d2:dim b:sus
-}
-
-melody = \notes \relative c' {
-  f4 e8[ c] d4 g | a2 ~ a2
-}
-
-\score {
-  \notes <<
-    \context ChordNames {
-        \property ChordNames.chordChanges = ##t
-        \harmonies
-    }
-    \context Staff = one \melody
-  >>
-
-  \paper{ }
-  \midi{ }
-}
diff --git a/input/template/melody-lyrics-chords.ly b/input/template/melody-lyrics-chords.ly
deleted file mode 100644
index cb0d3e6ee2..0000000000
--- a/input/template/melody-lyrics-chords.ly
+++ /dev/null
@@ -1,31 +0,0 @@
-\version "2.1.21"
-\header
-{
-    texidoc = "Popsong format: chords, melody and lyrics."
-}
-
-melody = \notes \relative c'
-{
-    a b c d
-}
-
-text = \lyrics {
-    Aaa Bee Cee Dee
-}
-
-accompaniment = \chords {
-    a2 c2
-}
-
-\score {
-  <<
-    \context ChordNames \accompaniment
-    \context Voice = one {
-	\autoBeamOff
-        \melody
-    }
-    \lyricsto "one" \new Lyrics \text
-  >>
-  \paper { }
-  \midi  { }
-}
diff --git a/input/template/melody-lyrics.ly b/input/template/melody-lyrics.ly
deleted file mode 100644
index 7ace19b345..0000000000
--- a/input/template/melody-lyrics.ly
+++ /dev/null
@@ -1,25 +0,0 @@
-\version "2.1.21"
-
-\header {
-  texidoc = "Melody and lyrics."
-}
-
-melody = \notes \relative c'' {
-  a b c d
-}
-
-text = \lyrics {
-  Aaa Bee Cee Dee
-}
-
-\score {
-  <<
-      \context Voice = one {
-	  \property Staff.autoBeaming = ##f
-	  \melody
-      }
-      \lyricsto "one" \new Lyrics \text
-  >>
-  \paper { }
-  \midi  { }
-}
diff --git a/input/template/melody.ly b/input/template/melody.ly
deleted file mode 100644
index 5a4dae9b08..0000000000
--- a/input/template/melody.ly
+++ /dev/null
@@ -1,15 +0,0 @@
-\version "2.1.7"
-
-\header {
-  texidoc = "Only a melody."
-}
-
-melody = \notes \relative c' {
-  a b c d
-}
-
-\score {
-  \context Staff \melody
-  \paper { }
-  \midi  { }
-}
diff --git a/input/template/piano-4-voices.ly b/input/template/piano-4-voices.ly
deleted file mode 100644
index a9abdb1791..0000000000
--- a/input/template/piano-4-voices.ly
+++ /dev/null
@@ -1,42 +0,0 @@
-\version "2.1.7"
-
-\header {
-  texidoc ="Polyphonic piano music"
-}
-
-upperOne = \notes\relative c'' {
-  \voiceOne
-  a b c d
-}
-
-upperTwo = \notes\relative c' {
-  \voiceTwo
-  a2 c
-}
-
-lowerOne = \notes\relative c {
-  \voiceOne
-  a2 c
-}
-
-lowerTwo = \notes\relative c {
-  \voiceTwo
-  a1
-}
-
-\score {
-  \context PianoStaff <<
-    %\time 4/4
-    \context Staff = upper <<
-      \context Voice = one \upperOne
-      \context Voice = two \upperTwo
-    >>  
-    \context Staff = lower <<
-      \clef bass
-      \context Voice = one \lowerOne
-      \context Voice = two \lowerTwo
-    >>  
-  >>
-  \paper { }  
-  \midi { }  
-}
diff --git a/input/template/piano-dynamics.ly b/input/template/piano-dynamics.ly
deleted file mode 100644
index 49592ff999..0000000000
--- a/input/template/piano-dynamics.ly
+++ /dev/null
@@ -1,80 +0,0 @@
-\version "2.1.7"
-\header {
-texidoc ="
-  Template that puts dynamics on a separate line, so it is neatly
-centered between staffs.
-"
-}
-
-upper = \notes\relative c'' {
-  a b c d
-}
-
-lower = \notes\relative c {
-  a2 c
-}
-
-dynamics = \notes {
-  s2\fff\> s4
-  s\!\pp
-}
-
-pedal = \notes {
- s2\sustainDown s2\sustainUp
-}
-
-\score {
-  \context PianoStaff <<
-    \context Staff=upper \upper
-    \context Dynamics=dynamics \dynamics
-    \context Staff=lower <<
-      \clef bass
-      \lower
-    >>
-    \context Dynamics=pedal \pedal
-  >>
-  \paper {
-    \translator {
-      \type "Engraver_group_engraver"
-      \name Dynamics
-      \alias Voice % So that \cresc works, for example.
-      \consists "Output_property_engraver"
-      
-      minimumVerticalExtent = #'(-1 . 1)
-      pedalSustainStrings = #'("Ped." "*Ped." "*")
-      pedalUnaCordaStrings = #'("una corda" "" "tre corde")
-      
-      \consists "Piano_pedal_engraver"
-      \consists "Script_engraver"
-      \consists "Dynamic_engraver"
-      \consists "Text_engraver"
-
-      TextScript \override #'font-size = #2
-      TextScript \override #'font-shape = #'italic
-      DynamicText \override #'extra-offset = #'(0 . 2.5)
-      Hairpin \override #'extra-offset = #'(0 . 2.5)
-
-      \consists "Skip_event_swallow_translator"
-
-      \consistsend "Axis_group_engraver"
-    }
-    \translator {
-      \PianoStaffContext
-      \accepts Dynamics
-      VerticalAlignment \override #'forced-distance = #7
-    }
-  }
-  \midi {
-    \translator {
-      \type "Performer_group_performer"
-      \name Dynamics
-      \consists "Piano_pedal_performer"
-      \consists "Span_dynamic_performer"
-      \consists "Dynamic_performer"
-    }
-    \translator {
-      \PianoStaffContext
-      \accepts Dynamics
-    }
-  }
-}
diff --git a/input/template/piano-lyrics.ly b/input/template/piano-lyrics.ly
deleted file mode 100644
index b34297ebaa..0000000000
--- a/input/template/piano-lyrics.ly
+++ /dev/null
@@ -1,42 +0,0 @@
-\version "2.1.21"
-
-\header {
-  texidoc ="Lyrics between two staffs."
-}
-
-upper = \notes\relative c'' {
-  a b c d
-}
-
-lower = \notes\relative c {
-  a2 c
-}
-
-text = \lyrics {
-  Aaa Bee Cee Dee
-}
-
-\score {
-  \context GrandStaff <<
-    \context Staff = upper {
-	\context Voice = singer \upper
-    }
-    \lyricsto "singer" \new Lyrics \text
-    \context Staff = lower <<
-      \clef bass
-      \lower
-    >>  
-  >>
-  \paper {
-    \translator {
-      \GrandStaffContext
-      \accepts "Lyrics"
-    }
-    \translator {
-      %\LyricsContext
-      \LyricsContext
-      \consists "Bar_engraver"
-    }
-  }  
-  \midi { }  
-}
diff --git a/input/template/piano-melody-lyrics.ly b/input/template/piano-melody-lyrics.ly
deleted file mode 100644
index 0e8cbefa76..0000000000
--- a/input/template/piano-melody-lyrics.ly
+++ /dev/null
@@ -1,45 +0,0 @@
-
-\version "2.1.20"
-\header {
-  texidoc ="Classical song format: one staff with melody and lyrics,
-and piano accompaniment."
-  
-}
-
-melody = \notes \relative c'' {
-  a b c d
-}
-
-text = \lyrics {
-  Aaa Bee Cee Dee
-}
-
-upper = \notes\relative c'' {
-  a b c d
-}
-
-lower = \notes\relative c {
-  a2 c
-}
-
-\score {
-  <<
-      \context Voice = mel {
-	  \autoBeamOff
-	  \melody
-      }
-      \lyricsto mel \new LyricsVoice \text
-
-      \context PianoStaff <<
-	  \context Staff = upper \upper
-	  \context Staff = lower <<
-	      \clef bass
-	      \lower
-	  >>
-      >>
-  >>
-  \paper {
-      \translator { \RemoveEmptyStaffContext }
-  }  
-  \midi { }  
-}
diff --git a/input/template/piano.ly b/input/template/piano.ly
deleted file mode 100644
index 6af2917a23..0000000000
--- a/input/template/piano.ly
+++ /dev/null
@@ -1,26 +0,0 @@
-\version "2.1.7"
-
-\header {
-  texidoc = "Simple piano music." 
-}
-
-upper = \notes\relative c'' {
-  a b c d
-}
-
-lower = \notes\relative c {
-  a2 c
-}
-
-\score {
-  \context PianoStaff <<
-    %\time 4/4
-    \context Staff = upper \upper
-    \context Staff = lower <<
-      \clef bass
-      \lower
-    >>  
-  >>
-  \paper { }  
-  \midi { }  
-}
diff --git a/input/template/satb.ly b/input/template/satb.ly
deleted file mode 100644
index bd116bfd8c..0000000000
--- a/input/template/satb.ly
+++ /dev/null
@@ -1,52 +0,0 @@
-\version "2.1.21"
-\header {
-
-    texidoc = "
- Example template for a SATB vocal  score.
-" 
-}
-
-sopMusic = \notes  \relative c'' { c4 c c8[( b)] c4 }
-sopWords = \lyrics { hi4 hi hi hi  }
-
-altoMusic = \notes  \relative c' { e4 f d e }
-altoWords =\lyrics { ha4 ha ha ha }
-
-tenorMusic = \notes \relative c' { g4 a f g }
-tenorWords = \lyrics { hu4 hu hu hu }
-
-bassMusic = \notes \relative c { c4 c g c }
-bassWords = \lyrics { ho4 ho ho ho }
-
-\score { \notes
-	  \context StaffGroup <<
-	      \context Lyrics = sopranos { s1 }
-	      \context Staff = women <<
-		  \context Voice = sopranos { \voiceOne \sopMusic }
-		  \context Voice = altos { \voiceTwo \altoMusic }
-	      >>
-	      \context Lyrics = altos { s1 }
-	      \context Lyrics = tenors { s1 }
-	      \context Staff = men <<
-		  \clef bass
-		  \context Voice = tenors { \voiceOne \tenorMusic }
-		  \context Voice = basses { \voiceTwo \bassMusic }
-	      >>
-	      \context Lyrics = basses { s1 }
-
-	      
-	      \context Lyrics = sopranos \lyricsto sopranos \sopWords
-	      \context Lyrics = altos \lyricsto altos \altoWords
-	      \context Lyrics = tenors \lyricsto tenors \tenorWords
-	      \context Lyrics = basses \lyricsto basses \bassWords
-	  
-	  >>
-  \paper {
-    \translator {
-
-	% a little smaller so lyrics can be closer to the staff. 
-	\StaffContext
-	minimumVerticalExtent = #'(-3 . 3) 
-    }
-  }
-}
diff --git a/input/test/+.ly b/input/test/+.ly
deleted file mode 100644
index 29cef29fd3..0000000000
--- a/input/test/+.ly
+++ /dev/null
@@ -1,19 +0,0 @@
-\version "2.1.21"
-%% +.ly: Be the first .ly file for lys-to-tely.py.
-%% Better to make lys-to-tely.py include "introduction.texi" or
-%% other .texi documents too?
-
-\header{
-texidoc = #(string-append "
-@section Introduction
-
-This document shows all kinds of tips and tricks, from simple to
-advanced.  Here you may also find dirty tricks, or very the very
-latest features that have not been documented or fully implemented
-yet. 
-This document is for LilyPond version 
-" (lilypond-version) ".")
-}
-
-
-\score { \context Lyrics \lyrics {  " " } }
diff --git a/input/test/GNUmakefile b/input/test/GNUmakefile
deleted file mode 100644
index 9aa3d84a97..0000000000
--- a/input/test/GNUmakefile
+++ /dev/null
@@ -1,17 +0,0 @@
-
-depth = ../..
-
-STEPMAKE_TEMPLATES=documentation texinfo tex
-LOCALSTEPMAKE_TEMPLATES=lilypond ly lysdoc
-LILYPOND_BOOK_FLAGS = --process="lilypond-bin --header=texidoc -I $(srcdir)/input/regression -e '(ly:set-option (quote internal-type-checking) \#t)'"
-
-## Hmm, would this work?  No -- if we really want examples, move
-## to other dir (input/) comes to mind.
-## examples = font20 ancient-font
-## LOCALSTEPMAKE_TEMPLATES += ly mutopia 
-
-EXTRA_DIST_FILES= 
-
-include $(depth)/make/stepmake.make 
-
-TITLE=LilyPond Tips and Tricks
diff --git a/input/test/ac-extra-voice.ly b/input/test/ac-extra-voice.ly
deleted file mode 100644
index aade68342c..0000000000
--- a/input/test/ac-extra-voice.ly
+++ /dev/null
@@ -1,59 +0,0 @@
-\version "2.1.18"
-
-%% I don't know what this example is supposed to do.  delete it?
-%% It shows how to use the autochange feature together with an extra
-%% voice.  When I needed to typeset this example, I found it not trivial
-%% and dumped a piece of it here.  Move to refman?
-
-\header{
-    texidoc="When using automatic staff changes for the one voice, the
-other voice must be given a name explicitely."
-}
-
-global = \notes{
-    \key a \minor
-    \time 6/4
-}
-
-melody = \notes\relative c''{
-    r2 r r 
-    r2 r r
-    r4 a'8-- \< a-- a-- a-- c-- b\!-- a-\> gis f e\!
-    es8 \grace b c r4 r2 r
-}
-
-basloopje = \notes\relative c{
-    d,8( a' d f a d f d a f d a)
-}
-
-accompany = \repeat unfold 4  \basloopje
-
-\score{
-    \notes \context PianoStaff<<
-	\context Staff=up <<
-	    \global
-	    \context Voice=foo{
-		\voiceOne
-		\melody 
-	    }
-	>>
-	\context Staff=down<<
-	    \global
-	    \clef bass
-	    \autochange  \context Voice \accompany
-	>>
-    >>
-
-    \paper {
-	\translator{ 
-	    \StaffContext
-	    autoBeamSettings \override #'(end * * * *)
-	    = #(ly:make-moment 1 2)
-	}
-    }
-    \midi {
-	\tempo 4 = 54
-    }
-}
-
-
diff --git a/input/test/add-staccato.ly b/input/test/add-staccato.ly
deleted file mode 100644
index 4c693b1155..0000000000
--- a/input/test/add-staccato.ly
+++ /dev/null
@@ -1,36 +0,0 @@
-
-\version "2.1.7"
-
-\header {
-
-texidoc= "@cindex Add Stacato
-Using make-music, you can add various stuff to notes. Here
-is an example how to add staccato dots.  Note: for this simple case
-one would not use scm constructs.  See separate-staccato.ly first.
-"
-} 
-
-#(define (make-script x)
-   (let ((m (make-music-by-name 'ArticulationEvent)))
-     (ly:set-mus-property! m 'articulation-type x)
-     m))
-    
-#(define (add-script m x)
-   (if
-    (equal? (ly:get-mus-property m 'name) 'EventChord)
-    (ly:set-mus-property! m 'elements
-			  (cons (make-script x)
-				(ly:get-mus-property m 'elements))))
-   m)
-
-#(define (add-staccato m)
-   (add-script m "staccato"))
-
-\score {
-  \notes\relative c'' {
-    a b \apply #(lambda (x) (music-map add-staccato x)) { c c } 
-  }
-  \paper{ raggedright = ##t }
-}
-
-
diff --git a/input/test/add-text-script.ly b/input/test/add-text-script.ly
deleted file mode 100644
index 594dffca6d..0000000000
--- a/input/test/add-text-script.ly
+++ /dev/null
@@ -1,37 +0,0 @@
-\version "2.1.7"
-
-\header {
-texidoc= "@cindex make-music Fingering
-You can add various stuff to notes using make-music.
-Here is an example of how to add an extra fingering. 
-
-In general, first do a display of the music you want to
-create, then write a function that will build the structure for you.
-"
-} 
-
-#(define (make-text-script x) 
-   (let ((m (make-music-by-name 'TextScriptEvent)))
-    (ly:set-mus-property! m 'direction DOWN) 
-     (ly:set-mus-property! m 'text (make-simple-markup x))
-     m))
-     
-#(define (add-text-script m x)
-   (if (equal? (ly:get-mus-property m 'name) 'EventChord)
-       (ly:set-mus-property! m 'elements
-			    (cons (make-text-script x)
-				  (ly:get-mus-property m 'elements)))
-       
-       (let ((es (ly:get-mus-property m 'elements))
-	     (e (ly:get-mus-property m 'element)) )
-	 (map (lambda (y) (add-text-script y x)) es)
-	 (if (ly:music? e)
-	     (add-text-script e x))))
-   m)
-
-\score {
-  \apply #(lambda (x)  (add-text-script x "6") (display-music x) x ) \notes { c'4-3 }
-	\paper{ raggedright = ##t }
-}
-
-
diff --git a/input/test/ambitus-mixed.ly b/input/test/ambitus-mixed.ly
deleted file mode 100644
index c79bbdbc36..0000000000
--- a/input/test/ambitus-mixed.ly
+++ /dev/null
@@ -1,60 +0,0 @@
-
-\header {
-texidoc = "Ambituses can be switched off or translated by using
-applyoutput.
-
-If you want to mix per-voice and per-staff ambituses, then you have to
-define you have to declare a new context type derived from the
-@code{Voice} context or @code{Staff} context.  The derived context
-must consist of the @code{Ambitus_engraver} and it must be accepted by
-a proper parent context, in the below example the @code{Staff} context
-or @code{Score} context, respectively.  The original context and the
-derived context can then be used in parallel in the same score. (this is not demonstrated in this file).
-"
-}
-
-\version "2.1.7"
-
-#(define (kill-ambitus grob grob-context apply-context)
-  (if (memq 'ambitus-interface (ly:get-grob-property grob 'interfaces))
-   (ly:grob-suicide grob)
-  ))
-
-#(define ((shift-ambitus x) grob grob-context apply-context)
-  (if (memq 'ambitus-interface (ly:get-grob-property grob 'interfaces))
-   (ly:grob-translate-axis! grob x X)
-  ))
-
-
-
-voiceA = \notes \relative c'' {
-  c4 a d e f2
-}
-voiceB = \notes \relative c' {
-  es4 f g as b2 
-}
-\score {
-  \context ChoirStaff <<
-    \new Staff <<
-	{
-	   \applyoutput  #(shift-ambitus 1.0)
-	    \voiceA
-	   } \\
-       {
-	   \voiceB
-       }
-    >>
-    \new Staff <<
-       {  \applyoutput #kill-ambitus \voiceA } \\
-       {  \applyoutput #kill-ambitus \voiceB }
-    >>
-  >>
-  \paper {
-    raggedright = ##t
-
-    \translator {
-	\VoiceContext
-      \consists Ambitus_engraver
-    }
-    }
-}
diff --git a/input/test/ancient-accidentals.ly b/input/test/ancient-accidentals.ly
deleted file mode 100644
index 9f68b951ab..0000000000
--- a/input/test/ancient-accidentals.ly
+++ /dev/null
@@ -1,55 +0,0 @@
-
-\header {
-texidoc = "@cindex Ancient Accidentals
-Accidentals are available in different ancient styles. This
-file lists all of them.
-"
-}
-
-\version "2.1.7"
-
-\score { 
-  \context Voice \notes\relative c {
-    \time 3/4
-	\property Staff.Accidental \set #'style = #'default
-	cisis''^"Accidental style = \#'default" cisis! cisis? |
-	cis cis! cis? | 
-	c c! c? |
-	ces ces! ces? |
-	ceses ceses! ceses? |
-	\break
-	
-	\property Staff.Accidental \set #'style = #'hufnagel
-	cisis^"Accidental style = \#'hufnagel" cisis! cisis? |
-	cis cis! cis? | 
-	c c! c? |
-	ces ces! ces? |
-	ceses ceses! ceses? |
-	\break
-	
-	\property Staff.Accidental \set #'style = #'medicaea
-	cisis^"Accidental style = \#'medicaea" cisis! cisis? |
-	cis cis! cis? | 
-	c c! c? |
-	ces ces! ces? |
-	ceses ceses! ceses? |
-	\break
-	
-	\property Staff.Accidental \set #'style = #'vaticana
-	cisis^"Accidental style = \#'vaticana" cisis! cisis? |
-	cis cis! cis? | 
-	c c! c? |
-	ces ces! ces? |
-	ceses ceses! ceses? |
-	\break
-	
-	\property Staff.Accidental \set #'style = #'mensural
-	cisis^"Accidental style = \#'mensural" cisis! cisis? |
-	cis cis! cis? | 
-	c c! c? |
-	ces ces! ces? |
-	ceses ceses! ceses? |
-	
-  }
-}
-
diff --git a/input/test/ancient-font.ly b/input/test/ancient-font.ly
deleted file mode 100644
index 5d71a461a4..0000000000
--- a/input/test/ancient-font.ly
+++ /dev/null
@@ -1,294 +0,0 @@
-\version "2.1.14"
-% TODO: split ancient-font into seperate files; possibly in
-% different locations.
-\header {
-texidoc = "@cindex Ancient Font
-Here is a display of many (all?) symbols that are
-included in LilyPond's support of ancient notation.
-"
-}
-
-
-upperStaff =  \context GregorianStaff = upperStaff <<
-  \context GregorianVoice <<
-    \property Score.timing = ##f
-%   \property Score.forceAccidental = ##t %%%%%%%% FIXME: what happened to this property?
-
-    \property Staff.StaffSymbol \override #'line-count = #4
-
-    \notes \transpose c c {
-	\property Staff.KeySignature \override #'style = #'vaticana
-	\property Staff.Accidental \override #'style = #'vaticana
-	\property Voice.NoteHead \override #'style = #'vaticana_punctum
-	\key es \major
-	\clef "vaticana_fa2"
-	c!1 des! e! f! ges!
-
-	\property Voice.NoteHead \override #'style = #'vaticana_inclinatum
-	a! b! ces'
-	\property Staff.BarLine \override #'bar-size = #3.0 \bar "|"
-%	\break % 1 (8*1)
-
-	\property Voice.NoteHead \override #'style = #'vaticana_quilisma
-	b! des'! ges! fes!
-	\breathe
-	\clef "vaticana_fa1"
-	\property Voice.NoteHead \override #'style = #'vaticana_plica
-	es d
-	\property Voice.NoteHead \override #'style = #'vaticana_reverse_plica
-	c d
-	\property Staff.BarLine \override #'bar-size = #3.0 \bar "|"
-%	\break %2 (8*1)
-
-	\property Voice.NoteHead \override #'style = #'vaticana_punctum_cavum
-	es f
-	\property Voice.NoteHead \override #'style = #'vaticana_lpes
-	g as
-	\property Voice.NoteHead \override #'style = #'vaticana_upes
-	bes as
-	\property Voice.NoteHead \override #'style = #'vaticana_vupes
-	g f
-	\property Voice.NoteHead \override #'style = #'vaticana_linea_punctum
-	\property Staff.BarLine \override #'bar-size = #2.0 \bar "|"
-%	\break % 3 (8*1)
-
-	es d
-	\property Voice.NoteHead \override #'style = #'vaticana_epiphonus
-	c d
-	\property Voice.NoteHead \override #'style = #'vaticana_cephalicus
-	es f
-
-	\property Staff.KeySignature \override #'style = #'medicaea
-	\property Staff.Accidental \override #'style = #'medicaea
-	\property Staff.Custos \override #'style = #'medicaea
-	\property Voice.NoteHead \override #'style = #'medicaea_punctum
-	\clef "medicaea_fa2"
-	ces! des!
-	\property Staff.BarLine \override #'bar-size = #3.0 \bar "|"
-%	\break % 4 (8*1)
-
-	e! f! ges!
-	\clef "medicaea_do2"
-	\property Voice.NoteHead \override #'style = #'medicaea_inclinatum
-	a! b! ces'!
-	\property Voice.NoteHead \override #'style = #'medicaea_virga
-	b! a!
-	\property Staff.BarLine \override #'bar-size = #3.0 \bar "|"
-%	\break % 5 (8*1)
-
-	ges! fes!
-	\clef "medicaea_fa1"
-	\property Voice.NoteHead \override #'style = #'medicaea_rvirga
-	e! des! ces!
-
-	\property Staff.KeySignature \override #'style = #'hufnagel
-	\property Staff.Accidental \override #'style = #'hufnagel
-	\property Staff.Custos \override #'style = #'hufnagel
-	\property Voice.NoteHead \override #'style = #'hufnagel_punctum
-	\clef "hufnagel_fa2"
-	ces! des! es!
-	\property Staff.BarLine \override #'bar-size = #3.0 \bar "|"
-%	\break % 6 (8*1)
-
-	fes! ges!
-	\clef "hufnagel_do2"
-	\property Voice.NoteHead \override #'style = #'hufnagel_lpes
-	as! bes! ces'!
-	\property Voice.NoteHead \override #'style = #'hufnagel_virga
-	bes! as!
-	\property Staff.BarLine \override #'bar-size = #3.0 \bar "|"
-%	\break % 7 (8*1)
-
-	ges! fes!
-	\clef "hufnagel_do_fa"
-	\property Voice.NoteHead \override #'style = #'hufnagel_punctum
-	es! des! ces! des! es! fes!
-	\bar "||"
-%	\break % 8 (8*1)
-
-	s32*1
-%	\break % 12 (32*1)
-    }
-  >>
->>
-
-lowerStaff =  \context MensuralStaff = lowerStaff <<
-  \context MensuralVoice <<
-    
-    % this is broken until further notice -- see refman
-    % \property Staff.StaffSymbol \override #'line-count = #5
-    \context Staff \applyoutput #(outputproperty-compatibility (make-type-checker 'staff-symbol-interface) 'line-count 5)
-
-    \notes \transpose c c {
-	\property Voice.autoBeaming = ##f
-	\property Voice.NoteHead \override #'style = #'neo_mensural
-	\property Voice.Rest \override #'style = #'neo_mensural
-	\key a \major
-
-% FIXME: lily crashes on some (invalid?) ligatures with:
-%   ERROR: In procedure gh_scm2int:
-%   ERROR: Wrong type argument in position 1: ()
-
-% FIXME: lily emits "Programming error: Infinity or NaN encountered"
-% on many ligatures such as BB.
-
-	cis'1 d'\breve gis'\breve e'\breve \[ e'\longa fis'\longa \]
-	\property Staff.forceClef = ##t
-	\clef "neo_mensural_c2"
-	cis1
-	\bar "|"
-%	\break % 2 (16*1)
-
-	\[ g\breve dis''\longa \]
-	b\breve \[ a\longa d\longa \]
-	\clef "petrucci_c2"
-%	\break % 4 (16*1)
-
-	fis1 ces1
-	\clef "petrucci_c2"
-	r\longa
-	\property Staff.forceClef = ##t
-	\clef "mensural_c2"
-	r\breve
-	\bar "|"
-%	\break % 5 (8*1)
-
-	r2
-	\clef "mensural_g"
-	r4 r8 r16 r16
-	\property Voice.NoteHead \override #'style = #'mensural
-	\property Voice.Stem \override #'flag-style = #'mensural
-	\property Voice.Stem \override #'thickness = #1.0
-	\property Voice.Rest \override #'style = #'mensural
-	\clef "petrucci_f"
-	c8 b, c16 b, c32 b, c64 b, c64 b,
-	d8 e  d16 e  d32 e  d64 e  d64 e
-	r\longa
-	\property Staff.forceClef = ##t
-	\clef "petrucci_f"
-	r\breve
-	\bar "|"
-%	\break % 6 (8*1)
-
-	r\breve 
-	\clef "mensural_f"
-	% FIXME: must set Voice.Stem flag-style to #'neo_mensural to avoid
-	% segmentation fault on r8/r16/r32.  (Strange: what has
-	% Voice.Stem flag-style to do with mensural rests?)
-	\property Voice.Stem \override #'flag-style = #'neo_mensural
-	% FIXME: produces warnings about "flag `neo_mensurald4' (or 3) not found".
-	r2 r4 r8 r16 r16
-	\property Voice.Stem \override #'flag-style = #'mensural
-	\property Staff.forceClef = ##t
-	\clef "mensural_f"
-	e\breve f g a1
-	\clef "mensural_g"
-%	\break % 7 (8*1)
-
-	\[ bes'!\longa a'!\longa c''!\longa \]
-	e'1 d' c' d' \bar "|"
-	\bar "|"
-%	\break % 9 (16*1)
-
-	bes'!\longa fis'!1 as'!1 ges'!\longa % lig
-	\property Staff.forceClef = ##t
-	\clef "mensural_g"
-	e'2 d' c' \bar "|"
-%	\break % 11 (16*1)
-
-	\property Staff.forceClef = ##t
-	\clef "petrucci_g"
-	c'2 d' e' f'
-	\clef "petrucci_g"
-	g' as'! bes'! cis''!
-	bes'! as'! gis'! fis'!
-	\property Staff.forceClef = ##t
-	\clef "mensural_g"
-	es'! des'! cis'!1 \bar "||"
-%	\break % 12 (8*1)
-    }
-  >>
->>
-
-\score {
-    \context Score <<
-	\upperStaff
-	\lowerStaff
-    >>
-    \paper {
-% do we want to keep these settings? -gp
-	linewidth = 17.25\cm
-	textheight = 26.0\cm
-	linethickness = #(/ staffspace 5.0)
-	indent = 0.0
-	\translator {
-	    \ScoreContext
-	    \accepts MensuralStaff
-	    \accepts GregorianStaff
-%	    timing = ##f %%%%%%%% FIXME: this has no effect
-	}
-	\translator {
-	    \VoiceContext
-	    \name MensuralVoice
-	    \alias Voice
-	    \remove Ligature_bracket_engraver
-	    \consists Mensural_ligature_engraver
-	    NoteHead \set #'style = #'mensural
-%	    Stem \set #'flag-style = #'mensural %%%%%%%% FIXME: this core dumps
-	    Stem \set #'thickness = #1.0
-	    Rest \set #'style = #'mensural
-	    autoBeaming = ##f
-	}
-	\translator {
-	    \VoiceContext
-	    \name GregorianVoice
-	    \alias Voice
-	    \remove Ligature_bracket_engraver
-%	    \consists Gregorian_ligature_engraver %%%%%%%% TODO: not yet implemented
-	    NoteHead \set #'style = #'vaticana_punctum
-	    autoBeaming = ##f
-	}
-	\translator {
-	    \StaffContext
-	    \name MensuralStaff
-	    \alias Staff
-	    \accepts MensuralVoice
-	    \consists Custos_engraver
-	    TimeSignature \set #'style = #'mensural
-	    KeySignature \set #'style = #'mensural
-	    Accidental \set #'style = #'mensural
-	    Custos \set #'style = #'mensural
-	    Custos \set #'neutral-position = #3
-	    Custos \set #'neutral-direction = #-1
-	    Custos \set #'adjust-if-on-staffline = ##t
-	    clefGlyph = #"clefs-petrucci_c2"
-	    clefPosition = #-2
-	    clefOctavation = #0 
-	}
-	\translator {
-	    \StaffContext
-	    \name GregorianStaff
-	    \alias Staff
-	    \accepts GregorianVoice
-	    \consists Custos_engraver
-	    \remove Time_signature_engraver
-	    StaffSymbol \set #'thickness = #2.0
-	    StaffSymbol \set #'line-count = #4
-	    KeySignature \set #'style = #'vaticana
-	    Accidental \set #'style = #'vaticana
-	    Custos \set #'style = #'vaticana
-	    Custos \set #'neutral-position = #4
-	    Custos \set #'neutral-direction = #-1
-	    Custos \set #'adjust-if-on-staffline = ##t
-	    clefGlyph = #"clefs-vaticana_do"
-	    clefPosition = #1
-	    clefOctavation = #0 
-	}
-	\translator {
-	    \RemoveEmptyStaffContext
-	    \accepts MensuralVoice
-	    \accepts GregorianVoice
-        }
-    }
-}
-
diff --git a/input/test/ancient-time.ly b/input/test/ancient-time.ly
deleted file mode 100644
index 28b24283f3..0000000000
--- a/input/test/ancient-time.ly
+++ /dev/null
@@ -1,17 +0,0 @@
-\version "2.1.7"
-% TODO: move stuff from ancient-font into here?  See comment
-% for ancient-font.ly
-\header {
-texidoc="@cindex Ancient Time Signatures
-Should use old style.
-"
-}
-
-\score {
-  \notes { 
-    \property Staff.TimeSignature \override #'style = #'neo_mensural
-    s1 
-  }
-	\paper {raggedright = ##t}
-}
-
diff --git a/input/test/bagpipe.ly b/input/test/bagpipe.ly
deleted file mode 100644
index 8de938edb0..0000000000
--- a/input/test/bagpipe.ly
+++ /dev/null
@@ -1,87 +0,0 @@
-\version "2.1.7"
-
-\header {
- texidoc = "@cindex Bagpipe Music
-Here's an example of bagpipe music.
-"
-}
-
-% doen't work??  
-%#(add-to-grace-init "Voice" 'Stem 'font-relative-size )
-
-\paper {
-  linewidth = 14.0 \cm
-  indent = 0.0 \cm
-  \translator { \StaffContext
-  	TimeSignature \override #'style = #'C
-%  	TimeSignature \override #'visibility-function = #begin-of-line-visible
-  	TimeSignature \override #'break-visibility = #begin-of-line-visible
-  }	
-}
-
-taor =  \notes{ \grace {  g32[ d g e]}}
-grip =  \notes{ \grace {  g32[ b g ]}}
-thrd =  \notes{ \grace {  g32[ d c] }}
-birl =  \notes{ \grace {  g32[ a g] }}
-gstd =  \notes{ \grace {  g'32[ d g] }}
- lgg = \notes{ \grace { g32 }}
- lag = \notes{ \grace { a32 }}
- fgg = \notes{ \grace {  f32[ g'32] }}
-dblb =  \notes{ \grace {  g'32[ b d] }}
-dblc =  \notes{ \grace {  g'32[ c d] }}
-dble =  \notes{ \grace {  g'32[ e f] }}
-dblf =  \notes{ \grace {  g'32[ f g'] }}
-dblg =  \notes{ \grace {  g'32[ f] }}
-dbla =  \notes{ \grace {  a'32[ g'] }}
-cg   = \notes{ \grace { c32 }}
-eg   = \notes{ \grace { e32 }}
-gg   = \notes{ \grace { g'32 }}
-dg   = \notes{ \grace { d32 }}
-hag  = \notes{ \grace { a'32 }}
-gefg =  \notes{ \grace {  g'32[ e f] }}
-efg  = \notes{ \grace {  e32[ f] }}
-gdcg =  \notes{ \grace {  g'32[ d c]}}
-gcdg =  \notes{ \grace {  g'32[ c d]}}
-
-
-
-% 
-\score {
-  \notes  { \time 6/8 \partial 4
-
- #(add-grace-property 'Voice 'Stem 'length 6)
- #(add-grace-property 'Voice 'Stem 'stroke-style '())
-
-	    
-  \tieUp
-  \slurUp
-f4 |
-\gg f4 e8 \thrd d4. |
-\eg a4.(a4) d8 |
-\gg d4 f8 \dble e4. ( | \noBreak
-e8) d4 \gg d4 e8 |
-
-\break
-\time 9/8
-\dblf f2.( f4) d8 |
-\time 6/8
-\dblg g'4 a'8 \gg a'4. |
-\thrd d4.( d4) \eg a8 |
-\time 9/8
-\dble e4 \lag e8 \gg  e16[ d8. e8] \gg f4 g'8 |
-
-\break
-\time 6/8
-\gg f4 e8 \thrd d4. |
-\eg a4.( a4) d8 |
-\dblg g'4 a'8 \gg a'4. |
-\thrd d4.( d4) f8 |
-
-\break
-\dblg g'4 e4 \dblf  f8.[ e16] |
-\thrd d4.( d4) \cg d8 |
-\gg c4 e8 \thrd d4.( |
-d4.) \gdcg d4.
-  }
-}
-
diff --git a/input/test/bar-always.ly b/input/test/bar-always.ly
deleted file mode 100644
index c62a08cb36..0000000000
--- a/input/test/bar-always.ly
+++ /dev/null
@@ -1,19 +0,0 @@
-
-\version "2.1.7"
-\header {
-
-    texidoc = "@cindex Bars Always
-
-By setting @code{barAlways} and @code{defaultBarType,} you can automatically insert barlines everywhere."
-
-}
-
-
-\score {
-	\notes \relative c''{
-		\property Score.barAlways = ##t
-		\property Score.defaultBarType = ":|:"
-		c4 c4 c4 c4 }
-	\paper{raggedright = ##t}
-}
-
diff --git a/input/test/bar-lines-lyric-only.ly b/input/test/bar-lines-lyric-only.ly
deleted file mode 100644
index 2bfdbdadeb..0000000000
--- a/input/test/bar-lines-lyric-only.ly
+++ /dev/null
@@ -1,40 +0,0 @@
-\version "2.1.21"
-\header { texidoc = "@cindex Bar line lyric only
-You can move around @code{Bar_engraver} and
-@code{Span_bar_engraver} if you want bar lines on lyrics. "
-}
-
-\score {
-\notes \relative c' \context ChoirStaff <<
- \new Staff { c1 c1 c1}
- \context Lyrics \lyrics <<
-  { bla1 die bla }
-  { foo bar foo }
-  { foo bar foo }  
- >>
- \new Staff { c1 c1 c1} 
- >>
-
-
-\paper  {
-	raggedright = ##t
-\translator {
-  \LyricsContext
-  \consists Bar_engraver
-  % need procedure, since lyrics doesn't have a staff_sym engraver.
-  BarLine \override #'bar-size-procedure = #(lambda (x) 3.0)
-}
-\translator {
-  \LyricsContext
-  \consists "Span_bar_engraver"
-}
-\translator{
-  \ChoirStaffContext
-  \remove "Span_bar_engraver"
-}
-\translator {
-  \StaffContext
-  \remove "Bar_engraver"
-}
-}}
-
diff --git a/input/test/bar-lines.ly b/input/test/bar-lines.ly
deleted file mode 100644
index e5b26f27a2..0000000000
--- a/input/test/bar-lines.ly
+++ /dev/null
@@ -1,22 +0,0 @@
-
-\version "2.1.7"
-\header {
-    texidoc = "@cindex Bar Lines
-Different types of bar lines demonstrated.
-" }
-% TODO: dashed "|", HJJ
-\score
-{
-\notes \relative c'' {
-c4
-\bar "|." c
-\bar "|:"c
-\bar "||"c
-\bar ":|"  c
-\bar ".|" c
-\bar ".|." c
-\bar "|"  c
-\bar ":" c
-} 
-\paper{raggedright = ##t}
-}
diff --git a/input/test/bar-number-every-five-reset.ly b/input/test/bar-number-every-five-reset.ly
deleted file mode 100644
index 404a3108c5..0000000000
--- a/input/test/bar-number-every-five-reset.ly
+++ /dev/null
@@ -1,29 +0,0 @@
-\version "2.1.7"
-
-\header {
-    texidoc = "@cindex Bar Number Every Fifth Reset
-If you would like the bar numbers to appear at regular intervals, but
-not starting from measure zero, you can use the context function,
-@code{set-bar-number-visibility}, to automatically set
-@code{barNumberVisibility} so that the bar numbers appear at regular
-intervals, starting from the @code{\applycontext}.
-"
-
-}
-
-resetBarnum = \context Score \applycontext
-  #(set-bar-number-visibility 4)
-\score {
-    <<
-        \notes \transpose c c'' {
-	    \property Score.BarNumber \override #'break-visibility =#end-of-line-invisible
-	    \property Score.RehearsalMark \override #'padding = #2.5
-	    \mark "A" \resetBarnum
-	    \repeat unfold 10 c1
-	    \mark \default \resetBarnum
-	    \repeat unfold 8 c
-            \bar "|."
-        }
-    >>
-\paper{raggedright = ##t}
-}
diff --git a/input/test/bar-number-regular-interval.ly b/input/test/bar-number-regular-interval.ly
deleted file mode 100644
index e77d3dcab4..0000000000
--- a/input/test/bar-number-regular-interval.ly
+++ /dev/null
@@ -1,22 +0,0 @@
-\header {
-    texidoc = "
-
-Bar numbers can also be printed at regular intervals.
-
-" }
-
-\version "2.1.21"
-
-\score {
-    \context Staff \notes \transpose  c c' {
-	\property Score.BarNumber \override #'break-visibility = #end-of-line-invisible
-	\property Score.barNumberVisibility = #(every-nth-bar-number-visible 4)
-	\property Score.BarNumber \override #'print-function =
-	#(make-molecule-boxer 0.1 0.25 0.25 Text_item::print)
-	\property Score.BarNumber \override #'font-size = #2
-	
-	\repeat unfold 9 { c1 } \bar "|."
-    }
-}
-
-
diff --git a/input/test/bar-number-show-all.ly b/input/test/bar-number-show-all.ly
deleted file mode 100644
index 30b8340de2..0000000000
--- a/input/test/bar-number-show-all.ly
+++ /dev/null
@@ -1,19 +0,0 @@
-
-\version "2.1.7"
-\header{
-    texidoc="@cindex Bar Number Show All
-Second line has bar numbers on start of every measure.
-" }
-
-\score{
-    \notes\relative c'{
-	c1 c c
-	\property Score.BarNumber \override
-	    #'break-visibility = #end-of-line-invisible
-	\break
-	c c c
-    }
-	\paper{ raggedright = ##t }
-}
-
-
diff --git a/input/test/beam-auto-4-8.ly b/input/test/beam-auto-4-8.ly
deleted file mode 100644
index 3e74419f34..0000000000
--- a/input/test/beam-auto-4-8.ly
+++ /dev/null
@@ -1,36 +0,0 @@
-
-\version "2.1.7"
-% keep for now, although merging into beam-auto-override is a possibility.
-\header {
-	texidoc = "@cindex Auto Beaming 4/8
-You can override LilyPond's automatic beaming.
-"
-}
-
-\score{
-   \notes\relative c''{
-     \time 4/8
-
-%{
-    the default for 4/8 (see scm/auto-beam.scm)
-     ----  --------
-     |  |  |   |--|
-    x| x| x|  x| x|
-%}
-     c8 c c c16 c
-
-
-%{
-    user override
-     --------------
-     |  |  |   |--|
-    x| x| x|  x| x|
-%}
-     \property Voice.autoBeamSettings \override #'(end * * * *) = #(ly:make-moment 2 4)
-     c8 c c c16 c
-
-  }
-\paper{raggedright = ##t}
-}
-    
-
diff --git a/input/test/beam-auto-override.ly b/input/test/beam-auto-override.ly
deleted file mode 100644
index eebe93b628..0000000000
--- a/input/test/beam-auto-override.ly
+++ /dev/null
@@ -1,54 +0,0 @@
-
-\version "2.1.7"
-\header {
-
-    texidoc = "@cindex Auto Beaming Override
-
-This shows how auto-beaming settings can be overridden.
-
-The auto-beamer will only engrave beams that end when:
-@itemize @bullet
-@item  a rest is encountered
-@item
- another beam (entered manually) is encountered
-@item
- there's a 'gap' in the beam note's durations
-@end itemize
-
-The beam will be ended also when now % beamAutoEnd = 0.
-
-"
-
-}
-
-%% TODO: check doc string. -hw
-
-\score{
-    \notes \relative c''{
-    	\time 2/4
-	% one beam per measure
-      	c8 c c c
-      	c16 c c c c c c c
-	% from here on consider ending beam every 1/4 note
-	#(override-auto-beam-setting '(end * * * *) 1 4)
-
-      	c8 c c c
-	% manually override autobeam with weird beaming
-      	c8  c[ c] c
-      	c8 c c r
-      	c8 c c4
-      	r8 c c c
-	% no autobeaming
-	\property Voice.autoBeaming = ##f
-      	c8 c c c
-    }
-    \paper{
-      	\translator{
-	    \VoiceContext
-	    autoBeamSettings \override #'(end * * * *) = #(ly:make-moment 1 2)
-	}
-    }
-\paper{raggedright = ##t}
-}
-
-
diff --git a/input/test/beam-auto.ly b/input/test/beam-auto.ly
deleted file mode 100644
index b2735f8c71..0000000000
--- a/input/test/beam-auto.ly
+++ /dev/null
@@ -1,63 +0,0 @@
-
-\version "2.1.7"
-\header{
-	texidoc = "@cindex Beaming Presets
-The auto-beam engraver has presets for common time signatures. " }
-\score{
-    \notes \relative c''{
-
-    	\time 1/2
-    	c8 c c c
-	c16 c c c c c c c
-	c32 c c c c c c c c c c c c c c c
-    	\time 1/4
-    	c8 c 
-	c16 c c c
-	c32 c c c c c c c
-    	\time 1/8
-    	c8
-	c16 c
-	c32 c c c
-
-	\time 2/2
-    	c8 c c c c c c c
-	c16 c c c c c c c c c c c c c c c
-	c32 c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c
-	\time 2/4
-	c8 c c c
-	c16 c c c c c c c
-	c32 c c c c c c c c c c c c c c c
-	\time 2/8
-	c8 c
-	c16 c c c
-	c32 c c c c c c c
-	\time 3/2
-	c8 c c c c c c c c c c c
-	c16 c c c c c c c c c c c c c c c c c c c c c c c
-	\time 3/4
-	c8 c c c c c
-	c16 c c c c c c c c c c c
-	c32 c c c c c c c c c c c c c c c c c c c c c c c
-	\time 3/8
-	c8 c c
-	c16 c c c c c
-	c32 c c c c c c c c c c c
-	\time 4/4
-	c8 c c c c c c c
-	c16 c c c c c c c c c c c c c c c
-	c32 c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c
-	\time 4/8
-	c8 c c c
-	c16 c c c c c c c
-	c32 c c c c c c c c c c c c c c c
-	\time 6/8
-	c8 c c c c c
-	c16 c c c c c c c c c c c
-	\time 9/8
-	c8 c c c c c c c c
-	c16 c c c c c c c c c c c c c c c c c
-    }
-    \paper{
-    }
-}
-
diff --git a/input/test/beam-control.ly b/input/test/beam-control.ly
deleted file mode 100644
index 1f31ae3b26..0000000000
--- a/input/test/beam-control.ly
+++ /dev/null
@@ -1,26 +0,0 @@
-
-\version "2.1.7"
-\header{
-    texidoc="@cindex Beam Position Control
-
-Beam positions may be controlled manually, by setting @code{positions} in the @code{Beam} grob.
-
-" }
-\score { 
-    \context Voice \notes\relative c {
-	%% from upper staffline (position 4) to centre (position 0)
-	\property Voice.Beam \override #'positions = #'(2 . 0)
-	 c'8[ c] 
-	
-	%% from center to one above centre (position 2)
-	\property Voice.Beam \override #'positions = #'(0 . 1)
-	 c[ c]
-	
-	%% normal beam-algorithm
-	\property Voice.Beam \revert #'positions
-	\property Voice.Beam \revert #'positions
-	 c[ e]  e[ c]
-  }
-\paper{raggedright = ##t}
-}
-
diff --git a/input/test/beam-count.ly b/input/test/beam-count.ly
deleted file mode 100644
index b947c29cf8..0000000000
--- a/input/test/beam-count.ly
+++ /dev/null
@@ -1,27 +0,0 @@
-
-\version "2.1.7"
-\header{
-	texidoc="@cindex Beam Count
-
-You can alter the number of stems in a beam.  Here we see
-two sets of four 32nds joined as if they were 8th notes.
-
-" }
-
-fragment = \notes {
-  \property Voice.autoBeamSettings
-    \set #'(end * * * *) = #(ly:make-moment 1 4)
-  f32 g a b b a g f
-
-  f32 g a b 
-  \property Voice.stemRightBeamCount = #1  b
-  \property Voice.stemLeftBeamCount = #1 a
-   g f
-}
-
-
-\score {
-  \notes\relative c \fragment
-  \paper { raggedright = ##t}  
-}
-
diff --git a/input/test/beam-dir-functions.ly b/input/test/beam-dir-functions.ly
deleted file mode 100644
index 23f3bfa803..0000000000
--- a/input/test/beam-dir-functions.ly
+++ /dev/null
@@ -1,50 +0,0 @@
-
-\version "2.1.7"
-\header {
-  texidoc = "@cindex Beam Dir Functions
-
-There are several ways to calculate the direction of a beam:
-@table @code
-@item majority
-number count of up or down notes
-@item mean
-mean center distance of all notes
-@item median
-mean centre distance weighted per note
-@end table
-
-You can spot the differences of these settings from these simple
-examples:
-
-These beam direction functions are defined in @file{scm/beam.scm}.  If
-your favourite algorithm isn't one of these, you can hook up your own.
-"
-}
-
-\paper { raggedright = ##t}
-\score {
-  \notes\relative c'' {\time 3/4
-    \property Voice.Beam \set #'dir-function = #beam-dir-majority
-      c8[ g]
-    \property Voice.Beam \set #'dir-function = #beam-dir-mean
-      c[ g] 
-    \property Voice.Beam \set #'dir-function = #beam-dir-median
-      c[ g]
-    
-    \time 3/8
-    \property Voice.Beam \set #'dir-function = #beam-dir-majority
-      c8[ c g]
-    \property Voice.Beam \set #'dir-function = #beam-dir-mean
-      c[ c g] 
-    \property Voice.Beam \set #'dir-function = #beam-dir-median
-      c[ c g] 
-  }
-\paper{raggedright = ##t}
-}
-
-%% Local variables:
-%% LilyPond-indent-level:2
-%% End:
-
-
-
diff --git a/input/test/beam-isknee.ly b/input/test/beam-isknee.ly
deleted file mode 100644
index 1fb963c782..0000000000
--- a/input/test/beam-isknee.ly
+++ /dev/null
@@ -1,26 +0,0 @@
-
-\version "2.1.7"
-\header{
-	texidoc="@cindex Beam Isknee
-LilyPond can beam across a Piano Staff.
-" }
-\score{
-	\context PianoStaff <<
-	\context Staff=one \notes\relative c'{
-		s1
-	}
-	\context Staff=two \notes\relative c'{
-		\clef bass
-% no knee
-		\stemUp  c8[ \change Staff=one \stemDown g'16 f]
-		s8
-		s2
-	}
-	>>
-	\paper{
- 		raggedright = ##t
-	}
-}
-
-
-
diff --git a/input/test/beam-neutral-direction.ly b/input/test/beam-neutral-direction.ly
deleted file mode 100644
index c550a6ab17..0000000000
--- a/input/test/beam-neutral-direction.ly
+++ /dev/null
@@ -1,24 +0,0 @@
-
-\version "2.1.7"
-\header{
-	texidoc="@cindex Beam Neutral Direction
-When a beam falls in the middle of the staff, LilyPond normally
-prints the beam pointing down.  However, this behaviour can be
-altered if desired.
-" }
-
-fragment = \notes {
-   b''8[ b]
-  \property Voice.Beam \set #'neutral-direction = #-1
-   b[ b]
-  \property Voice.Beam \set #'neutral-direction = #1
-   b[ b]
-}
-
-\paper { raggedright = ##t} 
-
-\score {
-  \notes\relative c \fragment
-  \paper {raggedright = ##t }  
-}
-
diff --git a/input/test/beam-rest.ly b/input/test/beam-rest.ly
deleted file mode 100644
index efba63ec2a..0000000000
--- a/input/test/beam-rest.ly
+++ /dev/null
@@ -1,20 +0,0 @@
-
-\version "2.1.7"
-
-\header{
-texidoc="@cindex Beam Over Rests
-Beams over rests.
-" }
-
-\score{
-    \notes\relative c''{
-	  r4  r8[ g a]
-	   bes8[ r16 f g a]
-	   bes8[ r16 \property Voice.stemLeftBeamCount = #1 f g a]
-    }
-
-    \paper{
-        raggedright = ##t
-    }
-}
-
diff --git a/input/test/blank-notes.ly b/input/test/blank-notes.ly
deleted file mode 100644
index e8b10ac47b..0000000000
--- a/input/test/blank-notes.ly
+++ /dev/null
@@ -1,34 +0,0 @@
-
-\version "2.1.7"
-% possible rename to invis-notes.ly
-% check if other documents call this "blank notes", though.  I think
-% invisible notes sounds better, but whatever it is, it should be
-% consistent.
-\header {
-    texidoc = "@cindex Invisible Notes
-@cindex Blank Notes
-You can suppress printing of LilyPond output.  This example shows you how to
-print invisible (or blank) notes.  This can be very useful when you want to
-do wierd tricks with LilyPond (especially with slurs, since you can't attach
-a slur to a rest or spacer rest).
-" }
-
-blanknotes = { \property Voice.NoteHead
-	       \override #'transparent  = ##t
-	       \property Voice.Stem
-	       \override #'transparent = ##t }
-unblanknotes = { \property Voice.NoteHead
-		 \revert #'transparent
-		 \property Voice.Stem
-		 \revert #'transparent }
-
-
-\score {
-    \notes \relative c'' { c4 d4 
-    \blanknotes e4 f4   \unblanknotes
-	     g4 a 
-	     }
-\paper{raggedright = ##t}
-}
-
-
diff --git a/input/test/blank-paper-tab.ly b/input/test/blank-paper-tab.ly
deleted file mode 100644
index 29cb3549e1..0000000000
--- a/input/test/blank-paper-tab.ly
+++ /dev/null
@@ -1,24 +0,0 @@
-\version "2.1.7"
-\header {
-    
-texidoc = "@cindex Blank Paper Tab
-Blank music paper, another example: empty staffs and a
-tablature staff. " }
-
-emptymusic = \notes { \repeat unfold 4  { s1\break }  \bar "|." }
-
-\score  {
-\notes  <<
-	\context Staff \emptymusic
-	\context TabStaff \emptymusic
-	>>
-
-
-  \paper {
-    \translator {
-      \ScoreContext
-      \remove Bar_number_engraver
-    }
-  }
-}
-
diff --git a/input/test/blank-paper.ly b/input/test/blank-paper.ly
deleted file mode 100644
index b1731df8f5..0000000000
--- a/input/test/blank-paper.ly
+++ /dev/null
@@ -1,24 +0,0 @@
-\version "2.1.7"
-\header {
-  texidoc="@cindex Blank Paper
-
-Blank music paper with clefs. Change the repeat count to get more staves.
-
-" }
-\score {
-  \notes {
-    % \clef violin
-    \clef bass 
-    \repeat unfold 3 { c1 \break }
-  }
-  \paper {
-    \translator {
-      \ScoreContext
-      TimeSignature \override #'transparent = ##t
-      NoteHead \override #'transparent = ##t
-      defaultBarType = #""
-      \remove Bar_number_engraver
-    }
-  }
-}
-
diff --git a/input/test/boxed-molecule.ly b/input/test/boxed-molecule.ly
deleted file mode 100644
index 0d007bde7e..0000000000
--- a/input/test/boxed-molecule.ly
+++ /dev/null
@@ -1,28 +0,0 @@
-
-\version "2.1.21"
-\header {
-texidoc = "@cindex Boxed Molecule
-
-You can override the print-function to draw a box around arbitrary grobs. " }
-
-
- \score { \notes \relative c''  {
-
- \property Voice.TextScript \override #'print-function =
-   #(make-molecule-boxer 0.1 0.3 0.2 Text_item::print)
-
-   c'4^"foo"
-
-\property Voice.Stem \override #'print-function =
-   #(make-molecule-boxer 0.05 0.25 0.25 Stem::print)
-
-\property Score.RehearsalMark \override #'print-function =
-   #(make-molecule-boxer 0.15 0.3 0.3 Text_item::print)
-      c8
-\property Voice.Stem \revert #'print-function
-
-      c4. c4 \mark "F" c1 
-   }
-\paper{raggedright = ##t}
-}
-
diff --git a/input/test/caps.ly b/input/test/caps.ly
deleted file mode 100644
index 193fea589b..0000000000
--- a/input/test/caps.ly
+++ /dev/null
@@ -1,18 +0,0 @@
-
-\version "2.1.21"
-\header {
-texidoc =  "@cindex Capital Letters
-You can set the font to use small caps.
-" }
-
-shapeSC   = \property Lyrics.LyricText \override #'font-shape = #'caps
-shapeNorm = \property Lyrics.LyricText \revert   #'font-shape
-
-\score { <<
-  \notes \relative c'' { c4 c4 c8 c8 c8 }
-  \lyrics \context Lyrics { 
-    what4 is4 \shapeSC The8  Ma -- trix? }
-  >>
-  \paper { raggedright = ##t}
-}
-
diff --git a/input/test/cautionaries.ly b/input/test/cautionaries.ly
deleted file mode 100644
index d5d690001a..0000000000
--- a/input/test/cautionaries.ly
+++ /dev/null
@@ -1,20 +0,0 @@
-\version "2.1.7"
-\header{
-	texidoc="@cindex Cautionary Accidentals
-LilyPond can display cautionary accidentals in different ways.
-" }
-\score { \notes \context Staff \transpose c c'' {
-  \key d \major
-%  \property Staff.autoReminders = #'cautionary
-  \property Staff.Accidental \override #'font-size = #0
-  <dis c>1 cis?2 d?
-  \property Staff.Accidental \override #'cautionary-style = #'smaller
-  <dis c>1 cis?2 d?
-  \property Staff.Accidental \override #'cautionary-style = #'parentheses
-  <dis c>1 cis?2 d?
-
-}
-\paper{raggedright = ##t}
-}
-
-
diff --git a/input/test/chord-names-german.ly b/input/test/chord-names-german.ly
deleted file mode 100644
index 896fea3dec..0000000000
--- a/input/test/chord-names-german.ly
+++ /dev/null
@@ -1,36 +0,0 @@
-\version "2.1.7"
-\header  {
-    texidoc = "@cindex Chord Names German
-By setting @code{ChordNames.chordRootNamer}, the root
-of the chord may be named with a different function.
-
-Setting @code{\germanChords} gives true german chord-names,
-@code{\semiGermanChords} gives semi-german chord-names - - with Bb and
-keeping the english names.
-
-
-" }
-
-scm = \chords {
-    c1/c cis/cis
-    % yeah, we get the idea. -hwn
-    
-    % cisis/cisis ces/ces ceses/ceses
-    b/b bis/bis bes/bes
-    % beses/beses
-} 
-\score {
-\notes <<
-    \context ChordNames { \scm }
-    \new ChordNames {
-	\property ChordNames.instrument = #"german"
-	\germanChords \scm }
-    \new ChordNames {
-	\property ChordNames.instrument =#"semi-german"
-	\semiGermanChords \scm }
-    \context Voice {  \scm } >>
-\paper {
-    raggedright = ##t 
-    \translator {\ChordNamesContext \consists Instrument_name_engraver }}
-
-}
diff --git a/input/test/chord-names-jazz.ly b/input/test/chord-names-jazz.ly
deleted file mode 100644
index d89f22b3c7..0000000000
--- a/input/test/chord-names-jazz.ly
+++ /dev/null
@@ -1,145 +0,0 @@
-\version "2.1.7"
-
-
-\header {
-
-texidoc = " Chord names are generated from a list pitches.  The
-functions constructing the names are customisable. This file shows
-Jazz chords, following Ignatzek (1995), page 17 and 18, Banter chords,
-and an alternative Jazz  chord notation.
-
-
-"
-
-}
-
-chs = \notes \transpose c' c' 
-{
-	<c e g>1
-	<c es g>% m = minor triad
-	<c e gis>
-	<c es ges> \break
-	<c e g bes>
-	<c es g bes>
-	<c e g b> 		% triangle = maj
-	<c es ges beses> 
-	<c es ges b> \break
-	<c e gis bes>
-	<c es g b>
-	<c e gis b> 
-	<c es ges bes>\break
-	<c e g a>   % 6 = major triad with added sixth
-	<c es g a>  % m6 = minor triad with added sixth
-	<c e g bes d'> 
-	<c es g bes d'> \break
-	<c es g bes d' f' a' >
-	<c es g bes d' f' >
-	<c es ges bes d' > 
-	<c e g bes des' > \break
-	<c e g bes dis'>
-	<c e g bes d' f'>
-	<c e g bes d' fis'>
-	<c e g bes d' f' a'>\break
-	<c e g bes d' fis' as'>
-	<c e gis bes dis'>
-	<c e g bes dis' fis'>
-	<c e g bes d' f' as'>\break
-	<c e g bes des' f' as'>
-	<c e g bes d' fis'>
-	<c e g b d'>
-	<c e g bes d' f' as'>\break
-	<c e g bes des' f' as'>
-	<c e g bes des' f' a'>
-	<c e g b d'>
-	<c e g b d' f' a'>\break
-	<c e g b d' fis'>
-	<c e g bes des' f ' a'>
-	<c f g>
-	<c f g bes>\break
-	<c f g bes d'>
-	<c e g d'>	% add9
-	<c es g f'>
-}
-
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-% alternate Jazz notation
-
-efullmusicJazzAlt = \notes
-{
-    <c e gis>1-\markup { "+" }
-    <c e g b>-\markup { \normal-size-super
-    %			  \override #'(font-family . math) "N" }
-			  \override #'(font-family . math) "M" }
-    %%c:3.5.7 = \markup { \override #'(font-family . math) "M" }
-    %%c:3.5.7 = \markup { \normal-size-super "maj7" }
-
-   <c es ges>-\markup { \super "o" } % should be $\circ$ ?
-   <c es ges bes>-\markup { \super \combine "o" "/" }
-   <c es ges beses>-\markup { \super  "o7" }
-}
-
-efullJazzAlt = #(sequential-music-to-chord-exceptions efullmusicJazzAlt #f)
-
-epartialmusicJazzAlt = \notes{
-    <c d>1-\markup { \normal-size-super "2" }
-    <c es>-\markup { "m" }
-    <c f>-\markup { \normal-size-super "sus4" }
-    <c g>-\markup { \normal-size-super "5" }
-    
-    %% TODO, partial exceptions
-    <c es f>-\markup { "m" }-\markup { \normal-size-super "sus4" }
-    <c d es>-\markup { "m" }-\markup { \normal-size-super "sus2" }
-}
-
-epartialJazzAlt = #(sequential-music-to-chord-exceptions epartialmusicJazzAlt #f)
-
-jazzAltProperties =
-
-\sequential { 
-	    \property ChordNames.majorSevenSymbol = #whiteTriangleMarkup
-	    \property ChordNames.chordNameSeparator = #(make-simple-markup  "/")
-	    \property ChordNames.chordNameExceptionsFull = #efullJazzAlt
-	    \property ChordNames.chordNameExceptionsPartial = #epartialJazzAlt
-	    \property ChordNames.chordNameFunction = #jazz-chord-names
-}
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
-banterProperties = \sequential { 
-	    \property ChordNames.chordNameFunction = #banter-chord-names
-}
-
-\score{
-    <<
-	\new ChordNames {
-	    \property ChordNames.instrument = #"Ignatzek (default)"
-	    \property ChordNames.instr = #"Def"
-	    \chs }
-	\new ChordNames {
-	    \property ChordNames.instrument = #"Alternative"
-	    \property ChordNames.instr = #"Alt"
-	    \jazzAltProperties
-	    \chs }
-
-	% This is the banter style.
-	% it gives exceedingly verbose (wide) names
-	% making this file take up to 4 pages.
-	
-%{
-		\new ChordNames  {
-	    \banterProperties
-	    \chs
-	    }
-%}
-	\new Staff \notes \transpose c c' { \chs }
-    >>
-    \paper{
-	indent = 3.\cm
-	\translator { 
-	    \ChordNamesContext
-	    \consists Instrument_name_engraver
-	}
-    }
-}
-	
diff --git a/input/test/chord-names-no-inversions.ly b/input/test/chord-names-no-inversions.ly
deleted file mode 100644
index 6d9ab639c2..0000000000
--- a/input/test/chord-names-no-inversions.ly
+++ /dev/null
@@ -1,19 +0,0 @@
-\version "2.1.7"
-\header { texidoc= "@cindex Chord Names No Inversions
-Chord names don't attempt to find inversions and
-bass notes. " }
-
-scheme = \notes {
-  <c' e' g'>1
-  <e' g' c''>
-  <e e' g' c''>
-}
-
-\score {
-  <<
-    \context ChordNames \scheme
-    \context Staff \scheme
-  >>
-  \paper { raggedright = ##t}
-}
-
diff --git a/input/test/chords-without-melody.ly b/input/test/chords-without-melody.ly
deleted file mode 100644
index 36adb60c85..0000000000
--- a/input/test/chords-without-melody.ly
+++ /dev/null
@@ -1,29 +0,0 @@
-\version "2.1.7"
-\header {
-texidoc = "Jazz chords can also be used without notes."
-}
-
-\score{
-	\context ChordNames \chords{
-
-		\repeat volta 2 {
-			f1:maj f:7 bes:7
-			c:maj  es
-		}
-	}
-	\paper{
-		\translator{
-			\ChordNamesContext
-
-			BarLine \override #'bar-size = #4
-
-			
-			\consists Bar_engraver
-			\consists "Volta_engraver"
-		}
-	raggedright = ##t
-	}
-}
-
-
-
diff --git a/input/test/clef-8-syntax.ly b/input/test/clef-8-syntax.ly
deleted file mode 100644
index 45a6365cde..0000000000
--- a/input/test/clef-8-syntax.ly
+++ /dev/null
@@ -1,21 +0,0 @@
-
-\version "2.1.7"
-\header {
-    texidoc = "@cindex Chord Octavation
-Appending @code{_8} or @code{^8} to a clef name will
-add an octavation sign to the clef, although the clef
-name needs to be in quotes (such as \"treble^8\").
-" }
-
-\score { 
-  \context Voice \notes\relative c {
-  \clef "bass_8" c4 c c c |
-  \clef "treble^8" c'''4 c c c |
-  }
-  \paper {
-    raggedright = ##t
-  }  
-  \midi { }
-}
-
-
diff --git a/input/test/clef-end-of-line.ly b/input/test/clef-end-of-line.ly
deleted file mode 100644
index b95b424373..0000000000
--- a/input/test/clef-end-of-line.ly
+++ /dev/null
@@ -1,34 +0,0 @@
-\version "2.1.7"
-\header {
-
-    texidoc = "@cindex Clef End of Line
-Scales, but with clef and key signature at the end of the line.
-" }
-
-\score {
-    \notes \transpose c c' {
-	\property Staff.Clef \set #'break-visibility = #end-of-line-visible
-	\property Staff.KeySignature \set #'break-visibility = #end-of-line-visible
-	\property Staff.explicitClefVisibility = #end-of-line-visible
-	\property Staff.explicitKeySignatureVisibility = #end-of-line-visible
-
-	% We want the time sig to take space, otherwise there is not
-	% enough white at the start of the line.
-	%
-	
-	\property Staff.TimeSignature \set #'transparent = ##t
-	\property Score.defaultBarType = #"empty"
-	
-	c1 d e f g a b c
-	\key d \major
-	\break
-
-	% see above.
-	\time 4/4
-	
-	d e fis g a b cis d 
-	\key g \major
-	\break
-	\time 4/4    
-} }
-
diff --git a/input/test/clef-manual-control.ly b/input/test/clef-manual-control.ly
deleted file mode 100644
index a3a8ee8519..0000000000
--- a/input/test/clef-manual-control.ly
+++ /dev/null
@@ -1,32 +0,0 @@
-\version "2.1.7"
-\header{ texidoc = "
-
-@cindex Clef Manual Control
-
-You can use the clef engraver by using @code{\property} directly.
-@code{\clef} is merely a front-end to this. All the notes in this
-example are central C."
-
-}
-
-\score { \notes {
-  \property Staff.clefGlyph = #"clefs-F"
-  \property Staff.clefPosition = #2
-  c'4
-  \property Staff.clefGlyph = #"clefs-G"
-  c'4
-  \property Staff.clefGlyph = #"clefs-C"
-
-  c'4
-	\property Staff.clefOctavation = #7 
-  c'4
-	\property Staff.clefOctavation = #0 
-	\property Staff.clefPosition = #0
-  c'4
-	\clef "bass"
-  c'4
-
-}
-	\paper{ raggedright = ##t }
-}
-
diff --git a/input/test/coriolan-margin.ly b/input/test/coriolan-margin.ly
deleted file mode 100644
index a13461b355..0000000000
--- a/input/test/coriolan-margin.ly
+++ /dev/null
@@ -1,149 +0,0 @@
-
-\version "2.1.13"
-
-
-% Ugh, we need to override some LaTeX titling stuff
-\header {
-  title =	"Ouvertüre\\vrule width0pt height 0pt depth 1ex"
-  subtitle =	"\\normalsize Zu Heinrich Joseph v. Collins Trauerspiel\\vrule width0pt height 0pt depth 1ex"
-  subsubtitle =	"\\Large\\bf Coriolan"
-  opus =  "Op. 62"
-  piece = "\\hspace*{30mm}\\normalfont\\large Allegro con brio"
-  composer = 	 "Ludwig van Beethoven (1770-1827)"
-
-texidoc = "@cindex Orchestra Score
-@cindex Coriolan Score
-Demonstration of how to set up an orchestral score (Beethoven's Coriolan overture).
-" }
-
-#(set-global-staff-size 16)
-
-raisedFlat = \markup { \raise #0.4 \smaller \smaller \musicglyph #"accidentals--2"  }
-
-
-
-flauti = \notes \relative c' {
-  \property Staff.instrument	= #"2 Flauti"
-  \property Staff.instr		= #"Fl."
-  \time 4/4
-  c1 
-  \break c
-%  \break c
-%  \break c
-  \bar"|."
-}
-
-oboi = \notes \relative c' {
-  \property Staff.instrument	= #"2 Oboi"
-  \property Staff.instr		= #"Ob."
-  c1 c
-}
-
-clarinetti = \notes \relative c' {
-    \property Staff.instrument
-	= \markup { \column < "Clarinetti" { "in B" \raisedFlat } > }
-    \property Staff.instr
-	= \markup { \smaller  { "Cl(B" \raisedFlat ")" } }
-
-  c1 c
-}
-
-fagotti = \notes \relative c' {
-  \property Staff.instrument	= #"2 Fagotti"
-  \property Staff.instr		= #"Fg."
-  c1 c
-}
-
-corni = \notes \relative c' {
-    \property Staff.instrument
-	= \markup { \column < "Corni" { "in E" \raisedFlat } > }
-    \property Staff.instr
-	= \markup { \smaller  { "Cor(E" \raisedFlat ")" } }
-
-  c1 c
-}
-
-trombe = \notes \relative c' {
-  \property Staff.instrument	= \markup \column < "2 Trombe" "(C)" >
-  \property Staff.instr		= \markup \column <  "Tbe." "(C)" >
-
-  c1 c
-}
-
-timpani = \notes \relative c' {
-  \property Staff.instrument	= \markup \column < "Timpani" "(C-G)" >
-  \property Staff.instr		= #"Timp."
-
-  c1 c
-}
-
-violinoI = \notes \relative c' {
-  \property Staff.instrument	= #"Violino I  "
-  \property Staff.instr		= #"Vl. I  "
-  c1 c
-}
-
-violinoII = \notes \relative c' {
-  \property Staff.instrument	= #"Violino II  "
-  \property Staff.instr		= #"Vl. II  "
-  c1 c
-}
-
-viola = \notes \relative c' {
-  \property Staff.instrument	= #"Viola"
-  \property Staff.instr		= #"Vla."
-  c1 c 
-  %c
-}
-
-violoncello = \notes \relative c' {
-  \property Staff.instrument	= \markup \column < "Violoncello" "e" "Contrabasso" >
-  \property Staff.instr		= \markup \column <  "Vc." "Cb." >
-  c1 c
-}
-
-
-\score {
-  << 
-    \context StaffGroup ="legni" << 
-      \context Staff ="flauti" \flauti
-      \context Staff ="oboi" \oboi
-      \context Staff ="clarinetti" \clarinetti 
-      \context Staff ="fagotti" \fagotti 
-    >>
-    \context StaffGroup ="ottoni" <<
-      \context Staff ="corni" \corni
-      \context Staff ="trombe" \trombe
-    >>
-    \context StaffGroup ="timpani" <<
-      \context Staff ="timpani" \timpani
-     { 
-       \skip 1 
-       % Hmm: this forces a staff-bracket, that's good!
-       % However, I can't find where is decided on staff-bracket yes/no
-     }
-    >>
-    \context StaffGroup ="archi" <<
-      \context GrandStaff ="violini" <<
-        \context Staff ="violinoI" \violinoI
-        \context Staff ="violinoII" \violinoII
-      >>
-      \context Staff ="viola" \viola
-      \context Staff ="violoncello" \violoncello
-    >>
-  >>
-  \paper {
-      \paperSixteen
-      indent=100.0\mm
-      linewidth=150.0\mm
-      \translator {
-	  \RemoveEmptyStaffContext
-      }
-      \translator {
-	  \OrchestralScoreContext
-	  TimeSignature \override #'style = #'C
-      }
-  }
-}
-
-
diff --git a/input/test/count-systems.ly b/input/test/count-systems.ly
deleted file mode 100644
index 622dba0879..0000000000
--- a/input/test/count-systems.ly
+++ /dev/null
@@ -1,41 +0,0 @@
-
-\version "2.1.19"
-\header{
-    
-    texidoc="@cindex Count Systems
-Display the number of systems, or the system number of a
-Grob.  This can be most useful to assertain that a piece uses a
-specified number of lines.
-" }
-
-#(define (display-systemno smob)
-  (let* ((this-system (ly:get-system smob))
-	 (systems (ly:get-broken-into
-		   (ly:get-original this-system))))
-    (display smob)
-    (display (list-index systems this-system))
-    (newline)))
-  
-
-#(define (display-system-count smob)
-  (display (length
-	    (ly:get-broken-into
-	     (ly:get-original
-	      (ly:get-system smob))))))
-
-  
-  
-\score{
-    \notes\relative c''{
-	\property Voice.NoteHead \override #'after-line-breaking-callback
-	% = #display-system-count
-	= #display-systemno
-	c1
-	d
-    }
-    \paper{ indent = 0.0\mm
-	    linewidth = 10.0\mm
-		raggedright = ##t
-	}
-}
-
diff --git a/input/test/crescendi.ly b/input/test/crescendi.ly
deleted file mode 100644
index c78673d5a0..0000000000
--- a/input/test/crescendi.ly
+++ /dev/null
@@ -1,23 +0,0 @@
-
-\version "2.1.7"
-\header{
-	texidoc="@cindex Crescendi
-LilyPond can print crescendi in a number of different ways.
-" }
-\score{
-\notes\relative c''{
-a1\fff\> a\pp\!
-a\< a\!
-\property Voice.crescendoText = \markup { \italic \bold "cresc." }
-\property Voice.crescendoSpanner = #'dashed-line
-a\mf\< a a\! 
-a\< a\!
-}
-\paper{
-raggedright = ##t
-}
-\midi{
-\tempo 1 = 60
-}
-}
-
diff --git a/input/test/cue-notes.ly b/input/test/cue-notes.ly
deleted file mode 100644
index 22eb71a3c6..0000000000
--- a/input/test/cue-notes.ly
+++ /dev/null
@@ -1,49 +0,0 @@
-\version "2.1.7"
-% TODO: check to see if this example can be simplified using \small
-% or \tiny.
-\header { texidoc = "@cindex Cue Notes
-Cue notes should be set in smaller type. "
-%  Cue clefs are usually not restored explicitly. "
-}
-
-
-\score {
-  \notes
-   {
-       \property Staff.instrument = #"Horn in F"
-       \property Score.skipBars = ##t
-       R1*21
-    <<
-	{
-	    \property Staff.MultiMeasureRest \override #'staff-position = #-6
-	    R1
-	    \property Voice.MultiMeasureRest \revert #'staff-position
-	}
-     \new Voice { s2
-       \clef tenor
-
-	%% this should probably be put into an identifier.
-       \property Staff.fontSize = #-1
-	\property Voice.Stem \override #'length = #5.5
-	\property Voice.Beam \override #'thickness = #0.384
-	\property Voice.Beam \override #'space-function =
-	   #(lambda (beam mult) (* 0.8 (Beam::space_function beam mult)))
-
-	r8^"Bsn." c'8  f'8[ f'8]
-
-% note: the clef should be cancelled from the cue.  
-%  this is under debate; I don't think it should.  - Graham
-
-% if you want to cancel it in the main part, uncomment the following:
-%       \property Staff.Clef = \turnOff
-			    
-       \property Staff.fontSize\unset
-
-       \clef treble
-     } >>
-   c'8^"Horn" cis'
-   \property Staff.Clef \unset
-   eis'4 fis'4
- }
- \paper { raggedright = ##t}
-}
diff --git a/input/test/divisiones.ly b/input/test/divisiones.ly
deleted file mode 100644
index 84cb0cadd6..0000000000
--- a/input/test/divisiones.ly
+++ /dev/null
@@ -1,53 +0,0 @@
-% possible rename to ancient- or gregorian- ?
-\header {
-    texidoc = "@cindex Divisiones
-Divisiones are gregorian variants of breathing signs.
-Choices are @code{divisioMinima}, @code{divisioMaior}
-@code{divisioMaxima} and @code{finalis}, @code{virgula} and
-@code{caesura}.
-" }
-
-\version "2.1.21"
-
-\include "gregorian-init.ly"
-
-\score {
- <<
-	\context Voice \notes \transpose c c' {
-	    \property Score.timing = ##f
-	    \property Score.barAlways = ##t
-	    \property Voice.TextScript \set #'padding = #3
-	    \property Staff.BarLine \override #'transparent = ##t
-	    \property Voice.Stem \override #'transparent = ##t
-            g4( a) g e( f) e
-            ^\markup { "divisio minima" }
-	    \divisioMinima
-            g4( a) g e( f) e
-            ^\markup { "divisio maior" }
-	    \divisioMaior
-            g4( a) g e( f) e
-            ^\markup { "divisio maxima" }
-	    \divisioMaxima
-            g4( a) g e( f) e
-            ^\markup { "finalis" }
-	    \finalis
-            g4( a) g e( f) e
-
-            ^\markup { "virgula" }
-	    \virgula
-            g4( a) g e( f) e
-            ^\markup { "caesura" }
-	    \caesura
-            g4( a) g e( f) e
-	}
-	\lyricsto "" \new  Lyrics \lyrics {
-	    Blah blub, blah blam.
-	    Blah blub, blah blam.
-	    Blah blub, blah blam.
-	    Blah blub, blah blam.
-	    Blah blub, blah blam.
-	    Blah blub, blah blam.
-	    Blah blub, blah blam.
-	}
-    >>
-}
diff --git a/input/test/drarn-slurs.ly b/input/test/drarn-slurs.ly
deleted file mode 100644
index b41409f362..0000000000
--- a/input/test/drarn-slurs.ly
+++ /dev/null
@@ -1,23 +0,0 @@
-
-\version "2.1.7"
-% possible rename to slurs-?
-% TODO: find out what drarn means, and if there's an overlap with drarn.ly
-\header{
-texidoc="@cindex Drarn Slurs
-Slurs can be forced to always attach to note heads.
-"
-}
-
-fragment = \notes {
-  \property Voice.Slur \set #'direction = #1
-  \property Voice.Slur \set #'attachment = #'(head . head)
-  g''16(g)(g)(g)(d')(d)(d)(d)
-}
-
-\paper { raggedright = ##t} 
-
-\score {
-  \notes\relative c \fragment
-  \paper { raggedright = ##t}  
-}
-
diff --git a/input/test/drarn.ly b/input/test/drarn.ly
deleted file mode 100644
index c2c154c74a..0000000000
--- a/input/test/drarn.ly
+++ /dev/null
@@ -1,29 +0,0 @@
-
-\version "2.1.7"
-\header{texidoc="@cindex Drarn
-You can attach slurs and ties to noteheads.
-" }
-
-\score {
-  \context Staff \notes <<
-    
-     \relative c'' {
-\time 3/8	 
-      \property Voice.Stem \set #'direction = #1
-      \property Voice.Tie \set #'direction = #1
-      \property Voice.Slur \set #'direction = #1
-      \property Voice.Slur \set #'attachment = #'(head . head)
-      c8~c(c)  
-    }\\
-     \relative c'' {
-      \property Voice.Stem \set #'direction = #-1
-      \property Voice.Tie \set #'direction = #-1
-      \property Voice.Slur \set #'direction = #-1
-      \property Voice.Slur \set #'attachment = #'(head . head)
-      a8(a)~a  
-    }
-  >>
-  \paper { linewidth = 40*\staffspace
-		raggedright = ##t } 
-}
-
diff --git a/input/test/dynamic-absolute-volume.ly b/input/test/dynamic-absolute-volume.ly
deleted file mode 100644
index b001156f97..0000000000
--- a/input/test/dynamic-absolute-volume.ly
+++ /dev/null
@@ -1,28 +0,0 @@
-
-\version "2.1.7"
-\header {
-    texidoc = "@cindex Dynamic Absolute Volume
-Absolute dynamics have effect in MIDI files.
-"
-}
-
-
-\score{
-\notes\relative c''{
-%segfault in engraver
-a1\ppp 
-a1\pp
-a\p
-a\mp
-a\mf
-a\f
-a\ff
-a\fff
-a\sf
-}
-\paper{ raggedright = ##t }
-\midi{
-\tempo 1 = 60
-}
-}
-
diff --git a/input/test/dynamic-extra.ly b/input/test/dynamic-extra.ly
deleted file mode 100644
index e0872caae3..0000000000
--- a/input/test/dynamic-extra.ly
+++ /dev/null
@@ -1,21 +0,0 @@
-
-\version "2.1.7"
-% probably should be merged into refman.
-\header{
-    texidoc = "@cindex Dynamic Piu Forte
-Additional tricks for dynamics.  Pi`u forte dynamic script. " }
-
-piuf =	\markup {  \italic "pi\\`u" \dynamic "f" }
-
-\score{
-    \notes\relative c''{
-	c-\piuf
-	c
-	c2\< c2\!
-	
-	c2\< c2\!
-	}
-\paper{raggedright = ##t}
-    }
-
-
diff --git a/input/test/embedded-postscript.ly b/input/test/embedded-postscript.ly
deleted file mode 100644
index 8739109531..0000000000
--- a/input/test/embedded-postscript.ly
+++ /dev/null
@@ -1,28 +0,0 @@
-
-\version "2.1.21"
-\header {
-  texidoc = "@cindex Embedded Postscript
-By inserting the @TeX{} command \embeddedps, you can
-insert postscript directly into the output.
-
-  "
-}
-
-
-%
-%TODO: make print-function to do this. 
-% 
-
-\score {
-  \notes \relative c'' {
-    a-"\\embeddedps{3 4 moveto 5 3 rlineto stroke}"
-    -"\\embeddedps{ [ 0 1 ] 0 setdash 3 5 moveto 5 -3 rlineto stroke}"
-    b-"\\embeddedps{3 4 moveto 0 0 1 2 8 4 20 3.5 rcurveto stroke}"
-    s2
-    a'1
-  }
-  \paper { linewidth = 70 * \staffspace
-%	raggedright = ##t 
-	}
-}
-
diff --git a/input/test/embedded-scm.ly b/input/test/embedded-scm.ly
deleted file mode 100644
index dd66fad17a..0000000000
--- a/input/test/embedded-scm.ly
+++ /dev/null
@@ -1,13 +0,0 @@
-
-\version "2.1.7"
-% TODO: does this work?  It doesn't do anything with 1.7.20
-\header {texidoc="@cindex Embedded scm
-You can embed scm functions in your scores.
-"}
-
-#(begin (newline)(display "hello world")(newline))\score{
-	\notes\relative c'{ c }
-\paper{raggedright = ##t}
-}
-
-
diff --git a/input/test/embedded-tex.ly b/input/test/embedded-tex.ly
deleted file mode 100644
index ab216fb262..0000000000
--- a/input/test/embedded-tex.ly
+++ /dev/null
@@ -1,16 +0,0 @@
-
-\version "2.1.7"
-\header{ texidoc="@cindex Embedded Tex
-You can embed Tex commands in your score. "}
-
-fragment = \notes {
-  a''^"3 $\\times$ \\`a deux"
-}
-
-\paper { raggedright = ##t} 
-
-\score {
-  \notes\relative c \fragment
-  \paper { raggedright = ##t }  
-}
-
diff --git a/input/test/engraver-contexts.ly b/input/test/engraver-contexts.ly
deleted file mode 100644
index 8ccfab85f3..0000000000
--- a/input/test/engraver-contexts.ly
+++ /dev/null
@@ -1,30 +0,0 @@
-\version "2.1.7"
-\header {
-    
-texidoc ="In polyphonic notation, many voices can share a staff: In
-this situation, the accidentals and staff are shared, but the stems,
-slurs, beams, etc. are private to each voice. Hence, engravers should
-be grouped. The engravers for note head, stems, slurs, etc. go into a
-group called ``Voice context,'' while the engravers for key,
-accidental, bar, etc. go into a group called ``Staff context.'' In the
-case of polyphony, a single Staff context contains more than one Voice
-context. Similarly, more Staff contexts can be put into a single Score
-context. "
-
-}
-
-\include "engraver-example.lyinc"
-
-\score {
-\context Staff << \topVoice \\ \botVoice >>
-}
-
-
-\score {
-<< \new Staff << \topVoice \\ \botVoice >>
-\new Staff << \pah \\ \hoom >>
-  >>
-}
-
-
-
diff --git a/input/test/engraver-example.lyinc b/input/test/engraver-example.lyinc
deleted file mode 100644
index 5e75faa63b..0000000000
--- a/input/test/engraver-example.lyinc
+++ /dev/null
@@ -1,47 +0,0 @@
-%    texidoc = "Include file for engraver example."
-
-
-\paper { raggedright = ##t }
-
-topVoice = \notes \relative c'
-{
-	\key d\major
-	es8([ g] a[ fis])
-	b4
-	b16[-. b-. b-. cis-.]
-	d4->
-}
-
-
-
-botVoice = \notes \relative c'
-{
-    \key d\major
-    c8[( f] b[ a)]
-    es4
-    es16[-. es-. es-. fis-.]
-    b4->
-}
-
-
-hoom = \notes \relative c {
-    \key d \major
-    \clef bass
-    
-    g8-. r
-    r4 
-    fis8-.
-    r8
-    r4
-    b'4->
-}
-
-pah = \notes \relative c'
-{
-    r8 b-.
-    r4
-    r8 g8-.
-    r16 g-. r8
-    \clef treble
-    fis'4->
-}
diff --git a/input/test/engraver-one-by-one.ly b/input/test/engraver-one-by-one.ly
deleted file mode 100644
index 571889caa2..0000000000
--- a/input/test/engraver-one-by-one.ly
+++ /dev/null
@@ -1,233 +0,0 @@
-
-\version "2.1.7"
-\header {
-    
-texidoc = "The notation problem, @emph{what} symbols to create,
-    is handled by plugins. Each plugin is called Engraver. In this example,
-  we switch on engravers  one by one, in the following order
-
-@itemize
-@item Note heads
-@item Staff symbol
-@item Clef
-@item Stem
-@item Beams, slurs, accents
-@item Accidentals, bar lines, time signature, and key signature.
-@end itemize
-
-Engravers are grouped. For example, note heads, slurs, beams etc. form
-a Voice context. Engravers for key, accidental, bar, etc. form the
-Staff context.
-
-"
-
-    }
-\paper { raggedright = ##t }
-
-\include "engraver-example.lyinc"
-
-
-%
-% setup for Request->Element conversion. Guru-only
-%
-
-MyStaffContext=\translator {
-	\type "Engraver_group_engraver"
-	\name Staff
-
-	\description "Handles clefs, bar lines, keys, accidentals.  It can contain
-@code{Voice} contexts."
-
-	
-	\consists "Output_property_engraver"	
-	
-	\consists "Font_size_engraver"
-
-	\consists "Volta_engraver"
-	\consists "Separating_line_group_engraver"	
-	\consists "Dot_column_engraver"
-
-	\consists "Ottava_spanner_engraver"
-	\consists "Rest_collision_engraver"
-	\consists "Piano_pedal_engraver"
-	\consists "Instrument_name_engraver"
-	\consists "Grob_pq_engraver"
-	\consists "Forbid_line_break_engraver"
-	\consistsend "Axis_group_engraver"
-\consists "Pitch_squash_engraver"
-
-	minimumVerticalExtent = #'(-6 . 6)
-	extraVerticalExtent = ##f
-	verticalExtent = ##f 
-	localKeySignature = #'()
-
-	% explicitly set instrument, so we don't get 
-	% weird effects when doing instrument names for
-	% piano staves
-
-	instrument = #'()
-	instr = #'()
-	  
-	\accepts "Voice"
-}
-
-
-MyVoiceContext = \translator {
-	\type "Engraver_group_engraver"
-	\name Voice
-
-\description "
-    Corresponds to a voice on a staff.  This context handles the
-    conversion of dynamic signs, stems, beams, super- and subscripts,
-    slurs, ties, and rests.
-
-    You have to instantiate this explicitly if you want to have
-    multiple voices on the same staff."
-
-	localKeySignature = #'()
-	\consists "Font_size_engraver"
-	
-	% must come before all
-	\consists "Output_property_engraver"	
-	\consists "Arpeggio_engraver"
-	\consists "Multi_measure_rest_engraver"
-	\consists "Text_spanner_engraver"
-	\consists "Grob_pq_engraver"
-	\consists "Note_head_line_engraver"
-	\consists "Glissando_engraver"
-	\consists "Ligature_bracket_engraver"
-	\consists "Breathing_sign_engraver"
- 	% \consists "Rest_engraver"
-	\consists "Grace_beam_engraver"
-	\consists "New_fingering_engraver"
-	\consists "Chord_tremolo_engraver"
-	\consists "Percent_repeat_engraver"
-	\consists "Slash_repeat_engraver"
-	\consists "Melisma_engraver"
-
-%{
- Must come before text_engraver, but after note_column engraver.
-
-%}
-	\consists "Text_engraver"
-	\consists "Dynamic_engraver"
-	\consists "Fingering_engraver"
-
-	\consists "Script_column_engraver"
-	\consists "Rhythmic_column_engraver"
-	\consists "Cluster_spanner_engraver"
-	\consists "Tie_engraver"
-	\consists "Tie_engraver"
-	\consists "Tuplet_engraver"
-	\consists "Note_heads_engraver"
-	\consists "Rest_engraver"
-
-	\consists "Skip_event_swallow_translator"
-}
-
-
-\score {
-  \topVoice
-  \paper {
-      \translator { \MyStaffContext }
-      \translator { \MyVoiceContext }
-      }
-}
-
-
-MyStaffContext = \translator {
-    \MyStaffContext
-    \consists "Staff_symbol_engraver"
-}
-
-\score {
-  \topVoice
-  \paper {
-      \translator { \MyStaffContext }
-      \translator { \MyVoiceContext }
-            }
-}
-
-MyStaffContext = \translator {
-    \MyStaffContext
-      \consists "Clef_engraver"
-    \remove "Pitch_squash_engraver"
-}
-
-\score {
-  \topVoice
-  \paper {
-      \translator { \MyStaffContext }
-      \translator { \MyVoiceContext }
-            }
-}
-
-MyVoiceContext = \translator {
-    \MyVoiceContext
-    \consists "Stem_engraver"
-    }
-
-\score {
-  \topVoice
-  \paper {
-      \translator { \MyStaffContext }
-      \translator { \MyVoiceContext }
-            }
-}
-
-MyVoiceContext = \translator {
-    \MyVoiceContext
-    	\consists "Beam_engraver"
-}
-
-\score {
-  \topVoice
-  \paper {
-      \translator { \MyStaffContext }
-      \translator { \MyVoiceContext }
-            }
-}
-
-MyVoiceContext= \translator {
-    \MyVoiceContext
-    \consists "Phrasing_slur_engraver"
-    \consists "Slur_engraver"
-    \consists "Script_engraver"
-}
-
-
-\score {
-  \topVoice
-  \paper {
-      \translator { \MyStaffContext }
-      \translator { \MyVoiceContext }
-            }
-}
-
-MyStaffContext = \translator {
-    \MyStaffContext
- \consists "Bar_engraver"
-    \consists "Time_signature_engraver"
-      
-}
-
-\score {
-  \topVoice
-  \paper {
-      \translator { \MyStaffContext }
-      \translator { \MyVoiceContext }
-            }
-}
-
-MyStaffContext = \translator
- { \MyStaffContext
- \consists "Accidental_engraver"    
-     \consists "Key_engraver"
-}
-\score {
-  \topVoice
-  \paper {
-      \translator { \MyStaffContext }
-      \translator { \MyVoiceContext }
-            }
-}
diff --git a/input/test/extra-staff.ly b/input/test/extra-staff.ly
deleted file mode 100644
index 77ef7ecc7f..0000000000
--- a/input/test/extra-staff.ly
+++ /dev/null
@@ -1,55 +0,0 @@
-
-\version "2.1.7"
-
-% definitely wil be renamed to something.
-%{
-(Message vers:9)
-To: Adrian Mariano <adrian@camcornelledu>.
-cc: gnu-music-discuss@gnu.org
-Subject: Re: Switching from one staff to two staves 
-Reply-To: janneke@gnu.org
-In-reply-to: Your message of "Tue, 19 Jan 1999 12:27:10 EST."
-             <199901191727.MAA29757@avalanchecamcornelledu>. 
-Date: Wed, 20 Jan 1999 09:39:22 +0100
-From: Jan Nieuwenhuizen <jan@beavis-nt>
-
-On Tuesday, 19 January 1999, Adrian Mariano writes:
-
->> I want to typeset something which starts out with just one staff and then
->> harmony comes in and there are two staves.  I can't figure out how to do
->> this.  I get an extra blank staff during the second section (using
->> Lily 1.1.15):
-
-There used to be an example called 'multi.ly'...
-Try this (we'll include it in pl23/24):
-
-extra-staff.ly:
-%}
-
-
-\header{ texidoc="@cindex Staff Extra
-@cindex Staff Ossia
-You can add an extra staff after the beginning of a piece. "}
-
-\score {
-	<<
-		\new Staff \notes\relative c''{ c1 c c c c }
-		\new StaffGroup \notes\relative c''{ 
-			\new Staff 
-			c1 c
-			<< c1 \new Staff { c1 } >>
-			c
-		}
-	>>
-  	\paper {
-		raggedright = ##t
-		\translator{
-			\ScoreContext
-
-		}
-	}
-}
-
-
-
-
diff --git a/input/test/figured-bass-alternate.ly b/input/test/figured-bass-alternate.ly
deleted file mode 100644
index 84cac530de..0000000000
--- a/input/test/figured-bass-alternate.ly
+++ /dev/null
@@ -1,25 +0,0 @@
-\header
-{
-texidoc = "An alternate method to make bass figures is to use
-markup texts."
-}
-\version "2.1.7"
-
-nat = \markup { \musicglyph #"accidentals-0" }
-sh = \markup { \smaller \raise #0.6 \musicglyph #"accidentals-2" }
-fl = \markup { \musicglyph #"accidentals--2" }
-
-\score {
-      \context Voice \notes {
-	  \clef bass
-	  \property Voice.TextScript \set #'font-family = #'number
-	  \property Voice.TextScript \set #'font-size = #-6
-	  \property Voice.TextScript \set #'baseline-skip = #1.4
-	  
-	  dis4_\markup { 6 }
-
-	  c_\markup  { 7 }
-	  d_\markup { \column < { 6 \sh } \bracket { \nat } >}
-	  ais_\markup { \column < 6  5 \bracket { 3 \sh } >}
-	  }
-}      
diff --git a/input/test/fill-a4.ly b/input/test/fill-a4.ly
deleted file mode 100644
index c86908b7a1..0000000000
--- a/input/test/fill-a4.ly
+++ /dev/null
@@ -1,45 +0,0 @@
-\version "2.1.13"
-%possible rename to paper-fill-a4.ly -gp
-% candidate for reg -gp
-% Han says no, but keeping this comment temporarily so that I don't
-% forget and nominate it for reg again.  :)  -gp
-
-% test file to get a4 paper really filled,
-% without having to resort to the ever-ugly oversizing hack:
-%
-%   `textheight = 310.0\mm'
-%
-% process this file with lilypond, and make sure footskip/headsep are set
-% at a reasonably (small) value.  -- jcn
-%
-\header{ texidoc="@cindex Paper a4 Fill
-This should fill a4 paper. "
-}
-
-#(set-global-staff-size 13)
-
-\score{
-	\context Voice \notes\relative c'{
-		\clef alto
-		\repeat "unfold" 36 c1
-	}
-	\paper{
-		\paperThirteen
-		indent = 0.0\mm
-		% URG
-		% Vertical space is rather precious when typesetting
-		% music.  But we can only set textheight here, and must
-		% guess and subtract the height needed for headers and 
-		% footers.  If we want a header or footer on some page,
-		% all other pages suffer shortened `textheight'.
-		% Try the maximum for a4, without loosing footers:
-		textheight = 297.0\mm - 7.0\mm
-		papersize = "a4"
-		linewidth = 15.0\mm
-		\translator {
-			\StaffContext
-			minimumVerticalExtent = #(cons 0 0)
-		}
-	}
-}
-
diff --git a/input/test/follow-voice.ly b/input/test/follow-voice.ly
deleted file mode 100644
index 5d41d941b0..0000000000
--- a/input/test/follow-voice.ly
+++ /dev/null
@@ -1,29 +0,0 @@
-\version "2.1.19"
-% MERGED: stuff from follow-break.ly to follow-thread.ly
-
-% followVoice: connect note heads with line when thread switches staff 
-\header{ texidoc="@cindex followVoice Voice
-Voices can be traced automagically when they switch staves by setting
-property @code{followVoice}. " }
-
-
-\score {
-	\notes\relative c {
-	\new PianoStaff <<
-		\property PianoStaff.followVoice = ##t
-		\context Staff=one \context Voice {
-			\property Voice.VoiceFollower \set #'style = #'dashed-line
-			c'1
-			\change Staff=two
-			b2 a
-% these lines from follow-break.ly:
-			\change Staff=one
-			a1
-		    }
-		\context Staff=two {\clef bass \skip 1*3 }
-		>>
-	}
-
-  \paper { raggedright = ##t }  
-}
-
diff --git a/input/test/force-hshift.ly b/input/test/force-hshift.ly
deleted file mode 100644
index acdcaeeaab..0000000000
--- a/input/test/force-hshift.ly
+++ /dev/null
@@ -1,23 +0,0 @@
-
-\version "2.1.7"
-\header {
-    texidoc="@cindex Force hshift
-Force hshift to override collisions. " }
-
-\score { 
-     \notes\relative c'
-       \context Staff << {
-			<d g>
-			<d g>
-		} \\ {
-			<b f'>
-\once \property Voice.NoteColumn
-  \override #'force-hshift = #1.7
-			<b f'>
-		}
-	>> 
-  \paper {
-    raggedright = ##t
-  }  
-}
-
diff --git a/input/test/gourlay.ly b/input/test/gourlay.ly
deleted file mode 100644
index f5ba7ffa8f..0000000000
--- a/input/test/gourlay.ly
+++ /dev/null
@@ -1,22 +0,0 @@
-\version "2.1.7"
-\header{
-
-    texidoc="@cindex Gourlay
-
-This is taken from Gourlay's paper on
-breaking lines.  "
-
-}
-
-\score{
-       \notes \context Staff  \relative c'' <<
-	    { \stemUp d2 d     | d d | d4 d2. | \break  c1 }
-	    \\
-	    { \stemDown g4 g g g | \times 2/3 { g2 g2 g2 } | g4. g8 g2 | c1 }
-	>>
-	\paper{
-		raggedright = ##t
-	}
-}
-
-
diff --git a/input/test/gregorian-scripts.ly b/input/test/gregorian-scripts.ly
deleted file mode 100644
index b0b6ef9f9f..0000000000
--- a/input/test/gregorian-scripts.ly
+++ /dev/null
@@ -1,50 +0,0 @@
-\version "2.1.14"
-\header {
-    title	= "Gregorian Scripts"
-    texidoc     = "@cindex Gregorian Scripts
-
-Gregorian Scripts:
-
-ictus, circulus, semicirculus, accentus, episem.
-
-TODO: augmentum.  Syntax: either as bracket (\augmentumInitium,
-\augmentumFinis), or as head prefix with subsequently collecting all
-dots and putting them behind the ligature in a vertical row.
-Counterexample to the second approach: Graduale Triplex, tempus per
-annum, hebdomada septima, alleluia (page 280).
-
-FIXME: horizontal spacing (ragged right mode).
-
-FIXME: padding/minimum-distance is fragile.
-
-FIXME: episem stops one notehead too early.
-
-"}
-
-\include "gregorian-init.ly"
-
-\score {
-  \context VaticanaVoice {
-    \property VaticanaVoice.Script \set #'padding = #-0.5
-    \notes {
-      a\ictus
-      a\circulus
-      a\semicirculus
-      a\accentus
-
-      %{ %% TODO: augmentum:
-	a\augmentum
-	\[ \augmentumInitium b \flexa a \augmentumFinis \]
-      %}
-
-      \[ a \episemInitium \pes b \flexa a \episemFinis \]
-    }
-  }
-  \paper {
-    linewidth = 70.0
-    linethickness = \staffspace / 5.0
-    width = 60.0
-    indent = 0.0
-    raggedright = ##t
-  }
-}
diff --git a/input/test/harmonic.ly b/input/test/harmonic.ly
deleted file mode 100644
index b151b24b82..0000000000
--- a/input/test/harmonic.ly
+++ /dev/null
@@ -1,19 +0,0 @@
-\version "2.1.19"
-\header {
-    texidoc ="@cindex Artificial Harmonics
-
-
-Artificial harmonics are notated with a different notehead style. This
-achieved by marking the harmonic pitch with @code{\harmonic}."
-
-}
-
-\score {
-    \notes { 
-	     <c' g'\harmonic>4
-	 }
-    \paper {
-	raggedright=##t
-    }
-}
-
diff --git a/input/test/header-ifelse.ly b/input/test/header-ifelse.ly
deleted file mode 100644
index f7d0bce5cc..0000000000
--- a/input/test/header-ifelse.ly
+++ /dev/null
@@ -1,27 +0,0 @@
-\version "2.1.7"
-
-
-#(define (my-ly-version)
-    (list-head (ly:version) 3))
-
-#(if (not (defined? 'pieceTagLine))
-    (define pieceTagLine (string-append "Jeremie " (numbers->string (my-ly-version)) " was here")))
-
-\header{
-tagline = \pieceTagLine
-texidoc = "
-
-High level functionality (eg. conditional defines),
-can be accomplished with GUILE.
-
-This example puts the current version in the tagline via Scheme.
-Since the tagline isn't used in creating the webpage, this example
-doesn't output anything unusual in the collated snippets.
-
-" 
-}
-
-\score{ \notes{ c'4 }
-\paper {raggedright=##t}
-}
-
diff --git a/input/test/hshift.ly b/input/test/hshift.ly
deleted file mode 100644
index 87ef5ba455..0000000000
--- a/input/test/hshift.ly
+++ /dev/null
@@ -1,24 +0,0 @@
-\version "2.1.7"
-\header { texidoc = "@cindex Horizontal Shift
-You can manually shift notes horizontally. " }
-
-shiftI = \property Voice.NoteColumn \override #'horizontal-shift = #0
-shiftII = \property Voice.NoteColumn \override #'horizontal-shift = #1
-shiftIII = \property Voice.NoteColumn \override #'horizontal-shift = #2
-shiftIV = \property Voice.NoteColumn \override #'horizontal-shift = #3
-shiftV = \property Voice.NoteColumn \override #'horizontal-shift = #4
-
-\score { 
-  \context Voice \notes\relative c {
-    
-	\context Staff <<
-		\new Voice  {\stemUp \shiftI g'' }
-		\new Voice  {\stemUp \shiftII e }
-		\new Voice  {\stemUp \shiftIII c }
-		\new Voice  {\stemUp \shiftIV a }
-		\new Voice  {\stemUp \shiftV f }
-	>>	
-  }
-  \paper { raggedright = ##t }  
-}
-
diff --git a/input/test/hymn.ly b/input/test/hymn.ly
deleted file mode 100644
index 846b0fd218..0000000000
--- a/input/test/hymn.ly
+++ /dev/null
@@ -1,36 +0,0 @@
-
-\version "2.1.18"
-
-\header { texidoc = "
-
-You can combine two parts on the same staff using the part
-combiner. For vocal scores (hymns), there is no need to add solo/a2
-texts, so they should be switched off.
-
-" }
-
-\score{
-	\context Staff <<
-		\time 4/4
-		\partcombine 
-			\notes\relative c'' {
-				a4 c4.(g8) a4 |
-				g4 e' g(f) | 
-				b, a c2
-			}
-			\notes\relative c'' {
-				g4 e4.(d8) c4 |
-				g'4 c, e(f) |
-				d2 a
-			}
-	>>
-	\paper{
-		linewidth=140.\mm
-		\translator {
-			\VoiceContext
-			soloADue = ##f
-		}
-	}
-}
-
-
diff --git a/input/test/improv.ly b/input/test/improv.ly
deleted file mode 100644
index 6420562d94..0000000000
--- a/input/test/improv.ly
+++ /dev/null
@@ -1,51 +0,0 @@
-\version "2.1.7"
-\header {
-
-    texidoc =
-"
-
-In improvisation, noteheads do not have a pitch, and have different
-shapes. In this example, this is achieved by adding
-@code{Pitch_squash_engraver} and setting @code{squashedPosition} when the
-improvisation is active.
-
-"
-
-}
-
-
-improOn = \notes {
-    \property Voice.squashedPosition = #0
-    \property Voice.NoteHead \override #'style = #'slash
-}
-
-improOff = \notes {
-    \property Voice.squashedPosition \unset
-    \property Voice.NoteHead \revert #'style
-}
-
-global = \notes { s1*3 \bar "|." }
-
-\score {
-    <<
-	\context ChordNames \chords {
-	    e8*7:m7 a2.:m7 bes4:m7 b1:m7 e8:m
-	}
-	\notes <<
-	    \context Voice = melo \transpose c c' {
-		e8 e g a a16(bes)(a8) g \improOn
-		e8
-		~e2~e8 f4 fis8
-		~fis2 \improOff a16(bes) a8 g e
-	    }
-	>>
-    >>
-    \paper { 
-	\translator {
-	    \VoiceContext
-	    \consists Pitch_squash_engraver
-	}
-	raggedright = ##t
-    }
-}
-
diff --git a/input/test/incipit.ly b/input/test/incipit.ly
deleted file mode 100644
index 90c0150608..0000000000
--- a/input/test/incipit.ly
+++ /dev/null
@@ -1,69 +0,0 @@
-\version "2.1.7"
-\header { texidoc = "@cindex Incipit
-This shows how to make an ``incipit'' to indicate scordatora 
-tuning of a violin part, using the clefStyle property.
-The two first bars of Biber's Rosary sonata III. " }
-
-
-
-
-violinincipit =  \notes\relative c''{
-  \clef "french"
-  \time 2/2
-  \property Staff.TimeSignature \override #'style = #'old
-  a4. b8 c4 fis |
-%  <b fis' b d>1
-  \property Staff.TimeSignature \override #'style = #'C
-}
-
-bcincipit =  \notes\relative c{
-  \clef bass
-  \property Staff.TimeSignature \override #'style = #'old
-  b2. cis4 | 
-  \property Staff.TimeSignature \override #'style = #'C
-}
-
-violin =  \notes\relative c''{
-% Key signatures with different alterations in different octaves
-% are broken since 1.3.58!
-%  \specialkey \keysignature f' fis'' g' gis''
-  \key d \major
-  \time 2/2
-  \clef treble
-
-  a4. b8 c4 fis |
-  gis~ gis8 fis16^\trill (e) b8 c
-  <<{ a d}\\ { es,4}>>|
-}
-
-BC  = \notes\relative c{
-  \key d \major
-  \time 2/2
-  \clef "bass"
-
- \key \default
-  b2. cis4 | 
-  d e fis g |
-}
-
-\score{
-  <<
-    \context Staff = violin {\notes{
-      \property Staff.Clef \override #'transparent = ##t
-      \violinincipit \bar ".|" 
-      \property Staff.Clef \revert #'transparent 
-      \endincipit
-      \violin
-    }}
-    \new Staff {\notes{
-      \property Staff.Clef \override #'transparent = ##t
-      \bcincipit \bar ".|" 
-      \property Staff.Clef \revert #'transparent 
-      \endincipit
-      \BC
-    }}
-  >>
-	\paper { raggedright = ##t }
-}  
-
-
diff --git a/input/test/instrument-name-grandstaff.ly b/input/test/instrument-name-grandstaff.ly
deleted file mode 100644
index 8091d8de88..0000000000
--- a/input/test/instrument-name-grandstaff.ly
+++ /dev/null
@@ -1,18 +0,0 @@
-\version "2.1.7"
-\header { texidoc = "@cindex Instrument Name Grandstaff
-You can name the whole grandstaff in addition to individual staffs. " }
-
-\score {
-  \notes
-  \notes \context GrandStaff <<
-    \context Staff = treble    {
-      \property GrandStaff.instrument = "Violini  "
-      \property Staff.instrument = " vn I" { c''4 }}
-    \context Staff = bass { \property Staff.instrument = " vn II" c''4 }>>
-
-
-\paper {
-raggedright = ##t
-\translator { \GrandStaffContext \consists "Instrument_name_engraver" }
-}}
-
diff --git a/input/test/lilypond-testpage.ly b/input/test/lilypond-testpage.ly
deleted file mode 100644
index 64587b940b..0000000000
--- a/input/test/lilypond-testpage.ly
+++ /dev/null
@@ -1,49 +0,0 @@
-
-\version "2.1.7"
-% MERGE with title.ly -gp
-
-%{
-  Test lilypond features.
-%}
-
-\header {
-copyright = "copyright"
-title = "title"
-subtitle = "subtitle"
-composer = "composer"
-arranger = "arranger"
-instrument = "instrument"
-metre = "metre"
-opus = "opus"
-piece = "piece"
-poet = "poet"
-texidoc = "This file tests lilypond titling. It should be processed with lilypond. "
-
-%
-% todo: check whether title.ly does the same. --hwn
-%
-}
-
-
-\score {
- \notes \relative c'' { c1 c1 c1 c1 }
-}
-
-\score {
-	\notes \relative c'' { c1 c1 c1 c1 }
-	
-	\header {
-
-	title = "localtitle"
-	subtitle = "localsubtitle"
-	composer = "localcomposer"
-	arranger = "localarranger"
-	instrument = "localinstrument"
-	metre = "localmetre"
-	opus = "localopus"
-	piece = "localpiece"
-	poet = "localpoet"
-	copyright = "localcopyright"
-	}
-}
-
diff --git a/input/test/lyric-hyphen-retain.ly b/input/test/lyric-hyphen-retain.ly
deleted file mode 100644
index e7273df41d..0000000000
--- a/input/test/lyric-hyphen-retain.ly
+++ /dev/null
@@ -1,50 +0,0 @@
-
-\version "2.1.20"
-
-\header {
-
-texidoc = "In tight situations, hyphens are removed, except at the
-end of the line.  Normally, lyrics aren't set this tight, but by
-tuning down @code{padding} of in @code{SeparationItem}, syllables are put closer together, and hyphens may disappear.
-
-In some languages (eg. German and Hungarian).  hyphens should not
-disappear, since spelling depends on hyphenation. In this case,
-hyphens can be forced to remain by setting @code{minimum-length} on
-the LyricHyphen grob.
-"
-
-}
-
-\score {
-<<    \notes \new Staff \relative c'' { \time 1/4 c16[ c c  c]
-\time 1/4
-c16[ c c c]
-\time 1/4
-c16[ c c c]
-
-}
-    \lyrics \new LyricsVoice \with {
-	% Otherwise lyrics are so far apart that hyphens don't disappear
-	SeparationItem \set #'padding = #0.0
-	}{ bla -- bla -- bla -- bla --
-	   bla -- bla -- bla -- bla --
-
-	   \property LyricsVoice . LyricHyphen \set #'minimum-length = #0.7
-	   \property LyricsVoice . LyricHyphen \set #'spacing-procedure =
-                  #Hyphen_spanner::set_spacing_rods
-
-	   bla -- bla -- bla -- bla 
-       }>>
-    \paper   {
-	indent = 0.0 \cm
-	linewidth =  3.4 \cm
-
-	\translator {
-	    \StaffContext \remove "Time_signature_engraver"
-	}
-	
-    }
-      
-}
-
-	
diff --git a/input/test/lyrics-skip-notes.ly b/input/test/lyrics-skip-notes.ly
deleted file mode 100644
index 48a0110e60..0000000000
--- a/input/test/lyrics-skip-notes.ly
+++ /dev/null
@@ -1,23 +0,0 @@
-
-\header
-{
-texidoc ="
-
-By inserting @code{\\skip} statements into lyric lines, one can put less lyric syllables to a melody. 
-
-"
-}
-
-
-% shorthand for Skip Lyric
-sl = \notes { \skip 4 }
-
-\version "2.1.21"
-\score {
-  <<
-  \context Voice = "A"  \notes  {c4 c c c}
-  \lyricsto "A" \context Lyrics=A \lyrics { foo __ \sl \sl bar }
-  \lyricsto "A" \context Lyrics=B \lyrics { foo -- \sl baz bar }
-  \lyricsto "A" \context Lyrics=C \lyrics { foo -- baz -- baaz bar }
-  >>
-}
diff --git a/input/test/maximum-rest-count.ly b/input/test/maximum-rest-count.ly
deleted file mode 100644
index 20efbdca6e..0000000000
--- a/input/test/maximum-rest-count.ly
+++ /dev/null
@@ -1,43 +0,0 @@
-\version "2.1.7"
-% possible rename to rest-foo
-\header {
-    texidoc = "@cindex Rest Collision Count
-Control the number of rests in a collision with maximum-rest-count."
-}
-
-\score{
-\context Staff \notes\relative c''<<
-	\new Voice {
-		a4 
-		r 
-		\property Staff. RestCollision \set #'maximum-rest-count = #1
-		r 
-		\property Staff. RestCollision \set #'maximum-rest-count = #2
-		r 
-		\property Staff. RestCollision \set #'maximum-rest-count = #3
-		r 
-		r8 r8
-		c
-	}
-	\new Voice {
-		c4
-		r
-		r 
-		r
-		r
-		r
-		r
-	}
-	\new Voice {
-		e4
-		r
-		r 
-		r
-		r
-		r
-		r
-	}
-	>>
-	\paper{ raggedright = ##t }
-}
-
diff --git a/input/test/mensural-ligatures.ly b/input/test/mensural-ligatures.ly
deleted file mode 100644
index 9b66211095..0000000000
--- a/input/test/mensural-ligatures.ly
+++ /dev/null
@@ -1,84 +0,0 @@
-\version "2.1.14"
-% TODO:
-% check with ancient- stuff.  rename, merge, something.  -gp
-
-\header { texidoc = "@cindex Ancient Mensural Ligatures
-LilyPond can print mensural ligatures."
-}
-
-
-
-% Note that the horizontal alignment of the fermatas obeys to the
-% graphical width of the ligatures rather to the musical moment in time.
-% This is intended behaviour.
-
-voice = \notes \transpose c c' {
-  \property Score.timing = ##f
-  \property Score.defaultBarType = "empty"
-  g\longa c\breve a\breve f\breve d'\longa^\fermata
-  \bar "|"
-  \[
-    g\longa c\breve a\breve f\breve d'\longa^\fermata
-  \]
-  \bar "|"
-  e1 f1 a\breve g\longa^\fermata
-  \bar "|"
-  \[
-    e1 f1 a\breve g\longa^\fermata
-  \]
-  \bar "|"
-  e1 f1 a\breve g\longa^\fermata
-  \bar "||"
-}
-
-\score {
-    \context ChoirStaff <<
-	\new MensuralStaff <<
-	    \context MensuralVoice <<
-		\voice
-	    >>
-	>>
-	\new Staff <<
-	    \context Voice <<
-		\voice
-	    >>
-	>>
-    >>
-    \paper {
-	linethickness = \staffspace / 5.0
-	\translator {
-	    \VoiceContext
-	    \name MensuralVoice
-	    \alias Voice
-	    \remove Ligature_bracket_engraver
-	    \consists Mensural_ligature_engraver
-	    NoteHead \set #'style = #'mensural
-	}
-	\translator {
-	    \StaffContext
-	    \name MensuralStaff
-	    \alias Staff
-	    \accepts MensuralVoice
-	    \consists Custos_engraver
-	    TimeSignature \set #'style = #'mensural
-	    KeySignature \set #'style = #'mensural
-	    Accidental \set #'style = #'mensural
-	    Custos \set #'style = #'mensural
-	    Custos \set #'neutral-position = #3
-	    Custos \set #'neutral-direction = #-1
-	    Custos \set #'adjust-if-on-staffline = ##t
-	    clefGlyph = #"clefs-petrucci_g"
-	    clefPosition = #-2
-	    clefOctavation = #-0
-	}
-	\translator {
-	    \RemoveEmptyStaffContext
-	    \accepts MensuralVoice
-        }
-	\translator {
-	    \ScoreContext
-	    \accepts MensuralStaff
-	}
-    }
-}
-
diff --git a/input/test/midi-scales.ly b/input/test/midi-scales.ly
deleted file mode 100644
index 44a8d7fa01..0000000000
--- a/input/test/midi-scales.ly
+++ /dev/null
@@ -1,153 +0,0 @@
-
-\version "2.1.7"
-% candidate for regression.  -gp
-\header {
-  texidoc="MIDI and midi2ly test file.  Diff between this and midi2ly.py should be minimal."
-}
-
-%{
-  This means, doing:
-
-    lilypond input/test/midi-scales.ly
-    midi2ly midi-scales.midi
-    diff -u input/test/midi-scales.ly midi-scales-midi.ly
-
-  should show no differences at all in \key commands or notes.
-
-  Therefore, do not reformat this file unless midi2ly changes.
-
-  1.7.30 reformatted, because
-  midi2ly now outpts 1 bar per line and adds bar checks and numbers.
-
-%}
-
-scales = \notes \relative c {
-
-  % [INSTRUMENT_NAME] bright acoustic
-  \key c \major  % sharp-major
-  c'4 d e f |
-  g a b c |
-
-  \key g \major
-  g a b c |
-  d e fis g |
-
-  \key d \major
-  d, e fis g |
-  a b cis d |
-
-  \key a \major
-  a b cis d |
-  e fis gis a |
-
-  \key e \major
-  e, fis gis a |
-  b cis dis e |
-
-  \key b \major
-  b cis dis e |
-  fis gis ais b |
-
-  \key fis \major
-  fis, gis ais b |
-  cis dis eis fis |
-
-  \key cis \major
-  cis, dis eis fis |
-  gis ais bis cis |
-
-  \key a \minor  % sharp-minor
-  a b c d |
-  e f gis a |
-
-  \key e \minor
-  e, fis g a |
-  b c dis e |
-
-  \key b \minor
-  b cis d e |
-  fis g ais b |
-
-  \key fis \minor
-  fis, gis a b |
-  cis d eis fis |
-
-  \key cis \minor
-  cis, dis e fis |
-  gis a bis cis |
-
-  \key gis \minor
-  gis ais b cis |
-  dis e fisis gis |
-
-  \key dis \minor
-  dis, eis fis gis |
-  ais b cisis dis |
-
-  \key ais \minor
-  ais bis cis dis |
-  eis fis gisis ais |
-
-  \key f \major  % flat-major
-  f, g a bes |
-  c d e f |
-
-  \key bes \major
-  bes c d ees |
-  f g a bes |
-
-  \key ees \major
-  ees,, f g aes |
-  bes c d ees |
-
-  \key aes \major
-  aes, bes c des |
-  ees f g aes |
-
-  \key des \major
-  des,, ees f ges |
-  aes bes c des |
-
-  \key ges \major
-  ges, aes bes ces |
-  des ees f ges |
-
-  \key ces \major
-  ces,, des ees fes |
-  ges aes bes ces |
-
-  \key d \minor  % flat-minor
-  d, e f g |
-  a bes cis d |
-
-  \key g \minor
-  g, a bes c |
-  d ees fis g |
-
-  \key c \minor
-  c,, d ees f |
-  g aes b c |
-
-  \key f \minor
-  f, g aes bes |
-  c des e f |
-
-  \key bes \minor
-  bes,, c des ees |
-  f ges a bes |
-
-  \key ees \minor
-  ees, f ges aes |
-  bes ces d ees |
-
-  \key aes \minor
-  aes, bes ces des |
-  ees fes g aes |
-}
-
-\score {
-  \context Voice \scales
-  \paper { }
-  \midi { }
-}
-
diff --git a/input/test/move-accidentals.ly b/input/test/move-accidentals.ly
deleted file mode 100644
index 076813a6e7..0000000000
--- a/input/test/move-accidentals.ly
+++ /dev/null
@@ -1,39 +0,0 @@
-\version "2.1.7"
-
-% possible rename to scheme- or something like that.  -gp
-\header { texidoc= "@cindex Scheme Manual Accidentals
-Positions of accidentals may be manually set. This
-involves some scheme code. " }
-
-#(define (make-acc-position-checker pos)
-  (lambda (elt)
-   (and
-      (not (eq? #f (memq 'accidental-interface
-                    (ly:get-grob-property elt 'interfaces))))
-      (eq? (ly:get-grob-property
-	    (ly:get-parent elt 1) 'staff-position) pos))))
-
-\score {
-  \context Voice \notes \relative c'' {
-    c2.
-    <<
-\property Staff.AccidentalPlacement = \turnOff
-\context Staff \applyoutput #(outputproperty-compatibility (make-acc-position-checker 9)
-                               'extra-offset  '(-1 . 0))
-\context Staff \applyoutput #(outputproperty-compatibility (make-acc-position-checker 5)
-                               'extra-offset  '(-2 . 0))
-\context Staff \applyoutput #(outputproperty-compatibility (make-acc-position-checker 3)
-                               'extra-offset  '(-3 . 0))
-\context Staff \applyoutput #(outputproperty-compatibility (make-acc-position-checker 2)
-                               'extra-offset  '(-4 . 0))
-      d!4
-      eis
-      gis
-      d'!
-    >>
-  }
-  \paper {
-    raggedright = ##t
-  }
-}
-
diff --git a/input/test/move-specific-text.ly b/input/test/move-specific-text.ly
deleted file mode 100644
index 91fb1e2f0d..0000000000
--- a/input/test/move-specific-text.ly
+++ /dev/null
@@ -1,20 +0,0 @@
-
-\version "2.1.7"
-% possible rename to scheme- or something like that.  -gp
-\header { texidoc = "@cindex Scheme Move Text
-You can move objects around with scheme.  This example shows how to
-move text around. " }
-
-#(define (make-text-checker text)
-   (lambda (grob) (equal? text (ly:get-grob-property grob 'text))))
-
-\score {
-  \notes\relative c''' {
-    \property Voice.Stem \set #'direction = #1
-    \applyoutput #(outputproperty-compatibility (make-text-checker (make-simple-markup "m.d."))
-      'extra-offset '(-3.5 . -4.5))
-    a^2^"m.d."
-  }
-  \paper { raggedright = ##t}
-}
-
diff --git a/input/test/music-box.ly b/input/test/music-box.ly
deleted file mode 100644
index cd4da197de..0000000000
--- a/input/test/music-box.ly
+++ /dev/null
@@ -1,144 +0,0 @@
-\version "2.1.7"
-\include "deutsch.ly"
-% possible rename to scheme- something.  -gp
-% TODO: ask if it needs to have so many empty bars in the middle.  -gp
-\header{ texidoc = "@cindex Scheme Music Box
-This example shows prelude in C major of WTK1, but coded
-using Scheme functions to avoid typing work. " }
-
-
-#(define (transform music)
-  (let* ((es (ly:get-mus-property music 'elements))
-         (n  (ly:music-name music))
-        )
-   (if (not (equal? n "Sequential_music"))
-     (ly:warn "transform needs sequential music!")
-     (begin
-      (let recurse ((elts es))
-       (if (not (equal? elts '()))
-	 (begin
-           ((trans (ly:get-mus-property (cadr elts) 'elements)) (car elts))
-	   (set-cdr! elts (cddr elts))
-	   (recurse (cdr elts))
-	 )
-       )
-      )
-     )
-   )
-   music
-  )
- )
-
-#(define ((trans pitches) music)
-  (let* ((es (ly:get-mus-property music 'elements))
-         (e (ly:get-mus-property music 'element))
-         (p (ly:get-mus-property music 'pitch)))
-
-    (if (pair? es)
-        (ly:set-mus-property!
-         music 'elements
-         (map (trans pitches) es)))
-
-    (if (ly:music? e)
-        (ly:set-mus-property!
-         music 'element
-         ((trans pitches) e)))
-
-    (if (ly:pitch? p)
-       (let* ((o (ly:pitch-octave p))
-              (n (ly:pitch-notename p))
-              (i (+ (* 7 o) n))
-	      (pes (ly:get-mus-property (list-ref pitches i) 'elements))
-	      (pnew (ly:get-mus-property (car pes) 'pitch))
-             )
-          (ly:set-mus-property! music 'pitch pnew)
-	)
-    )
-    music
-  )
- )
-
-
-
-
-
-\version "2.1.7"
-
-pat = \notes \transpose c c' \repeat unfold 2 {
-  << { \context Staff=up {r8 e16 f g e f g } }
-    { \context Staff=down <<
-      \context Voice=vup  { \stemUp \tieUp r16 d8.~d4 }
-      \context Voice=vdwn { \stemDown  c2 }
-    >> }
-  >>
-}
-
-enda = \notes { r8 f,16 a, c f c a, \stemUp c \change Staff = down
-      a, f, a, f, d, f, d, \change Staff = up \stemBoth
-      r8 g16 h d' f' d' h d' h g h d f e\prall d <e g c'>1^\fermata \bar "|."
-}
-endb = \notes {\stemUp \tieUp r16 c,8.~c,4~c,2 r16 h,,8.~h,,4~h,,2 c,1 \bar "|."}
-endc = \notes {\stemDown \tieDown c,,2~c,, c,,~c,, c,,1_\fermata }
-
-\score {
-  \notes \transpose c c' \context PianoStaff <<
-    \context Staff=up   { \clef "G"  }
-    \context Staff=down { \clef "F" }
-    { \apply #transform {\pat {c e g c' e' }
-                         \pat {c d a d' f' }
-			 \pat {h, d g d' f' }
-			 \pat {c e g c' e' }
-		     }
-      
-      %{
-      %Etc.
-
-      %we get the idea now.
-
-
-      
-			 \pat {c e a e' a' }
-			 \pat {c d fis a d'  }
-			 \pat {h, d g d' g' }
-			 \pat {h, c e g c' }
-			 \pat {a, c e g c'  }
-			 \pat {d, a, d fis c' }
-			 \pat {g, h, d g h }
-			 \pat {g, b, e g cis'  }
-			 \pat {f, a, d a d' }
-			 \pat {f, as, d f h }
-			 \pat {e, g, c g c' }
-			 \pat {e, f, a, c f }
-			 \pat {d, f, a, c f }
-
-			 \pat {g,, d, g, h, f }
-			 \pat {c, e, g, c e }
-			 \pat {c, g, b, c e }
-			 \pat {f,, f, a, c e  }
-			 \pat {fis,, c, a, c es }
-			 \pat {as,, f, h, c d }
-			 \pat {g,, f, g, h, d }
-			 \pat {g,, e, g, c e }
-			 \pat {g,, d, g, c f }
-			 \pat {g,, d, g, h, f }
-			 \pat {g,, es, a, c fis }
-			 \pat {g,, e, g, c g }
-			 \pat {g,, d, g, c f }
-			 \pat {g,, d, g, h, f }
-			 \pat {c,, c, g, b, e }
-			%}
-    }
-  >>
-  \paper {
-    \translator {
-      \PianoStaffContext
-      VerticalAlignment \override #'forced-distance = #10
-    }
-
-    linewidth = 18.0 \cm
-  }
-  \midi {
-      \tempo 4 = 80
-  }
-}
-
diff --git a/input/test/music-creation.ly b/input/test/music-creation.ly
deleted file mode 100644
index 9f1d93fff2..0000000000
--- a/input/test/music-creation.ly
+++ /dev/null
@@ -1,33 +0,0 @@
-\version "1.9.6"  %% or actually: 1.7.1 ...
-% possible rename to scheme- something.  -gp
-\header { texidoc = "@cindex Scheme Music Creation
-You can create music expressions from Scheme.  The
-mechanism for this is rather clumsy to use, so avoid it if possible. "
-}
-
-#(define (make-note-req p d)
-   (let* ((ml (make-music-by-name 'NoteEvent)))
-   (ly:set-mus-property! ml 'duration d)
-   (ly:set-mus-property! ml 'pitch p)
-   ml))
-
-#(define (make-note elts)
-   (let* ((ml (make-music-by-name 'EventChord)))
-   (ly:set-mus-property! ml 'elements elts)
-   ml))
-
-#(define (seq-music-list elts)
-   (let* ((ml (make-music-by-name 'SequentialMusic)))
-   (ly:set-mus-property! ml 'elements elts)
-   ml))
-
-
-fooMusic  = #(seq-music-list
-  (list (make-note (list (make-note-req (ly:make-pitch 1 0 0) (ly:make-duration 2 0))))
-     (make-note (list (make-note-req (ly:make-pitch 1 1 0) (ly:make-duration 2 0)))))
-     )
-     
-\score { \fooMusic 
-\paper { raggedright = ##t }
-}
-
diff --git a/input/test/nested-groups.ly b/input/test/nested-groups.ly
deleted file mode 100644
index 8af5a48bd3..0000000000
--- a/input/test/nested-groups.ly
+++ /dev/null
@@ -1,43 +0,0 @@
-\version "2.1.7" 
-
-\header{ texidoc="@cindex Nested Staff Groups
-LilyPond can print nested groups of staffs. "
-
-%   old texidoc; it sounds like a testing comment, rather than an "example" comment.
-%In InnerStaffGroup and InnerChoirStaff, the brackets should be shiftet leftwards.
-}
-
-\score { \notes
-<<
-  \new StaffGroup << 
-  \new Staff {c' d' e' f'}
-  \new InnerStaffGroup <<
-   \new Staff {c' d' e' f'}
-   \new GrandStaff <<
-     \new Staff {c' d' e' f'}
-     \new Staff {c' d' e' f'}
-   >>
-  \new Staff {c' d' e' f'}
-  >>
-  \new ChoirStaff <<
-   \new Staff {c' d' e' f'}
-    \new InnerStaffGroup <<
-     \new Staff {c' d' e' f'}
-    >>
-   \new Staff {c' d' e' f'}
-  >>
-  >>
-  \new ChoirStaff << 
-   \new Staff {c' d' e' f'}
-   \new InnerStaffGroup <<
-    \new Staff {c' d' e' f'}
-    \new Staff {c' d' e' f'}
-   >>
-   \new Staff {c' d' e' f'}
-  >>
-
->>
-
- \paper { raggedright = ##t}
-}
-
diff --git a/input/test/no-bar-lines.ly b/input/test/no-bar-lines.ly
deleted file mode 100644
index 0444486aa2..0000000000
--- a/input/test/no-bar-lines.ly
+++ /dev/null
@@ -1,24 +0,0 @@
-
-\version "2.1.7"
-% possible rename to bar-lines-foo.  -gp
-
-\header{ texidoc = "@cindex Bar Lines Remove
-You can stop LilyPond from printing bar lines by removing the engraver. "
-}
-
-\score {
-  \notes \relative c'' {
-    a b c d
-    d c b a
-  }
-  \paper {
-    raggedright = ##t
-    \translator {
-      \StaffContext
-      whichBar = #""
-      \remove "Time_signature_engraver"
-    }
-  }
-}
-
-
diff --git a/input/test/no-staff.ly b/input/test/no-staff.ly
deleted file mode 100644
index cf4bf5821e..0000000000
--- a/input/test/no-staff.ly
+++ /dev/null
@@ -1,21 +0,0 @@
-\version "2.1.7"
-% possible rename to staff-something.  -gp
-
-\header{ texidoc = "@cindex Staff Remove
-You can stop LilyPond from printing the staff by removing the engraver. "
-}
-
-\score {
-  \notes { c4 d4 e8 d8 }
-  \paper {
-    raggedright = ##t
-    \translator {
-      \StaffContext
-      \remove Staff_symbol_engraver
-      \consists Pitch_squash_engraver
-      \remove Clef_engraver
-    }
-  }
-}
-
-
diff --git a/input/test/ossia.ly b/input/test/ossia.ly
deleted file mode 100644
index baa1c72bd6..0000000000
--- a/input/test/ossia.ly
+++ /dev/null
@@ -1,17 +0,0 @@
-\version "2.1.7"
-% pretty much a duplicate of extra-staff.ly. candidate for merge or delete. -gp
-
-\header { texidoc = "@cindex Ossia
-Ossias present alternatives for a piece. They are not
-really supported, but can be somewhat faked in lily. "
-}
-
-\score {
-\notes\relative c'' { c1 c1 <<
-	{\clef "treble" c1 c1 }
-	\new Staff { c1 c1 }
-	>>
-}
-	\paper {raggedright= ##t}
-}
-
diff --git a/input/test/part-combine.ly b/input/test/part-combine.ly
deleted file mode 100644
index 15fe3beb9c..0000000000
--- a/input/test/part-combine.ly
+++ /dev/null
@@ -1,31 +0,0 @@
-
-\version "2.1.18"
-
-\header{ texidoc="@cindex Part Combine
-In orchestral scores and hymns, voices are traditionally combined onto
-one staff.  LilyPond has a part combiner, that combines or separates two
-voices according to actual rhythm and pitch.  User-defined texts such as
-``solo'' and ``@`a2'' are typeset automagically, as appropriate. "
-}
-
-\score{
-   \notes \context Staff = flauti <<
-    \time 4/4
-    \partcombine
-    \relative c'' {
-      c4 d e f | b,4 d c d | r2 e4 f | c4 d e f |
-      c4 r e f | c4 r e f | c4 r a r | a a r a |
-      a2 \property Voice.soloADue = ##f a |
-    }
-    \relative c'' {
-      g4 b d f | r2 c4 d | a c c d | a4. b8 c4 d
-      c r e r | r2 s2 | a,4 r a r | a r r a |
-      a2 \property Voice.soloADue = ##f a |
-    }
-  >>
-  \paper{
-	raggedright = ##t
-  }
-}
-
-
diff --git a/input/test/partial-blank.ly b/input/test/partial-blank.ly
deleted file mode 100644
index 256a328436..0000000000
--- a/input/test/partial-blank.ly
+++ /dev/null
@@ -1,33 +0,0 @@
-
-\version "2.1.7"
-% check with invisible-notes or blank-notes.  possible rename. -gp
-\header{ texidoc = "@cindex Partial Blank
-When entering half music (i.e. for students to complete by hand)
-you need the spacing to correspond to the timing -- all measures
-same length, etc.  This thing implements it by adding invisible
-staff with lots of fast notes. "
-}
-
-quickmeasure = \notes {
-    \repeat unfold 16 c''16
-}
-
-mel = \notes \relative c' {c16 d16 e8 a4 g2 e8 d c2. g'1 e4 d c2}
-
-\score {
-\context PianoStaff \notes <<
-  \new Staff <<
-    \clef G
-    \new Voice {\mel}
-    \new Voice {
-	\property Voice.NoteHead \override #'transparent = ##t
-	\property Voice.Stem \override #'transparent = ##t
-	\property Voice.Beam \override #'transparent = ##t
-        \repeat unfold 4 \quickmeasure
-    }
-  >>
-  \new Staff \notes {\clef F s1*4}
->>
-\paper {}
-}
-
diff --git a/input/test/phrasing-slur-height.ly b/input/test/phrasing-slur-height.ly
deleted file mode 100644
index 5602cd9c81..0000000000
--- a/input/test/phrasing-slur-height.ly
+++ /dev/null
@@ -1,15 +0,0 @@
-
-\version "2.1.7"
-\header{ texidoc="@cindex Phrasing Slur Height
-Make PhrasingSlur higher, to avoid colission from other slurs. "
-}
-
-\score {
-    \new Staff \notes\relative c''{
-	\property Staff.PhrasingSlur \override #'height-limit = #8.0
-	c8 \( (d e f) g ( a b c)
-	| c ( b a g) f ( e d c)\)
-    }
-    \paper { raggedright = ##t }
-}
-
diff --git a/input/test/polymetric-differing-notes.ly b/input/test/polymetric-differing-notes.ly
deleted file mode 100644
index 2e87148d87..0000000000
--- a/input/test/polymetric-differing-notes.ly
+++ /dev/null
@@ -1,70 +0,0 @@
-\version "2.1.7"
-
-\header{ texidoc="
-
-@cindex polymetric music
-
-@cindex scaling durations
-
-You can have multiple time signatures occuring at the same time, with
-different durations aligned.  This is done by 1. compressing one of
-the lines, analogous to \times, but without the bracket, and
-2. manually setting timeSignatureFraction to the desired fraction.
-
-This example puts 3/4, 9/8 and 10/8 in parallel. The last staff shows
-what happens on the inside: a 3/4 time signature is combined with a
-3/5 tuplet yielding the equivalent of a 10/8.
-
-"
-
-}
-
-
-#(define (scale-one-music m fraction)
-  "Maybe we should just export Music::compress to Scheme?"
-  (let*
-   ((dur (ly:get-mus-property m 'duration)))
-   
-   (if (ly:duration? dur)
-    (let*
-     ((l (ly:duration-log dur))
-      (d (ly:duration-dot-count dur))
-      (factor (ly:duration-factor dur)))
-
-      (ly:set-mus-property! m 'duration
-                            (ly:make-duration l d
-			     (* (car fraction) (car factor))
-			     (* (cdr fraction) (cdr factor))))))
-   
-   m))
-
-#(define (scale-music-function fraction)
-  (lambda (x) 
-   (music-map (lambda (y) (scale-one-music y fraction)) x)))
-
-
-
-\score {
-    \notes \relative c'  <<
-    	\new Staff {
-	    \time 3/4
-	    c4 c c | c c c |
-	}
-    	\new Staff {
-	    \time 3/4
-	    \property Staff.timeSignatureFraction= #'(9 . 8)
-	    \apply #display-music \apply #(scale-music-function '(2 . 3))
-	      \repeat unfold 6 { c8[ c c] }
-	}
-	
-    	\new Staff {
-	    \time 3/4
-	    \property Staff.timeSignatureFraction= #'(10 . 8)
-	    \apply #display-music \apply #(scale-music-function '(3 . 5))
-	      { \repeat unfold 2 { c8[ c c] }
-		\repeat unfold 2 { c8[  c] }
-		|  c4. c4. \times 2/3 { c8 c c } c4  }
-	}
-	>>
-	\paper { raggedright = ##t }
-}
diff --git a/input/test/polymetric.ly b/input/test/polymetric.ly
deleted file mode 100644
index 8b5a2d2aa5..0000000000
--- a/input/test/polymetric.ly
+++ /dev/null
@@ -1,46 +0,0 @@
-\version "2.1.7"
-
-\header{ texidoc="@cindex Time Signature Multiple
-
-@cindex polymetric music
-
-You can have multiple time signatures occuring at the same time.
-
-This is done by moving the timing engraver to staff context. Also,
-Staff should be given the alias @code{Timing} to make @code{\\time}
-command work correctly. Barlines distort the regular spacing, though.
-
-
-" }
-
-\score{
-    \notes \relative c'  <<
-    	\new Staff {
-	    \time 3/4
-	    c4 c c | c c c |
-	}
-
-    	\new Staff {
-	    \time 2/4
-	    c4 c | c c | c c
-	}
-    	\new Staff {
-	    \time 3/8
-	    c4. c8 c c   c4. c8 c c
-	}
-    >>
-
-    \paper{
-    	raggedright = ##t
-	\translator{
-	    \ScoreContext
-	    \remove "Timing_engraver"
-	}
-	\translator{
-	    \StaffContext
-	    \consists "Timing_engraver"
-	    \alias "Timing"
-	}
-    }
-}
-
diff --git a/input/test/preset-extent.ly b/input/test/preset-extent.ly
deleted file mode 100644
index 99ef19171e..0000000000
--- a/input/test/preset-extent.ly
+++ /dev/null
@@ -1,27 +0,0 @@
-\version "2.1.21"
-\header { texidoc = "
-
-@cindex Preset Extent
-
-
-Grob extents may be hard coded using grob properties.  This
-requires Grob::preset_extent () function.
-
-The lyrics in this example have extent (-10,10) which is why they are
-spaced so widely.
-
-"
-
-}
-
-\score {
-    \context Lyrics \lyrics {
-	foo --
-	\property Lyrics . LyricText \set #'X-extent-callback = #Grob::preset_extent
-	\property Lyrics . LyricText \set #'X-extent = #'(-10.0 . 10.0)
- bar baz
-	}
-    \paper { raggedright = ##t}
-}
-    
-
diff --git a/input/test/repeat-manual.ly b/input/test/repeat-manual.ly
deleted file mode 100644
index 3e5c6552a9..0000000000
--- a/input/test/repeat-manual.ly
+++ /dev/null
@@ -1,25 +0,0 @@
-
-\version "2.1.7"
-\header { texidoc = "@cindex Repeat Manual
-You can manually control repeat signs and numbers to produce
-unusual output. "
-}
-
-\score { \notes \relative c'' {
-% First a normal looking repeat:
- c2 c
-    \property Score.repeatCommands = #'((volta "1."))
- c c
-    \property Score.repeatCommands = #'((volta #f) end-repeat (volta "2."))
- c c
-    \property Score.repeatCommands = #'((volta #f))
-% Then a more strange one:
- c c
-    \property Score.repeatCommands = #'((volta "93") end-repeat)
- c c
-    \property Score.repeatCommands = #'((volta #f))
- c c
-}
-	\paper{raggedright=##t}
-}
-
diff --git a/input/test/repeat-shorter-bracket.ly b/input/test/repeat-shorter-bracket.ly
deleted file mode 100644
index 18dd3d4954..0000000000
--- a/input/test/repeat-shorter-bracket.ly
+++ /dev/null
@@ -1,42 +0,0 @@
-\version "2.1.21"
-\header{
-    texidoc="
-
-@cindex shorter volta bracket
-
-By setting @code{voltaSpannerDuration} the length of a volta bracket
-can be shortened.
-
-"
-
-}
-
-
-\score {
-    <<
-	\context Staff \notes\relative c''{
-	    c c c c
-				% coda-klugde: let volta span only one bar
-	    \property Staff.voltaSpannerDuration = #(ly:make-moment 1 1)
-	    \repeat "volta" 5 { d d d d }
-	    \alternative { { e e e e f f f f }
-			   { g g g g } }
-	}
-	\context Lyrics \lyrics{
-	    intro1
-	    \repeat fold 5 { }
-	    \alternative {
-		{ chorus1 one verse1 }
-		{ chorus1 two verse1 }
-		{ chorus1 three verse }
-		{ chorus1 four verse }
-	    }
-	    five1
-	}
-    >>
-    \paper{ raggedright = ##t }
-}
-
-
-				% 
-
diff --git a/input/test/repeat.ly b/input/test/repeat.ly
deleted file mode 100644
index 363b5db926..0000000000
--- a/input/test/repeat.ly
+++ /dev/null
@@ -1,28 +0,0 @@
-\version "2.1.21"
-
-% possible rename to lyric-repeat or repeat-lyric.
-
-\header{ texidoc = "@cindex Repeat Lyrics
-You can use alternate lyrics as well as alternate notes for repeats. "
-}
-
-\score{
-	<<
-		  \context Staff \notes\relative c'{ 
-			  c d e f
-			  \repeat "volta" 2 { g a b c }
-			  \alternative { { c b a g } { f e d c } }
-		  }
-		  \context Lyrics \lyrics {
-			  De eer- ste << { maat } { moet } >>
-			  \repeat fold 2 { }
-			  \alternative {
-				  { en dan twee keer } 
-				  { een koe- plet _ } 
-			  }
-			  en dan nog dit er ach- ter aan
-		  }
-	>>
-	\paper{raggedright=##t}
-}
-
diff --git a/input/test/rest-dot-positions.ly b/input/test/rest-dot-positions.ly
deleted file mode 100644
index 7644cc18f4..0000000000
--- a/input/test/rest-dot-positions.ly
+++ /dev/null
@@ -1,59 +0,0 @@
-
-\version "2.1.7"
-% candidate for regression.  -gp
-\header { texidoc = "@cindex Rest Dot Positions
-This file tests dotted rests. " }
-
-muz = \notes \relative c'' {
-    \time 6/1
-    r\longa r\breve |
-    r\longa. |
-    r\breve. r |
-    \time 3/1
-    r\breve r1 |
-    r\breve. |
-    r1. r |
-    \time 3/2
-    r1 r2 |
-    r1. |
-    r2. r |
-    \break
-    \time 3/4
-    r2 r4 |
-    r2. |
-    r4. r |
-    \time 3/8
-    r4 r8 |
-    r4. |
-    r8. r |
-    \time 3/16
-    r8 r16 |
-    r8. |
-    r16. r |
-    \break
-    \time 3/32
-    r16 r32 |
-    r16. |
-    r32. r |
-    \time 3/64
-    r32 r64 |
-    r32. |
-    r64. r |
-    \time 3/128
-    r64 r128 |
-    r64. |
-    r128. r |
-  }
-
-
-\score {
-  \context Staff  {
-      \muz \break
-      <<
-	 {  \muz } \\
-	 {  \muz }
-      >>
-  }
-	\paper{}
-}
-
diff --git a/input/test/rests.ly b/input/test/rests.ly
deleted file mode 100644
index 564f6dd272..0000000000
--- a/input/test/rests.ly
+++ /dev/null
@@ -1,43 +0,0 @@
-
-\version "2.1.7"
-\header {
-    texidoc = "@cindex Rests
-
-Rests in various styles.
-
-"
-}
-
-% FIXME: Currently, this file produces "warning: flag `d-3' not found"
-% errors (and similar for "d7") from Stem::flag().  This is should not
-% happen, since there are no notes/stems in this example.
-
-\score {
-    \context Staff \notes\relative c {
-	\property Score.timing = ##f
-	\property Staff.Rest \set #'style = #'mensural
-	r\maxima^"Rest style = \#'mensural"
-	r\longa r\breve r1 r2 r4 r8 r16 r32 r64 r128 r128
-	\bar empty \break
-
-	\property Staff.Rest \set #'style = #'neo_mensural
-	r\maxima^"Rest style = \#'neo\\_mensural"
-	r\longa r\breve r1 r2 r4 r8 r16 r32 r64 r128 r128
-	\bar empty \break
-
-	\property Staff.Rest \set #'style = #'classical
-	r\maxima^"Rest style = \#'classical"
-	r\longa r\breve r1 r2 r4 r8 r16 r32 r64 r128 r128
-	\bar empty \break
-
-	\property Staff.Rest \set #'style = #'default
-	r\maxima^"Rest style = \#'default"
-	r\longa r\breve r1 r2 r4 r8 r16 r32 r64 r128 r128
-	\break
-    }
-    \paper {
-	indent = 0.0
-	raggedright = ##t
-    }
-}
-
diff --git a/input/test/reverse-music.ly b/input/test/reverse-music.ly
deleted file mode 100644
index 1ad20e94cf..0000000000
--- a/input/test/reverse-music.ly
+++ /dev/null
@@ -1,38 +0,0 @@
-
-\version "2.1.7"
-% possible rename to scheme-something.
-\header { texidoc="@cindex Scheme Reverse Music
-Simple customised music apply. "
-}
-
-music = \notes \relative c'' { c4 d4( e4 f4 }
-
-#(define (reverse-music music)
-  (let* ((elements (ly:get-mus-property music 'elements))
-         (reversed (reverse elements))
-         (e (ly:get-mus-property music 'element))
-         (span-dir (ly:get-mus-property music 'span-direction)))
-
-    (ly:set-mus-property! music 'elements reversed)
-
-    (if (ly:music? e)
-        (ly:set-mus-property!
-         music 'element
-         (reverse-music e)))
-
-    (if (ly:dir? span-dir)
-        (ly:set-mus-property! music 'span-direction (- span-dir)))
-
-    (map reverse-music reversed)
-
-    music))
-
-\score {
-  \context Voice {
-    \music
-    \apply #reverse-music \music
-  }
-  \paper { raggedright = ##t}
-}
-
-
diff --git a/input/test/rhythm-excercise.ly b/input/test/rhythm-excercise.ly
deleted file mode 100644
index 6963896468..0000000000
--- a/input/test/rhythm-excercise.ly
+++ /dev/null
@@ -1,18 +0,0 @@
-\version "2.1.7"
-\header { texidoc = "@cindex Rhythm Exercise
-This example shows a way to generate rhythm exercises with
-LilyPond (e.g. no staff but retaining the barlines). "
-}
-
-\score { \notes { c4 c4 c8[ c8]  c2 c2 }
-
-	 \paper {
-	     \translator { \StaffContext
-			   StaffSymbol \set #'transparent = ##t
-			   \consists Pitch_squash_engraver
-			   \remove Clef_engraver
-		       }
-	     raggedright= ##t	     
-	 }
-}
-
diff --git a/input/test/scales-greek.ly b/input/test/scales-greek.ly
deleted file mode 100644
index d7d4e2ee99..0000000000
--- a/input/test/scales-greek.ly
+++ /dev/null
@@ -1,36 +0,0 @@
-\version "2.1.7"
-\header {
-  texidoc = "
-
-Show different greek scales. All these scales are in the key of C
-(major, ionian, phrygian, etc.)
-
-"
-}
-
-\score  { \notes {
-
-\key c \major c'8 -"major" d'8 e'8 f'8 g'8 a'8 b'8 c''8
-
-\key c \ionian c'8 -"ionian" d'8 e'8 f'8 g'8 a'8 b'8 c''8
-
-\transpose d c { \key d \dorian c'8 -"dorian" d'8 e'8 f'8 g'8 a'8 b'8 c''8 }
-
-\transpose e c { \key e \phrygian c'8 -"phrygian" d'8 e'8 f'8 g'8 a'8 b'8 c''8 }
-
-\transpose f c { \key f \lydian c'8 -"lydian" d'8 e'8 f'8 g'8 a'8 b'8 c''8 }
-
-\transpose g c  { \key g \mixolydian c'8 -"mixolydian" d'8 e'8 f'8 g'8 a'8 b'8 c''8 }
-
-\transpose a c' { \key a \minor c'8 -"minor" d'8 e'8 f'8 g'8 a'8 b'8 c''8 }
-
-\transpose a c' { \key a \aeolian c'8 -"aeolian" d'8 e'8 f'8 g'8 a'8 b'8 c''8 }
-
-\transpose b c' { \key b \locrian c'8 -"locrian" d'8 e'8 f'8 g'8 a'8 b'8 c''8 }
-
-}
-	  
-	\paper { }
-	\midi {}
-}
-
diff --git a/input/test/scheme-interactions.ly b/input/test/scheme-interactions.ly
deleted file mode 100644
index 36f62a7b40..0000000000
--- a/input/test/scheme-interactions.ly
+++ /dev/null
@@ -1,28 +0,0 @@
-\version "2.1.7"
-\header { texidoc = "@cindex Scheme Interactions
-With @code{ly:export}, you can pass of the result of
-Scheme expressions as lilypond input.  Within a Scheme expression,
-you can use, define or change lilypond variables.
-
-In this example, the E-s and D-s are generated using scheme functions,
-and woven together with manually entered C-s.
-
-" }
-
-foo = \notes \transpose c c { d''4-. }
-bra = \notes \transpose c c { e'4-. }
-
-
-\score { 
-  \context Voice \notes\relative c' {
-      c4
-      #(ly:export (make-sequential-music (list foo foo foo )))
-      #(begin (define baz (make-simultaneous-music (list foo bra)))
-	(empty-music))
-      c4
-      \baz
-      c4
-  }
-	\paper {raggedright=##t}
-}
-
diff --git a/input/test/script-abbreviations.ly b/input/test/script-abbreviations.ly
deleted file mode 100644
index 62ff7fc519..0000000000
--- a/input/test/script-abbreviations.ly
+++ /dev/null
@@ -1,26 +0,0 @@
-
-% this chart is used in the manual too.
-
-\version "2.1.7"
-\header { texidoc = "@cindex Script Abbreviations
-
-Some scripts may be entered using an abbreviation.
-
-"
-	  
-}
-
-\score {
-    \notes \context Voice {
-      \property Voice.TextScript \set #'font-family = #'typewriter
-      \property Voice.TextScript \set #'font-shape = #'upright
-      c''4-._"c-."      s4
-      c''4--_"c-{}-"    s4
-      c''4-+_"c-+"      s4
-      c''4-|_"c-|"      s4
-      c''4->_"c->"      s4
-      c''4-^_"c\\^{ }" s4
-      c''4-__"c\_" s4      
-    }
-  }
-
diff --git a/input/test/script-chart.ly b/input/test/script-chart.ly
deleted file mode 100644
index 5d9d21ce86..0000000000
--- a/input/test/script-chart.ly
+++ /dev/null
@@ -1,57 +0,0 @@
-\version "2.1.21"
-
-% this chart is used in the manual too.
-
-\header {
-    texidoc ="@cindex Feta scripts
-
-A chart showing all feta scripts.
-
-"
-}
-
-\score {
-    <<
-      \property Score.LyricText \override #'font-family = #'typewriter
-      \property Score.LyricText \override #'font-shape = #'upright
-      \context Staff \notes {
-	\property Score.timing = ##f
-	\property Score.barAlways = ##t
-	\property Staff.BarLine \override #'transparent = ##t
-        c''\accent             c''\marcato            c''\staccatissimo
-        c''\staccato           c''\tenuto             c''\portato
-        c''\upbow              c''\downbow            c''\flageolet
-        c''\thumb              c''^\lheel              c''\rheel
-        c''^\ltoe               c''\rtoe               c''\open
-        c''\stopped            c''\turn               c''\reverseturn
-        c''\trill              c''\prall              c''\mordent
-        c''\prallprall         c''\prallmordent       c''\upprall
-        c''\downprall          c''\upmordent          c''\downmordent
-        c''\pralldown          c''\prallup            c''\lineprall
-        c''\signumcongruentiae c''\shortfermata       c''\fermata
-        c''\longfermata        c''\verylongfermata    c''\segno
-        c''\coda               c''\varcoda
-      }
-      \context Lyrics \lyrics {
-        accent__                marcato__               staccatissimo__
-        staccato__              tenuto__                portato__
-        upbow__                 downbow__               flageolet__
-        thumb__                 lheel__                 rheel__
-        ltoe__                  rtoe__                  open__
-        stopped__               turn__                  reverseturn__
-        trill__                 prall__                 mordent__
-        prallprall__            prallmordent__          upprall__
-        downprall__             upmordent__             downmordent__
-        pralldown__             prallup__               lineprall__
-        signumcongruentiae__    shortfermata__          fermata__
-        longfermata__           verylongfermata__       segno__
-        coda__                  varcoda__
-      }
-    >>
-    \paper {
-      linewidth = 5.1\in
-      indent    = 0.0\mm
-    }
-  }
-
-
diff --git a/input/test/script-priority.ly b/input/test/script-priority.ly
deleted file mode 100644
index 585aad7f5a..0000000000
--- a/input/test/script-priority.ly
+++ /dev/null
@@ -1,24 +0,0 @@
-
-\version "2.1.7"
-
-\header { texidoc = "@cindex Script Priority
-Relative placements of different script types can be controlled
-by overriding script-priority. "
-}
-
-
-\score{
-    \context Staff \notes \relative g''{
-	
- 	\property Score.TextScript \override #'script-priority = #-100
-	a4^\prall^\markup \fontsize #-2 \musicglyph #"accidentals-1"
-
-	
- 	\property Score.Script \override #'script-priority = #-100
- 	\property Score.TextScript \revert #'script-priority
-	
-	a4^\prall^\markup \fontsize  #-2 \musicglyph #"accidentals-1"
-    }
-	\paper { raggedright = ##t} 
-}
-
diff --git a/input/test/script-stack.ly b/input/test/script-stack.ly
deleted file mode 100644
index 4ebc914f9a..0000000000
--- a/input/test/script-stack.ly
+++ /dev/null
@@ -1,15 +0,0 @@
-
-\version "2.1.7"
-
-\header { texidoc = "@cindex Stacked Text Articulation
-You can stack text and articulations. "
-}
-
-\score {
-	\notes\relative c' {
-		c2_"geen gedonder"_"jij gaat onder"
-		c2^^^.^|^"down"^"up"
-	 }
-	\paper { raggedright = ##t}
-}
-
diff --git a/input/test/separate-staccato.ly b/input/test/separate-staccato.ly
deleted file mode 100644
index b0449c1b22..0000000000
--- a/input/test/separate-staccato.ly
+++ /dev/null
@@ -1,21 +0,0 @@
-
-\version "2.1.19"
-% possible rename.  -gp
-
-\header { texidoc="@cindex Seperate Staccato
-You can enter notes and articulations separately, and merge
-them into one thread.  Here is an example to add repeated staccato dots."
-} 
-
-staccatos = \notes { s4-. s-. s-. s s }
-
-music = \notes\relative c' { c4 d e f g  a b c d e }
-
-\score {
-   \context Voice <<
-     \music
-     \repeat unfold 2 \staccatos
-   >>
-	\paper{raggedright=##t}
-}
-
diff --git a/input/test/slur-attachment-override.ly b/input/test/slur-attachment-override.ly
deleted file mode 100644
index 7d0becae8c..0000000000
--- a/input/test/slur-attachment-override.ly
+++ /dev/null
@@ -1,28 +0,0 @@
-
-\version "2.1.7"
-
-\header{
-texidoc="@cindex Slur Attachment Override
-In some cases you may want to set slur attachments by hand. "
-}
-
-
-%%
-%% except that both slurs are stem <<-> stem.
-%%
-
-fragment = \notes {
-  \property Voice.autoBeaming = ##f
-  \property Voice.Stem \set #'direction = #1
-  \property Voice.Slur \set #'direction = #1
-  d'32( f'4  d8..)
-  \property Voice.Slur \set #'attachment = #'(stem . stem)
-  d,32( f'4  d8.)
-}
-
-
-\score {
-	\notes\relative c \fragment
-	\paper { raggedright = ##t} 
-}
-
diff --git a/input/test/slur-beautiful.ly b/input/test/slur-beautiful.ly
deleted file mode 100644
index 6ec1cf91ee..0000000000
--- a/input/test/slur-beautiful.ly
+++ /dev/null
@@ -1,24 +0,0 @@
-
-\version "2.1.7"
-% TODO bit too wordy; edit a bit to cut stuff.  -gp
-\header { texidoc ="@cindex Slur Beautiful
-Similarly, the curvature of a slur is adjusted to stay clear of note
-heads and stems.  When that would increase the curvature too much, the
-slur is reverted to its default shape.  The threshold for this
-decision is in Slur's object property @code{beautiful}.
-It is loosely related to the enclosed area between the slur and the
-notes.  Usually, the default setting works well, but in some cases you
-may prefer a curved slur when LilyPond decides for a vertically moved
-one.  You can indicate this preference by increasing the
-@code{beautiful} value."
-}
-
-\score { \notes {\relative c' {
-  \stemDown \slurUp
-  c16( a' f' a a f a, c,)
-  c( a' f' a a f d, c)
-  \property Voice.Slur \override #'beautiful = #5.0
-  c( a' f' a a f d, c)
-}}
-\paper { raggedright = ##t }
-}
diff --git a/input/test/slur-dash.ly b/input/test/slur-dash.ly
deleted file mode 100644
index 9d25005777..0000000000
--- a/input/test/slur-dash.ly
+++ /dev/null
@@ -1,25 +0,0 @@
-\version "2.1.7"
-\header {texidoc = "@cindex Slur, dotted
-You can print different kinds of slurs (dotted, dashed, etc). "
-} 
-\score{
-	\notes{
-		c( d e  c) |
-		\slurDotted
-		c( d e  c) |
-		\slurSolid
-		c( d e  c) |
-		\property Voice. Slur \set #'dashed = #0.0
-		c( d e  c) |
-		\slurSolid
-		c( d e  c) |
-	}
-	\paper{ raggedright=##t }
-%	      indent = 0.0\pt
-		%for broken!
-		% linewidth= 30.\mm
-%	}
-}
-
-
-
diff --git a/input/test/slur-manual.ly b/input/test/slur-manual.ly
deleted file mode 100644
index 77ff2d15f3..0000000000
--- a/input/test/slur-manual.ly
+++ /dev/null
@@ -1,30 +0,0 @@
-\version "2.1.7"
-\header {
-
-
-    texidoc = "In extreme cases, you can resort to setting slur
-    control-points manually. This involves a lot of trial and error,
-    though. Be sure to force line breaks at both sides, since
-    different horizontal spacing will require rearrangement of the
-    slur."
- 
-    }
-
-
-\score {\notes \new PianoStaff  <<
-    \context Staff = up { \clef bass s1 * 6 } 
-    \context Staff = down \relative c {
-	\clef bass
-	r4 r8
-	\once\property Voice.Slur \set #'extra-offset = #'(0 . -8)
-	\once\property Voice.Slur
-	\set #'control-points =
-	#'((0 . -4) (2 . 0) (60 . 0) (63 . 4))
-			   c8( as' f c' as f c as' f
-			   \change Staff = up
-			   \clef treble
-			   c' as f' c as' f c' as
-			   f' c as' f c'4)
-			   }>>
-\paper { raggedright = ##t }
-    }
diff --git a/input/test/slur-minimum-length.ly b/input/test/slur-minimum-length.ly
deleted file mode 100644
index 4c0901255f..0000000000
--- a/input/test/slur-minimum-length.ly
+++ /dev/null
@@ -1,16 +0,0 @@
-
-\version "2.1.7"
-
-\header { texidoc = "@cindex Slur Minimum Length
-You can set the minimum length of a slur. " 
-}
-
-\score{
-	\notes\relative c''{
-		\time 2/4
-		\property Voice.Slur \set #'minimum-length = #40
-		c(c)
-		c~c\break
-		}
-}
-
diff --git a/input/test/slur-ugly.ly b/input/test/slur-ugly.ly
deleted file mode 100644
index a16cddebb2..0000000000
--- a/input/test/slur-ugly.ly
+++ /dev/null
@@ -1,38 +0,0 @@
-
-\version "2.1.18"
-
-\header { texidoc="@cindex Slur Ugly
-You can get ugly slurs, if you want. "
-}
-
-baseWalk = \notes \relative c {
-  d,8( a' d f a d f d a f d  a)
-}
-
-\score {
-  \notes \context PianoStaff <<
-    \time 6/4
-    \context Staff=up { s1 * 6/4 }
-    \context Staff=down <<
-      \clef bass
-      \autochange  \context Voice \baseWalk
-    >>
-  >>
-  \paper {
-    raggedright = ##t
-    \translator {
-      \VoiceContext
-      Slur \override #'beautiful = #5.0
-      Slur \override #'direction = #1
-      Stem \override #'direction = #-1
-      autoBeamSettings \override #'(end * * * *)
-        = #(ly:make-moment 1 2)
-    }
-    \translator {
-      \PianoStaffContext
-      VerticalAlignment \override #'threshold = #'(5 . 5)
-    }
-  }
-}
-
-
diff --git a/input/test/smart-transpose.ly b/input/test/smart-transpose.ly
deleted file mode 100644
index c646cebc2d..0000000000
--- a/input/test/smart-transpose.ly
+++ /dev/null
@@ -1,75 +0,0 @@
-
-\version "1.9.6"
-
-\header {
-texidoc="@cindex Smart Transpose
-@example
-	Here's a copy of my feature request :
-@quotation
-        Your task, if you accept it is to implement a \smarttranspose
-        command>> that would translate such oddities into more natural
-        notations. Double accidentals should be removed, as well as E-sharp
-        (-> F), bC (-> B), bF (-> E), B-sharp (-> C).
-@end quotation
-
-You mean like this. (Sorry 'bout the nuked indentation.)
-
-Modified to use the standard transpose mechanism. The question is
-how useful these enharmonic modifications are. Mats B.
-@end example
-"
-}
-
-#(define  (unhair-pitch p)
-  (let* ((o (ly:pitch-octave p))
-         (a (ly:pitch-alteration p))
-         (n (ly:pitch-notename p)))
-
-    (cond
-     ((and (> a 1) (or (eq? n 6) (eq? n 2)))
-      (set! a (- a 2)) (set! n (+ n 1)))
-     ((and (< a -1) (or (eq? n 0) (eq? n 3)))
-      (set! a (+ a 2)) (set! n (- n 1))))
-
-    (cond
-     ((eq? a 4)  (set! a 0) (set! n (+ n 1)))
-     ((eq? a -4) (set! a 0) (set! n (- n 1))))
-
-    (if (< n 0) (begin (set!  o (- o 1)) (set! n (+ n 7))))
-    (if (> n 6) (begin (set!  o (+ o 1)) (set! n (- n 7))))
-
-    (ly:make-pitch o n a)))
-
-#(define (simplify music)
-  (let* ((es (ly:get-mus-property music 'elements))
-         (e (ly:get-mus-property music 'element))
-         (p (ly:get-mus-property music 'pitch)))
-
-    (if (pair? es)
-        (ly:set-mus-property!
-         music 'elements
-         (map (lambda (x) (simplify x)) es)))
-
-    (if (ly:music? e)
-        (ly:set-mus-property!
-         music 'element
-         (simplify e)))
-
-    (if (ly:pitch? p)
-        (begin
-          (set! p (unhair-pitch p))
-          (ly:set-mus-property! music 'pitch p)))
-
-    music))
-
-music = \notes \relative c' { c4 d  e f g a b  c }
-
-\score {
-  \notes \context Staff {
-    \transpose c ais \music
-    \apply #simplify \transpose c ais \music
-  }
-  \paper { raggedright = ##t}
-}
-
-
diff --git a/input/test/spacing-2.ly b/input/test/spacing-2.ly
deleted file mode 100644
index 617273cf9c..0000000000
--- a/input/test/spacing-2.ly
+++ /dev/null
@@ -1,36 +0,0 @@
-\version "2.1.7"
-
-% more yummy regression goodness.  -gp
-\header {
-texidoc = "
-1. Upon stretching every note should stretch according to duration.
-
-2. 8th notes should be spaced equidistantly.
-"
-}
-
-\score { 
-    \notes \relative c''
-	\context GrandStaff <<
-	\new Staff <<
-		\new Voice { \stemUp\slurUp\tieUp
-			e4 dis4 e2 }
-		\new Voice { \stemDown\slurDown\tieDown
-			 cis8[ a]  fis[ b] gis2 }
-		{\key e \major }
-		>>
-	\new Staff { \clef "bass" \key e \major
-		 a,16[ e dis e]  b'8[ b,]  e16[ e, gis b] e4
-	} 
->> 
-
-\paper 
-{
-%	linewidth = 5.0 \cm % lilypond barfs on -1
-	linewidth = 8.0 \cm
-%	linewidth = 12.0 \cm	
-}
-}
-
-
-
diff --git a/input/test/spanner-after-break-tweak.ly b/input/test/spanner-after-break-tweak.ly
deleted file mode 100644
index 63d27e532d..0000000000
--- a/input/test/spanner-after-break-tweak.ly
+++ /dev/null
@@ -1,34 +0,0 @@
-
-\version "2.1.7"
-
-\header { texidoc = "@cindex Spanner after break
-
-To selectively tweak spanners after the linebreaking
-process, Scheme code must be used.  In this simple example, the tie
-after the line break is moved around. "
-
-      }
-
-#(define (my-callback grob)
-  (let* (
-      (o (ly:get-original grob))
-      (b (if (ly:grob? o) (ly:get-broken-into o) '() ))
-      )
-
-    ;; Call the equivalent of Tie::after_line_breaking
-    ;; if you're using this for other grob-types.
-    
-    (if (and  (>= (length b) 2) (eq? (car (last-pair b)) grob))
-	(ly:set-grob-property! grob 'extra-offset '(-2 . -1))
-	)
-  ))
-
-#(debug-enable 'backtrace)
-
-\score {\notes \relative c'' { 
-    \property Voice.Tie \override #'after-line-breaking-callback =
-       #my-callback
-    c1 ~ \break c2 ~ c
-}
-    \paper { raggedright = ##t } 
-    }
diff --git a/input/test/staff-bracket.ly b/input/test/staff-bracket.ly
deleted file mode 100644
index 9ecd36ba41..0000000000
--- a/input/test/staff-bracket.ly
+++ /dev/null
@@ -1,26 +0,0 @@
-\version "2.1.7"
-
-\header{texidoc = "@cindex Staff Bracket
-Here's an example of staff brackets. "
-}
-
-\score
-{
-  \new StaffGroup \notes \relative c'' <<
-      \new Staff {  b1 }
-    \new PianoStaff <<
-      \new Staff \notes { b1 }
-      \new Staff \notes { b1 }
-    >> 
-  >>
-
-  \paper {
-    \translator
-    {
-      \StaffContext
-      \consists Instrument_name_engraver
-    }
-    raggedright=##t
-  }
-}
-
diff --git a/input/test/staff-container.ly b/input/test/staff-container.ly
deleted file mode 100644
index 8ad2a1753e..0000000000
--- a/input/test/staff-container.ly
+++ /dev/null
@@ -1,68 +0,0 @@
-\version "2.1.20"
-
-\header {
-
-    texidoc = "
-
-Container By splitting the grouping (Axis_group_engraver) and creation
-functionality into separate contexts, you can override interesting
-things.
-
-Notation like this is used in modern scores. Note that LilyPond is not
-especially prepared for it: the clefs and time-signatures don't do
-what you would expect.
-
-    "
-
-      }
-
-
-
-%% 
-%% s4 would create a staff.
-%%
-quarterSkip = #(make-skip-music (ly:make-duration 2 0))
-
-\score  {
- \notes \relative c'' <<
- 	\new StaffContainer {
-
-	    %% need << >>, otherwise we descend to the voice inside SA  
-	    << \new Staff { c4 c4 } >>
-	    \quarterSkip
-	    
-	    << \new Staff { b4 b4 } >> 
-	}
- 	\new StaffContainer {
-	    \quarterSkip
-	    << \context Staff { e d f } >>
-	    \quarterSkip
-	}
- >>
-
-\paper {
-	\translator {
-		\ScoreContext
-		\accepts StaffContainer
-		\denies Staff
-	}
-	\translator {
-		\type Engraver_group_engraver
-		\consists Clef_engraver
-		\consists Time_signature_engraver
-		\consistsend "Axis_group_engraver"
-		\accepts "Staff"
-		
-		\name StaffContainer
-	}
-	\translator {
-		\StaffContext
-		\remove Axis_group_engraver
-		\remove Clef_engraver
-		\remove Time_signature_engraver
-	}
-	raggedright=##t
-}
-}
-
-
diff --git a/input/test/staff-lines.ly b/input/test/staff-lines.ly
deleted file mode 100644
index 33c5c92303..0000000000
--- a/input/test/staff-lines.ly
+++ /dev/null
@@ -1,32 +0,0 @@
-
-\version "2.1.7"
-
-\header {
-
-    texidoc="@cindex Staff Lines Staff symbol properties may also be
- set with @code{\\property}. "
-	  
-}
-
-
-upper = \notes\relative c'' {
-  c1 d e f
-}
-
-lower = \notes\relative c {
-  c1 b a g
-}
-
-\score {
-  \context PianoStaff <<
-    \new Staff <<
-      \upper
-    >>  
-    \new Staff  {
-	\property Staff.StaffSymbol \set #'line-count = #4 
-        \clef bass
-        \lower
-    }
-  >>
-  \paper { raggedright=##t}  
-}
diff --git a/input/test/staff-size.ly b/input/test/staff-size.ly
deleted file mode 100644
index c58f0ea172..0000000000
--- a/input/test/staff-size.ly
+++ /dev/null
@@ -1,26 +0,0 @@
-\version "2.1.7"
-
-\header { texidoc = "@cindex Staff Size
-
-For setting staff sizes, both @code{staff-space} and @code{fontSize}
-must be set."
-
-}
-
-\score {
-  \notes \relative c' <<
-      \new Staff \relative c'' {
-	  \dynamicDown c,,4 \ff c c c
-      }
-      \new Staff \with {
-	  fontSize = #-1
-	  StaffSymbol \set #'staff-space = #(magstep -1)
-      } {
-	  \clef bass
-	  c8 c c c  c c c c
-      }
-  >>
-  \paper { raggedright = ##t}
-}
-
-
diff --git a/input/test/staff-space.ly b/input/test/staff-space.ly
deleted file mode 100644
index 50656c5e80..0000000000
--- a/input/test/staff-space.ly
+++ /dev/null
@@ -1,24 +0,0 @@
-\version "2.1.7"
-
-\header{ texidoc ="@cindex Staff Space
-Setting staff space on a staff. "
-}
-
-\score { 
-  \notes \relative c'' \context GrandStaff <<
-	\new Staff { c4 c4  }
-	\new Staff {
-	    c4
-
-	    <c d f g>8[
-	   e]
-	   f[ c']
-	 }
->>
-\paper {  \translator  {
-      \StaffContext
-      StaffSymbol \set #'staff-space = #5.5
-      }
-	raggedright=##t }
-}
-
diff --git a/input/test/stem-centered.ly b/input/test/stem-centered.ly
deleted file mode 100644
index d904f0d0a2..0000000000
--- a/input/test/stem-centered.ly
+++ /dev/null
@@ -1,19 +0,0 @@
-
-\version "2.1.7"
-% possible rename to ancient- something.
-\header {
-    texidoc ="@cindex Ancient Mensural Note Heads
-Mensural note heads. "
-}
-
-\score {
-	\notes {
-	\relative c'' {
-		\property Voice . NoteHead \set #'style = #'mensural
-		c\maxima*1/8
-		c\longa*1/4 c\breve*1/2 c1 c2 c4 c8 
-		}
-	}
-	\paper{raggedright=##t}
-}
-
diff --git a/input/test/stem-cross-staff.ly b/input/test/stem-cross-staff.ly
deleted file mode 100644
index d1821911d9..0000000000
--- a/input/test/stem-cross-staff.ly
+++ /dev/null
@@ -1,31 +0,0 @@
-\version "2.1.7"
-
-\header { texidoc = "@cindex Stem Cross Staff
-There is no support for putting chords across staves.
-You can get this result by increasing the length of the stem in the
-lower stave so it reaches the stem in the upper stave, or vice versa. "
-}
-
-stemExtend = \once \property Voice.Stem \override #'length  = #22
-
-%% following reqs 1.7.1 or better.
-noFlag = \once \property Voice.Stem \override #'flag-style = #'no-flag
-
-
-\score { \notes 
-    \context  PianoStaff
-        << \new Staff   {
-	    \stemDown
-	    \stemExtend
-	    f'4
-	    \stemExtend
-	    \noFlag
-	    f'8 }
-          \new Staff {
-	      \clef bass
-	      a4 a8 }
-	  >>
-
-    \paper { raggedright = ##t}
-}
-
diff --git a/input/test/stem-extend.ly b/input/test/stem-extend.ly
deleted file mode 100644
index 999b2bf425..0000000000
--- a/input/test/stem-extend.ly
+++ /dev/null
@@ -1,25 +0,0 @@
-\version "2.1.7"
-
-\header { texidoc = "@cindex Stem Extend
-You can stop LilyPond from extending stems to the center line. "
-}
-
-\score { 
-  \context Voice \notes\relative c {
-	\context Staff <<
-		\new Voice { 
-			f2 f8 g a b 
-			\property Voice.Stem \set #'no-stem-extend = ##t
-		 	f2 f8 g a b
-		}
-		\new Voice { 
-			c''2 c8 b a g
-			\property Voice.Stem \set #'no-stem-extend = ##t
-			c2 c8 b a g
-		}
-	>>
-	
-  }
-  \paper { raggedright = ##t}  
-}
-
diff --git a/input/test/stem-length.ly b/input/test/stem-length.ly
deleted file mode 100644
index 7458780b1e..0000000000
--- a/input/test/stem-length.ly
+++ /dev/null
@@ -1,15 +0,0 @@
-
-\version "2.1.7"
-
-\header{ texidoc = "@cindex Stem Length
-You can alter the length of stems. "
-}
-
-\score { 
-  \context Voice \notes\relative c {
-	g''4 \property Voice.Stem \set #'length = #14  g4
-	\property Voice.Stem \set #'length = #3 g4  g,,4  
-  }
-  \paper { raggedright = ##t }  
-}
-
diff --git a/input/test/tablature-hammer.ly b/input/test/tablature-hammer.ly
deleted file mode 100644
index 37bc68a696..0000000000
--- a/input/test/tablature-hammer.ly
+++ /dev/null
@@ -1,17 +0,0 @@
-
-\version "2.1.7"
-\header {texidoc = "@cindex Tablature hammer
-You can fake a hammer in tablature with slurs. "
-} 
-
-\score{
-  \context TabStaff <<
-	\notes\relative c''{
-		c(d)
-		d(d)
-		d(c)
-  }
-  >>
-	\paper{ raggedright = ##t}
-}
-
diff --git a/input/test/tablature.ly b/input/test/tablature.ly
deleted file mode 100644
index a4fa587e8b..0000000000
--- a/input/test/tablature.ly
+++ /dev/null
@@ -1,31 +0,0 @@
-\version "2.1.7"
-
-\header{ texidoc = "@cindex Tabulature
-A sample tablature, with both normal staff and tab.
-
-Tablature is done by overriding the note-head formatting function, and
-putting it on a 6-line staff. A special engraver takes care of going
-from string-number + pitch to number. "
-}
-
-partition = \notes {
-    \key e \major
-    e8\5 fis\5 gis\5 a\5 b\5 cis'\5 dis'\5 e'\5
-    e8\4 fis\4 gis\4 a\4 b\4 cis'\4 dis'\4 e'\4
-    e8 fis gis a b cis' dis' e'
-    \property Score.minimumFret = #5
-    e8 fis gis a b cis' dis' e'
-}
-
-\score {
-  \context StaffGroup <<
-    \context Staff <<
-	\clef "G_8"
-	\partition
-    >>
-    \context TabStaff <<
-	\partition
-    >>
-  >>
-}
-
diff --git a/input/test/temporary-stave.ly b/input/test/temporary-stave.ly
deleted file mode 100644
index fc1e824262..0000000000
--- a/input/test/temporary-stave.ly
+++ /dev/null
@@ -1,44 +0,0 @@
-
-\version "2.1.7"
-
-\header {
-
-texidoc= "
-An additional stave can be typeset in the middle of a score line. 
-A new context type is created to avoid printing time and key
-signatures and clef at the beginning of the temporary stave.
-"
-} 
-
-\score {
-  \notes {
-    \relative c' {
-      \context Staff = One { c4 d e f }
-      <<
-        {c d e f | c d e f | c c c c | c c c c }
-        \context TemporaryStaff = Two { c4 c8 d e4 f | c d e f |
-          c c c c | c c c8 b c b |}
-      >>
-      c4 d e f |
-    }
-  }
-  \paper {
-    \translator {
-      \ScoreContext
-      \consists Span_bar_engraver
-      % Avoid a vertical line at the beginning of the system:
-      \remove System_start_delimiter_engraver
-      % Incorporate the new context in the hierarchy
-      \accepts "TemporaryStaff"
-    }
-    \translator {
-      \StaffContext
-      \name "TemporaryStaff"
-      \alias "Staff"
-      \remove "Clef_engraver"
-      \remove "Time_signature_engraver"
-      \remove "Key_engraver"
-    }
-  }
-}
-
diff --git a/input/test/text-rotate.ly b/input/test/text-rotate.ly
deleted file mode 100644
index bb750a98e2..0000000000
--- a/input/test/text-rotate.ly
+++ /dev/null
@@ -1,30 +0,0 @@
-\header {
-    latexpackages = "graphicx"
-    
-    texidoc = "
-@cindex rotated text
-@cindex choir, rotated text
-
-Rotated text may be faked using inline TeX (or inline
-postscript). To see the result, this files must be processed with
-the lilypond.py script, and a line must be uncommented.
-
-"
-
-    %% fixme.
-    
-
-    }
-\score {
-\new Staff \notes \relative c'' {
-    \property Staff.instrument	= #"rotatebox{90}{Chor}"
-
-%%  uncomment this for rotation
-%    \property Staff.instrument	= #"\\rotatebox{90}{Chor}"
-
-    c4 c4 }
-
-\paper { raggedright = ##t }
-}
-
-
diff --git a/input/test/text-spanner.ly b/input/test/text-spanner.ly
deleted file mode 100644
index 419707368f..0000000000
--- a/input/test/text-spanner.ly
+++ /dev/null
@@ -1,41 +0,0 @@
-
-\version "2.1.7"
-
-\header { texidoc = "@cindex text spanner
-You can make LilyPond print text spanners. "
-}
-
-\score{
-    \notes\relative c''{
-        \property Voice.TextSpanner \override #'edge-text = #'("bla" . "blu")
-        a \startTextSpan
-	b c 
-        a \stopTextSpan
-
-        \property Voice.TextSpanner \override #'dash-period = #2
-        \property Voice.TextSpanner \override #'dash-fraction = #0.0
-        a \startTextSpan
-	b c 
-        a \stopTextSpan
-
-        \property Voice.TextSpanner \revert #'style
-        \property Voice.TextSpanner \override #'style = #'dashed-line
-        \property Voice.TextSpanner \override #'edge-height = #'(1 . -2)
-        a \startTextSpan
-	b c 
-        a \stopTextSpan
-
-
-        \property Staff.centralCPosition = #-13
-
-        \property Voice.TextSpanner \override #'dash-period = #10
-        \property Voice.TextSpanner \override #'dash-fraction = #.5
-        \property Voice.TextSpanner \override #'thickness = #10
-        a \startTextSpan
-	b c 
-        a \stopTextSpan
-        \property Staff.centralCPosition = #-6	
-    }
-	\paper{ raggedright = ##t}
-}
-
diff --git a/input/test/textscript.ly b/input/test/textscript.ly
deleted file mode 100644
index 5d96662aa7..0000000000
--- a/input/test/textscript.ly
+++ /dev/null
@@ -1,19 +0,0 @@
-
-\version "2.1.7"
-
-\header { texidoc = "@cindex Textscript
-Test font selection and scm text markup. "
-}
-
-\score{
-  \notes\relative c''{
-    \property Voice . TextScript \override #'font-shape = #'upright
-    c1^\markup { \dynamic "p" "ma sosten." }  
-    c^\markup \huge "ABCD" 
-    \property Voice . TextScript \override #'font-series = #'bold
-    c^\markup { \bold "Dal" " " \raise #0.8 \musicglyph #"scripts-segno" }
-    c^\markup \huge "ABCD"
-  }
-	\paper{ }
-}
-
diff --git a/input/test/tie-cross-voice.ly b/input/test/tie-cross-voice.ly
deleted file mode 100644
index 4ad8f4249c..0000000000
--- a/input/test/tie-cross-voice.ly
+++ /dev/null
@@ -1,21 +0,0 @@
-\version "2.1.7"
-
-
-
-\header {
-    texidoc = "Cross voice ties can be faked by blanking noteheads."
-    }
-
-
-\score {
-\context Staff \notes {
-\relative c''  <<
-  {
-      \once \property Voice.Stem \set #'transparent = ##t
-      b8~ b8 }
-  \\
-  { b[ g8] }
->>
-}
-\paper { raggedright = ##t }
-}
diff --git a/input/test/tie-sparse.ly b/input/test/tie-sparse.ly
deleted file mode 100644
index 4d0c04b680..0000000000
--- a/input/test/tie-sparse.ly
+++ /dev/null
@@ -1,16 +0,0 @@
-
-\version "2.1.7"
-
-\header { texidoc = "@cindex Tie Sparse
-Setting sparseTies causes only one tie to be
-generated per chord pair. "
-}
-	
-\score { 
-  \context Voice \notes\relative c {
-	\property Voice.sparseTies = ##t
-	c''  <c e g> ~ <c e g> 
-  }
-  \paper { raggedright = ##t }  
-}
-
diff --git a/input/test/time-signature-double.ly b/input/test/time-signature-double.ly
deleted file mode 100644
index 35fc4f3cf2..0000000000
--- a/input/test/time-signature-double.ly
+++ /dev/null
@@ -1,35 +0,0 @@
-
-\version "2.1.21"
-
-\header { texidoc= "
-
-@cindex Double time signature
-@cindex markup
-@cindex Time signature, double.
-
-
-Double time
-signatures are not supported explicitly, but can be faked with markups
-and overriding formatting routines. " }
-
-tsMarkup =
-\markup  {
-    \number { 
-    \column < "6" "4" >
-    \musicglyph #"scripts-stopped" 
-    \bracket \column < "3" "2" >
-    }}
-	
-
-\score  { \notes \relative c'
-	  {
-	   \property Staff.TimeSignature \override #'print-function = #Text_item::print
-	   \property Staff.TimeSignature \override #'text = #tsMarkup
-	   
-	   
-	   \time 3/2
-	   c2 c c 
-	   
-   }
-	\paper{ raggedright = ##t}
-}	  
diff --git a/input/test/time.ly b/input/test/time.ly
deleted file mode 100644
index 39c4371f53..0000000000
--- a/input/test/time.ly
+++ /dev/null
@@ -1,188 +0,0 @@
-
-\version "2.1.7"
-% TODO: This file could be old.  Ask about it later.  -gp
-
-\header { texidoc =  "@cindex Time
-
-Old time signatures. For further information, consult the file. 
-    
-"
-}
-
-
-%{
-
-two examples what might be expected.  -- jr
-
-TODO: The former "old6/8alt" is currently not addressable.  This will
-be fixed by introducing an additional style property that switches
-between various mensural diminution styles.  -- jr
-
-TODO: Style "1xxx" really should be a special case of style
-"numbered".  In other words, style "1xxx" should be removed, and a new
-property "denominator-style" should be introduced, with values
-"numbered" (which should be equivalent to the current "numbered"
-style), "none" (which should be equivalent to the current "1xxx"
-style), and "notehead" (which should place a proper notehead to the
-right side of the nominator).  -- jr
-
-
-****************
-
-IMPORTANT NOTE: The current selection scheme for time signature
-symbols is not flexible enough for future extensions such as various
-flavours of early mensural notation or complex signatures as in
-contemporary music.  Therefore, the semantics of time-signature
-properties will quite definitely change, and maybe the syntax of the
-\time request will possibly be extended. See the input file for TODOs.
-
-****************
-
-%}
-
-\score { 
-  \context Voice \notes\relative c {
-    % LilyPond doesn't understand 'default =>> it does what you want
-    \property Staff.TimeSignature \override #'style = #'default
-    \time 1/1
-    c''1^"TimeSignature style = \#'default" 
-    \time 2/2 
-    c1 
-    \time 2/4 
-    c2 
-    \time 4/8 
-    c2 
-    \time 3/4 
-    c2. 
-    \time 4/4 
-    c1 
-    \time 5/4 
-    c2. c2 
-    \time 6/4 
-    c1. 
-    \time 3/2 
-    c1. 
-    \time 7/4 
-    c1 c2. 
-    \time 8/4 
-    c\breve
-    \time 9/4 
-    c2. c2. c2. 
-    \break
-    \property Staff.TimeSignature \set #'style = #'mensural
-    \time 1/1 
-    c1^"TimeSignature style = \#'mensural" 
-    \time 2/2 
-    c1 
-    \time 2/4 
-    c2 
-    \time 4/8 
-    c2 
-    \time 3/4 
-    c2. 
-    \time 4/4 
-    c1 
-    \time 5/4 
-    c2. c2 
-    \time 6/4 
-    c1. 
-    \time 3/2 
-    c1. 
-    \time 7/4 
-    c1 c2. 
-    \time 8/4 
-    c\breve 
-    \time 9/4 
-    c2. c2. c2. 
-    \time 6/8 
-    c2. 
-    \time 9/8 
-    c4. c4. c4. 
-    \break
-    \property Staff.TimeSignature \set #'style = #'neo_mensural
-    \time 1/1 
-    c1^"TimeSignature style = \#'neo\_mensural" 
-    \time 2/2 
-    c1 
-    \time 2/4 
-    c2 
-    \time 4/8 
-    c2 
-    \time 3/4 
-    c2. 
-    \time 4/4 
-    c1 
-    \time 5/4 
-    c2. c2 
-    \time 6/4 
-    c1. 
-    \time 3/2 
-    c1. 
-    \time 7/4 
-    c1 c2. 
-    \time 8/4 
-    c\breve 
-    \time 9/4 
-    c2. c2. c2. 
-    \time 6/8 
-    c2. 
-    \time 9/8 
-    c4. c4. c4. 
-    \break
-    \property Staff.TimeSignature \set #'style = #'numbered
-    \time 1/1 
-    c1^"TimeSignature style = \#'numbered"
-    \time 2/2 
-    c1
-    \time 2/4 
-    c2 
-    \time 4/8 
-    c2 
-    \time 3/4 
-    c2.
-    \time 4/4 
-    c1
-    \time 5/4 
-    c2. c2
-    \time 6/4 
-    c1.
-    \time 3/2 
-    c1.
-    \time 7/4 
-    c1 c2.
-    \time 8/4 
-    c\breve 
-    \time 9/4 
-    c2. c2. c2.
-    \break
-    % If the style starts with a '1', you get this style
-    \property Staff.TimeSignature \set #'style = #'1style
-    \time 1/1 
-    c1^"TimeSignature style = \#'1xxx"
-    \time 2/2 
-    c1
-    \time 2/4 
-    c2 
-    \time 4/8 
-    c2 
-    \time 3/4 
-    c2.
-    \time 4/4 
-    c1
-    \time 5/4 
-    c2. c2
-    \time 6/4 
-    c1.
-    \time 3/2 
-    c1.
-    \time 7/4 
-    c1 c2.
-    \time 8/4 
-    c\breve 
-    \time 9/4 
-    c2. c2. c2. 
-  }
-  \paper { }  
-  \midi { }
-}
-
diff --git a/input/test/timing.ly b/input/test/timing.ly
deleted file mode 100644
index c3fbd2e237..0000000000
--- a/input/test/timing.ly
+++ /dev/null
@@ -1,33 +0,0 @@
-
-\version "2.1.7"
-% possible rename to bar-something.
-
-\header{ texidoc = "@cindex Bar Length
-
-You can alter the length of bars by setting
-@code{measureLength} or by resetting @code{measurePosition}. "
-}
-
-\score { 
-  \context Voice \notes\relative c {
-    
-	
-	% \property Score. measurePosition = #(ly:make-moment -1 4)
-	\partial 4
-	c''4 c4 c4 c2 c1
-	\cadenzaOn  c8[ d e f]  g[ a b c b c b c]
-	\cadenzaOff
-	c4 c4 c4 c4
-	\property Score. measureLength = #(ly:make-moment 5 4)
-	
-	c1 c4
-	c1 c4 
-	c4 c4
-	\property Score. measurePosition = #(ly:make-moment -3 8)
-	b8 b b
-	c4 c1
-	
-  }
-  \paper { raggedright= ##t}  
-}
-
diff --git a/input/test/title.ly b/input/test/title.ly
deleted file mode 100644
index 4789d181d1..0000000000
--- a/input/test/title.ly
+++ /dev/null
@@ -1,47 +0,0 @@
-\version "2.1.7"
-% MERGE with lilypond-
-\header {
-  filename =  "title.ly"
-  dedication = "dedication"
-  title = "Title"
-  subtitle = "Subtitle"
-  subsubtitle = "Subsubtitle"
-  composer = "Composer (xxxx-yyyy)"
-  instrument = "Instrument"
-  arranger = "Arranger"
-  poet = "Poet"
-  % ugr: warning: Identifier name is a keyword: `translator'
-  % translator = "Translator"
-  texttranslator = "Translator"
-  copyright = "public domain"
-  enteredby = "jcn"
-  source =  "urtext"
-
-  texidoc ="This test lilypond titling. process with lilypond, not lilypond-book." 
-}
-
-\score {
-  \context Staff \notes \relative c' {
-     \repeat unfold 10 {
-       c d e f f e d c \break
-       c d e f f e d c
-     }
-  }
-  \header {
-    opus = "Opus 0"
-    piece = "Piece I"
-  }
-}
-
-\score {
-  \notes \relative c' {
-     f e d c c d e f \break
-     f e d c c d e f
-  }
-  \header { 
-    opus = "Opus 1"
-    piece = "Piece II" 
-  }
-}
-
-
diff --git a/input/test/to-xml.ly b/input/test/to-xml.ly
deleted file mode 100644
index ec2546e35c..0000000000
--- a/input/test/to-xml.ly
+++ /dev/null
@@ -1,27 +0,0 @@
-\version "2.1.7"
-
-fooBar = \notes { << c''4 \\ g'4 >> }
-
-#(ly:set-option 'parse-protect #f)
-#(load-from-path "to-xml.scm")
-
-#(music-to-xml fooBar (current-output-port))
-
-\header {
-    texidoc = "@cindex To XML"
-	texidoc = #(string-append
-      "The input representation is very generic. It
-      should not be hard to convert it to XML or a similar format:\n\n"
-
-      "@example\n"
-	(call-with-output-string
-	       (lambda (p) (music-to-xml fooBar p))
-      )
-    "@end example" )
-}
-
-
-\score {
-\fooBar
-}
-
diff --git a/input/test/transposition.ly b/input/test/transposition.ly
deleted file mode 100644
index 1667e5a7b7..0000000000
--- a/input/test/transposition.ly
+++ /dev/null
@@ -1,52 +0,0 @@
-
-\version "1.9.6"
-
-\header{ texidoc = "@cindex Transposition
-Transposition test file."
-}
-
-
-
-vOne =  \notes \relative c''{
-        \clef"violin"
-        \key d \major
-        \time 2/4 
-        d4 d |       
-        \key fis \major
-        fis4 fis |         
-        \key es \major
-        c4 c |
-}
-
-vTwo =  \notes \transpose c d { \vOne }
-
-vThree =  \notes \relative c''{
-        \clef"violin"
-%        keysignature fis cis
-	\property Staff.keySignature = #'((0 . 2)(3 . 2))
-        \time 2/4 
-        d4 d |       
-%        keysignature bes es fis
-	\property Staff.keySignature = #'((3 . 2)(2 . -2)(6 . -2))
-        fis4 fis |         
-%        keysignature fis cis gis dis ais eis
-	\property Staff.keySignature = #'((2 . -2)(5 . -2)(1 . 2)(4 . 2)(0 . 2)(3 . 2))
-        cis4 ais4 |
-}
-
-
-vFour =  \notes \transpose c d \vThree
-
-\score {
-  \context StaffGroup <<
-         \new Staff \vOne
-         \new Staff \vTwo
-         \new Staff \vThree
-         \new Staff \vFour
-  >>
-        \paper { linewidth= 130.\mm raggedright = ##t }
-}
-
-
-
-
diff --git a/input/test/trill.ly b/input/test/trill.ly
deleted file mode 100644
index 9b635e9e3e..0000000000
--- a/input/test/trill.ly
+++ /dev/null
@@ -1,32 +0,0 @@
-\version "2.1.7"
-
-\header { texidoc="@cindex Trill
-Show trill line type.
-
-The extended trill is a TextSpanner in @code{trill} style.
-"
-}
-
-
-\score {
-  \context RhythmicStaff \notes {
-    \stemDown
-    \property Voice.Stem \override #'transparent = ##t
-    \property Voice.TextSpanner \set #'dash-fraction = #0.0
-    \property Voice.TextSpanner \set #'dash-period = #1.0
-    \property Voice.TextSpanner \set #'edge-height = #'(0 . 1.5)
-    \property Voice.TextSpanner \set #'edge-text = #'("bla " . "")
-    a\startTextSpan b c a\stopTextSpan
-
-
-    %% TODO: should have trill spanner.
-    \property Voice.TextSpanner \set #'style = #'trill
-    \property Voice.TextSpanner \set #'edge-height = #'(0 . 0)
-    \property Voice.TextSpanner \set #'edge-text
-     = #(cons (make-musicglyph-markup "scripts-trill")  "")
-    a\startTextSpan b c a\stopTextSpan
-  }
-	\paper { raggedright = ##t} 
-}
-
-
diff --git a/input/test/trills.ly b/input/test/trills.ly
deleted file mode 100644
index 100ead5932..0000000000
--- a/input/test/trills.ly
+++ /dev/null
@@ -1,106 +0,0 @@
-\version "2.1.21"
-
-\header {
-  texidoc="@cindex Trills
-Document trills, pralls and turns."
-  
-}
-
-%{
-
-taken from :
-
-title="Marques des agr\\'ements et leur signification"
-  composer="D'Anglebert"
-  year="1689"
-
-%}
-
-invisible = \property Voice.NoteHead \override #'transparent = ##t
-visible = \property Voice.NoteHead \revert #'transparent
-
-
-
-\score {
-  <<
-    \context GrandStaff <<
-      \new Staff \notes\relative c'' {
-	\time 1/4
-	c4\prall
-	\time 3/8
-	c4.^\lineprall
-	c4.\downprall
-	c4.\upprall
-	\time 5/8
-	c4\turn c4.\upprall
-	d4\turn b4.\downprall
-	\time 3/4
-	b4 c^\turn d 
-	\time 1/4
-	<<{ d4}\\
-	{ 
-	   \property Voice.Script \override #'extra-offset = #'(-0.8 . 2.0)
-	   b_\turn}>>
-%{ FIXME  \comma does not exist
-	\startHorizScript
- 
-	c^\comma
-	\time 3/8
-	c4.^\comma
-	b8 c4_\comma 
-	c8 b4_\comma
-	b8 c4^\comma _\comma
-	\endHorizScript
-%}
-        \time  2/2 \slurDown
-	<<{c2}{s4 \invisible d1*1/4 ( \visible }>>  e2)
-	<<{a,2}{s4 \invisible b1*1/4 ( \visible }>>  d2)
-	<<{a2}{s4 \invisible b1*1/4 ( \visible }>>  d2)
-	\time 3/4
-	d2^\prallup e4
-      }
-      \new Lyrics \lyrics {
-	"Tremblement"4
-	"Tremblement"4.
-	"Cadence"
-	"autre"
-	"Double"4 "cadence"4.
-%{	"autre"4 _4.
-	_4 "sans tremblement"2
-	"sur une tierce"4
-	"Pinc\\'e"4
-	"autre"4.
-	"Cheute ou Port de"
-	"en descendant"
-	"Cheute et pinc\\'e"
-	"Coul\\'e Sur 2 notes"1
-	"autre"
-	"autre"
-	"Double cadence"2.
-%}
-
-    }
-      \new Lyrics \lyrics {
-	"simple"4
-	"appuy\\'e"4.
-%{	\skip 1*3
-	\skip 4 \skip 4.
-	"voix et montant"
-	\skip 2.
-	"de suite"1
-%}
-      }
-      \new Staff \notes\relative c'' {
-        % autobeamer has som problems here
-	d32[  \repeat unfold 3 { c d } c]
-	d8 ~  d32[\repeat unfold 3 { c32 d  } c]
-	d32 c b c \repeat unfold 4 { d32 c }
-	b32 c d c \repeat unfold 4 { d32 c }
-	c32[( b a16 b  c)]
-	b32[ \repeat unfold 5 { c d32 } c]
-      }
-    >>
-  >>
-	\paper{ }
-}
-
diff --git a/input/test/unfold-all-repeats.ly b/input/test/unfold-all-repeats.ly
deleted file mode 100644
index 475fa12f32..0000000000
--- a/input/test/unfold-all-repeats.ly
+++ /dev/null
@@ -1,28 +0,0 @@
-\version "2.1.7"
-% regression.  -gp
-
-\header { 
-texidoc = "The standard function unfold-repeats will recursively unfold
-all repeats for correct MIDI output. Thanks to Rune Zedeler."
-}
-
-
-mel = \notes \context Staff {
-  \repeat tremolo 8 {c'32 e' }
-  \repeat percent 2 { c''8 d'' }
-  \repeat volta 2 {c'4 d' e' f'} 
-  \alternative {
-    { g' a' a' g' }
-    {f' e' d' c' }
-  }
-  \bar "|."
-}
-
-\score { \notes {
-  \mel \break
-  \apply #unfold-repeats \mel 
- }
-}
-
-
-
diff --git a/input/test/vaticana.ly b/input/test/vaticana.ly
deleted file mode 100644
index bf63efe2fe..0000000000
--- a/input/test/vaticana.ly
+++ /dev/null
@@ -1,43 +0,0 @@
-\version "2.1.21"
-% possible rename to ancient-something.
-
-\header { texidoc	= "Ancient Vaticana
-Vaticana ligature test. "
-}
-
-\include "gregorian-init.ly"
-
-cantus = \context VaticanaVoice = "cantus" \notes {
-  \clef "vaticana_fa2"
-  \[ f\melisma \quilisma g \auctum \descendens a\melismaEnd \]
-  \[ \virga a\melisma g \pes a \inclinatum f \inclinatum d
-     c \pes d \quilisma e \pes f \virga g
-     a \flexa f \pes g \inclinatum f \inclinatum e\melismaEnd \]
-  \[ d\melisma \quilisma e f \flexa e \pes f\melismaEnd \]
-  \[ e\melisma \flexa d\melismaEnd \]
-}
-
-verba = \context Lyrics = "verba" \lyrics {
-  Al- le- lu- ia.
-}
-
-\score {
-  <<
-    \cantus
-    \lyricsto "cantus" \verba
-  >>
-  \paper {
-    linethickness = \staffspace / 7.0
-    linewidth = 137.0 \mm
-    width = 137.0 \mm
-    indent = 0.0
-    raggedright = ##t
-    packed = ##t
-    \translator {
-      \ScoreContext
-      \remove Bar_number_engraver
-      timing = ##f
-      barAlways = ##t
-    }
-  }
-}
diff --git a/input/test/version-output.ly b/input/test/version-output.ly
deleted file mode 100644
index 8bd28c91c6..0000000000
--- a/input/test/version-output.ly
+++ /dev/null
@@ -1,23 +0,0 @@
-\version "2.1.21"
-
-\header {
-
-
-    texidoc = #(string-append "By putting the output of
-    @code{lilypond-version} into a lyric, we can print the version
-    number in a score, or a lilypond-book document. Another option is
-    to append the version to the doc-string, like this: "
-
-  (lilypond-version)
-  )
-    
-}
-
-\score { \context Lyrics \notes {
-    \property Score.RehearsalMark \set #'self-alignment-X = #LEFT
-    \mark #(ly:export (string-append "Processed with LilyPond version " (lilypond-version)))
-    s2
-  }
-}
-
-
diff --git a/input/test/vertical-extent.ly b/input/test/vertical-extent.ly
deleted file mode 100644
index 67e0a9b653..0000000000
--- a/input/test/vertical-extent.ly
+++ /dev/null
@@ -1,28 +0,0 @@
-\version "2.1.7"
-% TODO: huh?  what's this file about?  -gp
-
-\header { texidoc = "
-Vertical extents may be overriden by
-minimumVerticalExtent, extraVerticalExtent, and  verticalExtent. These are
-normal property values, and are written into the grob when the
-associated context finishes, so using it in \property works.
-" }
-
-\score {
-  \notes  <<
-    \new Staff {
-      \property Staff.verticalExtent = #'(-15.0 . 0.0)
-      \clef alto
-      c1
-    }
-    \new Staff {
-      \property Staff.verticalExtent = #'(-0.0 . 15.0)
-      \clef alto
-      g1
-    }
-  >>
-  \paper{
-      raggedright = ##t
-  }
-}
-
diff --git a/input/tutorial/GNUmakefile b/input/tutorial/GNUmakefile
deleted file mode 100644
index 45447ca2a5..0000000000
--- a/input/tutorial/GNUmakefile
+++ /dev/null
@@ -1,9 +0,0 @@
-depth = ../..
-
-LOCALSTEPMAKE_TEMPLATES=ly mutopia
-
-EXTRA_DIST_FILES=lilbook.tex
-
-include $(depth)/make/stepmake.make 
-
-
diff --git a/input/tutorial/brahms-original.ly b/input/tutorial/brahms-original.ly
deleted file mode 100644
index c56febf8f1..0000000000
--- a/input/tutorial/brahms-original.ly
+++ /dev/null
@@ -1,25 +0,0 @@
-#(ly:set-option 'old-relative)
-\version "2.1.7"
-\score {
-    \notes\context PianoStaff <<
-    \context Staff = up
-    \relative c'' <<
-        {   \key d\major 
-            fis4-3_\p(~
-            fis16 a)-5 } \\
-        {
-            fis16(\> d b\! \change Staff = down
-            \clef treble g~ <g e>8) } \\
-        { s16
-          d'
-          ~ <d b>4 }
-    >>
-    \context Staff = down {
-        \key d \major
-        \time 3/8 \clef bass s4. }
-    >>
-    \paper { raggedright = ##t}
-}
-
-
-
diff --git a/input/tutorial/brahms-tweaked.ly b/input/tutorial/brahms-tweaked.ly
deleted file mode 100644
index b0afd9c514..0000000000
--- a/input/tutorial/brahms-tweaked.ly
+++ /dev/null
@@ -1,37 +0,0 @@
-#(ly:set-option 'old-relative)
-\version "2.1.7"
-\score {
-    \notes\context PianoStaff <<
-    \context Staff = up
-    \relative c'' <<
-        {   \key d\major 
-            \property Voice.Slur \set #'attachment = #'(stem . stem)
-
-	    \once \property Voice.Fingering
-	      \override #'extra-offset = #'(-0.3 . -1.8) 
-           fis4-3_\p(~
-   
-
-            fis16 a)^" "^\markup { \finger "5" } } \\
-        {
-            \dynamicUp
-            \property Voice.DynamicLineSpanner
-	      \override #'padding = #5.0
-            \tieUp
-            fis16(\> d b\! \change Staff = down
-	    \stemUp
-	    \clef treble g~ <g e>8) } \\
-        { s16
-	  \once \property Voice.Stem \set #'transparent = ##t
-          d'
-          ~ <d b>4 }
-    >>
-    \context Staff = down {
-        \key d \major
-        \time 3/8 \clef bass s4. }
-    >>
-    \paper { raggedright = ##t}
-}
-
-
-
diff --git a/input/tutorial/lilbook.tex b/input/tutorial/lilbook.tex
deleted file mode 100644
index 9ded0ed6bc..0000000000
--- a/input/tutorial/lilbook.tex
+++ /dev/null
@@ -1,44 +0,0 @@
-\documentclass[a4paper]{article}
-\begin{document}
-
-In a lilypond-book document, you can freely mix music and text. For
-example:
-\begin{lilypond}
-  \score { \notes \relative c' {
-     c2 g'2 \times 2/3 { f8 e d } c'2 g4
-  } }
-\end{lilypond}
-Notice that the music line length matches the margin settings of the
-document.
-
-If you have no \verb+\score+ block in the fragment,
-\texttt{lilypond-book} will supply one:
-
-\begin{lilypond}
-  c'4
-\end{lilypond}
-
-In the example you see here, a number of things happened: a
-\verb+\score+ block was added, and the line width was set to natural
-length. You can specify many more options using  \LaTeX style options
-in brackets:
-
-\begin[verbatim,11pt,singleline,
-  fragment,relative,intertext="hi there!"]{lilypond}
-  c'4 f bes es
-\end{lilypond}
-
-\texttt{verbatim} also shows the lilypond code, \texttt{11pt} selects
-the default music size, \texttt{fragment} adds a score block,
-\texttt{relative} uses relative mode for the fragment, and
-\texttt{intertext} specifies what to print between the
-\texttt{verbatim} code and the music.
-
-If you include large examples into the text, it may be more convenient
-to put the example in a separate file:
-
-\lilypondfile[printfilename]{screech-boink.ly}
-
-The \texttt{printfilename} option adds the file name to the output.
-
-\end{document}
diff --git a/input/twinkle-pop.ly b/input/twinkle-pop.ly
deleted file mode 100644
index e740217980..0000000000
--- a/input/twinkle-pop.ly
+++ /dev/null
@@ -1,71 +0,0 @@
-#(ly:set-option 'old-relative)
-\version "2.1.21"
-\header{
-filename = 	 "twinkle-pop.ly"
-xtitle = 	 "Ah, vous dirais-je, maman "
-composer = 	 "traditional"
-enteredby = 	 "HWN, chords by Johan Vromans"
-copyright = 	 "public domain"
-}
-
-
-melodie =  \notes\relative c'' {
-        \clef "violin"
-        \time 2/4 
-
-        c4 c  | g' g | a a | g2  |
-        f4 f  | e e  | d d | c2  |
-        g'4 g | f f  | e e | d d |
-        g  g  | f f  | e e | d d |
-	% copy 1-8
-        c4 c  | g' g | a a | g2  |
-        f4 f  | e e  | d d | c2 \bar "|."
-}
-
-acc =  \chords {
-	% why don't \skip, s4 work?
-        c2 c f c
-        f c g:7 c
-	g f c  g:7 % urg, bug!
-        g f c  g:7
-	% copy 1-8
-        c2 c f c
-        f c g:7 c
-}
-
-text =  \lyrics{ 
-        \property Lyrics . LyricText \set #'font-shape = #'italic
-
-        Ah!4 vous dir -- ai -- je ma man2
-        Ce4 qui cau -- se mon tour -- ment2
-        Pa4 --  pa veut que je rai -- so -- nne
-        Comme4 un -- e grand -- e per -- so -- nne
-        Moi4 je dis que les bon -- bons2
-        Val4 -- ent mieux que la rai -- son2
-        
-}
-
-\score {
-        <<  
-	   \context ChordNames \acc
-	   \context Staff=melody \melodie
-           \context Lyrics \text
-        >>
-	\header{
-		title = "Ah, vous dirais-je, maman "
-	}
-        \paper {  }
-}
-
-\score {
-        <<  
-	   \chords \context ChordNames \transpose c d\acc
-	   \notes \context Staff=melody \transpose c d\melodie
-           \lyrics \context Lyrics \text
-        >>
-	\header{
-		piece = "clarinet in B$\flat$"
-	}
-        \paper {  }
-}
-
diff --git a/lexer-gcc-3.1.sh b/lexer-gcc-3.1.sh
deleted file mode 100755
index c9b8a389d6..0000000000
--- a/lexer-gcc-3.1.sh
+++ /dev/null
@@ -1,78 +0,0 @@
-#!/bin/sh
-#
-# script documenting fixes for flex-2.5.4 and gcc-3.1
-
-set -e
-
-FLEXLEXER=OK
-
-if [ -z "$FLEXLEXER" ]; then
-
-includes="$HOME/usr/include /usr/local/include /usr/include"
-
-for i in $includes; do
-    file=$i/FlexLexer.h
-    if [ -f "$file" ]; then
-	break
-    else
-	file=
-    fi
-done
-
-if [ -z "$file" ]; then
-    cat <<EOF
-FlexLexer.h not found in $includes
-
-Please install flex, or find and fix FlexLexer.h by hand.
-EOF
-    exit 1
-fi
-
-fi # flexlexer
-
-if [ -n "$CONF" ]; then
-    CONFIGSUFFIX=-$CONF
-    SETCONF="CONF=$CONF "
-    setconf="conf=$CONF "
-    ENABLECONFIG="--enable-config=$CONF "
-fi    
-outdir=out$CONFIGSUFFIX
-
-if [ -z "$FLEXLEXER" ]; then
-
-echo -n "Copying and fixing $file... "
-mkdir -p lily/$outdir
-rm -f lily/$outdir/FlexLexer.h
-sed -e 's/iostream.h/iostream/' \
-    -e 's/\<istream\>/std::istream/' \
-    -e 's/\<ostream\>/std::ostream/' \
-    $file > lily/$outdir/FlexLexer.h
-echo "done"
-
-fi # flexlexer
-
-if [ -f GNUmakefile ]; then
-    file=lily/$outdir/lexer.cc
-    echo -n "Generating and fixing $file... "
-    rm -f $file
-    make conf=$CONF -C lily $outdir/lexer.cc > /dev/null 2>&1 || true
-
-    mv $file $file.orig
-    sed -e 's/\<cin\>/std::cin/g' \
-	-e 's/\<cout\>/std::cout/g' \
-	-e 's/\<cerr\>/std::cerr/g' \
-	$file.orig > $file
-    echo "done"
-fi
-
-cat <<EOF
-
-Remove config.cache before rerunning ./configure
-
-Reconfigure, refix, and make doing something like:
-
-    rm -f config.cache
-    CPPFLAGS=-I$(pwd)/lily/$outdir ./configure $ENABLECONFIG
-    $SETCONF$0
-    make $setconf
-EOF
diff --git a/lily/GNUmakefile b/lily/GNUmakefile
deleted file mode 100644
index 44f2cc0718..0000000000
--- a/lily/GNUmakefile
+++ /dev/null
@@ -1,39 +0,0 @@
-
-depth = ..
-
-NAME = lilypond-bin
-SUBDIRS = include
-
-MODULE_LIBS=$(depth)/flower 
-MODULE_INCLUDES= $(depth)/flower/include
-MODULE_CXXFLAGS= 
-
-
-HELP2MAN_EXECS = lilypond-bin
-STEPMAKE_TEMPLATES= c++ executable po help2man
-
-include $(depth)/make/stepmake.make 
-
-# for profiling, link guile statically:
-#
-# USER_LDFLAGS += -static -lltdl -ldl
-#
-
-ETAGS_FLAGS += -r '/^LY_DEFINE *(\([^,]+\),/\1/'  -r '/^LY_DEFINE *([^,]+, *"\([^"]+\)"/\1/' 
-
-default:
-
-# force these: Make can't know these have to be generated in advance
-$(outdir)/my-lily-parser.o: $(outdir)/parser.hh
-$(outdir)/my-lily-lexer.o: $(outdir)/parser.hh
-$(outdir)/lexer.o: $(outdir)/parser.hh $(outdir)/version.hh
-
-$(outdir)/kpath.o: $(outdir)/version.hh
-$(outdir)/lily-guile.o: $(outdir)/version.hh
-$(outdir)/lily-version.o: $(outdir)/version.hh
-
-# ugh.  For --srcdir builds, these must exist to satisfy their broken
-# lexer.dep and parser.dep file entries.
-ifneq ($(srcdir), .)
-.PRECIOUS: $(outdir)/lexer.cc $(outdir)/parser.cc
-endif
diff --git a/lily/accidental-engraver.cc b/lily/accidental-engraver.cc
deleted file mode 100644
index 770eaa0246..0000000000
--- a/lily/accidental-engraver.cc
+++ /dev/null
@@ -1,488 +0,0 @@
-/*
-  accidental-engraver.cc -- implement accidental_engraver
-
-  (c) 1997--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-  Modified 2001--2002 by Rune Zedeler <rz@daimi.au.dk>
-*/
-
-#include "event.hh"
-
-#include "item.hh"
-#include "tie.hh"
-#include "rhythmic-head.hh"
-#include "engraver-group-engraver.hh"
-#include "accidental-placement.hh"
-#include "side-position-interface.hh"
-#include "engraver.hh"
-#include "arpeggio.hh"
-#include "warn.hh"
-#include "translator-group.hh"
-#include "protected-scm.hh"
-
-/**
-
-The algorithm for accidentals should be documented, and made
-tweakable.
-
-*/
-
-struct Accidental_entry {
-  bool done_;
-  Music * melodic_;
-  Grob * accidental_;
-  Translator_group *origin_;
-  Grob*  head_;
-  Accidental_entry();
-};
-
-Accidental_entry::Accidental_entry()
-{
-  done_ = false;
-  melodic_ =0;
-  accidental_ = 0;
-  origin_ = 0;
-  head_ = 0;
-}
-
-struct Accidental_engraver : Engraver {
-protected:
-  TRANSLATOR_DECLARATIONS (Accidental_engraver);
-  virtual void process_music ();
-  virtual void acknowledge_grob (Grob_info);
-  virtual void stop_translation_timestep ();
-  virtual void initialize ();
-  virtual void process_acknowledged_grobs ();
-  virtual void finalize ();
-public:
-
-  Protected_scm last_keysig_;
-
-  /*
-    Urgh. Since the accidentals depend on lots of variables, we have to
-    store all information before we can really create the accidentals.
-  */
-  Link_array<Grob> left_objects_;
-  Link_array<Grob> right_objects_;
-
-  Grob * accidental_placement_;
-
-  /*
-    The next 
-   */
-  Array<Accidental_entry> accidentals_;
-  Link_array<Grob> ties_;
-};
-
-
-static void
-set_property_on_children (Translator_group * trans, const char * sym, SCM val)
-{
-  trans->set_property (sym, val);
-  for (SCM p = trans->trans_group_list_; gh_pair_p (p); p = ly_cdr(p)) {
-    Translator_group *trg =  dynamic_cast<Translator_group*> (unsmob_translator (ly_car (p)));
-    set_property_on_children(trg,sym,ly_deep_copy(val));
-  }
-}
-
-Accidental_engraver::Accidental_engraver ()
-{
-  accidental_placement_ = 0;
-  last_keysig_ = SCM_EOL;
-}
-
-void
-Accidental_engraver::initialize ()
-{
-  last_keysig_ = get_property ("keySignature");
-
-  Translator_group * trans_ = daddy_trans_;
-  while (trans_)
-    {
-      trans_ -> set_property ("localKeySignature",  ly_deep_copy (last_keysig_));
-      trans_ = trans_->daddy_trans_;
-    }
-  set_property_on_children (daddy_trans_,"localKeySignature", last_keysig_);
-}
-
-/*
-
-calculates the number of accidentals on basis of the current local key sig
-  (passed as argument)
-  Returns number of accidentals (0, 1 or 2).
-    Negative (-1 or -2) if accidental has changed.
-
-*/
-static int
-number_accidentals_from_sig (SCM sig, Music *, Pitch *pitch, SCM curbarnum, SCM lazyness, 
-		    bool ignore_octave_b)
-{
-  int n = pitch->get_notename ();
-  int o = pitch->get_octave();
-  int a = pitch->get_alteration ();
-  int curbarnum_i = gh_scm2int (curbarnum);
-  int accbarnum_i = 0;
-
-  SCM prev;
-  if (ignore_octave_b)
-    prev = ly_assoc_cdr (scm_int2num (n), sig);
-  else
-    prev = scm_assoc (gh_cons (scm_int2num (o), scm_int2num (n)), sig);
-
-  /* should really be true unless prev == SCM_BOOL_F */
-  if (gh_pair_p (prev) && gh_pair_p (ly_cdr (prev)))
-    {
-      accbarnum_i = gh_scm2int (ly_cddr (prev));
-      prev = gh_cons (ly_car (prev), ly_cadr (prev));
-    }
-  
-  /* If an accidental was not found or the accidental was too old */
-  if (prev == SCM_BOOL_F ||
-      (gh_number_p (lazyness) && curbarnum_i > accbarnum_i + gh_scm2int (lazyness)))
-    prev = scm_assoc (scm_int2num (n), sig);
-
-
-  SCM prev_acc = (prev == SCM_BOOL_F) ? scm_int2num (0) : ly_cdr (prev);
-
-  int p = gh_number_p (prev_acc) ? gh_scm2int (prev_acc) : 0;
-
-  int num;
-  if (a == p && gh_number_p (prev_acc))
-    num = 0;
-  else if ( (abs (a)<abs (p) || p*a<0) && a != 0 )
-    num = 2;
-  else
-    num = 1;
-  
-  return a == p ? num : -num;
-}
-
-static int
-number_accidentals (Music * note, Pitch *pitch, Translator_group * origin, 
-		    SCM accidentals, SCM curbarnum)
-{
-  int number = 0;
-
-  bool diff = false;
-  if (gh_pair_p (accidentals) && !gh_symbol_p (ly_car (accidentals)))
-    warning (_f ("Accidental typesetting list must begin with context-name: %s", 
-		 ly_scm2string (ly_car (accidentals)).to_str0 ()));
-  
-  for (; gh_pair_p (accidentals) && origin; accidentals = gh_cdr (accidentals))
-    {
-      // If pair then it is a new accidentals typesetting rule to be checked
-      SCM rule = gh_car (accidentals);
-      if (gh_pair_p (rule))
-	{
-	  SCM type = gh_car (rule);
-	  SCM lazyness = gh_cdr (rule);
-	  SCM localsig = origin->get_property ("localKeySignature");
-	  
-	  bool same_octave_b = 
-	    gh_eq_p (ly_symbol2scm ("same-octave"), type);
-	  bool any_octave_b = 
-	    gh_eq_p (ly_symbol2scm ("any-octave"), type);
-
-	  if (same_octave_b || any_octave_b)
-	    {
-	      int n = number_accidentals_from_sig
-		(localsig, note, pitch, curbarnum, lazyness, any_octave_b);
-	      diff = diff || (n < 0);
-	      number = max (number, abs (n));     
-	    }
-	  else
-	    warning (_f ("unknown accidental typesetting: %s. Ignored", 
-			 ly_symbol2string (type).to_str0 ()));
-	}
-      
-
-      /*
-	if symbol then it is a context name. Scan parent contexts to find it.
-      */
-      else if (gh_symbol_p (rule))
-	{
-	  Translator_group * dad = origin;
-	  while (dad && !dad->is_alias (rule))
-	    dad = dad->daddy_trans_;
-      
-	  if (dad)
-	    origin = dad;
-	}
-      else warning (_f ("Accidental rule must be pair or context-name; Found %s", 
-			ly_scm2string (rule).to_str0 ()));
-    }
-
-  return diff ? -number : number;
-}
-
-void
-Accidental_engraver::process_acknowledged_grobs ()
-{
-  if (accidentals_.size () && !accidentals_.top().done_)
-    {
-      //SCM localsig = get_property ("localKeySignature");
-      SCM accidentals =  get_property ("autoAccidentals");
-      SCM cautionaries =  get_property ("autoCautionaries");
-      SCM barnum = get_property ("currentBarNumber");
-      SCM smp = get_property("measurePosition");
-      Moment mp = (unsmob_moment (smp)) ? *unsmob_moment (smp) : Moment (0);
-      if(mp.main_part_<Rational(0) && gh_number_p(barnum)) barnum = scm_int2num(gh_scm2int(barnum)-1);
-      bool extra_natural_b = get_property ("extraNatural") == SCM_BOOL_T;
-      for (int i = 0; i  < accidentals_.size (); i++) 
-	{
-	  if (accidentals_[i].done_ )
-	    continue;
-	  accidentals_[i].done_  = true;
-	  Grob * support = accidentals_[i].head_;
-	  Music * note = accidentals_[i].melodic_;
-	  Translator_group * origin = accidentals_[i].origin_;
-
-	  Pitch * pitch = unsmob_pitch (note->get_mus_property ("pitch"));
-	  if (!pitch)
-	    continue;
-	  
-	  int num = number_accidentals (note, pitch, origin, accidentals, barnum);
-	  int num_caut = number_accidentals (note, pitch, origin, cautionaries, barnum);
-	  bool cautionary = to_boolean (note->get_mus_property ("cautionary"));
-	  
-	  if (abs (num_caut) > abs (num))
-	    {
-	      num = num_caut;
-	      cautionary = true;
-	    }
-
-	  if(num==0 && to_boolean (note->get_mus_property ("force-accidental")))
-	     num=1;
-	  
-	  bool different = num < 0;
-	  num = abs (num);
-
-	  /* see if there's a tie that "changes" the accidental */
-	  /* works because if there's a tie, the note to the left
-	     is of the same pitch as the actual note */
-
-	  Grob *tie_break_reminder = 0;
-	  bool tie_changes = false;
-	  for (int j = 0; j < ties_.size (); j++)
-	    if (support == Tie::head (ties_[j], RIGHT))
-	      {
-		tie_changes = different;
-
-		/* Enable accidentals for broken tie
-
-		We only want an accidental on a broken tie, 
-		if the tie changes the accidental.
-		   
-		Maybe check property noTieBreakForceAccidental? */
-		if (different)
-		  tie_break_reminder = ties_[j];
-		break;
-	      }
-
-	  if (num)
-	    {
-	      Grob * a = make_item ("Accidental");
-	      a->set_parent (support, Y_AXIS);
-
-	      if (!accidental_placement_)
-		{
-		  accidental_placement_ = make_item ("AccidentalPlacement");
-		  announce_grob (accidental_placement_, a->self_scm());
-		}
-	      
-	      Accidental_placement::add_accidental (accidental_placement_, a);
-	      announce_grob (a, SCM_EOL);
-
-	      
-	      SCM accs = gh_cons (scm_int2num (pitch->get_alteration ()), SCM_EOL);
-	      if (num == 2 && extra_natural_b)
-		accs = gh_cons (scm_int2num (0), accs);
-
-	      /* TODO:
-
-	      add cautionary option in accidental.
-	       */
-
-	      if (cautionary)
-		{
-		  a->set_grob_property ("cautionary", SCM_BOOL_T);
-		}
-	      
-	      if (tie_break_reminder)
-		{
-		  // TODO.
-		  a->set_grob_property ("tie", tie_break_reminder->self_scm());
-		}
-	      
-	      
-	      support->set_grob_property ("accidental-grob", a->self_scm ());
-
-	      a->set_grob_property ("accidentals", accs);
-	      accidentals_[i].accidental_ = a;
- /*
-	We add the accidentals to the support of the arpeggio, so it is put left of the
-	accidentals. 
-	
-      */
-	      for (int i = 0;  i < left_objects_.size ();  i++)
-		Side_position_interface::add_support (left_objects_[i], a);
-	      for (int i = 0;  i < right_objects_.size ();  i++)
-		Side_position_interface::add_support (a, right_objects_[i]);
-	    }
-	  
-
-	  /*
-	    We should not record the accidental if it is the first
-	    note and it is tied from the previous measure.
-
-	    Checking whether it is tied also works mostly, but will it
-	    always do the correct thing?
-	  */
-	  
-
-	  int n = pitch->get_notename ();
-	  int o = pitch->get_octave ();
-	  int a = pitch->get_alteration ();
-	  SCM on_s = gh_cons (scm_int2num (o), scm_int2num (n));
-
-	  /*
-	    TODO: Speed this up!
-	    
-	    Perhaps only check translators mentioned in the auto-accidentals?
-	    -rz
-
-	    TODO: profile this.
-	    
-	    I'd be surprised if the impact of this would be
-	    measurable.  Anyway, it seems localsig doesn't change
-	    every time-step, but a set_property() is done every
-	    time. We could save on that, probably.
-
-	    --hwn.
-	    
-	    
-	  */
-
-	  while (origin)
-	    {
-	      SCM localsig = origin->get_property ("localKeySignature");
-	      if (tie_changes)
-		{
-		  /*
-		    Remember an alteration that is different both from
-		    that of the tied note and of the key signature.
-		  */
-		  localsig = ly_assoc_front_x
-		    (localsig, on_s, gh_cons (SCM_BOOL_T, barnum));
-		}
-	      else
-		{
-		  /*
-		    not really really correct if there are more than one
-		    noteheads with the same notename.
-		  */
-		  localsig = ly_assoc_front_x
-		    (localsig, on_s, gh_cons (scm_int2num (a), barnum)); 
-		}
-	      origin->set_property ("localKeySignature",  localsig);
-	      origin = origin->daddy_trans_;
-	    }
-	}
-    }
-}
-
-void
-Accidental_engraver::finalize ()
-{
-  /*
-    Must reset, since Accidental_engraver is GCd.
-   */
-  last_keysig_ = SCM_EOL;
-}
-
-void
-Accidental_engraver::stop_translation_timestep ()
-{
-  for (int i = 0; i < accidentals_.size(); i++)
-    {
-      Grob *a = accidentals_[i].accidental_;
-      if (a)
-	{
-	  typeset_grob (a);
-	}
-    }
-
-  if (accidental_placement_)
-    typeset_grob(accidental_placement_);
-  accidental_placement_ = 00;
-  
-  accidentals_.clear();
-  left_objects_.clear ();
-  right_objects_.clear ();
-  ties_.clear ();
-}
-
-void
-Accidental_engraver::acknowledge_grob (Grob_info info)
-{
-  Music * note =  info.music_cause ();
-
-  if (note
-      && note->is_mus_type("note-event")
-      && Rhythmic_head::has_interface (info.grob_))
-    {
-      Accidental_entry entry ;
-      entry.head_ = info.grob_;
-      entry.origin_ = info.origin_trans_->daddy_trans_;
-      entry.melodic_ = note;
-
-      accidentals_.push (entry);
-    }
-  else if (Tie::has_interface (info.grob_))
-    {
-      ties_.push (info.grob_);
-    }
-  else if (Arpeggio::has_interface (info.grob_))
-    {
-      left_objects_.push (info.grob_); 
-    }
-  else if (info.grob_->internal_has_interface (ly_symbol2scm("finger-interface")))
-    {
-      left_objects_.push (info.grob_); 
-    }
-}
-
-void
-Accidental_engraver::process_music ()
-{
-  SCM sig = get_property ("keySignature");
-
-  /* Detect key sig changes.
-     Update all parents and children
-  */
-  if (last_keysig_ != sig)
-    {
-      Translator_group * trans_ = daddy_trans_;
-      while (trans_)
-	{
-	  trans_ -> set_property ("localKeySignature",  ly_deep_copy (sig));
-	  trans_ = trans_->daddy_trans_;
-	}
-      set_property_on_children(daddy_trans_,"localKeySignature", sig);
-
-      last_keysig_ = sig;
-    }
-}
-
-
-
-
-
-ENTER_DESCRIPTION (Accidental_engraver,
-"Make accidentals.  Catches note heads, ties and notices key-change "
-" events.  Due to interaction with ties (which don't come together "
-" with note heads), this needs to be in a context higher than Tie_engraver.",
-	       "Accidental",
-/* accepts */     "",
-	       "finger-interface rhythmic-head-interface tie-interface arpeggio-interface",
-	       "localKeySignature extraNatural autoAccidentals autoCautionaries",
-		   "localKeySignature");
diff --git a/lily/accidental-placement.cc b/lily/accidental-placement.cc
deleted file mode 100644
index 10ebcbc66d..0000000000
--- a/lily/accidental-placement.cc
+++ /dev/null
@@ -1,447 +0,0 @@
-/*   
-accidental-placement.cc --  implement Accidental_placement
-
-source file of the GNU LilyPond music typesetter
-
-(c) 2002--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-
- */
-
-#include <math.h>
-#include <libc-extension.hh>
-#include "item.hh"
-#include "skyline.hh"
-#include "music.hh"
-#include "pitch.hh"
-#include "warn.hh"
-#include "accidental-placement.hh"
-#include "note-column.hh"
-#include "group-interface.hh"
-#include "note-collision.hh"
-#include "accidental-interface.hh"
-
-MAKE_SCHEME_CALLBACK(Accidental_placement,alignment_callback, 2);
-SCM
-Accidental_placement::alignment_callback(SCM s, SCM )
-{
-  Grob * me =unsmob_grob (s);
-
-  Grob * par = me->get_parent (X_AXIS);
-  if (!to_boolean (par->get_grob_property ("positioning-done")))
-    {
-      par->set_grob_property ("positioning-done", SCM_BOOL_T);
-      position_accidentals (par);
-    }
-
-  return scm_int2num (0);
-}
-
-
-void
-Accidental_placement::add_accidental (Grob* me, Grob* a)
-{
-  a->set_parent (me, X_AXIS);
-  a->add_offset_callback (alignment_callback_proc, X_AXIS);
-  SCM cause = a->get_parent (Y_AXIS)->get_grob_property("cause");
-
-  Music *mcause =unsmob_music (cause); 
-  if (!mcause)
-    {
-      programming_error ("Note head has no music cause!");
-      return; 
-    }
-
-  Pitch *p= unsmob_pitch (mcause->get_mus_property ("pitch"));
-
-  int n = p->get_notename ();
-
-  SCM accs = me->get_grob_property ("accidental-grobs");
-  SCM key = scm_int2num (n);
-  SCM entry = scm_assq (key, accs);
-  if (entry == SCM_BOOL_F)
-    {
-      entry = SCM_EOL;
-    }
-  else
-    entry = gh_cdr (entry);
-
-  entry = gh_cons (a->self_scm (), entry);
-
-  accs = scm_assq_set_x (accs,  key, entry);
-
-  me->set_grob_property ("accidental-grobs", accs);
-}
-
-/*
-  Split into break reminders.
- */
-void
-Accidental_placement::split_accidentals (Grob * accs,
-					 Link_array<Grob> *break_reminder,
-					 Link_array<Grob> *real_acc)
-{
-  for (SCM acs =accs->get_grob_property ("accidental-grobs"); gh_pair_p (acs);
-       acs =gh_cdr (acs))
-    for (SCM s = gh_cdar (acs); gh_pair_p (s); s = gh_cdr (s))
-      {
-	Grob *a = unsmob_grob (gh_car (s));
-
-	if (unsmob_grob (a->get_grob_property ("tie")))
-	  break_reminder->push (a);
-	else
-	  real_acc->push (a);
-      }
-}
-
-/*
-  Accidentals are special, because they appear and disappear after
-  ties at will.
-*/
-Interval
-Accidental_placement::get_relevant_accidental_extent (Grob *me,
-						      Item *item_col,
-						      Grob *left_object)
-{
-  Link_array<Grob> br, ra;
-  Link_array<Grob> *which = 0;
-
-  Accidental_placement::split_accidentals (me, &br, &ra);
-  br.concat (ra);
-  
-  if (dynamic_cast<Item*>(left_object)->break_status_dir () == RIGHT)
-    which = & br;
-  else
-    which = & ra;
-  
-  Interval extent;
-  for (int i = 0; i < which->size(); i++)
-    {
-      extent.unite (which->elem(i)->extent (item_col, X_AXIS));
-    }
-
-  if (!extent.is_empty ())
-    {
-      Real p = robust_scm2double (me->get_grob_property ("left-padding"), 0.2);
-      extent[LEFT] -= p;
-    }
-  
-  return extent;
-}
-
-
-
-struct Accidental_placement_entry
-{
-  Array<Skyline_entry> left_skyline_;
-  Array<Skyline_entry> right_skyline_;
-  Interval vertical_extent_;
-  Array<Box> extents_;
-  Link_array<Grob> grobs_;
-  Real offset_; 
-  int notename_;
-  Accidental_placement_entry()
-  {
-    offset_ =0.0;
-    notename_ = -1;
-  }
-};
-
-static Interval all_accidental_vertical_extent;
-Real ape_priority (Accidental_placement_entry const * a)
-{
-  return a->vertical_extent_[UP];
-}
-
-  
-
-int ape_compare (Accidental_placement_entry *const &a,
-		 Accidental_placement_entry *const &b)
-{
-  return sign (ape_priority (a) - ape_priority(b));
-}
-
-int ape_rcompare (Accidental_placement_entry *const &a,
-		 Accidental_placement_entry *const &b)
-{
-  return -sign (ape_priority (a) - ape_priority(b));
-}
-
-
-/*
-
-TODO: should favor
-
-  b
- b
-
-placement
- 
-*/
-void
-stagger_apes (Link_array<Accidental_placement_entry> *apes)
-{
-  Link_array<Accidental_placement_entry> asc = *apes;
-
-
-  asc.sort (&ape_compare);
-
-  apes->clear();
-
-  int i =0;
-  int parity = 1;
-  while (i < asc.size())
-    {
-      Accidental_placement_entry * a = 0;      
-      if (parity)
-	a = asc.pop();
-      else
-	a = asc[i++];
-
-      apes->push (a);
-      parity = !parity;
-    }
-
-  apes->reverse();
-}
-
-  
-
-/*
-
-  This routine computes placements of accidentals. During
-  add_accidental(), accidentals are already grouped by note, so that
-  octaves are placed above each other; they form columns. Then the
-  columns are sorted: the biggest columns go closest to the note.
-  Then the columns are spaced as closely as possible (using skyline
-  spacing).
-  
-  
-  TODO: more advanced placement. Typically, the accs should be placed
-  to form a C shape, like this
-
-  
-           ##
-        b b
-       # #
-        b
-          b b
-
-   The naturals should be left of the C as well; they should
-   be separate accs.
-
-   Note that this placement problem looks NP hard, so we just use a
-   simple strategy, not an optimal choice.
-
-*/
-
-/*
-  TODO: there should be more space in the following situation
-
-
-    Natural + downstem
-
-    |_       
-    | |    X
-    |_|   | 
-      |   |
-      
- */
-SCM
-Accidental_placement::position_accidentals (Grob * me)
-{
-  if (!me->live ())
-    return SCM_UNSPECIFIED;
-  
-  SCM accs = me->get_grob_property ("accidental-grobs");
-
-  /*
-    TODO: there is a bug in this code. If two accs are on the same
-    Y-position, they share an Ape, and will be printed in overstrike.
-   */
-  Link_array<Accidental_placement_entry> apes;
-  for (SCM s = accs; gh_pair_p (s); s =gh_cdr (s))
-    {
-      Accidental_placement_entry *ape = new Accidental_placement_entry;
-      ape->notename_ = gh_scm2int (gh_caar (s));
-      
-      for (SCM t = gh_cdar (s); gh_pair_p (t); t =gh_cdr (t))
-	ape->grobs_.push (unsmob_grob (gh_car (t)));
-
-      apes.push (ape);
-    }
-
-
-  Grob *common[] = {me, 0};
-
-  /*
-    First we must extract *all* pointers. We can only determine
-    extents if we're sure that we've found the right common refpoint
-   */
-  Link_array<Grob> note_cols, heads;
-  for (int i= apes.size (); i--;)
-    { 
-      Accidental_placement_entry * ape = apes[i];
-      for (int j = ape->grobs_.size(); j--;)
-	{
-	  Grob * a = ape->grobs_[j];
-
-	  if (common[Y_AXIS])
-	    common[Y_AXIS] = common[Y_AXIS]->common_refpoint (a, Y_AXIS);
-	  else
-	    common[Y_AXIS] = a;
-	  
-	  Grob *head = a->get_parent (Y_AXIS);
-
-	  Grob * col = head->get_parent (X_AXIS);
-	  if (Note_column::has_interface (col))
-	    note_cols.push (col);
-	  else
-	    heads.push (head);
-	}
-    }
-
-  /*
-    This is a little kludgy: to get all notes, we look if there are
-    collisions as well.
-   */
-  for (int i = note_cols.size() ; i--;)
-    {
-      Grob *c = note_cols[i]->get_parent (X_AXIS);
-      if (Note_collision_interface::has_interface (c))
-	{
-	  Link_array<Grob> gs =
-	    Pointer_group_interface__extract_grobs (c, (Grob*)0, "elements");
-      
-	  note_cols.concat (gs);
-	}
-    }
-  
-  for (int i = note_cols.size() ; i--;)
-    {
-      heads.concat (Pointer_group_interface__extract_grobs (note_cols[i],
-							    (Grob*)0,
-							    "note-heads"));
-      
-    }
-  heads.default_sort();
-  heads.uniq();
-  common[Y_AXIS] = common_refpoint_of_array (heads, common[Y_AXIS], Y_AXIS);
-
-  
-  for (int i= apes.size (); i--;)
-    {
-      Accidental_placement_entry * ape = apes[i];
-      ape->left_skyline_ = empty_skyline (LEFT);
-      ape->right_skyline_ = empty_skyline (RIGHT);
-   
-      for (int j = apes[i]->grobs_.size(); j--;)
-	{
-	  Grob * a = apes[i]->grobs_[j];
-
-	  Array<Box> boxes = Accidental_interface::accurate_boxes (a, common);
-	  
-	  ape->extents_.concat (boxes);
-	  for (int j  = boxes.size(); j--;)
-	    {
-	      insert_extent_into_skyline (&ape->left_skyline_, boxes[j], Y_AXIS, LEFT);
-	      insert_extent_into_skyline (&ape->right_skyline_ , boxes[j], Y_AXIS, RIGHT);
-	    }
-	}
-    }
-
-
-  Interval total;
-  for (int i = apes.size(); i--;)
-    {
-      Interval y ;
-      
-      for (int j = apes[i]->extents_.size(); j--;)
-	{
-	  y.unite (apes[i]->extents_[j][Y_AXIS]);
-	}
-      apes[i]->vertical_extent_ = y;
-      total.unite (y);
-    }
-  all_accidental_vertical_extent = total;
-  stagger_apes (&apes);
-
-  Accidental_placement_entry * head_ape = new Accidental_placement_entry;
-  common[X_AXIS] = common_refpoint_of_array (heads, common[X_AXIS], X_AXIS);  
-  Array<Skyline_entry> head_skyline (empty_skyline (LEFT));
-  Array<Box> head_extents;
-  for (int i = heads.size(); i--;)
-    {
-      Box b(heads[i]->extent (common[X_AXIS] , X_AXIS),
-	    heads[i]->extent (common[Y_AXIS], Y_AXIS));
-
-      insert_extent_into_skyline (&head_skyline, b , Y_AXIS, LEFT);
-    }
-
-  head_ape-> left_skyline_ = head_skyline;
-  head_ape->offset_ = 0.0;
-
-  head_ape->offset_ -= robust_scm2double ( me->get_grob_property ("right-padding"), 0);
-
-  
-  Real padding = robust_scm2double (me->get_grob_property ("padding"),0.2);
-
-  Array<Skyline_entry> left_skyline = head_ape->left_skyline_;
-  /*
-    Add accs entries right-to-left.
-   */
-  for (int i= apes.size (); i-- > 0;)
-    {
-      Real offset =
-	-skyline_meshing_distance (apes[i]->right_skyline_, left_skyline);
-      if (isinf (offset))
-	offset = (i < apes.size () - 1) ? apes[i+1]->offset_ : 0.0;
-      else
-	offset -= padding;
-
-      apes[i]->offset_ = offset;
-
-      Array<Skyline_entry> new_left_skyline = apes[i]->left_skyline_;
-      heighten_skyline (&new_left_skyline, apes[i]->offset_);
-      merge_skyline (&new_left_skyline, left_skyline, LEFT);
-      left_skyline = new_left_skyline;
-    }      
-
-  for (int i = apes.size(); i--;)
-    {
-      Accidental_placement_entry* ape = apes[i];
-      for (int j  = ape->grobs_.size(); j--;)
-	{
-	  ape->grobs_[j]->translate_axis (ape->offset_, X_AXIS);
-	}
-    }
-
-  
-  Interval left_extent, right_extent;
-  Accidental_placement_entry *ape = apes[0];
-
-  for (int i = ape->extents_.size(); i--;)
-    left_extent.unite (ape->offset_ +  ape->extents_[i][X_AXIS]);
-
-  ape = apes.top();
-  for (int i = ape->extents_.size(); i--;)
-    right_extent.unite (ape->offset_  + ape->extents_[i][X_AXIS]);
-
-  
-  left_extent[LEFT] -= robust_scm2double (me->get_grob_property ("left-padding"), 0);
-
-  
-  Interval width(left_extent[LEFT], right_extent[RIGHT]);
-
-  SCM scm_width = ly_interval2scm (width);
-  me->set_extent (scm_width, X_AXIS);
-  
-  for (int i = apes.size(); i--;)
-    delete apes[i];
-
-  return SCM_UNSPECIFIED;
-}
-
-ADD_INTERFACE(Accidental_placement,
-	      "accidental-placement-interface",
-	      "Take care of complex accidental collisions.",
-	      "left-padding padding right-padding accidental-grobs positioning-done")
diff --git a/lily/accidental.cc b/lily/accidental.cc
deleted file mode 100644
index dd5634d5d9..0000000000
--- a/lily/accidental.cc
+++ /dev/null
@@ -1,232 +0,0 @@
-/*
-  accidental.cc -- implement Accidental_interface
-
-  (c) 2001--2004 Han-Wen Nienhuys
-  
- */
-#include "font-interface.hh"
-#include "item.hh"
-#include "molecule.hh"
-#include "accidental-interface.hh"
-#include "paper-def.hh"
-#include "pitch.hh"
-
-/*
-  TODO: insert support for smaller cautionaries, tie-break-reminders.
-  Either here or in new-accidental-engraver.
-
-  'accidentals should go, for a single 'accidental property -- see
-  accidental-placement.cc
-
-*/
-
-
-Molecule
-parenthesize (Grob*me, Molecule m)
-{
-  Molecule open = Font_interface::get_default_font (me)->find_by_name (String ("accidentals-leftparen"));
-  Molecule close = Font_interface::get_default_font (me)->find_by_name (String ("accidentals-rightparen"));
-  m.add_at_edge (X_AXIS, LEFT, Molecule (open), 0,0);
-  m.add_at_edge (X_AXIS, RIGHT, Molecule (close), 0,0);
-
-  return m;
-}
-
-
-MAKE_SCHEME_CALLBACK (Accidental_interface,after_line_breaking,1);
-SCM
-Accidental_interface::after_line_breaking (SCM smob)
-{
-  Grob *me  = unsmob_grob (smob);
-  Grob *tie = unsmob_grob (me->get_grob_property ("tie"));
-
-  if (tie && !tie->original_)
-    {
-      me->suicide ();
-    }
-  return SCM_UNSPECIFIED;
-}
-
-Array<Box>
-Accidental_interface::accurate_boxes (Grob *a,Grob**common)
-{
-  Box b;
-  b[X_AXIS] = a->extent (a, X_AXIS);
-  b[Y_AXIS] = a->extent (a, Y_AXIS);
-
-  Array<Box> boxes;
-  
-  bool parens = false;
-  if (to_boolean (a->get_grob_property ("cautionary")))
-    {
-      SCM cstyle = a->get_grob_property ("cautionary-style");
-      parens = gh_equal_p (cstyle, ly_symbol2scm ("parentheses"));
-
-    }
-
-  SCM accs = a->get_grob_property ("accidentals");
-  SCM scm_style = a->get_grob_property ("style");
-  if (!gh_symbol_p (scm_style)
-      && !parens
-      && scm_ilength (accs) == 1)
-    {
-      if (gh_scm2int (gh_car (accs)) == FLAT)
-	{
-	  Box stem = b;
-	  Box bulb = b;
-
-	  /*
-	    we could make the stem thinner, but that places the flats
-	    really close.
-	  */
-	  stem[X_AXIS][RIGHT] *= .5;
-	  bulb[Y_AXIS][UP] *= .35;
-
-	  boxes.push (bulb);
-	  boxes.push (stem);
-	}
-      
-      /*
-	TODO: add support for natural, double flat.
-       */
-    }
-
-  if (!boxes.size())
-    boxes.push (b);
-
-  Offset o (a->relative_coordinate (common[X_AXIS],  X_AXIS),
-	    a->relative_coordinate (common[Y_AXIS],  Y_AXIS));
-  for(int i = boxes.size(); i--;)
-    {
-      boxes[i].translate(o);
-    }
-  
-  return boxes;
-}
-
-/*
- * Some styles do not provide all flavours of accidentals, e.g. there
- * is currently no sharp accidental in vaticana style.  In these cases
- * this function falls back to one of the other styles.
- */
-
-/*
-  todo: this sort of stuff in Scheme. --hwn.
- */
-String
-Accidental_interface::get_fontcharname (String style, int alteration)
-{
-  if (alteration == DOUBLE_FLAT
-      || alteration == DOUBLE_SHARP)
-    {
-      return to_string (alteration);
-    }
-  
-  if (style == "hufnagel")
-    switch (alteration)
-      {
-      case FLAT: return "hufnagel-1";
-      case 0: return "vaticana0";
-      case SHARP: return "mensural1";
-      }
-  if (style == "medicaea")
-    switch (alteration)
-      {
-      case FLAT: return "medicaea-1";
-      case 0: return "vaticana0";
-      case SHARP: return "mensural1";
-      }
-  if (style == "vaticana")
-    switch (alteration)
-      {
-      case FLAT: return "vaticana-1";
-      case 0: return "vaticana0";
-      case SHARP: return "mensural1";
-      }
-  if (style == "mensural")
-    switch (alteration)
-      {
-      case FLAT: return "mensural-1";
-      case 0: return "vaticana0";
-      case SHARP: return "mensural1";
-      }
-  
-  if (style == "neo_mensural")
-    style = ""; // currently same as default
-  if (style == "default")
-    style = "";
-  return style + to_string (alteration);
-}
-
-MAKE_SCHEME_CALLBACK (Accidental_interface,print,1);
-SCM
-Accidental_interface::print (SCM smob)
-{
-  Grob *me = unsmob_grob (smob);
-  bool smaller = false;
-  bool parens = false;
-
-  bool caut  = to_boolean (me->get_grob_property ("cautionary"));
-  if (caut)
-    {
-      SCM cstyle = me->get_grob_property ("cautionary-style");
-      parens = gh_equal_p (cstyle, ly_symbol2scm ("parentheses"));
-      smaller = gh_equal_p (cstyle, ly_symbol2scm ("smaller"));
-    }
-
-  SCM scm_style = me->get_grob_property ("style");
-  String style;
-  if (gh_symbol_p (scm_style))
-    {
-      style = ly_symbol2string (scm_style);
-    }
-  else
-    {
-      /*
-	preferably no name for the default style.
-      */
-      style = "";
-    }
-
-  Font_metric *fm = 0;
-  if (smaller)
-    {
-      SCM ac = Font_interface::font_alist_chain (me);
-      ac = gh_cons (gh_cons (gh_cons
-			     (ly_symbol2scm ("font-relative-size"),
-			      scm_int2num (-1)), SCM_EOL),
-		    ac);
-      fm = select_font (me->get_paper (), ac);
-    }
-  else
-    fm = Font_interface::get_default_font (me);
-
-  Molecule mol;
-  for (SCM s = me->get_grob_property ("accidentals");
-       gh_pair_p (s); s = gh_cdr (s))
-    {
-      int alteration = gh_scm2int (gh_car (s));
-      String font_char = get_fontcharname (style, alteration);
-      Molecule acc (fm->find_by_name ("accidentals-" + font_char));
-
-      if (acc.is_empty ())
-	{
-	  me->warning (_f ("accidental `%s' not found", font_char));
-	}
-      else
-	{
-	  mol.add_at_edge (X_AXIS,  RIGHT, acc, 0.1,0);
-	}
-    }
-
-  if (parens)
-    mol = parenthesize (me, mol); 
-
-  return mol.smobbed_copy();
-}
-
-
-
-ADD_INTERFACE (Accidental_interface, "accidental-interface",
-	      "a single accidental",
-	       "cautionary cautionary-style style tie accidentals");
diff --git a/lily/afm.cc b/lily/afm.cc
deleted file mode 100644
index 26d9b252d9..0000000000
--- a/lily/afm.cc
+++ /dev/null
@@ -1,207 +0,0 @@
-/*   
-  afm.cc --  implement Adobe_font_metric
-  
-  source file of the GNU LilyPond music typesetter
-  
-  (c) 2000--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-  
- */
-
-#include <string.h>
-
-#include "warn.hh"		// error()
-#include "libc-extension.hh"
-#include "afm.hh"
-#include "molecule.hh"
-#include "dimensions.hh"
-
-Adobe_font_metric::Adobe_font_metric (AFM_Font_info * fi)
-{
-  checksum_ = 0;
-  font_inf_ = fi;
-
-  for (int i= 256  >? fi->numOfChars; i--;)
-    ascii_to_metric_idx_.push (-1);
-  
-  for (int i=0; i < fi->numOfChars; i++)
-    {
-      AFM_CharMetricInfo * c = fi->cmi + i;
-
-      /*
-	Some TeX afm files contain code = -1. We don't know why, let's
-	ignore it.
-	
-       */
-      if (c->code >= 0)
-	ascii_to_metric_idx_[c->code] = i;
-      name_to_metric_dict_[c->name] = i;
-    }
-}
-
-
-SCM
-Adobe_font_metric::make_afm (AFM_Font_info *fi, unsigned int checksum)
-{
-  Adobe_font_metric * fm = new Adobe_font_metric (fi);
-  fm->checksum_ = checksum;
-  return fm->self_scm ();    
-}
-
-
-AFM_CharMetricInfo const *
-Adobe_font_metric::find_ascii_metric (int a) const
-{
-  if (ascii_to_metric_idx_[a] >=0)
-    {
-      int code = ascii_to_metric_idx_[a];
-      if (code>=0)
-	{
-	  return font_inf_->cmi + code;
-	}
-    }
-
-  return 0;
-}
-
-
-
-AFM_CharMetricInfo const *
-Adobe_font_metric::find_char_metric (String nm) const
-{
-  int idx = name_to_index (nm);
-  if (idx >= 0)
-    return font_inf_->cmi+ idx;
-  else
-    return 0;
-}
-
-int
-Adobe_font_metric::name_to_index (String nm)const 
-{
-  std::map<String,int>::const_iterator ai = name_to_metric_dict_.find (nm);
-  
-  if (ai == name_to_metric_dict_.end ())
-    return -1;
-  else
-    return (*ai).second; 
-}
-
-int
-Adobe_font_metric::count () const
-{
-  return font_inf_->numOfChars ;
-}
-
-Box
-Adobe_font_metric::get_ascii_char (int code) const
-{
-  AFM_CharMetricInfo const
-    * c =  find_ascii_metric (code);
-  Box b (Interval (0,0),Interval (0,0));
-  if (c)
-    b = afm_bbox_to_box (c->charBBox);			
-
-  return b;
-}
-
-
-Box
-Adobe_font_metric::get_indexed_char (int code) const
-{
-  if (code>= 0)
-    return afm_bbox_to_box (font_inf_->cmi[code].charBBox);
-  else
-    return   Box (Interval (0,0),Interval (0,0));
-}
-
-SCM
-read_afm_file (String nm)
-{
-  FILE *f = fopen (nm.to_str0 () , "r");
-  char s[2048];
-  char *check_key = "Comment TfmCheckSum";
-
-  unsigned int cs = 0;
-
-  s[0] = 0;
-  /* Assume check_key in first 10 lines */
-  for (int i = 0; i < 10; i++)
-    {
-      fgets (s, sizeof (s), f);
-      if (strncmp (s, check_key, strlen (check_key)) == 0)
-	{
-	  sscanf (s + strlen (check_key), "%ud", &cs);
-	  break;
-	}
-    }
-  
-  rewind (f);
-    
-  AFM_Font_info * fi;
-  int ok = AFM_parseFile (f, &fi, ~1);
-
-  if (ok)
-    {
-      error (_f ("Error parsing AFM file: `%s'", nm.to_str0 ()));
-      exit (2);
-    }
-  fclose (f);
-
-  return Adobe_font_metric::make_afm (fi, cs);
-}
-
-
-/*
-  actually, AFMs will be printers point, usually, but our .py script dumps
-  real points.
- */
-Box
-afm_bbox_to_box (AFM_BBox bb)
-{
-  return Box (Interval (bb.llx, bb.urx)* (1/1000.0) PT,
-	      Interval (bb.lly, bb.ury)* (1/1000.0) PT);
-
-}
-
-Offset
-Adobe_font_metric::get_indexed_wxwy (int k)const
-{
-  AFM_CharMetricInfo const *mi = font_inf_->cmi+ k;
-  return 1/1000.0 PT * Offset (mi->wx, mi->wy); 
-}
-
-
-
-Adobe_font_metric::~Adobe_font_metric ()
-{
-  AFM_free (font_inf_);
-}
-
-/*
-  return a molecule, without fontification 
- */
-Molecule
-Adobe_font_metric::find_by_name (String s) const
-{
-  AFM_CharMetricInfo const *cm = find_char_metric (s);
-
-  if (!cm)
-    {
-      /*
-	Why don't we return empty?
-       */
-      
-      Molecule m;
-      m.set_empty (false);
-      return m;
-    }
-  
-  SCM at = (scm_list_n (ly_symbol2scm ("char"),
-		      scm_int2num (cm->code),
-		      SCM_UNDEFINED));
-  
-  //  at= fontify_atom ((Font_metric*)this, at);
-  Box b = afm_bbox_to_box (cm->charBBox);
-
-  return Molecule (b, at);
-}
diff --git a/lily/align-interface.cc b/lily/align-interface.cc
deleted file mode 100644
index 255e4efcf9..0000000000
--- a/lily/align-interface.cc
+++ /dev/null
@@ -1,283 +0,0 @@
-/*   
-  align-interface.cc --  implement Align_interface
-  
-  source file of the GNU LilyPond music typesetter
-  
-  (c) 2000--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-  
- */
-
-#include "align-interface.hh"
-#include "grob.hh"
-#include "group-interface.hh"
-#include "axis-group-interface.hh"
-#include "hara-kiri-group-spanner.hh"
-#include "paper-def.hh"
-
-MAKE_SCHEME_CALLBACK (Align_interface,alignment_callback,2);
-SCM
-Align_interface::alignment_callback (SCM element_smob, SCM axis)
-{
-  Grob * me = unsmob_grob (element_smob);
-  Axis ax = (Axis)gh_scm2int (axis);
-  Grob * par = me->get_parent (ax);
-  if (par && !to_boolean (par->get_grob_property ("positioning-done")))
-    {
-      Align_interface::align_elements_to_extents (par, ax);
-    }
-  return gh_double2scm (0.0);
-}
-
-MAKE_SCHEME_CALLBACK (Align_interface,fixed_distance_alignment_callback,2);
-SCM
-Align_interface::fixed_distance_alignment_callback (SCM element_smob, SCM axis)
-{
-  Grob * me = unsmob_grob (element_smob);
-  Axis ax = (Axis)gh_scm2int (axis);
-  Grob * par = me->get_parent (ax);
-  if (par && !to_boolean (par->get_grob_property ("positioning-done")))
-    {
-      Align_interface::align_to_fixed_distance (par, ax);
-    }
-  return gh_double2scm (0.0);
-}
-
-/*
-  merge with align-to-extents? 
- */
-void
-Align_interface::align_to_fixed_distance (Grob *me , Axis a)
-{
-  me->set_grob_property ("positioning-done", SCM_BOOL_T);
-  
-  SCM d =   me->get_grob_property ("stacking-dir");
-  
-  Direction stacking_dir = gh_number_p (d) ? to_dir (d) : CENTER;
-  if (!stacking_dir)
-    stacking_dir = DOWN;
-
-  Real dy = robust_scm2double (me->get_grob_property ("forced-distance"),0.0);
-  
-  Link_array<Grob> elems
-    = Pointer_group_interface__extract_grobs (me, (Grob*) 0, "elements");
-
-  Real where_f=0;
-
-  Interval v;
-  v.set_empty ();
-  Array<Real> translates;
-  
-  for (int j= elems.size (); j--; ) 
-    {
-      /*
-	This is not very elegant, in that we need special support for
-	hara kiri. Unfortunately, the generic wiring of
-	force_hara_kiri_callback () (extent and offset callback) is
-	such that we might get into a loop if we call extent() or
-	offset() the elements.
-	
-	 
-       */
-      if (a == Y_AXIS
-	  && Hara_kiri_group_spanner::has_interface (elems[j]))
-	Hara_kiri_group_spanner::consider_suicide (elems[j]);
-
-      if (!elems[j]-> live())
-	elems.del(j);
-    }
-
-  for (int j =0; j < elems.size (); j++)
-    {
-      where_f += stacking_dir * dy;
-      translates.push (where_f);
-      v.unite (Interval (where_f, where_f));
-    }
-
-  /*
-    TODO: support self-alignment-{Y,X}
-   */
-  for (int i = 0; i < translates.size (); i++)
-    {
-      elems[i]->translate_axis (translates[i] - v.center (), a);
-    }
-}
-
-/*
-  Hairy function to put elements where they should be. Can be tweaked
-  from the outside by setting extra-space in its
-  children
-
-  We assume that the children the refpoints of the children are still
-  found at 0.0 -- we will fuck up with thresholds if children's
-  extents are already moved to locations such as (-16, -8), since the
-  dy needed to put things in a row doesn't relate to the distances
-  between original refpoints.
-
-  TODO: maybe we should rethink and throw out thresholding altogether.
-  The original function has been taken over by
-  align_to_fixed_distance().
-*/
-void
-Align_interface::align_elements_to_extents (Grob * me, Axis a)
-{
-  me->set_grob_property ("positioning-done", SCM_BOOL_T);
-  
-  SCM d =   me->get_grob_property ("stacking-dir");
-  
-  Direction stacking_dir = gh_number_p (d) ? to_dir (d) : CENTER;
-  if (!stacking_dir)
-    stacking_dir = DOWN;
-  
-  Interval threshold  = robust_scm2interval ( me->get_grob_property ("threshold"), Interval (0, Interval::infinity ()));
-  
-  Array<Interval> dims;
-
-  Link_array<Grob> elems;
-  Link_array<Grob> all_grobs
-    = Pointer_group_interface__extract_grobs (me, (Grob*) 0, "elements");
-  for (int i=0; i < all_grobs.size (); i++) 
-    {
-      Interval y = all_grobs[i]->extent (me, a);
-      if (!y.is_empty ())
-	{
-	  Grob *e =dynamic_cast<Grob*> (all_grobs[i]);
-
-	  elems.push (e);
-	  dims.push (y);	  
-	}
-    }
-  
- 
-  /*
-    Read self-alignment-X and self-alignment-Y. This may seem like
-    code duplication. (and really: it is), but this is necessary to
-    prevent ugly cyclic dependencies that arise when you combine
-    self-alignment on a child with alignment of children.
-  */
- static SCM  prop_syms[2];
-
-  if (!prop_syms[0])
-    {
-      prop_syms[X_AXIS] = ly_symbol2scm ("self-alignment-X");
-      prop_syms[Y_AXIS] = ly_symbol2scm ("self-alignment-Y");
-    }
-  
-  SCM align (me->internal_get_grob_property (prop_syms[a]));
-  
-  Array<Real> translates ;
-  Interval total;
-  Real where_f=0;
-  
-  for (int j=0 ;  j < elems.size (); j++) 
-    {
-      Real dy = -  dims[j][-stacking_dir];
-      if (j)
-	dy += dims[j-1][stacking_dir];
-
-
-      /*
-	we want dy to be > 0
-       */
-      dy *= stacking_dir; 
-      if (j)
-	{
-	  dy = (dy >? threshold[SMALLER])
-	    <? threshold[BIGGER];
-	}
-
-      where_f += stacking_dir * dy;
-      total.unite (dims[j] +   where_f);
-      translates.push (where_f);
-    }
-
-  
-  Grob * align_center = unsmob_grob (align);
-  Real center_offset = 0.0;
-  
-  /*
-    also move the grobs that were empty, to maintain spatial order. 
-   */
-  Array<Real> all_translates;
-  if (translates.size ())
-    {
-      int i =0;
-      int j =0;
-      Real w = translates[0];
-      while (j  < all_grobs.size ())
-	{
-	  if (i < elems.size () && all_grobs[j] == elems[i])
-	    {
-	      w = translates[i++];
-	    }
-	  if (all_grobs[j] == align_center)
-	    center_offset = w;
-	  all_translates .push (w);
-	  j++;
-	}
-
-
-      /*
-	FIXME: uncommenting freaks out the Y-alignment of
-	line-of-score.
-       */
-      // Real align_param = is_direction (align)  ? gh_scm2double (align) : 0.0;
-      
-      if (gh_number_p (align))
-	center_offset = total.linear_combination (gh_scm2double (align));
-
-      for (int j = 0 ;  j < all_grobs.size (); j++)
-	all_grobs[j]->translate_axis (all_translates[j] - center_offset, a);
-    }
-}
-Axis
-Align_interface::axis (Grob*me)
-{
-  return  Axis (gh_scm2int (ly_car (me->get_grob_property ("axes"))));
-}
-
-void
-Align_interface::add_element (Grob*me,Grob* s, SCM cb)
-{
-  s->add_offset_callback (cb, Align_interface::axis (me));
-  Axis_group_interface::add_element (me, s);
-}
-
-void
-Align_interface::set_axis (Grob*me,Axis a)
-{
-  Axis_group_interface::set_axes (me, a,a);
-}
-
-
-/*
-  Find Y-axis parent of G that has a #'forced-distance property. This
-  has the effect of finding the piano-staff given an object in that
-  piano staff.
- */
-Grob *
-find_fixed_alignment_parent  (Grob *g)
-{
-  while (g)
-    {
-      if (gh_number_p (g->get_grob_property ("forced-distance")))
-	return g;
-
-      g = g->get_parent (Y_AXIS);
-    }
-
-  return 0;
-}
-
-
-
-
-ADD_INTERFACE (Align_interface, "align-interface",
-  " Order grobs top to bottom/left to right/right to left etc.",
-  "forced-distance stacking-dir align-dir threshold positioning-done center-element elements axes");
-
-
-struct Foobar
-{
-  bool has_interface (Grob*);
-};
-
diff --git a/lily/all-font-metrics.cc b/lily/all-font-metrics.cc
deleted file mode 100644
index fb6d20b773..0000000000
--- a/lily/all-font-metrics.cc
+++ /dev/null
@@ -1,211 +0,0 @@
-/*
-  
-  all-font-metrics.cc --  implement All_font_metrics
-  
-  source file of the GNU LilyPond music typesetter
-  
-  (c) 1999--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-  
- */
-
-#include "config.h"
-#include "main.hh"
-#include "all-font-metrics.hh"
-
-#include "warn.hh"
-#include "afm.hh"
-#include "tfm.hh"
-#include "lily-guile.hh"
-#include "scm-hash.hh"
-#include "kpath.hh"
-
-static const char * default_font_str0_ = "cmr10";
-
-All_font_metrics::All_font_metrics (String path)
-{
-  afm_p_dict_ = new Scheme_hash_table;
-  tfm_p_dict_ = new Scheme_hash_table;
-  
-  search_path_.parse_path (path);
-}
-
-All_font_metrics::~All_font_metrics ()
-{
-  scm_gc_unprotect_object (afm_p_dict_->self_scm ());
-  scm_gc_unprotect_object (tfm_p_dict_->self_scm ());
-}
-
-/*
-  TODO: our AFM handling is broken: the units in an AFM file are
-  relative to the design size (1000 units = 1 designsize). Hence we
-  should include design size when generating an AFM metric. 
- */
-Adobe_font_metric *
-All_font_metrics::find_afm (String name)
-{
-  SCM sname = ly_symbol2scm (name.to_str0 ());
-
-  SCM name_string = scm_makfrom0str (name.to_str0 ());
-
-  SCM val;
-  
-  if (!afm_p_dict_->try_retrieve (sname, &val))
-    {
-      String path;
-
-      if (path.is_empty ())
-	path = search_path_.find (name  + ".afm");
-
-      if (path.is_empty ())
-	{
-	  String p = kpathsea_find_afm (name.to_str0 ());
-	  if (p.length ())
-	    path = p;
-	}
-
-      if (path.is_empty ())
-	return 0;
-      
-      if (verbose_global_b)
-	progress_indication ("[" + path);
-      val = read_afm_file (path);
-      unsmob_metrics (val)->path_ = path;
-      
-      unsmob_metrics (val)->description_ = gh_cons (name_string, gh_double2scm (1.0));
-
-      if (verbose_global_b)
-	progress_indication ("]");
-
-      afm_p_dict_->set (sname,val);
-
-      scm_gc_unprotect_object (val);
-
-
-      Adobe_font_metric *afm
-	= dynamic_cast<Adobe_font_metric*> (unsmob_metrics (val));
-
-      /*
-	only check checksums if there is one.  We take the risk that
-	some file has valid checksum 0
-      */
-      if (afm->checksum_)
-	{
-	  Tex_font_metric * tfm = find_tfm (name);
-	  
-	  /* FIXME: better warning message
-	     (maybe check upon startup for feta16.afm, feta16.tfm?)
-	  */
-	  if (tfm && tfm->info_.checksum != afm->checksum_)
-	    {
-	      String s = _f ("checksum mismatch for font file: `%s'",
-			     path.to_str0 ());
-	      s += " " + _f ("does not match: `%s'", tfm->path_.to_str0 ()); // FIXME
-	      s += "\n";
-	      s += " TFM: " + to_string ((int) tfm->info_.checksum);
-	      s += " AFM: " + to_string ((int) afm->checksum_);
-	      s += "\n";
-	      s += _ (" Rebuild all .afm files, and remove all .pk and .tfm files.\nRerun with -V to show font paths.\n");
-	      s += _("A script for removing font-files is delivered with the source-code,\n"
-		     "in buildscripts/clean-fonts.sh");
-	      error (s);
-	    }
-	}
-    }
-  
-  return dynamic_cast<Adobe_font_metric*> (unsmob_metrics (val));
-}
-
-
-Tex_font_metric *
-All_font_metrics::find_tfm (String name)
-{
-  SCM sname = ly_symbol2scm (name.to_str0 ());
-  SCM name_string = scm_makfrom0str (name.to_str0 ());
-
-  SCM val;
-  if (!tfm_p_dict_->try_retrieve (sname, &val))
-    {
-      String path;
-      
-      if (path.is_empty ())
-	{
-	  String p = kpathsea_find_tfm (name.to_str0 ());
-	  if (p.length ())
-	    path = p;
-	}
-
-      if (path.is_empty ())
-	path = search_path_.find (name  + ".tfm");
-      if (path.is_empty ())
-	return 0;
-
-      if (verbose_global_b)
-	progress_indication ("[" + path);
-      
-      val = Tex_font_metric::make_tfm (path);
-
-      if (verbose_global_b)
-	progress_indication ("]");
-
-      unsmob_metrics (val)->path_ = path;
-      unsmob_metrics (val)->description_ = gh_cons (name_string, gh_double2scm (1.0));
-      tfm_p_dict_->set (sname, val);
-
-      scm_gc_unprotect_object (val);
-    }
-
-  return
-    dynamic_cast<Tex_font_metric*> (unsmob_metrics (val));
-}
-
-
-
-Font_metric *
-All_font_metrics::find_font (String name)
-{
-  if ((name.left_string (4) == "feta") ||
-      (name.left_string (8) == "parmesan"))
-    {
-      Font_metric * f = find_afm (name);
-      if (f)
-	return f;
-      else
-      f =find_tfm (name);
-      if (f)
-	return f ;
-    }
-  else
-    {
-      Font_metric * f = find_tfm (name);
-      if (f)
-	return f;
-      else
-      f =find_afm (name);
-      if (f)
-	return f ;
-    }
-
-  warning (_f ("can't find font: `%s'", name.to_str0 ()));
-  warning (_ ("Loading default font"));
-  
-  String def_name = default_font_str0_;
-
-  /*
-    we're in emergency recovery mode here anyway, so don't try to do
-    anything smart that runs the risk of failing.  */
-  Font_metric*  f= find_afm (def_name);
-  if (f)
-    return f;
-
-  f =  find_tfm (def_name);
-  if (f)
-    return f;
-
-  error (_f ("can't find default font: `%s'", def_name.to_str0 ()));
-  error (_f ("(search path: `%s')", search_path_.to_string ()));
-  error (_ ("Giving up"));
-
-  return 0;
-}
-
-
diff --git a/lily/ambitus-engraver.cc b/lily/ambitus-engraver.cc
deleted file mode 100644
index e5f952e9a6..0000000000
--- a/lily/ambitus-engraver.cc
+++ /dev/null
@@ -1,200 +0,0 @@
-/*
-  ambitus-engraver.cc -- implement Ambitus_engraver
-
-  source file of the GNU LilyPond music typesetter
-
-  (c) 2002--2004 Juergen Reuter <reuter@ipd.uka.de>
-*/
-
-#include "engraver.hh"
-#include "item.hh"
-#include "note-head.hh"
-#include "staff-symbol-referencer.hh"
-#include "event.hh"
-#include "pitch.hh"
-
-/*
- * This class implements an engraver for ambitus grobs.
- *
- * TODO: There are quite some conceptional issues left open:
- *
- * - Many publishers put ambitus _before_ the first occurrence of a
- * clef.  Hence, formally the pitches are undefined in this case.  Of
- * course, one could always silently assume that ambitus pitches refer
- * to the first occurrence of a clef.  Or should we, by default, put
- * the ambitus always after the first clef, if any?
- *
- * - Enharmonically equal pitches: Assume piece contains once a "gis",
- * another time an "aes" as highest pitch.  Which one should be
- * selected for the ambitus grob?  The "aes", because it is
- * musically/notationally "higher" than "gis"?  Or "gis", because (if
- * using pure temperament) it has a slightly higher frequency?  Or
- * that pitch that come closer to the key signature?  But there may be
- * key signature changes in the piece...
- *
- * - Multiple voices in single staff: Assume a vocal piece of music,
- * where the soprano voice and the alto voice are put into the same
- * staff (this is generally a bad idea, but unfortunately common
- * practice).  Then, there probably should be two ambitus grobs, one
- * for each voice.  But how can you see which ambitus grob refers to
- * which voice?  Most probably you can guess it from the fact that the
- * ambitus of the alto voice typically lies in a lower range than that
- * of the soprano voice, but this is just a heuristic rather than a
- * generally valid rule.  In the case of only two voices, using stems
- * in the ambitus grob might help, but probably looks quite ugly.
- *
- * - If a piece consists of several loosely coupled sections, should
- * there be multiple ambitus grobs allowed, one for each section?
- * Then there probably should be some "\ambitus" event added to
- * mudela, stating where an ambitus grob should be placed.  This
- * ambitus grob should then represent the ambitus in the range of time
- * between this "\ambitus" event and the next one (or the end of the
- * piece, if there is no more such event).  To be compliant with the
- * current implementation, we might implicitly assume an "\ambitus"
- * event at the beginning of the piece, but then the question where
- * to put this first ambitus grob (before/after the clef?) becomes
- * even more urgent.
- *
- * - Incipits of transcribed music may need special treatment for
- * ambitus, since, for readability, the ambitus most probably should
- * not refer to the ancient clefs of the incipit, but rather to the
- * clefs used in the transcribed parts.
- */
-class Ambitus_engraver : public Engraver
-{
-public:
-TRANSLATOR_DECLARATIONS(Ambitus_engraver);
-  virtual void process_music ();
-  virtual void acknowledge_grob (Grob_info);
-  virtual void stop_translation_timestep ();
-  virtual void finalize ();
-
-private:
-  void create_ambitus ();
-  Item *ambitus_;
-  int/*bool*/ is_typeset;
-  Pitch pitch_min, pitch_max;
-};
-
-Ambitus_engraver::Ambitus_engraver ()
-{
-  ambitus_ = 0;
-  is_typeset = 0;
-
-  /*
-   * (pitch_min > pitch_max) means that pitches are not yet
-   * initialized
-   */
-  pitch_min = Pitch (0, 0, SHARP);
-  pitch_max = Pitch (0, 0, FLAT);
-}
-
-void
-Ambitus_engraver::process_music ()
-{
-  /*
-   * Ensure that ambitus is created in the very first timestep (on
-   * which lily does not call start_translation_timestep ()).
-   * Otherwise, if a voice begins with a rest, the ambitus grob will
-   * be placed after the rest.
-   */
-  if (!ambitus_) {
-    create_ambitus ();
-  }
-}
-
-void
-Ambitus_engraver::stop_translation_timestep ()
-{
-  if (ambitus_ && !is_typeset)
-    {
-      /*
-       * Evaluate centralCPosition not until now, since otherwise we
-       * may then oversee a clef that is defined in a staff context if
-       * we are in a voice context; centralCPosition would then be
-       * assumed to be 0.
-       */
-      SCM c0 = get_property ("centralCPosition");
-      ambitus_->set_grob_property ("c0-position", c0);
-
-      /*
-       * Similar for keySignature.
-       */
-      SCM key_signature = get_property ("keySignature");
-      ambitus_->set_grob_property ("accidentals", key_signature);
-
-      typeset_grob (ambitus_);
-      is_typeset = 1;
-    }
-}
-
-void
-Ambitus_engraver::acknowledge_grob (Grob_info info)
-{
-  Item *item = dynamic_cast <Item *>(info.grob_);
-  if (item)
-    {
-      if (Note_head::has_interface (info.grob_))
-	{
-	  Music *nr = info.music_cause ();
-	  if (nr && nr->is_mus_type ("note-event"))
-	    {
-	      Pitch pitch = *unsmob_pitch (nr->get_mus_property ("pitch"));
-	      if (Pitch::compare (pitch_min, pitch_max) > 0) // already init'd?
-		{
-		  // not yet init'd; use current pitch to init min/max
-		  pitch_min = pitch;
-		  pitch_max = pitch;
-		}
-	      else if (Pitch::compare (pitch, pitch_max) > 0) // new max?
-		{
-		  pitch_max = pitch;
-		}
-	      else if (Pitch::compare (pitch, pitch_min) < 0) // new min?
-		{
-		  pitch_min = pitch;
-		}
-	    }
-	}
-    }
-}
-
-void
-Ambitus_engraver::create_ambitus ()
-{
-  ambitus_ = make_item ("Ambitus");
-  is_typeset = 0;		// UGH.
-  announce_grob (ambitus_, SCM_EOL);
-}
-
-void
-Ambitus_engraver::finalize ()
-{
-  if (ambitus_)
-    {
-      if (Pitch::compare (pitch_min, pitch_max) <= 0)
-	{
-	  ambitus_->set_grob_property ("pitch-min",
-					 pitch_min.smobbed_copy ());
-	  ambitus_->set_grob_property ("pitch-max",
-					 pitch_max.smobbed_copy ());
-	}
-      else // have not seen any pitch, so forget about the ambitus
-	{
-	  /*
-	   * Do not print a warning on empty ambitus range, since this
-	   * most probably arises from an empty voice, such as shared
-	   * global timesig/clef definitions.
-	   */
-	  ambitus_->suicide();
-	}
-    }
-}
-
-ENTER_DESCRIPTION(Ambitus_engraver,
-/* descr */       "",
-/* creats*/       "Ambitus",
-/* accepts */ "",
-/* acks  */     "note-head-interface",
-/* reads */       "",
-/* write */       "");
diff --git a/lily/ambitus.cc b/lily/ambitus.cc
deleted file mode 100644
index 9a9e3c6649..0000000000
--- a/lily/ambitus.cc
+++ /dev/null
@@ -1,258 +0,0 @@
-/*
-  ambitus.cc -- implement Ambitus
-
-  source file of the GNU LilyPond music typesetter
-
-  (c) 2002--2004 Juergen Reuter <reuter@ipd.uka.de>
-*/
-
-#include "staff-symbol-referencer.hh"
-#include "pitch.hh"
-#include "ambitus.hh"
-#include "molecule.hh"
-#include "note-head.hh"
-#include "item.hh"
-#include "font-interface.hh"
-#include "paper-def.hh"
-#include "lookup.hh"
-
-/*
- * TODO: note-head collision handling
- *
- * TODO: accidentals collision handling
- *
- * TODO: alternative representation: adding the ambitus as text script
- * to the instrument name (e.g. "Soprano (c^1 - f^2)").
- *
- * FIXME: Accidentals are too close at the note heads (it seems that
- * the extent of the ledger lines is ignored).
- *
- * TODO: If (depending on breakAlignOrder) ambitus is put behind
- * key-signature, then do not repeat accidentals that already appear
- * in the key signature.
- *
- * FIXME: A staff containing more than a single context will result in
- * multiple ambitus grobs per staff.  This is basically ok, but there is
- * currently no proper collision handling for this case.
- *
- * TODO: make ignore_octave and force_accidental of function
- * number_accidentals accessible via grob properties.
- */
-
-/**
-  Given a pitch and a key_signature, decide what accidentals to show.
- 
-  Possible return values:
- 
-  0: do not show any accidental
-  1: show pitch->alteration_ only
-  2: show pitch->get_alteration, preceded by a natural sign
-
-  UGH: code duplication! See accidental-engraver.
- 
- */
-static int
-number_accidentals (SCM key_signature, Pitch *pitch,
-		    bool ignore_octave_b, bool force_accidental)
-{
-  int notename = pitch->get_notename ();
-  int octave = pitch->get_octave();
-  int alteration = pitch->get_alteration();
-
-  if (force_accidental) // ignore key signature
-    return 1;
-
-  
-#if DEBUG_AMBITUS
-  scm_display (key_signature, scm_current_output_port ());
-#endif
-
-  SCM prev;
-  if (ignore_octave_b)
-    prev = ly_assoc_cdr (scm_int2num (notename), key_signature);
-  else
-    prev = scm_assoc (gh_cons (scm_int2num (octave), scm_int2num (notename)),
-		     key_signature);
-
-  /* should really be true unless prev == SCM_BOOL_F */
-  if (gh_pair_p (prev) && gh_pair_p (ly_cdr (prev)))
-    {
-      prev = gh_cons (ly_car (prev), ly_cadr (prev));
-    }
-
-  /* If an accidental was not found */
-  if (prev == SCM_BOOL_F)
-    prev = scm_assoc (scm_int2num (notename), key_signature);
-
-  SCM prev_acc = (prev == SCM_BOOL_F) ? scm_int2num (0) : ly_cdr (prev);
-  int sig_alteration = gh_number_p (prev_acc) ? gh_scm2int (prev_acc) : 0;
-
-  if (alteration == sig_alteration) // no accidental at all needed
-    return 0;
-
-  if ((alteration == 0) && (sig_alteration != 0)) // need ordinary natural
-    return 2;
-
-  if (sig_alteration == 0) // use pitch's alteration
-    return 1;
-
-  return 2;
-}
-
-void
-add_accidentals (Item *me, Molecule *head, int num_acc,
-		 Pitch *pitch, String accidentals_style, Real yoffs)
-{
-  if (!num_acc)
-    return;
-  if (pitch->get_alteration())
-    {
-      Molecule accidental (Font_interface::get_default_font (me)->
-			   find_by_name (String ("accidentals-") +
-					 accidentals_style +
-					 to_string (pitch->get_alteration ())));
-      accidental.translate_axis (yoffs, Y_AXIS);
-      head->add_at_edge (X_AXIS,  LEFT, accidental, 0.1, 0);
-    }
-  if (num_acc == 2)
-    {
-      Molecule natural (Font_interface::get_default_font (me)->
-			find_by_name (String ("accidentals-") +
-				      accidentals_style +
-				      to_string ("0")));
-      natural.translate_axis (yoffs, Y_AXIS);
-      head->add_at_edge (X_AXIS,  LEFT, natural, 0.1, 0);
-    }
-}
-
-MAKE_SCHEME_CALLBACK (Ambitus,print,1);
-SCM
-Ambitus::print (SCM smob)
-{
-  Item *me = (Item *)unsmob_grob (smob);
-  Molecule molecule = Molecule ();
-
-  SCM scm_note_head_style = me->get_grob_property ("note-head-style");
-  String note_head_style;
-  if (gh_symbol_p (scm_note_head_style))
-    {
-      String note_head_style =
-	ly_symbol2string (scm_note_head_style);
-    }
-  else
-    {
-      note_head_style = String ("noteheads-2");
-    }
-  if (Font_interface::get_default_font (me)->find_by_name (note_head_style).is_empty ())
-    {
-      String message = "Ambitus: no such note head: `" + note_head_style + "'";
-      me->warning (_ (message.to_str0 ()));
-      return SCM_EOL;
-    }
-
-  /*
-    FIXME: Use positions. 
-   */
-  int p_min, p_max;
-  Pitch *pitch_min = unsmob_pitch (me->get_grob_property ("pitch-min"));
-  if (!pitch_min)
-    {
-      me->programming_error("Ambitus: pitch_min undefined; assuming 0");
-      p_min = 0;
-    }
-  else
-    {
-      p_min = pitch_min->steps ();
-    }
-  Pitch *pitch_max = unsmob_pitch (me->get_grob_property ("pitch-max"));
-  if (!pitch_max)
-    {
-      me->programming_error("Ambitus: pitch_max undefined; assuming 0");
-      p_max = 0;
-    }
-  else
-    {
-      p_max = pitch_max->steps ();
-    }
-  if (p_min > p_max)
-    {
-      me->programming_error ("Ambitus: reverse range");
-    }
-
-  SCM c0 = me->get_grob_property ("c0-position");
-  if (gh_number_p (c0))
-    {
-      p_min += gh_scm2int (c0);
-      p_max += gh_scm2int (c0);
-    }
-
-  // create heads
-  Molecule head_min =
-    Font_interface::get_default_font (me)->find_by_name (note_head_style);
-  head_min.translate_axis (0.5*p_min, Y_AXIS);
-  Molecule head_max =
-    Font_interface::get_default_font (me)->find_by_name (note_head_style);
-  head_max.translate_axis (0.5*p_max, Y_AXIS);
-
-  // join heads
-  if (to_boolean (me->get_grob_property ("join-heads")) &&
-      ((p_max - p_min) >= 3))
-    {
-      Real linethickness = me->get_paper ()->get_realvar (ly_symbol2scm ("linethickness"));
-      Real blotdiameter = me->get_paper ()->get_realvar (ly_symbol2scm ("blotdiameter"));
-      Interval x_extent = 0.5 * Interval (-linethickness, +linethickness);
-      Interval y_extent = 0.5 * Interval (p_min + 1.35, p_max - 1.35);
-      Box line_box (x_extent, y_extent);
-      Molecule line = Lookup::round_filled_box (line_box, blotdiameter);
-      line.translate_axis (0.5 * head_min.extent (X_AXIS).length (), X_AXIS);
-      molecule.add_molecule (line);
-    }
-
-  // add ledger lines
-  Interval hd = head_min.extent (X_AXIS);
-  Real left_ledger_protusion = hd.length () / 4;
-  Real right_ledger_protusion = left_ledger_protusion;
-  Interval l_extents = Interval (hd[LEFT] - left_ledger_protusion,
-				 hd[RIGHT] + right_ledger_protusion);
-  Molecule ledger_lines;
-  int interspaces = Staff_symbol_referencer::line_count (me) - 1;
-  ledger_lines =
-    Note_head::brew_ledger_lines (me, p_min, interspaces, l_extents, 0,true);
-  ledger_lines.translate_axis (0.5 * p_min, Y_AXIS);
-  molecule.add_molecule (ledger_lines);
-  ledger_lines =
-    Note_head::brew_ledger_lines (me, p_max, interspaces, l_extents, 0, true);
-  ledger_lines.translate_axis (0.5 * p_max, Y_AXIS);
-  molecule.add_molecule (ledger_lines);
-
-  // add accidentals
-  SCM key_signature = me->get_grob_property ("key-signature");
-  SCM scm_accidentals_style = me->get_grob_property ("accidentals-style");
-  String accidentals_style;
-  if (gh_symbol_p (scm_accidentals_style))
-    {
-      accidentals_style =
-	ly_symbol2string (scm_accidentals_style);
-    }
-  else
-    {
-      accidentals_style = String ("");
-    }
-  int num_acc;
-  num_acc = number_accidentals (key_signature, pitch_min, true, false);
-  add_accidentals (me, &head_min, num_acc, pitch_min,
-		   accidentals_style, 0.5 * p_min);
-  num_acc = number_accidentals (key_signature, pitch_max, true, false);
-  add_accidentals (me, &head_max, num_acc, pitch_max,
-		   accidentals_style, 0.5 * p_max);
-
-  // add heads
-  molecule.add_molecule (head_min);
-  molecule.add_molecule (head_max);
-
-  return molecule.smobbed_copy ();
-}
-
-ADD_INTERFACE (Ambitus, "ambitus-interface",
-  "An ambitus represents the pitch range of a voice.",
-  "c0-position pitch-min pitch-max accidentals note-head-style join-heads");
diff --git a/lily/apply-context-iterator.cc b/lily/apply-context-iterator.cc
deleted file mode 100644
index e08887c6f9..0000000000
--- a/lily/apply-context-iterator.cc
+++ /dev/null
@@ -1,28 +0,0 @@
-#include "simple-music-iterator.hh"
-#include "translator-group.hh"
-#include "music.hh"
-
-/**
-  Iterate a property.  
- */
-class Apply_context_iterator : public Simple_music_iterator
-{
-public:
-  DECLARE_SCHEME_CALLBACK(constructor, ());
-protected:
-  virtual void process (Moment);
-};
-
-
-void
-Apply_context_iterator::process (Moment m)
-{
-  SCM proc = get_music ()->get_mus_property ("procedure");
-
-  scm_call_1 (proc, get_outlet ()->self_scm());
-  
-  Simple_music_iterator::process (m);
-}
-
-IMPLEMENT_CTOR_CALLBACK (Apply_context_iterator);
-  
diff --git a/lily/arpeggio-engraver.cc b/lily/arpeggio-engraver.cc
deleted file mode 100644
index cc61fb3b0f..0000000000
--- a/lily/arpeggio-engraver.cc
+++ /dev/null
@@ -1,109 +0,0 @@
-/*   
-  arpeggio-engraver.cc -- implement Arpeggio_engraver
-  
-  source file of the GNU LilyPond music typesetter
-  
-  (c) 2000--2004 Jan Nieuwenhuizen <janneke@gnu.org>
- */
-
-#include "engraver.hh"
-#include "group-interface.hh"
-#include "item.hh"
-#include "event.hh"
-#include "arpeggio.hh"
-#include "stem.hh"
-#include "rhythmic-head.hh"
-#include "side-position-interface.hh"
-#include "note-column.hh"
-
-class Arpeggio_engraver : public Engraver
-{
-public:
-  TRANSLATOR_DECLARATIONS(Arpeggio_engraver); 
-protected:
-  virtual void acknowledge_grob (Grob_info);
-  virtual void process_music ();
-
-  virtual void stop_translation_timestep ();
-  virtual bool try_music (Music *);
-
-private:
-  Item* arpeggio_; 
-  Music *arpeggio_req_;
-};
-
-Arpeggio_engraver::Arpeggio_engraver ()
-{
-  arpeggio_ = 0;
-  arpeggio_req_ = 0;
-}
-
-bool
-Arpeggio_engraver::try_music (Music* m)
-{
-  if (!arpeggio_req_)
-    {
-      arpeggio_req_ = m;
-    }
-  return true;
-}
-
-void
-Arpeggio_engraver::acknowledge_grob (Grob_info info)
-{
-  if (arpeggio_)
-    {
-      if (Stem::has_interface (info.grob_))
-	{
-	  if (!arpeggio_->get_parent  (Y_AXIS))
-	    arpeggio_->set_parent (info.grob_, Y_AXIS);
-      
-	  Pointer_group_interface::add_grob (arpeggio_, ly_symbol2scm ("stems"), info.grob_);
-	}
-      
-      /*
-	We can't catch local key items (accidentals) from Voice context,
-	see Local_key_engraver
-      */
-      else if (Rhythmic_head::has_interface (info.grob_))
-	{
-	  Side_position_interface::add_support (arpeggio_, info.grob_);
-	}
-      else if (Note_column::has_interface (info.grob_ ))
-	{
-	  info.grob_->set_grob_property ("arpeggio", arpeggio_->self_scm ());
-	}
-    }
-}
-
-void
-Arpeggio_engraver::process_music ()
-{
-  if (arpeggio_req_)
-    {
-      arpeggio_ = make_item ("Arpeggio");
-      announce_grob(arpeggio_, arpeggio_req_->self_scm());
-    }
-}
-
-void
-Arpeggio_engraver::stop_translation_timestep ()
-{
-  if (arpeggio_)
-    {
-      typeset_grob (arpeggio_);
-      arpeggio_ = 0;
-    }
-  arpeggio_req_ = 0;
-}
-
-
-
-
-ENTER_DESCRIPTION(Arpeggio_engraver,
-/* descr */       "Generate an Arpeggio from a Arpeggio_req",
-/* creats*/       "Arpeggio",
-/* accepts */     "arpeggio-event",
-/* acks  */       "stem-interface rhythmic-head-interface note-column-interface",
-/* reads */       "",
-/* write */       "");
diff --git a/lily/arpeggio.cc b/lily/arpeggio.cc
deleted file mode 100644
index ee0c7ceab9..0000000000
--- a/lily/arpeggio.cc
+++ /dev/null
@@ -1,158 +0,0 @@
-/*   
-  arpeggio.cc -- implement Arpeggio
-
-  source file of the GNU LilyPond music typesetter
-  
-  (c) 2000--2004 Jan Nieuwenhuizen <janneke@gnu.org>
- */
-
-#include "molecule.hh"
-#include "paper-def.hh"
-#include "arpeggio.hh"
-#include "grob.hh"
-#include "stem.hh"
-#include "staff-symbol-referencer.hh"
-#include "staff-symbol.hh"
-#include "warn.hh"
-#include "font-interface.hh"
-#include "lookup.hh"
-
-
-MAKE_SCHEME_CALLBACK (Arpeggio, print, 1);
-SCM 
-Arpeggio::print (SCM smob) 
-{
-  Grob *me = unsmob_grob (smob);
-  
-  Grob * common = me;
-  for (SCM s = me->get_grob_property ("stems"); gh_pair_p (s); s = ly_cdr (s))
-    {
-      Grob * stem =  unsmob_grob (ly_car (s));
-      common =  common->common_refpoint (Staff_symbol_referencer::get_staff_symbol (stem),
-				 Y_AXIS);
-    }
-
-  /*
-    TODO:
-    
-    Using stems here is not very convenient; should store noteheads
-    instead, and also put them into the support. Now we will mess up
-    in vicinity of a collision.
-
-  */
-  Interval heads;
-  Real my_y = me->relative_coordinate (common, Y_AXIS);
-      
-  for (SCM s = me->get_grob_property ("stems"); gh_pair_p (s); s = ly_cdr (s))
-    {
-      Grob * stem = unsmob_grob (ly_car (s));
-      Grob * ss = Staff_symbol_referencer::get_staff_symbol (stem);
-      Interval iv =Stem::head_positions (stem);
-      iv *= Staff_symbol::staff_space (ss)/2.0;
-      
-      heads.unite (iv + ss->relative_coordinate (common, Y_AXIS)
-		   - my_y);
-    }
-
-  if (heads.is_empty ())
-    {
-      /*
-	Dumb blonde error
-
-	:-)
-       */
-      programming_error ("Huh, no heads for arpeggio found.");
-      return SCM_EOL;
-    }
-
-  SCM ad = me->get_grob_property ("arpeggio-direction");
-  Direction dir = CENTER;
-  if (is_direction (ad))
-    {
-      dir = to_dir (ad);
-    }
-  
-  Molecule mol;
-  Font_metric *fm =Font_interface::get_default_font (me);
-  Molecule squiggle = fm->find_by_name ("scripts-arpeggio");
-
-  Molecule arrow ;  
-  if (dir)
-    {
-      arrow = fm->find_by_name ("scripts-arpeggio-arrow-" + to_string (dir));
-      heads[dir] -= dir * arrow.extent (Y_AXIS).length();
-    }
-  
-  for (Real  y= heads[LEFT] ; y < heads[RIGHT];
-       y+= squiggle. extent (Y_AXIS).length ())
-      mol.add_at_edge (Y_AXIS, UP,squiggle, 0.0, 0);
-
-  mol.translate_axis (heads[LEFT], Y_AXIS);
-  if (dir)
-    mol.add_at_edge (Y_AXIS, dir,arrow, 0,0);
-  
-  return mol.smobbed_copy () ;
-}
-
-/* Draws a vertical bracket to the left of a chord 
-   Chris Jackson <chris@fluffhouse.org.uk> */
-
-MAKE_SCHEME_CALLBACK (Arpeggio, brew_chord_bracket, 1);
-SCM 
-Arpeggio::brew_chord_bracket (SCM smob) 
-{
-  Grob *me = unsmob_grob (smob);
-  
-  Grob * common = me;
-  for (SCM s = me->get_grob_property ("stems"); gh_pair_p (s); s = ly_cdr (s))
-    {
-      Grob * stem =  unsmob_grob (ly_car (s));
-      common =  common->common_refpoint (Staff_symbol_referencer::get_staff_symbol (stem),
-				 Y_AXIS);
-    }
-
-  Interval heads;
-  Real my_y = me->relative_coordinate (common, Y_AXIS);
-      
-  for (SCM s = me->get_grob_property ("stems"); gh_pair_p (s); s = ly_cdr (s))
-    {
-      Grob * stem = unsmob_grob (ly_car (s));
-      Grob * ss = Staff_symbol_referencer::get_staff_symbol (stem);
-      Interval iv = Stem::head_positions (stem);
-      iv *= Staff_symbol::staff_space (ss)/2.0;      
-      heads.unite (iv  +  ss->relative_coordinate (common, Y_AXIS)  -  my_y);
-    }
-
-  Real lt =  me->get_paper ()->get_realvar (ly_symbol2scm ("linethickness"));
-  Real sp = 1.5 * Staff_symbol_referencer::staff_space (me);
-  Real dy = heads.length() + sp;
-  Real x = 0.7;
-
-  Molecule mol (Lookup::bracket (Y_AXIS, Interval (0, dy), lt, x, lt));
-  mol.translate_axis (heads[LEFT] - sp/2.0, Y_AXIS);
-  return mol.smobbed_copy();
-}
-
-
-/*
-  We have to do a callback, because print () triggers a
-  vertical alignment if it is cross-staff.
-  This callback also adds padding.
-*/
-MAKE_SCHEME_CALLBACK (Arpeggio, width_callback,2);
-SCM
-Arpeggio::width_callback (SCM smob, SCM axis)
-{
-  Grob * me = unsmob_grob (smob);
-  Axis a = (Axis)gh_scm2int (axis);
-  assert (a == X_AXIS);
-  Molecule arpeggio = Font_interface::get_default_font (me)->find_by_name ("scripts-arpeggio");
-
-  return ly_interval2scm (arpeggio.extent (X_AXIS) * 1.5);
-}
-
-
-ADD_INTERFACE (Arpeggio, "arpeggio-interface",
-  "Functions and settings for drawing an arpeggio symbol (a wavy line left to noteheads.",
-  "stems arpeggio-direction");
-
diff --git a/lily/audio-column.cc b/lily/audio-column.cc
deleted file mode 100644
index fb33b85fbd..0000000000
--- a/lily/audio-column.cc
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
-  audio-column.cc -- implement Audio_column
-
-  source file of the GNU LilyPond music typesetter
-
-  (c) 1997--2004 Jan Nieuwenhuizen <janneke@gnu.org>
- */
-
-#include "audio-column.hh"
-#include "audio-item.hh"
-#include "performance.hh"
-
-
-
-Audio_column::Audio_column (Moment at_mom)
-{
-  at_mom_ = at_mom;
-  performance_ = 0;
-}
-
-void
-Audio_column::add_audio_item (Audio_item* l)
-{
-  audio_items_.push (l);
-  l->audio_column_ = this; 
-}
-
-Moment
-Audio_column::at_mom () const
-{
-  return at_mom_;
-}
-
-
diff --git a/lily/audio-element-info.cc b/lily/audio-element-info.cc
deleted file mode 100644
index 9a079a1425..0000000000
--- a/lily/audio-element-info.cc
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
-  Audio-element-info.cc -- implement Audio_element_info
-
-  source file of the GNU LilyPond music typesetter
-
-  (c) 1997--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-*/
-
-#include "audio-element-info.hh"
-#include "translator-group.hh"
-
-Audio_element_info::Audio_element_info (Audio_element*s, Music *r)
-{
-  elem_ = s;
-  origin_trans_ =0;
-  event_ = r;
-}
-
-
-Audio_element_info::Audio_element_info ()
-{
-  elem_ = 0;
-  event_ = 0;
-  origin_trans_ =0;
-}
-
-
-Link_array<Translator>
-Audio_element_info::origin_transes (Translator* end) const
-{
-  Translator * t = origin_trans_;
-  Link_array<Translator> r;
-  do {
-    r.push (t);
-    t = t->daddy_trans_;
-  } while (t && t != end->daddy_trans_);
-  
-  return r;
-}
diff --git a/lily/audio-element.cc b/lily/audio-element.cc
deleted file mode 100644
index dc69e93244..0000000000
--- a/lily/audio-element.cc
+++ /dev/null
@@ -1,21 +0,0 @@
-/*
-  audio-element.cc -- implement Audio_element
-
-  source file of the GNU LilyPond music typesetter
-
-  (c) 1997--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-*/
-
-#include "audio-element.hh"
-
-
-Audio_element::Audio_element ()
-{
-  grace_b_ = false;
-}
-
-Audio_element::~Audio_element ()
-{
-}
-
-
diff --git a/lily/audio-item.cc b/lily/audio-item.cc
deleted file mode 100644
index d72adbcc7d..0000000000
--- a/lily/audio-item.cc
+++ /dev/null
@@ -1,88 +0,0 @@
-/*
-  audio-item.cc -- implement Audio items.
-
-  source file of the GNU LilyPond music typesetter
-
-  (c) 1997--2004 Jan Nieuwenhuizen <janneke@gnu.org>
-*/
-
-#include "audio-item.hh"
-#include "midi-item.hh"
-#include "audio-column.hh"
-
-Audio_instrument::Audio_instrument (String instrument_string)
-{
-  str_ = instrument_string;
-}
-
-Audio_item::Audio_item ()
-{
-  audio_column_ = 0;
-}
-
-Audio_note::Audio_note (Pitch p, Moment m, int transposing_i)
-{
-  pitch_ = p;
-  length_mom_ = m;
-  tied_ = 0;
-  transposing_ = transposing_i;
-}
-
-void
-Audio_note::tie_to (Audio_note* t)
-{
-  tied_ = t;
-  Audio_note* first = t;
-  while (first->tied_)
-    first = first->tied_;
-  first->length_mom_ += length_mom_;
-  length_mom_ = 0;
-}
-
-		    
-Audio_key::Audio_key (int acc, bool major)
-{
-  accidentals_=acc;
-  major_=major;
-}
-
-Audio_dynamic::Audio_dynamic (Real volume)
-{
-  volume_ = volume;
-}
-
-Audio_tempo::Audio_tempo (int per_minute_4_i)
-{
-  per_minute_4_ = per_minute_4_i;
-}
-
-Audio_time_signature::Audio_time_signature (int beats, int one_beat)
-{
-  beats_ = beats;
-  one_beat_ = one_beat;
-}
-
-Audio_text::Audio_text (Audio_text::Type type, String text_string)
-{
-  text_string_ = text_string;
-  type_ = type;
-}
-
-Audio_tie::Audio_tie ()
-{
-  note_drul_[RIGHT] = 0;
-  note_drul_[LEFT] = 0;
-}
-
-void
-Audio_tie::set_note (Direction d, Audio_note* note)
-{
-  assert (!note_drul_[d]);
-  note_drul_[d] = note;
-  //set_bound (d, head);
-
-  //  add_dependency (head);
-}
-
-
-
diff --git a/lily/audio-staff.cc b/lily/audio-staff.cc
deleted file mode 100644
index a233fa3f8b..0000000000
--- a/lily/audio-staff.cc
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
-  audio-staff.cc -- implement Audio_staff
-
-  source file of the GNU LilyPond music typesetter
-
-  (c) 1997--2004 Jan Nieuwenhuizen <janneke@gnu.org>
- */
-
-#include "audio-staff.hh"
-#include "audio-item.hh"
-#include "midi-item.hh"
-#include "midi-stream.hh"
-#include "midi-walker.hh"
-
-void
-Audio_staff::add_audio_item (Audio_item* l)
-{
-  audio_items_.push (l);
-}
-
-
-void
-Audio_staff::output (Midi_stream& midi_stream_r, int track_i)
-{
-  Midi_track midi_track;
-  midi_track.number_ = track_i;
-  midi_track.channel_ = channel_;
-  for (Midi_walker i (this, &midi_track); i.ok (); i++)
-    i.process ();
-  midi_stream_r << midi_track;
-}
-
-
diff --git a/lily/auto-beam-engraver.cc b/lily/auto-beam-engraver.cc
deleted file mode 100644
index 96046d3341..0000000000
--- a/lily/auto-beam-engraver.cc
+++ /dev/null
@@ -1,512 +0,0 @@
-/*   
-  auto-beam-engraver.cc --  implement Auto_beam_engraver
-  
-  source file of the GNU LilyPond music typesetter
-  
-  (c) 1999--2004 Jan Nieuwenhuizen <janneke@gnu.org>
-  
- */
-
-#include "beaming.hh"
-#include "event.hh"
-#include "beam.hh"
-#include "stem.hh"
-#include "warn.hh"
-#include "engraver-group-engraver.hh"
-#include "bar-line.hh"
-#include "rest.hh"
-#include "engraver.hh"
-#include "item.hh"
-#include "spanner.hh"
-#include "duration.hh"
-
-/*
-  TODO: figure what to do in grace?
-
-  TODO: documentme.
- */
-class Auto_beam_engraver : public Engraver
-{
-  TRANSLATOR_DECLARATIONS(Auto_beam_engraver);
-protected:
-  virtual void stop_translation_timestep ();
-  virtual void start_translation_timestep ();
-  virtual void process_music ();
-  virtual void finalize ();
-  virtual void acknowledge_grob (Grob_info);
-  virtual void process_acknowledged_grobs ();
-
-private:
-  bool test_moment (Direction, Moment);
-  void consider_begin (Moment);
-  void consider_end (Moment);
-  Spanner* create_beam ();
-  void begin_beam ();
-  void end_beam ();
-  void junk_beam ();
-  bool same_grace_state_b (Grob* e);
-  void typeset_beam ();
-
-  /*
-    shortest_mom is the shortest note in the beam.
-   */
-  Moment shortest_mom_;
-  Spanner *finished_beam_;
-  Link_array<Item>* stems_;
-
-
-  int count_;
-  Moment last_add_mom_;
-  /*
-    Projected ending of the  beam we're working on.
-   */
-  Moment extend_mom_;
-  Moment beam_start_moment_;
-  Moment beam_start_location_;
-
-  bool subdivide_beams_;
-  Moment beat_length_;
-  
-  // We act as if beam were created, and start a grouping anyway.
-  Beaming_info_list*grouping_;
-  SCM beam_settings_ ;		// ugh. should protect ? 
-  
-  Beaming_info_list*finished_grouping_;
-};
-
-void
-Auto_beam_engraver::process_music ()
-{
-  if (gh_string_p (get_property ("whichBar")))
-    {
-      consider_end (shortest_mom_);
-      junk_beam ();
-    }
-}
-
-
-Auto_beam_engraver::Auto_beam_engraver ()
-{
-  count_ = 0;
-  stems_ = 0;
-  shortest_mom_ = Moment (Rational (1, 8));
-  finished_beam_ = 0;
-  finished_grouping_ = 0;
-  grouping_ = 0;
-  beam_settings_ = SCM_EOL;  
-}
-
-/*
-  Determine end moment for auto beaming (or begin moment, but mostly
-  0==anywhere) In order of increasing priority:
-  
-  i.   begin anywhere, end at every beat
-  ii.  end   *    <num> <den>
-  iii. end <type> <num> <den>
-  
-  iv.  end   *      *     *
-  v.   end <type>   *     *
-  
-  
-  Rationale:
-  
-  [to be defined in config file]
-  i.   easy catch-all rule
-  ii.  exceptions for time signature
-  iii. exceptions for time signature, for specific duration type
-  
-  [user override]
-  iv.  generic override
-  v.   override for specific duration type
-  
-*/
-bool
-Auto_beam_engraver::test_moment (Direction dir, Moment test_mom)
-{
-  Moment now = now_mom();
-  if (dir == START
-      && now.grace_part_)
-    {
-      return false;
-    }
-  
-  SCM wild = scm_list_n (ly_symbol2scm ("*"), ly_symbol2scm ("*"), SCM_UNDEFINED);
-  SCM function;
-  if (dir == START)
-    function = scm_list_n (ly_symbol2scm ("begin"), SCM_UNDEFINED);
-  else
-    function = scm_list_n (ly_symbol2scm ("end"), SCM_UNDEFINED);
-
-  Moment one_beat = *unsmob_moment (get_property ("beatLength"));
-  int num = int ((*unsmob_moment (get_property ("measureLength")) / one_beat).main_part_);
-  int den = one_beat.den ();
-  SCM time = scm_list_n (scm_int2num (num), scm_int2num (den), SCM_UNDEFINED);
-
-  SCM type = scm_list_n (scm_int2num (test_mom.num ()),
-		      scm_int2num (test_mom.den ()), SCM_UNDEFINED);
-
-  SCM settings = get_property ("autoBeamSettings");
-  
-  /* first guess */
-  
-  /* begin beam at any position
- (and fallback for end) */
-  Moment moment (0);
-  
-  /* end beam at end of beat */
-  if (dir == STOP)
-    {
-      SCM beat (get_property ("beatLength"));
-      
-      if (unsmob_moment (beat))
-	moment = *unsmob_moment (beat);
-    }
-
-  /* second guess: property generic time exception */
-  SCM m = scm_assoc (gh_append3 (function, wild, time), settings);
-  
-  if (m != SCM_BOOL_F && unsmob_moment (ly_cdr (m)))
-    moment = * unsmob_moment (ly_cdr (m));
-
-  /* third guess: property time exception, specific for duration type */
-  m = scm_assoc (gh_append3 (function, type, time), settings);
-  if (m != SCM_BOOL_F && unsmob_moment (ly_cdr (m)))
-    moment = * unsmob_moment (ly_cdr (m));
-
-  /* fourth guess [user override]: property plain generic */
-  m = scm_assoc (gh_append3 (function, wild, wild), settings);
-  if (m != SCM_BOOL_F && unsmob_moment (ly_cdr (m)))
-    moment = * unsmob_moment (ly_cdr (m));
-
-  /* fifth guess [user override]: property plain, specific for duration type */
-  m = scm_assoc (gh_append3 (function, type, wild), settings);
-  if (m != SCM_BOOL_F && unsmob_moment (ly_cdr (m)))
-    moment = * unsmob_moment (ly_cdr (m));
-  
-  Rational r;
-  if (moment.to_bool ())
-    {
-      /* Ugh? measurePosition can be negative, when \partial
-	 We may have to fix this elsewhere (timing translator)
-	r = unsmob_moment (get_property ("measurePosition"))->mod_rat (moment);
-      */
-      Moment pos = * unsmob_moment (get_property ("measurePosition"));
-      if (pos < Moment (0))
-	{
-	  Moment length = * unsmob_moment (get_property ("measureLength"));
-	  pos = length - pos;
-	}
-      r = pos.main_part_.mod_rat (moment.main_part_);
-    }
-  else
-    {
-      if (dir == START)
-	/* if undefined, starting is ok */
-	r = 0;
-      else
-	/* but ending is not */
-	r = 1;
-    }
-
-  return !r;
-}
-
-void
-Auto_beam_engraver::consider_begin (Moment test_mom)
-{
-  bool on = to_boolean (get_property ("autoBeaming"));
-  if (!stems_ && on)
-    {
-      bool b = test_moment (START, test_mom);
-      if (b)
-	begin_beam ();
-    }
-}
-
-void
-Auto_beam_engraver::consider_end (Moment test_mom)
-{
-  if (stems_)
-    {
-      /* Allow already started autobeam to end:
-	 don't check for autoBeaming */
-      bool b = test_moment (STOP, test_mom);
-      if (b)
-	end_beam ();
-    }
-}
-
-Spanner*
-Auto_beam_engraver::create_beam ()
-{
-  if (to_boolean (get_property ("skipTypesetting")))
-    {
-     return 0;
-    }
-  
-  Spanner* beam = new Spanner (beam_settings_);
-  for (int i = 0; i < stems_->size (); i++)
-    {
-      /*
-	watch out for stem tremolos and abbreviation beams
-       */
-      if (Stem::get_beam ((*stems_)[i]))
-	{
-	  scm_gc_unprotect_object (beam->self_scm ());
-	  return 0;
-	}
-      Beam::add_stem (beam, (*stems_)[i]);
-    }
-  
-  announce_grob(beam, SCM_EOL);
-
-  return beam;
-}
-
-void
-Auto_beam_engraver::begin_beam ()
-{
-  if (stems_ || grouping_ )
-    {
-      programming_error ("already have autobeam");
-      return; 
-    }
-  
-  stems_ = new Link_array<Item>;
-  grouping_ = new Beaming_info_list;
-  beam_settings_ = get_property ("Beam");
-  
-  beam_start_moment_ = now_mom ();
-  beam_start_location_ = *unsmob_moment (get_property ("measurePosition"));
-  subdivide_beams_ = gh_scm2bool(get_property("subdivideBeams"));
-  beat_length_ = *unsmob_moment (get_property ("beatLength"));
-}
-
-void
-Auto_beam_engraver::junk_beam () 
-{
-  if (!stems_)
-    return ;
-  
-  delete stems_;
-  stems_ = 0;
-  delete grouping_;
-  grouping_ = 0;
-  beam_settings_ = SCM_EOL;
-  
-  shortest_mom_ = Moment (Rational (1, 8));
-}
-
-void
-Auto_beam_engraver::end_beam ()
-{
-  if (stems_->size () < 2)
-    {
-      junk_beam ();
-    }
-  else
-    {
-      finished_beam_ = create_beam ();
-      if (finished_beam_)
-	finished_grouping_ = grouping_;
-      delete stems_;
-      stems_ = 0;
-      grouping_ = 0;
-      beam_settings_ = SCM_EOL;
-    }
-
-  shortest_mom_ = Moment (Rational (1, 8));
-}
-
-void
-Auto_beam_engraver::typeset_beam ()
-{
-  if (finished_beam_)
-    {
-      finished_grouping_->beamify(beat_length_, subdivide_beams_);
-      Beam::set_beaming (finished_beam_, finished_grouping_);
-      typeset_grob (finished_beam_);
-      finished_beam_ = 0;
-    
-      delete finished_grouping_;
-      finished_grouping_= 0;
-    }
-}
-
-void
-Auto_beam_engraver::start_translation_timestep ()
-{
-  count_ = 0;
-  /*
-    don't beam over skips
-   */
-  if (stems_)
-    {
-      Moment now = now_mom ();
-      if (extend_mom_ < now)
-	{
-	  end_beam ();
-	}
-    }
-}
-
-void
-Auto_beam_engraver::stop_translation_timestep ()
-{
-  typeset_beam ();
-}
-
-void
-Auto_beam_engraver::finalize ()
-{
-  /* finished beams may be typeset */
-  typeset_beam ();
-  /* but unfinished may need another announce/acknowledge pass */
-  if (stems_)
-    junk_beam ();
-}
-
-
-void
-Auto_beam_engraver::acknowledge_grob (Grob_info info)
-{
-  if (stems_)
-    {
-      if (Beam::has_interface (info.grob_))
-	{
-	  end_beam ();
-	}
-      else if (Bar_line::has_interface (info.grob_))
-	{
-	  end_beam ();
-	}
-      else if (Rest::has_interface (info.grob_))
-	{
-	  end_beam ();
-	}
-    }
-  
-  if (Stem::has_interface (info.grob_))
-    {
-      Item* stem = dynamic_cast<Item *> (info.grob_);
-      Music* m = info.music_cause ();
-      if (!m->is_mus_type ("rhythmic-event"))
-	{
-	  programming_error ("Stem must have rhythmic structure");
-	  return;
-	}
-      
-      /*
-	Don't (start) auto-beam over empty stems; skips or rests
-	*/
-      if (!Stem::head_count (stem))
-	{
-	  if (stems_)
-	    end_beam ();
-	  return;
-	}
-
-      if (Stem::get_beam (stem))
-	{
-	  if (stems_)
-	    junk_beam ();
-	  return ;
-	}
-	      
-      int durlog  = unsmob_duration (m->get_mus_property ("duration"))->duration_log ();
-      
-      if (durlog <= 2)
-	{
-	  if (stems_)
-	    end_beam ();
-	  return;
-	}
-
-
-      /*
-	ignore grace notes.
-       */
-      if (bool (beam_start_location_.grace_part_) != bool (now_mom ().grace_part_))
-	return ;
-	
-      
-      Moment dur = unsmob_duration (m->get_mus_property ("duration"))->get_length ();
-      /* FIXME:
-
-	This comment has been here since long:
-
-	   if shortest duration would change
-	    consider ending and beginning beam first. 
-
-	but the code didn't match: */
-#if 1
-      consider_end (dur);
-      consider_begin (dur);
-
-      if (dur < shortest_mom_)
-	shortest_mom_ = dur;
-#else
-      /* I very much suspect that we wanted: */
-
-      consider_end (shortest_mom_);
-      if (dur < shortest_mom_)
-	{
-	  shortest_mom_ = dur;
-	  consider_end (shortest_mom_);
-	}
-      consider_begin (shortest_mom_);
-#endif
-
-      if (!stems_)
-	return;
-      
-      Moment now = now_mom ();
-      
-      grouping_->add_stem (now - beam_start_moment_ + beam_start_location_,
-			     durlog - 2);
-      stems_->push (stem);
-      last_add_mom_ = now;
-      extend_mom_ = (extend_mom_ >? now) + m->get_length ();
-    }
-}
-
-void
-Auto_beam_engraver::process_acknowledged_grobs ()
-{
-  if (!count_)
-    {
-      consider_end (shortest_mom_);
-      consider_begin (shortest_mom_);
-    }
-  else if (count_ > 1)
-    {
-      if (stems_)
-	{
-	  Moment now = now_mom ();
-	  if ((extend_mom_ < now)
-	      || ((extend_mom_ == now) && (last_add_mom_ != now)))
-	    {
-	      end_beam ();
-	    }
-	  else if (!stems_->size ())
-	    {
-	      junk_beam ();
-	    }
-	}    
-    }
-  
-  count_ ++;
-}
-
-ENTER_DESCRIPTION (Auto_beam_engraver,
-/* descr */       "Generate beams based on measure characteristics and observed "
-"Stems.  Uses beatLength, measureLength and measurePosition to decide "
-"when to start and stop a beam.  Overriding beaming is done through "
-"@ref{Stem_engraver} properties stemLeftBeamCount and "
-"stemRightBeamCount. "
-,
-/* creats*/       "Beam",
-/* accepts */     "",
-/* acks  */      "stem-interface rest-interface beam-interface bar-line-interface",
-/* reads */       "autoBeaming autoBeamSettings beatLength subdivideBeams",
-/* write */       "");
diff --git a/lily/auto-change-iterator.cc b/lily/auto-change-iterator.cc
deleted file mode 100644
index 30c7b69bbf..0000000000
--- a/lily/auto-change-iterator.cc
+++ /dev/null
@@ -1,127 +0,0 @@
-/*   
-  auto-change-iterator.cc -- implement  Auto_change_iterator
-
-  source file of the GNU LilyPond music typesetter
-  
-  (c) 1999--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-  
- */
-
-#include "music.hh"
-#include "translator-group.hh"
-#include "event.hh"
-#include "music-wrapper-iterator.hh"
-#include "direction.hh"
-
-class Auto_change_iterator : public Music_wrapper_iterator
-{
-public:
-  DECLARE_SCHEME_CALLBACK(constructor, ());
-  
-  Auto_change_iterator ();
-
-protected:
-  virtual void construct_children ();
-  virtual void process (Moment);  
-  Array<Pitch> pending_pitch (Moment)const;
-private:
-  SCM split_list_;
-  Direction where_dir_;
-  void change_to (Music_iterator* , SCM, String);
-};
-
-
-
-void
-Auto_change_iterator::change_to (Music_iterator *it, SCM to_type_sym,
-				 String to_id)
-{
-  Translator_group * current = it->get_outlet ();
-  Translator_group * last = 0;
-
-  /*
-    Cut & Paste from Change_iterator (ugh).
-
-    TODO: abstract this function 
-   */
-  
-  /* find the type  of translator that we're changing.
-     
-     If \translator Staff = bass, then look for Staff = *
-   */
-  while (current && !current->is_alias (to_type_sym))
-    {
-      last = current;
-      current = current->daddy_trans_;
-    }
-
-  if (current && current->id_string_ == to_id)
-    {
-      String msg;
-      msg += _ ("Can't switch translators, I'm there already");
-    }
-  
-  if (current) 
-    if (last)
-      {
-	Translator_group * dest = 
-	  it->get_outlet ()->find_create_translator (to_type_sym, to_id, SCM_EOL);
-	current->remove_translator (last);
-	dest->add_used_group_translator (last);
-      }
-    else
-      {
-	/*
-	  We could change the current translator's id, but that would make 
-	  errors hard to catch
-	  
-	*/
-      }
-  else
-    ;
-
-}
-
-void
-Auto_change_iterator::process (Moment m)
-{
-  Music_wrapper_iterator::process (m);
-
-  
-  Moment now = get_outlet ()->now_mom ();
-  Moment *splitm = 0;
-  
-  for (; gh_pair_p (split_list_); split_list_ = gh_cdr (split_list_))
-    {
-      splitm = unsmob_moment (gh_caar (split_list_));
-      if (*splitm > now)
-	break ;
-
-      SCM tag = gh_cdar (split_list_);
-      Direction d = to_dir  (tag);
-      
-      if (d && d != where_dir_)
-	{
-	  where_dir_ = d;
-	  String to_id = (d >= 0) ?  "up" : "down";
-	  change_to (child_iter_,
-		     ly_symbol2scm ("Staff"),
-		     to_id);
-	}
-    }
-}
-
-Auto_change_iterator::Auto_change_iterator ()
-{
-  where_dir_ = CENTER;
-  split_list_ = SCM_EOL;
-}
-
-void
-Auto_change_iterator::construct_children ()
-{
-  Music_wrapper_iterator::construct_children ();
-  split_list_ =  get_music ()->get_mus_property ("split-list");
-}
-
-IMPLEMENT_CTOR_CALLBACK (Auto_change_iterator);
diff --git a/lily/axis-group-engraver.cc b/lily/axis-group-engraver.cc
deleted file mode 100644
index a825805d78..0000000000
--- a/lily/axis-group-engraver.cc
+++ /dev/null
@@ -1,209 +0,0 @@
-/*   
-  axis-group-engraver.cc --  implement Axis_group_engraver
-  
-  source file of the GNU LilyPond music typesetter
-  
-  (c) 1999--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
- */
-
-#include "spanner.hh"
-#include "paper-column.hh"
-#include "axis-group-interface.hh"
-#include "engraver.hh"
-#include "engraver-group-engraver.hh"
-#include "warn.hh"
-
-/**
-   Put stuff in a Spanner with an Axis_group_interface.
-   Use as last element of a context. 
- */
-class Axis_group_engraver : public Engraver
-{
-protected:
-  Spanner *staffline_;
-  Link_array<Grob> elts_;
-  virtual void process_music ();
-  virtual void finalize ();
-  virtual void acknowledge_grob (Grob_info);
-  virtual void process_acknowledged_grobs ();
-  virtual Spanner* get_spanner () ;
-  virtual void add_element (Grob*) ;
-public:  
-  TRANSLATOR_DECLARATIONS(Axis_group_engraver);
-};
-
-Axis_group_engraver::Axis_group_engraver ()
-{
-  staffline_ = 0;
-}
-
-void
-Axis_group_engraver::process_music ()
-{
-  if (!staffline_)
-    {
-      staffline_ = get_spanner ();
-
-      Grob *  it = unsmob_grob (get_property ("currentCommandColumn"));
-
-      staffline_->set_bound (LEFT,it);
-
-      announce_grob(staffline_, SCM_EOL);
-    }
-} 
-
-Spanner*
-Axis_group_engraver::get_spanner () 
-{
-  return make_spanner ("VerticalAxisGroup");
-}
-
-/*
-  TODO: should we junk minimumVerticalExtent/extraVerticalExtent ?  
- */
-
-void
-Axis_group_engraver::finalize ()
-{
-  if (!staffline_)
-    return ;
-  
-  String type = get_daddy_grav ()->context_name ();
-  SCM dims = get_property ("verticalExtent");
-  
-  if (gh_pair_p (dims) && gh_number_p (ly_car (dims))
-      && gh_number_p (ly_cdr (dims)))
-    {
-      staffline_->set_extent (Grob::preset_extent_proc, Y_AXIS);
-      staffline_->set_grob_property ("Y-extent", dims);
-    }
-
-  dims = get_property ("minimumVerticalExtent");
-  if (gh_pair_p (dims) && gh_number_p (ly_car (dims))
-      && gh_number_p (ly_cdr (dims)))
-    staffline_->set_grob_property ("minimum-Y-extent", dims);
-
-  dims = get_property ("extraVerticalExtent");
-  if (gh_pair_p (dims) && gh_number_p (ly_car (dims))
-      && gh_number_p (ly_cdr (dims)))
-    staffline_->set_grob_property ("extra-Y-extent", dims);
-
-  Grob *  it = unsmob_grob (get_property ("currentCommandColumn"));
-
-
-  staffline_->set_bound (RIGHT,it);
-
-  typeset_grob (staffline_);
-  staffline_ = 0;
-}
-
-void
-Axis_group_engraver::acknowledge_grob (Grob_info i)
-{
-  elts_.push (i.grob_);
-}
-
-/*
-  maybe should check if our parent is set, because we now get a
-  cyclic parent relationship if we have two Axis_group_engravers in
-  the context.  */
-void
-Axis_group_engraver::process_acknowledged_grobs ()
-{
-  /* UGH UGH UGH */
-  for (int i=0; i < elts_.size (); i++)
-    {
-      Grob *par = elts_[i]->get_parent (Y_AXIS);
-
-      if (!par || !Axis_group_interface::has_interface (par))
-	if (elts_[i]->is_empty (Y_AXIS))
-	  {
-	    /*
-	      We have to do _something_, otherwise staff objects will
-	      end up with System as parent.  
-	      
-	     */
-	    elts_[i]->set_parent (staffline_, Y_AXIS);
-	  }
-	else
-	  add_element (elts_[i]);
-    }
-  elts_.clear ();
-}
-
-void
-Axis_group_engraver::add_element (Grob*e)
-{
-  Axis_group_interface::add_element (staffline_, e);
-}
-
-/****************************************************************/
-
-/*
-  
- maybenot such a good idea after all., to put class declarations in
- .cc
- 
-*/
-
-#include "hara-kiri-group-spanner.hh"
-#include "rhythmic-head.hh"
-
-class Hara_kiri_engraver : public Axis_group_engraver
-{
-protected:
-  virtual Spanner*get_spanner ();
-  virtual void acknowledge_grob (Grob_info);
-  virtual void add_element (Grob *e);
-public:
-  TRANSLATOR_DECLARATIONS(Hara_kiri_engraver);
-};
-
-void
-Hara_kiri_engraver::add_element (Grob*e)
-{
-  Hara_kiri_group_spanner::add_element (staffline_, e);
-}
-
-
-Spanner*
-Hara_kiri_engraver::get_spanner () 
-{
-  Spanner * sp = make_spanner ("RemoveEmptyVerticalGroup");
-  
-  return sp;
-}
-
-void
-Hara_kiri_engraver::acknowledge_grob (Grob_info i)
-{
-  Axis_group_engraver::acknowledge_grob (i);
-  if (i.grob_->internal_has_interface (ly_symbol2scm ("rhythmic-grob-interface"))
-      || i.grob_->internal_has_interface (ly_symbol2scm ("lyric-interface"))
-      )
-    {
-      Hara_kiri_group_spanner::add_interesting_item (staffline_, i.grob_);
-    }
-}
-
-
-Hara_kiri_engraver::Hara_kiri_engraver()
-{
-}
-
-ENTER_DESCRIPTION(Hara_kiri_engraver,
-/* descr */       "Like Axis_group_engraver, but make a hara kiri spanner, and add "
-"interesting items (ie. note heads, lyric syllables and normal rests) ",
-/* creats*/       "RemoveEmptyVerticalGroup",
-/* accepts */     "",
-/* acks  */      "grob-interface",
-/* reads */       "",
-/* write */       "");
-
-ENTER_DESCRIPTION(Axis_group_engraver,
-/* descr */       "Group all objects created in this context in a VerticalAxisGroup spanner.",
-/* creats*/       "VerticalAxisGroup",
-/* accepts */     "",
-/* acks  */      "grob-interface",
-/* reads */       "verticalExtent minimumVerticalExtent extraVerticalExtent",
-/* write */       "");
diff --git a/lily/axis-group-interface.cc b/lily/axis-group-interface.cc
deleted file mode 100644
index b7ac5e3aac..0000000000
--- a/lily/axis-group-interface.cc
+++ /dev/null
@@ -1,125 +0,0 @@
-/*   
-  axis-group-interface.cc --  implement Axis_group_interface
-  
-  source file of the GNU LilyPond music typesetter
-  
-  (c) 2000--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-  
- */
-#include "hara-kiri-group-spanner.hh"
-#include "axis-group-interface.hh"
-#include "grob.hh"
-
-void
-Axis_group_interface::add_element (Grob*me,Grob *e)
-{
-  for (SCM ax = me->get_grob_property ("axes"); ax != SCM_EOL ; ax = ly_cdr (ax))
-    {
-      Axis a = (Axis) gh_scm2int (ly_car (ax));
-      
-      if (!e->get_parent (a))
-	e->set_parent (me, a);
-    }
-
-  Pointer_group_interface::add_grob (me, ly_symbol2scm ("elements"), e);
-  me->add_dependency (e);
-}
-
-bool
-Axis_group_interface::axis_b (Grob*me,Axis a)
-{
-  /*
-    urg. FIXME, check for Hara_kiri_group_spanner shouldn't be necessary?
-
-    
-   */
-  return me->has_extent_callback_b (group_extent_callback_proc, a) ||
- (me->has_extent_callback_b (Hara_kiri_group_spanner::y_extent_proc, a));
-}
-
-Interval
-Axis_group_interface::relative_group_extent (Axis a, Grob *common, SCM elts)
-{
-  Interval r;
-  for (SCM s = elts; gh_pair_p (s); s = ly_cdr (s))
-    {
-      Grob * se = unsmob_grob (ly_car (s));
-      Interval dims = se->extent (common, a);
-      if (!dims.is_empty ())
-	r.unite (dims);
-    }
-  return r;
-}
-
-MAKE_SCHEME_CALLBACK (Axis_group_interface,group_extent_callback,2);
-SCM
-Axis_group_interface::group_extent_callback (SCM element_smob, SCM scm_axis)
-{
-  Grob *me = unsmob_grob (element_smob);
-  Axis a = (Axis) gh_scm2int (scm_axis);
-
-  SCM elts = me->get_grob_property ("elements");
-  Grob * common = common_refpoint_of_list (elts, me, a);
-
-  Real my_coord = me->relative_coordinate (common, a);
-  Interval r (relative_group_extent (a, common,elts));
-
-  return ly_interval2scm (r - my_coord);
-}
-
-void
-Axis_group_interface::set_axes (Grob*me,Axis a1, Axis a2)
-{
-  SCM sa1= scm_int2num (a1);
-  SCM sa2 = scm_int2num (a2);
-
-  SCM axes = me->get_grob_property ("axes");
-  
-  if (!gh_pair_p (axes)
-      || scm_memq (sa1, axes) == SCM_BOOL_F
-      || scm_memq (sa2, axes) == SCM_BOOL_F)
-    {
-      SCM ax = gh_cons (sa1, SCM_EOL);
-      if (a1 != a2)
-	ax= gh_cons (sa2, ax);
-      me->set_grob_property ("axes", ax);
-    }
-
-  if (a1 != X_AXIS && a2 != X_AXIS)
-    me->set_extent (SCM_EOL, X_AXIS);
-  if (a1 != Y_AXIS && a2 != Y_AXIS)
-    me->set_extent (SCM_EOL, Y_AXIS);
-
-  /*
-    why so convoluted ? (fixme/documentme?) 
-   */
-  if (me->has_extent_callback_b (Grob::molecule_extent_proc, a1))
-    me->set_extent (Axis_group_interface::group_extent_callback_proc,a1);
-  if (me->has_extent_callback_b (Grob::molecule_extent_proc, a2))
-    me->set_extent (Axis_group_interface::group_extent_callback_proc,a2);
-}
-
-Link_array<Grob> 
-Axis_group_interface::get_children (Grob*me)
-{
-  Link_array<Grob> childs;
-  childs.push (me) ;
-
-  if (!has_interface (me))
-    return childs;
-  
-  for (SCM ep = me->get_grob_property ("elements"); gh_pair_p (ep); ep = ly_cdr (ep))
-    {
-      Grob* e = unsmob_grob (ly_car (ep));
-      if (e)
-	childs.concat (Axis_group_interface::get_children (e));
-    }
-  
-  return childs;
-}
-
-
-
-ADD_INTERFACE (Axis_group_interface, "axis-group-interface",
-  "a group of coupled grobs",
-  "axes");
diff --git a/lily/balloon.cc b/lily/balloon.cc
deleted file mode 100644
index 9bb11b2017..0000000000
--- a/lily/balloon.cc
+++ /dev/null
@@ -1,94 +0,0 @@
-/*
-  balloon.cc -- implement Balloon objects
- */
-
-#include "text-item.hh"
-#include "grob.hh"
-#include "line-interface.hh"
-#include "lookup.hh"
-#include "font-interface.hh"
-#include "molecule.hh"
-#include "lily-guile.hh"
-#include "paper-def.hh"
-#include "misc.hh"
-
-struct Balloon_interface
-{
-  
-public:
-  DECLARE_SCHEME_CALLBACK (print, (SCM));
-  static bool has_interface (Grob*);
-};
-
-MAKE_SCHEME_CALLBACK (Balloon_interface, print, 1);
-SCM
-Balloon_interface::print (SCM smob) 
-{
-  Grob *me= unsmob_grob (smob);
-
-  SCM cb = me->get_grob_property ("balloon-original-callback");
-  SCM scm_mol  =  SCM_EOL;
-
-  if (gh_procedure_p (cb))
-    {
-      scm_mol = scm_call_1 (cb, smob);
-    }
-
-  if (!unsmob_molecule (scm_mol))
-    return scm_mol;
-
-  SCM scm_off = me->get_grob_property ("balloon-text-offset");
-
-  if (!is_number_pair (scm_off))
-    return scm_mol;
-
-  Offset off = ly_scm2offset (scm_off);
-  Molecule * m = unsmob_molecule (scm_mol);
-  Box orig_extent = m->extent_box ();
-  Box box_extent = orig_extent;
-
-  Real w = robust_scm2double (me->get_grob_property ("balloon-padding"),  .1);
-  box_extent.widen (w, w);
-  
-  
-  Molecule fr = Lookup::frame (box_extent, 0.1, 0.05);
-
-  
-  fr.add_molecule (*m);
-
-
-
-  SCM bt = me->get_grob_property ("balloon-text");
-  SCM chain = Font_interface::font_alist_chain (me);
-  chain = gh_cons (me->get_grob_property ("balloon-text-props"), chain);
-
-
-  SCM text = Text_item::interpret_markup (me->get_paper ()->self_scm (), chain, bt);
-
-  
-  Molecule *text_mol = unsmob_molecule (text);
-  
-  Offset z1;
-
-  for (int i = X_AXIS; i < NO_AXES; i++)
-    {
-      Axis  a((Axis)i);
-      z1[a] = box_extent [a].linear_combination (sign (off[a]));
-      text_mol->align_to (a, -sign (off[a]));
-    }
-
-  Offset z2 = z1 + off;
-  
-  fr.add_molecule (Line_interface::line (me, z1, z2));
-
-  text_mol->translate (z2);
-  fr.add_molecule (*text_mol);
-  
-  fr = Molecule (orig_extent, fr.get_expr ());
-  return fr.smobbed_copy ();
-}
-
-ADD_INTERFACE (Balloon_interface,"text-balloon-interface",
-	       "comic books.",
-	       "balloon-padding balloon-text-props balloon-text-offset balloon-text balloon-original-callback");
-
diff --git a/lily/bar-check-iterator.cc b/lily/bar-check-iterator.cc
deleted file mode 100644
index dc3e27feac..0000000000
--- a/lily/bar-check-iterator.cc
+++ /dev/null
@@ -1,72 +0,0 @@
-/*   
-
-     bar-check-iterator.cc -- implement Bar_check_iterator
-
-     source file of the GNU LilyPond music typesetter
-
-     (c) 2001--2004  Han-Wen Nienhuys <hanwen@cs.uu.nl>
-
- */
-
-#include "simple-music-iterator.hh"
-#include "event.hh"
-#include "translator-group.hh"
-
-/*
-  Check bar checks. We do this outside the engravers so that you can
-  race through the score using skipTypesetting to correct durations.
- */
-class Bar_check_iterator : Simple_music_iterator
-{
-public:
-  virtual void process (Moment);
-  Bar_check_iterator( );
-  DECLARE_SCHEME_CALLBACK(constructor, ());
-};
-
-IMPLEMENT_CTOR_CALLBACK(Bar_check_iterator);
-
-Bar_check_iterator::Bar_check_iterator()
-{
-}
-
-void
-Bar_check_iterator::process (Moment m)
-{
-  Simple_music_iterator::process(m);
-  if (!m.to_bool ())
-    {
-      Translator_group *tr = get_outlet ();
-
-      SCM mp = tr->get_property ("measurePosition");
-      SCM sync= tr->get_property ("barCheckSynchronize");
-
-      Moment * where =unsmob_moment (mp);
-      if (!where)
-	return;
-      
-      if (where->main_part_)
-	{
-	  bool warn =true;
-	  if (to_boolean (sync))
-	    {
-	      tr = tr->where_defined (ly_symbol2scm("measurePosition"));
-	      Moment zero;
-	      tr->set_property ("measurePosition", zero.smobbed_copy ());
-	    }
-	  else
-	    {
-	      SCM lf = tr->get_property ("barCheckLastFail");
-	      if (unsmob_moment (lf)
-		  && *unsmob_moment (lf) == *where)
-		warn = false;
-	      else
-		tr->set_property ("barCheckLastFail", mp);
-	    }
-
-	  if (warn)
-	    get_music ()->origin ()->warning (_f ("barcheck failed at: %s", 
-					      where->to_string ()));
-	}
-    }
-}    
diff --git a/lily/bar-engraver.cc b/lily/bar-engraver.cc
deleted file mode 100644
index f3b94b2532..0000000000
--- a/lily/bar-engraver.cc
+++ /dev/null
@@ -1,118 +0,0 @@
-/*
-  bar-engraver.cc -- implement Bar_engraver
-
-  source file of the GNU LilyPond music typesetter
-
-  (c) 1997--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-  Jan Nieuwenhuizen <janneke@gnu.org>
-*/
-
-#include "bar-line.hh"
-#include "score-engraver.hh"
-#include "event.hh"
-#include "engraver-group-engraver.hh"
-#include "warn.hh"
-#include "item.hh"
-#include "engraver.hh"
-
-/*
-  generate bars. Either user ("|:"), or default (new measure)
-
-  */
-class Bar_engraver : public Engraver
-{
-public:
-  TRANSLATOR_DECLARATIONS(  Bar_engraver );
-  void request_bar (String type_string);
-    
-protected:
-  virtual void finalize ();
-  virtual void stop_translation_timestep ();
-  virtual void process_acknowledged_grobs ();
-
-private:
-  void typeset_bar ();
-  void create_bar ();
-
-  Item * bar_;
-};
-
-Bar_engraver::Bar_engraver ()
-{
-  bar_ =0;
-}
-
-void
-Bar_engraver::create_bar ()
-{
-  if (!bar_)
-    {
-      bar_ = make_item ("BarLine");
-      SCM gl = get_property ("whichBar");
-      if (scm_equal_p (gl, bar_->get_grob_property ("glyph")) != SCM_BOOL_T)
-	  bar_->set_grob_property ("glyph", gl);
-      
-      announce_grob(bar_, SCM_EOL);
-    }
-}
-
-void
-Bar_engraver::finalize ()
-{
-  typeset_bar ();
-}
-
-/*
-  Bar_engraver should come *after* any engravers that  
-  modify whichBar
-
-  This is a little hairy : whichBar may be set by
-  Repeat_acknowledge_engraver::process_music, which is at score
-  context. This means that grobs could should be created after
-  process_music. We do stuff process_acknowledged_grobs(), just to be
-  on the safe side.
-     
-*/
-
-void
-Bar_engraver::process_acknowledged_grobs ()
-{
-  if (!bar_ && gh_string_p (get_property ("whichBar")))
-    {
-      create_bar ();
-    }
-}
-
-void
-Bar_engraver::typeset_bar ()
-{
-  if (bar_) 
-    {
-      typeset_grob (bar_);
-      bar_ =0;
-    }
-}
-
-/*
-  lines may only be broken if there is a barline in all staves 
-*/
-void 
-Bar_engraver::stop_translation_timestep ()
-{
-  if (!bar_)
-    {
-      top_engraver ()->forbid_breaks ();	// guh. Use properties!
-    }
-  else
-    typeset_bar ();
-}
-
-
-ENTER_DESCRIPTION(Bar_engraver,
-/* descr */       "Create barlines. This engraver is controlled through the "
-"@code{whichBar} property. If it has no bar line to create, it will forbid a linebreak at this point",
-/* creats*/       "BarLine",
-/* accepts */     "",
-/* acks  */      "",
-/* reads */       "whichBar",
-/* write */       "");
diff --git a/lily/bar-line.cc b/lily/bar-line.cc
deleted file mode 100644
index 6bf140efec..0000000000
--- a/lily/bar-line.cc
+++ /dev/null
@@ -1,221 +0,0 @@
-/*
-  bar.cc -- implement Bar
-
-  source file of the GNU LilyPond music typesetter
-
-  (c) 1997--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-*/
-
-#include <math.h>
-
-#include "lookup.hh"
-#include "paper-column.hh"
-#include "grob.hh"
-#include "bar-line.hh"
-#include "string.hh"
-#include "molecule.hh"
-#include "paper-def.hh"
-#include "font-interface.hh"
-
-#include "all-font-metrics.hh"
-#include "item.hh"
-#include "staff-symbol-referencer.hh"
-
-MAKE_SCHEME_CALLBACK (Bar_line,print,1);
-
-SCM 
-Bar_line::print (SCM smob) 
-{
-  Grob * me = unsmob_grob (smob);
-
-  SCM s = me->get_grob_property ("glyph");
-  SCM barsiz_proc = me->get_grob_property ("bar-size-procedure");
-  if (gh_string_p (s) && gh_procedure_p (barsiz_proc))
-    {
-      String str  =ly_scm2string (s);
-      SCM siz = gh_call1 (barsiz_proc, me->self_scm ());
-      Real sz = robust_scm2double (siz, 0);
-      if (sz < 0)
-	return SCM_EOL;
-      
-      return compound_barline (me, str, sz).smobbed_copy ();
-    }
-  return SCM_EOL;
-}
-
-
-Molecule
-Bar_line::compound_barline (Grob*me, String str, Real h)
-{
-  Real kern = robust_scm2double (me->get_grob_property ("kern"), 1);
-  Real thinkern = robust_scm2double (me->get_grob_property ("thin-kern"), 1);
-  Real hair = robust_scm2double (me->get_grob_property ("hair-thickness"), 1);
-  Real fatline = robust_scm2double (me->get_grob_property ("thick-thickness"), 1);
-
-  Real staffline = me->get_paper ()->get_realvar (ly_symbol2scm ("linethickness"));
-  Real staff_space = Staff_symbol_referencer::staff_space (me);
-
-  kern *= staffline;
-  thinkern *= staffline;
-  hair *= staffline;
-  fatline *= staffline;
-  
-  Molecule thin = simple_barline (me, hair, h);
-  Molecule thick = simple_barline (me, fatline, h);
-  Molecule dot = Font_interface::get_default_font (me)->find_by_name ("dots-dot");
-  Real dist = ( Staff_symbol_referencer::line_count (me) & 1 ? 1 :
-		(staff_space<2 ? 2 : .5) ) * staff_space;
-  Molecule colon (dot);
-  colon.translate_axis(dist,Y_AXIS);
-  colon.add_molecule(dot);
-  colon.translate_axis(-dist/2,Y_AXIS);
-
-  Molecule m;
-  
-  if (str == "")
-    {
-      return Lookup::blank (Box (Interval (0, 0), Interval (-h/2, h/2)));
-    }
-  else if (str == "|")
-    {
-      return thin;
-    }
-  else if (str == "|." || (h == 0 && str == ":|"))
-    {
-      m.add_at_edge (X_AXIS, LEFT, thick, 0, 0);      
-      m.add_at_edge (X_AXIS, LEFT, thin, kern,0 );
-    }
-  else if (str == ".|" || (h == 0 && str == "|:"))
-    {
-      m.add_at_edge (X_AXIS, RIGHT, thick, 0, 0);
-      m.add_at_edge (X_AXIS, RIGHT, thin, kern, 0);
-    }
-  else if (str == ":|")
-    {
-      m.add_at_edge (X_AXIS, LEFT, thick, 0, 0);
-      m.add_at_edge (X_AXIS, LEFT, thin, kern, 0);
-      m.add_at_edge (X_AXIS, LEFT, colon, kern, 0);      
-    }
-  else if (str == "|:")
-    {
-      m.add_at_edge (X_AXIS, RIGHT, thick, 0, 0);
-      m.add_at_edge (X_AXIS, RIGHT, thin, kern, 0);
-      m.add_at_edge (X_AXIS, RIGHT, colon, kern, 0);      
-    }
-  else if (str == ":|:")
-    {
-      m.add_at_edge (X_AXIS, LEFT, thick, thinkern, 0);
-      m.add_at_edge (X_AXIS, LEFT, colon, kern, 0);
-      m.add_at_edge (X_AXIS, RIGHT, thick, kern, 0);
-      m.add_at_edge (X_AXIS, RIGHT, colon, kern, 0);      
-    }
-  else if (str == ".|.")
-    {
-      m.add_at_edge (X_AXIS, LEFT, thick, thinkern, 0);
-      m.add_at_edge (X_AXIS, RIGHT, thick, kern, 0);
-    }
-  else if (str == "||")
-    {
-      /*
-	should align to other side? this never appears
-	on the system-start?
-      */
-      m.add_at_edge (X_AXIS, RIGHT, thin, 0, 0);
-      m.add_at_edge (X_AXIS, RIGHT, thin, thinkern, 0);
-    }
-  else if (str == ":")
-    {
-      int c = (Staff_symbol_referencer::line_count (me));
-      
-      for (int i = 0 ; i < c - 1; i++)
-	{
-	  Real y = (- (c-1.0) / 2 + 0.5  +   i * staff_space);
-	  Molecule d (dot);
-
-	  d. translate_axis (y,Y_AXIS);
-	  m.add_molecule (d);
-	}
-    }
-  return m;
-}
-
-Molecule
-Bar_line::simple_barline (Grob *me,Real w, Real h) 
-{
-  Real blot = me->get_paper ()->get_realvar (ly_symbol2scm ("blotdiameter"));
-  return Lookup::round_filled_box (Box (Interval (0,w), Interval (-h/2, h/2)), blot);
-}
-
-MAKE_SCHEME_CALLBACK (Bar_line,before_line_breaking ,1);
-
-SCM
-Bar_line::before_line_breaking (SCM smob)
-{
-  Grob*me=unsmob_grob (smob);
-  Item * item = dynamic_cast<Item*> (me);
-  
-  SCM g = me->get_grob_property ("glyph");
-  SCM orig = g;
-  Direction bsd = item->break_status_dir ();
-  if (gh_string_p (g) && bsd)
-    {
-      SCM proc = me->get_grob_property ("break-glyph-function");
-      g = gh_call2 (proc, g, scm_int2num (bsd));
-    }
-  
-  if (!gh_string_p (g))
-    {
-      me->set_grob_property ("print-function", SCM_EOL);
-      me->set_extent (SCM_EOL, X_AXIS);
-      // leave y_extent for spanbar? 
-    }
-
-  if (! gh_equal_p (g, orig))
-    me->set_grob_property ("glyph", g);
-
-  return SCM_UNSPECIFIED;
-}
-  
-
-
-
-MAKE_SCHEME_CALLBACK (Bar_line,get_staff_bar_size,1);
-SCM
-Bar_line::get_staff_bar_size (SCM smob) 
-{
-  Grob*me = unsmob_grob (smob);
-  Real ss = Staff_symbol_referencer::staff_space (me);
-  SCM size = me->get_grob_property ("bar-size");
-  if (gh_number_p (size))
-    return gh_double2scm (gh_scm2double (size)*ss);
-  else if (Staff_symbol_referencer::get_staff_symbol (me))
-    {
-      /*
-	If there is no staff-symbol, we get -1 from the next
-	calculation. That's a nonsense value, which would collapse the
-	barline so we return 0.0 in the next alternative.
-      */
-      return gh_double2scm ((Staff_symbol_referencer::line_count (me) -1) * ss);
-    }
-  else
-    return scm_int2num (0);
-}
-
-
-
-ADD_INTERFACE (Bar_line, "bar-line-interface",
-  "Bar line.\n"
-"\n"
-"Print a special bar symbol. It replaces the \n"
-"regular bar symbol with a special\n"
-"symbol.  The argument @var{bartype} is a string which specifies the\n"
-"kind of bar to print.  Options are @code{:|},\n"
-"@code{|:}, @code{:|:},\n"
-"@code{||}, @code{|.},\n"
-"@code{.|}, and @code{.|.}. \n"
-"\n"
-"These produce, respectively, a right repeat, a left repeat, a double\n"
-"repeat, a double bar, a start bar, an end bar, and a thick double bar.\n"
-"If @var{bartype} is set to @code{empty} then nothing is printed,\n"
-"but a line break is allowed at that spot.\n",
-  "bar-size-procedure kern thin-kern hair-thickness thick-thickness glyph bar-size break-glyph-function");
diff --git a/lily/bar-number-engraver.cc b/lily/bar-number-engraver.cc
deleted file mode 100644
index bfdba32328..0000000000
--- a/lily/bar-number-engraver.cc
+++ /dev/null
@@ -1,124 +0,0 @@
-/*
-  bar-number-engraver.cc -- implement Bar_number_engraver
-
-  source file of the GNU LilyPond music typesetter
-
-  (c) 1997--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-*/
-
-
-#include "lily-guile.hh"
-#include "paper-column.hh"
-#include "paper-def.hh"
-#include "side-position-interface.hh"
-#include "item.hh"
-#include "moment.hh"
-#include "engraver.hh"
-#include "translator-group.hh"
-
-/*
-  
-TODO: detect the top staff (stavesFound), and acknowledge staff-group
-system-start-delims. If we find these, and the top staff is in the
-staff-group, add padding to the bar number.
-
-*/
-
-
-class Bar_number_engraver : public Engraver
-{
-protected:
-  Item* text_;
-protected:
-  virtual void stop_translation_timestep ();
-  virtual void acknowledge_grob (Grob_info);
-  virtual void process_music ();
-  void create_items ();
-  TRANSLATOR_DECLARATIONS(Bar_number_engraver );
-};
-
-
-void
-Bar_number_engraver::process_music ()
-{
-  // todo include (&&!time->cadenza_b_)
-
-  SCM wb = get_property ("whichBar");
-  
-  if (gh_string_p (wb))
-    {
-      SCM smp = get_property ("measurePosition");
-      
-      Moment mp = (unsmob_moment (smp)) ? *unsmob_moment (smp) : Moment (0);
-      if (mp.main_part_ == Rational (0))
-	{
-	  SCM bn = get_property ("currentBarNumber");
-	  SCM proc = get_property ("barNumberVisibility");
-	  if (gh_number_p (bn) && gh_procedure_p (proc)
-	      && to_boolean(gh_call1(proc, bn)))
-	    {
-	      create_items ();
-	      // guh.
-	      text_->set_grob_property
-		("text", scm_makfrom0str (to_string (gh_scm2int (bn)).to_str0 ()));
-	    }
-	}
-    }
-
-}
-
-
-
-Bar_number_engraver::Bar_number_engraver ()
-{
-  text_ =0;
-}
-
-					       
-void
-Bar_number_engraver::acknowledge_grob (Grob_info inf)
-{
-  Grob * s = inf.grob_;
-  if (text_
-      && dynamic_cast<Item*> (s)
-      && s->get_grob_property ("break-align-symbol") == ly_symbol2scm ("left-edge"))
-    {
-      /*
-	By default this would land on the Paper_column -- so why
-	doesn't it work when you leave this out?  */
-      text_->set_parent (s, X_AXIS);
-    }
-}
-
-void 
-Bar_number_engraver::stop_translation_timestep ()
-{
-  if (text_)
-    {
-      text_->set_grob_property ("side-support-elements", get_property ("stavesFound"));
-      typeset_grob (text_);
-      text_ =0;
-    }
-}
-
-
-void
-Bar_number_engraver::create_items ()
-{
-  if (text_)
-    return;
-
-  text_ = make_item ("BarNumber");
-  Side_position_interface::set_axis (text_,Y_AXIS);
-
-  announce_grob(text_, SCM_EOL);
-}
-
-ENTER_DESCRIPTION(Bar_number_engraver,
-/* descr */       "A bar number is created whenever measurePosition is zero. It is\n"
-"put on top of all staves, and appears only at  left side of the staff.",
-/* creats*/       "BarNumber",
-/* accepts */     "",
-/* acks  */      "break-aligned-interface",
-/* reads */       "currentBarNumber stavesFound barNumberVisibility" ,
-/* write */       "");
diff --git a/lily/beam-engraver.cc b/lily/beam-engraver.cc
deleted file mode 100644
index 868ddcbfc9..0000000000
--- a/lily/beam-engraver.cc
+++ /dev/null
@@ -1,332 +0,0 @@
-/*   
-  beam-engraver.cc --  implement Beam_engraver
-  
-  source file of the GNU LilyPond music typesetter
-  
-  (c) 1998--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-  
- */
-#include "engraver-group-engraver.hh"
-#include "engraver.hh"
-#include "event.hh"
-#include "beam.hh"
-#include "stem.hh"
-#include "warn.hh"
-#include "beaming.hh"
-#include "score-engraver.hh"
-#include "rest.hh"
-#include "drul-array.hh"
-#include "item.hh"
-#include "spanner.hh"
-
-class Beam_engraver : public Engraver
-{
-protected:  
-  Music * start_ev_;
-  
-  Spanner *finished_beam_;
-  Spanner *beam_;
-  Music * prev_start_ev_;
-
-  Music * now_stop_ev_;
-  
-  Beaming_info_list * beam_info_;
-  Beaming_info_list * finished_beam_info_;  
-
-  /// location  within measure where beam started.
-  Moment beam_start_location_;
-
-  /// moment (global time) where beam started.
-  Moment beam_start_mom_;
-
-  bool subdivide_beams_;
-  Moment beat_length_;
-
-  void typeset_beam ();
-  void set_melisma (bool);
-
-  Moment last_stem_added_at_;
-    virtual void stop_translation_timestep ();
-  virtual void start_translation_timestep ();
-  virtual void finalize ();
-
-  virtual void acknowledge_grob (Grob_info);
-  virtual bool try_music (Music*);
-  virtual void process_music ();
-
-  virtual bool valid_start_point();
-  virtual bool valid_end_point ();
-  
-public:
-  TRANSLATOR_DECLARATIONS(  Beam_engraver );
-};
-
-
-/*
-  Hmm. this isn't necessary, since grace beams and normal beams are
-  always nested.
- */
-bool
-Beam_engraver::valid_start_point()
-{
-  Moment n = now_mom ();
-
-  return n.grace_part_ == Rational (0);
-}
-
-bool
-Beam_engraver::valid_end_point()
-{
-  return valid_start_point ();
-}
-
-Beam_engraver::Beam_engraver ()
-{
-  beam_ = 0;
-  finished_beam_ =0;
-  finished_beam_info_=0;
-  beam_info_ =0;
-  now_stop_ev_ = 0;
-  start_ev_ = 0;
-  prev_start_ev_ =0;
-}
-
-bool
-Beam_engraver::try_music (Music *m)
-{
-  if (m->is_mus_type ("beam-event"))
-    {
-      Direction d = to_dir (m->get_mus_property ("span-direction"));
-      if (d == START && !valid_start_point ())
-	return false;
-      if (d == STOP && !valid_end_point ())
-	return false;
-
-      if (d == START)
-	{
-	  start_ev_ = m;
-	}
-      else if (d==STOP)
-	{
-	  now_stop_ev_ = m;
-	}
-      return true;
-    }
-  return false;
-}
-
-void
-Beam_engraver::set_melisma (bool ml)
-{
-  SCM b = get_property ("autoBeaming");
-  if (!to_boolean (b))
-    daddy_trans_->set_property ("beamMelismaBusy", ml ? SCM_BOOL_T :SCM_BOOL_F);
-}
-
-void
-Beam_engraver::process_music ()
-{
-  if (beam_ && !to_boolean (get_property ("allowBeamBreak")))
-    {
-      top_engraver ()->forbid_breaks ();
-    }
-
-  if (start_ev_)
-    {
-      if (beam_)
-	{
-	  start_ev_->origin ()->warning (_ ("already have a beam"));
-	  return;
-	}
-
-      set_melisma (true);
-      prev_start_ev_ = start_ev_;
-      beam_ = make_spanner ("Beam");
-      SCM smp = get_property ("measurePosition");
-      Moment mp = (unsmob_moment (smp)) ? *unsmob_moment (smp) : Moment (0);
-
-      beam_start_location_ = mp;
-      beam_start_mom_ = now_mom ();
-      
-      beam_info_ = new Beaming_info_list;
-      
-      /* urg, must copy to Auto_beam_engraver too */
-      announce_grob (beam_, start_ev_->self_scm());
-    }
-
-}
-
-
-void
-Beam_engraver::typeset_beam ()
-{
-  if (finished_beam_)
-    {
-      finished_beam_info_->beamify(beat_length_, subdivide_beams_);
-      Beam::set_beaming (finished_beam_, finished_beam_info_);
-      typeset_grob (finished_beam_);
-      delete finished_beam_info_;
-      finished_beam_info_ =0;
-      finished_beam_ = 0;
-    }
-}
-
-void
-Beam_engraver::start_translation_timestep ()
-{
-  start_ev_ = 0;
-  
-  if (beam_)
-    {
-      set_melisma (true);
-      
-      subdivide_beams_ = to_boolean(get_property("subdivideBeams"));
-      beat_length_ = *unsmob_moment (get_property ("beatLength"));
-    }
-}
-
-void
-Beam_engraver::stop_translation_timestep ()
-{
-  typeset_beam ();
-  if (now_stop_ev_ )
-    {
-      finished_beam_ = beam_;
-      finished_beam_info_ = beam_info_;
-
-      now_stop_ev_ = 0;
-      beam_ = 0;
-      beam_info_ = 0;
-      typeset_beam();
-      set_melisma (false);
-    }
-}
-
-void
-Beam_engraver::finalize ()
-{
-  typeset_beam ();
-  if (beam_)
-    {
-      prev_start_ev_->origin ()->warning (_ ("unterminated beam"));
-
-      /*
-	we don't typeset it, (we used to, but it was commented
-	out. Reason unknown) */
-      beam_->suicide ();
-      delete beam_info_;
-    }
-}
-
-void
-Beam_engraver::acknowledge_grob (Grob_info info)
-{
-  if (beam_)
-    {
-      if (Rest::has_interface (info.grob_))
-	{
-	  info.grob_->add_offset_callback (Beam::rest_collision_callback_proc, Y_AXIS);
-	}
-      else if (Stem::has_interface (info.grob_))
-	{
-	  Moment now = now_mom();
-
-	  if (!valid_start_point ())
-	    return ;
-	  
-	  Item *stem = dynamic_cast<Item*> (info.grob_);
-	  if (Stem::get_beam (stem))
-	    return;
-
-	  Music* m = info.music_cause();
-	  if (!m->is_mus_type ("rhythmic-event"))
-	    {
-	      String s = _ ("stem must have Rhythmic structure");
-	      if (info.music_cause ())
-		info.music_cause ()->origin ()->warning (s);
-	      else
-		::warning (s);
-	  
-	      return;
-	    }
-
-
-	  last_stem_added_at_ = now;
-	  int durlog  = unsmob_duration (m->get_mus_property ("duration"))-> duration_log ();
-	  if (durlog <= 2)
-	    {
-	      m->origin ()->warning (_ ("stem doesn't fit in beam"));
-	      prev_start_ev_->origin ()->warning (_ ("beam was started here"));
-	      /*
-		don't return, since
-
-		[r4 c8] can just as well be modern notation.
-	      */
-	    }
-
-	  stem->set_grob_property ("duration-log",
-				    scm_int2num (durlog));
-	  Moment stem_location = now - beam_start_mom_ + beam_start_location_;
-	  beam_info_->add_stem (stem_location,
- (durlog- 2) >? 0);
-	  Beam::add_stem (beam_, stem);
-	}
-    }
-}
-
-
-
-
-
-ENTER_DESCRIPTION(Beam_engraver,
-/* descr */       "Handles Beam events by engraving Beams.    If omitted, then notes will be "
-"printed with flags instead of beams.",
-/* creats*/       "Beam",
-/* accepts */     "beam-event",
-/* acks  */      "stem-interface rest-interface",
-/* reads */       "beamMelismaBusy beatLength subdivideBeams",
-/* write */       "");
-
-
-class Grace_beam_engraver : public Beam_engraver
-{
-public:
-  TRANSLATOR_DECLARATIONS(Grace_beam_engraver);  
-
-protected:
-  virtual bool valid_start_point();
-  virtual bool valid_end_point ();
-};
-
-Grace_beam_engraver::Grace_beam_engraver()
-{
-}
-
-bool
-Grace_beam_engraver::valid_start_point()
-{
-  Moment n = now_mom ();
-
-  return n.grace_part_ != Rational (0);
-}
-
-
-bool
-Grace_beam_engraver::valid_end_point ()
-{
-  return beam_ && valid_start_point ();
-}
-
-
-
-ENTER_DESCRIPTION(Grace_beam_engraver,
-/* descr */       "Handles Beam events by engraving Beams.  If omitted, then notes will "
-"be printed with flags instead of beams. Only engraves beams when we "
-" are at grace points in time. "
-,
-/* creats*/       "Beam",
-/* accepts */     "beam-event",
-/* acks  */      "stem-interface rest-interface",
-/* reads */       "beamMelismaBusy beatLength allowBeamBreak subdivideBeams",
-/* write */       "");
-
diff --git a/lily/beam-performer.cc b/lily/beam-performer.cc
deleted file mode 100644
index 4010502032..0000000000
--- a/lily/beam-performer.cc
+++ /dev/null
@@ -1,93 +0,0 @@
-/*
-  beam-performer.cc -- implement Beam_performer
-
-  source file of the GNU LilyPond music typesetter
-
-  (c) 1996--2004 Jan Nieuwenhuizen <janneke@gnu.org>
- */
-
-#include "performer.hh"
-#include "event.hh"
-#include "audio-item.hh"
-#include "audio-column.hh"
-#include "global-translator.hh"
-#include "warn.hh"
-
-class Beam_performer : public Performer {
-public:
-  TRANSLATOR_DECLARATIONS(Beam_performer);
-  
-protected:
-  virtual bool try_music (Music *ev) ;
-  virtual void start_translation_timestep ();
-  virtual void process_music ();
-  void set_melisma (bool);
-private:
-  Music *start_ev_;
-  Music *now_stop_ev_;
-  bool beam_;
-};
-
-void 
-Beam_performer::process_music ()
-{
-  if (now_stop_ev_)
-    {
-      beam_ = false;
-    }
-
-  if (start_ev_)
-    {
-      beam_ = true;
-      set_melisma (true);
-    }
-}
-
-
-void
-Beam_performer::set_melisma (bool ml)
-{
-  SCM b = get_property ("autoBeaming");
-  if (!to_boolean (b))
-    daddy_trans_->set_property ("beamMelismaBusy", ml ? SCM_BOOL_T :SCM_BOOL_F);
-}
-
-void
-Beam_performer::start_translation_timestep ()
-{
-  if (beam_)
-    {
-      set_melisma (true);
-    }
-  
-  start_ev_ = 0;
-  now_stop_ev_ = 0;
-}
- 
-bool
-Beam_performer::try_music (Music *m)
-{
-  if (m->is_mus_type ("beam-event"))
-    {
-      Direction d = to_dir (m->get_mus_property ("span-direction"));
-
-      if (d == START)
-	{
-	  start_ev_ = m;
-	}
-      else if (d==STOP)
-	{
-	  now_stop_ev_ = m;
-	}
-      return true;
-    }
-  return false;
-}
-
-ENTER_DESCRIPTION(Beam_performer,"","",
-		  "beam-event","","","");
-
-Beam_performer::Beam_performer()
-{
-  beam_ = false;
-}
diff --git a/lily/beam-quanting.cc b/lily/beam-quanting.cc
deleted file mode 100644
index 28af0c5336..0000000000
--- a/lily/beam-quanting.cc
+++ /dev/null
@@ -1,539 +0,0 @@
-/*
-  beam-quanting.cc -- implement Beam quanting functions
-  
-  source file of the GNU LilyPond music typesetter
-  
-  (c) 1997--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-  Jan Nieuwenhuizen <janneke@gnu.org>
-  
-
-  
-*/
-
-
-
-#include <math.h>
-
-#include "warn.hh"
-#include "grob.hh"
-#include "staff-symbol-referencer.hh"
-#include "beam.hh"
-#include "stem.hh"
-#include "paper-def.hh"
-#include "group-interface.hh"
-#include "align-interface.hh"
-
-const int INTER_QUANT_PENALTY = 1000;
-const Real SECONDARY_BEAM_DEMERIT  = 10.0;
-const int STEM_LENGTH_DEMERIT_FACTOR = 5;
-
-// possibly ridiculous, but too short stems just won't do
-const int STEM_LENGTH_LIMIT_PENALTY = 5000;
-const int DAMPING_DIRECTION_PENALTY = 800;
-const int MUSICAL_DIRECTION_FACTOR = 400;
-const int IDEAL_SLOPE_FACTOR = 10;
-
-const Real ROUND_TO_ZERO_SLOPE = 0.05;
-const int ROUND_TO_ZERO_POINTS = 4;
-
-extern bool debug_beam_quanting_flag;
-
-static Real
-shrink_extra_weight (Real x, Real fac)
-{
-  return fabs (x) * ((x < 0) ? fac : 1.0);
-}
-
-
-struct Quant_score
-{
-  Real yl;
-  Real yr;
-  Real demerits;
-
-#if DEBUG_QUANTING
-  String score_card_;
-#endif
-};
-
-
-/*
-  TODO:
-  
-   - Make all demerits customisable
-
-   - One sensible check per demerit (what's this --hwn)
-
-   - Add demerits for quants per se, as to forbid a specific quant
-     entirely
-
-*/
-
-int best_quant_score_idx (Array<Quant_score>  const & qscores)
-{
-  Real best = 1e6;
-  int best_idx = -1;
-  for (int i = qscores.size (); i--;)
-    {
-      if (qscores[i].demerits < best)
-	{
-	  best = qscores [i].demerits ;
-	  best_idx = i;
-	}
-    }
-
-  return best_idx;
-}
-  
-MAKE_SCHEME_CALLBACK (Beam, quanting, 1);
-SCM
-Beam::quanting (SCM smob)
-{
-  Grob *me = unsmob_grob (smob);
-
-  SCM s = me->get_grob_property ("positions");
-  Real yl = gh_scm2double (gh_car (s));
-  Real yr = gh_scm2double (gh_cdr (s));
-
-
-  /*
-    Calculations are relative to a unit-scaled staff, i.e. the quants are
-    divided by the current staff_space.
-    
-   */
-  Real ss = Staff_symbol_referencer::staff_space (me);
-  Real thickness = Beam::get_thickness (me) / ss ;
-  Real slt = Staff_symbol_referencer::line_thickness (me) / ss;
-
-  SCM sdy = me->get_grob_property ("least-squares-dy");
-  Real dy_mus = gh_number_p (sdy) ? gh_scm2double (sdy) : 0.0;
-  
-  Real straddle = 0.0;
-  Real sit = (thickness - slt) / 2;
-  Real inter = 0.5;
-  Real hang = 1.0 - (thickness - slt) / 2;
-  Real quants [] = {straddle, sit, inter, hang };
-  
-  int num_quants = int (sizeof (quants)/sizeof (Real));
-  Array<Real> quantsl;
-  Array<Real> quantsr;
-
-  /*
-    going to REGION_SIZE == 2, yields another 0.6 second with
-    wtk1-fugue2.
-
-
-    (result indexes between 70 and 575)  ? --hwn. 
-
-  */
-
-
-  
-  /*
-    Do stem computations.  These depend on YL and YR linearly, so we can
-    precompute for every stem 2 factors.
-   */
-  Link_array<Grob> stems=
-    Pointer_group_interface__extract_grobs (me, (Grob*)0, "stems");
-  Array<Stem_info> stem_infos;
-  Array<Real> base_lengths;
-  Array<Real> stem_xposns;  
-
-  Drul_array<bool> dirs_found(0,0);
-  Grob *common[2];
-  for (int a = 2; a--;)
-    common[a] = common_refpoint_of_array (stems, me, Axis(a));
-
-  Grob * fvs = first_visible_stem (me);
-  Grob *lvs = last_visible_stem (me);
-  Real xl = fvs ? fvs->relative_coordinate (common[X_AXIS], X_AXIS) : 0.0;
-  Real xr = fvs ? lvs->relative_coordinate (common[X_AXIS], X_AXIS) : 0.0;
-
-  /*
-    We store some info to quickly interpolate.
-
-    Sometimes my head is screwed on backwards.  The stemlength are
-    AFFINE linear in YL and YR. If YL == YR == 0, then we might have
-    stem_y != 0.0, when we're cross staff.
-    
-   */
-  for (int i= 0; i < stems.size(); i++)
-    {
-      Grob*s = stems[i];
-
-      Stem_info si (Stem::get_stem_info (s));
-      si.scale (1 / ss);
-      stem_infos.push (si);
-      dirs_found[stem_infos.top ().dir_] = true;
-
-      bool f = to_boolean (s->get_grob_property ("french-beaming"))
-	 && s != lvs && s != fvs;
-
-      base_lengths.push (calc_stem_y (me, s, common, xl, xr,
-				      Interval (0,0), f) / ss);
-      stem_xposns.push (s->relative_coordinate (common[X_AXIS], X_AXIS));
-    }
-
-  bool xstaff= false;
-  if (lvs && fvs)
-    {
-      Grob *commony = fvs->common_refpoint (lvs, Y_AXIS);
-      xstaff = Align_interface::has_interface (commony);
-    }
-  
-  Direction ldir = Direction (stem_infos[0].dir_);
-  Direction rdir = Direction (stem_infos.top ().dir_);
-  bool knee_b = dirs_found[LEFT] && dirs_found[RIGHT];
-
-
-  int region_size = REGION_SIZE;
-  /*
-    Knees are harder, lets try some more possibilities for knees. 
-   */
-  if (knee_b)
-    region_size += 2;
-
-  /*
-    Asymetry ? should run to <= region_size ?
-   */
-  for (int i = -region_size ; i < region_size; i++)
-    for (int j = 0; j < num_quants; j++)
-      {
-	quantsl.push (i + quants[j] + int (yl));
-	quantsr.push (i + quants[j] + int (yr));
-      }
-
-  Array<Quant_score> qscores;
-  
-  for (int l =0; l < quantsl.size (); l++)  
-    for (int r =0; r < quantsr.size (); r++)
-      {
-	Quant_score qs;
-	qs.yl = quantsl[l];
-	qs.yr = quantsr[r];
-	qs.demerits = 0.0;
-	
-	qscores.push (qs);
-      }
-
-  /* This is a longish function, but we don't separate this out into
-     neat modular separate subfunctions, as the subfunctions would be
-     called for many values of YL, YR. By precomputing various
-     parameters outside of the loop, we can save a lot of time. */
-  for (int i = qscores.size (); i--;)
-    {
-      Real d =  score_slopes_dy (qscores[i].yl, qscores[i].yr,
-				 dy_mus, yr- yl, 
-				 xr - xl,
-				 xstaff);
-      qscores[i].demerits += d;
-
-#if DEBUG_QUANTING
-      qscores[i].score_card_ += to_string ("S%.2f",d);
-#endif
-    }
-
-  Real rad = Staff_symbol_referencer::staff_radius (me);
-  int beam_count = get_beam_count (me);
-  Real beam_translation = get_beam_translation (me) / ss;
-
-  Real reasonable_score = (knee_b) ? 200000 : 100;
-  for (int i = qscores.size (); i--;)
-    if (qscores[i].demerits < reasonable_score)
-      {
-	Real d = score_forbidden_quants (qscores[i].yl, qscores[i].yr,
-				     rad, slt, thickness, beam_translation,
-				     beam_count, ldir, rdir); 
-	qscores[i].demerits += d;
-
-#if DEBUG_QUANTING
-	qscores[i].score_card_ += to_string (" F %.2f", d);
-#endif
-      }
-
-  for (int i = qscores.size (); i--;)
-    if (qscores[i].demerits < reasonable_score)
-      {
-	Real d=score_stem_lengths (stems, stem_infos,
-				 base_lengths, stem_xposns,
-				 xl, xr,
-				 knee_b,
-				 qscores[i].yl, qscores[i].yr);
-	qscores[i].demerits +=  d;
-
-#if DEBUG_QUANTING
-	qscores[i].score_card_ += to_string (" L %.2f", d);
-#endif
-      }
-
-  int best_idx = best_quant_score_idx (qscores);
-
-
-#if DEBUG_QUANTING
-  SCM inspect_quants = me->get_grob_property ("inspect-quants");
-  if (debug_beam_quanting_flag
-      && gh_pair_p (inspect_quants))
-    {
-      Drul_array<Real> ins = ly_scm2interval (inspect_quants);
-
-      int i = 0;
-
-      Real mindist = 1e6;
-      for (; i < qscores.size(); i ++)
-	{
-	  Real d =fabs (qscores[i].yl- ins[LEFT]) + fabs (qscores[i].yr - ins[RIGHT]);
-	  if (d < mindist)
-	    {
-	      best_idx = i;
-	      mindist= d;
-	    }
-	}
-      if (mindist > 1e5)
-	programming_error ("Could not find quant.");
-    }
-#endif
-  
-  me->set_grob_property ("positions",
-			 ly_interval2scm (Drul_array<Real> (qscores[best_idx].yl,
-					  qscores[best_idx].yr)));
-#if DEBUG_QUANTING
-  if (debug_beam_quanting_flag)
-    {
-      qscores[best_idx].score_card_ += to_string ("i%d", best_idx);
-      
-      // debug quanting
-      me->set_grob_property ("quant-score",
-			     scm_makfrom0str (qscores[best_idx].score_card_.to_str0 ()));
-    }
-#endif
-
-  return SCM_UNSPECIFIED;
-}
-
-Real
-Beam::score_stem_lengths (Link_array<Grob> const &stems,
-			  Array<Stem_info> const &stem_infos,
-			  Array<Real> const &base_stem_ys,
-			  Array<Real> const &stem_xs,
-			  Real xl, Real xr, 
-			  bool knee, 
-			  Real yl, Real yr)
-{
-  Real limit_penalty = STEM_LENGTH_LIMIT_PENALTY;
-  Drul_array<Real> score (0, 0);
-  Drul_array<int> count (0, 0);
-  
-  for (int i=0; i < stems.size (); i++)
-    {
-      Grob* s = stems[i];
-      if (Stem::invisible_b (s))
-	continue;
-
-      Real x = stem_xs[i];
-      Real dx = xr-xl;
-      Real beam_y = dx ? yr *(x - xl)/dx + yl * ( xr - x)/dx : (yr + yl)/2;
-      Real current_y = beam_y + base_stem_ys[i];
-      Real length_pen = STEM_LENGTH_DEMERIT_FACTOR;
-      
-      Stem_info info = stem_infos[i];
-      Direction d = info.dir_;
-
-      score[d] += limit_penalty * (0 >? (d * (info.shortest_y_ - current_y)));
-      
-      Real ideal_diff = d * (current_y - info.ideal_y_);
-      Real ideal_score = shrink_extra_weight (ideal_diff, 1.5);
-      
-      /* We introduce a power, to make the scoring strictly
-         convex. Otherwise a symmetric knee beam (up/down/up/down)
-         does not have an optimum in the middle. */
-      if (knee)
-	ideal_score = pow (ideal_score, 1.1);
-      
-      score[d] += length_pen * ideal_score;
-
-      count[d] ++;
-    }
-
-  Direction d = DOWN;
-  do
-    { 
-      score[d] /= (count[d] >? 1);
-    }
-  while (flip (&d) != DOWN);
-
-  return score[LEFT]+score[RIGHT];
-}
-
-Real
-Beam::score_slopes_dy (Real yl, Real yr,
-		       Real dy_mus, Real dy_damp,
-		       Real dx,
-		       bool xstaff)
-{
-  Real dy = yr - yl;
-  Real dem = 0.0;
-
-  /*
-    DAMPING_DIRECTION_PENALTY is a very harsh measure, while for
-    complex beaming patterns, horizontal is often a good choice.
-
-    TODO: find a way to incorporate the complexity of the beam in this
-    penalty.
-   */
-  if (fabs (dy/dx) > ROUND_TO_ZERO_SLOPE
-      && sign (dy_damp) != sign (dy))
-    {
-      dem += DAMPING_DIRECTION_PENALTY;
-    }
-
-   dem += MUSICAL_DIRECTION_FACTOR * (0 >? (fabs (dy) - fabs (dy_mus)));
-
-
-   Real slope_penalty = IDEAL_SLOPE_FACTOR;
-
-   /* Xstaff beams tend to use extreme slopes to get short stems. We
-      put in a penalty here. */
-   if (xstaff)
-     slope_penalty *= 10;
-
-   /* Huh, why would a too steep beam be better than a too flat one ? */
-   dem += shrink_extra_weight (fabs (dy_damp) - fabs (dy), 1.5)
-     * slope_penalty;
-
-   /*
-     almost zero slopes look like errors in horizontal beams. 
-    */
-   if (fabs (dy) > 1e-3
-       && fabs (dy / dx) < ROUND_TO_ZERO_SLOPE)
-     dem += ROUND_TO_ZERO_POINTS;
-   
-   return dem;
-}
-
-static Real
-my_modf (Real x)
-{
-  return x - floor (x);
-}
-
-
-/*
-  TODO: The fixed value SECONDARY_BEAM_DEMERIT is probably flawed:
-   because for 32nd and 64th beams the forbidden quants are relatively
-   more important than stem lengths.
-*/
-Real
-Beam::score_forbidden_quants (Real yl, Real yr,
-			      Real radius,
-			      Real slt,
-			      Real thickness, Real beam_translation,
-			      int beam_count,
-			      Direction ldir, Direction rdir)
-{
-  Real dy = yr - yl;
-  Drul_array<Real> y(yl,yr);
-  Drul_array<Direction> dirs(ldir,rdir);
-  
-  Real extra_demerit = SECONDARY_BEAM_DEMERIT / beam_count;
-
-  /*
-    Inside the staff, inter quants are forbidden.
-   */
-  Real dem = 0.0;
-  Direction d = LEFT;
-  do
-    {
-      if (fabs (y[d]) <= (radius + 0.5) && fabs (my_modf (y[d]) - 0.5) < 1e-3)
-	dem += INTER_QUANT_PENALTY;
-    }
-  while ((flip (&d))!= LEFT); 
-
-
-  for (int j = 1; j <= beam_count; j++)
-    {
-      do
-	{
-	  /*
-	    see if the outer staffline falls in a beam-gap
-	    
-	    This test is too weak; we should really check all lines.
-	   */
-	  Direction stem_dir = dirs[d];
-	  Real gap1 =  y[d] - stem_dir * ((j-1) * beam_translation + thickness / 2 - slt/2 );
-	  Real gap2 = y[d] - stem_dir * (j * beam_translation - thickness / 2 + slt/2);
-
-	  Interval gap;
-	  gap.add_point (gap1);
-	  gap.add_point (gap2);
-
-	  if (gap.contains (radius))
-	    dem += extra_demerit;
-	}
-      while ((flip (&d))!= LEFT); 
-    }
-
-
-  
-  // todo: use beam_count of outer stems.
-  if (beam_count >= 2)
-    {
-      Real straddle = 0.0;
-      Real sit = (thickness - slt) / 2;
-      Real inter = 0.5;
-      Real hang = 1.0 - (thickness - slt) / 2;
-
-      Real eps = 1e-3;
-
-      // hmm, without Interval/Drul_array, you get ~ 4x same code...
-      if (fabs (y[LEFT] - dirs[LEFT] * beam_translation) < radius + inter)
-	{
-	  if (dirs[LEFT] == UP && dy <= eps
-	      && fabs (my_modf (y[LEFT]) - sit) < eps)
-	    dem += extra_demerit;
-	  
-	  if (dirs[LEFT] == DOWN && dy >= eps
-	      && fabs (my_modf (y[LEFT]) - hang) < eps)
-	    dem += extra_demerit;
-	}
-
-      if (fabs (y[RIGHT] - dirs[RIGHT] * beam_translation) < radius + inter)
-	{
-	  if (dirs[RIGHT] == UP && dy >= eps
-	      && fabs (my_modf (y[RIGHT]) - sit) < eps)
-	    dem += extra_demerit;
-	  
-	  if (dirs[RIGHT] == DOWN && dy <= eps
-	      && fabs (my_modf (y[RIGHT]) - hang) < eps)
-	    dem += extra_demerit;
-	}
-      
-      if (beam_count >= 3)
-	{
-	  if (fabs (y[LEFT] - 2 * dirs[LEFT] * beam_translation) < radius + inter)
-	    {
-	      if (dirs[LEFT] == UP && dy <= eps
-		  && fabs (my_modf (y[LEFT]) - straddle) < eps)
-		dem += extra_demerit;
-	      
-	      if (dirs[LEFT] == DOWN && dy >= eps
-		  && fabs (my_modf (y[LEFT]) - straddle) < eps)
-		dem += extra_demerit;
-	    }
-	  
-	  if (fabs (y[RIGHT] - 2 * dirs[RIGHT] * beam_translation) < radius + inter)
-	    {
-	      if (dirs[RIGHT] == UP && dy >= eps
-		  && fabs (my_modf (y[RIGHT]) - straddle) < eps)
-		dem += extra_demerit;
-	      
-	      if (dirs[RIGHT] == DOWN && dy <= eps
-		  && fabs (my_modf (y[RIGHT]) - straddle) < eps)
-		dem += extra_demerit;
-	    }
-	}
-    }
-  
-  return dem;
-}
-
-  
diff --git a/lily/beam.cc b/lily/beam.cc
deleted file mode 100644
index 0e2553fc80..0000000000
--- a/lily/beam.cc
+++ /dev/null
@@ -1,1587 +0,0 @@
-/*
-  beam.cc -- implement Beam
-  
-  source file of the GNU LilyPond music typesetter
-  
-  (c) 1997--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-  Jan Nieuwenhuizen <janneke@gnu.org>
-*/
-
-/*
-TODO:
-
-  - Determine auto knees based on positions if it's set by the user.
-
-  - the code is littered with * and / staff_space calls for
-    #'positions. Consider moving to real-world coordinates?
-
-    Problematic issue is user tweaks (user tweaks are in staff-coordinates.) 
-  
-Notes:
-
- - Stems run to the Y-center of the beam.
-  
- - beam_translation is the offset between Y centers of the beam.
-
-*/
-
-
-#include <math.h> // tanh.
-
-#include "molecule.hh" 
-#include "directional-element-interface.hh"
-#include "beaming.hh"
-#include "beam.hh"
-#include "misc.hh"
-#include "least-squares.hh"
-#include "stem.hh"
-#include "paper-def.hh"
-#include "lookup.hh"
-#include "group-interface.hh"
-#include "staff-symbol-referencer.hh"
-#include "item.hh"
-#include "spanner.hh"
-#include "warn.hh"
-
-bool debug_beam_quanting_flag;
-
-
-#if DEBUG_QUANTING
-#include "text-item.hh"  // debug output.
-#include "font-interface.hh"  // debug output.
-#endif
-
-
-void
-Beam::add_stem (Grob *me, Grob *s)
-{
-  Pointer_group_interface::add_grob (me, ly_symbol2scm ("stems"), s);
-  
-  s->add_dependency (me);
-
-  assert (!Stem::get_beam (s));
-  s->set_grob_property ("beam", me->self_scm ());
-
-  add_bound_item (dynamic_cast<Spanner*> (me), dynamic_cast<Item*> (s));
-}
-
-
-Real
-Beam::get_thickness (Grob * me)
-{
-  return robust_scm2double (me->get_grob_property ("thickness"), 0)
-    * Staff_symbol_referencer::staff_space (me);
-}
-
-/* Return the translation between 2 adjoining beams. */
-Real
-Beam::get_beam_translation (Grob *me)
-{
-  SCM func = me->get_grob_property ("space-function");
-
-  if (gh_procedure_p (func))
-    {
-      SCM s = gh_call2 (func, me->self_scm (), scm_int2num (get_beam_count (me)));
-      return gh_scm2double (s);
-    }
-  else
-    {
-      return 0.81;
-    }
-}
-
-/* Maximum beam_count. */
-int
-Beam::get_beam_count (Grob *me) 
-{
-  int m = 0;
-  for (SCM s = me->get_grob_property ("stems"); gh_pair_p (s); s = ly_cdr (s))
-    {
-      Grob *stem = unsmob_grob (ly_car (s));
-      m = m >? (Stem::beam_multiplicity (stem).length () + 1);
-    }
-  return m;
-}
-
-
-/*
-  Space return space between beams.
- */
-MAKE_SCHEME_CALLBACK (Beam, space_function, 2);
-SCM
-Beam::space_function (SCM smob, SCM beam_count)
-{
-  Grob *me = unsmob_grob (smob);
-  
-  Real staff_space = Staff_symbol_referencer::staff_space (me);
-  Real line = Staff_symbol_referencer::line_thickness (me);
-  Real thickness = get_thickness (me);
-  
-  Real beam_translation = gh_scm2int (beam_count) < 4
-    ? (2*staff_space + line - thickness) / 2.0
-    : (3*staff_space + line - thickness) / 3.0;
-  
-  return gh_double2scm (beam_translation);
-}
-
-
-/* After pre-processing all directions should be set.
-   Several post-processing routines (stem, slur, script) need stem/beam
-   direction.
-   Currenly, this means that beam has set all stem's directions.
-   [Alternatively, stems could set its own directions, according to
-   their beam, during 'final-pre-processing'.] */
-MAKE_SCHEME_CALLBACK (Beam, before_line_breaking, 1);
-SCM
-Beam::before_line_breaking (SCM smob)
-{
-  Grob *me =  unsmob_grob (smob);
-
-  /* Beams with less than 2 two stems don't make much sense, but could happen
-     when you do
-     
-     [r8 c8 r8].
-     
-    For a beam that  only has one stem, we try to do some disappearance magic:
-    we revert the flag, and move on to The Eternal Engraving Fields. */
-
-  int count = visible_stem_count (me);
-  if (count < 2)
-    {
-      me->warning (_ ("beam has less than two visible stems"));
-
-      SCM stems = me->get_grob_property ("stems");
-      if (scm_ilength (stems) == 1)
-	{
-	  me->warning (_ ("Beam has less than two stems. Removing beam."));
-
-	  unsmob_grob (gh_car (stems))->set_grob_property ("beam", SCM_EOL);
-	  me->suicide ();
-
-	  return SCM_UNSPECIFIED;
-	}
-      else if (scm_ilength (stems) == 0)
-	{
-	  me->suicide ();
-	  return SCM_UNSPECIFIED;	  
-	}
-    }
-  if (count >= 1)
-    {
-      Direction d = get_default_dir (me);
-
-      consider_auto_knees (me);
-      set_stem_directions (me, d);
-
-      connect_beams (me);
-
-      set_stem_shorten (me);
-    }
-
-  return SCM_EOL;
-}
-
-
-/*
-  We want a maximal number of shared beams, but if there is choice, we
-  take the one that is closest to the end of the stem. This is for situations like
-
-       x
-      |
-      |
-  |===|
-  |=
-  |
-  x
-
-  
- */
-int
-position_with_maximal_common_beams (SCM left_beaming, SCM right_beaming,
-				    Direction left_dir,
-				    Direction right_dir)
-{
-  Slice lslice = int_list_to_slice (gh_cdr (left_beaming));
-
-  int best_count = 0;
-  int best_start = 0;
-  for (int i = lslice[-left_dir];
-       (i - lslice[left_dir])* left_dir <= 0 ; i+= left_dir) 
-    {
-      int count =0;
-      for ( SCM s = gh_car (right_beaming); gh_pair_p (s); s = gh_cdr (s))
-	{
-	  int k = - right_dir * gh_scm2int (gh_car (s)) + i;
-	  if (scm_memq (scm_int2num (k), left_beaming) != SCM_BOOL_F)
-	    count ++;
-	}
-
-      if (count >= best_count)
-	{
-	  best_count = count; 
-	  best_start = i;
-	}
-    }
-
-  return best_start;
-}
-
-void
-Beam::connect_beams (Grob *me)
-{
-  Link_array<Grob> stems=
-    Pointer_group_interface__extract_grobs (me, (Grob*)0, "stems");
-
-  Slice last_int;
-  last_int.set_empty();
-  SCM last_beaming = SCM_EOL;
-  Direction last_dir = CENTER;
-  for (int i = 0; i< stems.size(); i++)
-    {
-      Grob *this_stem = stems[i];
-      SCM this_beaming = this_stem->get_grob_property ("beaming");
-
-      Direction this_dir = get_grob_direction (this_stem);
-      if (gh_pair_p (last_beaming) && gh_pair_p (this_beaming))
-	{
-	  int start_point = position_with_maximal_common_beams
-	    (last_beaming, this_beaming,
-	     last_dir, this_dir);
-	  
-	  Direction d = LEFT;
-	  Slice new_slice ; 
-	  do
-	    {
-	      if (d == RIGHT && i == stems.size()-1)
-		continue;
-	      
-	      new_slice.set_empty();
-	      SCM s = index_get_cell (this_beaming, d);
-	      for (; gh_pair_p (s); s = gh_cdr (s))
-		{
-		  int new_beam_pos =
-		    start_point - this_dir * gh_scm2int (gh_car (s));
-
-		  new_slice.add_point (new_beam_pos);
-		  gh_set_car_x (s, scm_int2num (new_beam_pos));
-		}
-
-
-	    }
-	  while (flip (&d) != LEFT);
-
-	  if (!new_slice.is_empty ())
-	    last_int =  new_slice;
-	}
-      else
-	{
-	  gh_set_car_x ( this_beaming, SCM_EOL);
-	  SCM s = gh_cdr (this_beaming);
-	  for (; gh_pair_p (s); s = gh_cdr (s))
-	    {
-	      int np = - this_dir * gh_scm2int (gh_car(s));
-	      gh_set_car_x (s, scm_int2num (np));
-	      last_int.add_point (np);
-	    }
-	}
-
-      if (i == stems.size () -1)
-	{
-	  gh_set_cdr_x (this_beaming, SCM_EOL);
-	}
-
-      if (scm_ilength (gh_cdr (this_beaming)) > 0)
-	{
-	  last_beaming = this_beaming;
-	  last_dir = this_dir;
-	}
-    }
- }
-
-
-/*
-  TODO: should not make beams per stem, but per Y-level.
- */
-MAKE_SCHEME_CALLBACK (Beam, print, 1);
-SCM
-Beam::print (SCM grob)
-{
-  Grob *me = unsmob_grob (grob);
-  position_beam (me);
-  
-  Link_array<Grob> stems=
-    Pointer_group_interface__extract_grobs (me, (Grob*)0, "stems");
-  Grob* xcommon = common_refpoint_of_array (stems, me, X_AXIS);
-
-  Real x0, dx;
-  if (visible_stem_count (me))
-    {
-      // ugh -> use commonx
-      x0 = first_visible_stem (me)->relative_coordinate (xcommon, X_AXIS);
-      dx = last_visible_stem (me)->relative_coordinate (xcommon, X_AXIS) - x0;
-    }
-  else
-    {
-      x0 = stems[0]->relative_coordinate (xcommon, X_AXIS);
-      dx = stems.top ()->relative_coordinate (xcommon, X_AXIS) - x0;
-    }
-
-  SCM posns = me->get_grob_property ("positions");
-  Drul_array<Real> pos;
-  if (!is_number_pair (posns))
-    {
-      programming_error ("No beam posns");
-      pos = Interval (0,0);
-    }
-  else
-    pos= ly_scm2realdrul (posns);
-
-  scale_drul (  &pos,  Staff_symbol_referencer::staff_space (me));
-  
-  Real dy = pos[RIGHT] - pos[LEFT];
-  Real dydx = (dy && dx) ? dy/dx : 0;
-  
-  Real thick = get_thickness (me);
-  Real bdy = get_beam_translation (me);
-
-  SCM last_beaming = SCM_EOL;
-  Real last_xposn = -1;
-  Real last_stem_width = -1 ;
-
-  Real gap_length =robust_scm2double ( me->get_grob_property ("gap"), 0.0);
-  
-  Molecule the_beam;
-  Real lt = me->get_paper ()->get_realvar (ly_symbol2scm ("linethickness"));
-  
-  for (int i = 0; i<= stems.size(); i++)
-    {
-      Grob * st = (i < stems.size()) ? stems[i] : 0;
-      
-      SCM this_beaming = st ? st->get_grob_property ("beaming") : SCM_EOL;
-      Real xposn = st ? st->relative_coordinate (xcommon, X_AXIS) : 0.0;
-      Real stem_width = st ? robust_scm2double (st->get_grob_property ("thickness"), 1.0) *lt : 0 ;
-      Direction stem_dir = st ? to_dir (st->get_grob_property ("direction")) : CENTER;
-      /*
-	We do the space left of ST, with lfliebertjes pointing to the
-	right from the left stem, and rfliebertjes pointing left from
-	right stem.
-       */
-      SCM left = (i>0) ? gh_cdr (last_beaming) : SCM_EOL;
-      SCM right = st ? gh_car (this_beaming) : SCM_EOL;
-
-      Array<int> full_beams;
-      Array<int> lfliebertjes;
-      Array<int> rfliebertjes;	  
-
-      for (SCM s = left;
-	   gh_pair_p (s); s =gh_cdr (s))
-	{
-	  int b = gh_scm2int (gh_car (s));
-	  if (scm_memq (gh_car(s), right) != SCM_BOOL_F)
-	    {
-	      full_beams.push (b);
-	    }
-	  else
-	    {
-	      lfliebertjes.push (b); 
-	    }
-	}
-      for (SCM s = right;
-	   gh_pair_p (s); s =gh_cdr (s))
-	{
-	  int b = gh_scm2int (gh_car (s));
-	  if (scm_memq (gh_car(s), left) == SCM_BOOL_F)
-	    {
-	      rfliebertjes.push (b);
-	    }
-	}
-
-      /*
-	how much to stick out for beams across linebreaks
-       */
-      Real break_overshoot = 3.0;
-      Real w = (i > 0 && st) ? xposn - last_xposn : break_overshoot;
-
-      Real stem_offset =0.0;
-      if (i > 0)
-	{
-	  w += last_stem_width / 2;
-	  stem_offset = -last_stem_width / 2;
-	}
-
-      if (st)
-	w += stem_width/ 2 ;
-      
-
-      Real blot = me->get_paper ()->get_realvar (ly_symbol2scm ("blotdiameter"));
-      Molecule whole = Lookup::beam (dydx, w, thick, blot);
-      Molecule gapped;
-
-      int gap_count = 0;
-      if (gh_number_p (me->get_grob_property ("gap-count")))
-	{
-	  gap_count = gh_scm2int (me->get_grob_property ("gap-count"));
-	  gapped = Lookup::beam (dydx, w - 2 * gap_length, thick, blot);
-
-	  full_beams.sort (default_compare);
-	  if (stem_dir == UP)
-	    full_beams.reverse ();
-	}
-
-      int k = 0;
-      for (int j = full_beams.size (); j--;)
-	{
-	  Molecule b (whole);
-	  
-	  if (k++ < gap_count)
-	    {
-	      b = gapped;
-	      b.translate_axis (gap_length, X_AXIS);
-	    }
-	  b.translate_axis (last_xposn -  x0 + stem_offset, X_AXIS);
-	  b.translate_axis (dydx * (last_xposn - x0) + bdy * full_beams[j], Y_AXIS);
-
-	  the_beam.add_molecule (b);	      
-	}
-
-      
-	  
-      if (lfliebertjes.size() || rfliebertjes.size())
-	{
-	  Real nw_f;
-
-	  if (st)
-	    {
-	      int t = Stem::duration_log (st); 
-
-	      SCM proc = me->get_grob_property ("flag-width-function");
-	      SCM result = gh_call1 (proc, scm_int2num (t));
-	      nw_f = gh_scm2double (result);
-	    }
-	  else
-	    nw_f = break_overshoot;
-	      
-	  /* Half beam should be one note-width,
-	     but let's make sure two half-beams never touch */
-	  Real w = (i>0 && st) ? (xposn - last_xposn) : break_overshoot;
-	  w = w/2 <? nw_f;
-
-	  Molecule half = Lookup::beam (dydx, w, thick, blot);
-	  for (int j = lfliebertjes.size(); j--;)
-	    {
-	      Molecule b (half);
-	      b.translate_axis (last_xposn -  x0, X_AXIS);
-	      b.translate_axis (dydx * (last_xposn-x0) + bdy * lfliebertjes[j], Y_AXIS);
-	      the_beam.add_molecule (b);	      
-	    }
-	  for (int j = rfliebertjes.size(); j--;)
-	    {
-	      Molecule b (half);
-	      b.translate_axis (xposn -  x0 - w , X_AXIS);
-	      b.translate_axis (dydx * (xposn-x0 -w) + bdy * rfliebertjes[j], Y_AXIS);
-	      the_beam.add_molecule (b);	      
-	    }
-	}
-
-
-      last_xposn = xposn;
-      last_stem_width = stem_width;
-      last_beaming = this_beaming;
-    }
-
-  the_beam.translate_axis (x0 - me->relative_coordinate (xcommon, X_AXIS), X_AXIS);
-  the_beam.translate_axis (pos[LEFT], Y_AXIS);
-
-#if (DEBUG_QUANTING)
-  SCM quant_score = me->get_grob_property ("quant-score");
-  if (debug_beam_quanting_flag
-      && gh_string_p (quant_score))
-    {
-      
-      /*
-	This code prints the demerits for each beam. Perhaps this
-	should be switchable for those who want to twiddle with the
-	parameters.
-      */
-      String str;
-      SCM properties = Font_interface::font_alist_chain (me);
-
-      Molecule tm = *unsmob_molecule (Text_item::interpret_markup
-	(me->get_paper ()->self_scm (), properties, quant_score));
-      the_beam.add_at_edge (Y_AXIS, UP, tm, 5.0, 0);
-    }
-#endif
-    
-  
-  
-  return the_beam.smobbed_copy();
-}
-  
-
-
-
-Direction
-Beam::get_default_dir (Grob *me) 
-{
-  Drul_array<int> total;
-  total[UP]  = total[DOWN] = 0;
-  Drul_array<int> count; 
-  count[UP]  = count[DOWN] = 0;
-  Direction d = DOWN;
-
-  Link_array<Grob> stems=
-	Pointer_group_interface__extract_grobs (me, (Grob*)0, "stems");
-
-  for (int i=0; i <stems.size (); i++)
-    do {
-      Grob *s = stems[i];
-      Direction sd = get_grob_direction (s);
-
-      int center_distance = int(- d * Stem::head_positions (s) [-d]) >? 0;
-      int current = sd	? (1 + d * sd)/2 : center_distance;
-
-      if (current)
-	{
-	  total[d] += current;
-	  count[d] ++;
-	}
-    } while (flip (&d) != DOWN);
-  
-  SCM func = me->get_grob_property ("dir-function");
-  SCM s = gh_call2 (func,
-		    gh_cons (scm_int2num (count[UP]),
-			     scm_int2num (count[DOWN])),
-		    gh_cons (scm_int2num (total[UP]),
-			     scm_int2num (total[DOWN])));
-
-  if (gh_number_p (s) && gh_scm2int (s))
-    return to_dir (s);
-  
-  /* If dir is not determined: get default */
-  return to_dir (me->get_grob_property ("neutral-direction"));
-}
-
-
-/* Set all stems with non-forced direction to beam direction.
-   Urg: non-forced should become `without/with unforced' direction,
-   once stem gets cleaned-up. */
-void
-Beam::set_stem_directions (Grob *me, Direction d)
-{
-  Link_array<Grob> stems
-    =Pointer_group_interface__extract_grobs (me, (Grob*) 0, "stems");
-  
-  for (int i=0; i <stems.size (); i++)
-    {
-      Grob *s = stems[i];
-  
-      SCM forcedir = s->get_grob_property ("direction");
-      if (!to_dir (forcedir))
-	set_grob_direction (s,  d);
-    }
-}
-
-/*
-  A union of intervals in the real line.
-
-  Abysmal performance (quadratic) for large N, hopefully we don't have
-  that large N. In any case, this should probably be rewritten to use
-  a balanced tree.
- */
-struct Int_set
-{
-  Array<Interval> allowed_regions_;
-
-  Int_set()
-  {
-    set_full();
-  }
-
-  void set_full()
-  {
-    allowed_regions_.clear();
-    Interval s;
-    s.set_full ();
-    allowed_regions_.push (s);
-  }
-
-  void remove_interval (Interval rm)
-  {
-    for (int i = 0; i < allowed_regions_.size(); )
-      {
-	Interval s = rm;
-
-	s.intersect (allowed_regions_[i]);
-
-	if (!s.is_empty ())
-	  {
-	    Interval before = allowed_regions_[i];
-	    Interval after = allowed_regions_[i];
-
-	    before[RIGHT] = s[LEFT];
-	    after[LEFT] = s[RIGHT];
-
-	    if (!before.is_empty () && before.length () > 0.0)
-	      {
-		allowed_regions_.insert (before, i);
-		i++;
-	      }
-	    allowed_regions_.del (i);
-	    if (!after.is_empty () && after.length () > 0.0)
-	      {
-		allowed_regions_.insert (after, i);
-		i++;
-	      }
-	  }
-	else
-	  i++;
-      }
-  }
-};
-
-
-/*
-  Only try horizontal beams for knees.  No reliable detection of
-  anything else is possible here, since we don't know funky-beaming
-  settings, or X-distances (slopes!)  People that want sloped
-  knee-beams, should set the directions manually.
- */
-void
-Beam::consider_auto_knees (Grob* me)
-{
-  SCM scm = me->get_grob_property ("auto-knee-gap");
-  if (!gh_number_p (scm))
-    return ;
-
-  Real threshold = gh_scm2double (scm);
-  
-  Int_set gaps;
-
-  gaps.set_full ();
-
-  Link_array<Grob> stems=
-    Pointer_group_interface__extract_grobs (me, (Grob*)0, "stems");
-      
-  Grob *common = common_refpoint_of_array (stems, me,  Y_AXIS);
-  Real staff_space = Staff_symbol_referencer::staff_space (me);
-  
-  Array<Interval> hps_array;  
-  for (int i=0; i < stems.size (); i++)
-    {
-      Grob* stem = stems[i];
-      if (Stem::invisible_b (stem))
-	continue;
-
-      Interval hps = Stem::head_positions (stem);
-      if(!hps.is_empty ())
-	{
-	  hps[LEFT] += -1;
-	  hps[RIGHT] += 1; 
-	  hps *= staff_space * 0.5 ;
-
-	  /*
-	    We could subtract beam Y position, but this routine only
-	    sets stem directions, a constant shift does not have an
-	    influence.
-	    
-	   */
-	  hps += stem->relative_coordinate (common, Y_AXIS);
-
-	  if (to_dir (stem->get_grob_property ("direction")))
-	    {
-	      Direction stemdir = to_dir (stem->get_grob_property ("direction"));
-	      hps[-stemdir] = - stemdir * infinity_f;
-	    }
-	}
-      hps_array.push (hps);
-
-      gaps.remove_interval (hps);
-    }
-
-  Interval max_gap;
-  Real max_gap_len =0.0;
-
-  for (int i  = gaps.allowed_regions_.size() -1;  i >=  0 ; i--)
-    {
-      Interval gap = gaps.allowed_regions_[i];
-
-      /*
-	the outer gaps are not knees.
-       */
-      if (isinf (gap[LEFT]) || isinf(gap[RIGHT]))
-	continue;
-      
-      if (gap.length () >= max_gap_len)
-	{
-	  max_gap_len = gap.length();
-	  max_gap = gap;
-	}
-    }
-
-  if (max_gap_len > threshold)
-    {
-      int j = 0;
-      for (int i = 0; i < stems.size(); i++)
-	{
-	  Grob* stem = stems[i];
-	  if (Stem::invisible_b (stem))
-	    continue;
-
-	  Interval hps = hps_array[j++];
-
-
-	  Direction d =  (hps.center () < max_gap.center()) ?
-	    UP : DOWN ;
-	  
-	  stem->set_grob_property ("direction", scm_int2num (d));
-	  
-	  hps.intersect (max_gap);
-	  assert (hps.is_empty () || hps.length () < 1e-6 );
-	}
-    }
-}
-
-
-
-/* Set stem's shorten property if unset.
-
- TODO:
-   take some y-position (chord/beam/nearest?) into account
-   scmify forced-fraction
- 
-  This is done in beam because the shorten has to be uniform over the
-  entire beam.
-
-*/
-void
-Beam::set_stem_shorten (Grob *me)
-{
-  /*
-    shortening looks silly for x staff beams
-   */
-  if (knee_b(me))
-    return ;
-  
-  Real forced_fraction = 1.0 * forced_stem_count (me)
-    / visible_stem_count (me);
-
-  int beam_count = get_beam_count (me);
-
-  SCM shorten_list = me->get_grob_property ("beamed-stem-shorten");
-  if (shorten_list == SCM_EOL)
-    return;
-
-  Real staff_space = Staff_symbol_referencer::staff_space (me);
-  
-  SCM shorten_elt =
-    robust_list_ref (beam_count -1, shorten_list);
-  Real shorten_f = gh_scm2double (shorten_elt) * staff_space;
-
-  /* your similar cute comment here */
-  shorten_f *= forced_fraction;
-
-  if (shorten_f)
-    me->set_grob_property ("shorten", gh_double2scm (shorten_f));
-}
-
-/*  Call list of y-dy-callbacks, that handle setting of
-    grob-properties
-
-*/
-MAKE_SCHEME_CALLBACK (Beam, after_line_breaking, 1);
-SCM
-Beam::after_line_breaking (SCM smob)
-{
-  Grob *me = unsmob_grob (smob);
-
-  position_beam (me);
-  return SCM_UNSPECIFIED;
-}
-
-void
-Beam::position_beam (Grob *me)
-{
-  if (to_boolean (me->get_grob_property ("positioning-done")))
-    return ;
-
-  me->set_grob_property ("positioning-done", SCM_BOOL_T);
-
-  /* Copy to mutable list. */
-  SCM s = ly_deep_copy (me->get_grob_property ("positions"));
-  me->set_grob_property ("positions", s);
-
-  if (ly_car (s) == SCM_BOOL_F)
-    {
-      // one wonders if such genericity is necessary  --hwn.
-      SCM callbacks = me->get_grob_property ("position-callbacks");
-      for (SCM i = callbacks; gh_pair_p (i); i = ly_cdr (i))
-	gh_call1 (ly_car (i), me->self_scm ());
-    }
-
-  set_stem_lengths (me);  
-}
-
-
-/*
-  Compute  a first approximation to the beam slope.
- */
-MAKE_SCHEME_CALLBACK (Beam, least_squares, 1);
-SCM
-Beam::least_squares (SCM smob)
-{
-  Grob *me = unsmob_grob (smob);
-
-  int count = visible_stem_count (me);
-  Interval pos (0, 0);
-  
-  if (count < 1)
-    {
-      me->set_grob_property ("positions", ly_interval2scm (pos));
-      return SCM_UNSPECIFIED;
-    }
-
-
-  Array<Real> x_posns ;
-  Link_array<Grob> stems=
-    Pointer_group_interface__extract_grobs (me, (Grob*)0, "stems");
-  Grob *commonx = common_refpoint_of_array (stems, me, X_AXIS);
-  Grob *commony = common_refpoint_of_array (stems, me, Y_AXIS);  
-
-  Real my_y = me->relative_coordinate (commony, Y_AXIS);
-  
-  Grob *fvs  = first_visible_stem (me);
-  Grob *lvs  = last_visible_stem (me);
-  
-  Interval ideal (Stem::get_stem_info (fvs).ideal_y_
-		  + fvs->relative_coordinate (commony, Y_AXIS) -my_y,
-		  Stem::get_stem_info (lvs).ideal_y_
-		  + lvs->relative_coordinate (commony, Y_AXIS) - my_y);
-  
-  Real x0 = first_visible_stem (me)->relative_coordinate (commonx, X_AXIS);
-  for (int i=0; i < stems.size (); i++)
-    {
-      Grob* s = stems[i];
-
-      Real x = s->relative_coordinate (commonx, X_AXIS) - x0;
-      x_posns.push (x);
-    }
-  Real dx = last_visible_stem (me)->relative_coordinate (commonx, X_AXIS) - x0;
-
-  
-  Real y =0;  
-  Real dydx = 0;
-  Real dy = 0;
-  
-  if (!ideal.delta ())
-    {
-      Interval chord (Stem::chord_start_y (first_visible_stem (me)),
-		      Stem::chord_start_y (last_visible_stem (me)));
-
-      /* Simple beams (2 stems) on middle line should be allowed to be
-	 slightly sloped.
-	 
-	 However, if both stems reach middle line,
-	 ideal[LEFT] == ideal[RIGHT] and ideal.delta () == 0.
-
-	 For that case, we apply artificial slope */
-      if (!ideal[LEFT] && chord.delta () && count == 2)
-	{
-	  /* FIXME. -> UP */
-	  Direction d = (Direction) (sign (chord.delta ()) * UP);
-	  pos[d] = get_thickness (me) / 2;
-	  pos[-d] = - pos[d];
-	}
-      else
-	{
-	  pos = ideal;
-	}
-
-      /*
-	For broken beams this doesn't work well. In this case, the
-	 slope esp. of the first part of a broken beam should predict
-	 where the second part goes.
-       */
-      me->set_grob_property ("least-squares-dy",
-			     gh_double2scm (pos[RIGHT] - pos[LEFT]));
-    }
-  else
-    {
-      Array<Offset> ideals;
-      for (int i=0; i < stems.size (); i++)
-	{
-	  Grob* s = stems[i];
-	  if (Stem::invisible_b (s))
-	    continue;
-	  ideals.push (Offset (x_posns[i],
-			       Stem::get_stem_info (s).ideal_y_
-			       + s->relative_coordinate (commony, Y_AXIS)
-			       - my_y));
-	}
-      
-      minimise_least_squares (&dydx, &y, ideals);
-
-      dy = dydx * dx;
-      me->set_grob_property ("least-squares-dy", gh_double2scm (dy));
-      pos = Interval (y, (y+dy));
-    }
-
-  /*
-    "position" is relative to the staff.
-   */
-  scale_drul (&pos,  1/ Staff_symbol_referencer::staff_space (me)); 
-  
-  me->set_grob_property ("positions", ly_interval2scm (pos));
- 
-  return SCM_UNSPECIFIED;
-}
-
-
-/*
-  We can't combine with previous function, since check concave and
-  slope damping comes first.
-
-TODO: we should use the concaveness to control the amount of damping
-applied.
-  
- */
-MAKE_SCHEME_CALLBACK (Beam, shift_region_to_valid, 1);
-SCM
-Beam::shift_region_to_valid (SCM grob)
-{
-  Grob *me = unsmob_grob (grob);
-  /*
-    Code dup.
-   */
-  Array<Real> x_posns ;
-  Link_array<Grob> stems=
-    Pointer_group_interface__extract_grobs (me, (Grob*)0, "stems");
-  Grob *commonx = common_refpoint_of_array (stems, me, X_AXIS);
-  Grob *commony = common_refpoint_of_array (stems, me, Y_AXIS);  
-
-  Grob *fvs = first_visible_stem (me);
-
-  if (!fvs)
-    return SCM_UNSPECIFIED;
-    
-  Real x0 =fvs->relative_coordinate (commonx, X_AXIS);
-  for (int i=0; i < stems.size (); i++)
-    {
-      Grob* s = stems[i];
-
-      Real x = s->relative_coordinate (commonx, X_AXIS) - x0;
-      x_posns.push (x);
-    }
-
-  Grob *lvs = last_visible_stem (me);
-  if (!lvs)
-    return SCM_UNSPECIFIED;
-  
-  Real dx = lvs->relative_coordinate (commonx, X_AXIS) - x0;
-
-  Drul_array<Real> pos = ly_scm2interval ( me->get_grob_property ("positions"));
-
-  scale_drul (&pos,  Staff_symbol_referencer::staff_space (me));
-  
-  Real dy = pos[RIGHT] - pos[LEFT];
-  Real y = pos[LEFT];
-  Real dydx =dy/dx;
-
-  
-  /*
-    Shift the positions so that we have a chance of finding good
-    quants (i.e. no short stem failures.)
-   */
-  Interval feasible_left_point;
-  feasible_left_point.set_full ();
-  for (int i=0; i < stems.size (); i++)
-    {
-      Grob* s = stems[i];
-      if (Stem::invisible_b (s))
-	continue;
-
-      Direction d = Stem::get_direction (s);
-
-      Real left_y =
-	Stem::get_stem_info (s).shortest_y_
-	- dydx * x_posns [i];
-
-      /*
-	left_y is now relative to the stem S. We want relative to
-	ourselves, so translate:
-       */
-      left_y += 
-	+ s->relative_coordinate (commony, Y_AXIS)
-	- me->relative_coordinate (commony, Y_AXIS);
-
-      Interval flp ;
-      flp.set_full ();
-      flp[-d] = left_y;
-
-      feasible_left_point.intersect (flp);
-    }
-      
-  if (feasible_left_point.is_empty ())
-    {
-      warning (_("Not sure that we can find a nice beam slope (no viable initial configuration found)."));
-    }
-  else if (!feasible_left_point.contains (y))
-    {
-      if (isinf (feasible_left_point[DOWN]))
-	y = feasible_left_point[UP] - REGION_SIZE;
-      else if (isinf (feasible_left_point[UP]))
-	y = feasible_left_point[DOWN]+ REGION_SIZE;
-      else
-	y = feasible_left_point.center ();
-    }
-  
-  pos = Drul_array<Real> (y, (y+dy));
-  scale_drul (&pos, 1/ Staff_symbol_referencer::staff_space (me));
-  
-  me->set_grob_property ("positions", ly_interval2scm (pos));
-  return SCM_UNSPECIFIED;
-}
-
-
-MAKE_SCHEME_CALLBACK (Beam, check_concave, 1);
-SCM
-Beam::check_concave (SCM smob)
-{
-  Grob *me = unsmob_grob (smob);
-
-  Link_array<Grob> stems = 
-    Pointer_group_interface__extract_grobs (me, (Grob*) 0, "stems");
-
-  for (int i = 0; i < stems.size ();)
-    {
-      if (Stem::invisible_b (stems[i]))
-	stems.del (i);
-      else
-	i++;
-    }
-  
-  if (stems.size () < 3)
-    return SCM_UNSPECIFIED;
-
-
-  /* Concaveness #1: If distance of an inner notehead to line between
-     two outer noteheads is bigger than CONCAVENESS-GAP (2.0ss),
-     beam is concave (Heinz Stolba).
-
-     In the case of knees, the line connecting outer heads is often
-     not related to the beam slope (it may even go in the other
-     direction). Skip the check when the outer stems point in
-     different directions. --hwn
-     
-  */
-  bool concaveness1 = false;
-  SCM gap = me->get_grob_property ("concaveness-gap");
-  if (gh_number_p (gap)
-      && Stem::get_direction(stems.top ())
-         == Stem::get_direction(stems[0]))
-    {
-      Real r1 = gh_scm2double (gap);
-      Real dy = Stem::chord_start_y (stems.top ())
-	- Stem::chord_start_y (stems[0]);
-
-      
-      Real slope = dy / (stems.size () - 1);
-      
-      Real y0 = Stem::chord_start_y (stems[0]);
-      for (int i = 1; i < stems.size () - 1; i++)
-	{
-	  Real c = (Stem::chord_start_y (stems[i]) - y0) - i * slope;
-	  if (c > r1)
-	    {
-	      concaveness1 = true;
-	      break;
-	    }
-	}
-    }
-
-    
-  /* Concaveness #2: Sum distances of inner noteheads that fall
-     outside the interval of the two outer noteheads.
-
-     We only do this for beams where first and last stem have the same
-     direction. --hwn.
-
-
-     Note that "convex" stems compensate for "concave" stems.
-     (is that intentional?) --hwn.
-  */
-  
-  Real concaveness2 = 0;
-  SCM thresh = me->get_grob_property ("concaveness-threshold");
-  Real r2 = infinity_f;
-  if (!concaveness1 && gh_number_p (thresh)
-      && Stem::get_direction(stems.top ())
-         == Stem::get_direction(stems[0]))
-    {
-      r2 = gh_scm2double (thresh);
-
-      Direction dir = Stem::get_direction(stems.top ());
-      Real concave = 0;
-      Interval iv (Stem::chord_start_y (stems[0]),
-		   Stem::chord_start_y (stems.top ()));
-      
-      if (iv[MAX] < iv[MIN])
-	iv.swap ();
-      
-      for (int i = 1; i < stems.size () - 1; i++)
-	{
-	  Real f = Stem::chord_start_y (stems[i]);
-	  concave += ((f - iv[MAX] ) >? 0) +
-	    ((f - iv[MIN] ) <? 0);
-	}
-      concave *= dir;
-      concaveness2 = concave / (stems.size () - 2);
-      
-      /*
-
-      ugh: this is the a kludge to get
-      input/regression/beam-concave.ly to behave as
-      baerenreiter.
-
-      */
-
-      /*
-	huh? we're dividing twice (which is not scalable) meaning that
-	the longer the beam, the more unlikely it will be
-	concave. Maybe you would even expect the other way around??
-
-	--hwn.
-	
-       */
-      concaveness2 /= (stems.size () - 2);
-    }
-  
-  /* TODO: some sort of damping iso -> plain horizontal */
-  if (concaveness1 || concaveness2 > r2)
-    {
-      Drul_array<Real> pos = ly_scm2interval (me->get_grob_property ("positions"));
-      Real r = linear_combination (pos, 0);
-
-      r /= Staff_symbol_referencer::staff_space (me);
-      me->set_grob_property ("positions", ly_interval2scm (Drul_array<Real> (r, r)));
-      me->set_grob_property ("least-squares-dy", gh_double2scm (0));
-    }
-
-  return SCM_UNSPECIFIED;
-}
-
-/* This neat trick is by Werner Lemberg,
-   damped = tanh (slope)
-   corresponds with some tables in [Wanske] CHECKME */
-MAKE_SCHEME_CALLBACK (Beam, slope_damping, 1);
-SCM
-Beam::slope_damping (SCM smob)
-{
-  Grob *me = unsmob_grob (smob);
-
-  if (visible_stem_count (me) <= 1)
-    return SCM_UNSPECIFIED;
-
-  SCM s = me->get_grob_property ("damping"); 
-  int damping = gh_scm2int (s);
-
-  if (damping)
-    {
-      Drul_array<Real>  pos = ly_scm2interval (me->get_grob_property ("positions"));
-      scale_drul (&pos,  Staff_symbol_referencer::staff_space (me));
-      
-      Real dy = pos[RIGHT] - pos[LEFT];
-
-      Grob *fvs  = first_visible_stem (me);
-      Grob *lvs  = last_visible_stem (me);
-
-      Grob *commonx = fvs->common_refpoint (lvs, X_AXIS);
-
-
-      Real dx = last_visible_stem (me)->relative_coordinate (commonx, X_AXIS)
-	- first_visible_stem (me)->relative_coordinate (commonx, X_AXIS);
-      Real dydx = dy && dx ? dy/dx : 0;
-      dydx = 0.6 * tanh (dydx) / damping;
-
-      Real damped_dy = dydx * dx;
-      pos[LEFT] += (dy - damped_dy) / 2;
-      pos[RIGHT] -= (dy - damped_dy) / 2;
-
-      scale_drul (&pos, 1/Staff_symbol_referencer::staff_space (me));
-      
-      me->set_grob_property ("positions", ly_interval2scm (pos));
-    }
-  return SCM_UNSPECIFIED;
-}
-
-/*
-  Report slice containing the numbers that are both in (car BEAMING)
-  and (cdr BEAMING)
- */
-Slice
-where_are_the_whole_beams(SCM beaming)
-{
-  Slice l; 
-  
-  for( SCM s = gh_car (beaming); gh_pair_p (s) ; s = gh_cdr (s))
-    {
-      if (scm_memq (gh_car (s), gh_cdr (beaming)) != SCM_BOOL_F)
-	
-	l.add_point (gh_scm2int (gh_car (s)));
-    }
-
-  return l;
-}
-
-/* Return the Y position of the stem-end, given the Y-left, Y-right
-   in POS for stem S.  This Y position is relative to S. */
-Real
-Beam::calc_stem_y (Grob *me, Grob* s, Grob ** common,
-		   Real xl, Real xr,
-		   Drul_array<Real> pos, bool french) 
-{
-  Real beam_translation = get_beam_translation (me);
-
-    
-  Real r = s->relative_coordinate (common[X_AXIS], X_AXIS) - xl;
-  Real dy = pos[RIGHT] - pos[LEFT];
-  Real dx = xr - xl;
-  Real stem_y_beam0 = (dy && dx
-		       ? r / dx
-		       * dy
-		       : 0) + pos[LEFT];
-  
-  Direction my_dir = get_grob_direction (s);
-  SCM beaming = s->get_grob_property ("beaming");
- 
-  Real stem_y = stem_y_beam0;
-  if (french)
-    {
-      Slice bm = where_are_the_whole_beams (beaming);
-      if (!bm.is_empty ())
-	stem_y += beam_translation * bm[-my_dir];
-    }
-  else
-    {
-      Slice bm = Stem::beam_multiplicity(s);
-      if (!bm.is_empty ())
-	stem_y +=bm[my_dir] * beam_translation;
-    }
-  
-  Real id = me->relative_coordinate (common[Y_AXIS], Y_AXIS)
-    - s->relative_coordinate (common[Y_AXIS], Y_AXIS);
-  
-  return stem_y + id;
-}
-
-/*
-  Hmm.  At this time, beam position and slope are determined.  Maybe,
-  stem directions and length should set to relative to the chord's
-  position of the beam.  */
-void
-Beam::set_stem_lengths (Grob *me)
-{
-  Link_array<Grob> stems=
-    Pointer_group_interface__extract_grobs (me, (Grob*)0, "stems");
-
-  if (!stems.size ())
-    return;
-  
-  Grob *common[2];
-  for (int a = 2; a--;)
-    common[a] = common_refpoint_of_array (stems, me, Axis(a));
-  
-  Drul_array<Real> pos = ly_scm2realdrul (me->get_grob_property ("positions"));
-  Real staff_space = Staff_symbol_referencer::staff_space (me);
-  scale_drul (&pos,  staff_space);
-
-  bool gap = false;
-  Real thick =0.0;
-  if (gh_number_p (me->get_grob_property ("gap-count"))
-      &&gh_scm2int (me->get_grob_property ("gap-count")))
-    {
-      gap = true;
-      thick = get_thickness(me);
-    }
-      
-  // ugh -> use commonx
-  Grob * fvs = first_visible_stem (me);
-  Grob *lvs = last_visible_stem (me);
-    
-  Real xl = fvs ? fvs->relative_coordinate (common[X_AXIS], X_AXIS) : 0.0;
-  Real xr = lvs ? lvs->relative_coordinate (common[X_AXIS], X_AXIS) : 0.0;
-  
-  for (int i=0; i < stems.size (); i++)
-    {
-      Grob* s = stems[i];
-      if (Stem::invisible_b (s))
-	continue;
-
-      bool french = to_boolean (s->get_grob_property ("french-beaming"));
-      Real stem_y = calc_stem_y (me, s, common,
-				 xl, xr,
-				 pos, french && s != lvs && s!= fvs);
-
-      /*
-	Make the stems go up to the end of the beam. This doesn't matter
-	for normal beams, but for tremolo beams it looks silly otherwise.
-       */
-      if (gap)
-	stem_y += thick * 0.5 * get_grob_direction (s);
-
-      Stem::set_stemend (s, 2* stem_y / staff_space);
-    }
-}
-
-void
-Beam::set_beaming (Grob *me, Beaming_info_list *beaming)
-{
-  Link_array<Grob> stems=
-    Pointer_group_interface__extract_grobs (me, (Grob *)0, "stems");
-  
-  Direction d = LEFT;
-  for (int i=0; i  < stems.size (); i++)
-    {
-      /*
-	Don't overwrite user settings.
-       */
-      
-      do
-	{
-	  /* Don't set beaming for outside of outer stems */	  
-	  if ((d == LEFT && i == 0)
-	      ||(d == RIGHT && i == stems.size () -1))
-	    continue;
-
-	  Grob *st =  stems[i];
-	  SCM beaming_prop = st->get_grob_property ("beaming");
-	  if (beaming_prop == SCM_EOL ||
-	      index_get_cell (beaming_prop, d) == SCM_EOL)
-	    {
-	      int b = beaming->infos_.elem (i).beams_i_drul_[d];
-	      if (i>0
-		  && i < stems.size() -1
-		  && Stem::invisible_b (st))
-		b = b <? beaming->infos_.elem(i).beams_i_drul_[-d];
-	      
-	      Stem::set_beaming (st, b, d);
-	    }
-	}
-      while (flip (&d) != LEFT);
-    }
-}
-
-int
-Beam::forced_stem_count (Grob *me) 
-{
-  Link_array<Grob>stems = 
-    Pointer_group_interface__extract_grobs (me, (Grob*) 0, "stems");
-  int f = 0;
-  for (int i=0; i < stems.size (); i++)
-    {
-      Grob *s = stems[i];
-
-      if (Stem::invisible_b (s))
-	continue;
-
-      /* I can imagine counting those boundaries as a half forced stem,
-	 but let's count them full for now. */
-      if (abs (Stem::chord_start_y (s)) > 0.1
-        && (Stem::get_direction (s) != Stem::get_default_dir (s)))
-        f++;
-    }
-  return f;
-}
-
-
-
-
-int
-Beam::visible_stem_count (Grob *me) 
-{
-  Link_array<Grob>stems = 
-    Pointer_group_interface__extract_grobs (me, (Grob*) 0, "stems");
-  int c = 0;
-  for (int i = stems.size (); i--;)
-    {
-      if (!Stem::invisible_b (stems[i]))
-        c++;
-    }
-  return c;
-}
-
-Grob*
-Beam::first_visible_stem (Grob *me) 
-{
-  Link_array<Grob>stems = 
-    Pointer_group_interface__extract_grobs (me, (Grob*) 0, "stems");
-  
-  for (int i = 0; i < stems.size (); i++)
-    {
-      if (!Stem::invisible_b (stems[i]))
-        return stems[i];
-    }
-  return 0;
-}
-
-Grob*
-Beam::last_visible_stem (Grob *me) 
-{
-  Link_array<Grob>stems = 
-    Pointer_group_interface__extract_grobs (me, (Grob*) 0, "stems");
-  for (int i = stems.size (); i--;)
-    {
-      if (!Stem::invisible_b (stems[i]))
-        return stems[i];
-    }
-  return 0;
-}
-
-
-/*
-  [TODO]
-  
-  handle rest under beam (do_post: beams are calculated now)
-  what about combination of collisions and rest under beam.
-
-  Should lookup
-    
-    rest -> stem -> beam -> interpolate_y_position ()
-*/
-MAKE_SCHEME_CALLBACK (Beam, rest_collision_callback, 2);
-SCM
-Beam::rest_collision_callback (SCM element_smob, SCM axis)
-{
-  Grob *rest = unsmob_grob (element_smob);
-  Axis a = (Axis) gh_scm2int (axis);
-
-  if (gh_number_p (rest->get_grob_property ("staff-position")))
-    return gh_int2scm (0);
-  
-  assert (a == Y_AXIS);
-
-  Grob *st = unsmob_grob (rest->get_grob_property ("stem"));
-  Grob *stem = st;
-  if (!stem)
-    return gh_double2scm (0.0);
-  Grob *beam = unsmob_grob (stem->get_grob_property ("beam"));
-  if (!beam
-      || !Beam::has_interface (beam)
-      || !Beam::visible_stem_count (beam))
-    return gh_double2scm (0.0);
-
-  Drul_array<Real> pos (0, 0);
-  SCM s = beam->get_grob_property ("positions");
-  if (gh_pair_p (s) && gh_number_p (ly_car (s)))
-    pos = ly_scm2interval (s);
-  Real staff_space = Staff_symbol_referencer::staff_space (rest);
-
-  scale_drul (&pos, staff_space);
-  
-
-  Real dy = pos[RIGHT] - pos[LEFT];
-  
-  // ugh -> use commonx
-  Real x0 = first_visible_stem (beam)->relative_coordinate (0, X_AXIS);
-  Real dx = last_visible_stem (beam)->relative_coordinate (0, X_AXIS) - x0;
-  Real dydx = dy && dx ? dy/dx : 0;
-  
-  Direction d = Stem::get_direction (stem);
-  Real stem_y = pos[LEFT] + (stem->relative_coordinate (0, X_AXIS) - x0) * dydx;
-  
-  Real beam_translation = get_beam_translation (beam);
-  Real beam_thickness = Beam::get_thickness (beam);
-  
-  int beam_count = get_direction_beam_count (beam, d);
-  Real height_of_my_beams = beam_thickness / 2
-    + (beam_count - 1) * beam_translation;
-  Real beam_y = stem_y - d * height_of_my_beams;
-
-  Grob *common_y = rest->common_refpoint (beam, Y_AXIS);
-
-  Real rest_dim = rest->extent (common_y, Y_AXIS)[d];
-  Real minimum_distance =
-    staff_space * robust_scm2double (rest->get_grob_property ("minimum-distance"), 0.0);
-
-  Real shift = d * (((beam_y - d * minimum_distance) - rest_dim) * d  <? 0.0);
-
-  shift /= staff_space;
-  Real rad = Staff_symbol_referencer::line_count (rest) * staff_space / 2;
-
-  /* Always move discretely by half spaces */
-  shift = ceil (fabs (shift * 2.0)) / 2.0 * sign (shift);
-
-  /* Inside staff, move by whole spaces*/
-  if ((rest->extent (common_y, Y_AXIS)[d] + staff_space * shift) * d
-      < rad
-      || (rest->extent (common_y, Y_AXIS)[-d] + staff_space * shift) * -d
-      < rad)
-    shift = ceil (fabs (shift)) *sign (shift);
-
-  return gh_double2scm (staff_space * shift);
-}
-
-bool
-Beam::knee_b (Grob* me)
-{
-  SCM k = me->get_grob_property ("knee");
-  if (gh_boolean_p (k))
-    return gh_scm2bool (k);
-
-  bool knee = false;
-  int d = 0;
-  for (SCM s = me->get_grob_property ("stems"); gh_pair_p (s); s = ly_cdr (s))
-    {
-      Direction dir = get_grob_direction (unsmob_grob (ly_car (s)));
-      if (d && d != dir)
-	{
-	  knee = true;
-	  break;
-	}
-      d = dir;
-    }
-  
-  me->set_grob_property ("knee", gh_bool2scm (knee));
-
-  return knee;
-}
-
-int
-Beam::get_direction_beam_count (Grob *me, Direction d )
-{
-  Link_array<Grob>stems = 
-    Pointer_group_interface__extract_grobs (me, (Grob*) 0, "stems");
-  int bc = 0;
-  
-  for (int i = stems.size (); i--;)
-    {
-      /*
-	Should we take invisible stems into account?
-       */
-      if (Stem::get_direction (stems[i]) == d)
-        bc = bc >? (Stem::beam_multiplicity (stems[i]).length () + 1);
-    }
-
-  return bc;
-}
-
-
-ADD_INTERFACE (Beam, "beam-interface",
-  "A beam. \n\n"
-" "
-"#'thickness= weight of beams, in staffspace "
-" "
-" "
-"We take the least squares line through the ideal-length stems, and "
-"then damp that using "
-" \n"
-"	damped = tanh (slope) \n"
-" \n"
-"this gives an unquantized left and right position for the beam end. "
-"Then we take all combinations of quantings near these left and right "
-"positions, and give them a score (according to how close they are to "
-"the ideal slope, how close the result is to the ideal stems, etc.). We "
-"take the best scoring combination. "
-,
-  "knee positioning-done position-callbacks concaveness-gap concaveness-threshold dir-function quant-score auto-knee-gap gap gap-count chord-tremolo beamed-stem-shorten shorten least-squares-dy damping flag-width-function neutral-direction positions space-function thickness");
-
-
diff --git a/lily/beaming-info.cc b/lily/beaming-info.cc
deleted file mode 100644
index 9382b6dc9b..0000000000
--- a/lily/beaming-info.cc
+++ /dev/null
@@ -1,105 +0,0 @@
-/*   
-     beaming-info.cc --  implement Beaming_info, Beaming_info_list
-  
-  source file of the GNU LilyPond music typesetter
-  
-  (c) 1999--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-  
- */
-
-#include "beaming.hh"
-
-Beaming_info::Beaming_info ()
-{
-  start_mom_ = 0;
-  beams_i_drul_[LEFT] = 0;
-  beams_i_drul_[RIGHT] = 0;  
-}
-
-Beaming_info::Beaming_info (Moment m, int i)
-{
-  start_mom_ = m;
-  beams_i_drul_[LEFT] = i;
-  beams_i_drul_[RIGHT] = i;  
-}
-
-const int infinity_i = INT_MAX;	// guh.
-const int at_beat = 1<<15;
-
-int
-Beaming_info_list::best_splitpoint_index (Moment &beat_length,bool subdivide) const
-{
-  int minden = infinity_i;
-  int minidx = -1;
-  Moment beat_pos;
-
-  for (int i=1; i < infos_.size (); i++)
-    {
-      beat_pos = infos_[i].start_mom_ / beat_length;
-      int den = beat_pos.den ();
-      if (infos_[i].beams_i_drul_[LEFT] == infos_[i-1].beams_i_drul_[RIGHT] && !subdivide)
-	den *= 2;
-      if (den < minden)
-	{
-	  minidx = i;
-	  minden = den;
-	}
-    }
-
-  return minidx|(minden==1 && subdivide ? at_beat : 0);
-}
-
-int
-Beaming_info_list::beam_extend_count (Direction d) const
-{
-  if (infos_.size () == 1)
-    return infos_[0].beams_i_drul_[d];
-
-  Beaming_info thisbeam  = infos_.boundary (d, 0);
-  Beaming_info next  = infos_.boundary (d, 1);
-  
-  return thisbeam.beams_i_drul_[-d] <? next.beams_i_drul_[d];
-}
-
-void
-Beaming_info_list::beamify (Moment &beat_length,bool subdivide)
-{
-  if (infos_.size () <= 1)
-    return;
-      
-  Drul_array<Beaming_info_list> splits;
-  int m = best_splitpoint_index (beat_length,subdivide);
-  bool split = subdivide && (m & at_beat);  m = m & ~at_beat;
-  splits[LEFT].infos_ = infos_.slice (0,m);
-  splits[RIGHT].infos_ = infos_.slice (m, infos_.size ());
-
-  Direction d = LEFT;
- 
-  do
-    {
-      splits[d].beamify (beat_length,subdivide);
-    }
-  while (flip (&d) != LEFT);
-
-  int middle_beams = (split ? 1 :
-		      splits[RIGHT].beam_extend_count (LEFT) <?
-		      splits[LEFT].beam_extend_count (RIGHT));
-
-  do
-    {
-      if (splits[d].infos_.size () != 1)
-	{
-	  splits[d].infos_.boundary (-d, 0).beams_i_drul_[-d] = middle_beams;
-	}
-    }
-  while (flip (&d) != LEFT);
-
-  infos_ = splits[LEFT].infos_;
-  infos_.concat (splits[RIGHT].infos_);
-}
-
-void
-Beaming_info_list::add_stem (Moment m, int b)
-{
-  infos_.push (Beaming_info (m, b));
-}
diff --git a/lily/bezier-bow.cc b/lily/bezier-bow.cc
deleted file mode 100644
index dfd290d499..0000000000
--- a/lily/bezier-bow.cc
+++ /dev/null
@@ -1,72 +0,0 @@
-/*
-  bezier.cc -- implement Bezier and Bezier_bow
-
-  source file of the GNU LilyPond music typesetter
-
-  (c) 1998--2004 Jan Nieuwenhuizen <janneke@gnu.org>
-*/
-
-#include <math.h>
-
-#include "bezier-bow.hh"
-#include "misc.hh"
-#include "bezier.hh"
-
-
-static Real
-F0_1 (Real x)
-{
-  return 2 / M_PI * atan (M_PI * x / 2);
-}
-
-Real
-slur_height (Real width, Real h_inf, Real r_0)
-{
-  return F0_1 (width * r_0 / h_inf) * h_inf;
-}
-
-  /*
-  For small w, the height should be proportional to w, for w ->
-  infinity, the height should rise to a limit asymptotically.
-
-  Hence we take F (x) such that
-  F (0) = 0 , F' (0) = 1, and F (infty) = 1
-
-  and use
-
-  h = h_infinity * F (x * r_0 / h_infinity)
-
-  
-  Examples:
-
-  * F (x) = 2/pi * atan (pi x/2)
-
-  * F (x) 1/alpha * x^alpha / (1 + x^alpha)
-
-  * (etc.)
-
-  [with the 2nd recipe you can determine how quickly the conversion from
-  `small' slurs to `big' slurs occurs.]
-
-  Although this might seem cand_idates to SCM-ify, it is not all clear
-  which parameters (ie. h_inf, r_0, F (.)) should be candidates for
-  this.  At present h_inf and r_0 come from paper settings, but we did
-  no experiments for determining the best combinations of F, h_inf and
-  r_0.
-
-  */
-
-Bezier
-slur_shape (Real width, Real h_inf, Real r_0)
-{
-  Bezier curve;
-  Real height =  slur_height (width, h_inf, r_0);
-  Real indent = height;
-
-  curve.control_[0] = Offset (0, 0);
-  curve.control_[1] = Offset (indent, height);
-  curve.control_[2] = Offset (width - indent, height);
-  curve.control_[3] = Offset (width, 0);
-  return curve;
-}
-
diff --git a/lily/bezier.cc b/lily/bezier.cc
deleted file mode 100644
index b20de964a7..0000000000
--- a/lily/bezier.cc
+++ /dev/null
@@ -1,232 +0,0 @@
-/*
-  bezier.cc -- implement Bezier and Bezier_bow
-
-  source file of the GNU LilyPond music typesetter
-
-  (c) 1998--2004 Jan Nieuwenhuizen <janneke@gnu.org>
-*/
-
-#include <math.h>
-
-#include "config.h"
-#include "warn.hh"
-#include "libc-extension.hh"
-#include "bezier.hh"
-#include "polynomial.hh"
-
-Real
-binomial_coefficient (Real over , int under)
-{
-  Real x = 1.0;
-
-  while (under)
-    {
-      x *= over / Real (under);
-
-      over  -= 1.0;
-      under --;
-    }
-  return x;
-}
-
-void
-scale (Array<Offset>* array, Real x , Real y)
-{
-  for (int i = 0; i < array->size (); i++)
-    {
-      (*array)[i][X_AXIS] = x* (*array)[i][X_AXIS];
-      (*array)[i][Y_AXIS] = y* (*array)[i][Y_AXIS];
-    }
-}
-
-void
-rotate (Array<Offset>* array, Real phi)
-{
-  Offset rot (complex_exp (Offset (0, phi)));
-  for (int i = 0; i < array->size (); i++)
-    (*array)[i] = complex_multiply (rot, (*array)[i]);
-}
-
-void
-translate (Array<Offset>* array, Offset o)
-{
-  for (int i = 0; i < array->size (); i++)
-    (*array)[i] += o;
-}
-
-/*
-
-  Formula of the bezier 3-spline
-
-  sum_{j=0}^3 (3 over j) z_j (1-t)^ (3-j)  t^j
- */
-
-Real
-Bezier::get_other_coordinate (Axis a,  Real x) const
-{
-  Axis other = Axis ((a +1)%NO_AXES);
-  Array<Real> ts = solve_point (a, x);
-
-  if (ts.size () == 0)
-    {
-      programming_error ("No solution found for Bezier intersection.");
-      return 0.0;
-    }
-  
-  Offset c = curve_point (ts[0]);
-
-  if (fabs (c[a] - x) > 1e-8)
-    programming_error ("Bezier intersection not correct?");
-  
-  return c[other];
-}
-
-
-Offset
-Bezier::curve_point (Real t)const
-{
-  Real tj = 1;
-  Real one_min_tj = (1-t)* (1-t)* (1-t);
-
-  Offset o;
-  for (int j=0 ; j < 4; j++)
-    {
-      o += control_[j] * binomial_coefficient (3, j)
-	* pow (t,j) * pow (1-t, 3-j);
-
-      tj *= t;
-      if (1-t)
-	one_min_tj /= (1-t);
-    }
-
-#ifdef PARANOID
-  assert (fabs (o[X_AXIS] - polynomial (X_AXIS).eval (t))< 1e-8);
-  assert (fabs (o[Y_AXIS] - polynomial (Y_AXIS).eval (t))< 1e-8);
-#endif
-  
-  return o;
-}
-
-
-Polynomial
-Bezier::polynomial (Axis a)const
-{
-  Polynomial p (0.0);
-  for (int j=0; j <= 3; j++)
-    {
-      p += (control_[j][a] * 	binomial_coefficient (3, j))
-	* Polynomial::power (j , Polynomial (0,1))*
-	Polynomial::power (3 - j, Polynomial (1,-1));
-    }
-
-  return p;
-}
-
-/**
-   Remove all numbers outside [0,1] from SOL
- */
-Array<Real>
-filter_solutions (Array<Real> sol)
-{
-  for (int i = sol.size (); i--;)
-    if (sol[i] < 0 || sol[i] >1)
-      sol.del (i);
-  return sol;
-}
-
-/**
-   find t such that derivative is proportional to DERIV
- */
-Array<Real>
-Bezier::solve_derivative (Offset deriv)const
-{
-  Polynomial xp=polynomial (X_AXIS);
-  Polynomial yp=polynomial (Y_AXIS);
-  xp.differentiate ();
-  yp.differentiate ();
-  
-  Polynomial combine = xp * deriv[Y_AXIS] - yp * deriv [X_AXIS];
-
-  return filter_solutions (combine.solve ());
-}
-  
-
-/*
-  Find t such that curve_point (t)[AX] == COORDINATE
-*/
-Array<Real> 
-Bezier::solve_point (Axis ax, Real coordinate) const
-{
-  Polynomial p (polynomial (ax));
-  p.coefs_[0] -= coordinate;
-  
-  Array<Real> sol (p.solve ());
-  return filter_solutions (sol);
-}
-
-/**
-   Compute the bounding box dimensions in direction of A.
- */
-Interval
-Bezier::extent (Axis a)const
-{
-  int o = (a+1)%NO_AXES;
-  Offset d;
-  d[Axis (o)] =1.0;
-  Interval iv;
-  Array<Real> sols (solve_derivative (d));
-  sols.push (1.0);
-  sols.push (0.0);  
-  for (int i= sols.size (); i--;)
-    {
-      Offset o (curve_point (sols[i]));
-      iv.unite (Interval (o[a],o[a]));
-    }
-  return iv;
-}
-
-/**
-   Flip around axis A
- */
-
-void
-Bezier::scale (Real x, Real y)
-{
-  for (int i = CONTROL_COUNT; i--;)
-    {
-      control_[i][X_AXIS] = x * control_[i][X_AXIS];
-      control_[i][Y_AXIS] = y * control_[i][Y_AXIS];
-    }
-}
-
-void
-Bezier::rotate (Real phi)
-{
-  Offset rot (complex_exp (Offset (0, phi)));
-  for (int i = 0; i < CONTROL_COUNT; i++)
-    control_[i] = complex_multiply (rot, control_[i]);
-}
-
-void
-Bezier::translate (Offset o)
-{
-  for (int i = 0; i < CONTROL_COUNT; i++)
-    control_[i] += o;
-}
-
-void
-Bezier::assert_sanity () const
-{
-  for (int i=0; i < CONTROL_COUNT; i++)
-    assert (!isnan (control_[i].length ())
-	    && !isinf (control_[i].length ()));
-}
-
-void
-Bezier::reverse ()
-{
-  Bezier b2;
-  for (int i =0; i < CONTROL_COUNT; i++)
-    b2.control_[CONTROL_COUNT-i-1] = control_[i];
-  *this = b2;
-}
diff --git a/lily/binary-source-file.cc b/lily/binary-source-file.cc
deleted file mode 100644
index 9f69b5ec98..0000000000
--- a/lily/binary-source-file.cc
+++ /dev/null
@@ -1,98 +0,0 @@
-/*
-  binary-source-file.cc -- implement Binary_source_file
-
-  source file of the LilyPond music typesetter
-
-  (c) 1997--2004 Jan Nieuwenhuizen
-*/
-
-
-#include <limits.h>		// INT_MAX
-#include <assert.h>
-
-#include "flower-proto.hh"
-#include "string.hh"
-#include "source-file.hh"
-#include "binary-source-file.hh"
-#include "string-convert.hh"
-
-Binary_source_file::Binary_source_file (String& filename_string)
-  : Source_file (filename_string)
-{
-}
-
-Binary_source_file::~Binary_source_file ()
-{
-}
-
-String
-Binary_source_file::error_string (char const* pos_str0) const
-{
-  assert (this);
-  if (!in_b (pos_str0))
-    return "";
-
-  char const* begin_str0 = pos_str0 - 8 >? to_str0 ();
-  char const* end_str0 = pos_str0 + 7 <? to_str0 () + length ();
-
-  String pre_string ((Byte const*)begin_str0, pos_str0 - begin_str0);
-  pre_string = String_convert::bin2hex (pre_string);
-  for (int i = 2; i < pre_string.length (); i += 3)
-    pre_string = pre_string.left_string (i) + " " + pre_string.cut_string (i, INT_MAX);
-  String post_string ((Byte const*)pos_str0, end_str0 - pos_str0);
-  post_string = String_convert::bin2hex (post_string);
-  for (int i = 2; i < post_string.length (); i += 3)
-    post_string = post_string.left_string (i) + " " + post_string.cut_string (i, INT_MAX);
-
-  String str = pre_string
-    + to_string ('\n')
-    + to_string (' ', pre_string.length () + 1) 
-    + post_string;
-  return str;
-}
-
-int
-Binary_source_file::get_line (char const* pos_str0) const
-{
-  if (!in_b (pos_str0))
-    return 0;
-
-  return pos_str0 - to_str0 ();
-}
-
-U8
-Binary_source_file::get_U8 ()
-{
-  return * (U8*)forward_str0 (1);
-}
-
-
-U16
-Binary_source_file::get_U16 ()
-{
-  U16 b;
-
-  b = get_U8 () << 8;
-  b |= get_U8 ();
-
-  return b;
-}
-
-/*
-  naming is wrong. This is a UNIX-endian-32 (as opposed to xinu or ixun)
- */
-
-U32
-Binary_source_file::get_U32 ()
-{
-  U32 b;
-  
-  b = get_U8 () << 24;
-  b |= get_U8 () << 16;
-  b |= get_U8 () << 8;
-  b |= get_U8 ();
-
-  return b;
-}
-
-
diff --git a/lily/box.cc b/lily/box.cc
deleted file mode 100644
index 4854743b8b..0000000000
--- a/lily/box.cc
+++ /dev/null
@@ -1,84 +0,0 @@
-/*
-  box.cc -- implement Box
-
-  source file of the GNU LilyPond music typesetter
-
-  (c) 1996--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-*/
-
-#include "box.hh"
-#include "array.hh"
-
-void
-Box::translate (Offset o)
-{
-  for (Axis i=X_AXIS; i < NO_AXES; incr (i))
-    interval_a_[i] += o[i];
-}
-
-void
-Box::unite (Box b)
-{
-  for (Axis i=X_AXIS; i < NO_AXES; incr (i))
-    interval_a_[i].unite (b[i]);
-}
-
-/**
-  Initialize to empty.
- */
-Box::Box ()
-{        
-}
-
-void
-Box::set_empty ()
-{
-  interval_a_[X_AXIS].set_empty ();
-  interval_a_[Y_AXIS].set_empty (); 
-}
-
-Box::Box (Interval ix, Interval iy)
-{
-  x () = ix;
-  y () = iy;
-}
-
-Interval &
-Box::operator[] (Axis a)
-{
-  return interval_a_[a];
-}
-
-Interval
-Box::operator[] (Axis a)const
-{
-  return interval_a_[a];
-}
-
-void
-Box::scale (Real s)
-{
-  interval_a_[X_AXIS] *= s;
-  interval_a_[Y_AXIS] *= s;
-}
-
-void
-Box::add_point (Offset o)
-{
-  interval_a_[X_AXIS].add_point (o[X_AXIS]);
-  interval_a_[Y_AXIS].add_point (o[Y_AXIS]);  
-}
-
-Offset
-Box::center () const
-{
-  return Offset (interval_a_[X_AXIS].center(),
-		 interval_a_[Y_AXIS].center()); 
-}
-void
-Box::widen (Real x, Real y)
-{
-  interval_a_[X_AXIS].widen (x);
-  interval_a_[Y_AXIS].widen (y);
-  
-}
diff --git a/lily/break-algorithm.cc b/lily/break-algorithm.cc
deleted file mode 100644
index 56f8e2e109..0000000000
--- a/lily/break-algorithm.cc
+++ /dev/null
@@ -1,108 +0,0 @@
-/*
-  break.cc -- implement Break_algorithm
-
-  source file of the GNU LilyPond music typesetter
-
-  (c) 1996--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-*/
-
-#include "paper-column.hh"
-#include "break-algorithm.hh"
-#include "paper-def.hh"
-#include "system.hh"
-#include "paper-score.hh"
-#include "paper-column.hh"
-#include "cpu-timer.hh"
-
-#include "simple-spacer.hh"
-#include "group-interface.hh"
-
-
-Array<int>
-Break_algorithm::find_break_indices () const
-{
-  Link_array<Grob> all = pscore_->system_->columns ();
-  Array<int> retval;
-
-  for (int i=0; i < all.size (); i++)
-    if (Item::breakable_b (all[i]))
-      retval.push (i);
-
-  if (linewidth_ <=0)
-    while (retval.size () >2)
-      retval.del (1);
-
-  return retval;
-}
-
-
-Link_array<Grob>
-Break_algorithm::find_breaks () const
-{
-  Link_array<Grob> all = pscore_->system_->columns ();
-  Link_array<Grob> retval;
-
-  for (int i=0; i < all.size (); i++)
-    if (Item::breakable_b (all[i]))
-      retval.push (all[i]);
-
-  if (linewidth_ <=0)
-    while (retval.size () >2)
-      retval.del (1);
-
-  return retval;
-}
-
-
-Simple_spacer*
-Break_algorithm::generate_spacing_problem (Link_array<Grob> const &curline,
-					   Interval line) const
-{
-  Simple_spacer * sp =  new Simple_spacer;
-
-  /*
-    this is hardcoded, but this shouldn't happen anyway.
-    used to be get_realvar (ly_symbol2scm ("loose_column_distance"));        
-   */
-  sp->default_space_ = 1.0;
-
-
-  sp->indent_ = line[LEFT];
-
-  /*
-    sort out how interfacing this should work;
-   */
-  if (line.is_empty ())
-    {
-     sp->line_len_ = -1;
-    }
-  else
-    sp->line_len_ = line.length ();
-  
-  sp->add_columns (curline);
-
-
-  return sp;
-}
-
-Break_algorithm::Break_algorithm ()
-{
-  pscore_ = 0;
-  linewidth_ = 0;
-}
-
-void
-Break_algorithm::set_pscore (Paper_score*s)
-{
-  pscore_ = s;
-  linewidth_ = s->paper_->get_realvar (ly_symbol2scm ("linewidth"));
-}
-
-Array<Column_x_positions>
-Break_algorithm::solve () const
-{
-  Array<Column_x_positions> h= do_solve ();
-  
-  return h;
-}
-
diff --git a/lily/break-align-engraver.cc b/lily/break-align-engraver.cc
deleted file mode 100644
index a3ef11c098..0000000000
--- a/lily/break-align-engraver.cc
+++ /dev/null
@@ -1,157 +0,0 @@
-/*   
-  break-align-engraver.cc --  implement Break_align_engraver
-  
-  source file of the GNU LilyPond music typesetter
-  
-  (c) 1999--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-  
- */
-#include "engraver.hh"
-#include "protected-scm.hh"
-#include "break-align-interface.hh"
-#include "item.hh"
-#include "align-interface.hh"
-#include "axis-group-interface.hh"
-
-
-class Break_align_engraver : public Engraver
-{
-  Item *align_;
-  Protected_scm column_alist_;
-  Item *edge_;
-
-  void add_to_group (SCM,Item*);
-protected:
-  virtual void finalize ();
-  virtual void acknowledge_grob (Grob_info i);
-  virtual void stop_translation_timestep ();
-  void add_column (SCM);
-  
-public:
-  TRANSLATOR_DECLARATIONS(Break_align_engraver);
-};
-
-void
-Break_align_engraver::add_column (SCM smob)
-{
-  Grob * e = unsmob_grob (smob);
-  Break_align_interface::add_element (align_,e);
-  typeset_grob (e);
-}
-
-void
-Break_align_engraver::finalize ()
-{
-  column_alist_ = SCM_EOL;
-}
-
-void
-Break_align_engraver::stop_translation_timestep ()
-{
-  SCM order = get_property ("breakAlignOrder");
-  for (; gh_pair_p (order); order = ly_cdr (order))
-    {
-      SCM p = scm_assoc (ly_car (order), column_alist_);
-      if (gh_pair_p (p))
-	{
-	  add_column (ly_cdr (p));
-	  column_alist_ = scm_assoc_remove_x (column_alist_, ly_car (order));
-	}
-    }
-
-  for (SCM p = column_alist_; gh_pair_p (p); p = ly_cdr (p))
-    {
-      SCM pair = ly_car (p);
-      add_column (ly_cdr (pair));
-    }
-
-  
-  column_alist_ = SCM_EOL;
-
-  if (align_)
-    {
-      typeset_grob (align_);
-      align_ = 0;
-    }
-  if (edge_)
-    {
-      typeset_grob (edge_);
-      edge_ = 0;
-    }
-}
-
-
-Break_align_engraver::Break_align_engraver ()
-{
-  column_alist_ = SCM_EOL;
-  edge_ = 0;
-  align_ = 0;
-}
-
-void
-Break_align_engraver::acknowledge_grob (Grob_info inf)
-{
-  if (Item * item = dynamic_cast <Item *> (inf.grob_))
-    {
-      /*
-	Removed check for item->empty (X_AXIS). --hwn 20/1/04
-       */
-      if (item->get_parent (X_AXIS))
-	return;
-
-      SCM bp=item->get_grob_property ("breakable");
-      bool breakable = (to_boolean (bp));
-      if (!breakable)
-	return ;
-
-      SCM align_name = item->get_grob_property ("break-align-symbol");
-      if (!gh_symbol_p (align_name))
-	return ;
-
-      if (!align_)
-	{
-	  align_ = make_item ("BreakAlignment");
-
-	  announce_grob (align_, SCM_EOL);
-
-	  edge_ = make_item ("LeftEdge");
-	  add_to_group (edge_->get_grob_property ("break-align-symbol"), edge_);
-	  announce_grob(edge_, SCM_EOL);
-	}
-      
-      add_to_group (align_name, item);
-    }
-}
-
-void
-Break_align_engraver::add_to_group(SCM align_name, Item*item)
-{
-  SCM s = scm_assoc (align_name, column_alist_);
-  Item * group = 0;
-
-  if (s != SCM_BOOL_F)
-    {
-      Grob *e =  unsmob_grob (ly_cdr (s));
-      group = dynamic_cast<Item*> (e);
-    }
-  else
-    {
-      group = make_item ("BreakAlignGroup");
-
-      group->set_grob_property ("break-align-symbol", align_name);
-      group->set_parent (align_, Y_AXIS);
-      announce_grob(group, item->self_scm());
-	  
-      column_alist_ = scm_assoc_set_x (column_alist_, align_name, group->self_scm ());
-
-    }
-  Axis_group_interface::add_element (group, item);
-}
-
-ENTER_DESCRIPTION(Break_align_engraver,
-/* descr */       "Align grobs with corresponding break-align-symbols into groups, and order the groups according to breakAlignOrder",
-/* creats*/       "BreakAlignment BreakAlignGroup LeftEdge",
-/* accepts */     "",
-/* acks  */       "break-aligned-interface"
-,/* reads */       "breakAlignOrder",
-/* write */       "");
diff --git a/lily/break-align-interface.cc b/lily/break-align-interface.cc
deleted file mode 100644
index de8ba98a11..0000000000
--- a/lily/break-align-interface.cc
+++ /dev/null
@@ -1,263 +0,0 @@
-/*
-  break-align-interface.cc -- implement Break_align_interface
-
-  source file of the GNU LilyPond music typesetter
-
-  (c) 1997--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-*/
-
-
-#include <math.h>
-#include <libc-extension.hh>	// isinf
-
-#include "self-alignment-interface.hh"
-#include "side-position-interface.hh"
-#include "axis-group-interface.hh"
-#include "warn.hh"
-#include "lily-guile.hh"
-#include "break-align-interface.hh"
-#include "dimensions.hh"
-#include "paper-def.hh"
-#include "paper-column.hh"
-#include "group-interface.hh"
-#include "align-interface.hh"
-
-MAKE_SCHEME_CALLBACK (Break_align_interface,alignment_callback,2);
-
-SCM
-Break_align_interface::alignment_callback (SCM element_smob, SCM axis)
-{
-  Grob *me = unsmob_grob (element_smob);
-  Axis a = (Axis) gh_scm2int (axis);
-
-  assert (a == X_AXIS);
-  Grob *par = me->get_parent (a);
-  if (par && !to_boolean (par->get_grob_property ("positioning-done")))
-    {
-      par->set_grob_property ("positioning-done", SCM_BOOL_T);
-      Break_align_interface::do_alignment (par);
-    }
-    
-  return gh_double2scm (0);
-}
-
-MAKE_SCHEME_CALLBACK (Break_align_interface,self_align_callback,2);
-SCM
-Break_align_interface::self_align_callback (SCM element_smob, SCM axis)
-{
-  Grob *me = unsmob_grob (element_smob);
-  Axis a = (Axis) gh_scm2int (axis);
-  assert (a == X_AXIS);
-  
-  Item* item = dynamic_cast<Item*> (me);
-  Direction bsd = item->break_status_dir ();
-  if (bsd == LEFT)
-    {
-      me->set_grob_property ("self-alignment-X", scm_int2num (RIGHT));
-    }
-
-  /*
-    Force break alignment itself to be done first, in the case
-   */
-  return Self_alignment_interface::aligned_on_self (element_smob, axis);  
-}
-
-void
-Break_align_interface::add_element (Grob*me, Grob *toadd)
-{
-  Axis_group_interface::add_element (me, toadd);
-}
-
-void
-Break_align_interface::do_alignment (Grob *me)
-{
-  Item * item = dynamic_cast<Item*> (me);
-  Link_array<Grob> elems
-    = Pointer_group_interface__extract_grobs (me, (Grob*)0,
-						 "elements");
-  Array<Interval> extents;
-
-  int last_nonempty = -1; 
-  for (int i=0; i < elems.size (); i++) 
-    {
-      Interval y = elems[i]->extent (elems[i], X_AXIS);
-      extents.push (y);
-      if (!y.is_empty ())
-	last_nonempty = i; 
-    }
-
-  int idx  = 0;
-  while (idx < extents.size  () && extents[idx].is_empty ())
-    idx++;
-  
-  Array<Real> offsets;
-  offsets.set_size (elems.size());
-  for (int i= 0; i < offsets.size();i ++)
-    offsets[i] = 0.0;
-
-
-  Real extra_right_space = 0.0;
-  int edge_idx = -1;
-  while (idx < elems.size())
-    {
-      int next_idx = idx+1;
-      while (next_idx < elems.size() &&
-	     extents[next_idx].is_empty () )
-	next_idx++;
-      
-      Grob *l = elems[idx];
-      Grob *r = 0;
-
-      if (next_idx < elems.size())
-	r = elems[next_idx];
-
-      SCM alist = SCM_EOL;
-
-
-      /*
-	Find the first grob with a space-alist entry.
-       */
-      for (SCM s= l->get_grob_property ("elements");
-	   gh_pair_p (s) ; s = gh_cdr (s))
-	  {
-	    Grob *elt = unsmob_grob (gh_car (s));
-
-	    if (edge_idx < 0
-		&& elt->get_grob_property ("break-align-symbol")
-		== ly_symbol2scm( "left-edge"))
-	      edge_idx = idx;
-	    
-	    SCM l =elt->get_grob_property ("space-alist");
-	    if (gh_pair_p(l))
-	      {
-		alist= l;
-		break;
-	      }
-	  }
-
-      SCM rsym = r ? SCM_EOL : ly_symbol2scm ("right-edge");
-
-      /*
-	We used to use #'cause to find out the symbol and the spacing
-	table, but that gets icky when that grob is suicided for some
-	reason.
-      */
-      for (SCM s = r ? r->get_grob_property ("elements") : SCM_EOL;
-	   !gh_symbol_p (rsym) && gh_pair_p (s); s = gh_cdr (s))
-	{
-	  Grob * elt =unsmob_grob(gh_car (s));
-
-	  rsym = elt->get_grob_property ("break-align-symbol");
-	}
-	
-      if (rsym  == ly_symbol2scm("left-edge"))
-	edge_idx = next_idx;
-
-      SCM entry = SCM_EOL;
-      if (gh_symbol_p (rsym))
-	entry = scm_assq (rsym, alist);
-
-      bool entry_found = gh_pair_p (entry);
-      if (!entry_found)
-	{
-	  String sym_string;
-	  if(gh_symbol_p (rsym))
-	    sym_string = ly_symbol2string (rsym);
-
-	  String orig_string ;
-	  if (unsmob_grob (l->get_grob_property ("cause")))
-	    orig_string = unsmob_grob (l->get_grob_property ("cause"))->name ();
-	  
-	  programming_error (_f("No spacing entry from %s to `%s'",
-				orig_string.to_str0 (),
-				sym_string.to_str0 ()));
-	}
-
-      Real distance = 1.0;
-      SCM type = ly_symbol2scm ("extra-space");
-      
-      if (entry_found)
-	{
-	  entry = gh_cdr (entry);
-	  
-	  distance = gh_scm2double (gh_cdr (entry));
-	  type = gh_car (entry) ;
-	}
-
-      if (r)
-	{
-	  if (type == ly_symbol2scm ("extra-space"))
-	    offsets[next_idx] = extents[idx][RIGHT] + distance
-	      - extents[next_idx][LEFT];
-	  /* should probably junk minimum-space */
-	  else if (type == ly_symbol2scm("minimum-space"))
-	    offsets[next_idx] = extents[idx][RIGHT] >? distance;
-	}
-      else
-	{
-	  extra_right_space = distance;	  
-	}
-      
-      idx = next_idx;
-    }
-
-  Real here = 0.0;
-  Interval total_extent;
-
-  Real alignment_off =0.0;  
-  for (int i =0 ; i < offsets.size(); i++)
-    {
-      here += offsets[i];
-      if (i == edge_idx)
-	alignment_off = -here; 
-      total_extent.unite (extents[i] + here);
-    }
-
-
-  if (item->break_status_dir () == LEFT)
-    {
-      alignment_off = - total_extent[RIGHT] - extra_right_space;
-    }
-  else if (edge_idx < 0)
-    alignment_off = -total_extent[LEFT];
-
-  here = alignment_off;
-  for (int i =0 ; i < offsets.size(); i++)
-    {
-      here += offsets[i];
-      elems[i]->translate_axis (here, X_AXIS);
-    }
-}
-
-
-ADD_INTERFACE (Break_aligned_interface, "break-aligned-interface",
-	       "Items that are aligned in prefatory matter.\n"
-	       "\n"
-	       "The spacing of these items is controlled by the space-alist\n"
-	       "property. It contains a list break-align-symbols with a specification\n"
-	       "of the associated space. The space specification can be "
-	       "@table @code\n"
-	       "@item (minimum-space . @var{spc}))\n"
-	       "  Pad space until the distance is @var{spc}\n"
-	       "@item (fixed-space . @var{spc})\n"
-	       "  Set a fixed space\n" 
-	       "@item (semi-fixed-space . @var{spc})\n"
-	       "  Set a space. Half of it is fixed and half is stretchable. \n"
-	       "(does not work at start of line. fixme)\n"
-	       "@item (extra-space . @var{spc})\n"
-	       "  Add @var{spc} amount of space.\n"
-	       "@end table\n"
-	       "\n"
-	       "Special keys for the alist are 'first-note and 'next-note, signifying\n"
-	       "the first note on a line, and the next note halfway a line.\n"
-	       "\n"
-	       "Rules for this spacing are much more complicated than this. \n"
-	       "See [Wanske] page 126 -- 134, [Ross] pg 143 -- 147\n",
-	       "break-align-symbol space-alist");
-
-ADD_INTERFACE (Break_align_interface, "break-alignment-interface",
-  "See @ref{break-aligned-interface}.",
-  "positioning-done");
-
-
-
diff --git a/lily/break-substitution.cc b/lily/break-substitution.cc
deleted file mode 100644
index 5f2f2d81f1..0000000000
--- a/lily/break-substitution.cc
+++ /dev/null
@@ -1,537 +0,0 @@
-#include <stdio.h>
-#include <stdlib.h>
-
-#include  "grob.hh"
-#include "item.hh"
-#include  "spanner.hh"
-#include  "system.hh"
-
-static SCM break_criterion; 
-void
-set_break_subsititution (SCM criterion)
-{
-  break_criterion = criterion;
-}
-
-/*
-  Perform the substitution for a single grob.   
- */
-SCM
-substitute_grob (Grob *sc)
-{
-  if (SCM_INUMP (break_criterion))
-    {
-      Item * i = dynamic_cast<Item*> (sc);
-      Direction d = to_dir (break_criterion);
-      if (i && i->break_status_dir () != d)
-	{
-	  Item *br = i->find_prebroken_piece (d);
-	  return (br) ? br->self_scm () : SCM_UNDEFINED;
-	}
-    }
-  else
-    {
-      System * line
-	= dynamic_cast<System*> (unsmob_grob (break_criterion));
-      if (sc->get_system () != line)
-	{
-	  sc = sc->find_broken_piece (line);
-
-	}
-	  
-      /* now: !sc || (sc && sc->get_system () == line) */
-      if (!sc)
-	return SCM_UNDEFINED;
-
-      /* now: sc && sc->get_system () == line */
-      if (!line)
-	return sc->self_scm();
-
-      /*
-	We don't return SCM_UNDEFINED for
-	suicided grobs, for two reasons
-
-	- it doesn't work (strange disappearing objects)
-
-	- it forces us to mark the parents of a grob, leading to
-	a huge recursion in the GC routine.
-       */
-
-      if (sc->common_refpoint (line, X_AXIS)
-	  && sc->common_refpoint (line, Y_AXIS))
-	{
-	  return sc->self_scm ();
-	}
-      return SCM_UNDEFINED;
-    }
-
-  return sc->self_scm();
-}
-
-
-
-/*
-  Do break substitution in S, using CRITERION. Return new value.
-  CRITERION is either a SMOB pointer to the desired line, or a number
-  representing the break direction. Do not modify SRC.
-
-  It is rather tightly coded, since it takes a lot of time; it is
-  one of the top functions in the profile.
-
-  We don't pass break_criterion as a parameter, since it is
-  `constant', but takes up stack space.
-
-  It would be nice if we could do this in-place partially.  We now
-  generate a lot of garbage.
-*/
-SCM
-do_break_substitution (SCM src)
-{
- again:
- 
-  if (unsmob_grob (src))
-    {
-      return substitute_grob (unsmob_grob (src));
-    }
-  else if (gh_vector_p (src))
-    {
-      int  l = SCM_VECTOR_LENGTH (src);
-      SCM nv = scm_c_make_vector (l, SCM_UNDEFINED);
-
-      for (int i  =0 ; i< l ; i++)
-	{
-	  SCM si = scm_int2num (i);
-	  scm_vector_set_x (nv, si, do_break_substitution (scm_vector_ref (src, si))); 
-	}
-    }
-  else if (ly_pair_p (src)) 
-    {
-      /*
-	UGH! breaks on circular lists.
-      */
-      SCM newcar = do_break_substitution (ly_car (src));
-      SCM oldcdr = ly_cdr (src);
-      
-      if (newcar == SCM_UNDEFINED
-	  && (gh_pair_p (oldcdr) || oldcdr == SCM_EOL))
-	{
-	  /*
-	    This is tail-recursion, ie. 
-	    
-	    return do_break_substution (cdr);
-
-	    We don't want to rely on the compiler to do this.  Without
-	    tail-recursion, this easily crashes with a stack overflow.  */
-	  src =  oldcdr;
-	  goto again;
-	}
-
-      return scm_cons (newcar, do_break_substitution (oldcdr));
-    }
-  else
-    return src;
-
-  return src;
-}
-
-
-/*
-  Perform substitution on GROB_LIST using a constant amount of stack.
- */
-SCM
-substitute_grob_list (SCM grob_list)
-{
-  SCM l = SCM_EOL;
-  SCM * tail = &l;
-
-  for (SCM s = grob_list; gh_pair_p (s); s =  gh_cdr (s))
-    {
-      SCM n= substitute_grob (unsmob_grob (gh_car (s)));
-
-      if (n != SCM_UNDEFINED)
-	{
-	  *tail = gh_cons (n, SCM_EOL);
-	  tail = SCM_CDRLOC(*tail);
-	}
-    }
-
-  return l;
-}
-
-/*
-  We don't do
-
-  forall b in broken-childs:
-     forall p in properties:
-        forall g in p (if grob-list):
-	  g := substitute (g)
-
-  for spanners since this is O(SYSTEMCOUNT * GROBCOUNT), and SYSTEMCOUNT =
-  O(GROBCOUNT), we have a quadratic algorithm. --for a single spanner
-
-  This is problematic: with large (long) scores, the costs can be
-  significant; especially all-elements in System, can become huge. For
-  a typical 50 page score, it requires running through a 100k list 50
-  times.
-  
-  Instead:
-
-  forall p in properties:
-     (if grob list)  
-
-     put  grob list in array,
-
-     reorder array so spanners are separate -- O(grobcount)
-     
-     find first and last indexes of grobs on a specific system
-
-     for items this is O(itemcount)
-
-     for spanners this is O(sum-of spanner-system-ranges)
-
-     perform the substitution O(sum-of spanner-system-ranges)
-
-
-  The complexity is harder to determine, but should be subquadratic;
-
-  For the situation above, we run through the entire 100k list once,
-  and also (more or less) once through the item part of the 100k (say
-  98k elements) of the list. 
-
-
-These timings were measured without -O2.
-
-  lehre, before 28.98 seconds, after: 27.91 seconds, 3.5 %. 
-
-  coriolan, before 2:30, after:  1:59. Increase of 20%.
-
-  moz-k498-p1, before 24.10, after: 19.790s, Increase of 18%
-
-  
-*/
-
-
-Slice
-spanner_system_range (Spanner* sp)
-{
-  Slice rv;
-  
-  if (System*st = sp->get_system())
-    {
-      rv = Slice (st->rank_, st->rank_);
-    }
-  else 
-    {
-      if (sp->broken_intos_.size())
-	rv = Slice (sp->broken_intos_[0]->get_system()->rank_,
-		    sp->broken_intos_.top()->get_system()->rank_);
-    }
-  return rv;
-}
-
-Slice
-item_system_range (Item* it)
-{
-  if (System*st= it->get_system())
-    return Slice (st->rank_, st->rank_);
-
-  Slice sr;
-  Direction d = LEFT;
-  do
-    {
-      Item *bi = it->find_prebroken_piece (d);
-      if (bi && bi->get_system())
-	sr.add_point (bi->get_system()->rank_);
-    }
-  while (flip(&d)!=LEFT);
-  
-  return sr;
-}
-
-Slice
-grob_system_range (Grob *g)
-{
- if (Spanner*s = dynamic_cast<Spanner*>(g))
-   return spanner_system_range (s);
- else if (Item* it = dynamic_cast<Item*> (g))
-   return item_system_range (it);
- else
-   return Slice();
-}
-
-
-
-struct Substitution_entry
-{
-  Grob * grob_;
-  short left_;
-  short right_;
-  
-  void set (Grob*g, Slice sr)
-  {
-    grob_ = g;
-    /*
-      duh, don't support scores with more than 32000 systems.
-    */
-    if (sr.is_empty ())
-      {
-	/*
-	  overflow if we don't treat this specially.
-	 */
-	left_ = 1;
-	right_ = -1;
-      }
-    else
-      {
-	left_ = sr[LEFT];
-	right_ = sr[RIGHT];
-      }
-  }
-  Substitution_entry()
-  {
-    grob_ =0;
-    left_ = right_ = -2;
-  }
-  
-  int length () { return right_ - left_ ; }
-  static int
-  item_compare (void const * a , void const * b)
-  {
-    return ((Substitution_entry*)a)->left_ -
-      ((Substitution_entry*)b)->left_;
-  }
- 
-  static int
-  spanner_compare (void const * a , void const * b)
-  {
-    return ((Substitution_entry*)a)->length() -
-      ((Substitution_entry*)b)->length ();
-  }
-};
-  
-
-    
-bool
-Spanner::fast_fubstitute_grob_list (SCM sym,
-				    SCM grob_list)
-{
-  int len = scm_ilength (grob_list);
-
-  /*
-    Only do this complicated thing for large lists. This has the added
-    advantage that we won't screw up the ordering for elements in
-    alignments (which typically don't have more than 10 grobs.)
-   */
-  
-  if (len < 300)
-    return false;
-
-
-  /*
-    TODO : should not free it some time? 
-   */
-  static Substitution_entry * vec;
-  static int vec_room;
-
-  if (vec_room < len)
-    {
-      vec = (Substitution_entry*) realloc (vec, sizeof (Substitution_entry) * len);
-      vec_room = len;
-    }
-  
-  Slice system_range = spanner_system_range (this);
-
-  Array<Slice> it_indices;
-  Array<Slice> sp_indices;
-  for (int i = 0; i <= system_range.length (); i++)
-    {
-      it_indices.push (Slice (len, 0));
-      sp_indices.push (Slice (len, 0));
-    }
-  
-  
-  int sp_index = len;
-  int it_index = 0;
-  for (SCM s = grob_list; gh_pair_p (s); s = gh_cdr (s))
-    {
-      Grob * g = unsmob_grob (gh_car(s));
-
-      Slice sr = grob_system_range (g);
-      sr.intersect (system_range);
-
-      int idx = 0;
-      if (dynamic_cast<Spanner*>(g))
-	{
-	  idx =--sp_index;
-	}
-      else if (dynamic_cast<Item*> (g))
-	{
-	  idx = it_index++;
-	}
-
-      vec[idx].set (g, sr);
-    }
-
-  qsort (vec, it_index,
-	 sizeof (Substitution_entry), &Substitution_entry::item_compare);
-
- Array<Slice> *arrs[] = {
-	&it_indices, &sp_indices
- };
-        
- for (int i = 0; i < it_index ;i++)
-   {
-     for (int j = vec[i].left_; j <= vec[i].right_; j++)
-       {
-	 it_indices[j - system_range[LEFT]].add_point (i);
-       }
-   }
-
- /*
-   sorting vec[sp_index.. len]
-   is a waste of time -- the staff-spanners screw up the
-   ordering, since they go across the entire score.
- */
- for (int i = sp_indices.size(); i--;)
-   sp_indices[i]= Slice (sp_index, len-1);
-
- 
-  assert (it_index <= sp_index);
-
-  assert (broken_intos_.size () == system_range.length () + 1); 
-  for (int i = 0; i < broken_intos_.size(); i++)
-    {
-      Grob * sc = broken_intos_[i];
-      System * l = sc->get_system ();
-      set_break_subsititution (l ? l->self_scm(): SCM_UNDEFINED);
-
-      SCM newval = SCM_EOL;
-      SCM * tail = &newval;
-
-     for (int k = 0; k < 2;k++)
-	for (int j = (*arrs[k])[i][LEFT]; j <= (*arrs[k])[i][RIGHT]; j++)
-	  {
-	    SCM subs =substitute_grob (vec[j].grob_);
-	    if (subs!= SCM_UNDEFINED)
-	      {
-		*tail = scm_cons (subs, SCM_EOL);
-		
-		tail = SCM_CDRLOC(*tail);
-	      }
-
-	  }
-	      
-#ifdef PARANOIA
-     
-      printf ("%d (%d), sp %d (%d)\n",
-	      it_indices [i].length (), it_index,
-	      sp_indices[i].length() , len -sp_index);
-	      
-      {
-	SCM l1 =substitute_grob_list (grob_list);
-	assert (scm_ilength (l1) == scm_ilength (newval));
-      }
-#endif
-
-      /*
-	see below.
-       */
-      if (sym == ly_symbol2scm ("all-elements"))
-	  sc->mutable_property_alist_
-	    = scm_assq_remove_x (sc->mutable_property_alist_,
-			     ly_symbol2scm ("all-elements"));
-      
-      sc->mutable_property_alist_ = scm_acons (sym, newval,
-					       sc->mutable_property_alist_);
-    }
-
-  return true;
-}
-
-
-SCM grob_list_p; 
-
-/*
-  Although the substitution can be written as
-
-  property_alist = do_substitution (other_property_alist),
-
-  we have a special function here: we want to invoke a special
-  function for lists of grobs. These can be very long for large
-  orchestral scores (eg. 1M elements). do_break_substitution() can
-  recurse many levels, taking lots of stack space.
-
-  This becomes a problem if lily is linked against guile with
-  pthreads. pthreads impose small limits on the stack size.
- */
-SCM
-substitute_mutable_property_alist (SCM alist)
-{
-  if (!grob_list_p)
-    grob_list_p = scm_c_eval_string ("grob-list?");
-
-  SCM l = SCM_EOL;
-  SCM *tail = &l;
-  for (SCM s = alist; gh_pair_p (s); s = gh_cdr (s))
-    {
-      SCM sym = gh_caar(s);
-      SCM val = gh_cdar(s);
-      SCM type = scm_object_property (sym, ly_symbol2scm ("backend-type?"));
-
-      if (type == grob_list_p)
-	val = substitute_grob_list (val);
-      else
-	val = do_break_substitution (val);
-
-      *tail = gh_cons (gh_cons (sym, val), SCM_EOL);
-      tail = SCM_CDRLOC (*tail);
-    }
-
-  return l;
-}
-
-
-void
-Spanner::substitute_one_mutable_property (SCM sym,
-					  SCM val)
-{
-  SCM type = scm_object_property (sym, ly_symbol2scm ("backend-type?"));
-  Spanner*s = this;
-  
-  bool fast_done = false;
-  if (type == grob_list_p)
-    fast_done = s->fast_fubstitute_grob_list (sym, val);
-
-  if (!fast_done)  
-    for (int i = 0; i < s->broken_intos_ .size (); i++)
-      {
-	Grob * sc = s->broken_intos_[i];
-	System * l = sc->get_system ();
-	set_break_subsititution (l ? l->self_scm () : SCM_UNDEFINED);
-
-	SCM newval = (type == grob_list_p)
-	  ? substitute_grob_list (val)
-	  : do_break_substitution (val);
-
-	/*
-	  For the substitution of a single property, we tack the result onto
-	  mutable_property_alist_ ; mutable_property_alist_ is empty after
-	  Grob::Grob (Grob const&), except that System has all-elements set,
-	  as a side product of typeset_grob() on newly copied spanners.
-
-	  Here we clear that list explicitly to free some memory and
-	  counter some of the confusion I encountered while debugging
-	  another problem
-
-	  (hwn 4/2/04)
-	*/
-	if (sym == ly_symbol2scm ("all-elements"))
-	  sc->mutable_property_alist_
-	    = scm_assq_remove_x (sc->mutable_property_alist_,
-			     ly_symbol2scm ("all-elements"));
-	
-	sc->mutable_property_alist_ = scm_cons (scm_cons (sym, newval),
-						sc->mutable_property_alist_);
-      }
-}
-				       
diff --git a/lily/breathing-sign-engraver.cc b/lily/breathing-sign-engraver.cc
deleted file mode 100644
index 171cc1a63c..0000000000
--- a/lily/breathing-sign-engraver.cc
+++ /dev/null
@@ -1,82 +0,0 @@
-/*
-  breathing_sign-engraver.cc -- implement Breathing_sign_engraver
-
-  (c) 1999--2004 Michael Krause
-
-  written for the GNU LilyPond music typesetter
-
-TODO:
-
-  . Cancel any beams running through the breathing sign
- ([e8 \breathe f e f] should become [e8] \breathe [f e f])
-  . Spacing is not yet completely pretty
-
-*/
-
-#include "staff-symbol-referencer.hh"
-#include "breathing-sign.hh"
-#include "event.hh"
-
-#include "engraver-group-engraver.hh"
-#include "item.hh"
-#include "engraver.hh"
-
-
-class Breathing_sign_engraver : public Engraver {
-public:
-  TRANSLATOR_DECLARATIONS(Breathing_sign_engraver);
-  
-protected:
-  virtual bool try_music (Music *req);
-  virtual void process_acknowledged_grobs ();
-  virtual void stop_translation_timestep ();
-
-private:
-  Music * breathing_sign_req_;
-  Grob * breathing_sign_;
-};
-
-Breathing_sign_engraver::Breathing_sign_engraver ()
-{
-  breathing_sign_ = 0;
-  breathing_sign_req_ = 0;
-}
-
-bool
-Breathing_sign_engraver::try_music (Music*r)
-{
-  breathing_sign_req_ = r;
-  return true;
-}
-
-void
-Breathing_sign_engraver::process_acknowledged_grobs ()
-{
-  if (breathing_sign_req_ && ! breathing_sign_)
-    {
-      breathing_sign_ = make_item ("BreathingSign");
-
-      announce_grob(breathing_sign_, breathing_sign_req_->self_scm());
-      breathing_sign_req_ = 0;
-    }
-}
-
-void 
-Breathing_sign_engraver::stop_translation_timestep ()
-{
-  if (breathing_sign_)
-    {
-      typeset_grob (breathing_sign_);
-      breathing_sign_ = 0;
-    }
-  breathing_sign_req_ = 0;
-}
-
-
-ENTER_DESCRIPTION(Breathing_sign_engraver,
-/* descr */       "",
-/* creats*/       "BreathingSign",
-/* accepts */     "breathing-event",
-/* acks  */      "",
-/* reads */       "",
-/* write */       "");
diff --git a/lily/breathing-sign.cc b/lily/breathing-sign.cc
deleted file mode 100644
index 8805654b19..0000000000
--- a/lily/breathing-sign.cc
+++ /dev/null
@@ -1,195 +0,0 @@
-/*
-  breathing_sign.cc -- implement Breathing_sign
-
-  (c) 1999--2004 Michael Krause
-
-  written for the GNU LilyPond music typesetter
-
-  TODO: --> see breathing-sign-engraver.cc
-
-  Extensions for ancient notation (c) 2003 by Juergen Reuter
-*/
-
-#include "staff-symbol-referencer.hh"
-#include "directional-element-interface.hh"
-#include "breathing-sign.hh"
-#include "string.hh"
-#include "molecule.hh"
-#include "paper-def.hh"
-#include "lookup.hh"
-
-#include "dimensions.hh"
-#include "direction.hh"
-#include "text-item.hh"
-#include "font-interface.hh"
-
-/*
-  TODO: thickness should be a grob property (unit: linethickness)
- rather than hardwired to (staff_space / 6).
- */
-
-  
-
-/*
-  UGH : this is full of C&P code. Consolidate!  --hwn
-*/
-
-/*
-  Gregorian chant divisio minima.  (Actually, this was the original
-  breathing sign by Michael. -- jr)
- */
-MAKE_SCHEME_CALLBACK (Breathing_sign,divisio_minima,1);
-SCM 
-Breathing_sign::divisio_minima (SCM smob)
-{
-  Grob *me = unsmob_grob (smob);
-  Real staff_space = Staff_symbol_referencer::staff_space (me);
-  Real staff_size;
-
-  Real thickness = Staff_symbol_referencer::line_thickness (me);
-  thickness *= robust_scm2double (me->get_grob_property ("thickness"), 1.0);
-  if (Staff_symbol_referencer::get_staff_symbol (me))
-    {
-      staff_size = (Staff_symbol_referencer::line_count (me) - 1) * staff_space;
-    }
-  else
-    staff_size = 0.0;
-
-  Real blotdiameter = me->get_paper ()->get_realvar (ly_symbol2scm ("blotdiameter"));
-
-  /*
-   * Draw a small vertical line through the uppermost (or, depending
-   * on direction, lowermost) staff line.
-   */
-  Interval xdim (0, thickness);
-  Interval ydim (-0.5 * staff_space, +0.5 * staff_space);
-  Box b (xdim, ydim);
-  Molecule out = Lookup::round_filled_box (b, blotdiameter);
-  return out.smobbed_copy ();
-}
-
-/*
-  Gregorian chant divisio maior.
- */
-MAKE_SCHEME_CALLBACK (Breathing_sign,divisio_maior,1);
-SCM 
-Breathing_sign::divisio_maior (SCM smob)
-{
-  Grob *me = unsmob_grob (smob);
-  Real staff_space = Staff_symbol_referencer::staff_space (me);
-  Real staff_size;
-  Real thickness = Staff_symbol_referencer::line_thickness (me);
-  thickness *= robust_scm2double (me->get_grob_property ("thickness"), 1.0);
-
-  if (Staff_symbol_referencer::get_staff_symbol (me))
-    {
-      staff_size = (Staff_symbol_referencer::line_count (me) - 1) * staff_space;
-    }
-  else
-    staff_size = 0.0;
-
-  Real blotdiameter = me->get_paper ()->get_realvar (ly_symbol2scm ("blotdiameter"));
-
-  /*
-   * Draw a vertical line that is vertically centered in the staff
-   * (just like a bar).  The height of this line should be a little
-   * more than half the size of the staff, such that the endings of
-   * the line are in the middle of a staff space.
-   */
-  int lines = Staff_symbol_referencer::line_count (me);
-  int height = lines / 2; // little more than half of staff size
-  if ((lines & 1) != (height & 1))
-    height++; // ensure endings are centered in staff space
-
-  Interval xdim (0, thickness);
-  Interval ydim (-0.5 * height, +0.5 * height);
-  Box b (xdim, ydim);
-  Molecule out = Lookup::round_filled_box (b, blotdiameter);
-  return out.smobbed_copy ();
-}
-
-/*
-  Gregorian chant divisio maxima.
- */
-MAKE_SCHEME_CALLBACK (Breathing_sign,divisio_maxima,1);
-SCM 
-Breathing_sign::divisio_maxima (SCM smob)
-{
-  Grob *me = unsmob_grob (smob);
-  Real staff_space = Staff_symbol_referencer::staff_space (me);
-  Real staff_size;
-  Real thickness = Staff_symbol_referencer::line_thickness (me);
-  thickness *= robust_scm2double (me->get_grob_property ("thickness"), 1.0);
-
-  if (Staff_symbol_referencer::get_staff_symbol (me))
-    {
-      staff_size = (Staff_symbol_referencer::line_count (me) - 1) * staff_space;
-    }
-  else
-    staff_size = 0.0;
-
-  Real blotdiameter = me->get_paper ()->get_realvar (ly_symbol2scm ("blotdiameter"));
-
-  // like a "|" type bar
-  Interval xdim (0, thickness);
-  Interval ydim (-0.5 * staff_size, +0.5 * staff_size);
-  Box b (xdim, ydim);
-  Molecule out = Lookup::round_filled_box (b, blotdiameter);
-  return out.smobbed_copy ();
-}
-
-/*
-  Gregorian chant finalis.
- */
-MAKE_SCHEME_CALLBACK (Breathing_sign,finalis,1);
-SCM 
-Breathing_sign::finalis (SCM smob)
-{
-  Grob *me = unsmob_grob (smob);
-  Real staff_space = Staff_symbol_referencer::staff_space (me);
-  Real staff_size;
-  Real thickness = Staff_symbol_referencer::line_thickness (me);
-  thickness *= robust_scm2double (me->get_grob_property ("thickness"), 1.0);
-
-  if (Staff_symbol_referencer::get_staff_symbol (me))
-    {
-      staff_size = (Staff_symbol_referencer::line_count (me) - 1) * staff_space;
-    }
-  else
-    staff_size = 0.0;
-
-  Real blotdiameter = me->get_paper ()->get_realvar (ly_symbol2scm ("blotdiameter"));
-
-  // like a "||" type bar
-  Interval xdim (0, thickness);
-  Interval ydim (-0.5 * staff_size, +0.5 * staff_size);
-  Box b (xdim, ydim);
-  Molecule line1 = Lookup::round_filled_box (b, blotdiameter);
-  Molecule line2 (line1);
-  line2.translate_axis (0.5 * staff_space, X_AXIS);
-  line1.add_molecule (line2);
-
-  return line1.smobbed_copy ();
-}
-
-MAKE_SCHEME_CALLBACK (Breathing_sign,offset_callback,2);
-SCM
-Breathing_sign::offset_callback (SCM element_smob, SCM)
-{
-  Grob *me = unsmob_grob (element_smob);
-  
-  Direction d = get_grob_direction (me);
-  if (!d)
-    {
-      d = UP;
-      set_grob_direction (me, d);
-    }
-
-  Real inter_f = Staff_symbol_referencer::staff_space (me)/2;
-  int sz = Staff_symbol_referencer::line_count (me)-1;
-  return gh_double2scm (inter_f * sz * d);
-}
-
-ADD_INTERFACE(Breathing_sign, "breathing-sign-interface",
-	      "A breathing sign.",
-	      "direction");
diff --git a/lily/change-iterator.cc b/lily/change-iterator.cc
deleted file mode 100644
index 82ce6d6673..0000000000
--- a/lily/change-iterator.cc
+++ /dev/null
@@ -1,90 +0,0 @@
-/*
-  change-iterator.cc -- implement Change_iterator
-
-  source file of the GNU LilyPond music typesetter
-
-  (c) 1997--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-*/
-
-#include "change-iterator.hh"
-#include "translator-group.hh"
-#include "music.hh"
-#include "warn.hh"
-
-
-
-void
-Change_iterator::error (String reason)
-{
-  String to_type = ly_symbol2string (get_music ()->get_mus_property ("change-to-type"));
-  String to_id = ly_scm2string (get_music ()->get_mus_property ("change-to-id"));
-
-  String warn1 = _f ("can't change `%s' to `%s'", to_type, to_id) 
-    + ": " + reason;
-
-  /*
-    GUHG!
-   */
-  String warn2= "Change_iterator::process (): " 
-    + get_outlet ()->context_name () + " = `"
-    + get_outlet ()->id_string_ + "': ";
-  warning (warn2);
-  get_music ()->origin ()->warning (warn1);
-}
-
-/*
-  move to construct_children ?
- */
-void
-Change_iterator::process (Moment m)
-{
-  Translator_group * current = get_outlet ();
-  Translator_group * last = 0;
-
-  SCM to_type = get_music ()->get_mus_property ("change-to-type");
-  String to_id =  ly_scm2string (get_music ()->get_mus_property ("change-to-id"));
-
-
-  /* find the type  of translator that we're changing.
-     
-     If \translator Staff = bass, then look for Staff = *
-   */
-  while (current && !current->is_alias (to_type))
-    {
-      last = current;
-      current = current->daddy_trans_;
-    }
-
-  if (current && current->id_string_ == to_id)
-    {
-      String msg;
-      msg += _ ("Can't switch translators, I'm there already");
-    }
-  
-  if (current) 
-    if (last)
-      {
-	Translator_group * dest = 
-	  get_outlet ()->find_create_translator (to_type, to_id, SCM_EOL);
-	current->remove_translator (last);
-	dest->add_used_group_translator (last);
-      }
-    else
-      {
-	/*
-	  We could change the current translator's id, but that would make 
-	  errors hard to catch
-	  
-	   last->translator_id_string_  = get_change ()->change_to_id_string_;
-	*/
-	error (_ ("I'm one myself"));
-      }
-  else
-    error (_ ("none of these in my family"));
-
-  Simple_music_iterator::process (m);
-}
-
-
-
-IMPLEMENT_CTOR_CALLBACK (Change_iterator);
diff --git a/lily/chord-name-engraver.cc b/lily/chord-name-engraver.cc
deleted file mode 100644
index 0b8fd2d88d..0000000000
--- a/lily/chord-name-engraver.cc
+++ /dev/null
@@ -1,160 +0,0 @@
-/*
-  chord-name-engraver.cc -- implement Chord_name_engraver
-
-  source file of the GNU LilyPond music typesetter
-
-  (c) 1998--2004 Jan Nieuwenhuizen <janneke@gnu.org>
-*/
-
-#include "engraver.hh"
-#include "chord-name.hh"
-#include "event.hh"
-#include "paper-def.hh"
-#include "font-interface.hh"
-#include "paper-def.hh"
-#include "dimensions.hh"
-#include "item.hh"
-#include "pitch.hh"
-#include "protected-scm.hh"
-#include "translator-group.hh"
-#include "warn.hh"
-
-class Chord_name_engraver : public Engraver 
-{
-  TRANSLATOR_DECLARATIONS( Chord_name_engraver);
-protected:
-  virtual void stop_translation_timestep ();
-  virtual void process_music ();
-  virtual bool try_music (Music *);
-  virtual void finalize ();
-private:
-  void add_note (Music *);
-  
-  Item* chord_name_;
-  Link_array<Music> notes_;
-  
-  Protected_scm last_chord_;
-};
-
-void
-Chord_name_engraver::finalize ()
-{
-  last_chord_ = SCM_EOL; 
-}
-
-Chord_name_engraver::Chord_name_engraver ()
-{
-  chord_name_ = 0;
-  last_chord_ = SCM_EOL;
-}
-
-void
-Chord_name_engraver::add_note (Music * n)
-{
-  notes_.push (n);
-}
-
-void
-Chord_name_engraver::process_music ()
-{
-  if (!notes_.size() )
-    return;
-  
-  SCM bass = SCM_EOL;
-  SCM inversion = SCM_EOL;
-  SCM pitches = SCM_EOL;
-
-  Music* inversion_event = 0;
-  for (int i =0 ; i < notes_.size (); i++)
-    {
-      Music *n = notes_[i];
-      SCM p = n->get_mus_property ("pitch");
-      if (!unsmob_pitch (p))
-	continue;
-      
-      if (n->get_mus_property ("inversion") == SCM_BOOL_T)
-	{
-	  inversion_event = n;
-	  inversion = p;
-	}
-      else if (n->get_mus_property ("bass") == SCM_BOOL_T)
-	bass = p;
-      else
-	pitches = gh_cons (p, pitches);
-    }
-
-  if (inversion_event)
-    {
-      SCM oct = inversion_event->get_mus_property ("octavation");
-      if (gh_number_p (oct))
-	{
-	  Pitch *p = unsmob_pitch (inversion_event->get_mus_property ("pitch"));
-	  int octavation =  gh_scm2int (oct);
-	  Pitch orig = p->transposed (Pitch (-octavation, 0,0));
-	  
-	  pitches= gh_cons (orig.smobbed_copy (), pitches);
-	}
-      else
-	programming_error ("Inversion does not have original pitch.");
-    }
-
-  pitches = scm_sort_list (pitches, Pitch::less_p_proc);
-
-  SCM name_proc = get_property ("chordNameFunction");
-  SCM markup = scm_call_4 (name_proc, pitches, bass, inversion,
-			   daddy_trans_->self_scm());
-
-  /*
-    Ugh. 
-   */
-  SCM chord_as_scm = gh_cons (pitches, gh_cons (bass, inversion));
-  
-  chord_name_ = make_item ("ChordName");
-  chord_name_->set_grob_property("text", markup);
-  announce_grob(chord_name_, notes_[0]->self_scm ());
-  SCM s = get_property ("chordChanges");
-  if (to_boolean (s) && gh_pair_p (last_chord_) 
-      && gh_equal_p (chord_as_scm, last_chord_))
-    chord_name_->set_grob_property ("begin-of-line-visible", SCM_BOOL_T);
-
-  last_chord_ = chord_as_scm;
-}
-
-bool
-Chord_name_engraver::try_music (Music* m)
-{
-  /*
-    hmm. Should check? 
-   */
-  if (m->is_mus_type ("note-event"))
-    {
-      add_note (m);
-      return true;
-    }
-  return false;
-}
-
-void
-Chord_name_engraver::stop_translation_timestep ()
-{
-  if (chord_name_)
-    {
-      typeset_grob (chord_name_);
-    }
-  chord_name_ = 0;
-  notes_.clear ();
-}
-
-/*
-  The READs description is not strictly accurate:
-  which properties are read depend on the chord naming function active.
-*/
-ENTER_DESCRIPTION(Chord_name_engraver,
-/* descr */       "Catch note-events "
-"and generate the appropriate chordname.",
-/* creats*/       "ChordName",
-/* accepts */     "note-event",
-/* acks  */      "",
-/* reads */       "chordChanges chordNameExceptions chordNameFunction "
-"chordNoteNamer chordRootNamer chordNameExceptions majorSevenSymbol",
-/* write */       "");
diff --git a/lily/chord-name.cc b/lily/chord-name.cc
deleted file mode 100644
index cfb21d18e9..0000000000
--- a/lily/chord-name.cc
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
-  chord-name.cc -- implement Chord_name
-
-  source file of the GNU LilyPond music typesetter
-
-  (c) 1999--2004 Jan Nieuwenhuizen <janneke@gnu.org>
-*/
-
-#include "chord-name.hh"
-#include "molecule.hh"
-#include "paper-def.hh"
-#include "font-interface.hh"
-#include "grob.hh"
-#include "paper-column.hh"
-#include "system.hh"
-#include "staff-symbol-referencer.hh"
-#include "text-item.hh"
-
-MAKE_SCHEME_CALLBACK (Chord_name,after_line_breaking,1);
-SCM
-Chord_name::after_line_breaking (SCM smob)
-{
-  Item* me = unsmob_item (smob);
-  assert (me);
-    
-  SCM s = me->get_grob_property ("begin-of-line-visible");
-  if (to_boolean (s))
-    {
-      if (Paper_column::get_rank (me->get_column ()) -
-	  me->get_system ()->spanned_rank_iv ()[LEFT] > 1)
-	me->suicide ();
-    }
-  return SCM_UNSPECIFIED;
-}
-
-
-ADD_INTERFACE (Chord_name, "chord-name-interface",
-  "generate a chord name",
-  "pitches chord style inversion bass begin-of-line-visible");
-
diff --git a/lily/chord-tremolo-engraver.cc b/lily/chord-tremolo-engraver.cc
deleted file mode 100644
index 49d62e12de..0000000000
--- a/lily/chord-tremolo-engraver.cc
+++ /dev/null
@@ -1,238 +0,0 @@
-/*   
-  new-chord-tremolo-engraver.cc --  implement Chord_tremolo_engraver
-  
-  source file of the GNU LilyPond music typesetter
-  
-  (c) 2000--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-  
- */
-
-#include "engraver.hh"
-#include "beam.hh"
-#include "repeated-music.hh"
-#include "stem.hh"
-#include "rhythmic-head.hh"
-#include "engraver-group-engraver.hh"
-#include "event.hh"
-#include "warn.hh"
-#include "misc.hh"
-#include "note-head.hh"
-#include "spanner.hh"
-#include "item.hh"
-#include "chord-tremolo-iterator.hh"
-#include "stem-tremolo.hh"
-#include "music-list.hh"
-#include "math.h"           // ceil
-
-/**
-
-  This acknowledges repeated music with "tremolo" style.  It typesets
-  a beam.
-
-  TODO:
-
-  - perhaps use engraver this to steer other engravers? That would
-  create dependencies between engravers, which is bad.
-
-  - create dots if appropriate.
-
-  - create TremoloBeam iso Beam?
-
-*/
-class Chord_tremolo_engraver : public Engraver
-{
-  void typeset_beam ();
-  TRANSLATOR_DECLARATIONS(Chord_tremolo_engraver);
-protected:
-  Repeated_music * repeat_;
-
-  /// moment (global time) where beam started.
-  Moment start_mom_;
-  Moment stop_mom_;
-  int flags_ ;
-  int total_duration_flags_;
-  
-  /// location  within measure where beam started.
-  Moment beam_start_location_;
-
-  bool sequential_body_b_;
-  Spanner * beam_;
-  Spanner * finished_beam_;
-  Item * stem_tremolo_;
-protected:
-  virtual void finalize ();
-  virtual bool try_music (Music*);
-  virtual void acknowledge_grob (Grob_info);
-  virtual void stop_translation_timestep ();
-  virtual void start_translation_timestep ();
-  virtual void process_music ();
-};
-
-Chord_tremolo_engraver::Chord_tremolo_engraver ()
-{
-  beam_  = finished_beam_ = 0;
-  repeat_ =0;
-  flags_ = 0;
-  stem_tremolo_ = 0;
-  sequential_body_b_ = false;
-}
-
-bool
-Chord_tremolo_engraver::try_music (Music * m)
-{
-  Repeated_music * rp = dynamic_cast<Repeated_music*> (m);
-  if (rp
-      && rp->get_mus_property ("iterator-ctor") == Chord_tremolo_iterator::constructor_proc
-      && !repeat_) 
-    {
-      Moment l = rp->get_length ();
-      repeat_ = rp;
-      start_mom_ = now_mom ();
-      stop_mom_ = start_mom_ + l;
-
-      Sequential_music * seq = dynamic_cast<Sequential_music*> (rp->body ());
-      sequential_body_b_ = seq;
-
-      int elt_count = seq ? scm_ilength (seq-> music_list ()) : 1;
-
-      if (seq && elt_count != 2)
-	{
-	  rp->origin ()->warning (_f ("Chord tremolo with %d elements. Must have two elements.", elt_count));
-	}
-
-      if (elt_count <= 0)
-	elt_count = 1;
-	  
-      Rational total_dur = l.main_part_;
-      Rational note_dur = total_dur / Rational (elt_count * repeat_->repeat_count ());
-
-      total_duration_flags_ = 0 >? (intlog2 (total_dur.den ()) - 2);
-      
-      flags_ = intlog2 (note_dur.den ()) -2 ;
-      
-      return true;
-    }
-
-  return false;
-}
-
-void
-Chord_tremolo_engraver::process_music ()
-{
-  if (repeat_)
-    {
-      if (sequential_body_b_ && !beam_)
-	{
-	  beam_ = make_spanner ("Beam");
-	  beam_->set_grob_property ("chord-tremolo", SCM_BOOL_T);
-
-	  SCM smp = get_property ("measurePosition");
-	  Moment mp
-	    = (unsmob_moment (smp)) ? *unsmob_moment (smp) : Moment (0);
-	  beam_start_location_ = mp;
-	  announce_grob(beam_, repeat_->self_scm());
-	}
-      else if (!sequential_body_b_ && !stem_tremolo_)
-	{
-	  if (flags_)
-	    {
-	      stem_tremolo_ = make_item ("StemTremolo");
-	      announce_grob(stem_tremolo_, repeat_->self_scm());
-	      stem_tremolo_->set_grob_property ("flag-count",
-						scm_int2num (flags_));
-	    }
-	}
-    }
-}
-void
-Chord_tremolo_engraver::finalize ()
-{
-  typeset_beam ();
-  if (beam_)
-    {
-      repeat_->origin ()->warning (_ ("unterminated chord tremolo"));
-      beam_->suicide ();
-    }
-}
-
-void
-Chord_tremolo_engraver::typeset_beam ()
-{
-  if (finished_beam_)
-    {
-      typeset_grob (finished_beam_);
-      finished_beam_ = 0;
-    }
-}
-
-void
-Chord_tremolo_engraver::acknowledge_grob (Grob_info info)
-{
-  if (beam_ && Stem::has_interface (info.grob_))
-    {
-      Grob * s = info.grob_;
-
-      if (start_mom_ == now_mom())
-	Stem::set_beaming (s, flags_, RIGHT);
-      else
-	Stem::set_beaming (s, flags_, LEFT);
-	  
-      if (Stem::duration_log (s) != 1)
-	{
-	  beam_->set_grob_property ("gap-count", gh_int2scm (flags_ - total_duration_flags_));
-	}
-
-      if (info.music_cause ()->is_mus_type ("rhythmic-event"))
-	{
-	  Beam::add_stem (beam_, s);
-	}
-      else
-	{
-	  String s = _ ("stem must have Rhythmic structure");
-	  if (info.music_cause ())
-	    info.music_cause ()->origin ()->warning (s);
-	  else
-	    ::warning (s);
-	}
-    }
-  else if (stem_tremolo_ && Stem::has_interface (info.grob_))
-    {
-       Stem_tremolo::set_stem (stem_tremolo_, info.grob_);
-       stem_tremolo_->set_parent (info.grob_,X_AXIS);
-    }
-}
-
-
-void
-Chord_tremolo_engraver::start_translation_timestep ()
-{
-  if (beam_ && stop_mom_ == now_mom ())
-    {
-      finished_beam_ = beam_;
-      repeat_ = 0;
-      beam_ = 0;
-    }
-}
-
-
-void
-Chord_tremolo_engraver::stop_translation_timestep ()
-{
-  typeset_beam ();
-
-  if (stem_tremolo_)
-    {
-      typeset_grob (stem_tremolo_);
-      stem_tremolo_ = 0;
-    }
-}
-
-
-
-ENTER_DESCRIPTION(Chord_tremolo_engraver,
-/* descr */       "Generates beams for  tremolo repeats.",
-/* creats*/       "Beam",
-/* accepts */     "repeated-music",
-/* acks  */      "stem-interface note-head-interface",
-/* reads */       "",
-/* write */       "");
diff --git a/lily/chord-tremolo-iterator.cc b/lily/chord-tremolo-iterator.cc
deleted file mode 100644
index 6887ce67c4..0000000000
--- a/lily/chord-tremolo-iterator.cc
+++ /dev/null
@@ -1,89 +0,0 @@
-/*   
-  chord-tremolo-iterator.cc --  implement Chord_tremolo_iterator
-  
-  source file of the GNU LilyPond music typesetter
-  
-  (c) 2000--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-  
- */
-
-
-/*
-  this is culled from various other iterators, but sharing code by
-  subclassing proved to be too difficult.
- */
-
-#include "input.hh"
-#include "chord-tremolo-iterator.hh"
-#include "repeated-music.hh"
-
-void
-Chord_tremolo_iterator::construct_children ()
-{
-  Repeated_music * rep = dynamic_cast<Repeated_music*> (get_music ());
-  factor_  = Moment (Rational(1, 1));
-  child_iter_ = unsmob_iterator (get_iterator (rep->body ()));
-}
-
-Chord_tremolo_iterator::Chord_tremolo_iterator ()
-{
-  factor_ = 1;
-  child_iter_ = 0;
-}
-
-void
-Chord_tremolo_iterator::do_quit()
-{
-  if (child_iter_)
-    child_iter_->quit();
-}
-
-void
-Chord_tremolo_iterator::derived_mark () const
-{
-  if (child_iter_)
-    scm_gc_mark (child_iter_->self_scm());
-}
-
-void
-Chord_tremolo_iterator::derived_substitute (Translator_group*f, Translator_group*t) 
-{
-  if (child_iter_)
-    child_iter_->substitute_outlet (f,t);
-}
-
-void
-Chord_tremolo_iterator::process (Moment m)
-{
-  if (!m.to_bool () )
-    {
-      Music_iterator *yeah = try_music (get_music ());
-      if (yeah)
-	set_translator (yeah->get_outlet ());
-      else
-	get_music ()->origin ()->warning (_ ("no one to print a tremolos"));
-    }
-
-  child_iter_->process (factor_ * m);
-}
-
-Moment
-Chord_tremolo_iterator::pending_moment () const
-{
-  return child_iter_->pending_moment () / factor_;
-}
-
-bool
-Chord_tremolo_iterator::ok () const
-{
-  return child_iter_ && child_iter_->ok ();
-}
-
-Music_iterator*
-Chord_tremolo_iterator::try_music_in_children (Music  *m) const
-{
-  return child_iter_->try_music (m);
-}
-
-IMPLEMENT_CTOR_CALLBACK (Chord_tremolo_iterator);
-
diff --git a/lily/clef-engraver.cc b/lily/clef-engraver.cc
deleted file mode 100644
index 76c814444f..0000000000
--- a/lily/clef-engraver.cc
+++ /dev/null
@@ -1,199 +0,0 @@
-/*
-  clef-engraver.cc -- implement Clef_engraver
-
-  source file of the GNU LilyPond music typesetter
-
-  (c) 1997--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>,
-
-  Mats Bengtsson <matsb@s3.kth.se>
-*/
-
-#include <ctype.h>
-
-#include "translator-group.hh"
-#include "bar-line.hh"
-#include "staff-symbol-referencer.hh"
-#include "engraver.hh"
-#include "direction.hh"
-#include "side-position-interface.hh"
-#include "item.hh"
-
-class Clef_engraver : public  Engraver
-{
-public:
-  TRANSLATOR_DECLARATIONS(Clef_engraver);
-
-  Direction octave_dir_;
-
-protected:
-  virtual void stop_translation_timestep ();
-  virtual void process_music ();
-  virtual void acknowledge_grob (Grob_info);
-private:
-  Item * clef_;
-  Item * octavate_;
-
-  SCM prev_glyph_;
-  SCM prev_cpos_;
-  SCM prev_octavation_;
-  void create_clef ();
-  void set_glyph ();
-  void inspect_clef_properties ();
-};
-
-Clef_engraver::Clef_engraver ()
-{
-  clef_ = 0;
-  octave_dir_ = CENTER;
-  octavate_ = 0;
-
-  /*
-    will trigger a clef at the start since #f != ' ()
-   */
-  prev_cpos_ = prev_glyph_ = SCM_BOOL_F;
-}
-
-void
-Clef_engraver::set_glyph ()
-{
-  SCM glyph_sym = ly_symbol2scm ("glyph-name");
-  SCM glyph = get_property ("clefGlyph");
-
-  SCM basic = ly_symbol2scm ("Clef");
-  
-  execute_pushpop_property (daddy_trans_, basic, glyph_sym, SCM_UNDEFINED);
-  execute_pushpop_property (daddy_trans_, basic, glyph_sym, glyph);
-}
-
-/** 
-  Generate a clef at the start of a measure. (when you see a Bar,
-  ie. a breakpoint) 
-  */
-void
-Clef_engraver::acknowledge_grob (Grob_info info)
-{
-  Item * item =dynamic_cast <Item *> (info.grob_);
-  if (item)
-    {
-      if (Bar_line::has_interface (info.grob_)
-	  && gh_string_p (get_property ("clefGlyph")))
-	create_clef ();
-    } 
-}
-
-void
-Clef_engraver::create_clef ()
-{
-  if (!clef_)
-    {
-      Item *c= make_item ("Clef");
-      announce_grob(c, SCM_EOL);
-
-      clef_ = c;
-      SCM cpos = get_property ("clefPosition");
-
-      if (gh_number_p (cpos))
-	Staff_symbol_referencer::set_position (clef_, gh_scm2int (cpos));
-
-      SCM oct =  get_property ("clefOctavation");
-      if (gh_number_p (oct) && gh_scm2int (oct))
-	{
-	  Item * g = make_item ("OctavateEight");
-
-	  int abs_oct = gh_scm2int (oct) ;
-	  int dir = sign (abs_oct);
-	  abs_oct = abs (abs_oct)  + 1;
-	    
-	  g->set_grob_property ("text",
-				scm_number_to_string (gh_int2scm (abs_oct),
-						      SCM_MAKINUM (10)));
-	  Side_position_interface::add_support (g,clef_);      
-
-	  g->set_parent (clef_, Y_AXIS);
-	  g->set_parent (clef_, X_AXIS);
-	  g->set_grob_property ("direction", scm_int2num (dir));
-	  octavate_ = g;
-	  announce_grob(octavate_, SCM_EOL);
-	}
-    }
-}
-void
-Clef_engraver::process_music ()
-{
-  inspect_clef_properties ();
-}
-
-void
-Clef_engraver::inspect_clef_properties ()
-{
-  SCM glyph = get_property ("clefGlyph");
-  SCM clefpos = get_property ("clefPosition");
-  SCM octavation = get_property ("clefOctavation");
-  SCM force_clef = get_property ("forceClef");
-  
-  if (clefpos == SCM_EOL
-      || scm_equal_p (glyph, prev_glyph_) == SCM_BOOL_F
-      || scm_equal_p (clefpos, prev_cpos_) == SCM_BOOL_F
-      || scm_equal_p (octavation, prev_octavation_) == SCM_BOOL_F
-      || to_boolean (force_clef))
-    {
-      set_glyph ();
-      create_clef ();
-
-      clef_->set_grob_property ("non-default", SCM_BOOL_T);
-
-      prev_cpos_ = clefpos;
-      prev_glyph_ = glyph;
-      prev_octavation_ = octavation;
-    }
-
-  if (to_boolean (force_clef))
-    {
-      Translator_group * w = daddy_trans_->where_defined (ly_symbol2scm ("forceClef"));
-      w->set_property ("forceClef", SCM_EOL);
-    }
-}
-
-
-void
-Clef_engraver::stop_translation_timestep ()
-{
-  if (clef_)
-    {
-      SCM vis = 0; 
-      if (to_boolean (clef_->get_grob_property ("non-default")))
-	{
-	  vis = get_property ("explicitClefVisibility");
-	}
-
-      if (vis)
-	{
-	  clef_->set_grob_property ("break-visibility", vis);
-	  if (octavate_)
-	    {
-	      octavate_->set_grob_property ("break-visibility", vis);
-
-	    }
-	}
-      
-      typeset_grob (clef_);
-      clef_ =0;
-
-      if (octavate_)
-	{
-	  typeset_grob (octavate_);
-	}
-
-      octavate_ = 0;
-    }
-}
-
-
-
-ENTER_DESCRIPTION(Clef_engraver,
-/* descr */       "Determine and set reference point for pitches",
-/* creats*/       "Clef OctavateEight",
-/* accepts */     "",
-/* acks  */      "bar-line-interface",
-/* reads */       "clefPosition clefGlyph centralCPosition clefOctavation explicitClefVisibility",
-/* write */       "");
diff --git a/lily/clef.cc b/lily/clef.cc
deleted file mode 100644
index 9a493ddeef..0000000000
--- a/lily/clef.cc
+++ /dev/null
@@ -1,73 +0,0 @@
-/*
-  clef.cc -- implement Clef_item
-
-  source file of the GNU LilyPond music typesetter
-
-  (c) 1997--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-*/
-
-#include "clef.hh"
-#include "string.hh"
-#include "molecule.hh"
-#include "item.hh"
-#include "font-interface.hh"
-
-/*
- FIXME: should use symbol for #'style.
-*/
-MAKE_SCHEME_CALLBACK (Clef,before_line_breaking,1);
-SCM
-Clef::before_line_breaking (SCM smob)
-{
-  Item *s = unsmob_item (smob);
-
-  SCM glyph = s->get_grob_property ("glyph-name");
-  
-  if (gh_string_p (glyph))
-    {
-      String str = ly_scm2string (glyph);
-
-      if (to_boolean (s->get_grob_property ("non-default"))
-	  && s->break_status_dir () != RIGHT
-	  && !to_boolean (s->get_grob_property ("full-size-change")))
-	{
-	  str += "_change";
-	  s->set_grob_property ("glyph-name", scm_makfrom0str (str.to_str0 ()));	  
-	}
-    }
-  else
-    {
-      s->suicide ();
-      return SCM_UNSPECIFIED;
-    }
-
-  return SCM_UNSPECIFIED;
-}
-
-
-
-
-MAKE_SCHEME_CALLBACK (Clef,print,1)
-SCM
-Clef::print (SCM smob) 
-{
-  Grob *me = unsmob_grob (smob);
-  SCM glyph_scm = me->get_grob_property ("glyph-name");
-  if (!gh_string_p (glyph_scm))
-    return SCM_EOL;
-
-  String glyph = String (ly_scm2string (glyph_scm));
-  Font_metric *fm = Font_interface::get_default_font (me);
-  Molecule out = fm->find_by_name (glyph);
-  if (out.is_empty ())
-    {
-      me->warning (_f ("clef `%s' not found", glyph.to_str0 ()));
-    }
-  return out.smobbed_copy ();
-}
-
-
-ADD_INTERFACE (Clef, "clef-interface",
-  "A clef sign",
-  "non-default full-size-change glyph-name");
-
diff --git a/lily/cluster-engraver.cc b/lily/cluster-engraver.cc
deleted file mode 100644
index 494d3d147b..0000000000
--- a/lily/cluster-engraver.cc
+++ /dev/null
@@ -1,146 +0,0 @@
-/*
-  cluster-engraver.cc -- implement Cluster_engraver
-
-  (c) 2002--2004 Juergen Reuter <reuter@ipd.uka.de>
-
-  Han-Wen Nienhuys <hanwen@cs.uu.nl>
-*/
-
-#include "engraver.hh"
-#include "item.hh"
-#include "spanner.hh"
-#include "note-head.hh"
-#include "note-column.hh"
-#include "group-interface.hh"
-
-class Cluster_spanner_engraver : public Engraver
-{
-
-protected:
-  TRANSLATOR_DECLARATIONS(Cluster_spanner_engraver);
-  virtual bool try_music (Music *);
-  virtual void process_music ();  
-  virtual void acknowledge_grob (Grob_info);
-  virtual void stop_translation_timestep ();
-  virtual void finalize ();
-private:
-  Link_array<Music> cluster_notes_;
-  Item* beacon_;
-
-  void typeset_grobs ();
-  Spanner *spanner_;
-  Spanner * finished_spanner_ ;
-};
-
-Cluster_spanner_engraver::Cluster_spanner_engraver ()
-{
-  spanner_ = 0;
-  finished_spanner_ = 0;
-  beacon_ = 0;
-}
-
-void
-Cluster_spanner_engraver::finalize ()
-{
-  typeset_grobs ();
-  finished_spanner_ = spanner_;
-  spanner_ = 0;
-  typeset_grobs ();
-}
-
-void
-Cluster_spanner_engraver::typeset_grobs ()
-{
-  if (finished_spanner_ )
-    {
-      typeset_grob (finished_spanner_);
-      finished_spanner_ = 0;
-    }
-
-  if (beacon_)
-    {
-      typeset_grob (beacon_);
-      beacon_ = 0;
-    }
-}
-
-bool
-Cluster_spanner_engraver::try_music (Music *m)
-{
-  if (m->is_mus_type ("cluster-note-event"))
-    {
-      cluster_notes_.push (m);
-      return true;
-    }
-  return false;
-}
-
-void
-Cluster_spanner_engraver::process_music ()
-{
-  if (cluster_notes_.size())
-    {
-      SCM c0scm = get_property ("centralCPosition");
-
-      int c0 =  gh_number_p (c0scm) ? gh_scm2int (c0scm) : 0;
-      int pmax = INT_MIN;
-      int pmin = INT_MAX;
-      
-      for (int i = 0; i <cluster_notes_.size (); i++)
-	{
-	  Pitch *pit =unsmob_pitch (cluster_notes_[i]->get_mus_property ("pitch"));
-
-	  int p =( pit ? pit->steps () : 0) + c0;
-
-	  pmax = pmax >? p;
-	  pmin = pmin <? p;
-	}
-      
-      beacon_ = make_item ("ClusterSpannerBeacon");
-      beacon_->set_grob_property ("positions",
-				  scm_cons (gh_int2scm (pmin),
-					    gh_int2scm (pmax)));
-      announce_grob (beacon_, cluster_notes_[0]->self_scm ());
-    }
-
-  if (beacon_ && !spanner_)
-    {    
-      spanner_ = make_spanner ("ClusterSpanner");
-      announce_grob (spanner_, cluster_notes_[0]->self_scm ());
-    }
-  
-  if (beacon_ && spanner_)
-    {
-      add_bound_item (spanner_, beacon_);
-      Pointer_group_interface::add_grob (spanner_, ly_symbol2scm ("columns"), beacon_);
-    }
-}
-
-
-void
-Cluster_spanner_engraver::stop_translation_timestep ()
-{
-  typeset_grobs ();
-
-  cluster_notes_.clear();
-  
-}
-
-void
-Cluster_spanner_engraver::acknowledge_grob (Grob_info info)
-{
-  if (!beacon_ && Note_column::has_interface (info.grob_))
-    {
-      finished_spanner_ = spanner_;
-      spanner_ = 0;
-    }
-}
-
-ENTER_DESCRIPTION(Cluster_spanner_engraver,
-/* descr */	"Engraves a cluster using Spanner notation ",
-/* creats*/	"ClusterSpanner ClusterSpannerBeacon",
-/* accepts */	"cluster-note-event",
-/* acks  */	"note-column-interface",
-/* reads */	"",
-/* write */	"");
-
diff --git a/lily/cluster.cc b/lily/cluster.cc
deleted file mode 100644
index dda873e6c1..0000000000
--- a/lily/cluster.cc
+++ /dev/null
@@ -1,233 +0,0 @@
-/*
-  cluster.cc -- implement Cluster
-
-  source file of the GNU LilyPond music typesetter
-
-  (c) 2002--2004 Juergen Reuter <reuter@ipd.uka.de>
-
-  Han-Wen Nienhuys <hanwen@cs.uu.nl>
-
-*/
-
-#include <stdio.h>
-
-#include "cluster.hh"
-#include "spanner.hh"
-#include "item.hh"
-#include "pitch.hh"
-#include "staff-symbol-referencer.hh"
-#include "lookup.hh"
-#include "box.hh"
-#include "interval.hh"
-#include "paper-def.hh"
-#include "warn.hh"
-
-
-/*
-   TODO: Add support for cubic spline segments.
-
- */
-Molecule
-brew_cluster_piece (Grob *me, Array<Offset> bottom_points, Array<Offset> top_points)
-{
-  Real blotdiameter = Staff_symbol_referencer::staff_space (me)/2;
-
-  Real padding =robust_scm2double ( me->get_grob_property ("padding"), 0.0);
-
-  Offset vpadding = Offset (0, padding);
-  Offset hpadding = Offset (0.5 * blotdiameter, 0);
-  Offset hvpadding = 0.5 * hpadding + vpadding;
-
-  SCM shape_scm = me->get_grob_property ("style");
-  String shape;
-
-  if (gh_symbol_p (shape_scm))
-    {
-      shape = ly_symbol2string (shape_scm);
-    }
-  else
-    {
-      programming_error ("#'style should be symbol.");
-      me->suicide();
-      return  Molecule();
-    }
-
-
-  Molecule out = Molecule ();
-  Array<Offset> points;
-  points.clear ();
-  int size = bottom_points.size ();
-  if (String::compare (shape, "leftsided-stairs") == 0)
-    {
-      for (int i = 0; i < size - 1; i++)
-	{
-	  Box box;
-	  box.add_point (bottom_points[i] - hvpadding);
-	  box.add_point (Offset(top_points[i + 1][X_AXIS],
-				top_points[i][Y_AXIS]) + hvpadding);
-	  out.add_molecule (Lookup::round_filled_box (box, blotdiameter));
-	}
-    }
-  else if (String::compare (shape, "rightsided-stairs") == 0)
-    {
-      for (int i = 0; i < size - 1; i++)
-	{
-	  Box box;
-	  box.add_point (Offset(bottom_points[i][X_AXIS],
-				bottom_points[i + 1][Y_AXIS]) - hvpadding);
-	  box.add_point (top_points[i + 1] + hvpadding);
-	  out.add_molecule (Lookup::round_filled_box (box, blotdiameter));
-	}
-    }
-  else if (String::compare (shape, "centered-stairs") == 0)
-    {
-      Real left_xmid = bottom_points[0][X_AXIS];
-      for (int i = 0; i < size - 1; i++)
-	{
-	  Real right_xmid =
-	    0.5 * (bottom_points[i][X_AXIS] + bottom_points[i + 1][X_AXIS]);
-	  Box box;
-	  box.add_point (Offset (left_xmid, bottom_points[i][Y_AXIS]) -
-			 hvpadding);
-	  box.add_point (Offset (right_xmid, top_points[i][Y_AXIS]) +
-			 hvpadding);
-	  out.add_molecule (Lookup::round_filled_box (box, blotdiameter));
-	  left_xmid = right_xmid;
-	}
-      Real right_xmid = bottom_points[size - 1][X_AXIS];
-      Box box;
-      box.add_point (Offset (left_xmid, bottom_points[size - 1][Y_AXIS]) -
-		     hvpadding);
-      box.add_point (Offset (right_xmid, top_points[size - 1][Y_AXIS]) +
-		     hvpadding);
-      out.add_molecule (Lookup::round_filled_box (box, blotdiameter));
-    }
-  else if (String::compare (shape, "ramp") == 0)
-    {
-      points.push (bottom_points[0] - vpadding + hpadding);
-      for (int i = 1; i < size - 1; i++)
-	{
-	  points.push (bottom_points[i] - vpadding);
-	}
-      points.push (bottom_points[size - 1] - vpadding - hpadding);
-      points.push (top_points[size - 1] + vpadding - hpadding);
-      for (int i = size - 2; i > 0; i--)
-	{
-	  points.push (top_points[i] + vpadding);
-	}
-      points.push (top_points[0] + vpadding + hpadding);
-      out.add_molecule (Lookup::round_filled_polygon (points, blotdiameter));
-    }
-  else
-    {
-      me->warning (_f ("unknown cluster style `%s'", shape.to_str0 ()));
-    }
-  return out;
-}
-
-MAKE_SCHEME_CALLBACK (Cluster,print,1);
-SCM
-Cluster::print (SCM smob)
-{
-  Grob *me = unsmob_grob (smob);
-
-  Spanner *spanner = dynamic_cast<Spanner*> (me);
-  if (!spanner)
-    {
-      me->programming_error ("Cluster::print(): not a spanner");
-      return SCM_EOL;
-    }
-
-  Item *left_bound = spanner->get_bound (LEFT);
-  Item *right_bound = spanner->get_bound (RIGHT);
-
-  Grob *common = left_bound->common_refpoint (right_bound, X_AXIS);
-  SCM cols  =me->get_grob_property ("columns");
-
-  if (!gh_pair_p (cols))
-    {
-      me->warning ("junking empty cluster");
-      me->suicide ();
-      
-      return SCM_EOL;
-    }
-  common = common_refpoint_of_list (cols, common, X_AXIS);
-  Array<Offset> bottom_points;
-  Array<Offset> top_points;
-
-
-  Real left_coord = left_bound->relative_coordinate (common, X_AXIS);
-
-  Real unit = Staff_symbol_referencer::staff_space (me) *0.5;
-
-  /*
-    TODO: should we move the cluster a little to the right to be in
-    line with the center of the note heads?
-    
-   */
-  for (SCM s = cols; gh_pair_p (s); s = ly_cdr (s))
-    {
-      Grob * col = unsmob_grob (ly_car (s));
-
-      SCM posns = col->get_grob_property ("positions");
-      
-      Slice s (0,0);
-      if (is_number_pair (posns))
-	s = Slice (gh_scm2int (gh_car (posns)),
-		   gh_scm2int (gh_cdr (posns)));
-
-      Real x = col->relative_coordinate (common, X_AXIS) - left_coord;
-      bottom_points.push (Offset (x, s[DOWN] *unit));
-      top_points.push (Offset (x, s[UP] * unit));
-    }
-
-  /*
-    Across a line break we anticipate on the next pitches.
-   */
-  if (spanner->original_)
-    {
-      Spanner *orig = dynamic_cast<Spanner*> (spanner->original_);
-      
-      if (spanner->get_break_index () < orig->broken_intos_.size()-1)
-	{
-	  Spanner * next = orig->broken_intos_[spanner->get_break_index () + 1];
-	  SCM cols = next->get_grob_property ("columns");
-	  if (gh_pair_p (cols))
-	    {
-	      Grob * col = unsmob_grob (ly_car (scm_last_pair (cols)));
-	      SCM posns = col->get_grob_property ("positions");
-      
-	      Slice s (0,0);
-	      if (is_number_pair (posns))
-		s = Slice (gh_scm2int (gh_car (posns)),
-			   gh_scm2int (gh_cdr (posns)));
-
-	      Real x = right_bound->relative_coordinate (common,X_AXIS) - left_coord;
-	      
-	      bottom_points.insert (Offset (x, s[DOWN] * unit),0);
-	      top_points.insert (Offset (x, s[UP] * unit),0);
-	    }
-	}
-    }
-
-  bottom_points.reverse ();
-  top_points.reverse ();
-
-  Molecule out = brew_cluster_piece (me, bottom_points, top_points);
-  return out.smobbed_copy ();
-}
-
-ADD_INTERFACE (Cluster,"cluster-interface",
-  "A graphically drawn musical cluster. " 
-"\n\n"
-"@code{padding} adds to the vertical extent of the shape (top and "
-"bottom) and is expressed in units of staffspace.  Since the pitch "
-"range of a single pitch is infinitely small, if padding is set to "
-"@code{0.0}, this possibly results in an invisible shape, if you,for "
-"example, say @code{c-\\startCluster d e-\\endCluster}.  The default "
-"value for @code{padding} therefore is @code{0.25}, such that a single "
-"pitch roughly shows the same height as a note head. "
-"\n\n"
-"@code{style} controls the shape of cluster segments.  Valid values include 'leftsided-stairs', 'rightsided-stairs', 'centered-stairs', and 'ramp'.\n"
-,
-  "style padding columns");
diff --git a/lily/coherent-ligature-engraver.cc b/lily/coherent-ligature-engraver.cc
deleted file mode 100644
index df911f947e..0000000000
--- a/lily/coherent-ligature-engraver.cc
+++ /dev/null
@@ -1,228 +0,0 @@
-/*
-  coherent-ligature-engraver.cc -- implement Coherent_ligature_engraver
-  
-  source file of the GNU LilyPond music typesetter
-  
-  (c) 2003 Juergen Reuter <reuter@ipd.uka.de>
- */
-
-#include "coherent-ligature-engraver.hh"
-#include "item.hh"
-#include "warn.hh"
-#include "staff-symbol-referencer.hh"
-#include "spanner.hh"
-#include "paper-column.hh"
-
-/*
- * This abstract class serves as common superclass for all ligature
- * engravers thet produce a single connected graphical object of fixed
- * width, consisting of noteheads and other primitives (see class
- * Ligature_engraver for more information on the interaction between
- * this class and its superclass).  In particular, it cares for the
- * following tasks:
- *
- * - provide a function for putting all grobs of the ligature into a
- * single paper column,
- *
- * - delegate actual creation of ligature to concrete subclass,
- *
- * - collect all accidentals that occur within the ligature and put
- * them at the left side of the ligature (TODO; see function
- * collect_accidentals()),
- *
- * - collapse superflous space after each ligature (TODO).
- *
- * Concrete subclasses must implement function build_ligature (Spanner
- * *, Array<Grob_info>).  This function is responsible for actually
- * building the ligature by transforming the array of noteheads.
- *
- * Currently, there are two subclasses: Gregorian_ligature_engraver
- * for Gregorian chant notation (also known as plain song or cantus
- * planus) and Mensural_ligature_engraver for white mensural notation.
- * Subclasses for other music notation styles such as modal notation
- * or ars nova notation may eventually be added.
- */
-
-/*
- * TODO: local accidentals: collect accidentals that occur within a
- * ligature and put them before the ligature.  If an accidental
- * changes within a ligature, print a warning (user error) and ignore
- * any further accidental for that pitch within that ligature
- * (actually, in such a case, the user should split the ligature into
- * two separate ligatures).  Similarly, any object that, in ordinary
- * notation, may be put to the left or to the right of a note-head,
- * should be collected and put before or after the ligature.
- *
- * TODO: make spacing more robust: do not screw up spacing if user
- * erroneously puts rest in ligature.
- *
- * TODO: for each ligature, add Rod that represents the total length
- * of the ligature (to preemptively avoid collision with adjacent
- * notes); or maybe just additionally create a
- * mensural/vaticana/whatever-ligature grob (e.g. via
- * Mensural_ligature::print(SCM)) that just consists of a
- * bounding box around all primitives of the ligature.
- *
- * TODO: Maybe move functions fold_up_primitives() and
- * join_primitives() from subclasses to here?  N.B. it is not
- * appropriate to put these into Ligature_engraver, since, for
- * example, Ligature_bracket_engraver does not share any of this code.
- */
-
-/*
- * TODO: Let superflous space after each ligature collapse.  The
- * following code should help in doing so (though it does not yet
- * fully work).  Just put the following code into
- * Spacing_spanner::do_measure().  I put it temporarily here as memo
- * until it really works and I also get Han-Wen's/Jan's permission to
- * add it to the spacing spanner code.
- */
-#if 0 // experimental code to collapse spacing after ligature
-      SCM incr_scm = lc->get_grob_property ("forced-spacing");
-      if (incr_scm != SCM_EOL) /* (Paper_column::is_musical (l)) */
-	{
-	  me->warning (_f ("gotcha: ptr=%ul", lc));//debug
-	  ly_display_scm (lc->self_scm ());
-	  Real distance;
-	  if (incr_scm != SCM_EOL)
-	    {
-	      distance = gh_scm2double (incr_scm);
-	    }
-	  else
-	    {
-	      me->warning ("distance undefined, assuming 0.1");
-	      distance = 0.1;
-	    }
-	  me->warning (_f ("distance=%f", distance));//debug
-	  Real strength = 1.0;
-	  Spaceable_grob::add_spring (lc, rc, distance, strength, false);
-	  if (Item *rb = r->find_prebroken_piece (LEFT))
-	    Spaceable_grob::add_spring (lc, rb, distance, strength, false);
-
-	  continue;
-	}
-#endif
-
-Coherent_ligature_engraver::Coherent_ligature_engraver ()
-{
-}
-
-/*
- * TODO: move this function to class Item?
- */
-void
-Coherent_ligature_engraver::get_set_column (Item *item, Paper_column *column)
-{
-  Item *parent = dynamic_cast<Item*> (item->get_parent (X_AXIS));
-  if (!parent)
-    {
-      programming_error ("failed tweaking paper column in ligature");
-      return;
-    }
-
-  String name = parent->name ();
-  if (!String::compare (name, "PaperColumn"))
-    {
-      // Change column not only for targeted item (NoteColumn), but
-      // also for all associated grobs (NoteSpacing, SeparationItem).
-      Grob *sl = Staff_symbol_referencer::get_staff_symbol (item);
-      for (SCM tail = parent->get_grob_property ("elements");
-	   gh_pair_p (tail);
-	   tail = ly_cdr (tail))
-	{
-	  Item *sibling = unsmob_item (ly_car (tail));
-	  if ((sibling) &&
-	      (Staff_symbol_referencer::get_staff_symbol (sibling) == sl))
-	    {
-#if 0 // experimental code to collapse spacing after ligature
-	      Grob *sibling_parent = sibling->get_parent (X_AXIS);
-	      sibling_parent->warning (_f ("Coherent_ligature_engraver: "
-					   "setting `spacing-increment = "
-					   "0.01': ptr=%ul", parent));
-	      sibling_parent->set_grob_property("forced-spacing",
-					      gh_double2scm (0.01));
-#endif
-	      sibling->set_parent (column, X_AXIS);
-	    }
-	}
-    }
-  else
-    {
-      get_set_column (parent, column);
-    }
-}
-
-/*
- * TODO: This function should collect all accidentals that occur
- * within the ligature (by scanning through the primitives array) and
- * place all of them at the left of the ligature.  If there is an
- * alteration within the ligature (e.g. an "f" followed by a "fis"
- * somewhere later in the ligature), issue a warning (and maybe create
- * an additional natural symbol to explicitly make clear that there is
- * an "f" first?).  The warning should suggest the user to break the
- * ligature into two or more smaller ligatures such that no alteration
- * occurs within the broken ligatures any more.
- */
-void
-Coherent_ligature_engraver::collect_accidentals (Spanner *, Array<Grob_info>)
-{
-  /* TODO */
-}
-
-void
-compute_delta_pitches (Array<Grob_info> primitives)
-{
-  int prev_pitch = 0;
-  int delta_pitch = 0;
-  Item *prev_primitive = 0, *primitive = 0;
-  for (int i = 0; i < primitives.size(); i++) {
-    primitive = dynamic_cast<Item*> (primitives[i].grob_);
-    Music *music_cause = primitives[i].music_cause ();
-    int pitch =
-      unsmob_pitch (music_cause->get_mus_property ("pitch"))->steps ();
-    if (prev_primitive)
-      {
-	delta_pitch = pitch - prev_pitch;
-	prev_primitive->set_grob_property ("delta-pitch",
-					   gh_int2scm (delta_pitch));
-      }
-    prev_pitch = pitch;
-    prev_primitive = primitive;
-  }
-  primitive->set_grob_property ("delta-pitch", gh_int2scm (0));
-}
-
-void
-Coherent_ligature_engraver::build_ligature (Spanner *, Array<Grob_info>)
-{
-  programming_error ("Coherent_ligature_engraver::build_ligature (): "
-		     "this is an abstract method that should not be called, "
-		     "but overridden by a subclass");
-}
-
-void
-Coherent_ligature_engraver::typeset_ligature (Spanner *ligature,
-					      Array<Grob_info> primitives)
-{
-  // compute some commonly needed context info stored as grob
-  // properties
-  compute_delta_pitches (primitives);
-
-  // prepare ligature for typesetting
-  build_ligature (ligature, primitives);
-  collect_accidentals (ligature, primitives);
-
-  // now actually typeset
-  for (int i = 0; i < primitives.size (); i++)
-    {
-      typeset_grob (primitives[i].grob_);
-    }
-}
-
-ENTER_DESCRIPTION (Coherent_ligature_engraver,
-/* descr */       "This is an abstract class.  Subclasses such as Gregorian_ligature_engraver handle ligatures by glueing special ligature heads together.",
-/* creats*/       "",
-/* accepts */     "ligature-event",
-/* acks  */      "note-head-interface rest-interface",
-/* reads */       "",
-/* write */       "");
diff --git a/lily/collision-engraver.cc b/lily/collision-engraver.cc
deleted file mode 100644
index 0110973933..0000000000
--- a/lily/collision-engraver.cc
+++ /dev/null
@@ -1,85 +0,0 @@
-/*
-  collision-reg.cc -- implement Collision_engraver
-
-  source file of the GNU LilyPond music typesetter
-
-  (c) 1997--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-*/
-
-#include "note-column.hh"
-#include "note-collision.hh"
-
-#include "engraver.hh"
-#include "axis-group-interface.hh"
-
-/*
-  collect Note_column, and as soon as there are 2 or more, put them in
-  a collision object.  */
-class Collision_engraver : public Engraver
-{
-  Item * col_;
-  Link_array<Grob> note_columns_;
-
-protected:
-  virtual void acknowledge_grob (Grob_info);
-  virtual void process_acknowledged_grobs ();
-  virtual void stop_translation_timestep ();
-public:
-  TRANSLATOR_DECLARATIONS(Collision_engraver);
-};
-
-
-void
-Collision_engraver::process_acknowledged_grobs ()
-{
-  if (col_ || note_columns_.size () < 2)
-    return ;
-  if (!col_) 
-    {
-      col_ = make_item ("NoteCollision");
-      announce_grob (col_, SCM_EOL);
-    }
-  
-  for (int i=0; i< note_columns_.size (); i++)
-    Note_collision_interface::add_column (col_,note_columns_[i]);
-}
-
-void
-Collision_engraver::acknowledge_grob (Grob_info i)
-{
-  if (Note_column::has_interface (i.grob_))
-    {
-      /*should check Y axis? */
-      if (Note_column::has_rests (i.grob_) || i.grob_->get_parent (X_AXIS))
-	return ;
-
-      note_columns_.push (i.grob_);
-    }
-}
-
-void
-Collision_engraver::stop_translation_timestep ()
-{
-  if (col_) 
-    {
-      typeset_grob (col_);
-      col_ =0;
-    }
-  note_columns_.clear ();
-}
-
-Collision_engraver::Collision_engraver ()
-{
-  col_ =0;
-}
-
-
-
-
-ENTER_DESCRIPTION(Collision_engraver,
-/* descr */       "",
-/* creats*/       "NoteCollision",
-/* accepts */     "",
-/* acks  */      "note-column-interface",
-/* reads */       "",
-/* write */       "");
diff --git a/lily/column-x-positions.cc b/lily/column-x-positions.cc
deleted file mode 100644
index 42e8a00498..0000000000
--- a/lily/column-x-positions.cc
+++ /dev/null
@@ -1,26 +0,0 @@
-/*
-  colhpos.cc -- implement Column_x_positions
-
-  source file of the GNU LilyPond music typesetter
-
-  (c) 1997--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-*/
-
-#include "column-x-positions.hh"
-#include "real.hh"
-
-
-Column_x_positions::Column_x_positions ()
-{
-  satisfies_constraints_b_ = false;
-  force_ = 0;
-}
-
-
-
-
-
-
-
-
-
diff --git a/lily/completion-note-heads-engraver.cc b/lily/completion-note-heads-engraver.cc
deleted file mode 100644
index 1669e9a39f..0000000000
--- a/lily/completion-note-heads-engraver.cc
+++ /dev/null
@@ -1,330 +0,0 @@
-/*
-  head-grav.cc -- part of GNU LilyPond
-
-  (c) 1997--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-*/
-
-#include <ctype.h>
-
-#include "rhythmic-head.hh"
-#include "paper-def.hh"
-#include "event.hh"
-#include "dots.hh"
-#include "dot-column.hh"
-#include "staff-symbol-referencer.hh"
-#include "item.hh"
-#include "score-engraver.hh"
-#include "warn.hh"
-#include "spanner.hh"
-#include "tie.hh"
-
-/*
-
-  How does this work?
-
-  When we catch the note, we predict the end of the note. We keep the
-  events living until we reach the predicted end-time.
-
-  Every time process_music() is called and there are note events, we
-  figure out how long the note to typeset should be. It should be no
-  longer than what's specified, than what is left to do and it should
-  not cross barlines.
-  
-  We copy the reqs into scratch note reqs, to make sure that we get
-  all durations exactly right.
- */
-
-class Completion_heads_engraver : public Engraver
-{
-  Link_array<Item> notes_;
-  Link_array<Item> prev_notes_;
-  Link_array<Grob> ties_;
-  
-  Link_array<Item> dots_;
-  Link_array<Music> note_reqs_;
-  Link_array<Music> scratch_note_reqs_;
-
-  Moment note_end_mom_;
-  bool first_b_;
-  Rational left_to_do_;
-  Rational do_nothing_until_;
-  
-  Moment next_barline_moment ();
-  Duration find_nearest_duration (Rational length);
-  
-public:
-  TRANSLATOR_DECLARATIONS(Completion_heads_engraver);
-
-protected:
-  virtual void initialize ();
-  virtual void start_translation_timestep ();
-  virtual bool try_music (Music *req) ;
-  virtual void process_music ();
-  virtual void stop_translation_timestep ();
-};
-
-void
-Completion_heads_engraver::initialize ()
-{
-  first_b_ = false;
-}
-
-bool
-Completion_heads_engraver::try_music (Music *m) 
-{
-  if (m->is_mus_type ("note-event"))
-    {
-      note_reqs_.push (m);
-
-      first_b_ = true;
-      Moment musiclen = m->get_length ();
-      Moment now = now_mom();
-
-      if (now_mom ().grace_part_)
-	{
-	  musiclen.grace_part_ = musiclen.main_part_ ;
-	  musiclen.main_part_ = Rational (0,1);
-	}
-      note_end_mom_  = note_end_mom_ >? (now + musiclen);
-      do_nothing_until_ = Rational (0,0);
-      
-      return true;
-    }
-  else if  (m->is_mus_type ("busy-playing-event"))
-    {
-      return note_reqs_.size ();
-    }
-  
-  return false;
-  
-}
-
-/*
-  The duration _until_ the next barline.
- */
-Moment
-Completion_heads_engraver::next_barline_moment ( )
-{
-  Moment *e = unsmob_moment (get_property ("measurePosition"));
-  Moment *l = unsmob_moment (get_property ("measureLength"));
-  if (!e || !l)
-    {
-      programming_error ("No timing props set?");
-      return Moment (1,1);
-    }
-
-  return (*l - *e);
-}
-
-Duration  
-Completion_heads_engraver::find_nearest_duration (Rational length)
-{
-  int log_limit= 6;
-
-  Duration d(0,0);
-
-  /*
-    this could surely be done more efficient. Left to the reader as an
-    excercise.  */
-  while (d.get_length () > length && d.duration_log () < log_limit)
-    {
-      if (d.dot_count ())
-	{
-	  d = Duration (d.duration_log (), d.dot_count ()- 1);
-	  continue;
-	}
-      else
-	{
-	  d = Duration (d.duration_log () + 1, 2);
-	}
-    }
-
-  if (d.duration_log () >= log_limit)
-    {
-      // junk the dots.
-      d = Duration (d.duration_log (), 0);
-
-      // scale up.
-      d = d.compressed (length / d.get_length ());
-    }
-  
-  return d;
-}
-
-void
-Completion_heads_engraver::process_music ()
-{
-  if (!first_b_ && !left_to_do_)
-    return ;
-  
-  first_b_ = false;
-
-  Moment now =  now_mom ();
-  if (do_nothing_until_ > now.main_part_)
-    return ;
-  
-  Duration note_dur;
-  Duration *orig = 0;
-  if (left_to_do_)
-    {
-      note_dur = find_nearest_duration (left_to_do_);
-    }
-  else
-    {
-      orig = unsmob_duration (note_reqs_[0]->get_mus_property ("duration"));
-      note_dur = *orig;
-    }
-  Moment nb = next_barline_moment ();
-  if (nb < note_dur.get_length ())
-    {
-      note_dur = find_nearest_duration (nb.main_part_);
-
-      Moment next = now;
-      next.main_part_ += note_dur.get_length ();
-      top_engraver ()->add_moment_to_process (next);
-      do_nothing_until_ = next.main_part_;
-    }
-
-  if (orig)
-    {
-      left_to_do_ = orig->get_length ();
-    }
-
-  if (orig && note_dur.get_length () != orig->get_length ())
-    {
-      if (!scratch_note_reqs_.size ())
-	for (int i = 0; i < note_reqs_.size (); i++)
-	  {
-	    Music * m = note_reqs_[i]->clone ();
-	    scratch_note_reqs_.push (m);
-	  }
-    }
-
-  
-  for (int i = 0;
-       left_to_do_ && i < note_reqs_.size (); i++)
-    {
-      Item *note  = make_item ("NoteHead");
-      
-      Music * req =  note_reqs_[i];
-      if (scratch_note_reqs_.size())
-	{
-	  req = scratch_note_reqs_[i];
-	  SCM pits = note_reqs_[i]->get_mus_property ("pitch");
-	  req->set_mus_property ("pitch",pits);
-	}
-      
-      req->set_mus_property ("duration", note_dur.smobbed_copy ());
-      note->set_grob_property ("duration-log",
-				 gh_int2scm (note_dur.duration_log ()));
-      
-      int dots= note_dur.dot_count ();
-      if (dots)
-	{
-	  Item * d = make_item ("Dots");
-	  Rhythmic_head::set_dots (note, d);
-
-	  /*
-	   measly attempt to save an eeny-weenie bit of memory.
-	  */
-	  if (dots != gh_scm2int (d->get_grob_property ("dot-count")))
-	    d->set_grob_property ("dot-count", gh_int2scm (dots));
-
-	  d->set_parent (note, Y_AXIS);
-	  announce_grob (d, SCM_EOL);
-	  dots_.push (d);
-	}
-
-      Pitch *pit =unsmob_pitch (req->get_mus_property ("pitch"));
-
-      int pos = pit->steps ();
-      SCM c0 = get_property ("centralCPosition");
-      if (gh_number_p (c0))
-	pos += gh_scm2int (c0);
-
-      note->set_grob_property ("staff-position",   gh_int2scm (pos));
-      announce_grob (note,req->self_scm ());
-      notes_.push (note);
-    }
-  
-  if (prev_notes_.size() == notes_.size ())
-    {
-      for (int i= 0; i < notes_.size(); i++)
-	{
-	  Grob * p = make_spanner ("Tie");
-	  Tie::set_interface (p); // cannot remove yet!
-	  
-	  Tie::set_head (p, LEFT, prev_notes_[i]);
-	  Tie::set_head (p, RIGHT, notes_[i]);
-	  
-	  ties_.push (p);
-	  announce_grob(p, SCM_EOL);
-	}
-    }
-
-  left_to_do_ -= note_dur.get_length ();
-
-  /*
-    don't do complicated arithmetic with grace notes.
-   */
-  if (orig
-      &&  now_mom().grace_part_ )
-    {
-      left_to_do_ = Rational (0,0);
-    }
-}
- 
-void
-Completion_heads_engraver::stop_translation_timestep ()
-{
-  for (int i = ties_.size (); i--;)
-    typeset_grob (ties_[i]); 
-  ties_.clear();
-  
-  for (int i=0; i < notes_.size (); i++)
-    {
-      typeset_grob (notes_[i]);
-    }
-  if (notes_.size())
-    prev_notes_ = notes_;
-  notes_.clear ();
-  
-  for (int i=0; i < dots_.size (); i++)
-    {
-      typeset_grob (dots_[i]);
-    }
-  dots_.clear ();
-
-  for (int i = scratch_note_reqs_.size(); i--;)
-    {
-      scm_gc_unprotect_object (scratch_note_reqs_[i]->self_scm () );
-      
-    }
-  
-  scratch_note_reqs_.clear();
-}
-
-void
-Completion_heads_engraver::start_translation_timestep ()
-{
-  Moment now = now_mom ();
-  if (note_end_mom_.main_part_ <= now.main_part_)
-    {
-      note_reqs_.clear ();
-      prev_notes_.clear ();
-    }
-}
-
-Completion_heads_engraver::Completion_heads_engraver()
-{
-}
-
-ENTER_DESCRIPTION(Completion_heads_engraver,
-/* descr */       "This engraver replaces "
-"@code{Note_heads_engraver}. It plays some trickery to "
-"break long notes and automatically tie them into the next measure.",
-/* creats*/       "NoteHead Dots Tie",
-/* accepts */     "busy-playing-event note-event",
-/* acks  */      "",
-/* reads */       "centralCPosition measurePosition measureLength",
-/* write */       "");
diff --git a/lily/context-specced-music-iterator.cc b/lily/context-specced-music-iterator.cc
deleted file mode 100644
index fd4cd1eaf9..0000000000
--- a/lily/context-specced-music-iterator.cc
+++ /dev/null
@@ -1,40 +0,0 @@
-/*   
-  context-specced-music-iterator.cc -- implement
-    Context_specced_music_iterator
-
-  source file of the GNU LilyPond music typesetter
-
-  (c) 2002--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-
-*/
-
-#include "music-wrapper-iterator.hh"
-#include "translator-group.hh"
-
-class Context_specced_music_iterator : public Music_wrapper_iterator
-{
-public:
-  DECLARE_SCHEME_CALLBACK(constructor,());
-  virtual void construct_children ();
-};
-
-void
-Context_specced_music_iterator::construct_children ()
-{
-  SCM ct = get_music ()->get_mus_property ("context-type");
-
-  String c_id;
-  SCM ci = get_music ()->get_mus_property ("context-id");
-  if (gh_string_p (ci))
-    c_id = ly_scm2string (ci);
-  SCM ops = get_music ()->get_mus_property ("property-operations");
-  
-  Translator_group* a
-    = get_outlet ()->find_create_translator (ct, c_id, ops);
-
-  if (a)
-    set_translator (a);
-
-  Music_wrapper_iterator::construct_children();
-}
-IMPLEMENT_CTOR_CALLBACK(Context_specced_music_iterator);
diff --git a/lily/context.cc b/lily/context.cc
deleted file mode 100644
index cf5b161679..0000000000
--- a/lily/context.cc
+++ /dev/null
@@ -1,175 +0,0 @@
-#include "translator-group.hh"
-#include "context-def.hh"
-#include "warn.hh"
-#include "music-output-def.hh"
-#include "scm-hash.hh"
-#include "main.hh"
-
-bool
-Translator_group::is_removable () const
-{
-  return trans_group_list_ == SCM_EOL && ! iterator_count_;
-}
-
-Translator_group *
-Translator_group::find_existing_translator (SCM n, String id)
-{
-  if ((is_alias (n) && (id_string_ == id || id.is_empty ())) || n == ly_symbol2scm ("Current"))
-    return this;
-
-  Translator_group* r = 0;
-  for (SCM p = trans_group_list_; !r && gh_pair_p (p); p = ly_cdr (p))
-    {
-      Translator *  t = unsmob_translator (ly_car (p));
-      
-      r = dynamic_cast<Translator_group*> (t)->find_existing_translator (n, id);    }
-
-  return r;
-}
-
-
-Translator_group*
-Translator_group::find_create_translator (SCM n, String id, SCM operations)
-{
-  Translator_group * existing = find_existing_translator (n,id);
-  if (existing)
-    return existing;
-
-
-  /*
-    TODO: use accepts_list_.
-   */
-  Link_array<Context_def> path
-    = unsmob_context_def (definition_)->path_to_acceptable_translator (n, get_output_def ());
-
-  if (path.size ())
-    {
-      Translator_group * current = this;
-
-      // start at 1.  The first one (index 0) will be us.
-      for (int i=0; i < path.size (); i++)
-	{
-	  SCM ops = (i == path.size () -1) ? operations : SCM_EOL;
-
-	  Translator_group * new_group
-	    = path[i]->instantiate (ops);
-
-	  if (i == path.size () -1)
-	    {
-	      new_group->id_string_ = id;
-	    }
-
-	  current->add_fresh_group_translator (new_group);
-	  apply_property_operations (new_group, ops);
-	  
-	  current = new_group;
-	}
-
-      return current;
-    }
-
-  Translator_group *ret = 0;
-  if (daddy_trans_)
-    ret = daddy_trans_->find_create_translator (n, id, operations);
-  else
-    {
-      warning (_f ("Cannot find or create `%s' called `%s'",
-		   ly_symbol2string (n).to_str0 (), id));
-      ret =0;
-    }
-  return ret;
-}
-
-/*
-  Default child context as a SCM string, or something else if there is
-  none.
-*/
-SCM
-default_child_context_name (Translator_group const *tg)
-{
-  return gh_pair_p (tg->accepts_list_)
-    ? ly_car (scm_last_pair (tg->accepts_list_))
-    : SCM_EOL;
-}
-
-
-bool
-Translator_group::is_bottom_context () const
-{
-  return !gh_symbol_p (default_child_context_name (this));
-}
-
-Translator_group*
-Translator_group::get_default_interpreter ()
-{
-  if (!is_bottom_context ())
-    {
-      SCM nm = default_child_context_name (this);
-      SCM st = get_output_def ()->find_translator (nm);
-
-      Context_def *t = unsmob_context_def (st);
-      if (!t)
-	{
-	  warning (_f ("can't find or create: `%s'", ly_symbol2string (nm).to_str0 ()));
-	  t = unsmob_context_def (this->definition_);
-	}
-      Translator_group *tg = t->instantiate (SCM_EOL);
-      add_fresh_group_translator (tg);
-      if (!tg->is_bottom_context ())
-	return tg->get_default_interpreter ();
-      else
-	return tg;
-    }
-  return this;
-}
-
-/*
-  PROPERTIES
- */
-Translator_group*
-Translator_group::where_defined (SCM sym) const
-{
-  if (properties_dict ()->contains (sym))
-    {
-      return (Translator_group*)this;
-    }
-
-  return (daddy_trans_) ? daddy_trans_->where_defined (sym) : 0;
-}
-
-/*
-  return SCM_EOL when not found.
-*/
-SCM
-Translator_group::internal_get_property (SCM sym) const
-{
-  SCM val =SCM_EOL;
-  if (properties_dict ()->try_retrieve (sym, &val))
-    return val;
-
-  if (daddy_trans_)
-    return daddy_trans_->internal_get_property (sym);
-  
-  return val;
-}
-
-void
-Translator_group::internal_set_property (SCM sym, SCM val)
-{
-#ifndef NDEBUG
-  if (internal_type_checking_global_b)
-    assert (type_check_assignment (sym, val, ly_symbol2scm ("translation-type?")));
-#endif
-  
-  properties_dict ()->set (sym, val);
-}
-
-/*
-  TODO: look up to check whether we have inherited var? 
- */
-void
-Translator_group::unset_property (SCM sym)
-{
-  properties_dict ()->remove (sym);
-}
-
diff --git a/lily/custos-engraver.cc b/lily/custos-engraver.cc
deleted file mode 100644
index 173fb6720c..0000000000
--- a/lily/custos-engraver.cc
+++ /dev/null
@@ -1,154 +0,0 @@
-/*
-  custos-engraver.cc -- implement Custos_engraver
-
-  source file of the GNU LilyPond music typesetter
-
-  (c) 2000--2004 Juergen Reuter <reuter@ipd.uka.de>,
-                  Han-Wen Nienhuys <hanwen@cs.uu.nl>
-*/
-
-#include "engraver.hh"
-#include "bar-line.hh"
-#include "item.hh"
-#include "note-head.hh"
-#include "staff-symbol-referencer.hh"
-#include "warn.hh"
-#include "event.hh"
-
-/*
- * This class implements an engraver for custos symbols.
- *
- * FIXME: note heads inside of ligatures (i.e. ligature heads) are
- * sometimes not recognized by this engraver. --jr
- */
-class Custos_engraver : public Engraver
-{
-public:
-TRANSLATOR_DECLARATIONS(  Custos_engraver);
-  virtual void start_translation_timestep ();
-  virtual void acknowledge_grob (Grob_info);
-  virtual void process_acknowledged_grobs ();
-  virtual void stop_translation_timestep ();
-  virtual void finalize ();
-
-
-private:
-  Item * create_custos ();
-  bool custos_permitted;
-  Link_array<Grob> custodes_;
-  Array<Pitch> pitches_;
-};
-
-Custos_engraver::Custos_engraver ()
-{
-  custos_permitted = false;
-}
-
-
-void
-Custos_engraver::stop_translation_timestep ()
-{
-  /*
-    delay typeset until we're at the next moment, so we can silence custodes at the end of the piece.
-   */
-  for (int i = custodes_.size (); i--;)
-    {
-      typeset_grob (custodes_[i]);
-    }
-  pitches_.clear ();
-
-  custos_permitted = false;
-}
-
-void
-Custos_engraver::start_translation_timestep ()
-{
-  custodes_.clear ();
-}
-
-
-void
-Custos_engraver::acknowledge_grob (Grob_info info)
-{
-  Item *item = dynamic_cast <Item *> (info.grob_);
-  if (item)
-    {
-      Music * m = info.music_cause();
-      if (Bar_line::has_interface (info.grob_))
-	custos_permitted = true;
-      else if (Note_head::has_interface (info.grob_)
-	       && m
-	       && m->is_mus_type ("note-event"))
-	{
-
-	  /*
-	    ideally, we'd do custos->set_parent (Y_AXIS, notehead),
-	    but since the note head lives on the other system, we can't
-
-	    So we copy the position from the note head pitch.  We
-	    don't look at the staff-position, since we can't be sure
-	    whether Clef_engraver already applied a vertical shift.
-	  */
-	    pitches_.push (*unsmob_pitch (m->get_mus_property ("pitch")));
-	}
-    }
-}
-
-void
-Custos_engraver::process_acknowledged_grobs ()
-{
-  if (gh_string_p (get_property ("whichBar")))
-    custos_permitted = true;
-  
-  if (custos_permitted)
-    {
-      for (int i = pitches_.size (); i--;)
-	{
-	  Item *c = create_custos ();
-
-	  int p = pitches_[i].steps ();
-	  SCM c0 = get_property ("centralCPosition");
-	  if (gh_number_p (c0))
-	    p += gh_scm2int (c0);
-
-	  
-	  c->set_grob_property ("staff-position",
-				gh_int2scm (p));
-	  
-	}
-
-      pitches_.clear ();
-    }
-}
-
-Item* 
-Custos_engraver::create_custos ()
-{
-  Item* custos = make_item ("Custos");
-  
-  announce_grob(custos, SCM_EOL);
-  custodes_.push (custos);
-  
-  return custos;
-}
-
-void
-Custos_engraver::finalize ()
-{
-  for (int i = custodes_.size (); i--;)
-    {
-      custodes_[i]->suicide ();
-      typeset_grob (custodes_[i]);
-    }
-  custodes_.clear ();
-}
-
-
-
-ENTER_DESCRIPTION(Custos_engraver,
-/* descr */       "",
-/* creats*/       "Custos",
-/* accepts */     "",
-/* acks  */      "bar-line-interface note-head-interface",
-/* reads */       "",
-/* write */       "");
diff --git a/lily/custos.cc b/lily/custos.cc
deleted file mode 100644
index 8024fa9465..0000000000
--- a/lily/custos.cc
+++ /dev/null
@@ -1,113 +0,0 @@
-/*
-  custos.cc -- implement Custos
-
-  source file of the GNU LilyPond music typesetter
-
-  (c) 2000--2004 Juergen Reuter <reuter@ipd.uka.de>
-*/
-
-/* TODO:
-
- - do not show if a clef change immediately follows in the next line
-
- - decide: do or do not print custos if the next line starts with a rest
-
-*/
-
-
-#include <stdio.h>
-#include "direction.hh"
-#include "staff-symbol-referencer.hh"
-#include "custos.hh"
-#include "molecule.hh"
-#include "warn.hh"
-#include "note-head.hh"
-#include "item.hh"
-#include "font-interface.hh"
-#include "math.h" // rint
-
-MAKE_SCHEME_CALLBACK (Custos,print,1);
-SCM
-Custos::print (SCM smob)
-{
-  Item *me = (Item *)unsmob_grob (smob);
-
-  SCM scm_style = me->get_grob_property ("style");
-  String style;
-  if (gh_symbol_p (scm_style))
-    {
-      style = ly_symbol2string (scm_style);
-    }
-  else
-    {
-      style = "mensural";
-    }
-
-  /*
-   * Shall we use a common custos font character regardless if on
-   * staffline or not, or shall we use individual font characters
-   * for both cases?
-   */
-  bool adjust
-    = to_boolean (me->get_grob_property ("adjust-if-on-staffline"));
-
-  int neutral_pos;
-  SCM ntr_pos = me->get_grob_property ("neutral-position");
-  if (gh_number_p (ntr_pos))
-    neutral_pos = gh_scm2int (ntr_pos);
-  else
-    neutral_pos = 0;
-
-  Direction neutral_direction =
-    to_dir (me->get_grob_property ("neutral-direction"));
-
-  int pos = (int)rint (Staff_symbol_referencer::get_position (me));
-  int sz = Staff_symbol_referencer::line_count (me)-1;
-
-  String font_char = "custodes-" + style + "-";
-  if (pos < neutral_pos)
-    font_char += "u";
-  else if (pos > neutral_pos)
-    font_char += "d";
-  else if (neutral_direction == UP)
-    font_char += "u";
-  else if (neutral_direction == DOWN)
-    font_char += "d";
-  else // auto direction; not yet supported -> use "d"
-    font_char += "d";
-
-  if (adjust)
-    {
-      font_char += (((pos ^ sz) & 0x1) == 0) ? "1" : "0";
-    }
-  else
-    {
-      font_char += "2";
-    }
-
-  Molecule molecule
-    = Font_interface::get_default_font (me)->find_by_name (font_char);
-  if (molecule.is_empty ())
-    {
-      me->warning (_f ("custos `%s' not found", font_char));
-      return SCM_EOL;
-    }
-  else
-    {
-      // add ledger lines
-      int pos = (int)rint (Staff_symbol_referencer::get_position (me));
-      int interspaces = Staff_symbol_referencer::line_count (me)-1;
-      if (abs (pos) - interspaces > 1)
-	{
-	  Molecule ledger_lines =
-	    Note_head::brew_ledger_lines (me, pos, interspaces,
-					  molecule.extent (X_AXIS), 0, true);
-	  molecule.add_molecule (ledger_lines);
-	}
-      return molecule.smobbed_copy ();
-    }
-}
-
-ADD_INTERFACE (Custos, "custos-interface",
-  "Engrave custodes",
-  "style adjust-if-on-staffline neutral-direction neutral-position");
diff --git a/lily/dimension-cache.cc b/lily/dimension-cache.cc
deleted file mode 100644
index 08074b2dab..0000000000
--- a/lily/dimension-cache.cc
+++ /dev/null
@@ -1,48 +0,0 @@
-/*   
-  dimension-cache.cc --  implement Dimension_cache
-  
-  source file of the GNU LilyPond music typesetter
-  
-  (c) 1998--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
- */
-#include <math.h>
-#include "warn.hh"
-#include "dimension-cache.hh"
-#include "parray.hh"
-#include "grob.hh"
-
-
-Dimension_cache::Dimension_cache (Dimension_cache const &d)
-{
-  init ();
-  dimension_ = d.dimension_;
-
-  offset_ = d.offset_;
-  offset_callbacks_ = d.offset_callbacks_;
-  offsets_left_ = d.offsets_left_;
-  parent_ = d.parent_;  
-}
-
-Dimension_cache::Dimension_cache ()
-{
-  init ();
-}
-
-void
-Dimension_cache::init ()
-{
-  dimension_ = SCM_EOL;
-
-  offsets_left_ = 0;
-  offset_callbacks_ = SCM_EOL;
-  offset_ =0.0;
-  
-  parent_ =0;
-}
-
-
-
-
-
-
-
diff --git a/lily/dimensions.cc b/lily/dimensions.cc
deleted file mode 100644
index 20d9b8e32e..0000000000
--- a/lily/dimensions.cc
+++ /dev/null
@@ -1,19 +0,0 @@
-// dimensions.cc
-
-#include "dimensions.hh"
-#include "warn.hh"
-#include "string.hh"
-
-String
-print_dimen (Real r)
-{
-  String s = to_string (r, "%.3f");
-  if (s.index ("NaN") != -1)
-    {
-      warning (_ ("NaN"));
-      s = "0.0";
-    }
-  s += "pt";
-  return s;
-}
-
diff --git a/lily/directional-element-interface.cc b/lily/directional-element-interface.cc
deleted file mode 100644
index e4481d6bcb..0000000000
--- a/lily/directional-element-interface.cc
+++ /dev/null
@@ -1,28 +0,0 @@
-/*   
-  directional-element-interface.cc -- implement Directional_element
-  
-  source file of the GNU LilyPond music typesetter
-  
-  (c) 1999--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-  
- */
-
-#include "directional-element-interface.hh"
-
-
-Direction
-get_grob_direction (Grob*me) 
-{
-  SCM d= me->get_grob_property ("direction");
-  if (!is_direction (d))
-    return CENTER;
-      
-  return to_dir (d);
-}
-
-void
-set_grob_direction (Grob*me, Direction d) 
-{
-  SCM sd = gh_int2scm (d);
-  me->set_grob_property ("direction", sd);
-}
diff --git a/lily/dot-column-engraver.cc b/lily/dot-column-engraver.cc
deleted file mode 100644
index 77b167301c..0000000000
--- a/lily/dot-column-engraver.cc
+++ /dev/null
@@ -1,89 +0,0 @@
-/*   
-  dot-column-engraver.cc -- implement Dot_column_engraver
-  
-  source file of the GNU LilyPond music typesetter
-  
-  (c) 1998--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-  
- */
-
-
-#include "rhythmic-head.hh"
-#include "dot-column.hh"
-#include "side-position-interface.hh"
-#include "engraver.hh"
-#include "stem.hh"
-
-class Dot_column_engraver : public Engraver
-{
-  Grob *dotcol_ ;
-  Grob * stem_;
-  Link_array<Item> heads_;
-public:
-  TRANSLATOR_DECLARATIONS(
-  Dot_column_engraver );
-  
-protected:
-  virtual void acknowledge_grob (Grob_info);
-  virtual void stop_translation_timestep ();  
-};
-
-
-Dot_column_engraver::Dot_column_engraver ()
-{
-  dotcol_ =0;
-  stem_ = 0;
-}
-
-void
-Dot_column_engraver::stop_translation_timestep ()
-{
-  if (dotcol_)
-    {
-
-      /*
-	Add the stem to the support so dots stay clear of flags.
-
-	See [Ross, p 171]
-       */
-      if (stem_)
-	dotcol_->set_grob_property ("stem", stem_->self_scm ());
-      
-      typeset_grob (dotcol_);
-      dotcol_ =0;
-    }
-  heads_.clear ();
-  stem_ =0;
-}
-
-void
-Dot_column_engraver::acknowledge_grob (Grob_info info)
-{
-  Grob *d = unsmob_grob (info.grob_->get_grob_property ("dot"));
-  if (d)
-    {
-      if (!dotcol_)
-	{
-	  dotcol_ = make_item ("DotColumn");
-	  announce_grob(dotcol_, SCM_EOL);
-	}
-
-      Dot_column::add_head (dotcol_, info.grob_);
-    }
-  else if (Stem::has_interface (info.grob_))
-    {
-      stem_ = info.grob_;
-    }
-}
-
-
-
-
-ENTER_DESCRIPTION(Dot_column_engraver,
-/* descr */       " Engraves dots on dotted notes shifted to the right of the note.\n"
-"If omitted, then dots appear on top of the notes.",
-/* creats*/       "DotColumn",
-/* accepts */     "",
-/* acks  */      "rhythmic-head-interface dot-column-interface stem-interface",
-/* reads */       "",
-/* write */       "");
diff --git a/lily/dot-column.cc b/lily/dot-column.cc
deleted file mode 100644
index 4cb993c719..0000000000
--- a/lily/dot-column.cc
+++ /dev/null
@@ -1,315 +0,0 @@
-/*
-  dot-column.cc -- implement Dot_column
-
-  source file of the GNU LilyPond music typesetter
-
-  (c) 1997--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-*/
-
-#include <stdio.h>
-#include <map>
-
-#include "dots.hh"
-#include "dot-column.hh"
-#include "rhythmic-head.hh"
-#include "group-interface.hh"
-#include "staff-symbol-referencer.hh"
-#include "directional-element-interface.hh"
-#include "side-position-interface.hh"
-#include "axis-group-interface.hh"
-#include "stem.hh"
-
-/*
-  TODO: let Dot_column communicate with stem via Note_column.
- */
-
-MAKE_SCHEME_CALLBACK (Dot_column,force_shift_callback,2);
-SCM
-Dot_column::force_shift_callback (SCM element_smob, SCM axis)
-{
-  Grob *me = unsmob_grob (element_smob);
-  Axis a = (Axis) gh_scm2int (axis);
-  assert (a == Y_AXIS);
-  me = me->get_parent (X_AXIS);
-
-  if (!to_boolean (me->get_grob_property ("positioning-done")))
-    {
-      me->set_grob_property ("positioning-done", SCM_BOOL_T);
-  
-      do_shifts (me);
-    }
-  return gh_double2scm (0.0);
-}
-
-MAKE_SCHEME_CALLBACK(Dot_column,side_position, 2);
-SCM
-Dot_column::side_position (SCM element_smob, SCM axis)
-{
-  Grob *me = unsmob_grob (element_smob);
-  Axis a = (Axis) gh_scm2int (axis);
-  assert (a == X_AXIS);
-
-  Grob * stem = unsmob_grob (me->get_grob_property ("stem"));
-  if (stem
-      && !Stem::get_beam (stem)
-      && Stem::duration_log (stem) > 2
-      && !Stem::invisible_b (stem)
-      )
-    {
-      /*
-	trigger stem end & direction calculation.
-
-	This will add the stem to the support if a flag collision happens.
-       */
-      Stem::stem_end_position (stem); 
-    }
-  return Side_position_interface::aligned_side (element_smob, axis);
-}
-
-
-
-struct Dot_position
-{
-  int pos_;
-  Direction dir_;
-  Grob *dot_;
-  bool extremal_head_;
-
-  
-  Dot_position ()
-  {
-    dot_ = 0;
-    pos_ =0;
-    dir_ = CENTER;
-  }
-};
-
-
-typedef std::map<int, Dot_position> Dot_configuration;
-
-/*
-  Value CFG according.
-
-*/
-int
-dot_config_badness (Dot_configuration const  &cfg)
-{
-  int t = 0;
-  for (Dot_configuration::const_iterator i (cfg.begin ());
-       i != cfg.end (); i++)
-    {
-      int p = i->first;
-      int demerit = sqr (p - i->second.pos_) * 2;
-
-      int dot_move_dir = sign (p - i->second.pos_);
-      if (i->second.extremal_head_)
-	{
-	  if (i->second.dir_
-	      &&  dot_move_dir != i->second.dir_)
-	    demerit += 3;
-	  else if (dot_move_dir != UP)
-	    demerit += 2;
-	}
-      else if (dot_move_dir != UP)
-	demerit += 1;
-      
-      t += demerit;
-    }
-
-  return t;  
-}
-
-void
-print_dot_configuration (Dot_configuration const &cfg)
-{
-  printf ("dotconf { ");
-  for (Dot_configuration::const_iterator i (cfg.begin ());
-       i != cfg.end (); i++)
-    printf ("%d, " , i->first);
-  printf ("} \n");
-}
-
-/*
-  Shift K and following (preceding) entries up (down) as necessary to
-  prevent staffline collisions if D is up (down).
-
-  If K is in CFG, then do nothing.  
-*/
-
-Dot_configuration
-shift_one (Dot_configuration const &cfg,
-	   int k, Direction d)
-{
-  Dot_configuration new_cfg;
-  int offset = 0;
-  
-  if (d > 0)
-    {
-      for (Dot_configuration::const_iterator i (cfg.begin ());
-	   i != cfg.end (); i++)
-	{
-	  int p = i->first;
-	  if (p == k)
-	    {
-	      if (Staff_symbol_referencer::on_staffline (i->second.dot_, p))
-		p += d ;
-	      else
-		p += 2* d;
-
-	      offset = 2*d;
-
-	      new_cfg[p] = i->second; 
-	    }
-	  else
-	    {
-	      if (new_cfg.find (p) == new_cfg.end ())
-		{
-		  offset =0;
-		}
-	      new_cfg[p + offset] = i->second;
-	    }
-	}
-    }
-  else
-    {
-      Dot_configuration::const_iterator i (cfg.end ());
-      do
-	{
-	  i --;
-
-	  int p = i->first;
-	  if (p == k)
-	    {
-	      if (Staff_symbol_referencer::on_staffline (i->second.dot_, p))
-		p += d ;
-	      else
-		p += 2* d;
-
-	      offset = 2*d;
-
-	      new_cfg[p] = i->second; 
-	    }
-	  else
-	    {
-	      if (new_cfg.find (p) == new_cfg.end ())
-		{
-		  offset =0;
-		}
-
-	      new_cfg[p + offset] = i->second;
-	    }
-	}
-      while (i != cfg.begin ());
-    }
-  
-  return new_cfg;
-}
-
-/*
-  Remove the collision in CFG either by shifting up or down, whichever
-  is best.
- */
-void
-remove_collision (Dot_configuration &cfg, int p)
-{
-  bool collide = cfg.find (p) != cfg.end ();
-
-  if (collide)
-    {
-      Dot_configuration cfg_up = shift_one (cfg, p, UP);
-      Dot_configuration cfg_down = shift_one (cfg, p, DOWN);
-      
-      int b_up =  dot_config_badness (cfg_up);
-      int b_down = dot_config_badness (cfg_down);
-
-      cfg =  (b_up < b_down) ? cfg_up : cfg_down;
-    }
-}
-
-SCM
-Dot_column::do_shifts (Grob*me)
-{
-  Link_array<Grob> dots =
-    Pointer_group_interface__extract_grobs (me, (Grob*)0, "dots");
-
-  { /*
-      Trigger note collision resolution first, since that may kill off
-      dots when merging.
-     */
-    Grob * c = 0;
-    for (int i = dots.size (); i-- ; )
-      {
-	Grob * n = dots[i]->get_parent (Y_AXIS);
-	if (c)
-	  c = n->common_refpoint (c, X_AXIS);
-	else
-	  c = n;
-      }
-    for (int i = dots.size (); i-- ; )
-      {
-	Grob * n = dots[i]->get_parent (Y_AXIS);
-	n->relative_coordinate (c ,  X_AXIS);
-      }
-  }
-  
-  dots.sort (compare_position);
-  for (int i = dots.size (); i--;)
-    if (!dots[i]->live ())
-      dots.del (i);
-  
-  Dot_configuration cfg;
-  for (int i =0;i < dots.size (); i++)
-    {
-      Dot_position dp;
-      dp.dot_ = dots[i];
-
-      Grob * note = dots[i]->get_parent (Y_AXIS);
-      if (note)
-	{
-	  Grob *stem = unsmob_grob (note->get_grob_property ("stem"));
-	  if (stem)
-	    dp.extremal_head_ = Stem::first_head (stem) == note;
-	}
-      
-      int p = int (Staff_symbol_referencer::get_position (dp.dot_));
-      dp.pos_= p;
-
-      if (dp.extremal_head_)
-	dp.dir_ = to_dir (dp.dot_->get_grob_property  ("direction"));
-
-      remove_collision (cfg, p);
-      cfg[p] = dp;
-      if (Staff_symbol_referencer::on_staffline (dp.dot_, p))
-	remove_collision (cfg, p);
-    }
-
-  for (Dot_configuration::const_iterator i (cfg.begin ());
-       i != cfg.end (); i++)
-    {
-      Staff_symbol_referencer::set_position (i->second.dot_, i->first);  
-    }
-
-  return SCM_UNSPECIFIED;
-}
-
-void
-Dot_column::add_head (Grob * me, Grob *rh)
-{
-  Grob * d = unsmob_grob (rh->get_grob_property ("dot"));
-  if (d)
-    {
-      Side_position_interface::add_support (me,rh);
-
-      Pointer_group_interface::add_grob (me, ly_symbol2scm ("dots"), d);
-      d->add_offset_callback (Dot_column::force_shift_callback_proc , Y_AXIS);
-      Axis_group_interface::add_element (me, d);
-    }
-}
-
-
-
-
-ADD_INTERFACE (Dot_column, "dot-column-interface",
-  "Interface that groups dots so they form a column",
-  "positioning-done direction stem");
-
diff --git a/lily/dots.cc b/lily/dots.cc
deleted file mode 100644
index 2bb9dfdf7a..0000000000
--- a/lily/dots.cc
+++ /dev/null
@@ -1,61 +0,0 @@
-/*
-  dots.cc -- implement Dots
-
-  source file of the GNU LilyPond music typesetter
-
-  (c) 1997--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-*/
-
-#include "dots.hh"
-#include "item.hh"
-#include "molecule.hh"
-#include "paper-def.hh"
-#include "font-interface.hh"
-#include "lookup.hh"
-#include "staff-symbol-referencer.hh"
-#include "directional-element-interface.hh"
-
-MAKE_SCHEME_CALLBACK (Dots,print,1);
-SCM  
-Dots::print (SCM d)
-{
-  Grob *sc = unsmob_grob (d);
-  Molecule mol;
-  
-  SCM c = sc->get_grob_property ("dot-count");
-
-  if (gh_number_p (c))
-    {
-      Molecule d = Font_interface::get_default_font (sc)->find_by_name (String ("dots-dot"));
-      Real dw = d.extent (X_AXIS).length ();
-      
-
-      /*
-	we need to add a real blank box, to assure that
-	side-positioning doth not cancel the left-most padding.  */
-
-      /*
-	TODO: this should  be handled by side-position padding.
-       */
-      mol = Lookup::blank (Box (Interval (0,0),
-				Interval (0,0)));
-  
-      for (int i = gh_scm2int (c); i--;)
-	{
-	  d.translate_axis (2*dw,X_AXIS);
-	  mol.add_at_edge (X_AXIS, RIGHT, d, dw, 0);
-	}
-    }
-  return mol.smobbed_copy ();
-}
-
-
-
-
-ADD_INTERFACE (Dots, "dots-interface",
-  "The dots to go with a notehead/rest.  A separate interface, since they "
-" are a party in collision resolution. "
-" #'direction is the Direction to handle staff-line collisions in.",
-  "direction dot-count");
-
-
diff --git a/lily/drum-note-engraver.cc b/lily/drum-note-engraver.cc
deleted file mode 100644
index 54cc484539..0000000000
--- a/lily/drum-note-engraver.cc
+++ /dev/null
@@ -1,197 +0,0 @@
-/*
-  drum-note-engraver.cc
-  
-  (c) 1997--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-*/
-#include <ctype.h>
-
-#include "rhythmic-head.hh"
-#include "event.hh"
-#include "item.hh"
-#include "engraver.hh"
-#include "warn.hh"
-#include "side-position-interface.hh"
-#include "script.hh"
-#include "stem.hh"
-#include "note-column.hh"
-
-class Drum_notes_engraver : public Engraver
-{
-  Link_array<Item> notes_;
-  Link_array<Item> dots_;
-  Link_array<Item> scripts_;
-  Link_array<Music> events_;
-
-public:
-  TRANSLATOR_DECLARATIONS(Drum_notes_engraver);
-
-protected:
-  virtual bool try_music (Music *ev) ;
-  virtual void process_music ();
-  virtual void acknowledge_grob (Grob_info); 
-  virtual void stop_translation_timestep ();
-};
-
-Drum_notes_engraver::Drum_notes_engraver()
-{
-}
-
-bool
-Drum_notes_engraver::try_music (Music *m) 
-{
-  if (m->is_mus_type ("note-event"))
-    {
-      events_.push (m);
-      return true;
-    }
-  else if (m->is_mus_type ("busy-playing-event"))
-    return events_.size ();
-  else if (m->is_mus_type ("start-playing-event"))
-    return events_.size ();
-  
-  return false;
-}
-
-
-void
-Drum_notes_engraver::process_music ()
-{
-  SCM tab = 0;
-  for (int i=0; i < events_.size (); i++)
-    {
-      if (!tab)
-	tab = get_property ("drumStyleTable");
-      
-      Item *note = make_item ("NoteHead");
-      Music * ev = events_[i];
-      
-      Duration dur = *unsmob_duration (ev->get_mus_property ("duration"));
-
-      note->set_grob_property ("duration-log", gh_int2scm (dur.duration_log ()));
-
-      if (dur.dot_count ())
-	{
-	  Item * d = make_item ("Dots");
-	  Rhythmic_head::set_dots (note, d);
-	  
-	  if (dur.dot_count ()
-	      != robust_scm2int (d->get_grob_property ("dot-count"), 0))
-	    d->set_grob_property ("dot-count", gh_int2scm (dur.dot_count ()));
-
-	  d->set_parent (note, Y_AXIS);
-	  announce_grob (d, SCM_EOL);
-	  dots_.push (d);
-	}
-
-      SCM drum_type =  ev->get_mus_property ("drum-type");
-
-      SCM defn = SCM_EOL;
-
-      if (scm_hash_table_p (tab) == SCM_BOOL_T)
-	defn = scm_hashq_ref (tab, drum_type, SCM_EOL);
-      
-      if (gh_pair_p (defn))
-	{
-	  SCM pos = gh_caddr (defn);
-	  SCM style =gh_car (defn);
-	  SCM script = gh_cadr (defn);
-	  
-	  if (scm_integer_p (pos) == SCM_BOOL_T)
-	    note->set_grob_property ("staff-position", pos);
-	  if (gh_symbol_p (style))
-	    note->set_grob_property ("style", style);
-
-	  if (gh_string_p (script))
-	    {
-	      Item *p  = make_item ("Script");
-	      SCM desc  = SCM_EOL;
-	      make_script_from_event (p, &desc,
-				      daddy_trans_, script,
-				      0);
-
-	      if (p->get_grob_property ("follow-into-staff"))
-		p->set_grob_property ("staff-padding", SCM_EOL);
-	      
-	      announce_grob (p, ev->self_scm ());
-
-	      p->set_parent (note, Y_AXIS);
-	      Side_position_interface::add_support (p, note); 
-	      scripts_.push (p);
-	    }
-	}
-
-
-      
-      announce_grob (note,ev->self_scm());
-      notes_.push (note);
-    }
-}
-
-void
-Drum_notes_engraver::acknowledge_grob (Grob_info inf)
-{
-  if (Stem::has_interface (inf.grob_))
-    {
-      for (int i=0; i < scripts_.size (); i++)
-	{
-	  Grob*e = scripts_[i];
-
-	  if (to_dir (e->get_grob_property ("side-relative-direction")))
-	    e->set_grob_property ("direction-source", inf.grob_->self_scm ());
-
-	  /*
-	    add dep ? 
-	   */
-	  e->add_dependency (inf.grob_);
-	  Side_position_interface::add_support (e, inf.grob_);
-	}
-    }
-   else if (Note_column::has_interface (inf.grob_))
-    {
-      for (int i=0; i < scripts_.size (); i++)
-	{
-	  Grob *e = scripts_[i];
-	  
-	  if (!e->get_parent (X_AXIS) &&
-	      Side_position_interface::get_axis (e) == Y_AXIS)
-	    {
-	      e->set_parent (inf.grob_, X_AXIS);
-	    }
-	}
-    }
-
-}
-
-
-void
-Drum_notes_engraver::stop_translation_timestep ()
-{
-  for (int i=0; i < notes_.size (); i++)
-    {
-      typeset_grob (notes_[i]);
-    }
-  notes_.clear ();
-  for (int i=0; i < dots_.size (); i++)
-    {
-      typeset_grob (dots_[i]);
-    }
-  dots_.clear ();
-  for (int i=0; i < scripts_.size (); i++)
-    {
-      typeset_grob (scripts_[i]);
-    }
-  scripts_.clear ();
-  
-  events_.clear ();
-}
-
-
-
-ENTER_DESCRIPTION(Drum_notes_engraver,
-/* descr */       "Generate noteheads.",
-/* creats*/       "NoteHead Dots Script",
-/* accepts */     "note-event busy-playing-event",
-/* acks  */       "stem-interface note-column-interface",
-/* reads */       "drumStyleTable",
-/* write */       "");
-
diff --git a/lily/drum-note-performer.cc b/lily/drum-note-performer.cc
deleted file mode 100644
index 6532e48f43..0000000000
--- a/lily/drum-note-performer.cc
+++ /dev/null
@@ -1,136 +0,0 @@
-/*
-  note-performer.cc -- implement Drum_note_performer
-
-  source file of the GNU LilyPond music typesetter
-
-  (c) 1996--2004 Jan Nieuwenhuizen <janneke@gnu.org>
- */
-
-#include "performer.hh"
-#include "event.hh"
-#include "audio-item.hh"
-#include "audio-column.hh"
-#include "global-translator.hh"
-#include "warn.hh"
-
-class Drum_note_performer : public Performer {
-public:
-  TRANSLATOR_DECLARATIONS(Drum_note_performer);
-  
-protected:
-  virtual bool try_music (Music *ev) ;
-  virtual void stop_translation_timestep ();
-  virtual void create_audio_elements ();
-
-  Global_translator* get_global_translator ();
-private:
-  Link_array<Music> note_evs_;
-  Link_array<Audio_note> notes_;
-  Link_array<Audio_note> delayeds_;
-};
-
-void 
-Drum_note_performer::create_audio_elements ()
-{
-  SCM tab =0;
-  if (!tab) tab = get_property ("drumPitchTable");
-  
-  while (note_evs_.size ())
-    {
-      Music* n = note_evs_.pop ();
-      SCM sym = n->get_mus_property ("drum-type");
-      SCM defn = SCM_EOL;
-
-      if (gh_symbol_p (sym)
-	  &&  (scm_hash_table_p (tab) == SCM_BOOL_T))
-	defn = scm_hashq_ref (tab, sym, SCM_EOL);
-      
-      if (Pitch * pit = unsmob_pitch (defn))
-	{
-	  Audio_note* p = new Audio_note (*pit,  n->get_length (), 0);
-	  Audio_element_info info (p, n);
-	  announce_element (info);
-	  notes_.push (p);
-	}
-    }
-  
-  note_evs_.clear ();
-}
-
-Global_translator*
-Drum_note_performer::get_global_translator ()
-{
-  Translator *t = this;
-  Global_translator *global =0;
-  do
-    {
-      t = t->daddy_trans_ ;
-      global = dynamic_cast<Global_translator*> (t);
-    }
-  while (!global);
-
-  return global;
-}
-
-
-void
-Drum_note_performer::stop_translation_timestep ()
-{
-  // why don't grace notes show up here?
-  // --> grace notes effectively do not get delayed
-  Global_translator* global = get_global_translator ();
-  for (int i=0; i < notes_.size (); i++)
-    {
-      Audio_note* n = notes_[i];
-      Moment m= n->delayed_until_mom_;
-      if (m.to_bool ())
-	{
-	  global->add_moment_to_process (m);
-	  delayeds_.push (n);
-	  notes_[i] = 0;
-	  notes_.del (i);
-	  i--;
-	}
-    }
-
-  Moment now = now_mom ();
-  for (int i=0; i < notes_.size (); i++)
-    {
-      play_element (notes_[i]);
-    }
-  notes_.clear ();
-  note_evs_.clear ();
-  for (int i=0; i < delayeds_.size (); i++)
-    {
-      Audio_note* n = delayeds_[i];
-      if (n->delayed_until_mom_ <= now)
-	{
-	  play_element (n);
-	  delayeds_[i] = 0;
-	  delayeds_.del (i);
-	  i--;
-	}
-    }
-}
- 
-bool
-Drum_note_performer::try_music (Music* ev)
-{
-  if (ev->is_mus_type ("note-event"))
-    {
-      note_evs_.push (ev);
-      return true;
-    }
-  else if (ev->is_mus_type ("busy-playing-event"))
-    return note_evs_.size ();
-  
-  return false;
-}
-
-ENTER_DESCRIPTION(Drum_note_performer,
-		  "Play drum notes.","",
-		  "note-event busy-playing-event","","","");
-
-Drum_note_performer::Drum_note_performer()
-{
-}
diff --git a/lily/duration.cc b/lily/duration.cc
deleted file mode 100644
index 6145731b4b..0000000000
--- a/lily/duration.cc
+++ /dev/null
@@ -1,262 +0,0 @@
-/*
-  duration.cc -- implement Duration
-  
-  source file of the LilyPond music typesetter
-
-  (c) 1997--2004 Jan Nieuwenhuizen <janneke@gnu.org>
-           Han-Wen Nienhuys <hanwen@cs.uu.nl>
-
-*/
-
-#include <assert.h>
-
-#include "misc.hh"
-#include "lily-proto.hh"
-#include "string.hh"
-#include "moment.hh"
-#include "duration.hh"
-#include "ly-smobs.icc"
-
-
-
-int
-Duration::compare (Duration const &left, Duration const &right)
-{
-  return Rational::compare (left.get_length (), right.get_length ());
-}
-
-Duration::Duration ()
-{
-  durlog_ = 0;
-  dots_ = 0;
-  factor_ = Rational (1,1);
-}
-
-Duration::Duration (int l, int d)
-{
-  durlog_ = l;
-  dots_ = d;
-  factor_ = Rational (1,1);
-}
-
-Duration
-Duration::compressed (Rational m) const
-{
-  Duration d (*this);
-  d.factor_ *= m;
-  return d;
-}
-
-Rational
-Duration::get_length () const
-{
-  Rational mom (1 << abs (durlog_));
-
-  if (durlog_> 0)
-    mom = Rational (1)/mom;
-
-  Rational delta = mom;
-
-  for (int d = dots_; d; d--)
-    {
-      delta /= Rational (2);
-      mom += delta;
-    }
-
-  return mom * factor_;
-}
-
-
-
-String
-Duration::to_string () const
-{
-  String s;
-
-  if (durlog_ < 0  )
-    s = "log = "  + ::to_string (durlog_);
-  else
-    s = ::to_string (1 << durlog_);
-  
-  s += ::to_string ('.', dots_);
-  if (factor_ != Moment (Rational (1,1)))
-    {
-      s += "*" + factor_.to_string ();
-    }
-  return s;
-}
-
-
-IMPLEMENT_TYPE_P (Duration, "ly:duration?");
-
-SCM
-Duration::mark_smob (SCM)
-{
-  return SCM_EOL;
-}
-
-IMPLEMENT_SIMPLE_SMOBS (Duration);
-int
-Duration::print_smob (SCM s, SCM port, scm_print_state *)
-{
-  Duration  *r = (Duration *) ly_cdr (s);
-     
-  scm_puts ("#<Duration ", port);
-  scm_display (scm_makfrom0str (r->to_string ().to_str0 ()), port);
-  scm_puts (" >", port);
-  
-  return 1;
-}
-
-SCM
-Duration::equal_p (SCM a , SCM b)
-{
-  Duration  *p = (Duration *) ly_cdr (a);
-  Duration  *q = (Duration *) ly_cdr (b);  
-
-  bool eq = p->dots_ == q->dots_
-    && p->durlog_ == q->durlog_
-    && p->factor_ == q->factor_;
-
-  return eq ? SCM_BOOL_T : SCM_BOOL_F;
-}
-  
-MAKE_SCHEME_CALLBACK (Duration, less_p, 2);
-SCM
-Duration::less_p (SCM p1, SCM p2)
-{
-  Duration *a = unsmob_duration (p1);
-  Duration *b = unsmob_duration (p2);
-
-  if (compare (*a, *b) < 0)
-    return SCM_BOOL_T;
-  else
-    return SCM_BOOL_F;
-}
-
-LY_DEFINE(duration_less, "ly:duration<?", 2,0,0, (SCM p1, SCM p2),
-	  "Is @var{p1} shorter than @var{p2}?")
-{
-  Duration *a = unsmob_duration (p1);
-  Duration *b = unsmob_duration (p2);
-
-  SCM_ASSERT_TYPE(a, p1, SCM_ARG1, __FUNCTION__, "Duration");
-  SCM_ASSERT_TYPE(b, p2, SCM_ARG2, __FUNCTION__, "Duration");
-
-  if (Duration::compare (*a, *b) < 0)
-    return SCM_BOOL_T;
-  else
-    return SCM_BOOL_F;
-}
-
-
-LY_DEFINE(make_duration,
-	  "ly:make-duration", 2, 2, 0, (SCM length, SCM dotcount,
-				     SCM num, SCM den),
-"	  \n"
-"@var{length} is the negative logarithm (base 2) of the duration:\n"
-"1 is a half note, 2 is a quarter note, 3 is an eighth\n"
-"note, etc.  The number of dots after the note is given by\n"
-"@var{dotcount}.\n"
-"\n"
-"The duration factor is optionally given by @var{num} and @var{den}.\n"
-"\n"
-"A duration is a musical duration, i.e. a length of time described by a\n"
-"power of two (whole, half, quarter, etc.) and a number of augmentation\n"
-"dots. \n"
-"\n"
-"")
-{
-  SCM_ASSERT_TYPE(gh_number_p (length), length, SCM_ARG1, __FUNCTION__, "integer");
-  SCM_ASSERT_TYPE(gh_number_p (dotcount), dotcount, SCM_ARG2, __FUNCTION__, "integer");
-
-  bool compress = false;
-  if (num != SCM_UNDEFINED)
-    {
-      SCM_ASSERT_TYPE(gh_number_p (num), length, SCM_ARG3, __FUNCTION__, "integer");
-      compress = true;
-    }
-  else
-    num = gh_int2scm (1);
-  
-  if (den != SCM_UNDEFINED)
-    {
-      SCM_ASSERT_TYPE(gh_number_p (den), length, SCM_ARG4, __FUNCTION__, "integer");
-      compress = true;
-    }
-  else
-    den = gh_int2scm (1);
-  
-  Duration p (gh_scm2int (length), gh_scm2int (dotcount));
-  if (compress)
-    p = p.compressed (Rational (gh_scm2int (num), gh_scm2int (den)));
-
-  return p.smobbed_copy ();
-}
-
-
-
-LY_DEFINE(duration_log,
-	  "ly:duration-log", 1, 0, 0, (SCM dur),
-	  "Extract the duration log from @var{dur}"
-)
-{
-  SCM_ASSERT_TYPE(unsmob_duration(dur), dur, SCM_ARG1, __FUNCTION__, "duration");
-
-  return gh_int2scm (unsmob_duration (dur)->duration_log ());
-}
-
-
-LY_DEFINE(dot_count_log,
-	  "ly:duration-dot-count", 1, 0, 0, (SCM dur),
-	  "Extract the dot count from @var{dur}"
-)
-{
-  SCM_ASSERT_TYPE(unsmob_duration(dur), dur, SCM_ARG1, __FUNCTION__, "duration");
-
-  return gh_int2scm (unsmob_duration (dur)->dot_count ());
-}
-
-
-LY_DEFINE(ly_intlog2,
-	  "ly:intlog2", 1, 0, 0, (SCM d),
-	  "The 2-logarithm of 1/@var{d}."
-)
-{
-  SCM_ASSERT_TYPE(gh_number_p (d), d, SCM_ARG1, __FUNCTION__, "integer");
-
-  int l = intlog2 (gh_scm2int (d));
-
-  return gh_int2scm (l);
-}
-
-LY_DEFINE(compression_factor,
-	  "ly:duration-factor", 1, 0, 0, (SCM dur),
-	  "Extract the compression factor from @var{dur}. Return as a pair."
-)
-{
-  SCM_ASSERT_TYPE(unsmob_duration(dur), dur, SCM_ARG1, __FUNCTION__, "duration");
-  Rational r =unsmob_duration (dur)->factor ();
-
-  return gh_cons(gh_int2scm (r.num()),gh_int2scm (r.den ())); 
-}
-
-SCM
-Duration::smobbed_copy ()const
-{
-  Duration *  p = new Duration (*this);
-  return p->smobbed_self ();
-}
-
-int
-Duration::duration_log () const
-{
-  return durlog_;
-}
-
-int
-Duration::dot_count () const
-{
-  return dots_;
-}
-
diff --git a/lily/dynamic-engraver.cc b/lily/dynamic-engraver.cc
deleted file mode 100644
index 0453cea706..0000000000
--- a/lily/dynamic-engraver.cc
+++ /dev/null
@@ -1,434 +0,0 @@
-/*
-  dynamic-engraver.cc -- implement Dynamic_engraver
-
-  source file of the GNU LilyPond music typesetter
-
-  (c) 1997--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-*/
-#include "warn.hh"
-#include "dimensions.hh"
-#include "hairpin.hh"
-#include "event.hh"
-#include "paper-column.hh"
-#include "note-column.hh"
-#include "item.hh"
-#include "side-position-interface.hh"
-#include "engraver.hh"
-#include "group-interface.hh"
-#include "directional-element-interface.hh"
-#include "translator-group.hh"
-#include "axis-group-interface.hh"
-#include "script.hh"
-
-/*
-  TODO:
-
-  * direction of text-dynamic-event if not equal to direction of
-  line-spanner
-
-  - TODO: this engraver is too complicated. We should split it into
-  the handling of the basic grobs and the  linespanner
-
-  - TODO: the line-spanner is not killed after the (de)crescs are
-  finished.
-
-*/
-
-/**
-   print text & hairpin dynamics.
- */
-class Dynamic_engraver : public Engraver
-{
-  Item * script_;
-  Spanner * finished_cresc_;
-  Spanner * cresc_;
-
-  Music* script_ev_;
-  
-  Music * current_cresc_ev_;
-  Drul_array<Music*> accepted_spanreqs_drul_;
-
-  Spanner* line_spanner_;
-  Spanner* finished_line_spanner_;
-
-  Link_array<Note_column> pending_columns_;
-  Link_array<Grob> pending_elements_;
-  
-  void typeset_all ();
-
-TRANSLATOR_DECLARATIONS(Dynamic_engraver );
-  
-protected:
-  virtual void finalize ();
-  virtual void acknowledge_grob (Grob_info);
-  virtual bool try_music (Music *req);
-  virtual void stop_translation_timestep ();
-  virtual void process_music ();  
-};
-
-
-
-
-Dynamic_engraver::Dynamic_engraver ()
-{
-  script_ = 0;
-  finished_cresc_ = 0;
-  line_spanner_ = 0;
-  finished_line_spanner_ = 0;
-  current_cresc_ev_ = 0;
-  cresc_ =0;
-
-  script_ev_ = 0;
-  accepted_spanreqs_drul_[START] = 0;
-  accepted_spanreqs_drul_[STOP] = 0;
-}
-
-bool
-Dynamic_engraver::try_music (Music * m)
-{
-  if (m->is_mus_type ("absolute-dynamic-event"))
-    {
-      /*
-	TODO: probably broken.
-      */
-      script_ev_ = m;
-      return true;
-    }
-  else if (m->is_mus_type ("decrescendo-event")
-	   || m->is_mus_type ("crescendo-event"))
-    {
-      Direction d = to_dir (m->get_mus_property ("span-direction"));
-
-      accepted_spanreqs_drul_[d] = m;
-      if (current_cresc_ev_ && d == START)
-	accepted_spanreqs_drul_[STOP] = m;
-      return true;
-    }
-  return false;
-}
-
-void
-Dynamic_engraver::process_music ()
-{
-  if (accepted_spanreqs_drul_[START] || accepted_spanreqs_drul_[STOP] || script_ev_)
-    {
-      if (!line_spanner_)
-	{
-	  line_spanner_ = make_spanner ("DynamicLineSpanner");
-
-	  Music * rq = accepted_spanreqs_drul_[START];
-	  if (script_ev_)
-	    rq =  script_ev_ ;
-	  announce_grob(line_spanner_, rq ? rq->self_scm(): SCM_EOL);
-	}
-    }
-  
-  /*
-    During a (de)crescendo, pending event will not be cleared,
-    and a line-spanner will always be created, as \< \! are already
-    two events.
-
-    Note: line-spanner must always have at least same duration
-    as (de)crecsendo, b.o. line-breaking.
-  */
-
-  
-
-  /*
-    maybe we should leave dynamic texts to the text-engraver and
-    simply acknowledge them?
-  */
-  if (script_ev_)
-    {
-      script_ = make_item ("DynamicText");
-      script_->set_grob_property ("text",
-				   script_ev_->get_mus_property ("text"));
-
-      
-      if (Direction d = to_dir (script_ev_->get_mus_property ("direction")))
-	set_grob_direction (line_spanner_, d);
-
-      Axis_group_interface::add_element (line_spanner_, script_);
-
-      announce_grob(script_, script_ev_->self_scm());
-    }
-
-  Music *stop_ev = accepted_spanreqs_drul_ [STOP] ?
-    accepted_spanreqs_drul_[STOP] : script_ev_;
-
-  if (accepted_spanreqs_drul_[STOP] || script_ev_)
-    {
-      /*
-	finish side position alignment if the (de)cresc ends here, and
-	there are no new dynamics.
-       */
-
-
-      if (cresc_)
-	{
-	  assert (!finished_cresc_ && cresc_);
-
-	  cresc_->set_bound (RIGHT, script_
-			       ? script_
-			       : unsmob_grob (get_property ("currentMusicalColumn")));
-	  add_bound_item (line_spanner_, cresc_->get_bound (RIGHT));
-	  
-
-	  finished_cresc_ = cresc_;
-	  cresc_ = 0;
-	  current_cresc_ev_ = 0;
-	}
-      else if (accepted_spanreqs_drul_[STOP] )
-	{
-	  accepted_spanreqs_drul_[STOP]->origin ()->warning(_ ("can't find start of (de)crescendo"));
-	  stop_ev = 0;
-	}
-      
-    }
-  
-  if (accepted_spanreqs_drul_[START])
-    {
-      if (current_cresc_ev_)
-	{
-	  String msg = _ ("already have a decrescendo");
-	  if (current_cresc_ev_->is_mus_type ("decrescendo-event"))
-	    msg = _ ("already have a crescendo");
-
-	  accepted_spanreqs_drul_[START]->origin ()->warning (msg);
-	  current_cresc_ev_->origin ()->warning (_("Cresc started here"));
-	}
-      else
-	{
-	  current_cresc_ev_ = accepted_spanreqs_drul_[START];
-
-	  if (Direction d = to_dir (current_cresc_ev_->get_mus_property ("direction")))
-	    set_grob_direction (line_spanner_, d);
-
-	  /*
-	    TODO: Use symbols.
-	  */
-
-	  String start_type = 
-	    ly_symbol2string (current_cresc_ev_->get_mus_property ("name"));
-
-	  /*
-	    ugh. Use push/pop?
-	  */
-	  if (start_type == "DecrescendoEvent")
-	    start_type = "decrescendo";
-	  else if (start_type == "CrescendoEvent")
-	    start_type = "crescendo";
-	  
-	  SCM s = get_property ((start_type + "Spanner").to_str0 ());
-	  if (!gh_symbol_p (s) || s == ly_symbol2scm ("hairpin"))
-	    {
-	      cresc_  = make_spanner ("Hairpin");
-	      cresc_->set_grob_property ("grow-direction",
-					   gh_int2scm ((start_type == "crescendo")
-						       ? BIGGER : SMALLER));
-	      
-	    }
-
-	  
-	  /*
-	    This is a convenient (and legacy) interface to TextSpanners
-	    for use in (de)crescendi.
-	    Hmm.
-	  */
-	  else
-	    {
-	      cresc_  = make_spanner ("TextSpanner");
-	      cresc_->set_grob_property ("style", s);
-	      daddy_trans_->set_property ((start_type
-					    + "Spanner").to_str0 (), SCM_EOL);
-	      s = get_property ((start_type + "Text").to_str0 ());
-	      /*
-		FIXME: use get_markup () to check type.
-	      */
-	      if (gh_string_p (s) || gh_pair_p (s))
-		{
-		  cresc_->set_grob_property ("edge-text",
-					     gh_cons (s, scm_makfrom0str ("")));
-		  daddy_trans_->set_property ((start_type + "Text").to_str0 (),
-						SCM_EOL);
-		}
-	    }
-
-	  cresc_->set_bound (LEFT, script_
-			       ? script_
-			       : unsmob_grob (get_property ("currentMusicalColumn")));
-
-	  Axis_group_interface::add_element (line_spanner_, cresc_);
-
-	  add_bound_item (line_spanner_, cresc_->get_bound (LEFT));
-	  
-	  announce_grob(cresc_, accepted_spanreqs_drul_[START]->self_scm());
-	}
-    }
-}
-
-void
-Dynamic_engraver::stop_translation_timestep ()
-{
-  typeset_all ();
-  if (!current_cresc_ev_)
-    {
-      finished_line_spanner_ = line_spanner_;
-      line_spanner_ =0;
-      typeset_all ();
-    }
-
-  script_ev_ = 0;
-  accepted_spanreqs_drul_[START] = 0;
-  accepted_spanreqs_drul_[STOP] = 0;
-}
-
-void
-Dynamic_engraver::finalize ()
-{
-  typeset_all ();
-  
-  if (line_spanner_
-      && !line_spanner_->live())
-    line_spanner_ = 0;
-  if (line_spanner_)
-    {
-      finished_line_spanner_ = line_spanner_;
-      typeset_all ();
-    }
-
-  if (cresc_
-      && !cresc_->live())
-    cresc_ = 0;
-  if (cresc_)
-    {
-      current_cresc_ev_->origin ()->warning (_ ("unterminated (de)crescendo"));
-      cresc_->suicide ();
-      cresc_ = 0;
-    }
-}
-
-void
-Dynamic_engraver::typeset_all ()
-{  
-  /*
-    remove suicided spanners,
-    ugh: we'll need this for every spanner, beam, slur
-    Hmm, how to do this, cleanly?
-    Maybe just check at typeset_grob ()?
-  */
-  if (finished_cresc_
-      && !finished_cresc_->live())
-    finished_cresc_ = 0;
-  if (finished_line_spanner_
-      && !finished_line_spanner_->live())
-    finished_line_spanner_ = 0;
-
-  if (finished_cresc_)
-    {
-      if (!finished_cresc_->get_bound (RIGHT))
-	{
-	  finished_cresc_->set_bound (RIGHT, script_
-					? script_
-					: unsmob_grob (get_property ("currentMusicalColumn")));
-
-	  if (finished_line_spanner_)
-	    add_bound_item (finished_line_spanner_,
-			    finished_cresc_->get_bound (RIGHT));
-	}
-      typeset_grob (finished_cresc_);
-      finished_cresc_ =0;
-    }
-  
-  if (script_)
-    {
-      typeset_grob (script_);
-      script_ = 0;
-    }
-  if (finished_line_spanner_)
-    {
-      /*
-	We used to have
-	
-	     extend-spanner-over-elements (finished_line_spanner_);
-
-	but this is rather kludgy, since finished_line_spanner_
-	typically has a staff-symbol field set , extending it over the
-	entire staff.
-
-      */
-
-      Grob * l = finished_line_spanner_->get_bound (LEFT );
-      Grob * r = finished_line_spanner_->get_bound (RIGHT);      
-      if (!r && l)
-	finished_line_spanner_->set_bound (RIGHT, l);
-      else if (!l && r)
-	finished_line_spanner_->set_bound (LEFT, r);
-      else if (!r && !l)
-	{
-	  /*
-	    This is a isolated dynamic apparently, and does not even have
-	    any interesting support item.
-	   */
-	  Grob * cc = unsmob_grob (get_property ("currentMusicalColumn"));
-	  Item * ci = dynamic_cast<Item*>(cc);
-	  finished_line_spanner_->set_bound (RIGHT, ci);
-	  finished_line_spanner_->set_bound (LEFT, ci);	  
-	}
-	
-      typeset_grob (finished_line_spanner_);
-      finished_line_spanner_ = 0;
-    }
-}
-
-void
-Dynamic_engraver::acknowledge_grob (Grob_info i)
-{
-  if (!line_spanner_)
-    return ;
-  
-  if (Note_column::has_interface (i.grob_))
-    {
-      if (line_spanner_
-	  /* Don't refill killed spanner */
-	  && line_spanner_->live())
-	{
-	  Side_position_interface::add_support (line_spanner_,i.grob_);
-	  add_bound_item (line_spanner_,dynamic_cast<Item*> (i.grob_));
-	}
-
-      if (script_ && !script_->get_parent (X_AXIS))
-	{
-	  script_->set_parent (i.grob_,  X_AXIS);
-	}
-      
-    }
-  else if (Script_interface::has_interface (i.grob_) && script_)
-    {
-      SCM p = i.grob_->get_grob_property ("script-priority");
-
-      /*
-	UGH.
-
-	DynamicText doesn't really have a script-priority field.
-       */
-      if (gh_number_p (p)
-	  && gh_scm2int (p) < gh_scm2int (script_->get_grob_property ("script-priority")))
-	{
-	  Side_position_interface::add_support (line_spanner_, i.grob_);
-
-	}	  
-    }
-}
-ENTER_DESCRIPTION(Dynamic_engraver,
-/* descr */       
-"This engraver creates hairpins, dynamic texts, and their vertical\n"
-"alignments.  The symbols are collected onto a DynamicLineSpanner grob\n"
-"which takes care of vertical positioning.  "
-,
-		  
-/* creats*/       "DynamicLineSpanner DynamicText Hairpin TextSpanner",
-/* accepts */     "absolute-dynamic-event crescendo-event decrescendo-event",
-/* acks  */      "note-column-interface script-interface",
-/* reads */       "",
-/* write */       "");
diff --git a/lily/dynamic-performer.cc b/lily/dynamic-performer.cc
deleted file mode 100644
index a00139574c..0000000000
--- a/lily/dynamic-performer.cc
+++ /dev/null
@@ -1,135 +0,0 @@
-/*
-  dynamic-performer.cc -- implement Dynamic_performer
-
-  source file of the GNU LilyPond music typesetter
-
-  (c) 2000--2004 Jan Nieuwenhuizen <janneke@gnu.org>
-*/
-
-#include "performer.hh"
-
-#include "event.hh"
-#include "audio-item.hh"
-
-/*
-  TODO:
-  
-    handle multiple events
-
-    perform absolute (text) dynamics
- */
-class Dynamic_performer : public Performer
-{
-public:
-  TRANSLATOR_DECLARATIONS(Dynamic_performer);
-protected:
-  virtual bool try_music (Music* req);
-  virtual void stop_translation_timestep ();
-  virtual void create_audio_elements ();
-
-private:
-  Music* script_req_;
-  Audio_dynamic* audio_;
-};
-
-Dynamic_performer::Dynamic_performer ()
-{
-  script_req_ = 0;
-  audio_ = 0;
-}
-
-void
-Dynamic_performer::create_audio_elements ()
-{
-  if (script_req_)
-    {
-      SCM proc = get_property ("dynamicAbsoluteVolumeFunction");
-
-      SCM svolume  = SCM_EOL;
-      if (gh_procedure_p (proc))
-	{
-	  // urg
-	  svolume = gh_call1 (proc, script_req_->get_mus_property ("text"));
-	}
-
-      Real volume = robust_scm2double (svolume, 0.5); 
-
-      /*
-	properties override default equaliser setting
-       */
-      SCM min = get_property ("midiMinimumVolume");
-      SCM max = get_property ("midiMaximumVolume");
-      if (gh_number_p (min) || gh_number_p (max))
-	{
-	  Interval iv (0, 1);
-	  if (gh_number_p (min))
-	    iv[MIN] = gh_scm2double (min);
-	  if (gh_number_p (max))
-	    iv[MAX] = gh_scm2double (max);
-	  volume = iv[MIN] + iv.length () * volume;
-	}
-      else
-	{
-	  /*
-	    urg, code duplication:: staff_performer
-	  */
-	  SCM s = get_property ("midiInstrument");
-	  
-	  if (!gh_string_p (s))
-	    s = get_property ("instrument");
-	  
-	  if (!gh_string_p (s))
-	    s = scm_makfrom0str ("piano");
-	  
-	  
-	  SCM eq = get_property ("instrumentEqualizer");
-	  if (gh_procedure_p (eq))
-	    {
-	      s = gh_call1 (eq, s);
-	    }
-
-	  if (is_number_pair (s))
-	    {
-	      Interval iv = ly_scm2interval (s);
-	      volume = iv[MIN] + iv.length () * volume;
-	    }
-	}
-      
-      audio_ = new Audio_dynamic (volume);
-      Audio_element_info info (audio_, script_req_);
-      announce_element (info);
-      script_req_ = 0;
-    }
-}
-
-void
-Dynamic_performer::stop_translation_timestep ()
-{
-  if (audio_)
-    {
-      play_element (audio_);
-      audio_ = 0;
-    }
-}
-
-bool
-Dynamic_performer::try_music (Music* r)
-{
-  if (!script_req_)
-    {
-      if (r->is_mus_type ("absolute-dynamic-event")) // fixme.
-	{
-	  script_req_ = r;
-	  return true;
-	}
-    }
-  return false;
-}
-
-ENTER_DESCRIPTION(Dynamic_performer,
-		  /*descr*/		  "",
-		  /* creats*/ "",
-		  /* accepts */     "absolute-dynamic-event",
-		  /* acks */ "",
-		  /*reads */"dynamicAbsoluteVolumeFunction midiMaximumVolume midiMinimumVolume midiInstrument instrumentEqualizer",
-		  /*writes*/"");
diff --git a/lily/engraver-group-engraver.cc b/lily/engraver-group-engraver.cc
deleted file mode 100644
index 0cbdd68c08..0000000000
--- a/lily/engraver-group-engraver.cc
+++ /dev/null
@@ -1,191 +0,0 @@
-/*
-  engraver-group-engraver.cc -- implement Engraver_group_engraver
-  
-  source file of the GNU LilyPond music typesetter
-
-  (c) 1997--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-*/
-
-#include "flower-proto.hh"
-#include "engraver-group-engraver.hh"
-#include "engraver.hh"
-#include "warn.hh"
-#include "paper-score.hh"
-#include "grob.hh"
-
-void
-Engraver_group_engraver::announce_grob (Grob_info info)
-{
-  announce_infos_.push (info);
-  Engraver::announce_grob (info);
-}
-
-void
-Engraver_group_engraver::process_acknowledged_grobs_in_simple_children ()
-{
-  for (SCM p = get_simple_trans_list (); gh_pair_p (p); p = ly_cdr (p))
-    {
-      Translator * t = unsmob_translator (ly_car (p));
-      Engraver * eng = dynamic_cast<Engraver*> (t);
-      if (eng)
-	eng->process_acknowledged_grobs ();
-    }
-}
-
-SCM find_acknowledge_engravers (SCM gravlist, SCM meta);
-SCM find_accept_engravers (SCM gravlist, SCM music_descr);
-
-void
-Engraver_group_engraver::acknowledge_grobs ()
-{
-  if (!announce_infos_.size ())
-    return ;
-  
-  SCM tab = get_property ("acknowledgeHashTable");
-  SCM name_sym = ly_symbol2scm ("name");
-  SCM meta_sym = ly_symbol2scm ("meta");  
-
-  
-  for (int j =0; j < announce_infos_.size (); j++)
-    {
-      Grob_info info = announce_infos_[j];
-      
-      SCM meta = info.grob_->internal_get_grob_property (meta_sym);
-      SCM nm = scm_assoc (name_sym, meta);
-      if (gh_pair_p (nm))
-	nm = ly_cdr (nm);
-      else
-	{
-	  /*
-	    it's tempting to put an assert for
-	    immutable_property_alist_ == '(), but in fact, some
-	    engravers (clef-engraver) add some more information to the
-	    immutable_property_alist_ (after it has been '()-ed).
-
-	    We ignore the grob anyway. He who has no name, shall not
-	    be helped.  */
-	  
-	  continue;
-	}
- 
-      SCM acklist = scm_hashq_ref (tab, nm, SCM_UNDEFINED);
-      if (acklist == SCM_BOOL_F)
-	{
-	  acklist = find_acknowledge_engravers (gh_cons (self_scm (), get_simple_trans_list ()), meta);
-	  scm_hashq_set_x (tab, nm, acklist);
-	}
-
-      for (SCM p = acklist; gh_pair_p (p); p = ly_cdr (p))
-	{
-	  Translator * t = unsmob_translator (ly_car (p));
-	  Engraver * eng = dynamic_cast<Engraver*> (t);
-	  if (eng && eng!= info.origin_trans_)
-	    eng->acknowledge_grob (info);
-	}
-    }
-}
-
-void
-Engraver_group_engraver::do_announces ()
-{
-  for (SCM p = trans_group_list_; gh_pair_p (p); p =ly_cdr (p))
-    {
-      Translator * t = unsmob_translator (ly_car (p));
-      dynamic_cast<Engraver_group_engraver*> (t)->do_announces ();
-    }
-
-   process_acknowledged_grobs_in_simple_children ();
-    
-   do
-    {
-      acknowledge_grobs ();
-      announce_infos_.clear ();
-      process_acknowledged_grobs_in_simple_children ();
-    }
-   while (announce_infos_.size ());
-}
-
-
-
-/*
-  order is : top to bottom (as opposed to do_announces)
- */
-void
-Engraver_group_engraver::process_music ()
-{
-   for (SCM p = get_simple_trans_list (); gh_pair_p (p); p =ly_cdr (p))
-    {
-      Translator * t = unsmob_translator (ly_car (p));
-      Engraver * eng = dynamic_cast<Engraver*> (t);
-
-      if (eng)
-	eng->process_music ();
-    }
-   for (SCM p = trans_group_list_; gh_pair_p (p); p =ly_cdr (p))
-    {
-      Translator * t = unsmob_translator (ly_car (p));
-      Engraver*eng = dynamic_cast<Engraver*> (t);
-      if (eng)
-	eng->process_music ();
-    }
-}
-
-void
-Engraver_group_engraver::initialize ()
-{
-  /*
-    docme: why bool_f.
-    
-   */
-  SCM tab = scm_make_vector (gh_int2scm (61), SCM_BOOL_F);
-  set_property ("acknowledgeHashTable", tab);
-
-  Translator_group::initialize ();
-}
-
-Engraver_group_engraver::Engraver_group_engraver() {}
-
-ENTER_DESCRIPTION(Engraver_group_engraver,
-/* descr */       "A group of engravers taken together",
-/* creats*/       "",
-/* accepts */     "",
-/* acks  */      "",
-/* reads */       "",
-/* write */       "");
-
-
-
-/*****************/
-
-
-bool
-engraver_valid (Translator*tr, SCM ifaces)
-{
-  SCM ack_ifs = scm_assoc (ly_symbol2scm ("interfaces-acked"), tr->translator_description());
-  ack_ifs = gh_cdr (ack_ifs);
-  for (SCM s = ifaces; ly_pair_p (s); s = ly_cdr (s))
-    if (scm_memq (ly_car (s), ack_ifs) != SCM_BOOL_F)
-      return true;
-  return false;
-}
-
-
-
-SCM
-find_acknowledge_engravers (SCM gravlist, SCM meta_alist)
-{
-  SCM ifaces = gh_cdr (scm_assoc (ly_symbol2scm ("interfaces"), meta_alist));
-
-  SCM l = SCM_EOL;
-  for (SCM s = gravlist; ly_pair_p (s);  s = ly_cdr (s))
-    {
-      Translator* tr = unsmob_translator (ly_car (s));
-      if (engraver_valid (tr, ifaces))
-	l = scm_cons (tr->self_scm (), l); 
-    }
-  l = scm_reverse_x (l, SCM_EOL);
-
-  return l;
-}
-
-
diff --git a/lily/engraver.cc b/lily/engraver.cc
deleted file mode 100644
index d8338972c9..0000000000
--- a/lily/engraver.cc
+++ /dev/null
@@ -1,85 +0,0 @@
-/*
-  engraver.cc -- implement Engraver
-
-  Sourcefile of GNU LilyPond music type setter
-
-  (c) 1997--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-*/
-
-#include "music.hh"
-#include "engraver.hh"
-#include "engraver-group-engraver.hh"
-#include "grob.hh"
-#include "score-engraver.hh"
-#include "warn.hh"
-#include "spanner.hh"
-#include "item.hh"
-
-void
-Engraver::announce_grob (Grob_info inf)
-{
-  get_daddy_grav ()->announce_grob (inf);
-}
-
-/*
-  CAUSE is the object (typically a Music object)  that
-  was the reason for making E.
- */
-void
-Engraver::announce_grob (Grob* e, SCM cause)
-{
-  /*
-    TODO: junk grob-info, and make a cause grob-property to store
-    `causes' generically.
-  */
-  if (unsmob_music (cause) || unsmob_grob (cause))
-    e->set_grob_property ("cause", cause);
-
-  Grob_info i;
-  i.grob_ = e;
-  if (!i.origin_trans_)
-    i.origin_trans_ = this;
-
-
-
-  get_daddy_grav ()->announce_grob (i);
-}
-
-
- 
-void
-Engraver::typeset_grob (Grob*p)
-{
-  get_daddy_grav ()->typeset_grob (p);
-}
-
-
-Engraver_group_engraver*
-Engraver::get_daddy_grav () const
-{
-  return (daddy_trans_)
-       ? dynamic_cast<Engraver_group_engraver *> (daddy_trans_)
-       : 0;
-}
-
-void
-Engraver::process_music ()
-{
-  
-}
-Engraver::Engraver()
-{
-}
-
-
-Score_engraver* 
-Engraver::top_engraver () const
-{
-  return dynamic_cast<Score_engraver*> (top_translator());
-}
-
-ENTER_DESCRIPTION(Engraver,
-		   "", "",
-		  "",
-		  "", "", "");
-
diff --git a/lily/event-chord-iterator.cc b/lily/event-chord-iterator.cc
deleted file mode 100644
index 29713a52dc..0000000000
--- a/lily/event-chord-iterator.cc
+++ /dev/null
@@ -1,62 +0,0 @@
-/*
-  event-chord-iterator.cc -- implement Event_chord_iterator
-
-  source file of the GNU LilyPond music typesetter
-
-  (c) 1997--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-*/
-
-#include "translator-group.hh"
-#include "warn.hh"
-#include "event-chord-iterator.hh"
-#include "music-list.hh"
-#include "event.hh"
-
-Event_chord_iterator::Event_chord_iterator ()
-{
-}
-
-Translator_group*
-Event_chord_iterator::get_req_translator ()
-{
-  assert (get_outlet ());
-  if (get_outlet ()->is_bottom_context ())
-    return get_outlet ();
-
-  set_translator (get_outlet ()->get_default_interpreter ());
-  return get_outlet ();
-}
-
-void
-Event_chord_iterator::construct_children ()
-{
-  Simple_music_iterator::construct_children ();
-  get_req_translator ();
-}
-
-Event_chord*
-Event_chord_iterator::get_elt () const
-{
-  return (Event_chord*) get_music ();
-}
-
-
-void
-Event_chord_iterator::process (Moment m)
-{
-  if (last_processed_mom_ < Moment (0))
-    {
-      for (SCM s = dynamic_cast<Music_sequence *> (get_music ())->music_list ();
-	   gh_pair_p (s);  s = ly_cdr (s))
-	{
-	  Music *mus = unsmob_music (ly_car (s));
-
-	  bool gotcha = try_music (mus);
-	  if (!gotcha)
-	    mus->origin ()->warning (_f ("Junking event: `%s'", mus->name()));
-	}
-    }
-  Simple_music_iterator::process (m);
-}
-
-IMPLEMENT_CTOR_CALLBACK (Event_chord_iterator);
diff --git a/lily/event.cc b/lily/event.cc
deleted file mode 100644
index dc2ca4b328..0000000000
--- a/lily/event.cc
+++ /dev/null
@@ -1,205 +0,0 @@
-/*
-  event.cc -- implement Event
-
-  source file of the GNU LilyPond music typesetter
-
-  (c) 1996--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-*/
-
-#include "event.hh"
-#include "warn.hh"
-#include "event.hh"
-  
-Moment
-Event::get_length () const
-{
-  Duration *d = unsmob_duration (get_mus_property ("duration"));
-  if (!d)
-    {
-      Moment m ;
-      return m;
-    }
-  return d->get_length ();
-}
-
-void
-Event::compress (Moment m)
-{
-  Duration *d =  unsmob_duration (get_mus_property ("duration"));
-  if (d)
-    set_mus_property ("duration", d ->compressed (m.main_part_).smobbed_copy ());
-}
-
-void
-Event::transpose (Pitch delta)
-{
-  /*
-    TODO: should change music representation such that
-    _all_ pitch values are transposed automatically.
-   */
-  
-  Pitch *p = unsmob_pitch (get_mus_property ("pitch"));
-  if (!p)
-    return ;
-
-  Pitch np = p->transposed (delta);
-  
-  if (abs (np.get_alteration ()) > DOUBLE_SHARP)
-    {
-	warning (_f ("Transposition by %s makes alteration larger than two",
-	  delta.to_string ()));
-    }
-
-  set_mus_property ("pitch", np.smobbed_copy ());
-}
-
-Pitch
-Event::to_relative_octave (Pitch last)
-{
-  Pitch *old_pit = unsmob_pitch (get_mus_property ("pitch"));
-  if (old_pit)
-    {
-      Pitch new_pit = *old_pit;
-      new_pit = new_pit.to_relative_octave (last);
-
-      SCM check = get_mus_property ("absolute-octave");
-      if (gh_number_p (check) &&
-	  new_pit.get_octave () != gh_scm2int (check))
-	{
-	  String s =_("Failed octave check, got: ");
-	  s += new_pit.to_string ();
-	  new_pit = Pitch (gh_scm2int (check),
-			   new_pit.get_notename (),
-			   new_pit.get_alteration ());
-
-	  s += " expected ";
-	  s += new_pit.to_string ();
-	  origin ()->warning (s);
-	}
-      
-      set_mus_property ("pitch", new_pit.smobbed_copy ());
-  
-      return new_pit;
-    }
-  return last;
-}
-  
-Event::Event ()
-  : Music ()
-{
-}
-
-ADD_MUSIC(Event);
-LY_DEFINE(ly_music_duration_length, "ly:music-duration-length", 1, 0,0,
-	  (SCM mus),
-	  "Extract the duration field from @var{mus}, and return the length.")
-{
-  Music* m =   unsmob_music(mus);
-  SCM_ASSERT_TYPE(m, mus, SCM_ARG1, __FUNCTION__, "Music");
-  
-  Duration *d = unsmob_duration (m->get_mus_property ("duration"));
-
-  Moment l ;
-  
-  if (d)
-    {
-      l = d->get_length ();  
-    }
-  else
-    programming_error("Music has no duration");
-  return l.smobbed_copy();
-  
-}
-
-
-LY_DEFINE(ly_music_duration_compress, "ly:music-duration-compress", 2, 0,0,
-	  (SCM mus, SCM factor),
-	  "Extract the duration field from @var{mus}, and compress it.")
-{
-  Music* m =   unsmob_music(mus);
-  Moment * f = unsmob_moment (factor);
-  SCM_ASSERT_TYPE(m, mus, SCM_ARG1, __FUNCTION__, "Music");
-  SCM_ASSERT_TYPE(f, factor, SCM_ARG2, __FUNCTION__, "Moment");
-  
-  Duration *d = unsmob_duration (m->get_mus_property ("duration"));
-  if (d)
-    m->set_mus_property ("duration", d->compressed (f->main_part_).smobbed_copy());
-  return SCM_UNSPECIFIED;
-}
-
-
-
-/*
-  This is hairy, since the scale in a key-change event may contain
-  octaveless notes.
-
-
-  TODO: this should use ly:pitch. 
- */
-LY_DEFINE(ly_transpose_key_alist, "ly:transpose-key-alist",
-	  2, 0,0, (SCM l, SCM pitch),
-	  "Make a new key alist of @var{l} transposed by pitch @var{pitch}")
-{
-  SCM newlist = SCM_EOL;
-  Pitch *p = unsmob_pitch (pitch);
-  
-  for (SCM s = l; gh_pair_p (s); s = ly_cdr (s))
-    {
-      SCM key = ly_caar (s);
-      SCM alter = ly_cdar (s);
-      if (gh_pair_p (key))
-	{
-	  Pitch orig (gh_scm2int (ly_car (key)),
-		      gh_scm2int (ly_cdr (key)),
-		      gh_scm2int (alter));
-
-	  orig =orig.transposed (*p);
-
-	  SCM key = gh_cons (scm_int2num (orig.get_octave ()),
-			     scm_int2num (orig.get_notename ()));
-
-	  newlist = gh_cons (gh_cons (key, scm_int2num (orig.get_alteration ())),
-			     newlist);
-	}
-      else if (gh_number_p (key))
-	{
-	  Pitch orig (0, gh_scm2int (key), gh_scm2int (alter));
-	  orig = orig.transposed (*p);
-
-	  key =scm_int2num (orig.get_notename ());
-	  alter = scm_int2num (orig.get_alteration());
-	  newlist = gh_cons (gh_cons (key, alter), newlist);
-	}
-    }
-  return scm_reverse_x (newlist, SCM_EOL);
-}
-
-void
-Key_change_ev::transpose (Pitch p)
-{
-  SCM pa = get_mus_property ("pitch-alist");
-
-  set_mus_property ("pitch-alist", ly_transpose_key_alist (pa, p.smobbed_copy()));
-  Pitch tonic = *unsmob_pitch (get_mus_property ("tonic"));
-  set_mus_property ("tonic",
-		    tonic.smobbed_copy ());
-}
-
-bool
-alist_equal_p (SCM a, SCM b)
-{
-  for (SCM s = a;
-       gh_pair_p (s); s = ly_cdr (s))
-    {
-      SCM key = ly_caar (s);
-      SCM val = ly_cdar (s);
-      SCM l = scm_assoc (key, b);
-
-      if (l == SCM_BOOL_F
-	  || !gh_equal_p ( ly_cdr (l), val))
-
-	return false;
-    }
-  return true;
-}
-ADD_MUSIC (Key_change_ev);
diff --git a/lily/extender-engraver.cc b/lily/extender-engraver.cc
deleted file mode 100644
index 323edb8ea6..0000000000
--- a/lily/extender-engraver.cc
+++ /dev/null
@@ -1,153 +0,0 @@
-/*
-  extender-engraver.cc -- implement Extender_engraver
-
-  source file of the GNU LilyPond music typesetter
-  
-  (c) 1999--2004 Glen Prideaux <glenprideaux@iname.com>,
-                  Han-Wen Nienhuys <hanwen@cs.uu.nl>,
-                  Jan Nieuwenhuizen <janneke@gnu.org>
-*/
-
-#include "warn.hh"
-#include "lyric-extender.hh"
-#include "item.hh"
-#include "engraver.hh"
-
-class Extender_engraver : public Engraver
-{
-  Music* ev_;
-  Spanner* extender_;
-  Spanner * finished_extender_;  
-public:
-  TRANSLATOR_DECLARATIONS(Extender_engraver);
-
-protected:
-  virtual void acknowledge_grob (Grob_info);
-  virtual void finalize ();
-  virtual bool try_music (Music*);
-  virtual void stop_translation_timestep ();
-  virtual void process_music ();
-private:
-
-};
-
-
-
-
-Extender_engraver::Extender_engraver ()
-{
-  extender_ = 0;
-  finished_extender_ = 0;
-  ev_ = 0;
-}
-
-void
-Extender_engraver::acknowledge_grob (Grob_info i)
-{
-  Item * item =  dynamic_cast<Item*> (i.grob_);
-  // -> text_item
-  if (item && item->internal_has_interface (ly_symbol2scm ("lyric-syllable-interface")))
-    {
-      if (extender_)
-	extender_->set_bound (LEFT, item);
-
-      if (finished_extender_)
-	finished_extender_->set_bound (RIGHT, item);
-    }
-}
-
-
-bool
-Extender_engraver::try_music (Music* r)
-{
-  if (ev_)
-    return false;
-
-  ev_ = r;
-  return true;
-}
-
-void
-completize_extender (Spanner* sp)
-{
-  if (!sp->get_bound (RIGHT))
-    {
-      SCM heads = sp->get_grob_property ("heads");
-      if (gh_pair_p (heads))
-	{
-	  Item* it = dynamic_cast<Item*> (unsmob_grob (gh_car (heads)));
-	  if (it)
-	    sp->set_bound (RIGHT, it);
-	}
-    }
-}
-
-  
-
-void
-Extender_engraver::finalize ()
-{
-  if (extender_)
-    {
-      completize_extender (extender_);
-
-      if (!extender_->get_bound (RIGHT))
-	extender_->warning (_ ("unterminated extender"));
-      typeset_grob (extender_);
-      extender_ = 0;
-    }
-
-  if (finished_extender_)
-    {
-      completize_extender (finished_extender_);
-
-      if (!finished_extender_->get_bound (RIGHT))
-	  finished_extender_->warning (_("unterminated extender"));
-      typeset_grob (finished_extender_);
-      finished_extender_ =0;
-    }
-}
-
-void
-Extender_engraver::process_music ()
-{
-  if (ev_)
-    {
-      extender_ = make_spanner ("LyricExtender");
-      announce_grob (extender_, ev_->self_scm());
-    }
-}
-
-
-void
-Extender_engraver::stop_translation_timestep ()
-{
-  if (finished_extender_ && finished_extender_->get_bound (RIGHT))
-    {
-      typeset_grob (finished_extender_);
-      finished_extender_ = 0;
-    }
-
-  if (finished_extender_ && extender_)
-    {
-      programming_error ("Haven't finished extender yet.");
-      typeset_grob (finished_extender_);
-      finished_extender_ =0;
-    }
-  
-  if (extender_)
-    finished_extender_ = extender_;
-  extender_ = 0;
-
-  ev_ = 0;
-}
-
-
-
-ENTER_DESCRIPTION(Extender_engraver,
-/* descr */       "Create lyric extenders",
-/* creats*/       "LyricExtender",
-/* accepts */     "extender-event",
-/* acks  */       "lyric-syllable-interface",
-/* reads */       "",
-/* write */       "");
diff --git a/lily/figured-bass-engraver.cc b/lily/figured-bass-engraver.cc
deleted file mode 100644
index dcd9e4ed20..0000000000
--- a/lily/figured-bass-engraver.cc
+++ /dev/null
@@ -1,101 +0,0 @@
-/*   
-figured-bass-engraver.cc --  implement Figured_bass_engraver
-
-source file of the GNU LilyPond music typesetter
-
-(c) 2002--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-
- */
-
-#include "engraver.hh"
-#include "text-item.hh"
-#include "event.hh"
-#include "item.hh"
-#include "translator-group.hh"
-
-class Figured_bass_engraver : public Engraver
-{
-  TRANSLATOR_DECLARATIONS(Figured_bass_engraver);
-protected:
-  Link_array<Music> figures_;
-  Music * rest_req_;
-
-  Grob * figure_;
-  
-  virtual bool try_music (Music*);
-  virtual void stop_translation_timestep ();
-  virtual void process_music ();
-};
-
-
-Figured_bass_engraver::Figured_bass_engraver()
-{
-  figure_ = 0;
-  rest_req_ = 0;
-}
-
-void
-Figured_bass_engraver::stop_translation_timestep ()
-{
-  if (figure_)
-    {
-      typeset_grob (figure_);
-      figure_ = 0;
-    }
-
-  figures_.clear ();
-  rest_req_ = 0;
-}
-
-bool
-Figured_bass_engraver::try_music (Music*m)
-{
-  if (m->is_mus_type ("bass-figure-event"))
-    {
-      figures_.push (m);
-      return true;
-    }
-  else if (m->is_mus_type ("rest-event"))
-    {
-      rest_req_ = m;
-      return true;
-    }
-  return false;
-}
-
-void
-Figured_bass_engraver::process_music ()
-{
-  if (rest_req_)
-    {
-      figure_ = make_item ("BassFigure");
-      announce_grob(figure_, rest_req_->self_scm()); // todo
-      figure_->set_grob_property ("text" , scm_makfrom0str ("-"));
-    }
-  else if (figures_.size ())
-    {
-      SCM proc = get_property ("bassFigureFormatFunction");
-      if (gh_procedure_p (proc)) 
-	{
-	  SCM l = SCM_EOL;
-
-	  for (int i = 0; i <figures_.size (); i++)
-	    l = gh_cons (figures_[i]->self_scm(), l);
-
-	  SCM markup = scm_call_2 (proc, l, daddy_trans_->self_scm ());
-
-	  figure_ = make_item ("BassFigure");
-	  figure_->set_grob_property ("text", markup);
-	  announce_grob(figure_, figures_[0]->self_scm()); // todo
-	}
-    }
-}
-
-  
-ENTER_DESCRIPTION(Figured_bass_engraver,
-/* descr */       "Make figured bass numbers.",
-/* creats*/       "BassFigure",
-/* accepts */     "rest-event bass-figure-event",
-/* acks  */      "",
-/* reads */       "bassFigureFormatFunction",
-/* write */       "");
diff --git a/lily/fingering-engraver.cc b/lily/fingering-engraver.cc
deleted file mode 100644
index 19f3eec6c7..0000000000
--- a/lily/fingering-engraver.cc
+++ /dev/null
@@ -1,153 +0,0 @@
-/*   
-  fingering-engraver.cc --  implement Fingering_engraver
-  
-  source file of the GNU LilyPond music typesetter
-  
-  (c) 1998--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-  
- */
-
-
-#include "engraver.hh"
-#include "side-position-interface.hh"
-#include "item.hh"
-#include "event.hh"
-#include "stem.hh"
-#include "rhythmic-head.hh"
-#include "self-alignment-interface.hh"
-
-class Fingering_engraver : public Engraver
-{
-  Link_array<Music> reqs_;
-  Link_array<Item> fingerings_;
-
-public:
-  TRANSLATOR_DECLARATIONS(Fingering_engraver);
-protected:
-  virtual bool try_music (Music* m);
-  virtual void stop_translation_timestep ();
-  virtual void start_translation_timestep ();
-  virtual void process_music ();
-  virtual void acknowledge_grob (Grob_info);
-
-  void make_script (Direction, Music*,Axis, int);
-};
-
-bool
-Fingering_engraver::try_music (Music *m)
-{
-  if (m->is_mus_type ("fingering-event"))
-    {
-      reqs_.push (m);
-      return true;
-    }
-  return false;
-}
-
-void
-Fingering_engraver::acknowledge_grob (Grob_info inf)
-{
-  if (Stem::has_interface (inf.grob_))
-    {
-      for (int i=0; i < fingerings_.size (); i++)
-	{
-	  Side_position_interface::add_support (fingerings_[i],inf.grob_);
-	}
-    }
-  else if (Rhythmic_head::has_interface (inf.grob_))
-    {
-      for (int i=0; i < fingerings_.size (); i++)
-	{
-	  Grob*t = fingerings_[i];
-	  Side_position_interface::add_support (t,inf.grob_);
-	  if (!t->get_parent (X_AXIS))
-		t->set_parent (inf.grob_, X_AXIS);
-	}
-    }
-}
-
-void
-Fingering_engraver::process_music ()
-{
-  for (int i= reqs_.size(); i--;)
-    {
-      SCM dir = reqs_[i]->get_mus_property ("direction");
-      make_script (to_dir (dir), reqs_[i], Y_AXIS, i);
-    }
-}
-
-void
-Fingering_engraver::make_script (Direction d, Music *r,Axis a,  int i)
-{
-  Item *fingering = make_item ("Fingering");
-
-  Axis other = other_axis (a);
-
-  SCM pitch = r->get_mus_property ("pitch");
-  if (unsmob_pitch (pitch))
-    fingering->set_grob_property ("pitch", pitch);
-  
-  Side_position_interface::set_axis (fingering, a);
-      
-  fingering->add_offset_callback (Self_alignment_interface::aligned_on_self_proc, other);
-  fingering->add_offset_callback (Self_alignment_interface::centered_on_parent_proc, other);
-
-  // Hmm
-  int priority = 200;
-  SCM s = fingering->get_grob_property ("script-priority");
-  if (gh_number_p (s))
-    priority = gh_scm2int (s);
-  
-  /* See script-engraver.cc */
-  priority += i;
-
-  fingering->set_grob_property ("script-priority", gh_int2scm (priority));
-
-
-  if (!is_direction (fingering->get_grob_property ("direction")))
-    {
-      if (d)
-	fingering->set_grob_property ("direction", gh_int2scm (d));
-      else
-	fingering->set_grob_property ("direction",  gh_int2scm (RIGHT));
-    }
-
-  SCM dig =  r->get_mus_property ("digit");
-  fingering->set_grob_property ("text", scm_number_to_string (dig, gh_int2scm (10)));
-
-  announce_grob (fingering, r->self_scm());
-  fingerings_.push (fingering);
-}
-
-void
-Fingering_engraver::stop_translation_timestep ()
-{
-  if (!fingerings_.size ())
-    return;
-  
-  for (int i=0; i < fingerings_.size (); i++)
-    {
-      Item *ti = fingerings_[i];
-      typeset_grob (ti);
-    }
-  fingerings_.clear ();
-}
-
-void
-Fingering_engraver::start_translation_timestep ()
-{
-  reqs_.clear ();
-}
-
-Fingering_engraver::Fingering_engraver()
-{
-
-}
-
-ENTER_DESCRIPTION(Fingering_engraver,
-/* descr */       "Create fingering-scripts",
-/* creats*/       "Fingering",
-/* accepts */     "fingering-event",
-/* acks  */      "rhythmic-head-interface stem-interface",
-/* reads */       "",
-/* write */       "");
diff --git a/lily/folded-repeat-iterator.cc b/lily/folded-repeat-iterator.cc
deleted file mode 100644
index 8f0a89f0ce..0000000000
--- a/lily/folded-repeat-iterator.cc
+++ /dev/null
@@ -1,151 +0,0 @@
-/*   
-     folded-repeat-iterator.cc --  implement Folded_repeat_iterator
-  
-  source file of the GNU LilyPond music typesetter
-  
-  (c) 1999--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-  
- */
-
-
-#include "folded-repeat-iterator.hh"
-#include "repeated-music.hh"
-#include "music-list.hh"
-#include "simultaneous-music-iterator.hh"
-#include "translator-group.hh"
-
-Folded_repeat_iterator::Folded_repeat_iterator ()
-{
-  main_iter_ = 0;
-  alternative_iter_ = 0;
-}
-
-bool
-Folded_repeat_iterator::ok () const
-{
-  return main_iter_ || alternative_iter_;
-}
-void
-Folded_repeat_iterator::do_quit()
-{
-  if (main_iter_)main_iter_->quit();
-  if (alternative_iter_)alternative_iter_->quit();
-}
-
-Moment
-Folded_repeat_iterator::pending_moment () const
-{
-  if (main_iter_)
-    {
-      return main_iter_->pending_moment ();
-    }
-  else
-    return main_length_mom_ + alternative_iter_->pending_moment ();
-}
-
-void
-Folded_repeat_iterator::construct_children ()
-{
-  Repeated_music  *  mus = dynamic_cast<Repeated_music*> (get_music ());
-  main_iter_ = unsmob_iterator (get_iterator (mus->body ()));
-  if (!main_iter_->ok ())
-    {
-      leave_body ();
-      enter_alternative ();
-    }
-}
-
-void
-Folded_repeat_iterator::process (Moment m)
-{
-  if (!m.to_bool () )
-    {
-      bool success = try_music (get_music ());
-      if (!success)
-	get_music ()->origin ()->warning (_ ("no one to print a repeat brace"));
-    }
-  
-  if (main_iter_)
-    {
-      main_iter_->process (m);
-      if (!main_iter_->ok ())
-	leave_body ();
-    }
-
-  if (!main_iter_ && !alternative_iter_)
-    {
-      enter_alternative ();
-    }
-  
-  if (alternative_iter_)
-    {
-      alternative_iter_->process (m - main_length_mom_);
-      if (!alternative_iter_->ok ())
-	{
-	  alternative_iter_->quit();
-	  alternative_iter_ =0;
-	}
-    }
-}
-
-void
-Folded_repeat_iterator::leave_body ()
-{
-  Repeated_music *  mus = dynamic_cast<Repeated_music *> (get_music ());
-
-  main_iter_->quit ();
-  main_iter_ = 0;
-  main_length_mom_ +=  mus->body ()->get_length ();
-}
-
-void
-Folded_repeat_iterator::enter_alternative ()
-{
-  Repeated_music *  mus = dynamic_cast<Repeated_music *> (get_music ());  
-  if (mus->alternatives ())
-    {
-      /*
-	ugh.
-      */ 
-      Simultaneous_music_iterator * s = new Simultaneous_music_iterator;
-      s->separate_contexts_b_ = true;
-      s->init_translator (mus, get_outlet ());
-      
-      alternative_iter_ = s;
-      alternative_iter_->construct_children ();
-
-      scm_gc_unprotect_object (s->self_scm());
-    }
-}
-
-
-Music_iterator*
-Folded_repeat_iterator::try_music_in_children (Music * m) const
-{
-  if (main_iter_)
-    {
-      return main_iter_->try_music (m);
-    }
-  if (alternative_iter_)
-    return alternative_iter_->try_music (m);
-  return 0;
-}
-void
-Folded_repeat_iterator::derived_mark()const
-{
-  if (main_iter_)
-    scm_gc_mark (main_iter_->self_scm());
-  if (alternative_iter_)
-    scm_gc_mark (alternative_iter_->self_scm());
-}
-
-void
-Folded_repeat_iterator::derived_substitute (Translator_group*f, Translator_group*t) 
-{
-  if (main_iter_)
-    main_iter_->substitute_outlet (f,t);
-  if (alternative_iter_)
-    alternative_iter_->substitute_outlet (f,t);
-}
-
-IMPLEMENT_CTOR_CALLBACK (Folded_repeat_iterator);
diff --git a/lily/font-interface.cc b/lily/font-interface.cc
deleted file mode 100644
index 4c3bf6524b..0000000000
--- a/lily/font-interface.cc
+++ /dev/null
@@ -1,60 +0,0 @@
-/*   
-  font-interface.cc --  implement Font_interface
-  
-  source file of the GNU LilyPond music typesetter
-  
-  (c) 2000--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-  
- */
-
-#include "all-font-metrics.hh"
-#include "font-metric.hh"
-#include "font-interface.hh"
-#include "grob.hh"
-#include "paper-def.hh"
-#include "warn.hh"
-
-
-/*
-  todo: split up this func, reuse in text_item? 
- */
-Font_metric *
-Font_interface::get_default_font (Grob*me)
-{
-  Font_metric * fm =  unsmob_metrics (me->get_grob_property ("font"));
-  if (fm)
-    return fm;
-
-  fm = select_font (me->get_paper (),  font_alist_chain (me));
-  me->set_grob_property ("font", fm->self_scm ());
-  return fm;
-}
-
-
-LY_DEFINE(ly_font_interface_get_default_font,
-	  "ly:get-default-font", 1 , 0, 0,
-	  (SCM grob), "Return the default font for grob @var{gr}.")
-{
-  Grob * gr  = unsmob_grob (grob);
-  SCM_ASSERT_TYPE(gr, grob, SCM_ARG1, __FUNCTION__, "grob");
-
-  return Font_interface::get_default_font (gr)->self_scm ();
-}
-
-
-SCM
-Font_interface::font_alist_chain (Grob*g)
-{
-  SCM defaults = g->get_paper ()->lookup_variable (ly_symbol2scm ("font-defaults"));
-  
-  return g->get_property_alist_chain (defaults);
-}
-
-
-  
-
-
-ADD_INTERFACE (Font_interface, "font-interface",
-	       "Any symbol that is typeset through fixed sets of glyphs (ie. fonts)",
-	       "font-magnification font font-series font-shape "
-	       "font-family font-name font-size");
diff --git a/lily/font-metric.cc b/lily/font-metric.cc
deleted file mode 100644
index b7345b86e1..0000000000
--- a/lily/font-metric.cc
+++ /dev/null
@@ -1,230 +0,0 @@
-/*   
-  font-metric.cc --  implement Font_metric
-  
-  source file of the GNU LilyPond music typesetter
-  
-  (c) 1999--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-
-    Mats Bengtsson <matsb@s3.kth.se> (the ugly TeX parsing in text_dimension)
- */
-
-#include <math.h>
-#include <ctype.h>
-
-#include "virtual-methods.hh"
-#include "warn.hh"
-#include "molecule.hh"
-#include "ly-smobs.icc"
-#include "font-metric.hh"
-#include "string.hh"
-
-Box
-Font_metric::text_dimension (String text) const
-{
-  Interval ydims;
-  Real w=0.0;
-  
-  for (int i = 0; i < text.length (); i++) 
-    {
-      
-      switch (text[i]) 
-	{
-	case '\\':
-  // accent marks use width of base letter
-         if (i +1 < text.length ())
-	   {
-	     if (text[i+1]=='\'' || text[i+1]=='`' || text[i+1]=='"' ||
-		 text[i+1]=='^')
-	       {
-		 i++;
-		 break;
-	       }
-	     // for string width \\ is a \ and \_ is a _.
-	     if (text[i+1]=='\\' || text[i+1]=='_')        
-	       {
-		 break;
-	       }
-	   }
-	  
-	  for (i++; (i < text.length ()) && !isspace (text[i]) 
-		 && text[i]!='{' && text[i]!='}'; i++)
-	    ;
-	  // ugh.
-	  i--; // Compensate for the increment in the outer loop!
-	  break;
-	case '{':  // Skip '{' and '}'
-	case '}':
-	  break;
-	
-	default: 
-	  Box b = get_ascii_char ((unsigned char)text[i]);
-	  
-	  // Ugh, use the width of 'x' for unknown characters
-	  if (b[X_AXIS].length () == 0) 
-	    b = get_ascii_char ((unsigned char)'x');
-	  
-	  w += b[X_AXIS].length ();
-	  ydims.unite (b[Y_AXIS]);
-	  break;
-	}
-    }
-  if (ydims.is_empty ())
-    ydims = Interval (0,0);
-
-  return Box (Interval (0, w), ydims);
-}
-
-
-
-Font_metric::~Font_metric ()
-{
-}
-
-Font_metric::Font_metric ()
-{
-  description_ = SCM_EOL;
-  self_scm_ = SCM_EOL;
-  smobify_self ();
-}
-
-Font_metric::Font_metric (Font_metric const &)
-{
-}
-
-int
-Font_metric::count () const
-{
-  return 0;
-}
-
-Box 
-Font_metric::get_ascii_char (int) const
-{
-  return Box (Interval (0,0),Interval (0,0));
-}
-
-Box 
-Font_metric::get_indexed_char (int k) const
-{
-  return get_ascii_char(k);
-}
-
-
-int
-Font_metric::name_to_index (String) const
-{
-  return -1;
-}
-
-Offset
-Font_metric::get_indexed_wxwy (int )const
-{
-  return Offset (0,0);
-}
-
-void
-Font_metric::derived_mark ()const
-{
-  
-}
-
-SCM
-Font_metric::mark_smob (SCM s)
-{
-  Font_metric * m = (Font_metric*) SCM_CELL_WORD_1 (s);
-
-  m->derived_mark();
-  return m->description_;
-}
-
-int
-Font_metric::print_smob (SCM s, SCM port, scm_print_state *)
-{
-  Font_metric *m = unsmob_metrics (s);
-  scm_puts ("#<", port);
-  scm_puts (classname (m), port);
-  scm_puts (" ", port);
-  scm_write (m->description_, port);
-  scm_puts (">", port);
-  return 1;
-}
-
-
-
-IMPLEMENT_SMOBS (Font_metric);
-IMPLEMENT_DEFAULT_EQUAL_P (Font_metric);
-IMPLEMENT_TYPE_P (Font_metric, "ly:font-metric?");
-
-Molecule
-Font_metric::find_by_name (String) const
-{
-  Molecule m ;
-  return m;
-}
-
-LY_DEFINE(ly_find_glyph_by_name, "ly:find-glyph-by-name", 2 , 0, 0,
-	  (SCM font, SCM name),
-	  "This function retrieves a Molecule for the glyph named @var{name} in "
-"@var{font}.  The font must be available as an AFM file. If the glyph "
-"is not found, #f is returned. ")
-{
-  Font_metric *fm = unsmob_metrics (font);
-  SCM_ASSERT_TYPE(fm, font, SCM_ARG1, __FUNCTION__, "font-metric");
-  SCM_ASSERT_TYPE(gh_string_p (name), name, SCM_ARG2, __FUNCTION__, "string");
-
-  Molecule m =  fm->find_by_name (ly_scm2string (name));
-
-  /*
-    TODO: make optional argument for default if not found.
-    
-   */
-  return m.smobbed_copy ();
-}
-
-LY_DEFINE(ly_get_glyph, "ly:get-glyph", 2 , 0, 0,
-	  (SCM font, SCM index),
-	  "This function retrieves a Molecule for the glyph numbered @var{index} in "
-"@var{font}. ")
-{
-  Font_metric *fm = unsmob_metrics (font);
-  SCM_ASSERT_TYPE(fm, font, SCM_ARG1, __FUNCTION__, "font-metric");
-  SCM_ASSERT_TYPE(gh_number_p (index), index, SCM_ARG2, __FUNCTION__, "number");
-
-  return fm->get_ascii_char_molecule (gh_scm2int (index)).smobbed_copy ();
-}
-
-LY_DEFINE(ly_text_dimension,"ly:text-dimension", 2 , 0, 0,
-	  (SCM font, SCM text),
-	  "Given the font metric in @var{font} and the string @var{text}, compute "
-"the extents of that text in that font. The return value is a pair of "
-"number-pairs.")
-{
-  Box b;
-  Font_metric *fm = unsmob_metrics (font);
-  SCM_ASSERT_TYPE(fm, font, SCM_ARG1, __FUNCTION__, "font-metric");
-  SCM_ASSERT_TYPE(gh_string_p (text), text, SCM_ARG2, __FUNCTION__, "string");
-
-  b = fm->text_dimension (ly_scm2string (text));
-  
-  return gh_cons (ly_interval2scm (b[X_AXIS]), ly_interval2scm(b[Y_AXIS]));
-}
-
-Molecule
-Font_metric::get_ascii_char_molecule (int code)  const
-{
-  SCM at = scm_list_n (ly_symbol2scm ("char"), gh_int2scm (code),
-		       SCM_UNDEFINED);
-  at = fontify_atom (this, at);
-  Box b = get_ascii_char (code);
-  return Molecule (b, at);
-}
-
-Molecule
-Font_metric::get_indexed_char_molecule (int code)  const
-{
-  SCM at = scm_list_n (ly_symbol2scm ("char"), gh_int2scm (code),
-		       SCM_UNDEFINED);
-  at = fontify_atom (this, at);
-  Box b = get_indexed_char (code);
-  return Molecule (b, at);
-}
diff --git a/lily/font-select.cc b/lily/font-select.cc
deleted file mode 100644
index 0a21fc6201..0000000000
--- a/lily/font-select.cc
+++ /dev/null
@@ -1,179 +0,0 @@
-/*   
-  font-select.cc -- implement property -> font_metric routines. 
-
-  source file of the GNU LilyPond music typesetter
-
-  (c) 2003--2004 Han-Wen Nienhuys <hanwen@xs4all.nl>
-
- */
-
-#include <math.h>
-
-#include "paper-def.hh"
-#include "font-interface.hh"
-#include "warn.hh"
-
-LY_DEFINE(ly_paper_get_font,"ly:paper-get-font", 2, 0, 0,
-	  (SCM paper, SCM chain),
-	  "Return a font metric satisfying the font-qualifiers in the alist chain @var{chain}.\n"
-"\n"
-"The font object represents the metric information of a font. Every font\n"
-"that is loaded into LilyPond can be accessed via Scheme. \n"
-"\n"
-"LilyPond only needs to know the dimension of glyph to be able to process\n"
-"them. This information is stored in font metric files. LilyPond can read\n"
-"two types of font-metrics: @TeX{} Font Metric files (TFM files) and\n"
-"Adobe Font Metric files (AFM files).  LilyPond will always try to load\n"
-"AFM files first since they are more versatile.\n"
-"\n"
-"An alist chain is a list of alists, containing grob properties.\n")
-{
-  Paper_def *pap = unsmob_paper (paper);
-  SCM_ASSERT_TYPE(pap, paper, SCM_ARG1, __FUNCTION__, "paper definition");
-  
-  Font_metric*fm = select_font (pap, chain);
-  return fm->self_scm();
-}
-
-
-bool
-wild_compare (SCM field_val, SCM val)
-{
-  return (val == SCM_BOOL_F || field_val == ly_symbol2scm ("*") || field_val == val);
-}
-Font_metric*
-get_font_by_design_size (Paper_def* paper, Real requested,
-			 SCM font_vector)
-{
-  int n = SCM_VECTOR_LENGTH (font_vector);
-  Real size = 1e6;
-  Real last_size = -1e6;
-  int i = 0;
-  
-  for (; i < n; i++)
-    {
-      size = gh_scm2double (gh_car (SCM_VECTOR_REF (font_vector, i)));
-      if (size > requested)
-	break ;
-      last_size = size; 
-    }
-
-  if (i == n)
-    {
-      i = n-1;
-    }
-  else if (i > 0)
-    {
-      if ((requested / last_size) < (size / requested))
-	{
-	  i -- ;
-	  size = last_size;
-	}
-    }
-  
-  return paper->find_font (gh_cdr (SCM_VECTOR_REF (font_vector, i)),
-			   requested / size);
-}
-
-
-Font_metric*
-get_font_by_mag_step (Paper_def* paper, Real requested_step,
-		      SCM font_vector, Real default_size)
-{
-  return get_font_by_design_size (paper,
-				  default_size * pow (2.0, requested_step / 6.0),
-				  font_vector);
-}
-
-
-
-/*
-  We can probably get more efficiency points if we preprocess FONTS
-  to make lookup easier.
- */
-SCM
-properties_to_font_size_family (SCM fonts, SCM alist_chain)
-{
-  SCM shape = SCM_BOOL_F;
-  SCM family = SCM_BOOL_F;
-  SCM series = SCM_BOOL_F;
-  
-  shape = ly_assoc_chain (ly_symbol2scm ("font-shape"), alist_chain);
-  family = ly_assoc_chain (ly_symbol2scm ("font-family"), alist_chain);
-  series = ly_assoc_chain (ly_symbol2scm ("font-series"), alist_chain);
-
-  if (gh_pair_p (shape))
-    shape = ly_cdr (shape);
-  if (gh_pair_p (family))
-    family = ly_cdr (family);
-  if (gh_pair_p (series))
-    series = ly_cdr (series);
-
-
-  for (SCM s = fonts ; gh_pair_p (s); s = ly_cdr (s))
-    {
-      SCM qlist = ly_caar (s);
-
-      if (!wild_compare (SCM_VECTOR_REF (qlist, 0), series))
-	continue;
-      if (!wild_compare (SCM_VECTOR_REF (qlist, 1), shape))
-	continue;
-      if (!wild_compare (SCM_VECTOR_REF (qlist, 2), family))
-	continue;
-  
-      SCM qname = ly_cdar (s);
-      return qname;
-    }
-
-  warning (_ ("couldn't find any font size family satisfying "));
-  
-  scm_write (scm_list_n (shape, series , family, 
-			 SCM_UNDEFINED), scm_current_error_port ());
-  scm_flush (scm_current_error_port ());
- 
-  return scm_makfrom0str ("cmr10");
-}
-
-
-Font_metric *
-select_font (Paper_def *paper, SCM chain)
-{
-  SCM name = ly_assoc_chain (ly_symbol2scm  ("font-name"), chain);
-  
-  if (!gh_pair_p (name) || !gh_string_p (gh_cdr (name)))
-    {
-      SCM fonts = paper->lookup_variable (ly_symbol2scm ("fonts"));
-      name = properties_to_font_size_family (fonts, chain);
-    }
-  else
-    name  = gh_cdr (name);
-
-
-  if (gh_string_p (name))
-    {
-      SCM mag = ly_assoc_chain (ly_symbol2scm ("font-magnification"), chain);
-  
-      Real rmag = gh_pair_p (mag) ? robust_scm2double (gh_cdr (mag), 1.0) : 1;
-  
-      return paper->find_font (name, rmag);
-    }
-  else if (gh_pair_p (name)) // (DEFAULT . FONT-VEC) pair
-    {
-      SCM vec = gh_cdr (name);
-      SCM base_size = gh_car (name);
-      
-      SCM font_size = ly_assoc_chain (ly_symbol2scm ("font-size"), chain);
-      Real req = 0.0;
-      if (gh_pair_p (font_size))
-	req = gh_scm2double (ly_cdr (font_size));
-
-      return get_font_by_mag_step (paper, req,
-				   vec, gh_scm2double (base_size));
-    }
-
-  assert (0);
-
-  return 0;
-}
-
-
diff --git a/lily/font-size-engraver.cc b/lily/font-size-engraver.cc
deleted file mode 100644
index 7ef99111b4..0000000000
--- a/lily/font-size-engraver.cc
+++ /dev/null
@@ -1,55 +0,0 @@
-/*   
-  font-size-engraver.cc --  implement Font_size_engraver
-  
-  source file of the GNU LilyPond music typesetter
-  
-  (c) 2001--2004  Han-Wen Nienhuys <hanwen@cs.uu.nl>
-  
- */
-
-#include "grob.hh"
-#include "engraver.hh"
-
-class Font_size_engraver : public Engraver
-{
-  
-  TRANSLATOR_DECLARATIONS(Font_size_engraver);
-protected:
-  virtual void acknowledge_grob (Grob_info gi);
-private:
-};
-
-
-Font_size_engraver::Font_size_engraver ()
-{
-
-}
-
-void
-Font_size_engraver::acknowledge_grob (Grob_info gi)
-{
-  SCM sz = get_property ("fontSize");
-
-  /*
-    We only want to process a grob once.
-   */
-  if (gi.origin_trans_->daddy_trans_ != daddy_trans_)
-    return ;
-  
-  if (gh_number_p (sz) && gh_scm2double (sz))
-    {
-      Real font_size = gh_scm2double (sz);
-      
-      font_size +=  robust_scm2double (gi.grob_->get_grob_property ("font-size"), 0);
-      gi.grob_->set_grob_property ("font-size", gh_double2scm (font_size));
-    }
-}
-
-
-ENTER_DESCRIPTION(Font_size_engraver,
-/* descr */       "Puts fontSize into font-relative-size grob property.",
-/* creats*/       "",
-/* accepts */     "",
-/* acks  */      "font-interface",
-/* reads */       "fontSize",
-/* write */       "");
diff --git a/lily/forbid-break-engraver.cc b/lily/forbid-break-engraver.cc
deleted file mode 100644
index 461b55e9d8..0000000000
--- a/lily/forbid-break-engraver.cc
+++ /dev/null
@@ -1,45 +0,0 @@
-#include "rhythmic-head.hh"
-#include "engraver.hh"
-#include "grob.hh"
-#include "score-engraver.hh"
-
-class Forbid_line_break_engraver : public Engraver
-{
-public:
-  TRANSLATOR_DECLARATIONS(Forbid_line_break_engraver);
-  virtual void start_translation_timestep ();
-};
-
-Forbid_line_break_engraver::Forbid_line_break_engraver(){}
-
-ENTER_DESCRIPTION(Forbid_line_break_engraver,
-/* descr */       "Forbid line breaks when note heads are still playing at some point.",
-/* creats*/       "",
-/* accepts */     "",
-/* acks  */      "",
-/* reads */       "busyGrobs",
-/* write */       "");
-
-void
-Forbid_line_break_engraver::start_translation_timestep()
-{
-  /*
-    Check for running note heads. This should probably be done elsewhere.
-   */
-  SCM busy = get_property ("busyGrobs");
-
-  Moment now = now_mom();
-  while (gh_pair_p (busy) && unsmob_moment (gh_caar (busy))->main_part_ == now.main_part_)
-    busy = gh_cdr (busy);
-
-  
-  while (gh_pair_p (busy))
-    {
-      Grob *g = unsmob_grob (gh_cdar (busy));
-      if (Rhythmic_head::has_interface (g))
-	{
-	  top_engraver()->forbid_breaks();
-	}
-      busy = gh_cdr(busy);
-    }
-}
diff --git a/lily/function-documentation.cc b/lily/function-documentation.cc
deleted file mode 100644
index 46dbbfe572..0000000000
--- a/lily/function-documentation.cc
+++ /dev/null
@@ -1,30 +0,0 @@
-#include "lily-guile.hh"
-#include "protected-scm.hh"
-#include "string.hh"
-
-static Protected_scm doc_hash_table ;
-
-void ly_add_function_documentation (SCM func,
-				    char const * fname,
-				    char const * varlist,
-				    char const * doc)
-{
-  if (!gh_vector_p (doc_hash_table ))
-    doc_hash_table = scm_make_vector (gh_int2scm (59), SCM_EOL);
-
-  String s = String (" - ") + "LilyPond procedure: " + fname + " " + varlist
-    + "\n" + doc ;
-
-  scm_set_procedure_property_x (func, ly_symbol2scm ("documentation"),
-				scm_makfrom0str (s.to_str0 ()));
-  SCM entry = gh_cons (scm_makfrom0str (varlist), scm_makfrom0str (doc));
-  scm_hashq_set_x (doc_hash_table, ly_symbol2scm (fname), entry);
-}
-
-
-LY_DEFINE(ly_get_all_function_documentation, "ly:get-all-function-documentation",
-	  0,0,0, (),
-	  "Get a hash table with all lilypond Scheme extension functions.")
-{
-  return doc_hash_table;
-}
diff --git a/lily/gdb.cc b/lily/gdb.cc
deleted file mode 100644
index e9bfd001dc..0000000000
--- a/lily/gdb.cc
+++ /dev/null
@@ -1,23 +0,0 @@
-#include "item.hh"
-#include "spanner.hh"
-#include "paper-column.hh"
-
-extern "C" {
-// thanks to GDBs wonderful casting abilities, we need these:
-Item*
-to_item (Grob* g)
-{
-  return dynamic_cast<Item*> (g);
-}
-Spanner*
-to_spanner (Grob*g)
-{
-  return dynamic_cast<Spanner*> (g);
-}
-
-Paper_column*
-to_pc (Grob* g)
-{
-  return dynamic_cast<Paper_column*> (g);
-}
-}
diff --git a/lily/glissando-engraver.cc b/lily/glissando-engraver.cc
deleted file mode 100644
index efa2e3c159..0000000000
--- a/lily/glissando-engraver.cc
+++ /dev/null
@@ -1,122 +0,0 @@
-/*   
-  note-head-line-engraver.cc -- implement Note_head_line_engraver
-  
-  source file of the GNU LilyPond music typesetter
-  
-  (c) 2000--2004 Jan Nieuwenhuizen <janneke@gnu.org>
- */
-
-#include "warn.hh"
-#include "event.hh"
-#include "spanner.hh"
-#include "rhythmic-head.hh"
-#include "engraver.hh"
-
-/**
-   Create line-spanner grobs for glissandi lines that connect note
-   heads.
-*/
-class Glissando_engraver : public Engraver
-{
-public:
-  TRANSLATOR_DECLARATIONS(Glissando_engraver);
-
-protected:
-  virtual void acknowledge_grob (Grob_info);
-  virtual void finalize ();
-  virtual void stop_translation_timestep ();
-  virtual bool try_music (Music *);
-  virtual void process_music ();
-private:
-  Spanner *line_; 
-  Spanner *last_line_; 
-  Music* event_;
-};
-
-Glissando_engraver::Glissando_engraver ()
-{
-  last_line_ = line_ = 0;
-  event_ = 0;
-}
-
-bool
-Glissando_engraver::try_music (Music* m)
-{
-  if (!event_)
-    {
-      event_ = m;
-      return true;
-    }
-  return false;
-}
-
-void
-Glissando_engraver::process_music ()
-{
-  if (event_)
-    {
-      line_ = make_spanner ("Glissando");
-      announce_grob (line_, event_->self_scm ());
-    }
-}
-
-
-void
-Glissando_engraver::acknowledge_grob (Grob_info info)
-{
-  if (Rhythmic_head::has_interface (info.grob_))
-    {
-      Grob * g = info.grob_;
-      if (line_)
-	line_->set_bound (LEFT, g);
-
-      if (last_line_)
-	last_line_->set_bound (RIGHT, g);
-    }    
-}
-
-
-void
-Glissando_engraver::stop_translation_timestep ()
-{
-  if (last_line_ && last_line_->get_bound (RIGHT))
-    {
-      typeset_grob (last_line_);
-      last_line_ =0;
-    }
-  if (line_)
-    {
-      if ( last_line_)
-	programming_error ("Overwriting glissando.");
-      last_line_ = line_;
-    }
-  line_ = 0;
-  event_ = 0;
-}
-
-void
-Glissando_engraver::finalize ()
-{
-  if (line_)
-    {
-      String msg = _("Unterminated glissando.");
-      
-      if (event_)
-	event_->origin ()->warning (msg);
-      else
-	warning (msg);
-      
-      line_->suicide ();
-      line_ =0;
-    }
-}
-
-
-
-ENTER_DESCRIPTION(Glissando_engraver,
-/* descr */       "Engrave a glissandi",
-/* creats*/       "Glissando",
-/* accepts */     "glissando-event",
-/* acks  */       "rhythmic-head-interface",
-/* reads */       "followVoice",
-/* write */       "");
diff --git a/lily/global-ctor.cc b/lily/global-ctor.cc
deleted file mode 100644
index 5f2a767973..0000000000
--- a/lily/global-ctor.cc
+++ /dev/null
@@ -1,27 +0,0 @@
-/*   
-  global-ctor.cc --  implement global constructors
-  
-  source file of the GNU LilyPond music typesetter
-  
-  (c) 1999--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-  
- */
-#include "global-ctor.hh"
-#include "array.hh"
-
-static Array<Global_ctor> *ctor_global_statics_;
-
-void
-add_constructor (Global_ctor c)
-{
-  if (!ctor_global_statics_)
-    ctor_global_statics_ = new Array<Global_ctor>;
-  ctor_global_statics_->push (c);
-}
-
-void
-call_constructors ()
-{
-  for (int i=0; i < ctor_global_statics_->size (); i++)
-    (ctor_global_statics_->elem (i)) ();
-}
diff --git a/lily/global-translator.cc b/lily/global-translator.cc
deleted file mode 100644
index 1edda61cbb..0000000000
--- a/lily/global-translator.cc
+++ /dev/null
@@ -1,162 +0,0 @@
-/*
-  global-translator.cc -- implement Global_translator
-
-  source file of the GNU LilyPond music typesetter
-
-  (c) 1997--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-*/
-#include <stdio.h>
-
-#include "warn.hh"
-#include "music.hh"
-#include "event.hh"
-#include "music-list.hh"
-#include "music-iterator.hh"
-#include "global-translator.hh"
-
-Global_translator::Global_translator ()
-{
-  output_def_ = 0;
-}
-
-Music_output_def* 
-Global_translator::get_output_def () const
-{
-  return output_def_;
-}
-
-void
-Global_translator::add_moment_to_process (Moment m)
-{
-  if (m  > final_mom_)
-    return;
-
-  if (m < now_mom_)
-    programming_error ("Trying to freeze in time.");
-  
-  for (int i=0; i <  extra_mom_pq_.size (); i++)
-    if (extra_mom_pq_[i] == m)
-      return;
-  extra_mom_pq_.insert (m);
-}
-
-Moment
-Global_translator::sneaky_insert_extra_moment (Moment w)
-{
-  while (extra_mom_pq_.size () && extra_mom_pq_.front () <= w)
-    w = extra_mom_pq_.get ();
-  return w;
-}
-
-int
-Global_translator::get_moments_left () const
-{
-  return extra_mom_pq_.size ();
-}
-
-void
-Global_translator::prepare (Moment m)
-{
-  prev_mom_  = now_mom_;
-  now_mom_ = m;
-}
-
-Moment
-Global_translator::now_mom () const
-{
-  return now_mom_;
-}
-
-
-
-Music_output*
-Global_translator::get_output ()
-{
-  return 0;
-}
-
-void
-Global_translator::one_time_step ()
-{
-}
-
-void
-Global_translator::start ()
-{
-}
-void
-Global_translator::finish ()
-{
-}
-
-void
-Global_translator::run_iterator_on_me (Music_iterator * iter)
-{
-  if (iter-> ok ())
-    prev_mom_ = now_mom_ = iter->pending_moment ();
-
-  bool first = true;
-  while (iter->ok () || get_moments_left ())
-    {
-      Moment w;
-      w.set_infinite (1);
-      if (iter->ok ())
-	{
-	  w = iter->pending_moment ();
-	}
-
-      w = sneaky_insert_extra_moment (w);
-      if (w.main_part_.is_infinity ())
-	break ;
-      
-      
-      //      printf ("proccing %s\n ",       w.to_string ().to_str0 ());
-      if (first)
-	{
-	  first = false;
-	  set_property ("measurePosition", w.smobbed_copy ());
-	}
-
-      prepare (w);
-      if (iter->ok ())
-	iter->process (w);
-      
-      one_time_step ();
-    }
-}
-
-void
-Global_translator::apply_finalizations ()
-{
-  SCM lst = get_property ("finalizations");
-  set_property ("finalizations" , SCM_EOL); 
-  for (SCM s = lst ; gh_pair_p (s); s = gh_cdr (s))
-    {
-      scm_primitive_eval (gh_car (s));
-    }
-}
-
-/*
-   Add a function to execute before stepping to the next time step.
- */
-void
-Global_translator::add_finalization (SCM x)
-{
-  SCM lst = get_property ("finalizations");
-  lst = scm_cons (x, lst);
-  set_property ("finalizations" ,lst); 
-}
-
-
-Global_translator *
-Translator::top_translator()const
-{
-  if (dynamic_cast<Global_translator*>((Translator*)this))
-    return dynamic_cast<Global_translator*> ((Translator*)this);
-
-  if (daddy_trans_)
-    return daddy_trans_->top_translator ();
-
-  programming_error ("No top translator!");
-  return 0;
-}
diff --git a/lily/gourlay-breaking.cc b/lily/gourlay-breaking.cc
deleted file mode 100644
index 8f7b0ec9f8..0000000000
--- a/lily/gourlay-breaking.cc
+++ /dev/null
@@ -1,265 +0,0 @@
-/*
-  gourlay-breaking.cc -- implement Gourlay_breaking
-
-  source file of the GNU LilyPond music typesetter
-
-  (c) 1997--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-*/
-#include <math.h>		// rint
-#include <stdio.h>
-
-#include "gourlay-breaking.hh"
-#include "column-x-positions.hh"
-#include "warn.hh"
-#include "main.hh"
-#include "paper-column.hh"
-#include "paper-score.hh"
-#include "paper-def.hh"
-#include "simple-spacer.hh"
-#include "system.hh"
-
-/// How often to print operator pacification marks?
-const int HAPPY_DOTS_I = 3;
-
-/**
-  Helper to trace back an optimal path 
- */
-struct Break_node {
-  /** this was the previous. If negative, this break should not be
-    considered: this path has infinite energy
-    
-    */
-  int prev_break_;
-  /**
-     Which system number so far?
-   */
-  int line_;
-
-  Real demerits_;
-  Column_x_positions line_config_;
-  
-  Break_node () 
-  {
-    prev_break_ = -1;
-    line_ = 0;
-    demerits_ = 0;
-  }
-
-  void print () const
-  {
-    printf ("prev break %d, line %d, demerits %f\n",
-	    prev_break_, line_, demerits_);
-  }
-};
-
-void
-print_break_nodes (Array<Break_node> const & arr)
-{
-  for (int i =0; i < arr.size (); i++)
-    {
-      printf ( "node %d: ", i); 
-      arr[i].print ();
-    }      
-}
-
-/**
-  This algorithms is adapted from the OSU Tech report on breaking lines.
-
-  this function is longish, but not very complicated.
-  
- */
-Array<Column_x_positions>
-Gourlay_breaking::do_solve () const
-{
-  Array<Break_node> optimal_paths;
-  Link_array<Grob> all =
-    pscore_->system_->columns ();
-  
-  Array<int> breaks = find_break_indices ();
-  
-  Break_node first_node ;
-  optimal_paths.push (first_node);
-
-  Real worst_force = 0.0;
-  
-  for (int break_idx=1; break_idx< breaks.size (); break_idx++) 
-    {
-      /*
-	start with a short line, add measures. At some point 
-	the line becomes infeasible. Then we don't try to add more 
-	*/
-      int minimal_start_idx = -1;
-      Column_x_positions minimal_sol;
-      Column_x_positions backup_sol;
-      
-      Real minimal_demerits = infinity_f;
-
-      bool ragged = to_boolean (pscore_->paper_->get_scmvar ("raggedright"));
-
-      for (int start_idx = break_idx; start_idx--;)
-	{
-	  Link_array<Grob> line = all.slice (breaks[start_idx], breaks[break_idx]+1);
-  
-	  line[0]     = dynamic_cast<Item*> (line[0])    ->find_prebroken_piece (RIGHT);
-	  line.top () = dynamic_cast<Item*> (line.top ())->find_prebroken_piece (LEFT);
-	    
-	  Column_x_positions cp;
-	  cp.cols_ = line;
-
-	  Interval line_dims
-	    = pscore_->paper_->line_dimensions_int (optimal_paths[start_idx].line_);
-	  Simple_spacer * sp = generate_spacing_problem (line, line_dims);
-	  sp->solve (&cp, ragged);
-	  delete sp;
-
-	  if (fabs (cp.force_) > worst_force)
-	    worst_force = fabs (cp.force_);
-
-	  /*
-	    We remember this solution as a "should always work
-	    solution", in case everything fucks up.  */
-	  if (start_idx == break_idx - 1)
-	    backup_sol = cp;
-	 	  
-	  Real this_demerits;
-
-	  if (optimal_paths[start_idx].demerits_ >= infinity_f)
-	    this_demerits = infinity_f;
-	  else
-	    this_demerits = combine_demerits (optimal_paths[start_idx].line_config_, cp)
-	      + optimal_paths[start_idx].demerits_;
-
-	  if (this_demerits < minimal_demerits) 
-	    {
-	      minimal_start_idx = start_idx;
-	      minimal_sol = cp;
-	      minimal_demerits = this_demerits;
-	    }
-
-	  /*
-	    we couldn't satisfy the constraints, this won't get better
-	    if we add more columns, so we get on with the next one
-	  */
-	  if (!cp.satisfies_constraints_b_)
-	    break ; 
-	}
-
-
-      Break_node bnod;
-      if (minimal_start_idx < 0) 
-	{
-	  bnod.demerits_ = infinity_f;
-	  bnod.line_config_ = backup_sol;
-	  bnod.prev_break_ = break_idx - 1;	  
-	}
-      else 
-	{
-	  bnod.prev_break_ = minimal_start_idx;
-	  bnod.demerits_ = minimal_demerits;
-	  bnod.line_config_ = minimal_sol;
-	}
-      bnod.line_ = optimal_paths[bnod.prev_break_].line_ + 1;
-      optimal_paths.push (bnod);
-      
-      if (! (break_idx % HAPPY_DOTS_I))
-	progress_indication (String ("[") + to_string (break_idx) + "]");
-    }
-
-  /* do the last one */
-  if (breaks.size () % HAPPY_DOTS_I)
-    progress_indication (String ("[") + to_string (breaks.size()) + "]");    
-
-  progress_indication ("\n");
-
-  Array<int> final_breaks;
-  Array<Column_x_positions> lines;
-
-  /* skip 0-th element, since it is a "dummy" elt*/
-  for (int i = optimal_paths.size ()-1; i> 0;) 
-    {
-      final_breaks.push (i);
-      int prev = optimal_paths[i].prev_break_;
-      assert (i > prev);
-      i = prev;
-    }
-
-  if (verbose_global_b)
-    {
-      progress_indication (_f ("Optimal demerits: %f",
-			       optimal_paths.top ().demerits_) + "\n");
-    }
-  
-  if (optimal_paths.top ().demerits_ >= infinity_f)
-    warning (_ ("No feasible line breaking found"));
-  
-  for (int i= final_breaks.size (); i--;)
-    {
-      Column_x_positions cp (optimal_paths[final_breaks[i]].line_config_);
-      
-      lines.push (cp);
-      if(!cp.satisfies_constraints_b_)
-	warning ("Could not find line breaking that satisfies constraints.");
-    }
-  return lines;
-}
-
-
-Gourlay_breaking::Gourlay_breaking ()
-{
-}
-
-
-
-/*
-  TODO: uniformity parameter to control rel. importance of spacing differences.
-
-  TODO:
-
-  mixing break penalties and constraint-failing solutions is confusing.
- */
-Real
-Gourlay_breaking::combine_demerits (Column_x_positions const &prev,
-				    Column_x_positions const &this_one) const
-{
-  Real break_penalties = 0.0;
-  Grob * pc = this_one.cols_.top ();
-  if (pc->original_)
-    {
-      SCM pen = pc->get_grob_property ("penalty");
-      if (gh_number_p (pen) && fabs (gh_scm2double (pen)) < 10000)
-	{
-	  break_penalties += gh_scm2double (pen);
-	}
-    }
-
-  /*
-    Q: do we want globally non-cramped lines, or locally equally
-    cramped lines?
-
-    There used to be an example file input/test/uniform-breaking to
-    demonstrate problems with this approach. When music is gradually
-    becoming denser, the uniformity requirement makes lines go from
-    cramped to even more cramped (because going from cramped
-    3meas/line to relatively loose 2meas/line is such a big step.
-    
-   */
-
-  Real demerit = abs (this_one.force_) +  abs (prev.force_ - this_one.force_)
-    + break_penalties;
-  
-  if (!this_one.satisfies_constraints_b_)
-     {
-       /*
-	 If it doesn't satisfy constraints, we make this one
-	 really unattractive.
-
-	 add 20000 to the demerits, so that a break penalty
-	 of -10000 won't change the result */
-       demerit = (demerit + 20000) >? 2000;
-       
-       demerit *= 10;
-     }
-
-   return demerit;
-}
-
diff --git a/lily/grace-iterator.cc b/lily/grace-iterator.cc
deleted file mode 100644
index 9f394c6176..0000000000
--- a/lily/grace-iterator.cc
+++ /dev/null
@@ -1,37 +0,0 @@
-/*   
-  grace-music.cc --  implement Grace_music
-  
-  source file of the GNU LilyPond music typesetter
-  
-  (c) 1999--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-  
- */
-
-#include "grace-music.hh"
-#include "grace-iterator.hh"
-
-
-#include "global-translator.hh"
-#include "warn.hh"
-
-void
-Grace_iterator::process (Moment m)
-{
-  Moment main ;
-  main.main_part_ = - start_mom_.grace_part_ + m.grace_part_;
-  Music_wrapper_iterator::process (main);
-}
-
-Moment
-Grace_iterator::pending_moment () const
-{
-  Moment cp =Music_wrapper_iterator::pending_moment();
-
-  Moment pending;
-  pending.grace_part_ =  start_mom_.grace_part_ + cp.main_part_;
-
-  return pending;
-}
-
-
-IMPLEMENT_CTOR_CALLBACK (Grace_iterator);
diff --git a/lily/grace-music.cc b/lily/grace-music.cc
deleted file mode 100644
index a25e867879..0000000000
--- a/lily/grace-music.cc
+++ /dev/null
@@ -1,39 +0,0 @@
-/*   
-  grace-music.cc --  implement Grace_music
-  
-  source file of the GNU LilyPond music typesetter
-  
-  (c) 1999--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-  
- */
-
-#include "grace-music.hh"
-#include "grace-iterator.hh"
-
-
-
-Moment
-Grace_music::get_length () const
-{
-  Moment m;
-  return m;
-}
-
-
-Moment
-Grace_music::start_mom () const
-{
-  Moment l = Music_wrapper::get_length ();
-  Moment gl;
-  gl.grace_part_ = -(l.main_part_ + l.grace_part_ );
-  return gl;
-}
-
-Grace_music::Grace_music ()
-{
-  set_mus_property ("iterator-ctor",
-		    Grace_iterator::constructor_proc);
-}
-
-
-ADD_MUSIC (Grace_music);
diff --git a/lily/gregorian-ligature-engraver.cc b/lily/gregorian-ligature-engraver.cc
deleted file mode 100644
index f1d58d7c09..0000000000
--- a/lily/gregorian-ligature-engraver.cc
+++ /dev/null
@@ -1,283 +0,0 @@
-/*
-  gregorian-ligature-engraver.cc -- implement Gregorian_ligature_engraver
-  
-  source file of the GNU LilyPond music typesetter
-  
-  (c) 2003 Juergen Reuter <reuter@ipd.uka.de>
- */
-
-#include "gregorian-ligature-engraver.hh"
-#include "gregorian-ligature.hh"
-#include "item.hh"
-#include "warn.hh"
-#include "staff-symbol-referencer.hh"
-#include "spanner.hh"
-#include "paper-column.hh"
-
-/*
- * This abstract class is the common superclass for all ligature
- * engravers for Gregorian chant notation.  It cares for the musical
- * handling of the neumes, such as checking for valid combinations of
- * neumes and providing context information.  Notational aspects such
- * as the glyphs to use or calculating the total width of a ligature,
- * are left to the concrete subclass.  Currently, there is only a
- * single subclass, Vaticana_ligature_engraver.  Other ligature
- * engravers for Gregorian chant will be added in the future, such as
- * Medicaea_ligature_engraver or Hufnagel_ligature_engraver.
- */
-Gregorian_ligature_engraver::Gregorian_ligature_engraver ()
-{
-  pes_or_flexa_req_ = 0;
-}
-
-bool
-Gregorian_ligature_engraver::try_music (Music *m)
-{
-  if (m->is_mus_type ("pes-or-flexa-event"))
-    {
-      pes_or_flexa_req_ = m;
-      return true;
-    }
-  else
-    return Ligature_engraver::try_music (m);
-}
-
-void fix_prefix (char *name, int mask,
-		 int *current_set, int min_set, int max_set,
-		 Grob *primitive)
-{
-  bool current = *current_set & mask;
-  bool min = min_set & mask;
-  bool max = max_set & mask;
-  if (max < min)
-    {
-      programming_error ("min_set > max_set");
-      return;
-    }
-  if (min && !current)
-    {
-      primitive->warning (_f ("\\%s ignored", name));
-      *current_set &= ~mask;
-    }
-  if (!max && current)
-    {
-      primitive->warning (_f ("implied \\%s added", name));
-      *current_set |= mask;
-    }
-}
-
-void fix_prefix_set (int *current_set, int min_set, int max_set, Grob *primitive)
-{
-  fix_prefix ("virga", VIRGA, current_set, min_set, max_set, primitive);
-  fix_prefix ("stropha", STROPHA, current_set, min_set, max_set, primitive);
-  fix_prefix ("inclinatum", INCLINATUM, current_set, min_set, max_set, primitive);
-  fix_prefix ("auctum", AUCTUM, current_set, min_set, max_set, primitive);
-  fix_prefix ("descendens", DESCENDENS, current_set, min_set, max_set, primitive);
-  fix_prefix ("ascendens", ASCENDENS, current_set, min_set, max_set, primitive);
-  fix_prefix ("oriscus", ORISCUS, current_set, min_set, max_set, primitive);
-  fix_prefix ("quilisma", QUILISMA, current_set, min_set, max_set, primitive);
-  fix_prefix ("deminutum", DEMINUTUM, current_set, min_set, max_set, primitive);
-  fix_prefix ("cavum", CAVUM, current_set, min_set, max_set, primitive);
-  fix_prefix ("linea", LINEA, current_set, min_set, max_set, primitive);
-  fix_prefix ("pes_or_flexa", LINEA, current_set, min_set, max_set, primitive);
-}
-
-void check_and_fix_all_prefixes (Array<Grob_info> primitives)
-{
-  /* Check for illegal head modifier combinations */
-  for (int i = 0; i < primitives.size(); i++)
-    {
-    Grob *primitive = primitives[i].grob_;
-
-    /* compute head prefix set by inspecting primitive grob properties */
-    int prefix_set =
-      (VIRGA * to_boolean (primitive->get_grob_property ("virga"))) |
-      (STROPHA * to_boolean (primitive->get_grob_property ("stropha"))) |
-      (INCLINATUM * to_boolean (primitive->get_grob_property ("inclinatum"))) |
-      (AUCTUM * to_boolean (primitive->get_grob_property ("auctum"))) |
-      (DESCENDENS * to_boolean (primitive->get_grob_property ("descendens"))) |
-      (ASCENDENS * to_boolean (primitive->get_grob_property ("ascendens"))) |
-      (ORISCUS * to_boolean (primitive->get_grob_property ("oriscus"))) |
-      (QUILISMA * to_boolean (primitive->get_grob_property ("quilisma"))) |
-      (DEMINUTUM * to_boolean (primitive->get_grob_property ("deminutum"))) |
-      (CAVUM * to_boolean (primitive->get_grob_property ("cavum"))) |
-      (LINEA * to_boolean (primitive->get_grob_property ("linea"))) |
-      (PES_OR_FLEXA * to_boolean (primitive->get_grob_property ("pes-or-flexa")));
-
-    /* check: ascendens and descendens exclude each other; same with
-       auctum and deminutum */
-    if (prefix_set & DESCENDENS)
-      {
-	fix_prefix_set (&prefix_set,
-			prefix_set & ~ASCENDENS,
-			prefix_set & ~ASCENDENS,
-			primitive);
-      }
-    if (prefix_set & AUCTUM)
-      {
-	fix_prefix_set (&prefix_set,
-			prefix_set & ~DEMINUTUM,
-			prefix_set & ~DEMINUTUM,
-			primitive);
-      }
-
-    /* check: virga, quilisma and oriscus can not be combined with any
-       other prefix, but may be part of a pes or flexa */
-    if (prefix_set & VIRGA)
-      {
-	fix_prefix_set (&prefix_set,
-			VIRGA,
-			VIRGA | PES_OR_FLEXA,
-			primitive);
-      }
-    if (prefix_set & QUILISMA)
-      {
-	fix_prefix_set (&prefix_set,
-			QUILISMA,
-			QUILISMA | PES_OR_FLEXA,
-			primitive);
-      }
-    if (prefix_set & ORISCUS)
-      {
-	fix_prefix_set (&prefix_set,
-			ORISCUS,
-			ORISCUS | PES_OR_FLEXA,
-			primitive);
-      }
-
-    /* check: auctum is the only valid optional prefix for stropha */
-    if (prefix_set & STROPHA)
-      {
-	fix_prefix_set (&prefix_set,
-			STROPHA,
-			STROPHA | AUCTUM,
-			primitive);
-      }
-
-
-    /* check: inclinatum may be prefixed with auctum or deminutum only */
-    if (prefix_set & INCLINATUM)
-      {
-	fix_prefix_set (&prefix_set,
-			INCLINATUM,
-			INCLINATUM | AUCTUM | DEMINUTUM,
-			primitive);
-      }
-    /* check: semivocalis (deminutum but not inclinatum) must occur in
-       combination with and only with pes or flexa */
-    else if (prefix_set & DEMINUTUM)
-      {
-	fix_prefix_set (&prefix_set,
-			DEMINUTUM | PES_OR_FLEXA,
-			DEMINUTUM | PES_OR_FLEXA,
-			primitive);
-      }
-
-    /* check: cavum and linea (either or both) may be applied only
-       upon core punctum */
-    if (prefix_set & (CAVUM | LINEA))
-      {
-	fix_prefix_set (&prefix_set,
-			0,
-			CAVUM | LINEA,
-			primitive);
-      }
-
-    /* all other combinations should be valid (unless I made a
-       mistake) */
-
-    primitive->set_grob_property ("prefix-set", gh_int2scm (prefix_set));
-  }
-}
-
-/*
- * Marks those heads that participate in a pes or flexa.
- */
-void
-provide_context_info (Array<Grob_info> primitives)
-{
-  Grob *prev_primitive = 0;
-  int prev_prefix_set = 0;
-  int prev_context_info = 0;
-  int prev_pitch = 0;
-  for (int i = 0; i < primitives.size(); i++) {
-    Grob *primitive = primitives[i].grob_;
-    Music *music_cause = primitives[i].music_cause ();
-    int context_info = 0;
-    int pitch = unsmob_pitch (music_cause->get_mus_property ("pitch"))->steps ();
-    int prefix_set = gh_scm2int (primitive->get_grob_property ("prefix-set"));
-
-    if (prefix_set & PES_OR_FLEXA)
-      if (!i) // ligature may not start with 2nd head of pes or flexa
-	  {
-	    primitive->warning ("may not apply `\\~' on first head of "
-				"ligature; ignoring `\\~'");
-	  }
-      else if (pitch > prev_pitch) // pes
-	{
-	  prev_context_info |= PES_LOWER;
-	  context_info |= PES_UPPER;
-	}
-      else if (pitch < prev_pitch) // flexa
-	{
-	  prev_context_info |= FLEXA_LEFT;
-	  context_info |= FLEXA_RIGHT;
-	}
-      else // (pitch == prev_pitch)
-	{
-	  primitive->warning ("may not apply `\\~' on heads with "
-			      "identical pitch; ignoring `\\~'");
-	}
-    if (prev_prefix_set & DEMINUTUM)
-      {
-	context_info |= AFTER_DEMINUTUM;
-      }
-
-    if (prev_primitive)
-      prev_primitive->set_grob_property ("context-info",
-					 gh_int2scm (prev_context_info));
-    prev_primitive = primitive;
-    prev_prefix_set = prefix_set;
-    prev_context_info = context_info;
-    prev_pitch = pitch;
-  }
-  if (prev_primitive)
-    prev_primitive->set_grob_property ("context-info",
-				       gh_int2scm (prev_context_info));
-}
-
-void
-Gregorian_ligature_engraver::transform_heads (Spanner *, Array<Grob_info>)
-{
-  programming_error ("Gregorian_ligature_engraver::transform_heads (): "
-		     "this is an abstract method that should not be called, "
-		     "but overridden by a subclass");
-}
-
-void
-Gregorian_ligature_engraver::build_ligature (Spanner *ligature,
-					     Array<Grob_info> primitives)
-{
-  // apply style-independent checking and transformation
-  check_and_fix_all_prefixes (primitives);
-  provide_context_info (primitives);
-
-  // apply style-specific transformation (including line-up); to be
-  // implemented by subclass
-  transform_heads (ligature, primitives);
-}
-
-void
-Gregorian_ligature_engraver::stop_translation_timestep ()
-{
-  Ligature_engraver::stop_translation_timestep ();
-  pes_or_flexa_req_ = 0;
-}
-
-ENTER_DESCRIPTION (Gregorian_ligature_engraver,
-/* descr */       "This is an abstract class.  Subclasses such as Vaticana_ligature_engraver handle ligatures by glueing special ligature heads together.",
-/* creats*/       "",
-/* accepts */     "ligature-event",
-/* acks  */      "note-head-interface rest-interface",
-/* reads */       "",
-/* write */       "");
diff --git a/lily/gregorian-ligature.cc b/lily/gregorian-ligature.cc
deleted file mode 100644
index 042457ea34..0000000000
--- a/lily/gregorian-ligature.cc
+++ /dev/null
@@ -1,54 +0,0 @@
-/*   
-  gregorian-ligature.cc -- implement Gregorian_ligature
-
-  source file of the GNU LilyPond music typesetter
-
-  (c) 2003--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-*/
-#include "grob.hh"
-#include "gregorian-ligature.hh"
-#include "string.hh"
-
-void check_prefix (String name, int mask, int prefix_set, String *str)
-{
-  if (prefix_set & mask)
-    {
-      if (!str->is_empty ())
-	*str += ", ";
-      *str += name;
-    }
-}
-
-String
-Gregorian_ligature::prefixes_to_str (Grob *primitive)
-{
-  String str;
-  int prefix_set =
-    gh_scm2int (primitive->get_grob_property ("prefix-set"));
-  check_prefix ("virga", VIRGA, prefix_set, &str);
-  check_prefix ("stropha", STROPHA, prefix_set, &str);
-  check_prefix ("inclinatum", INCLINATUM, prefix_set, &str);
-  check_prefix ("auctum", AUCTUM, prefix_set, &str);
-  check_prefix ("descendens", DESCENDENS, prefix_set, &str);
-  check_prefix ("ascendens", ASCENDENS, prefix_set, &str);
-  check_prefix ("oriscus", ORISCUS, prefix_set, &str);
-  check_prefix ("quilisma", QUILISMA, prefix_set, &str);
-  check_prefix ("deminutum", DEMINUTUM, prefix_set, &str);
-  check_prefix ("cavum", CAVUM, prefix_set, &str);
-  check_prefix ("linea", LINEA, prefix_set, &str);
-  return str;
-}
-
-/*
-  CHECK ME -- does prefix-set come from here ?
-
-  In a way, yes.  Actually, prefix-set is a property that is written
-  by code of GregorianLigatureEngraver that is virtually invoked by a
-  subclass like VaticanaLigatureEngraver.  The property is lateron
-  read by the associated item class, such as VaticanaLigature.--jr
- */
-ADD_INTERFACE (Gregorian_ligature, "gregorian-ligature-interface",
-	       "A gregorian ligature",
-	       "virga stropha inclinatum auctum descendens ascendens "
-	       "oriscus quilisma deminutum cavum linea pes-or-flexa "
-	       "context-info prefix-set");
diff --git a/lily/grob-info.cc b/lily/grob-info.cc
deleted file mode 100644
index 6d57705f9f..0000000000
--- a/lily/grob-info.cc
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
-  grob-info.cc -- implement Grob_info
-
-  source file of the GNU LilyPond music typesetter
-
-  (c) 1997--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-*/
-
-#include "grob.hh"
-#include "grob-info.hh"
-#include "music.hh"
-#include "translator-group.hh"
-
-
-Grob_info::Grob_info ()
-{
-  grob_ = 0;
-  origin_trans_ = 0;
-}
-
-Music*
-Grob_info::music_cause ()
-{
-  SCM cause = grob_->get_grob_property ("cause"); 
-  return unsmob_music (cause);
-}
-
-Link_array<Translator>
-Grob_info::origin_transes (Translator* end) const
-{
-  Translator * t = origin_trans_;
-  Link_array<Translator> r;
-  do {
-    r.push (t);
-    t = t->daddy_trans_;
-  } while (t && t != end->daddy_trans_);
-  
-  return r;
-}
-  
diff --git a/lily/grob-interface.cc b/lily/grob-interface.cc
deleted file mode 100644
index 18f699c4a4..0000000000
--- a/lily/grob-interface.cc
+++ /dev/null
@@ -1,84 +0,0 @@
-#include  "protected-scm.hh"
-#include "grob-interface.hh"
-#include "lily-guile.hh"
-#include "grob.hh"
-#include "warn.hh"
-
-Protected_scm all_ifaces;
-
-void add_interface (const char * symbol,
-		    const char * descr,
-		    const char * vars)
-{
-  SCM s = ly_symbol2scm (symbol);
-  SCM d = scm_makfrom0str (descr);
-  SCM l = parse_symbol_list (vars);
-
-
-  ly_add_interface(s,d,l);
-}
-
-
-LY_DEFINE(ly_add_interface, "ly:add-interface", 3,0,0, (SCM a, SCM b, SCM c),
-	  "Add an interface description.")
-{
-  SCM_ASSERT_TYPE (gh_symbol_p (a), a, SCM_ARG1, __FUNCTION__, "symbol");
-  SCM_ASSERT_TYPE (gh_string_p (b), b, SCM_ARG2, __FUNCTION__, "string");  
-  SCM_ASSERT_TYPE (gh_list_p(c), c,  SCM_ARG3, __FUNCTION__, "list of syms");    
-  if (!gh_vector_p (all_ifaces))
-    {
-      all_ifaces = scm_make_vector (gh_int2scm (40), SCM_EOL);
-    }
-
-  SCM entry = scm_list_n (a, b, c, SCM_UNDEFINED);
-
-  scm_hashq_set_x (all_ifaces, a, entry);
-
-
-  return SCM_UNSPECIFIED;
-}
-
-
-LY_DEFINE(ly_all_grob_interfaces, "ly:all-grob-interfaces",
-	  0,0,0, (),
-	  "Get a hash table with all interface descriptions.")
-{
-  return all_ifaces;
-}
-
-void
-check_interfaces_for_property (Grob const *me, SCM sym)
-{
-  if (sym == ly_symbol2scm ("meta"))
-    {
-      /*
-	otherwise we get in a nasty recursion loop.
-       */
-      return ;
-
-    }
-  SCM ifs =  me->get_grob_property ("interfaces");
-
-  bool found = false;
-  for (; !found && gh_pair_p (ifs); ifs =gh_cdr (ifs))
-    {
-      SCM iface = scm_hashq_ref (all_ifaces , gh_car (ifs), SCM_BOOL_F);
-      if (iface == SCM_BOOL_F)
-	{
-	  String msg = to_string ("Unknown interface `%s'",
-			       ly_symbol2string (gh_car(ifs)).to_str0 ());
-	  programming_error (msg);
-	  continue;
-	}
-
-      found= found || (scm_memq (sym, gh_caddr (iface)) != SCM_BOOL_F);
-    }
-
-  if (!found)
-    {
-     String str = to_string ("Grob %s has no interface for property %s",
-			 me->name ().to_str0 (),
-			 ly_symbol2string(sym).to_str0 ());
-     programming_error (str);
-    }
-}
diff --git a/lily/grob-pitch-tuple.cc b/lily/grob-pitch-tuple.cc
deleted file mode 100644
index b1ea68ca4f..0000000000
--- a/lily/grob-pitch-tuple.cc
+++ /dev/null
@@ -1,50 +0,0 @@
-/*   
-grob-pitch-tuple.cc --  implement Grob_pitch_tuple
-
-source file of the GNU LilyPond music typesetter
-
-(c) 2001--2004  Han-Wen Nienhuys <hanwen@cs.uu.nl>
-
- */
-#include "grob-pitch-tuple.hh"
-#include "pitch.hh"
-#include "event.hh"
-
-
-int compare (Grob_pitch_tuple const &a, Grob_pitch_tuple const &b)
-{
-  return Grob_pitch_tuple::time_compare (a,b);
-}
-
-
-
-
-Grob_pitch_tuple::Grob_pitch_tuple ()
-{
-  head_ =0;
-  end_ = 0;
-}
-
-Grob_pitch_tuple::Grob_pitch_tuple (Grob *h, Music *m, Moment mom)
-{
-  head_ = h;
-  pitch_ = *unsmob_pitch (m->get_mus_property ("pitch"));
-  end_ = mom;
-}
-
-/*
-  signed compare, should use pitch<? 
- */
-int
-Grob_pitch_tuple::pitch_compare (Grob_pitch_tuple const &h1,
-				    Grob_pitch_tuple const &h2)
-{
-  return Pitch::compare (h1.pitch_, h2.pitch_);
-}
-
-int
-Grob_pitch_tuple::time_compare (Grob_pitch_tuple const&h1,
-				   Grob_pitch_tuple const &h2)
-{
-  return Moment::compare(h1.end_,  h2.end_);
-}
diff --git a/lily/grob-pq-engraver.cc b/lily/grob-pq-engraver.cc
deleted file mode 100644
index c681814026..0000000000
--- a/lily/grob-pq-engraver.cc
+++ /dev/null
@@ -1,158 +0,0 @@
-/*   
-  grob-pq-engraver.cc --  implement Grob_pq_engraver
-
-  source file of the GNU LilyPond music typesetter
-
-  (c) 2001--2004  Han-Wen Nienhuys <hanwen@cs.uu.nl>
-*/
-
-#include "translator-group.hh"
-#include "engraver.hh"
-#include "grob.hh"
-#include "warn.hh"
-
-/*
-  TODO: should junk this engraver.
- */
-
-struct Grob_mom
-{
-  Grob * grob_ ;
-  Moment end_;
-  Grob_mom () {}
-  Grob_mom (Grob*gr, Moment e)
-  {
-    grob_ = gr;
-    end_ = e;
-  }
-};
-
-int compare  (Grob_mom const &a, Grob_mom const &b)
-{
-  return Moment::compare (a.end_, b.end_);
-}
-
-/****************/
-
-class Grob_pq_engraver: public Engraver
-{
-public:
-  TRANSLATOR_DECLARATIONS(Grob_pq_engraver);
-
-  Array<Grob_mom> current_grobs_;
-protected:
-  virtual void initialize ();
-  virtual void acknowledge_grob (Grob_info);
-  virtual void start_translation_timestep ();
-  virtual void stop_translation_timestep ();
-};
-
-
-Grob_pq_engraver::Grob_pq_engraver()
-{
-}
-
-
-void
-Grob_pq_engraver::initialize ()
-{
-  daddy_trans_->set_property ("busyGrobs", SCM_EOL); 
-}
-
-void
-Grob_pq_engraver::acknowledge_grob (Grob_info gi)
-{
-  Music  * m = gi.music_cause ();
-
-  if (m
-      && !gi.grob_->internal_has_interface (ly_symbol2scm ("multi-measure-interface")))
-    {
-      Moment n = now_mom ();
-      Moment l = m->get_length ();
-
-      if (!l.to_bool ())
-	return ;
-      
-      if (n.grace_part_)
-	{
-	  l.grace_part_ = l.main_part_;
-	  l.main_part_ = 0;
-	}
-
-      current_grobs_.push (Grob_mom (gi.grob_, n + l));
-    }
-}
-
-LY_DEFINE(ly_grob_pq_less_p, 
-	  "ly:grob-pq-less?", 2 , 0 ,0, (SCM a, SCM b), 
-	  "Compare 2 Grob PQ entries. Internal")
-{
-  if ( Moment::compare (*unsmob_moment (gh_car (a)),
-				      *unsmob_moment (gh_car (b))) < 0)
-    return SCM_BOOL_T;
-  else
-    return SCM_BOOL_F;
-}
-	  
-
-void
-Grob_pq_engraver::stop_translation_timestep ()
-{
-  Moment now = now_mom();
-
-  current_grobs_.sort (&compare);
-  SCM current_list = SCM_EOL;
-  for (int i = current_grobs_.size(); i--;)
-    current_list = scm_cons (scm_cons (current_grobs_[i].end_.smobbed_copy(), 
-				       current_grobs_[i].grob_->self_scm ()), current_list);
-
-  /*
-    We generate some garbage here.
-   */
-  SCM busy = get_property ("busyGrobs");
-  while (gh_pair_p (busy) && *unsmob_moment (gh_caar (busy)) == now)
-    {
-      busy = gh_cdr (busy);
-    }
-  
-  busy = scm_merge_x (current_list, busy, ly_grob_pq_less_p_proc);
-  current_grobs_.clear ();
-  daddy_trans_->set_property ("busyGrobs", busy);
-}
-
-void
-Grob_pq_engraver::start_translation_timestep ()
-{
-  Moment now = now_mom();
-
-  SCM start_busy = get_property ("busyGrobs");
-  SCM busy = start_busy;
-  while (gh_pair_p (busy) && *unsmob_moment (gh_caar (busy)) < now)
-    {
-      /*
-	Todo: do something sensible. The grob-pq-engraver is not water
-	tight, and stuff like tupletSpannerDuration confuses it.
-       */
-      programming_error (_f("Skipped something?\nGrob %s ended before I expected it to end.", unsmob_grob (gh_cdar (busy))->name().to_str0()));
-      
-      busy = gh_cdr (busy);
-    }
-
-  if (start_busy != busy)
-    daddy_trans_->set_property ("busyGrobs", busy);
-
-}
-
-
-ENTER_DESCRIPTION(Grob_pq_engraver,
-
-/* descr */       "Administrate when certain grobs (eg. note heads) stop playing; this \
-engraver is a sort-of a failure, since it doesn't handle all sorts of \
-borderline cases very well. \
-",												  \
-		  
-/* creats*/       "",										  \
-/* accepts */     "",										  \
-/* acks  */      "grob-interface",								  \
-/* reads */       "busyGrobs",									  \
-/* write */       "busyGrobs");
diff --git a/lily/grob-property.cc b/lily/grob-property.cc
deleted file mode 100644
index 8c0350e83a..0000000000
--- a/lily/grob-property.cc
+++ /dev/null
@@ -1,119 +0,0 @@
-/*
-  Implement storage and manipulation of grob properties.
- */
-
-#include <string.h>
-#include <math.h>
-
-#include "main.hh"
-#include "input-smob.hh"
-#include "group-interface.hh"
-#include "misc.hh"
-#include "paper-score.hh"
-#include "paper-def.hh"
-#include "grob.hh"
-#include "spanner.hh"
-#include "item.hh"
-#include "misc.hh"
-#include "item.hh"
-
-
-SCM
-Grob::get_property_alist_chain (SCM def) const
-{
-  return  scm_list_n (mutable_property_alist_,
-		      immutable_property_alist_,
-		      def,
-		      SCM_UNDEFINED);
-}
-
-
-
-/*
-  This special add_thing routine is slightly more efficient than
-
-    set_prop (name,cons (thing, get_prop (name)))
-
-  since it can reuse the handle returned by scm_assq().
-*/
-void
-Grob::add_to_list_property (SCM sym, SCM thing) 
-{
-  SCM handle
-    = scm_sloppy_assq (sym, mutable_property_alist_)
-    ;
-
-  if (handle != SCM_BOOL_F)
-    {
-      gh_set_cdr_x (handle, gh_cons (thing, gh_cdr (handle)));
-    }
-  else
-    {
-      /*
-	There is no mutable prop yet, so create an entry, and put it in front of the
-	mutable prop list.
-      */
-      handle = scm_sloppy_assq (sym, immutable_property_alist_);
-      SCM tail = (handle != SCM_BOOL_F) ? gh_cdr(handle) : SCM_EOL;
-      SCM val = gh_cons (thing, tail);
-
-      mutable_property_alist_ = gh_cons (gh_cons (sym, val),
-					 mutable_property_alist_);
-    }
-}
-
-
-extern void check_interfaces_for_property (Grob const *me, SCM sym);
-
-void
-Grob::internal_set_grob_property (SCM s, SCM v)
-{
-  /* Perhaps we simply do the assq_set, but what the heck. */
-  if (!live ())
-    return;
-
-  if (internal_type_checking_global_b)
-    {
-      if (!type_check_assignment (s, v, ly_symbol2scm ("backend-type?")))
-	abort ();
-      check_interfaces_for_property (this, s);
-    }
-
-  mutable_property_alist_ = scm_assq_set_x (mutable_property_alist_, s, v);
-}
-
-
-SCM
-Grob::internal_get_grob_property (SCM sym) const
-{
-  SCM s = scm_sloppy_assq (sym, mutable_property_alist_);
-  if (s != SCM_BOOL_F)
-    return ly_cdr (s);
-
-  s = scm_sloppy_assq (sym, immutable_property_alist_);
-  
-  if (internal_type_checking_global_b && gh_pair_p (s))
-    {
-      if (!type_check_assignment (sym, gh_cdr (s),
-				  ly_symbol2scm ("backend-type?")))
-	abort ();
-
-      check_interfaces_for_property (this, sym);
-    }
-
-  return (s == SCM_BOOL_F) ? SCM_EOL : ly_cdr (s); 
-}
-
-void
-Grob::substitute_mutable_properties (SCM crit, SCM orig)
-{
-  set_break_subsititution (crit);
-  mutable_property_alist_ = substitute_mutable_property_alist (orig);
-}
-
-
-bool
-Grob::live () const
-{
-  return immutable_property_alist_ != SCM_EOL;
-}
diff --git a/lily/grob-scheme.cc b/lily/grob-scheme.cc
deleted file mode 100644
index 53d2c608f4..0000000000
--- a/lily/grob-scheme.cc
+++ /dev/null
@@ -1,228 +0,0 @@
-#include "grob.hh"
-#include "warn.hh"
-#include "spanner.hh"
-#include "item.hh"
-#include "paper-def.hh"
-#include "system.hh"
-
-
-LY_DEFINE (ly_set_grob_property,"ly:set-grob-property!", 3, 0, 0,
-  (SCM grob, SCM sym, SCM val),
-  "Set @var{sym} in grob @var{grob} to value @var{val}")
-{
-  Grob * sc = unsmob_grob (grob);
-  SCM_ASSERT_TYPE (sc, grob, SCM_ARG1, __FUNCTION__, "grob");
-  SCM_ASSERT_TYPE (gh_symbol_p (sym), sym, SCM_ARG2, __FUNCTION__, "symbol");  
-
-  if (!type_check_assignment (sym, val, ly_symbol2scm ("backend-type?")))
-    error ("typecheck failed");
-      
-  sc->internal_set_grob_property (sym, val);
-  return SCM_UNSPECIFIED;
-}
-
-LY_DEFINE (ly_get_grob_property,
-	  "ly:get-grob-property", 2, 0, 0, (SCM grob, SCM sym),
-	  "Get the value of a value in grob @var{g} of property @var{sym}. It\n"
-"will return @code{'()} (end-of-list) if @var{g} doesn't have @var{sym} set.\n"
-"\n"
-"Grob properties are stored as GUILE association lists, with symbols as\n"
-"keys. All lookup functions identify undefined properties with\n"
-"end-of-list (i.e. @code{'()} in Scheme or @code{SCM_EOL} in C)\n"
-"\n"
-"Properties are stored in two ways:\n"
-"@itemize @bullet\n"
-"@item mutable properties.\n"
-"Grob properties that change from object to object. The storage of\n"
-"these are private to a grob. For example pointers to other grobs are\n"
-"always stored in the mutable properties.\n"
-"\n"
-"@item immutable properties.\n"
-"Grob properties that are shared across different grobs of the same\n"
-"type. The storage is shared, and hence it is read-only. Typically, this\n"
-"is used to store function callbacks, and default settings. They are\n"
-"initially read from @file{scm/grob-description.scm}.\n"
-"@end itemize\n"
-"\n")
-{
-  Grob * sc = unsmob_grob (grob);
-  SCM_ASSERT_TYPE (sc, grob, SCM_ARG1, __FUNCTION__, "grob");
-  SCM_ASSERT_TYPE (gh_symbol_p (sym), sym, SCM_ARG2, __FUNCTION__, "symbol");  
-
-  return sc->internal_get_grob_property (sym);
-}
-
-LY_DEFINE (spanner_get_bound, "ly:get-spanner-bound", 2 , 0, 0,
-	   (SCM slur, SCM dir),
-	   "Get one of the bounds of @var{spanner}. @var{dir} is @code{-1} "
-	   "for left, and @code{1} for right.")
-{
-  Spanner * sl = dynamic_cast<Spanner*> (unsmob_grob (slur));
-  SCM_ASSERT_TYPE (sl, slur, SCM_ARG1, __FUNCTION__, "spanner grob");
-  SCM_ASSERT_TYPE (is_direction (dir), slur, SCM_ARG2, __FUNCTION__, "dir");
-  return sl->get_bound (to_dir (dir))->self_scm ();
-}
-
-/* TODO: make difference between scaled and unscalead variable in
-   calling (i.e different funcs.) */
-LY_DEFINE (ly_get_paper_var,"ly:get-paper-variable", 2, 0, 0,
-  (SCM grob, SCM sym),
-  "Get a variable from the \\paper block.")
-{
-  Grob * sc = unsmob_grob (grob);
-  SCM_ASSERT_TYPE (sc, grob, SCM_ARG1, __FUNCTION__, "grob");
-  SCM_ASSERT_TYPE (gh_symbol_p (sym), sym, SCM_ARG2, __FUNCTION__, "symbol");  
-
-  return sc->get_paper () ->lookup_variable (sym);
-}
-
-/* TODO: make difference between scaled and unscalead variable in
-   calling (i.e different funcs.) */
-LY_DEFINE (ly_grob_paper,"ly:grob-paper", 1, 0, 0,
-  (SCM grob),
-  "Get \\paper definition from a grob.")
-{
-  Grob * sc = unsmob_grob (grob);
-  SCM_ASSERT_TYPE (sc, grob, SCM_ARG1, __FUNCTION__, "grob");
-
-  return sc->get_paper ()->self_scm ();
-}
-
-
-
-
-LY_DEFINE (ly_get_extent, "ly:get-extent", 3, 0, 0,
-	   (SCM grob, SCM refp, SCM axis),
-	   "Get the extent in @var{axis} direction of @var{grob} relative to "
-	   "the grob @var{refp}")
-{
-  Grob * sc = unsmob_grob (grob);
-  Grob * ref = unsmob_grob (refp);
-  SCM_ASSERT_TYPE (sc, grob, SCM_ARG1, __FUNCTION__, "grob");
-  SCM_ASSERT_TYPE (ref, refp, SCM_ARG2, __FUNCTION__, "grob");
-  
-  SCM_ASSERT_TYPE (is_axis (axis), axis, SCM_ARG3, __FUNCTION__, "axis");
-
-  return ly_interval2scm ( sc->extent (ref, Axis (gh_scm2int (axis))));
-}
-
-LY_DEFINE (ly_get_parent, "ly:get-parent", 2, 0, 0, (SCM grob, SCM axis),
-	   "Get the parent of @var{grob}.  @var{axis} is 0 for the X-axis, "
-	   "1 for the Y-axis.")
-{
-  Grob * sc = unsmob_grob (grob);
-  SCM_ASSERT_TYPE (sc, grob, SCM_ARG1, __FUNCTION__, "grob");
-  SCM_ASSERT_TYPE (is_axis (axis), axis, SCM_ARG2, __FUNCTION__, "axis");
-
-  Grob * par = sc->get_parent (Axis (gh_scm2int (axis)));
-  return par ? par->self_scm () : SCM_EOL;
-}
-
-LY_DEFINE (ly_get_system,
-	   "ly:get-system",
-	   1, 0, 0, (SCM grob),
-	   "Return the System Grob of @var{grob}.")
-{
-  Grob *me = unsmob_grob (grob);
-  SCM_ASSERT_TYPE (me, grob, SCM_ARG1, __FUNCTION__, "grob");
-  
-  if (System *g = me->get_system ())
-    return g->self_scm ();
-    
-  return SCM_EOL;
-}
-
-LY_DEFINE (ly_get_original,
-	   "ly:get-original",
-	   1, 0, 0, (SCM grob),
-	   "Return the original Grob of @var{grob}")
-{
-  Grob *me = unsmob_grob (grob);
-  SCM_ASSERT_TYPE (me, grob, SCM_ARG1, __FUNCTION__, "grob");
-  return me->original_ ? me->original_->self_scm () : me->self_scm ();
-}
-
-
-/* ly prefix? spanner in name? */
-/* TODO: maybe we should return a vector -- random access is more
-  logical for this list? */
-
-LY_DEFINE (get_broken_into,
-	  "ly:get-broken-into", 1, 0, 0, (SCM spanner),
-	   "Return broken-into list for @var{spanner}.")
-{
-  ///  Spanner *me = unsmob_spanner (spanner);
-  Spanner *me = dynamic_cast<Spanner*> (unsmob_grob (spanner));
-  SCM_ASSERT_TYPE (me, spanner, SCM_ARG1, __FUNCTION__, "spanner");
-
-  SCM s = SCM_EOL;
-  for (int i = me->broken_intos_.size (); i; i--)
-    s = gh_cons (me->broken_intos_[i-1]->self_scm (), s);
-  return s;
-}
-
-
-LY_DEFINE (ly_grob_suicide,
-	  "ly:grob-suicide", 1, 0, 0, (SCM g),
-	   "Kill @var{g}.")
-{
-  Grob *me = unsmob_grob (g);
-  SCM_ASSERT_TYPE (me, g, SCM_ARG1, __FUNCTION__, "grob");
-
-  me->suicide ();
-  return SCM_UNDEFINED;
-}
-
-
-
-LY_DEFINE (ly_grob_translate_axis_x,
-	  "ly:grob-translate-axis!", 3, 0, 0,
-	   (SCM g, SCM d, SCM a),
-	   "Translate @var{g} on axis @var{a} over distance @var{d}.")
-{
-  Grob *me = unsmob_grob (g);
-  SCM_ASSERT_TYPE (me, g, SCM_ARG1, __FUNCTION__, "grob");
-  SCM_ASSERT_TYPE (gh_number_p (d), d, SCM_ARG2, __FUNCTION__, "dimension");
-  SCM_ASSERT_TYPE (is_axis (a), a, SCM_ARG3, __FUNCTION__, "axis");
-
-  me->translate_axis (gh_scm2double (d),
-		      Axis (gh_scm2int (a)));
-  return SCM_UNDEFINED;
-}
-
-
-
-LY_DEFINE (ly_spanner_p,
-	  "ly:spanner?", 1, 0, 0,
-	   (SCM g),
-	   "Is  @var{g} a spanner object?")
-{
-  Grob *me = unsmob_grob (g);
-  bool b = dynamic_cast<Spanner*> (me);
-
-  return gh_bool2scm (b);
-}
-
-LY_DEFINE (ly_item_p,
-	  "ly:item?", 1, 0, 0,
-	   (SCM g),
-	   "Is  @var{g} a item object?")
-{
-  Grob *me = unsmob_grob (g);
-  bool b = dynamic_cast<Item*> (me);
-
-  return gh_bool2scm (b);
-}
-
-
-LY_DEFINE (ly_item_break_dir,
-	  "ly:item-break-dir", 1, 0, 0,
-	   (SCM it),
-	   "The break status dir of  @var{it}.")
-{
-  Item * me = dynamic_cast<Item*> ( unsmob_grob (it));
-  SCM_ASSERT_TYPE (me, it, SCM_ARG1, __FUNCTION__, "Item");
-  
-   return gh_int2scm (me->break_status_dir ());
-}
-
diff --git a/lily/grob.cc b/lily/grob.cc
deleted file mode 100644
index 59c4c4c997..0000000000
--- a/lily/grob.cc
+++ /dev/null
@@ -1,857 +0,0 @@
-/*
-  grob.cc -- implement Grob
-
-  source file of the GNU LilyPond music typesetter
-
-  (c) 1997--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-*/
-
-
-#include <string.h>
-#include <math.h>
-
-#include "main.hh"
-#include "input-smob.hh"
-#include "warn.hh"
-#include "group-interface.hh"
-#include "misc.hh"
-#include "paper-score.hh"
-#include "molecule.hh"
-#include "grob.hh"
-#include "warn.hh"
-#include "spanner.hh"
-#include "system.hh"
-#include "item.hh"
-#include "molecule.hh"
-#include "misc.hh"
-#include "music.hh"
-#include "item.hh"
-
-#include "ly-smobs.icc"
-
-/*
-TODO:
-
-remove dynamic_cast<Spanner,Item> and put this code into respective
-  subclass.
-*/
-
-//#define HASHING_FOR_MUTABLE_PROPS
-#define HASH_SIZE 3
-#define INFINITY_MSG "Infinity or NaN encountered"
-
-Grob::Grob (SCM basicprops)
-{
-  /*
-    fixme: default should be no callback.
-   */
-  self_scm_ = SCM_EOL;
-  pscore_=0;
-  status_ = 0;
-  original_ = 0;
-  immutable_property_alist_ =  basicprops;
-  mutable_property_alist_ = SCM_EOL;
-
-  /*
-    We do smobify_self() as the first step. Since the object lives on
-    the heap, none of its SCM variables are protected from GC. After
-    smobify_self(), they are.
-   */
-  smobify_self ();
-
-
-#ifdef HASHING_FOR_MUTABLE_PROPS
-  mutable_property_alist_ = scm_c_make_hash_table (HASH_SIZE);
-#endif
-  
-  SCM meta = get_grob_property ("meta");
-  if (gh_pair_p (meta))
-    {
-      SCM ifs = scm_assoc (ly_symbol2scm ("interfaces"), meta);
-
-      /*
-	Switch off interface checks for the moment.
-       */
-      bool itc = internal_type_checking_global_b;
-      internal_type_checking_global_b = false;
-      internal_set_grob_property (ly_symbol2scm ("interfaces"), gh_cdr(ifs));
-      internal_type_checking_global_b = itc;
-    }
-  
-  /*
-    TODO:
-
-    destill this into a function, so we can re-init the immutable
-    properties with a new BASICPROPS value after creation. Convenient
-    eg. when using \override with StaffSymbol.  */
-  
-  char const*onames[] = {"X-offset-callbacks", "Y-offset-callbacks"};
-  char const*enames[] = {"X-extent-callback", "Y-extent-callback"};
-  
-  for (int a = X_AXIS; a <= Y_AXIS; a++)
-    {
-      SCM l = get_grob_property (onames[a]);
-
-      if (scm_ilength (l) >=0)
-	{
-	  dim_cache_[a].offset_callbacks_ = l;
-	  dim_cache_[a].offsets_left_ = scm_ilength (l);
-	}
-      else
-	{
-	  programming_error ("[XY]-offset-callbacks must be a list");
-	}
-
-      SCM cb = get_grob_property (enames[a]);
-
-      /*
-	Should change default to be empty? 
-      */
-      if (cb != SCM_BOOL_F
-	  && !gh_procedure_p (cb) && !gh_pair_p (cb)
-	  && gh_procedure_p (get_grob_property ("print-function"))
-	  )
-	cb = molecule_extent_proc;
-    
-      dim_cache_[a].dimension_ = cb;
-    }
-
-}
-
-Grob::Grob (Grob const&s)
-   : dim_cache_ (s.dim_cache_)
-{
-  original_ = (Grob*) &s;
-  self_scm_ = SCM_EOL;
-
-  immutable_property_alist_ = s.immutable_property_alist_;
-  mutable_property_alist_ = SCM_EOL;
-  
-  /*
-    No properties are copied. That is the job of handle_broken_dependencies.
-   */
-  
-  status_ = s.status_;
-  pscore_ = 0;
-
-  smobify_self ();
-
-#ifdef HASHING_FOR_MUTABLE_PROPS
-  mutable_property_alist_ = scm_c_make_hash_table (HASH_SIZE);
-#endif
-}
-
-Grob::~Grob ()
-{
-  /*
-    do nothing scm-ish and no unprotecting here.
-   */
-}
-
-
-MAKE_SCHEME_CALLBACK (Grob,molecule_extent,2);
-SCM
-Grob::molecule_extent (SCM element_smob, SCM scm_axis)
-{
-  Grob *s = unsmob_grob (element_smob);
-  Axis a = (Axis) gh_scm2int (scm_axis);
-
-  Molecule *m = s->get_molecule ();
-  Interval e ;
-  if (m)
-    e = m->extent (a);
-  return ly_interval2scm (e);
-}
-
-MAKE_SCHEME_CALLBACK (Grob,preset_extent,2);
-SCM
-Grob::preset_extent (SCM element_smob, SCM scm_axis)
-{
-  Grob *s = unsmob_grob (element_smob);
-  Axis a = (Axis) gh_scm2int (scm_axis);
-
-  SCM ext = s->get_grob_property ((a == X_AXIS)
-				 ? "X-extent"
-				 : "Y-extent");
-
-  if (is_number_pair (ext))
-    return ext;
-  else
-    return ly_interval2scm (Interval());
-}
-
-
-
-Paper_def*
-Grob::get_paper ()  const
-{
- return pscore_ ? pscore_->paper_ : 0;
-}
-
-void
-Grob::calculate_dependencies (int final, int busy, SCM funcname)
-{
-  if (status_ >= final)
-    return;
-
-  if (status_== busy)
-    {
-      programming_error ("Element is busy, come back later");
-      return;
-    }
-  
-  status_= busy;
-
-  for (SCM d = get_grob_property ("dependencies"); gh_pair_p (d);
-       d = ly_cdr (d))
-    {
-      unsmob_grob (ly_car (d))
-	->calculate_dependencies (final, busy, funcname);
-    }
-
-  
-  SCM proc = internal_get_grob_property (funcname);
-  if (gh_procedure_p (proc))
-    gh_call1 (proc, this->self_scm ());
- 
-  status_= final;
-}
-
-Molecule *
-Grob::get_molecule ()  const
-{
-  if (!live())
-    {
-      return 0;
-    }
-  
-  SCM mol = get_grob_property ("molecule");
-  if (unsmob_molecule (mol))
-    return unsmob_molecule (mol);
-
-  mol = get_uncached_molecule ();
-  
-  if (live ())
-    {
-      Grob *me = (Grob*)this;
-      me->set_grob_property ("molecule", mol);
-    }
-  
-  return unsmob_molecule (mol);  
-}
-
-SCM
-Grob::get_uncached_molecule ()const
-{
-  SCM proc = get_grob_property ("print-function");
-
-  SCM  mol = SCM_EOL;
-  if (gh_procedure_p (proc)) 
-    mol = gh_apply (proc, scm_list_n (this->self_scm (), SCM_UNDEFINED));
-  
-  Molecule *m = unsmob_molecule (mol);
-  
-  if (unsmob_molecule (mol))
-    {
-      SCM origin = ly_symbol2scm ("no-origin");
-      
-      if (store_locations_global_b)
-	{
-	  SCM cause = get_grob_property ("cause");
-	  if (Music*m = unsmob_music (cause))
-	    {
-	      SCM music_origin = m->get_mus_property ("origin");
-	      if (unsmob_input (music_origin))
-		origin = music_origin;
-	    }
-      }
-
-      // ugr.
-      
-      mol = Molecule (m->extent_box (),
-		      scm_list_n (origin, m->get_expr (), SCM_UNDEFINED)
-		      ). smobbed_copy ();
-
-      m = unsmob_molecule (mol);
-    }
-  
-  /*
-    transparent retains dimensions of element.
-   */
-  if (m && to_boolean (get_grob_property ("transparent")))
-    mol = Molecule (m->extent_box (), SCM_EOL).smobbed_copy ();
-
-  return mol;
-}
-
-/*
-  
-  VIRTUAL STUBS
-
- */
-void
-Grob::do_break_processing ()
-{
-}
-
-System *
-Grob::get_system () const
-{
-  return 0;
-}
-
-void
-Grob::add_dependency (Grob*e)
-{
-  if (e)
-    {
-      Pointer_group_interface::add_grob (this, ly_symbol2scm ("dependencies"),e);
-    }
-  else
-    programming_error ("Null dependency added");
-}
-
-
-void
-Grob::handle_broken_dependencies ()
-{
-  Spanner * sp = dynamic_cast<Spanner*> (this);
-  if (original_ && sp)
-    return;
-
-  if (sp)
-    {
-      /*
-	This is the original spanner. We use a special function
-	because some Spanners have enormously long lists in their
-	properties.
-       */
-      for (SCM s = mutable_property_alist_; gh_pair_p(s);
-	   s = gh_cdr(s))
-	{
-	  sp->substitute_one_mutable_property (gh_caar (s),
-					      gh_cdar (s));
-	}
-    }
-
-  System *system = get_system ();
-
-  if (live ()
-      && system && common_refpoint (system, X_AXIS) && common_refpoint (system, Y_AXIS))
-    {
-      substitute_mutable_properties (system ? system->self_scm () : SCM_UNDEFINED,
-				     mutable_property_alist_);
-    }
-  else if (dynamic_cast <System*> (this))
-    {
-      substitute_mutable_properties (SCM_UNDEFINED, mutable_property_alist_);
-    }
-  else
-    {
-      /*
-	This element is `invalid'; it has been removed from all
-	dependencies, so let's junk the element itself.
-
-	do not do this for System, since that would remove references
-	to the originals of score-grobs, which get then GC'd (a bad
-	thing.)
- 
-      */
-      suicide ();
-    }
-}
-
-/*
- Note that we still want references to this element to be
- rearranged, and not silently thrown away, so we keep pointers
- like {broken_into_{drul,array}, original}
-*/
-void
-Grob::suicide ()
-{
-  if (!live ())
-    return; 
-
-#if 0 // see below. 
-   String nm = name();
-#endif
-  
-  mutable_property_alist_ = SCM_EOL;
-  immutable_property_alist_ = SCM_EOL;
-
-  set_extent (SCM_EOL, Y_AXIS);
-  set_extent (SCM_EOL, X_AXIS);
-
-  for (int a= X_AXIS; a <= Y_AXIS; a++)
-    {
-      dim_cache_[a].offset_callbacks_ = SCM_EOL;
-      dim_cache_[a].offsets_left_ = 0;
-    }
-
-#if 0
-  /*
-    This can make debugging a little easier: we can still know what
-    the object used to be. However, since all its links have been
-    broken, it's usually more convenient to set a conditional
-    breakpoint in GDB before the property lists are wiped.
-   */
-  mutable_property_alist_ = scm_acons (ly_symbol2scm ("name"),
-				       scm_makfrom0str (nm.to_str0()),
-				       mutable_property_alist_
-				       );
-#endif
-}
-
-void
-Grob::handle_prebroken_dependencies ()
-{
-  /*
-    Don't do this in the derived method, since we want to keep access to
-    mutable_property_alist_ centralized.
-   */
-  if (original_)
-    {
-      Item * it = dynamic_cast<Item*> (this);
-      substitute_mutable_properties (gh_int2scm (it->break_status_dir ()),
-			       original_->mutable_property_alist_);
-    }
-}
-
-Grob*
-Grob::find_broken_piece (System*) const
-{
-  return 0;
-}
-
-/*
-  translate in one direction
-*/
-void
-Grob::translate_axis (Real y, Axis a)
-{
-  if (isinf (y) || isnan (y))
-    programming_error (_ (INFINITY_MSG));
-  else
-    {
-      dim_cache_[a].offset_ += y;
-    }
-}  
-
-
-/*
-  Find the offset relative to D.  If   D equals THIS, then it is 0.
-  Otherwise, it recursively defd as
-  
-  OFFSET_ + PARENT_L_->relative_coordinate (D)
-*/
-Real
-Grob::relative_coordinate (Grob const*refp, Axis a) const
-{
-  if (refp == this)
-    return 0.0;
-
-  /*
-    We catch PARENT_L_ == nil case with this, but we crash if we did
-    not ask for the absolute coordinate (ie. REFP == nil.)
-    
-   */
-  if (refp == dim_cache_[a].parent_)
-    return get_offset (a);
-  else
-    return get_offset (a) + dim_cache_[a].parent_->relative_coordinate (refp, a);
-}
-
-
-  
-/*
-  Invoke callbacks to get offset relative to parent.
-*/
-Real
-Grob::get_offset (Axis a) const
-{
-  Grob *me = (Grob*) this;
-  while (dim_cache_[a].offsets_left_)
-    {
-      int l = --me->dim_cache_[a].offsets_left_;
-      SCM cb = scm_list_ref (dim_cache_[a].offset_callbacks_,  gh_int2scm (l));
-      SCM retval = gh_call2 (cb, self_scm (), gh_int2scm (a));
-
-      Real r =  gh_scm2double (retval);
-      if (isinf (r) || isnan (r))
-	{
-	  programming_error (INFINITY_MSG);
-	  r = 0.0;
-	}
-      me->dim_cache_[a].offset_ +=r;
-    }
-  return dim_cache_[a].offset_;
-}
-
-
-MAKE_SCHEME_CALLBACK (Grob,point_dimension_callback,2);
-SCM
-Grob::point_dimension_callback (SCM , SCM)
-{
-  return ly_interval2scm (Interval (0,0));
-}
-
-bool
-Grob::is_empty (Axis a)const
-{
-  return ! (gh_pair_p (dim_cache_[a].dimension_) ||
-	    gh_procedure_p (dim_cache_[a].dimension_));
-}
-
-Interval
-Grob::extent (Grob * refp, Axis a) const
-{
-  Real x = relative_coordinate (refp, a);
-
-  
-  Dimension_cache * d = (Dimension_cache *)&dim_cache_[a];
-  Interval ext ;   
-  if (gh_pair_p (d->dimension_))
-    ;
-  else if (gh_procedure_p (d->dimension_))
-    {
-      /*
-	FIXME: add doco on types, and should typecheck maybe? 
-       */
-      d->dimension_= gh_call2 (d->dimension_, self_scm (), gh_int2scm (a));
-    }
-  else
-    return ext;
-
-  if (!gh_pair_p (d->dimension_))
-    return ext;
-  
-  ext = ly_scm2interval (d->dimension_);
-
-  SCM extra = get_grob_property (a == X_AXIS
-				? "extra-X-extent"
-				: "extra-Y-extent");
-
-  /*
-    signs ?
-   */
-  if (gh_pair_p (extra))
-    {
-      ext[BIGGER] +=  gh_scm2double (ly_cdr (extra));
-      ext[SMALLER] +=   gh_scm2double (ly_car (extra));
-    }
-  
-  extra = get_grob_property (a == X_AXIS
-				? "minimum-X-extent"
-				: "minimum-Y-extent");
-  if (gh_pair_p (extra))
-    {
-      ext.unite (Interval (gh_scm2double (ly_car (extra)),
-			   gh_scm2double (ly_cdr (extra))));
-    }
-
-  ext.translate (x);
-  
-  return ext;
-}
-
-/*
-  Find the group-element which has both #this# and #s#
-*/
-Grob * 
-Grob::common_refpoint (Grob const* s, Axis a) const
-{
-  /*
-    I don't like the quadratic aspect of this code, but I see no other
-    way. The largest chain of parents might be 10 high or so, so
-    it shouldn't be a real issue. */
-  for (Grob const *c = this; c; c = c->dim_cache_[a].parent_)
-    for (Grob const * d = s; d; d = d->dim_cache_[a].parent_)
-      if (d == c)
-	return (Grob*)d;
-
-  return 0;
-}
-
-
-Grob *
-common_refpoint_of_list (SCM elist, Grob *common, Axis a) 
-{
-  for (; gh_pair_p (elist); elist = ly_cdr (elist))
-    {
-      Grob * s = unsmob_grob (ly_car (elist));
-      if (!s)
-	continue;
-      if (common)
-	common = common->common_refpoint (s, a);
-      else
-	common = s;
-    }
-
-  return common;
-}
-
-
-
-Grob *
-common_refpoint_of_array (Link_array<Grob> const &arr, Grob *common, Axis a) 
-{
-  for (int i = arr.size() ; i--; )
-    {
-      Grob * s = arr[i];
-      if (!s)
-	continue;
-
-      if (common)
-	common = common->common_refpoint (s, a);
-      else
-	common = s;
-    }
-
-  return common;
-}
-
-String
-Grob::name () const
-{
-  SCM meta = get_grob_property ("meta");
-  SCM nm = scm_assoc (ly_symbol2scm ("name"), meta);
-  nm = (gh_pair_p (nm)) ? ly_cdr (nm) : SCM_EOL;
-  return  gh_symbol_p (nm) ? ly_symbol2string (nm) :  classname (this);  
-}
-
-void
-Grob::add_offset_callback (SCM cb, Axis a)
-{
-  if (!has_offset_callback_b (cb, a))
-  {
-    dim_cache_[a].offset_callbacks_ = gh_cons (cb, dim_cache_[a].offset_callbacks_);
-    dim_cache_[a].offsets_left_ ++;
-  }
-}
-
-bool
-Grob::has_extent_callback_b (SCM cb, Axis a)const
-{
-  return scm_equal_p (cb, dim_cache_[a].dimension_) == SCM_BOOL_T;
-}
-
-
-bool
-Grob::has_offset_callback_b (SCM cb, Axis a)const
-{
-  return scm_memq (cb, dim_cache_[a].offset_callbacks_) != SCM_BOOL_F;
-}
-
-void
-Grob::set_extent (SCM dc, Axis a)
-{
-  dim_cache_[a].dimension_ =dc;
-}
-
-void
-Grob::set_parent (Grob *g, Axis a)
-{
-  dim_cache_[a].parent_ = g;
-}
-
-MAKE_SCHEME_CALLBACK (Grob,fixup_refpoint,1);
-SCM
-Grob::fixup_refpoint (SCM smob)
-{
-  Grob *me = unsmob_grob (smob);
-  for (int a = X_AXIS; a < NO_AXES; a ++)
-    {
-      Axis ax = (Axis)a;
-      Grob * parent = me->get_parent (ax);
-
-      if (!parent)
-	continue;
-      
-      if (parent->get_system () != me->get_system () && me->get_system ())
-	{
-	  Grob * newparent = parent->find_broken_piece (me->get_system ());
-	  me->set_parent (newparent, ax);
-	}
-
-      if (Item * i  = dynamic_cast<Item*> (me))
-	{
-	  Item *parenti = dynamic_cast<Item*> (parent);
-
-	  if (parenti && i)
-	    {
-	      Direction  my_dir = i->break_status_dir () ;
-	      if (my_dir!= parenti->break_status_dir ())
-		{
-		  Item *newparent =  parenti->find_prebroken_piece (my_dir);
-		  me->set_parent (newparent, ax);
-		}
-	    }
-	}
-    }
-  return smob;
-}
-
-void
-Grob::warning (String s)const
-{
-  SCM cause = self_scm();
-  while (Grob * g = unsmob_grob (cause))
-    {
-      cause = g->get_grob_property ("cause");
-    }
-
-  if (Music *m = unsmob_music (cause))
-    {
-      m->origin()->warning (s);
-    }
-  else
-    ::warning (s);
-}
-
-void
-Grob::programming_error (String s)const
-{
-  s = "Programming error: "  + s;
-  warning (s);
-}
-
-
-/****************************************************
-  SMOB funcs
- ****************************************************/
-
-
-
-IMPLEMENT_SMOBS (Grob);
-IMPLEMENT_DEFAULT_EQUAL_P (Grob);
-
-SCM
-Grob::mark_smob (SCM ses)
-{
-  Grob * s = (Grob*) SCM_CELL_WORD_1 (ses);
-  scm_gc_mark (s->immutable_property_alist_);
-
-  for (int a =0 ; a < 2; a++)
-    {
-      scm_gc_mark (s->dim_cache_[a].offset_callbacks_);
-      scm_gc_mark (s->dim_cache_[a].dimension_);
-      
-      /*
-	don't mark the parents. The pointers in the mutable property
-	list form two tree like structures (one for X relations, one
-	for Y relations). Marking these can be done in limited stack
-	space.  If we add the parents, we will jump between X and Y in
-	an erratic manner, leading to much more recursion depth (and
-	core dumps if we link to pthreads.)
-       */
-    }
-  
-  if (s->original_)
-    scm_gc_mark (s->original_->self_scm ());
-
-  s->do_derived_mark ();  
-  return s->mutable_property_alist_;
-}
-
-int
-Grob::print_smob (SCM s, SCM port, scm_print_state *)
-{
-  Grob *sc = (Grob *) ly_cdr (s);
-     
-  scm_puts ("#<Grob ", port);
-  scm_puts ((char *)sc->name ().to_str0 (), port);
-
-  /*
-    don't try to print properties, that is too much hassle.
-   */
-  scm_puts (" >", port);
-  return 1;
-}
-
-SCM
-Grob::do_derived_mark () const
-{
-  return SCM_EOL;
-}
-
-
-
-void
-Grob::discretionary_processing ()
-{
-}
-
-bool
-Grob::internal_has_interface (SCM k)
-{
-  SCM ifs = get_grob_property ("interfaces");
-
-  return scm_memq (k, ifs) != SCM_BOOL_F;
-}
-
-
-/** Return Array of Grobs in SCM list L */
-Link_array<Grob>
-ly_scm2grobs (SCM l)
-{
-  Link_array<Grob> arr;
-
-  for (SCM s = l; gh_pair_p (s); s = gh_cdr (s))
-    {
-      SCM e = gh_car (s);
-      arr.push (unsmob_grob (e));
-    }
-
-  arr.reverse ();
-  return arr;
-}
-
-/** Return SCM list of Grob array A */
-SCM
-ly_grobs2scm (Link_array<Grob> a)
-{
-  SCM s = SCM_EOL;
-  for (int i = a.size (); i; i--)
-    s = gh_cons (a[i-1]->self_scm (), s);
-
-  return s;
-}
-
-
-IMPLEMENT_TYPE_P (Grob, "ly:grob?");
-
-ADD_INTERFACE (Grob, "grob-interface",
-  "In music notation, lots of symbols are related in some way.  You can\n"
-"think of music notation as a graph where nodes are formed by the\n"
-"symbols, and the arcs by their relations. A grob is a node in that\n"
-"graph.  The directed edges in the graph are formed by references to\n"
-"other grobs (i.e. pointers).  This big graph of grobs specifies the\n"
-"notation problem. The solution of this problem is a description of the\n"
-"printout in closed form, i.e. a list of values.  These values are\n"
-"Molecules.\n"
-"\n"
-"All grobs have an X and Y-position on the page.  These X and Y positions\n"
-"are stored in a relative format, so they can easily be combined by\n"
-"stacking them, hanging one grob to the side of another, and coupling\n"
-"them into a grouping-grob.\n"
-"\n"
-"Each grob has a reference point (a.k.a.  parent): the position of a grob\n"
-"is stored relative to that reference point. For example the X-reference\n"
-"point of a staccato dot usually is the note head that it applies\n"
-"to. When the note head is moved, the staccato dot moves along\n"
-"automatically.\n"
-"\n"
-"A grob is often associated with a symbol, but some grobs do not print\n"
-"any symbols. They take care of grouping objects. For example, there is a\n"
-"separate grob that stacks staves vertically. The @ref{NoteCollision}\n"
-"is also an abstract grob: it only moves around chords, but doesn't print\n"
-"anything.\n"
-,
-  "X-offset-callbacks Y-offset-callbacks X-extent-callback molecule cause "
-"Y-extent-callback print-function extra-offset spacing-procedure "
-"staff-symbol interfaces dependencies X-extent Y-extent extra-X-extent "
-"meta layer before-line-breaking-callback "
-"after-line-breaking-callback extra-Y-extent minimum-X-extent "
-"minimum-Y-extent transparent");
-
-
diff --git a/lily/group-interface.cc b/lily/group-interface.cc
deleted file mode 100644
index a62dde9a9c..0000000000
--- a/lily/group-interface.cc
+++ /dev/null
@@ -1,36 +0,0 @@
-/*   
-  group-interface.cc --  implement Group_interface
-  
-  source file of the GNU LilyPond music typesetter
-  
-  (c) 1999--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-  
- */
-#include "group-interface.hh"
-#include "grob.hh"
-
-void
-Group_interface::add_thing (Grob*me, SCM sym, SCM thing)
-{
-  me->add_to_list_property (sym, thing);
-}
-
-
-void
-Group_interface::add_thing (Grob*me, String name, SCM thing)
-{
-  add_thing (me, ly_symbol2scm (name.to_str0 ()), thing);
-}
-
-int
-Group_interface::count (Grob *me, String name)
-{
-  return scm_ilength (me->get_grob_property (name.to_str0 ()));
-}
-
-
-void
-Pointer_group_interface::add_grob (Grob*me, SCM name, Grob*p) 
-{
-  Group_interface::add_thing (me, name, p->self_scm ());
-}
diff --git a/lily/hairpin.cc b/lily/hairpin.cc
deleted file mode 100644
index 5e96a3854f..0000000000
--- a/lily/hairpin.cc
+++ /dev/null
@@ -1,140 +0,0 @@
-/*
-  hairpin.cc -- implement Hairpin
-
-  source file of the GNU LilyPond music typesetter
-
-  (c) 1997--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-*/
-
-#include "staff-symbol-referencer.hh"
-#include "molecule.hh"
-#include "line-interface.hh"
-#include "hairpin.hh"
-#include "spanner.hh"
-#include "font-interface.hh"
-#include "dimensions.hh"
-#include "paper-def.hh"
-#include "warn.hh"
-#include "paper-column.hh"
-#include "lookup.hh"
-
-MAKE_SCHEME_CALLBACK (Hairpin, print, 1);
-
-SCM
-Hairpin::print (SCM smob) 
-{
-  Grob *me= unsmob_grob (smob);
-  Spanner *spanner = dynamic_cast<Spanner*> (me);
-
-  SCM s = me->get_grob_property ("grow-direction");
-  if (!is_direction (s))
-    {
-      me->suicide ();
-      return SCM_EOL;
-    }
-  
-  Direction grow_dir = to_dir (s);
-
-
-  /* Ugh, must be same as Text_spanner::print.  */
-
-  /*
-    Ugh. property name is not general.
-   */
-  Real padding = gh_scm2double (me->get_grob_property ("if-text-padding"));
- 
-  Drul_array<bool> broken;
-  Drul_array<Item*> bounds ;
-  Direction d = LEFT;
-  do
-    {
-      bounds[d] =spanner->get_bound (d);
-      broken[d] = bounds[d]->break_status_dir () != CENTER;
-    }
-  while (flip (&d) != LEFT);
-
-  Grob *common = bounds[LEFT]->common_refpoint (bounds[RIGHT], X_AXIS);
-  Drul_array<Real> x_points ;
-  
-  do
-    {
-      Item *b = bounds[d];
-      x_points[d]  = b->relative_coordinate (common, X_AXIS);
-      if (broken [d])
-	{
-	  if (d == LEFT)
-	    x_points[d] = b->extent (common,X_AXIS)[RIGHT] ;
-	}
-      else
-	{
-	  if (dynamic_cast<Paper_column*> (b))
-	    {
-	      /*
-		If we're hung on a paper column, that means we're not
-		adjacent to a text-dynamic, and we may move closer. We
-		make the padding a little smaller, here.
-	      */
-	      Interval e =b->extent (common, X_AXIS);
-	      if (e.is_empty ())
-		e = Interval (0,0) + b->relative_coordinate (common, X_AXIS);
-	      
-	      x_points[d] = e.center () - d  * padding /3; // ugh.
-	    }
-	  else
-	    {
-	      Interval e =b->extent (common, X_AXIS);
-	      if (!e.is_empty ())
-		x_points[d] = e[-d] - d*padding;
-	    }
-	}
-    }
-  while (flip (&d) != LEFT);
-
-
-  Real width = x_points[RIGHT] - x_points[LEFT];
-
-  if (width < 0)
-    {
-      me->warning (_ ((grow_dir < 0) ? "decrescendo too small"
-		  : "crescendo too small"));
-      width = 0;
-    }
-
-  bool continued = broken[Direction (-grow_dir)];
-  Real height = robust_scm2double (me->get_grob_property ("height"), 0.2) *
-    Staff_symbol_referencer::staff_space (me);
-
-  Real starth, endh;
-  if (grow_dir < 0)
-    {
-      starth = height;
-      endh = continued ? height/2 : 0.0;
-    }
-  else
-    {
-      starth = continued ? height/2 : 0.0;
-      endh = height;
-    }
-
-  /*
-    should do relative to staff-symbol staff-space?
-   */
-
-  Molecule mol;
-  mol  = Line_interface::line (me, Offset (0, starth), Offset (width, endh));
-  mol.add_molecule (Line_interface::line (me,
-						 Offset (0, -starth),
-						 Offset (width, -endh)));
-
-  mol.translate_axis (x_points[LEFT]
-		      - bounds[LEFT]->relative_coordinate (common, X_AXIS),
-		      X_AXIS);
-  return mol.smobbed_copy ();
-}
-
-
-
-ADD_INTERFACE (Hairpin, "hairpin-interface",
-  "hairpin crescendo.",
-  "grow-direction height if-text-padding");
-
diff --git a/lily/hara-kiri-group-spanner.cc b/lily/hara-kiri-group-spanner.cc
deleted file mode 100644
index b5071cc815..0000000000
--- a/lily/hara-kiri-group-spanner.cc
+++ /dev/null
@@ -1,109 +0,0 @@
-/*
-  hara-kiri-vertical-group-spanner.cc -- implement Hara_kiri_group_spanner
-
-  source file of the GNU LilyPond music typesetter
-
-  (c) 1998--2004 Jan Nieuwenhuizen <janneke@gnu.org>
-  Han-Wen Nienhuys <hanwen@cs.uu.nl>
-*/
-
-#include "axis-group-interface.hh"
-#include "spanner.hh"
-#include "hara-kiri-group-spanner.hh"
-#include "warn.hh"
-#include "item.hh"
-
-
-MAKE_SCHEME_CALLBACK (Hara_kiri_group_spanner,y_extent,2);
-SCM
-Hara_kiri_group_spanner::y_extent (SCM element_smob, SCM scm_axis)
-{
-  Grob *me = unsmob_grob (element_smob);
-  Axis a = (Axis) gh_scm2int (scm_axis);
-
-  assert (a == Y_AXIS);
-  consider_suicide (me);
-  return  Axis_group_interface::group_extent_callback (me->self_scm (), scm_axis);
-}
-
-
-void
-Hara_kiri_group_spanner::consider_suicide (Grob*me)
-{
-  Spanner*sp = dynamic_cast<Spanner*> (me);
-  SCM worth = me->get_grob_property ("items-worth-living");
-  if (gh_pair_p (worth))
-    return ;
-
-  if (!to_boolean (me->get_grob_property ("remove-first"))
-      && broken_spanner_index (sp) == 0)
-    {
-      return ;
-    }
-  
-  Link_array<Grob> childs = Axis_group_interface::get_children (me);
-  for (int i = 0; i < childs.size (); i++)
-    childs[i]->suicide ();
-
-
-  /*
-    very appropriate name here :-)
-   */
-  me->suicide ();
-}
-
-
-
-/*
-  We can't rely on offsets and dimensions of elements in a hara-kiri
-  group. Use a callback to make sure that hara-kiri has been done
-  before asking for offsets.  */
-MAKE_SCHEME_CALLBACK (Hara_kiri_group_spanner,force_hara_kiri_callback,2);
-SCM
-Hara_kiri_group_spanner::force_hara_kiri_callback (SCM element_smob, SCM axis)
-{
-  Grob *me = unsmob_grob (element_smob);
-  Axis a = (Axis) gh_scm2int (axis);
-  assert (a == Y_AXIS);
-  consider_suicide (me);
-  return gh_double2scm (0.0);
-}
-
-
-MAKE_SCHEME_CALLBACK (Hara_kiri_group_spanner,force_hara_kiri_in_parent_callback,2);
-SCM
-Hara_kiri_group_spanner::force_hara_kiri_in_parent_callback (SCM element_smob, SCM axis)
-{
-  Grob *daughter = unsmob_grob (element_smob);
-  Axis a = (Axis) gh_scm2int (axis);
-  assert (a == Y_AXIS);
-  force_hara_kiri_callback (daughter->get_parent (a)->self_scm (), axis);
-  return gh_double2scm (0.0);
-}
-
-void
-Hara_kiri_group_spanner::add_element (Grob * me, Grob *e)
-{
-  //  e->add_offset_callback (force_hara_kiri_in_parent_callback, Y_AXIS);
-  Axis_group_interface::add_element (me, e);
-}
-
-
-
-
-
-void 
-Hara_kiri_group_spanner::add_interesting_item (Grob* me,Grob* n)
-{
-  me->add_dependency (n);
-  Pointer_group_interface::add_grob (me, ly_symbol2scm ("items-worth-living"),n);
-}
-
-
-ADD_INTERFACE (Hara_kiri_group_spanner,"hara-kiri-group-interface",
-  "  As Vertical_group_spanner, but keep track of interesting items.  If	\
-we don't contain any interesting items after linebreaking, then			\
-gracefully commit suicide.  Objective: don't disgrace Lily by			\
-typesetting empty lines in orchestral scores.",					\
-  "items-worth-living remove-first");
-
diff --git a/lily/horizontal-bracket-engraver.cc b/lily/horizontal-bracket-engraver.cc
deleted file mode 100644
index b4621cb61f..0000000000
--- a/lily/horizontal-bracket-engraver.cc
+++ /dev/null
@@ -1,121 +0,0 @@
-/*   
-  horizontal-bracket-engraver.cc -- implement
-    Horizontal_bracket_engraver
-
-source file of the GNU LilyPond music typesetter
-
-(c) 2002--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-
- */
-
-#include "engraver.hh"
-#include "side-position-interface.hh"
-#include "note-column.hh"
-#include "group-interface.hh"
-
-class Horizontal_bracket_engraver : public Engraver
-{
-public:
-  TRANSLATOR_DECLARATIONS(Horizontal_bracket_engraver);
-  Link_array<Spanner> bracket_stack_;
-  Link_array<Music> events_;
-  int pop_count_;
-  int push_count_;
-
-  virtual  bool try_music(Music*);
-  virtual void stop_translation_timestep ();
-  virtual  void process_music ();
-  virtual  void acknowledge_grob (Grob_info);
-};
-
-ENTER_DESCRIPTION(Horizontal_bracket_engraver,
-		  "Create horizontal brackets over notes for musical analysis purposes.",
-		  "HorizontalBracket",
-		  "note-grouping-event",
-		  "note-column-interface",
-		  "",
-		  "");
-
-Horizontal_bracket_engraver::Horizontal_bracket_engraver()
-{
-  pop_count_ = 0;
-  push_count_ = 0;
-}
-
-
-bool
-Horizontal_bracket_engraver::try_music (Music *m)
-{
-  if (m->is_mus_type ("note-grouping-event"))
-    {
-      Direction d = to_dir (m->get_mus_property ("span-direction"));
-      
-      if (d == STOP)
-	{
-	  pop_count_ ++;
-	  if (pop_count_ > bracket_stack_.size())
-	    m->origin()->warning (_("Don't have that many brackets."));
-	}
-      else
-	{
-	  push_count_++;
-	  events_.push (m);
-	}
-      
-      if (pop_count_ && push_count_)
-	m->origin()->warning (_("Conflicting note group events."));
-
-      return true;
-    }
-  return false;
-}
-
-void
-Horizontal_bracket_engraver::acknowledge_grob (Grob_info gi)
-{
-  if (Note_column::has_interface (gi.grob_))
-    {
-      for (int i = 0;  i < bracket_stack_.size(); i++)
-	{
-	  Side_position_interface::add_support (bracket_stack_[i], gi.grob_);
-	  Pointer_group_interface::add_grob (bracket_stack_[i],
-					     ly_symbol2scm ("columns"), gi.grob_);
-	  add_bound_item (bracket_stack_[i],
-					     gi.grob_);
-	}
-    }
-}
-
-void
-Horizontal_bracket_engraver::process_music ()
-{
-  for  (int k = 0; k < push_count_; k++)
-    {
-      Spanner * sp = make_spanner ("HorizontalBracket");
-
-      announce_grob (sp, events_[k]->self_scm());
-      for (int i = 0; i < bracket_stack_.size(); i++)
-	{
-	  /*
-	    sp is the smallest, it should be added to the bigger brackets.
-	   */
-	  Side_position_interface::add_support (bracket_stack_[i], sp);
-	}
-      bracket_stack_.push (sp);
-    }
-}
-
-
-void
-Horizontal_bracket_engraver::stop_translation_timestep ()
-{
-  for (int i = pop_count_; i--;)
-    {
-      if (bracket_stack_.size())
-	typeset_grob (bracket_stack_.pop());
-    }
-  pop_count_ = 0;
-  push_count_ = 0;
-}
-
-
diff --git a/lily/horizontal-bracket.cc b/lily/horizontal-bracket.cc
deleted file mode 100644
index 5c5039a5d1..0000000000
--- a/lily/horizontal-bracket.cc
+++ /dev/null
@@ -1,69 +0,0 @@
-/*   
-  horizontal-bracket.cc --  implement  Horizontal_bracket
-
-  source file of the GNU LilyPond music typesetter
-
-(c) 2002--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-
- */
-
-#include "side-position-interface.hh"
-#include "lookup.hh"
-#include "group-interface.hh"
-#include "directional-element-interface.hh"
-#include "paper-def.hh"
-#include "staff-symbol-referencer.hh"
-
-struct Horizontal_bracket
-{
-  DECLARE_SCHEME_CALLBACK (print, (SCM));
-  static bool has_interface (Grob*);
-};
-
-
-/*
-  TODO:
-
-  This doesn't look very elegant: should support winged edges.
-
-  Support texts on the brackets?
-
-*/
-
-MAKE_SCHEME_CALLBACK(Horizontal_bracket, print, 1);
-
-SCM
-Horizontal_bracket::print (SCM smob)
-{
-  Grob * me = unsmob_grob (smob);
-  Spanner *sp = dynamic_cast<Spanner*> (me);
-  Link_array<Grob> gs = Pointer_group_interface__extract_grobs (me,(Grob*)0, "columns");
-
-  if (!gs.size())
-    {
-      me->suicide();
-      return SCM_EOL;
-    }
-  Grob * cx = common_refpoint_of_array (gs, me, X_AXIS);
-  cx = cx->common_refpoint (sp->get_bound (LEFT), X_AXIS);
-  cx = cx->common_refpoint (sp->get_bound (RIGHT),X_AXIS);
-
-  Interval ext = gs.top()->extent (cx, X_AXIS);
-  ext.unite (gs[0]->extent (cx, X_AXIS));
-
-  Direction d = get_grob_direction (me);
-
-  Real thickness = Staff_symbol_referencer::line_thickness (me);
-  thickness *= robust_scm2double (me->get_grob_property ("thickness"), 1.0);
-  
-  Molecule b = Lookup::bracket (X_AXIS, ext, thickness, - d* 1.0, thickness/2); 
-  
-  b.translate_axis ( - sp->get_bound (LEFT)->relative_coordinate (cx, X_AXIS), X_AXIS);
-
-  return b.smobbed_copy();  
-}
-
-ADD_INTERFACE (Horizontal_bracket,"horizontal-bracket-interface",
-  "A horizontal bracket encompassing notes.",
-  "thickness columns direction");
-
diff --git a/lily/hyphen-engraver.cc b/lily/hyphen-engraver.cc
deleted file mode 100644
index 15f472cadc..0000000000
--- a/lily/hyphen-engraver.cc
+++ /dev/null
@@ -1,154 +0,0 @@
-/*
-  hyphen-engraver.cc -- implement Hyphen_engraver
-
-  source file of the GNU LilyPond music typesetter
-  
-  (c) 1999--2004 Glen Prideaux <glenprideaux@iname.com>,
-                  Han-Wen Nienhuys <hanwen@cs.uu.nl>,
-                  Jan Nieuwenhuizen <janneke@gnu.org>
-*/
-
-#include "warn.hh"
-#include "item.hh"
-#include "engraver.hh"
-#include "spanner.hh"
-
-class Hyphen_engraver : public Engraver
-{
-  Music* ev_;
-  Spanner* hyphen_;
-  Spanner * finished_hyphen_;  
-public:
-  TRANSLATOR_DECLARATIONS(Hyphen_engraver);
-
-protected:
-  virtual void acknowledge_grob (Grob_info);
-  virtual void finalize ();
-  virtual bool try_music (Music*);
-  virtual void stop_translation_timestep ();
-  virtual void process_music ();
-private:
-
-};
-
-
-
-
-Hyphen_engraver::Hyphen_engraver ()
-{
-  hyphen_ = 0;
-  finished_hyphen_ = 0;
-  ev_ = 0;
-}
-
-void
-Hyphen_engraver::acknowledge_grob (Grob_info i)
-{
-  Item * item =  dynamic_cast<Item*> (i.grob_);
-  // -> text_item
-  if (item && item->internal_has_interface (ly_symbol2scm ("lyric-syllable-interface")))
-    {
-      if (hyphen_)
-	hyphen_->set_bound (LEFT, item);
-
-      if (finished_hyphen_)
-	finished_hyphen_->set_bound (RIGHT, item);
-    }
-}
-
-
-bool
-Hyphen_engraver::try_music (Music* r)
-{
-  if (ev_)
-    return false;
-
-  ev_ = r;
-  return true;
-}
-
-void
-completize_hyphen (Spanner* sp)
-{
-  if (!sp->get_bound (RIGHT))
-    {
-      SCM heads = sp->get_grob_property ("heads");
-      if (gh_pair_p (heads))
-	{
-	  Item* it = dynamic_cast<Item*> (unsmob_grob (gh_car (heads)));
-	  if (it)
-	    sp->set_bound (RIGHT, it);
-	}
-    }
-}
-
-  
-
-void
-Hyphen_engraver::finalize ()
-{
-  if (hyphen_)
-    {
-      completize_hyphen (hyphen_);
-
-      if (!hyphen_->get_bound (RIGHT))
-	hyphen_->warning (_ ("unterminated hyphen"));
-      typeset_grob (hyphen_);
-      hyphen_ = 0;
-    }
-
-  if (finished_hyphen_)
-    {
-      completize_hyphen (finished_hyphen_);
-
-      if (!finished_hyphen_->get_bound (RIGHT))
-	  finished_hyphen_->warning (_("unterminated hyphen"));
-      typeset_grob (finished_hyphen_);
-      finished_hyphen_ =0;
-    }
-}
-
-void
-Hyphen_engraver::process_music ()
-{
-  if (ev_)
-    {
-      hyphen_ = make_spanner ("LyricHyphen");
-      announce_grob (hyphen_, ev_->self_scm());
-    }
-}
-
-
-void
-Hyphen_engraver::stop_translation_timestep ()
-{
-  if (finished_hyphen_ && finished_hyphen_->get_bound (RIGHT))
-    {
-      typeset_grob (finished_hyphen_);
-      finished_hyphen_ = 0;
-    }
-
-  if (finished_hyphen_ && hyphen_)
-    {
-      programming_error ("Haven't finished hyphen yet.");
-      typeset_grob (finished_hyphen_);
-      finished_hyphen_ =0;
-    }
-  
-  if (hyphen_)
-    finished_hyphen_ = hyphen_;
-  hyphen_ = 0;
-
-  ev_ = 0;
-}
-
-
-
-
-ENTER_DESCRIPTION(Hyphen_engraver,
-/* descr */       "Create lyric hyphens",
-/* creats*/       "LyricHyphen",
-/* accepts */     "hyphen-event",
-/* acks  */      "lyric-syllable-interface",
-/* reads */       "",
-/* write */       "");
diff --git a/lily/identifier-smob.cc b/lily/identifier-smob.cc
deleted file mode 100644
index 23ac02158b..0000000000
--- a/lily/identifier-smob.cc
+++ /dev/null
@@ -1,61 +0,0 @@
-/*   
-identifier-smob.cc -- implement glue to pass Scheme expressions off as
-identifiers.
-
-source file of the GNU LilyPond music typesetter
-
-(c) 2002--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-
-*/
-#include "identifier-smob.hh"
-/*
-  C&P from example/box.c
- */
-
-scm_t_bits package_tag;
-
-/* Print a textual represenation of the smob to a given port.  */
-static int
-print_box (SCM b, SCM port, scm_print_state *pstate)
-{
-  SCM value = SCM_CELL_OBJECT_1 (b);
-
-  scm_puts ("#<packaged object ", port);
-  scm_write (value, port);
-  scm_puts (">", port);
-
-  /* Non-zero means success.  */
-  return 1;
-}
-
-
-/* This defines the primitve `make-box', which returns a new smob of
-   type `box', initialized to `#f'.  */
-LY_DEFINE(package_identifier, "ly:export", 1,0,0, (SCM arg),
-	  "Export a Scheme object to the parser, so it is treated as an identifier.")
-{
-  /* This macro creates the new objects, stores the value `#f' into it
-     and returns it to the caller.  */
-  SCM_RETURN_NEWSMOB (package_tag, arg);
-}
-
-
-/* This is the primitive `box-ref' which returns the object stored in
-   the box.  */
-SCM
-unpack_identifier(SCM box)
-{
-  if (SCM_IMP(box) || SCM_CELL_TYPE(box) != package_tag)
-    return SCM_UNDEFINED;
-  
-  return SCM_CELL_OBJECT_1 (box);
-}
-
-static void
-init_box_type (void)
-{
-  package_tag = scm_make_smob_type ("box", 0);
-  scm_set_smob_mark (package_tag, scm_markcdr);
-  scm_set_smob_print (package_tag, print_box);
-}
-ADD_SCM_INIT_FUNC(package, init_box_type); 
diff --git a/lily/includable-lexer.cc b/lily/includable-lexer.cc
deleted file mode 100644
index aab8fd9fcd..0000000000
--- a/lily/includable-lexer.cc
+++ /dev/null
@@ -1,166 +0,0 @@
-/*
-  includable-lexer.cc -- implement Includable_lexer
-
-  source file of the LilyPond music typesetter
-
-  (c) 1997--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-*/
-
-#include <sstream>
-#include "config.h"
-
-#include "includable-lexer.hh"
-#include "file-path.hh"
-#include "source-file.hh"
-#include "source.hh"
-#include "warn.hh"
-#include "main.hh"
-
-#ifndef YY_BUF_SIZE
-#define YY_BUF_SIZE 16384
-#endif
-
-#ifndef YY_START
-#define YY_START\
- ((yy_start - 1) / 2)
-#define YYSTATE YY_START
-#endif
-
-/* Flex >= 2.5.29 has include stack; but we don't use that yet.  */
-#ifndef HAVE_FLEXLEXER_YY_CURRENT_BUFFER
-#define yy_current_buffer \
-  (yy_buffer_stack != 0 ? yy_buffer_stack[yy_buffer_stack_top] : 0)
-#endif
-
-Includable_lexer::Includable_lexer ()
-{
-#ifdef HAVE_FLEXLEXER_YY_CURRENT_BUFFER
-  yy_current_buffer = 0;
-#endif
-  allow_includes_b_ = true;
-}
-
-/** set the  new input to s, remember old file.
-*/
-void
-Includable_lexer::new_input (String s, Sources  * global_sources)
-{
-  if (!allow_includes_b_)
-    {
-      LexerError (_ ("include files are not allowed").to_str0 ());
-      return;
-    }
-  
-  Source_file * sl = global_sources->get_file (s);
-  if (!sl)
-    {
-      String msg = _f ("can't find file: `%s'", s);
-      msg += "\n";
-      msg += _f ("(search path: `%s')", global_sources->path_C_->to_string ().to_str0 ());
-      msg += "\n";
-      LexerError (msg.to_str0 ());
-
-      return;
-    }
-  filename_strings_.push (sl->name_string ());
-
-  char_count_stack_.push (0);
-  if (yy_current_buffer)
-    state_stack_.push (yy_current_buffer);
-
-  if (verbose_global_b)
-    progress_indication (String ("[") + s);
-	
-  include_stack_.push (sl);
-
-  /*
-    ugh. We'd want to create a buffer from the bytes directly.
-
-    Whoops. The size argument to yy_create_buffer is not the
-    filelength but a BUFFERSIZE. Maybe this is why reading stdin fucks up.
-
-  */
-  yy_switch_to_buffer (yy_create_buffer (sl->get_istream (), YY_BUF_SIZE));
-}
-
-/*
-  Unused.
- */
-void
-Includable_lexer::new_input (String name, String data, Sources* sources)
-{
-  Source_file* file = new Source_file (name, data);
-  sources->add (file);
-  filename_strings_.push (name);
-
-  char_count_stack_.push (0);
-  if (yy_current_buffer)
-    state_stack_.push (yy_current_buffer);
-
-  if (verbose_global_b)
-    progress_indication (String ("[") + name);
-  include_stack_.push (file);
-
-  yy_switch_to_buffer (yy_create_buffer (file->get_istream (), YY_BUF_SIZE));
-}
-
-/** pop the inputstack.  conceptually this is a destructor, but it
-  does not destruct the Source_file that Includable_lexer::new_input creates.  */
-bool
-Includable_lexer::close_input ()
-{
-  include_stack_.pop ();
-  char_count_stack_.pop ();
-  if (verbose_global_b)
-    progress_indication ("]");
-  yy_delete_buffer (yy_current_buffer);
-#ifdef HAVE_FLEXLEXER_YY_CURRENT_BUFFER  
-  yy_current_buffer = 0;
-#endif  
-  if (state_stack_.is_empty ())
-    {
-#ifdef HAVE_FLEXLEXER_YY_CURRENT_BUFFER  
-      yy_current_buffer = 0;
-#endif  
-      return false;
-    }
-  else
-    {
-      yy_switch_to_buffer (state_stack_.pop ());
-      return true;
-    }
-}
-
-char const*
-Includable_lexer::here_str0 () const
-{
-  if (include_stack_.is_empty ())
-    return 0;
-  return include_stack_.top ()->to_str0 () + char_count_stack_.top ();
-}
-
-Includable_lexer::~Includable_lexer ()
-{
-  while (!include_stack_.is_empty ())
-    {
-      close_input ();
-    }
-}
-/**
-  Since we don't create the buffer state from the bytes directly, we
-  don't know about the location of the lexer. Add this as a
-  YY_USER_ACTION */
-void
-Includable_lexer::add_lexed_char (int count)
-{
-  char_count_stack_.top () += count;
-}
-
-Source_file*
-Includable_lexer::get_source_file () const
-{
-  if (include_stack_.is_empty ())
-    return 0;
-  else
-    return include_stack_.top ();
-}
diff --git a/lily/include/GNUmakefile b/lily/include/GNUmakefile
deleted file mode 100644
index ae2bfb62f3..0000000000
--- a/lily/include/GNUmakefile
+++ /dev/null
@@ -1,8 +0,0 @@
-# lily/include/Makefile
-
-depth = ../..
-STEPMAKE_TEMPLATES=c++
-
-include $(depth)/make/stepmake.make
-
-
diff --git a/lily/include/accidental-interface.hh b/lily/include/accidental-interface.hh
deleted file mode 100644
index b0cb49b5a5..0000000000
--- a/lily/include/accidental-interface.hh
+++ /dev/null
@@ -1,27 +0,0 @@
-/*   
-accidental-interface.hh -- declare  Accidental_interface
-
-source file of the GNU LilyPond music typesetter
-
-(c) 2002--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-
- */
-
-#ifndef ACCIDENTAL_INTERFACE_HH
-#define ACCIDENTAL_INTERFACE_HH
-
-#include "grob.hh"
-
-class Accidental_interface
-{
-public:
-  DECLARE_SCHEME_CALLBACK (print, (SCM));
-  DECLARE_SCHEME_CALLBACK (after_line_breaking, (SCM));  
-  static bool has_interface (Grob*);
-  
-  static String get_fontcharname(String style, int alteration);
-  static Array<Box> Accidental_interface::accurate_boxes (Grob *me,Grob**common);
-};
-
-
-#endif
diff --git a/lily/include/accidental-placement.hh b/lily/include/accidental-placement.hh
deleted file mode 100644
index 5cc9de0517..0000000000
--- a/lily/include/accidental-placement.hh
+++ /dev/null
@@ -1,32 +0,0 @@
-/*   
-accidental-placement.hh -- declare  Accidental_placement
-
-source file of the GNU LilyPond music typesetter
-
-(c) 2002--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-
- */
-
-#ifndef ACCIDENTAL_PLACEMENT_HH
-#define ACCIDENTAL_PLACEMENT_HH
-
-#include "grob.hh"
-
-class Accidental_placement
-{
-public:
-  DECLARE_SCHEME_CALLBACK (alignment_callback, (SCM element, SCM axis));
-  static void add_accidental (Grob *,Grob* );
-
-  static Interval get_relevant_accidental_extent (Grob *me,
-						  Item *item_col,
-						  Grob *acc);
-  static void split_accidentals (Grob * accs,
-			  Link_array<Grob> *break_reminder,
-			  Link_array<Grob> *real_acc);
-  
-  static SCM position_accidentals (Grob* );
-  static bool has_interface (Grob*);
-};
-#endif /* ACCIDENTAL_PLACEMENT_HH */
-
diff --git a/lily/include/afm.hh b/lily/include/afm.hh
deleted file mode 100644
index 1e9cf55509..0000000000
--- a/lily/include/afm.hh
+++ /dev/null
@@ -1,54 +0,0 @@
-
-/*   
-  afm.hh -- declare Adobe_font_metric
-  
-  source file of the GNU LilyPond music typesetter
-  
-  (c) 1998--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-  
- */
-
-#ifndef AFM_HH
-#define AFM_HH
-
-#include <map>
-
-#include "string.hh"
-#include "box.hh"
-#include "array.hh"
-#include "font-metric.hh"
-#include "parse-afm.hh"
-
-struct Adobe_font_metric : Font_metric
-{
-  AFM_Font_info * font_inf_;
-
-  virtual int name_to_index (String) const;
-  virtual int count () const;
-  virtual Box get_ascii_char (int) const;
-  virtual Box get_indexed_char (int) const;
-  virtual Offset get_indexed_wxwy (int) const;
-  
-  AFM_CharMetricInfo const *find_char_metric (String name) const;
-  AFM_CharMetricInfo const *find_ascii_metric (int) const;  
-
-  String to_string () const;
-  ~Adobe_font_metric ();
-  static SCM make_afm (AFM_Font_info*, unsigned);
-
-  unsigned int checksum_;
-protected:
-  Array<int> ascii_to_metric_idx_;
-  std::map<String,int> name_to_metric_dict_;
-
-  virtual Molecule find_by_name (String) const;
-
-  Adobe_font_metric (AFM_Font_info*);
-};
-
-SCM read_afm_file (String fn);
-Box afm_bbox_to_box (AFM_BBox bb);
-  
-
-#endif /* AFM_HH */
-
diff --git a/lily/include/align-interface.hh b/lily/include/align-interface.hh
deleted file mode 100644
index 05fe7e161b..0000000000
--- a/lily/include/align-interface.hh
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
-  align-interface.hh -- declare Align_interface
-  
-  source file of the GNU LilyPond music typesetter
-  
-  (c) 2000--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-  
- */
-
-#ifndef ALIGN_INTERFACE_HH
-#define ALIGN_INTERFACE_HH
-
-#include "axes.hh"
-#include "lily-proto.hh"
-#include "lily-guile.hh"
-
-struct Align_interface {
-  DECLARE_SCHEME_CALLBACK (alignment_callback, (SCM element, SCM axis));
-  DECLARE_SCHEME_CALLBACK (fixed_distance_alignment_callback, (SCM element, SCM axis));
-  static void align_to_fixed_distance (Grob*,Axis a);
-  static void align_elements_to_extents (Grob*,Axis a);
-  static void set_axis (Grob*,Axis);
-  static Axis axis (Grob*) ;
-  static void add_element (Grob*,Grob*, SCM callback);
-  static int get_count (Grob*,Grob*);
-
-  static bool has_interface (Grob*);
-};
-
-Grob *find_fixed_alignment_parent  (Grob *g);
-
-
-#endif /* ALIGN_INTERFACE_HH */
-
diff --git a/lily/include/all-font-metrics.hh b/lily/include/all-font-metrics.hh
deleted file mode 100644
index 7174d16dbb..0000000000
--- a/lily/include/all-font-metrics.hh
+++ /dev/null
@@ -1,38 +0,0 @@
-/*   
-  all-fonts.hh -- declare All_font_metrics
-  
-  source file of the GNU LilyPond music typesetter
-  
-  (c) 1998--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-  
- */
-
-#ifndef ALL_FONTS_HH
-#define ALL_FONTS_HH
-
-#include "file-path.hh"
-#include "lily-proto.hh"
-#include "font-metric.hh"
-
-/**
-   Interface to all .afm files living in the filesystem.
- */
-class All_font_metrics
-{
-  Scheme_hash_table *afm_p_dict_;
-  Scheme_hash_table *tfm_p_dict_;
-  File_path search_path_;
-public:
-  ~All_font_metrics ();  
-  Adobe_font_metric *find_afm (String name);
-  Tex_font_metric *find_tfm (String);
-  Font_metric *find_font (String name);  
-
-  
-  All_font_metrics (String search_path);
-  
-  SCM font_descriptions () const;
-};
-
-#endif /* ALL_FONTS_HH */
-
diff --git a/lily/include/ambitus.hh b/lily/include/ambitus.hh
deleted file mode 100644
index 2ebd67173d..0000000000
--- a/lily/include/ambitus.hh
+++ /dev/null
@@ -1,21 +0,0 @@
-/*
-  ambitus.hh
-
-  source file of the GNU LilyPond music typesetter
-
-  (c) 2000--2004 Juergen Reuter <reuter@ipd.uka.de>
-*/
-
-#ifndef AMBITUS_HH
-#define AMBITUS_HH
-
-#include "lily-guile.hh"
-
-struct Ambitus
-{
-  DECLARE_SCHEME_CALLBACK (print, (SCM smob));
-  static bool has_interface (Grob*);
-};
-
-#endif // AMBITUS_HH
-
diff --git a/lily/include/arpeggio.hh b/lily/include/arpeggio.hh
deleted file mode 100644
index f2a65a7725..0000000000
--- a/lily/include/arpeggio.hh
+++ /dev/null
@@ -1,25 +0,0 @@
-/*
-  arpegio.hh -- declare Arpeggio
-  
-  source file of the GNU LilyPond music typesetter
-
-  (c) 2000--2004 Jan Nieuwenhuizen <janneke@gnu.org>
-*/
-
-#ifndef ARPEGGIO_HH
-#define ARPEGGIO_HH
-
-#include "lily-guile.hh"
-#include "lily-proto.hh"
-
-class Arpeggio
-{
-public:
-  DECLARE_SCHEME_CALLBACK (print, (SCM));
-  DECLARE_SCHEME_CALLBACK (brew_chord_bracket, (SCM));
-  DECLARE_SCHEME_CALLBACK (width_callback, (SCM,SCM));
-  static bool has_interface (Grob*);
-};
-
-#endif /* ARPEGGIO_HH */
-
diff --git a/lily/include/audio-column.hh b/lily/include/audio-column.hh
deleted file mode 100644
index 18f51d5bfb..0000000000
--- a/lily/include/audio-column.hh
+++ /dev/null
@@ -1,38 +0,0 @@
-/*
-  audio-column.hh -- declare Audio_column
-
-  (c) 1997--2004 Jan Nieuwenhuizen <janneke@gnu.org>
- */
-
-#ifndef AUDIO_COLUMN_HH
-#define AUDIO_COLUMN_HH
-
-#include "flower-proto.hh"
-#include "lily-proto.hh"
-#include "moment.hh"
-#include "parray.hh"
-#include "audio-element.hh"
-
-/**
-    generic audio grouped vertically.
- */
-
-class Audio_column : public Audio_element  { 
-public:
-  Audio_column (Moment at_mom);
-
-  void add_audio_item (Audio_item* i);
-  Moment at_mom () const;
-  void print () const;
-
-  Link_array<Audio_item> audio_items_;
-  Performance * performance_;
-
-private:
-  Audio_column (Audio_column const&);
-
-  Moment at_mom_;
-};
-
-
-#endif // AUDIO_COLUMN_HH
diff --git a/lily/include/audio-element-info.hh b/lily/include/audio-element-info.hh
deleted file mode 100644
index 1d3479ecaa..0000000000
--- a/lily/include/audio-element-info.hh
+++ /dev/null
@@ -1,30 +0,0 @@
-/*   
-  audio-item-info.hh -- declare Audio_item_info
-  
-  source file of the GNU LilyPond music typesetter
-  
-  (c) 1999--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-  
- */
-
-#ifndef AUDIO_ITEM_INFO_HH
-#define AUDIO_ITEM_INFO_HH
-
-#include "lily-proto.hh"
-#include "parray.hh"
-
-/**
-  Data container for broadcasts 
-  */
-struct Audio_element_info {
-  Audio_element * elem_;
-  Music *event_;
-  Translator *  origin_trans_;
-  Link_array<Translator> origin_transes (Translator*) const;  
-
-  Audio_element_info (Audio_element*, Music*);
-  Audio_element_info ();
-};
-
-
-#endif
diff --git a/lily/include/audio-element.hh b/lily/include/audio-element.hh
deleted file mode 100644
index cfb392de1b..0000000000
--- a/lily/include/audio-element.hh
+++ /dev/null
@@ -1,30 +0,0 @@
-/*
-  audio-element.hh -- declare Audio_element
-
-  source file of the GNU LilyPond music typesetter
-
-  (c) 1997--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-*/
-
-
-#ifndef AUDIO_ELEMENT_HH
-#define AUDIO_ELEMENT_HH
-
- #include <typeinfo>
-#include "virtual-methods.hh"
-
-class Audio_element
-{
-public:
-  Audio_element ();
-  virtual ~Audio_element ();
-
-
-
-  // should we use a scm list?
-  bool grace_b_;
-  
-protected:
-};
-
-#endif // AUDIO_ELEMENT_HH
diff --git a/lily/include/audio-item.hh b/lily/include/audio-item.hh
deleted file mode 100644
index d0eb1fc3e6..0000000000
--- a/lily/include/audio-item.hh
+++ /dev/null
@@ -1,124 +0,0 @@
-/*
-  audio-item.hh -- declare Audio_items
-
-  (c) 1996--2004 Jan Nieuwenhuizen <janneke@gnu.org>
- */
-
-#ifndef AUDIO_ITEM_HH
-#define AUDIO_ITEM_HH
-
-#include <typeinfo>
-#include "lily-proto.hh"
-#include "string.hh"
-#include "audio-element.hh"
-
-#include "pitch.hh"
-#include "moment.hh"
-#include "drul-array.hh"
-
-/**
-   
-  Any piece of audio information.  We need virtual constructors, let's
-  try decentralised factory for specific audio implemenations.
- */
-class Audio_item : public Audio_element
-{
-public:
-  Audio_item ();
-
-  Audio_column* audio_column_;
-
-  
-private:
-  Audio_item (Audio_item const&);
-  Audio_item& operator= ( Audio_item const&);
-};
-
-class Audio_dynamic : public Audio_item
-{
-public:
-  Audio_dynamic (Real volume);
-
-  Real volume_;
-};
-
-class Audio_key : public Audio_item
-{
-public:
-  Audio_key (int acc, bool major);
-
-  int accidentals_;
-  bool major_;
-};
-
-class Audio_instrument : public Audio_item
-{
-public:
-  Audio_instrument (String instrument_string);
-
-  String str_;
-};
-                                      
-class Audio_note : public Audio_item
-{
-public:  
-  Audio_note (Pitch p, Moment m, int transposing_i = 0);
-
-  void tie_to (Audio_note*);
-
-  Pitch pitch_;
-  Moment length_mom_;
-  Moment delayed_mom_;
-  Moment delayed_until_mom_;
-  int transposing_;
-  Audio_note* tied_;
-};
-
-class Audio_piano_pedal : public Audio_item
-{
-public:
-  String type_string_;
-  Direction dir_;
-};
-
-class Audio_text : public Audio_item
-{
-public:
-  enum Type { 
-    TEXT = 1, COPYRIGHT, TRACK_NAME, INSTRUMENT_NAME, LYRIC, 
-    MARKER, CUE_POINT
-  };
-  
-  Audio_text (Audio_text::Type type, String text_string);
-
-  Type type_;
-  String text_string_;
-};
-
-class Audio_tempo : public Audio_item
-{
-public:
-  Audio_tempo (int per_minute_4_i);
-
-  int per_minute_4_;
-};
-
-class Audio_tie : public Audio_item
-{
-public:
-  Audio_tie ();
-  void set_note (Direction, Audio_note*);
-  Drul_array<Audio_note*> note_drul_;
-};
-
-class Audio_time_signature : public Audio_item
-{
-public:
-  Audio_time_signature (int beats, int one_beat);
-
-  int beats_;
-  int one_beat_;
-};
-
-#endif // AUDIO_ITEM_HH
-
diff --git a/lily/include/audio-staff.hh b/lily/include/audio-staff.hh
deleted file mode 100644
index 20c57ec9fa..0000000000
--- a/lily/include/audio-staff.hh
+++ /dev/null
@@ -1,22 +0,0 @@
-/*
-  audio-staff.hh -- declare Audio_staff
-
-  (c) 1996--2004 Jan Nieuwenhuizen <janneke@gnu.org>
- */
-
-#ifndef AUDIO_STAFF_HH
-#define AUDIO_STAFF_HH
-
-#include "parray.hh"
-#include "lily-proto.hh"
-#include "audio-element.hh"
-
-struct Audio_staff : public Audio_element {
-  void add_audio_item (Audio_item*  l);
-  void output (Midi_stream& midi_stream_r, int track_i);
-
-  Link_array<Audio_item> audio_items_;
-  int channel_;
-};
-
-#endif // AUDIO_STAFF_HH
diff --git a/lily/include/axis-group-interface.hh b/lily/include/axis-group-interface.hh
deleted file mode 100644
index 61239d372e..0000000000
--- a/lily/include/axis-group-interface.hh
+++ /dev/null
@@ -1,33 +0,0 @@
-/*   
-  axis-group-interface.hh -- declare Axis_group_interface
-  
-  source file of the GNU LilyPond music typesetter
-  
-  (c) 2000--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-  
- */
-
-#ifndef AXIS_GROUP_INTERFACE_HH
-#define AXIS_GROUP_INTERFACE_HH
-
-#include "group-interface.hh"
-
-/**
-
-*/
-struct Axis_group_interface 
-{
-  DECLARE_SCHEME_CALLBACK (group_extent_callback, (SCM smob, SCM axis));
-  static Interval relative_group_extent (Axis, Grob * common, SCM list);
-
-  static void add_element (Grob* me, Grob*);
-  static void set_axes (Grob*,Axis,Axis);
-  static bool axis_b (Grob*,Axis);
-  static Link_array<Grob> get_children (Grob*);
-  static bool has_interface (Grob*);
-  
-  
-};
-
-#endif /* AXIS_GROUP_INTERFACE_HH */
-
diff --git a/lily/include/bar-line.hh b/lily/include/bar-line.hh
deleted file mode 100644
index 60dcb51cd0..0000000000
--- a/lily/include/bar-line.hh
+++ /dev/null
@@ -1,28 +0,0 @@
-/*
-  bar.hh -- part of GNU LilyPond
-
-  (c) 1996--2004 Han-Wen Nienhuys
-*/
-
-#ifndef BAR_HH
-#define BAR_HH
-
-#include "lily-guile.hh"
-#include "lily-proto.hh"
-
-/**
-  A vertical bar.
- */
-class Bar_line
-{
-public:
-  static bool has_interface (Grob*);
-  
-  static Molecule compound_barline (Grob*, String, Real height) ;
-  static Molecule simple_barline (Grob*, Real wid, Real height) ;      
-  DECLARE_SCHEME_CALLBACK (get_staff_bar_size, (SCM ));
-  DECLARE_SCHEME_CALLBACK (print, (SCM ));
-  DECLARE_SCHEME_CALLBACK (before_line_breaking, (SCM ));
-};
-#endif // BAR_HH
-
diff --git a/lily/include/bar.hh b/lily/include/bar.hh
deleted file mode 100644
index 641ae51d1b..0000000000
--- a/lily/include/bar.hh
+++ /dev/null
@@ -1,28 +0,0 @@
-/*
-  bar.hh -- part of GNU LilyPond
-
-  (c) 1996--2004 Han-Wen Nienhuys
-*/
-
-#ifndef BAR_HH
-#define BAR_HH
-
-#include "lily-guile.hh"
-#include "lily-proto.hh"
-
-/**
-  A vertical bar.
- */
-class Bar
-{
-public:
-  static bool has_interface (Grob*);
-  
-  static Molecule compound_barline (Grob*, String, Real height) ;
-  static Molecule simple_barline (Grob*, Real wid, Real height) ;      
-  DECLARE_SCHEME_CALLBACK (get_staff_bar_size, (SCM ));
-  DECLARE_SCHEME_CALLBACK (print, (SCM ));
-  DECLARE_SCHEME_CALLBACK (before_line_breaking, (SCM ));
-};
-#endif // BAR_HH
-
diff --git a/lily/include/beam.hh b/lily/include/beam.hh
deleted file mode 100644
index 297fd9c1be..0000000000
--- a/lily/include/beam.hh
+++ /dev/null
@@ -1,80 +0,0 @@
-/*
-  beam.hh -- part of GNU LilyPond
-
-  source file of the LilyPond music typesetter
-
-  (c) 1996--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-  Jan Nieuwenhuizen <janneke@gnu.org>
-*/
-
-#ifndef BEAM_HH
-#define BEAM_HH
-
-#include "lily-proto.hh"
-#include "lily-guile.hh"
-#include "stem-info.hh"
-
-
-class Beam
-{
-public:
-  static int visible_stem_count (Grob*);
-  static Grob* first_visible_stem (Grob*);
-  static Grob* last_visible_stem (Grob*);
-  static bool has_interface (Grob*);
-  DECLARE_SCHEME_CALLBACK (rest_collision_callback, (SCM element, SCM axis));
-  Beam (SCM);
-  static void add_stem (Grob*,Grob*);
-  static bool knee_b (Grob*);
-  static void set_beaming (Grob*,Beaming_info_list *);
-  static void set_stemlens (Grob*);
-  static int get_beam_count (Grob*me);
-  static void position_beam (Grob* me);
-  static Real get_beam_translation (Grob*me);
-  static Real get_thickness (Grob*me);
-
-  static void connect_beams (Grob*me);
-  DECLARE_SCHEME_CALLBACK (space_function, (SCM, SCM));
-  DECLARE_SCHEME_CALLBACK (print, (SCM));
-  DECLARE_SCHEME_CALLBACK (before_line_breaking, (SCM));
-  DECLARE_SCHEME_CALLBACK (after_line_breaking, (SCM));
-  
-  /* position callbacks */
-  DECLARE_SCHEME_CALLBACK (least_squares, (SCM));
-  DECLARE_SCHEME_CALLBACK (check_concave, (SCM));
-  DECLARE_SCHEME_CALLBACK (slope_damping, (SCM));
-  DECLARE_SCHEME_CALLBACK (shift_region_to_valid, (SCM));  
-  DECLARE_SCHEME_CALLBACK (quanting, (SCM));
-  static Real score_slopes_dy (Real, Real, Real, Real, Real, bool);
-
-  static Real score_stem_lengths (Link_array<Grob> const &stems,
-				  Array<Stem_info> const &stem_infos,
-				  Array<Real> const &base_stem_ys,
-				  Array<Real> const &stem_xs,
-				  Real xl, Real xr, 
-				  bool knee, 
-				  Real yl, Real yr);
-  static Real score_forbidden_quants (Real, Real,
-				      Real, Real, Real, Real,
-				      int, Direction, Direction);
-  
-
-  static int get_direction_beam_count (Grob *me, Direction d);
-private:
-  static Direction get_default_dir (Grob*);
-  static void set_stem_directions (Grob*, Direction );
-  static void consider_auto_knees (Grob*);
-  static void set_stem_shorten (Grob*);
-  static Real calc_stem_y (Grob*, Grob* s, Grob**c,
-			   Real, Real,
-			   Drul_array<Real> pos, bool french);
-  static void set_stem_lengths (Grob*);
-  static int forced_stem_count (Grob*);
-};
-
-const int REGION_SIZE = 2;
-
-#define DEBUG_QUANTING 1
-
-#endif /* BEAM_HH */
-
diff --git a/lily/include/beaming.hh b/lily/include/beaming.hh
deleted file mode 100644
index c5c82d5ea4..0000000000
--- a/lily/include/beaming.hh
+++ /dev/null
@@ -1,42 +0,0 @@
-/*   
-  beaming.hh -- declare beaming.hh
-  
-  source file of the GNU LilyPond music typesetter
-  
-  (c) 1999--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-  
- */
-
-#ifndef BEAMING_HH
-#define BEAMING_HH
-
-#include "parray.hh"
-#include "drul-array.hh"
-#include "moment.hh"
-
-struct Beaming_info
-{
-  Moment start_mom_;
-  Drul_array<int> beams_i_drul_;
-
-  Beaming_info (Moment, int);
-  int count (Direction d);
-  Beaming_info ();
-};
-
-/*
-  Generate beaming given durations of notes. Beam uses this to
-  set_beaming () for each of its stems.
-*/
-struct Beaming_info_list
-{
-  Array<Beaming_info> infos_;
-
-  int beam_extend_count (Direction) const;
-  int best_splitpoint_index (Moment &beat_length,bool subdivide) const;
-  void beamify (Moment &beat_length,bool subdivide);
-  void add_stem (Moment d, int beams);
-};
-
-
-#endif /* BEAMING_HH */
diff --git a/lily/include/bezier-bow.hh b/lily/include/bezier-bow.hh
deleted file mode 100644
index 26d1cd85e8..0000000000
--- a/lily/include/bezier-bow.hh
+++ /dev/null
@@ -1,25 +0,0 @@
-/*   
-  bezier-bow.hh -- declare Bezier_bow
-  
-  source file of the GNU LilyPond music typesetter
-  
-  (c) 1999--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-  
- */
-
-#ifndef BEZIER_BOW_HH
-#define BEZIER_BOW_HH
-
-#include "bezier.hh"
-#include "lily-proto.hh"
-#include "lily-guile.hh"
-
-
-
-Bezier slur_shape (Real width, Real height_limit,
-		   Real height_proportion);
-Real slur_height (Real width, Real height_limit, Real height_proportion); 
-
-
-#endif /* BEZIER_BOW_HH */
-
diff --git a/lily/include/bezier.hh b/lily/include/bezier.hh
deleted file mode 100644
index 8ab5d48fc3..0000000000
--- a/lily/include/bezier.hh
+++ /dev/null
@@ -1,54 +0,0 @@
-/*
-  bezier.hh -- declare Bezier and Bezier_bow
-
-  (c) 1998--2004 Jan Nieuwenhuizen <janneke@gnu.org>
-*/
-
-#ifndef BEZIER_HH
-#define BEZIER_HH
-
-
-#include "real.hh"
-#include "drul-array.hh"
-#include "interval.hh"
-#include "axes.hh"
-#include "offset.hh"
-#include "array.hh"
-#include "polynomial.hh"
-
-/**
-  Simple bezier curve
- */
-class Bezier
-{
-public:
-  void assert_sanity () const;
-  void scale (Real x,Real y);
-  void reverse ();
-  void rotate (Real);
-  void translate (Offset);
-
-  Real get_other_coordinate (Axis a, Real x) const;
-  Array<Real> solve_point (Axis, Real coordinate) const;
-  Array<Real> solve_derivative (Offset) const;
-  Interval extent (Axis)const;
-  Polynomial polynomial (Axis)const;
-  Offset curve_point (Real t) const;
-
-  static const int CONTROL_COUNT = 4;
-
-  /*
-    Bezier curves always have 4 control points. Making this into an
-    Array<> gives unnecessary overhead, and makes debugging a royal
-    pain.  */
-
-  
-  Offset control_[4];
-};
-
-void scale (Array<Offset>* array, Real xscale, Real yscale);
-void rotate (Array<Offset>* array, Real phi);
-void translate (Array<Offset>* array, Offset o);
-
-#endif // BEZIER_HH
-
diff --git a/lily/include/binary-source-file.hh b/lily/include/binary-source-file.hh
deleted file mode 100644
index a48ad8c124..0000000000
--- a/lily/include/binary-source-file.hh
+++ /dev/null
@@ -1,27 +0,0 @@
-//
-//  binary-source-file.hh -- declare Binary_source_file
-//
-//  (c) 1997--2004 Jan Nieuwenhuizen <janneke@gnu.org>
-
-#ifndef BINARY_SOURCE_FILE_HH
-#define BINARY_SOURCE_FILE_HH
-
-#include "source-file.hh"
-
-class Binary_source_file : public Source_file
-{
-public:
-  Binary_source_file (String& filename_string );
-  virtual ~Binary_source_file ();
-
-  U8 get_U8 (); 
-  U16 get_U16 ();
-  U32 get_U32 ();
-  Byte get_Byte () {return get_U8 (); }
-  int get_int () { return get_U32 (); }
-  
-  virtual String error_string (char const* pos_str0 ) const;
-  virtual int get_line (char const* pos_str0 ) const;
-};
-
-#endif // BINARY_SOURCE_FILE_HH
diff --git a/lily/include/box.hh b/lily/include/box.hh
deleted file mode 100644
index 252b695e7b..0000000000
--- a/lily/include/box.hh
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
-    some 2D geometrical concepts
-*/
-
-#ifndef BOXES_HH
-#define BOXES_HH
-
-#include "flower-proto.hh"
-#include "real.hh"
-#include "interval.hh"
-#include "offset.hh"
-#include "axes.hh"
-
-
-struct Box
-{
-  Interval interval_a_[NO_AXES];
-    
-  Interval &x () {return interval_a_[X_AXIS]; }
-  Interval &y (){ return interval_a_[Y_AXIS]; }
-  Interval x () const{ return interval_a_[X_AXIS]; }
-  Interval y () const{return interval_a_[Y_AXIS]; }
-  Interval operator[] (Axis a) const;
-  Interval &operator[] (Axis a);
-
-  Offset center () const;
-    
-  void translate (Offset o);
-  /// smallest box enclosing #b#
-  void set_empty ();
-  void add_point (Offset);
-  void widen (Real x, Real y);
-  void scale (Real r);
-  void unite (Box b);
-  Box ();
-  Box (Interval ix, Interval iy);
-};
-
-
-#endif
diff --git a/lily/include/break-algorithm.hh b/lily/include/break-algorithm.hh
deleted file mode 100644
index f9b7385d06..0000000000
--- a/lily/include/break-algorithm.hh
+++ /dev/null
@@ -1,56 +0,0 @@
-/*
-  break-algorithm.hh -- declare  Break_algorithm
-
-  source file of the GNU LilyPond music typesetter
-
-  (c) 1996--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-*/
-
-
-#ifndef BREAK_HH
-#define BREAK_HH
-
-#include "array.hh"
-#include "interval.hh"
-#include "lily-proto.hh"
-#include "column-x-positions.hh"
-
-
-/** Class representation of an algorithm which decides where to put
-  the column, and where to break lines.
-
-  JUNKME.
-  
-  */
-class Break_algorithm {
-protected:
-  Paper_score *pscore_;
-  Real linewidth_;
-
-  /// search all pcols which are breakable.
-  Link_array<Grob> find_breaks () const;
-
-  Array<int> find_break_indices () const;
-    
-
-  /// helper: solve for the columns in #curline#.
-  void solve_line (Column_x_positions*) const;
-
-  /// does curline fit on the paper?    
-  bool feasible (Link_array<Grob> const &) const;
-    
-
-  Simple_spacer* generate_spacing_problem (Link_array<Grob> const &, Interval) const;
-
-  virtual Array<Column_x_positions> do_solve () const=0;
-
-public:
-  Simple_spacer* (*get_line_spacer) ();
-  Break_algorithm ();
-  void set_pscore (Paper_score*);
-
-  Array<Column_x_positions> solve () const;
-};
-
-#endif // BREAK_HH
-
diff --git a/lily/include/break-align-interface.hh b/lily/include/break-align-interface.hh
deleted file mode 100644
index 7eb1e21352..0000000000
--- a/lily/include/break-align-interface.hh
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
-  break-align-interface.hh -- declare Break_align_interface
-
-  source file of the GNU LilyPond music typesetter
-
-  (c) 1997--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-*/
-
-
-#ifndef BREAK_ALIGN_INTERFACE_HH
-#define BREAK_ALIGN_INTERFACE_HH
-
-#include "item.hh"
-
-class Break_align_interface
-{
-public:
-  static void do_alignment (Grob*);
-  static void new_do_alignment (Grob*);  
-  
-  static bool has_interface (Grob*);
-  static void add_element (Grob*me, Grob*add);
-  DECLARE_SCHEME_CALLBACK (alignment_callback, (SCM element, SCM axis));
-  DECLARE_SCHEME_CALLBACK (self_align_callback, (SCM element, SCM axis));
-  
-};
-struct Break_aligned_interface
-{
-  static bool has_interface (Grob*);
-};
-
-
-#endif // BREAK_ALIGN_INTERFACE_HH
diff --git a/lily/include/breathing-sign.hh b/lily/include/breathing-sign.hh
deleted file mode 100644
index 75a035437b..0000000000
--- a/lily/include/breathing-sign.hh
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
-  breathing-sign.hh
-
-  Copyright (c) 1999--2004 Michael Krause
-
-  written for the GNU LilyPond music typesetter
-
-*/
-
-#ifndef BREATHING_SIGN_HH
-#define BREATHING_SIGN_HH
-
-#include "lily-guile.hh"
-
-/*
-  breathing sign (apostrophe within staff, not the comma above staff
-  type)
-*/
-class Breathing_sign
-{
-public:
-  DECLARE_SCHEME_CALLBACK (print, (SCM ));
-  DECLARE_SCHEME_CALLBACK (railtracks, (SCM ));
-  DECLARE_SCHEME_CALLBACK (divisio_minima, (SCM ));
-  DECLARE_SCHEME_CALLBACK (divisio_maior, (SCM ));
-  DECLARE_SCHEME_CALLBACK (divisio_maxima, (SCM ));
-  DECLARE_SCHEME_CALLBACK (finalis, (SCM ));
-  DECLARE_SCHEME_CALLBACK (offset_callback, (SCM element, SCM axis));
-  
-  static bool has_interface (Grob*);
-};
-
-#endif // BREATHING_SIGN_HH
diff --git a/lily/include/change-iterator.hh b/lily/include/change-iterator.hh
deleted file mode 100644
index b94c1cacce..0000000000
--- a/lily/include/change-iterator.hh
+++ /dev/null
@@ -1,27 +0,0 @@
-/*
-  change-iterator.hh -- declare Change_iterator
-
-  source file of the GNU LilyPond music typesetter
-
-  (c) 1997--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-*/
-
-
-#ifndef CHANGE_ITERATOR_HH
-#define CHANGE_ITERATOR_HH
-
-#include "simple-music-iterator.hh"
-
-
-class Change_iterator : public Simple_music_iterator
-{
-public:
-  /* constructor is public */
-  virtual void process (Moment);
-  DECLARE_SCHEME_CALLBACK(constructor, ());
-
-private:
-  void  error (String);
-};
-
-#endif
diff --git a/lily/include/chord-name.hh b/lily/include/chord-name.hh
deleted file mode 100644
index b06a861daa..0000000000
--- a/lily/include/chord-name.hh
+++ /dev/null
@@ -1,23 +0,0 @@
-/*
-  chord-name.hh -- declare Chord_name
-
-  source file of the GNU LilyPond music typesetter
-
-  (c) 1999--2004 Jan Nieuwenhuizen <janneke@gnu.org>
-*/
-
-#ifndef CHORD_NAME_HH
-#define CHORD_NAME_HH
-
-#include "lily-guile.hh"
-#include "molecule.hh"
-
-
-class Chord_name
-{
-public:
-  DECLARE_SCHEME_CALLBACK (after_line_breaking, (SCM ));
-  static  bool has_interface (Grob*);
-};
-
-#endif // CHORD_NAME_HH
diff --git a/lily/include/chord-tremolo-iterator.hh b/lily/include/chord-tremolo-iterator.hh
deleted file mode 100644
index 667b8e02d6..0000000000
--- a/lily/include/chord-tremolo-iterator.hh
+++ /dev/null
@@ -1,38 +0,0 @@
-/*   
-  chord-tremolo-iterator.hh -- declare Chord_tremolo_iterator
-  
-  source file of the GNU LilyPond music typesetter
-  
-  (c) 2000--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-  
- */
-
-#ifndef CHORD_TREMOLO_ITERATOR_HH
-#define CHORD_TREMOLO_ITERATOR_HH
-
-#include "music-iterator.hh"
-
-class Chord_tremolo_iterator : public Music_iterator
-{
-public:
-  DECLARE_SCHEME_CALLBACK(constructor, ());
-  Chord_tremolo_iterator ();
-  Chord_tremolo_iterator (Chord_tremolo_iterator const & );
-protected:
-  virtual void derived_substitute (Translator_group*f, Translator_group*t) ;
-
-  virtual void derived_mark () const;
-  virtual Moment pending_moment () const;
-  virtual void do_quit(); 
-  virtual void construct_children () ;
-  virtual bool ok () const;
-  virtual void process (Moment) ;
-  virtual Music_iterator *try_music_in_children (Music *) const;
-private:
-  Moment factor_;
-  Music_iterator * child_iter_;
-};
-
-
-#endif /* CHORD_TREMOLO_ITERATOR_HH */
-
diff --git a/lily/include/chord.hh b/lily/include/chord.hh
deleted file mode 100644
index e69de29bb2..0000000000
diff --git a/lily/include/clef.hh b/lily/include/clef.hh
deleted file mode 100644
index b2c621c075..0000000000
--- a/lily/include/clef.hh
+++ /dev/null
@@ -1,24 +0,0 @@
-/*   
-  clef.hh -- declare Clef
-  
-  source file of the GNU LilyPond music typesetter
-  
-  (c) 2000--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-  
- */
-
-#ifndef CLEF_HH
-#define CLEF_HH
-#include "lily-guile.hh"
-#include "lily-proto.hh"
-
-struct Clef 
-{
-  DECLARE_SCHEME_CALLBACK (before_line_breaking, (SCM ));
-  DECLARE_SCHEME_CALLBACK (print, (SCM ));
-  static bool has_interface (Grob*);
-};
-
-
-#endif /* CLEF_HH */
-
diff --git a/lily/include/cluster.hh b/lily/include/cluster.hh
deleted file mode 100644
index dd3639e95b..0000000000
--- a/lily/include/cluster.hh
+++ /dev/null
@@ -1,25 +0,0 @@
-/*
-  cluster.hh
-
-  source file of the GNU LilyPond music typesetter
-
-  (c) 2002--2004 Juergen Reuter <reuter@ipd.uka.de>
-*/
-
-#ifndef CLUSTER_HH
-#define CLUSTER_HH
-
-#include "lily-guile.hh"
-#include "molecule.hh"
-
-class Cluster
-{
-public:
-  DECLARE_SCHEME_CALLBACK (print, (SCM ));
-  //  DECLARE_SCHEME_CALLBACK (after_line_breaking, (SCM));
-  static bool has_interface (Grob *);
-  // DECLARE_SCHEME_CALLBACK (set_spacing_rods, (SCM ));
-};
-
-#endif // CLUSTER_HH
-
diff --git a/lily/include/coherent-ligature-engraver.hh b/lily/include/coherent-ligature-engraver.hh
deleted file mode 100644
index b9ec709ecf..0000000000
--- a/lily/include/coherent-ligature-engraver.hh
+++ /dev/null
@@ -1,31 +0,0 @@
-/*   
-  coherent-ligature-engraver.hh -- declare Coherent_ligature_engraver
-  
-  source file of the GNU LilyPond music typesetter
-  
-  (c) 2003--2004 Juergen Reuter <reuter@ipd.uka.de>
-  
- */
-#ifndef COHERENT_LIGATURE_ENGRAVER_HH
-#define COHERENT_LIGATURE_ENGRAVER_HH
-
-#include "ligature-engraver.hh"
-
-class Coherent_ligature_engraver : public Ligature_engraver
-{
-
-public:
-  TRANSLATOR_DECLARATIONS(Coherent_ligature_engraver);
-
-protected:
-  virtual void build_ligature (Spanner *ligature,
-			       Array<Grob_info> primitives); /* abstract */
-  virtual void typeset_ligature (Spanner *ligature,
-				 Array<Grob_info> primitives);
-  virtual void get_set_column (Item *, Paper_column *);
-
-private:
-  void collect_accidentals (Spanner *, Array<Grob_info>);
-};
-
-#endif // COHERENT_LIGATURE_ENGRAVER_HH
diff --git a/lily/include/column-x-positions.hh b/lily/include/column-x-positions.hh
deleted file mode 100644
index e5ae4f92bd..0000000000
--- a/lily/include/column-x-positions.hh
+++ /dev/null
@@ -1,28 +0,0 @@
-/*
-  column-x-positions.hh -- part of GNU LilyPond
-
-  (c) 1997--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-*/
-
-#ifndef COLUMN_X_POSITIONS_HH
-#define COLUMN_X_POSITIONS_HH
-
-#include "parray.hh"
-#include "lily-proto.hh"
-
-
-struct Column_x_positions
-{
-  Link_array<Grob> cols_;
-  Link_array<Grob> loose_cols_;
-  
-  Array<Real> config_;
-  Real force_;
-  bool satisfies_constraints_b_;
-
-  Column_x_positions ();
-};
-
-
-#endif // COLUMN_X_POSITIONS_HH
-
diff --git a/lily/include/context-def.hh b/lily/include/context-def.hh
deleted file mode 100644
index 0011b7c7c8..0000000000
--- a/lily/include/context-def.hh
+++ /dev/null
@@ -1,63 +0,0 @@
-/*   
-  context-def.hh -- declare Context_def
-  
-  source file of the GNU LilyPond music typesetter
-  
-  (c) 2000--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-  
- */
-
-#ifndef TRANSLATOR_DEF_HH
-#define TRANSLATOR_DEF_HH
-
-#include "lily-proto.hh"
-#include "smobs.hh"
-#include "input.hh"
-
-/*
-  The definition of a interpretation context as given in the
-  input. The lists are stored in order of definition.
-*/
-struct Context_def : public Input
-{
-private:
-  /*
-    these lists store the definition, in opposite order of entry
-  */
-  SCM translator_mods_;
-  SCM accept_mods_;
-  SCM property_ops_;
-  SCM description_;
-  SCM context_name_;
-  SCM context_aliases_;
-  SCM translator_group_type_;
-  
-public:
-  void add_context_mod (SCM);
-  SCM default_child_context_name ();
-  SCM get_context_name () const;
-  SCM get_accepted (SCM)  const;
-  SCM get_property_ops ()  const { return property_ops_; }
-  SCM get_translator_names (SCM) const;
-  void set_acceptor (SCM accepts, bool add);
-
-  Link_array<Context_def> path_to_acceptable_translator (SCM type_string, Music_output_def* odef) const;
-  Translator_group * instantiate (SCM extra_ops);
-
-  SCM to_alist () const;
-  bool is_alias (SCM) const;
-  static SCM make_scm () ;
-
-  SCM clone_scm ()const;
-  void apply_default_property_operations (Translator_group*);
-private:
-  DECLARE_SMOBS (Context_def,foo);
-  Context_def ();
-  Context_def (Context_def const&);
-};
-
-DECLARE_UNSMOB(Context_def,context_def);
-
-
-#endif /* TRANSLATOR_DEF_HH */
-
diff --git a/lily/include/custos.hh b/lily/include/custos.hh
deleted file mode 100644
index fb5e52e86b..0000000000
--- a/lily/include/custos.hh
+++ /dev/null
@@ -1,26 +0,0 @@
-/*
-  custos.hh
-
-  source file of the GNU LilyPond music typesetter
-
-  (c) 2000--2004 Juergen Reuter <reuter@ipd.uka.de>
-*/
-
-#ifndef CUSTOS_HH
-#define CUSTOS_HH
-
-#include "lily-guile.hh"
-
-struct Custos
-{
-  DECLARE_SCHEME_CALLBACK (print, (SCM ));
-  static bool has_interface (Grob*);
-
-private:
-  static void add_streepjes (Grob* me, int pos, int interspaces, Molecule* custos_);
-  static Molecule create_ledger_line (Interval x_extent, Grob *me) ;
-
-};
-
-#endif // CUSTOS_HH
-
diff --git a/lily/include/dimension-cache-callback.hh b/lily/include/dimension-cache-callback.hh
deleted file mode 100644
index ec2f601c46..0000000000
--- a/lily/include/dimension-cache-callback.hh
+++ /dev/null
@@ -1,18 +0,0 @@
-/*   
-  dimension-cache-callback.hh -- declare 
-  
-  source file of the GNU LilyPond music typesetter
-  
-  (c) 2000--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-  
- */
-
-#ifndef DIMENSION_CACHE_CALLBACK_HH
-#define DIMENSION_CACHE_CALLBACK_HH
-
-
-typedef Interval (*Dim_cache_callback) (Grob *,Axis);
-typedef Real (*Offset_callback) (Grob *,Axis);
-
-#endif /* DIMENSION_CACHE_CALLBACK_HH */
-
diff --git a/lily/include/dimension-cache.hh b/lily/include/dimension-cache.hh
deleted file mode 100644
index 4576c99ef2..0000000000
--- a/lily/include/dimension-cache.hh
+++ /dev/null
@@ -1,56 +0,0 @@
-/*   
-  dimension-cache.hh -- declare Dimension_cache
-  
-  source file of the GNU LilyPond music typesetter
-  
-  (c) 1998--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-  
- */
-
-#ifndef DIMENSION_CACHE_HH
-#define DIMENSION_CACHE_HH
-
-#include "interval.hh"
-#include "real.hh"
-#include "lily-proto.hh"
-#include "parray.hh"
-#include "dimension-cache-callback.hh"
-#include "lily-guile.hh"
-
-
-/**
-  Adminstration of offset dimension info.
-*/
-struct Dimension_cache
-{
-  /*
-    Multi typed:
-
-     - cons: interval
-     - procedure: callback
-     - else: empty
-   */
-  SCM dimension_;
-
-  /**
-    The offset wrt. to the center of #parent_#
-   */
-
-  Real offset_;
-  SCM offset_callbacks_;
-  
-  char offsets_left_;
-
-  /**
-     What to call to find extent.  Nil means empty. 
-   */
-  Grob * parent_;
-
-  Dimension_cache (Dimension_cache const&);
-  Dimension_cache ();
-  void init ();
-};
-
-
-#endif /* DIMENSION_CACHE_HH */
-
diff --git a/lily/include/dimensions.hh b/lily/include/dimensions.hh
deleted file mode 100644
index c5f54a17e7..0000000000
--- a/lily/include/dimensions.hh
+++ /dev/null
@@ -1,44 +0,0 @@
-#ifndef DIMENSIONS_HH
-#define DIMENSIONS_HH
-
-#include "real.hh"
-class String;
-
-
-const Real INCH_TO_PT=72.270;
-const Real CM_TO_PT=(INCH_TO_PT/2.54);
-const Real MM_TO_PT=(CM_TO_PT/10);
-const Real PT_TO_PT =1.0;
-const Real INCH_TO_BP = 72;
-const Real BIGPOINT_TO_POINT = (INCH_TO_PT/ INCH_TO_BP);
-const Real CHAR_TO_PT =1.0;
-const Real PT_TO_MM = (1.0/MM_TO_PT);
-
-#ifdef POINTS
-
-#define PT  *PT_TO_PT
-#define MM  *MM_TO_PT
-#define CM  *CM_TO_PT
-#define INCH *INCH_TO_PT
-#define BIGPOINT *BIGPOINT_TO_POINT
-#define CHAR *CHAR_TO_PT
-
-
-#define INTERNAL_UNIT "pt"
-
-#else	// mm
-
-#define PT  *PT_TO_PT *PT_TO_MM
-#define MM  *MM_TO_PT *PT_TO_MM
-#define CM  *CM_TO_PT *PT_TO_MM
-#define INCH *INCH_TO_PT *PT_TO_MM
-#define BIGPOINT *BIGPOINT_TO_POINT *PT_TO_MM
-#define CHAR *CHAR_TO_PT *PT_TO_MM
-#define INTERNAL_UNIT "mm"
-
-#endif
-
-String print_dimen (Real);
-
-#endif // DIMENSIONS_HH
-
diff --git a/lily/include/directional-element-interface.hh b/lily/include/directional-element-interface.hh
deleted file mode 100644
index f4e80f75d0..0000000000
--- a/lily/include/directional-element-interface.hh
+++ /dev/null
@@ -1,19 +0,0 @@
-/*   
-  directional-element.hh -- declare Directional_element
-  
-  source file of the GNU LilyPond music typesetter
-  
-  (c) 1999--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-  
- */
-
-#ifndef DIRECTIONAL_ELEMENT_HH
-#define DIRECTIONAL_ELEMENT_HH
-
-#include "grob.hh"
-
-void set_grob_direction (Grob*, Direction);
-Direction get_grob_direction (Grob*);
-
-#endif /* DIRECTIONAL_ELEMENT_HH */
-
diff --git a/lily/include/dot-column.hh b/lily/include/dot-column.hh
deleted file mode 100644
index dc30f42c91..0000000000
--- a/lily/include/dot-column.hh
+++ /dev/null
@@ -1,29 +0,0 @@
-/*
-  dot-column.hh -- declare Dot_column Dot_column
-
-  source file of the GNU LilyPond music typesetter
-
-  (c) 1997--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-*/
-
-
-#ifndef DOT_COLUMN_HH
-#define DOT_COLUMN_HH
-
-#include "lily-guile.hh"
-
-/**
-  Group dots.  This is needed because, the dots have to be aligned per voice
- */
-class Dot_column		// interface
-{
-public:
-  static int compare (Grob * const&,Grob * const&);
-  static void add_head (Grob * dotcol, Grob* rh );
-
-  static bool has_interface (Grob*);
-  DECLARE_SCHEME_CALLBACK (force_shift_callback, (SCM ,SCM));
-  DECLARE_SCHEME_CALLBACK (side_position, (SCM ,SCM));  
-  static SCM do_shifts (Grob*);
-};
-#endif // DOT_COLUMN_HH
diff --git a/lily/include/dots.hh b/lily/include/dots.hh
deleted file mode 100644
index 0e123550f0..0000000000
--- a/lily/include/dots.hh
+++ /dev/null
@@ -1,25 +0,0 @@
-/*
-  dots.hh -- declare Dots
-
-  source file of the GNU LilyPond music typesetter
-
-  (c) 1997--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-*/
-
-
-#ifndef DOTS_HH
-#define DOTS_HH
-
-#include "lily-proto.hh"
-#include "lily-guile.hh"
-
-
-
-class Dots
-{
-public:
-  DECLARE_SCHEME_CALLBACK (print, (SCM ));
-  bool has_interface (Grob*);
-};
-
-#endif // DOTS_HH
diff --git a/lily/include/duration.hh b/lily/include/duration.hh
deleted file mode 100644
index e20e28a5c8..0000000000
--- a/lily/include/duration.hh
+++ /dev/null
@@ -1,52 +0,0 @@
-/*
-  duration.hh -- declare Duration
-  
-  source file of the LilyPond music typesetter
-
-  (c) 1997--2004 Jan Nieuwenhuizen <janneke@gnu.org>
-
-*/
-
-#ifndef DURATION_HH
-#define DURATION_HH
-
-#include "flower-proto.hh"
-#include "moment.hh"
-#include "smobs.hh"
-
-/**
-   A musical duration.
-  */
-struct Duration {
-public:
-  
-  Duration ();
-  Duration (int, int);
-  String to_string () const;
-
-  Duration compressed (Rational) const;
-  Rational get_length () const ;
-  Rational factor () const { return factor_; }
-  int duration_log ()const;
-  int dot_count () const;
-
-  static int compare (Duration const&, Duration const&);
-
-  SCM smobbed_copy () const;
-  DECLARE_SCHEME_CALLBACK (less_p, (SCM a, SCM b));
-  DECLARE_SIMPLE_SMOBS (Duration,);
-
-private:
-    /// Logarithm of the base duration.
-  int durlog_;
-  int dots_;
-
-  Rational factor_;
-};
-
-#include "compare.hh"
-INSTANTIATE_COMPARE (Duration, Duration::compare);
-DECLARE_UNSMOB (Duration, duration);
-
-#endif // DURATION_HH
-
diff --git a/lily/include/engraver-group-engraver.hh b/lily/include/engraver-group-engraver.hh
deleted file mode 100644
index 4b1da55e8c..0000000000
--- a/lily/include/engraver-group-engraver.hh
+++ /dev/null
@@ -1,47 +0,0 @@
-
-/*
-  engraver-group-engraver.hh -- declare Engraver_group_engraver
-
-  source file of the GNU LilyPond music typesetter
-
-  (c) 1997--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-*/
-
-
-#ifndef ENGRAVERGROUP_HH
-#define ENGRAVERGROUP_HH
-
-#include "lily-proto.hh"
-#include "parray.hh"
-#include "grob-info.hh"
-#include "engraver.hh"
-#include "translator-group.hh"
-
-
-/**
-  Group a number of engravers. Usually delegates everything to its contents.
-  Postfix: group
-  */
-class Engraver_group_engraver : public Engraver,
-				public virtual Translator_group
-{
-protected:
-  Array<Grob_info> announce_infos_;
-
-  
-  
-public:
-  TRANSLATOR_DECLARATIONS(Engraver_group_engraver);
-
-  virtual void initialize ();
-  virtual void do_announces ();
-  virtual void announce_grob (Grob_info);
-  virtual void process_music ();
-private:
-  virtual void acknowledge_grobs ();
-  virtual void process_acknowledged_grobs_in_simple_children ();
-};
-
-#endif // ENGRAVERGROUP_HH
-
-
diff --git a/lily/include/engraver.hh b/lily/include/engraver.hh
deleted file mode 100644
index 63928813f5..0000000000
--- a/lily/include/engraver.hh
+++ /dev/null
@@ -1,70 +0,0 @@
-/*
-  engraver.hh -- declare Engraver
-
-  source file of the GNU LilyPond music typesetter
-
-  (c) 1996--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-*/
-
-
-#ifndef ENGRAVER_HH
-#define ENGRAVER_HH
-
-#include "lily-proto.hh"
-#include "array.hh"
-#include "event.hh"
-#include "grob-info.hh"
-#include "translator.hh"
-
-
-/**
-  a struct which processes events, and creates the #Grob#s.
-  It may use derived classes. 
-  */
-class Engraver : public virtual Translator {
-    
-  friend class Engraver_group_engraver;
-protected:
-  /*
-    Call this when you're finished with ELEM_P.
-   */
-  virtual void typeset_grob (Grob*elem);
-  /*
-    take note of item/spanner
-    put item in spanner. Adjust local key; etc.
-
-    Default: ignore the info
-    */
-  virtual void acknowledge_grob (Grob_info) {}
-
-  /** Do things with stuff found in acknowledge_grob. Ugh. Should
-     be looped with acknowledge_grob.
-     
-   */
-  virtual void process_acknowledged_grobs () {}
-  /**
-    Announce element. Default: pass on to daddy. Utility
-    */
-  virtual void announce_grob (Grob*, SCM cause);
-  virtual void announce_grob (Grob_info);
-  virtual void process_music ();
-
-  Score_engraver * top_engraver () const;
-
-
-public:
-  Engraver_group_engraver * get_daddy_grav () const;
-  /**
-    override other ctor
-   */
-  TRANSLATOR_DECLARATIONS(Engraver);
-};
-
-#define make_item(x) make_item_from_properties (daddy_trans_, ly_symbol2scm (x))
-#define make_spanner(x) make_spanner_from_properties (daddy_trans_, ly_symbol2scm (x))
-Item* make_item_from_properties (Translator_group* tg, SCM x);
-Spanner* make_spanner_from_properties (Translator_group * tg, SCM x);
-
-
-
-#endif // ENGRAVER_HH
diff --git a/lily/include/event-chord-iterator.hh b/lily/include/event-chord-iterator.hh
deleted file mode 100644
index 2dce5d8b3b..0000000000
--- a/lily/include/event-chord-iterator.hh
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
-  event-iter.hh -- declare Event_chord_iterator
-
-  source file of the GNU LilyPond music typesetter
-
-  (c) 1997--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-*/
-
-
-#ifndef EVENT_ITER_HH
-#define EVENT_ITER_HH
-
-#include "simple-music-iterator.hh"
-
-/**
-   Walk through a Event_chord
- */
-class Event_chord_iterator : public Simple_music_iterator
-{
-  Event_chord * get_elt () const;
-  /**
-     Find a bottom notation context to deliver events to.
-   */
-  virtual Translator_group* get_req_translator ();
-
-
-  /*
-    Since Event_chord_iterator has no list-cursor internally, we
-    must use a status variable to adminstrate where we are */
-  
-  enum { NONE_DONE, START_DONE, END_DONE }  status_;
-public:
-  DECLARE_SCHEME_CALLBACK(constructor, ());
-  Event_chord_iterator ();
-  Event_chord_iterator (Event_chord_iterator const&);
-
-protected:
-  virtual void process (Moment);
-  virtual void construct_children ();
-};
-
-
-#endif // EVENT_ITER_HH
diff --git a/lily/include/event.hh b/lily/include/event.hh
deleted file mode 100644
index c8d8795284..0000000000
--- a/lily/include/event.hh
+++ /dev/null
@@ -1,54 +0,0 @@
-/*
-  event.hh -- declare Event baseclasses.
-
-  source file of the GNU LilyPond music typesetter
-
-  (c) 1997--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-*/
-
-#ifndef EVENT_HH
-#define EVENT_HH
-
-
-#include "string.hh"
-#include "moment.hh"
-#include "virtual-methods.hh"
-#include "input.hh"
-#include "music.hh"
-#include "duration.hh"
-#include "pitch.hh"
-
-/** An atom of musical information.  This is an abstract class for any
-  piece of music that does not contain other Music.
-  
-
- */
-class Event : public Music {
-public:
-  Event ();
-  VIRTUAL_COPY_CONS (Music);
-  virtual void compress (Moment);
-  virtual void transpose (Pitch);
-  virtual Moment get_length () const;
-  virtual Pitch to_relative_octave (Pitch);
-};
-
-
-/**
-    Handle key changes.
-*/
-class Key_change_ev  : public Event
-{
-public:
-  SCM pitch_alist ();
-  
-protected:
-  VIRTUAL_COPY_CONS (Music);
-  void transpose (Pitch  d);
-};
-
-SCM ly_transpose_key_alist (SCM,SCM);
-
-
-
-#endif
diff --git a/lily/include/folded-repeat-iterator.hh b/lily/include/folded-repeat-iterator.hh
deleted file mode 100644
index 4ae007d8de..0000000000
--- a/lily/include/folded-repeat-iterator.hh
+++ /dev/null
@@ -1,49 +0,0 @@
-/*   
-  folded-repeat-iterator.hh -- declare Folded_repeat_iterator
-  
-  source file of the GNU LilyPond music typesetter
-  
-  (c) 1999--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-  
- */
-
-#ifndef FOLDED_REPEAT_ITERATOR_HH
-#define FOLDED_REPEAT_ITERATOR_HH
-
-#include "music-iterator.hh"
-
-/**
-   Iterate through a repeated section: first do the body, then
-   all alternatives in parallel.
- */
-class Folded_repeat_iterator : public Music_iterator
-{
-public:
-  DECLARE_SCHEME_CALLBACK(constructor, ());
-
-  Folded_repeat_iterator (Folded_repeat_iterator const &src);
-  Folded_repeat_iterator ();
-  virtual void derived_mark () const;
-  virtual void derived_substitute (Translator_group*f, Translator_group*t) ;
-
-
-  virtual void construct_children ();
-  virtual Moment pending_moment () const;
-  virtual void do_quit(); 
-  virtual bool ok () const;
-
-protected:
-  void enter_alternative ();
-  void leave_body ();
-  
-  virtual void process (Moment);
-  virtual Music_iterator *try_music_in_children (Music *) const;
-
-private:
-  Music_iterator * main_iter_;
-  Music_iterator * alternative_iter_;
-
-  Moment main_length_mom_;
-};
-#endif /* FOLDED_REPEAT_ITERATOR_HH */
-
diff --git a/lily/include/font-interface.hh b/lily/include/font-interface.hh
deleted file mode 100644
index 58e9a986c6..0000000000
--- a/lily/include/font-interface.hh
+++ /dev/null
@@ -1,23 +0,0 @@
-/*   
-  font-interface.hh -- declare Font_interface
-  
-  source file of the GNU LilyPond music typesetter
-  
-  (c) 2000--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-  
- */
-
-#ifndef FONT_INTERFACE_HH
-#define FONT_INTERFACE_HH
-
-#include "lily-proto.hh"
-#include "font-metric.hh"
-
-struct Font_interface
-{
-  static SCM font_alist_chain (Grob*);
-  static Font_metric * get_default_font (Grob*);
-  static bool has_interface (Grob*);
-};
-
-#endif /* FONT_INTERFACE_HH */
diff --git a/lily/include/font-metric.hh b/lily/include/font-metric.hh
deleted file mode 100644
index cb9206efdc..0000000000
--- a/lily/include/font-metric.hh
+++ /dev/null
@@ -1,47 +0,0 @@
-/*   
-  font-metric.hh -- declare Font_metric
-  
-  source file of the GNU LilyPond music typesetter
-  
-  (c) 1999--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-  
- */
-
-#ifndef FONT_METRIC_HH
-#define FONT_METRIC_HH
-
-#include "box.hh"
-#include "lily-guile.hh"
-#include "smobs.hh"
-#include "lily-proto.hh"
-#include "string.hh"
-
-struct Font_metric
-{
-public:
-  SCM description_;
-  String path_;
-  
-  virtual int count () const;
-  virtual Offset get_indexed_wxwy (int) const;
-  virtual Box get_indexed_char (int index) const;
-  virtual Box get_ascii_char (int ascii) const;
-  virtual Box text_dimension (String)  const;
-  virtual int name_to_index (String) const;
-
-  virtual Molecule find_by_name (String) const;
-  virtual Molecule get_indexed_char_molecule (int k) const;
-  virtual Molecule get_ascii_char_molecule (int k) const;  
-  
-  DECLARE_SMOBS (Font_metric,);
-private:
-  Font_metric (Font_metric const&); // no copy.
-protected:
-  virtual void derived_mark () const;
-
-  Font_metric ();
-};
-
-DECLARE_UNSMOB(Font_metric, metrics);
-
-#endif /* FONT_METRIC_HH */
diff --git a/lily/include/global-ctor.hh b/lily/include/global-ctor.hh
deleted file mode 100644
index de31fc8dc9..0000000000
--- a/lily/include/global-ctor.hh
+++ /dev/null
@@ -1,32 +0,0 @@
-/*   
-  global-ctor.hh -- declare Global construction stuff.
-  
-  source file of the GNU LilyPond music typesetter
-  
-  (c) 1999--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-  
- */
-
-#ifndef GLOBAL_CTOR_HH
-#define GLOBAL_CTOR_HH
-
-
-#define ADD_GLOBAL_CTOR_WITHNAME(y,x)\
-class Global_ctor_ ## y  \
-{\
-public:	\
-  Global_ctor_ ## y () {		\
-    add_constructor (x);	\
-  }				\
-}  _ ## y ## _ctor_init;	\
-
-
-#define ADD_GLOBAL_CTOR(x) ADD_GLOBAL_CTOR_WITHNAME (x,x);
-
-
-typedef void (* Global_ctor ) ();
-void add_constructor (Global_ctor ctor);
-void call_constructors ();
-
-#endif /* GLOBAL_CTOR_HH */
-
diff --git a/lily/include/global-translator.hh b/lily/include/global-translator.hh
deleted file mode 100644
index 979e398a7b..0000000000
--- a/lily/include/global-translator.hh
+++ /dev/null
@@ -1,50 +0,0 @@
-/*
-  global-translator.hh -- declare Global_translator
-
-  source file of the GNU LilyPond music typesetter
-
-  (c) 1997--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-*/
-
-
-#ifndef GLOBAL_TRANSLATOR_HH
-#define GLOBAL_TRANSLATOR_HH
-
-#include "translator-group.hh"
-#include "moment.hh"
-#include "pqueue.hh"
-
-class Global_translator : public virtual Translator_group
-{
-  PQueue<Moment> extra_mom_pq_;
-  Music_output_def*  output_def_;
-  friend class Music_output_def;
-public:
-  VIRTUAL_COPY_CONS (Translator);
-  Global_translator ();
-
-  int get_moments_left () const;
-  Moment sneaky_insert_extra_moment (Moment);
-  void add_moment_to_process (Moment);
-  void run_iterator_on_me (Music_iterator*);
-
-  void apply_finalizations ();
-  void add_finalization (SCM);
-  
-  virtual Music_output *get_output ();     
-  virtual void prepare (Moment);
-  virtual void one_time_step ();
-  virtual void finish ();
-  virtual void start ();
-  virtual Music_output_def* get_output_def () const; 
-  virtual Moment now_mom () const;
-
-  Moment final_mom_;
-  Moment prev_mom_;
-  Moment now_mom_;
-protected:
-};
-
-
-
-#endif // GLOBAL_TRANSLATOR_HH
diff --git a/lily/include/gourlay-breaking.hh b/lily/include/gourlay-breaking.hh
deleted file mode 100644
index 46c3285ac2..0000000000
--- a/lily/include/gourlay-breaking.hh
+++ /dev/null
@@ -1,24 +0,0 @@
-/*
-  gourlay-breaking.hh -- declare Gourlay_breaking
-
-  source file of the GNU LilyPond music typesetter
-
-  (c) 1997--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-*/
-
-
-#ifndef GOURLAY_BREAKING_HH
-#define GOURLAY_BREAKING_HH
-
-#include "break-algorithm.hh"
-
-/**
-  A dynamic programming solution to breaking scores into lines
- */
-struct Gourlay_breaking : public Break_algorithm
-{
-  Array<Column_x_positions> do_solve () const;
-  Gourlay_breaking ();
-  Real combine_demerits (Column_x_positions const&,Column_x_positions const&) const;
-};
-#endif // GOURLAY_BREAKING_HH
diff --git a/lily/include/grace-iterator.hh b/lily/include/grace-iterator.hh
deleted file mode 100644
index 79694497b2..0000000000
--- a/lily/include/grace-iterator.hh
+++ /dev/null
@@ -1,27 +0,0 @@
-/*   
-  grace-iterator.hh -- declare Grace_iterator
-  
-  source file of the GNU LilyPond music typesetter
-  
-  (c) 1999--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-  
- */
-
-#ifndef NEWGRACE_ITERATOR_HH
-#define NEWGRACE_ITERATOR_HH
-
-#include "music-wrapper-iterator.hh"
-
-class Grace_iterator : public Music_wrapper_iterator
-{
-public:
-  virtual void process (Moment);
-  DECLARE_SCHEME_CALLBACK(constructor, ());
-  Moment pending_moment () const;
-};
-
-
-
-#endif /* GRACE_ITERATOR_HH */
-
-
diff --git a/lily/include/grace-music.hh b/lily/include/grace-music.hh
deleted file mode 100644
index 273fefebe7..0000000000
--- a/lily/include/grace-music.hh
+++ /dev/null
@@ -1,26 +0,0 @@
-/*   
-  grace-music.hh -- declare Grace_music
-  
-  source file of the GNU LilyPond music typesetter
-  
-  (c) 1999--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-  
- */
-
-#ifndef NGRACE_MUSIC_HH
-#define NGRACE_MUSIC_HH
-
-#include "music-wrapper.hh"
-
-class Grace_music : public Music_wrapper
-{
-public:
-  VIRTUAL_COPY_CONS (Music);
-  Grace_music ();
-protected:
-  virtual Moment get_length () const;
-  virtual Moment start_mom () const;
-};
-
-#endif /* GRACE_MUSIC_HH */
-
diff --git a/lily/include/gregorian-ligature-engraver.hh b/lily/include/gregorian-ligature-engraver.hh
deleted file mode 100644
index c70a18e46b..0000000000
--- a/lily/include/gregorian-ligature-engraver.hh
+++ /dev/null
@@ -1,29 +0,0 @@
-/*   
-  gregorian-ligature-engraver.hh -- declare Gregorian_ligature_engraver
-  
-  source file of the GNU LilyPond music typesetter
-  
-  (c) 2003--2004 Juergen Reuter <reuter@ipd.uka.de>
-  
- */
-#ifndef GREGORIAN_LIGATURE_ENGRAVER_HH
-#define GREGORIAN_LIGATURE_ENGRAVER_HH
-
-#include "coherent-ligature-engraver.hh"
-
-class Gregorian_ligature_engraver : public Coherent_ligature_engraver
-{
-  Music *pes_or_flexa_req_;
-
-public:
-  TRANSLATOR_DECLARATIONS(Gregorian_ligature_engraver);
-
-protected:
-  virtual bool try_music (Music *);
-  virtual void build_ligature (Spanner *ligature, Array<Grob_info> primitives);
-  virtual void transform_heads (Spanner *ligature,
-				Array<Grob_info> primitives); /* abstract method */
-  virtual void stop_translation_timestep ();
-};
-
-#endif // GREGORIAN_LIGATURE_ENGRAVER_HH
diff --git a/lily/include/gregorian-ligature.hh b/lily/include/gregorian-ligature.hh
deleted file mode 100644
index 0fd627c400..0000000000
--- a/lily/include/gregorian-ligature.hh
+++ /dev/null
@@ -1,57 +0,0 @@
-/*
-  gregorian-ligature.hh -- part of GNU LilyPond
-
-  source file of the GNU LilyPond music typesetter
-  
-  (c) 2003--2004 Juergen Reuter <reuter@ipd.uka.de>
-*/
-
-#ifndef GREGORIAN_LIGATURE_HH
-#define GREGORIAN_LIGATURE_HH
-
-class Gregorian_ligature {
-public:
-  static bool has_interface (Grob *);
-  static String prefixes_to_str (Grob *);
-};
-
-/*
- * Head prefixes: these bit-mask constants are used to represent
- * attributes immediately derived from user input (e.g. by the user
- * setting a gregorian ligature grob property or using the "\~"
- * keyword).  If the according bit of the head prefix value is set,
- * the attribute applies for this head.  The binary opereator "\~" is
- * treated like a prefix for the head that follows the operator, but
- * does not affect the head that precedes the operator, if any.
- */
-#define VIRGA        0x0001 // attribute "\virga"
-#define STROPHA      0x0002 // attribute "\stropha"
-#define INCLINATUM   0x0004 // attribute "\inclinatum"
-#define AUCTUM       0x0008 // attribute "\auctum"
-#define DESCENDENS   0x0010 // attribute "\descendens"
-#define ASCENDENS    0x0020 // attribute "\ascendens"
-#define ORISCUS      0x0040 // attribute "\oriscus"
-#define QUILISMA     0x0080 // attribute "\quilisma"
-#define DEMINUTUM    0x0100 // attribute "\deminutum"
-#define CAVUM        0x0200 // attribute "\cavum"
-#define LINEA        0x0400 // attribute "\linea"
-#define PES_OR_FLEXA 0x0800 // operator "\~"
-
-/*
- * Ligature context info: these attributes are derived from the head
- * prefixes by considering the current and the two neighbouring heads.
- *
- * These definitions may be extended by more specific Gregorian
- * ligatures such as vaticana-ligature.hh.
- */
-#define PES_LOWER       0x0001 // this is a head before "\~" in an
-			       // ascending melody
-#define PES_UPPER       0x0002 // this is a head after "\~" in an
-			       // ascending melody
-#define FLEXA_LEFT      0x0004 // this is a head before "\~" in a
-			       // descending melody
-#define FLEXA_RIGHT     0x0008 // this is a head after "\~" in a
-			       // descending melody
-#define AFTER_DEMINUTUM 0x0020 // previous head was a deminutum
-
-#endif /* GREGORIAN_LIGATURE_HH */
diff --git a/lily/include/grob-info.hh b/lily/include/grob-info.hh
deleted file mode 100644
index 0e9de960d2..0000000000
--- a/lily/include/grob-info.hh
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
-  grob-info.hh -- declare Grob_info
-
-  source file of the GNU LilyPond music typesetter
-
-  (c) 1997--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-*/
-
-
-#ifndef STAFFELEMINFO_HH
-#define STAFFELEMINFO_HH
-
-#include "lily-guile.hh"
-#include "lily-proto.hh"
-#include "parray.hh"
-
-/**
-  Data container for broadcasts.
-  */
-struct Grob_info {
-  Translator * origin_trans_;
-  friend class Engraver;
-
-  Grob * grob_;
-
-public:
-  Music * music_cause ();
-  Link_array<Translator> origin_transes (Translator*) const;
-  Grob_info ();
-};
-
-#endif // STAFFELEMINFO_HH
diff --git a/lily/include/grob-interface.hh b/lily/include/grob-interface.hh
deleted file mode 100644
index 059687ccee..0000000000
--- a/lily/include/grob-interface.hh
+++ /dev/null
@@ -1,32 +0,0 @@
-/*   
-  interface.hh -- declare Interface 
-
-  source file of the GNU LilyPond music typesetter
-
-  (c) 2002--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-
- */
-
-#ifndef INTERFACE_HH
-#define INTERFACE_HH
-
-
-void add_interface (const char * symbol,
-		    const char * descr,
-		    const char * vars);
-
-SCM ly_add_interface (SCM, SCM, SCM); 
-
-#define ADD_INTERFACE(cl,a,b,c) \
-bool cl::has_interface(Grob*me)\
-{\
-  return me->internal_has_interface (ly_symbol2scm (a));\
-}\
-void cl ## _init_ifaces() {\
-  add_interface(a,b,c);\
-}\
-ADD_SCM_INIT_FUNC(cl ## ifaces, cl ## _init_ifaces);\
-
-
-#endif /* INTERFACE_HH */
-
diff --git a/lily/include/grob-pitch-tuple.hh b/lily/include/grob-pitch-tuple.hh
deleted file mode 100644
index b2a734bbd8..0000000000
--- a/lily/include/grob-pitch-tuple.hh
+++ /dev/null
@@ -1,32 +0,0 @@
-/*   
-grob-pitch-tuple.hh -- declare Grob_pitch_tuple
-
-source file of the GNU LilyPond music typesetter
-
-(c) 2001--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-
- */
-
-#ifndef GROB_PITCH_TUPLE_HH
-#define GROB_PITCH_TUPLE_HH
-
-#include "lily-proto.hh"
-#include "pitch.hh"
-#include "moment.hh"
-
-struct Grob_pitch_tuple {
-  Pitch pitch_;
-  Grob *head_;
-  Moment end_;
-
-  Grob_pitch_tuple ();
-  Grob_pitch_tuple (Grob*, Music*, Moment);
-  static int pitch_compare (Grob_pitch_tuple const &, Grob_pitch_tuple const &);
-  static int time_compare (Grob_pitch_tuple const &, Grob_pitch_tuple const &);  
-};
-
-int compare (Grob_pitch_tuple const &, Grob_pitch_tuple const&);
-
-
-#endif /* GROB_PITCH_TUPLE_HH */
-
diff --git a/lily/include/grob.hh b/lily/include/grob.hh
deleted file mode 100644
index 4acfcc45d1..0000000000
--- a/lily/include/grob.hh
+++ /dev/null
@@ -1,174 +0,0 @@
-/*
-  grob.hh -- declare Grob
-
-  source file of the LilyPond music typesetter
-  
-  (c) 1996--2004 Han-Wen Nienhuys
-*/
-
-#ifndef GROB_HH
-#define GROB_HH
-
-#include "parray.hh"
-#include "virtual-methods.hh"
-#include "lily-guile.hh"
-#include "lily-proto.hh"
-#include "smobs.hh"
-#include "dimension-cache.hh"
-#include "grob-interface.hh"
-
-/**
-    for administration of what was done already
-    */
-enum Grob_status {
-  ORPHAN=0,			// not yet added to Paper_score
-  VIRGIN,	
-  PRECALCING,
-  PRECALCED,		// calcs before spacing done
-  POSTCALCING,		// busy calculating. This is used to trap cyclic deps.
-  POSTCALCED,		// after spacing calcs done
-};
-
-typedef void (Grob::*Grob_method_pointer) (void);
-
-
-#define get_grob_property(x) internal_get_grob_property(ly_symbol2scm(x))
-#define set_grob_property(x,y) internal_set_grob_property(ly_symbol2scm(x),y)
-
-/*
-   Basic output object.
-*/
-class Grob  {
-protected:
-  SCM immutable_property_alist_;
-  SCM mutable_property_alist_;
-  friend class Spanner;
-  
-  void substitute_mutable_properties(SCM,SCM);
-public:
-  Grob *original_;
-
-  /**
-    Administration: Where are we?. This is mainly used by Super_element and
-    Grob::calcalute_dependencies ()
-
-    0 means ORPHAN,
-   */
-  char status_;
-
-
-  /*
-    IDEA: make this a global variable. This is the same for all
-    elements, I think it is safe to assume that we will not have
-    scores being formatted multithreadedly.
-   */
-  Paper_score *pscore_;
-  Dimension_cache dim_cache_[NO_AXES];
-
-  Grob (SCM basic_props);
-  Grob (Grob const&);
-  String name () const;
-  
-  /*
-    properties
-   */
-  SCM internal_get_grob_property (SCM) const;
-  void internal_set_grob_property (SCM, SCM val);
-  void add_to_list_property (SCM, SCM);
-  void warning (String)const;
-  void programming_error (String)const;
-  
-  void set_elt_pointer (const char*, SCM val);
-  friend class Property_engraver; //  UGHUGHUGH.
-  /*
-    related classes.
-   */
-  Paper_def *get_paper () const;
-
-  /**
-    add a dependency. It may be the 0 pointer, in which case, it is ignored.
-    */
-  void add_dependency (Grob*);    
-  virtual System * get_system () const;
-  bool linked_b () const;
-
-
-  VIRTUAL_COPY_CONS (Grob);
- 
-  /**
-     Recursively track all dependencies of this Grob.  The
-     status_ field is used as a mark-field.  It is marked with
-     #busy# during execution of this function, and marked with #final#
-     when finished.
-
-     #funcptr# is the function to call to update this element.
-   */
-  void calculate_dependencies (int final, int busy, SCM funcname);
-
-
-  virtual void do_break_processing ();
-  virtual Grob *find_broken_piece (System*) const;
-  virtual void discretionary_processing ();
-  virtual SCM do_derived_mark () const;
-
-  Molecule * get_molecule () const;
-  SCM get_uncached_molecule () const;
-
-  SCM get_property_alist_chain (SCM) const;
-  void suicide ();
-  bool live () const;
-  
-  DECLARE_SCHEME_CALLBACK (preset_extent, (SCM smob, SCM axis));
-  DECLARE_SCHEME_CALLBACK (point_dimension_callback, (SCM smob, SCM axis));
-  DECLARE_SCHEME_CALLBACK (molecule_extent, (SCM smob, SCM axis));
-
-  static SCM ly_set_grob_property (SCM, SCM,SCM);
-  static SCM ly_get_grob_property (SCM, SCM);  
-
-  bool internal_has_interface (SCM intf);
-  static bool has_interface (Grob*me);  
-
-  virtual void handle_broken_dependencies ();
-  virtual void handle_prebroken_dependencies ();
-
-  DECLARE_SMOBS (Grob,foo);
-
-  void init ();
-public:
-  bool is_empty (Axis a) const;
-
-  Interval extent (Grob * refpoint, Axis) const;
- 
-  void translate_axis (Real, Axis);
-  Real relative_coordinate (Grob const* refp, Axis) const;
-  Grob*common_refpoint (Grob const* s, Axis a) const;
-
-
-  // duh. slim down interface here. (todo)
-  bool has_offset_callback_b (SCM callback, Axis)const;
-  void add_offset_callback (SCM callback, Axis);
-  bool has_extent_callback_b (SCM, Axis)const;  
-  void set_extent (SCM , Axis);
-  Real get_offset (Axis a) const;
-  
-  void set_parent (Grob* e, Axis);
-  
-  Grob *get_parent (Axis a) const {   return  dim_cache_[a].parent_; }
-  DECLARE_SCHEME_CALLBACK (fixup_refpoint, (SCM));
-};
-
-DECLARE_UNSMOB(Grob,grob);
-Spanner* unsmob_spanner (SCM );
-Item* unsmob_item (SCM );
-
-Grob*common_refpoint_of_list (SCM elt_list, Grob * , Axis a);
-Grob*common_refpoint_of_array (Link_array<Grob> const&, Grob * , Axis a);
-
-void set_break_subsititution (SCM criterion);
-SCM substitute_mutable_property_alist (SCM alist);
-
-Link_array<Grob> ly_scm2grobs (SCM l);
-SCM ly_grobs2scm (Link_array<Grob> a);
-
-#endif /* GROB_HH */
-
diff --git a/lily/include/group-interface.hh b/lily/include/group-interface.hh
deleted file mode 100644
index 4d4a8c7938..0000000000
--- a/lily/include/group-interface.hh
+++ /dev/null
@@ -1,59 +0,0 @@
-/*   
-  group-interface.hh -- declare Group_interface
-  
-  source file of the GNU LilyPond music typesetter
-  
-  (c) 1999--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-  
- */
-
-#ifndef GROUP_INTERFACE_HH
-#define GROUP_INTERFACE_HH
-
-#include "lily-proto.hh"
-#include "string.hh"
-#include "lily-guile.hh"
-
-#include "grob.hh"
-/**
-   Look at Score element ELT as thing which has a list property called
-   NAME_. Normally the list would contain Grobs, but
-   sometimes it can be different things.
-
-   todo: reename as list_interface?
-*/
-
-struct Group_interface
-{
-public:
-  static int count (Grob*  , String);
-  static void add_thing (Grob*, SCM, SCM);
-  static void add_thing (Grob*, String nm, SCM);
-};
-
-struct Pointer_group_interface : public Group_interface {
-public:
-  static void add_grob (Grob*, SCM nm, Grob*e);
-};
-
-template<class T>
-Link_array<T>
-Pointer_group_interface__extract_grobs (Grob const *elt, T *, const char* name)
-{
-  Link_array<T> arr;
-
-  for (SCM s = elt->get_grob_property (name); gh_pair_p (s); s = gh_cdr (s))
-    {
-      SCM e = gh_car (s);
-      arr.push (dynamic_cast<T*> (unsmob_grob (e)));
-    }
-
-  arr.reverse ();
-  return arr;
-}
-
-
-
-
-#endif /* GROUP_INTERFACE_HH */
-
diff --git a/lily/include/hairpin.hh b/lily/include/hairpin.hh
deleted file mode 100644
index 0daacc5fe5..0000000000
--- a/lily/include/hairpin.hh
+++ /dev/null
@@ -1,25 +0,0 @@
-/*
-  hairpin.hh -- declare Hairpin
-
-  source file of the GNU LilyPond music typesetter
-
-  (c) 1997--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-*/
-
-
-#ifndef HAIRPIN_HH
-#define HAIRPIN_HH
-
-#include "lily-guile.hh"
-#include "lily-proto.hh"
-/**
-  The hairpin symbol. 
- */
-struct Hairpin
-{
-public:
-  DECLARE_SCHEME_CALLBACK (print, (SCM));
-  static bool has_interface (Grob*);
-};
-
-#endif // HAIRPIN_HH
diff --git a/lily/include/hara-kiri-group-spanner.hh b/lily/include/hara-kiri-group-spanner.hh
deleted file mode 100644
index b479711f61..0000000000
--- a/lily/include/hara-kiri-group-spanner.hh
+++ /dev/null
@@ -1,29 +0,0 @@
-/*
-  hara-kiri-vertical-group-spanner.hh -- declare Har_kiri_vertical_group_spanner
-
-  source file of the GNU LilyPond music typesetter
-
-  (c) 1998--2004 Jan Nieuwenhuizen <janneke@gnu.org>
-*/
-
-
-#ifndef HARA_KIRI_VERTICAL_GROUP_SPANNER_HH
-#define HARA_KIRI_VERTICAL_GROUP_SPANNER_HH
-
-#include "lily-guile.hh"
-#include "lily-proto.hh"
-
-class Hara_kiri_group_spanner 
-{
-public:
-  DECLARE_SCHEME_CALLBACK (force_hara_kiri_callback, (SCM ,SCM));
-  DECLARE_SCHEME_CALLBACK (y_extent, (SCM smob, SCM axis));
-  DECLARE_SCHEME_CALLBACK (force_hara_kiri_in_parent_callback, (SCM ,SCM));
-  static void add_element (Grob *me, Grob *e);
-  static bool has_interface (Grob*);
-  static void consider_suicide (Grob*me);
-  static void add_interesting_item (Grob * me , Grob* n);
-};
-
-
-#endif // HARA_KIRI_VERTICAL_GROUP_SPANNER_HH
diff --git a/lily/include/identifier-smob.hh b/lily/include/identifier-smob.hh
deleted file mode 100644
index a81538bd5a..0000000000
--- a/lily/include/identifier-smob.hh
+++ /dev/null
@@ -1,21 +0,0 @@
-/*   
-identifier-smob.hh -- declare identifier smob.
-
-source file of the GNU LilyPond music typesetter
-
-(c) 2002--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-
- */
-
-#ifndef IDENTIFIER_SMOB_HH
-#define IDENTIFIER_SMOB_HH
-
-#include "lily-guile.hh"
-
-
-SCM package_identifier (SCM);
-bool identifier_smob_p (SCM);
-SCM unpack_identifier (SCM);
-
-#endif /* IDENTIFIER_SMOB_HH */
-
diff --git a/lily/include/includable-lexer.hh b/lily/include/includable-lexer.hh
deleted file mode 100644
index ab4f520ac1..0000000000
--- a/lily/include/includable-lexer.hh
+++ /dev/null
@@ -1,54 +0,0 @@
-/*
-  includable-lexer.hh -- declare Includable_lexer
-
-  source file of the LilyPond music typesetter
-
-  (c) 1997--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-*/
-
-#ifndef INCLUDABLE_LEXER_HH
-#define INCLUDABLE_LEXER_HH
-
-#ifndef LEXER_CC
-using namespace std;
-#include <FlexLexer.h>
-#endif
-
-#include "string.hh"
-#include "parray.hh"
-#include "lily-proto.hh"
-
-// GIGA urg!
-typedef struct yy_buffer_state *YY_BUFFER_STATE;
-
-/**
-  an yyFlexLexer child with provisions for inclusion.
- */
-class Includable_lexer : public yyFlexLexer 
-{
-  Array<YY_BUFFER_STATE> state_stack_;
-
-protected:
-  bool  close_input ();
-  Link_array<Source_file> include_stack_;
-  Array<int> char_count_stack_;
-
-public:
-  bool allow_includes_b_;
-  
-  Includable_lexer ();
-  ~Includable_lexer ();
-
-  /// store dependencies for Makefile stuff.
-  Array<String> filename_strings_;
-
-  Source_file* get_source_file () const;
-  void new_input (String s, Sources*);
-  void new_input (String name, String data, Sources*);
-
-  void add_lexed_char (int);
-  char const * here_str0 () const;
-};
-
-
-#endif // INCLUDABLE_LEXER_HH
diff --git a/lily/include/input-file-results.hh b/lily/include/input-file-results.hh
deleted file mode 100644
index 66143c51e4..0000000000
--- a/lily/include/input-file-results.hh
+++ /dev/null
@@ -1,44 +0,0 @@
-/*   
-  file-results.hh -- declare functions for processing one input file.
-  
-  source file of the GNU LilyPond music typesetter
-  
-  (c) 1998--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-  
- */
-
-#ifndef FILE_RESULTS_HH
-#define FILE_RESULTS_HH
-
-#include "lily-proto.hh"
-#include "source.hh"
-#include "parray.hh"
-#include "protected-scm.hh"
-
-class Input_file_results
-{
-public:
-  Sources sources_;
-  Array<String> inclusion_names_;
-  Array<String> target_strings_;
-  Protected_scm header_;
-
-  int score_count_;
-  
-  void do_deps (String);
-
-  Input_file_results (String init, String in, String out);
-  ~Input_file_results ();
-  
-private:
-  /* Make sure we never get an implicit constructor.*/
-  Input_file_results ();
-};
-
-extern Input_file_results* global_input_file;
-
-void do_one_file (String init_string, String in_file, String out_file);
-
-
-#endif /* FILE_RESULTS_HH */
-
diff --git a/lily/include/input-smob.hh b/lily/include/input-smob.hh
deleted file mode 100644
index cc75837d74..0000000000
--- a/lily/include/input-smob.hh
+++ /dev/null
@@ -1,23 +0,0 @@
-/*   
-  input-smob.hh -- declare input smob
-  
-  source file of the GNU LilyPond music typesetter
-  
-  (c) 2000--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-  
- */
-
-#ifndef INPUT_SMOB_HH
-#define INPUT_SMOB_HH
-
-#include "input.hh"
-#include "lily-guile.hh"
-#include "smobs.hh"
-
-SCM make_input (Input spot);
-Input *unsmob_input(SCM);
-
-extern Input dummy_input_global;
-
-#endif /* INPUT_SMOB_HH */
-
diff --git a/lily/include/input.hh b/lily/include/input.hh
deleted file mode 100644
index 710d6b97d8..0000000000
--- a/lily/include/input.hh
+++ /dev/null
@@ -1,41 +0,0 @@
-/*
-  input.hh -- declare Input
-
-  source file of the LilyPond music typesetter
-
-  (c) 1997--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-*/
-
-#ifndef INPUT_HH
-#define INPUT_HH
-
-#include "flower-proto.hh"
-
-/**
-  Base class for anything that records its poisition in the parse file.
- */
-class Input {
-public:
-  char const *defined_str0_ ;
-  Source_file * source_file_;
-    
-  void warning (String) const; // should use member func?
-  void non_fatal_error (String) const;
-  void error (String) const;
-  void message (String) const;
-  void set_spot (Input const &);
-  Input spot () const;
-  String location_string () const;
-  String line_number_string () const;
-
-
-  String file_string ()const;
-  int line_number ()const;
-  int column_number ()const;
-
-  
-  Input (Source_file*, char const*);
-  Input ();
-};
-
-#endif // INPUT_HH
diff --git a/lily/include/interpretation-context-handle.hh b/lily/include/interpretation-context-handle.hh
deleted file mode 100644
index b228881730..0000000000
--- a/lily/include/interpretation-context-handle.hh
+++ /dev/null
@@ -1,35 +0,0 @@
-/*   
-  interpretation-context-handle.hh -- declare  Interpretation_context_handle
-  
-  source file of the GNU LilyPond music typesetter
-  
-  (c) 1999--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-  
- */
-
-#ifndef INTERPRETATION_CONTEXT_HANDLE_HH
-#define INTERPRETATION_CONTEXT_HANDLE_HH
-#include "lily-proto.hh"
-
-class Interpretation_context_handle
-{
-public:
-  ~Interpretation_context_handle ();
-  Interpretation_context_handle ();
-  Interpretation_context_handle* clone () const;
-  void set_translator (Translator_group*);
-  bool try_music (Music *);
-  void operator = (Interpretation_context_handle const&);
-  Interpretation_context_handle (Interpretation_context_handle const&);
-  Translator_group * get_outlet () const;
-
-  int get_count () const;
-  void quit ();
-private:
-  Translator_group * outlet_;
-  void down ();
-  void up (Translator_group*);
-};
-
-#endif /* INTERPRETATION_CONTEXT_HANDLE_HH */
-
diff --git a/lily/include/item.hh b/lily/include/item.hh
deleted file mode 100644
index e64fa4f3fa..0000000000
--- a/lily/include/item.hh
+++ /dev/null
@@ -1,52 +0,0 @@
-/*
-  item.hh -- declare Item
-
-  source file of the GNU LilyPond music typesetter
-
-  (c) 1997--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-*/
-#ifndef ITEM_HH
-#define ITEM_HH
-
-
-#include "box.hh"
-#include "grob.hh"
-#include "drul-array.hh"
-
-
-/**
-  A horizontally fixed size element of the score.
-
-  Item is the datastructure for printables whose width is known
-  before the spacing is calculated
-
-*/
-class Item : public Grob
-{
-  Drul_array<Item*> broken_to_drul_;
-
-public:
-  VIRTUAL_COPY_CONS (Grob);
-  Item (SCM);
-  Item (Item const &);
-
-  static bool breakable_b (Grob *);
-  bool broken_b () const;
-  
-  Direction break_status_dir () const;
-  
-  Item *find_prebroken_piece (Direction) const;
-  Grob *find_broken_piece (System *) const;    
-  virtual System *get_system () const;
-  virtual Paper_column *get_column () const;
-  virtual void handle_prebroken_dependencies ();
-  static  bool has_interface (Grob *);
-protected:
-  virtual void discretionary_processing ();
-  void copy_breakable_items ();
-  virtual SCM do_derived_mark () const;
-};
-
-
-
-#endif
diff --git a/lily/include/keyword.hh b/lily/include/keyword.hh
deleted file mode 100644
index 06d86a4142..0000000000
--- a/lily/include/keyword.hh
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
-  keyword.hh -- part of GNU LilyPond
-
-  (c) 1996--2004 Han-Wen Nienhuys
-*/
-
-#ifndef KEYWORD_HH
-#define KEYWORD_HH
-
-#include "array.hh"
-
-/* for the keyword table */
-struct Keyword_ent
-{
-  char const *name_;
-  int     tokcode_;
-};
-
-/*
-  junkme, use  hash table.
- */
-struct Keyword_table
-{
-  Array<Keyword_ent> table_;
-
-  Keyword_table (Keyword_ent *);
-  int     lookup (char const *s) const;
-};
-
-
-#endif // KEYWORD_HH
-
diff --git a/lily/include/kpath.hh b/lily/include/kpath.hh
deleted file mode 100644
index b5f4f802ba..0000000000
--- a/lily/include/kpath.hh
+++ /dev/null
@@ -1,22 +0,0 @@
-/*   
-kpath.hh -- declare kpath funcs.
-
-source file of the GNU LilyPond music typesetter
-
-  (c) 2000--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-
- */
-
-#ifndef KPATH_HH
-#define KPATH_HH
-
-
-
-String kpathsea_find_afm (char const * name);
-String kpathsea_find_tfm (char const * name);
-void init_kpath (char *av0);
-
-
-
-#endif /* KPATH_HH */
-
diff --git a/lily/include/least-squares.hh b/lily/include/least-squares.hh
deleted file mode 100644
index 08fbdd9cf0..0000000000
--- a/lily/include/least-squares.hh
+++ /dev/null
@@ -1,19 +0,0 @@
-/*
-  leastsquare.hh -- part of GNU LilyPond
-
-  (c) 1996--2004 Han-Wen Nienhuys
-*/
-
-#ifndef LEASTSQUARE_HH
-#define LEASTSQUARE_HH
-#include "array.hh"
-#include "offset.hh"
-
-
-/**
-  Least squares minimisation in 2 variables.
-  */
-void minimise_least_squares (Real * coef, Real * offset, Array<Offset> const &);
-
-#endif // LEASTSQUARE_HH
-
diff --git a/lily/include/ligature-engraver.hh b/lily/include/ligature-engraver.hh
deleted file mode 100644
index aa09d02297..0000000000
--- a/lily/include/ligature-engraver.hh
+++ /dev/null
@@ -1,52 +0,0 @@
-/*   
-  ligature-engraver.hh -- declare Ligature_engraver
-  
-  source file of the GNU LilyPond music typesetter
-  
-  (c) 2002--2004 Juergen Reuter <reuter@ipd.uka.de>
-  
- */
-#ifndef LIGATURE_ENGRAVER_HH
-#define LIGATURE_ENGRAVER_HH
-
-#include "engraver.hh"
-
-class Ligature_engraver : public Engraver
-{
-protected:
-  virtual void stop_translation_timestep ();
-  virtual void finalize ();
-
-  virtual void acknowledge_grob (Grob_info);
-  virtual bool try_music (Music*);
-  virtual void process_music ();
-  virtual Spanner *create_ligature_spanner (); /* abstract method */
-  virtual void typeset_ligature (Spanner *ligature,
-				 Array<Grob_info> primitives); /* abstract method */
-  virtual Spanner *current_ligature ();
-  SCM brew_ligature_primitive_proc;
-
-public:
-  TRANSLATOR_DECLARATIONS(Ligature_engraver);
-
-private:
-  Drul_array<Music*> reqs_drul_;
-  
-  Spanner *ligature_;
-  Array<Grob_info> primitives_;
-
-  Spanner *finished_ligature_;
-  Array<Grob_info> finished_primitives_;
-
-  Music *prev_start_req_;
-
-  // moment where ligature started.
-  Moment ligature_start_mom_;
-
-  Grob *last_bound_;
-
-  void override_molecule_callback ();
-  void revert_molecule_callback ();
-};
-
-#endif // LIGATURE_ENGRAVER_HH
diff --git a/lily/include/lily-guile.hh b/lily/include/lily-guile.hh
deleted file mode 100644
index 443713b6b6..0000000000
--- a/lily/include/lily-guile.hh
+++ /dev/null
@@ -1,315 +0,0 @@
-/*
-  lily-guile.hh encapsulate guile
-
-  source file of the GNU LilyPond music typesetter
-
-  (c) 1998--2004 Jan Nieuwenhuizen <janneke@gnu.org>
-*/
-
-#ifndef LILY_GUILE_HH
-#define LILY_GUILE_HH
-
-
-/*
-  TODO: the  GH interface is deprecated as of GUILE 1.6
-
-  Remove all gh_XXX functions.
- */
-#include <guile/gh.h>
-
-
-/* GUILE only includes version in headers (libguile/version.h) as of
-   1.5.x.  For some strange reason, they call it SCM.*VERSION.
-
-   Not including config.h here, saves a lot of unnecessary
-   recompiles. */
-#include <libguile.h>
-
-#ifndef GUILE_MAJOR_VERSION
-#ifdef SCM_MAJOR_VERSION
-#define GUILE_MAJOR_VERSION SCM_MAJOR_VERSION
-#define GUILE_MINOR_VERSION SCM_MINOR_VERSION
-#define GUILE_PATCH_LEVEL SCM_MICRO_VERSION
-#else
-#include "config.h"
-#endif
-#endif
-
-#include "drul-array.hh"
-
-
-/* Guile 1.4.x compatibility */
-#if GUILE_MINOR_VERSION < 5
-
-#define scm_t_bits scm_bits_t
-
-#define fix_guile_1_4_gh_scm2newstr(str, lenp) gh_scm2newstr (str, (int*)lenp)
-#define gh_scm2newstr(str, lenp) fix_guile_1_4_gh_scm2newstr (str, lenp)
-
-#define fix_guile_1_4_scm_primitive_eval(form) scm_eval_3 (form, 1, SCM_EOL)
-#define scm_primitive_eval(form) fix_guile_1_4_scm_primitive_eval (form)
-
-#define scm_int2num(x) scm_long2num (x)  
-#define scm_current_module() (SCM)0
-#define scm_set_current_module(x) (void)x
-#define scm_c_resolve_module(x) (SCM)0
-
-inline SCM scm_c_make_vector  (int k, SCM val) {
-  return scm_make_vector (SCM_MAKINUM (k), val);
-}
-#define scm_c_define_gsubr scm_make_gsubr
-#define scm_c_eval_string(str) gh_eval_str ((char*)str)
-#define scm_remember_upto_here_1(s) scm_remember (&s)
-#define scm_gc_protect_object scm_protect_object
-#define scm_gc_unprotect_object scm_unprotect_object
-#define scm_list_n scm_listify
-#define SCM_STRING_CHARS SCM_CHARS
-#define SCM_STRING_LENGTH SCM_LENGTH
-#define SCM_SYMBOL_CHARS SCM_CHARS
-#define SCM_SYMBOL_LENGTH SCM_LENGTH
-#define SCM_VECTOR_LENGTH SCM_LENGTH
-
-#define SMOB_FREE_RETURN_VAL(CL) sizeof(CL) 
-#define scm_done_free(x) 
-#endif
-
-#ifndef SMOB_FREE_RETURN_VAL
-#define SMOB_FREE_RETURN_VAL(CL) 0
-#endif
-
-
-#if GUILE_MINOR_VERSION < 7
-#define scm_gc_unregister_collectable_memory(a,b,c) scm_done_free(b)
-#define scm_gc_register_collectable_memory(a,b,c) scm_done_malloc(b)
-#define SCM_VECTOR_REF(v,i) (SCM_VELTS((v))[(i)])
-#define scm_hash_table_p scm_vector_p 
-
-#endif
-
-#include "direction.hh"
-#include "flower-proto.hh"
-
-#ifndef SCM_PACK
-#define SCM_PACK(x) ((SCM) x)
-
-#endif
-#ifndef SCM_UNPACK
-#define SCM_UNPACK(x) ( x)
-#endif
-
-/*
-  conversion functions follow the GUILE naming convention, i.e.
-
-    A ly_B2A (B b);
- */
-
-SCM ly_last (SCM list);
-SCM ly_write2scm (SCM s);
-SCM ly_deep_copy (SCM);
-SCM ly_truncate_list (int k, SCM l );
-
-
-/*
-  Unreliable on gcc2
- */
-// #define CACHE_SYMBOLS
-
-
-#if (__GNUC__ > 2)
-/*
-  todo: should add check for x86 as well
- */
-#define CACHE_SYMBOLS
-#endif
-
-
-#ifdef CACHE_SYMBOLS
-
-
-/*
-  Using this trick we cache the value of gh_symbol2scm ("fooo") where
-  "fooo" is a constant string. This is done at the cost of one static
-  variable per ly_symbol2scm() use, and one boolean evaluation for
-  every call.
-
-  The overall speedup of lily is about 5% on a run of wtk1-fugue2
-
-*/
-#define ly_symbol2scm(x) ({ static SCM cached;  \
- SCM value = cached;  /* We store this one locally, since G++ -O2 fucks up else */   \
- if ( __builtin_constant_p ((x)))\
- {  if (!cached)\
-     value = cached =  scm_gc_protect_object (gh_symbol2scm((x)));\
- } else\
-  value = gh_symbol2scm ((char*) (x)); \
-  value; })
-#else
-inline SCM ly_symbol2scm(char const* x) { return gh_symbol2scm((x)); }
-#endif 
-
-
-
-String ly_scm2string (SCM s);
-String ly_symbol2string (SCM);
-SCM ly_offset2scm (Offset);
-Offset ly_scm2offset (SCM);
-SCM ly_assoc_chain (SCM key, SCM achain);
-SCM ly_assoc_cdr (SCM key, SCM alist);
-Interval ly_scm2interval (SCM);
-Drul_array<Real> ly_scm2realdrul (SCM);
-Slice int_list_to_slice (SCM l);
-SCM ly_interval2scm (Drul_array<Real>);
-
-Real robust_scm2double (SCM, double);
-int robust_scm2int (SCM, int);
-Drul_array<Real> robust_scm2drul (SCM, Drul_array<Real>);
-Interval robust_scm2interval (SCM, Drul_array<Real>);
-Offset robust_scm2offset (SCM, Offset);
-
-SCM ly_quote_scm (SCM s);
-bool type_check_assignment (SCM val, SCM sym,  SCM type_symbol) ;
-String print_scm_val (SCM val);
-SCM ly_number2string (SCM s);
-
-SCM parse_symbol_list (char const *);
-SCM robust_list_ref(int i, SCM l);
-SCM alist_to_hashq (SCM);
-
-inline SCM ly_cdr (SCM x) { return SCM_CDR (x); }
-inline SCM ly_car (SCM x) { return SCM_CAR (x); } 
-inline SCM ly_caar (SCM x) { return SCM_CAAR (x); }
-inline SCM ly_cdar (SCM x) { return SCM_CDAR (x); }
-inline SCM ly_cadr (SCM x) { return SCM_CADR (x); }
-inline SCM ly_cddr (SCM x) { return SCM_CDDR (x); }
-inline SCM ly_caddr (SCM x) { return SCM_CADDR (x); }
-inline SCM ly_cdadr (SCM x) { return SCM_CDADR (x); }
-inline SCM ly_caadr (SCM x) { return SCM_CAADR (x); }
-/* inserts at front, removing dublicates */
-inline SCM ly_assoc_front_x(SCM alist, SCM key, SCM val)
-{
-  return scm_acons(key, val, scm_assoc_remove_x (alist, key));
-}
-#ifdef PARANOID
-#define gh_pair_p ly_pair_p
-bool ly_pair_p (SCM x);
-#else
-inline bool ly_pair_p (SCM x) { return SCM_NFALSEP (scm_pair_p (x)); }
-#endif
-inline bool ly_symbol_p (SCM x) { return SCM_SYMBOLP (x); }
-inline bool ly_number_p (SCM x) { return SCM_NUMBERP (x); }
-inline bool ly_procedure_p (SCM x) { return SCM_NFALSEP (scm_procedure_p (x)); }
-
-/*
-  display and print newline.
- */
-extern "C" { 
-void ly_display_scm (SCM s);
-}
-
-#include "array.hh"
-
-void read_lily_scm_file (String);
-void ly_init_guile ();
-
-bool is_direction (SCM s);
-bool is_number_pair (SCM);
-bool is_axis (SCM);
-
-/*
-  these conversion functions also do a typecheck on the argument, and
-  return a default value if S has the wrong type.
-*/
-
-Direction to_dir (SCM s);
-bool to_boolean (SCM s);
-
-void init_ly_protection ();
-unsigned int ly_scm_hash (SCM s);
-
-SCM index_get_cell (SCM cell, Direction d);
-SCM index_set_cell (SCM cell, Direction d, SCM val);
-
-SCM ly_snoc (SCM s, SCM list);
-SCM ly_split_list (SCM s, SCM list);
-SCM ly_unique (SCM list);
-
-
-
-/*
-  snarfing.
- */
-void add_scm_init_func (void (*) ());
-
-extern "C" {
-typedef SCM (*Scheme_function_unknown) ();
-}
-
-#if __GNUC__ > 2 || __GNUC_MINOR__ >= 96
-typedef SCM (*Scheme_function_0) ();
-typedef SCM (*Scheme_function_1) (SCM);
-typedef SCM (*Scheme_function_2) (SCM,SCM);	 
-typedef SCM (*Scheme_function_3) (SCM,SCM, SCM);	 
-#else
-typedef SCM (*Scheme_function_0) (...);
-typedef SCM (*Scheme_function_1) (...);
-typedef SCM (*Scheme_function_2) (...);
-typedef SCM (*Scheme_function_3) (...);
-#endif
-
-#define DECLARE_SCHEME_CALLBACK(NAME,ARGS) \
-	static SCM NAME ARGS; \
-	static SCM NAME ## _proc
-
-#define MAKE_SCHEME_CALLBACK(TYPE, FUNC, ARGCOUNT) \
-SCM TYPE :: FUNC ## _proc;\
-void								\
-TYPE ## _ ## FUNC ## _init_functions ()					\
-{								\
-  TYPE :: FUNC ## _proc = gh_new_procedure ## ARGCOUNT  ## _0 (#TYPE "::" #FUNC, \
- ((Scheme_function_ ## ARGCOUNT)TYPE :: FUNC)); 				\
-  scm_c_export (#TYPE "::" #FUNC, NULL);\
-}								\
-								\
-ADD_SCM_INIT_FUNC (TYPE ## _ ## FUNC ## _callback, TYPE ## _ ## FUNC ## _init_functions);	\
-
-
-void ly_add_function_documentation (SCM proc, char const * fname,
-				    char const * varlist,
-				    char const * doc);
-
-#define ADD_SCM_INIT_FUNC(name, func)\
-class name ## _scm_initter {			\
-public:\
-  name ## _scm_initter ()			\
-  {						\
-    add_scm_init_func (func);		\
-  }						\
-} _ ## name ## _scm_initter;			\
-/* end define */
-
-#define LY_DEFINE_WITHOUT_DECL(INITPREFIX, FNAME, PRIMNAME, REQ, OPT, VAR, ARGLIST, DOCSTRING) \
-SCM FNAME ## _proc;\
-void \
-INITPREFIX ## init ()\
-{\
- FNAME ## _proc \
-    = scm_c_define_gsubr (PRIMNAME,REQ, OPT, VAR, (Scheme_function_unknown) FNAME);\
-  ly_add_function_documentation ( FNAME ## _proc ,PRIMNAME, #ARGLIST,  DOCSTRING);\
-  scm_c_export (PRIMNAME,NULL);\
-}\
-ADD_SCM_INIT_FUNC (INITPREFIX ## init_unique_prefix, INITPREFIX ## init);\
-SCM \
-FNAME ARGLIST\
-
-
-#define LY_DEFINE(FNAME, PRIMNAME, REQ, OPT, VAR, ARGLIST, DOCSTRING) \
-SCM FNAME ARGLIST ; \
-LY_DEFINE_WITHOUT_DECL(FNAME, FNAME, PRIMNAME, REQ, OPT, VAR, ARGLIST, DOCSTRING) 
-
-
-#define LY_DEFINE_MEMBER_FUNCTION(CLASS, FNAME, PRIMNAME, REQ, OPT, VAR, ARGLIST, DOCSTRING) \
-SCM FNAME ARGLIST ; \
-LY_DEFINE_WITHOUT_DECL(CLASS ## FNAME,  CLASS::FNAME, PRIMNAME, REQ, OPT, VAR, ARGLIST, DOCSTRING) 
-
-
-#endif /* LILY_GUILE_HH */
diff --git a/lily/include/lily-proto.hh b/lily/include/lily-proto.hh
deleted file mode 100644
index b085da12d1..0000000000
--- a/lily/include/lily-proto.hh
+++ /dev/null
@@ -1,163 +0,0 @@
-/*
- lily-proto.hh -- declare class names.
-
- source file of the GNU LilyPond music typesetter
-
-  (c) 1997--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-*/
-
-#ifndef LILY_PROTO_HH
-#define LILY_PROTO_HH
-#include "flower-proto.hh"
-
-
-
-
-class Adobe_font_metric;
-class All_font_metrics;
-class Audio_column;
-class Audio_dynamic;
-class Audio_element;
-class Audio_instrument;
-class Audio_item;
-class Audio_key;
-class Audio_note;
-class Audio_piano_pedal;
-class Audio_staff;
-class Audio_tempo;
-class Audio_text;
-class Audio_tie;
-class Audio_time_signature;
-class Auto_change_iterator;
-class Auto_change_music;
-class Axis_group_engraver;
-class Bar_engraver;
-class Bar_req_collect_engraver;
-class Base_span_bar_engraver;
-class Beaming_info_list;
-class Bezier;
-class Bezier_bow;
-class Break_algorithm;
-class Change_iterator;
-class Change_translator;
-class Chord_tremolo_iterator;
-class Cluster_engraver;
-class Column_x_positions;
-class Context_specced_music;
-class Engraver;
-class Engraver;
-class Engraver_group_engraver;
-class Folded_repeat_iterator;
-class Font_metric;
-class Font_size_engraver;
-class Global_translator;
-class Gourlay_breaking;
-class Grace_engraver_group;
-class Grace_iterator;
-class Grace_music;
-class Grace_performer_group;
-class Hara_kiri_engraver;
-class Hara_kiri_line_group_engraver;
-class Includable_lexer;
-class Input_file_results;
-class Input;
-class Item;
-class Key_performer;
-class Keyword_ent;
-class Keyword_table;
-class Ligature_engraver;
-class Ligature_bracket_engraver;
-class Line_group_engraver_group;
-class System;
-class Local_key_item;
-class Lookup;
-class Lyric_combine_music;
-class Lyric_combine_music_iterator;
-class Lyric_engraver;
-class Lyric_performer;
-class Lyric_phrasing_engraver;
-class Mensural_ligature_engraver;
-class Midi_chunk;
-class Midi_def;
-class Midi_duration;
-class Midi_dynamic;
-class Midi_header;
-class Midi_instrument;
-class Midi_item;
-class Midi_key;
-class Midi_note;
-class Midi_note_event;
-class Midi_note_off;
-class Midi_piano_pedal;
-class Midi_stream;
-class Midi_tempo;
-class Midi_text;
-class Midi_time_signature;
-class Midi_track;
-class Molecule;
-class Moment;
-class Music;
-class Music_iterator;
-class Music_list;
-class Music_output;
-class Music_output_def;
-class Music_sequence;
-class Music_wrapper;
-class Music_wrapper_iterator;
-class Pitch;
-class My_lily_lexer;
-class Note_performer;
-class Output_property;
-class Paper_column;
-class Paper_def;
-class Paper_outputter;
-class Paper_score;
-class Paper_stream;
-class Performance;
-class Performer;
-class Performer_group_performer;
-class Piano_bar_engraver;
-class Pitch_squash_engraver;
-class Property_iterator;
-class Rational;
-class Relative_octave_music;
-class Repeated_music;
-class Event;
-class Event_chord;
-class Event_chord_iterator;
-class Scaled_font_metric;
-class Scheme_hash_table;
-class Score;
-class Grob;
-class Score_engraver;
-class Score_performer;
-class Sequential_music;
-class Sequential_music_iterator;
-class Simple_music_iterator;
-class Simple_spacer;
-class Simultaneous_music;
-class Simultaneous_music_iterator;
-class Slur_bezier_bow;
-class Span_score_bar_engraver;
-class Spanner;
-class Staff_group_bar_engraver;
-class Staff_performer;
-class Swallow_engraver;
-class Swallow_performer;
-class Tempo_performer;
-class Tex_font_metric;
-class Tie;
-class Tie_performer;
-class Time_scaled_music;
-class Time_scaled_music_iterator;
-class Time_signature_performer;
-class Timing_engraver;
-class Timing_translator;
-class Translation_property;
-class Translator;
-class Translator_change;
-class Translator_group;
-class Transposed_music;
-class Type_swallow_translator;
-class yyFlexLexer;
-#endif // LILY_PROTO_HH;
diff --git a/lily/include/lily-version.hh b/lily/include/lily-version.hh
deleted file mode 100644
index 8a2670b4ac..0000000000
--- a/lily/include/lily-version.hh
+++ /dev/null
@@ -1,21 +0,0 @@
-/*   
-  lily-version.hh -- declare version strings
-  
-  source file of the GNU LilyPond music typesetter
-  
-  (c) 1999--2004 Jan Nieuwenhuizen <janneke@gnu.org>
-  
- */
-
-#ifndef LILY_VERSION_HH
-#define LILY_VERSION_HH
-
-#include "string.hh"
-
-String version_string ();
-String gnu_lilypond_string ();
-String gnu_lilypond_version_string ();
-
-#endif // LILY_VERSION_HH
-
-
diff --git a/lily/include/lilypond-input-version.hh b/lily/include/lilypond-input-version.hh
deleted file mode 100644
index 1d873a038c..0000000000
--- a/lily/include/lilypond-input-version.hh
+++ /dev/null
@@ -1,31 +0,0 @@
-/*
-  lilypond-version.hh -- declare LilyPond_version
-
-  source file of the GNU LilyPond music typesetter
-
-  (c) 1998--2004 Jan Nieuwenhuizen <janneke@gnu.org>
-
-*/
-
-#ifndef LILYPOND_VERSION_HH
-#define LILYPOND_VERSION_HH
-
-#include "string.hh"
-
-struct Lilypond_version 
-{
-  Lilypond_version (int major, int minor, int patch);
-  Lilypond_version (String str);
-
-  String to_string () const;
-  operator int () const;
-
-  int major_;
-  int minor_;
-  int patch_;
-  String extra_patch_string_;
-};
-
-extern Lilypond_version oldest_version;
-
-#endif // LILYPOND_VERSION_HH
diff --git a/lily/include/line-group-group-engraver.hh b/lily/include/line-group-group-engraver.hh
deleted file mode 100644
index d8a3fc0603..0000000000
--- a/lily/include/line-group-group-engraver.hh
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
-  line-group-engraver.hh -- declare Line_group_engraver
-
-  source file of the GNU LilyPond music typesetter
-
-  (c) 1997--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-*/
-
-
-#ifndef LINE_GROUP_GRAV_HH
-#define LINE_GROUP_GRAV_HH
-
-#include "engraver-group-engraver.hh"
-#include "lily-proto.hh"
-
-/**
-  Engravers put elements on the same or lowel level in a line.
-
-  DEPRECATED.
-  */
-class Line_group_engraver_group : public Engraver_group_engraver
-{
-protected:
-  Spanner *staffline_;   
-
-  virtual void create_line_spanner ();
-  virtual void initialize ();
-  virtual void finalize ();
-  virtual void typeset_grob (Grob*);
-public:
-  TRANSLATOR_DECLARATIONS(Line_group_engraver_group);
-};
-
-
-#endif // LINE_GROUP_GRAV_HH
-
diff --git a/lily/include/line-interface.hh b/lily/include/line-interface.hh
deleted file mode 100644
index 0bf56707a0..0000000000
--- a/lily/include/line-interface.hh
+++ /dev/null
@@ -1,25 +0,0 @@
-/*   
-line-interface.hh -- declare 
-
-source file of the GNU LilyPond music typesetter
-
-(c) 2004 Han-Wen Nienhuys <hanwen@xs4all.nl>
-
- */
-
-#ifndef LINE_INTERFACE_HH
-#define LINE_INTERFACE_HH
-
-#include "lily-proto.hh"
-
-struct Line_interface
-{
-  static Molecule line (Grob *me, Offset from, Offset to);
-  static bool has_interface (Grob*);
-  static Molecule make_dashed_line (Real th, Offset from, Offset to, Real, Real);
-  static Molecule make_line (Real th, Offset from, Offset to);
-};
-
-#endif /* LINE_INTERFACE_HH */
-
-
diff --git a/lily/include/line-spanner.hh b/lily/include/line-spanner.hh
deleted file mode 100644
index 4dda796de4..0000000000
--- a/lily/include/line-spanner.hh
+++ /dev/null
@@ -1,28 +0,0 @@
-/*
-  line-spanner.hh -- declare Line_spanner
-
-  source file of the GNU LilyPond music typesetter
-
-  (c) 2000--2004 Jan Nieuwenhuizen <janneke@gnu.org>
-*/
-
-
-#ifndef LINE_SPANNER_HH
-#define LINE_SPANNER_HH
-
-#include "lily-guile.hh"
-
-class Line_spanner
-{
-public:
-  DECLARE_SCHEME_CALLBACK (print, (SCM));
-  DECLARE_SCHEME_CALLBACK(after_line_breaking, (SCM));  
-  static Molecule line_molecule (Grob* me, Offset f, Offset t);
-  static bool has_interface (Grob*);
-
-private:
-  static Offset get_broken_offset (Grob *me, Direction dir);
-  static Offset broken_trend_offset (Grob *me, Direction dir);
-};
-
-#endif /* LINE_SPANNER_HH */
diff --git a/lily/include/lookup.hh b/lily/include/lookup.hh
deleted file mode 100644
index a86be78852..0000000000
--- a/lily/include/lookup.hh
+++ /dev/null
@@ -1,38 +0,0 @@
-/*
-  lookup.hh -- declare Lookup
-
-  source file of the GNU LilyPond music typesetter
-
-  (c) 1997--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-  Jan Nieuwenhuizen <janneke@gnu.org>
-*/
-
-#ifndef LOOKUP_HH
-#define LOOKUP_HH
-
-#include "string.hh"
-#include "molecule.hh"
-#include "flower-proto.hh"
-#include "direction.hh"
-#include "box.hh"
-
-struct Lookup
-{
-  static Molecule dot (Offset p, Real radius);
-  static Molecule bracket (Axis a, Interval iv, Real thick, Real protude, Real blot);
-  static Molecule accordion (SCM arg, Real interline_f, Font_metric*fm);
-  static Molecule round_filled_polygon (Array<Offset> points, Real blotdiameter);
-  static Molecule frame (Box b, Real thick, Real blot);
-  static Molecule slur (Bezier controls, Real cthick, Real thick);
-  static Molecule bezier_sandwich (Bezier top_curve, Bezier bottom_curve);
-  static Molecule beam (Real slope, Real width, Real thick, Real blot);
-  static Molecule dashed_slur (Bezier, Real thick, Real dash);
-  static Molecule blank (Box b);
-  static Molecule filled_box (Box b);
-  static Molecule round_filled_box (Box b, Real blotdiameter);
-  static Molecule repeat_slash (Real w, Real slope, Real th);
-  static Molecule horizontal_line (Interval w, Real th);
-  static Molecule triangle (Interval, Real, Real);
-};
-
-#endif // LOOKUP_HH
diff --git a/lily/include/ly-modules.hh b/lily/include/ly-modules.hh
deleted file mode 100644
index 6a05cf9639..0000000000
--- a/lily/include/ly-modules.hh
+++ /dev/null
@@ -1,25 +0,0 @@
-/*
-  ly-modules.hh -- declare  module related helper functions 
-
- source file of the GNU LilyPond music typesetter
-
- (c) 2002--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-
- */
-
-#ifndef LY_MODULES_HH
-#define LY_MODULES_HH
-
-#include "lily-guile.hh"
-
-SCM ly_make_anonymous_module ();
-void ly_copy_module_variables (SCM dest, SCM src);
-SCM ly_module_to_alist (SCM mod);
-SCM ly_module_lookup (SCM module, SCM sym);
-SCM ly_module_symbols (SCM mod);
-void  ly_reexport_module (SCM mod);
-inline bool ly_module_p (SCM x) { return SCM_MODULEP(x); }
-void ly_clear_anonymous_modules ();
-
-#endif /* LY_MODULES_HH */
-
diff --git a/lily/include/ly-smobs.icc b/lily/include/ly-smobs.icc
deleted file mode 100644
index 4259b862f1..0000000000
--- a/lily/include/ly-smobs.icc
+++ /dev/null
@@ -1,109 +0,0 @@
-/*   
-  ly-smobs.icc -- implement smob glue. 
-  
-  source file of the GNU LilyPond music typesetter
-  
-  (c)  1999--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
- */
-
-#ifndef LY_SMOBS_ICC
-#define LY_SMOBS_ICC
-
-#include "smobs.hh"
-
-
-#define IMPLEMENT_TYPE_P(CL, FUNCNAME)\
-void init_type_ ## CL ()\
-{\
-  SCM subr = scm_c_define_gsubr (FUNCNAME, 1, 0, 0, (Scheme_function_unknown) CL::smob_p);\
-  ly_add_function_documentation (subr, FUNCNAME, "(SCM x)", "Check if @var{x} is a " #CL " object");\
-  scm_c_export (FUNCNAME, NULL);\
-}\
-ADD_SCM_INIT_FUNC (init_type_ ## CL, init_type_ ## CL)
-
-#ifndef SCM_CELL_TYPE
-#define SCM_CELL_TYPE(X) SCM_CAR (X)
-#endif
-
-#ifndef SCM_CELL_WORD_1
-#define SCM_CELL_WORD_1(X) SCM_CDR (X)
-#endif
-
-
-
-#define IMPLEMENT_SIMPLE_SMOBS(CL)				\
-scm_t_bits CL::smob_tag_;                                       \
-SCM								\
-CL::smob_p (SCM s)						\
-{								\
-  if (SCM_NIMP (s) && SCM_CELL_TYPE (s) == smob_tag_)		\
-    return SCM_BOOL_T;						\
-  else								\
-    return SCM_BOOL_F;						\
-								\
-}								\
-void								\
-CL::init_smobs ()						\
-{								\
-  smob_tag_ = scm_make_smob_type (#CL, 0);                      \
-  scm_set_smob_mark (smob_tag_, CL::mark_smob);                 \
-  scm_set_smob_free (smob_tag_, CL::free_smob);                 \
-  scm_set_smob_print (smob_tag_, CL::print_smob);               \
-  scm_set_smob_equalp (smob_tag_, CL::equal_p);                 \
-}								\
-SCM CL::smobbed_self () const					\
-{								\
-  SCM s;							\
-  s = gh_cons (SCM_PACK (CL::smob_tag_), SCM_PACK (this));	\
-  scm_gc_register_collectable_memory ((CL*)this, sizeof (CL), #CL " smob");				\
-								\
-  return s;							\
-}								\
-size_t  							\
-CL::free_smob (SCM ses)						\
-{								\
-  CL * s = (CL*) SCM_CDR (ses);					\
-  delete s;							\
-  scm_gc_unregister_collectable_memory (s, sizeof (CL), #CL " smob");  \
-  return SMOB_FREE_RETURN_VAL(CL);\
-}\
-ADD_SCM_INIT_FUNC (CL, CL::init_smobs)
-
-#define IMPLEMENT_SMOBS(CL)							\
-IMPLEMENT_SIMPLE_SMOBS (CL)							\
-SCM										\
-CL::smobify_self ()								\
-{										\
-  SCM s =   unprotected_smobify_self ();\
-  scm_gc_protect_object (s);\
-  return s;\
-}\
-SCM										\
-CL::unprotected_smobify_self ()								\
-{										\
-  /*										\
-    This is local. We don't assign to self_scm_ directly, to assure		\
-    that S isn't GC-ed from under us.						\
-										\
-    We don't use smobbed_self () to ensure that mark_smob () doesn't have to	\
-    deal half-initialized objects: scm_done_malloc ( ) might trigger GC.		\
-    the warning in smobs.hh is just to be doubleplus goodly sure		\
-   */										\
-  SCM s;\
-  SCM_NEWSMOB (s, CL::smob_tag_, this);\
-  self_scm_ = s;								\
- scm_gc_register_collectable_memory (this, sizeof (CL), #CL " smob");							\
-  return s;									\
-}
-
-#define IMPLEMENT_DEFAULT_EQUAL_P(CL)		\
-SCM						\
-CL::equal_p (SCM a , SCM b)			\
-{						\
-  return a == b ? SCM_BOOL_T : SCM_BOOL_F;	\
-}
-
-
-#endif /* LY_SMOBS_ICC */
-
-
diff --git a/lily/include/lyric-combine-music.hh b/lily/include/lyric-combine-music.hh
deleted file mode 100644
index a64f42c694..0000000000
--- a/lily/include/lyric-combine-music.hh
+++ /dev/null
@@ -1,27 +0,0 @@
-/*   
-  lyric-combine-music.hh -- declare Lyric_combine_music
-  
-  source file of the GNU LilyPond music typesetter
-  
-  (c) 1999--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-  
- */
-
-#ifndef LYRIC_COMBINE_MUSIC_HH
-#define LYRIC_COMBINE_MUSIC_HH
-#include "music.hh"
-
-
-class Lyric_combine_music : public Music
-{
-public:
-  Music * get_music () const;
-  Music * get_lyrics () const;
-  
-  Lyric_combine_music ();
-
-  VIRTUAL_COPY_CONS (Music);
-  virtual Moment get_length () const;
-};
-#endif /* LYRIC_COMBINE_MUSIC_HH */
-
diff --git a/lily/include/lyric-extender.hh b/lily/include/lyric-extender.hh
deleted file mode 100644
index eb8f60732a..0000000000
--- a/lily/include/lyric-extender.hh
+++ /dev/null
@@ -1,37 +0,0 @@
-
-/*
-  extender-spanner.hh -- part of GNU LilyPond
-
-  (c) 1998--2004 Jan Nieuwenhuizen <janneke@gnu.org>
-*/
-
-#ifndef EXTENDER_SPANNER_HH
-#define EXTENDER_SPANNER_HH
-
-#include "spanner.hh"
-
-/*
-
-  Extenders must be entered manually for now.
-
-  Although it would be possible for Lily to determine where to
-  put extender lines, it's quite a tricky thing to do.  Also,
-  this would demand quite strict lyrics entries.
-
-  Note: the extender is only used for one-syllable words, or
-  for on a word's last syllable.  The extender should be aligned
-  with the left side of the last note of the melissima, and not
-  extend beond, lasting the whole duration of the melissima
-
- */
-
-class Lyric_extender
-{
-public:
-  static bool is_visible (Grob*);
-  static bool has_interface (Grob*);
-  DECLARE_SCHEME_CALLBACK (print, (SCM ));
-};
-
-#endif // EXTENDER_SPANNER_HH
-
diff --git a/lily/include/lyric-hyphen.hh b/lily/include/lyric-hyphen.hh
deleted file mode 100644
index 0d247783dc..0000000000
--- a/lily/include/lyric-hyphen.hh
+++ /dev/null
@@ -1,21 +0,0 @@
-/*
-  hyphen-spanner.hh -- part of GNU LilyPond
-
-  (c) 1999--2004 Glen Prideaux <glenprideaux@iname.com>
-*/
-
-#ifndef HYPHEN_SPANNER_HH
-#define HYPHEN_SPANNER_HH
-
-#include "spanner.hh"
-
-struct Hyphen_spanner 
-{
-public:
-  DECLARE_SCHEME_CALLBACK(set_spacing_rods, (SCM));
-  bool has_interface (Grob*);
-  DECLARE_SCHEME_CALLBACK (print, (SCM ));
-};
-
-#endif // HYPHEN_SPANNER_HH
-
diff --git a/lily/include/main.hh b/lily/include/main.hh
deleted file mode 100644
index 86d578a536..0000000000
--- a/lily/include/main.hh
+++ /dev/null
@@ -1,48 +0,0 @@
-/*
-  main.hh -- declare global entry points
-
-  source file of the GNU LilyPond music typesetter
-
-  (c) 1997--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-*/
-#ifndef MAIN_HH
-#define MAIN_HH
-
-#include "lily-proto.hh"
-#include "array.hh"
-
-void debug_init ();
-void set_debug (bool);
-void do_scores ();
-void clear_scores ();
-void add_score (Score* s);
-void set_default_output (String s);
-String find_file (String);
-void call_constructors ();
-extern Array<String> get_inclusion_names ();
-extern void set_inclusion_names (Array<String>);
-
-/* FIXME: in warn.cc */
-void progress_indication (String);
-
-/* options */
-extern bool dependency_global_b;
-extern String dependency_prefix_global;
-extern Array<String> dump_header_fieldnames_global;
-extern bool no_paper_global_b;
-extern String output_format_global;
-extern String output_name_global;
-extern bool safe_global_b;
-extern bool verbose_global_b;
-extern bool store_locations_global_b;
-extern bool internal_type_checking_global_b;
-
-
-/* misc */
-extern All_font_metrics *all_fonts_global;
-extern Array<String> failed_files;
-extern int exit_status_global;
-extern File_path global_path;
-extern int score_count_global;
-
-#endif /* MAIN_HH */
diff --git a/lily/include/measure-grouping-spanner.hh b/lily/include/measure-grouping-spanner.hh
deleted file mode 100644
index 77d32288c3..0000000000
--- a/lily/include/measure-grouping-spanner.hh
+++ /dev/null
@@ -1,25 +0,0 @@
-/*   
-measure-grouping-spanner.hh -- declare 
-
-source file of the GNU LilyPond music typesetter
-
-(c) 2002--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-
- */
-
-#ifndef MEASURE_GROUPING_SPANNER_HH
-#define MEASURE_GROUPING_SPANNER_HH
-
-#include "grob.hh"
-
-class Measure_grouping
-{
-public:
-  DECLARE_SCHEME_CALLBACK (print, (SCM ));
- 
-  static bool has_interface (Grob*);
-};
-
-
-#endif /* MEASURE_GROUPING_SPANNER_HH */
-
diff --git a/lily/include/mensural-ligature.hh b/lily/include/mensural-ligature.hh
deleted file mode 100644
index e38f6651e6..0000000000
--- a/lily/include/mensural-ligature.hh
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
-  mensural-ligature.hh -- part of GNU LilyPond
-
-  source file of the GNU LilyPond music typesetter
-  
-  (c) 2002--2004 Juergen Reuter <reuter@ipd.uka.de>
-*/
-
-#ifndef MENSURAL_LIGATURE_HH
-#define MENSURAL_LIGATURE_HH
-
-#include "lily-proto.hh"
-#include "lily-guile.hh"
-
-/*
- * These are all possible mensural ligature primitives.
- */
-#define MLP_BB    0x01 // flexa with left downward cauda (for Brevis-Brevis)
-#define MLP_sc    0x02 // last head of asc. sine proprietate cum perfectione
-		       // (i.e. brevis head with downward right cauda)
-#define MLP_ss    0x04 // last head of asc. sine proprietate sine perfectione
-		       // (i.e. pure brevis head)
-#define MLP_cs    0x08 // last head of asc. cum proprietate sine perfectione
-		       // (i.e. brevis head with downward left cauda)
-#define MLP_SS    0x10 // flexa with left upward cauda (for Semibr.-Semibr.)
-#define MLP_LB    0x20 // core flexa (for Longa-Brevis)
-
-#define MLP_NONE  0x00 // no output
-#define MLP_SINGLE_HEAD	(MLP_sc | MLP_ss | MLP_cs)
-#define MLP_FLEXA	(MLP_BB | MLP_SS | MLP_LB)
-#define MLP_ANY		(MLP_FLEXA | MLP_SINGLE_HEAD)
-
-struct Mensural_ligature
-{
-  DECLARE_SCHEME_CALLBACK (brew_ligature_primitive, (SCM ));
-  DECLARE_SCHEME_CALLBACK (print, (SCM ));
-  static bool has_interface (Grob*);
-};
-
-#endif /* MENSURAL_LIGATURE_HH */
diff --git a/lily/include/midi-def.hh b/lily/include/midi-def.hh
deleted file mode 100644
index 514f0cc585..0000000000
--- a/lily/include/midi-def.hh
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
-  midi-def.hh -- declare Midi_def
-
-  source file of the GNU LilyPond music typesetter
-
-  (c) 1997--2004 Jan Nieuwenhuizen <janneke@gnu.org>
-*/
-
-
-#ifndef MIDI_DEF_HH
-#define MIDI_DEF_HH
-
-#include "lily-proto.hh"
-#include "real.hh"
-#include "string.hh"
-#include "moment.hh"
-#include "music-output-def.hh"
-
-/** 
-  definitions for midi output. Rather empty
- */
-class Midi_def : public Music_output_def {
-  static int score_count_;
-
-public:
-  VIRTUAL_COPY_CONS (Music_output_def);
-
-  Midi_def ();
-
-  int get_tempo (Moment moment);
-  void set_tempo (Moment moment, int count_per_minute_i);
-};
-
-#endif // MIDI_DEF_HH
diff --git a/lily/include/midi-item.hh b/lily/include/midi-item.hh
deleted file mode 100644
index e61b5ed775..0000000000
--- a/lily/include/midi-item.hh
+++ /dev/null
@@ -1,210 +0,0 @@
-/*
-  midi-item.hh -- declare Midi items
-
-  (c) 1997--2004 Jan Nieuwenhuizen <janneke@gnu.org>
- */
-
-#ifndef MIDI_ITEM_HH
-#define MIDI_ITEM_HH
-
-#include "cons.hh"
-#include "string.hh"
-#include "lily-proto.hh"
-#include "moment.hh"
-#include "audio-item.hh"
-
-/**
-  Any piece of midi information.
-
-  Maybe use base classes for RIFF files?
- */
-class Midi_item
-{
-public:
-  Midi_item ();
-  virtual ~Midi_item ();
-
-  /// factory
-  static Midi_item* get_midi (Audio_item* a);
-
-  static String i2varint_string (int i);
-
-  virtual String to_string () const = 0;
-
-  int channel_;
-};
-
-/**
-  timed MIDI event
- */
-class Midi_event
-{
-public:
-  Midi_event (Moment delta_mom, Midi_item* midi);
-
-  Moment delta_mom_;
-  Midi_item* midi_;
-  String to_string () const;
-};
-
-/**
-  variable sized MIDI data
- */
-class Midi_chunk : public Midi_item
-{
-public:
-  void set (String header_string, String data_string, String footer_string);
-  virtual String to_string () const;
-  virtual String data_string () const;
-
-private:
-  String data_string_;
-  String footer_string_;
-  String header_string_;
-};
-
-class Midi_duration : public Midi_item
-{
-public:
-  Midi_duration (Real seconds_f);
-
-  virtual String to_string () const;
-  Real seconds_;
-};
-
-class Midi_header : public Midi_chunk
-{
-public:
-  Midi_header (int format_i, int tracks_i, int clocks_per_4_i);
-};
-
-/**
-  Change instrument event
- */
-class Midi_instrument : public Midi_item
-{
-public:
-  Midi_instrument (Audio_instrument*);
-
-  virtual String to_string () const;
-
-  Audio_instrument* audio_;
-};
-                                      
-
-class Midi_key : public Midi_item
-{
-public:
-  Midi_key (Audio_key*);
-	
-  virtual String to_string () const;
-
-  Audio_key* audio_;
-};
-
-class Midi_time_signature : public Midi_item
-{
-public:
-  Midi_time_signature (Audio_time_signature*);
-  
-  virtual String to_string () const;
-
-  Audio_time_signature* audio_;
-  int clocks_per_1_;
-};
-
-/**
-  Turn a note on.
- */
-class Midi_note : public Midi_item
-{
-public:
-  Midi_note (Audio_note*);
-
-  Moment get_length () const;
-  int get_pitch () const;
-  int get_fine_tuning () const;
-  virtual String to_string () const;
-
-  Audio_note* audio_;
-
-  static int const c0_pitch_i_ = 60;
-  Byte dynamic_byte_;
-};
-
-/**
-  Turn a note off 
- */
-class Midi_note_off : public Midi_note
-{
-public:
-  Midi_note_off (Midi_note*); 
-
-  virtual String to_string () const;
-
-  Midi_note* on_;
-  Byte aftertouch_byte_;
-};
-
-class Midi_text : public Midi_item
-{
-public:
-  enum Type { 
-    TEXT = 1, COPYRIGHT, TRACK_NAME, INSTRUMENT_NAME, LYRIC, 
-    MARKER, CUE_POINT
-  };
-
-  Midi_text (Audio_text*);
-    
-  virtual String to_string () const;
-
-  Audio_text* audio_;
-};
-
-class Midi_dynamic : public Midi_item
-{
-public:
-  Midi_dynamic (Audio_dynamic*);
-  
-  virtual String to_string () const;
-
-  Audio_dynamic* audio_;
-};
-
-class Midi_piano_pedal : public Midi_item
-{
-public:
-  Midi_piano_pedal (Audio_piano_pedal*);
-  
-  virtual String to_string () const;
-
-  Audio_piano_pedal* audio_;
-};
-
-class Midi_tempo : public Midi_item
-{
-public:
-  Midi_tempo (Audio_tempo*);
-  
-  virtual String to_string () const;
-
-  Audio_tempo* audio_;
-};
-
-class Midi_track : public Midi_chunk
-{
-public:
-  int number_;
-
-  /*
-    Compensate for starting grace notes.
-   */
-  Cons_list<Midi_event> event_p_list_;
-  
-  Midi_track ();
-
-  void add (Moment delta_time_mom, Midi_item* midi);
-  virtual String data_string () const;
-};
-
-#endif // MIDI_ITEM_HH
diff --git a/lily/include/midi-stream.hh b/lily/include/midi-stream.hh
deleted file mode 100644
index 4af7ea9aa9..0000000000
--- a/lily/include/midi-stream.hh
+++ /dev/null
@@ -1,28 +0,0 @@
-/*
-  midi-stream.hh -- declare Midi_stream
-
-  (c) 1997--2004 Jan Nieuwenhuizen <janneke@gnu.org>
- */
-
-#ifndef MIDI_STREAM_HH
-#define MIDI_STREAM_HH
-
-#include <stdio.h>
-#include "string.hh"
-
-/// Midi outputfile
-struct Midi_stream {
-  Midi_stream (String filename_string);
-  ~Midi_stream ();
-
-  Midi_stream& operator << ( String str);
-  Midi_stream& operator << ( Midi_item const& midi_c_r);
-  Midi_stream& operator << ( int i);
-
-  void open ();
-
-  FILE *out_file_;
-  String filename_string_;
-};
-
-#endif // MIDI_STREAM_HH
diff --git a/lily/include/midi-walker.hh b/lily/include/midi-walker.hh
deleted file mode 100644
index 040cb6fa57..0000000000
--- a/lily/include/midi-walker.hh
+++ /dev/null
@@ -1,50 +0,0 @@
-/*
-  midi-walker.hh -- declare Midi_walker
-
-  (c) 1996--2004 Han-Wen Nienhuys  <hanwen@cs.uu.nl>
-                 Jan Nieuwenhuizen <janneke@gnu.org>
- */
-
-#ifndef MIDI_WALKER_HH
-#define MIDI_WALKER_HH
-
-#include "pqueue.hh"
-#include "lily-proto.hh"
-#include "moment.hh"
-
-struct Midi_note_event : PQueue_ent<Moment, Midi_note*>
-{
-  bool ignore_b_;
-  Midi_note_event ();
-};
-
-int compare (Midi_note_event const& left, Midi_note_event const& right);
-
-/**
-  walk audio and output midi
-  */
-class Midi_walker
-{
-public:
-  Midi_walker (Audio_staff* audio_staff, Midi_track* midi_track);
-  ~Midi_walker ();
-
-  void process ();
-  void operator ++ (int);
-  bool ok () const;
-
-private:
-  void do_start_note (Midi_note* note);
-  void do_stop_notes (Moment now_mom);
-  void output_event (Moment now_mom, Midi_item* l);
-  
-  Midi_track* track_;
-  Audio_staff* staff_;
-  int index_;
-  Link_array<Audio_item> * items_;
-  PQueue<Midi_note_event> stop_note_queue;
-  Moment last_mom_;
-};
-
-
-#endif // MIDI_WALKER_HH
diff --git a/lily/include/minmax.tcc b/lily/include/minmax.tcc
deleted file mode 100644
index de5cbc4be2..0000000000
--- a/lily/include/minmax.tcc
+++ /dev/null
@@ -1,17 +0,0 @@
-
-/*   
-  minmax.cc --  implement minmax ()
-  
-  source file of the GNU LilyPond music typesetter
-  
-  (c)  1997--2004 Han-Wen Nienhuys <hanwen@stack.nl>
-  
- */
-
-template<class T>
-minmax (Direction d, T t1, T t2)
-{
-  if (d > 0) return t1 >? t2;
-  else return t1 <? t2;
-}
-
diff --git a/lily/include/minterval.hh b/lily/include/minterval.hh
deleted file mode 100644
index b6e9d28e8c..0000000000
--- a/lily/include/minterval.hh
+++ /dev/null
@@ -1,18 +0,0 @@
-/*
-  minterval.hh -- declare MInterval
-
-  source file of the GNU LilyPond music typesetter
-
-  (c) 1997--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-*/
-
-
-#ifndef MINTERVAL_HH
-#define MINTERVAL_HH
-
-#include "interval.hh"
-#include "moment.hh"
-
-typedef Interval_t<Moment> MInterval;
-
-#endif // MINTERVAL_HH
diff --git a/lily/include/misc.hh b/lily/include/misc.hh
deleted file mode 100644
index 811858e4bb..0000000000
--- a/lily/include/misc.hh
+++ /dev/null
@@ -1,26 +0,0 @@
-#ifndef MISC_HH
-#define MISC_HH
-
-#include <stdlib.h>
-
-#include "real.hh"
-#include "array.hh"
-#include "interval.hh"
-
-double log_2 (double x) ;
-int intlog2 (int d);
-
-inline int
-sign (int i)
-{
-  if (i<0)
-    return -1;
-  else if (i)
-    return 1;
-  else return 0;
-}
-
-
-
-#endif
-
diff --git a/lily/include/molecule.hh b/lily/include/molecule.hh
deleted file mode 100644
index 78aace7bd3..0000000000
--- a/lily/include/molecule.hh
+++ /dev/null
@@ -1,90 +0,0 @@
-/*
-  molecule.hh -- declare Molecule
-
-  source file of the GNU LilyPond music typesetter
-
-  (c) 1997--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-*/
-#ifndef MOLECULE_HH
-#define MOLECULE_HH
-
-#include <stdlib.h>		// size_t
-#include "lily-proto.hh"
-#include "box.hh"
-#include "axes.hh"
-#include "direction.hh"
-#include "lily-guile.hh"
-#include "smobs.hh"
-
-/** a group of individually translated symbols. You can add molecules
-    to the top, to the right, etc.
-
-    It is implemented as a "tree" of scheme expressions, as in
-
-     Expr = combine Expr Expr
-              | translate Offset Expr
-	      | SCHEME
-	      ;
-
-    SCHEME is a Scheme expression that --when eval'd-- produces the
-    desired output.  
-
-
-    Because of the way that Molecule is implemented, it is the most
-    efficient to add "fresh" molecules to what you're going to build.
-    
-    Dimension behavior:
-
-    Empty molecules have empty dimensions.  If add_at_edge is used to
-    init the molecule, we assume that
-    DIMENSIONS = (Interval (0,0),Interval (0,0)
-*/
-class Molecule
-{
-  friend SCM ly_molecule_set_extent_x (SCM, SCM, SCM);
-  
-  Box dim_;
-  SCM expr_;
-  
-  DECLARE_SIMPLE_SMOBS (Molecule,);  
-public:
-  Molecule (Box, SCM s);
-  Molecule ();
-
-
-  SCM smobbed_copy () const;
-  SCM get_expr () const;
-
-  /**
-     Set dimensions to empty, or to (Interval (0,0),Interval (0,0) */
-  void set_empty (bool);
-  void add_at_edge (Axis a, Direction d, const Molecule &m, Real padding,
-		    Real minimum);
-  void add_molecule (Molecule const &m);
-  void translate (Offset);
-  void align_to (Axis a, Real x);
-  void translate_axis (Real,Axis);
-  
-  Interval extent (Axis) const;
-  Box extent_box () const;
-  /**
-     codify THIS into a Scheme expression.
-   */
-  SCM create_scheme () const;
-  bool is_empty () const;
-
-
-  static SCM ly_get_molecule_extent (SCM mol, SCM axis);
-  static SCM ly_set_molecule_extent_x (SCM,SCM,SCM);
-  static SCM ly_molecule_combined_at_edge (SCM,SCM,SCM,SCM,SCM);
-};
-
-
-DECLARE_UNSMOB(Molecule,molecule);
-SCM fontify_atom (Font_metric const*, SCM atom);
-
-Molecule create_molecule (SCM print);
-
-
-
-#endif
diff --git a/lily/include/moment.hh b/lily/include/moment.hh
deleted file mode 100644
index 1cfd6a88ec..0000000000
--- a/lily/include/moment.hh
+++ /dev/null
@@ -1,70 +0,0 @@
-/*   
-  moment.hh -- declare Moment
-  
-  source file of the GNU LilyPond music typesetter
-  
-  (c) 1999--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-  
- */
-
-#ifndef MOMENT_HH
-#define MOMENT_HH
-
-#include "smobs.hh"
-#include "rational.hh"
-
-/**
-   Musical timing (Main-timing, grace-timing) with glue for
-   Guilification;
-*/
-class Moment
-{
-  DECLARE_SIMPLE_SMOBS (Moment,);
-public:
-  Moment ();
-  Moment (int m);
-
-  Moment (Rational, Rational);
-  Moment (Rational m);
-
-  Moment operator - () const;
-  
-  void operator += (Moment const &m);
-  void operator -= (Moment const &m);  
-
-  void operator *= (Moment const &m);
-  void operator /= (Moment const &m);  
-
-  Rational main_part_;
-  Rational grace_part_;
-
-  void set_infinite (int k);
-
-  bool to_bool () const;
-  int den () const;
-  int num () const;
-  /*
-    Deliver a copy of THIS as a smobified SCM
-   */
-  SCM smobbed_copy () const;
-  String to_string () const;
-  static int compare (Moment const&, Moment const&);
-  
-};
-IMPLEMENT_ARITHMETIC_OPERATOR (Moment, + );
-IMPLEMENT_ARITHMETIC_OPERATOR (Moment, - );
-IMPLEMENT_ARITHMETIC_OPERATOR (Moment, / );
-IMPLEMENT_ARITHMETIC_OPERATOR (Moment, * );
-
-
-DECLARE_UNSMOB(Moment,moment);
-int compare (Moment const&,Moment const&);
-INSTANTIATE_COMPARE (Moment const&, Moment::compare);
-
-
-#ifdef STREAM_SUPPORT
-std::ostream & operator << (std::ostream &, Moment const &);
-#endif
-
-#endif /* MOMENT_HH */
-
diff --git a/lily/include/multi-measure-rest.hh b/lily/include/multi-measure-rest.hh
deleted file mode 100644
index c3f6c75142..0000000000
--- a/lily/include/multi-measure-rest.hh
+++ /dev/null
@@ -1,33 +0,0 @@
-/*   
-  multi-measure-rest.hh -- declare Multi_measure_rest
-  
-  source file of the GNU LilyPond music typesetter
-  
-  (c) 1998--2004 Jan Nieuwenhuizen <janneke@gnu.org>
-  
- */
-
-#ifndef MULTI_MEASURE_REST_HH
-#define MULTI_MEASURE_REST_HH
-
-#include "lily-proto.hh"
-#include "lily-guile.hh"
-#include "rod.hh"
-
-class Multi_measure_rest
-{
-public:
-  static bool has_interface (Grob*);
-  DECLARE_SCHEME_CALLBACK (print, (SCM ));
-  DECLARE_SCHEME_CALLBACK (percent, (SCM));
-  static  void add_column (Grob*,Item*);
-  DECLARE_SCHEME_CALLBACK (set_spacing_rods, (SCM ));
-  DECLARE_SCHEME_CALLBACK (centered_molecule, (SCM ));
-  
-  static Molecule big_rest (Grob*,Real);
-  static Molecule symbol_molecule (Grob*,Real);  
-  static Molecule church_rest (Grob*, Font_metric*, int,Real);
-};
-
-#endif /* MULTI_MEASURE_REST_HH */
-
diff --git a/lily/include/music-constructor.hh b/lily/include/music-constructor.hh
deleted file mode 100644
index ae20fca36b..0000000000
--- a/lily/include/music-constructor.hh
+++ /dev/null
@@ -1,35 +0,0 @@
-/*   
-  music-constructor.hh -- declare Music_constructor
-  
-  source file of the GNU LilyPond music typesetter
-  
-  (c) 2001--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-  
- */
-
-#ifndef MUSIC_CONSTRUCTOR_HH
-#define MUSIC_CONSTRUCTOR_HH
-
-#include "lily-proto.hh"
-#include "string.hh"
-#include "global-ctor.hh"
-
-#define ADD_MUSIC(type) \
-Music * _ ## type ## _ctor ()\
-{\
-  return new type;\
-}\
-static void  _ ## type ## _adder () {\
-      add_music_ctor (#type, & _ ## type ## _ctor);\
-}\
-ADD_SCM_INIT_FUNC( _ ## type ## _adder_prefix,  _ ## type ## _adder);
-
-void add_music_ctor (String, Music* (*) ());
-Music*make_music (String);
-
-
-
-
-
-#endif /* MUSIC_CONSTRUCTOR_HH */
-
diff --git a/lily/include/music-iterator.hh b/lily/include/music-iterator.hh
deleted file mode 100644
index 7d7c5eef2a..0000000000
--- a/lily/include/music-iterator.hh
+++ /dev/null
@@ -1,133 +0,0 @@
-/*
-  music-iterator.hh -- declare Music_iterator
-
-  source file of the GNU LilyPond music typesetter
-
-  (c) 1997--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-*/
-
-
-#ifndef MUSIC_ITERATOR_HH
-#define MUSIC_ITERATOR_HH
-
-#include "lily-proto.hh"
-#include "array.hh"
-#include "moment.hh"
-#include "virtual-methods.hh"
-#include "interpretation-context-handle.hh"
-#include "smobs.hh"
-
-/**
-   ---
-
-   Music_iterator is an object type that traverses the Music structure and
-   reports the events it finds to interpretation contexts. It is not yet
-   user-serviceable.
-
-
-   ---
-	
-  Conceptually a music-iterator operates on a queue of musical events
-  that are pending. This queue does not actually exist, but it is a
-  way of viewing and traversing music-expressions.
-
-  
-  ok () -- events left ?
-
-  pending_mom () -- time tag of the next event to be processed.
-    PRECONDITION: this->ok () holds.
-  
-  process (M) -- process all at M (Precondition: no events exist
-    before M, this->ok () holds).  Side-effects:
-    
-    * This removes all events at M from the pending queue.
-
-    * Typically this reports the music to an interpretation context,
-    thus changing the state of the interpretation context.
-
-
-  TODO:
-
-  merge pending_moment and process?
-  
-*/
-class Music_iterator
-{
-protected:
-  Moment music_length_;
-  Moment start_mom_;
-
-  DECLARE_SMOBS (Music_iterator,dummy);
-  Music_iterator (Music_iterator const&);
-public:
-  
-  Moment music_get_length () const;
-  Moment music_start_mom () const;
-  Music_iterator ();
-
-  /**
-     Do the reporting.  Will try MUSIC_L_ in its own translator first,
-     then its children. Returns the iterator that succeeded
-  */
-  Music_iterator *  try_music (Music  *) const;
-  
-  /**
-    The translation unit that we this iterator is reporting  to now.
-   */
-  Translator_group* get_outlet () const;
-
-  void set_translator (Translator_group*);
-  
-  /** Get an iterator matching the type of MUS, and use TRANS to find
-    an accompanying translation unit
-   */
-  static SCM get_static_get_iterator (Music * mus);
-  void init_translator (Music  *, Translator_group *); 
-  void quit ();
-  void substitute_outlet (Translator_group* from, Translator_group *to);
-  virtual void derived_substitute (Translator_group*, Translator_group*);
-  virtual Moment pending_moment () const;
-  virtual bool ok () const;
-
-  virtual bool run_always () const; 
-  virtual void process (Moment until);
-  virtual void derived_mark ()const;
-  virtual void construct_children ();
-  
-  /**
-    Construct sub-iterators, and set the translator to 
-    report to.
-   */
-
-  DECLARE_SCHEME_CALLBACK(constructor, ());
-  
-  /**
-    Get an iterator for MUS, inheriting the translation unit from THIS.
-   */
-  SCM get_iterator (Music *) const;
-
-  virtual Music_iterator* try_music_in_children (Music *) const;
-
-  Music * get_music () const;
-protected:
-  virtual void do_quit();
-private:
-  Interpretation_context_handle handle_;
-  Music  * music_;
-};
-
-
-#define IMPLEMENT_CTOR_CALLBACK(Class)		\
-LY_DEFINE_MEMBER_FUNCTION(Class,constructor, #Class "::constructor",\
-	  0,0,0,\
-	  (),\
-	  "Construct a @code{" #Class "} music iterator")\
-{						\
-  SCM val = (new Class)->self_scm();   \
-  scm_gc_unprotect_object (val);\
-  return val ;				\
-}						\
-
-DECLARE_UNSMOB(Music_iterator, iterator);
-
-#endif // MUSIC_ITERATOR_HH
diff --git a/lily/include/music-list.hh b/lily/include/music-list.hh
deleted file mode 100644
index e9fc937584..0000000000
--- a/lily/include/music-list.hh
+++ /dev/null
@@ -1,52 +0,0 @@
-/*
-  music-list.hh -- declare Music_sequence,
-  Simultaneous_music and Sequential_music
-
-  source file of the GNU LilyPond music typesetter
-
-  (c) 1997--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-*/
-
-
-#ifndef Music_sequence_HH
-#define Music_sequence_HH
-
-#include "music-sequence.hh"
-
-/**
-  Simultaneous_music is a list of music-elements which happen simultaneously
- */
-class Simultaneous_music : public Music_sequence
-{
-public:
-  VIRTUAL_COPY_CONS (Music);
-  virtual Pitch to_relative_octave (Pitch);
-  virtual Moment get_length () const;
-  virtual Moment start_mom () const;
-  Simultaneous_music ();
-};
-
-/*
-  A chord.
- */
-class Event_chord : public Simultaneous_music
-{
-public:
-  VIRTUAL_COPY_CONS (Music);
-  virtual Pitch to_relative_octave (Pitch);
-};
-
-/**
-  Sequential_music is a list of music-elements which are placed behind each other.
- */
-class Sequential_music : public Music_sequence
-{
-public:
-  VIRTUAL_COPY_CONS (Music);
-  virtual Moment get_length () const;
-  virtual Moment start_mom () const;
-  
-  Sequential_music ();
-};
-
-#endif // Music_sequence_HH
diff --git a/lily/include/music-output-def.hh b/lily/include/music-output-def.hh
deleted file mode 100644
index 9a004b389c..0000000000
--- a/lily/include/music-output-def.hh
+++ /dev/null
@@ -1,47 +0,0 @@
-/*
-  music-output-def.hh -- declare Music_output_def
-
-  source file of the GNU LilyPond music typesetter
-
-  (c) 1997--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-*/
-
-
-#ifndef Music_output_DEF_HH
-#define Music_output_DEF_HH
-
-#include "string.hh"
-#include "lily-proto.hh"
-#include "lily-guile.hh"
-#include "virtual-methods.hh"
-#include "smobs.hh"
-
-/**
-  Definition of how to output lilypond.
- */
-class Music_output_def  
-{
-public:
-  Scheme_hash_table * translator_tab_;
-
-  SCM scope_;
-  SCM scaled_fonts_;
-  
-  VIRTUAL_COPY_CONS (Music_output_def);
-  Music_output_def (Music_output_def const&);
-  Music_output_def ();
-
-  Global_translator *get_global_translator ();
-  Translator_group *get_group_translator (String type) const;
-  void assign_translator (SCM transdef);
-  SCM find_translator (SCM name) const;
-  String outname_string () ;
-  SCM get_scmvar (String id)const;
-  SCM lookup_variable  (SCM sym) const;
-  void set_variable  (SCM, SCM sym);
-  
-  DECLARE_SMOBS (Music_output_def,);
-};
-
-DECLARE_UNSMOB(Music_output_def,music_output_def);
-#endif // Music_output_DEF_HH
diff --git a/lily/include/music-output.hh b/lily/include/music-output.hh
deleted file mode 100644
index d1423852b1..0000000000
--- a/lily/include/music-output.hh
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
-  music-output.hh -- declare Music_output
-
-  source file of the GNU LilyPond music typesetter
-
-  (c) 1997--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-*/
-
-
-#ifndef Music_output_HH
-#define Music_output_HH
-
-#include "string.hh"
-#include "lily-proto.hh"
-#include "protected-scm.hh"
-
-/**
-  Output something that was defined in a lilypond file. 
- */
-class Music_output 
-{
-public:
-  Protected_scm header_;
-
-  virtual void process (String) {} 
-  virtual ~Music_output (){}
-  Music_output () 
-  {
-  }
-       
-};
-#endif // Music_output_HH
diff --git a/lily/include/music-sequence.hh b/lily/include/music-sequence.hh
deleted file mode 100644
index beed7d3ada..0000000000
--- a/lily/include/music-sequence.hh
+++ /dev/null
@@ -1,37 +0,0 @@
-/*   
-  music-sequence.hh -- declare Music_sequence
-  
-  source file of the GNU LilyPond music typesetter
-  
-  (c) 2000--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-  
- */
-
-#ifndef MUSIC_SEQUENCE_HH
-#define MUSIC_SEQUENCE_HH
-#include "music.hh"
-/**
-  Music can be a list of other "Music" elements
- */
-class Music_sequence : public Music
-{
-public:
-  Music_sequence (SCM h);
-  Music_sequence ();
-  SCM music_list () const;
-  void append_music (Music *);
-  VIRTUAL_COPY_CONS (Music);
-  
-  Pitch do_relative_octave (Pitch p, bool b);
-  
-  static Moment cumulative_length (SCM) ;
-  static Moment maximum_length (SCM) ;
-  static Moment first_start (SCM list) ;
-  static Moment minimum_start (SCM list);
-};
-
-Pitch music_list_to_relative (SCM l,Pitch p, bool ret_first);
-void transpose_music_list (SCM , Pitch);
-void compress_music_list (SCM, Moment);
-
-#endif
diff --git a/lily/include/music-wrapper-iterator.hh b/lily/include/music-wrapper-iterator.hh
deleted file mode 100644
index 006d3dce14..0000000000
--- a/lily/include/music-wrapper-iterator.hh
+++ /dev/null
@@ -1,45 +0,0 @@
-/*   
-  music-wrapper-iterator.hh -- declare Music_wrapper_iterator
-  
-  source file of the GNU LilyPond music typesetter
-  
-  (c) 1998--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-  
- */
-
-#ifndef MUSIC_WRAPPER_ITERATOR_HH
-#define MUSIC_WRAPPER_ITERATOR_HH
-
-#include "music.hh"
-#include "music-iterator.hh"
-
-/** 
-  The iterator for a #Music_wrapper#.  Since #Music_wrapper# essentially
-  does nothing, this iterator creates a child iterator and delegates
-  all work to that child.
- */
-class Music_wrapper_iterator : public Music_iterator
-{
-public:
-  DECLARE_SCHEME_CALLBACK(constructor, ());  
-  Music_wrapper_iterator ();
-
-  virtual void derived_substitute (Translator_group*f, Translator_group*t) ;
-
-  virtual void derived_mark () const;
-  virtual void construct_children () ;
-  virtual Moment pending_moment () const;
-  virtual void do_quit(); 
-  virtual bool ok () const;
-  virtual bool run_always () const;
-protected:
-  virtual void process (Moment);
-  virtual Music_iterator *try_music_in_children (Music *) const;
-
-  Music_iterator *child_iter_;
-};
-
-#endif /* MUSIC_WRAPPER_ITERATOR_HH */
-
-
-
diff --git a/lily/include/music-wrapper.hh b/lily/include/music-wrapper.hh
deleted file mode 100644
index aa7b53937a..0000000000
--- a/lily/include/music-wrapper.hh
+++ /dev/null
@@ -1,37 +0,0 @@
-/*   
-  music-wrapper.hh -- declare Music_wrapper
-  
-  source file of the GNU LilyPond music typesetter
-  
-  (c) 1998--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-  
- */
-
-#ifndef MUSIC_WRAPPER_HH
-#define MUSIC_WRAPPER_HH
-
-#include "music.hh"
-#include "pitch.hh"
-
-/** A Music that modifies an existing Music.  This data structure
-  corresponds to a production that takes a single Music argument,
-  
-  Music: STUFF Music 
-
-  */
-class Music_wrapper : public Music
-{
-public:
-  Music_wrapper ();
-  Music * element () const;
-  
-  VIRTUAL_COPY_CONS (Music);
-  virtual Moment get_length () const;
-  virtual Moment start_mom () const;
-};
-
-
-
-
-#endif /* MUSIC_WRAPPER_HH */
-
diff --git a/lily/include/music.hh b/lily/include/music.hh
deleted file mode 100644
index 95a9777f3b..0000000000
--- a/lily/include/music.hh
+++ /dev/null
@@ -1,75 +0,0 @@
-/*
-  music.hh -- declare Music
-
-  source file of the GNU LilyPond music typesetter
-
-  (c) 1997--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-*/
-
-
-
-#ifndef MUSIC_HH
-#define MUSIC_HH
-
-#include "virtual-methods.hh"
-#include "minterval.hh"
-#include "lily-proto.hh"
-#include "string.hh"
-#include "smobs.hh"
-#include "music-constructor.hh"
-
-
-#define get_mus_property(x) internal_get_mus_property(ly_symbol2scm(x))
-#define set_mus_property(x,y) internal_set_mus_property(ly_symbol2scm (x), y)
-#define is_mus_type(x) internal_is_music_type(ly_symbol2scm (x))
-
-/** Music is anything that has duration and supports both time compression and
-  transposition.
-  
-  In Lily, everything that can be thought to have a length and a pitch
- (which has a duration which can be transposed) is considered "music",
-
-  Music is hierarchical: 
-
-  @see Music_sequence
-
-
-  TODO: make a equalp function for general music. 
-  */
-class Music {
-public:
-  Input *origin () const; 
-  void set_spot (Input);  
-
-  SCM internal_get_mus_property (SCM) const;
-  void internal_set_mus_property (SCM , SCM val);
-  SCM get_property_alist (bool mut) const;
-  bool internal_is_music_type (SCM) const;
-  
-  virtual Pitch to_relative_octave (Pitch);
-  String name ()const;
-  /// The duration of this piece of music
-  virtual Moment get_length () const;
-  virtual Moment start_mom () const;
-  void print () const;
-  /// Transpose, with the interval central C to #p#
-  virtual void transpose (Pitch p);
-
-  /// Scale the music in time by #factor#.
-  virtual void compress (Moment factor);
-  VIRTUAL_COPY_CONS (Music);
-  Music ();
-  Music (Music const &m);
-protected:
-  DECLARE_SMOBS (Music,);
-  SCM immutable_property_alist_;
-  SCM mutable_property_alist_;
-  friend SCM ly_extended_make_music(SCM,SCM);
-};
-
-
-DECLARE_UNSMOB(Music,music);
-
-Music* make_music_by_name (SCM sym);
-
-#endif // MUSIC_HH
diff --git a/lily/include/my-lily-lexer.hh b/lily/include/my-lily-lexer.hh
deleted file mode 100644
index a7653902e6..0000000000
--- a/lily/include/my-lily-lexer.hh
+++ /dev/null
@@ -1,80 +0,0 @@
-/*
-  lexer.hh -- declare My_lily_lexer
-
-  source file of the GNU LilyPond music typesetter
-
-  (c) 1997--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-*/
-
-#ifndef LEXER_HH
-#define LEXER_HH
-
-#include "includable-lexer.hh"
-
-#include "input.hh"
-#include "lily-proto.hh"
-#include "flower-proto.hh"
-#include "array.hh"
-#include "string.hh"
-#include "duration.hh"
-#include "pitch.hh"
-#include "protected-scm.hh"
-
-bool busy_parsing ();
-void kill_lexer ();
-void set_lexer ();
-
-/// lexer for LilyPond
-class My_lily_lexer : public Includable_lexer 
-{
-  Protected_scm scopes_;
-public:
-  String main_input_name_;
-  void * lexval;
-  bool main_input_b_;
-
-  /*
-    Scheme hash tables with (oct name acc)  values, and symbol keys
-   */
-  Protected_scm chordmodifier_tab_;
-  Protected_scm pitchname_tab_stack_;
-  Keyword_table * keytable_;
-  int errorlevel_;
-
-  My_lily_lexer ();
-  ~My_lily_lexer ();
-  int yylex ();
-
-  Input last_input_;
-  void prepare_for_next_token ();
-  int try_special_identifiers (SCM* ,SCM);
-  Input here_input () const;
-  
-  void add_scope (SCM);
-  SCM remove_scope ();
-  
-  void start_main_input ();
-
-  SCM lookup_identifier (String s);
-  void push_note_state (SCM tab);
-  void push_chord_state (SCM tab);
-  void push_markup_state ();
-  void push_figuredbass_state ();
-  void push_lyric_state ();
-  void pop_state ();
-  void LexerError (char const *);
-  void set_identifier (SCM name_string, SCM);
-  bool note_state_b () const;
-  bool chord_state_b () const;
-  bool lyric_state_b () const;
-  bool figure_state_b () const;
-private:
-  int lookup_keyword (String);
-  int scan_bare_word (String);
-  SCM scan_markup_word (String);
-  int scan_escaped_word (String);
-  int identifier_type (SCM);
-  char escaped_char (char) const;
-};
-
-#endif
diff --git a/lily/include/my-lily-parser.hh b/lily/include/my-lily-parser.hh
deleted file mode 100644
index b98bc843ba..0000000000
--- a/lily/include/my-lily-parser.hh
+++ /dev/null
@@ -1,82 +0,0 @@
-/*
-  my-lily-parser.hh -- declare My_lily_parser
-
-  source file of the GNU LilyPond music typesetter
-
-  (c) 1997--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-*/
-
-
-#ifndef MY_LILY_PARSER_HH
-#define MY_LILY_PARSER_HH
-
-#include "lily-proto.hh"
-#include "string.hh"
-#include "parray.hh"
-#include "lily-proto.hh"
-#include "lily-proto.hh"
-#include "duration.hh"
-#include "pitch.hh"
-#include "string.hh"
-#include "array.hh"
-#include "input.hh"
-
-/**
-   State for the parser.  Do not ever add any variables to parse
-   musical content here.  We still have to remove default_duration_.
-
-   TODO: interface is too complicated
-*/
-class My_lily_parser 
-{
-public:
-  My_lily_parser (Input_file_results * sources);
-  ~My_lily_parser ();
-
-  void do_init_file ();
-  void parse_file (String init, String file, String out_name);
-
-public:
-  Duration default_duration_;
-  String output_basename_;
-  
-  Scheme_hash_table *default_header_;
-
-  int fatal_error_;
-  Input_file_results * input_file_;
-  int error_level_;
-
-  My_lily_lexer * lexer_;
-  bool ignore_version_b_;
-
-  SCM last_beam_start_;
-  void beam_check (SCM); 
-
-  Input here_input () const;
-  void push_spot ();
-  Input pop_spot ();
-    
-  void do_yyparse ();
-  void parser_error (String);
-
-  void set_yydebug (bool);
-
-
-  DECLARE_SCHEME_CALLBACK (paper_description, ());
-private:
-
-  Array<Input> define_spots_;
-
-  char const* here_str0 () const;
-
-  Simultaneous_music * get_chord (Pitch tonic, Array<Pitch>* adds,
-				  Array<Pitch>* subs, Pitch* inversion,
-				  Pitch* bass, Duration d);
-  
-  void set_chord_tremolo (int type_i);
-  void set_last_duration (Duration const *);
-  void set_last_pitch (Pitch const *);
-  friend int yyparse (void*);
-};
-
-#endif // MY_LILY_PARSER_HH
diff --git a/lily/include/note-collision.hh b/lily/include/note-collision.hh
deleted file mode 100644
index 0a36863979..0000000000
--- a/lily/include/note-collision.hh
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
-  collision.hh -- declare Collision
-
-  source file of the GNU LilyPond music typesetter
-
-  (c) 1997--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-*/
-
-
-#ifndef COLLISION_HH
-#define COLLISION_HH
-
-#include "lily-proto.hh"
-#include "lily-guile.hh"
-
-#include "drul-array.hh"
-#include "parray.hh"
-
-/**
-  Resolve conflicts between various Note_columns (chords).
-  
-  TODO 
-
-  * multistaff support (see Chlapik: equal noteheads should be on the
-  same hpos.)  
-
-  * Make interface of this, similar to align-interface.
-  
-*/
-class Note_collision_interface
-{
-public:
-  static SCM automatic_shift (Grob*, Drul_array< Link_array <Grob>  >);
-  static SCM forced_shift (Grob*);
-  
-  static Drul_array< Link_array <Grob>  > get_clash_groups (Grob *me);
-  DECLARE_SCHEME_CALLBACK (force_shift_callback, (SCM element, SCM axis));
-  static void do_shifts (Grob*);
-  static void add_column (Grob*me,Grob*ncol);
-  static bool has_interface(Grob*);
-};
-#endif // COLLISION_HH
diff --git a/lily/include/note-column.hh b/lily/include/note-column.hh
deleted file mode 100644
index b9d7d46770..0000000000
--- a/lily/include/note-column.hh
+++ /dev/null
@@ -1,47 +0,0 @@
-/*
-  note-column.hh -- declare Note_column
-
-  source file of the GNU LilyPond music typesetter
-
-  (c) 1997--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-*/
-
-
-#ifndef NOTE_COLUMN_HH
-#define NOTE_COLUMN_HH
-
-#include "item.hh"
-
-/** a struct for treating a group of noteheads (noteheads, stem
- (chord) and scripts) as a single entity.
-
-  UGR. Junkme.  refpoint should be the notehead, dir should come from stem.
-
-*/
-class Note_column
-{
-public:
-  static int shift_compare (Grob *const &, Grob*const&);
-  
-  /** The relative position of the "voice" containing this
-    chord. Normally this would be the same as the stem direction,
-
-    JUNKME.
-    */
-
-  static Grob * accidentals (Grob*me);
-  static Direction dir (Grob*me);
-  static Slice head_positions_interval (Grob* me);
-  static Direction static_dir (Grob*);
-  static void translate_rests (Grob*me,int dy);
-  static Grob * first_head (Grob*me);
-  static void set_stem (Grob*me,Grob*);
-  static void set_dotcol (Grob*me,Grob*);
-  static void add_head (Grob*me,Grob*);
-  static bool has_rests (Grob*me);
-  static bool has_interface (Grob*);
-  
-  static Item *get_stem (Grob*);
-};
-
-#endif // NOTE_COLUMN_HH
diff --git a/lily/include/note-head.hh b/lily/include/note-head.hh
deleted file mode 100644
index 7c41206e52..0000000000
--- a/lily/include/note-head.hh
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
-  note-head.hh -- part of GNU LilyPond
-
-  (c) 1996--2004 Han-Wen Nienhuys
-*/
-
-#ifndef NOTEHEAD_HH
-#define NOTEHEAD_HH
-
-#include "lily-guile.hh"
-#include "molecule.hh"
-
-/** ball at the end of the stem. Also takes care of ledger lines.
-
-    NoteHead is a kind of RhythmicHead, see there.
-
-  Read-only:
-*/
-
-class Note_head 
-{
-public:
-  DECLARE_SCHEME_CALLBACK (print, (SCM ));
-  static Interval head_extent (Grob*, Axis);
-  static Molecule brew_ledger_lines (Grob *me, int pos, int interspaces,
-				     Interval x_extent, Real, bool);
-  DECLARE_SCHEME_CALLBACK (brew_ez_molecule, (SCM));
-  DECLARE_SCHEME_CALLBACK (extent, (SCM,SCM));
-  static bool has_interface (Grob*);
-  static Real stem_attachment_coordinate (Grob *, Axis a);
-  static int get_balltype (Grob*) ;  
-};
-#endif // NOTEHEAD_HH
-
diff --git a/lily/include/note-spacing.hh b/lily/include/note-spacing.hh
deleted file mode 100644
index 19b0f66c91..0000000000
--- a/lily/include/note-spacing.hh
+++ /dev/null
@@ -1,27 +0,0 @@
-/*   
-note-spacing.hh -- declare Note_spacing
-
-source file of the GNU LilyPond music typesetter
-
-(c) 2001--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-
- */
-
-#ifndef NOTE_SPACING_HH
-#define NOTE_SPACING_HH
-
-#include "lily-proto.hh"
-
-class Note_spacing
-{
-public:
-  static bool has_interface (Grob*);
-
-  static void get_spacing (Grob *me, Item* , Real, Real, Real*, Real*);
-  static void stem_dir_correction (Grob *me, Item * next_col, Real incr,
-				   Real*, Real*);
-  static Item * right_column (Grob*);
-  static Item * left_column (Grob*);  
-};
-
-#endif /* NOTE_SPACING_HH */
diff --git a/lily/include/paper-column.hh b/lily/include/paper-column.hh
deleted file mode 100644
index 7275af9fd9..0000000000
--- a/lily/include/paper-column.hh
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
-  paper-column.hh -- declare  Paper_column
-
-  source file of the GNU LilyPond music typesetter
-
-  (c) 1997--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-*/
-
-
-#ifndef PAPER_COLUMN_HH
-#define PAPER_COLUMN_HH
-
-#include "item.hh"
-#include "rod.hh"
-
-
-class Paper_column : public Item
-{ 
-public:
-  VIRTUAL_COPY_CONS (Grob);
-
-  static bool has_interface (Grob*);
-  int  rank_;
-  virtual void do_break_processing ();
-  virtual Paper_column *get_column () const;
-  virtual System *get_system () const;
-  
-  /// if lines are broken then this column is in #line#
-  System *system_;
-
-  static int get_rank (Grob*);
-
-  DECLARE_SCHEME_CALLBACK(print, (SCM));
-  DECLARE_SCHEME_CALLBACK(before_line_breaking, (SCM));
-  
-  Paper_column (SCM);
-  static bool is_musical (Grob *);
-  static Moment when_mom (Grob*);
-
-  static bool is_used (Grob*) ;
-  void set_rank (int);
-};
-     
-#endif // PAPER_COLUMN_HH
-
diff --git a/lily/include/paper-def.hh b/lily/include/paper-def.hh
deleted file mode 100644
index a95c307c72..0000000000
--- a/lily/include/paper-def.hh
+++ /dev/null
@@ -1,79 +0,0 @@
-/*
-  paper-def.hh -- declare Paper_def
-
-  source file of the GNU LilyPond music typesetter
-
-  (c) 1996--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-*/
-
-
-#ifndef PAPER_DEF_HH
-#define PAPER_DEF_HH
-
-
-#include "lily-proto.hh"
-#include "lily-guile.hh"
-#include "real.hh"
-#include "array.hh"
-#include "interval.hh"
-#include "music-output-def.hh"
-
-
-/** 
-
-  Symbols, dimensions and constants pertaining to visual output.
-
-  This struct takes care of all kinds of symbols, dimensions and
-  constants. Most of them are related to the point-size of the fonts,
-  so therefore, the lookup table for symbols is also in here.
-
-  TODO: 
-  
-  add support for multiple fontsizes 
-
-  remove all utility funcs 
-  
-
-  add support for other len->wid conversions.
-
-
-  Interesting variables:
-  
-  /// The distance between lines
-  interline
-  
-*/
-class Paper_def : public Music_output_def 
-{
-protected:
-  VIRTUAL_COPY_CONS (Music_output_def);
-
-public:    
-  Paper_outputter* get_paper_outputter (String)  const;
-
-  SCM font_descriptions ()const;
-  virtual ~Paper_def ();
-  static int score_count_;
-  
-  /*
-    JUNKME
-   */
-  Real get_realvar (SCM symbol) const;
-  void reinit ();
-  Paper_def ();
-  Paper_def (Paper_def const&);
-
-  Interval line_dimensions_int (int) const;
-
-  void output_settings (Paper_outputter*) const;
-
-  Font_metric * find_font (SCM name, Real mag);
-  
-  // urg
-  friend int yyparse (void*);
-};
-
-Paper_def * unsmob_paper (SCM x);
-Font_metric *select_font (Paper_def *paper, SCM chain);
-
-#endif // Paper_def_HH
diff --git a/lily/include/paper-outputter.hh b/lily/include/paper-outputter.hh
deleted file mode 100644
index 0f8ef616f6..0000000000
--- a/lily/include/paper-outputter.hh
+++ /dev/null
@@ -1,57 +0,0 @@
-/*
-  paper-outputter.hh -- declare Paper_outputter
-
-  source file of the GNU LilyPond music typesetter
-
-  (c) 1997--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-*/
-
-
-#ifndef PAPER_OUTPUTTER_HH
-#define PAPER_OUTPUTTER_HH
-
-#include "lily-proto.hh"
-#include "array.hh"
-#include "string.hh"
-#include "lily-guile.hh"
-#include "protected-scm.hh"
-
-/**
-   Interface for a Grob to output itself; The Paper_score contains a
-   pointer to a Paper_outputter, and this enables every grob to output
-   itself.
-
-   The Paper_outputter contains a reference to an output stream
- (Paper_stream).  */
-
-class Paper_outputter
-{
-  bool verbatim_scheme_b_;
-public:
-
-  SCM output_func_ ;
-  Protected_scm file_;
-  
-  String basename_;
-  Paper_outputter (String nm);
-  ~Paper_outputter ();
-  
-  void dump_scheme (SCM);
-
-  void output_int_def (String k, int v);
-  void output_Real_def (String k, Real v);
-  void output_String_def (String k, String v);
-  void output_scope (SCM, String prefix);
-  void output_version ();
-  void output_font_def (int i, String str);
-  void output_font_switch (int i);
-  void output_header ();
-  void output_comment (String s);
-  void output_string (SCM s);
-  void output_scheme (SCM scm);
-
-  void write_header_field_to_file (String filename, SCM, SCM);
-  void write_header_fields_to_file (SCM);
-};
-
-#endif // PAPER_OUTPUTTER_HH
diff --git a/lily/include/paper-score.hh b/lily/include/paper-score.hh
deleted file mode 100644
index 6aeec1ce3a..0000000000
--- a/lily/include/paper-score.hh
+++ /dev/null
@@ -1,58 +0,0 @@
-/*
-  paper-score.hh -- declare Paper_score
-
-  source file of the GNU LilyPond music typesetter
-
-  (c) 1996--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-*/
-
-
-#ifndef P_SCORE_HH
-#define P_SCORE_HH
-
-#include "column-x-positions.hh"
-#include "parray.hh"
-#include "lily-proto.hh"
-#include "music-output.hh"
-#include "lily-guile.hh"
-#include "protected-scm.hh"
-
-/** all stuff which goes onto paper. notes, signs, symbols in a score
-     #Paper_score# contains the items, the columns.
-    
-    */
-class Paper_score : public Music_output
-{
-  Protected_scm main_smob_;
-public:
-  Paper_def *paper_;
-
-  Paper_outputter *outputter_;  
-  System *system_;
-  
-  Paper_score ();
-
-  /**
-    @return index of argument.
-    */
-  int find_col_idx (Paper_column const *) const;
-
-  Link_array<Item> broken_col_range (Item const*,Item const*) const;
-  void typeset_line (System*);
-    
-protected:
-    /* MAIN ROUTINES */
-  virtual void process (String);
-private:
-  /// before calc_breaking
-  void preprocess ();
-  void calc_idealspacing ();
-  /// calculate where the lines are to be broken, and use results
-  Array<Column_x_positions> calc_breaking ();
-
-  /// after calc_breaking
-  void postprocess ();
-  Paper_score (Paper_score const &);
-};
-
-#endif
diff --git a/lily/include/parse-scm.hh b/lily/include/parse-scm.hh
deleted file mode 100644
index 3d0158fab8..0000000000
--- a/lily/include/parse-scm.hh
+++ /dev/null
@@ -1,22 +0,0 @@
-
-#ifndef PARSE_SCM
-#define PARSE_SCM
-
-#include "input.hh"
-#include "lily-guile.hh"
-
-extern bool parse_protect_global;
-
-struct Parse_start
-{
-  char const* str;
-  int nchars;
-  Input start_location_;
-};
-
-SCM catch_protected_parse_body (void *);
-SCM protected_ly_parse_scm (Parse_start *, bool);
-
-SCM ly_parse_scm (char const *, int *, Input, bool);
-
-#endif
diff --git a/lily/include/percent-repeat-item.hh b/lily/include/percent-repeat-item.hh
deleted file mode 100644
index 2db9741ae2..0000000000
--- a/lily/include/percent-repeat-item.hh
+++ /dev/null
@@ -1,26 +0,0 @@
-/*   
-  percent-repeat-item.hh -- declare Percent_repeat_item_interface
-  
-  source file of the GNU LilyPond music typesetter
-  
-  (c) 2001--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-  
- */
-
-#ifndef PERCENT_REPEAT_ITEM_HH
-#define PERCENT_REPEAT_ITEM_HH
-
-#include "grob.hh"
-
-class Percent_repeat_item_interface
-{
-public:
-  static bool has_interface (Grob*);
-  DECLARE_SCHEME_CALLBACK (beat_slash, (SCM ));  
-  DECLARE_SCHEME_CALLBACK (double_percent, (SCM ));
-  static Molecule x_percent (Grob*,int,Real,Real );
-  static Molecule brew_slash (Grob*);
-};
-
-#endif /* PERCENT_REPEAT_ITEM_HH */
-
diff --git a/lily/include/percent-repeat-iterator.hh b/lily/include/percent-repeat-iterator.hh
deleted file mode 100644
index 2caee1e3b4..0000000000
--- a/lily/include/percent-repeat-iterator.hh
+++ /dev/null
@@ -1,37 +0,0 @@
-/*   
-  percent-repeat-iterator.hh -- declare Percent_repeat_iterator
-  
-  source file of the GNU LilyPond music typesetter
-  
-  (c) 2001--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-  
- */
-
-#ifndef PERCENT_REPEAT_ITERATOR_HH
-#define PERCENT_REPEAT_ITERATOR_HH
-
-#include "music-iterator.hh"
-
-class Percent_repeat_iterator : public Music_iterator
-{
-public:
-  DECLARE_SCHEME_CALLBACK(constructor, ());
-  Percent_repeat_iterator ();
-protected:
-  virtual void derived_substitute (Translator_group*f, Translator_group*t) ;
-
-  virtual void derived_mark () const;
-  virtual Moment pending_moment () const;
-  virtual void do_quit(); 
-  virtual void construct_children () ;
-  virtual bool ok () const;
-  virtual void process (Moment) ;
-  virtual Music_iterator *try_music_in_children (Music *) const;
-
-private:
-  Music_iterator * child_iter_;
-  Moment finish_mom_;
-};
-
-
-#endif /* PERCENT_REPEAT_ITERATOR_HH */
diff --git a/lily/include/performance.hh b/lily/include/performance.hh
deleted file mode 100644
index 8b29187aab..0000000000
--- a/lily/include/performance.hh
+++ /dev/null
@@ -1,37 +0,0 @@
-/*
-  performance.hh -- declare Performance
-
-  (c) 1997--2004 Jan Nieuwenhuizen <janneke@gnu.org>
- */
-
-#ifndef PERFORMANCE_HH
-#define PERFORMANCE_HH
-
-#include "parray.hh"
-#include "lily-proto.hh"
-#include "cons.hh"
-#include "music-output.hh"
-
-/** all stuff which goes onto midi. notes, signs, symbols in a score
-     #Performance# contains the items, the columns.
-    */
-
-class Performance : public Music_output {
-public:
-  Performance ();
-  ~Performance ();
-
-  void add_element (Audio_element*p);
-    
-  void output (Midi_stream& midi_stream_r);
-  void output_header_track (Midi_stream& midi_stream_r);
-
-  void print () const;
-  void process (String);
-
-  Link_array<Audio_staff> audio_staffs_;
-  Cons<Audio_element> *audio_elem_p_list_;
-  Midi_def  * midi_;
-};
-
-#endif // PERFORMANCE_HH
diff --git a/lily/include/performer-group-performer.hh b/lily/include/performer-group-performer.hh
deleted file mode 100644
index 4a52277351..0000000000
--- a/lily/include/performer-group-performer.hh
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
-  performer-group-performer.hh -- declare Performer_group_performer
-
-  (c) 1996--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-                 Jan Nieuwenhuizen <janneke@gnu.org>
- */
-
-#ifndef PERFORMER_GROUP_PERFORMER_HH
-#define PERFORMER_GROUP_PERFORMER_HH
-
-#include "lily-proto.hh"
-#include "parray.hh"
-#include "performer.hh"
-#include "translator-group.hh"
-
-/**
-  Group a number of performers. Usually delegates everything to its contents.
-*/
-
-class Performer_group_performer : public Performer, public virtual Translator_group {
-public:
-  TRANSLATOR_DECLARATIONS(Performer_group_performer);
-  
-  virtual void do_announces ();
-  virtual void process_music ();
-  virtual void announce_element (Audio_element_info);
-protected:
-  Array<Audio_element_info> announce_infos_;
-  void create_audio_elements ();
-
-private:
-  void acknowledge_audio_elements ();
-};
-
-#endif // PERFORMER_GROUP_PERFORMER_HH
-
diff --git a/lily/include/performer.hh b/lily/include/performer.hh
deleted file mode 100644
index de5731a207..0000000000
--- a/lily/include/performer.hh
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
-  performer.hh -- declare Performer
-
-  (c) 1996--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-                 Jan Nieuwenhuizen <janneke@gnu.org>
- */
-
-#ifndef PERFORMER_HH
-#define PERFORMER_HH
-
-#include "audio-element-info.hh"
-#include "array.hh"
-#include "event.hh"
-#include "grob-info.hh"
-#include "translator.hh"
-
-/**
-  Convert a music definition into a audio representation.
-  A baseclass
- */
-class Performer : public virtual Translator
-{
-public:
-  VIRTUAL_COPY_CONS (Translator);
-  friend class Performer_group_performer;  
-  Performer_group_performer* get_daddy_perf () const;
-
-protected:
-  virtual void announce_element (Audio_element_info);
-  virtual void acknowledge_audio_element (Audio_element_info);
-  virtual void create_audio_elements ();
-  virtual int get_tempo () const;
-  virtual void play_element (Audio_element * elem );
-  virtual void process_music ();
-};
-
-
-#endif // PERFORMER_HH
-
diff --git a/lily/include/pitch.hh b/lily/include/pitch.hh
deleted file mode 100644
index d0891569c5..0000000000
--- a/lily/include/pitch.hh
+++ /dev/null
@@ -1,93 +0,0 @@
-/*   
-  pitch.hh -- declare Pitch
-  
-  source file of the GNU LilyPond music typesetter
-  
-  (c) 1998--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-  
- */
-
-#ifndef MUSICAL_PITCH_HH
-#define MUSICAL_PITCH_HH
-
-#include "lily-proto.hh"
-#include "smobs.hh"
-
-/** A "tonal" pitch. This is a pitch used in diatonal western music
-   (24 quartertones in an octave), as opposed to a frequency in Hz or a
-   integer number of semitones.
-
-  Pitch is lexicographically ordered by (octave, notename,
-    alteration).    
-  
-
-   TODO:
-
-   - add indeterminate octaves, so it can be used as a key in keySigature
-
-*/
-class Pitch
-{
-private:				// fixme
-  /*
-    TODO: use SCM
-   */
-
-  int notename_;
-  int alteration_;
-  int octave_;
- 
-  void transpose (Pitch);
-  void up_to (int);
-  void down_to (int);
-  void normalise ();
-
-public:
-  
-  int get_octave () const;
-  int get_notename () const;
-  int get_alteration () const;
-
-  Pitch (int octave, int notename,int accidental);
-  Pitch ();
-
-  Pitch transposed (Pitch) const;
-  Pitch to_relative_octave (Pitch) const;
-
-  static int compare (Pitch const&,Pitch const&);
-
-  int steps () const;
-  int semitone_pitch () const; 
-  int quartertone_pitch () const; 
-  String to_string () const;
-
-  SCM smobbed_copy () const;
-  DECLARE_SCHEME_CALLBACK (less_p, (SCM a, SCM b));
-  DECLARE_SIMPLE_SMOBS (Pitch,);
-};
-
-enum {
-  DOUBLE_FLAT = -4,
-  THREE_Q_FLAT,
-  FLAT ,
-  SEMI_FLAT,
-  NATURAL,
-  SEMI_SHARP,
-  SHARP ,
-  THREE_Q_SHARP,
-  DOUBLE_SHARP,
-};
-
-SCM ly_pitch_transpose (SCM p, SCM delta);
-DECLARE_UNSMOB(Pitch,pitch);
-
-#include "compare.hh"
-INSTANTIATE_COMPARE (Pitch, Pitch::compare);
-
-int compare (Array<Pitch>*, Array<Pitch>*);
-extern SCM pitch_less_proc;
-Pitch interval (Pitch const & from , Pitch const & to );
-
-#endif /* MUSICAL_PITCH_HH */
-
-
diff --git a/lily/include/property-iterator.hh b/lily/include/property-iterator.hh
deleted file mode 100644
index 2da1a159a3..0000000000
--- a/lily/include/property-iterator.hh
+++ /dev/null
@@ -1,65 +0,0 @@
-/*
-  property-iterator.hh -- declare Property_iterator
-
-  source file of the GNU LilyPond music typesetter
-
-  (c) 1997--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-*/
-
-
-#ifndef PROPERTY_ITERATOR_HH
-#define PROPERTY_ITERATOR_HH
-
-#include "simple-music-iterator.hh"
-
-
-
-
-/**
-  Iterate a property.  
- */
-class Property_iterator : public Simple_music_iterator
-{
-public:
-  DECLARE_SCHEME_CALLBACK(constructor, ());
-  DECLARE_SCHEME_CALLBACK(once_finalization, (SCM, SCM ));
-
-protected:
-  virtual void do_quit();
-  virtual void process (Moment);
-};
-
-
-
-
-/**
-  Iterate a property.  
- */
-class Property_unset_iterator : public Simple_music_iterator
-{
-public:
-  DECLARE_SCHEME_CALLBACK(constructor, ());
-protected:
-  virtual void process (Moment);
-};
-
-class Push_property_iterator : public Simple_music_iterator
-{
-public:
-  DECLARE_SCHEME_CALLBACK(constructor, ());  
-  DECLARE_SCHEME_CALLBACK(once_finalization, (SCM, SCM));
-protected:
-  virtual void process (Moment);
-  virtual void do_quit();
-};
-
-class Pop_property_iterator : public Simple_music_iterator
-{
-public:
-  DECLARE_SCHEME_CALLBACK(constructor, ());
-protected:
-  virtual void process (Moment);
-};
-
-
-#endif // PROPERTY_ITERATOR_HH
diff --git a/lily/include/protected-scm.hh b/lily/include/protected-scm.hh
deleted file mode 100644
index 087af9dc9f..0000000000
--- a/lily/include/protected-scm.hh
+++ /dev/null
@@ -1,33 +0,0 @@
-/*   
-  protected-scm.hh -- declare Protected_scm
-  
-  source file of the GNU LilyPond music typesetter
-  
-  (c) 1998--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-  
- */
-
-#ifndef PROTECTED_SCM_HH
-#define PROTECTED_SCM_HH
-
-
-#include "lily-guile.hh"
-
-/*
-  Mix GUILE GC with C++ ctors and dtors. 
- */
-class Protected_scm
-{
-  SCM object_;
-public:
-  Protected_scm ();
-  Protected_scm (SCM);
-  Protected_scm (Protected_scm const &);
-  ~Protected_scm ();
-  Protected_scm &operator = (SCM);
-  Protected_scm &operator = ( Protected_scm const&);
-  operator SCM () const;
-  SCM to_SCM () const;
-};
-
-#endif /* PROTECTED_SCM_HH */
diff --git a/lily/include/relative-music.hh b/lily/include/relative-music.hh
deleted file mode 100644
index aca53b64ee..0000000000
--- a/lily/include/relative-music.hh
+++ /dev/null
@@ -1,26 +0,0 @@
-/*   
-  relative-music.hh -- declare Relative_octave_music
-  
-  source file of the GNU LilyPond music typesetter
-  
-  (c) 1998--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-  
- */
-
-#ifndef RELATIVE_MUSIC_HH
-#define RELATIVE_MUSIC_HH
-
-#include "music-wrapper.hh"
-
-class Relative_octave_music : public Music_wrapper
-{
-public:
-  Relative_octave_music ();
-  
-  VIRTUAL_COPY_CONS (Music);
-  virtual Pitch to_relative_octave (Pitch);
-};
-
-#endif /* RELATIVE_MUSIC_HH */
-
-
diff --git a/lily/include/relative-octave-check.hh b/lily/include/relative-octave-check.hh
deleted file mode 100644
index b6ac316523..0000000000
--- a/lily/include/relative-octave-check.hh
+++ /dev/null
@@ -1,25 +0,0 @@
-/*   
-  relative-octave-check.hh -- declare Relative_octave_octave-check
-  
-  source file of  GNU LilyPond
-  
-  (c) 2003--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-  
- */
-
-#ifndef RELATIVE_OCTAVE_CHECK_HH
-#define RELATIVE_OCTAVE_CHECK_HH
-
-#include "music.hh"
-
-class Relative_octave_check : public Music
-{
-public:
-  VIRTUAL_COPY_CONS(Music);
-  virtual Pitch to_relative_octave (Pitch);
-};
-
-
-#endif /* RELATIVE_MUSIC_HH */
-
-
diff --git a/lily/include/repeated-music.hh b/lily/include/repeated-music.hh
deleted file mode 100644
index d2d5ae387e..0000000000
--- a/lily/include/repeated-music.hh
+++ /dev/null
@@ -1,75 +0,0 @@
-/*   
-  repeated-music.hh -- declare Repeated_music
-  
-  source file of the GNU LilyPond music typesetter
-  
-  (c) 1999--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-  
- */
-
-#ifndef RepEATED_MUSIC_HH
-#define RepEATED_MUSIC_HH
-
-#include "music.hh"
-
-
-/**
-   Musical repeats.
-
-   A repeat, when played has the form of BODY A BODY B BODY C.
-
-   In this examples, the list {A B C} is put in ALTERNATIVES_P_.  BODY
-   is put in REPEAT_BODY_P_.  Either the body or the alternative may
-   be omitted.
-
-   There are three modes of representing this  music:
-
-   BODY A
-        B
-	C
-
-   is called "folded". Mostly used for lyrics.
-
-   
-   BODY A B C
-
-   is called volta.  This is common notation
-
-   BODY A BODY B BODY C
-
-   is called unfolded.  Useful for MIDI.
-
-   If the number of repeats is smaller than the number of alternatives, then
-   the excess alternatives are ignored for all timing purposes.
-
-   If the number of repeats is bigger than the number of alternatives, then
-   the first alternative is assumed to be repeated.
-   
-*/
-class Repeated_music : public Music
-{
-public:
-  Music * body () const;
-  SCM alternatives () const;
-
-  /// how often do we repeat?
-  int repeat_count ( ) const;
-  virtual Pitch to_relative_octave (Pitch);
-
-  Moment body_get_length () const;
-  Moment alternatives_get_length (bool fold) const;
-  Moment alternatives_volta_get_length () const;  
-
-  DECLARE_SCHEME_CALLBACK (unfolded_music_length, (SCM));
-  DECLARE_SCHEME_CALLBACK (volta_music_length, (SCM));
-  DECLARE_SCHEME_CALLBACK (folded_music_length, (SCM));    
-  DECLARE_SCHEME_CALLBACK (minimum_start, (SCM));
-  DECLARE_SCHEME_CALLBACK (first_start, (SCM));    
-  
-  VIRTUAL_COPY_CONS (Music);
-  Repeated_music ();
-  Repeated_music (SCM);
-};
-
-
-#endif /* RepEATED_MUSIC_HH */
diff --git a/lily/include/rest-collision.hh b/lily/include/rest-collision.hh
deleted file mode 100644
index bf14845c4d..0000000000
--- a/lily/include/rest-collision.hh
+++ /dev/null
@@ -1,28 +0,0 @@
-/*
-  rest-collision.hh -- declare Rest_collision
-
-  source file of the GNU LilyPond music typesetter
-
-  (c) 1997--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-*/
-
-
-#ifndef REST_COLLISION_HH
-#define REST_COLLISION_HH
-
-#include "lily-proto.hh"
-#include "lily-guile.hh"
-
-
-
-
-class Rest_collision
-{
-public:
-  static void add_column (Grob*me,Grob*);
-  
-  static bool has_interface (Grob*);
-  DECLARE_SCHEME_CALLBACK (force_shift_callback, (SCM element, SCM axis));
-  static SCM do_shift (Grob*);
-};
-#endif // REST_COLLISION_HH
diff --git a/lily/include/rest.hh b/lily/include/rest.hh
deleted file mode 100644
index 3df7a120bd..0000000000
--- a/lily/include/rest.hh
+++ /dev/null
@@ -1,25 +0,0 @@
-/*
-  rest.hh -- declare Rest
-
-  source file of the GNU LilyPond music typesetter
-
-  (c) 1997--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-*/
-
-
-#ifndef REST_HH
-#define REST_HH
-
-#include "lily-guile.hh"
-
-class  Rest
-{
-public:
-  DECLARE_SCHEME_CALLBACK (after_line_breaking, (SCM ));
-  static bool has_interface (Grob*);
-  static String glyph_name (Grob*, int, String); 
-  static SCM brew_internal_molecule (SCM);
-  DECLARE_SCHEME_CALLBACK (extent_callback, (SCM,SCM));
-  DECLARE_SCHEME_CALLBACK (print, (SCM ));
-};
-#endif // REST_HH
diff --git a/lily/include/rhythmic-head.hh b/lily/include/rhythmic-head.hh
deleted file mode 100644
index 02d1969730..0000000000
--- a/lily/include/rhythmic-head.hh
+++ /dev/null
@@ -1,29 +0,0 @@
-/*
-  rhythmic-head.hh -- declare Rhythmic_head
-
-  source file of the GNU LilyPond music typesetter
-
-  (c) 1997--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-*/
-
-
-#ifndef RHYTHMIC_HEAD_HH
-#define RHYTHMIC_HEAD_HH
-
-#include "lily-guile.hh"
-#include "lily-proto.hh"
-
-class Rhythmic_head
-{
-public:
-  static int duration_log (Grob*);
-  static void set_dots (Grob*,Item *);
-  static Item * get_stem (Grob*) ;
-  static Item * get_dots (Grob*) ;
-  static int dot_count (Grob*) ;
-  DECLARE_SCHEME_CALLBACK (after_line_breaking, (SCM ));
-  static bool has_interface (Grob*);
-  
-};
-
-#endif // RHYTHMIC_HEAD_HH
diff --git a/lily/include/rod.hh b/lily/include/rod.hh
deleted file mode 100644
index 1ab271bba3..0000000000
--- a/lily/include/rod.hh
+++ /dev/null
@@ -1,33 +0,0 @@
-/*   
-  rod.hh -- declare Rod, Column_rod
-  
-  source file of the GNU LilyPond music typesetter
-  
-  (c) 1998--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-  
- */
-
-#ifndef ROD_HH
-#define ROD_HH
-
-#include "lily-proto.hh"
-#include "direction.hh"
-#include "drul-array.hh"
-
-struct Rod
-{
-  Drul_array <Item*> item_l_drul_;
-  Real distance_;
-
-  /**
-    translate the rod so as to refer to Paper_columns  
-   */
-  void columnize ();
-  
-  void add_to_cols ();
-
-  Rod ();
-};
-
-#endif /* ROD_HH */
-
diff --git a/lily/include/scaled-font-metric.hh b/lily/include/scaled-font-metric.hh
deleted file mode 100644
index 2b27d71b4d..0000000000
--- a/lily/include/scaled-font-metric.hh
+++ /dev/null
@@ -1,34 +0,0 @@
-/*   
-  scaled-font-metric.hh -- declare Font_metric
-  
-  source file of the GNU LilyPond music typesetter
-  
-  (c) 1999--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-  
- */
-
-#ifndef SCALED_FONT_METRIC_HH
-#define SCALED_FONT_METRIC_HH
-
-#include "font-metric.hh"
-
-/*
-  Perhaps junk this, and move this to paper_def as interface? 
- */
-struct Scaled_font_metric : public Font_metric
-{
-  virtual Box text_dimension (String) const;
-  virtual Molecule find_by_name (String) const;
-  static SCM make_scaled_font_metric (Font_metric*, Real);
-  virtual int count () const;
-  virtual Offset get_indexed_wxwy (int) const;
-  virtual int name_to_index (String) const;
-protected:
-  virtual Box get_indexed_char (int)const;
-  virtual Box get_ascii_char (int)const;
-  Font_metric *orig_;
-  Real magnification_;
-  
-  Scaled_font_metric (Font_metric*,Real);
-};
-#endif
diff --git a/lily/include/scm-hash.hh b/lily/include/scm-hash.hh
deleted file mode 100644
index c5c2769e67..0000000000
--- a/lily/include/scm-hash.hh
+++ /dev/null
@@ -1,66 +0,0 @@
-/*   
-  scm-hash.hh -- declare Scheme hasher.
-  
-  source file of the GNU LilyPond music typesetter
-  
-  (c) 1999--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-  
- */
-
-#ifndef SCM_HASH_HH
-#define SCM_HASH_HH
-
-
-#include "lily-guile.hh"
-#include "smobs.hh"
-
-
-/**
-   auto resizing hash table. 
-
-   1. ALWAYS USE THIS AS VIA A POINTER, i.e.
-
-   class Foo {
-    Scheme_hash_table * tab;
-   };
-
-   and NOT
-
-   class Foo {
-    Scheme_hash_table tab;
-   }
-
-
-   2. UPON DESTRUCTION, DO
-
-   scm_gc_unprotect_object (tab->self_scm_);
-
- */
-
-class Scheme_hash_table
-{  
-public:
-  bool try_retrieve (SCM key, SCM *val);
-  bool contains (SCM key) const;
-
-  /**
-     WARNING: putting something in assumes responsibility for cleaning
-     up.  */
-  void set (SCM k, SCM v);
-  SCM get (SCM k) const; 
-  void remove (SCM k);
-  Scheme_hash_table ();
-  void operator = (Scheme_hash_table const &); 
-  Scheme_hash_table (Scheme_hash_table const &);
-
-  SCM to_alist () const;
-private:
-  SCM hash_tab_;
-  unsigned elt_count_;
-  
-  DECLARE_SMOBS (Scheme_hash_table,foo);
-};
-
-
-#endif /* SCM_HASH_HH */
-
diff --git a/lily/include/scm-option.hh b/lily/include/scm-option.hh
deleted file mode 100644
index ae37cd9fb7..0000000000
--- a/lily/include/scm-option.hh
+++ /dev/null
@@ -1,17 +0,0 @@
-/*
-  scm-option.hh -- declare Scheme options
-
-  source file of the GNU LilyPond music typesetter
-
-  (c) 2001--2004 Jan Nieuwenhuizen <janneke@gnu.org>
-*/
-#ifndef SCM_OPTION_HH
-#define SCM_OPTION_HH
-
-/* options */
-extern bool midi_debug_global_b;
-extern int testing_level_global;
-extern bool lily_1_8_relative;
-extern bool lily_1_8_compatibility_used;
-
-#endif /* SCM_OPTION_HH */
diff --git a/lily/include/score-engraver.hh b/lily/include/score-engraver.hh
deleted file mode 100644
index 5168f9c72c..0000000000
--- a/lily/include/score-engraver.hh
+++ /dev/null
@@ -1,54 +0,0 @@
-/*
-  score-engraver.hh -- declare Score_engraver
-
-  source file of the GNU LilyPond music typesetter
-
-  (c) 1997--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-*/
-
-
-#ifndef SCORE_ENGRAVER_HH
-#define SCORE_ENGRAVER_HH
-
-#include "engraver-group-engraver.hh"
-#include "global-translator.hh"
-
-/**
-  Top level engraver. Puts elements into appropriate columns.
- */
-class Score_engraver : 
-  public Engraver_group_engraver, public Global_translator 
-{
-  System *system_;
-  int breaks_;			// used for stat printing
-  
-  Link_array<Grob> elems_;
-  Paper_column* command_column_;
-  Paper_column* musical_column_;
-  Paper_score * pscore_;
-
-  void make_columns ();
-  void set_columns (Paper_column*,Paper_column*);
-  void typeset_all ();
-protected:
-  /* Global_translator */
-  virtual void prepare (Moment);
-  virtual void finish ();
-  virtual void one_time_step ();
-
-  /* Engraver_group_engraver interface */
-  virtual void acknowledge_grob (Grob_info);
-  virtual bool try_music (Music*);
-  virtual void initialize ();
-  virtual void finalize ();
-  virtual void announce_grob (Grob_info);
-  virtual void typeset_grob (Grob*elem);
-  virtual void stop_translation_timestep ();
-
-public:
-  TRANSLATOR_DECLARATIONS(Score_engraver);
-  void forbid_breaks ();
-  virtual Music_output *get_output ();  
-};
-
-#endif /* SCORE_ENGRAVER_HH */
diff --git a/lily/include/score-performer.hh b/lily/include/score-performer.hh
deleted file mode 100644
index 29de4d2c3f..0000000000
--- a/lily/include/score-performer.hh
+++ /dev/null
@@ -1,41 +0,0 @@
-/*
-  score-performer.hh -- declare Score_performer
-
-  (c) 1996--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-                 Jan Nieuwenhuizen <janneke@gnu.org>
- */
-
-#ifndef SCORE_PERFORMER_HH
-#define SCORE_PERFORMER_HH
-
-#include "performer-group-performer.hh"
-#include "global-translator.hh"
-
-/**
-  Top level performer. Completely takes care of MIDI output
- */
-class Score_performer: 
-  public Performer_group_performer, public Global_translator 
-{
-public:
-  TRANSLATOR_DECLARATIONS(Score_performer);
-  ~Score_performer ();
-  Performance *performance_;
-
-protected:
-  virtual void finish ();
-  virtual void prepare (Moment mom);
-  virtual void one_time_step ();
-  virtual void start ();
-  virtual void initialize ();
-  virtual void announce_element (Audio_element_info);
-  virtual int get_tempo () const;
-  virtual void play_element (Audio_element* p);
-  virtual Music_output *get_output ();
-private:
-  void header (Midi_stream&);
-
-  Audio_column* audio_column_;
-};
-
-#endif // SCORE_PERFORMER_HH
diff --git a/lily/include/score.hh b/lily/include/score.hh
deleted file mode 100644
index 4a03be6932..0000000000
--- a/lily/include/score.hh
+++ /dev/null
@@ -1,37 +0,0 @@
-/*
-  score.hh -- declare Score
-
-  source file of the GNU LilyPond music typesetter
-
-  (c) 1997--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-*/
-
-
-#ifndef SCORE_HH
-#define SCORE_HH
-
-#include "input.hh"
-#include "lily-proto.hh"
-
-#include "parray.hh"
-#include "smobs.hh"
-
-class Score : public Input
-{
-public:
-  Link_array<Music_output_def> defs_;
-  SCM music_;
-  SCM header_;
-    
-  Score ();
-  Score (Score const&);
-  DECLARE_SMOBS (Score,foo);
-private:
-};
-DECLARE_UNSMOB(Score,score); 
-
-
-SCM ly_run_translator (SCM, SCM);
-SCM ly_render_output (SCM, SCM, SCM);
-void default_rendering (SCM,SCM,SCM,SCM);
-#endif
diff --git a/lily/include/script-column.hh b/lily/include/script-column.hh
deleted file mode 100644
index ab1a3f4c4f..0000000000
--- a/lily/include/script-column.hh
+++ /dev/null
@@ -1,28 +0,0 @@
-/*   
-  g-script-column.hh -- declare Script_column
-  
-  source file of the GNU LilyPond music typesetter
-  
-  (c) 1999--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-  
- */
-
-#ifndef Script_COLUMN_HH
-#define Script_COLUMN_HH
-
-#include "lily-guile.hh"
-#include "lily-proto.hh"
-
-class Script_column
-{
-public:
-  static void add_staff_sided (Grob*, Item*);
-  DECLARE_SCHEME_CALLBACK (before_line_breaking, (SCM ));
-    static bool has_interface (Grob*);
-
-};
-
-
-#endif /* Script_COLUMN_HH */
-
-
diff --git a/lily/include/script.hh b/lily/include/script.hh
deleted file mode 100644
index 494e897788..0000000000
--- a/lily/include/script.hh
+++ /dev/null
@@ -1,36 +0,0 @@
-/*   
-  script.hh -- declare Script
-  
-  source file of the GNU LilyPond music typesetter
-  
-  (c) 1999--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-  
- */
-
-#ifndef SCRIPT_HH
-#define SCRIPT_HH
-
-#include "lily-guile.hh"
-#include "lily-proto.hh"
-
-/**
-   Articulation marks (and the like) that are attached to notes/stems.
-   Needs support from Staff_side for proper operation.  Staff_side
-   handles the positioning.
-*/
-class Script_interface
-{
-public:
-  static Molecule get_molecule (Grob*,Direction d);
-  
-  static bool  has_interface (Grob*);
-  DECLARE_SCHEME_CALLBACK (print, (SCM ));
-  DECLARE_SCHEME_CALLBACK (before_line_breaking, (SCM ));
-};
-
-void make_script_from_event (Grob *p,
-			     SCM * descr, Translator_group*tg,
-			     SCM type, 
-			     int index);
-#endif /* Stem_SCRIPT_HH */
-
diff --git a/lily/include/self-alignment-interface.hh b/lily/include/self-alignment-interface.hh
deleted file mode 100644
index 9328787a8a..0000000000
--- a/lily/include/self-alignment-interface.hh
+++ /dev/null
@@ -1,23 +0,0 @@
-/*   
-  side-position-interface.hh -- declare Side_position_interface
-  
-  source file of the GNU LilyPond music typesetter
-  
-  (c) 1999--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-  
- */
-
-#ifndef SELF_ALIGNMENT_INTERFACE_HH
-#define SELF_ALIGNMENT_INTERFACE_HH
-
-#include "spanner.hh"
-
-struct Self_alignment_interface
-{
-  static bool has_interface (Grob*);
-  DECLARE_SCHEME_CALLBACK (aligned_on_self, (SCM element, SCM axis));
-  DECLARE_SCHEME_CALLBACK (centered_on_parent, (SCM element, SCM axis));
-  DECLARE_SCHEME_CALLBACK (aligned_on_parent, (SCM element, SCM axis));
-  DECLARE_SCHEME_CALLBACK (centered_on_other_axis_parent, (SCM element, SCM axis));
-};
-#endif
diff --git a/lily/include/separating-group-spanner.hh b/lily/include/separating-group-spanner.hh
deleted file mode 100644
index 93059cc316..0000000000
--- a/lily/include/separating-group-spanner.hh
+++ /dev/null
@@ -1,26 +0,0 @@
-/*   
-  separating-group-spanner.hh -- declare Separating_group_spanner
-  
-  source file of the GNU LilyPond music typesetter
-  
-  (c) 1998--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-  
- */
-
-#ifndef SEPARATING_GROUP_SPANNER_HH
-#define SEPARATING_GROUP_SPANNER_HH
-
-#include "spanner.hh"
-
-class Separating_group_spanner
-{
-  static void find_rods (Item*, SCM, Real);
-public:
-  static void add_spacing_unit (Grob*me, Item*);
-  
-  static bool has_interface (Grob*);
-  DECLARE_SCHEME_CALLBACK (set_spacing_rods, (SCM ));
-};
-
-#endif /* SEPARATING_GROUP_SPANNER_HH */
-
diff --git a/lily/include/separation-item.hh b/lily/include/separation-item.hh
deleted file mode 100644
index 99c9220574..0000000000
--- a/lily/include/separation-item.hh
+++ /dev/null
@@ -1,28 +0,0 @@
-/*   
-  single-malt-grouping-item.hh -- declare Separation_item
-  
-  source file of the GNU LilyPond music typesetter
-  
-  (c) 1997--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-  
- */
-
-#ifndef SINGLE_MALT_GROUPING_ITEM_HH
-#define SINGLE_MALT_GROUPING_ITEM_HH
-
-#include "lily-proto.hh"
-#include "direction.hh"
-
-struct Separation_item
-{
-  static bool has_interface (Grob*);
-  static Interval conditional_width (Grob*,Grob*) ;
-  static Interval width (Grob*) ;
-  static Interval relative_width (Grob*, Grob*) ;
-  static Grob*extremal_break_aligned_grob (Grob*,Direction, Interval*);
-  static void add_item (Grob*,Item*);
-  static void add_conditional_item (Grob*,Grob*);  
-};
-
-#endif /* SINGLE_MALT_GROUPING_ITEM_HH */
-
diff --git a/lily/include/sequential-iterator.hh b/lily/include/sequential-iterator.hh
deleted file mode 100644
index 1ee4526dce..0000000000
--- a/lily/include/sequential-iterator.hh
+++ /dev/null
@@ -1,83 +0,0 @@
-/*   
-  sequential-iterator.hh -- declare Sequential_iterator
-
-  source file of the GNU LilyPond music typesetter
-
-  (c) 2002--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-*/
-
-#ifndef SEQUENTIAL_ITERATOR_HH
-#define SEQUENTIAL_ITERATOR_HH
-
-#include "music-iterator.hh"
-#include "protected-scm.hh"
-
-/*
-
-  This is a lookahead list for grace notes.
-
-   {  ... X \grace Y  Z ... }
-
-   normally, the ending of X is the start of Z. In case of a grace
-   note, we take off a little at the end of X. What is stored: START
-   (start point of X), LENGTH (length of X), GRACE_START (start_music
-   of Y), and the next fixup element.
-
-  This is also done for nested musics, i.e.
-
-  voiceA = \notes { \grace b16 c'2 }
-  voiceB = \notes { c'2 \voiceA }
-
-  the iterator for voiceB will contain a fixup entry with (START=0/1,
-  LENGTH=2/1, GRACE_START=(0G-1/16) ) 
-   
-  Graces at the start of a sequential music iterator are handled
-  by initting here_mom_ with Music::start_music (); no fixups are needed.
-
-*/
-struct Grace_fixup 
-{
-  Moment start_;
-  Moment length_;
-
-  Rational grace_start_;  
-  Grace_fixup *next_;
-};
-
-/** Sequential_music iteration: walk each element in turn, and
-  construct an iterator for every element.
-  
- */
-class Sequential_iterator :  public Music_iterator
-{
-public:
-  Grace_fixup * grace_fixups_;
-  
-  DECLARE_SCHEME_CALLBACK(constructor, ());
-  Sequential_iterator ();
-  Sequential_iterator (Sequential_iterator const&);
-  virtual void derived_substitute (Translator_group*f, Translator_group*t) ;
-
-  virtual void derived_mark () const;
-
-  virtual void construct_children ();
-  virtual Moment pending_moment () const;
-  virtual void do_quit(); 
-  virtual bool ok () const;
-
-protected:
-  virtual void process (Moment);
-  virtual Music_iterator *try_music_in_children (Music *) const;
-  virtual bool run_always () const;
-protected:
-  Moment here_mom_;
-  Music_iterator * iter_;
-  SCM  list_;
-  SCM cursor_;
-  
-  virtual void next_element (bool side_effect);
-  virtual void descend_to_child ();
-  virtual SCM get_music_list ()const;
-};
-
-#endif /* SEQUENTIAL_ITERATOR_HH */
diff --git a/lily/include/sequential-music-iterator.hh b/lily/include/sequential-music-iterator.hh
deleted file mode 100644
index c1d707600c..0000000000
--- a/lily/include/sequential-music-iterator.hh
+++ /dev/null
@@ -1,26 +0,0 @@
-/*
-  Sequential_music-iterator.hh -- declare Sequential_music_iterator
-
-  source file of the GNU LilyPond music typesetter
-
-  (c) 1997--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-*/
-
-#ifndef SEQUENTIAL_MUSIC_ITERATOR_HH
-#define SEQUENTIAL_MUSIC_ITERATOR_HH
-
-#include "sequential-iterator.hh"
-
-/** Sequential_music iteration: walk each element in turn, and
-  construct an iterator for every element.
-  
- */
-class Sequential_music_iterator :  public Sequential_iterator
-{
-public:
-  DECLARE_SCHEME_CALLBACK(constructor, ());
-private:
-  virtual SCM get_music_list()const;
-};
-
-#endif // SEQUENTIAL_MUSIC_ITERATOR_HH
diff --git a/lily/include/side-position-interface.hh b/lily/include/side-position-interface.hh
deleted file mode 100644
index d826a849dd..0000000000
--- a/lily/include/side-position-interface.hh
+++ /dev/null
@@ -1,43 +0,0 @@
-/*   
-  side-position-interface.hh -- declare Side_position_interface
-  
-  source file of the GNU LilyPond music typesetter
-  
-  (c) 1999--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-  
- */
-
-#ifndef SIDE_POSITION_INTERFACE_HH
-#define SIDE_POSITION_INTERFACE_HH
-
-#include "spanner.hh"
-#include "item.hh"
-
-/*
-  TODO: move out unrelated callbacks.
-
-  TODO: reduce number of methods.
-*/
-struct Side_position_interface
-{
-public:
-  DECLARE_SCHEME_CALLBACK (aligned_on_support_extents, (SCM element, SCM axis));
-  DECLARE_SCHEME_CALLBACK (aligned_on_support_refpoints, (SCM element, SCM axis));
-  
-  DECLARE_SCHEME_CALLBACK (aligned_side, (SCM element, SCM axis));  
-
-  DECLARE_SCHEME_CALLBACK (quantised_position, (SCM element, SCM axis));
-
-  static SCM general_side_position (Grob*, Axis, bool);
-  static Axis get_axis (Grob*) ;
-  static void set_axis (Grob*,  Axis) ;
-  static bool has_interface (Grob*) ;
-  static void add_support (Grob*,Grob*);
-  static void add_staff_support (Grob*);
-  static Direction get_direction (Grob*);
-};
-
-
-
-#endif /* SIDE_POSITION_INTERFACE_HH */
-
diff --git a/lily/include/simple-music-iterator.hh b/lily/include/simple-music-iterator.hh
deleted file mode 100644
index 05b12283ba..0000000000
--- a/lily/include/simple-music-iterator.hh
+++ /dev/null
@@ -1,33 +0,0 @@
-/*   
-  simple-music-iterator.hh -- declare Simple_music_iterator
-  
-  source file of the GNU LilyPond music typesetter
-  
-  (c) 2000--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
- */
-
-#ifndef SIMPLE_MUSIC_ITERATOR_HH
-#define SIMPLE_MUSIC_ITERATOR_HH
-
-#include "music-iterator.hh"
-
-/*
-  Iterator for atomic music objects: events are generated at the
-  beginning and at the end of the music.
-  
- */
-class Simple_music_iterator : public Music_iterator
-{
-protected:
-
-  Moment last_processed_mom_;
-public:
-  DECLARE_SCHEME_CALLBACK(constructor, ()); 
-  Simple_music_iterator ();
-  virtual void process (Moment);
-  virtual bool ok ()const;
-  virtual Moment pending_moment ()const;
-};
-
-#endif /* SIMPLE_MUSIC_ITERATOR_HH */
-
diff --git a/lily/include/simple-spacer.hh b/lily/include/simple-spacer.hh
deleted file mode 100644
index 4395912c2f..0000000000
--- a/lily/include/simple-spacer.hh
+++ /dev/null
@@ -1,60 +0,0 @@
-/*   
-  simple-spacer.hh -- declare Simple_spacer
-  
-  source file of the GNU LilyPond music typesetter
-  
-  (c) 1999--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-  
- */
-
-#ifndef SIMPLE_SPACER_HH
-#define SIMPLE_SPACER_HH
-
-#include "parray.hh"
-#include "lily-proto.hh"
-
-
-struct Spring_description
-{
-  Real ideal_;
-  Real hooke_;
-  bool active_b_;
-
-  Real block_force_;
-
-  Real length (Real force) const;
-  Spring_description ();
-
-  bool sane_b () const;
-};
-
-struct Simple_spacer
-{
-  Array<Spring_description> springs_;
-  Link_array<Grob> spaced_cols_;
-  Link_array<Grob> loose_cols_;
-  Real force_;
-  Real indent_;
-  Real line_len_;
-  Real default_space_;
-  int active_count_;
-  bool compression_penalty_b_;
-  
-  Simple_spacer ();
-  
-  void solve (Column_x_positions *, bool);
-  void add_columns (Link_array<Grob>const &);
-  void my_solve_linelen ();
-  void my_solve_natural_len ();
-  Real active_springs_stiffness () const;
-  Real range_stiffness (int, int) const;
-  void add_rod (int l, int r, Real dist);
-  Real range_ideal_len (int l, int r)const;
-  Real active_blocking_force ()const;
-  Real configuration_length ()const;
-  void set_active_states ();
-  bool active_b () const;
-};
-
-#endif /* SIMPLE_SPACER_HH */
-
diff --git a/lily/include/simultaneous-music-iterator.hh b/lily/include/simultaneous-music-iterator.hh
deleted file mode 100644
index 237885d2b1..0000000000
--- a/lily/include/simultaneous-music-iterator.hh
+++ /dev/null
@@ -1,41 +0,0 @@
-/*
-  simultaneous-music-iterator.hh -- declare Simultaneous_music_iterator
-
-  source file of the GNU LilyPond music typesetter
-
-  (c) 1997--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-*/
-
-
-#ifndef SIMULTANEOUS_MUSIC_ITERATOR_HH
-#define SIMULTANEOUS_MUSIC_ITERATOR_HH
-
-#include "music-iterator.hh"
-
-class Simultaneous_music_iterator : public Music_iterator
-{
-public:
-  Simultaneous_music_iterator ();
-  Simultaneous_music_iterator (Simultaneous_music_iterator const&);
-  virtual void derived_substitute (Translator_group*f, Translator_group*t) ;
-  virtual void derived_mark () const;
-  DECLARE_SCHEME_CALLBACK(constructor, ());
-  
-  /// make a new context for every child.
-  bool separate_contexts_b_;
-
-  virtual void construct_children ();
-  virtual Moment pending_moment () const;
-  virtual void do_quit(); 
-  virtual bool ok () const;
-  virtual bool run_always () const;
-  
-protected:
-  virtual void process (Moment);
-  virtual Music_iterator *try_music_in_children (Music *) const;
-
-private:
-  SCM children_list_;
-};
-
-#endif // SIMULTANEOUS_MUSIC_ITERATOR_HH
diff --git a/lily/include/skyline.hh b/lily/include/skyline.hh
deleted file mode 100644
index ad5c43d963..0000000000
--- a/lily/include/skyline.hh
+++ /dev/null
@@ -1,40 +0,0 @@
-/*   
-  skyline.hh -- declare Skyline_entry and funcbs.
-
-  source file of the GNU LilyPond music typesetter
-
-  (c) 2002--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-*/
-
-#ifndef SKYLINE_HH
-#define SKYLINE_HH
-
-#include "array.hh"
-#include "box.hh"
-
-struct Skyline_entry
-{
-  Interval width_;
-  Real height_;
-  Skyline_entry();
-  Skyline_entry (Interval, Real);
-};
-
-
-
-void
-merge_skyline (Array<Skyline_entry> *a1, Array<Skyline_entry> const  & a2,
-	       Direction);
-void insert_extent_into_skyline (Array<Skyline_entry> *line, Box b, Axis line_axis,
-				 Direction d);
-Array<Skyline_entry>
-extents_to_skyline (Array<Box> const & extents, Axis a, Direction d);
-Array<Skyline_entry> empty_skyline (Direction d);
-void heighten_skyline (Array<Skyline_entry> *buildings, Real ground);
-Real
-skyline_meshing_distance (Array<Skyline_entry> const &buildings,
-			  Array<Skyline_entry> const &clouds);
-
-
-#endif /* SKYLINE_HH */
-
diff --git a/lily/include/slur-bezier-bow.hh b/lily/include/slur-bezier-bow.hh
deleted file mode 100644
index 4fd52370e7..0000000000
--- a/lily/include/slur-bezier-bow.hh
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
-  slur-bezier-bow.hh -- declare Slur_bezier_bow
-
-  source file of the GNU LilyPond music typesetter
-
-  (c) 2000--2004  Jan Nieuwenhuizen <janneke@gnu.org>
-*/
-
-#ifndef SLUR_BEZIER_BOW_HH
-#define SLUR_BEZIER_BOW_HH
-
-#include "bezier-bow.hh"
-
-class Slur_bezier_bow
-{
-  Array<Offset> encompass_;
-
-  void to_canonical_form ();
-  Direction dir_;
-  Real alpha_;
-  Offset origin_;
-  Real h_inf_, r_0_;
-
-public:
-
-  /**
-     The canonical bezier.
-   */
-  Bezier curve_;
-
-  Slur_bezier_bow (Array<Offset> encompass, Direction dir,
-		   Real hinf, Real r0);
-  Bezier get_bezier () const;
-
-  void minimise_enclosed_area (Real beauty, SCM props);
-  Real fit_factor () const;
-  void blow_fit ();
-  Real get_enclosed_area () const;
-private:
-  Array<Real> area_x_gradientses (Real area);
-};
- 
-#endif /* SLUR_BEZIER_BOW_HH */
diff --git a/lily/include/slur.hh b/lily/include/slur.hh
deleted file mode 100644
index 476b960b92..0000000000
--- a/lily/include/slur.hh
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
-  slur.hh -- declare Slur
-
-  (c) 1996--2004 Han-Wen Nienhuys
-*/
-
-#ifndef SLUR_HH
-#define SLUR_HH
-
-#include "lily-guile.hh"
-#include "lily-proto.hh"
-#include "rod.hh"
-
-class Slur
-{
-public:
-  static void add_column (Grob *me, Grob *col);
-  DECLARE_SCHEME_CALLBACK (print, (SCM));
-  static void set_interface (Grob*);
-  static bool  has_interface (Grob*);
-  static Array<Offset> get_encompass_offsets (Grob *me);
-  static Bezier get_curve (Grob *me);
-  static Direction get_default_dir (Grob *me);
-  DECLARE_SCHEME_CALLBACK (after_line_breaking, (SCM));
-
-  DECLARE_SCHEME_CALLBACK (height, (SCM,SCM));
-private:  
-  static Real get_boundary_notecolumn_y (Grob *me, Direction dir);
-  static Offset broken_trend_offset (Grob *me, Direction dir);
-  static Offset get_attachment (Grob *me,Direction dir, Grob **common);
-  static void de_uglyfy (Grob *me,Slur_bezier_bow* bb, Real default_height);
-  static SCM set_extremities (Grob *me);
-  static void set_control_points (Grob *me);
-  static void check_slope (Grob *me);
-  static Offset encompass_offset (Grob *me, Grob *col, Grob **common);
-};
-
-#endif // SLUR_HH
-
-
diff --git a/lily/include/smobs.hh b/lily/include/smobs.hh
deleted file mode 100644
index c0155ee1fd..0000000000
--- a/lily/include/smobs.hh
+++ /dev/null
@@ -1,146 +0,0 @@
-/*   
-  smobs.hh -- declare smob related stuff.
-  
-  source file of the GNU LilyPond music typesetter
-  
-  (c) 1999--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-  
- */
-
-#ifndef SMOBS_HH
-#define SMOBS_HH
-
-#include "lily-guile.hh"
-
-
-/*
-
-   Each smobbed C-object may only be interfaced by a single, unique
-   smob cell. Therefore NEVER provide a public function that will
-   create a smobcell for an existing object pointer.
-
-   There are two ways to reach this goal:
-
-   simple smobs:
-
-   - Data structures that are encapsulated by GUILE. If constructed
-   through GUILE, you may only store them as protected SCMs, and may
-   not copy the pointer the object itself. Typical interface
-
-   struct Ssmob {
-   public:
-     SCM make_copy_scm () const {
-       Ssmob *sp = new Ssmob (*this);
-       return sp->smobbed_self ();
-     }
-   };
-
-   or
-
-   struct Ssmob {
-   public:
-     DECLARE_SIMPLE_SMOBS;
-     static SCM make_scm (void initdata) {
-       Ssmob * sp = new Ssmob (initdata);
-       return sp->smobbed_self ();
-     }
-   private:
-     Ssmob (initdata);
-   }
-
-   Objets of type Ssmob may live on the stack, or on the heap, or as
-   part of other objects.  However, as soon as the object is smobbed,
-   by definition (by definition of the constructors, in this example),
-   lives on the heap as a separate object
-   
-   - complex smobs: data structures whose identity is referenced and
-   stored both in C++ and in GUILE form. From going from C++ to GUILE,
-   you use smob_ptr->self_scm_
-
-   class Csmob {
-     DECLARE_SMOBS;
-     Csmob () { smobify_self (); }
-     Csmob (Csmob const & s) {
-       // don't copy self_scm_
-       smobify_self ();
-     }
-   };
-   
-   A complex smob is a C++ class with static member functions to glue
-   it with Scheme. Every instance carries SELF_SCM_, a pointer to the
-   unique Scheme smob cell of itself.
-
-   Upon creation, SELF_SCM_ is protected, so if you choose to store it
-   in C++ structures, you need to do
-
-   class Bla {
-   Csmob *ptr;
-   ~Bla () {  scm_gc_unprotect_object (ptr->self_scm_); }
-   
-   };
-
-   If protection is done via GUILE, don't forget to unprotect AFTER putting
-   stuff into the GUILE datastructs
-
-
-   guile_data = gh_cons (ptr->self_scm_, guile_data);
-   ptr->self_scm_
-
-   Since GUILE takes care of the freeing the object, the destructor
-   is private.
-
-   DUMMY a thing to make sure compiles only work if this header
-   if this file is there.
-
-
-   WARNING:
-
-   smobify_self () might trigger a GC, so make sure that objects are  
-   sane when you do smobify_self ().
-*/
-
-#define DECLARE_SIMPLE_SMOBS(CL,dummy) \
-protected: \
-	friend class Non_existant_class ; \
-	SCM smobbed_self () const; \
-private:\
-	static scm_t_bits smob_tag_;		       		\
-	static SCM mark_smob (SCM);				\
-	static size_t free_smob (SCM s);		        \
-	static int print_smob (SCM s, SCM p, scm_print_state*);	\
-public: \
-	static SCM equal_p (SCM a, SCM b);\
-	static CL * unsmob (SCM s){\
-  if (SCM_NIMP (s) && SCM_CELL_TYPE (s) == smob_tag_)		\
-    return (CL*) SCM_CELL_WORD_1 (s);				\
-  else								\
-    return 0;							\
-}								\
-	static SCM smob_p (SCM);\
-	static void init_smobs ();				\
-private:
-
-
-#define DECLARE_SMOBS(CL,dummy)					\
-	DECLARE_SIMPLE_SMOBS (CL,dammy) \
-protected:\
-	virtual ~CL ();\
-	SCM unprotected_smobify_self ();\
-private: \
-	SCM smobify_self ();					\
-	SCM self_scm_; \
-public: \
-	SCM self_scm () const { return self_scm_; } \
-private:
-
-#define DECLARE_UNSMOB(CL,name) \
-inline CL *						\
-unsmob_ ## name (SCM s)			\
-{						\
-return  CL::unsmob (s);				\
-}
-
-
-
-#endif /* SMOBS_HH */
-
diff --git a/lily/include/source-file.hh b/lily/include/source-file.hh
deleted file mode 100644
index 18363da1d8..0000000000
--- a/lily/include/source-file.hh
+++ /dev/null
@@ -1,77 +0,0 @@
-
-#ifndef SOURCE_FILE_HH
-#define SOURCE_FILE_HH
-
-#include <iostream>
-
-#include "flower-proto.hh"
-#include "string.hh"
-#include "interval.hh"
-#include "protected-scm.hh"
-#include "parray.hh"
-
-/**
-  class for reading and mapping a file. 
-
-  duplicates a lot of Data_file and Text_stream.
-  should look at including Data_file's functionality:
-  get_line (), get_word () here.
-*/
-
-class Source_file
-{
-public:
-  Source_file (String fn);
-  Source_file (String, String );
-
-  virtual ~Source_file ();
-
-  char const* to_str0 () const;
-  virtual String error_string (char const* pos_str0 ) const;
-  std::istream * get_istream ();
-  bool in_b (char const* pos_str0 ) const;
-  int length () const;
-  virtual int get_line (char const* pos_str0 ) const;
-  String name_string () const;
-  String file_line_column_string (char const* str0 ) const;
-
-  // return start + n
-  char const* seek_str0 (int n);
-
-  int tell () const;
-  // return here + n bytes
-  char const* forward_str0 (int n);
-  char const* pos_str0 () { return pos_str0_; }
-  String get_string (int n);
-  void set_pos (char const * pos_str0);
-public:
-  Slice line_slice (char const* pos_str0) const;
-  String line_string (char const* pos_str0) const;
-  int get_column (char const* pos_str0) const;
-  int get_char (char const* pos_str0) const;
-
-  /*
-    JUNKME.
-
-    This thing doubles as a file-storage/file-iterator object.
-   */
-  char const* pos_str0_;
-
-  SCM get_port () const { return str_port_; }
-  String name_;
-
-private:
-  Link_array<char> newline_locations_; 
-  std::istream* istream_;
-  char  * contents_str0_;
-  int length_;
-  void load_stdin ();
-  void init_port ();
-  
-  Protected_scm str_port_;
-};
-
-char * gulp_file (String fn, int *len);
-
-#endif // SOURCE_FILE_HH //
-
diff --git a/lily/include/source.hh b/lily/include/source.hh
deleted file mode 100644
index 55f5e4e2e2..0000000000
--- a/lily/include/source.hh
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
-  source.hh -- part of LilyPond
-
-  (c) 1997--2004 Jan Nieuwenhuizen <janneke@gnu.org>
-*/
-
-#ifndef SOURCE_HH
-#define SOURCE_HH
-#include "cons.hh"
-#include "flower-proto.hh"
-
-/*
-   a set of sourcefiles.
- */
-class Sources 
-{
-  Sources (Sources const&) {}
-public:
-  Sources ();
-  ~Sources ();
-
-  Source_file * get_file (String &filename );
-  Source_file* get_sourcefile (char const* str0 );
-  void add (Source_file* sourcefile );
-  void set_path (File_path*p);
-  void set_binary (bool);
-
-  const File_path * path_C_;
-private:
-  Cons<Source_file> *sourcefile_list_;
-  bool is_binary_ ;
-};
-
-
-
-#endif // SOURCE_HH //
diff --git a/lily/include/spaceable-grob.hh b/lily/include/spaceable-grob.hh
deleted file mode 100644
index 1f45f40070..0000000000
--- a/lily/include/spaceable-grob.hh
+++ /dev/null
@@ -1,28 +0,0 @@
-/*   
-  spaceable-grob.hh -- declare Spaceable_grob
-  
-  source file of the GNU LilyPond music typesetter
-  
-  (c) 2000--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-  
- */
-
-#ifndef SPACEABLE_GROB_HH
-#define SPACEABLE_GROB_HH
-
-#include "lily-guile.hh"
-#include "lily-proto.hh"
-
-struct Spaceable_grob
-{
-  /// set a minimum distance
-  static void add_rod (Grob*me, Grob * to, Real distance);
-  static void add_spring (Grob*me,Grob * to, Real dist, Real strength, bool);
-  static bool has_interface (Grob*);
-  static void remove_interface (Grob*);
-  static SCM get_minimum_distances (Grob*);
-  static SCM get_ideal_distances (Grob*);
-};
-
-#endif /* SPACEABLE_GROB_HH */
-
diff --git a/lily/include/spacing-interface.hh b/lily/include/spacing-interface.hh
deleted file mode 100644
index 070f05807e..0000000000
--- a/lily/include/spacing-interface.hh
+++ /dev/null
@@ -1,13 +0,0 @@
-/*   
-  spacing-interface.hh -- declare Spacing_interface
-  
-  source file of the GNU LilyPond music typesetter
-  
-  (c) 2002--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-  
- */
-
-struct Spacing_interface {
-  static bool has_interface (Grob*);
-};
-
diff --git a/lily/include/span-bar.hh b/lily/include/span-bar.hh
deleted file mode 100644
index 08316b5f33..0000000000
--- a/lily/include/span-bar.hh
+++ /dev/null
@@ -1,37 +0,0 @@
-/*
-  span-bar.hh -- declare Span_bar
-
-  source file of the GNU LilyPond music typesetter
-
-  (c) 1997--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-*/
-
-
-#ifndef SPAN_BAR_HH
-#define SPAN_BAR_HH
-
-#include "lily-guile.hh"
-#include "lily-proto.hh"
-
-/**
-   This is a barline that is spanned across other bar lines.  This is
-   the implementation of the long barlines that occur in orchestral
-   score and other multi-staff music.
-*/
-class Span_bar
-{
-public:
-  
-  static bool has_interface (Grob*);  
-  static Interval get_spanned_interval (Grob*);
-  static void add_bar (Grob*,Grob*);
-  static void evaluate_glyph (Grob*);
-  static void evaluate_empty (Grob*);
-  DECLARE_SCHEME_CALLBACK (width_callback, (SCM smob, SCM axis));
-  DECLARE_SCHEME_CALLBACK (get_bar_size, (SCM ));
-  DECLARE_SCHEME_CALLBACK (print, (SCM ));
-  DECLARE_SCHEME_CALLBACK (before_line_breaking, (SCM ));
-  DECLARE_SCHEME_CALLBACK (center_on_spanned_callback, (SCM element, SCM axis));
-};
-
-#endif // SPAN_BAR_HH
diff --git a/lily/include/spanner.hh b/lily/include/spanner.hh
deleted file mode 100644
index 40617f18e1..0000000000
--- a/lily/include/spanner.hh
+++ /dev/null
@@ -1,73 +0,0 @@
-/*
-  spanner.hh -- part of GNU LilyPond
-
-  (c) 1996--2004 Han-Wen Nienhuys
-*/
-
-#ifndef SPANNER_HH
-#define SPANNER_HH
-
-#include "lily-proto.hh"
-#include "grob.hh"
-#include "drul-array.hh"
-#include "rod.hh"
-
-/** A symbol which is attached between two columns. A spanner is a
-  symbol which spans across several columns, so its final appearance
-  can only be calculated after the breaking problem is solved.
-
-  Examples
-
-  * (de)crescendo
-  * slur
-  * beam
-  * bracket
-
-  Spanner should know about the items which it should consider:
-  e.g. slurs should be steep enough to "enclose" all those items. This
-  is absolutely necessary for beams, since they have to adjust the
-  length of stems of notes they encompass.
-
-  */
-class Spanner : public  Grob {
-  Drul_array<Item*> spanned_drul_;
-  int break_index_;
-  
-public:
-  DECLARE_SCHEME_CALLBACK (set_spacing_rods, (SCM));
-  
-  Link_array<Spanner> broken_intos_;
-
-  int get_break_index () const;
-  // todo: move to somewhere else.
-  Real get_broken_left_end_align () const;
-  void substitute_one_mutable_property (SCM sym, SCM val)  ;
-  bool fast_fubstitute_grob_list (SCM sym, SCM grob_list);
-  // TODO: make virtual and do this for Items as well.
-  Interval_t<int> spanned_rank_iv ();
-  void set_bound (Direction d, Grob*);
-  Item *get_bound (Direction d) const;
-  
-  Spanner (SCM);
-  Spanner (Spanner const &);
-  bool broken_b () const;
-  void do_break ();
-  Real spanner_length () const;
-
-  static int compare (Spanner * const &,Spanner * const &);
-  virtual Grob* find_broken_piece (System*) const;
-  virtual SCM do_derived_mark () const;
-  static bool has_interface (Grob*);
-  virtual System *get_system () const;
-protected:
-  void set_my_columns ();
-
-  VIRTUAL_COPY_CONS (Grob);
-  virtual void do_break_processing ();
-};
-
-void add_bound_item (Spanner*, Grob*);
-///DECLARE_UNSMOB (Spanner, spanner);
-
-int broken_spanner_index (Spanner * sp);
-#endif
diff --git a/lily/include/spring.hh b/lily/include/spring.hh
deleted file mode 100644
index 951f61f29d..0000000000
--- a/lily/include/spring.hh
+++ /dev/null
@@ -1,47 +0,0 @@
-/*   
-  spring.hh -- declare Spring, Column_spring
-  
-  source file of the GNU LilyPond music typesetter
-  
-  (c) 1999--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-  
- */
-
-#ifndef SPRING_HH
-#define SPRING_HH
-
-#include "lily-proto.hh"
-#include "drul-array.hh"
-#include "smobs.hh"
-
-struct Spring_smob
-{
-  Grob *other_;
-  Real distance_;
-  bool expand_only_b_;
-  Real strength_;
-  
-  DECLARE_SIMPLE_SMOBS(Spring_smob,dummy);
-public:
-  SCM smobbed_copy () const;
-  Spring_smob();
-};
-DECLARE_UNSMOB(Spring_smob, spring);
-
-struct Spring{
-  Drul_array<Item*> item_l_drul_;
-  Real distance_;
-  bool expand_only_b_;
-
-  /*
-    TODO: make 2 strengths: one for stretching, and one for shrinking.
-  */
-  Real strength_;
-  void add_to_cols ();
-  void set_to_cols ();
-  Spring ();
-};
-
-
-#endif /* SPRING_HH */
-
diff --git a/lily/include/staff-spacing.hh b/lily/include/staff-spacing.hh
deleted file mode 100644
index 12ab0aa0f8..0000000000
--- a/lily/include/staff-spacing.hh
+++ /dev/null
@@ -1,26 +0,0 @@
-/*   
-staff-spacing.hh -- declare Staff_spacing
-
-source file of the GNU LilyPond music typesetter
-
-(c) 2001--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-
- */
-
-#ifndef STAFF_SPACING_HH
-#define STAFF_SPACING_HH
-
-#include "lily-proto.hh"
-
-class Staff_spacing
-{
-public:
-  static Real next_notes_correction (Grob*, Grob*);
-  static Real next_note_correction (Grob*, Grob*, Interval);  
-  static bool has_interface (Grob*);
-  static void get_spacing_params (Grob*,Real*,Real*);
-
-  static Interval bar_y_positions (Grob*);
-};
-
-#endif /* STAFF_SPACING_HH */
diff --git a/lily/include/staff-symbol-referencer.hh b/lily/include/staff-symbol-referencer.hh
deleted file mode 100644
index b944ae93f7..0000000000
--- a/lily/include/staff-symbol-referencer.hh
+++ /dev/null
@@ -1,47 +0,0 @@
-/* 
- staff-sym-referencer.hh -- declare staff_symbol_referencer
- 
- source file of the GNU LilyPond music typesetter
- 
-  (c) 1999--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
- 
- */
-
-#ifndef STAFF_SYMBOL_REFERENCER_HH
-#define STAFF_SYMBOL_REFERENCER_HH
-
-#include "grob.hh"
-
-
-/**
- A notation object that needs access to variables of the staff (no
- lines, leading).
- 
- */
-class Staff_symbol_referencer 
-{
-public:
-  
-  static bool has_interface (Grob*);
-  static bool ugly_hack (Grob*);  
-  static void set_position (Grob*,Real);
-  DECLARE_SCHEME_CALLBACK (callback, (SCM element, SCM axis));
-
-  /**
-     Leading are the lead strips between the sticks (lines) of
-     typeface. ie. leading is vertical space.
-  */
- 
-  static Real line_thickness (Grob*);
-  static Real staff_space (Grob*);
-  static Grob * get_staff_symbol (Grob*);
-  static bool on_staffline (Grob*);
-  static bool on_staffline (Grob*,int);
-  static int line_count (Grob*);
-  static Real get_position (Grob*);
-  static Real staff_radius (Grob*);
-};
-
-int compare_position (Grob *const&,Grob *const&); 
-#endif /* STAFF_SYMBOL_REFERENCER_HH */
-
diff --git a/lily/include/staff-symbol.hh b/lily/include/staff-symbol.hh
deleted file mode 100644
index 875127f823..0000000000
--- a/lily/include/staff-symbol.hh
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
-  staff-symbol.hh -- declare Staff_symbol
-
-  source file of the GNU LilyPond music typesetter
-
-  (c) 1997--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-*/
-
-
-#ifndef STAFF_SYMBOL_HH
-#define STAFF_SYMBOL_HH
-
-#include "lily-guile.hh"
-#include "lily-proto.hh"
-
-/**
-  TODO: add linethickness as parameter.
-  */
-class Staff_symbol 
-{
-public:
-  static Real staff_space (Grob*) ;
-  static Real get_line_thickness (Grob*);
-  static Real get_ledger_line_thickness (Grob*);
-    
-  static int get_steps (Grob*) ;
-  static int line_count (Grob*);
-  DECLARE_SCHEME_CALLBACK (print, (SCM ));
-  static bool has_interface (Grob*);
-  
-};
-#endif // STAFF_SYMBOL_HH
diff --git a/lily/include/stem-info.hh b/lily/include/stem-info.hh
deleted file mode 100644
index 1e8067077a..0000000000
--- a/lily/include/stem-info.hh
+++ /dev/null
@@ -1,28 +0,0 @@
-/*
-  stem-info.hh -- declare Stem_info
-
-  source file of the GNU LilyPond music typesetter
-
-  (c) 1997--2004 Jan Nieuwenhuizen <janneke@gnu.org>
-*/
-
-
-#ifndef STEM_INFO_HH
-#define STEM_INFO_HH
-
-#include "real.hh"
-
-/*
-  Parameters for a stem, (multiply with stemdirection, to get real values
-  for a downstem.)
- */
-struct Stem_info 
-{
-  Direction dir_;
-  Real ideal_y_;
-  Real shortest_y_;
-  Stem_info();
-void  scale (Real);
-};
-
-#endif // STEM_INFO_HH
diff --git a/lily/include/stem-tremolo.hh b/lily/include/stem-tremolo.hh
deleted file mode 100644
index a0aa600f50..0000000000
--- a/lily/include/stem-tremolo.hh
+++ /dev/null
@@ -1,29 +0,0 @@
-/*   
-  stem-tremolo.hh -- declare Abbreviation
-  
-  source file of the GNU LilyPond music typesetter
-  
-  (c) 1997--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-  
- */
-
-#ifndef ABBREV_HH
-#define ABBREV_HH
-
-#include "lily-proto.hh"
-#include "lily-guile.hh"
-
-class Stem_tremolo
-{
-public:
-  
-  static bool has_interface (Grob*);
-  DECLARE_SCHEME_CALLBACK (dim_callback, (SCM smob, SCM axis));
-  DECLARE_SCHEME_CALLBACK (print, (SCM ));
-  DECLARE_SCHEME_CALLBACK (height, (SCM,SCM));
-  static void set_stem (Grob*me, Grob *st);
-  static Molecule raw_molecule (Grob*);
-};
-
-#endif /* ABBREV_HH */
-
diff --git a/lily/include/stem.hh b/lily/include/stem.hh
deleted file mode 100644
index 02466710d8..0000000000
--- a/lily/include/stem.hh
+++ /dev/null
@@ -1,53 +0,0 @@
-/*
-  stem.hh -- declare Stem
-
-  (c) 1996--2004 Han-Wen Nienhuys
-*/
-
-#ifndef STEM_HH
-#define STEM_HH
-
-#include "lily-proto.hh"
-#include "lily-guile.hh"
-#include "stem-info.hh"
-#include "drul-array.hh"
-
-class Stem 
-{
-public:
-  static Array<int> note_head_positions (Grob *);
-  static int duration_log (Grob *);
-  static void set_beaming (Grob *, int, Direction d);
-  static Grob *get_beam (Grob *);
-  static Grob *first_head (Grob *);
-  static Grob *last_head (Grob *);
-  static Drul_array<Grob*> extremal_heads (Grob *);
-  static Grob *support_head (Grob *) ;
-  static void add_head (Grob *me, Grob *n);
-  static Stem_info get_stem_info (Grob *);
-  static Real chord_start_y (Grob *);
-  static Direction get_direction (Grob *);
-  static void set_stemend (Grob *,Real);
-  static Direction get_default_dir (Grob *);
-  static Slice Stem::beam_multiplicity (Grob *);
-  static Real thickness (Grob*);
-  static int head_count (Grob *);
-  static bool invisible_b (Grob *) ;
-  static Interval head_positions (Grob *);
-  static Real get_default_stem_end_position (Grob*me);
-  static void position_noteheads (Grob *);
-  static Real stem_end_position (Grob *);
-  static Molecule flag (Grob *);
-  static bool has_interface (Grob *);
-  static void set_spacing_hints (Grob *);
-  
-  DECLARE_SCHEME_CALLBACK (print, (SCM));
-  DECLARE_SCHEME_CALLBACK (off_callback, (SCM element, SCM axis));
-  DECLARE_SCHEME_CALLBACK (before_line_breaking, (SCM));
-  DECLARE_SCHEME_CALLBACK (dim_callback, (SCM smob, SCM axis));
-  DECLARE_SCHEME_CALLBACK (height, (SCM, SCM));
-
-private:
-  static void calc_stem_info (Grob *);
-};
-#endif
diff --git a/lily/include/stream.hh b/lily/include/stream.hh
deleted file mode 100644
index 96ba397fa6..0000000000
--- a/lily/include/stream.hh
+++ /dev/null
@@ -1,28 +0,0 @@
-/*   
-stream.hh -- declare compatibility glue for gcc 3.
-
-source file of the GNU LilyPond music typesetter
-
-(c) 2001--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-
- */
-
-#ifndef STREAM_HH
-#define STREAM_HH
-
-#include <iostream>
-#include <sstream>
-
-#include "string.hh"
-
-#if __GNUC__ > 2
-std::ostream *open_file_stream (String filename,
-				std::ios_base::openmode mode=std::ios::out);
-#else
-std::ostream *open_file_stream (String filename, int mode=ios::out);
-#endif
-void close_file_stream (std::ostream *os);
-
-
-#endif /* STREAM_HH */
-
diff --git a/lily/include/swallow-perf.hh b/lily/include/swallow-perf.hh
deleted file mode 100644
index 74dde922e4..0000000000
--- a/lily/include/swallow-perf.hh
+++ /dev/null
@@ -1,24 +0,0 @@
-/*
-  swallow-perf.hh -- declare Swallow_performer
-
-  source file of the GNU LilyPond music typesetter
-
-  (c) 1997--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-*/
-
-
-#ifndef SWALLOW_PERF_HH
-#define SWALLOW_PERF_HH
-
-#include "performer.hh"
-
-class Swallow_performer : public Performer
-{
-public:
-  VIRTUAL_COPY_CONS (Translator);
-  
-protected:
-  virtual bool try_music (Music*) { return true; }
-};
-
-#endif // SWALLOW_PERF_HH
diff --git a/lily/include/system-start-delimiter.hh b/lily/include/system-start-delimiter.hh
deleted file mode 100644
index 59e87f29e3..0000000000
--- a/lily/include/system-start-delimiter.hh
+++ /dev/null
@@ -1,34 +0,0 @@
-/*   
-  System-start-delimiter.hh -- declare System_start_delimiter
-     
-  source file of the GNU LilyPond music typesetter
-  
-  (c) 2000--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-  
- */
-
-#ifndef SYSTEM_START_DELIMITER_HH
-#define SYSTEM_START_DELIMITER_HH
-
-#include "lily-guile.hh"
-#include "lily-proto.hh"
-
-/*
-  Braces/brackets across staves.
- */
-class System_start_delimiter
-{
-public:
-  DECLARE_SCHEME_CALLBACK (print, (SCM ));
-  
-  
-  static bool has_interface (Grob*);
-  DECLARE_SCHEME_CALLBACK (after_line_breaking, (SCM ));
-  static void try_collapse (Grob*);
-  static Molecule staff_bracket (Grob*,Real) ;
-  static Molecule staff_brace (Grob*,Real) ;
-  static Molecule simple_bar (Grob*,Real) ;
-};
-
-#endif /* SYSTEM_START_DELIMITER_HH */
-
diff --git a/lily/include/system.hh b/lily/include/system.hh
deleted file mode 100644
index 1f77cac75a..0000000000
--- a/lily/include/system.hh
+++ /dev/null
@@ -1,52 +0,0 @@
-
-/*
-  line-of-score.hh -- part of GNU LilyPond
-
-  (c) 1996--2004 Han-Wen Nienhuys
-*/
-
-#ifndef SYSTEM_HH
-#define SYSTEM_HH
-
-
-#include "column-x-positions.hh"
-#include "spanner.hh"
-
-/*
-  If you keep following offset reference points, you will always end
-up at the root object. This root object is called @ref{System}, and it
-represents a system (i.e. a line of music).
-
-
- */
-class System : public Spanner
-{
-public:
-  int rank_;
-  void post_processing (bool);
-
-  System (SCM);
-  /// is #c# contained in #*this#?
-  bool contains_b (Paper_column const *c) const;
-  int element_count () const;
-  int spanner_count () const;
-
-
-  void break_into_pieces (Array<Column_x_positions> const&);
-  void output_lines ();
-  static bool has_interface (Grob*);
-  
-  Link_array<Item> broken_col_range (Item const*, Item const*) const;
-  Link_array<Grob> columns () const;
-  
-  void add_column (Paper_column*);
-  void typeset_grob (Grob*);
-  void output_molecule (SCM, Offset);
-  void output_scheme (SCM);
-  void pre_processing ();
-protected:
-  VIRTUAL_COPY_CONS (Grob);
-};
-
-#endif /* SYSTEM_HH */
-
diff --git a/lily/include/text-item.hh b/lily/include/text-item.hh
deleted file mode 100644
index e272303e4b..0000000000
--- a/lily/include/text-item.hh
+++ /dev/null
@@ -1,32 +0,0 @@
-/*   
-  text-item.hh -- declare markup functions
-
-  source file of the GNU LilyPond music typesetter
-  
-  (c) 1998--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-  Jan Nieuwenhuizen <janneke@gnu.org>
- */
-
-#ifndef TEXT_ITEM
-#define TEXT_ITEM
-
-
-#include "lily-proto.hh"
-#include "lily-guile.hh"
-#include "molecule.hh"
-
-class Text_item
-{
-public:
-  DECLARE_SCHEME_CALLBACK (print, (SCM));
-  DECLARE_SCHEME_CALLBACK (interpret_markup, (SCM, SCM, SCM));
-  static bool has_interface (Grob*);
-  static bool markup_p (SCM) ;
-
-};
-
-
-  
-
-
-#endif /* TEXT_ITEM */
diff --git a/lily/include/text-spanner.hh b/lily/include/text-spanner.hh
deleted file mode 100644
index d355f68b98..0000000000
--- a/lily/include/text-spanner.hh
+++ /dev/null
@@ -1,24 +0,0 @@
-/*
-  text-spanner.hh -- declare Text_spanner
-
-  source file of the GNU LilyPond music typesetter
-
-  (c) 2000--2004 Jan Nieuwenhuizen <janneke@gnu.org>
-*/
-
-
-#ifndef TEXT_SPANNER_HH
-#define TEXT_SPANNER_HH
-
-#include "lily-guile.hh"
-
-class Text_spanner
-{
-public:
-  DECLARE_SCHEME_CALLBACK (print, (SCM));
-  static bool has_interface (Grob*);
-private:
-  static void setup_pedal_bracket(Spanner *s);
-};
-
-#endif /* TEXT_SPANNER_HH */
diff --git a/lily/include/tfm-reader.hh b/lily/include/tfm-reader.hh
deleted file mode 100644
index ddf42d6b23..0000000000
--- a/lily/include/tfm-reader.hh
+++ /dev/null
@@ -1,47 +0,0 @@
-/*   
-  tfm-reader.hh -- declare Tex_font_metric_reader
-  
-  source file of the GNU LilyPond music typesetter
-  
-  (c) 1999--2004 Jan Nieuwenhuizen <janneke@gnu.org>
-
-
-  revamped code from GNU Fontutils-0.6
-
- */
-
-#ifndef TFM_READER_HH
-#define TFM_READER_HH
-
-#include "tfm.hh"
-#include "binary-source-file.hh"
-
-class Tex_font_metric_reader
-{
-private:
-  Real get_U32_fix ();
-  Real get_U32_fix_scaled ();
-  String get_bcpl_string ();
-  void read_header ();
-  void read_params ();
-  void read_char_metrics ();
-  Tex_font_char_metric read_char_metric (Char_code code);
-  Tex_font_char_metric read_char ();
-  void read_lig_kern_program (Array<Tfm_ligature>* ligatures, Array <Tfm_kern>* kerns);
-
-
-  Binary_source_file input_;
-
-public:
-  Tex_font_metric_reader ( String name);
-
-  
-  Tfm_info info_;
-  Tfm_header header_;
-  Array<Tex_font_char_metric> char_metrics_;
-  Array<int> ascii_to_metric_idx_;
-};
-
-
-#endif /* TFM_READER_HH */
-
diff --git a/lily/include/tfm.hh b/lily/include/tfm.hh
deleted file mode 100644
index 5869aca159..0000000000
--- a/lily/include/tfm.hh
+++ /dev/null
@@ -1,169 +0,0 @@
-/*   
-  tfm.hh -- declare Tex_font_metric
-  
-  source file of the GNU LilyPond music typesetter
-  
-  (c) 1999--2004 Jan Nieuwenhuizen <janneke@gnu.org>
-
-
-  revamped code from GNU Fontutils-0.6
-
- */
-
-/*
-  TODO: aren't there standard libs?  Ideally it is better to just link
-  to a C-library.  */
-
-#ifndef TFM_HH
-#define TFM_HH
-
-#include "string.hh"
-#include "array.hh"
-#include "lily-proto.hh"
-#include "font-metric.hh"
-
-/* The type.  */
-typedef long Fix;
-
-/* A character code.  Perhaps someday we will allow for 16-bit
-   character codes, but for now we are restricted to 256 characters per
-   font (like TeX and PostScript).  */
-typedef unsigned char Char_code;
-
-/* Used in file formats.  */
-typedef int Byte_count;
-
-/* The restriction to 256 characters in a TFM file is part of the file
-   format, so this number should only be changed in the (very unlikely)
-   event that the file format changes.  */
-#define TFM_SIZE 256
-
-/* Fontwide information.  All real values are in printer's points:
-   72.27 points = 1 inch.  */
-
-/* TFM_MIN_DESIGNSIZE <= designsize < TFM_MAX_DESIGNSIZE.  */
-#define TFM_MIN_DESIGNSIZE 1.0
-#define TFM_MAX_DESIGNSIZE 2048
-
-/* The maximum number of global font parameters we allow.  */
-#define TFM_MAX_FONTDIMENS 30
-
-/* The maximum length of a codingscheme string.  */
-#define TFM_MAX_CODINGSCHEME_LENGTH 39
-
-/* Define symbolic names for the numbers of the parameters we
-   recognize.  Some numbers have more than one name.  */
-#define TFM_SLANT_PARAMETER 1
-#define TFM_SPACE_PARAMETER 2
-#define TFM_STRETCH_PARAMETER 3
-#define TFM_SHRINK_PARAMETER 4
-#define TFM_XHEIGHT_PARAMETER 5
-#define TFM_QUAD_PARAMETER 6
-#define TFM_EXTRASPACE_PARAMETER 7
-#define TFM_NUM1_PARAMETER 8
-#define TFM_NUM2_PARAMETER 9
-#define TFM_NUM3_PARAMETER 10
-#define TFM_DENOM1_PARAMETER 11
-#define TFM_DENOM2_PARAMETER 12
-#define TFM_SUP1_PARAMETER 13
-#define TFM_SUP2_PARAMETER 14
-#define TFM_SUP3_PARAMETER 15
-#define TFM_SUB1_PARAMETER 16
-#define TFM_SUB2_PARAMETER 17
-#define TFM_SUPDROP_PARAMETER 18
-#define TFM_SUBDROP_PARAMETER 19
-#define TFM_DELIM1_PARAMETER 20
-#define TFM_DELIM2_PARAMETER 21
-#define TFM_AXISHEIGHT_PARAMETER 22
-#define TFM_DEFAULTRULETHICKNESS_PARAMETER 8
-#define TFM_BIGOPSPACING1_PARAMETER 9
-#define TFM_BIGOPSPACING2_PARAMETER 10
-#define TFM_BIGOPSPACING3_PARAMETER 11
-#define TFM_BIGOPSPACING4_PARAMETER 12
-#define TFM_BIGOPSPACING5_PARAMETER 13
-
-/* These are not in any of the standard TeX fonts, but the information
-   is useful nevertheless.  */
-#define TFM_LEADINGHEIGHT_PARAMETER 23
-#define TFM_LEADINGDEPTH_PARAMETER 24
-#define TFM_FONTSIZE_PARAMETER 25
-#define TFM_VERSION_PARAMETER 26
-
-struct Tfm_header
-{
-  Byte_count char_info_pos;
-  Byte_count width_pos;
-  Byte_count height_pos;
-  Byte_count depth_pos;
-  Byte_count italic_correction_pos;
-  Byte_count lig_kern_pos;
-  Byte_count kern_pos;
-  unsigned param_word_count;
-};
-
-struct Tfm_info
-{
-  Char_code first_charcode, last_charcode;
-  U32 checksum;
-  Real design_size;
-  String coding_scheme;
-  unsigned parameter_count;
-  // Real parameters [Tex_font_metric::MAX_FONTDIMENS];
-  Real parameters [TFM_MAX_FONTDIMENS];
-};
-
-/* When typesetting, the current character + `character' leads to
-   `ligature'.  The TFM format was extended in 1990 to allow for more
-   complicated ligatures than this, but we do not make those
-   distinctions.  */
-struct Tfm_ligature
-{
-  Char_code character;
-  Char_code ligature;
-};
-
-/* Similarly for kerns.  */
-struct Tfm_kern
-{
-  Char_code character;
-  Real kern;
-};
-
-struct Tex_font_char_metric
-{
-  bool exists_b_;
-  Char_code code_;
-  Real width_, height_, depth_, italic_correction_;
-  Fix width_fix_, height_fix_, depth_fix_, italic_correction_fix_;
-  Array<Tfm_kern> kerns_;
-  Array<Tfm_ligature> ligatures_;
-
-  String to_string () const;
-  Tex_font_char_metric ();
-
-  Box dimensions () const; 
-};
-
-
-class Tex_font_metric : public Font_metric
-{
-public:
-  static  SCM make_tfm (String filename);
-
-  virtual int count () const;
-  virtual Box get_ascii_char (int) const;
-  Tex_font_char_metric const *find_ascii (int ascii, bool warn=true) const;
-
-  String to_string () const;
-  
-  Tfm_info info_;
-  Tfm_header header_;
-  Array<Tex_font_char_metric> char_metrics_;
-  Array<int> ascii_to_metric_idx_;
-private:
-  Tex_font_metric ();
-};
-
-
-#endif /* TFM_HH */
-
diff --git a/lily/include/tie-column.hh b/lily/include/tie-column.hh
deleted file mode 100644
index f1277e8c13..0000000000
--- a/lily/include/tie-column.hh
+++ /dev/null
@@ -1,29 +0,0 @@
-
-/*   
-  tie-column.hh -- declare Tie_column
-  
-  source file of the GNU LilyPond music typesetter
-  
-  (c) 2000--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-  
- */
-
-#ifndef TIE_COLUMN_HH
-#define TIE_COLUMN_HH
-
-#include "lily-proto.hh"
-#include "lily-guile.hh"
-
-class Tie_column
-{
-public:
-  static bool has_interface (Grob*);
-  static void add_tie (Grob*me,Grob*);
-  DECLARE_SCHEME_CALLBACK (after_line_breaking, (SCM));
-  static void set_directions (Grob*me);
-  static void old_directions (Grob*me);
-  static void werner_directions (Grob*me);
-};
-
-#endif /* TIE_COLUMN_HH */
-
diff --git a/lily/include/tie.hh b/lily/include/tie.hh
deleted file mode 100644
index 1f00f89efa..0000000000
--- a/lily/include/tie.hh
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
-  tie.hh -- declare Tie
-
-  source file of the GNU LilyPond music typesetter
-
-  (c) 1997--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-*/
-
-
-#ifndef TIE_HH
-#define TIE_HH
-
-#include "lily-guile.hh"
-#include "lily-proto.hh"
-
-
-class Tie
-{
-public:
-  static void set_head (Grob*,Direction, Grob*head);
-  static void set_interface (Grob*);
-  static bool has_interface (Grob*);
-  static void set_direction (Grob*);
-  static Grob * head (Grob*,Direction) ;
-  static Real get_position (Grob*) ;
-  DECLARE_SCHEME_CALLBACK (print, (SCM ));
-  static Direction get_default_dir (Grob*) ;
-  static SCM get_control_points (SCM);
-  DECLARE_SCHEME_CALLBACK (set_spacing_rods, (SCM ));
-};
-
-#endif // TIE_HH
diff --git a/lily/include/time-scaled-music-iterator.hh b/lily/include/time-scaled-music-iterator.hh
deleted file mode 100644
index b4043badfd..0000000000
--- a/lily/include/time-scaled-music-iterator.hh
+++ /dev/null
@@ -1,26 +0,0 @@
-/*   
-  compressed-music-iterator.hh -- declare Time_scaled_music_iterator
-  
-  source file of the GNU LilyPond music typesetter
-  
-  (c) 1998--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-  
- */
-
-#ifndef Time_scaled_music_ITERATOR_HH
-#define Time_scaled_music_ITERATOR_HH
-
-#include "music-wrapper-iterator.hh"
-
-class Time_scaled_music_iterator : public Music_wrapper_iterator
-{
-public:  
-  DECLARE_SCHEME_CALLBACK(constructor, ()); 
-  /* construction */
-protected:
-  virtual void process (Moment);
-};
-
-
-#endif /* Time_scaled_music_ITERATOR_HH */
-
diff --git a/lily/include/time-scaled-music.hh b/lily/include/time-scaled-music.hh
deleted file mode 100644
index bb900be40a..0000000000
--- a/lily/include/time-scaled-music.hh
+++ /dev/null
@@ -1,27 +0,0 @@
-/*   
-  compressed-music.hh -- declare Time_scaled_music
-  
-  source file of the GNU LilyPond music typesetter
-  
-  (c) 1998--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-  
- */
-
-#ifndef Time_scaled_music_HH
-#define Time_scaled_music_HH
-
-#include "music-wrapper.hh"
-/**
-   Tempo expansion or compression.
- */
-class Time_scaled_music : public Music_wrapper
-{
-public:
-  Time_scaled_music (SCM);
-  Time_scaled_music ();
-  
-  VIRTUAL_COPY_CONS (Music);
-};
-
-#endif /* Time_scaled_music_HH */
-
diff --git a/lily/include/time-signature.hh b/lily/include/time-signature.hh
deleted file mode 100644
index 2488c75660..0000000000
--- a/lily/include/time-signature.hh
+++ /dev/null
@@ -1,28 +0,0 @@
-/*
-  time_signature.hh -- declare Time_signature
-
-  (c) 1996--2004 Han-Wen Nienhuys
-*/
-
-#ifndef METER_HH
-#define METER_HH
-
-#include "item.hh"
-
-/**
-   Print a time_signature sign.
-
-   TODO:
-
-   2+3+2/8 time_signatures
-  
- */
-struct Time_signature
-{
-  static bool has_interface (Grob*);
-  static Molecule special_time_signature (Grob*,SCM,int,int) ;
-  static Molecule numbered_time_signature (Grob*,int, int);
-  DECLARE_SCHEME_CALLBACK (print, (SCM ));
-};
-#endif // METER_HH
-
diff --git a/lily/include/timing-translator.hh b/lily/include/timing-translator.hh
deleted file mode 100644
index c2aaf37d66..0000000000
--- a/lily/include/timing-translator.hh
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
-  timing-translator.hh -- declare Timing_translator
-
-  source file of the GNU LilyPond music typesetter
-
-  (c) 1997--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-*/
-
-
-#ifndef TIMING_TRANSLATOR_HH
-#define TIMING_TRANSLATOR_HH
-
-#include "moment.hh"
-#include "translator.hh"
-
-#include "parray.hh"
-
-class Timing_translator : public virtual Translator
-{
-public:
-  //  VIRTUAL_COPY_CONS (Translator);
-  TRANSLATOR_DECLARATIONS(Timing_translator);
-
-
-protected: 
-  virtual void initialize ();
-  virtual void stop_translation_timestep ();
-  virtual void start_translation_timestep ();
-
-public:
-  Moment measure_position () const;
-  Rational measure_length () const;  
-};
-#endif // TIMING_TRANSLATOR_HH
diff --git a/lily/include/translation-property.hh b/lily/include/translation-property.hh
deleted file mode 100644
index d5dc380628..0000000000
--- a/lily/include/translation-property.hh
+++ /dev/null
@@ -1,66 +0,0 @@
-#if 0
-/*
-  translation-property.hh -- declare Translation_property
-
-  source file of the GNU LilyPond music typesetter
-
-  (c) 1997--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-*/
-
-
-#ifndef TRANSLATION_PROPERTY_HH
-#define TRANSLATION_PROPERTY_HH
-
-#include "music.hh"
-
-
-/**
-  Set a property of Translator
-
-  value -- the value to set
-  symbol -- the symbol to set.
-
-*/
-class Translation_property : public Music
-{
-public:
-  Translation_property ();
-  VIRTUAL_COPY_CONS (Music);
-};
-
-/**
-   Push onto basic property list.
-   
-  symbols -- list of basic-property lists
-
-  element-property -- element property name
-
-  element-value -- element property value
-  
- */
-class Push_translation_property : public Music
-{
-public:
-  VIRTUAL_COPY_CONS (Music);
-};
-
-/**
-  Restore previous setting.
-
-  symbols -- list of basic-property lists
-
-  element-property -- element property name
- */
-class Pop_translation_property : public Music
-{
-public:
-  VIRTUAL_COPY_CONS (Music);
-};
-
-
-void apply_push_property (Translator_group*trans, SCM syms, SCM eprop, SCM val);
-void apply_pop_property (Translator_group*trans, SCM syms, SCM eprop);
-
-
-#endif // PROPERTY_HH
-#endif
diff --git a/lily/include/translator-group.hh b/lily/include/translator-group.hh
deleted file mode 100644
index 6bf46324bf..0000000000
--- a/lily/include/translator-group.hh
+++ /dev/null
@@ -1,92 +0,0 @@
-/*
-  translator-group.hh -- declare Translator_group
-
-  source file of the GNU LilyPond music typesetter
-
-  (c) 1997--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-*/
-
-
-#ifndef TRANSLATOR_GROUP_HH
-#define TRANSLATOR_GROUP_HH
-
-#include "string.hh"
-#include "lily-proto.hh"
-#include "virtual-methods.hh"
-#include "translator.hh"
-#include "parray.hh"
-#include "smobs.hh"
-
-// egcs
-typedef void (Translator::*Method_pointer) (void);
-#define set_property(x,y) internal_set_property(ly_symbol2scm(x),y)
-
-class Scheme_hash_table;
-
-
-/** Make some kind of Elements from Events. Elements are made by
-  hierarchically grouped Translators
-  */
-class Translator_group : public virtual Translator {
-public:
-  String id_string_;
-private:
-  int iterator_count_;
-  friend class Interpretation_context_handle;
-
-  Scheme_hash_table *properties_dict () const;
-  SCM add_translator (SCM, Translator*);
-protected:
-  ~Translator_group ();
-
-  virtual SCM get_simple_trans_list ();
-
-public:
-  void execute_pushpop_property (SCM prop, SCM sym, SCM val);
-  SCM internal_get_property (SCM name_sym) const;
-  SCM properties_as_alist () const;
-  void unset_property (SCM var_sym);
-  void internal_set_property (SCM var_sym, SCM value);  
-
-  Translator_group *where_defined (SCM name_sym) const;
-  String context_name () const;  
-  Translator_group (Translator_group const &);
-  Translator_group ();
-
-
-  void add_fresh_group_translator (Translator *trans);
-  void add_used_group_translator (Translator *trans);
-  bool is_bottom_context () const;
-  bool is_removable () const;
-  void terminate_translator (Translator*r);
-  Translator *remove_translator (Translator*trans);
-  void check_removal ();
-  Translator_group *find_existing_translator (SCM context_name, String id);
-  Translator_group *find_create_translator (SCM context_name,
-					    String id, SCM ops);
-  Link_array<Translator_group>
-    path_to_acceptable_translator (SCM alias,
-				   Music_output_def*) const;
-  Translator_group*get_default_interpreter ();
-  VIRTUAL_COPY_CONS (Translator);
-public:
-  bool try_music_on_nongroup_children (Music *m);
-  
-  virtual void do_announces ();
-  virtual bool try_music (Music* req);       
-  virtual void stop_translation_timestep ();
-  virtual void start_translation_timestep ();   
-  virtual void initialize ();
-  virtual void finalize ();
-  virtual void each (Method_pointer);
-};
-
-
-bool melisma_busy (Translator* tr); // where to put this? --hwn
-void apply_property_operations (Translator_group*tg, SCM pre_init_ops);
-SCM names_to_translators (SCM namelist, Translator_group*tg);
-void execute_pushpop_property (Translator_group * trg,
-			       SCM prop, SCM eltprop, SCM val);
-SCM updated_grob_properties (Translator_group* tg, SCM sym);
-
-#endif // TRANSLATOR_GROUP_HH
diff --git a/lily/include/translator.hh b/lily/include/translator.hh
deleted file mode 100644
index 00ffc86d94..0000000000
--- a/lily/include/translator.hh
+++ /dev/null
@@ -1,138 +0,0 @@
-/*
-  translator.hh -- declare Translator
-
-  source file of the GNU LilyPond music typesetter
-
-  (c) 1997--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-*/
-
-
-#ifndef TRANSLATOR_HH
-#define TRANSLATOR_HH
-
-#include "global-ctor.hh"
-#include "string.hh"
-#include "lily-proto.hh"
-#include "virtual-methods.hh"
-#include "lily-guile.hh"
-#include "input.hh"
-#include "smobs.hh"
-
-#define get_property(x) internal_get_property(ly_symbol2scm(x))
-
-
-#define TRANSLATOR_DECLARATIONS(NAME)			\
-public:							\
-  NAME();\
-  VIRTUAL_COPY_CONS (Translator);				\
-  static SCM static_description_;			\
-  virtual SCM static_translator_description () const;	\
-  virtual SCM translator_description () const;
-
-/*
-  Translate music into grobs.
-*/
-class Translator
-{
-  void init ();
-public:
-  Music_output_def * output_def_;
-  
-  bool is_alias (SCM) const;
-  Translator (Translator const &);
-
-  
-  Translator_group * daddy_trans_ ;
-  void removal_processing ();
-  virtual Music_output_def *get_output_def () const;
-
-  SCM internal_get_property (SCM symbol) const;
-  
-  virtual Moment now_mom () const;  
-
-  /*
-    ugh: bubbled up.
-   */
-  SCM definition_;
-  SCM properties_scm_;
-  SCM trans_group_list_;
-  SCM accepts_list_;
-  virtual SCM get_simple_trans_list ();
-public:
-  DECLARE_SMOBS (Translator, dummy);
-private:
-  /*
-    ugh: bubbled up from Translator_group. 
-   */
-
-protected:			// should be private.
-  SCM simple_trans_list_;
-  friend class Context_def;
-public:
-  Global_translator * top_translator () const;
-  TRANSLATOR_DECLARATIONS(Translator);
-  virtual bool try_music (Music *req);
-  virtual void stop_translation_timestep ();
-  virtual void start_translation_timestep ();
-  virtual void do_announces () ;
-  virtual void initialize () ;
-  virtual void finalize ();
-};
-
-
-/**
-  A macro to automate administration of translators.
- */
-#define ADD_THIS_TRANSLATOR(T)				\
-SCM T::static_description_ = SCM_EOL;\
-static void  _ ## T ## _adder () {\
-      T *t = new T;\
-      T::static_description_ = t->static_translator_description ();\
-      scm_permanent_object (T::static_description_);\
-      add_translator (t);\
-}\
-SCM T::translator_description() const\
-{ \
-  return static_description_;\
-}\
-ADD_GLOBAL_CTOR (_ ## T ## _adder);
-
-
-
-
-#define ENTER_DESCRIPTION(classname,desc,grobs,accepted,acked,read,write)						\
-ADD_THIS_TRANSLATOR (classname);\
-SCM												\
-classname::static_translator_description () const \
-{												\
-  SCM  static_properties= SCM_EOL;								\
-  /*  static_properties= acons (name ,gh_str02scm (Translator::name (self_scm ())),		\
-			      static_properties_);						\
-  */												\
-  static_properties= scm_acons (ly_symbol2scm ("grobs-created"),				\
-			      parse_symbol_list (grobs), static_properties);	\
-			      									\
-  static_properties= scm_acons (ly_symbol2scm ("description"),					\
-			      scm_makfrom0str (desc), static_properties);				\
-												\
-  static_properties= scm_acons (ly_symbol2scm ("interfaces-acked"),				\
-			      parse_symbol_list (acked), static_properties);			\
-  static_properties= scm_acons (ly_symbol2scm ("events-accepted"),				\
-			      parse_symbol_list (accepted), static_properties);			\
-  												\
-  static_properties= scm_acons (ly_symbol2scm ("properties-read"),				\
-			      parse_symbol_list (read), static_properties);			\
-												\
-  static_properties= scm_acons (ly_symbol2scm ("properties-written"),				\
-				parse_symbol_list (write), static_properties);			\
-												\
-  return static_properties;									\
-}
-
-
-
-void add_translator (Translator*trans);
-
-Translator*get_translator (SCM s);
-DECLARE_UNSMOB(Translator,translator);
-#endif // TRANSLATOR_HH
diff --git a/lily/include/transposed-music.hh b/lily/include/transposed-music.hh
deleted file mode 100644
index b5723860f9..0000000000
--- a/lily/include/transposed-music.hh
+++ /dev/null
@@ -1,28 +0,0 @@
-/*   
-  transposed-music.hh -- declare Transposed_music
-  
-  source file of the GNU LilyPond music typesetter
-  
-  (c) 1998--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-  
- */
-
-#ifndef TRANSPOSED_MUSIC_HH
-#define TRANSPOSED_MUSIC_HH
-
-
-#include "music-wrapper.hh"
-
-class Transposed_music : public Music_wrapper
-{
-public:
-  Transposed_music (SCM);
-  Transposed_music ();
-  
-  
-  VIRTUAL_COPY_CONS (Music);
-  virtual Pitch to_relative_octave (Pitch);
-};
-
-#endif /* TRANSPOSED_MUSIC_HH */
-
diff --git a/lily/include/tuplet-bracket.hh b/lily/include/tuplet-bracket.hh
deleted file mode 100644
index 0b37235201..0000000000
--- a/lily/include/tuplet-bracket.hh
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
-  tuplet-bracket.hh -- part of GNU LilyPond
-
-  (c) 1997--2004 Jan Nieuwenhuizen <janneke@gnu.org>
-*/
-
-#ifndef Tuplet_bracket_HH
-#define Tuplet_bracket_HH
-
-#include "lily-guile.hh"
-#include "lily-proto.hh"
-
-/*
-
-    TODO: quantise, we don't want to collide with staff lines.
- (or should we be above staff?)
-
-  todo: handle breaking elegantly.
-*/
-class Tuplet_bracket
-{
-public:
-  DECLARE_SCHEME_CALLBACK (print, (SCM ));
-  static bool has_interface (Grob*);
-
-  static void add_column (Grob*me,Item*);
-  static void add_beam (Grob*me,Grob*);
-  static Grob *parallel_beam (Grob *me, Link_array<Grob> const&cols, bool *equally_long);
-  static void calc_position_and_height (Grob*,Real*,Real *dy);
-  
-  DECLARE_SCHEME_CALLBACK (after_line_breaking, (SCM ));
-
-  DECLARE_SCHEME_CALLBACK (before_line_breaking, (SCM ));
-  static Molecule make_bracket (Grob *me,  Axis protusion_axis,
-				Offset dz,  Drul_array<Real> height,
-				Real gap, Drul_array<Real> widen,
-				Drul_array<Real> shorten);
-  static Direction get_default_dir (Grob*);
-};
-
-#endif // Tuplet_bracket_HH
-
diff --git a/lily/include/type-swallow-translator.hh b/lily/include/type-swallow-translator.hh
deleted file mode 100644
index ec53a7019f..0000000000
--- a/lily/include/type-swallow-translator.hh
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
-  type-swallow-engraver.hh -- declare Type_swallow_translator
-
-  source file of the GNU LilyPond music typesetter
-
-  (c) 1997--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-*/
-
-
-#ifndef TYPESWALLOW_GRAV_HH
-#define TYPESWALLOW_GRAV_HH
-
-#include "translator.hh"
-
-/** eat a certain type of event
- (Duh, it's good for your skin)
- */
-class Type_swallow_translator : public virtual Translator
-{
-protected:
-  String swallow_string_;
-  bool try_music (Music*);
-public:  
-  VIRTUAL_COPY_CONS (Translator);
-};
-
-#define DECLARE_EVENT_SWALLOWER(TYPE)					\
-struct TYPE ## _swallow_translator : public Type_swallow_translator {	\
-  TRANSLATOR_DECLARATIONS (TYPE ## _swallow_translator);  \
-};									\
-  TYPE ## _swallow_translator :: TYPE ## _swallow_translator() {\
-      swallow_string_ =  #TYPE;						\
-  }									\
-ENTER_DESCRIPTION(TYPE ## _swallow_translator,				\
-		  "Swallow events of " #TYPE " type.",		\
-		  "",							\
-	"general-music",\
-		  "",							\
-		  "",							\
-		  "");
-
-#endif // TYPESWALLOW_GRAV_HH
-
diff --git a/lily/include/un-relativable-music.hh b/lily/include/un-relativable-music.hh
deleted file mode 100644
index 8f4eff56b2..0000000000
--- a/lily/include/un-relativable-music.hh
+++ /dev/null
@@ -1,25 +0,0 @@
-/*   
-  un-relativable-music.hh -- declare 
-  
-  source file of the GNU LilyPond music typesetter
-  
-  (c) 2001--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-  
- */
-
-#ifndef UN_RELATIVABLE_MUSIC_HH
-#define UN_RELATIVABLE_MUSIC_HH
-
-#include "music-wrapper.hh"
-
-class Un_relativable_music: public Music_wrapper
-{
-public:
-  Un_relativable_music ();
-  Pitch to_relative_octave (Pitch);
-  VIRTUAL_COPY_CONS(Music);
-};
-
-
-#endif /* UN_RELATIVABLE_MUSIC_HH */
-
diff --git a/lily/include/untransposable-music.hh b/lily/include/untransposable-music.hh
deleted file mode 100644
index 465acc3dc3..0000000000
--- a/lily/include/untransposable-music.hh
+++ /dev/null
@@ -1,26 +0,0 @@
-
-/*   
-untransposable-music.hh -- declare 
-
-source file of the GNU LilyPond music typesetter
-
-(c) 2001--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-
- */
-
-#ifndef UNTRANSPOSABLE_MUSIC_HH
-#define UNTRANSPOSABLE_MUSIC_HH
-#include "music-wrapper.hh"
-
-class Untransposable_music : public Music_wrapper
-{
-public:
-  Untransposable_music ();
-  virtual Pitch to_relative_octave (Pitch);
-  virtual void transpose (Pitch); 
-  VIRTUAL_COPY_CONS(Music);
-};
-
-
-#endif /* UNTRANSPOSABLE_MUSIC_HH */
-
diff --git a/lily/include/vaticana-ligature.hh b/lily/include/vaticana-ligature.hh
deleted file mode 100644
index 333a64992e..0000000000
--- a/lily/include/vaticana-ligature.hh
+++ /dev/null
@@ -1,30 +0,0 @@
-/*
-  vaticana-ligature.hh
-
-  source file of the GNU LilyPond music typesetter
-
- (C) 2003 Juergen Reuter <reuter@ipd.uka.de>
-*/
-
-#ifndef VATICANA_LIGATURE_HH
-#define VATICANA_LIGATURE_HH
-
-#include "lily-guile.hh"
-#include "molecule.hh"
-
-struct Vaticana_ligature
-{
-  DECLARE_SCHEME_CALLBACK (brew_ligature_primitive, (SCM ));
-  DECLARE_SCHEME_CALLBACK (print, (SCM ));
-  static bool has_interface (Grob *);
-};
-
-/*
- * Ligature context info: these attributes are derived from the head
- * prefixes by considering the current and the two neighbouring heads.
- *
- * The below definition extends those in gregorian-ligature.hh.
- */
-#define STACKED_HEAD    0x0100 // this head is stacked on the previous one
-
-#endif // VATICANA_LIGATURE_HH
diff --git a/lily/include/virtual-font-metric.hh b/lily/include/virtual-font-metric.hh
deleted file mode 100644
index 0946ac8eba..0000000000
--- a/lily/include/virtual-font-metric.hh
+++ /dev/null
@@ -1,37 +0,0 @@
-
-/*   
-virtual-font-metric.hh -- declare Virtual_font_metric
-
-source file of the GNU LilyPond music typesetter
-
-(c) 2002--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-
- */
-
-#ifndef VIRTUAL_FONT_METRIC_HH
-#define VIRTUAL_FONT_METRIC_HH
-
-#include "font-metric.hh"
-
-class Virtual_font_metric : public Font_metric
-{
-  SCM font_list_;
-public:
-  Virtual_font_metric (SCM namelist, Real, Paper_def*);
-
-  virtual int count () const;
-  virtual Box get_indexed_char (int ascii) const;
-  virtual Box get_ascii_char (int ascii) const;
-  virtual Molecule get_indexed_char_molecule (int ascii) const;
-  virtual Molecule get_ascii_char_molecule (int ascii) const;
-  virtual Offset get_indexed_wxwy (int) const;
-  virtual int name_to_index (String)const;
-  virtual Molecule find_by_name (String) const;
-
-protected:
-  virtual void derived_mark () const;
-};
-
-
-#endif /* VIRTUAL_FONT_METRIC_HH */
-
diff --git a/lily/include/volta-bracket.hh b/lily/include/volta-bracket.hh
deleted file mode 100644
index edf08b7def..0000000000
--- a/lily/include/volta-bracket.hh
+++ /dev/null
@@ -1,23 +0,0 @@
-/*
-  volta-spanner.hh -- part of GNU LilyPond
-
-  (c) 1997--2004 Jan Nieuwenhuizen <janneke@gnu.org>
-*/
-
-#ifndef VOLTA_SPANNER_HH
-#define VOLTA_SPANNER_HH
-
-
-#include "spanner.hh"
-
-class Volta_bracket_interface
-{
-public:
-  static bool has_interface (Grob*);
-  DECLARE_SCHEME_CALLBACK (print, (SCM ));
-  static void add_column (Grob*, Grob*col);
-  static void add_bar (Grob*me, Item*bar);
-};
-
-#endif // VOLTA_SPANNER_HH
-
diff --git a/lily/input-file-results.cc b/lily/input-file-results.cc
deleted file mode 100644
index a5e7af14df..0000000000
--- a/lily/input-file-results.cc
+++ /dev/null
@@ -1,175 +0,0 @@
-/*
-  scores.cc -- implement some globals
-
-  source file of the GNU LilyPond music typesetter
-
-  (c) 1997--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-*/
-#include "config.h"
-
-#include <errno.h>
-#include <sys/types.h>
-#include <stdio.h>
-
-
-#if HAVE_SYS_STAT_H 
-#include <sys/stat.h>
-#endif
-#include <unistd.h>
-
-
-#include "main.hh"
-#include "score.hh"
-#include "string.hh"
-#include "paper-def.hh"
-#include "warn.hh"
-#include "parray.hh"
-#include "file-path.hh"
-#include "input-file-results.hh"
-#include "my-lily-parser.hh"
-#include "source.hh"
-#include "lily-version.hh"
-#include "scm-hash.hh"
-#include "ly-modules.hh"
-
-bool store_locations_global_b;
-
-/*
-  TODO: should merge with My_lily_parser. 
- */
-
-/*
-  no ! suffix since it doesn't modify 1st argument.
- */
-LY_DEFINE(ly_set_point_and_click, "ly:set-point-and-click", 1, 0, 0,
-	  (SCM what),
-	  "Set the options for Point-and-click source specials output. The\n"
-"argument is a symbol.  Possible options are @code{none} (no source specials),\n"
-"@code{line} and @code{line-column}")
-{
-  /*
-    UGH.
-   */
-  SCM val = SCM_BOOL_F;
-  if (ly_symbol2scm ("line-column") == what)
-    val = gh_eval_str ("line-column-location");
-  else if (what == ly_symbol2scm ("line"))
-    val = gh_eval_str ("line-location");
-
-  extern SCM lily_module; 
-  scm_module_define (lily_module, ly_symbol2scm ("point-and-click"), val);
-
-  store_locations_global_b =gh_procedure_p (val);
-  return SCM_UNSPECIFIED;
-}
-
-void
-write_dependency_file (String fn,
-		       Array<String> targets,
-		       Array<String> deps)
-{
-  const int WRAPWIDTH = 65;
-
-  progress_indication (_f ("dependencies output to `%s'...", fn.to_str0 ()));
-  progress_indication ("\n");
-  FILE * f = fopen  (fn.to_str0 (), "w");
-  if (!f)
-    warning (_f ("can't open file: `%s'", fn));
-
-  fprintf (f, "# Generated automatically by: %s\n", gnu_lilypond_version_string ().to_str0 ());
-  
-  String out;
-  for (int i=0; i < targets.size (); i ++)
-     out += dependency_prefix_global + targets[i] + " ";
-  out +=  ": ";
-
-  for (int i=0; i < deps.size (); i ++)
-    {
-      if (out.length () > WRAPWIDTH)
-	{
-	  fprintf (f, "%s\\\n", out.to_str0 ());
-	  out = "  ";
-	}
-      String dep = deps[i];
-      if (!dependency_prefix_global.is_empty ())
-	{
-	  if (dep.index ('/') < 0)
-	    dep = dependency_prefix_global + dep;
-	}
-      out  += " " +  dep;
-    }
-  fprintf (f, "%s\n",  out.to_str0 ());
-}
-
-
-void
-Input_file_results::do_deps (String output)
-{
-  if (dependency_global_b)
-    {
-      Path p = split_path (output);
-      p.ext = "dep";
-      write_dependency_file (p.to_string (),
-			     target_strings_,
-			     inclusion_names_);
-    }
-}
-
-Input_file_results::~Input_file_results ()
-{
-  inclusion_names_.clear ();
-  if (header_)
-    header_ = SCM_EOL;
-
-  global_input_file =0;
-
-  ly_clear_anonymous_modules();
-}
-
-
-
-Input_file_results* global_input_file;
-
-Input_file_results::Input_file_results (String init, String in_file, String out_file)
-{
-  header_ = ly_make_anonymous_module ();
-  global_input_file = this;
-  score_count_ = 0;
-  sources_.set_path (&global_path);
-  
-
-  progress_indication (_f ("Now processing: `%s'", in_file.to_str0 ()));
-  progress_indication ("\n");
-
-  My_lily_parser parser (this);
-  parser.parse_file (init, in_file, out_file);
-  
-  if (parser.error_level_)
-    {
-      exit_status_global  = 1;
-      failed_files.push (in_file);
-    }
-
-  
-  do_deps (out_file);
-}
-
-
-void
-do_one_file (String init, String in_file, String out_file) 
-{
-  if (init.length () && global_path.find (init).is_empty ())
-    {
-      warning (_f ("can't find file: `%s'", init));
-      warning (_f ("(search path: `%s')", global_path.to_string ().to_str0 ()));
-      return;
-    }
-
-  if ((in_file != "-") && global_path.find (in_file).is_empty ())
-    {
-      warning (_f ("can't find file: `%s'", in_file));
-      return;
-    }
-
-  Input_file_results inp_file (init, in_file, out_file);
-}
diff --git a/lily/input-smob.cc b/lily/input-smob.cc
deleted file mode 100644
index 658b3067f8..0000000000
--- a/lily/input-smob.cc
+++ /dev/null
@@ -1,102 +0,0 @@
-/*   
-  input-smob.cc --  implement Input smob
-  
-  source file of the GNU LilyPond music typesetter
-  
-  (c) 2000--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-  
- */
-
-#include "input.hh"
-#include "input-smob.hh"
-#include "string.hh"
-#include "ly-smobs.icc"
-
-static long input_tag;
-
-static
-SCM mark_smob (SCM)
-{
-  return SCM_EOL;
-}
-
-static int
-print_smob (SCM s, SCM port, scm_print_state *)
-{
-  String str = "#<location " +  unsmob_input (s)->location_string () + ">";
-  scm_puts (str.to_str0 (), port);
-  return 1;
-}
-
-static size_t
-free_smob (SCM s)
-{
-  delete unsmob_input (s);
-  return 0;
-}
-
-/*
-  We don't use IMPLEMENT_TYPE_P, since the smobification part is
-  implemented separately from the class.
- */
-LY_DEFINE(ly_input, "ly:input-location?", 1, 0, 0,
-	  (SCM x),
-	  "Return whether @var{x} is an input location")
-{
-  return unsmob_input (x) ? SCM_BOOL_T : SCM_BOOL_F ;
-}
-
-LY_DEFINE(ly_input_message,  "ly:input-message", 2, 0, 0, (SCM sip, SCM msg),
-	  "Print @var{msg} as a GNU compliant error message, pointing to the\n"
-	  "location in @var{sip}.\n"
-	  )
-{
-  Input *ip  = unsmob_input(sip);
-  
-  SCM_ASSERT_TYPE(ip, sip, SCM_ARG1, __FUNCTION__, "input location");
-  SCM_ASSERT_TYPE(gh_string_p (msg), msg, SCM_ARG2, __FUNCTION__, "string");
-
-  String m = ly_scm2string (msg);
-
-  ip->message (m);
-  return SCM_UNDEFINED;
-}
-
-
-static void
-start_input_smobs ()
-{
-  input_tag = scm_make_smob_type ("input", 0);
-  scm_set_smob_mark (input_tag, mark_smob);
-  scm_set_smob_free (input_tag, free_smob);
-  scm_set_smob_print (input_tag, print_smob);
-  scm_set_smob_equalp (input_tag, 0);
-}
-
-SCM
-make_input (Input ip)
-{
-  Input * nip =  new Input (ip);
-  SCM z;
-  
-  SCM_NEWSMOB (z, input_tag, nip);
-  return z;
-}
-
-Input *						
-unsmob_input (SCM s)
-{
-  if (SCM_IMP (s))
-    return 0;
-  if (SCM_CAR (s) == (SCM)input_tag) // ugh.
-    return (Input*) SCM_CDR (s);
-  else						
-    return 0;					
-}
-
-
-ADD_SCM_INIT_FUNC (input, start_input_smobs);
-
-
-Input dummy_input_global;
-
diff --git a/lily/input.cc b/lily/input.cc
deleted file mode 100644
index 77c5c14b2c..0000000000
--- a/lily/input.cc
+++ /dev/null
@@ -1,147 +0,0 @@
-/*
- input.cc -- implement Input
-
- source file of the LilyPond music typesetter
-
-  (c) 1997--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-*/
-
-#include <stdio.h>
-
-#include "flower-proto.hh"
-#include "input.hh"
-#include "string.hh"
-#include "source.hh"
-#include "source-file.hh"
-
-Input::Input (Source_file*s, char const *cl)
-{
-  source_file_=s;
-  defined_str0_=cl;
-}
-
-Input::Input ()
-{
-  source_file_ = 0;
-  defined_str0_ = 0;
-}
-
-Input
-Input::spot () const
-{
-  return *this;
-}
-
-void
-Input::set_spot (Input const &i)
-{
-  *this = i;
-}
-
-/*
-  Produce GNU-compliant error message.  Correcting lilypond source is
-  such a breeze if you ('re edidor) know (s) the error column too
-  
-  Format:
-
-    [file:line:column:][warning:]message
-
- */
-void
-Input::message (String message_string) const
-{
-  String str;
-  
-  /*
-    marked "Work in prgress" in GNU iostream 
-      libg++ 2.7.2.8
-      libstdc++ 2.8.1
-
-    why not just return always -1 (unknown), 
-    iso breaking the interface?
-
-  int col = cerr.rdbuf ()->column ();
-
-   */
-
-  // well, we don't want to loose first warning...
-  int col = 1;
-  if (col > 0)
-    str += "\n";
-  
-  if (source_file_)
-    str += location_string () + String (": ");
-
-  str += message_string;
-  if (source_file_)
-   {
-    str += ":\n";
-    str += source_file_->error_string (defined_str0_);
-   }
-  fprintf (stderr, "%s\n", str.to_str0 ());
-  fflush (stderr);
-}
-
-void
-Input::warning (String message_string) const
-{
-  message (_ ("warning: ") + message_string);
-}
-void
-Input::error (String s) const
-{
-  message (_ ("error: ")+ s);
-}
-
-void
-Input::non_fatal_error (String s) const
-{
-  message (_ ("non fatal error: ") + s);
-}
-String
-Input::location_string () const
-{
-  if (source_file_)
-    return source_file_->file_line_column_string (defined_str0_);
-  else
-    return " (" + _ ("position unknown") + ")";
-}
-
-String
-Input::line_number_string () const
-{
-  if (source_file_)
-    return to_string (source_file_->get_line (defined_str0_));
-  else
-    return "?";
-}
-
-String
-Input::file_string () const
-{
-  if (source_file_)
-    return source_file_->name_string ();
-  else
-    return "";
-}
-
-
-int
-Input::line_number () const
-{
-  if (source_file_)
-    return source_file_->get_line (defined_str0_);
-  else
-    return 0;
-
-}
-
-int
-Input::column_number () const
-{
-  if (source_file_)
-    return source_file_->get_column (defined_str0_);
-  else
-    return 0;
-
-}
diff --git a/lily/instrument-name-engraver.cc b/lily/instrument-name-engraver.cc
deleted file mode 100644
index 34e49abede..0000000000
--- a/lily/instrument-name-engraver.cc
+++ /dev/null
@@ -1,189 +0,0 @@
-/*   
-  instrument-name-engraver.cc --  implement Instrument_name_engraver
-  
-  source file of the GNU LilyPond music typesetter
-  
-  (c) 2000--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-  
- */
-
-#include "engraver.hh"
-#include "item.hh"
-#include "bar-line.hh"
-#include "system-start-delimiter.hh"
-#include "side-position-interface.hh"
-#include "align-interface.hh"
-#include "axis-group-interface.hh"
-#include "translator-group.hh"
-#include "text-item.hh"
-
-class Instrument_name_engraver : public Engraver
-{
-  
-public:
-  TRANSLATOR_DECLARATIONS(Instrument_name_engraver);
-
-protected:
-  Grob *text_;
-
-  virtual void create_text ();
-  virtual void initialize ();
-  virtual void acknowledge_grob (Grob_info);
-  virtual void stop_translation_timestep ();
-  virtual void process_music ();
-};
-
-Instrument_name_engraver::Instrument_name_engraver ()
-{
-  text_ = 0;
-}
-
-
-void
-Instrument_name_engraver::initialize ()
-{
-  daddy_trans_->set_property ("instrumentSupport", SCM_EOL); 
-}
-
-void
-Instrument_name_engraver::stop_translation_timestep ()
-{
-  if (text_)
-    {
-      text_->set_grob_property ("side-support-elements",
-				get_property ("instrumentSupport"));
-      typeset_grob (text_);
-      text_ = 0;
-    }
-}
-
-
-void
-Instrument_name_engraver::create_text ()
-{
-  if (text_)
-    return ;
-  
-  SCM txt = get_property ("instrument");
-  
-  if (now_mom () > Moment (0))
-    txt = get_property ("instr");
-  /*
-    UGH.
-  */
-  if (txt == SCM_EOL)
-    return ;
-
-  
-  text_ = make_item ("InstrumentName");
-      
-  if (text_->get_grob_property ("text") != txt)
-    text_->set_grob_property ("text", txt);
-  announce_grob (text_, SCM_EOL);
-  }
-
-void
-Instrument_name_engraver::acknowledge_grob (Grob_info i)
-{
-  if (Bar_line::has_interface (i.grob_))
-    {
-      create_text();
-    }
-
-  if (dynamic_cast<Spanner*> (i.grob_)
-      && i.grob_->internal_has_interface (ly_symbol2scm ("dynamic-interface")))
-    return;
-
-  /*
-    Hang the instrument names on the staves, but not on the alignment
-    groups enclosing that staff. The alignment has no real location,
-    but is only a vehicle for the placement routine it contains, and
-    therefore the location of its refpoint won't be very useful.
-
-    We could also just use stavesFound, but lets keep this working
-    without staffs as well.
-  */
-  if (dynamic_cast<Spanner*> (i.grob_)
-      && ((Axis_group_interface::has_interface (i.grob_)
-	   && Axis_group_interface::axis_b (i.grob_, Y_AXIS)))
-      && !Align_interface::has_interface (i.grob_))
-    {
-      SCM nl = gh_cons (i.grob_->self_scm (),
-			get_property ("instrumentSupport"));
-
-      daddy_trans_->set_property ("instrumentSupport", nl);
-    }
-}
-
-void
-Instrument_name_engraver::process_music ()
-{
-  /*
-    Also create text if barlines in other groups. This allows
-    a name to be attached to lyrics or chords. 
-   */
-  if (gh_string_p (get_property ("whichBar")))
-    create_text();
-}
-
-ENTER_DESCRIPTION(Instrument_name_engraver,
-/* descr */       " Prints the name of the instrument (specified by "
-" @code{Staff.instrument} and @code{Staff.instr}) "
-"at the left of the staff. ",
-/* creats*/       "InstrumentName",
-/* accepts */     "",
-/* acks  */      "bar-line-interface axis-group-interface",
-/* reads */       "instrument instr",
-/* write */       "");
-
-/****************************************************************/
-
-
-class Vocal_name_engraver : public Instrument_name_engraver
-{
-public:
-  TRANSLATOR_DECLARATIONS(Vocal_name_engraver);
-  virtual void create_text ();
-};
-
-
-Vocal_name_engraver::Vocal_name_engraver ()
-{
-}
-
-
-void
-Vocal_name_engraver::create_text ()
-{
-  if (text_)
-    return ;
-  
-  SCM txt = get_property ("vocalName");
-  
-  if (now_mom () > Moment (0))
-    txt = get_property ("vocNam");
-
-  /*
-    UGH.
-  */
-  if (txt == SCM_EOL)
-    return ;
-  
-  text_ = make_item ("VocalName");
-      
-  if (text_->get_grob_property ("text") != txt)
-    text_->set_grob_property ("text", txt);
-  announce_grob (text_, SCM_EOL);
-}
-
-
-
-ENTER_DESCRIPTION(Vocal_name_engraver,
-/* descr */       " Prints the name of the a lyric voice (specified by "
-" @code{Staff.vocalName} and @code{Staff.vocNam}) "
-"at the left of the staff. ",
-/* creats*/       "VocalName",
-/* accepts */     "",
-/* acks  */      "bar-line-interface axis-group-interface",
-/* reads */       "vocNam vocalName",
-/* write */       "");
diff --git a/lily/interpretation-context-handle.cc b/lily/interpretation-context-handle.cc
deleted file mode 100644
index 9f2242203d..0000000000
--- a/lily/interpretation-context-handle.cc
+++ /dev/null
@@ -1,102 +0,0 @@
-/*   
-  interpretation-context-handle.cc --  implement Interpretation_context_handle
-  
-  source file of the GNU LilyPond music typesetter
-  
-  (c) 1999--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
- */
-
-#include "interpretation-context-handle.hh"
-#include "translator-group.hh"
-
-Interpretation_context_handle::Interpretation_context_handle ()
-{
-  outlet_ =0;
-}
-
-Interpretation_context_handle::Interpretation_context_handle (Interpretation_context_handle const&s)
-{
-  outlet_ =0;
-  if (s.outlet_)
-    up (s.outlet_);
-}
-
-Interpretation_context_handle*
-Interpretation_context_handle::clone () const
-{
-  Interpretation_context_handle* handle = new Interpretation_context_handle;
-  handle->outlet_ = this->outlet_;
-  return handle;
-}
-
-Interpretation_context_handle::~Interpretation_context_handle ()
-{
-  /*
-    Don't do
-
-    if (outlet_)
-      down ();
-
-    with GC, this is asynchronous.
-   */
-}
-
-void
-Interpretation_context_handle::up (Translator_group*t)
-{
-  outlet_ = t;
-  t->iterator_count_ ++;
-}
-
-void
-Interpretation_context_handle::down ()
-{
-  outlet_->iterator_count_ --;
-  outlet_ = 0;
-}
-
-void
-Interpretation_context_handle::quit ()
-{
-  if (outlet_)
-    {
-      outlet_->iterator_count_ --;
-      outlet_ = 0;
-    }
-}
-
-bool
-Interpretation_context_handle::try_music (Music *m)
-{
-  return outlet_->try_music (m);
-}
-
-void
-Interpretation_context_handle::operator = (Interpretation_context_handle const &s)
-{
-  set_translator (s.outlet_);
-}
-
-void
-Interpretation_context_handle::set_translator (Translator_group*trans)
-{
-  if (outlet_ ==trans)
-    return;
-  if (outlet_)
-    down ();
-  if (trans)
-    up (trans);
-}
-
-Translator_group*
-Interpretation_context_handle::get_outlet () const
-{
-  
-  return outlet_;
-}
-
-int
-Interpretation_context_handle::get_count () const
-{
-  return outlet_->iterator_count_ ;
-}
diff --git a/lily/item.cc b/lily/item.cc
deleted file mode 100644
index 057155b52b..0000000000
--- a/lily/item.cc
+++ /dev/null
@@ -1,229 +0,0 @@
-/*
-  item.cc -- implement Item
-
-  source file of the GNU LilyPond music typesetter
-
-  (c) 1997--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-*/
-
-#include "paper-score.hh"
-#include "warn.hh"
-#include "item.hh"
-#include "paper-column.hh"
-#include "spanner.hh"
-#include "lily-guile.hh"
-#include "system.hh"
-#include "group-interface.hh"
-
-Item::Item (SCM s)
-  : Grob (s)
-{
-  broken_to_drul_[LEFT] = broken_to_drul_[RIGHT]=0;
-  Group_interface::add_thing (this, ly_symbol2scm ("interfaces"), ly_symbol2scm ("item-interface"));
-}
-
-/**
-   Item copy ctor.  Copy nothing: everything should be a elt property
-   or a special purpose pointer (such as broken_to_drul_[]) */
-Item::Item (Item const &s)
-  : Grob (s)
-{
-  broken_to_drul_[LEFT] = broken_to_drul_[RIGHT] =0;
-}
-
-
-bool
-Item::breakable_b (Grob*me) 
-{
-  if (me->original_)
-    return false;
-
-  if (!dynamic_cast<Item*> (me))
-    me->programming_error ("only items can be breakable.");
-  
-  Item * i  =dynamic_cast<Item*> (me->get_parent (X_AXIS));
-  return (i) ?  Item::breakable_b (i) : to_boolean (me->get_grob_property ("breakable"));
-}
-
-Paper_column *
-Item::get_column () const
-{
-  Item *parent = dynamic_cast<Item*> (get_parent (X_AXIS));
-  return parent ? parent->get_column () : 0;
-}
-
-System *
-Item::get_system () const
-{
-  Grob *g = get_parent (X_AXIS);
-  return g ?  g->get_system () : 0;
-}
-
-
-void
-Item::copy_breakable_items ()
-{
-  Drul_array<Item *> new_copies;
-  Direction  i=LEFT;
-  do 
-    {
-      Grob * dolly = clone ();
-      Item * item = dynamic_cast<Item*> (dolly);
-      pscore_->system_->typeset_grob (item);
-      new_copies[i] =item;
-    }
-  while (flip (&i) != LEFT);
-  broken_to_drul_= new_copies;
-}
-
-
-bool
-Item::broken_b () const
-{
-  return broken_to_drul_[LEFT] || broken_to_drul_[RIGHT];
-}
-
-
-/*
-  Generate items for begin and end-of line.
- */
-void
-Item::discretionary_processing ()
-{
-  if (broken_b ())
-    return;
-
-  if (Item::breakable_b (this))
-    copy_breakable_items ();
-}
-
-Grob*
-Item::find_broken_piece (System*l) const
-{
-  if (get_system () == l) 
-    return (Item*) (this);
-
-  Direction d = LEFT;
-  do {
-    Grob *s = broken_to_drul_[d];
-    if (s && s->get_system () == l)
-      return s;
-  }
-  while (flip (&d) != LEFT);
-
-  return 0;
-}
-
-
-Item*
-Item::find_prebroken_piece (Direction d) const
-{
-  Item * me = (Item *) (this);	
-  if (!d)
-    return me;
-  return dynamic_cast<Item*> (broken_to_drul_[d]);
-}
-
-
-Direction
-Item::break_status_dir () const
-{
-  if (original_)
-    {
-      Item * i = dynamic_cast<Item*> (original_);
-
-      return (i->broken_to_drul_[LEFT] == this) ? LEFT : RIGHT;
-    }
-  else
-    return CENTER;
-}
-
-void
-Item::handle_prebroken_dependencies ()
-{
-  Grob::handle_prebroken_dependencies ();
-  
-  /*
-    Can't do this earlier, because try_visibility_lambda () might set
-    the elt property transparent, which would then be copied.
-
-    TODO:
-
-    give the item to break-visibility itself, so the function can do
-    more complicated things.
-  */
-  SCM vis = get_grob_property ("break-visibility");
-  if (gh_procedure_p (vis))
-    {
-      SCM args = scm_list_n (gh_int2scm (break_status_dir ()), SCM_UNDEFINED);
-      SCM result = gh_apply (vis, args);
-      bool trans = gh_scm2bool (ly_car (result));
-      bool empty = gh_scm2bool (ly_cdr (result));
-      
-      if (empty && trans)
-	suicide ();
-      else if (empty)
-	{
-	  set_extent (SCM_EOL, X_AXIS);
-	  set_extent (SCM_EOL, Y_AXIS);
-	}
-      else if (trans)
-	set_grob_property ("print-function", SCM_EOL);
-    }
-}
-
-SCM
-Item::do_derived_mark ()const
-{
-  if (broken_to_drul_[LEFT])
-    scm_gc_mark (broken_to_drul_[LEFT]->self_scm ());
-  if (broken_to_drul_[RIGHT])
-    scm_gc_mark (broken_to_drul_[RIGHT]->self_scm ());
-  return SCM_EOL;
-}
-
-Item*
-unsmob_item (SCM s )
-{
-  return dynamic_cast<Item*> (unsmob_grob (s));
-}
-
-
-
-ADD_INTERFACE(Item,
-	      "item-interface",
-	      "\n"
-	      "\n"
-	      "Grobs can be distinguished in their role in the horizontal spacing.\n"
-	      "Many grobs define constraints on the spacing by their sizes. For\n"
-	      "example, note heads, clefs, stems, and all other symbols with a fixed\n"
-	      "shape.  These grobs form a subtype called @code{Item}.\n"
-	      "\n"
-	      "\n"
-	      "Some items need special treatment for line breaking. For example, a\n"
-	      "clef is normally only printed at the start of a line (i.e. after a\n"
-	      "line break).  To model this, `breakable' items (clef, key signature,\n"
-	      "bar lines, etc.) are copied twice. Then we have three versions of each\n"
-	      "breakable item: one version if there is no line break, one version\n"
-	      "that is printed before the line break (at the end of a system), one\n"
-	      "version that is printed after the line break.\n"
-	      "\n"
-	      "Whether these versions are visible and take up space, is determined by\n"
-	      "the outcome of the @code{break-visibility}. This grob property is a\n"
-	      "function taking a direction (-1, 0 or 1) as argument. It returns a\n"
-	      "cons of booleans, signifying whether this grob should be transparent\n"
-	      "and have no extent.\n"
-	      "\n"
-	      "The following variables for break-visibility are predefined:\n"
-	      "@example\n"
-	      "           grob will show:   before  no     after\n"
-	      "                             break   break  break\n"
-	      "  all-invisible              no      no     no\n"
-	      "  begin-of-line-visible      no      no     yes\n"
-	      "  end-of-line-visible        yes     no     no\n"
-	      "  all-visible                yes     yes    yes\n"
-	      "  begin-of-line-invisible    yes     yes    no\n"
-	      "  end-of-line-invisible      no      yes    yes\n"
-	      "@end example\n"
-	      ,
-	      "no-spacing-rods break-visibility breakable")
diff --git a/lily/key-engraver.cc b/lily/key-engraver.cc
deleted file mode 100644
index 061e154477..0000000000
--- a/lily/key-engraver.cc
+++ /dev/null
@@ -1,203 +0,0 @@
-/*
-  key-engraver.cc -- implement Key_engraver
-
-  source file of the GNU LilyPond music typesetter
-
-  (c) 1997--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-  */
-
-
-
-#include "event.hh"
-#include "item.hh"
-#include "bar-line.hh"
-#include "staff-symbol-referencer.hh"
-#include "translator-group.hh"
-#include "engraver.hh"
-#include "pitch.hh"
-#include "protected-scm.hh"
-#include "clef.hh"
-
-/*
-  TODO: The representation  of key sigs is all fucked.
- */
-
-/**
-  Make the key signature.
- */
-class Key_engraver : public Engraver
-{
-  void create_key (bool);
-  void read_ev (Key_change_ev const * r);
-  Key_change_ev * key_ev_;
-  Item * item_;
-
-public:
-  TRANSLATOR_DECLARATIONS(Key_engraver);
-
-protected:
-  virtual void initialize ();
-  virtual void finalize ();
-  virtual bool try_music (Music *ev);
-  virtual void stop_translation_timestep ();
-  virtual void start_translation_timestep ();
-  virtual void process_music ();
-  virtual void acknowledge_grob (Grob_info);
-};
-
-
-void
-Key_engraver::finalize ()
-{
-}
-
-
-Key_engraver::Key_engraver ()
-{
-  key_ev_ = 0;
-  item_ = 0;
-}
-
-
-void
-Key_engraver::create_key (bool def)
-{
-  if (!item_) 
-    {
-      item_ = make_item ("KeySignature");
-
-      item_->set_grob_property ("c0-position",
-				get_property ("centralCPosition"));
-      
-      // todo: put this in basic props.
-      item_->set_grob_property ("old-accidentals", get_property ("lastKeySignature"));
-      item_->set_grob_property ("new-accidentals", get_property ("keySignature"));
-
-      announce_grob(item_, key_ev_ ? key_ev_->self_scm() : SCM_EOL);
-    }
-
-  if (!def)
-    {
-      SCM vis = get_property ("explicitKeySignatureVisibility"); 
-      if (gh_procedure_p (vis))
-	item_->set_grob_property ("break-visibility",vis);
-    }
-}      
-
-
-bool
-Key_engraver::try_music (Music * ev)
-{
-  //  if (Key_change_ev *kc = dynamic_cast <Key_change_ev *> (ev))
-  if (ev->is_mus_type ("key-change-event"))
-    {
-      if (!key_ev_)
-	{
-	  /*
-	    do this only once, just to be on the safe side.
-	    */	    
-	  key_ev_ = dynamic_cast<Key_change_ev*> (ev); // UGH.
-	  read_ev (key_ev_);
-	}
-      
-      return true;
-    }   
-  return  false;
-}
-
-
-void
-Key_engraver::acknowledge_grob (Grob_info info)
-{
-  if (Clef::has_interface (info.grob_))
-    {
-      SCM c =  get_property ("createKeyOnClefChange");
-      if (to_boolean (c))
-	{
-	  create_key (false);
-	}
-    }
-  else if (Bar_line::has_interface (info.grob_)
-	   && gh_pair_p (get_property ("keySignature")))
-    {
-      create_key (true);
-    }
-}
-
-
-void
-Key_engraver::process_music ()
-{
-  if (key_ev_ ||
-      get_property ("lastKeySignature") != get_property ("keySignature"))
-    create_key (false);
-}
-
-
-void
-Key_engraver::stop_translation_timestep ()
-{
-  if (item_) 
-    {
-      typeset_grob (item_);
-      item_ = 0;
-    }
-}
-
-
-void
-Key_engraver::read_ev (Key_change_ev const * r)
-{
-  SCM p = r->get_mus_property ("pitch-alist");
-  if (!gh_pair_p (p))
-    return;
-
-  SCM n = scm_list_copy (p);
-  SCM accs = SCM_EOL;
-  for (SCM s = get_property ("keyAccidentalOrder");
-       gh_pair_p (s); s = ly_cdr (s))
-    {
-      if (gh_pair_p (scm_member (ly_car (s), n)))
-	{
-	  accs = gh_cons (ly_car (s), accs);
-	  n = scm_delete_x (ly_car (s), n);
-	}
-    }
-  
-  for (SCM s = n ; gh_pair_p (s); s = ly_cdr (s))
-    if (gh_scm2int (ly_cdar (s)))
-      accs = gh_cons (ly_car (s), accs);
-
-  daddy_trans_->set_property ("keySignature", accs);
-  daddy_trans_->set_property ("tonic" ,
-			      r->get_mus_property ("tonic"));
-}
-
-
-void
-Key_engraver::start_translation_timestep ()
-{
-  key_ev_ = 0;
-  daddy_trans_->set_property ("lastKeySignature", get_property ("keySignature"));
-}
-
-
-void
-Key_engraver::initialize ()
-{
-  daddy_trans_->set_property ("keySignature", SCM_EOL);
-  daddy_trans_->set_property ("lastKeySignature", SCM_EOL);
-
-  Pitch p(0,0,0);
-  daddy_trans_->set_property ("tonic", p.smobbed_copy ());
-
-}
-
-
-ENTER_DESCRIPTION(Key_engraver,
-/* descr */       "",
-/* creats*/       "KeySignature",
-/* accepts */     "key-change-event",
-/* acks  */      "bar-line-interface clef-interface",
-/* reads */       "keySignature lastKeySignature explicitKeySignatureVisibility createKeyOnClefChange keyAccidentalOrder keySignature",
-/* write */       "lastKeySignature tonic keySignature");
diff --git a/lily/key-performer.cc b/lily/key-performer.cc
deleted file mode 100644
index 246cad751c..0000000000
--- a/lily/key-performer.cc
+++ /dev/null
@@ -1,101 +0,0 @@
-/*
-  key-performer.cc -- implement Key_performer
-
-  source file of the GNU LilyPond music typesetter
-
-  (c) 1997--2004 Jan Nieuwenhuizen <janneke@gnu.org>
-*/
-
-#include "lily-guile.hh"
-
-#include "audio-item.hh"
-#include "performer.hh"
-#include "warn.hh"
-
-
-class Key_performer : public Performer
-{
-public:
-  TRANSLATOR_DECLARATIONS(Key_performer);
-  ~Key_performer ();
-
-protected:
-  virtual bool try_music (Music* req);
-  virtual void create_audio_elements ();
-  virtual void stop_translation_timestep ();
-
-private:
-  Key_change_ev* key_req_;
-  Audio_key* audio_;
-};
-
-Key_performer::Key_performer ()
-{
-  key_req_ = 0;
-  audio_ = 0;
-}
-
-Key_performer::~Key_performer ()
-{
-}
-
-void
-Key_performer::create_audio_elements ()
-{
-  if (key_req_) 
-    {
-      SCM pitchlist = key_req_->get_mus_property ("pitch-alist");
-      SCM proc = scm_primitive_eval (ly_symbol2scm ("accidentals-in-key")); 
-      SCM acc = gh_call1 (proc, pitchlist);
-      
-      Pitch key_do (0, 
-		    gh_scm2int (ly_caar (pitchlist)),
-		    gh_scm2int (ly_cdar (pitchlist)));
-
-      Pitch c_do (0, 0, 0);
-		  
-      SCM c_pitchlist
-	= ly_transpose_key_alist (pitchlist,
-				  interval (key_do, c_do).smobbed_copy ());
-
-      /* MIDI keys are too limited for lilypond scales.
-	 We check for minor scale and assume major otherwise.  */
-      SCM minor = scm_primitive_eval (ly_symbol2scm ("minor"));
-      audio_ = new Audio_key (gh_scm2int (acc),
-			      SCM_BOOL_T != scm_equal_p (minor, c_pitchlist));
-
-      Audio_element_info info (audio_, key_req_);
-      announce_element (info);
-      key_req_ = 0;
-    }
-}
-
-void
-Key_performer::stop_translation_timestep ()
-{
-  if (audio_)
-    {
-      play_element (audio_);
-      audio_ = 0;
-    }
-}
-
-bool
-Key_performer::try_music (Music* req)
-{
-  if (Key_change_ev *kc = dynamic_cast <Key_change_ev *> (req))
-    {
-      if (key_req_)
-	warning (_ ("FIXME: key change merge"));
-
-      key_req_ = kc;
-      return true;
-    }
-
-  return false;
-}
-
-ENTER_DESCRIPTION(Key_performer,
-		  "","",
-		  "key-change-event",
-		  "","","");
diff --git a/lily/key-signature-interface.cc b/lily/key-signature-interface.cc
deleted file mode 100644
index 123a6da6c5..0000000000
--- a/lily/key-signature-interface.cc
+++ /dev/null
@@ -1,201 +0,0 @@
-/*
-  key-item.cc -- implement Key_signature_interface
-
-  source file of the GNU LilyPond music typesetter
-
-  (c) 1996--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-
-  keyplacement by Mats Bengtsson
-*/
-
-#include "item.hh"
-
-#include "molecule.hh"
-#include "paper-def.hh"
-#include "font-interface.hh"
-#include "staff-symbol-referencer.hh"
-#include "lookup.hh"
-#include "lily-guile.hh"
-#include "lily-proto.hh"
-#include "accidental-interface.hh"
-
-struct Key_signature_interface
-{
-  DECLARE_SCHEME_CALLBACK (print, (SCM ));
-
-  static bool has_interface (Grob*);
-};
-
-
-/*
-  FIXME: too much hardcoding here.
- */
-const int FLAT_TOP_PITCH=2; /* fes,ges,as and bes typeset in lower octave */
-const int SHARP_TOP_PITCH=4; /*  ais and bis typeset in lower octave */
-
-/*
-  TODO: look this up. I'm not sure where the naturals ought to go. 
- */
-const int NATURAL_TOP_PITCH = 4;  
-
-
-
-
-/*
-  FIXME: key-item should just get a list of (position, acc), and leave
-  the thinking to other parties.
-
-  - TODO: put this in Scheme
-  
-  - lots of values trivially shared (key doesn't change very
-  often). Compute those once, and use that as cache for the rest.
-
-  TODO: can  we do without c0pos? it's partly musical. 
-
-*/
-int
-alteration_pos  (SCM what, int alter, int c0p)
-{
-  if (gh_pair_p (what))
-    return gh_scm2int (ly_car (what)) * 7 + gh_scm2int (ly_cdr (what)) + c0p;
-
-  int p = gh_scm2int (what);
-
-  // Find the c in the range -4 through 2
-  int from_bottom_pos = c0p + 4;
-  from_bottom_pos = from_bottom_pos%7;
-  from_bottom_pos = (from_bottom_pos + 7)%7; // Precaution to get positive.
-  int c0 = from_bottom_pos - 4;
-
-    
-  if ((alter <0 && ((p>FLAT_TOP_PITCH) || (p+c0>4)) && (p+c0>1))
-      || (alter >0 && ((p > SHARP_TOP_PITCH) || (p+c0>5)) && (p+c0>2))
-      || (alter == 0 && ((p > NATURAL_TOP_PITCH) || (p + c0>5)) && (p + c0>2)))
-    {
-      p -= 7; /* Typeset below c_position */
-    }
-  /* Provide for the four cases in which there's a glitch 
-       it's a hack, but probably not worth  
-       the effort of finding a nicer solution.
-       --dl. */
-  if (c0==2 && alter >0 && p==3)
-    p -= 7;
-  if (c0==-3 && alter>0 && p==-1)
-    p += 7;
-  if (c0==-4 && alter<0 && p==-1)
-    p += 7;
-  if (c0==-2 && alter<0 && p==-3)
-    p += 7;
-    
-  return p + c0;
-}
-
-/*
-  TODO
-  - space the `natural' signs wider
- */
-MAKE_SCHEME_CALLBACK (Key_signature_interface,print,1);
-SCM
-Key_signature_interface::print (SCM smob)
-{
-  Grob*me =unsmob_grob (smob);
-
-  Real inter = Staff_symbol_referencer::staff_space (me)/2.0;
-
-  SCM scm_style = me->get_grob_property ("style");
-  String style;
-  if (gh_symbol_p (scm_style))
-    {
-      style = ly_symbol2string (scm_style);
-    }
-  else
-    {
-      style = "";
-    }
-
-  SCM newas = me->get_grob_property ("new-accidentals");  
-  Molecule mol;
-
-  SCM c0s = me->get_grob_property ("c0-position");
-  int c0p = 0;
-  if (gh_number_p (c0s))
-    c0p = gh_scm2int (c0s);
-
-  /*
-    SCM lists are stacks, so we work from right to left, ending with
-    the cancellation signature.
-  */
-
-  Font_metric *fm = Font_interface::get_default_font (me);
-  for (SCM s = newas; gh_pair_p (s); s = ly_cdr (s))
-    {
-      int alteration = gh_scm2int (ly_cdar (s));
-      String font_char =
-	Accidental_interface::get_fontcharname (style, alteration);
-      Molecule acc (fm->find_by_name ("accidentals-" + font_char));
-
-      if (acc.is_empty ())
-	{
-	  me->warning (_f ("accidental `%s' not found", font_char));
-	}
-      else
-	{
-	  SCM what = ly_caar (s);
-	  int pos = alteration_pos (what, alteration, c0p);
-	  acc.translate_axis (pos * inter, Y_AXIS);
-	  mol.add_at_edge (X_AXIS, LEFT, acc, 0, 0);
-	}
-    }
-
-  Item *it = dynamic_cast<Item*> (me) ;
-  if (it->break_status_dir () != RIGHT)
-    {
-      SCM old = me->get_grob_property ("old-accidentals");
-      
-      /*
-	Add half a space between  cancellation and key sig.
-
-	As suggested by [Ross], p.148.
-       */
-      Interval x (0, inter);
-      Interval y (0,0);
-
-      mol.add_at_edge (X_AXIS, LEFT, Lookup::blank (Box (x,y)), 0, 0);
-
-      Molecule natural;
-      if (gh_pair_p (old))
-	natural=Font_interface::get_default_font (me)->
-	    find_by_name (String ("accidentals-") + style + String ("0"));
-      
-      for (; gh_pair_p (old); old = ly_cdr (old))
-        {
-	  SCM found = scm_assoc (ly_caar (old), newas);
-	  if (found == SCM_BOOL_F
-	      || ly_cdr (found) != ly_cdar (old))
-	    {
-	      SCM what = ly_caar (old);
-	      int alteration = 0;
-	      int pos = alteration_pos (what, alteration, c0p);
-
-	      Molecule m = natural;
-              m.translate_axis (pos* inter, Y_AXIS);
-
-	      /*
-		The natural sign (unlike flat & sharp)
-		has vertical edges on both sides. A little padding is
-		needed to prevent collisions.
-	       */
-	      Real padding = 0.1 ;
-	      mol.add_at_edge (X_AXIS, LEFT, m, padding, 0);
-            }
-        }
-    }
-
-  mol.align_to (X_AXIS, LEFT);
-  
-  return mol.smobbed_copy ();
-}
-
-ADD_INTERFACE (Key_signature_interface, "key-signature-interface",
-  "A group of accidentals, to be printed as signature sign.",
-  "c0-position old-accidentals new-accidentals");
diff --git a/lily/keyword.cc b/lily/keyword.cc
deleted file mode 100644
index de6aca9e49..0000000000
--- a/lily/keyword.cc
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
-  keyword.cc -- keywords and identifiers
- */
-#include <string.h>
-#include <stdlib.h>
-#include "keyword.hh"
-
-
-/* for qsort */
-int tabcmp (Keyword_ent  const &p1, Keyword_ent const &p2)
-{
-  return strcmp (p1.name_, p2.name_);
-}
-
-Keyword_table::Keyword_table (Keyword_ent *tab)
-{
-  while (tab->name_)
-    {
-      table_.push (*tab++);
-    }
-
-  table_.sort (tabcmp);
-}
-
-int
-Keyword_table::lookup (char const *s) const
-{
-  Keyword_ent e ;
-  e.name_ =  s;
-  int idx = binary_search (table_, e, tabcmp);
-  if (idx >= 0)
-    return table_[idx].tokcode_;
-  else
-    return -1;
-}
diff --git a/lily/kpath.cc b/lily/kpath.cc
deleted file mode 100644
index 8cb57d8c86..0000000000
--- a/lily/kpath.cc
+++ /dev/null
@@ -1,133 +0,0 @@
-/*   
-  kpath.cc -- glue kpathsea to lily. Need some ugly kludges for gcc 2.96
-
-  source file of the GNU LilyPond music typesetter
-
-  (c) 2000--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-*/
-
-#include <stdio.h>
-#include <string.h>
-
-/*
-
-The problem, as far as I can tell, is that MacOS X has its getopt
-prototype in <unistd.h>, while I think other operating systems have it
-in other places. <unistd.h> is included by kpathsea.h, so you end up
-renaming both conflicting prototypes to YAKLUDGE.
-
-I found a somewhat more elegant patch for this: Just #include
-<unistd.h> before defining YAKLUDGE.
-
-*/
-#include <unistd.h>	
-#include "config.h"
-
-#define popen REALLYUGLYKLUDGE
-#define pclose ANOTHERREALLYUGLYKLUDGE
-#define getopt YAKLUDGE
-
-#if HAVE_KPATHSEA_KPATHSEA_H
-extern "C" {
-#include <kpathsea/kpathsea.h>
-#include <kpathsea/tex-file.h>
-}
-#endif
-
-#include "file-path.hh"
-#include "string.hh"
-#include "main.hh"
-#include "kpath.hh"
-#include "warn.hh"
-
-String
-kpathsea_find_afm (char const * name)
-{
-#if (KPATHSEA && HAVE_KPSE_FIND_FILE)
-  char * name_ptr =  kpse_find_file (name, kpse_afm_format, true);
-
-  if(!name_ptr)
-    {
-  /*
-    don't mutter about afms, since we try to find them first, and lots of
-    TFMs don't have AFMs. 
-   */
-      //      warning (_f("kpathsea couldn't find AFM file `%s'", name));
-    }
-  else
-    return name_ptr;
-  
-#endif
-  return "";
-}
-
-String
-kpathsea_find_tfm (char const * name)
-{
-  String p = global_path.find (String (name) + ".tfm");
-
-  if (p.length ())
-    return p;
-  
-#if (KPATHSEA && HAVE_KPSE_FIND_FILE)
-  char * name_ptr =  kpse_find_file (name, kpse_tfm_format, true);
-  if(!name_ptr)
-    {
-      warning (_f("Kpathsea couldn't find TFM file `%s'", name));
-    }
-  else
-    return name_ptr;
-  
-#endif
-  return "";
-}
-
-
-void
-init_kpath (char *av0)
-{
-#if KPATHSEA && HAVE_KPATHSEA_KPATHSEA_H
-  /*
-    We take two pronged approach to tfms:
-
-    * the lilypond tfms (feta*.tfm) are found through our own routines.
-
-    * the TeX tfms are found through vanilla kpathsea.
-
-    (* other TFMs are not found, i.e. don't use them. )
-
-    PRO:
- 
-    - TFM and AFM checksums always match in Lily.
-
-    - less hassle, no kpathsea spaghetti
-
-    CON:
-
-    - feta PK files are often recreated, locally
-    Solution: cache PK files locally?
-
-    - need env. vars to make sure that TeX finds the TFMs
-
-    - Outdated PK (TFM?) font files are not automatically removed,
-    since VERSION is not part of the standard location.
-
-
-    ALTERNATIVE
-
-    we have tried to come up with schemes that leave this kind of work
-    to kpathsea with objective of fixing the CONs, but miserably
-    failed. TeX installations and kpathsea itself form a buggy,
-    inconsistent, and unorderly mess.
-    
-  */
-
-  /*
-   initialize kpathsea
-   */
-  kpse_set_program_name (av0, NULL);
-  kpse_maketex_option ("tfm", TRUE);
-#endif
-}
-
-
diff --git a/lily/least-squares.cc b/lily/least-squares.cc
deleted file mode 100644
index bcb2cb1a9b..0000000000
--- a/lily/least-squares.cc
+++ /dev/null
@@ -1,50 +0,0 @@
-/*   
-  least-squares.cc --  implement minimise_least_squares
-  
-  source file of the GNU LilyPond music typesetter
-  
-  (c) 1996--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-  
- */
-
-#include "least-squares.hh"
-#include "warn.hh"
-
-
-void
-minimise_least_squares (Real * coef, Real * offset,
-			Array<Offset> const &input)
-{
-  Real sx = 0.0;
-  Real sy = 0.0;
-  Real sqx =0.0;
-  Real sxy = 0.0;
-
-  for (int i=0; i < input.size ();i++) 
-    {
-      Real x=input[i][X_AXIS];
-      Real y = input[i][Y_AXIS];
-      sx += x;
-      sy += y;
-      sqx += sqr (x);
-      sxy += x*y;
-    }
-  int N = input.size ();
-
-  *coef =0.0;
-  *offset =0.;
-  
-  Real den = (N*sqx - sqr (sx));
-  if (!N || !den)
-    {
-      programming_error ("minimise_least_squares ():  Nothing to minimise");
-      *coef = 0.0;
-      *offset = N ? sy/N : 0.0;
-    }
-  else
-    {
-      *coef = (N * sxy - sx*sy)/den;
-      *offset = (sy - (*coef) * sx)/N;
-    }
-}
-
diff --git a/lily/lexer.ll b/lily/lexer.ll
deleted file mode 100644
index 7c622accd2..0000000000
--- a/lily/lexer.ll
+++ /dev/null
@@ -1,850 +0,0 @@
-%{ // -*-Fundamental-*-
-/*
-  lexer.ll -- implement the Flex lexer
-
-  source file of the LilyPond music typesetter
-
-  (c) 1996--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-           Jan Nieuwenhuizen <janneke@gnu.org>
-*/
-
-
-/*
-  backup rules
-
-  after making a change to the lexer rules, run 
-      flex -b <this lexer file>
-  and make sure that 
-      lex.backup
-  contains no backup states, but only the reminder
-      Compressed tables always back up.
- (don-t forget to rm lex.yy.cc :-)
- */
-
-
-#include <stdio.h>
-#include <ctype.h>
-#include <errno.h>
-
-/* Flex >= 2.5.29 fix; FlexLexer.h's multiple include bracing breaks
-   when building the actual lexer.  */
-#define LEXER_CC
-
-#include <iostream>
-using namespace std;
-
-#include "source-file.hh"
-#include "parse-scm.hh"
-#include "lily-guile.hh"
-#include "string.hh"
-#include "string-convert.hh"
-#include "my-lily-lexer.hh"
-#include "input-file-results.hh"
-#include "interval.hh"
-#include "lily-guile.hh"
-#include "parser.hh"
-#include "warn.hh"
-#include "main.hh"
-#include "version.hh"
-#include "lilypond-input-version.hh"
-#include "context-def.hh"
-#include "identifier-smob.hh"
-
-/*
-RH 7 fix (?)
-*/
-#define isatty HORRIBLEKLUDGE
-
-void strip_trailing_white (String&);
-void strip_leading_white (String&);
-String lyric_fudge (String s);
-
-SCM
-lookup_markup_command (String s);
-
-bool
-valid_version_b (String s);
-
-
-
-#define start_quote()	\
-	yy_push_state (quote);\
-	yylval.string = new String
-
-#define yylval \
-	(*(YYSTYPE*)lexval)
-
-#define YY_USER_ACTION	add_lexed_char (YYLeng ());
-/*
-
-LYRICS		({AA}|{TEX})[^0-9 \t\n\f]*
-
-*/
-
-
-SCM scan_fraction (String);
-SCM (* scm_parse_error_handler) (void *);
-
-
-
-%}
-
-%option c++
-%option noyywrap
-%option nodefault
-%option debug
-%option yyclass="My_lily_lexer"
-%option stack
-%option never-interactive 
-%option warn
-
-%x renameinput
-%x version
-%x chords
-%x incl
-%x lyrics
-%x notes
-%x figures
-%x quote
-%x longcomment
-%x markup 
-
-A		[a-zA-Z]
-AA		{A}|_
-N		[0-9]
-AN		{AA}|{N}
-PUNCT		[?!:'`]
-ACCENT		\\[`'"^]
-NATIONAL	[\001-\006\021-\027\031\036\200-\377]
-TEX		{AA}|-|{PUNCT}|{ACCENT}|{NATIONAL}
-WORD		{A}{AN}*
-ALPHAWORD	{A}+
-DIGIT		{N}
-UNSIGNED	{N}+
-E_UNSIGNED	\\{N}+
-FRACTION	{N}+\/{N}+
-INT		-?{UNSIGNED}
-REAL		({INT}\.{N}*)|(-?\.{N}+)
-KEYWORD		\\{WORD}
-WHITE		[ \n\t\f\r]
-HORIZONTALWHITE		[ \t]
-BLACK		[^ \n\t\f\r]
-RESTNAME	[rs]
-NOTECOMMAND	\\{A}+
-MARKUPCOMMAND	\\({A}|[-_])+
-LYRICS		({AA}|{TEX})[^0-9 \t\n\r\f]*
-ESCAPED		[nt\\'"]
-EXTENDER	__
-HYPHEN		--
-%%
-
-
-<*>\r		{
-	// windows-suck-suck-suck
-}
-
-<INITIAL,chords,incl,markup,lyrics,notes,figures>{
-  "%{"	{
-	yy_push_state (longcomment);
-  }
-  %[^{\n\r].*[\n\r]	{
-  }
-  %[^{\n\r]	{ // backup rule
-  }
-  %[\n\r]	{
-  }
-  %[^{\n\r].*	{
-  }
-  {WHITE}+ 	{
-
-  }
-}
-
-<INITIAL,chords,lyrics,notes,figures>\\version{WHITE}*	{
-	yy_push_state (version);
-}
-<INITIAL,chords,lyrics,notes,figures>\\renameinput{WHITE}*	{
-	yy_push_state (renameinput);
-}
-<version>\"[^"]*\"     { /* got the version number */
-	String s (YYText ()+1);
-	s = s.left_string (s.index_last ('\"'));
-
-	yy_pop_state();
-	 if (!valid_version_b (s))
-		return INVALID;
-}
-<renameinput>\"[^"]*\"     { /* got the version number */
-	String s (YYText ()+1);
-	s = s.left_string (s.index_last ('\"'));
-
-	yy_pop_state();
-	this->here_input().source_file_->name_ = s;
-	progress_indication (_f("\nRenamed input to `%s'\n", s.to_str0()));
-	scm_module_define (gh_car (scopes_),
-		     ly_symbol2scm ("input-file-name"),
-		     scm_makfrom0str (s.to_str0()));
-
-}
-
-<version>. 	{
-	LexerError ("No quoted string found after \\version");
-	yy_pop_state ();
-}
-<renameinput>. 	{
-	LexerError ("No quoted string found after \\renameinput");
-	yy_pop_state ();
-}
-<longcomment>{
-	[^\%]* 		{
-	}
-	\%*[^}%]*		{
-
-	}
-	"%"+"}"		{
-		yy_pop_state ();
-	}
-	<<EOF>> 	{
-		LexerError (_ ("EOF found inside a comment").to_str0 ());
-		main_input_b_ = false;
-		if (! close_input ()) 
-		  yyterminate (); // can't move this, since it actually rets a YY_NULL
-	}
-}
-
-
-<INITIAL,chords,lyrics,notes,figures>\\maininput           {
-	if (!main_input_b_)
-	{
-		start_main_input ();
-		main_input_b_ = true;
-	}
-	else
-		error (_ ("\\maininput not allowed outside init files"));
-}
-
-<INITIAL,chords,lyrics,figures,notes>\\include           {
-	yy_push_state (incl);
-}
-<incl>\"[^"]*\";?   { /* got the include file name */
-	String s (YYText ()+1);
-	s = s.left_string (s.index_last ('"'));
-
-	new_input (s, &global_input_file->sources_ );
-	yy_pop_state ();
-}
-<incl>\\{BLACK}*;?{WHITE} { /* got the include identifier */
-	String s = YYText () + 1;
-	strip_trailing_white (s);
-	if (s.length () && (s[s.length () - 1] == ';'))
-	  s = s.left_string (s.length () - 1);
-
-	SCM sid = lookup_identifier (s);
-	if (gh_string_p (sid)) {
-		new_input (ly_scm2string (sid), &global_input_file->sources_);
-		yy_pop_state ();
-	} else { 
-	    String msg (_f ("wrong or undefined identifier: `%s'", s ));
-
-	    LexerError (msg.to_str0 ());
-	    SCM err = scm_current_error_port ();
-	    scm_puts ("This value was found in the table: ", err);
-	    scm_display (sid, err);
-	  }
-}
-<incl>\"[^"]*   { // backup rule
-	error (_ ("Missing end quote"));
-	exit (1);
-}
-<chords,notes,figures>{RESTNAME} 	{
-	const char *s = YYText ();
-	yylval.scm = scm_makfrom0str (s);
-	return RESTNAME;
-}
-<chords,notes,figures>R		{
-	return MULTI_MEASURE_REST;
-}
-<INITIAL,chords,lyrics,notes,figures>\\\${BLACK}*{WHITE}	{
-	String s=YYText () + 2;
-	s=s.left_string (s.length () - 1);
-	return scan_escaped_word (s); 
-}
-<INITIAL,chords,lyrics,notes,figures>\${BLACK}*{WHITE}		{
-	String s=YYText () + 1;
-	s=s.left_string (s.length () - 1);
-	return scan_bare_word (s);
-}
-<INITIAL,chords,lyrics,notes,figures>\\\${BLACK}*		{ // backup rule
-	error (_("white expected"));
-	exit (1);
-}
-<INITIAL,chords,lyrics,notes,figures>\${BLACK}*		{ // backup rule
-	error (_("white expected"));
-	exit (1);
-}
-
-<INITIAL,markup,chords,lyrics,notes,figures>#	{ //embedded scm
-	//char const* s = YYText () + 1;
-	char const* s = here_str0 ();
-	int n = 0;
-	SCM sval = ly_parse_scm (s, &n, here_input (),
-		safe_global_b && main_input_b_);
-
-	if (sval == SCM_UNDEFINED)
-	{
-		sval = SCM_UNSPECIFIED;
-		errorlevel_ = 1;
- 	}
-
-	for (int i=0; i < n; i++)
-	{
-		yyinput ();
-	}
-	char_count_stack_.top () += n;
-
-	if (unpack_identifier (sval) != SCM_UNDEFINED)
-	{
-		yylval.scm = unpack_identifier(sval);
-		return identifier_type (yylval.scm);
-	}
-		
-	yylval.scm = sval;
-	return SCM_T;
-}
-<INITIAL,notes,lyrics>{ 
-	\<\<   {
-		return LESSLESS;
-	}
-	\>\>   {
-		return MOREMORE;
-	}
-}
-<figures>{
-	_	{
-		return FIGURE_SPACE;
-	}
-	\>		{
-		return FIGURE_CLOSE;
-	}
-	\< 	{
-		return FIGURE_OPEN;
-	}
-}
-
-<notes,figures>{
-	{ALPHAWORD}	{
-		return scan_bare_word (YYText ());
-	}
-
-	{NOTECOMMAND}	{
-		return scan_escaped_word (YYText () + 1); 
-	}
-	{FRACTION}	{
-		yylval.scm =  scan_fraction (YYText ());
-		return FRACTION;
-	}
-
-	{DIGIT}		{
-		yylval.i = String_convert::dec2int (String (YYText ()));
-		return DIGIT;
-	}
-	{UNSIGNED}		{
-		yylval.i = String_convert::dec2int (String (YYText ()));
-		return UNSIGNED;
-	}
-	{E_UNSIGNED}	{
-		yylval.i = String_convert::dec2int (String (YYText () +1));
-		return E_UNSIGNED;
-	}
-
-	\" {
-		start_quote ();
-	}
-}
-
-\"		{
-	start_quote ();
-}
-<quote>{
-	\\{ESCAPED}	{
-		*yylval.string += to_string (escaped_char (YYText ()[1]));
-	}
-	[^\\"]+	{
-		*yylval.string += YYText ();
-	}
-	\"	{
-
-		yy_pop_state ();
-
-		/* yylval is union. Must remember STRING before setting SCM*/
-		String *sp = yylval.string;
-		yylval.scm = scm_makfrom0str (sp->to_str0 ());
-		delete sp;
-		return STRING;
-	}
-	.	{
-		*yylval.string += YYText ();
-	}
-}
-
-<lyrics>{
-	\" {
-		start_quote ();
-	}
-	{FRACTION}	{
-		yylval.scm =  scan_fraction (YYText ());
-		return FRACTION;
-	}
-	{UNSIGNED}		{
-		yylval.i = String_convert::dec2int (String (YYText ()));
-		return UNSIGNED;
-	}
-	{NOTECOMMAND}	{
-		return scan_escaped_word (YYText () + 1);
-	}
-	{LYRICS} {
-		/* ugr. This sux. */
-		String s (YYText ()); 
-		if (s == "__")
-			return yylval.i = EXTENDER;
-		if (s == "--")
-			return yylval.i = HYPHEN;
-		s = lyric_fudge (s);
-
-		char c = s[s.length () - 1];
-		if (c == '{' ||  c == '}') // brace open is for not confusing dumb tools.
-			here_input ().warning (
-				_ ("Brace found at end of lyric.  Did you forget a space?"));
-		yylval.scm = scm_makfrom0str (s.to_str0 ());
-
-
-		return STRING;
-	}
-	. {
-		return YYText ()[0];
-	}
-}
-<chords>{
-	{ALPHAWORD}	{
-		return scan_bare_word (YYText ());
-	}
-	{NOTECOMMAND}	{
-		return scan_escaped_word (YYText () + 1);
-	}
-	{FRACTION}	{
-		yylval.scm =  scan_fraction (YYText ());
-		return FRACTION;
-	}
-	{UNSIGNED}		{
-		yylval.i = String_convert::dec2int (String (YYText ()));
-		return UNSIGNED;
-	}
-	\" {
-		start_quote ();
-	}
-	-  {
-		return CHORD_MINUS;
-	}
-	:  {
-		return CHORD_COLON;
-	}
-	\/\+ {
-		return CHORD_BASS;
-	}
-	\/  {
-		return CHORD_SLASH;
-	}
-	\^  {
-		return CHORD_CARET;
-	}
-	. {
-		return YYText ()[0];
-	}
-}
-
-
-<markup>{
-	\" {
-		start_quote ();
-	}
-	\< {
-		return '<';
-	}
-	\> {
-		return '>';
-	}
-	{MARKUPCOMMAND} {
-		String str (YYText() + 1);
-		SCM s = lookup_markup_command (str);
-
-		if (gh_pair_p (s) && gh_symbol_p (gh_cdr (s)) ) {
-			yylval.scm = gh_car(s);
-			SCM tag = gh_cdr(s);
-			if (tag == ly_symbol2scm("markup0"))
-				return MARKUP_HEAD_MARKUP0;
-			if (tag == ly_symbol2scm("empty"))
-				return MARKUP_HEAD_EMPTY;
-			else if (tag == ly_symbol2scm ("markup0-markup1"))
-				return MARKUP_HEAD_MARKUP0_MARKUP1;
-			else if (tag == ly_symbol2scm ("markup-list0"))
-				return MARKUP_HEAD_LIST0;
-			else if (tag == ly_symbol2scm ("scheme0"))
-				return MARKUP_HEAD_SCM0;
-			else if (tag == ly_symbol2scm ("scheme0-scheme1"))
-				return MARKUP_HEAD_SCM0_SCM1;
-			else if (tag == ly_symbol2scm ("scheme0-markup1"))
-				return MARKUP_HEAD_SCM0_MARKUP1;
-			else if (tag == ly_symbol2scm ("scheme0-scheme1-markup2"))
-				return MARKUP_HEAD_SCM0_SCM1_MARKUP2;
-			else if (tag == ly_symbol2scm ("scheme0-scheme1-scheme2"))
-				return MARKUP_HEAD_SCM0_SCM1_SCM2;
-			else {
-				programming_error ("No parser tag defined for this signature. Abort"); 
-				ly_display_scm (s);
-				assert(false);
-			}
-		} else
-			return scan_escaped_word (str);
-	}
-	[{}]	{
-		return YYText()[0];
-	}
-	[^#{}"\\ \t\n\r\f]+ {
-		String s (YYText ()); 
-
-		char c = s[s.length () - 1];
-		if (c == '{' ||  c == '}') // brace open is for not confusing dumb tools.
-			here_input ().warning (
-				_ ("Brace found at end of markup.  Did you forget a space?"));
-		yylval.scm = scm_makfrom0str (s.to_str0 ());
-
-
-		return STRING;
-	}
-	.  {
-		return YYText()[0];
-	}
-}
-
-<<EOF>> {
-	main_input_b_ = false;
-	if (! close_input ()) { 
- 	  yyterminate (); // can't move this, since it actually rets a YY_NULL
-	}
-}
-
-
-{WORD}	{
-	return scan_bare_word (YYText ());
-}
-{KEYWORD}	{
-	return scan_escaped_word (YYText () + 1);
-}
-{REAL}		{
-	Real r;
-	int cnv=sscanf (YYText (), "%lf", &r);
-	assert (cnv == 1);
-
-	yylval.scm = gh_double2scm (r);
-	return REAL;
-}
-
-{UNSIGNED}	{
-	yylval.i = String_convert::dec2int (String (YYText ()));
-	return UNSIGNED;
-}
-
-
-[{}]	{
-
-	return YYText ()[0];
-}
-[*:=]		{
-	char c = YYText ()[0];
-
-	return c;
-}
-
-<INITIAL,notes,figures>.	{
-	return YYText ()[0];
-}
-
-<INITIAL,lyrics,notes,figures>\\. {
-    char c= YYText ()[1];
-
-    switch (c) {
-    case '>':
-	return E_BIGGER;
-    case '<':
-	return E_SMALLER;
-    case '!':
-	return E_EXCLAMATION;
-    case '(':
-	return E_OPEN;
-    case ')':
-	return E_CLOSE;
-    case '[':
-	return E_LEFTSQUARE;
-    case ']':
-	return E_RIGHTSQUARE;
-    case '~':
-	return E_TILDE;
-    case '\\':
-	return E_BACKSLASH;
-
-    default:
-	return E_CHAR;
-    }
-}
-
-<*>.		{
-	String msg = _f ("invalid character: `%c'", YYText ()[0]);
-	LexerError (msg.to_str0 ());
-	return YYText ()[0];
-}
-
-%%
-
-void
-My_lily_lexer::push_note_state (SCM tab)
-{
-	pitchname_tab_stack_ = gh_cons (tab, pitchname_tab_stack_);
-	yy_push_state (notes);
-}
-
-void
-My_lily_lexer::push_figuredbass_state()
-{
-	yy_push_state (figures);
-}
-void
-My_lily_lexer::push_chord_state (SCM tab)
-{
-	pitchname_tab_stack_ = gh_cons (tab, pitchname_tab_stack_);
-	yy_push_state (chords);
-}
-
-void
-My_lily_lexer::push_lyric_state ()
-{
-	yy_push_state (lyrics);
-}
-
-void
-My_lily_lexer::push_markup_state ()
-{
-	yy_push_state (markup);
-}
-
-void
-My_lily_lexer::pop_state ()
-{
-	if (YYSTATE == notes || YYSTATE == chords)
-		pitchname_tab_stack_ = gh_cdr (pitchname_tab_stack_);
-	yy_pop_state ();
-}
-
-int
-My_lily_lexer::identifier_type(SCM sid)
-{
-	int k = try_special_identifiers(&yylval.scm , sid);
-	return k >= 0  ? k : SCM_IDENTIFIER;
-}
-
-
-int
-My_lily_lexer::scan_escaped_word (String str)
-{
-	// use more SCM for this.
-
-//	SCM sym = ly_symbol2scm (str.to_str0 ());
-
-	int l = lookup_keyword (str);
-	if (l != -1) {
-		return l;
-	}
-	SCM sid = lookup_identifier (str);
-	if (sid != SCM_UNDEFINED)
-	{
-		yylval.scm = sid;
-		return identifier_type (sid);
-	}
-
-	String msg (_f ("unknown escaped string: `\\%s'", str));	
-	LexerError (msg.to_str0 ());
-
-	yylval.scm = scm_makfrom0str (str.to_str0 ());
-
-	return STRING;
-}
-
-int
-My_lily_lexer::scan_bare_word (String str)
-{
-	SCM sym = ly_symbol2scm (str.to_str0 ());
-	if ((YYSTATE == notes) || (YYSTATE == chords)) {
-		SCM handle = SCM_BOOL_F;
-		if (gh_pair_p (pitchname_tab_stack_))
-			handle = scm_hashq_get_handle (gh_car (pitchname_tab_stack_), sym);
-		
-		if (gh_pair_p (handle)) {
-			yylval.scm = ly_cdr (handle);
-			if (unsmob_pitch (yylval.scm)) 
-	                    return (YYSTATE == notes) ? NOTENAME_PITCH : TONICNAME_PITCH;
-			else if (gh_symbol_p (yylval.scm))
-			    return DRUM_PITCH;
-		}
-		else if ((handle = scm_hashq_get_handle (chordmodifier_tab_, sym))!= SCM_BOOL_F)
-		{
-		    yylval.scm = ly_cdr (handle);
-		    return CHORD_MODIFIER;
-		}
-	}
-
-	yylval.scm = scm_makfrom0str (str.to_str0 ());
-	return STRING;
-}
-
-bool
-My_lily_lexer::note_state_b () const
-{
-	return YY_START == notes;
-}
-
-bool
-My_lily_lexer::chord_state_b () const
-{
-	return YY_START == chords;
-}
-
-bool
-My_lily_lexer::lyric_state_b () const
-{
-	return YY_START == lyrics;
-}
-
-bool
-My_lily_lexer::figure_state_b () const
-{
-	return YY_START == figures;
-}
-
-/*
- urg, belong to String (_convert)
- and should be generalised 
- */
-void
-strip_leading_white (String&s)
-{
-	int i=0;
-	for (;  i < s.length (); i++) 
-		if (!isspace (s[i]))
-			break;
-
-	s = s.nomid_string (0, i);
-}
-
-void
-strip_trailing_white (String&s)
-{
-	int i=s.length ();	
-	while (i--) 
-		if (!isspace (s[i]))
-			break;
-
-	s = s.left_string (i+1);
-}
-
-
-
-/* 1.9.0 == postfix articulations */ 
-Lilypond_version oldest_version ("1.9.0");
-
-
-bool
-valid_version_b (String s)
-{
-  Lilypond_version current ( MAJOR_VERSION "." MINOR_VERSION "." PATCH_LEVEL );
-  Lilypond_version ver (s);
-  if (! ((ver >= oldest_version) && (ver <= current)))
-	{	
-		non_fatal_error (_f ("Incorrect lilypond version: %s (%s, %s)", ver.to_string (), oldest_version.to_string (), current.to_string ()));
-		non_fatal_error (_ ("Consider updating the input with the convert-ly script")); 
-		return false;
-    }
-  return true;
-}
-	
-
-/*
-  substittute _ adn \,
-*/
-String
-lyric_fudge (String s)
-{
-  char  * chars  =s.get_copy_str0 ();
-
-  for (char * p = chars; *p ; p++)
-    {
-      if (*p == '_' && (p == chars || *(p-1) != '\\'))
-	*p = ' ';
-    }
-  
-  s = String (chars);
-  delete[] chars;
-
-  int i =0;	
-  if ((i=s.index ("\\,")) != -1)   // change "\," to TeX's "\c "
-    {
-      * (s.get_str0 () + i + 1) = 'c';
-      s = s.left_string (i+2) + " " + s.right_string (s.length ()-i-2);
-    }
-
-  return s;
-}
-
-/*
-Convert "NUM/DEN" into a '(NUM . DEN) cons.
-*/
-SCM
-scan_fraction (String frac)
-{
-	int i = frac.index ('/');
-	int l = frac.length ();
-	String left = frac.left_string (i);
-	String right = frac.right_string (l - i - 1);
-
-	int n = String_convert::dec2int (left);
-	int d = String_convert::dec2int (right);
-	return gh_cons (gh_int2scm (n), gh_int2scm (d));
-}
-
-// Breaks for flex 2.5.31
-#if 0
-/* avoid silly flex induced gcc warnings */
-static void yy_push_state (int) {;}
-static void yy_pop_state () {;}
-static int yy_top_state () { return 0; }
-
-static void
-avoid_silly_flex_induced_gcc_warnings ()
-{
-	(void)yy_start_stack_ptr;
-	(void)yy_start_stack_depth;
-	(void)yy_start_stack;
-	yy_push_state (0);
-	yy_pop_state ();
-	yy_top_state ();
-	avoid_silly_flex_induced_gcc_warnings ();
-}
-#endif
-
-SCM
-lookup_markup_command (String s)
-{
-	static SCM proc ;
-	if (!proc)
-		proc = scm_c_eval_string ("lookup-markup-command");
-
-	return scm_call_1 (proc, scm_makfrom0str (s.to_str0 ()));
-}
diff --git a/lily/ligature-bracket-engraver.cc b/lily/ligature-bracket-engraver.cc
deleted file mode 100644
index 94548c920c..0000000000
--- a/lily/ligature-bracket-engraver.cc
+++ /dev/null
@@ -1,71 +0,0 @@
-/*   
-  ligature-bracket-engraver.cc -- implement Ligature_bracket_engraver
-  
-  source file of the GNU LilyPond music typesetter
-  
-  (c) 2002--2004 Juergen Reuter <reuter@ipd.uka.de>
-  
- */
-#include "ligature-engraver.hh"
-#include "note-column.hh"
-#include "tuplet-bracket.hh"
-#include "spanner.hh"
-
-/*
- * This engraver marks ligatures of any kind by just printing a
- * horizontal square bracket on top of each ligature.  See class
- * Ligature_engraver for more information on the interaction between
- * this class and its superclass.
- */
-class Ligature_bracket_engraver : public Ligature_engraver
-{
-protected:
-  virtual Spanner *create_ligature_spanner ();
-  virtual void acknowledge_grob (Grob_info);
-  virtual void typeset_ligature (Spanner *ligature, Array<Grob_info>);
-
-public:
-  TRANSLATOR_DECLARATIONS(Ligature_bracket_engraver);
-
-private:
-  void typeset_ligature_bracket ();
-};
-
-
-Ligature_bracket_engraver::Ligature_bracket_engraver ()
-{
-}
-
-Spanner *
-Ligature_bracket_engraver::create_ligature_spanner ()
-{
-  return make_spanner ("LigatureBracket");
-}
-
-void
-Ligature_bracket_engraver::typeset_ligature (Spanner *ligature, Array<Grob_info>)
-{
-  typeset_grob (ligature);
-}
-
-void
-Ligature_bracket_engraver::acknowledge_grob (Grob_info info)
-{
-  if (current_ligature ())
-    {
-      if (Note_column::has_interface (info.grob_))
-	{
-	  Tuplet_bracket::add_column (current_ligature (),
-				      dynamic_cast<Item*> (info.grob_));
-	}
-      else Ligature_engraver::acknowledge_grob (info);
-    }
-}
-
-ENTER_DESCRIPTION(Ligature_bracket_engraver,
-/* descr */       "Handles Ligature_events by engraving Ligature brackets.",
-/* creats*/       "TupletBracket",
-/* accepts */     "ligature-event",
-/* acks  */      "rest-interface note-column-interface",
-/* reads */       "",
-/* write */       "");
diff --git a/lily/ligature-engraver.cc b/lily/ligature-engraver.cc
deleted file mode 100644
index 49b4cfa209..0000000000
--- a/lily/ligature-engraver.cc
+++ /dev/null
@@ -1,292 +0,0 @@
-/*   
-  ligature-engraver.cc -- implement Ligature_engraver
-  
-  source file of the GNU LilyPond music typesetter
-  
-  (c) 2002--2004 Juergen Reuter <reuter@ipd.uka.de>
-  
- */
-#include "ligature-engraver.hh"
-#include "spanner.hh"
-#include "score-engraver.hh"
-#include "note-head.hh"
-#include "rest.hh"
-#include "warn.hh"
-#include "translator-group.hh"
-
-/*
- * This abstract class provides the general framework for ligatures of
- * any kind.  It cares for handling start/stop ligatures requests and
- * collecting all noteheads inbetween, but delegates creation of a
- * ligature spanner for each start/stop pair and typesetting of the
- * ligature spanner to a concrete subclass.
- *
- * A concrete ligature engraver must subclass this class and provide
- * functions create_ligature_spanner () and typeset_ligature
- * (Spanner *, Array<Grob_info>).  Subclasses of this class basically
- * fall into two categories.
- *
- * The first category consists of engravers that engrave ligatures in
- * a way that really deserves the name ligature.  That is, they
- * produce a single connected graphical object of fixed width,
- * consisting of noteheads and other primitives.  Space may be
- * inserted only after each ligature, if necessary, but in no case
- * between the primitives of the ligature.  Accidentals have to be put
- * to the left of the ligature, and not to the left of individual
- * noteheads.  Class Coherent_ligature_engraver is the common
- * superclass for all of these engravers.
- *
- * The second category is for engravers that are relaxed in the sense
- * that they do not require to produce a single connected graphical
- * object.  For example, in contemporary editions, ligatures are often
- * marked, but otherwise use contemporary notation and spacing.  In
- * this category, there is currently only a single class,
- * Ligature_bracket_engraver, which marks each ligature with a
- * horizontal sqare bracket, but otherwise leaves the appearance
- * untouched.
- */
-
-/*
- * TODO: lyrics/melisma/syllables: there should be at most one
- * syllable of lyrics per ligature (i.e. for the lyrics context, a
- * ligature should count as a single note, regardless of how many
- * heads the ligature consists of).
- *
- * TODO: currently, you have to add/remove the proper
- * Ligature_engraver (Ligature_bracket_engraver,
- * Mensural_ligature_engraver) to the proper translator
- * (e.g. VoiceContext) to choose between various representations.
- * Since adding/removing an engraver to a translator is a global
- * action in the paper block, you can not mix various representations
- * _within_ the same score.  Hence, for selecting a representation,
- * one would rather like to have a property that can be set e.g. for
- * several staves individually.  However, it seems that this approach
- * would require to have a single, complicated Ligature_engraver that
- * consists of all the code...  This needs further thoughts.
- */
-Ligature_engraver::Ligature_engraver ()
-{
-  ligature_ = 0;
-  finished_ligature_ = 0;
-  reqs_drul_[LEFT] = reqs_drul_[RIGHT] = 0;
-  prev_start_req_ = 0;
-  last_bound_ = 0;
-  brew_ligature_primitive_proc = SCM_EOL;
-}
-
-bool
-Ligature_engraver::try_music (Music *m)
-{
-  if (m->is_mus_type ("ligature-event"))
-    {
-      Direction d = to_dir (m->get_mus_property ("span-direction"));
-      reqs_drul_[d] = m;
-      return true;
-    }
-  return false;
-}
-
-Spanner *
-Ligature_engraver::create_ligature_spanner ()
-{
-  programming_error ("Ligature_engraver::create_ligature_spanner (): "
-		     "this is an abstract method that should not be called, "
-		     "but overridden by a subclass");
-  return 0;
-}
-
-/*
- * This method should do something that comes close to the following
- * .ly snippet:
- *
- * \property Voice.NoteHead \override #'print-function =
- *     < value of #'ligature-primitive-callback of Voice.NoteHead >
- *
- * TODO: What we are doing here on the c++ level, should actually be
- * performed on the SCM level.  However, I do not know how to teach
- * lilypond to apply an \override and \revert on #'print-function,
- * whenever lily encounters a \[ and \] in an .ly file, respectively.
- * Also encounter, that lily should not crash if a user erronously
- * nests \[ and \].
- */
-void
-Ligature_engraver::override_molecule_callback ()
-{
-  SCM target_callback = ly_symbol2scm ("print-function");
-  SCM source_callback = ly_symbol2scm ("ligature-primitive-callback");
-  SCM noteHeadProperties = updated_grob_properties (daddy_trans_, ly_symbol2scm ("NoteHead"));
-  SCM value = ly_cdr (scm_sloppy_assq (source_callback, noteHeadProperties));
-  execute_pushpop_property (daddy_trans_, ly_symbol2scm ("NoteHead"),
-			    target_callback, value);
-}
-
-/*
- * This method should do something that comes close to the following
- * .ly snippet:
- *
- * \property Voice.NoteHead \revert #'print-function
- *
- * TODO: What we are doing here on the c++ level, should actually be
- * performed on the SCM level.  However, I do not know how to teach
- * lilypond to apply an \override and \revert on #'print-function,
- * whenever lily encounters a \[ and \] in an .ly file, respectively.
- * Also encounter, that lily should not crash if a user erronously
- * nests \[ and \].
- */
-void
-Ligature_engraver::revert_molecule_callback ()
-{
-  SCM symbol = ly_symbol2scm ("NoteHead");
-  SCM key = ly_symbol2scm ("print-function");
-  execute_pushpop_property (daddy_trans_, symbol, key, SCM_UNDEFINED);
-}
-
-void
-Ligature_engraver::process_music ()
-{
-  if (reqs_drul_[STOP])
-    {
-      if (!ligature_)
-	{
-	  reqs_drul_[STOP]->origin ()->warning (_ ("can't find start of ligature"));
-	  return;
-	}
-
-      if (!last_bound_)
-	{
-	  reqs_drul_[STOP]->origin ()->warning (_ ("no right bound"));
-	}
-      else
-	{
-	  ligature_->set_bound (RIGHT, last_bound_);
-	}
-
-      prev_start_req_ = 0;
-      finished_primitives_ = primitives_;
-      finished_ligature_ = ligature_;
-      primitives_.clear ();
-      ligature_ = 0;
-      revert_molecule_callback ();
-    }
-  last_bound_ = unsmob_grob (get_property ("currentMusicalColumn"));
-
-  if (ligature_)
-    {
-      // TODO: maybe forbid breaks only if not transcribing
-      top_engraver ()->forbid_breaks ();
-    }
-
-  if (reqs_drul_[START])
-    {
-      if (ligature_)
-	{
-	  reqs_drul_[START]->origin ()->warning (_ ("already have a ligature"));
-	  return;
-	}
-
-      prev_start_req_ = reqs_drul_[START];
-      ligature_ = create_ligature_spanner ();
-      brew_ligature_primitive_proc =
-	ligature_->get_grob_property ("ligature-primitive-callback");
-      if (brew_ligature_primitive_proc == SCM_EOL)
-	{
-	  warning ("Ligature_engraver: ligature-primitive-callback undefined");
-	}
-
-      Grob *bound = unsmob_grob (get_property ("currentMusicalColumn"));
-      if (!bound)
-	{
-	  reqs_drul_[START]->origin ()->warning (_ ("no left bound"));
-	}
-      else
-	{
-	  ligature_->set_bound (LEFT, bound);
-	}
-
-      ligature_start_mom_ = now_mom ();
-      
-      announce_grob(ligature_, reqs_drul_[START]->self_scm());
-      override_molecule_callback ();
-    }
-}
-
-void
-Ligature_engraver::typeset_ligature (Spanner *, Array<Grob_info>)
-{
-  programming_error ("Ligature_engraver::typeset_ligature (): "
-		     "this is an abstract method that should not be called, "
-		     "but overridden by a subclass");
-}
-
-void
-Ligature_engraver::stop_translation_timestep ()
-{
-  if (finished_ligature_)
-    {
-      if (!finished_primitives_.size ())
-	{
-	  finished_ligature_->programming_error ("Ligature_engraver::stop_translation_timestep (): "
-						 "junking empty ligature");
-	}
-      else
-	{
-	  typeset_ligature (finished_ligature_, finished_primitives_);
-	  finished_primitives_.clear ();
-	}
-      finished_ligature_ = 0;
-    }
-
-  reqs_drul_[START] = 0;
-  reqs_drul_[STOP] = 0;
-}
-
-void
-Ligature_engraver::finalize ()
-{
-  if (finished_ligature_)
-    {
-      typeset_ligature (finished_ligature_, finished_primitives_);
-      finished_primitives_.clear ();
-      finished_ligature_ = 0;
-    }
-  if (ligature_)
-    {
-      prev_start_req_->origin ()->warning (_ ("unterminated ligature"));
-      ligature_->suicide ();
-    }
-}
-
-Spanner *
-Ligature_engraver::current_ligature ()
-{
-  return ligature_;
-}
-
-void
-Ligature_engraver::acknowledge_grob (Grob_info info)
-{
-  if (ligature_)
-    {
-      if (Note_head::has_interface (info.grob_))
-	{
-	  primitives_.push (info);
-	  info.grob_->set_grob_property ("print-function",
-					 brew_ligature_primitive_proc);
-	}
-      if (Rest::has_interface (info.grob_))
-	{
-	  info.music_cause ()->origin ()->warning (_ ("ligature may not contain rest; ignoring rest"));
-	  prev_start_req_->origin ()->warning (_ ("ligature was started here"));
-	  // TODO: maybe better should stop ligature here rather than
-	  // ignoring the rest?
-	}
-    }
-}
-
-ENTER_DESCRIPTION (Ligature_engraver,
-/* descr */       "Abstract class; a concrete subclass handles Ligature_events by engraving Ligatures in a concrete style.",
-/* creats */      "",
-/* accepts */     "ligature-event",
-/* acks  */      "note-head-interface rest-interface",
-/* reads */       "",
-/* write */       "");
diff --git a/lily/lily-guile.cc b/lily/lily-guile.cc
deleted file mode 100644
index 773f072aa3..0000000000
--- a/lily/lily-guile.cc
+++ /dev/null
@@ -1,798 +0,0 @@
-/*
-  lily-guile.cc -- implement assorted guile functions
-
-  source file of the GNU LilyPond music typesetter
-
-  (c) 1998--2004 Jan Nieuwenhuizen <janneke@gnu.org>
-
-  Han-Wen Nienhuys <hanwen@cs.uu.nl>
-*/
-
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <math.h>   /* isinf */
-#include <string.h> /* strdup, strchr */
-#include <ctype.h>
-
-#include "lily-proto.hh"
-
-/* macosx fix:
-
-
- source-file.hh includes cmath which undefines isinf and isnan
-*/
-inline int my_isinf(Real r) { return isinf(r); }
-inline int my_isnan(Real r) { return isnan(r); }
-
-
-
-#include "libc-extension.hh"
-#include "lily-guile.hh"
-#include "main.hh"
-#include "file-path.hh"
-#include "warn.hh"
-#include "direction.hh"
-#include "offset.hh"
-#include "interval.hh"
-#include "pitch.hh"
-#include "dimensions.hh"
-#include "source-file.hh"
-
-// #define TEST_GC
-
-SCM
-ly_last (SCM list)
-{
-  return ly_car (scm_last_pair (list));
-}
-
-
-SCM
-ly_write2scm (SCM s)
-{
-  SCM port = scm_mkstrport (SCM_INUM0, 
-			    scm_make_string (SCM_INUM0, SCM_UNDEFINED),
-			    SCM_OPN | SCM_WRTNG,
-			    "ly_write2string");
-  //  SCM write = scm_eval_3 (ly_symbol2scm ("write"), s, SCM_EOL);
-  SCM write = scm_primitive_eval (ly_symbol2scm ("write"));
-  
-  // scm_apply (write, port, SCM_EOL);
-  gh_call2 (write, s, port);
-  return scm_strport_to_string (port);
-}
-
-
-SCM
-ly_quote_scm (SCM s)
-{
-  return scm_list_n (ly_symbol2scm ("quote"), s, SCM_UNDEFINED);
-}
-
-String
-ly_symbol2string (SCM s)
-{
-  assert (gh_symbol_p (s));
-  return String ((Byte*)SCM_STRING_CHARS (s), (int) SCM_STRING_LENGTH (s));
-}
-
-String
-gulp_file_to_string (String fn)
-{
-  String s = global_path.find (fn);
-  if (s == "")
-    {
-      String e = _f ("can't find file: `%s'", fn);
-      e += " ";
-      e += _f ("(load path: `%s')", global_path.to_string ());
-      error (e);
-    }
-  else if (verbose_global_b)
-    progress_indication ("[" + s);
-
-  int n;
-  char * str = gulp_file (s, &n);
-  String result (str);
-  delete[] str;
-  
-  if (verbose_global_b)
-    progress_indication ("]");
-
-  return result;
-}
-
-LY_DEFINE(ly_gulp_file, "ly:gulp-file", 1,0, 0,
-	  (SCM name),
-	  "Read the file named @var{name}, and return its contents in a string. The "
-" file is looked up using the lilypond search path.")
-{
-  return scm_makfrom0str (gulp_file_to_string (ly_scm2string (name)).to_str0 ());
-}
-
-
-extern "C" {
-  // maybe gdb 5.0 becomes quicker if it doesn't do fancy C++ typing?
-void
-ly_display_scm (SCM s)
-{
-  gh_display (s);
-  gh_newline ();
-}
-};
-
-String
-ly_scm2string (SCM s)
-{
-  assert (gh_string_p (s));
-
-  char *p = SCM_STRING_CHARS(s);
-  String r (p);
-  return r;
-}
-
-SCM
-index_get_cell (SCM s, Direction d)
-{
-  
-  assert (d);
-  return (d == LEFT) ? ly_car (s) : ly_cdr (s);
-}
-
-SCM
-index_set_cell (SCM s, Direction d, SCM v)
-{
-  if (d == LEFT)
-    gh_set_car_x (s, v);
-  else if (d == RIGHT)
-    gh_set_cdr_x (s, v);
-  return s;
-}
-  
-LY_DEFINE(ly_warning,"ly:warn", 1, 0, 0,
-  (SCM str),"Scheme callable function to issue the warning @code{msg}.")
-{
-  SCM_ASSERT_TYPE (gh_string_p (str), str, SCM_ARG1, __FUNCTION__, "string");
-  warning ("lily-guile: " + ly_scm2string (str));
-  return SCM_BOOL_T;
-}
-
-LY_DEFINE(ly_dir_p,  "ly:dir?", 1,0, 0,  (SCM s),
-	  "type predicate. A direction is a -1, 0 or 1, where -1 represents "
-	  "left or down and 1 represents right or up. ")
-{
-  if (gh_number_p (s))
-    {
-      int i = gh_scm2int (s);
-      return (i>= -1 && i <= 1)  ? SCM_BOOL_T : SCM_BOOL_F; 
-    }
-  return SCM_BOOL_F;
-}
-
-bool
-is_number_pair (SCM p)
-{
-  return gh_pair_p (p) && gh_number_p (ly_car (p)) && gh_number_p (ly_cdr (p));
-}
-
-typedef void (*Void_fptr) ();
-Array<Void_fptr> *scm_init_funcs_;
-
-void add_scm_init_func (void (*f) ())
-{
-  if (!scm_init_funcs_)
-    scm_init_funcs_ = new Array<Void_fptr>;
-
-  scm_init_funcs_->push (f);
-}
-
-
-void
-ly_init_ly_module (void *)
-{
-  for (int i=scm_init_funcs_->size () ; i--;)
-    (scm_init_funcs_->elem (i)) ();
-
-  if (verbose_global_b)
-    progress_indication ("\n");
-  
-  scm_primitive_load_path (scm_makfrom0str ("lily.scm"));
-}
-
-
-SCM lily_module ;
-
-void
-ly_init_guile ()
-{
-  lily_module = scm_c_define_module ("lily", ly_init_ly_module, 0);
-  scm_c_use_module ("lily");
-}
-
-unsigned int ly_scm_hash (SCM s)
-{
-  return scm_ihashv (s, ~1u);
-}
-
-
-
-bool
-is_direction (SCM s)
-{
-  if (gh_number_p (s))
-    {
-      int i = gh_scm2int (s);
-      return i>= -1 && i <= 1; 
-    }
-  return false;
-}
-
-
-bool
-is_axis (SCM s)
-{
-  if (gh_number_p (s))
-    {
-      int i = gh_scm2int (s);
-      return i== 0 || i == 1;
-    }
-  return false;
-}
-
-
-Direction
-to_dir (SCM s)
-{
-  return SCM_INUMP (s) ?  (Direction) gh_scm2int (s) : CENTER;
-}
-
-Interval
-ly_scm2interval (SCM p)
-{
-  return  Interval (gh_scm2double (ly_car (p)),
-		    gh_scm2double (ly_cdr (p)));
-}
-
-Drul_array<Real>
-ly_scm2realdrul (SCM p)
-{
-  return  Drul_array<Real> (gh_scm2double (ly_car (p)),
-			    gh_scm2double (ly_cdr (p)));
-}
-
-SCM
-ly_interval2scm (Drul_array<Real> i)
-{
-  return gh_cons (gh_double2scm (i[LEFT]),
-		  gh_double2scm (i[RIGHT]));
-}
-
-
-
-
-bool
-to_boolean (SCM s)
-{
-  return gh_boolean_p (s) && gh_scm2bool (s);
-}
-
-/*
-  Appendable list L: the cdr contains the list, the car the last cons
-  in the list.
- */
-SCM
-appendable_list ()
-{
-  SCM s = gh_cons (SCM_EOL, SCM_EOL);
-  gh_set_car_x (s, s);
-  
-  return s;
-}
-
-void
-appendable_list_append (SCM l, SCM elt)
-{
-  SCM newcons = gh_cons (elt, SCM_EOL);
-  
-  gh_set_cdr_x (ly_car (l), newcons);      
-  gh_set_car_x (l, newcons);
-}
-
-
-SCM
-ly_offset2scm (Offset o)
-{
-  return gh_cons (gh_double2scm (o[X_AXIS]), gh_double2scm (o[Y_AXIS]));
-}
-
-Offset
-ly_scm2offset (SCM s)
-{
-  return Offset (gh_scm2double (ly_car (s)),
-		 gh_scm2double (ly_cdr (s)));
-}
-
-   
-LY_DEFINE(ly_number2string,  "ly:number->string", 1, 0,0,
-	  (SCM s),
-	  " converts @var{num} to a string without generating many decimals. It "
-"leaves a space at the end.")
-{
-  SCM_ASSERT_TYPE (gh_number_p (s), s, SCM_ARG1, __FUNCTION__, "number");
-
-  char str[400];			// ugh.
-
-  if (scm_exact_p (s) == SCM_BOOL_F)
-    {
-      Real r (gh_scm2double (s));
-
-      if (my_isinf (r) || my_isnan (r))
-	{
-	  programming_error ("Infinity or NaN encountered while converting Real number; setting to zero.");
-	  r = 0.0;
-	}
-
-      sprintf (str, "%8.4f ", r);
-    }
-  else
-    {
-      sprintf (str, "%d ", gh_scm2int (s));
-    }
-
-  return scm_makfrom0str (str);
-}
-
-/*
-  Undef this to see if GUILE GC is causing too many swaps.
- */
-
-//#define TEST_GC
-
-#ifdef TEST_GC
-#include <libguile/gc.h>
-
-static void *
-greet_sweep (void *dummy1, void *dummy2, void *dummy3)
-{
-   fprintf (stderr, "entering sweep\n");
-}
-
-static void *
-wave_sweep_goodbye (void *dummy1, void *dummy2, void *dummy3)
-{
-   fprintf (stderr, "leaving sweep\n");
-}
-#endif
-
-
-#include "version.hh"
-LY_DEFINE(ly_version,  "ly:version", 0, 0, 0, (),
-	  "Return the current lilypond version as a list, e.g. @code{(1 3 127 uu1)}. ")
-{
-  char const* vs =  "\'(" MAJOR_VERSION " " MINOR_VERSION " "  PATCH_LEVEL " " MY_PATCH_LEVEL ")" ;
-  
-  return gh_eval_str ((char*)vs);
-}
-
-LY_DEFINE(ly_unit,  "ly:unit", 0, 0, 0, (),
-	  "Return the unit used for lengths as a string.")
-{
-  return scm_makfrom0str (INTERNAL_UNIT);
-}
-
-
-
-LY_DEFINE(ly_dimension_p,  "ly:dimension?", 1, 0, 0, (SCM d),
-	  "Return @var{d} is a number. Used to distinguish length "
-	  "variables from normal numbers.")
-{
-  return scm_number_p (d);
-}
-
-static void
-init_functions ()
-{
-#ifdef TEST_GC 
-  scm_c_hook_add (&scm_before_mark_c_hook, greet_sweep, 0, 0);
-  scm_c_hook_add (&scm_before_sweep_c_hook, wave_sweep_goodbye, 0, 0);
-#endif
-}
-
-ADD_SCM_INIT_FUNC (funcs, init_functions);
-
-SCM
-ly_deep_copy (SCM src)
-{
-  if (gh_pair_p (src))
-    {
-      return gh_cons (ly_deep_copy (ly_car (src)), ly_deep_copy (ly_cdr (src)));
-    }
-  else if (gh_vector_p (src))
-    {
-      int  l = SCM_VECTOR_LENGTH (src);
-      SCM nv = scm_c_make_vector (l, SCM_UNDEFINED);
-      for (int i  =0 ; i< l ; i++)
-	{
-	  SCM si = gh_int2scm (i);
-	  scm_vector_set_x (nv, si, ly_deep_copy (scm_vector_ref (src, si))); 
-	}
-    }
-  else
-    return src;
-
-  return src;
-}
-
-
-
-
-SCM
-ly_assoc_chain (SCM key, SCM achain)
-{
-  if (gh_pair_p (achain))
-    {
-      SCM handle = scm_assoc (key, ly_car (achain));
-      if (gh_pair_p (handle))
-	return handle;
-      else
-	return ly_assoc_chain (key, ly_cdr (achain));
-    }
-  else
-    return SCM_BOOL_F;
-}
-
-/* looks the key up in the cdrs of the alist-keys
-   - ignoring the car and ignoring non-pair keys.
-   Returns first match found, i.e.
-
-   alist = ((1 . 10)
-                   ((1 . 2) . 11)
-                   ((2 . 1) . 12)
-                   ((3 . 0) . 13)
-                   ((4 . 1) . 14) )
-
-I would like (ly_assoc_cdr 1) to return 12 - because it's the first
-element with the cdr of the key = 1.  In other words (alloc_cdr key)
-corresponds to call
-
-(alloc (anything . key))
-
-
-
-*/
-SCM
-ly_assoc_cdr (SCM key, SCM alist)
-{
-  if (gh_pair_p (alist)) {
-    SCM trykey = ly_caar(alist);
-    if(gh_pair_p(trykey) && to_boolean(scm_equal_p(key,ly_cdr(trykey))))
-      return ly_car(alist);
-    else
-      return ly_assoc_cdr (key, ly_cdr (alist));
-  }
-  else
-    return SCM_BOOL_F;
-}
-
-/*
-  LIST has the form "sym1 sym2 sym3\nsym4\nsym5"
-
-  i.e. \n and ' ' can be used interchangeably as separators.
- */
-SCM
-parse_symbol_list (const char * list)
-{
-  char * s = strdup (list);
-  char *orig = s;
-  SCM create_list = SCM_EOL;
-
-  char * e = s + strlen (s) - 1;
-  while (e >= s && isspace (*e))
-    *e -- = 0;
-
-  for (char * p = s; *p; p++)
-    {
-      if (*p == '\n')
-	*p = ' ' ;
-    }
-  
-  if (!s[0] )
-    s = 0;
-
-
-  
-  while (s)
-    {
-      char *next = strchr (s, ' ');
-      if (next)
-	*next++ = 0;
-
-      create_list = gh_cons (ly_symbol2scm (s), create_list);
-      s = next;
-    }
-
-  free (orig);
-  return create_list;
-}
-
-
-SCM
-ly_truncate_list (int k, SCM l )
-{
-  if (k == 0)
-    {
-      l = SCM_EOL;
-    }
-  else
-    {
-      SCM s = l;
-      k--;
-      for (; gh_pair_p (s) && k--; s = ly_cdr (s))
-	;
-
-      if (gh_pair_p (s))
-	{
-	  gh_set_cdr_x (s, SCM_EOL);
-	}
-    }
-  return l;
-}
-
-
-String
-print_scm_val (SCM val)
-{
-  String realval = ly_scm2string (ly_write2scm (val));
-  if (realval.length () > 200)
-    realval = realval.left_string (100) + "\n :\n :\n" + realval.right_string (100);
-  
-  return realval;	 
-}
-
-bool
-type_check_assignment (SCM sym, SCM val,  SCM type_symbol) 
-{
-  bool ok = true;
-
-  /*
-    Always succeeds.
-
-
-    TODO: should remove #f from allowed vals?
-   */
-  if (val == SCM_EOL || val == SCM_BOOL_F)
-    return ok;
-
-  if (!gh_symbol_p (sym))
-#if 0
-    return false;
-#else
-  /*
-    This is used for autoBeamSettings.
-
-    TODO: deprecate the use of \override and \revert for
-    autoBeamSettings?
-
-    or use a symbol autoBeamSettingS?  
-   */
-  return true; 
-#endif
-  
-  SCM type = scm_object_property (sym, type_symbol);
-
-  if (type != SCM_EOL && !gh_procedure_p (type))
-      {
-	warning (_f ("Can't find property type-check for `%s' (%s).",
-		     ly_symbol2string (sym).to_str0 (),
-		     ly_symbol2string (type_symbol).to_str0 ())
-		 + "  " + _ ("Perhaps you made a typing error?"));
-
-	/* Be strict when being anal :) */
-	if (internal_type_checking_global_b)
-	  abort ();
-	
-	warning (_ ("Doing assignment anyway."));
-      }
-  else
-    {
-      if (val != SCM_EOL
-	  && gh_procedure_p (type)
-	  && gh_call1 (type, val) == SCM_BOOL_F)
-	{
-	  SCM errport = scm_current_error_port ();
-	  ok = false;
-	  SCM typefunc = scm_primitive_eval (ly_symbol2scm ("type-name"));
-	  SCM type_name = gh_call1 (typefunc, type);
-
-	 
-	  scm_puts (_f ("Type check for `%s' failed; value `%s' must be of type `%s'",
-			ly_symbol2string (sym).to_str0 (),
-			print_scm_val (val),
-			ly_scm2string (type_name).to_str0 ()).to_str0 (),
-		    errport);
-	  scm_puts ("\n", errport);		      
-	}
-    }
-  return ok;
-}
-
-
-/* some SCM abbrevs
-
-   zijn deze nou handig?
-   zijn ze er al in scheme, maar heten ze anders? */
-
-
-/* Remove doubles from (sorted) list */
-SCM
-ly_unique (SCM list)
-{
-  SCM unique = SCM_EOL;
-  for (SCM i = list; gh_pair_p (i); i = ly_cdr (i))
-    {
-      if (!gh_pair_p (ly_cdr (i))
-	  || !gh_equal_p (ly_car (i), ly_cadr (i)))
-	unique = gh_cons (ly_car (i), unique);
-    }
-  return scm_reverse_x (unique, SCM_EOL);
-}
-
-/* tail add */
-SCM
-ly_snoc (SCM s, SCM list)
-{
-  return gh_append2 (list, scm_list_n (s, SCM_UNDEFINED));
-}
-
-
-/* Split list at member s, removing s.
-   Return (BEFORE . AFTER) */
-SCM
-ly_split_list (SCM s, SCM list)
-{
-  SCM before = SCM_EOL;
-  SCM after = list;
-  for (; gh_pair_p (after);)
-    {
-      SCM i = ly_car (after);
-      after = ly_cdr (after);
-      if (gh_equal_p (i, s))
-	break;
-      before = gh_cons (i, before);
-    }
-  return gh_cons ( scm_reverse_x (before, SCM_EOL),  after);
-  
-}
-
-
-void
-taint (SCM *)
-{
-  /*
-    nop.
-   */
-}
-
-/*
-  display stuff without using stack
- */
-SCM
-display_list (SCM s)
-{
-  SCM p = scm_current_output_port();
-
-  scm_puts ("(", p);
-  for (; gh_pair_p(s); s =gh_cdr(s))
-    {
-      scm_display (gh_car(s), p);
-      scm_puts (" ", p);      
-    }
-  scm_puts (")", p);
-  return SCM_UNSPECIFIED;
-}
-
-Slice
-int_list_to_slice (SCM l)
-{
-  Slice s;
-  s.set_empty ();
-  for (; gh_pair_p (l); l = gh_cdr (l))
-    {
-      if (gh_number_p (gh_car (l)))
-	s.add_point (gh_scm2int (gh_car (l))); 
-    }
-
-  return s;
-}
-
-
-/*
-  Return I-th element, or last elt L. If I < 0, then we take the first
-  element.
-
-  PRE: length (L) > 0
- */
-SCM
-robust_list_ref(int i, SCM l)
-{
-  while (i-- > 0 && gh_pair_p (gh_cdr(l)))
-    l = gh_cdr (l);
-
-  return gh_car(l);
-}
-
-
-
-Real
-robust_scm2double (SCM k, double x)
-{
-  if (gh_number_p (k))
-    x = gh_scm2double (k);
-  return x;
-}
-
-Interval
-robust_scm2interval (SCM k, Drul_array<Real> v)
-{
-  Interval i;
-  i[LEFT]= v[LEFT];
-  i[RIGHT]= v[RIGHT];
-  if (is_number_pair (k))
-    i = ly_scm2interval (k);
-  return i;
-}
-
-Drul_array<Real>
-robust_scm2drul (SCM k, Drul_array<Real> v)
-{
-  if (is_number_pair (k))
-    v = ly_scm2interval (k);
-  return v;
-}
-
-Offset
-robust_scm2offset (SCM k, Offset o)
-{
-  if (is_number_pair (k))
-    o = ly_scm2offset (k);
-
-  return o;
-}
-
-
-int
-robust_scm2int (SCM k, int o)
-{
-  if (scm_integer_p (k) == SCM_BOOL_T)
-    o = gh_scm2int (k);
-
-  return o;
-}
-
-
-SCM
-alist_to_hashq (SCM alist)
-{
-  int i = scm_ilength (alist);
-  if (i < 0)
-    return scm_make_vector (gh_int2scm (0), SCM_EOL);
-	  
-  SCM tab = scm_make_vector (gh_int2scm (i), SCM_EOL);
-  for (SCM s = alist; gh_pair_p (s); s = ly_cdr (s))
-    {
-      SCM pt = ly_cdar (s);
-      scm_hashq_set_x (tab, ly_caar (s), pt);
-    }
-  return tab; 
-}
-
-#if 1
-/*
-  Debugging mem leaks:
- */
-LY_DEFINE(ly_protects, "ly:protects", 0, 0, 0, (),
-	  "Return hash of protected objects.")
-{
-  return scm_protects;
-}
-#endif
diff --git a/lily/lily-version.cc b/lily/lily-version.cc
deleted file mode 100644
index 5d31b39342..0000000000
--- a/lily/lily-version.cc
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
-  lily-version.cc -- implement version strings
-
-  source file of the GNU LilyPond music typesetter
-
-  (c) 1999--2004 Jan Nieuwenhuizen <janneke@gnu.org>
-*/
-
-#include "config.h"
-#include "version.hh"
-#include "lily-version.hh"
-
-String
-version_string ()
-{
-  String str = MAJOR_VERSION "." MINOR_VERSION "."  PATCH_LEVEL;
-  String mpl ("." MY_PATCH_LEVEL);
-  if (mpl != ".")
-    str += mpl;
-  return str;
-}
-
-String 
-gnu_lilypond_string ()
-{
-  String str = "GNU LilyPond";
-  return str;
-}
-
-String 
-gnu_lilypond_version_string ()
-{
-  String str = gnu_lilypond_string () + " " + version_string ();
-  return str;
-}
-
diff --git a/lily/lilypond-version.cc b/lily/lilypond-version.cc
deleted file mode 100644
index f46289e2f1..0000000000
--- a/lily/lilypond-version.cc
+++ /dev/null
@@ -1,47 +0,0 @@
-/*
-  lilypond-version.cc -- implement Lilypond_version
-
-  source file of the GNU LilyPond music typesetter
-
-  (c) 1998--2004 Jan Nieuwenhuizen <janneke@gnu.org>
-
-*/
-
-#include "lilypond-input-version.hh"
-#include "string-convert.hh"
-#include "array.hh"
-
-Lilypond_version::Lilypond_version (int major, int minor, int patch)
-{
-  major_ = major;
-  minor_ = minor;
-  patch_ = patch;
-}
-
-Lilypond_version::Lilypond_version (String str)
-{
-  Array<String> version;
-  version = String_convert::split (str, '.');
-  
-  major_ = version[0].to_int ();
-  minor_ = version[1].to_int ();
-  patch_ = 0;
-  if (version.size () >= 3)
-    patch_ = version[2].to_int ();
-
-  if (version.size () >= 4)
-    extra_patch_string_ = version[3];
-}
-
-String
-Lilypond_version::to_string () const
-{
-  return ::to_string (major_) + "." + ::to_string (minor_) + "." + ::to_string (patch_);
-}
-
-Lilypond_version::operator int () const
-{
-    // ugh
-  return 100000 * major_ + 1000 * minor_ + patch_;
-}
-
diff --git a/lily/line-interface.cc b/lily/line-interface.cc
deleted file mode 100644
index a4adb8e357..0000000000
--- a/lily/line-interface.cc
+++ /dev/null
@@ -1,107 +0,0 @@
-/*   
-line-interface.cc --  implement Line_interface
-
-source file of the GNU LilyPond music typesetter
-
-(c) 2004 Han-Wen Nienhuys <hanwen@xs4all.nl>
-
- */
-
-#include "line-interface.hh"
-#include "molecule.hh"
-#include "grob.hh"
-#include "staff-symbol-referencer.hh"
-#include "lookup.hh"
-#include "paper-def.hh"
-
-
-Molecule
-Line_interface::make_dashed_line (Real thick, Offset from, Offset to,
-			     Real dash_period, Real dash_fraction)
-{
-  dash_fraction = (dash_fraction >? 0) <? 1.0;
-  Real on = dash_fraction * dash_period + thick; 
-  Real off = dash_period - on;
-  
-  SCM at = scm_list_n (ly_symbol2scm ("dashed-line"),
-			gh_double2scm (thick), 
-			gh_double2scm (on),
-			gh_double2scm (off),
-			gh_double2scm (to[X_AXIS] - from[X_AXIS]),
-			gh_double2scm (to[Y_AXIS] - from[Y_AXIS]),
-			SCM_UNDEFINED);
-  
-  Box box;
-  box.add_point (Offset (0,0));
-  box.add_point (to - from);
-
-  box[X_AXIS].widen (thick/2);
-  box[Y_AXIS].widen (thick/2);  
-
-  Molecule m = Molecule (box, at);
-  m.translate (from);
-  return m;
-}
-
-Molecule
-Line_interface::make_line (Real th, Offset from, Offset to)
-{
-  SCM at = scm_list_n (ly_symbol2scm ("draw-line"),
-			gh_double2scm (th), 
-			gh_double2scm (from[X_AXIS]),
-			gh_double2scm (from[Y_AXIS]),
-			gh_double2scm (to[X_AXIS]),
-			gh_double2scm (to[Y_AXIS]),
-			SCM_UNDEFINED);
-
-  Box box;
-  box.add_point (from);
-  box.add_point (to);
-
-  box[X_AXIS].widen (th/2);
-  box[Y_AXIS].widen (th/2);  
-
-  return Molecule (box, at);
-}
-
-Molecule
-Line_interface::line (Grob *me, Offset from, Offset to)
-{
-  Real thick = Staff_symbol_referencer::line_thickness (me)
-    * robust_scm2double (me->get_grob_property ("thickness"),1);
-  
-  SCM type = me->get_grob_property ("style");
-
-  SCM dash_fraction = me->get_grob_property ("dash-fraction");
-  if (gh_number_p (dash_fraction) || type == ly_symbol2scm ("dotted-line"))
-    {
-      
-      Real fraction
-	= type == ly_symbol2scm ("dotted-line")
-	? 0.0
-	: robust_scm2double (dash_fraction, 0.4);
-      
-      fraction = (fraction >? 0) <? 1.0;
-      Real period = Staff_symbol_referencer::staff_space (me)
-	* robust_scm2double (me->get_grob_property ("dash-period"), 1.0);
-
-      if (period < 0)
-	return Molecule ();
-  
-      return make_dashed_line (thick, from, to, period, fraction);
-    }
-  else
-    {
-      return make_line (thick, from, to);
-    }
-}
-
-ADD_INTERFACE(Line_interface, "line-interface",
-	      "Generic line objects. Any object using lines supports this.  Normally,"
-	      "you get a straight line. If dash-period is defined, a dashed line is "
-	      "produced; the length of the dashes is tuned with" 
-	      "@code{dash-fraction}. If the latter is set to 0, a dotted line is "
-	      "produced. If @code{dash-fraction} is negative, the line is set "
-	      "transparent.",
-	      
-	      "dash-period dash-fraction thickness style")
diff --git a/lily/line-spanner.cc b/lily/line-spanner.cc
deleted file mode 100644
index e7e59d5259..0000000000
--- a/lily/line-spanner.cc
+++ /dev/null
@@ -1,299 +0,0 @@
-/*
-  line-spanner.cc -- implement Line_spanner
-
-  source file of the GNU LilyPond music typesetter
-
-  (c) 2000--2004 Jan Nieuwenhuizen <janneke@gnu.org>
-*/
-
-#include <math.h>
-
-#include "molecule.hh"
-#include "item.hh"
-#include "spanner.hh"
-#include "line-spanner.hh"
-#include "paper-def.hh"
-#include "paper-column.hh"
-#include "staff-symbol-referencer.hh"
-#include "font-interface.hh"
-#include "warn.hh"
-#include "align-interface.hh"
-#include "lookup.hh"
-#include "line-interface.hh"
-
-Molecule
-zigzag_molecule (Grob *me, 
-		 Offset from,
-		 Offset to)
-{
-  Offset dz = to -from;
-  Real dx = dz[X_AXIS];
-  Real dy = dz[Y_AXIS];
-
-  Real thick = Staff_symbol_referencer::line_thickness (me);
-  thick *= robust_scm2double (me->get_grob_property ("thickness"), 1.0); // todo: staff sym referencer? 
-  
-  Real staff_space = Staff_symbol_referencer::staff_space (me);
-
-  double w = robust_scm2double (me->get_grob_property ("zigzag-width"), 1)*staff_space;
-  double l = robust_scm2double ( me->get_grob_property ("zigzag-length"), 1)* w;
-  double h = l>w/2 ? sqrt(l*l-w*w/4) : 0;
-  
-  SCM list = scm_list_n (ly_symbol2scm ("zigzag-line"),
-		      gh_bool2scm (true),
-		      gh_double2scm (w),
-		      gh_double2scm (h),
-		      gh_double2scm (thick),
-		      gh_double2scm (dx),
-		      gh_double2scm (dy),
-		      SCM_UNDEFINED);
-  Box b;
-  b.add_point (Offset (0,0));
-  b.add_point (dz);
-  b[X_AXIS].widen (thick/2);
-  b[Y_AXIS].widen (thick/2);
-     
-  return Molecule (b, list);
-}
-
-MAKE_SCHEME_CALLBACK(Line_spanner, after_line_breaking, 1);
-SCM
-Line_spanner::after_line_breaking (SCM  g)
-{
-  Grob *me  = unsmob_grob (g);
-  Spanner*sp = dynamic_cast<Spanner*> (me);
-
-  /*
-    We remove the line at the start of the line.  For piano voice
-    indicators, it makes no sense to have them at the start of the
-    line.
-
-    I'm not sure what the official rules for glissandi are, but
-    usually the 2nd note of the glissando is "exact", so when playing
-    from the start of the line, there is no need to glide.
-
-    From a typographical p.o.v. this makes sense, since the amount of
-    space left of a note at the start of a line is very small.
-
-    --hwn.
-    
-   */
-  if (sp->get_bound (LEFT)->break_status_dir()
-      && !sp->get_bound (RIGHT)->break_status_dir())
-    {
-      /*
-	Can't do suicide, since this mucks up finding the trend.
-       */
-      me->set_grob_property ("print-function", SCM_EOL);
-      
-    }
-  return SCM_EOL;
-}
-
-
-Molecule
-Line_spanner::line_molecule (Grob *me, 
-			     Offset from,
-			     Offset to)
-{
-  Offset dz = to -from ; 
-  SCM type = me->get_grob_property ("style");
-  if (gh_symbol_p (type)
-      && (type == ly_symbol2scm ("line")
-	  || type == ly_symbol2scm ("dashed-line")
-	  || type == ly_symbol2scm ("dotted-line")
-	  || type == ly_symbol2scm ("zigzag") 
-	  || (type == ly_symbol2scm ("trill") && dz[Y_AXIS] != 0)))
-    {
-      return  (type == ly_symbol2scm ("zigzag"))
-	? zigzag_molecule (me, from, to)
-	: Line_interface::line (me, from, to);
-    }
-  else if (gh_symbol_p (type)
-	   && type == ly_symbol2scm ("trill"))
-    {
-      SCM alist_chain = Font_interface::font_alist_chain (me);
-      SCM style_alist = scm_list_n (gh_cons (ly_symbol2scm ("font-family"),
-					     ly_symbol2scm ("music")),
-				    SCM_UNDEFINED);
-      
-      Font_metric *fm = select_font (me->get_paper (),
-						  gh_cons (style_alist,
-							   alist_chain));
-      Molecule m = fm->find_by_name ("scripts-trill-element");
-      Molecule mol;
-
-      do
-	mol.add_at_edge (X_AXIS, RIGHT, m, 0,0);
-      while (m.extent (X_AXIS).length ()
-	     && mol.extent (X_AXIS).length ()
-	     + m.extent (X_AXIS).length () < dz[X_AXIS]);
-
-      /*
-	FIXME: should center element on x/y
-       */
-      mol.translate_axis (m.extent (X_AXIS).length () / 2, X_AXIS);
-      mol.translate_axis (-(mol.extent (Y_AXIS)[DOWN]
-			    + mol.extent (Y_AXIS).length ())/2, Y_AXIS);
-
-      mol.translate (from);
-      return mol;
-    }
-  return Molecule();
-}
-
-/*
-  Find a common Y parent, which --if found-- should be the
-  fixed-distance alignment.
- */
-Grob *
-line_spanner_common_parent (Grob *me)
-{
-  Grob * common = find_fixed_alignment_parent (me);
-  if (!common)
-    {
-      common = Staff_symbol_referencer::get_staff_symbol (me);
-      if (common)
-	common = common->get_parent (Y_AXIS);
-      else
-	common = me->get_parent (Y_AXIS);
-    }
-
-  return common;
-}
-
-/*
-  Warning: this thing is a cross-staff object, so it should have empty Y-dimensions.
-
- (If not, you risk that this is called from the staff-alignment
-  routine, via molecule_extent. At this point, the staves aren't
-  separated yet, so it doesn't work cross-staff.
-
-*/
-
-
-MAKE_SCHEME_CALLBACK (Line_spanner, print, 1);
-SCM
-Line_spanner::print (SCM smob) 
-{
-  Spanner *me = dynamic_cast<Spanner*> (unsmob_grob (smob));
-
-  Drul_array<Item*>  bound (me->get_bound (LEFT),
-			    me->get_bound (RIGHT));
-  
-  
-  Real gap = robust_scm2double (me->get_grob_property ("gap"), 0.0);
-
-  Offset ofxy (gap, 0); /*offset from start point to start of line*/
-  Offset dxy ;
-  Offset my_off;
-  Offset his_off;
-  
-
-  if (bound[RIGHT]->break_status_dir())
-    {
-      if (bound[LEFT]->break_status_dir ())
-	{
-	  programming_error ("line-spanner with two broken ends. Farewell sweet world.");
-
-	  me->suicide();
-	  return SCM_EOL;
-	}
-
-      /*
-	This is hairy. For the normal case, we simply find common
-	parents, and draw a line between the bounds. When two note
-	heads are on different lines, there is no common parent
-	anymore. We have to find the piano-staff object.
-      */
-      
-      int k = broken_spanner_index (me);
-      Spanner *parent_sp = dynamic_cast<Spanner*> (me->original_);
-      Spanner *next_sp  = parent_sp->broken_intos_ [k+1];
-      Item *next_bound = next_sp->get_bound (RIGHT);
-
-      if (next_bound->break_status_dir ())
-	{
-	  programming_error ("no note heads for the line spanner on next line?"
-			     " Confused.");
-	  me->suicide();
-	  return SCM_EOL;
-	}
-            
-      Grob *commonx = bound[LEFT]->common_refpoint (bound[RIGHT], X_AXIS);
-      commonx = me->common_refpoint (commonx, X_AXIS);
-      
-      Grob *next_common_y = line_spanner_common_parent (next_bound);
-      Grob *this_common_y = line_spanner_common_parent (bound[LEFT]);
-
-      Grob *all_common_y = me->common_refpoint (this_common_y, Y_AXIS);
-      
-      Interval next_ext  = next_bound->extent (next_common_y, Y_AXIS);
-      Interval this_ext  = bound[LEFT]->extent (this_common_y, Y_AXIS);
-
-      Real yoff = this_common_y->relative_coordinate (all_common_y, Y_AXIS);
-      
-      Offset p1 (bound[LEFT]->extent (commonx, X_AXIS)[RIGHT],
-		 this_ext.center ()  + yoff); 
-      Offset p2 (bound[RIGHT]->extent (commonx, X_AXIS)[LEFT],
-		 next_ext.center () + yoff);
-      
-      Offset dz (p2 -p1);
-      Real len = dz.length ();
-
-      Offset dir  = dz *(1/ len);
-      dz = (dz.length () - 2*gap) *dir;
-      
-  
-      Molecule l (line_molecule (me, Offset(0, 0), dz));
-
-      l.translate (dir * gap +  p1
-		   - Offset (me->relative_coordinate (commonx, X_AXIS),
-			     me->relative_coordinate (all_common_y, Y_AXIS)));
-
-      return l.smobbed_copy (); 
-    }
-  else
-    {
-      Grob *common[] = { me, me };
-      for (int a = X_AXIS;  a < NO_AXES; a++)
-	{
-	  common[a] = me->common_refpoint (bound[RIGHT], Axis (a));
-	  common[a] = common[a]->common_refpoint (bound[LEFT], Axis (a));
-	}
-
-      // distance from center to start of line      
-      Real off = gap + ((bound[LEFT]->extent (bound[LEFT], X_AXIS).length ()*3)/4);
-
-      for (int a = X_AXIS; a < NO_AXES; a++)
-	{
-	  Axis ax = (Axis)a;
-	  dxy[ax] =
-	    + bound[RIGHT]->extent (common[X_AXIS], ax).center ()
-	    - bound[LEFT]->extent (common[X_AXIS], ax).center ();
-
-	  my_off[ax] =me->relative_coordinate (common[a], ax);
-	  his_off[ax] = bound[LEFT]->relative_coordinate (common[a], ax);
-	  
-	}
-
-      ofxy = dxy * (off/dxy.length ());
-      dxy -= 2*ofxy;
-  
-      Molecule line = line_molecule (me, Offset (0,0),dxy);
-
-      line.translate_axis (bound[LEFT]->extent (bound[LEFT], X_AXIS).length ()/2, X_AXIS); 
-      line.translate (ofxy - my_off + his_off);
-      return line.smobbed_copy ();
-    }
-}
-
-
-ADD_INTERFACE (Line_spanner, "line-spanner-interface",
-  "Generic line drawn between two objects, eg. for use with glissandi.\n"
-"gap is measured in staff-spaces.\n"
-"The property 'type is one of: line, dashed-line, trill, dotted-line or zigzag.\n"
-"\n",
-  "gap zigzag-width zigzag-length thickness");
-
-
diff --git a/lily/lookup.cc b/lily/lookup.cc
deleted file mode 100644
index 0d950735b0..0000000000
--- a/lily/lookup.cc
+++ /dev/null
@@ -1,740 +0,0 @@
-/*
-  lookup.cc -- implement simple Lookup methods.
-
-  source file of the GNU LilyPond music typesetter
-
-  (c) 1997--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-
-  Jan Nieuwenhuizen <janneke@gnu.org>
-*/
-#include <math.h>
-#include <ctype.h>
-
-#include "line-interface.hh"
-#include "warn.hh"
-#include "dimensions.hh"
-#include "bezier.hh"
-#include "string-convert.hh"
-#include "file-path.hh"
-#include "main.hh"
-#include "lily-guile.hh"
-#include "molecule.hh"
-#include "lookup.hh"
-#include "font-metric.hh"
-#include "interval.hh"
-
-Molecule
-Lookup::dot (Offset p, Real radius)
-{
-  SCM at = (scm_list_n (ly_symbol2scm ("dot"),
-			gh_double2scm (p[X_AXIS]),
-			gh_double2scm (p[Y_AXIS]),
-			gh_double2scm (radius),
-			SCM_UNDEFINED));
-  Box box;
-  box.add_point (p - Offset (radius, radius));
-  box.add_point (p + Offset (radius, radius));
-  return Molecule (box, at);
-}
-
-
-
-/*
- * Horizontal Slope:
- *
- *            /|   ^
- *           / |   |
- *          /  |   | height
- *         /   |   |
- *        /    |   v
- *       |    /
- *       |   /
- * (0,0) x  /slope=dy/dx
- *       | /
- *       |/
- *
- *       <----->
- *        width
- */
-Molecule 
-Lookup::beam (Real slope, Real width, Real thick, Real blot) 
-{
-  Real height = slope * width; 
-  Real min_y = (0 <? height) - thick/2;
-  Real max_y = (0 >? height) + thick/2;
-
-  Box b (Interval (0, width),
-	 Interval (min_y, max_y));
-  
-  SCM at = scm_list_n (ly_symbol2scm ("beam"),
-		    gh_double2scm (width),
-		    gh_double2scm (slope),
-		    gh_double2scm (thick),
-		    gh_double2scm (blot),
-		    SCM_UNDEFINED);
-  return Molecule (b, at);
-}
-
-Molecule
-Lookup::dashed_slur (Bezier b, Real thick, Real dash)
-{
-  SCM l = SCM_EOL;
-
-  for (int i= 4; i -- ;)
-    {
-      l = gh_cons (ly_offset2scm (b.control_[i]), l);
-    }
-
-  SCM at = (scm_list_n (ly_symbol2scm ("dashed-slur"),
-			       gh_double2scm (thick), 
-			       gh_double2scm (dash),
-			       ly_quote_scm (l),
-			       SCM_UNDEFINED));
-
-  Box box (Interval (0,0),Interval (0,0));
-  return   Molecule (box, at);
-}
-
-
-
-Molecule
-Lookup::horizontal_line (Interval w, Real th)
-{
-  SCM at = scm_list_n (ly_symbol2scm ("horizontal-line"),
-		       gh_double2scm (w[LEFT]), 
-		       gh_double2scm (w[RIGHT]),
-		       gh_double2scm (th),
-		       SCM_UNDEFINED);
-
-
-  Box box ;
-  box[X_AXIS] = w;
-  box[Y_AXIS] = Interval (-th/2,th/2);
-
-  return Molecule (box, at);
-}
-
-
-Molecule
-Lookup::blank (Box b) 
-{
-  return Molecule (b, scm_makfrom0str (""));
-}
-
-Molecule
-Lookup::filled_box (Box b) 
-{
-  SCM  at  = (scm_list_n (ly_symbol2scm ("filledbox"),
-		     gh_double2scm (-b[X_AXIS][LEFT]),
-		     gh_double2scm (b[X_AXIS][RIGHT]),		       
-		     gh_double2scm (-b[Y_AXIS][DOWN]),
-		     gh_double2scm (b[Y_AXIS][UP]),		       
-		     SCM_UNDEFINED));
-
-  return Molecule (b,at);
-}
-
-/*
- * round filled box:
- *
- *   __________________________________
- *  /     \  ^           /     \      ^
- * |         |blot              |     |
- * |       | |dia       |       |     |
- * |         |meter             |     |
- * |\ _ _ /  v           \ _ _ /|     |
- * |                            |     |
- * |                            |     | Box
- * |                    <------>|     | extent
- * |                      blot  |     | (Y_AXIS)
- * |                    diameter|     |
- * |                            |     |
- * |  _ _                  _ _  |     |
- * |/     \              /     \|     |
- * |                            |     |
- * |       |            |       |     |
- * |                            |     |
- * x\_____/______________\_____/|_____v
- * |(0,0)                       |
- * |                            |
- * |                            |
- * |<-------------------------->|
- *       Box extent(X_AXIS)
- */
-Molecule
-Lookup::round_filled_box (Box b, Real blotdiameter)
-{
-  if (b.x ().length () < blotdiameter)
-    {
-      programming_error (_f ("round filled box horizontal extent smaller than blot; decreasing blot"));
-      blotdiameter = b.x ().length ();
-    }
-  if (b.y ().length () < blotdiameter)
-    {
-      programming_error (_f ("round filled box vertical extent smaller than blot; decreasing blot"));
-      blotdiameter = b.y ().length ();
-    }
-
-  SCM at = (scm_list_n (ly_symbol2scm ("round-filled-box"),
-			gh_double2scm (-b[X_AXIS][LEFT]),
-			gh_double2scm (b[X_AXIS][RIGHT]),
-			gh_double2scm (-b[Y_AXIS][DOWN]),
-			gh_double2scm (b[Y_AXIS][UP]),
-			gh_double2scm (blotdiameter),
-			SCM_UNDEFINED));
-
-  return Molecule (b,at);
-}
-
-	  
-
-/*
- * Create Molecule that represents a filled polygon with round edges.
- *
- * LIMITATIONS:
- *
- * (a) Only outer (convex) edges are rounded.
- *
- * (b) This algorithm works as expected only for polygons whose edges
- * do not intersect.  For example, the polygon ((0, 0), (q, 0), (0,
- * q), (q, q)) has an intersection at point (q/2, q/2) and therefore
- * will give a strange result.  Even non-adjacent edges that just
- * touch each other will in general not work as expected for non-null
- * blotdiameter.
- *
- * (c) Given a polygon ((x0, y0), (x1, y1), ... , (x(n-1), y(n-1))),
- * if there is a natural number k such that blotdiameter is greater
- * than the maximum of { | (x(k mod n), y(k mod n)) - (x((k+1) mod n),
- * y((k+1) mod n)) |, | (x(k mod n), y(k mod n)) - (x((k+2) mod n),
- * y((k+2) mod n)) |, | (x((k+1) mod n), y((k+1) mod n)) - (x((k+2)
- * mod n), y((k+2) mod n)) | }, then the outline of the rounded
- * polygon will exceed the outline of the core polygon.  In other
- * words: Do not draw rounded polygons that have a leg smaller or
- * thinner than blotdiameter (or set blotdiameter to a sufficiently
- * small value -- maybe even 0.0)!
- *
- * NOTE: Limitations (b) and (c) arise from the fact that round edges
- * are made by moulding sharp edges to round ones rather than adding
- * to a core filled polygon.  For details of these two different
- * approaches, see the thread upon the ledger lines patch that started
- * on March 25, 2002 on the devel mailing list.  The below version of
- * round_filled_polygon() sticks to the moulding model, which the
- * majority of the list participants finally voted for.  This,
- * however, results in the above limitations and a much increased
- * complexity of the algorithm, since it has to compute a shrinked
- * polygon -- which is not trivial define precisely and unambigously.
- * With the other approach, one simply could move a circle of size
- * blotdiameter along all edges of the polygon (which is what the
- * postscript routine in the backend effectively does, but on the
- * shrinked polygon). --jr
- */
-Molecule
-Lookup::round_filled_polygon (Array<Offset> points, Real blotdiameter)
-{
-  /* TODO: Maybe print a warning if one of the above limitations
-     applies to the given polygon.  However, this is quite complicated
-     to check. */
-
-  /* remove consecutive duplicate points */
-  const Real epsilon = 0.01;
-  for (int i = 0; i < points.size ();)
-    {
-      int next_i = (i + 1) % points.size ();
-      Real d = (points[i] - points[next_i]).length ();
-      if (d < epsilon)
-	points.del (next_i);
-      else
-	i++;
-    }
-
-  /* special cases: degenerated polygons */
-  if (points.size () == 0)
-    return Molecule ();
-  if (points.size () == 1)
-    return dot (points[0], 0.5 * blotdiameter);
-  if (points.size () == 2)
-    return Line_interface::make_line (blotdiameter, points[0], points[1]);
-
-  /* shrink polygon in size by 0.5 * blotdiameter */
-  Array<Offset> shrinked_points;
-  shrinked_points.set_size (points.size ());
-  bool ccw = 1; // true, if three adjacent points are counterclockwise ordered
-  for (int i = 0; i < points.size (); i++)
-    {
-      int i0 = i;
-      int i1 = (i + 1) % points.size ();
-      int i2 = (i + 2) % points.size ();
-      Offset p0 = points[i0];
-      Offset p1 = points[i1];
-      Offset p2 = points[i2];
-      Offset p10 = p0 - p1;
-      Offset p12 = p2 - p1;
-      if (p10.length () != 0.0)
-	{ // recompute ccw
-	  Real phi = p10.arg ();
-	  // rotate (p2 - p0) by (-phi)
-	  Offset q = complex_multiply (p2 - p0, complex_exp (Offset (1.0, -phi)));
-
-	  if (q[Y_AXIS] > 0)
-	    ccw = 1;
-	  else if (q[Y_AXIS] < 0)
-	    ccw = 0;
-	  else {} // keep ccw unchanged
-	}
-      else {} // keep ccw unchanged
-      Offset p10n = (1.0 / p10.length ()) * p10; // normalize length to 1.0
-      Offset p12n = (1.0 / p12.length ()) * p12;
-      Offset p13n = 0.5 * (p10n + p12n);
-      Offset p14n = 0.5 * (p10n - p12n);
-      Offset p13;
-      Real d = p13n.length () * p14n.length (); // distance p3n to line(p1..p0)
-      if (d < epsilon)
-	// special case: p0, p1, p2 are on a single line => build
-	// vector orthogonal to (p2-p0) of length 0.5 blotdiameter
-	{
-	  p13[X_AXIS] = p10[Y_AXIS];
-	  p13[Y_AXIS] = -p10[X_AXIS];
-	  p13 = (0.5 * blotdiameter / p13.length ()) * p13;
-	}
-      else
-	p13 = (0.5 * blotdiameter / d) * p13n;
-      shrinked_points[i1] = p1 + ((ccw) ? p13 : -p13);
-    }
-
-  /* build scm expression and bounding box */
-  SCM shrinked_points_scm = SCM_EOL;
-  Box box;
-  for (int i = 0; i < shrinked_points.size (); i++)
-    {
-      SCM x = gh_double2scm (shrinked_points[i][X_AXIS]);
-      SCM y = gh_double2scm (shrinked_points[i][Y_AXIS]);
-      shrinked_points_scm = gh_cons (x, gh_cons (y, shrinked_points_scm));
-      box.add_point (points[i]);
-    }
-  SCM polygon_scm = scm_list_n (ly_symbol2scm ("polygon"),
-				ly_quote_scm (shrinked_points_scm),
-				gh_double2scm (blotdiameter),
-				SCM_UNDEFINED);
-
-  Molecule polygon = Molecule (box, polygon_scm);
-  shrinked_points.clear ();
-  return polygon;
-}
-
-
-/*
-  TODO: deprecate?
- */
-Molecule
-Lookup::frame (Box b, Real thick, Real blot)
-{
-  Molecule m;
-  Direction d = LEFT;
-  for (Axis a = X_AXIS; a < NO_AXES; a = Axis (a + 1))
-    {
-      Axis o = Axis ((a+1)%NO_AXES);
-      do
-	{
-	  Box edges;
-	  edges[a] = b[a][d] + 0.5 * thick * Interval (-1, 1);
-	  edges[o][DOWN] = b[o][DOWN] - thick/2;
-	  edges[o][UP] = b[o][UP] + thick/2;	  
-	  
-	  m.add_molecule (round_filled_box (edges, blot));
-	}
-      while (flip (&d) != LEFT);
-    }
-  return m;
-}
-
-/*
-  Make a smooth curve along the points 
- */
-Molecule
-Lookup::slur (Bezier curve, Real curvethick, Real linethick) 
-{
-  Real alpha = (curve.control_[3] - curve.control_[0]).arg ();
-  Bezier back = curve;
-  Offset perp = curvethick * complex_exp (Offset (0, alpha + M_PI/2)) * 0.5;
-  back.reverse ();
-  back.control_[1] += perp;
-  back.control_[2] += perp;
-
-  curve.control_[1] -= perp;
-  curve.control_[2] -= perp;
-  
-  SCM scontrols[8];
-
-  for (int i=4; i--;)
-    scontrols[ i ] = ly_offset2scm (back.control_[i]);
-  for (int i=4 ; i--;)
-    scontrols[i+4] = ly_offset2scm (curve.control_[i]);
-
-  /*
-    Need the weird order b.o. the way PS want its arguments  
-   */
-  int indices[]= {5, 6, 7, 4, 1, 2, 3, 0};
-  SCM list = SCM_EOL;
-  for (int i= 8; i--;)
-    {
-      list = gh_cons (scontrols[indices[i]], list);
-    }
-  
-  
-  SCM at = (scm_list_n (ly_symbol2scm ("bezier-sandwich"),
-		     ly_quote_scm (list),
-		     gh_double2scm (linethick),
-		     SCM_UNDEFINED));
-  Box b(curve.extent (X_AXIS),
-	curve.extent (Y_AXIS));
-
-  b[X_AXIS].unite (back.extent (X_AXIS));
-  b[Y_AXIS].unite (back.extent (Y_AXIS));
-
-  return Molecule (b, at);
-}
-
-/*
- * Bezier Sandwich:
- *
- *                               .|
- *                        .       |
- *              top .             |
- *              . curve           |
- *          .                     |
- *       .                        |
- *     .                          |
- *    |                           |
- *    |                          .|
- *    |                     .
- *    |         bottom .
- *    |            . curve
- *    |         .
- *    |      .
- *    |   .
- *    | .
- *    |.
- *    |
- *
- */
-Molecule
-Lookup::bezier_sandwich (Bezier top_curve, Bezier bottom_curve)
-{
-  /*
-    Need the weird order b.o. the way PS want its arguments  
-   */
-  SCM list = SCM_EOL;
-  list = gh_cons (ly_offset2scm (bottom_curve.control_[3]), list);
-  list = gh_cons (ly_offset2scm (bottom_curve.control_[0]), list);
-  list = gh_cons (ly_offset2scm (bottom_curve.control_[1]), list);
-  list = gh_cons (ly_offset2scm (bottom_curve.control_[2]), list);
-  list = gh_cons (ly_offset2scm (top_curve.control_[0]), list);
-  list = gh_cons (ly_offset2scm (top_curve.control_[3]), list);
-  list = gh_cons (ly_offset2scm (top_curve.control_[2]), list);
-  list = gh_cons (ly_offset2scm (top_curve.control_[1]), list);
-
-  SCM horizontal_bend = scm_list_n (ly_symbol2scm ("bezier-sandwich"),
-				    ly_quote_scm (list),
-				    gh_double2scm (0.0),
-				    SCM_UNDEFINED);
-
-  Interval x_extent = top_curve.extent (X_AXIS);
-  x_extent.unite (bottom_curve.extent (X_AXIS));
-  Interval y_extent = top_curve.extent (Y_AXIS);
-  y_extent.unite (bottom_curve.extent (Y_AXIS));
-  Box b (x_extent, y_extent);
-
-  return Molecule (b, horizontal_bend);
-}
-
-/*
-  TODO: junk me.
- */
-Molecule
-Lookup::accordion (SCM s, Real staff_space, Font_metric *fm) 
-{
-  Molecule m;
-  String sym = ly_scm2string (ly_car (s));
-  String reg = ly_scm2string (ly_car (ly_cdr (s)));
-
-  if (sym == "Discant")
-    {
-      Molecule r = fm->find_by_name ("accordion-accDiscant");
-      m.add_molecule (r);
-      if (reg.left_string (1) == "F")
-	{
-	  Molecule d = fm->find_by_name ("accordion-accDot");
-	  d.translate_axis (staff_space * 2.5 PT, Y_AXIS);
-	  m.add_molecule (d);
-	  reg = reg.right_string (reg.length ()-1);
-	}
-      int eflag = 0x00;
-      if (reg.left_string (3) == "EEE")
-	{
-	  eflag = 0x07;
-	  reg = reg.right_string (reg.length ()-3);
-	}
-      else if (reg.left_string (2) == "EE")
-	{
-	  eflag = 0x05;
-	  reg = reg.right_string (reg.length ()-2);
-	}
-      else if (reg.left_string (2) == "Eh")
-	{
-	  eflag = 0x04;
-	  reg = reg.right_string (reg.length ()-2);
-	}
-      else if (reg.left_string (1) == "E")
-	{
-	  eflag = 0x02;
-	  reg = reg.right_string (reg.length ()-1);
-	}
-      if (eflag & 0x02)
-	{
-	  Molecule d = fm->find_by_name ("accordion-accDot");
-	  d.translate_axis (staff_space * 1.5 PT, Y_AXIS);
-	  m.add_molecule (d);
-	}
-      if (eflag & 0x04)
-	{
-	  Molecule d = fm->find_by_name ("accordion-accDot");
-	  d.translate_axis (staff_space * 1.5 PT, Y_AXIS);
-	  d.translate_axis (0.8 * staff_space PT, X_AXIS);
-	  m.add_molecule (d);
-	}
-      if (eflag & 0x01)
-	{
-	  Molecule d = fm->find_by_name ("accordion-accDot");
-	  d.translate_axis (staff_space * 1.5 PT, Y_AXIS);
-	  d.translate_axis (-0.8 * staff_space PT, X_AXIS);
-	  m.add_molecule (d);
-	}
-      if (reg.left_string (2) == "SS")
-	{
-	  Molecule d = fm->find_by_name ("accordion-accDot");
-	  d.translate_axis (0.5 * staff_space PT, Y_AXIS);
-	  d.translate_axis (0.4 * staff_space PT, X_AXIS);
-	  m.add_molecule (d);
-	  d.translate_axis (-0.8 * staff_space PT, X_AXIS);
-	  m.add_molecule (d);
-	  reg = reg.right_string (reg.length ()-2);
-	}
-      if (reg.left_string (1) == "S")
-	{
-	  Molecule d = fm->find_by_name ("accordion-accDot");
-	  d.translate_axis (0.5 * staff_space PT, Y_AXIS);
-	  m.add_molecule (d);
-	  reg = reg.right_string (reg.length ()-1);
-	}
-    }
-  else if (sym == "Freebase")
-    {
-      Molecule r = fm->find_by_name ("accordion-accFreebase");
-      m.add_molecule (r);
-      if (reg.left_string (1) == "F")
-	{
-	  Molecule d = fm->find_by_name ("accordion-accDot");
-	  d.translate_axis (staff_space * 1.5 PT, Y_AXIS);
-	  m.add_molecule (d);
-	  reg = reg.right_string (reg.length ()-1);
-	}
-      if (reg == "E")
-	{
-	  Molecule d = fm->find_by_name ("accordion-accDot");
-	  d.translate_axis (staff_space * 0.5 PT, Y_AXIS);
-	  m.add_molecule (d);
-	}
-    }
-  else if (sym == "Bayanbase")
-    {
-      Molecule r = fm->find_by_name ("accordion-accBayanbase");
-      m.add_molecule (r);
-      if (reg.left_string (1) == "T")
-	{
-	  Molecule d = fm->find_by_name ("accordion-accDot");
-	  d.translate_axis (staff_space * 2.5 PT, Y_AXIS);
-	  m.add_molecule (d);
-	  reg = reg.right_string (reg.length ()-1);
-	}
-      /* include 4' reed just for completeness. You don't want to use this. */
-      if (reg.left_string (1) == "F")
-	{
-	  Molecule d = fm->find_by_name ("accordion-accDot");
-	  d.translate_axis (staff_space * 1.5 PT, Y_AXIS);
-	  m.add_molecule (d);
-	  reg = reg.right_string (reg.length ()-1);
-	}
-      if (reg.left_string (2) == "EE")
-	{
-	  Molecule d = fm->find_by_name ("accordion-accDot");
-	  d.translate_axis (staff_space * 0.5 PT, Y_AXIS);
-	  d.translate_axis (0.4 * staff_space PT, X_AXIS);
-	  m.add_molecule (d);
-	  d.translate_axis (-0.8 * staff_space PT, X_AXIS);
-	  m.add_molecule (d);
-	  reg = reg.right_string (reg.length ()-2);
-	}
-      if (reg.left_string (1) == "E")
-	{
-	  Molecule d = fm->find_by_name ("accordion-accDot");
-	  d.translate_axis (staff_space * 0.5 PT, Y_AXIS);
-	  m.add_molecule (d);
-	  reg = reg.right_string (reg.length ()-1);
-	}
-    }
-  else if (sym == "Stdbase")
-    {
-      Molecule r = fm->find_by_name ("accordion-accStdbase");
-      m.add_molecule (r);
-      if (reg.left_string (1) == "T")
-	{
-	  Molecule d = fm->find_by_name ("accordion-accDot");
-	  d.translate_axis (staff_space * 3.5 PT, Y_AXIS);
-	  m.add_molecule (d);
-	  reg = reg.right_string (reg.length ()-1);
-	}
-      if (reg.left_string (1) == "F")
-	{
-	  Molecule d = fm->find_by_name ("accordion-accDot");
-	  d.translate_axis (staff_space * 2.5 PT, Y_AXIS);
-	  m.add_molecule (d);
-	  reg = reg.right_string (reg.length ()-1);
-	}
-      if (reg.left_string (1) == "M")
-	{
-	  Molecule d = fm->find_by_name ("accordion-accDot");
-	  d.translate_axis (staff_space * 2 PT, Y_AXIS);
-	  d.translate_axis (staff_space PT, X_AXIS);
-	  m.add_molecule (d);
-	  reg = reg.right_string (reg.length ()-1);
-	}
-      if (reg.left_string (1) == "E")
-	{
-	  Molecule d = fm->find_by_name ("accordion-accDot");
-	  d.translate_axis (staff_space * 1.5 PT, Y_AXIS);
-	  m.add_molecule (d);
-	  reg = reg.right_string (reg.length ()-1);
-	}
-      if (reg.left_string (1) == "S")
-	{
-	  Molecule d = fm->find_by_name ("accordion-accDot");
-	  d.translate_axis (staff_space * 0.5 PT, Y_AXIS);
-	  m.add_molecule (d);
-	  reg = reg.right_string (reg.length ()-1);
-	}
-    }
-  /* ugh maybe try to use regular font for S.B. and B.B and only use one font
-     for the rectangle */
-  else if (sym == "SB")
-    {
-      Molecule r = fm->find_by_name ("accordion-accSB");
-      m.add_molecule (r);
-    }
-  else if (sym == "BB")
-    {
-      Molecule r = fm->find_by_name ("accordion-accBB");
-      m.add_molecule (r);
-    }
-  else if (sym == "OldEE")
-    {
-      Molecule r = fm->find_by_name ("accordion-accOldEE");
-      m.add_molecule (r);
-    }
-  else if (sym == "OldEES")
-    {
-      Molecule r = fm->find_by_name ("accordion-accOldEES");
-      m.add_molecule (r);
-    }
-  return m;  
-}
-
-Molecule
-Lookup::repeat_slash (Real w, Real s, Real t)
-{
-  SCM wid = gh_double2scm (w);
-  SCM sl = gh_double2scm (s);
-  SCM thick = gh_double2scm (t);
-  SCM slashnodot = scm_list_n (ly_symbol2scm ("repeat-slash"),
-			    wid, sl, thick, SCM_UNDEFINED);
-
-  Box b (Interval (0, w + sqrt (sqr(t/s) + sqr (t))),
-	 Interval (0, w * s));
-
-  return Molecule (b, slashnodot); //  http://slashnodot.org
-}
-
-
-Molecule
-Lookup::bracket (Axis a, Interval iv, Real thick, Real protude, Real blot)
-{
-  Box b;
-  Axis other = Axis((a+1)%2);
-  b[a] = iv;
-  b[other] = Interval(-1, 1) * thick * 0.5;
-  
-  Molecule m =  round_filled_box (b, blot);
-
-  b[a] = Interval (iv[UP] - thick, iv[UP]);
-  Interval oi = Interval (-thick/2, thick/2 + fabs (protude)) ;
-  oi *=  sign (protude);
-  b[other] = oi;
-  m.add_molecule (round_filled_box (b, blot));
-  b[a] = Interval (iv[DOWN], iv[DOWN]  +thick);
-  m.add_molecule (round_filled_box (b,blot));
-
-  return m;
-}
-
-Molecule
-Lookup::triangle (Interval iv, Real thick, Real protude)
-{
-  Box b ;
-  b[X_AXIS] = iv;
-  b[Y_AXIS] = Interval (0 <? protude , 0 >? protude);
-
-  SCM s = scm_list_n (ly_symbol2scm ("symmetric-x-triangle"),
-		      gh_double2scm (thick),
-		      gh_double2scm (iv.length()), 
-		      gh_double2scm (protude), SCM_UNDEFINED);
-
-  return Molecule (b, s);
-}
-
-
-/*
-  TODO: use rounded boxes.
- */
-LY_DEFINE(ly_bracket ,"ly:bracket",
-	  4, 0, 0,
-	  (SCM a, SCM iv, SCM t, SCM p),
-	  "Make a bracket in direction @var{a}. The extent of the bracket is " 
-	  "given by @var{iv}. The wings protude by an amount of @var{p}, which "
-	  "may be negative. The thickness is given by @var{t}.")
-{
-  SCM_ASSERT_TYPE(is_axis (a), a, SCM_ARG1, __FUNCTION__, "axis") ;
-  SCM_ASSERT_TYPE(is_number_pair (iv), iv, SCM_ARG2, __FUNCTION__, "number pair") ;
-  SCM_ASSERT_TYPE(gh_number_p (t), a, SCM_ARG3, __FUNCTION__, "number") ;
-  SCM_ASSERT_TYPE(gh_number_p (p), a, SCM_ARG4, __FUNCTION__, "number") ;
-
-
-  return Lookup::bracket ((Axis)gh_scm2int (a), ly_scm2interval (iv),
-			  gh_scm2double (t),
-			  gh_scm2double (p),
-			  gh_scm2double (t)).smobbed_copy ();
-}
-
-
-
-LY_DEFINE(ly_filled_box ,"ly:round-filled-box",
-	  3, 0, 0,
-	  (SCM xext, SCM yext, SCM blot),
-	  "Make a filled-box of dimensions @var{xext}, @var{yext} and roundness @var{blot}.")
-{
-  SCM_ASSERT_TYPE(is_number_pair (xext), xext, SCM_ARG1, __FUNCTION__, "number pair") ;
-  SCM_ASSERT_TYPE(is_number_pair (yext), yext, SCM_ARG2, __FUNCTION__, "number pair") ;
-  SCM_ASSERT_TYPE(gh_number_p (blot), blot, SCM_ARG3, __FUNCTION__, "number") ;
-
-  return Lookup::round_filled_box (Box (ly_scm2interval (xext), ly_scm2interval (yext)),
-				   gh_scm2double (blot)).smobbed_copy ();
-}
-
diff --git a/lily/ly-module.cc b/lily/ly-module.cc
deleted file mode 100644
index 008c4224b1..0000000000
--- a/lily/ly-module.cc
+++ /dev/null
@@ -1,140 +0,0 @@
-/*   
-ly-module.cc --  implement guile module stuff.
-
-source file of the GNU LilyPond music typesetter
-
-(c) 2002--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-
- */
-
-#include "string.hh"
-#include "lily-guile.hh"
-#include "ly-modules.hh"
-#include "protected-scm.hh"
-
-#define FUNC_NAME __FUNCTION__
-
-static int module_count;
-
-void
-ly_init_anonymous_module (void * data)
-{
-  scm_c_use_module ("lily");
-}
-
-Protected_scm anon_modules;
-
-SCM
-ly_make_anonymous_module ()
-{
-  String s = "*anonymous-ly-" + to_string (module_count++) +  "*";
-  SCM mod = scm_c_define_module (s.to_str0(), ly_init_anonymous_module, 0);
-  anon_modules = scm_cons (mod, anon_modules);
-  return mod;
-}
-
-void
-ly_clear_anonymous_modules ()
-{
-  SCM s = anon_modules;
-  anon_modules = SCM_EOL;
-  
-  for (; gh_pair_p (s) ; s = gh_cdr (s))
-    {
-      SCM tab= scm_c_make_hash_table (2);
-      /*
-	UGH.
-      */
-      
-      SCM_STRUCT_DATA(gh_car(s))[scm_module_index_obarray] = (long unsigned int) tab;
-    }
-}
-
-#define FUNC_NAME __FUNCTION__
-
-SCM
-define_one_var (void * closure, SCM key, SCM val, SCM result)
-{
-  SCM dest =  (SCM) closure;
-  scm_module_define (dest, key, scm_variable_ref (val));
-  return SCM_EOL;
-}
-
-/*
-  Ugh signature of scm_internal_hash_fold () is inaccurate.
- */
-typedef SCM (*Hash_cl_func)();
-
-void
-ly_copy_module_variables (SCM dest, SCM src)
-{
-  SCM_VALIDATE_MODULE (1, src);
-
-  SCM obarr= SCM_MODULE_OBARRAY(src);
-  scm_internal_hash_fold ((Hash_cl_func) &define_one_var, (void*) dest, SCM_EOL, obarr);
-}
-
-SCM
-accumulate_symbol (void * closure, SCM key, SCM val, SCM result)
-{
-  return scm_cons (key, result);
-}
-
-SCM
-ly_module_symbols (SCM mod)
-{
-  SCM_VALIDATE_MODULE (1, mod);
-  
-  SCM obarr= SCM_MODULE_OBARRAY(mod);
-  return scm_internal_hash_fold ((Hash_cl_func) &accumulate_symbol, NULL, SCM_EOL, obarr); 
-}
-
-SCM
-entry_to_alist (void * closure, SCM key, SCM val, SCM result)
-{
-  return scm_cons (scm_cons (key, scm_variable_ref (val)), result);
-}
-
-SCM
-ly_module_to_alist (SCM mod)
-{
-  SCM_VALIDATE_MODULE (1, mod);
-  
-  
-  SCM obarr= SCM_MODULE_OBARRAY(mod);
-
-  return scm_internal_hash_fold ((Hash_cl_func) &entry_to_alist, NULL, SCM_EOL, obarr); 
-}
-
-/*
-  Lookup SYM, but don't give error when it is not defined.
- */
-SCM
-ly_module_lookup (SCM module, SCM sym)
-{
-#define FUNC_NAME __FUNCTION__
-  SCM_VALIDATE_MODULE (1, module);
-
-  return scm_sym2var (sym, scm_module_lookup_closure (module), SCM_BOOL_F);
-#undef FUNC_NAME
-}
-
-SCM export_function;
-
-void
-ly_export (SCM module, SCM namelist)
-{
-  if (!export_function)
-    {
-      export_function = scm_permanent_object (scm_c_lookup ("module-export!"));
-    }
-  
-  scm_call_2 (SCM_VARIABLE_REF (export_function),
-	      module, namelist);
-}
-
-void
-ly_reexport_module (SCM mod)
-{
-  ly_export (mod, ly_module_symbols (mod));
-}
diff --git a/lily/lyric-combine-music-iterator.cc b/lily/lyric-combine-music-iterator.cc
deleted file mode 100644
index 938a7a9c2d..0000000000
--- a/lily/lyric-combine-music-iterator.cc
+++ /dev/null
@@ -1,196 +0,0 @@
-/*   
-  lyric-combine-music-iterator.cc --  implement Lyric_combine_music_iterator
-  
-  source file of the GNU LilyPond music typesetter
-  
-  (c) 1999--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-  
- */
-
-#include "translator-group.hh"
-#include "lyric-combine-music.hh"
-#include "event.hh"
-#include "note-head.hh"
-#include "grob.hh"
-#include "music-iterator.hh"
-
-class Lyric_combine_music_iterator : public Music_iterator
-{
-public:
-  Lyric_combine_music_iterator ();
-  Lyric_combine_music_iterator (Lyric_combine_music_iterator const&src);
-  DECLARE_SCHEME_CALLBACK(constructor, ());
-protected:
-  virtual void construct_children ();
-  virtual Moment pending_moment () const;
-  virtual void do_quit(); 
-  virtual void process (Moment);
-  virtual Music_iterator *try_music_in_children (Music *) const;
-
-  virtual bool ok () const;
-  virtual void derived_mark () const;
-  virtual void derived_substitute (Translator_group*,Translator_group*) ;
-private:
-  bool get_busy_status ()const ;
-  bool melisma_busy (); 
-
-  Music_iterator * music_iter_;
-  Music_iterator * lyric_iter_;
-};
-
-
-bool
-melisma_busy (Translator* tr)
-{
-  SCM melisma_properties = tr->get_property ("melismaBusyProperties");
-  bool busy = false;
-
-  for (; gh_pair_p (melisma_properties);
-       melisma_properties = gh_cdr (melisma_properties))
-    busy = busy || to_boolean (tr->internal_get_property (gh_car (melisma_properties)));
-
-  return busy;
-}
-
-
-
-/*
-  Ugh, why static?
- */
-Music *busy_req;
-Music *melisma_playing_req;
-
-Lyric_combine_music_iterator::Lyric_combine_music_iterator ()
-{
-  music_iter_ =0;
-  lyric_iter_ =0;
-
-  if (!busy_req)
-    {
-      busy_req
-	= make_music_by_name (ly_symbol2scm ("BusyPlayingEvent"));
-      melisma_playing_req
-	= make_music_by_name (ly_symbol2scm ("MelismaPlayingEvent"));
-    }
-}
-
-Moment
-Lyric_combine_music_iterator::pending_moment () const
-{
-  Moment musnext = music_iter_->pending_moment ();
-  return musnext;
-}
-
-bool
-Lyric_combine_music_iterator::ok () const
-{
-  return music_iter_->ok ();
-}
-
-void
-Lyric_combine_music_iterator::derived_mark()const
-{
-  if (music_iter_)
-    scm_gc_mark (music_iter_->self_scm());
-  if (lyric_iter_)
-    scm_gc_mark (lyric_iter_->self_scm());
-}
-
-void
-Lyric_combine_music_iterator::derived_substitute (Translator_group*f,Translator_group* t)
-{
-  if (music_iter_)
-    music_iter_->substitute_outlet (f,t);
-  if (lyric_iter_)
-    lyric_iter_->substitute_outlet (f,t);
-}
-
-void
-Lyric_combine_music_iterator::construct_children ()
-{
-  Lyric_combine_music const * m = dynamic_cast<Lyric_combine_music const*> (get_music ());
-  
-  music_iter_ = unsmob_iterator (get_iterator (m->get_music ()));
-  lyric_iter_ = unsmob_iterator (get_iterator (m->get_lyrics ()));
-}
-
-bool
-Lyric_combine_music_iterator::get_busy_status () const
-{
-  /*
-    We have to use both the event and the busyGrobs queue.  The
-    busyGrobs queue doesn't contain any notes that have started this
-    instant.  */
-  if (try_music (busy_req))
-    return true;
-  
-  Translator_group * tr = music_iter_->get_outlet ();
-
-  SCM grobs = tr->get_property ("busyGrobs");
-  Moment now = tr->now_mom();
-  for (; gh_pair_p (grobs); grobs = gh_cdr (grobs))
-    {
-      SCM grob = gh_cdar (grobs);
-      Moment end  =*unsmob_moment (gh_caar (grobs));
-
-      
-      /*
-	This is slightly ugh: we are now confunding the frontend
-	(iterators) and the backend (note heads) */
-      if (end > now
-	  && Note_head::has_interface (unsmob_grob (grob)))
-	return true;
-    }
-
-  return false;
-}
-
-
-bool
-Lyric_combine_music_iterator::melisma_busy ()
-{
-  /*
-    We can not read the property, since music_iter_->get_outlet () might
-    not be the context that sets the melisma properties, but rather a
-    parent context.
-   */
-  return music_iter_->try_music (melisma_playing_req);
-}
-
-void
-Lyric_combine_music_iterator::process (Moment m)
-{
-  Moment my_next = music_iter_->pending_moment ();
-  if (my_next > m)
-    return;
-  
-  music_iter_->process (m);
-
-  if (get_busy_status () && !melisma_busy () && lyric_iter_->ok ())
-    {
-      Moment m= lyric_iter_->pending_moment ();
-      lyric_iter_->process (m);
-    }
-}
-
-void
-Lyric_combine_music_iterator::do_quit ()
-{
-  if (music_iter_)
-    music_iter_->quit();
-  if (lyric_iter_)
-    lyric_iter_->quit();
-}
-
-Music_iterator*
-Lyric_combine_music_iterator::try_music_in_children (Music *m) const
-{
-  Music_iterator * i =  music_iter_->try_music (m);
-  if (i)
-    return i;
-  else
-    return lyric_iter_->try_music (m);
-}
-
-
-IMPLEMENT_CTOR_CALLBACK (Lyric_combine_music_iterator);
diff --git a/lily/lyric-combine-music.cc b/lily/lyric-combine-music.cc
deleted file mode 100644
index 9b779e5dc4..0000000000
--- a/lily/lyric-combine-music.cc
+++ /dev/null
@@ -1,47 +0,0 @@
-/*   
-  lyric-combine-music.cc --  implement Lyric_combine_music
-  
-  source file of the GNU LilyPond music typesetter
-  
-  (c) 1999--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-  
- */
-
-#include "lyric-combine-music.hh"
-#include "pitch.hh"
-
-Lyric_combine_music::Lyric_combine_music ()
-  : Music ()
-{
-}
-
-Moment
-Lyric_combine_music::get_length () const
-{
-  return get_music ()->get_length ();
-}
-
-Music*
-Lyric_combine_music::get_music () const
-{
-  SCM l = get_mus_property ("elements");
-  if (!gh_pair_p (l))
-    return 0;
-  return unsmob_music (gh_car (l));
-}
-
-
-Music*
-Lyric_combine_music::get_lyrics () const
-{
-  SCM l = get_mus_property ("elements");
-  if (!gh_pair_p (l))
-    return 0;
-  l = gh_cdr (l);
-  if (!gh_pair_p (l))
-    return 0;
-  return unsmob_music (gh_car (l));
-}
-
-
-ADD_MUSIC (Lyric_combine_music);
diff --git a/lily/lyric-engraver.cc b/lily/lyric-engraver.cc
deleted file mode 100644
index 23b98b095a..0000000000
--- a/lily/lyric-engraver.cc
+++ /dev/null
@@ -1,87 +0,0 @@
-/*
-  lyric-engraver.cc -- implement Lyric_engraver
-
-  source file of the GNU LilyPond music typesetter
-
-  (c) 1997--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-  Jan Nieuwenhuizen <janneke@gnu.org>
-*/
-
-#include "engraver.hh"
-#include "event.hh"
-#include "item.hh"
-#include "paper-def.hh"
-#include "font-metric.hh"
-#include "side-position-interface.hh"
-
-/**
-   Generate texts for lyric syllables.  We only do one lyric at a time.  
-   Multiple copies of this engraver should be used to do multiple voices.
- */
-class Lyric_engraver : public Engraver 
-{
-protected:
-  virtual void stop_translation_timestep ();
-  virtual bool try_music (Music *);
-  virtual void process_music ();
-  
-public:
-  TRANSLATOR_DECLARATIONS(Lyric_engraver);
-private:
-  Music * req_;
-  Item* text_;
-};
-
-
-
-
-Lyric_engraver::Lyric_engraver ()
-{
-  text_ =0;
-  req_ =0;
-}
-
-bool
-Lyric_engraver::try_music (Music*r)
-{
-  if (r->is_mus_type ("lyric-event"))
-    {
-      if (req_)
-	return false;
-      req_ =r;
-      return true;
-    }
-  return false;
-}
-
-void
-Lyric_engraver::process_music ()
-{
-  if (req_)
-    {
-      text_=  make_item ("LyricText");
-      
-      text_->set_grob_property ("text", req_->get_mus_property ("text"));
-      announce_grob (text_, req_->self_scm());
-    }
-}
-
-void
-Lyric_engraver::stop_translation_timestep ()
-{
-  if (text_)
-    {
-      typeset_grob (text_);
-      text_ =0;
-    }
-  req_ =0;
-}
-
-
-ENTER_DESCRIPTION(Lyric_engraver,
-/* descr */       "",
-/* creats*/       "",
-/* accepts */     "lyric-event",
-/* acks  */      "",
-/* reads */       "",
-/* write */       "");
diff --git a/lily/lyric-extender.cc b/lily/lyric-extender.cc
deleted file mode 100644
index 40ee4b391c..0000000000
--- a/lily/lyric-extender.cc
+++ /dev/null
@@ -1,119 +0,0 @@
-/*
-  lyric-extender.cc -- implement Lyric_extender
-  source file of the GNU LilyPond music typesetter
-
-  (c) 1998--2004 Jan Nieuwenhuizen <janneke@gnu.org>
-  Han-Wen Nienhuys
-*/
-
-#include <math.h>
-
-#include "box.hh"
-#include "warn.hh"
-#include "lookup.hh"
-#include "molecule.hh"
-#include "paper-column.hh"
-#include "paper-def.hh"
-#include "lyric-extender.hh"
-#include "note-head.hh"
-#include "group-interface.hh"
-
-bool
-Lyric_extender::is_visible (Grob *gr)
-{
-  Spanner*me = dynamic_cast<Spanner*> (gr);
-
-  SCM heads = me->get_grob_property ("heads");
-  int l = scm_ilength (heads);
-  if (l == 0)
-    return false;
-  
-  return true;
-}
-
-MAKE_SCHEME_CALLBACK (Lyric_extender,print,1)
-SCM 
-Lyric_extender::print (SCM smob) 
-{
-  Spanner *me = unsmob_spanner (smob);
-  Item *l = me->get_bound (LEFT);
-  Item *r = me->get_bound (RIGHT);
-  Grob *common = l->common_refpoint (r, X_AXIS);
-  
-
-  Real sl = me->get_paper ()->get_realvar (ly_symbol2scm ("linethickness"));  
-
-  Link_array<Grob> heads (Pointer_group_interface__extract_grobs (me, (Grob*)0,
-								  "heads"));
-
-  if (!heads.size () && r->break_status_dir () == CENTER)
-    return SCM_EOL;
-
-  common = common_refpoint_of_array (heads, common, X_AXIS);
-  
-  Real left_point = 0.0;
-  if (l->internal_has_interface (ly_symbol2scm ("lyric-syllable-interface")))
-    left_point = l->extent (common, X_AXIS)[RIGHT];
-  else
-    left_point = heads[0]->extent (common, X_AXIS)[LEFT];
-
-  if (isinf (left_point))
-    return SCM_EOL;
-
-  /*
-    It seems that short extenders are even lengthened to go past the
-    note head, but haven't found a pattern in it yet. --hwn 1/1/04
-    
-   */
-  SCM minlen =  me->get_grob_property ("minimum-length");
-  Real right_point
-    = left_point + (robust_scm2double  (minlen,0));
-
-  Spanner *orig = dynamic_cast<Spanner*> (me->original_);
-  bool last_line = orig
-    && (me->get_break_index () == orig->broken_intos_.size() - 2)
-    && !Lyric_extender::is_visible (orig->broken_intos_.top ());
-    
-
-  if (heads.size ())
-    right_point = right_point >? heads.top ()->extent (common, X_AXIS)[RIGHT];
-
-  Real h = sl * robust_scm2double (me->get_grob_property ("thickness"), 0);
-  Real pad = 2* h;
-
-  if (r->internal_has_interface (ly_symbol2scm ("lyric-syllable-interface")))
-    right_point = right_point <? (r->extent (common, X_AXIS)[LEFT] - pad);
-  else if (Note_head::has_interface (r))
-    ; 
-  else if (!last_line)
-    {
-      /*
-	run to end of line.
-       */
-      right_point = right_point >? (r->extent (common, X_AXIS)[LEFT] - pad);
-    }
-  
-  if (isinf (right_point))
-    {
-      programming_error ("Right point of extender not defined?");
-      right_point = r->relative_coordinate (common, X_AXIS);
-    }  
-
-  left_point += pad;
-
-  Real w = right_point - left_point;
-
-  if (w < 1.5 * h)
-    return SCM_EOL;
-  
-  Molecule  mol (Lookup::round_filled_box (Box (Interval (0,w), Interval (0,h)),
-					   0.8 * h));
-  mol.translate_axis (left_point - me->relative_coordinate (common, X_AXIS), X_AXIS);
-  return mol.smobbed_copy ();
-}
-
-
-ADD_INTERFACE (Lyric_extender,"lyric-extender-interface",
-  "The extender is a simple line at the baseline of the lyric "
-  " that helps show the length of a melissima (tied/slurred note).",
-  "thickness heads");
diff --git a/lily/lyric-hyphen.cc b/lily/lyric-hyphen.cc
deleted file mode 100644
index f608ddc77f..0000000000
--- a/lily/lyric-hyphen.cc
+++ /dev/null
@@ -1,116 +0,0 @@
-/*
-  hyphen-spanner.cc -- implement Hyphen_spanner
-
-  source file of the GNU LilyPond music typesetter
-
-  (c) 2003--2004 Han-Wen Nienhuys <hanwen@xs4all.nl>
-*/
-
-#include <math.h>
-
-#include "box.hh"
-#include "lookup.hh"
-#include "molecule.hh"
-#include "paper-def.hh"
-#include "paper-column.hh"
-#include "spanner.hh"
-#include "item.hh"
-#include "lyric-hyphen.hh"
-#include "moment.hh"
-
-MAKE_SCHEME_CALLBACK (Hyphen_spanner,print,1)
-SCM 
-Hyphen_spanner::print (SCM smob)
-{
-  Spanner * me = unsmob_spanner (smob);
-  Drul_array<Item*> bounds (me->get_bound (LEFT),
-			    me->get_bound (RIGHT));
-
-  if (bounds[LEFT]->break_status_dir ()
-      && Paper_column::when_mom (bounds[LEFT]) == Paper_column::when_mom (bounds[RIGHT]->get_column()))
-    return SCM_EOL;
-  
-  Grob * common = bounds[LEFT]->common_refpoint (bounds[RIGHT], X_AXIS);
-
-  Interval span_points;
-  Direction d = LEFT;
-  do
-    {
-      Interval iv = bounds[d]->extent (common, X_AXIS);
-
-      span_points[d] = iv.is_empty ()
-	? bounds[d]->relative_coordinate (common, X_AXIS)
-	: iv[-d];
-    }
-  while (flip (&d) != LEFT);
-  
-  Real lt = me->get_paper ()->get_realvar (ly_symbol2scm ("linethickness"));
-  Real th = robust_scm2double (me->get_grob_property ("thickness"), 1) * lt ;
-  Real h = robust_scm2double (me->get_grob_property ("height"), 0.5);
-
-  // interval?
-  
-  Real dp = robust_scm2double (me->get_grob_property ("dash-period"), 1.0);
-  Real dl = robust_scm2double (me->get_grob_property ("length"), .5 );
-
-  if (dp < dl)
-    dp = 1.5 * dl;
-
-  Real l = span_points.length ();
-  int n = int (ceil (l/dp - 0.5));
-  if (n <= 0)
-    n = 1;
-
-  Real space_left = l - dl - (n-1)* dp;
-
-  /*
-    If there is not enough space, the hyphen should disappear, but not
-    at the end of the line.
-   */
-  if (space_left < 0.0
-      && !bounds[RIGHT]->break_status_dir ())
-    return SCM_EOL;
-
-  space_left = space_left >? 0.0;
-  
-  Box b (Interval (0, dl), Interval (h,h+th));
-  Molecule dash_mol (Lookup::round_filled_box (b, 0.8 * lt));
-
-  Molecule total;
-  for (int i = 0; i < n; i++)
-    {
-      Molecule m (dash_mol);
-      m.translate_axis (span_points[LEFT] + i * dp + space_left / 2, X_AXIS);
-      total.add_molecule (m);
-    }
-
-  total.translate_axis ( -me->relative_coordinate (common, X_AXIS), X_AXIS);
-  return total.smobbed_copy ();
-}
-
-
-MAKE_SCHEME_CALLBACK (Hyphen_spanner,set_spacing_rods,1);
-SCM
-Hyphen_spanner::set_spacing_rods (SCM smob)
-{
-  Grob*me = unsmob_grob (smob);
-
-  Rod r;
-  Spanner*sp = dynamic_cast<Spanner*> (me);
-  r.distance_ =
-    robust_scm2double (me->get_grob_property ("minimum-length"), 0);
-  Direction d=LEFT;
-  do {
-    r.item_l_drul_[d] = sp->get_bound (d);
-    r.distance_ += r.item_l_drul_[d]->extent (r.item_l_drul_[d], X_AXIS)[-d];
-  } while (flip (&d) != LEFT);
-
-  r.add_to_cols ();
-  return SCM_UNSPECIFIED;
-}
-
-ADD_INTERFACE (Hyphen_spanner, "lyric-hyphen-interface",
-	       "A centred hyphen is a simple line between lyrics used to divide syllables",
-	       "thickness height dash-period minimum-length length");
-
-
diff --git a/lily/lyric-performer.cc b/lily/lyric-performer.cc
deleted file mode 100644
index c0279b7cf9..0000000000
--- a/lily/lyric-performer.cc
+++ /dev/null
@@ -1,76 +0,0 @@
-/*
-  lyric-performer.cc -- implement Lyric_performer
-
-  source file of the GNU LilyPond music typesetter
-
-  (c) 1997--2004 Jan Nieuwenhuizen <janneke@gnu.org>
-*/
-
-#include "event.hh"
-#include "audio-item.hh"
-#include "lily-proto.hh"
-#include "performer.hh"
-#include "array.hh"
-
-class Lyric_performer : public Performer {
-public:
-  TRANSLATOR_DECLARATIONS(Lyric_performer);
-protected:
-
-  virtual bool try_music (Music* req);
-  virtual void stop_translation_timestep ();
-  virtual void create_audio_elements ();
-
-private:
-  Link_array<Music> lreqs_;
-  Audio_text* audio_;
-};
-
-
-
-
-Lyric_performer::Lyric_performer ()
-{
-  audio_ = 0;
-}
-
-
-void
-Lyric_performer::create_audio_elements ()
-{
-  // FIXME: won't work with fancy lyrics
-  if (lreqs_.size ()
-      && gh_string_p (lreqs_[0]->get_mus_property ("text"))
-      && ly_scm2string (lreqs_[0]->get_mus_property ("text")).length ())
-    {
-      audio_ = new Audio_text (Audio_text::LYRIC,
-				 ly_scm2string (lreqs_[0]->get_mus_property ("text")));
-      Audio_element_info info (audio_, lreqs_[0]);
-      announce_element (info);
-    }
-  lreqs_.clear ();
-}
-
-void
-Lyric_performer::stop_translation_timestep ()
-{
-  if (audio_)
-    {
-      play_element (audio_);
-      audio_ = 0;
-    }
-  lreqs_.clear ();
-}
-
-bool
-Lyric_performer::try_music (Music* req)
-{
-  if (req->is_mus_type ("lyric-event"))
-    {
-      lreqs_.push (req);
-      return true;
-    }
-  return false;
-}
-
-ENTER_DESCRIPTION(Lyric_performer,"","","lyric-event","","","");
diff --git a/lily/lyric-phrasing-engraver.cc b/lily/lyric-phrasing-engraver.cc
deleted file mode 100644
index 1ad79cdf56..0000000000
--- a/lily/lyric-phrasing-engraver.cc
+++ /dev/null
@@ -1,253 +0,0 @@
-/*   
-  new-phrasing-engraver.cc --  implement New_phrasing_engraver
-
-source file of the GNU LilyPond music typesetter
-
-(c) 2003--2004 Han-Wen Nienhuys <hanwen@xs4all.nl>
-
- */
-
-
-#include "translator-group.hh"
-#include "engraver.hh"
-#include "note-head.hh"
-#include "lyric-extender.hh"
-#include "item.hh"
-#include "group-interface.hh"
-#include "side-position-interface.hh"
-
-struct Phrasing_association
-{
-  String name_;
-  Link_array<Grob> lyrics_;
-  Link_array<Grob> heads_;
-  Link_array<Spanner> past_extenders_;
-  Link_array<Spanner> new_extenders_;
-  Link_array<Grob> stanza_numbers_;
-
-  
-  bool melisma_;
-  
-  Phrasing_association()
-  {
-    melisma_ = false;
-  }
-};
-
-class Lyric_phrasing_engraver : public Engraver
-{
-public:
-  ~Lyric_phrasing_engraver ();
-  TRANSLATOR_DECLARATIONS(Lyric_phrasing_engraver);
-protected:
-  virtual void acknowledge_grob (Grob_info);
-  virtual void process_acknowledged_grobs ();
-  virtual void stop_translation_timestep ();
-
-private:
-  void add_lyric_phrasing (Grob_info);
-  void add_voice_phrasing (Grob_info);
-  void add_lyric_extender (Grob_info);
-  void add_stanza_number (Grob_info);
-  Phrasing_association *get_phrasing_assoc (String nm);
-  String get_voice_name_for_lyric (Translator_group*tr);
-  Link_array<Phrasing_association> assocs_;
-};
-
-Lyric_phrasing_engraver::Lyric_phrasing_engraver()
-{
-}
-
-void
-Lyric_phrasing_engraver::acknowledge_grob (Grob_info i)
-{
-  Grob *h = i.grob_;
-
-  if (Note_head::has_interface (h))
-    add_voice_phrasing (i);
-  else if (h->internal_has_interface (ly_symbol2scm ("lyric-syllable-interface")))
-    add_lyric_phrasing (i);
-  else if (Lyric_extender::has_interface (h))
-    add_lyric_extender (i);
-  else if (h->internal_has_interface (ly_symbol2scm ("stanza-number-interface")))
-    add_stanza_number (i);
-}
-
-Phrasing_association *
-Lyric_phrasing_engraver::get_phrasing_assoc (String nm)
-{
-  Phrasing_association * a=0;
-  for (int i=0 ; !a && i < assocs_.size (); i++)
-    {
-      if (assocs_[i]->name_ == nm)
-	a = assocs_[i];
-    }
-
-  if (!a)
-    {
-      a = new Phrasing_association ;
-      a->name_ = nm;
-      assocs_.push (a);
-    }
-  return a;
-}
-
-
-
-String
-Lyric_phrasing_engraver::get_voice_name_for_lyric (Translator_group*tr)
-{
-  SCM voice_context = tr->get_property ("associatedVoiceContext");
-  if (Translator *vc = unsmob_translator (voice_context))
-    {
-      return dynamic_cast<Translator_group*> (vc)->id_string_;
-    }
-  
-  SCM voice = tr->get_property ("associatedVoice");
-  String nm = tr->id_string_;
-  if (gh_string_p (voice))
-    nm = ly_scm2string (voice);
-  else
-    {
-      int idx = nm.index_last ('-');
-      if (idx >= 0)
-	nm = nm.left_string (idx);
-    }
-
-  return nm;
-}
-
-
-void
-Lyric_phrasing_engraver::add_lyric_extender (Grob_info inf)
-{
-  Translator_group * tr = inf.origin_trans_->daddy_trans_;
-  while (tr && !tr->is_alias (ly_symbol2scm ("Lyrics")))
-    tr = tr->daddy_trans_;
-
-  if (!tr)
-    return;
-
-  
-  Phrasing_association *a =  get_phrasing_assoc (get_voice_name_for_lyric (tr));
-  a->new_extenders_.push (dynamic_cast<Spanner*> (inf.grob_));  
-}
-
-void
-Lyric_phrasing_engraver::add_stanza_number  (Grob_info inf)
-{
-  Translator_group * tr = inf.origin_trans_->daddy_trans_;
-  while (tr && !tr->is_alias (ly_symbol2scm ("Lyrics")))
-    tr = tr->daddy_trans_;
-
-  if (!tr)
-    return;
-
-  Phrasing_association *a =  get_phrasing_assoc (get_voice_name_for_lyric (tr));
-  a->stanza_numbers_.push (inf.grob_);
-}
-
-void
-Lyric_phrasing_engraver::add_voice_phrasing (Grob_info inf)
-{
-  Translator_group * tr = inf.origin_trans_->daddy_trans_;
-  while (tr && !tr->is_alias (ly_symbol2scm ("Voice")))
-    tr = tr->daddy_trans_;
-
-  if (!tr)
-    return;
-
-  Phrasing_association *a =  get_phrasing_assoc (tr->id_string_);
-  a->heads_.push (inf.grob_);
-  a->melisma_ = melisma_busy (inf.origin_trans_);
-}
-
-void
-Lyric_phrasing_engraver::add_lyric_phrasing (Grob_info inf)
-{
-  Translator_group * tr = inf.origin_trans_->daddy_trans_;
-  while (tr && !tr->is_alias (ly_symbol2scm ("Lyrics")))
-    tr = tr->daddy_trans_;
-
-  if (!tr)
-    return;
-
-
-  Phrasing_association *a =  get_phrasing_assoc (get_voice_name_for_lyric (tr));
-  a->lyrics_.push (inf.grob_);
-  a->past_extenders_.clear ();
-}
-
-void
-Lyric_phrasing_engraver::stop_translation_timestep ()
-{
-  Link_array<Grob> stzs;
-  Link_array<Grob> lyrs;
-  for (int i = assocs_.size ();  i--; )
-    {
-      Phrasing_association * a = assocs_[i];
-      stzs.concat (a->stanza_numbers_);
-      lyrs.concat (a->lyrics_);
-    }
-
-  for(int i= lyrs.size(); i--;)
-    for (int j = stzs.size (); j--;)
-      Side_position_interface::add_support (stzs[j], lyrs[i]);
-    
-  for (int i = assocs_.size ();  i--; )
-    {
-      Phrasing_association * a = assocs_[i];
-
-      a->stanza_numbers_.clear ();
-      a->heads_.clear ();
-      a->lyrics_.clear ();
-      a->past_extenders_.concat (assocs_[i]->new_extenders_) ;
-      a->new_extenders_.clear ();
-    }
-}
-
-void
-Lyric_phrasing_engraver::process_acknowledged_grobs ()
-{
-  for (int i = 0; i < assocs_.size ();  i++)
-    {
-      Phrasing_association * a = assocs_[i];
-      if (! (a->heads_.size()  && (a->lyrics_.size () || a->past_extenders_.size ())))
-	continue;
-
-      Grob *h = a->heads_[0];	
-      Direction alignment = CENTER;
-      if (a->melisma_)
-	alignment = LEFT;
-      
-      for (int j = 0; j < a->lyrics_.size (); j++)
-	{
-	  Grob *l = a->lyrics_[j];
-	  if (!l->get_parent (X_AXIS))
-	    {
-	      l->set_parent (h, X_AXIS);
-	      if (alignment)
-		l->set_grob_property ("self-alignment-X", gh_int2scm (alignment));
-	    }
-	}
-
-      for (int j = a->past_extenders_.size(); j--;)
-	Pointer_group_interface::add_grob (a->past_extenders_[j],ly_symbol2scm ("heads"), h);
-    }
-}
-
-Lyric_phrasing_engraver::~Lyric_phrasing_engraver ()
-{
-  for (int i =assocs_.size(); i--;)
-    delete assocs_[i];
-}
-
-ENTER_DESCRIPTION(Lyric_phrasing_engraver,
-		  "This engraver combines note heads and lyrics for alignment. ",
-		  "",
-		  "",
-		  "stanza-number-interface lyric-syllable-interface "
-		  "note-head-interface lyric-extender-interface",
-		  "associatedVoice",
-		  "");
-
diff --git a/lily/main.cc b/lily/main.cc
deleted file mode 100644
index 4ad74a0b10..0000000000
--- a/lily/main.cc
+++ /dev/null
@@ -1,510 +0,0 @@
-/*
-  main.cc -- implement main: entrypoints
-
-  source file of the GNU LilyPond music typesetter
-
-  (c) 1997--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-*/
-
-#include <stdlib.h>
-#include <stdio.h>
-#include <assert.h>
-#include <locale.h>
-#include <string.h>
-
-#include "config.h"
-
-#if HAVE_GETTEXT
-#include <libintl.h>
-#endif
-
-#include "lily-guile.hh"
-#include "lily-version.hh"
-#include "all-font-metrics.hh"
-#include "getopt-long.hh"
-#include "misc.hh"
-#include "string.hh"
-#include "main.hh"
-#include "file-path.hh"
-#include "input-file-results.hh"
-#include "warn.hh"
-#include "lily-guile.hh"
-#include "paper-def.hh"
-#include "midi-def.hh"
-#include "global-ctor.hh"
-#include "kpath.hh"
-
-Array<String> failed_files;
-
-static int sane_putenv (char const* key, char const* value, bool overwrite = false);
-
-/*
-  Global options that can be overridden through command line.
-*/
-
-/* Write dependencies file? */
-bool dependency_global_b = false;
-
-/* Prepend to dependencies */
-String dependency_prefix_global;
-
-/* Names of header fields to be dumped to a separate file. */
-Array<String> dump_header_fieldnames_global;
-
-/* Name of initialisation file. */
-String init_name_global;
-
-/* Do not calculate and write paper output? */
-bool no_paper_global_b = false;
-
-/* Selected output format.
-   One of tex, ps, scm, as. */
-String output_format_global = "tex";
-
-/* Current output name. */
-String output_name_global;
-
-/* Run in safe mode? */
-bool safe_global_b = false;
-
-/* Verbose progress indication? */
-bool verbose_global_b = false;
-
-/* Scheme code to execute before parsing, after .scm init */
-String init_scheme_code_string = "(begin #t ";
-
-
-/*
-  Misc. global stuff.
- */
-
-
-All_font_metrics *all_fonts_global;
-int exit_status_global;
-File_path global_path;
-
-/* Number of current score output block.  If there's more than one
-   score block, this counter will be added to the output filename. */
-int score_count_global;
-
-
-
-/*
-  File globals.
- */
-
-/*  The option parser */
-static Getopt_long *oparser_p_static = 0;
-
-/*
- Internationalisation kludge in two steps:
-   * use _i () to get entry in POT file
-   * call gettext () explicitely for actual "translation"
-
- Note: these messages all start with lower case (ie, don't
-       follow regular localisation guidelines).
- */
-static Long_option_init options_static[] = {
-  {_i ("EXPR"), "evaluate", 'e',
-   _i ("set options, use -e '(ly-option-usage)' for help")},
-  /* another bug in option parser: --output=foe is taken as an abbreviation
-     for --output-format */
-  {_i ("EXT"), "format", 'f', _i ("use output format EXT")},
-  {0, "help", 'h',  _i ("print this help")},
-  {_i ("FIELD"), "header", 'H',  _i ("write header field to BASENAME.FIELD")},
-  {_i ("DIR"), "include", 'I',  _i ("add DIR to search path")},
-  {_i ("FILE"), "init", 'i',  _i ("use FILE as init file")},
-  {0, "dependencies", 'M',  _i ("write Makefile dependencies for every input file")},
-  {0, "no-paper", 'm',  _i ("produce MIDI output only")},
-  {_i ("FILE"), "output", 'o',  _i ("write output to FILE")},
-  {_i ("DIR"), "dep-prefix", 'P',  _i ("prepend DIR to dependencies")},
-  {0, "safe-mode", 's',  _i ("run in safe mode")},
-  {0, "version", 'v',  _i ("print version number")},
-  {0, "verbose", 'V', _i ("be verbose")},
-  {0, "warranty", 'w',  _i ("show warranty and copyright")},
-  {0,0,0,0}
-};
-
-void
-identify (FILE *out)
-{
-  fputs (gnu_lilypond_version_string ().to_str0 (), out);
-}
- 
-void
-dirinfo (FILE *out)
-{
-  fputs ("\n", out);
-  fprintf (out, "lilypond_datadir: `%s'\n", LILYPOND_DATADIR);
-  fprintf (out, "local_lilypond_datadir: `%s'\n", LOCAL_LILYPOND_DATADIR);
-  fprintf (out, "localedir: `%s'\n", LOCALEDIR);
-
-  char *lilypond_prefix = getenv ("LILYPONDPREFIX");
-  fprintf (out, "LILYPONDPREFIX: `%s'\n",
-	   (lilypond_prefix ? lilypond_prefix : ""));
-}
-
-void
-usage ()
-{
-  printf ("\n");
-  /* No version number or newline here. It confuses help2man.  */
-  printf (_f ("Usage: %s [OPTIONS]... FILE...", "lilypond").to_str0 ());
-  printf ("\n\n");
-  printf (_ ("Typeset music and/or produce MIDI from FILE.").to_str0 ());
-  printf ("\n\n");
-  printf(_ ("LilyPond produces beautiful music notation.\n"
-	    "For more information, see http://lilypond.org/"
-).to_str0 ());
-
-  printf ("\n");
-  printf (_ ("Options:").to_str0 ());
-  printf ("\n");
-  printf (Long_option_init::table_string (options_static).to_str0 ());
-  printf ("\n");
-  printf (_f ("Report bugs to %s.", "bug-lilypond@gnu.org").to_str0 ());
-  printf ("\n");
-  printf ("\n");
-}
-
-void
-version ()
-{
-  identify (stdout);
-  printf ("\n");
-  printf (_f (
-  "This is free software.  It is covered by the GNU General Public License,\n"
-  "and you are welcome to change it and/or distribute copies of it under\n"
-  "certain conditions.  Invoke as `%s --warranty' for more information.\n",
-    "lilypond").to_str0 ());
-  printf ("\n");
-
-  printf (_f ("Copyright (c) %s by", "1996--2003").to_str0 ());
-  printf ("\n");
-  printf ("  Han-Wen Nienhuys <hanwen@cs.uu.nl>\n");
-  printf ("  Jan Nieuwenhuizen <janneke@gnu.org>\n");
-}
-
-void
-notice ()
-{
-  printf ("\n");
-  printf (_ ("GNU LilyPond -- The music typesetter").to_str0 ());
-  printf ("\n");
-  printf (_f ("Copyright (c) %s by", "1996--2003").to_str0 ());
-  printf ("\n");
-  printf ("  Han-Wen Nienhuys <hanwen@cs.uu.nl>\n");
-  printf ("  Jan Nieuwenhuizen <janneke@gnu.org>\n");
-  printf ("\n");
-  printf ( _ (
-	     "    This program is free software; you can redistribute it and/or\n"
-	     "modify it under the terms of the GNU General Public License version 2\n"
-	     "as published by the Free Software Foundation.\n"
-	     "\n"
-	     "    This program is distributed in the hope that it will be useful,\n"
-	     "but WITHOUT ANY WARRANTY; without even the implied warranty of\n"
-	     "MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU\n"
-	     "General Public License for more details.\n"
-	     "\n"
-	     "    You should have received a copy (refer to the file COPYING) of the\n"
-	     "GNU General Public License along with this program; if not, write to\n"
-	     "the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,\n"
-	     "USA.\n").to_str0 ());
-}
-
-
-/* Where LilyPond's init files live.  Typically:
-   LILYPOND_DATADIR = /usr/local/share/lilypond
-   LOCAL_LILYPOND_DATADIR = /usr/local/share/lilypond/1.5.68 */
-char const *prefix_directory[] = {LILYPOND_DATADIR, LOCAL_LILYPOND_DATADIR, 0};
-
-void
-setup_paths ()
-{
-  if (char const *lilypond_prefix = getenv ("LILYPONDPREFIX"))
-    prefix_directory[1] = lilypond_prefix;
-
-#if HAVE_GETTEXT
-  /* Enable locales */
-  setlocale (LC_ALL, "");
-  /* Mustn't have commas in TeX output... */
-  setlocale (LC_NUMERIC, "C");
-  String lily_locale_dir;
-  String name (PACKAGE);
-  name.to_lower ();
-  bindtextdomain (name.to_str0 (), LOCALEDIR);
-  textdomain (name.to_str0 ());
-#endif
-
-  global_path.add ("");
-
-
-  /* Adding mf/out make lilypond unchanged source directory, when setting
-     LILYPONDPREFIX to lilypond-x.y.z */
-  char *suffixes[] = {"ly", "afm", "mf/out", "scm", "tfm", "ps", 0};
-
-  for (unsigned i = 0; prefix_directory[i]; i++)
-    for (char **s = suffixes; *s; s++)
-      {
-	String p = prefix_directory[i] + to_string ('/') + String (*s);
-	global_path.prepend (p);
-	
-#if !KPATHSEA
-	/* Urg: GNU make's $ (word) index starts at 1 */
-	int i  = 1;
-	while (global_path.try_add (p + to_string (".") + to_string (i)))
-	  i++;
-#endif
-      }
-  }
-  
-/**
-  Make input file name from command argument.
-
-  Path describes file name with added default extension,
-  ".ly" if none.  "-" is stdin.
- */
-Path
-distill_inname (String str)
-{
-  Path p = split_path (str);
-  if (str.is_empty () || str == "-")
-    p.base = "-";
-  else
-    {
-      String orig_ext = p.ext;
-      char const *extensions[] = {"ly", "", 0};
-      for (int i = 0; extensions[i]; i++)
-	{
-	  p.ext = orig_ext;
-	  if (*extensions[i] && !p.ext.is_empty ())
-	    p.ext += ".";
-	  p.ext += extensions[i];
-	  if (!global_path.find (p.to_string ()).is_empty ())
-	      break;
-	}
-      /* Reshuffle extension */
-      p = split_path (p.to_string ());
-    }
-  return p;
-}
-
-void
-prepend_load_path (String dir)
-{
-  String s = "(set! %load-path (cons \""
-    + dir
-    + "\" %load-path))";
-  scm_c_eval_string (s.to_str0 ());
-}
-
-void
-main_prog (void *, int, char **)
-{
-  /* Engravers use lily.scm contents, need to make Guile find it.
-     Prepend onto GUILE %load-path, very ugh. */
-     
-  for (unsigned i = 0; prefix_directory[i]; i++)
-    {
-      prepend_load_path (prefix_directory[i]);
-
-      /* Junk this.  We should make real modules iso. just loading files. */
-      prepend_load_path (String (prefix_directory[i]) + "/scm");
-    }
-
-  if (verbose_global_b)
-    dirinfo (stderr);
-  
-  ly_init_guile ();
-  call_constructors ();
-
-  progress_indication ("\n");
-
-  all_fonts_global = new All_font_metrics (global_path.to_string ());
-
-  init_scheme_code_string += ")";
-  gh_eval_str ((char *)init_scheme_code_string.to_str0 ());
-  
-  int p=0;
-  const char *arg  = oparser_p_static->get_next_arg ();
-
-  /* Only exit until after running init_scheme_code, for
-     (ly-option-usage) or
-     -e "(ly-set-option 'help #t)" */
-  if (!arg)
-    {
-      usage ();
-      /* No FILE arguments is now a usage error */
-      exit (2);
-    }
-
-  do
-    {
-      String infile (arg);
-      Path inpath = distill_inname (infile);
-
-      /* By default, use base name of input file for output file name */
-      Path outpath = inpath;
-      if (inpath.to_string () != "-")
-	outpath.ext = output_format_global;
-
-      /* By default, write output to cwd; do not copy directory part
-         of input file name */
-      outpath.root = "";
-      outpath.dir = "";
-      
-      if (!output_name_global.is_empty ())
-	outpath = split_path (output_name_global);
-      
-      String init;
-      if (!init_name_global.is_empty ())
-	init = init_name_global;
-      else
-	init = "init.ly";
-	
-      do_one_file (init, inpath.to_string (), outpath.to_string ());
-
-#if 0
-      /*
-	Code to debug memory leaks. Cannot call from within .ly since
-	then we get the protects from the parser state too.
-       */
-      static SCM proc ;
-      if (!proc)
-	proc = scm_c_eval_string ("dump-gc-protects");
-      scm_gc ();
-      scm_call_0 (proc);
-#endif
-      
-      p++;
-    } while ((arg  = oparser_p_static->get_next_arg ()));
-  delete oparser_p_static;
-  oparser_p_static = 0;
-
-  if (exit_status_global)
-    {
-      printf ("Failed files: ");
-      for (int i = 0; i < failed_files.size (); i++)
-	printf ("%s ", failed_files[i].to_str0 ());
-      printf ("\n");
-    }
-  exit (exit_status_global);
-}
-
-
-static int
-sane_putenv (char const* key, char const* value, bool overwrite)
-{
-  if (overwrite || !getenv (key))
-    {
-      String combine = String (key) + "=" + String (value);
-      char * s = strdup(combine.to_str0 ());
-      return putenv (s);
-    }
-  return -1;
-}
-
-int
-main (int argc, char **argv)
-{
-  setup_paths ();
-
-  /*
-    
-    These settings hopefully prepare lily for a lot of memory usage.
-
-    In practice the effect on GC times is barely measurable -- larger
-    segments cost slighly less time for the conservative marking. (but
-    not impressively much)
-    
-  */
-  sane_putenv ("GUILE_INIT_SEGMENT_SIZE_1", "4194304", false);
-  sane_putenv ("GUILE_MAX_SEGMENT_SIZE", "8388608", false);
-
-  init_kpath (argv[0]);
-
-  bool help_b = false;
-  oparser_p_static = new Getopt_long (argc, argv, options_static);
-  while (Long_option_init const * opt = (*oparser_p_static) ())
-    {
-      switch (opt->shortname_char_)
-	{
-	case 'v':
-	  version ();
-	  exit (0);		// we print a version anyway.
-	  break;
-	case 'o':
-	  {
-	    String s = oparser_p_static->optional_argument_str0_;
-	    Path p = split_path (s);
-	    if (s != "-" && p.ext.is_empty ())
-	      p.ext = output_format_global;
-
-	    output_name_global = p.to_string ();
-	  }
-	  break;
-	case 'e':
-	  init_scheme_code_string +=
-	    oparser_p_static->optional_argument_str0_;
-	  break;
-	case 'w':
-	  notice ();
-	  exit (0);
-	  break;
-	case 'f':
-	  if (oparser_p_static->optional_argument_str0_ == "help")
-	    {
-	      printf("This option is for developers only;  Read the source code for more information\n");
-	      
-	      // actually it's not here,
-	      // but we award you special points for looking here.
-	      
-	      exit (0);
-	    }
-	  output_format_global = oparser_p_static->optional_argument_str0_;
-	  break;
-	case 'P':
-	    dependency_prefix_global = oparser_p_static->optional_argument_str0_;
-	  break;
-	case 'H':
-	  dump_header_fieldnames_global.push (oparser_p_static->optional_argument_str0_);
-	  break;
-	case 'I':
-	  global_path.push (oparser_p_static->optional_argument_str0_);
-	  break;
-	case 'i':
-	  init_name_global = oparser_p_static->optional_argument_str0_;
-	  break;
-	case 'h':
-	  help_b = true;
-	  break;
-	case 'V':
-	  verbose_global_b = true;
-	  break;
-	case 's':
-	  safe_global_b = true;
-	  break;
-	case 'M':
-	  dependency_global_b = true;
-	  break; 
-	case 'm':
-	  no_paper_global_b = true;
-	  break;
-	default:
-	  assert (false);
-	  break;
-	}
-    }
-
-  if (help_b)
-    {
-      usage ();
-      if (verbose_global_b)
-	dirinfo (stdout);
-      exit (0);
-    }
-
-  scm_boot_guile (argc, argv, (void (*) (void*, int, char**))main_prog, 0);
-
-  return 0;			// unreachable
-}
diff --git a/lily/mark-engraver.cc b/lily/mark-engraver.cc
deleted file mode 100644
index 82d27d3643..0000000000
--- a/lily/mark-engraver.cc
+++ /dev/null
@@ -1,153 +0,0 @@
-/*
-  mark-engraver.cc -- implement Mark_engraver
-
-  source file of the GNU LilyPond music typesetter
-
-  (c) 1998--2004 Jan Nieuwenhuizen <janneke@gnu.org>
-*/
-
-#include <ctype.h>
-
-#include "bar-line.hh"
-
-#include "engraver-group-engraver.hh"
-#include "engraver.hh"
-#include "item.hh"
-#include "warn.hh"
-#include "text-item.hh"
-
-/**
-  put stuff over or next to  bars.  Examples: bar numbers, marginal notes,
-  rehearsal marks.
- */
-class Mark_engraver : public Engraver
-{
-public:
-  TRANSLATOR_DECLARATIONS(Mark_engraver);
-protected:
-  Item* text_;
-  
-protected:
-  virtual void stop_translation_timestep ();
-  virtual void acknowledge_grob (Grob_info);
-  void create_items (Music*);
-  virtual bool try_music (Music *ev);
-  virtual void process_music ();
-  
-private:
-  Music * mark_ev_;
-};
-
-
-
-
-
-Mark_engraver::Mark_engraver ()
-{
-  text_ =0;
-  mark_ev_ = 0;
-}
-
-void
-Mark_engraver::acknowledge_grob (Grob_info inf)
-{
-  Grob * s = inf.grob_;
-  if (text_ && Bar_line::has_interface (s))
-    {
-      /*
-      TODO: make this configurable. RehearsalMark cannot be
-      break-aligned, since the width of the object should not be taken
-      into alignment considerations.
-      */
-      text_->set_parent (s, X_AXIS);
-    }
-}
-
-void 
-Mark_engraver::stop_translation_timestep ()
-{
-  if (text_)
-    {
-      text_->set_grob_property ("side-support-elements" , get_property ("stavesFound"));
-      typeset_grob (text_);
-      text_ =0;
-    }
-  mark_ev_ = 0;
-}
-
-
-void
-Mark_engraver::create_items (Music *ev)
-{
-  if (text_)
-    return;
-
-  text_ = make_item ("RehearsalMark");
-  announce_grob(text_, ev->self_scm());
-}
-
-
-bool
-Mark_engraver::try_music (Music* r)
-{
-  mark_ev_ = r;
-  return true;
-}
-
-
-/*
-
-  TODO: make the increment function in Scheme.
-
-
-  TODO: junk the number type for rehearsalMark
-*/
-void
-Mark_engraver::process_music ()
-{
-  if (mark_ev_)
-    {
-      create_items (mark_ev_);
-
-      /*
-	automatic marks.
-       */
-
-      
-      SCM m = mark_ev_->get_mus_property ("label");
-      SCM proc = get_property ("markFormatter");
-      if (!Text_item::markup_p (m) &&
-	  gh_procedure_p (proc))
-	{
-	  if (!gh_number_p (m)) 
-	    m =  get_property ("rehearsalMark");
-
-	  if (scm_integer_p (m) == SCM_BOOL_T
-	      && scm_exact_p (m) == SCM_BOOL_T)
-	    {
-	      int mark_count = gh_scm2int (m);
-	      mark_count ++;
-	      daddy_trans_->set_property ("rehearsalMark",
-					  gh_int2scm (mark_count));
-	    }
-
-	  if (gh_number_p (m))
-	    m = scm_call_2 (proc, m, daddy_trans_->self_scm ());
-	  else
-	    warning ("rehearsalMark does not have integer value.");
-	}
-
-      if (Text_item::markup_p (m))
-	text_->set_grob_property ("text", m);
-      else
-	warning ("Mark label should be markup object.");
-    }
-}
-
-ENTER_DESCRIPTION(Mark_engraver,
-/* descr */       "",
-/* creats*/       "RehearsalMark",
-/* accepts */     "mark-event",
-/* acks  */       "bar-line-interface",
-/* reads */       "rehearsalMark markFormatter stavesFound",
-/* write */       "");
diff --git a/lily/measure-grouping-engraver.cc b/lily/measure-grouping-engraver.cc
deleted file mode 100644
index 45dd6ff0cd..0000000000
--- a/lily/measure-grouping-engraver.cc
+++ /dev/null
@@ -1,118 +0,0 @@
-/*   
-  measure-grouping-engraver.cc --  implement Measure_grouping_engraver
-
-  source file of the GNU LilyPond music typesetter
-
-  (c) 2002--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
- */
-
-#include "score-engraver.hh"
-#include "spanner.hh"
-#include "warn.hh"
-#include "side-position-interface.hh"
-
-class Measure_grouping_engraver : public Engraver
-{
-public:
-  TRANSLATOR_DECLARATIONS(Measure_grouping_engraver);
-
-protected:
-  Spanner * grouping_;
-  Rational stop_grouping_mom_;
-
-  virtual void process_music ();
-  virtual void finalize ();
-  virtual void acknowledge_grob (Grob_info);
-};
-
-void
-Measure_grouping_engraver::finalize()
-{
-  if (grouping_)
-    {
-      grouping_->set_bound (RIGHT, unsmob_grob (get_property ("currentCommandColumn")));
-      typeset_grob (grouping_);
-      grouping_->suicide ();
-      grouping_= 0;
-    }
-}
-
-
-void
-Measure_grouping_engraver::acknowledge_grob (Grob_info gi)
-{
-  if (grouping_)
-    {
-      Side_position_interface::add_support (grouping_, gi.grob_);
-    }
-}
-
-void
-Measure_grouping_engraver::process_music ()
-{
-  Moment now = now_mom();
-  if (grouping_ && now.main_part_ >= stop_grouping_mom_ && !now.grace_part_)
-    {
-      grouping_->set_bound (RIGHT,
-			    unsmob_grob (get_property ("currentMusicalColumn")));
-      typeset_grob (grouping_);
-      grouping_ = 0;
-    }
-  
-  if (now.grace_part_)
-    return; 
-  
-  SCM grouping = get_property ("beatGrouping");
-  if (gh_pair_p (grouping))
-    {
-      Moment *measpos = unsmob_moment (get_property ("measurePosition"));
-      Rational mp = measpos->main_part_;
-      
-      Moment * beatlen = unsmob_moment (get_property ("beatLength"));
-      Rational bl = beatlen->main_part_;
-	
-      Rational where (0);
-      for (SCM s = grouping; gh_pair_p (s);
-	   where += Rational (gh_scm2int (gh_car (s))) * bl,
-	   s = gh_cdr (s)
-	   )
-	{
-	  int grouplen = gh_scm2int (gh_car(s));
-	  if (where == mp)
-	    {
-	      if (grouping_)
-		{
-		  programming_error ("Huh, last grouping not finished yet.");
-		  continue;
-		}
-	      
-	      grouping_ = make_spanner ("MeasureGrouping");
-	      grouping_->set_bound (LEFT, unsmob_grob (get_property ("currentMusicalColumn")));
-	      announce_grob (grouping_, SCM_EOL);
-
-
-	      stop_grouping_mom_ = now.main_part_ + Rational(grouplen - 1) * bl ;
-	      top_engraver ()->add_moment_to_process (Moment (stop_grouping_mom_));
-
-	      if (grouplen == 3)
-		grouping_->set_grob_property ("style", ly_symbol2scm ("triangle"));
-	      else
-		grouping_->set_grob_property ("style", ly_symbol2scm ("bracket"));
-	      
-	      break ; 
-	    }
-	}
-    }
-}
-Measure_grouping_engraver::Measure_grouping_engraver()
-{
-  grouping_ = 0;
-}
-
-ENTER_DESCRIPTION(Measure_grouping_engraver,
-/* descr */       "Creates Measure_grouping objects using beatGrouping property",
-/* creats*/       "MeasureGrouping",
-/* accepts */     "",
-/* acks  */      "note-column-interface",
-/* reads */       "beatGrouping beatLength measurePosition currentMusicalColumn",
-/* write */       "");
diff --git a/lily/measure-grouping-spanner.cc b/lily/measure-grouping-spanner.cc
deleted file mode 100644
index 780e77547b..0000000000
--- a/lily/measure-grouping-spanner.cc
+++ /dev/null
@@ -1,65 +0,0 @@
-/*   
-	measure-grouping-spanner.cc --  implement Measure_grouping
-
-	source file of the GNU LilyPond music typesetter
-
-	(c) 2002--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-
- */
-
-#include "paper-def.hh"
-#include "spanner.hh"
-#include "measure-grouping-spanner.hh"
-#include "lookup.hh" 
-#include "item.hh"
-#include "staff-symbol-referencer.hh"
-
-MAKE_SCHEME_CALLBACK (Measure_grouping, print, 1);
-SCM 
-Measure_grouping::print (SCM grob)
-{
-  Spanner * me = dynamic_cast<Spanner*> (unsmob_grob (grob));
-
-  /*
-    TODO: robustify.
-   */
-  SCM which = me->get_grob_property ("style");
-  Real height = robust_scm2double (me->get_grob_property ("height"), 1);
-
-  Real t = Staff_symbol_referencer::line_thickness (me) * robust_scm2double (me->get_grob_property ("thickness"), 1);
-  Grob *common = me->get_bound(LEFT)->common_refpoint (me->get_bound (RIGHT),
-						       X_AXIS);
-
-  Interval rext = me->get_bound (RIGHT)->extent (common, X_AXIS);
-  
-  
-  Real w =(rext.is_empty ()
-	   ? me->get_bound (RIGHT)->relative_coordinate (common, X_AXIS)
-	   : rext[RIGHT])
-    - me->get_bound (LEFT)->relative_coordinate (common, X_AXIS);
-
-  Interval iv (0,w);
-
-  Molecule m;
-
-  /*
-    TODO: use line interface
-   */
-  if (which == ly_symbol2scm ("bracket"))
-    {
-      m = Lookup::bracket (X_AXIS, iv, t, -height, t);
-    }
-  else if (which == ly_symbol2scm ("triangle"))
-    {
-      m = Lookup::triangle (iv, t, height);
-    }
-
-  m.align_to (Y_AXIS, DOWN);
-  return m.smobbed_copy();
-}
-
-ADD_INTERFACE (Measure_grouping,"measure-grouping-interface",
-	       "indicate groups of beats. Valid choices for 'type are 'bracket and 'triangle.",
-	       "thickness style height");
-
-  
diff --git a/lily/melisma-engraver.cc b/lily/melisma-engraver.cc
deleted file mode 100644
index 7513fb4e22..0000000000
--- a/lily/melisma-engraver.cc
+++ /dev/null
@@ -1,48 +0,0 @@
-/*   
-  melisma-engraver.cc --  implement Melisma_engraver
-  
-  source file of the GNU LilyPond music typesetter
-  
-  (c) 1999--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-  
- */
-
-/*
-  duplicated in melisma-performer
- */
-#include "engraver.hh"
-#include "event.hh"
-#include "grob.hh"
-#include "translator-group.hh"
-
-/**
-   Signal existence of melismas.
- */
-class Melisma_engraver : public Engraver
-{
-public:
-  TRANSLATOR_DECLARATIONS(Melisma_engraver);
-  bool try_music (Music *);
-};
-
-
-bool
-Melisma_engraver::try_music (Music *) 
-{
-  /*
-    This can only be melisma-playing-event.
-   */
-  return melisma_busy (this);
-}
-
-Melisma_engraver::Melisma_engraver()
-{
-}
-
-ENTER_DESCRIPTION(Melisma_engraver,
-/* descr */       "This engraver collects melisma information about ties, beams, and user settings (@code{melismaBusy}, and signals it to the @code{\addlyrics} code.  ",
-/* creats*/       "",
-/* accepts */     "melisma-playing-event",
-/* acks  */      "",
-/* reads */       "melismaBusy melismaBusyProperties slurMelismaBusy tieMelismaBusy beamMelismaBusy",
-/* write */       "");
diff --git a/lily/melisma-performer.cc b/lily/melisma-performer.cc
deleted file mode 100644
index 2ad44badf9..0000000000
--- a/lily/melisma-performer.cc
+++ /dev/null
@@ -1,49 +0,0 @@
-
-/*   
-  melisma-performer.cc --  implement Melisma_performer
-  
-  source file of the GNU LilyPond music typesetter
-  
-  (c) 1999--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-  
- */
-
-/*
-  copy of melisma-engraver - see there.
- */
-#include "performer.hh"
-#include "event.hh"
-#include "grob.hh"
-#include "translator-group.hh"
-
-/**
-   Signal existence of melismas.
- */
-class Melisma_performer : public Performer
-{
-public:
-  TRANSLATOR_DECLARATIONS(Melisma_performer);
-  bool try_music (Music *);
-};
-
-
-bool
-Melisma_performer::try_music (Music *) 
-{
-  /*
-    This can only be melisma-playing-event.
-   */
-  return melisma_busy (this);
-}
-
-Melisma_performer::Melisma_performer()
-{
-}
-
-ENTER_DESCRIPTION(Melisma_performer,
-/* descr */       "This performer collects melisma information about ties, beams, and user settings (@code{melismaBusy}, and signals it to the @code{\addlyrics} code.  ",
-/* creats*/       "",
-/* accepts */     "melisma-playing-event",
-/* acks  */      "",
-/* reads */       "melismaBusy melismaBusyProperties slurMelismaBusy tieMelismaBusy beamMelismaBusy",
-/* write */       "");
diff --git a/lily/mensural-ligature-engraver.cc b/lily/mensural-ligature-engraver.cc
deleted file mode 100644
index 629c299aa1..0000000000
--- a/lily/mensural-ligature-engraver.cc
+++ /dev/null
@@ -1,454 +0,0 @@
-/*
-  mensural-ligature-engraver.cc -- implement Mensural_ligature_engraver
-  
-  source file of the GNU LilyPond music typesetter
-  
-  (c) 2002--2004 Juergen Reuter <reuter@ipd.uka.de>
- */
-
-#include "mensural-ligature.hh"
-#include "coherent-ligature-engraver.hh"
-#include "event.hh"
-#include "warn.hh"
-#include "item.hh"
-#include "spanner.hh"
-#include "rod.hh"
-#include "paper-column.hh"
-#include "note-column.hh"
-#include "rhythmic-head.hh"
-#include "note-head.hh"
-#include "staff-symbol-referencer.hh"
-#include "paper-def.hh"
-#include "font-interface.hh"
-
-/*
- * TODO: My resources on Franco of Cologne's rules claim that his
- * rules map ligature<->mensural timing in a non-ambigous way, but in
- * fact, as presented in these resources, the rules become ambigous as
- * soon as there appear durations other than breves within a ligature
- * with more than two heads (ligatura ternaria etc.).  Hence, the
- * below implementation is an approximation of what I think the rules
- * could look like if forced to be non-ambigous.  This should be
- * further investigated.
- *
- * TODO: The automat is quite complicated, and its design is error
- * prone (and most probably, it behaves wrong for some very special
- * cases).  Maybe we can find a better paradigm for modelling Franco
- * of Cologne's rules?
- *
- * TODO: dotted heads: when applying Franco of Cologne's mapping, put
- * dots *above* (rather than after) affected ligature heads.
- *
- * TODO: prohibit multiple voices within a ligature.
- *
- * TODO: enhance robustness: in case of an illegal ligature (e.g. the
- * user events for a ligature that contains a minima or STATE_ERROR
- * is reached), automatically break the ligature into smaller, valid
- * pieces.
- */
-class Mensural_ligature_engraver : public Coherent_ligature_engraver
-{
-
-protected:
-  virtual Spanner *create_ligature_spanner ();
-  virtual void build_ligature (Spanner *ligature, Array<Grob_info> primitives);
-
-public:
-  TRANSLATOR_DECLARATIONS(Mensural_ligature_engraver);
-
-private:
-  int apply_transition (Array<Grob_info> primitives,
-			int state, int input, int i);
-  void transform_heads (Array<Grob_info> primitives);
-  void propagate_properties (Spanner *ligature, Array<Grob_info> primitives);
-  void fold_up_primitives (Array<Grob_info> primitives);
-  void join_primitives (Array<Grob_info> primitives);
-};
-
-
-Mensural_ligature_engraver::Mensural_ligature_engraver ()
-{
-}
-
-Spanner *
-Mensural_ligature_engraver::create_ligature_spanner ()
-{
-  return make_spanner ("MensuralLigature");
-}
-
-/*
- * The following lines implement a finite state automat.  Given a
- * sequence of durations (Longa, Brevis, Semibrevis) or
- * end-of-ligature-event as input, the automat outputs a sequence of
- * events for grobs that form a proper ligature.
- */
-
-/*
- * This enumeration represents the set of possible input values to the
- * automat.  There may (potentially) be any sequence of Longa, Brevis,
- * and Semibrevis duration symbols fed into the automat, with a final
- * EndOfLigature symbol to terminate the ligature.  Other durations
- * are explicitly prohibited.  Depending on the note's pitch of the
- * preceding and the current input, the melodic line may be ascending
- * or descending.  Per definition, the melodic line must either ascend
- * or descend, because if the pitches were twice the same, the two
- * notes would be merged into a single one (as long as not resulting
- * in a prohibited duration).  In the case of the EndOfLigature
- * symbol, the melodic line is undefined (but we still have ascending
- * and descending case for the sake of consistency, making the automat
- * simpler).
- */
-enum Ligature_input
-{
-  // Ascending/Descending Longa/Brevis/Semibrevis/EndOfLigature
-  INPUT_AL = 0,
-  INPUT_DL,
-  INPUT_AB,
-  INPUT_DB,
-  INPUT_AS,
-  INPUT_DS,
-  INPUT_AE,
-  INPUT_DE,
-};
-
-/*
- * This enumeration represents all possible internal states of the
- * automat.  Besides the generic states START, ERROR, and END, the
- * remaining states L, B, S, and SS describe pending values from the
- * sequence of input values that have not yet been transformed to
- * proper output values, including the melodic direction
- * (ascending/descending) for state L.
- */
-enum Ligature_state
-{
-  // aL = ascending Longa, dL descending Longa, B = Brevis, S =
-  // Semibrevis, SS = 2 Semibreves
-  STATE_START = 0,
-  STATE_aL,
-  STATE_dL,
-  STATE_B,
-  STATE_S,
-  STATE_SS,
-  STATE_ERROR,
-  STATE_END,
-};
-
-/*
- * The following array represents the transitions of the automat:
- * given some state and input, it maps to a new state, according (with
- * the limitations as described above) to the rules of Franco of
- * Cologne.
- */
-const int/*new state*/ transition_state[/*old state*/][8/*input*/] =
-{
-  {STATE_aL,    STATE_dL,    STATE_B,     STATE_B,
-   STATE_S,     STATE_S,     STATE_ERROR, STATE_ERROR}, // was: STATE_START
-  {STATE_aL,    STATE_dL,    STATE_B,     STATE_START,
-   STATE_ERROR, STATE_ERROR, STATE_END,   STATE_END},   // was: STATE_aL
-  {STATE_aL,    STATE_dL,    STATE_B,     STATE_START,
-   STATE_ERROR, STATE_ERROR, STATE_END,   STATE_END},   // was: STATE_dL
-  {STATE_aL,    STATE_dL,    STATE_B,     STATE_START,
-   STATE_ERROR, STATE_ERROR, STATE_END,   STATE_END},   // was: STATE_B
-  {STATE_ERROR, STATE_ERROR, STATE_ERROR, STATE_ERROR,
-   STATE_SS,    STATE_SS,    STATE_ERROR, STATE_ERROR}, // was: STATE_S
-  {STATE_aL,    STATE_dL,    STATE_B,     STATE_B,
-   STATE_S,     STATE_S,     STATE_END,   STATE_END},   // was: STATE_SS
-  {STATE_ERROR, STATE_ERROR, STATE_ERROR, STATE_ERROR,
-   STATE_ERROR, STATE_ERROR, STATE_ERROR, STATE_ERROR}, // was: STATE_ERROR
-  {STATE_ERROR, STATE_ERROR, STATE_ERROR, STATE_ERROR,
-   STATE_ERROR, STATE_ERROR, STATE_ERROR, STATE_ERROR}, // was: STATE_END
-};
-
-/*
- * The following array represents the output of the automat while
- * switching from one state to another: given some state and input, it
- * maps to the output produced when switching to the next state,
- * according (with the limitations as described above) to the rules of
- * Franco of Cologne.
- */
-const int/*output*/ transition_output[/*old state*/][8/*input*/] =
-{
-  {MLP_NONE,  MLP_NONE,  MLP_NONE,  MLP_NONE,
-   MLP_NONE,  MLP_NONE,  MLP_NONE,  MLP_NONE}, // was: STATE_START
-  {MLP_sc,    MLP_ss,    MLP_sc,    MLP_LB,
-   MLP_NONE,  MLP_NONE,  MLP_sc,    MLP_sc},   // was: STATE_aL
-  {MLP_sc,    MLP_ss,    MLP_sc,    MLP_LB,
-   MLP_NONE,  MLP_NONE,  MLP_ss,    MLP_ss},   // was: STATE_dL
-  {MLP_ss,    MLP_cs,    MLP_ss,    MLP_BB,
-   MLP_NONE,  MLP_NONE,  MLP_ss,    MLP_ss} ,  // was: STATE_B
-  {MLP_NONE,  MLP_NONE,  MLP_NONE,  MLP_NONE,
-   MLP_NONE,  MLP_NONE,  MLP_NONE,  MLP_NONE}, // was: STATE_S
-  {MLP_SS,    MLP_SS,    MLP_SS,    MLP_SS,
-   MLP_SS,    MLP_SS,    MLP_SS,    MLP_SS} ,  // was: STATE_SS
-  {MLP_NONE,  MLP_NONE,  MLP_NONE,  MLP_NONE,
-   MLP_NONE,  MLP_NONE,  MLP_NONE,  MLP_NONE}, // was: STATE_ERROR
-  {MLP_NONE,  MLP_NONE,  MLP_NONE,  MLP_NONE,
-   MLP_NONE,  MLP_NONE,  MLP_NONE,  MLP_NONE}, // was: STATE_END
-};
-
-int
-Mensural_ligature_engraver::apply_transition (Array<Grob_info> primitives,
-					      int state, int input, int i)
-{
-  int output = transition_output[state][input];
-  Item *last_last_primitive = (i > 1) ?
-    dynamic_cast<Item*> (primitives[i-2].grob_) : 0;
-  Item *last_primitive = (i > 0) ?
-    dynamic_cast<Item*> (primitives[i-1].grob_) : 0;
-  Item *primitive = (i < primitives.size ()) ?
-    dynamic_cast<Item*> (primitives[i].grob_) : 0;
-  switch (output)
-    {
-      case MLP_NONE:
-	// skip note head, expecting a primitive with two note heads
-	break;
-      case MLP_sc:
-      case MLP_ss:
-      case MLP_cs:
-	// primitive with single note head
-	if (!last_primitive)
-	  {
-	    programming_error ("last_primitive undefined");
-	    break;
-	  }
-	last_primitive->set_grob_property ("primitive", gh_int2scm (output));
-	break;
-      case MLP_BB:
-      case MLP_LB:
-	// primitive with two note heads
-	if (!last_primitive)
-	  {
-	    programming_error ("last_primitive undefined");
-	    break;
-	  }
-	if (!primitive)
-	  {
-	    programming_error ("primitive undefined");
-	    break;
-	  }
-	last_primitive->set_grob_property ("primitive", gh_int2scm (output));
-	primitive->set_grob_property ("primitive", gh_int2scm (MLP_NONE));
-	break;
-      case MLP_SS:
-	// delayed primitive with two note heads
-	if (!last_last_primitive)
-	  {
-	    programming_error ("last_last_primitive undefined");
-	    break;
-	  }
-	if (!last_primitive)
-	  {
-	    programming_error ("last_primitive undefined");
-	    break;
-	  }
-	last_last_primitive->set_grob_property ("primitive", gh_int2scm (output));
-	last_primitive->set_grob_property ("primitive", gh_int2scm (MLP_NONE));
-	break;
-      default:
-	programming_error (_f ("unexpected case fall-through"));
-	break;
-    }
-  return transition_state[state][input];
-}
-
-void
-Mensural_ligature_engraver::transform_heads (Array<Grob_info> primitives)
-{
-  if (primitives.size () < 2)
-    {
-      warning (_f ("ligature with less than 2 heads -> skipping"));
-      return;
-    }
-  int state = STATE_START;
-  Pitch last_pitch, pitch;
-  bool have_last_pitch = 0, have_pitch = 0;
-  for (int i = 0; i < primitives.size (); i++) {
-    last_pitch = pitch;
-    have_last_pitch = have_pitch;
-    Grob_info info = primitives[i];
-    int duration_log =
-      Note_head::get_balltype (dynamic_cast<Item*> (info.grob_));
-
-    Music *nr = info.music_cause ();
-    
-    /*
-    ugh. why not simply check for pitch? 
-     */
-    if (!nr->is_mus_type ("note-event"))
-      {
-	info.music_cause ()->origin ()->warning (_f ("can not determine pitch of ligature primitive -> skipping"));
-	i++;
-	state = STATE_START;
-	have_pitch = 0;
-	continue;
-      }
-    else
-      {
-	pitch = *unsmob_pitch (nr->get_mus_property ("pitch"));
-	have_pitch = 1;
-      }
-
-    int delta_pitch;
-
-    if (!have_last_pitch)
-      {
-	delta_pitch = 0; // first pitch; delta undefined
-      }
-    else
-      {
-	delta_pitch = (pitch.steps () - last_pitch.steps ());
-	if (Pitch::compare (last_pitch, pitch) == 0)
-	  {
-	    info.music_cause ()->origin ()->warning (_f ("prime interval within ligature -> skipping"));
-	    i++;
-	    state = STATE_START;
-	    have_pitch = 0;
-	    continue;
-	  }
-      }
-
-    if ((duration_log < -2) || (duration_log > 0))
-      {
-	info.music_cause ()->origin ()->warning (_f ("mensural ligature: duration none of L, B, S -> skipping"));
-	i++;
-	state = STATE_START;
-	have_pitch = 0;
-	continue;
-      }
-
-    int input = (duration_log + 2) * 2 + ((delta_pitch < 0) ? 1 : 0);
-    state = apply_transition (primitives, state, input, i);
-    // TODO: if (state == STATE_ERROR) { ... }
-  }
-
-  state = apply_transition (primitives, state, INPUT_AE, primitives.size ());
-  // TODO: if (state == STATE_ERROR) { ... }
-}
-
-/*
- * A MensuralLigature grob consists of a bunch of NoteHead grobs that
- * are glued together.  It (a) does not make sense to change
- * properties like thickness or flexa-width from one head to the next
- * within a ligature (this would totally screw up alignment), and (b)
- * some of these properties (like flexa-width) are specific to
- * e.g. the MensuralLigature (as in contrast to e.g. LigatureBracket),
- * and therefore should not be handled in the NoteHead code (which is
- * also used by LigatureBracket).  Therefore, we let the user control
- * these properties via the concrete Ligature grob (like
- * MensuralLigature) and then copy these properties as necessary to
- * each of the NoteHead grobs.  This is what
- * propagate_properties() does.
- */
-void
-Mensural_ligature_engraver::propagate_properties (Spanner *ligature,
-						  Array<Grob_info> primitives)
-{
-  Real thickness = robust_scm2double (ligature->get_grob_property ("thickness"), 1.4);
-  thickness *= ligature->get_paper ()->get_realvar (ly_symbol2scm ("linethickness"));
-
-  Real head_width =
-    Font_interface::get_default_font (ligature)->
-    find_by_name ("noteheads--1mensural").extent (X_AXIS).length ();
-    Real flexa_width = robust_scm2double (ligature->get_grob_property ("flexa-width"), 2);
-  flexa_width *= Staff_symbol_referencer::staff_space (ligature);
-
-  Real half_flexa_width = 0.5 * (flexa_width + thickness);
-
-  for (int i = 0; i < primitives.size (); i++)
-    {
-      Item *primitive = dynamic_cast<Item*> (primitives[i].grob_);
-      int output = gh_scm2int (primitive->get_grob_property ("primitive"));
-      primitive->set_grob_property ("thickness",
-				    gh_double2scm (thickness));
-      switch (output) {
-	case MLP_NONE:
-	  primitive->set_grob_property ("head-width",
-					gh_double2scm (half_flexa_width));
-	  break;
-	case MLP_sc:
-	case MLP_ss:
-	case MLP_cs:
-	  primitive->set_grob_property ("head-width",
-					gh_double2scm (head_width));
-	  break;
-	case MLP_BB:
-	case MLP_LB:
-	case MLP_SS:
-	  primitive->set_grob_property ("head-width",
-					gh_double2scm (half_flexa_width));
-	  primitive->set_grob_property ("flexa-width",
-					gh_double2scm (flexa_width));
-	  break;
-	default:
-	  programming_error (_f ("unexpected case fall-through"));
-	  break;
-      }
-    }
-}
-
-void
-Mensural_ligature_engraver::fold_up_primitives (Array<Grob_info> primitives)
-{
-  Item *first = 0;
-  Real distance = 0;
-  for (int i = 0; i < primitives.size (); i++)
-    {
-      Item *current = dynamic_cast<Item*> (primitives[i].grob_);
-      if (i == 0)
-	{
-	  first = current;
-	}
-
-      get_set_column (current, first->get_column ());
-
-      if (i > 0)
-	{
-	  current->translate_axis (distance, X_AXIS);
-	}
-
-      distance +=
-	gh_scm2double (current->get_grob_property ("head-width")) -
-	gh_scm2double (current->get_grob_property ("thickness"));
-    }
-}
-
-void
-Mensural_ligature_engraver::join_primitives (Array<Grob_info> primitives)
-{
-  Pitch last_pitch;
-  for (int i = 0; i < primitives.size (); i++)
-    {
-      Grob_info info = primitives[i];
-      Pitch pitch = *unsmob_pitch (info.music_cause ()->get_mus_property ("pitch"));
-      if (i > 0)
-        {
-	  Item *primitive = dynamic_cast<Item*> (info.grob_);
-	  int output = gh_scm2int (primitive->get_grob_property ("primitive"));
-	  if (output & MLP_ANY)
-	    {
-	      int delta_pitch = (pitch.steps () - last_pitch.steps ());
-	      primitive->set_grob_property ("join-left-amount",
-					    gh_int2scm (delta_pitch));
-	    }
-	}
-      last_pitch = pitch;
-    }
-}
-
-void
-Mensural_ligature_engraver::build_ligature (Spanner *ligature,
-					    Array<Grob_info> primitives)
-{
-  transform_heads (primitives);
-  propagate_properties (ligature, primitives);
-  fold_up_primitives (primitives);
-  join_primitives (primitives);
-}
-
-ENTER_DESCRIPTION (Mensural_ligature_engraver,
-/* descr */       "Handles Mensural_ligature_events by glueing special ligature heads together.",
-/* creats*/       "MensuralLigature",
-/* accepts */     "ligature-event",
-/* acks  */      "note-head-interface rest-interface",
-/* reads */       "",
-/* write */       "");
diff --git a/lily/mensural-ligature.cc b/lily/mensural-ligature.cc
deleted file mode 100644
index 9d09027e14..0000000000
--- a/lily/mensural-ligature.cc
+++ /dev/null
@@ -1,234 +0,0 @@
-/*
-  mensural-ligature.cc -- implement Mensural_ligature
-  
-  source file of the GNU LilyPond music typesetter
-  
-  (c) 2002--2004 Juergen Reuter <reuter@ipd.uka.de>
-*/
-
-#include <math.h>
-#include "item.hh"
-#include "mensural-ligature.hh"
-#include "font-interface.hh"
-#include "molecule.hh"
-#include "lookup.hh"
-#include "staff-symbol-referencer.hh"
-#include "note-head.hh"
-#include "paper-def.hh"
-#include "warn.hh"
-
-/*
- * TODO: divide this function into mensural and neo-mensural style.
- *
- * TODO: move this function to class Lookup?
- */
-Molecule
-brew_flexa (Grob *me,
-	    Real interval,
-	    bool solid,
-	    Real width,
-	    Real thickness,
-	    bool add_cauda,
-	    Direction cauda_direction)
-{
-  Real staff_space = Staff_symbol_referencer::staff_space (me);
-  Real height = 0.6 * staff_space;
-  Molecule molecule = Molecule ();
-
-  if (add_cauda)
-    {
-      bool consider_interval =
-	cauda_direction * interval > 0.0;
-
-      Interval cauda_box_x (0, thickness);
-      Interval cauda_box_y;
-
-      if (consider_interval)
-        {
-	  Real y_length = max (interval/2.0*staff_space, 1.2*staff_space);
-	  cauda_box_y = Interval (0, y_length);
-	}
-      else
-	cauda_box_y = Interval (0, staff_space);
-
-      Real y_correction =
-	(cauda_direction == UP) ?
-	+0.5*height :
-	-0.5*height - cauda_box_y.length();
-
-      Box cauda_box (cauda_box_x, cauda_box_y);
-      Molecule cauda = Lookup::filled_box (cauda_box);
-      cauda.translate_axis (y_correction, Y_AXIS);
-      molecule.add_molecule (cauda);
-    }
-
-  Real slope = (interval / 2.0 * staff_space) / width;
-
-  // Compensate optical illusion regarding vertical position of left
-  // and right endings due to slope.
-  Real ypos_correction = -0.1*staff_space * sign(slope);
-  Real slope_correction = 0.2*staff_space * sign(slope);
-  Real corrected_slope = slope + slope_correction/width;
-
-  if (solid)
-    {
-      Molecule solid_head =
-	Lookup::beam (corrected_slope, width, height, 0.0);
-      molecule.add_molecule (solid_head);
-    }
-  else // outline
-    {
-      Molecule left_edge =
-	Lookup::beam (corrected_slope, thickness, height, 0.0);
-      molecule.add_molecule(left_edge);
-
-      Molecule right_edge =
-	Lookup::beam (corrected_slope, thickness, height, 0.0);
-      right_edge.translate_axis (width-thickness, X_AXIS);
-      right_edge.translate_axis (corrected_slope * (width-thickness), Y_AXIS);
-      molecule.add_molecule(right_edge);
-
-      Molecule bottom_edge =
-	Lookup::beam (corrected_slope, width, thickness, 0.0);
-      bottom_edge.translate_axis (-0.5*height, Y_AXIS);
-      molecule.add_molecule (bottom_edge);
-
-      Molecule top_edge =
-	Lookup::beam (corrected_slope, width, thickness, 0.0);
-      top_edge.translate_axis (+0.5*height, Y_AXIS);
-      molecule.add_molecule (top_edge);
-    }
-  molecule.translate_axis (ypos_correction, Y_AXIS);
-  return molecule;
-}
-
-void
-add_ledger_lines (Grob *me, Molecule *out, int pos, Real offs,
-		  bool ledger_take_space)
-{
-  int interspaces = Staff_symbol_referencer::line_count (me)-1;
-  if (abs (pos) - interspaces > 1)
-    {
-      Interval hd = out->extent (X_AXIS);
-      Real left_ledger_protusion = hd.length ()/4;
-      Real right_ledger_protusion = left_ledger_protusion;
-
-      Interval l_extents = Interval (hd[LEFT] - left_ledger_protusion,
-				     hd[RIGHT] + right_ledger_protusion);
-      Molecule ledger_lines =
-	Note_head::brew_ledger_lines (me, pos, interspaces,
-				      l_extents,0,
-				      ledger_take_space);
-      ledger_lines.translate_axis (offs, Y_AXIS);
-      out->add_molecule (ledger_lines);
-    }
-}
-
-Molecule
-internal_brew_primitive (Grob *me, bool ledger_take_space)
-{
-  SCM primitive_scm = me->get_grob_property ("primitive");
-  if (primitive_scm == SCM_EOL)
-    {
-      programming_error ("Mensural_ligature:"
-			 "undefined primitive -> ignoring grob");
-      return Molecule ();
-    }
-
-  Molecule out;
-  int primitive = gh_scm2int (primitive_scm);
-  int delta_pitch = 0;
-  Real thickness = 0.0;
-  Real flexa_width = 0.0;
-  Real staff_space = Staff_symbol_referencer::staff_space (me);
-  if (primitive & MLP_ANY)
-    {
-      thickness = robust_scm2double ( me->get_grob_property ("thickness"), .14);
-    }
-
-  if (primitive & MLP_FLEXA)
-    {
-      delta_pitch = robust_scm2int (me->get_grob_property ("delta-pitch"),
-				    0);
-
-      flexa_width = robust_scm2double (me->get_grob_property ("flexa-width"), 2.0 * staff_space);
-    }
-
-  switch (primitive)
-    {
-      case MLP_NONE:
-	return Molecule();
-      case MLP_BB:
-	out = brew_flexa (me, delta_pitch, false,
-			  flexa_width, thickness, true, DOWN);
-	break;
-      case MLP_sc:
-	out = Font_interface::get_default_font (me)->find_by_name ("noteheads--2mensural");
-	break;
-      case MLP_ss:
-	out = Font_interface::get_default_font (me)->find_by_name ("noteheads--1mensural");
-	break;
-      case MLP_cs:
-	out = Font_interface::get_default_font (me)->find_by_name ("noteheads-lmensural");
-	break;
-      case MLP_SS:
-	out = brew_flexa (me, delta_pitch, false,
-			  flexa_width, thickness, true, UP);
-	break;
-      case MLP_LB:
-	out = brew_flexa (me, delta_pitch, false,
-			  flexa_width, thickness, false, CENTER);
-	break;
-      default:
-	programming_error (_f ("Mensural_ligature:"
-			       "unexpected case fall-through"));
-	return Molecule ();
-    }
-
-  SCM join_left_scm = me->get_grob_property ("join-left-amount");
-  if (join_left_scm != SCM_EOL)
-    {
-      int join_left = gh_scm2int (join_left_scm);
-      if (!join_left)
-	programming_error (_f ("Mensural_ligature: (join_left == 0)"));
-      Real blotdiameter = (me->get_paper ()->get_realvar (ly_symbol2scm ("blotdiameter")));
-      Interval x_extent = Interval (0, thickness);
-      Interval y_extent = (join_left > 0) ?
-	Interval (-join_left * 0.5 * staff_space, 0) :
-	Interval (0, -join_left * 0.5 * staff_space);
-      Box join_box (x_extent, y_extent);
-
-      Molecule join = Lookup::round_filled_box (join_box, blotdiameter);
-      out.add_molecule (join);
-    }
-
-  int pos = (int)rint (Staff_symbol_referencer::get_position (me));
-  add_ledger_lines(me, &out, pos, 0, ledger_take_space);
-  if (primitive & MLP_FLEXA)
-    {
-      pos += delta_pitch;
-      add_ledger_lines(me, &out, pos, 0.5*delta_pitch, ledger_take_space);
-    }
-
-  return out;
-}
-
-MAKE_SCHEME_CALLBACK (Mensural_ligature, brew_ligature_primitive, 1);
-SCM
-Mensural_ligature::brew_ligature_primitive (SCM smob)
-{
-  Grob *me = unsmob_grob (smob);
-  return internal_brew_primitive (me, false).smobbed_copy ();
-}
-
-MAKE_SCHEME_CALLBACK (Mensural_ligature, print, 1);
-SCM
-Mensural_ligature::print (SCM)
-{
-  return SCM_EOL;
-}
-
-ADD_INTERFACE (Mensural_ligature, "mensural-ligature-interface",
-	       "A mensural ligature",
-	       "delta-pitch flexa-width head-width join-left join-left-amount "
-	       "ligature-primitive-callback primitive thickness");
diff --git a/lily/metronome-engraver.cc b/lily/metronome-engraver.cc
deleted file mode 100644
index 058994f906..0000000000
--- a/lily/metronome-engraver.cc
+++ /dev/null
@@ -1,115 +0,0 @@
-/*
-  mark-engraver.cc -- implement Metronome_mark_engraver
-
-  source file of the GNU LilyPond music typesetter
-
-  (c) 1998--2004 Jan Nieuwenhuizen <janneke@gnu.org>
-*/
-
-#include <ctype.h>
-
-#include "bar-line.hh"
-#include "time-signature.hh"
-#include "engraver.hh"
-#include "engraver-group-engraver.hh"
-#include "item.hh"
-
-/**
-  put stuff over or next to  bars.  Examples: bar numbers, marginal notes,
-  rehearsal marks.
- */
-class Metronome_mark_engraver : public Engraver
-{
-public:
-  TRANSLATOR_DECLARATIONS(Metronome_mark_engraver);
-protected:
-  Item *text_;
-  Grob *bar_line_;
-  
-protected:
-  virtual void stop_translation_timestep ();
-  virtual void acknowledge_grob (Grob_info);
-  void create_items (Music*);
-  virtual bool try_music (Music *ev);
-  virtual void process_music ();
-  
-private:
-  Music *mark_ev_;
-};
-
-Metronome_mark_engraver::Metronome_mark_engraver ()
-{
-  text_ =0;
-  mark_ev_ = 0;
-}
-
-void
-Metronome_mark_engraver::acknowledge_grob (Grob_info inf)
-{
-  if (Bar_line::has_interface (inf.grob_))
-    {
-      bar_line_ = inf.grob_;
-    }
-  else if (text_ && Time_signature::has_interface (inf.grob_))
-    {
-      text_->set_parent (inf.grob_, X_AXIS);
-    }
-}
-
-void 
-Metronome_mark_engraver::stop_translation_timestep ()
-{
-  if (text_)
-    {
-      if (bar_line_ && !text_->get_parent (X_AXIS))
-	text_->set_parent (bar_line_, X_AXIS);
-      
-      text_->set_grob_property ("side-support-elements" , get_property ("stavesFound"));
-      typeset_grob (text_);
-      text_ =0;
-    }
-  mark_ev_ = 0;
-}
-
-
-void
-Metronome_mark_engraver::create_items (Music *rq)
-{
-  if (text_)
-    return;
-
-  text_ = make_item ("MetronomeMark");
-
-  announce_grob(text_, rq->self_scm());
-}
-
-
-bool
-Metronome_mark_engraver::try_music (Music* r)
-{
-  mark_ev_ = r;
-  return true;
-}
-
-void
-Metronome_mark_engraver::process_music ()
-{
-  if (mark_ev_)
-    {
-      create_items (mark_ev_);
-
-      SCM proc = get_property ("metronomeMarkFormatter");
-      SCM result= scm_call_2 (proc, mark_ev_->self_scm (),
-			      daddy_trans_->self_scm()); 
-      
-      text_->set_grob_property ("text", result);
-    }
-}
-
-ENTER_DESCRIPTION(Metronome_mark_engraver,
-/* descr */       "Engrave metro nome marking. This delegates the real work to the function in the metronomeMarkFormatter property",
-/* creats*/       "MetronomeMark",
-/* accepts */     "metronome-change-event",
-/* acks  */       "time-signature-interface bar-line-interface",
-/* reads */       "stavesFound metronomeMarkFormatter",
-/* write */       "");
diff --git a/lily/midi-def.cc b/lily/midi-def.cc
deleted file mode 100644
index 234ebeb2aa..0000000000
--- a/lily/midi-def.cc
+++ /dev/null
@@ -1,51 +0,0 @@
-/*
-  midi-def.cc -- implement Midi_def
-
-  source file of the GNU LilyPond music typesetter
-
-  (c) 1997--2004 Jan Nieuwenhuizen <janneke@gnu.org>
-
-*/
-#include <math.h>
-#include "misc.hh"
-#include "midi-def.hh"
-#include "performance.hh"
-#include "warn.hh"
-#include "scm-hash.hh"
-
-Midi_def::Midi_def ()
-{
-  // ugh
-  set_tempo (Moment (Rational (1, 4)), 60);
-}
-
-int
-Midi_def::get_tempo (Moment one_beat_mom)
-{
-  SCM wis  = ly_symbol2scm ("whole-in-seconds");
-  Moment *w = unsmob_moment (lookup_variable (wis));
-
-  Moment wholes_per_min = Moment (60);
-  if (!w)
-    {
-      programming_error  ("wholes-in-seconds not set.");
-      wholes_per_min /= 4;
-    }
-  else
-    {
-      wholes_per_min /= *w; 
-    }
-  
-  int beats_per_min =  int ((wholes_per_min / one_beat_mom).main_part_);
-  return int (beats_per_min);
-}
-
-void
-Midi_def::set_tempo (Moment one_beat_mom, int beats_per_minute_i)
-{
-  Moment beats_per_second = Moment (beats_per_minute_i) / Moment (60);
-
-  Moment m = Moment (1)/Moment (beats_per_second * one_beat_mom);
-  set_variable (ly_symbol2scm ("whole-in-seconds"), m.smobbed_copy ());
-}
-
diff --git a/lily/midi-item.cc b/lily/midi-item.cc
deleted file mode 100644
index 5715a01747..0000000000
--- a/lily/midi-item.cc
+++ /dev/null
@@ -1,470 +0,0 @@
-/*
-  midi-item.cc -- implement Midi items.
-
-  source file of the GNU LilyPond music typesetter
-
-  (c) 1997--2004 Jan Nieuwenhuizen <janneke@gnu.org>
- */
-
-#include "warn.hh"
-#include "main.hh"
-#include "misc.hh"
-#include "string.hh"
-#include "string-convert.hh"
-#include "midi-item.hh"
-#include "midi-stream.hh"
-#include "audio-item.hh"
-#include "duration.hh"
-#include "scm-option.hh"
-
-#include "killing-cons.tcc"
-
-#define PITCH_WHEEL_TOP    0x3FFF
-#define PITCH_WHEEL_CENTER 0x2000
-#define PITCH_WHEEL_BOTTOM 0x0000
-#define PITCH_WHEEL_RANGE  (PITCH_WHEEL_TOP - PITCH_WHEEL_BOTTOM)
-
-Midi_item*
-Midi_item::get_midi (Audio_item* a)
-{
-  if (Audio_key* i = dynamic_cast<Audio_key*> (a))
-    return new Midi_key (i);
-  else if (Audio_instrument* i = dynamic_cast<Audio_instrument*> (a))
-    return i->str_.length () ? new Midi_instrument (i) : 0;
-  else if (Audio_note* i = dynamic_cast<Audio_note*> (a))
-    return new Midi_note (i);
-  else if (Audio_dynamic* i = dynamic_cast<Audio_dynamic*> (a))
-    return new Midi_dynamic (i);
-  else if (Audio_piano_pedal* i = dynamic_cast<Audio_piano_pedal*> (a))
-    return new Midi_piano_pedal (i);
-  else if (Audio_tempo* i = dynamic_cast<Audio_tempo*> (a))
-    return new Midi_tempo (i);
-  else if (Audio_time_signature* i = dynamic_cast<Audio_time_signature*> (a))
-    return new Midi_time_signature (i);
-  else if (Audio_text* i = dynamic_cast<Audio_text*> (a))
-    //return i->text_string_.length () ? new Midi_text (i) : 0;
-    return new Midi_text (i);
-  else
-    assert (0);
-
-  // isn't C++ grand?
-  return 0;
-}
-
-void
-Midi_chunk::set (String header_string, String data_string, String footer_string)
-{
-  data_string_ = data_string;
-  footer_string_ = footer_string;
-  header_string_ = header_string;
-}
-  
-String
-Midi_chunk::data_string () const
-{
-  return data_string_;
-}
-
-String
-Midi_chunk::to_string () const
-{
-  String str = header_string_;
-  String dat = data_string ();
-  String length_string = String_convert::int2hex (dat.length () 
-    + footer_string_.length (), 8, '0');
-  length_string = String_convert::hex2bin (length_string);
-  str += length_string;
-  str += dat;
-  str += footer_string_;
-  return str;
-}
-
-Midi_duration::Midi_duration (Real seconds_f)
-{
-  seconds_ = seconds_f;
-}
-
-String
-Midi_duration::to_string () const
-{
-  return String ("<duration: ") + ::to_string (seconds_) + ">";
-}
-
-Midi_event::Midi_event (Moment delta_mom, Midi_item* midi)
-{
-  delta_mom_ = delta_mom;
-  midi_ = midi;
-}
-
-/*
-  ugh. midi output badly broken since grace note hackage.
- */
-String
-Midi_event::to_string () const
-{
-  Rational rat_dt = (delta_mom_.main_part_ * Rational (384) +
-    delta_mom_.grace_part_ * Rational (100))*Rational (4);
-  int delta_i = int (rat_dt);
-
-  String delta_string = Midi_item::i2varint_string (delta_i);
-  String midi_string = midi_->to_string ();
-  assert (midi_string.length ());
-  return delta_string + midi_string;
-}
-
-
-Midi_header::Midi_header (int format_i, int tracks_i, int clocks_per_4_i)
-{
-  String str;
-	
-  String format_string = String_convert::int2hex (format_i, 4, '0');
-  str += String_convert::hex2bin (format_string);
-	
-  String tracks_string = String_convert::int2hex (tracks_i, 4, '0');
-  str += String_convert::hex2bin (tracks_string);
-
-  String tempo_string = String_convert::int2hex (clocks_per_4_i, 4, '0');
-  str += String_convert::hex2bin (tempo_string);
-
-  set ("MThd", str, "");
-}
-
-Midi_instrument::Midi_instrument (Audio_instrument* a)
-{
-  audio_ = a;
-  audio_->str_.to_lower ();
-}
-
-String
-Midi_instrument::to_string () const
-{
-  Byte program_byte = 0;
-  bool found = false;
-
-  /*
-    UGH. don't use eval.
-   */
-  SCM proc = scm_primitive_eval (ly_symbol2scm ("midi-program")); 
-  SCM program = gh_call1 (proc, ly_symbol2scm (audio_->str_.to_str0 ()));
-  found = (program != SCM_BOOL_F);
-  if (found)
-    program_byte = gh_scm2int(program);
-  else
-      warning (_f ("no such MIDI instrument: `%s'", audio_->str_.to_str0 ()));
-
-  String str = ::to_string ((char) (0xc0 + channel_)); //YIKES! FIXME: Should be track. -rz
-  str += ::to_string ((char)program_byte);
-  return str;
-}
-
-Midi_item::Midi_item ()
-{
-  channel_ = 0;
-}
-
-Midi_item::~Midi_item ()
-{
-}
-
-String
-Midi_item::i2varint_string (int i)
-{
-  int buffer_i = i & 0x7f;
-  while ((i >>= 7) > 0) 
-    {
-      buffer_i <<= 8;
-      buffer_i |= 0x80;
-      buffer_i += (i & 0x7f);
-    }
-
-  String str;
-  while (1) 
-    {
-      str += ::to_string ((char)buffer_i);
-      if (buffer_i & 0x80)
-	buffer_i >>= 8;
-      else
-	break;
-    }
-  return str;
-}
-
-Midi_key::Midi_key (Audio_key*a)
-{
-  audio_ = a;
-}
-
-String
-Midi_key::to_string () const
-{
-  String str = "ff5902";
-  str += String_convert::int2hex (audio_->accidentals_, 2, '0');
-  if (audio_->major_)
-    str += String_convert::int2hex (0, 2, '0');
-  else
-    str += String_convert::int2hex (1, 2, '0');
-  return String_convert::hex2bin (str);
-}
-
-Midi_time_signature::Midi_time_signature (Audio_time_signature* a)
-{
-  audio_ = a;
-  clocks_per_1_ = 18;
-}
-
-String
-Midi_time_signature::to_string () const
-{
-  int num = audio_->beats_;
-  int den = audio_->one_beat_;
-
-  String str = "ff5804";
-  str += String_convert::int2hex (num, 2, '0');
-  str += String_convert::int2hex (intlog2 (den) , 2, '0');
-  str += String_convert::int2hex (clocks_per_1_, 2, '0');
-  str += String_convert::int2hex (8, 2, '0');
-  return String_convert::hex2bin (str);
-}
-
-Midi_note::Midi_note (Audio_note* a)
-{
-  audio_ = a;
-  dynamic_byte_ = 0x7f;
-}
-
-Moment
-Midi_note::get_length () const
-{
-  Moment m = audio_->length_mom_;
-  return m;
-}
-
-int
-Midi_note::get_fine_tuning () const
-{
-  int ft = audio_->pitch_.quartertone_pitch ();
-  ft -= 2 * audio_->pitch_.semitone_pitch();
-  ft *= 50; // 1 quarter tone = 50 cents
-  return ft;
-}
-
-int
-Midi_note::get_pitch () const
-{
-  int p = audio_->pitch_.semitone_pitch () + audio_->transposing_;
-  if (p == INT_MAX)
-    {
-      warning (_ ("silly pitch"));
-      p = 0;
-     }
-  return p;
-}
-
-String
-Midi_note::to_string () const
-{
-  Byte status_byte = (char) (0x90 + channel_);
-  String str = "";
-  int finetune;
-
-  // print warning if fine tuning was needed, HJJ
-  if (get_fine_tuning () != 0)
-    {
-      warning (_f ("Experimental: temporarily fine tuning (of %d cents) a channel.", 
-	    get_fine_tuning ()));
-
-      finetune = PITCH_WHEEL_CENTER;
-      // Move pitch wheel to a shifted position.
-      // The pitch wheel range (of 4 semitones) is multiplied by the cents.
-      finetune += (PITCH_WHEEL_RANGE * get_fine_tuning ()) / (4 * 100);
-
-      str += ::to_string ((char) (0xE0 + channel_));
-      str += ::to_string ((char) (finetune & 0x7F));
-      str += ::to_string ((char) (finetune >> 7));
-      str += ::to_string ((char) (0x00));
-    }
-
-  str += ::to_string ((char)status_byte);
-  str += ::to_string ((char) (get_pitch () + c0_pitch_i_));
-  str += ::to_string ((char)dynamic_byte_);
-
-  return str;
-}
-
-Midi_note_off::Midi_note_off (Midi_note* n)
-  : Midi_note (n->audio_)
-{
-  on_ = n;
-  channel_ = n->channel_;
-
-  // Anybody who hears any difference, or knows how this works?
-  //  0 should definitely be avoided, notes stick on some sound cards.
-  // 64 is supposed to be neutral
-  
-  aftertouch_byte_ = 64;
-}
-
-String
-Midi_note_off::to_string () const
-{
-  Byte status_byte = (char) (0x80 + channel_);
-
-  String str = ::to_string ((char)status_byte);
-  str += ::to_string ((char) (get_pitch () + Midi_note::c0_pitch_i_));
-  str += ::to_string ((char)aftertouch_byte_);
-
-  if (get_fine_tuning () != 0)
-    {
-      // Move pitch wheel back to the central position.
-      str += ::to_string ((char) 0x00);
-      str += ::to_string ((char) (0xE0 + channel_));
-      str += ::to_string ((char) (PITCH_WHEEL_CENTER & 0x7F));
-      str += ::to_string ((char) (PITCH_WHEEL_CENTER >> 7));
-    }
-
-  return str;
-}
-
-Midi_dynamic::Midi_dynamic (Audio_dynamic* a)
-{
-  audio_ = a;
-}
-
-String
-Midi_dynamic::to_string () const
-{
-  Byte status_byte = (char) (0xB0 + channel_);
-  String str = ::to_string ((char)status_byte);
-
-  /*
-    Main volume controller (per channel):
-    07 MSB
-    27 LSB
-   */
-  static Real const full_scale = 127;
-  
-  int volume = (int) (audio_->volume_*full_scale);
-  if (volume <= 0)
-    volume = 1;
-  if (volume > full_scale)
-    volume = (int)full_scale;
-
-  str += ::to_string ((char)0x07);
-  str += ::to_string ((char)volume);
-  return str;
-}
-
-Midi_piano_pedal::Midi_piano_pedal (Audio_piano_pedal* a)
-{
-  audio_ = a;
-}
-
-String
-Midi_piano_pedal::to_string () const
-{
-  Byte status_byte = (char) (0xB0 + channel_);
-  String str = ::to_string ((char)status_byte);
-
-  if (audio_->type_string_ == "Sostenuto")
-    str += ::to_string ((char)0x42);
-  else if (audio_->type_string_ == "Sustain")
-    str += ::to_string ((char)0x40);
-  else if (audio_->type_string_ == "UnaCorda")
-    str += ::to_string ((char)0x43);
-
-  int pedal = ((1 - audio_->dir_) / 2) * 0x7f;
-  str += ::to_string ((char)pedal);
-  return str;
-}
-
-Midi_tempo::Midi_tempo (Audio_tempo* a)
-{
-  audio_ = a;
-}
-
-String
-Midi_tempo::to_string () const
-{
-  int useconds_per_4_i = 60 * (int)1e6 / audio_->per_minute_4_;
-  String str = "ff5103";
-  str += String_convert::int2hex (useconds_per_4_i, 6, '0');
-  return String_convert::hex2bin (str);
-}
-
-Midi_text::Midi_text (Audio_text* a)
-{
-  audio_ = a;
-}
-
-String
-Midi_text::to_string () const
-{
-  String str = "ff" + String_convert::int2hex (audio_->type_, 2, '0');
-  str = String_convert::hex2bin (str);
-  str += i2varint_string (audio_->text_string_.length ());
-  str += audio_->text_string_;
-  return str;
-}
-
-Midi_track::Midi_track ()
-  : Midi_chunk ()
-{
-  //                4D 54 72 6B     MTrk
-  //                00 00 00 3B     chunk length (59)
-  //        00      FF 58 04 04 02 18 08    time signature
-  //        00      FF 51 03 07 A1 20       tempo
- 
-// FF 59 02 sf mi  Key Signature
-//         sf = -7:  7 flats
-//         sf = -1:  1 flat
-//         sf = 0:  key of C
-//         sf = 1:  1 sharp
-//         sf = 7: 7 sharps
-//         mi = 0:  major key
-//         mi = 1:  minor key
-
-  number_ = 0;
-	
-  char const* data_str0 = ""
-    //        "00" "ff58" "0404" "0218" "08"
-    //	"00" "ff51" "0307" "a120"
-    // why a key at all, in midi?
-    // key: C
-    //	"00" "ff59" "02" "00" "00"
-    // key: F (scsii-menuetto)
-    //				  "00" "ff59" "02" "ff" "00"
-	;
-
-  String data_string;
-  // only for format 0 (currently using format 1)?
-  data_string += String_convert::hex2bin (data_str0);
-
-  char const* footer_str0 = "00" "ff2f" "00";
-  String footer_string = String_convert::hex2bin (footer_str0);
-
-  set ("MTrk", data_string, footer_string);
-}
-
-void 
-Midi_track::add (Moment delta_time_mom, Midi_item* midi)
-{
-  assert (delta_time_mom >= Moment (0));
-
-  Midi_event * e = new Midi_event (delta_time_mom, midi);
-  event_p_list_.append (new Killing_cons<Midi_event> (e, 0));
-}
-
-String
-Midi_track::data_string () const
-{
-  String str = Midi_chunk::data_string ();
-  if (midi_debug_global_b)
-    str += "\n";
-  for (Cons<Midi_event> *i=event_p_list_.head_; i; i = i->next_) 
-    {
-      str += i->car_->to_string ();
-      if (midi_debug_global_b)
-        str += "\n";
-    }
-  return str;
-}
diff --git a/lily/midi-stream.cc b/lily/midi-stream.cc
deleted file mode 100644
index e5c760e7c0..0000000000
--- a/lily/midi-stream.cc
+++ /dev/null
@@ -1,71 +0,0 @@
-/*
-  midi-stream.cc -- implement Midi_stream
-
-  source file of the GNU LilyPond music typesetter
-
-  (c) 1997--2004 Jan Nieuwenhuizen <janneke@gnu.org>
-*/
-
-
-#include "stream.hh"
-#include "string.hh"
-#include "string-convert.hh"
-#include "main.hh"
-#include "misc.hh"
-#include "midi-item.hh"
-#include "midi-stream.hh"
-#include "warn.hh"
-#include "scm-option.hh"
-
-Midi_stream::Midi_stream (String filename)
-{
-  filename_string_ = filename;
-  out_file_ = fopen (filename.to_str0(), "wb");
-}
-
-Midi_stream::~Midi_stream ()
-{
-  fclose (out_file_);
-}
-
-Midi_stream&
-Midi_stream::operator << (String str)
-{
-  size_t sz = sizeof (Byte);
-  size_t n = str.length ();
-  size_t written = fwrite (str.get_bytes (),
-			   sz, n, out_file_);
-
-  if (written != sz * n)
-    warning (_ ("Could not write file. Disk full?"));
-
-  return *this;
-}
-
-Midi_stream&
-Midi_stream::operator << (Midi_item const& midi_c_r)
-{
-  String str = midi_c_r.to_string ();
-
-  // ugh, should have separate debugging output with Midi*::print routines
-  if (midi_debug_global_b)
-    {
-      str = String_convert::bin2hex (str) + "\n";
-      for (int i = str.index ("0a"); i >= 0; i = str.index ("0a"))
-	{
-	  str[i] = '\n';
-	  str[i + 1] = '\t';
-	}
-    }
-
-  return operator << (str);
-}
-
-Midi_stream&
-Midi_stream::operator << (int i)
-{
-  // output binary string ourselves
-  *this << Midi_item::i2varint_string (i);
-  return *this;
-}
-
diff --git a/lily/midi-walker.cc b/lily/midi-walker.cc
deleted file mode 100644
index b0a67ca6f9..0000000000
--- a/lily/midi-walker.cc
+++ /dev/null
@@ -1,173 +0,0 @@
-/*
-  midi-walker.cc -- implement Midi_walker
-
-  source file of the GNU LilyPond music typesetter
-
-  (c) 1997--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-         Jan Nieuwenhuizen <janneke@gnu.org>
- */
-
-#include "midi-walker.hh"
-#include "audio-column.hh"
-#include "audio-item.hh"
-#include "audio-staff.hh"
-#include "midi-item.hh"
-#include "midi-stream.hh"
-#include "warn.hh"
-
-Midi_note_event::Midi_note_event () 
-{ 
-  ignore_b_ = false;
-}
-
-int
-compare (Midi_note_event const& left, Midi_note_event const& right)
-{
-  Moment m =   (left.key - right.key);
-
-  if (m<0)
-    return -1;
-  else if (m > 0)
-    return 1;
-  else
-    return 0;
-}
-
-Midi_walker::Midi_walker (Audio_staff* audio_staff, Midi_track* track)
-{
-  track_ = track;
-  index_= 0;
-  items_ = &audio_staff->audio_items_;
-
-  last_mom_ = 0;
-}
-
-Midi_walker::~Midi_walker ()
-{ 
-  // ugh
-  do_stop_notes (last_mom_ + Moment (Rational (10, 1)));
-}
-
-/**
-  Find out if start_note event is needed, and do it if needed.
- */
-void 
-Midi_walker::do_start_note (Midi_note* note)
-{
-  Audio_item* ptr = (*items_)[index_];
-  Moment stop_mom = note->get_length () + ptr->audio_column_->at_mom ();
-
-  bool play_start = true;
-  for (int i=0; i < stop_note_queue.size (); i++) 
-    {
-      /* if this pith already in queue */
-      if (stop_note_queue[i].val->get_pitch () == note->get_pitch ()) 
-	{
-	  if (stop_note_queue[i].key < stop_mom)
-	    {
-	      /* let stopnote in queue be ignored,
-	       new stop note wins */
-	      stop_note_queue[i].ignore_b_ = true;
-	      /* don't replay start note, */
-	      play_start = false;
-	      break;
-	    }
-	  else
-	    {
-	      /* skip this stopnote,
-		 don't play the start note */
-	      delete note;
-	      note = 0;
-	      break;
-	  }
-	}
-    }
-
-  if (note)
-    {
-      Midi_note_event e;
-      e.val = new Midi_note_off (note);
-      e.key = stop_mom;
-      stop_note_queue.insert (e);
-
-      if (play_start)
-	output_event (ptr->audio_column_->at_mom (), note);
-    }
-}
-
-/**
-  Output note events for all notes which end before #max_mom#
- */
-void
-Midi_walker::do_stop_notes (Moment max_mom)
-{
-  while (stop_note_queue.size () && stop_note_queue.front ().key <= max_mom) 
-    {
-      Midi_note_event e = stop_note_queue.get ();
-      if (e.ignore_b_)
-	{
-	  delete e.val;
-	  continue;
-	}
-      
-      Moment stop_mom = e.key;
-      Midi_note* note = e.val;
-	
-      output_event (stop_mom, note);
-    }
-}
-
-/** 
-  Advance the track to #now#, output the item, and adjust current "moment". 
- */
-void
-Midi_walker::output_event (Moment now_mom, Midi_item* l)
-{
-  Moment delta_t = now_mom - last_mom_ ;
-  last_mom_ = now_mom;
-
-  /*
-    this is not correct, but at least it doesn't crash when you
-    start with graces
-   */
-  if (delta_t < Moment(0))
-    {
-      delta_t = Moment (0);
-    }
-
-  
-  track_->add (delta_t, l);
-}
-
-void
-Midi_walker::process ()
-{
-  Audio_item* audio = (*items_)[index_];
-  do_stop_notes (audio->audio_column_->at_mom ());
-
-  if (Midi_item* midi = Midi_item::get_midi (audio))
-    {
-      midi->channel_ = track_->channel_;
-      //midi->channel_ = track_->number_;
-      if (Midi_note* note = dynamic_cast<Midi_note*> (midi))
-	{
-	  if (note->get_length ().to_bool ())
-	    do_start_note (note);
-	}
-      else
-	output_event (audio->audio_column_->at_mom (), midi);
-    }
-}
-
-bool
-Midi_walker::ok () const
-{
-  return index_ <items_->size ();
-}
-
-void
-Midi_walker::operator ++ (int)
-{
-  assert (ok ());
-  index_++;
-}
diff --git a/lily/misc.cc b/lily/misc.cc
deleted file mode 100644
index bd7cce55c7..0000000000
--- a/lily/misc.cc
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
-  misc.cc -- implement various stuff
-
-  source file of the GNU LilyPond music typesetter
-
-  (c) 1997--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-    Jan Nieuwenhuizen <janneke@gnu.org>
-*/
-
-#include <math.h>
-#include "misc.hh"
-
-/*
-  Return the 2-log, rounded down 
- */
-int
-intlog2 (int d)
-{
-  assert (d);
-  int i=0;
-  while ((d != 1)) 
-    {
-      d /= 2;
-      i++;
-    }
-  
-  assert (! (d/2));
-  return i;
-}
-
-double
-log_2 (double x)
-{
-  return log (x)  /log (2.0);
-}
-
diff --git a/lily/molecule-scheme.cc b/lily/molecule-scheme.cc
deleted file mode 100644
index 3ac21c095a..0000000000
--- a/lily/molecule-scheme.cc
+++ /dev/null
@@ -1,227 +0,0 @@
-/*
-  molecule-scheme.cc -- implement Molecule
-
-  source file of the GNU LilyPond music typesetter
-
-  (c) 1997--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-*/
-
-#include "molecule.hh"
-#include "font-metric.hh"
-
-LY_DEFINE(ly_molecule_set_extent_x,"ly:molecule-set-extent!", 3 , 0, 0, 
-	  (SCM mol, SCM axis, SCM np),
-	  "Set the extent (@var{extent} must be a pair of numbers) of @var{mol} in \n"
-"@var{axis} direction (0 or 1 for x- and y-axis respectively).\n"
-"\n"
-"Note that an extent @code{(A . B)} is an interval and hence @code{A} is\n"
-"smaller than @code{B}, and is often negative.\n"
-)
-{
-  Molecule* m = unsmob_molecule (mol);
-  SCM_ASSERT_TYPE (m, mol, SCM_ARG1, __FUNCTION__, "molecule");
-  SCM_ASSERT_TYPE (is_axis (axis), axis, SCM_ARG2, __FUNCTION__, "axis");
-  SCM_ASSERT_TYPE (is_number_pair (np), np, SCM_ARG3, __FUNCTION__, "number pair");
-
-  Interval iv = ly_scm2interval (np);
-  m->dim_[Axis (gh_scm2int (axis))] = iv;
-
-  return SCM_UNDEFINED;
-}
-
-
-LY_DEFINE(ly_translate_molecule_axis,"ly:molecule-translate-axis", 3, 0, 0, 
-	  (SCM mol, SCM amount, SCM axis),
-	  "Return a @var{mol}, but translated by @var{amount} in @var{axis} direction")
-{
-  Molecule* m = unsmob_molecule (mol);
-  SCM_ASSERT_TYPE (m, mol, SCM_ARG1, __FUNCTION__, "molecule");
-  SCM_ASSERT_TYPE (gh_number_p (amount), amount, SCM_ARG2, __FUNCTION__, "number pair");
-  SCM_ASSERT_TYPE (is_axis (axis), axis, SCM_ARG3, __FUNCTION__, "axis");
-
-
-  Molecule q (*m);
-  q.translate_axis (gh_scm2double (amount), Axis (gh_scm2int (axis)));
-
-  return q.smobbed_copy();
-}
-
-LY_DEFINE(ly_translate_molecule,"ly:molecule-translate", 2, 0, 0, 
-	  (SCM mol, SCM offset),
-	  "Return a @var{mol}, but translated by @var{offset} (a pair of numbers).")
-{
-  Molecule* m = unsmob_molecule (mol);
-  SCM_ASSERT_TYPE (m, mol, SCM_ARG1, __FUNCTION__, "molecule");
-  SCM_ASSERT_TYPE (is_number_pair (offset), offset, SCM_ARG2, __FUNCTION__, "number pair");
-  Offset o = ly_scm2offset (offset);
-  
-  Molecule q (*m);
-  q.translate (o);
-  return q.smobbed_copy();
-}
-
-LY_DEFINE(ly_molecule_get_extent,
-	  "ly:molecule-get-extent", 2 , 0, 0,  (SCM mol, SCM axis),
-	  "Return a pair of numbers signifying the extent of @var{mol} in "
-"@var{axis} direction (0 or 1 for x and y axis respectively)."
-)
-{
-  Molecule *m = unsmob_molecule (mol);
-  SCM_ASSERT_TYPE (m, mol, SCM_ARG1, __FUNCTION__, "molecule");
-  SCM_ASSERT_TYPE (is_axis (axis), axis, SCM_ARG2, __FUNCTION__, "axis");
- 
-  return ly_interval2scm (m->extent (Axis (gh_scm2int (axis))));
-}
-
-
-LY_DEFINE(ly_molecule_combined_at_edge,
-	  "ly:molecule-combine-at-edge",
-	  4, 2, 0,  (SCM first, SCM axis, SCM direction,
-		     SCM second,
-		     SCM padding,
-		     SCM minimum),
-	  "Construct a molecule by putting @var{second} next to "
-"@var{first}. @var{axis} can be 0 (x-axis) or 1 (y-axis), @var{direction} can be "
-"-1 (left or down) or 1 (right or up). "
-"The molecules are juxtaposed with  @var{padding} as extra space. If "
-"this puts the reference points closer than @var{minimum}, they are moved "
-"by the latter amount.")
-
-{
-  Molecule * m1 = unsmob_molecule (first);
-  Molecule * m2 = unsmob_molecule (second);
-  Molecule result;
-
-
-  SCM_ASSERT_TYPE(is_axis (axis), axis, SCM_ARG3, __FUNCTION__, "axis");
-  SCM_ASSERT_TYPE(is_direction (direction), direction, SCM_ARG4, __FUNCTION__, "dir");
-
-  Real p = 0.0;
-  if (padding != SCM_UNDEFINED)
-    {
-      SCM_ASSERT_TYPE(gh_number_p (padding), padding, SCM_ARG5, __FUNCTION__, "number");
-      p = gh_scm2double (padding);
-    }
-  Real m =0.0;
-  if (minimum != SCM_UNDEFINED)
-    {
-      SCM_ASSERT_TYPE(gh_number_p (minimum), minimum, SCM_ARG6, __FUNCTION__, "number");
-      m = gh_scm2double (minimum);
-    }
-  
-  if (m1)
-    result = *m1;
-  if (m2)
-    result.add_at_edge (Axis (gh_scm2int (axis)), Direction (gh_scm2int (direction)),
-			*m2, p, m);
-
-  return result.smobbed_copy ();
-}
-
-/*
-  FIXME: support variable number of arguments. 
-  
- */
-LY_DEFINE(ly_molecule_add , 
-	  "ly:molecule-add", 0, 0, 1, (SCM args),
-	  "Combine molecules. Takes any number of arguments."
-	  )
-{
-#define FUNC_NAME __FUNCTION__
-  SCM_VALIDATE_REST_ARGUMENT (args);
-
-  Molecule result;
-
-  while (!SCM_NULLP (args))
-    {
-      Molecule * m = unsmob_molecule (gh_car (args));
-
-      if (!m)
-	SCM_ASSERT_TYPE(m, gh_car (args), SCM_ARGn, __FUNCTION__,
-			"Molecule");
-
-      result.add_molecule (*m);
-
-      args = gh_cdr (args);
-    }
-  
-  return result.smobbed_copy ();
-}
-
-LY_DEFINE(ly_make_molecule,
-	  "ly:make-molecule", 3, 0, 0,  (SCM expr, SCM xext, SCM yext),
-	  " \n"
-"The objective of any typesetting system is to put ink on paper in the \n"
-"right places. For LilyPond, this final stage is left to the @TeX{} and \n"
-"the printer subsystem. For lily, the last stage in processing a score is \n"
-"outputting a description of what to put where.  This description roughly \n"
-"looks like \n"
-"@example \n"
-"        PUT glyph AT (x,y) \n"
-"        PUT glyph AT (x,y) \n"
-"        PUT glyph AT (x,y)  \n"
-"@end example \n"
-"you merely have to look at the tex output of lily to see this. \n"
-"Internally these instructions are encoded in Molecules.@footnote{At some \n"
-"point LilyPond also contained Atom-objects, but they have been replaced \n"
-"by Scheme expressions, making the name outdated.}  A molecule is \n"
-"what-to-print-where information that also contains dimension information \n"
-"(how large is this glyph?). \n"
-" \n"
-"Conceptually, Molecules can be constructed from Scheme code, by \n"
-"translating a Molecule and by combining two molecules. In BNF \n"
-"notation: \n"
-" \n"
-"@example \n"
-"Molecule  :: COMBINE Molecule Molecule \n"
-"           | TRANSLATE Offset Molecule \n"
-"           | GLYPH-DESCRIPTION \n"
-"           ; \n"
-"@end example \n"
-" \n"
-"If you are interested in seeing how this information is stored, you \n"
-"can run with the @code{-f scm} option. The scheme expressions are then \n"
-"dumped in the output file.")
-{
-  SCM_ASSERT_TYPE (is_number_pair (xext), xext, SCM_ARG2, __FUNCTION__, "number pair");
-  SCM_ASSERT_TYPE (is_number_pair (yext), yext, SCM_ARG3, __FUNCTION__, "number pair");  
-
-  Box b (ly_scm2interval (xext), ly_scm2interval(yext));
-  Molecule m (b, expr);
-  return m.smobbed_copy ();
-}
-
-
-SCM
-fontify_atom (Font_metric const * met, SCM f)
-{
-  if (f == SCM_EOL)
-    return f;
-  else
-    return  scm_list_n (ly_symbol2scm ("fontify"),
-			ly_quote_scm (met->description_), f, SCM_UNDEFINED);
-}
-
-LY_DEFINE(ly_fontify_atom,"ly:fontify-atom", 2, 0, 0, 
-	  (SCM met, SCM f),
-	  "Add a font selection command for the font metric @var{met} to @var{f}.")
-{
-  SCM_ASSERT_TYPE(unsmob_metrics (met), met, SCM_ARG1, __FUNCTION__, "font metric");
-
-  return fontify_atom (unsmob_metrics (met), f);
-}
-LY_DEFINE(ly_align_to_x,"ly:molecule-align-to!", 3, 0, 0,  (SCM mol, SCM axis, SCM dir),
-
-	  "Align @var{mol} using its own extents. @var{dir} is a number -1, 1 are "
-	  " left and right respectively. Other values are interpolated (so 0 means "
-	  " the center. ")
-{
-  SCM_ASSERT_TYPE(unsmob_molecule (mol), mol, SCM_ARG1, __FUNCTION__, "molecule");
-  SCM_ASSERT_TYPE(is_axis (axis), axis, SCM_ARG2, __FUNCTION__, "axis");
-  SCM_ASSERT_TYPE(gh_number_p (dir), dir, SCM_ARG3, __FUNCTION__, "number");
-
-  unsmob_molecule (mol)->align_to ((Axis)gh_scm2int (axis),
-				   gh_scm2double (dir));
-
-  return SCM_UNDEFINED;
-}
diff --git a/lily/molecule.cc b/lily/molecule.cc
deleted file mode 100644
index 552e88675c..0000000000
--- a/lily/molecule.cc
+++ /dev/null
@@ -1,192 +0,0 @@
-/*
-  molecule.cc -- implement Molecule
-
-  source file of the GNU LilyPond music typesetter
-
-  (c) 1997--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-*/
-
-#include <math.h>
-#include <libc-extension.hh>	// isinf
-
-#include "font-metric.hh" 
-#include "dimensions.hh"
-#include "interval.hh"
-#include "string.hh"
-#include "molecule.hh"
-#include "warn.hh"
-
-
-#include "ly-smobs.icc"
-
-
-SCM
-Molecule::smobbed_copy () const
-{
-  Molecule * m = new Molecule (*this);
-
-  return m->smobbed_self ();
-}
-
-Interval
-Molecule::extent (Axis a) const
-{
-  return dim_[a];
-}
-
-Molecule::Molecule (Box b, SCM func)
-{
-  expr_ = func;
-  dim_ = b;
-}
-
-Molecule::Molecule ()
-{
-  expr_ = SCM_EOL;
-  set_empty (true);
-}
-
-void
-Molecule::translate (Offset o)
-{
-  Axis a = X_AXIS;
-  while (a < NO_AXES)
-    {
-      if (abs (o[a]) > 100 CM
-	  || isinf (o[a]) || isnan (o[a]))
-	{
-	  programming_error ("Improbable offset for translation: setting to zero");
-	  o[a] =  0.0;
-	}
-      incr (a);
-    }
-
-  expr_ = scm_list_n (ly_symbol2scm ("translate-molecule"),
-		   ly_offset2scm (o),
-		   expr_, SCM_UNDEFINED);
-  if (!is_empty ())
-    dim_.translate (o);
-}
-  
-
-void
-Molecule::translate_axis (Real x,Axis a)
-{
-  Offset o (0,0);
-  o[a] = x;
-  translate (o);
-}  
-
-
-
-void
-Molecule::add_molecule (Molecule const &m)
-{
-  expr_ = scm_list_n (ly_symbol2scm ("combine-molecule"),
-		   m.expr_,
-		   expr_, SCM_UNDEFINED);
-  dim_.unite (m.dim_);
-}
-
-void
-Molecule::set_empty (bool e)
-{
-  if (e)
-    {
-      dim_[X_AXIS].set_empty ();
-      dim_[Y_AXIS].set_empty ();
-    }
-  else
-    {
-      dim_[X_AXIS] = Interval (0,0);
-      dim_[Y_AXIS] = Interval (0,0);
-    }
-}
-
-
-void
-Molecule::align_to (Axis a, Real x)
-{
-  if (is_empty ())
-    return ;
-
-  Interval i (extent (a));
-  translate_axis (-i.linear_combination (x), a);
-}
-
-/*
-  See scheme Function.
- */
-void
-Molecule::add_at_edge (Axis a, Direction d, Molecule const &m, Real padding,
-		       Real minimum)
-{
-  Real my_extent= is_empty () ? 0.0 : dim_[a][d];
-  Interval i (m.extent (a));
-  Real his_extent;
-  if (i.is_empty ())
-    {
-      programming_error ("Molecule::add_at_edge: adding empty molecule.");
-      his_extent = 0.0;
-    }
-  else
-    his_extent = i[-d];      
-
-  Real offset = (my_extent -  his_extent)  + d*padding;
-  if (minimum > 0  && fabs (offset) <  minimum)
-    offset = sign (offset) * minimum; 
-  
-  Molecule toadd (m);
-  toadd.translate_axis (offset, a);
-  add_molecule (toadd);
-}
-
-
-
-/*
-  Hmm... maybe this is not such a good idea ; stuff can be empty,
-  while expr_ == '()
- */
-bool
-Molecule::is_empty () const
-{
-  return expr_ == SCM_EOL;
-}
-
-SCM
-Molecule::get_expr () const
-{
-  return expr_;
-}
-
-
-
-Box
-Molecule::extent_box () const
-{
-  return dim_;
-}
-IMPLEMENT_SIMPLE_SMOBS (Molecule);
-
-
-int
-Molecule::print_smob (SCM , SCM port, scm_print_state *)
-{
-  scm_puts ("#<Molecule ", port);
-  scm_puts (" >", port);
-  
-  return 1;
-}
-
-  
-SCM
-Molecule::mark_smob (SCM s)
-{
-  Molecule  *r = (Molecule *) ly_cdr (s);
-  
-  return r->expr_;
-}
-
-IMPLEMENT_TYPE_P (Molecule, "ly:molecule?");
-IMPLEMENT_DEFAULT_EQUAL_P (Molecule);
-
diff --git a/lily/moment.cc b/lily/moment.cc
deleted file mode 100644
index 9b52517e3c..0000000000
--- a/lily/moment.cc
+++ /dev/null
@@ -1,250 +0,0 @@
-/*   
-  moment.cc --  implement Moment
-  
-  source file of the GNU LilyPond music typesetter
-  
-  (c) 1999--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-  
- */
-
-
-#include "lily-guile.hh"
-#include "moment.hh"
-#include "warn.hh"
-#include "ly-smobs.icc"
-
-IMPLEMENT_SIMPLE_SMOBS (Moment);
-IMPLEMENT_TYPE_P (Moment, "ly:moment?");
-
-SCM
-Moment::mark_smob (SCM)
-{
-  return SCM_EOL;
-}
-
-
-SCM
-Moment::smobbed_copy () const
-{
-  Moment * m = new Moment (*this);
-  return m->smobbed_self ();
-}
-
-
-int
-Moment::print_smob (SCM s, SCM port, scm_print_state *)
-{
-  Moment  *r = (Moment *) ly_cdr (s);
-     
-  scm_puts ("#<Mom ", port);
-  String str = r->to_string ();
-  scm_puts ((char *)str.to_str0 (), port);
-  scm_puts (">", port);
-  
-  return 1;
-}
-
-/*
-  TODO: add optional factor argument.
-*/
-LY_DEFINE (make_moment,"ly:make-moment", 2,0,0, (SCM n, SCM d),
-	   "create the rational number with main timing @var{n}/@var{d}. \n"
-	   "\n"
-	   "\n"
-	   "Moment is a point in musical time. It is consists of a pair of\n"
-	   "rationals (@var{m},@var{g}), where @var{m} is the timing for the  main\n"
-	   "notes, and @var{g} the timing for  grace notes. In absence of grace\n"
-	   "notes, @var{g} is zero.\n"
-	   )
-{
-  SCM_ASSERT_TYPE(SCM_INUMP (n), n, SCM_ARG1, __FUNCTION__, "integer");
-  SCM_ASSERT_TYPE(SCM_INUMP (d), d, SCM_ARG2, __FUNCTION__, "integer");
-
-  return Moment (Rational (gh_scm2int (n), gh_scm2int (d))).smobbed_copy();
-}
-
-LY_DEFINE (add_moment,"ly:add-moment", 2,0,0, (SCM a, SCM b),
-	   "Add two moments."
-	   )
-{
-  Moment * ma = unsmob_moment (a);
-  Moment * mb = unsmob_moment (b);
-  SCM_ASSERT_TYPE (ma, a, SCM_ARG1, __FUNCTION__, "moment");
-  SCM_ASSERT_TYPE (mb, b, SCM_ARG2, __FUNCTION__, "moment");
-
-  return (*ma + *mb).smobbed_copy();
-}
-
-
-LY_DEFINE (mul_moment,"ly:mul-moment", 2,0,0, (SCM a, SCM b),
-	   "Multiply two moments."
-	   )
-{
-  Moment * ma = unsmob_moment (a);
-  Moment * mb = unsmob_moment (b);
-  SCM_ASSERT_TYPE (ma, a, SCM_ARG1, __FUNCTION__, "moment");
-  SCM_ASSERT_TYPE (mb, b, SCM_ARG2, __FUNCTION__, "moment");
-
-  return (*ma *  *mb).smobbed_copy();
-}
-
-
-
-LY_DEFINE (div_moment,"ly:div-moment", 2,0,0, (SCM a, SCM b),
-	   "Divide two moments."
-	   )
-{
-  Moment * ma = unsmob_moment (a);
-  Moment * mb = unsmob_moment (b);
-  SCM_ASSERT_TYPE (ma, a, SCM_ARG1, __FUNCTION__, "moment");
-  SCM_ASSERT_TYPE (mb, b, SCM_ARG2, __FUNCTION__, "moment");
-
-  return (*ma /  *mb).smobbed_copy();
-}
-
-LY_DEFINE (ly_moment_less_p,"ly:moment<?", 2,0,0, (SCM a, SCM b),
-	   "Comparation.")
-{
-  Moment * ma = unsmob_moment (a);
-  Moment * mb = unsmob_moment (b);
-  SCM_ASSERT_TYPE (ma, a, SCM_ARG1, __FUNCTION__, "moment");
-  SCM_ASSERT_TYPE (mb, b, SCM_ARG2, __FUNCTION__, "moment");
-
-  return gh_bool2scm (*ma <  *mb);
-}
-
-
-
-SCM
-Moment::equal_p (SCM a, SCM b)
-{
-  Moment *m1 = unsmob_moment (a);
-  Moment *m2 = unsmob_moment (b);
-      
-  return (*m1 == *m2) ? SCM_BOOL_T : SCM_BOOL_F;
-}
-
-/****************************************************************/
-
-int
-compare (Moment const &a, Moment const &b)
-{
-  return Moment::compare (a,b);
-}
-
-int
-Moment::compare (Moment const &a, Moment const &b)
-{
-  int c = Rational::compare (a.main_part_,b.main_part_);
-  if (c)
-    return c;
-
-  return Rational::compare (a.grace_part_, b.grace_part_);
-}
-
-Moment::Moment ()
-{
-
-}
-
-Moment::Moment (int m)
-{
-  main_part_ = Rational(m);
-  grace_part_  = Rational( 0);
-}
-
-Moment::Moment (Rational m, Rational g)
-{
-  main_part_ = m;
-  grace_part_  = g;
-}
-
-Moment::Moment (Rational m)
-{
-  main_part_ = m;
-  grace_part_  = Rational (0);
-}
-
-void
-Moment::operator += (Moment const &src)
-{
-  main_part_ +=src.main_part_ ;
-  grace_part_ += src.grace_part_;
-}
-void
-Moment::operator -= (Moment const &src)
-{
-  main_part_ -= src.main_part_ ;
-  grace_part_ -= src.grace_part_;
-}
-
-/*
-  only take the main part of SRC for multiplication.
-*/
-void
-Moment::operator *= (Moment const &src)
-{
-  main_part_ *= src.main_part_ ;
-  grace_part_ *= src.main_part_;
-}
-
-/*
-  only take the main part of SRC for multiplication.
-*/
-void
-Moment::operator /= (Moment const &src)
-{
-  main_part_ /= src.main_part_ ;
-  grace_part_ /= src.main_part_;
-}
-
-
-
-int
-Moment::den () const { return main_part_.den (); }
-
-int
-Moment::num () const { return main_part_.num (); }
-
-bool
-Moment::to_bool () const
-{
-  return main_part_ || grace_part_;
-}
-
-void
-Moment::set_infinite (int k)
-{
-  main_part_.set_infinite (k);
-}
-
-
-String
-Moment::to_string () const
-{
-  String s =  main_part_.to_string ();
-  if (grace_part_)
-    {
-      s += "G" + grace_part_.to_string ();
-    }
-  return s;
-}
-
-Moment
-Moment::operator - () const
-{
-  Moment m;
-  m.grace_part_ = - grace_part_;
-  m. main_part_ = - main_part_ ;
-  return m;
-}
-
-
-#ifdef STREAM_SUPPORT
-std::ostream &
-operator << (std::ostream &os, Moment const &m)
-{
-  os << m.to_string ();
-  return os;
-}
-#endif
diff --git a/lily/multi-measure-rest-engraver.cc b/lily/multi-measure-rest-engraver.cc
deleted file mode 100644
index 33a02b3f90..0000000000
--- a/lily/multi-measure-rest-engraver.cc
+++ /dev/null
@@ -1,300 +0,0 @@
-/*
-  multi_measure_rest-engraver.cc -- implement Multi_measure_rest_engraver
-
-  (c) 1998--2004 Jan Nieuwenhuizen <janneke@gnu.org>
-       Han-Wen Nienhuys <hanwen@cs.uu.nl>
-*/
-
-#include "event.hh"
-#include "multi-measure-rest.hh"
-#include "paper-column.hh"
-#include "engraver-group-engraver.hh"
-#include "side-position-interface.hh"
-#include "staff-symbol-referencer.hh"
-#include "engraver.hh"
-#include "moment.hh"
-#include "spanner.hh"
-
-/**
-   The name says it all: make multi measure rests 
-
-*/
-class Multi_measure_rest_engraver : public Engraver
-{
-public:
-  TRANSLATOR_DECLARATIONS(Multi_measure_rest_engraver);
-
-protected:
-  virtual bool try_music (Music*);
-  virtual void process_music ();
-  virtual void stop_translation_timestep ();
-  virtual void start_translation_timestep ();
-  virtual void finalize ();
-
-private:
-  Music * rest_ev_;
-  Link_array<Music> text_events_;
-  int start_measure_;
-  Rational last_main_moment_;
-  Moment stop_moment_;
-  
-  bool bar_seen_;
-  
-  Spanner *last_rest_;
-  Spanner *mmrest_;
-
-  Link_array<Spanner> numbers_;
-  Link_array<Spanner> last_numbers_;
-};
-
-Multi_measure_rest_engraver::Multi_measure_rest_engraver ()
-{
-  bar_seen_ = false;
-  start_measure_ = 0;
-  mmrest_ = 0;
-  last_rest_ =0;
-  rest_ev_ = 0;
-}
-
-bool
-Multi_measure_rest_engraver::try_music (Music* req)
-{
-  if (req->is_mus_type ("multi-measure-rest-event"))
-    {
-      rest_ev_ = req;
-      stop_moment_ = now_mom () + rest_ev_->get_length ();
-      
-      return true;
-    }
-  else if (req->is_mus_type ("multi-measure-text-event"))
-    {
-      text_events_.push (req);
-      return true;
-    }
-  return false;
-}
-
-void
-Multi_measure_rest_engraver::process_music ()
-{
-  if (rest_ev_ && !mmrest_
-      && stop_moment_ > now_mom ())
-    {
-      mmrest_ = make_spanner ("MultiMeasureRest");
-
-      if (text_events_.size())
-	{
-	  for (int i = 0; i < text_events_.size(); i++)
-	    {
-	      Spanner *sp
-		= make_spanner ("MultiMeasureRestText");
-
-	      Music* e = text_events_[i];
-	      SCM t = e->get_mus_property ("text");
-	      SCM dir = e->get_mus_property ("direction");
-	      sp->set_grob_property ("text",t);
-	      if (is_direction (dir))
-		sp->set_grob_property ("direction",dir);
-	      
-	      numbers_.push (sp);
-	      announce_grob (sp, e->self_scm());
-	    }
-
-	  /*
-	    Stack different scripts.
-	   */
-	  Direction d = DOWN; 
-	  do {
-	    Grob *last =0;
-	    for (int i=0; i <numbers_.size(); i++)
-	      {
-		if (gh_int2scm (d) == numbers_[i]->get_grob_property ("direction"))
-		  {
-		    if (last)
-		      Side_position_interface::add_support (numbers_[i], last);
-		    last = numbers_[i];
-		  }
-	      }
-	  } while (flip (&d) != DOWN);
-	}
-      else
-	{
-	  Spanner *sp
-	    = make_spanner ("MultiMeasureRestNumber");
-	  numbers_.push (sp);
-	  announce_grob (sp, rest_ev_->self_scm());
-	}
-
-      for (int i =0 ; i < numbers_.size(); i++)
-	{
-	  Side_position_interface::add_support (numbers_[i], mmrest_);
-	  numbers_[i]->set_parent (mmrest_, Y_AXIS);
-	}
-      
-      announce_grob (mmrest_, rest_ev_->self_scm());
-      start_measure_
-	= gh_scm2int (get_property ("currentBarNumber"));
-    }
-
-  bar_seen_ = gh_string_p (get_property ("whichBar"));
-}
-
-void
-Multi_measure_rest_engraver::stop_translation_timestep ()
-{
-  /*
-    We can not do this earlier, as breakableSeparationItem is not yet there.
-  */
-  
-  if (bar_seen_)
-    {
-      Grob *cmc = unsmob_grob (get_property("breakableSeparationItem"));
-      if (!cmc)
-	cmc = unsmob_grob (get_property ("currentCommandColumn"));
-      
-      Item *it = dynamic_cast<Item*> (cmc);
-      
-      if (mmrest_)
-	{
-	  add_bound_item (mmrest_, it);
-	  for (int i = 0; i < numbers_.size(); i++)
-	    add_bound_item (numbers_[i], it);
-	}
-      
-      if (last_rest_)
-	{
-	  add_bound_item (last_rest_,it);
-	  for (int i = 0; i < last_numbers_.size(); i++)
-	    add_bound_item (last_numbers_[i], it);
-	}      
-    }
-  
-  
-  SCM smp = get_property ("measurePosition");
-  Moment mp = (unsmob_moment (smp)) ? *unsmob_moment (smp) : Moment (0);
-
-  if (mmrest_
-      && !mp.to_bool ()
-      && mmrest_->get_bound (LEFT) && mmrest_->get_bound (RIGHT))
-    {
-      typeset_grob (mmrest_);
-      for (int i = 0 ; i < numbers_.size(); i++)
-	{
-	  typeset_grob (numbers_[i]);
-	}
-      
-      /*
-	we must keep mmrest_ around to set measure-count, so
-	no mmrest_ = 0 here. 
-       */
-    }
-
-  if (last_rest_)
-    {
-      /* sanity check */
-      if (last_rest_->get_bound (LEFT) && last_rest_->get_bound (RIGHT)
-	  && last_rest_->get_bound (LEFT) != last_rest_->get_bound (RIGHT))
-	{
-	  typeset_grob (last_rest_);
-
-	  for (int i = 0; i < last_numbers_.size ();i++)
-	    {
-	      typeset_grob (last_numbers_[i]);
-	    }
-	}
-      last_rest_ = 0;
-      last_numbers_.clear();
-    }
-
-  text_events_.clear ();
-}
-
-void
-Multi_measure_rest_engraver::start_translation_timestep ()
-{
-  if (now_mom ().main_part_ >= stop_moment_.main_part_)
-    {
-      rest_ev_ = 0;
-    }
-
-  bar_seen_ = false;
-
-  SCM smp = get_property ("measurePosition");
-  Moment mp = (unsmob_moment (smp)) ? *unsmob_moment (smp) : Moment (0);
-
-  Moment now =now_mom ();
-  if (mmrest_
-      && now.main_part_ != last_main_moment_
-      && mp.main_part_ == Rational (0))
-    {
-      last_rest_ = mmrest_;
-      last_numbers_ = numbers_;
-      
-      int cur = gh_scm2int (get_property ("currentBarNumber"));
-      int num = cur - start_measure_;
-      last_rest_->set_grob_property ("measure-count", gh_int2scm (num));
-
-      SCM sml = get_property ("measureLength");
-      Rational ml = (unsmob_moment (sml)) ? unsmob_moment (sml)->main_part_ : Rational (1);
-      if (ml >= Rational (2))
-	{
-	  last_rest_->set_grob_property ("use-breve-rest", SCM_BOOL_T);
-	}
-
-      mmrest_ = 0;
-      numbers_.clear ();
-      
-      Grob * last = last_numbers_.size() ? last_numbers_[0] : 0;
-      if (last && last->get_grob_property ("text") == SCM_EOL)
-	{
-	  SCM thres = get_property ("restNumberThreshold");
-	  int t = 1;
-	  if (gh_number_p (thres))
-	    t = gh_scm2int (thres);
-      
-	  if (num <= t)
-	    last->suicide();
-	  else 
-	    {
-	      SCM text
-		= scm_number_to_string (gh_int2scm (num), SCM_MAKINUM (10));
-	      last->set_grob_property ("text", text);
-	    }
-	}
-    }
-
-  last_main_moment_ = now.main_part_;
-}
-
-void
-Multi_measure_rest_engraver::finalize ()
-{
-  if (mmrest_)
-    {
-      typeset_grob (mmrest_);
-    }
-  if (last_rest_)
-    {
-      typeset_grob (last_rest_);
-    }
-
-  for (int i = 0; i < last_numbers_.size ();i++)
-    typeset_grob (last_numbers_[i]);
-
-  for (int i = 0; i < numbers_.size ();i++)
-    typeset_grob (numbers_[i]);
-
-}
-
-ENTER_DESCRIPTION(Multi_measure_rest_engraver,
-/* descr */
-		  "Engraves multi-measure rests that are produced with @code{R}.  Reads "
-"measurePosition and currentBarNumber to determine what number to print "
-"over the MultiMeasureRest.  Reads measureLength to determine if it "
-"should use a whole rest or a breve rest to represent 1 measure "
-		  ,
-/* creats*/       "MultiMeasureRest MultiMeasureRestNumber MultiMeasureRestText",
-/* accepts */     "multi-measure-rest-event multi-measure-text-event",
-/* acks  */      "",
-/* reads */       "currentBarNumber restNumberThreshold breakableSeparationItem currentCommandColumn measurePosition measureLength",
-/* write */       "");
diff --git a/lily/multi-measure-rest.cc b/lily/multi-measure-rest.cc
deleted file mode 100644
index 36dbd24241..0000000000
--- a/lily/multi-measure-rest.cc
+++ /dev/null
@@ -1,354 +0,0 @@
-/*   
-  multi-measure-rest.cc --  implement Multi_measure_rest
-  
-  source file of the GNU LilyPond music typesetter
-  
-  (c) 1998--2004 Jan Nieuwenhuizen <janneke@gnu.org>
-  
- */
-
-#include "multi-measure-rest.hh"
-#include "warn.hh"
-#include "paper-def.hh"
-#include "paper-column.hh" // urg
-#include "font-interface.hh"
-#include "rest.hh"
-#include "molecule.hh"
-#include "misc.hh"
-#include "spanner.hh"
-#include "staff-symbol-referencer.hh"
-#include "text-item.hh"
-#include "percent-repeat-item.hh"
-#include "lookup.hh"
-#include "separation-item.hh"
-
-MAKE_SCHEME_CALLBACK (Multi_measure_rest,percent,1);
-SCM
-Multi_measure_rest::percent (SCM smob)
-{
-  Grob *me = unsmob_grob (smob);
-  Spanner *sp = dynamic_cast<Spanner*> (me);
-  
-  Molecule r = Percent_repeat_item_interface::x_percent (me, 1,  0.75, 1.6);
-
-  // ugh copy & paste.
-  
-  Interval sp_iv;
-  Direction d = LEFT;
-  do
-    {
-      Item * col = sp->get_bound (d)->get_column ();
-
-      Interval coldim = col->extent (0, X_AXIS);
-
-      sp_iv[d] = coldim[-d]  ;
-    }
-  while ((flip (&d)) != LEFT);
-  Real x_off = 0.0;
-
-  Real rx  = sp->get_bound (LEFT)->relative_coordinate (0, X_AXIS);
-  /*
-    we gotta stay clear of sp_iv, so move a bit to the right if
-    needed.
-   */
-  x_off += (sp_iv[LEFT] -  rx) >? 0;
-
-  /*
-    center between stuff.
-   */
-  x_off += sp_iv.length ()/ 2;
-
-  r.translate_axis (x_off,X_AXIS);
-
-  
-  return r.smobbed_copy ();
-}
-
-MAKE_SCHEME_CALLBACK (Multi_measure_rest,print,1);
-SCM
-Multi_measure_rest::print (SCM smob) 
-{
-  Grob *me = unsmob_grob (smob);
-  Spanner * sp = dynamic_cast<Spanner*> (me);
-
-  Interval sp_iv;
-  Direction d = LEFT;
-
-  Grob *common = sp->get_bound (LEFT)->common_refpoint (sp->get_bound (RIGHT), X_AXIS);
-  do
-    {
-      Item * b = sp->get_bound (d);
-
-      Interval coldim =  (Separation_item::has_interface (b))
-	? Separation_item::relative_width (b, common)
-	: b->extent (common, X_AXIS);
-
-      sp_iv[d] = coldim.is_empty () ?   b->relative_coordinate (common, X_AXIS) : coldim[-d];
-    }
-  while ((flip (&d)) != LEFT);
-
-  Real space = sp_iv.length();
-
-  Real rx  = sp->get_bound (LEFT)->relative_coordinate (0, X_AXIS);
-  /*
-    we gotta stay clear of sp_iv, so move a bit to the right if
-    needed.
-   */
-  Real x_off = (sp_iv[LEFT] -  rx) >? 0;
-
-
-  Molecule mol;
-  mol.add_molecule (symbol_molecule (me, space));
-
-  int measures = 0;
-  SCM m (me->get_grob_property ("measure-count"));
-  if (gh_number_p (m))
-    {
-      measures = gh_scm2int (m);
-    }
-
-  mol.translate_axis (x_off, X_AXIS);
-  return mol.smobbed_copy ();
-}
-
-
-
-Molecule
-Multi_measure_rest::symbol_molecule (Grob *me, Real space)
-{
-  int measures = 0;
-  SCM m (me->get_grob_property ("measure-count"));
-  if (gh_number_p (m))
-    {
-      measures = gh_scm2int (m);
-    }
-  if (measures <= 0)
-    return Molecule();
-  
-
-  SCM limit = me->get_grob_property ("expand-limit");
-  if (measures > gh_scm2int (limit))
-    {
-      Real padding = 0.15;  
-      Molecule s =  big_rest (me, (1.0 - 2*padding) * space);
-      s.translate_axis (padding * space,  X_AXIS); 
-      return s;
-    }
-
-  SCM alist_chain = Font_interface::font_alist_chain (me);
-
-  Real staff_space = Staff_symbol_referencer::staff_space (me);
-  Font_metric *musfont
-    = select_font (me->get_paper (), alist_chain);
-
-  SCM sml = me->get_grob_property ("use-breve-rest");
-  if (measures == 1)
-    {
-      if (sml == SCM_BOOL_T)
-	{
-	  Molecule s = musfont->find_by_name (Rest::glyph_name (me, -1, ""));
-
-	  s.translate_axis ((space - s.extent (X_AXIS).length ())/2, X_AXIS);
-      
-	  return s ;
-	}
-      else
-	{
-	  Molecule s = musfont->find_by_name (Rest::glyph_name (me, 0, ""));
-
-	  /*
-	    ugh.
-	   */
-	  if (Staff_symbol_referencer::get_position (me) == 0.0)
-	    s.translate_axis (staff_space, Y_AXIS);
-
-	  s.translate_axis ((space - s.extent (X_AXIS).length ())/2, X_AXIS);
-      
-	  return s ;
-        }
-    }
-  else
-    {
-      return  church_rest (me, musfont, measures, space);
-    }
-}
-
-
-/*
-  WIDTH can also be 0 to determine the minimum size of the object.
- */
-Molecule
-Multi_measure_rest::big_rest (Grob *me, Real width)
-{
-  Real thick_thick =robust_scm2double (me->get_grob_property ("thick-thickness"), 1.0);
-  Real hair_thick = robust_scm2double (me->get_grob_property ("hair-thickness"), .1);
-
-
-  Real ss = Staff_symbol_referencer::staff_space (me);
-  Real slt = me->get_paper ()->get_realvar (ly_symbol2scm ("linethickness"));
-  Real y = slt * thick_thick/2 * ss;
-  Real ythick = hair_thick * slt * ss;
-  Box b(Interval (0,  0 >? (width - 2 * ythick)), Interval (-y, y));
-  
-  Real blot = width ? (.8 * (y <? ythick)) : 0.0;
-  
-  Molecule m =  Lookup::round_filled_box (b, blot);
-  Molecule yb = Lookup::round_filled_box (Box (Interval (-0.5, 0.5)* ythick, Interval (-ss, ss)), blot);
-
-  m.add_at_edge (X_AXIS, RIGHT, yb, 0, 0);
-  m.add_at_edge (X_AXIS, LEFT, yb, 0, 0);
-
-  m.align_to (X_AXIS, LEFT);
-  
-  return m;
-}
-
-/*
-  Kirchenpause (?)
- */
-Molecule
-Multi_measure_rest::church_rest (Grob*me, Font_metric *musfont, int measures,
-				 Real space)
-{
-  SCM mols = SCM_EOL; 
-
-  /*
-   see Wanske pp. 125
-  */
-  int l = measures;
-  int count = 0;
-  Real symbols_width = 0.0;
-
-  SCM sml = me->get_grob_property ("use-breve-rest");
-
-  while (l)
-    {
-      if (sml == SCM_BOOL_T)
-	{
-	  int k;
-	  if (l >= 2)
-	    {
-	      l-=2;
-	      k = -2;
-	    }
-	  else
-	    {
-	      l -= 1;
-	      k = -1;
-	    }
-
-	  Molecule r (musfont->find_by_name ("rests-" + to_string (k)));
-	  symbols_width += r.extent (X_AXIS).length ();
-	  mols = gh_cons (r.smobbed_copy (), mols);
-	}
-       else
-	{
-	  int k;
-	  if (l >= 4)
-	    {
-	      l-=4;
-	      k = -2;
-	    }
-	  else if (l>= 2)
-	    {
-	      l -= 2;
-	      k = -1;
-	    }
-	  else
-	    {
-	      k = 0;
-	      l --;
-	    }
-
-	  Molecule r (musfont->find_by_name ("rests-" + to_string (k)));
-	  if (k == 0)
-	    {
-	      Real staff_space = Staff_symbol_referencer::staff_space (me);
-	      r.translate_axis (staff_space, Y_AXIS);
-	    }
-	  symbols_width += r.extent (X_AXIS).length ();
-	  mols = gh_cons (r.smobbed_copy (), mols);
-	}
-      count ++;
-    }
-
-  
-
-  Real outer_padding_factor = 1.5; //     make outer padding this much bigger.
-  Real inner_padding = (space - symbols_width) / (2 * outer_padding_factor + (count-1)); 
-  if (inner_padding < 0)
-    {
-      inner_padding = 1.0;
-    }
-  
-  Molecule mol; 
-  for (SCM  s = mols; gh_pair_p (s); s = gh_cdr(s))
-    {
-      mol.add_at_edge (X_AXIS, LEFT, *unsmob_molecule (gh_car (s)), inner_padding, 0);
-    }
-  mol.align_to (X_AXIS, LEFT);
-  mol.translate_axis (outer_padding_factor *  inner_padding, X_AXIS);
-
-  return mol;
-}
-
-void
-Multi_measure_rest::add_column (Grob*me,Item* c)
-{
-  add_bound_item (dynamic_cast<Spanner*> (me),c);
-}
-
-
-MAKE_SCHEME_CALLBACK (Multi_measure_rest, set_spacing_rods,1);
-SCM
-Multi_measure_rest::set_spacing_rods (SCM smob)
-{
-  Grob*me = unsmob_grob (smob);
-
-  Spanner*sp = dynamic_cast<Spanner*> (me);
-  if (! (sp->get_bound (LEFT) && sp->get_bound (RIGHT)))
-    {
-      programming_error ("Multi_measure_rest::get_rods (): I am not spanned!");
-      return SCM_UNSPECIFIED;
-    }
-
-  Item * l = sp->get_bound (LEFT)->get_column ();
-  Item * r = sp->get_bound (RIGHT)->get_column ();
-  Item * lb = l->find_prebroken_piece (RIGHT);
-  Item * rb = r->find_prebroken_piece (LEFT);      
-  
-  Item* combinations[4][2]={{l,r}, {lb,r}, {l,rb},{lb,rb}};
-
-  Real sym_width = symbol_molecule (me, 0.0).extent (X_AXIS).length ();
-  
-  for (int i=0; i < 4; i++)
-    {
-      Item * l =  combinations[i][0];
-      Item *r = combinations[i][1];
-
-      if (!l || !r)
-	continue;
-
-      Rod rod;
-      rod.item_l_drul_[LEFT] = l;
-      rod.item_l_drul_[RIGHT] = r;
-
-      
-      rod.distance_ = l->extent (l, X_AXIS)[BIGGER] - r->extent (r, X_AXIS)[SMALLER]
-	+ sym_width  + 2.0;			// 2.0 = magic!
-  
-      Real minlen  = robust_scm2double (me->get_grob_property ("minimum-length"), 0.0);
-      rod.distance_ = max(rod.distance_,
-			  minlen);
-      rod.add_to_cols ();
-    }
-  return SCM_UNSPECIFIED;
-}
-
-
-
-
-ADD_INTERFACE (Multi_measure_rest,"multi-measure-rest-interface",
-	       "A rest that spans a whole number of measures.",
-	       "expand-limit measure-count hair-thickness thick-thickness use-breve-rest minimum-length");
-
diff --git a/lily/music-constructor.cc b/lily/music-constructor.cc
deleted file mode 100644
index e86672d7c7..0000000000
--- a/lily/music-constructor.cc
+++ /dev/null
@@ -1,49 +0,0 @@
-/*   
-  music-constructor.cc --  implement Music_constructor
-  
-  source file of the GNU LilyPond music typesetter
-  
-  (c) 2001--2004  Han-Wen Nienhuys <hanwen@cs.uu.nl>
-  
- */
-
-#include <map>			// UGH.
-#include <assert.h>
-
-#include "warn.hh"
-#include "music-constructor.hh"
-
-typedef Music* (*Music_ctor) ();
-
-static std::map<String,Music_ctor> *ctors_map_;
-
-void
-add_music_ctor (String s,  Music_ctor c)
-{
-  if (!ctors_map_)
-    ctors_map_ = new std::map<String, Music_ctor>;
-  
- (*ctors_map_)[s] = c;
-}
-
-
-Music_ctor
-get_music_ctor (String s)
-{
-  if (ctors_map_->find (s) == ctors_map_->end ())
-    return 0;
-
-  return (* ctors_map_)[s];
-}
-
-Music* 
-make_music (String s)
-{
-  Music_ctor c = get_music_ctor (s);
-  if (!c)
-    programming_error (String ("No constructor for music: ") + s);
-  assert (c);
-  
-  return (*c) ();
-}
-
diff --git a/lily/music-iterator.cc b/lily/music-iterator.cc
deleted file mode 100644
index 4a4c10f955..0000000000
--- a/lily/music-iterator.cc
+++ /dev/null
@@ -1,237 +0,0 @@
-/*
-  music-iterator.cc -- implement Music_iterator
-
-  source file of the GNU LilyPond music typesetter
-
-  (c) 1997--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-*/
-
-/*
-  UGH. too many includes.
- */
-#include <stdio.h>
-
-#include "warn.hh"
-#include "music-iterator.hh"
-#include "translator-group.hh"
-#include "music-wrapper.hh"
-#include "music-wrapper-iterator.hh"
-#include "simple-music-iterator.hh"
-
-#include "ly-smobs.icc"
-
-Music_iterator::Music_iterator ()
-{
-  music_ = 0;
-  smobify_self ();
-}
-
-Music_iterator::Music_iterator (Music_iterator const& )
-{
-  assert (false);
-}
-
-Music_iterator::~Music_iterator ()
-{
-}
-
-Translator_group* 
-Music_iterator::get_outlet () const
-{
-  return handle_.get_outlet ();
-}
-
-void
-Music_iterator::set_translator (Translator_group *trans)
-{
-  handle_.set_translator (trans);
-}
-
-void
-Music_iterator::construct_children ()
-{
-}
-
-Moment
-Music_iterator::pending_moment () const
-{
-  return 0;
-}
-
-void
-Music_iterator::process (Moment)
-{
-}
-
-bool
-Music_iterator::ok () const
-{
-  return false;
-}
-
-
-
-SCM
-Music_iterator::get_static_get_iterator (Music *m)
-{
-  Music_iterator * p =0;
-
-  SCM ctor = m->get_mus_property ("iterator-ctor") ;
-  SCM iter = SCM_EOL;
-  if (gh_procedure_p (ctor))
-    {
-      iter = gh_call0 (ctor);
-      p = unsmob_iterator (iter);
-    }
-  else
-    {
-      if (dynamic_cast<Music_wrapper *> (m))
-	p = new Music_wrapper_iterator;
-      else
-	p = new Simple_music_iterator;
-
-      iter = p->self_scm();
-      scm_gc_unprotect_object (iter);
-    }
-
-  p->music_ = m;
-  assert (m);
-  p->music_length_ = m->get_length ();
-  p->start_mom_ = m->start_mom ();
-  return iter;
-}
-
-
-Moment
-Music_iterator::music_get_length () const
-{
-  return music_length_;
-}
-
-Moment
-Music_iterator::music_start_mom ()const
-{
-  return start_mom_;
-}
-
-void
-Music_iterator::init_translator (Music *m, Translator_group *report)
-{
-  music_ = m;
-  assert (m);
-  if (! get_outlet ())
-    set_translator (report);
-}
-
-void
-Music_iterator::substitute_outlet (Translator_group*f, Translator_group *t)
-{
-  if (get_outlet () == f)
-    set_translator (t);
-  derived_substitute (f,t);
-}
-
-void
-Music_iterator::derived_substitute (Translator_group*,Translator_group*)
-{
-}
-
-SCM
-Music_iterator::get_iterator (Music *m) const
-{
-  SCM ip = get_static_get_iterator (m);
-  Music_iterator*p = unsmob_iterator (ip);
-  
-  p->init_translator (m, get_outlet ());
-  
-  p->construct_children ();
-  return ip;
-}
-
-/*
-  TODO: rename to prevent confusion between Translator::try_music and
-  Iterator::try_music
-  
- */
-Music_iterator*
-Music_iterator::try_music (Music *m) const
-{
-  bool b = get_outlet ()->try_music ((Music*)m); // ugh
-  Music_iterator * it = b ? (Music_iterator*) this : 0;	// ugh
-  if (!it)
-    it = try_music_in_children (m);
-  return it;
-}
-
-Music_iterator*
-Music_iterator::try_music_in_children (Music *) const
-{
-  return 0;
-}
-
-IMPLEMENT_CTOR_CALLBACK (Music_iterator);
-
-Music *
-Music_iterator::get_music () const
-{
-  return music_;
-}
-
-/****************************************************************/
-
-IMPLEMENT_TYPE_P (Music_iterator, "ly:iterator?");
-IMPLEMENT_SMOBS(Music_iterator);
-IMPLEMENT_DEFAULT_EQUAL_P(Music_iterator);
-
-SCM
-Music_iterator::mark_smob (SCM smob)
-{
-  Music_iterator * mus = (Music_iterator *)SCM_CELL_WORD_1 (smob);
-
-  mus->derived_mark ();
-  /*
-    Careful with GC, although we intend the following as pointers
-    only, we _must_ mark them.
-   */
-  if (mus->get_outlet ())
-    scm_gc_mark (mus->get_outlet ()->self_scm());
-  if (mus->music_)
-    scm_gc_mark (mus->music_->self_scm());
-  
-
-  return SCM_EOL;
-}
-
-int
-Music_iterator::print_smob (SCM sm , SCM port, scm_print_state*)
-{
-  char s[1000];
-
-  Music_iterator *iter = unsmob_iterator (sm);
-  sprintf (s, "#<%s>", classname (iter));
-  scm_puts (s, port);
-  return 1;
-}
-
-void
-Music_iterator::derived_mark()const
-{
-}
-
-void
-Music_iterator::quit ()
-{
-  do_quit ();
-  handle_.quit ();
-}
-
-void
-Music_iterator::do_quit()
-{
-}
-
-bool
-Music_iterator::run_always ()const
-{
-  return false;
-}
diff --git a/lily/music-output-def.cc b/lily/music-output-def.cc
deleted file mode 100644
index 6743e62f6d..0000000000
--- a/lily/music-output-def.cc
+++ /dev/null
@@ -1,194 +0,0 @@
-/*
-  music-output-def.cc -- implement Music_output_def
-
-  source file of the GNU LilyPond music typesetter
-
-  (c) 1997--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-*/
-
-#include "scm-hash.hh"
-
-#include "warn.hh"
-#include "music-output-def.hh"
-#include "global-translator.hh"
-#include "context-def.hh"
-#include "main.hh"
-#include "file-path.hh"
-#include "lily-guile.hh"
-#include "ly-modules.hh"
-
-#include "ly-smobs.icc"
-
-Music_output_def::Music_output_def ()
-{
-  scaled_fonts_ = SCM_EOL;
-  translator_tab_ = new Scheme_hash_table;
-  scope_ = SCM_EOL;
-  smobify_self ();
-  scm_gc_unprotect_object (translator_tab_->self_scm ());
-
-  scope_ =   ly_make_anonymous_module();
-}
-
-Music_output_def::~Music_output_def ()
-{
-}
-
-Music_output_def::Music_output_def (Music_output_def const &s)
-{
-  scope_ = SCM_EOL;
-  translator_tab_ = new Scheme_hash_table (*s.translator_tab_);
-
-  scaled_fonts_ = SCM_EOL;
-
-  smobify_self ();
-  scm_gc_unprotect_object (translator_tab_->self_scm ());  
-  
-  scaled_fonts_ = scm_list_copy (s.scaled_fonts_);  
-
-  scope_= ly_make_anonymous_module ();
-  if (ly_module_p (s.scope_))
-    ly_copy_module_variables (scope_, s.scope_);
-}
-
-
-IMPLEMENT_SMOBS (Music_output_def);
-IMPLEMENT_DEFAULT_EQUAL_P (Music_output_def);
-
-SCM
-Music_output_def::mark_smob (SCM m)
-{
-  Music_output_def * mo = (Music_output_def*) SCM_CELL_WORD_1 (m);
-  scm_gc_mark (mo->translator_tab_->self_scm ());
-  scm_gc_mark (mo->scope_);
-
-  return mo->scaled_fonts_;
-}
-
-void
-Music_output_def::assign_translator (SCM transdef)
-{
-  Context_def *tp = unsmob_context_def (transdef);
-  assert (tp);
-
-  translator_tab_->set (tp->get_context_name (), transdef);
-  
-  String nm = ly_symbol2string (tp->get_context_name ()) + "Context";
-
-
-  scm_module_define (scope_, ly_symbol2scm (nm.to_str0()), transdef);
-}
-
-/*
-  find the translator for NAME. NAME must be a symbol.
- */
-SCM
-Music_output_def::find_translator (SCM name) const
-{  
-  SCM val  =SCM_EOL;
-  translator_tab_->try_retrieve (name, &val);
-  return val;
-}
-
-
-Global_translator *
-Music_output_def::get_global_translator () 
-{
-  SCM key = ly_symbol2scm ("Score");
-  Context_def * t = unsmob_context_def (find_translator (key));
-
-  if (!t)
-    error (_f ("can't find `%s' context", "Score"));
-
-  Translator_group * tg = t->instantiate (SCM_EOL);
-  dynamic_cast<Global_translator*> (tg)->output_def_ = this;
-  
-
-  tg->initialize ();
-  
-  return dynamic_cast <Global_translator *> (tg);
-}
-
-int
-Music_output_def::print_smob (SCM s, SCM p, scm_print_state *)
-{
-  Music_output_def * def = unsmob_music_output_def (s);
-  scm_puts ("#< ", p);
-  scm_puts (classname (def), p);
-  
-  (void)def;
-  scm_puts (">", p);
-  return 1;
-}
-
-
-SCM
-Music_output_def::get_scmvar (String s) const
-{
-  return lookup_variable (ly_symbol2scm (s.to_str0 ()));
-}
-
-
-void
-Music_output_def::set_variable (SCM sym, SCM val)
-{
-  scm_module_define (scope_, sym, val);
-}
-
-SCM
-Music_output_def::lookup_variable (SCM sym) const
-{
-  SCM var = ly_module_lookup (scope_, sym);
-
-  return scm_variable_ref (var);
-}
-
-LY_DEFINE(ly_paper_lookup,
-	  "ly:paper-lookup",
-	  2, 0,0,
-	  (SCM pap, SCM sym),
-	  "Lookup @var{sym} in @var{pap}. Return the value "
-	  " or '() if undefined.  "
-	  )
-{
-  Music_output_def *op = unsmob_music_output_def (pap);
-  SCM_ASSERT_TYPE (op, pap, SCM_ARG1, __FUNCTION__, "Paper");
-  SCM_ASSERT_TYPE (gh_symbol_p (sym), sym, SCM_ARG2, __FUNCTION__, "symbol");
-
-  SCM v = op->lookup_variable (sym);
-
-  if (SCM_VARIABLEP(v))
-    return SCM_VARIABLE_REF(v);
-  else
-    return SCM_EOL;
-}
-
-LY_DEFINE(ly_output_def_scope,
-	  "ly:output-def-scope",
-	  1, 0,0,
-	  (SCM def),
-	  "Get the scope inside @var{def}."
-	  )
-{
-  Music_output_def *op = unsmob_music_output_def (def);
-  SCM_ASSERT_TYPE (op, def, SCM_ARG1, __FUNCTION__, "Output definition");
-
-  return op->scope_;
-}
-
-
-LY_DEFINE(ly_output_def_clone,
-	  "ly:output-def-clone",
-	  1, 0,0,
-	  (SCM def),
-	  "Clone @var{def}."
-	  )
-{
-  Music_output_def *op = unsmob_music_output_def (def);
-  SCM_ASSERT_TYPE (op, def, SCM_ARG1, __FUNCTION__, "Output definition");
-
-  SCM s = op->clone ()->self_scm ();
-  scm_gc_unprotect_object (s);
-  return s;
-}
-
diff --git a/lily/music-sequence.cc b/lily/music-sequence.cc
deleted file mode 100644
index 3848a3708b..0000000000
--- a/lily/music-sequence.cc
+++ /dev/null
@@ -1,137 +0,0 @@
-/*   
-  music-sequence.cc --  implement Music_sequence
-  
-  source file of the GNU LilyPond music typesetter
-  
-  (c) 1998--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-  
- */
-#include "music-list.hh"
-#include "warn.hh"
-#include "pitch.hh"
-#include "input.hh"
-
-SCM
-Music_sequence::music_list ()const
-{
-  return get_mus_property ("elements");
-}
-
-/*
-  Ugh this sucks. Linear. do not use.
- */
-void
-Music_sequence::append_music (Music *m)
-{
-  set_mus_property ("elements",
-		    gh_append2 (music_list (), gh_cons (m->self_scm (), SCM_EOL)));
-  scm_gc_unprotect_object (m->self_scm ());
-}
-
-Music_sequence::Music_sequence ( )
-  : Music ()
-{
-}
-
-void
-transpose_music_list (SCM l,  Pitch rq)
-{
-  for (SCM s = l; gh_pair_p (s);  s = ly_cdr (s))
-    unsmob_music (ly_car (s))->transpose (rq);    
-}
-
-Moment
-Music_sequence::cumulative_length (SCM l) 
-{
-  Moment cumulative;
-  Moment last_len; 
-
-  for (SCM s = l; gh_pair_p (s);  s = ly_cdr (s))
-    {
-      Moment l = unsmob_music (ly_car (s))->get_length ();
-      if (last_len.grace_part_ && l.main_part_)
-	{
-	  last_len.grace_part_ = Rational (0);
-	}
-      cumulative += last_len;
-      last_len = l;
-    }
-
-  last_len.grace_part_ = Rational (0);
-  cumulative += last_len;
-
-  return  cumulative;
-}
-
-Moment
-Music_sequence::maximum_length (SCM l)
-{
-  Moment dur = 0;
-  for (SCM s = l; gh_pair_p (s);  s = ly_cdr (s))
-    {
-      Music * m = unsmob_music (ly_car (s));
-      Moment l = m->get_length ();
-      dur = dur >? l;
-    }
-
-  return dur;
-}
-
-Pitch
-music_list_to_relative (SCM l,Pitch p, bool ret_first)
-{
-  Pitch first = p;
-  int count=0;
-
-  Pitch last = p;
-  for (SCM s = l; gh_pair_p (s);  s = ly_cdr (s))
-    {
-      if (Music *m = unsmob_music (ly_car (s)))
-	{
-	  last = m->to_relative_octave (last);
-	  if (!count ++)
-	    first = last;
-	}
-    }
-
-  return  (ret_first)?  first : last;
-}
-
-
-void
-compress_music_list (SCM l, Moment m)
-{
-  for (SCM s = l; gh_pair_p (s);  s = ly_cdr (s))
-    unsmob_music (ly_car (s))->compress (m);
-}
-
-ADD_MUSIC (Music_sequence);
-
-Moment
-Music_sequence::minimum_start (SCM l)
-{
-  Moment m;
-  
-  for (SCM s = l; gh_pair_p (s);  s = ly_cdr (s))
-    {
-      m = m <? unsmob_music (ly_car (s))->start_mom ();
-    }
-  return m;
-}
-
-Moment
-Music_sequence::first_start (SCM l) 
-{
-  Moment m;
-  
-  for (SCM s = l; gh_pair_p (s);  s = ly_cdr (s))
-    {
-      Music * mus = unsmob_music (ly_car (s));
-      Moment l = mus->get_length ();
-      Moment s = mus->start_mom ();
-      if (l.to_bool () || s.to_bool ())
-	return s;
-    }
-  return m;
-}
-
diff --git a/lily/music-wrapper-iterator.cc b/lily/music-wrapper-iterator.cc
deleted file mode 100644
index 4e264db187..0000000000
--- a/lily/music-wrapper-iterator.cc
+++ /dev/null
@@ -1,78 +0,0 @@
-/*   
-  music-wrapper-iterator.cc --  implement Music_wrapper_iterator
-  
-  source file of the GNU LilyPond music typesetter
-  
-  (c) 1998--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
- */
-
-
-#include "music-wrapper-iterator.hh"
-#include "music-wrapper.hh"
-
-Music_wrapper_iterator::Music_wrapper_iterator ()
-{
-  child_iter_ =0;
-}
-
-void
-Music_wrapper_iterator::do_quit()
-{
-  child_iter_->quit();
-}
-
-void
-Music_wrapper_iterator::derived_mark () const
-{
-  if (child_iter_)
-    scm_gc_mark (child_iter_->self_scm());
-}
-
-void
-Music_wrapper_iterator::derived_substitute (Translator_group*f,Translator_group*t) 
-{
-  
-  if (child_iter_)
-    child_iter_->substitute_outlet (f,t);
-}
-
-void
-Music_wrapper_iterator::construct_children ()
-{
-  Music * m =  dynamic_cast<Music_wrapper const*> (get_music ())-> element();  
-  child_iter_ = unsmob_iterator (get_iterator (m));
-}
-
-bool
-Music_wrapper_iterator::ok () const
-{
-  return child_iter_ && child_iter_->ok ();
-}
-
-
-void
-Music_wrapper_iterator::process (Moment m)
-{
-  child_iter_->process (m);
-}
-
-
-Moment
-Music_wrapper_iterator::pending_moment () const
-{
-  return child_iter_->pending_moment ();
-}
-
-Music_iterator*
-Music_wrapper_iterator::try_music_in_children (Music *m) const
-{
-  return child_iter_->try_music (m);
-}
-
-IMPLEMENT_CTOR_CALLBACK (Music_wrapper_iterator);
-
-bool
-Music_wrapper_iterator::run_always () const
-{
-  return child_iter_->run_always ();
-}
diff --git a/lily/music-wrapper.cc b/lily/music-wrapper.cc
deleted file mode 100644
index 8118cc23ae..0000000000
--- a/lily/music-wrapper.cc
+++ /dev/null
@@ -1,41 +0,0 @@
-/*   
-  music-wrapper.cc --  implement Music_wrapper
-  
-  source file of the GNU LilyPond music typesetter
-  
-  (c) 1998--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-  
- */
-
-
-#include "music-wrapper.hh"
-
-
-
-
-Music_wrapper::Music_wrapper ()
-  : Music ()
-{
-}
-
-Moment
-Music_wrapper::get_length () const
-{
-  return element ()->get_length ();
-}
-
-Music*
-Music_wrapper::element () const
-{
-  return unsmob_music (get_mus_property ("element"));
-}
-
-
-ADD_MUSIC (Music_wrapper);
-
-
-Moment
-Music_wrapper::start_mom () const
-{
-  return element ()->start_mom ();
-}
diff --git a/lily/music.cc b/lily/music.cc
deleted file mode 100644
index fefeda054d..0000000000
--- a/lily/music.cc
+++ /dev/null
@@ -1,395 +0,0 @@
-/*
-  music.cc -- implement Music
-
-  source file of the GNU LilyPond music typesetter
-
-  (c) 1997--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-*/
-
-#include "main.hh"
-#include "input-smob.hh"
-#include "music.hh"
-#include "music-list.hh"
-#include "warn.hh"
-#include "pitch.hh"
-#include "ly-smobs.icc"
-
-
-SCM ly_deep_mus_copy (SCM);
-
-bool
-Music::internal_is_music_type (SCM k)const
-{
-  SCM ifs = get_mus_property ("types");
-
-  return scm_memq (k, ifs) != SCM_BOOL_F;
-}
-
-String
-Music::name () const
-{
-  SCM nm = get_mus_property ("name");
-  if (gh_symbol_p (nm))
-    {
-      return ly_symbol2string (nm);
-    }
-  else
-    {
-      return classname (this);
-    }
-}
-
-
-
-Music::Music (Music const &m)
-{
-  immutable_property_alist_ = m.immutable_property_alist_;
-  mutable_property_alist_ = SCM_EOL;
-  self_scm_ = SCM_EOL;
-
-  /*
-    First we smobify_self, then we copy over the stuff.  If we don't,
-    stack vars that hold the copy might be optimized away, meaning
-    that they won't be protected from GC.
-   */
-  smobify_self ();
-  mutable_property_alist_ = ly_deep_mus_copy (m.mutable_property_alist_);
-  set_spot (*m.origin ());
-}
-
-Music::Music ()
-{
-  self_scm_ = SCM_EOL;
-  immutable_property_alist_ = SCM_EOL;
-  mutable_property_alist_ = SCM_EOL;
-  smobify_self ();
-}
-
-SCM
-Music::get_property_alist (bool m) const
-{
-  return (m) ? mutable_property_alist_ : immutable_property_alist_;
-}
-
-SCM
-Music::mark_smob (SCM m)
-{
-  Music * mus = (Music *)SCM_CELL_WORD_1 (m);
-  scm_gc_mark (mus->immutable_property_alist_);
-  scm_gc_mark (mus->mutable_property_alist_);
-  return SCM_EOL;
-}
-
-Moment
-Music::get_length () const
-{
-  SCM l = get_mus_property ("length");
-  if (unsmob_moment (l))
-    return *unsmob_moment (l);
-  else if (gh_procedure_p (l))
-    {
-      SCM res = gh_call1 (l, self_scm ());
-      return *unsmob_moment (res);
-    }
-    
-  return 0;
-}
-
-Moment
-Music::start_mom () const
-{
-  SCM l = get_mus_property ("start-moment-function");
-  if (gh_procedure_p (l))
-    {
-      SCM res = gh_call1 (l, self_scm ());
-      return *unsmob_moment (res);
-    }
-
-  Moment m ;
-  return m;
-}
-
-void
-print_alist (SCM a, SCM port)
-{
-  /*
-    SCM_EOL  -> catch malformed lists.
-  */
-  for (SCM s = a; gh_pair_p (s); s = ly_cdr (s))
-    {
-      scm_display (ly_caar (s), port);
-      scm_puts (" = ", port); 
-      scm_write (ly_cdar (s), port);
-      scm_puts ("\n", port);
-    }
-}
-
-int
-Music::print_smob (SCM s, SCM p, scm_print_state*)
-{
-  scm_puts ("#<Music ", p);
-  Music* m = unsmob_music (s);
-
-  SCM nm = m->get_mus_property ("name");
-  if (gh_symbol_p (nm) || gh_string_p (nm))
-    {
-      scm_display (nm, p);
-    }
-  else
-    {
-      scm_puts (classname (m),p);
-    }
-  
-  /*
-    Printing properties takes a lot of time, especially during backtraces.
-    For inspecting, it is better to explicitly use an inspection
-    function.
-   */
-
-  scm_puts (">",p);
-  return 1;
-}
-
-Pitch
-Music::to_relative_octave (Pitch p)
-{
-  SCM elt = get_mus_property ("element");
-
-  if (Music* m = unsmob_music (elt))
-    p = m->to_relative_octave (p);
-
-  p = music_list_to_relative (get_mus_property ("elements"),
-			      p, false);
-  return p;
-}
-
-void
-Music::compress (Moment factor)
-{
-  SCM elt = get_mus_property ("element");
-
-  if (Music* m = unsmob_music (elt))
-    m->compress (factor);
-
-  compress_music_list (get_mus_property ("elements"), factor);
-}
-
-
-void
-Music::transpose (Pitch delta)
-{
-  SCM elt = get_mus_property ("element");
-
-  if (Music* m = unsmob_music (elt))
-    m->transpose (delta);
-
-  transpose_music_list (get_mus_property ("elements"), delta);
-}
-
-
-IMPLEMENT_TYPE_P (Music, "ly:music?");
-
-IMPLEMENT_SMOBS (Music);
-IMPLEMENT_DEFAULT_EQUAL_P (Music);
-
-/****************************/
-
-SCM
-Music::internal_get_mus_property (SCM sym) const
-{
-  SCM s = scm_sloppy_assq (sym, mutable_property_alist_);
-  if (s != SCM_BOOL_F)
-    return ly_cdr (s);
-
-  s = scm_sloppy_assq (sym, immutable_property_alist_);
-  return (s == SCM_BOOL_F) ? SCM_EOL : ly_cdr (s); 
-}
-
-void
-Music::internal_set_mus_property (SCM s, SCM v)
-{
-  if (internal_type_checking_global_b)
-    if (!type_check_assignment (s, v, ly_symbol2scm ("music-type?")))
-      abort ();
-
-  mutable_property_alist_ =  scm_assq_set_x (mutable_property_alist_, s, v);
-}
-
-#include "main.hh"
-
-void
-Music::set_spot (Input ip)
-{
-  set_mus_property ("origin", make_input (ip));
-}
-
-Input*
-Music::origin () const
-{
-  Input *ip = unsmob_input (get_mus_property ("origin"));
-  return ip ? ip : & dummy_input_global; 
-}
-
-
-Music::~Music ()
-{
-  
-}
-
-LY_DEFINE(ly_music_length,
-	  "ly:music-length", 1, 0, 0,  (SCM mus),
-	  "Get the length (in musical time) of music expression @var{mus}.")
-{
-  Music * sc = unsmob_music (mus);
-  SCM_ASSERT_TYPE(sc, mus, SCM_ARG1, __FUNCTION__, "music");
-  return sc->get_length().smobbed_copy();
-}
-
-LY_DEFINE(ly_get_mus_property,
-	  "ly:get-mus-property", 2, 0, 0,  (SCM mus, SCM sym),
-	  "Get the property @var{sym} of music expression @var{mus}.\n"
-	  "If @var{sym} is undefined, return @code{'()}.\n" )
-{
-  Music * sc = unsmob_music (mus);
-  SCM_ASSERT_TYPE(sc, mus, SCM_ARG1, __FUNCTION__, "music");
-  SCM_ASSERT_TYPE(gh_symbol_p (sym), sym, SCM_ARG2, __FUNCTION__, "symbol");  
-
-  return sc->internal_get_mus_property (sym);
-}
-
-LY_DEFINE(ly_set_mus_property,
-	  "ly:set-mus-property!", 3, 0, 0,
-	  (SCM mus, SCM sym, SCM val),
-	  "Set property @var{sym} in music expression @var{mus} to @var{val}.")
-{
-  Music * sc = unsmob_music (mus);
-  SCM_ASSERT_TYPE(sc, mus, SCM_ARG1, __FUNCTION__, "music");
-  SCM_ASSERT_TYPE(gh_symbol_p (sym), sym, SCM_ARG2, __FUNCTION__, "symbol");  
-
-  bool ok = type_check_assignment (sym, val, ly_symbol2scm ("music-type?"));
-  if (ok)
-    {
-      sc->internal_set_mus_property (sym, val);
-    }
-    
-  return SCM_UNSPECIFIED;
-}
-
-
-LY_DEFINE(ly_music_name, "ly:music-name", 1, 0, 0, 
-  (SCM mus),
-  "Return the name of @var{music}.")
-{
-  Music * m = unsmob_music (mus);
-  SCM_ASSERT_TYPE(m, mus, SCM_ARG1, __FUNCTION__ ,"music");
-  
-  const char * nm = classname (m);
-  return scm_makfrom0str (nm);
-}
-
-
-
-// to do  property args 
-LY_DEFINE(ly_extended_make_music,
-	  "ly:make-bare-music", 2, 0, 0,  (SCM type, SCM props),
-	  "Make a music object/expression of type @var{type}, init with\n"
-"@var{props}. Warning: this interface will likely change in the near\n"
-"future.\n"
-"\n"
-"Music is the data type that music expressions are stored in. The data\n"
-"type does not yet offer many manipulations.\n"
-"\n"
-"WARNING: only for internal use. Please use make-music-by-name. \n"
-)
-{
-  SCM_ASSERT_TYPE(gh_string_p (type), type, SCM_ARG1, __FUNCTION__, "string");
-
-  SCM s = make_music (ly_scm2string (type))->self_scm ();
-  unsmob_music (s)->immutable_property_alist_ = props;
-  scm_gc_unprotect_object (s);
-  return s;
-}
-
-// to do  property args 
-LY_DEFINE(ly_get_mutable_properties,
-	  "ly:get-mutable-properties", 1, 0, 0,  (SCM mus),
-"Return an alist signifying the mutable properties of @var{mus}.\n"
-"The immutable properties are not available; they should be initialized\n"
-"by the functions make-music-by-name function.\n"
-)
-{
-  Music *m = unsmob_music (mus);
-  SCM_ASSERT_TYPE(m, mus, SCM_ARG1, __FUNCTION__, "music");
-
-  return m->get_property_alist (true);
-}
-
-LY_DEFINE(ly_music_list_p,"music-list?", 1, 0, 0, 
-  (SCM l),"Type predicate: return true if @var{l} is a list of music objects.")
-{
-  if (scm_list_p (l) != SCM_BOOL_T)
-    return SCM_BOOL_F;
-
-  while (gh_pair_p (l))
-    {
-      if (!unsmob_music (gh_car (l)))
-	return SCM_BOOL_F;
-      l =gh_cdr (l);
-    }
-  return SCM_BOOL_T;
-}
-ADD_MUSIC(Music);
-
-
-
-LY_DEFINE(ly_deep_mus_copy,
-	  "ly:music-deep-copy", 1,0,0, (SCM m),
-	  "Copy @var{m} and all sub expressions of @var{m}")
-{
-  if (unsmob_music (m))
-    {
-      SCM ss =  unsmob_music (m)->clone ()->self_scm ();
-      scm_gc_unprotect_object (ss);
-      return ss;
-    }
-  else if (gh_pair_p (m))
-    {
-      return gh_cons (ly_deep_mus_copy (ly_car (m)), ly_deep_mus_copy (ly_cdr (m)));
-    }
-  else
-    return m;
-}
-
-LY_DEFINE(ly_music_transpose,
-	  "ly:music-transpose", 2,0,0, (SCM m, SCM p),
-	  "Transpose @var{m} such that central C is mapped to @var{p}. "
-"Return @var{m}.")
-{
-  Music * sc = unsmob_music (m);
-  Pitch * sp = unsmob_pitch (p);
-  SCM_ASSERT_TYPE(sc, m, SCM_ARG1, __FUNCTION__, "music");
-  SCM_ASSERT_TYPE(sp, p, SCM_ARG2, __FUNCTION__, "pitch");
-
-  sc->transpose (*sp);
-  return sc->self_scm();	// SCM_UNDEFINED ? 
-}
-
-
-SCM make_music_proc;
-
-
-Music*
-make_music_by_name (SCM sym)
-{
-  if (!make_music_proc)
-    make_music_proc = scm_primitive_eval (ly_symbol2scm ("make-music-by-name"));
-	
-  SCM rv = scm_call_1 (make_music_proc, sym);
-
-  /*
-    UGH.
-  */
-  scm_gc_protect_object (rv);
-  return unsmob_music (rv);
-}
-
diff --git a/lily/my-lily-lexer.cc b/lily/my-lily-lexer.cc
deleted file mode 100644
index 06a91a352b..0000000000
--- a/lily/my-lily-lexer.cc
+++ /dev/null
@@ -1,244 +0,0 @@
-/*
-  my-lily-lexer.cc -- implement My_lily_lexer
-
-  source file of the GNU LilyPond music typesetter
-
-  (c) 1997--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-*/
-
-#include <ctype.h>
-#include <sstream>
-
-#include "lily-proto.hh"
-#include "scm-hash.hh"
-#include "interval.hh"
-#include "input-file-results.hh"
-#include "lily-guile.hh"
-#include "parser.hh"
-#include "keyword.hh"
-#include "my-lily-lexer.hh"
-#include "warn.hh"
-#include "source-file.hh"
-#include "main.hh"
-#include "input.hh"
-#include "moment.hh"
-#include "ly-modules.hh"
-
-
-static Keyword_ent the_key_tab[]={
-  {"acciaccatura", ACCIACCATURA},
-  {"accepts", ACCEPTS},
-  {"addlyrics", ADDLYRICS},
-  {"alias", ALIAS},
-  {"alternative", ALTERNATIVE},
-  {"apply", APPLY},
-  {"applycontext", APPLYCONTEXT},
-  {"applyoutput", APPLYOUTPUT},
-  {"appoggiatura", APPOGGIATURA},
-  {"autochange", AUTOCHANGE},
-  {"bar", BAR},
-  {"breathe", BREATHE},
-  {"change", CHANGE},
-  {"chords", CHORDS},
-  {"clef", CLEF},
-  {"consists", CONSISTS},
-  {"consistsend", CONSISTSEND},
-  {"context", CONTEXT},
-  {"default", DEFAULT},
-  {"denies", DENIES},
-  {"drums", DRUMS},
-  {"description", DESCRIPTION},
-  {"figures",FIGURES},
-  {"grace", GRACE},
-  {"grobdescriptions", GROBDESCRIPTIONS},
-  {"header", HEADER},
-  {"key", KEY},
-  {"lyrics", LYRICS},
-  {"lyricsto", NEWADDLYRICS},
-  {"mark", MARK},
-  {"markup", MARKUP},
-  {"midi", MIDI},
-  {"name", NAME},
-  {"new", NEWCONTEXT},
-  {"notes", NOTES},
-  {"octave", OCTAVE},
-  {"once", ONCE},
-  {"override", OVERRIDE},
-  {"paper", PAPER},
-  {"partcombine", PARTCOMBINE},
-  {"partial", PARTIAL},
-  {"property", PROPERTY},
-  {"relative", RELATIVE},
-  {"remove", REMOVE},
-  {"repeat", REPEAT},
-  {"rest", REST},
-  {"revert", REVERT},
-  {"score", SCORE},
-  {"sequential", SEQUENTIAL},
-  {"set", SET},
-  {"simultaneous", SIMULTANEOUS},
-  {"skip", SKIP},
-  {"tag", TAG},
-  {"tempo", TEMPO},
-  {"time", TIME_T},
-  {"times", TIMES},
-  {"translator", TRANSLATOR},
-  {"transpose", TRANSPOSE},
-  {"type", TYPE},
-  {"unset", UNSET},
-  {"with", WITH},
-  {0,0}
-};
-
-
-My_lily_lexer::My_lily_lexer ()
-{
-  //  yy_flex_debug = 1;
-  
-  keytable_ = new Keyword_table (the_key_tab);
-
-  chordmodifier_tab_ = scm_make_vector (gh_int2scm (1), SCM_EOL);
-  pitchname_tab_stack_ = SCM_EOL; 
-  
-  scopes_ = SCM_EOL;
-  
-  add_scope(ly_make_anonymous_module());
-  errorlevel_ =0; 
-
-  main_input_b_ = false;
-}
-
-void
-My_lily_lexer::add_scope (SCM module)
-{
-  ly_reexport_module (scm_current_module ());
-  scm_set_current_module (module);
-  for (SCM s = scopes_; gh_pair_p (s); s = gh_cdr (s))
-    {
-      /*
-	UGH. how to do this more neatly? 
-      */      
-      SCM expr = scm_list_n (ly_symbol2scm ("module-use!"),
-			     module, scm_list_n (ly_symbol2scm ("module-public-interface"),
-						 gh_car (s), SCM_UNDEFINED),
-			     SCM_UNDEFINED);
-      
-      scm_primitive_eval(expr);
-    }
-  
-  scopes_ = scm_cons (module, scopes_);
-}
-
-SCM
-My_lily_lexer::remove_scope ()
-{
-  SCM sc = gh_car (scopes_);
-  scopes_ = gh_cdr (scopes_);
-  scm_set_current_module (gh_car (scopes_));
-
-  return sc;
-}
-
-
-int
-My_lily_lexer::lookup_keyword (String s)
-{
-  return keytable_->lookup (s.to_str0 ());
-}
-
-SCM
-My_lily_lexer::lookup_identifier (String s)
-{
-  SCM sym = ly_symbol2scm (s.to_str0());
-  for (SCM s = scopes_; gh_pair_p (s); s = gh_cdr (s))
-    {
-      SCM var = ly_module_lookup (gh_car (s), sym);
-      if (var != SCM_BOOL_F)
-	return scm_variable_ref(var);
-    }
-
-  return SCM_UNDEFINED;
-}
-
-void
-My_lily_lexer::start_main_input ()
-{  
-  new_input (main_input_name_, &global_input_file->sources_);
-  allow_includes_b_ = allow_includes_b_ && ! safe_global_b;
-
-  scm_module_define (gh_car (scopes_),
-		     ly_symbol2scm ("input-file-name"),
-		     scm_makfrom0str (main_input_name_.to_str0 ()));
-}
-
-void
-My_lily_lexer::set_identifier (SCM name, SCM s)
-{
-  assert (gh_string_p (name));
-  
-  if (lookup_keyword (ly_scm2string (name)) >= 0)
-    {
-      size_t sz;
-      char * str = gh_scm2newstr (name, &sz) ;
-      warning (_f ("Identifier name is a keyword: `%s'", str));
-      free  (str);
-    }
-
-  SCM sym = scm_string_to_symbol (name);
-  SCM mod = gh_car (scopes_);
-
-  scm_module_define (mod, sym, s);
-}
-
-My_lily_lexer::~My_lily_lexer ()
-{
-  delete keytable_;
-}
-
-
-
-void
-My_lily_lexer::LexerError (char const *s)
-{
-  if (include_stack_.is_empty ())
-    {
-      progress_indication (_f ("error at EOF: %s", s)+ String ("\n"));
-    }
-  else
-    {
-      errorlevel_ |= 1;
-      Input spot (get_source_file (), here_str0 ());
-      spot.error (s);
-    }
-}
-
-char
-My_lily_lexer::escaped_char (char c) const
-{
-  switch (c)
-    {
-    case 'n':
-      return '\n';
-    case 't':
-      return '\t';
-
-    case '\'':
-    case '\"':
-    case '\\':
-      return c;
-    }
-  return 0;
-}
-
-Input
-My_lily_lexer::here_input () const
-{
-  Source_file * f= get_source_file ();
-  return Input (f, (char*)here_str0 ());
-}
-
-void
-My_lily_lexer::prepare_for_next_token ()
-{
-  last_input_ = here_input();
-}
diff --git a/lily/my-lily-parser.cc b/lily/my-lily-parser.cc
deleted file mode 100644
index a2e9bb48fb..0000000000
--- a/lily/my-lily-parser.cc
+++ /dev/null
@@ -1,141 +0,0 @@
-/*
-  my-lily-parser.cc -- implement My_lily_parser
-
-  source file of the GNU LilyPond music typesetter
-
-  (c) 1997--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-       Jan Nieuwenhuizen <janneke@gnu.org>
-*/
-
-#include "my-lily-parser.hh"
-#include "my-lily-lexer.hh"
-#include "warn.hh"
-#include "main.hh"
-#include "parser.hh"
-#include "input-file-results.hh"
-#include "scm-hash.hh"
-
-My_lily_parser::My_lily_parser (Input_file_results * source)
-{
-  input_file_ = source;
-  lexer_ = 0;
-  default_duration_ = Duration (2,0);
-  error_level_ = 0;
-  last_beam_start_ = SCM_EOL;
-
-  default_header_ =0;
-}
-
-My_lily_parser::~My_lily_parser ()
-{
-  delete lexer_;
-  if (default_header_)
-    scm_gc_unprotect_object (default_header_->self_scm());
-}
-
-
-void
-My_lily_parser::parse_file (String init, String in_file, String out_file)
-{
-  lexer_ = new My_lily_lexer;
-  output_basename_ = out_file;
-  
-  lexer_->main_input_name_ = in_file;
-
-  progress_indication (_ ("Parsing..."));
-
-  set_yydebug (0);
-  lexer_->new_input (init, &input_file_->sources_);
-  do_yyparse ();
-
-  progress_indication ("\n");
-  
-  if (!define_spots_.is_empty ())
-    {
-      define_spots_.top ().warning (_ ("Braces don't match"));
-      error_level_ = 1;
-    }
-
-  input_file_->inclusion_names_ = lexer_->filename_strings_;
-
-  error_level_ = error_level_ | lexer_->errorlevel_; // ugh naming.
-}
-
-void
-My_lily_parser::push_spot ()
-{
-  define_spots_.push (here_input ());
-}
-
-char const *
-My_lily_parser::here_str0 () const
-{
-  return lexer_->here_str0 ();
-}
-
-void
-My_lily_parser::parser_error (String s)
-{
-  here_input ().error (s);
-  error_level_ = 1;
-  exit_status_global = 1;
-}
-
-
-
-Input
-My_lily_parser::pop_spot ()
-{
-  return define_spots_.pop ();
-}
-
-Input
-My_lily_parser::here_input () const
-{
-  /*
-    Parsing looks ahead , so we really want the previous location of the
-    lexer, not lexer_->here_input().
-   */
-  /*
-    Actually, that gets very icky when there are white space, because
-    the line-numbers are all wrong.  Let's try the character before
-    the current token. That gets the right result for
-    note/duration stuff, but doesn't mess up for errors in the 1st token of the line. 
-    
-   */
-  Input hi (lexer_->here_input ());
-
-  char const * bla = hi.defined_str0_;
-  if (hi.line_number () > 1
-      || hi.column_number () > 1)
-    bla --;
-  
-  return Input (hi.source_file_, bla);
-}
-
-#include "paper-def.hh"
-#include "context-def.hh"
-
-My_lily_parser * current_parser;
-
-MAKE_SCHEME_CALLBACK (My_lily_parser,paper_description, 0);
-
-SCM
-My_lily_parser::paper_description ()
-{
-  My_lily_parser * me = current_parser;
-
-  Music_output_def *id = unsmob_music_output_def (me->lexer_->lookup_identifier ("$defaultpaper"));
-  Paper_def *p = dynamic_cast<Paper_def*> (id->clone ());
-
-  SCM al = p->translator_tab_->to_alist ();
-  SCM l = SCM_EOL;
-  for (SCM s = al ; gh_pair_p (s); s = ly_cdr (s))
-    {
-      Context_def * td = unsmob_context_def (ly_cdar (s));
-      l = gh_cons (gh_cons (ly_caar (s), td->to_alist ()),  l);
-    }
-  return l;  
-}
-  
-
diff --git a/lily/new-accidental-engraver.cc b/lily/new-accidental-engraver.cc
deleted file mode 100644
index 9b3d6a04ee..0000000000
--- a/lily/new-accidental-engraver.cc
+++ /dev/null
@@ -1,553 +0,0 @@
-/*
-  new-accidental-engraver.cc -- implement new_accidental_engraver
-
-  (c) 1997--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-  Modified 2001--2004 by Rune Zedeler <rz@daimi.au.dk>
-
-  This is an experimental file - producing correct accidentals but
-  unfortunately ruining the spacing. -rz
-  
-*/
-
-#include "event.hh"
-
-#include "item.hh"
-#include "tie.hh"
-#include "rhythmic-head.hh"
-#include "engraver-group-engraver.hh"
-#include "accidental-placement.hh"
-#include "side-position-interface.hh"
-#include "engraver.hh"
-#include "arpeggio.hh"
-#include "warn.hh"
-
-#include "translator-group.hh"
-
-/**
-
-
-FIXME: should not compute vertical positioning of accidentals, but
-get them from the noteheads
-
-The algorithm for accidentals should be documented, and made
-tweakable.
-
-*/
-
-struct New_accidental_entry {
-  int pass_done_;
-  int number_accidentals_;
-  int number_cautionaries_;
-  bool different_;
-  Music * melodic_;
-  Grob * accidental_;
-  Translator_group *origin_;
-  Grob*  head_;
-  New_accidental_entry();
-};
-
-New_accidental_entry::New_accidental_entry()
-{
-  pass_done_ = 0;
-  number_accidentals_ = 0;
-  number_cautionaries_ = 0;
-  different_ = false;
-  melodic_ = 0;
-  accidental_ = 0;
-  origin_ = 0;
-  head_ = 0;
-}
-
-struct New_accidental_engraver : Engraver {
-protected:
-  TRANSLATOR_DECLARATIONS (New_accidental_engraver);
-  virtual void process_music ();
-  virtual void acknowledge_grob (Grob_info);
-  virtual void stop_translation_timestep ();
-  virtual void process_acknowledged_grobs ();
-  virtual void finalize ();
-  virtual void process_grobs_first_pass ();
-  virtual void process_grobs_second_pass ();
-
-  public:
-
-  /*
-    TODO -> property.
-    
-    This is not a property, and it is not protected.  This poses a
-    very small risk of the value being GC'd from under us.
-  */
-  SCM last_keysig_;
-
-  /*
-    Urgh. Since the accidentals depend on lots of variables, we have to
-    store all information before we can really create the accidentals.
-  */
-  Link_array<Grob> arpeggios_;
-
-  Grob * accidental_placement_;
-  
-
-  /*
-    The next 
-   */
-  Array<New_accidental_entry> accidentals_;
-  
-  Link_array<Grob> ties_;
-
-
-};
-
-
-New_accidental_engraver::New_accidental_engraver ()
-{
-  last_keysig_ = SCM_BOOL_F;
-  accidental_placement_ = 0;
-}
-
-/* inserts the source alist into the destination alist, erasing old entries.
-   result is: dest = merged
-*/ 
-static SCM merge_alists_front_x (SCM src, SCM dest) {
-  if(gh_pair_p(src)) {
-    dest = merge_alists_front_x(ly_cdr(src),dest);
-    dest = ly_assoc_front_x(dest, ly_caar(src), ly_cdar(src));
-  }
-  return dest;
-}
-
-static void merge_property_on_children (Translator_group * trans,
-				       const char * from_sym, const char * to_sym)
-{
-  SCM from = trans->get_property(from_sym);
-  SCM to = trans->get_property(to_sym);
-  to = merge_alists_front_x(from, to);
-  trans->set_property (to_sym,  to);
-  trans->set_property (from_sym, SCM_EOL);
-  for (SCM p = trans -> trans_group_list_; gh_pair_p (p); p = ly_cdr(p)) {
-    Translator_group *trg =  dynamic_cast<Translator_group*> (unsmob_translator (ly_car (p)));
-    merge_property_on_children(trg, from_sym, to_sym);
-  }
-}
-
-static void merge_property_on_family (Translator_group * trans,
-				      const char * from_sym, const char * to_sym)
-{
-  merge_property_on_children (trans, from_sym, to_sym);
-  trans = trans->daddy_trans_;
-  while (trans)
-    {
-      SCM from = trans->get_property(from_sym);
-      SCM to = trans->get_property(to_sym);
-      to = merge_alists_front_x(from, to);
-      trans->set_property (to_sym,  to);
-      trans->set_property (from_sym, SCM_EOL);
-      trans = trans->daddy_trans_;
-    }
-}
-
-static void set_property_on_children (Translator_group * trans, const char * sym, SCM val)
-{
-  trans->set_property (sym, val);
-  for (SCM p = trans -> trans_group_list_; gh_pair_p (p); p = ly_cdr(p)) {
-    Translator_group *trg =  dynamic_cast<Translator_group*> (unsmob_translator (ly_car (p)));
-    set_property_on_children(trg,sym,ly_deep_copy(val));
-  }
-}
-
-static void set_property_on_family(Translator_group * trans, const char * sym, SCM val)
-{
-  set_property_on_children (trans, sym, val);
-  trans = trans->daddy_trans_;
-  while (trans)
-    {
-      trans -> set_property (sym,  ly_deep_copy (val));
-      trans = trans->daddy_trans_;
-    }
-}
-
-/*
-calculates the number of accidentals on basis of the current local key sig
-  (passed as argument)
-  Returns number of accidentals (0, 1 or 2).
-    Negative (-1 or -2) if accidental has changed.
-
-*/
-static int
-number_accidentals (SCM sig, Music * note, Pitch *pitch, SCM curbarnum, SCM lazyness, 
-		    bool ignore_octave_b)
-{
-  int n = pitch->get_notename ();
-  int o = pitch->get_octave ();
-  int a = pitch->get_alteration (); 
-  int curbarnum_i = gh_scm2int (curbarnum);
-  int accbarnum_i = 0;
-
-  SCM prev;
-  if (ignore_octave_b)
-    prev = ly_assoc_cdr (gh_int2scm (n), sig);
-  else
-    prev = scm_assoc (gh_cons (gh_int2scm (o), gh_int2scm (n)), sig);
-
-  /* should really be true unless prev == SCM_BOOL_F */
-  if (gh_pair_p (prev) && gh_pair_p (ly_cdr (prev)))
-    {
-      accbarnum_i = gh_scm2int (ly_cddr (prev));
-      prev = gh_cons (ly_car (prev), ly_cadr (prev));
-    }
-  
-  /* If an accidental was not found or the accidental was too old */
-  if (prev == SCM_BOOL_F ||
-      (gh_number_p (lazyness) && curbarnum_i > accbarnum_i + gh_scm2int (lazyness)))
-    prev = scm_assoc (gh_int2scm (n), sig);
-
-
-  SCM prev_acc = (prev == SCM_BOOL_F) ? gh_int2scm (0) : ly_cdr (prev);
-
-  int p = gh_number_p (prev_acc) ? gh_scm2int (prev_acc) : 0;
-
-  int num;
-  if (a == p
-      && !to_boolean (note->get_mus_property ("force-accidental"))
-      && gh_number_p (prev_acc))
-    num = 0;
-  else if ( (abs (a)<abs (p) || p*a<0) && a != 0 )
-    num = 2;
-  else
-    num = 1;
-  
-  return a == p ? num : -num;
-}
-
-static int
-number_accidentals (Music * note, Pitch *pitch, Translator_group * origin, 
-		    SCM accidentals, SCM curbarnum)
-{
-  int number = 0;
-
-  bool diff = false;
-  if (gh_pair_p (accidentals) && !gh_symbol_p (ly_car (accidentals)))
-    warning (_f ("Accidental typesetting list must begin with context-name: %s", 
-		 ly_scm2string (ly_car (accidentals)).to_str0 ()));
-  
-  while (gh_pair_p (accidentals) && origin)
-    {
-      // If pair then it is a new accidentals typesetting rule to be checked
-      if (gh_pair_p (ly_car (accidentals)))
-	{
-	  SCM type = gh_caar (accidentals);
-	  SCM lazyness = gh_cdar (accidentals);
-	  SCM localsig = origin->get_property ("localKeySignature");
-	  
-	  bool same_octave_b = 
-	    gh_eq_p (ly_symbol2scm ("same-octave"), type);
-	  bool any_octave_b = 
-	    gh_eq_p (ly_symbol2scm ("any-octave"), type);
-
-	  if (same_octave_b || any_octave_b)
-	    {
-	      int n = number_accidentals
-		(localsig, note, pitch, curbarnum, lazyness, any_octave_b);
-	      diff = diff || (n < 0);
-	      number = max (number, abs (n));     
-	    }
-	  else
-	    warning (_f ("unknown accidental typesetting: %s. Ignored", 
-			 ly_symbol2string (type).to_str0 ()));
-	}
-      
-
-      /*
-	if symbol then it is a context name. Scan parent contexts to find it.
-      */
-      else if (gh_symbol_p (ly_car (accidentals)))
-	{
-	  SCM context = ly_car (accidentals);
-	  
-	  while (origin && !origin->is_alias (context))
-	    origin = origin->daddy_trans_;
-      
-	  if (!origin)
-	    warning (_f ("Symbol is not a parent context: %s. Ignored", 
-			 ly_symbol2string (context).to_str0 ()));
-	}
-      else warning (_f ("Accidental typesetting must be pair or context-name: %s", 
-			ly_scm2string (ly_car (accidentals)).to_str0 ()));
-      
-      accidentals = ly_cdr (accidentals);
-    }
-  return diff ? -number : number;
-}
-
-
-/* 
-  Perhaps one should join the two functions into one function taking an
-  argument (pass).
-  OTOH even though code would be smaller, spaghetti-level would increase.
-*/
-void
-New_accidental_engraver::process_grobs_first_pass ()
-{
-  SCM accidentals =  get_property ("autoAccidentals");
-  SCM cautionaries =  get_property ("autoCautionaries");
-  SCM barnum = get_property ("currentBarNumber");
-
-  for (int i = 0; i  < accidentals_.size (); i++) 
-    {
-      if (accidentals_[i].pass_done_ >= 1)
-	continue;
-      accidentals_[i].pass_done_  = 1;
-
-      Grob * support = accidentals_[i].head_;
-      Music * note = accidentals_[i].melodic_;
-      Translator_group * origin = accidentals_[i].origin_;
-      Pitch * pitch = unsmob_pitch (note->get_mus_property ("pitch"));
-
-      int num;
-      num = number_accidentals (note, pitch, origin, accidentals, barnum);
-      accidentals_[i].number_accidentals_ = abs(num);
-      accidentals_[i].different_ = num<0;
-
-      num = number_accidentals (note, pitch, origin, cautionaries, barnum);
-      accidentals_[i].number_cautionaries_ = abs(num);
-      accidentals_[i].different_ = accidentals_[i].different_ || num<0;
-
-      bool tie_changes = false;
-      for (int j = 0; j < ties_.size (); j++)
-	if (support == Tie::head (ties_[j], RIGHT))
-	  tie_changes = accidentals_[i].different_;
-      int n = pitch->get_notename ();
-      int o = pitch->get_octave ();
-      int a = pitch->get_alteration ();
-      SCM o_s = gh_int2scm (o);
-      SCM n_s = gh_int2scm (n);
-      SCM on_s = gh_cons (o_s,n_s);
-      
-      while (origin)
-	{
-	  SCM sigch = origin->get_property ("localKeySignatureChanges");
-	  SCM alt;
-	  if (tie_changes)
-	    /*
-	      Remember an alteration that is different both from
-	      that of the tied note and of the key signature.
-	    */
-	    alt = SCM_BOOL_T;
-	  else
-	    alt = gh_int2scm (a);
-	  bool other_alt_same_oct = false;
-	  bool other_alt_any_oct = false;
-	  for (SCM j = sigch; gh_pair_p(j); j = ly_cdr(j)) {
-	    SCM entry = ly_car(j);
-	    /* if same notename has a different alt already recorded: */
-	    if(gh_equal_p(ly_cdar(entry),n_s) && !gh_equal_p(ly_cadr(entry),alt))
-	      {
-		/* if it is also in same octave */
-		if(gh_equal_p(ly_caar(entry),o_s))
-		  other_alt_same_oct = true;
-		else
-		  other_alt_any_oct = true;
-	      }
-	  }
-	  if(other_alt_same_oct)
-	    alt = SCM_BOOL_T;
-	  sigch = ly_assoc_front_x (sigch, on_s, gh_cons(alt,barnum)); 
-	  if(other_alt_any_oct && !other_alt_same_oct) {
-	    sigch = ly_assoc_front_x (sigch, on_s, gh_cons(SCM_BOOL_T,barnum));
-	  }
-	  origin->set_property ("localKeySignatureChanges",  sigch);
-	  origin = origin->daddy_trans_;  
-	}
-    }
-}
-
-void
-New_accidental_engraver::process_grobs_second_pass ()
-{
-  SCM accidentals =  get_property ("autoAccidentals");
-  SCM cautionaries =  get_property ("autoCautionaries");
-  SCM barnum = get_property ("currentBarNumber");
-  
-  bool extra_natural_b = get_property ("extraNatural") == SCM_BOOL_T;
-  for (int i = 0; i  < accidentals_.size (); i++) 
-    {
-      if (accidentals_[i].pass_done_ >= 2)
-	continue;
-      accidentals_[i].pass_done_  = 2;
-      Grob * support = accidentals_[i].head_;
-      Music * note = accidentals_[i].melodic_;
-      Translator_group * origin = accidentals_[i].origin_;
-      
-      Pitch * pitch = unsmob_pitch (note->get_mus_property ("pitch"));
-
-      int num;
-      num = number_accidentals (note, pitch, origin, accidentals, barnum);
-      accidentals_[i].number_accidentals_ =
-	max (accidentals_[i].number_accidentals_, abs(num));
-      accidentals_[i].different_ = accidentals_[i].different_ || num<0;
-
-      num = number_accidentals (note, pitch, origin, cautionaries, barnum);
-      accidentals_[i].number_cautionaries_ =
-	max (accidentals_[i].number_cautionaries_, abs(num));
-      accidentals_[i].different_ = accidentals_[i].different_ || num<0;
-
-
-      bool cautionary = to_boolean (note->get_mus_property ("cautionary"));
-      
-      if (accidentals_[i].number_cautionaries_ >accidentals_[i].number_accidentals_ )
-	{
-	  num = accidentals_[i].number_cautionaries_;
-	  cautionary = true;
-	}
-      else
-	  num = accidentals_[i].number_accidentals_;
-
-      bool tie_changes = false;
-      Grob *tie_break_reminder = 0;
-      for (int j = 0; j < ties_.size (); j++)
-	if (support == Tie::head (ties_[j], RIGHT))
-	  {
-	    tie_changes = accidentals_[i].different_;
-	    tie_break_reminder = ties_[j];
-	  }
-      
-      if (num)
-	{
-	  Grob * a = make_item ("Accidental");
-	  a->set_parent (support, Y_AXIS);
-	  
-	  if (!accidental_placement_)
-	    {
-	      accidental_placement_ = make_item ("AccidentalPlacement");
-	      announce_grob (accidental_placement_, a->self_scm());
-	    }
-	  
-	  Accidental_placement::add_accidental (accidental_placement_, a);
-	  announce_grob (a, SCM_EOL);
-	  
-	  
-	  SCM accs = gh_cons (gh_int2scm (pitch->get_alteration ()), SCM_EOL);
-	  if (num == 2 && extra_natural_b)
-	    accs = gh_cons (gh_int2scm (0), accs);
-	  
-	  if (cautionary)
-	    {
-	      a->set_grob_property ("cautionary", SCM_BOOL_T);
-	    }
-	  
-	  if (tie_break_reminder)
-	    {
-	      a->set_grob_property ("tie", tie_break_reminder->self_scm());
-	    }
-	  
-	  
-	  support->set_grob_property ("accidental-grob", a->self_scm ());
-	  
-	  a->set_grob_property ("accidentals", accs);
-	  accidentals_[i].accidental_ = a;
-	  /*
-	    We add the accidentals to the support of the arpeggio, so it is
-	    put left of the accidentals. 
-	  */
-	  for (int i = 0;  i < arpeggios_.size ();  i++)
-	    Side_position_interface::add_support (arpeggios_[i], a);
-	}       
-    }
-}
-
-void
-New_accidental_engraver::process_acknowledged_grobs ()
-{
-  if (accidentals_.size () && accidentals_.top().pass_done_ < 1)
-    process_grobs_first_pass ();
-}
-
-void
-New_accidental_engraver::finalize ()
-{
-
-}
-
-void
-New_accidental_engraver::stop_translation_timestep ()
-{
-  merge_property_on_family(daddy_trans_, "localKeySignatureChanges", "localKeySignature");
-  if (accidentals_.size () && accidentals_.top().pass_done_ < 2)
-    process_grobs_second_pass ();
-
-  for (int i = 0; i < accidentals_.size(); i++)
-    {
-      Grob *a = accidentals_[i].accidental_;
-      if (a)
-	{
-	  typeset_grob (a);
-	}
-    }
-
-  if (accidental_placement_)
-    typeset_grob(accidental_placement_);
-  accidental_placement_ = 00;
-
-  set_property_on_family(daddy_trans_, "localKeySignatureChanges", SCM_EOL);  
-  accidentals_.clear();
-  arpeggios_.clear ();
-  ties_.clear ();
-}
-
-void
-New_accidental_engraver::acknowledge_grob (Grob_info info)
-{
-  Music * note =  info.music_cause ();
-
-  if (note
-      && note->is_mus_type ("note-event")
-      && Rhythmic_head::has_interface (info.grob_))
-    {
-      New_accidental_entry entry ;
-      entry.head_ = info.grob_;
-      entry.origin_ = info.origin_trans_->daddy_trans_;
-      entry.melodic_ = note;
-
-      accidentals_.push (entry);
-    }
-  else if (Tie::has_interface (info.grob_))
-    {
-      ties_.push (info.grob_);
-    }
-  else if (Arpeggio::has_interface (info.grob_))
-    {
-      arpeggios_.push (info.grob_); 
-    }
-  
-}
-
-void
-New_accidental_engraver::process_music ()
-{
-  SCM sig = get_property ("keySignature");
-
-  /* Detect key sig changes.
-     Update all parents and children
-  */
-  if (last_keysig_ != sig)
-    {
-      set_property_on_family(daddy_trans_, "localKeySignature", sig);
-      set_property_on_family(daddy_trans_, "localKeySignatureChanges", SCM_EOL); //This souldn't be neccesary
-      last_keysig_ = sig;
-    }
-}
-
-
-
-
-
-ENTER_DESCRIPTION (New_accidental_engraver,
-"Make accidentals.  Catches note heads, ties and notices key-change "
-"events.  Due to interaction with ties (which don't come together "
-"with note heads), this needs to be in a context higher than Tie_engraver.",
-		   
-	       "Accidental",
-/* accepts */     "",
-	       "rhythmic-head-interface tie-interface arpeggio-interface",
-	       "localKeySignature localKeySignatureChanges extraNatural autoAccidentals autoCautionaries",
-		   "localKeySignature localKeySignatureChanges");
diff --git a/lily/new-fingering-engraver.cc b/lily/new-fingering-engraver.cc
deleted file mode 100644
index 7fc5779d53..0000000000
--- a/lily/new-fingering-engraver.cc
+++ /dev/null
@@ -1,331 +0,0 @@
-/*   
-  fingering-engraver.cc --  implement New_fingering_engraver
-  
-  source file of the GNU LilyPond music typesetter
-  
-  (c) 1998--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-  
- */
-
-#include "warn.hh"
-#include "engraver.hh"
-#include "side-position-interface.hh"
-#include "item.hh"
-#include "event.hh"
-#include "stem.hh"
-#include "rhythmic-head.hh"
-#include "self-alignment-interface.hh"
-#include "script.hh"
-#include "stem.hh"
-
-struct Finger_tuple
-{
-  Grob *head_;
-  Grob *script_;
-  Music *note_event_;
-  Music *finger_event_;
-  SCM description_;
-  int position_;
-
-  Finger_tuple ()
-  {
-    position_ = 0;
-    head_ = script_ = 0;
-    note_event_ = finger_event_ = 0;
-    description_ = SCM_EOL;
-  }
-  static int compare (Finger_tuple const & c1, Finger_tuple const & c2)
-  {
-    return c1.position_-  c2.position_;
-  }
-	       
-};
-
-class New_fingering_engraver : public Engraver
-{
-  Array<Finger_tuple> fingerings_;
-  Array<Finger_tuple> articulations_;
-  Link_array<Grob> heads_;
-  Grob *stem_;
-  
-public:
-  TRANSLATOR_DECLARATIONS(New_fingering_engraver);
-protected:
-  virtual void stop_translation_timestep ();
-  virtual void acknowledge_grob (Grob_info);
-  void add_fingering (Grob*, Music*,Music*);
-  void add_script  (Grob*, Music*,Music*);
-  void position_scripts();
-};
-
-void
-New_fingering_engraver::acknowledge_grob (Grob_info inf)
-{
-  if (Rhythmic_head::has_interface (inf.grob_))
-    {
-      Music * note_ev =inf.music_cause ();
-
-      SCM arts = note_ev->get_mus_property ("articulations");
-
-      for (SCM s = arts; gh_pair_p (s); s = gh_cdr  (s))
-	{
-	  Music * m = unsmob_music (gh_car (s));
-
-	  if (!m)
-	    continue;
-	  
-
-	  if (m->is_mus_type ("fingering-event"))
-	    {
-	      add_fingering (inf.grob_ , m, note_ev);
-	    }
-	  else if (m->is_mus_type ("text-script-event"))
-	    {
-	      m->origin ()->warning ("Can not add text scripts to individual note heads");
-	    }
-	  else if (m->is_mus_type ("script-event"))
-	    {
-	      add_script (inf.grob_, m, note_ev);
-	    }
-	  else if (m->is_mus_type ("harmonic-event"))
-	    {
-	      inf.grob_->set_grob_property ("style", ly_symbol2scm ("harmonic"));
-	    }
-	}
-
-      heads_.push (inf.grob_);
-    }
-  else if (Stem::has_interface (inf.grob_))
-    {
-      stem_ = inf.grob_;
-    }
-}
-
-void
-New_fingering_engraver::add_script (Grob * head,
-				    Music * event,
-				    Music * )
-{
-  Finger_tuple ft ;
-
-  Grob * g=  make_item ("Script");
-  make_script_from_event (g, &ft.description_, daddy_trans_,
-			  event->get_mus_property ("articulation-type"), 0);
-  if (g)
-    {
-      ft.script_ =g ;
-      
-      articulations_.push (ft);
-      announce_grob (g, event->self_scm ());
- 
-      ft.script_->set_parent (head, X_AXIS);
-    }
-}				    
-				    
-
-void
-New_fingering_engraver::add_fingering (Grob * head,
-				       Music * event,
-				       Music *hevent)
-{
-  Finger_tuple ft;
-
-  ft.script_ = make_item ("Fingering");
-  announce_grob (ft.script_, event->self_scm());
-  
-  Side_position_interface::add_support (ft.script_, head);
-
-  int d = gh_scm2int (event->get_mus_property ("digit"));
-  
-  /*
-    TODO:
-    
-    Should add support for thumb.  It's a little involved, since
-    the thumb lives in a different font. Maybe it should be moved?
-    
-   */
-  if (d > 5)
-    {
-      /*
-	music for the softenon children? 
-       */
-      event->origin()->warning (_("music for the martians."));
-    }
-  SCM sstr = scm_number_to_string (gh_int2scm (d), gh_int2scm (10)) ;
-  ft.script_->set_grob_property ("text", sstr);
-       
-  ft.finger_event_ = event;
-  ft.note_event_ = hevent;
-  ft.head_ = head;
-
-  fingerings_.push (ft);
-}
-
-void
-New_fingering_engraver::position_scripts ()
-{
-
-  /*
-    This is not extremely elegant, but we have to do a little
-    formatting here, because the parent/child relations should be
-    known before we move on to the next time step.
-
-    A more sophisticated approach would be to set both X and Y parents
-    to the note head, and write a more flexible function for
-    positioning the fingerings, setting both X and Y coordinates.
-  */
-  for (int i = 0; i < fingerings_.size(); i++)
-    {      
-      fingerings_[i].position_ = gh_scm2int (fingerings_[i].head_ -> get_grob_property( "staff-position"));
-    }
-
-  for (int i = fingerings_.size(); i--;)
-    for (int j = heads_.size() ; j--;)
-      Side_position_interface::add_support (fingerings_[i].script_, heads_[j]);
-    
-  Array<Finger_tuple> up, down, horiz;
-  for (int i = fingerings_.size(); i--;)
-    {
-      SCM d = fingerings_[i].finger_event_->get_mus_property ("direction");
-      if (to_dir (d))
-	{
-	  ((to_dir (d) == UP) ? up : down ).push (fingerings_[i]);
-	  fingerings_.del (i);
-	}
-    }
-  
-  fingerings_.sort (&Finger_tuple::compare);
-  SCM orientations = get_property ("fingeringOrientations");
-
-  bool up_p = scm_memq (ly_symbol2scm ("up"), orientations) != SCM_BOOL_F;
-  bool down_p = scm_memq (ly_symbol2scm ("down"), orientations) != SCM_BOOL_F;
-  bool left_p = scm_memq (ly_symbol2scm ("left"), orientations) != SCM_BOOL_F;
-  bool right_p = scm_memq (ly_symbol2scm ("right"), orientations) != SCM_BOOL_F;
-  Direction hordir = (right_p) ? RIGHT : LEFT;
-  if (left_p || right_p)
-    {
-      if (up_p && !up.size () && fingerings_.size ())
-	up.push (fingerings_.pop());
-
-      if (down_p && !down.size () && fingerings_.size())
-	{
-	  down.push (fingerings_[0]);
-	  fingerings_.del(0);
-	}
-
-      horiz.concat (fingerings_);
-    }
-  else if (up_p && down_p)
-    {
-      int center = fingerings_.size() / 2;
-      down.concat (fingerings_.slice (0,center));
-      up.concat (fingerings_.slice (center, fingerings_.size()));
-    }
-  else if (up_p)
-    {
-      up.concat (fingerings_);
-      fingerings_ .clear ();
-    }
-  else
-    {
-      if (!down_p)
-	warning(_ ("Fingerings are also not down?! Putting them down anyway."));
-      down.concat (fingerings_);
-      fingerings_.clear();
-    }
-  
-  for (int i = 0; i < horiz.size(); i++)
-    {
-      Finger_tuple ft = horiz[i];
-      Grob* f = ft.script_;
-      f->set_parent (ft.head_, X_AXIS);
-      f->set_parent (ft.head_, Y_AXIS);
-      f->add_offset_callback (Self_alignment_interface::centered_on_parent_proc, Y_AXIS);
-      f->add_offset_callback (Self_alignment_interface::aligned_on_self_proc, Y_AXIS);
-      f->add_offset_callback (Side_position_interface::aligned_side_proc, X_AXIS);
-
-      f->set_grob_property ("direction", gh_int2scm (hordir));
-      typeset_grob (f);
-    }
-
-  int finger_prio = 200;
-  for (int i = 0; i < up.size(); i++)
-    {
-      Finger_tuple ft = up[i];
-      Grob* f = ft.script_;
-      f->set_parent (ft.head_, X_AXIS);
-      f->set_grob_property ("script-priority",
-			    gh_int2scm (finger_prio + i));
-      f->add_offset_callback (Side_position_interface::aligned_side_proc, Y_AXIS);
-      f->add_offset_callback (Self_alignment_interface::centered_on_parent_proc, X_AXIS);
-      f->add_offset_callback (Self_alignment_interface::aligned_on_self_proc, X_AXIS);
-      
-      f->set_grob_property ("direction", gh_int2scm (UP));
-
-      typeset_grob (f);
-    }
-  
-  for (int i = 0; i < down.size(); i++)
-    {
-      Finger_tuple ft = down[i];
-      Grob* f = ft.script_;
-      f->set_parent (ft.head_, X_AXIS);
-      f->set_grob_property ("script-priority",
-			    gh_int2scm (finger_prio + down.size() - i));
-
-      f->add_offset_callback (Self_alignment_interface::centered_on_parent_proc, X_AXIS);
-      f->add_offset_callback (Self_alignment_interface::aligned_on_self_proc, X_AXIS);
-      f->add_offset_callback (Side_position_interface::aligned_side_proc, Y_AXIS);
-      f->set_grob_property ("direction", gh_int2scm (DOWN));
-      typeset_grob (f);
-    }
-}
-
-void
-New_fingering_engraver::stop_translation_timestep ()
-{
-  if (fingerings_.size ())
-    {
-      position_scripts();
-      fingerings_.clear ();
-    }
-  
-  for (int i =  articulations_.size(); i--;)
-    {
-      Grob *sc = articulations_[i].script_;
-   
-      for (int j = heads_.size() ; j--;)
-	Side_position_interface::add_support (sc, heads_[j]);
-
-      if (stem_ && to_dir (sc->get_grob_property ("side-relative-direction")))
-	sc->set_grob_property ("direction-source", stem_->self_scm ());
-      
-      SCM follow = scm_assoc (ly_symbol2scm ("follow-into-staff"), articulations_[i].description_);
-      if (gh_pair_p (follow) && to_boolean (gh_cdr (follow)))
-	{
-	  sc->add_offset_callback (Side_position_interface::quantised_position_proc, Y_AXIS);
-	  sc->set_grob_property ("staff-padding" , SCM_EOL);
-	}
-      typeset_grob (sc);
-    }
-
-  stem_ = 0;
-  heads_.clear ();
-  articulations_.clear();
-}
-
-
-New_fingering_engraver::New_fingering_engraver()
-{
-  stem_ = 0;  
-}
-
-ENTER_DESCRIPTION(New_fingering_engraver,
-/* descr */       "Create fingering-scripts for notes in a new chord.  "
-		  "This engraver is ill-named, since it "
-		  "also takes care of articulations and harmonic note heads",
-/* creats*/       "Fingering",
-/* accepts */     "",
-/* acks  */       "rhythmic-head-interface stem-interface",
-/* reads */       "fingeringOrientations",
-/* write */       "");
diff --git a/lily/new-lyric-combine-music-iterator.cc b/lily/new-lyric-combine-music-iterator.cc
deleted file mode 100644
index 43660044ad..0000000000
--- a/lily/new-lyric-combine-music-iterator.cc
+++ /dev/null
@@ -1,260 +0,0 @@
-/*   
-new-lyric-combine-iterator.cc --  implement New_lyric_combine_music_iterator
-
-source file of the GNU LilyPond music typesetter
-
-(c) 2004 Han-Wen Nienhuys <hanwen@xs4all.nl>
-
- */
-
-#include "translator-group.hh"
-#include "lyric-combine-music.hh"
-#include "event.hh"
-#include "grob.hh"
-#include "music-iterator.hh"
-
-
-class New_lyric_combine_music_iterator : public Music_iterator
-{
-public:
-  New_lyric_combine_music_iterator ();
-  New_lyric_combine_music_iterator (New_lyric_combine_music_iterator const&src);
-  DECLARE_SCHEME_CALLBACK(constructor, ());
-protected:
-  virtual void construct_children ();
-  virtual Moment pending_moment () const;
-  virtual void do_quit(); 
-  virtual void process (Moment);
-  virtual Music_iterator *try_music_in_children (Music *) const;
-  virtual bool run_always ()const;
-  virtual bool ok () const;
-  virtual void derived_mark () const;
-  virtual void derived_substitute (Translator_group*,Translator_group*);
-private:
-  bool start_new_syllable () ;
-  void find_voice ();
-
-  bool made_association_;
-  Translator_group * lyrics_context_;
-  Translator_group* music_context_;
-  Music_iterator * lyric_iter_;
-};
-
-/*
-  Ugh, why static?
- */
-static Music *busy_ev;
-static Music *start_ev;
-static Music *melisma_playing_ev;
-
-New_lyric_combine_music_iterator::New_lyric_combine_music_iterator ()
-{
-  made_association_ = false;
-  lyric_iter_ =0;
-  music_context_ =0;
-  lyrics_context_ = 0;
-
-  /*
-    Ugh. out of place here.
-   */
-  if (!busy_ev)
-    {
-      busy_ev
-	= make_music_by_name (ly_symbol2scm ("BusyPlayingEvent"));
-      start_ev
-	= make_music_by_name (ly_symbol2scm ("StartPlayingEvent"));
-      melisma_playing_ev
-	= make_music_by_name (ly_symbol2scm ("MelismaPlayingEvent"));
-    }
-}
-
-bool
-New_lyric_combine_music_iterator::start_new_syllable ()
-{
-  bool b = music_context_->try_music (busy_ev);
-  
-  if (!b)
-    return false;
-
-  if (!lyrics_context_)
-    return false;
-  
-  if (!to_boolean (lyrics_context_->get_property ("ignoreMelismata")))
-    {
-      bool m = music_context_->try_music (melisma_playing_ev);
-      if (m)
-	return false;
-    }
-  
-  return true;
-}
-
-Moment
-New_lyric_combine_music_iterator::pending_moment () const
-{
-  Moment m;
-
-  m.set_infinite (1);
-    
-  return m;
-}
-
-bool
-New_lyric_combine_music_iterator::run_always () const
-{
-  return true;
-}
-
-bool
-New_lyric_combine_music_iterator::ok () const
-{
-  return lyric_iter_ && lyric_iter_->ok ();
-}
-
-void
-New_lyric_combine_music_iterator::derived_mark()const
-{
-  if (lyric_iter_)
-    scm_gc_mark (lyric_iter_->self_scm ());
-  if (lyrics_context_)
-    scm_gc_mark (lyrics_context_->self_scm ());
-  if (music_context_)
-    scm_gc_mark (music_context_->self_scm ());
-}
-
-void
-New_lyric_combine_music_iterator::derived_substitute (Translator_group*f, Translator_group*t)
-{
-  if (lyric_iter_)
-    lyric_iter_->substitute_outlet (f,t);
-  if (lyrics_context_ && lyrics_context_==f)
-    lyrics_context_ = t;
-  if (music_context_ && music_context_ == f)
-    music_context_ = t; 
-}
-
-/*
-  ID == "" means accept any ID.
- */
-Translator_group *
-find_context_below (Translator_group * where,
-		    String type, String id)
-{
-  if (where->is_alias (ly_symbol2scm (type.to_str0 ())))
-    {
-      if (id == "" || where->id_string_ == id)
-	return where;
-    }
-  
-  Translator_group * found = 0;
-  for (SCM s = where->trans_group_list_;
-       !found && gh_pair_p (s); s = gh_cdr (s))
-    {
-      Translator_group * tr = dynamic_cast<Translator_group*> (unsmob_translator (gh_car (s)));
-
-      found = find_context_below (tr, type, id);
-    }
-
-  return found; 
-}
-
-
-
-void
-New_lyric_combine_music_iterator::construct_children ()
-{
-  Music *m = unsmob_music (get_music ()->get_mus_property ("element"));
-  lyric_iter_ = unsmob_iterator (get_iterator (m));
-
-  find_voice ();
-  
-  if (lyric_iter_)
-    lyrics_context_ = find_context_below (lyric_iter_->get_outlet (),
-					  "Lyrics", "");
-
-  /*
-    We do not create a Lyrics context, because the user might
-    create one with a different name, and then we will not find that
-    one.
-   */
-}
-
-void
-New_lyric_combine_music_iterator::find_voice ()
-{
-  if (!music_context_)
-    {
-      SCM voice_name = get_music ()->get_mus_property ("associated-context");
-  
-      if (gh_string_p (voice_name))
-	{
-	  Translator_group *t = get_outlet ();
-	  while (t && t->daddy_trans_)
-	    t = t->daddy_trans_;
-
-	  String name = ly_scm2string (voice_name);
-	  Translator_group *voice = find_context_below (t, "Voice", name);
-	  if (!voice)
-	    get_music ()->origin ()->warning (_f ("cannot find Voice: %s\n",
-						  name.to_str0 ())); 
-	  else
-	    music_context_ = voice;
-	    
-	}
-    }
-
-  if (lyrics_context_ && music_context_)
-    {
-      if (!made_association_)
-	{
-	  made_association_ = true; 
-	  lyrics_context_->set_property ("associatedVoiceContext",
-					 music_context_->self_scm ());
-	}
-    }
-}
-
-void
-New_lyric_combine_music_iterator::process (Moment )
-{
-  find_voice ();
-  if (!music_context_)
-    return ;
-  
-  if (!music_context_->daddy_trans_)
-    {
-      /*
-	The melody has died.
-	We die too.
-       */
-      if (lyrics_context_)
-	lyrics_context_->unset_property (ly_symbol2scm ("associatedVoiceContext"));
-      lyric_iter_ = 0;
-      music_context_ = 0;
-    }
-  
-  if (music_context_
-      && start_new_syllable () && lyric_iter_->ok ())
-    {
-      Moment m= lyric_iter_->pending_moment ();
-      lyric_iter_->process (m);
-    }
-}
-
-void
-New_lyric_combine_music_iterator::do_quit ()
-{
-  if (lyric_iter_)
-    lyric_iter_->quit();
-}
-
-
-
-Music_iterator*
-New_lyric_combine_music_iterator::try_music_in_children (Music *m) const
-{
-  return lyric_iter_->try_music (m);
-}
-
-
-IMPLEMENT_CTOR_CALLBACK (New_lyric_combine_music_iterator);
diff --git a/lily/new-part-combine-iterator.cc b/lily/new-part-combine-iterator.cc
deleted file mode 100644
index 05fc2fa6b0..0000000000
--- a/lily/new-part-combine-iterator.cc
+++ /dev/null
@@ -1,387 +0,0 @@
-/*   
-     new-part-combine-music-iterator.cc -- implement New_pc_iterator
-
-     source file of the GNU LilyPond music typesetter
-  
-     (c) 2004 Han-Wen Nienhuys
-*/
-
-#include "translator-group.hh"
-#include "event.hh"
-#include "music-sequence.hh"
-#include "lily-guile.hh"
-#include "warn.hh"
-#include "music-iterator.hh"
-#include "interpretation-context-handle.hh"
-
-class New_pc_iterator : public Music_iterator
-{
-public:
-  New_pc_iterator ();
-
-  DECLARE_SCHEME_CALLBACK(constructor, ()); 
-protected:
-  virtual void derived_substitute (Translator_group*f, Translator_group*t) ;
-  virtual void derived_mark () const;
-  New_pc_iterator (New_pc_iterator const &);
-
-  virtual void construct_children ();
-  virtual Moment pending_moment () const;
-  virtual void do_quit(); 
-  virtual void process (Moment);
-
-  virtual Music_iterator *try_music_in_children (Music *) const;
-
-  virtual bool ok () const;
-
-private:
-  Music_iterator * first_iter_;
-  Music_iterator * second_iter_;
-  
-  SCM split_list_;
-
-  enum Status  {
-    APART, TOGETHER,
-    SOLO1, SOLO2,
-    UNISONO, UNISILENCE,
-  };
-  Status state_;
-  Status playing_state_;
-
-  Interpretation_context_handle one_;
-  Interpretation_context_handle two_;
-  Interpretation_context_handle null_;
-  Interpretation_context_handle shared_;
-
-  void kill_mmrest (Translator_group*);
-  void chords_together ();
-  void solo1 ();
-  void solo2 ();
-  void apart (bool silent);
-  void unisono (bool silent);
-};
-
-
-New_pc_iterator::New_pc_iterator ()
-{
-  first_iter_ = 0;
-  second_iter_ = 0;
-  split_list_ = SCM_EOL;
-  state_ = APART;
-  playing_state_ = APART;
-}
-
-void
-New_pc_iterator::derived_mark () const
-{
-  if (first_iter_)
-    scm_gc_mark (first_iter_->self_scm());
-  if (second_iter_)
-    scm_gc_mark(second_iter_->self_scm());
-}
-
-void
-New_pc_iterator::derived_substitute (Translator_group*f,
-				     Translator_group*t)
-{
-  if (first_iter_)
-    first_iter_->substitute_outlet (f,t);
-  if (second_iter_)
-    second_iter_->substitute_outlet (f,t);
-}
-
-void
-New_pc_iterator::do_quit ()
-{
-  if (first_iter_)
-    first_iter_->quit();
-  if (second_iter_)
-    second_iter_->quit();
-
-  one_ .set_translator (0);
-  two_.set_translator (0);
-  shared_.set_translator (0);
-}
-
-
-
-Moment
-New_pc_iterator::pending_moment () const
-{
-  Moment p;
-  p.set_infinite (1);
-  if (first_iter_->ok ())
-    p = p <? first_iter_->pending_moment ();
-
-  if (second_iter_->ok ())
-    p = p <? second_iter_->pending_moment ();
-  return p;
-}
-
-bool
-New_pc_iterator::ok () const
-{
-  return first_iter_->ok () || second_iter_->ok ();
-}
-
-void
-New_pc_iterator::chords_together ()
-{
-  if (state_ == TOGETHER)
-    return;
-  else
-    {
-      playing_state_ = TOGETHER;
-      state_ = TOGETHER;
-      first_iter_->substitute_outlet (one_.get_outlet (), shared_.get_outlet ());
-      first_iter_->substitute_outlet (null_.get_outlet (), shared_.get_outlet ());
-      second_iter_->substitute_outlet (two_.get_outlet (), shared_.get_outlet ());
-      second_iter_->substitute_outlet (null_.get_outlet (), shared_.get_outlet ());
-    }
-}
-
-
-void
-New_pc_iterator::kill_mmrest (Translator_group * tg)
-{
-  static Music * mmrest;
-  if (!mmrest)
-    {
-      mmrest = make_music_by_name (ly_symbol2scm ("MultiMeasureRestEvent"));
-      mmrest->set_mus_property ("duration", SCM_EOL);
-    }
-
-  tg->try_music (mmrest);
-}
-
-void
-New_pc_iterator::solo1 ()
-{
-  if (state_ == SOLO1)
-    return;
-  else
-    {
-      state_ = SOLO1;
-      first_iter_->substitute_outlet (null_.get_outlet (), shared_.get_outlet ());
-      first_iter_->substitute_outlet (one_.get_outlet (), shared_.get_outlet ());
-
-      second_iter_->substitute_outlet (two_.get_outlet (), null_.get_outlet ());
-      second_iter_->substitute_outlet (shared_.get_outlet (), null_.get_outlet ());
-      kill_mmrest (two_.get_outlet ());
-      kill_mmrest (shared_.get_outlet ());
-
-      if (playing_state_ != SOLO1)
-	{
-	  static Music* event;
-	  if (!event)
-	    event = make_music_by_name (ly_symbol2scm ("SoloOneEvent"));
-
-	  first_iter_-> try_music_in_children (event);
-	}
-      playing_state_ = SOLO1;
-    }
-}
-void
-New_pc_iterator::unisono (bool silent)
-{
-  Status newstate = (silent) ? UNISILENCE : UNISONO;
-  
-  if (newstate == state_)
-    return; 
-  else
-    {
-
-      first_iter_->substitute_outlet (null_.get_outlet (), shared_.get_outlet ());
-      first_iter_->substitute_outlet (one_.get_outlet (), shared_.get_outlet ());
-
-      second_iter_->substitute_outlet (two_.get_outlet (), null_.get_outlet ());
-      second_iter_->substitute_outlet (shared_.get_outlet (), null_.get_outlet ());
-      kill_mmrest (two_.get_outlet ());
-      kill_mmrest (shared_.get_outlet ());
-
-      if (playing_state_ != UNISONO
-	  && newstate == UNISONO)
-	{
-	  static Music* event;
-	  if (!event)
-	    event = make_music_by_name (ly_symbol2scm ("UnisonoEvent"));
-
-	  first_iter_-> try_music_in_children (event);      
-	  playing_state_ = UNISONO;
-	}
-      state_ = newstate;
-    }
-}
-
-void
-New_pc_iterator::solo2 ()
-{
-  if (state_ == SOLO2)
-    return;
-  else
-    {
-      state_ = SOLO2;
-      
-      second_iter_->substitute_outlet (null_.get_outlet (), shared_.get_outlet ());
-      second_iter_->substitute_outlet (two_.get_outlet (), shared_.get_outlet ());
-
-      first_iter_->substitute_outlet (one_.get_outlet (), null_.get_outlet ());
-      first_iter_->substitute_outlet (shared_.get_outlet (), null_.get_outlet ());
-      kill_mmrest (one_.get_outlet ());
-      kill_mmrest (shared_.get_outlet ());
-      
-      if (playing_state_ != SOLO2)
-	{
-	  static Music* event;
-	  if (!event)
-	    event = make_music_by_name (ly_symbol2scm ("SoloTwoEvent"));
-
-	  second_iter_-> try_music_in_children (event);
-	  playing_state_ = SOLO2;
-	}
-    }
-}
-
-void
-New_pc_iterator::apart (bool silent)
-{
-  if (!silent)
-    playing_state_ = APART;
-
-  if (state_ == APART)
-    return;
-  else
-    {
-      state_ = APART;
-  
-      first_iter_->substitute_outlet (null_.get_outlet (), one_.get_outlet ());
-      first_iter_->substitute_outlet (shared_.get_outlet (), one_.get_outlet ());
-  
-      second_iter_->substitute_outlet (null_.get_outlet (), two_.get_outlet ());
-      second_iter_->substitute_outlet (shared_.get_outlet (), two_.get_outlet ());    }
-}
-
-void
-New_pc_iterator::construct_children ()
-{
-  split_list_ =  get_music ()->get_mus_property ("split-list");
-  SCM lst =  get_music ()->get_mus_property ("elements");
-
-  SCM props = scm_list_n (/*
-			    used to have tweaks here.
-			   */
-			  
-			  SCM_UNDEFINED);
-
-  Translator_group *tr
-    =  get_outlet ()->find_create_translator (ly_symbol2scm ("Voice"),
-					     "shared",props);
-
-  shared_ .set_translator (tr); 
-  set_translator (tr);
-  Translator_group *null
-    =  get_outlet ()->find_create_translator (ly_symbol2scm ("Devnull"),
-					     "", SCM_EOL);
-
-  if (!null)
-    programming_error ("No Devnull found?");
-  
-  null_.set_translator (null);
-
-  Translator_group *one = tr->find_create_translator (ly_symbol2scm ("Voice"),
-						      "one", props);
-
-  one_.set_translator (one);
-
-  set_translator (one);
-  first_iter_ = unsmob_iterator (get_iterator (unsmob_music (gh_car (lst))));
-
-
-  Translator_group *two = tr->find_create_translator (ly_symbol2scm ("Voice"),
-						      "two", props);
-  two_.set_translator (two);
-  set_translator (two);
-  second_iter_ = unsmob_iterator (get_iterator (unsmob_music (gh_cadr (lst))));
-
-
-  set_translator (tr);
-
-
-  char const * syms[] = {
-    "Stem",
-    "DynamicLineSpanner",
-    "Tie",
-    "Dots",
-    "Rest",
-    "Slur",
-    "TextScript",
-    "Script",
-    0
-  };
-  
-  for (char const**p = syms; *p; p++)
-    {
-      SCM sym = ly_symbol2scm (*p);
-      execute_pushpop_property (one, sym,
-				     ly_symbol2scm ("direction"), gh_int2scm (1));
-
-      execute_pushpop_property (two, sym,
-				ly_symbol2scm ("direction"), gh_int2scm (-1));
-    }
-
-}
-
-void
-New_pc_iterator::process (Moment m)
-{
-  Moment now = get_outlet ()->now_mom ();
-  Moment *splitm = 0;
-  
-  for (; gh_pair_p (split_list_); split_list_ = gh_cdr (split_list_))
-    {
-      splitm = unsmob_moment (gh_caar (split_list_));
-      if (*splitm > now)
-	break ;
-
-      SCM tag = gh_cdar (split_list_);
-      
-      if (tag == ly_symbol2scm ("chords"))
-	chords_together ();
-      else if (tag == ly_symbol2scm ("apart")
-	       || tag == ly_symbol2scm ("apart-silence")
-	       || tag == ly_symbol2scm ("apart-spanner"))
-	apart (tag == ly_symbol2scm ("apart-silence"));
-      else if (tag == ly_symbol2scm ("unisono"))
-	unisono (false);
-      else if (tag == ly_symbol2scm ("unisilence"))
-	unisono (true);
-      else if (tag == ly_symbol2scm ("solo1"))
-	solo1 ();
-      else if (tag == ly_symbol2scm ("solo2"))
-	solo2 ();
-      else if (gh_symbol_p (tag))
-	{
-	  String s =  "Unknown split directive: "
-	    + (gh_symbol_p (tag) ? ly_symbol2string (tag) : String ("not a symbol")); 
-	  programming_error (s);
-	}
-    }
-  
-  if (first_iter_->ok ())
-    first_iter_->process (m);
-  
-  if (second_iter_->ok ())
-    second_iter_->process (m);
-}
-
-Music_iterator*
-New_pc_iterator::try_music_in_children (Music *m) const
-{
-  Music_iterator * i =  first_iter_->try_music (m);
-  if (i)
-    return i;
-  else
-    return second_iter_->try_music (m);
-}
-
-IMPLEMENT_CTOR_CALLBACK (New_pc_iterator);
diff --git a/lily/note-collision.cc b/lily/note-collision.cc
deleted file mode 100644
index 9683378af8..0000000000
--- a/lily/note-collision.cc
+++ /dev/null
@@ -1,454 +0,0 @@
-/*
-  collision.cc -- implement Collision
-
-  source file of the GNU LilyPond music typesetter
-
-  (c) 1997--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-*/
-
-#include "warn.hh"
-#include "note-collision.hh"
-#include "note-column.hh"
-#include "note-head.hh"
-#include "rhythmic-head.hh"
-#include "paper-def.hh"
-#include "axis-group-interface.hh"
-#include "item.hh"
-#include "stem.hh"
-#include "side-position-interface.hh"
-#include "dot-column.hh"
-
-MAKE_SCHEME_CALLBACK (Note_collision_interface,force_shift_callback,2);
-
-SCM
-Note_collision_interface::force_shift_callback (SCM element_smob, SCM axis)
-{
-  Grob *me = unsmob_grob (element_smob);
-  Axis a = (Axis) gh_scm2int (axis);
-  assert (a == X_AXIS);
-  
-   me = me->get_parent (a);
-
-   if (! to_boolean (me->get_grob_property ("positioning-done")))
-    {
-      me->set_grob_property ("positioning-done", SCM_BOOL_T);
-      do_shifts (me);
-    }
-  
-  return gh_double2scm (0.0);
-}
-
-
-void
-check_meshing_chords (Grob *me,
-		      Drul_array< Array < Real > > *offsets,
-		      Drul_array< Array < Slice > > const &extents,
-		      Drul_array<Link_array<Grob> > const &clash_groups)
-	
-{
-  if (!extents[UP].size () || ! extents[DOWN].size ())
-    return;
-  
-  Grob *cu = clash_groups[UP][0];
-  Grob *cd = clash_groups[DOWN][0];
-
-  /* Every note column should have a stem, but avoid a crash. */
-  if (!Note_column::get_stem (cu) || !Note_column::get_stem (cd))
-    return;
-
-  Grob *nu = Note_column::first_head (cu);
-  Grob *nd = Note_column::first_head (cd);
-
-  Array<int> ups = Stem::note_head_positions (Note_column::get_stem (cu));
-  Array<int> dps = Stem::note_head_positions (Note_column::get_stem (cd));
-
-  /* Too far apart to collide.  */
-  if (ups[0] > dps.top () + 1)
-    return; 
-
-  // FIXME: what's this?
-  bool merge_possible = (ups[0] >= dps[0]) && (ups.top () >= dps.top ());
-
-  int upball_type = Note_head::get_balltype (nu);
-  int dnball_type = Note_head::get_balltype (nd);
-  
-  /* Do not merge whole notes (or longer, like breve, longa, maxima).  */
-  if (merge_possible && (upball_type <= 0 || dnball_type <= 0))
-    merge_possible = false;
-
-  if (merge_possible
-      && Rhythmic_head::dot_count (nu) != Rhythmic_head::dot_count (nd)
-      && !to_boolean (me->get_grob_property ("merge-differently-dotted")))
-    merge_possible = false;
-
-  /* Can only merge different heads if merge-differently-headed is
-     set. */
-  if (merge_possible
-      && upball_type != dnball_type
-      && !to_boolean (me->get_grob_property ("merge-differently-headed")))
-    merge_possible = false;
-
-  /* Should never merge quarter and half notes, as this would make
-     them indistinguishable.  */
-  if (merge_possible
-      && ((Rhythmic_head::duration_log (nu) == 1
-	   && Rhythmic_head::duration_log (nd) == 2)
-	  || (Rhythmic_head::duration_log (nu) == 2
-	     && Rhythmic_head::duration_log (nd) == 1)))
-    merge_possible = false;
-
-
-  /*
-    this case (distant half collide), 
-    
-        |
-      x |
-     | x
-     |
-
-   the noteheads may be closer than this case (close half collide)
-
-       |
-       |
-      x 
-     x
-    |
-    |
-    
-   */
-  
-  /* TODO: filter out the 'o's in this configuration, since they're no
-  part in the collision.
-
-     |
-    x|o
-    x|o
-    x
-    
-   */
-  
-  bool close_half_collide = false;
-  bool distant_half_collide = false;  
-  bool full_collide = false;  
-
-  int i = 0, j=0;
-  while (i < ups.size () && j < dps.size ())
-  {
-    if (abs (ups[i] - dps[j]) == 1)
-      {
-	merge_possible = false;
-	if (ups[i] > dps[j])
-	  close_half_collide = true;
-	else
-	  distant_half_collide = true;
-      }
-    else if (ups[i]==dps[j])
-      full_collide = true;
-    else if (ups[i] >dps[0] && ups[i] < dps.top ())
-      merge_possible = false;
-    else if (dps[j] >ups[0] && dps[j] < ups.top ())
-      merge_possible = false;
-    
-    if (ups[i] < dps[j])
-      i++;
-    else if (ups[i] > dps[j])
-      j++;
-    else
-      {
-	i++;
-	j++;
-      }
-  }
-
-  full_collide = full_collide || (close_half_collide
-				  && distant_half_collide);
-  
-  Drul_array<Real> center_note_shifts;
-  center_note_shifts[LEFT] = 0.0;
-  center_note_shifts[RIGHT] = 0.0;
-
-  
-  Real shift_amount = 1;
-
-  bool touch = (ups[0] >= dps.top ());
-  if (touch)
-    shift_amount *= -1;
-
-  /* For full collisions, the right hand head may obscure dots, so
-     make sure the dotted heads go to the right.  */
-  bool stem_to_stem = false;
-  if (full_collide)
-    if (Rhythmic_head::dot_count (nu) > Rhythmic_head::dot_count (nd))
-      shift_amount = 1;
-    else if (Rhythmic_head::dot_count (nu) < Rhythmic_head::dot_count (nd))
-      stem_to_stem = true;
-  
-  if (merge_possible)
-    {
-      shift_amount = 0;
-
-      /* Wipe shortest head, or head with smallest amount of dots.
-	 Note: when merging different heads, dots on shortest
-	 disappear. */
-      
-      Grob *wipe_ball = nu;
-      
-      if (upball_type == dnball_type)
-	{
-	  if (Rhythmic_head::dot_count (nd) < Rhythmic_head::dot_count (nu))
-	    wipe_ball = nd;
-	}
-      else if (dnball_type > upball_type)
-	wipe_ball = nd;
-
-      if (wipe_ball->live ())
-	{
-	  wipe_ball->set_grob_property ("transparent", SCM_BOOL_T);
-	  wipe_ball->set_grob_property ("molecule", SCM_EOL);
-
-	  if (Grob *d = unsmob_grob (wipe_ball->get_grob_property ("dot")))
-	    d->suicide ();
-	}
-    }
-  /* TODO: these numbers are magic; should devise a set of grob props
-     to tune this behavior.  */
-  else if (stem_to_stem)
-    shift_amount *= -0.65; 
-  else if (close_half_collide && !touch)
-    shift_amount *= 0.52;
-  else if (distant_half_collide && !touch)
-    shift_amount *= 0.4;
-  else if (distant_half_collide || close_half_collide || full_collide)
-    shift_amount *= 0.5;
-  
-  /* we're meshing.  */
-  else if (Rhythmic_head::dot_count (nu) || Rhythmic_head::dot_count (nd))
-    shift_amount *= 0.1;
-  else
-    shift_amount *= 0.25;
-
-  /* For full or close half collisions, the right hand head may
-     obscure dots.  Move dots to the right.  */
-  if (abs (shift_amount) > 1e-6
-      && Rhythmic_head::dot_count (nd) > Rhythmic_head::dot_count (nu)
-      && (full_collide || close_half_collide))
-    {
-      Grob *d = unsmob_grob (nd->get_grob_property ("dot"));
-      Grob *parent = d->get_parent (X_AXIS);
-      if (Dot_column::has_interface (parent))
-	Side_position_interface::add_support (parent, nu);
-    }
-
-  Direction d = UP;
-  do
-    {
-      for (int i=0; i < clash_groups[d].size (); i++)
-	(*offsets)[d][i] += d * shift_amount;
-    }
-  while ((flip (&d))!= UP);
-}
-
-void
-Note_collision_interface::do_shifts (Grob* me)
-{
-  Drul_array< Link_array <Grob>  > cg = get_clash_groups (me);
-
-  SCM autos (automatic_shift (me, cg));
-  SCM hand (forced_shift (me));
-
-  
-  
-  Direction d = UP;
-  Real wid = 0.0;
-  do
-    {
-      if(cg[d].size())
-	{
-	  Grob  *h = cg[d][0];
-	  wid = Note_column::first_head(h)->extent(h,X_AXIS).length() ;
-	}
-    }
-  
-  while (flip (&d) != UP);
-
-  
-  Link_array<Grob> done;
-  for (; gh_pair_p (hand); hand =ly_cdr (hand))
-    {
-      Grob * s = unsmob_grob (ly_caar (hand));
-      Real amount = gh_scm2double (ly_cdar (hand));
-      
-      s->translate_axis (amount *wid, X_AXIS);
-      done.push (s);
-    }
-  for (; gh_pair_p (autos); autos =ly_cdr (autos))
-    {
-      Grob * s = unsmob_grob (ly_caar (autos));
-      Real amount = gh_scm2double (ly_cdar (autos));
-      
-      if (!done.find (s))
-	s->translate_axis (amount * wid, X_AXIS);
-    }
-}
-
-Drul_array< Link_array <Grob>  >
-Note_collision_interface::get_clash_groups (Grob *me)
-{
-  Drul_array<Link_array<Grob> > clash_groups;
- 
-  SCM s = me->get_grob_property ("elements");
-  for (; gh_pair_p (s); s = ly_cdr (s))
-    {
-      SCM car = ly_car (s);
-
-      Grob * se = unsmob_grob (car);
-      if (Note_column::has_interface (se))
-	clash_groups[Note_column::dir (se)].push (se);
-    }
-  
-  Direction d = UP;
-  do
-    {
-      Link_array<Grob> & clashes (clash_groups[d]);
-      clashes.sort (Note_column::shift_compare);
-    }
-  while ((flip (&d))!= UP);
-
-  return clash_groups;
-}
-
-/** This complicated routine moves note columns around horizontally to
-  ensure that notes don't clash.
-
-  This should be put into Scheme.  
-  */
-SCM
-Note_collision_interface::automatic_shift (Grob *me,
-			    Drul_array< Link_array <Grob> > 
-			    clash_groups)
-{
-  Drul_array<Array<int> > shifts;
-  SCM  tups = SCM_EOL;
-
-  
-  Direction d = UP;
-  do
-    {
-      Array<int> & shift (shifts[d]);
-      Link_array<Grob> & clashes (clash_groups[d]);
-
-      for (int i=0; i < clashes.size (); i++)
-	{
-	  SCM sh
-	    = clashes[i]->get_grob_property ("horizontal-shift");
-
-	  if (gh_number_p (sh))
-	    shift.push (gh_scm2int (sh));
-	  else
-	    shift.push (0);
-	}
-      
-      for (int i=1; i < shift.size (); i++)
-	{
-	  if (shift[i-1] == shift[i])
-	    {
-	      clashes[0]->warning (_ ("Too many clashing notecolumns.  Ignoring them."));
-	      return tups;
-	    }
-	}
-    }
-  while ((flip (&d))!= UP);
-
-  Drul_array< Array < Slice > > extents;
-  Drul_array< Array < Real > > offsets;
-  d = UP;
-  do
-    {
-      for (int i=0; i < clash_groups[d].size (); i++)
-	{
-	  Slice s (Note_column::head_positions_interval (clash_groups[d][i]));
-	  s[LEFT] --;
-	  s[RIGHT]++;
-	  extents[d].push (s);
-	  offsets[d].push (d * 0.5 * i);
-	}
-    }
-  while ((flip (&d))!= UP);
-
-  /*
-    do horizontal shifts of each direction 
-
-       | 
-      x||
-       x||
-        x|
-   */
-  
-  do
-    {
-      for (int i=1; i < clash_groups[d].size (); i++)
-	{
-	  Slice prev =extents[d][i-1];
-	  prev.intersect (extents[d][i]);
-	  if (prev.length ()> 0 ||
- (extents[-d].size () && d * (extents[d][i][-d] - extents[-d][0][d]) < 0))
-	    for (int j = i; j <  clash_groups[d].size (); j++)
-	      offsets[d][j] += d * 0.5;
-	}
-    }	
-  while ((flip (&d))!= UP);
-
-
-  /*
-    Check if chords are meshing
-   */
-
-  check_meshing_chords (me, &offsets, extents, clash_groups);
-  
-  do
-    {
-      for (int i=0; i < clash_groups[d].size (); i++)
-	tups = gh_cons (gh_cons (clash_groups[d][i]->self_scm (),
-				 gh_double2scm (offsets[d][i])),
-			tups);
-    }
-  while (flip (&d) != UP);
-  return tups;
-}
-
-
-SCM
-Note_collision_interface::forced_shift (Grob *me)
-{
-  SCM tups = SCM_EOL;
-  
-  SCM s = me->get_grob_property ("elements");
-  for (; gh_pair_p (s); s = ly_cdr (s))
-    {
-      Grob * se = unsmob_grob (ly_car (s));
-
-      SCM force =  se->get_grob_property ("force-hshift");
-      if (gh_number_p (force))
-	{
-	  tups = gh_cons (gh_cons (se->self_scm (), force),
-			  tups);
-	}
-    }
-  return tups;
-}
-
-void
-Note_collision_interface::add_column (Grob*me,Grob* ncol)
-{
-  ncol->add_offset_callback (Note_collision_interface::force_shift_callback_proc, X_AXIS);
-  Axis_group_interface::add_element (me, ncol);
-  me->add_dependency (ncol);
-}
-
-
-ADD_INTERFACE (Note_collision_interface, "note-collision-interface",
-  "An object that handles collisions between notes with different stem " 
-"directions and horizontal shifts. Most of the interesting properties "
-"are to be set in @ref{note-column-interface}: these are "
-"@code{force-hshift} and @code{horizontal-shift}. ",
-  "merge-differently-dotted merge-differently-headed positioning-done");
diff --git a/lily/note-column.cc b/lily/note-column.cc
deleted file mode 100644
index d92a3b19a4..0000000000
--- a/lily/note-column.cc
+++ /dev/null
@@ -1,162 +0,0 @@
-/*
-  note-column.cc -- implement Note_column
-
-  source file of the GNU LilyPond music typesetter
-
-  (c) 1997--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-*/
-#include <math.h>		// ceil
-
-#include "axis-group-interface.hh"
-#include "note-column.hh"
-#include "stem.hh"
-#include "warn.hh"
-#include "paper-def.hh"
-#include "group-interface.hh"
-#include "staff-symbol-referencer.hh"
-#include "rest.hh"
-#include "note-head.hh"
-#include "accidental-placement.hh"
-
-bool
-Note_column::has_rests (Grob*me) 
-{
-  return unsmob_grob (me->get_grob_property ("rest"));
-}
-
-int
-Note_column::shift_compare (Grob *const &p1, Grob *const&p2)
-{
-  SCM s1 = p1->get_grob_property ("horizontal-shift");
-  SCM s2 = p2->get_grob_property ("horizontal-shift");
-
-  int h1 = (gh_number_p (s1))?  gh_scm2int (s1) :0;
-  int h2 = (gh_number_p (s2)) ? gh_scm2int (s2):0;
-  return h1 - h2;
-}
-
-Item *
-Note_column::get_stem (Grob*me) 
-{
-  SCM s = me->get_grob_property ("stem");
-  return  unsmob_item (s);
-}
-  
-Slice
-Note_column::head_positions_interval (Grob *me)
-{
-  Slice  iv;
-
-  iv.set_empty ();
-
-  SCM h = me->get_grob_property ("note-heads");
-  for (; gh_pair_p (h); h = ly_cdr (h))
-    {
-      Grob *se = unsmob_grob (ly_car (h));
-      
-      int j = int (Staff_symbol_referencer::get_position (se));
-      iv.unite (Slice (j,j));
-    }
-  return iv;
-}
-
-Direction
-Note_column::dir (Grob*  me)
-{
-  Grob *stem = unsmob_grob (me->get_grob_property ("stem"));
-  if (stem && Stem::has_interface (stem))
-    return Stem::get_direction (stem);
-  else if (gh_pair_p (me->get_grob_property ("note-heads")))
-    return (Direction)sign (head_positions_interval (me).center ());
-
-  programming_error ("Note column without heads and stem!");
-  return CENTER;
-}
-
-
-void
-Note_column::set_stem (Grob*me,Grob * stem)
-{
-  me->set_grob_property ("stem", stem->self_scm ());
-  me->add_dependency (stem);
-  Axis_group_interface::add_element (me, stem);
-}
-
-void
-Note_column::add_head (Grob*me,Grob *h)
-{
-  if (Rest::has_interface (h))
-    {
-      me->set_grob_property ("rest", h->self_scm ());
-    }
-  else if (Note_head::has_interface (h))
-    {
-      Pointer_group_interface::add_grob (me, ly_symbol2scm ("note-heads"),h);
-    }
-  Axis_group_interface::add_element (me, h);
-}
-
-/**
-  translate the rest symbols vertically by amount DY_I, but only if
-  they have no staff-position set.
-*/
-void
-Note_column::translate_rests (Grob*me,int dy_i)
-{
-  Grob * r = unsmob_grob (me->get_grob_property ("rest"));
-  if (r && !gh_number_p (r->get_grob_property ("staff-position")))
-    {
-      r->translate_axis (dy_i * Staff_symbol_referencer::staff_space (r)/2.0, Y_AXIS);
-    }
-}
-
-
-void
-Note_column::set_dotcol (Grob*me,Grob *d)
-{
-  Axis_group_interface::add_element (me, d);
-}
-
-
-
-
-Grob*
-Note_column::first_head (Grob*me) 
-{
-  Grob * st = get_stem (me);
-  return st?  Stem::first_head (st): 0; 
-}
-
-
-/*
-  Return the first Accidentals grob that we find in a note-head. 
- */
-Grob* 
-Note_column::accidentals (Grob *me)
-{
-  SCM heads = me->get_grob_property ("note-heads");
-  Grob * acc = 0;
-  for (;gh_pair_p (heads); heads =gh_cdr (heads))
-    {
-      Grob * h = unsmob_grob (gh_car (heads));
-      acc = h ? unsmob_grob (h->get_grob_property ("accidental-grob")) : 0;
-      if (acc)
-	break;
-    }
-
-  if (!acc)
-    return 0;
-  
-  if (Accidental_placement::has_interface (acc->get_parent (X_AXIS)))
-    return acc->get_parent (X_AXIS);
-
-  /* compatibility. */
-  return  acc;
-}
-
-
-
-ADD_INTERFACE (Note_column,"note-column-interface",
-  "Stem and noteheads combined",
-  "arpeggio note-heads rest-collision rest horizontal-shift stem accidentals force-hshift");
-
diff --git a/lily/note-head-line-engraver.cc b/lily/note-head-line-engraver.cc
deleted file mode 100644
index e2eb02f043..0000000000
--- a/lily/note-head-line-engraver.cc
+++ /dev/null
@@ -1,122 +0,0 @@
-/*   
-  note-head-line-engraver.cc -- implement Note_head_line_engraver
-  
-  source file of the GNU LilyPond music typesetter
-  
-  (c) 2000--2004 Jan Nieuwenhuizen <janneke@gnu.org>
- */
-
-#include "engraver.hh"
-#include "group-interface.hh"
-#include "item.hh"
-#include "event.hh"
-#include "spanner.hh"
-#include "stem.hh"
-#include "rhythmic-head.hh"
-#include "side-position-interface.hh"
-#include "staff-symbol-referencer.hh"
-#include "translator-group.hh"
-
-/**
-   Create line-spanner grobs for lines that connect note heads.
-
-   TODO: have the line commit suicide if the notes are connected with
-   either slur or beam.
-
-*/
-class Note_head_line_engraver : public Engraver
-{
-public:
-  TRANSLATOR_DECLARATIONS(Note_head_line_engraver);
-
-protected:
-  virtual void acknowledge_grob (Grob_info);
-  virtual void process_acknowledged_grobs ();
-  virtual void stop_translation_timestep ();
-
-private:
-  Spanner* line_; 
-  Translator* last_staff_;
-  bool follow_;
-  Grob* head_;
-  Grob* last_head_;
-};
-
-Note_head_line_engraver::Note_head_line_engraver ()
-{
-  line_ = 0;
-  follow_ = false;
-  head_ = 0;
-  last_head_ = 0;
-  last_staff_ = 0;
-}
-
-void
-Note_head_line_engraver::acknowledge_grob (Grob_info info)
-{
-  if (Rhythmic_head::has_interface (info.grob_))
-    {
-      head_ = info.grob_;
-      if (to_boolean (get_property ("followVoice")))
-	{
-	  Translator_group  * tr = daddy_trans_;
-	  while (tr && !tr->is_alias (ly_symbol2scm ( "Staff")))
-	    tr = tr->daddy_trans_ ;
-
-	  if (tr && tr->is_alias (ly_symbol2scm ("Staff")) && tr != last_staff_)
-	    {
-	      if (last_head_)
-		follow_ = true;
-	      last_staff_ = tr;
-	    }
-	}
-    }
-}
-
-
-void
-Note_head_line_engraver::process_acknowledged_grobs ()
-{
-  if (!line_ && follow_ && last_head_ && head_)
-    {
-      /* TODO: Don't follow if there's a beam.
-
-	 We can't do beam-stuff here, since beam doesn't exist yet.
-	 Should probably store follow_ in line_, and suicide at some
-	 later point */
-      if (follow_)
-	line_ = make_spanner ("VoiceFollower");
-	  
-      line_->set_bound (LEFT, last_head_);
-      line_->set_bound (RIGHT, head_);
-      
-      announce_grob(line_, head_->self_scm ());
-
-      follow_ = false;
-    }
-}
-
-void
-Note_head_line_engraver::stop_translation_timestep ()
-{
-  if (line_)
-    {
-      typeset_grob (line_);
-      line_ = 0;
-    }
-  if (head_)
-    last_head_ = head_;
-  head_ = 0;
-}
-
-
-
-
-ENTER_DESCRIPTION(Note_head_line_engraver,
-/* descr */       "Engrave a line between two note heads, for example a glissando.  If "
-" followVoice is set, staff switches also generate a line.",
-/* creats*/       "Glissando VoiceFollower",
-/* accepts */     "glissando-event",
-/* acks  */       "rhythmic-head-interface",
-/* reads */       "followVoice",
-/* write */       "");
diff --git a/lily/note-head.cc b/lily/note-head.cc
deleted file mode 100644
index e620fdf7a4..0000000000
--- a/lily/note-head.cc
+++ /dev/null
@@ -1,333 +0,0 @@
-/*
-  notehead.cc -- implement Note_head
-
-  source file of the GNU LilyPond music typesetter
-
-  (c) 1997--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-*/
-#include <math.h>
-#include <ctype.h>
-
-#include "staff-symbol.hh"
-#include "misc.hh"
-#include "dots.hh"
-#include "note-head.hh"
-#include "warn.hh"
-#include "font-interface.hh"
-#include "molecule.hh"
-#include "event.hh"
-#include "rhythmic-head.hh"
-#include "staff-symbol-referencer.hh"
-#include "lookup.hh"
-#include "paper-def.hh"
-
-/*
-  Note_head contains the code for printing note heads.
-
-  Ledger lines:
-
-  It also contains the ledger lines, for historical reasons.  Ledger
-  lines are somewhat of a PITA. In some cases, they take up no space, in
-  some cases they don't:
-
-  DO take space:
-
-  - when ledgered notes are juxtaposed: there should be some white
-   space between the ledger lines.
-
-  - when accidentals are near: the accidentals should not be on the
-  ledger lines
-
-  [both tips by Heinz Stolba from Universal Edition].
-
-  DO NOT take space into account:
-
-  - for basically everything else, e.g. swapping ledgered notes on
-   clustered chords, spacing between ledgered and unledgered notes.
-  
-  TODO: fix this. It is not feasible to have a special grob for
-  ledgers, since you basically don't know if there will be ledgers,
-  unless you know at interpretation phase already 1. the Y-position,
-  2. the number of staff lines. It's not yet specced when both pieces
-  of information are there, so for now, it is probably better to build
-  special support for ledgers into the accidental and separation-item
-  code.
-
-  (Besides a separate ledger seems overkill. For what else would
-  it be useful?)
-
-*/
-
-/*
-  TODO: ledger lines are also a property of the staff. Maybe move them
-  to there?
- */
-Molecule
-Note_head::brew_ledger_lines (Grob *me,
-                              int pos,
-                              int interspaces,
-                              Interval x_extent,
-			      Real left_shorten,
-			      bool take_space)
-{
-  Grob *staff = Staff_symbol_referencer::get_staff_symbol (me);
-  Real inter_f = Staff_symbol_referencer::staff_space (me)/2;
-  int line_count = (abs (pos) < interspaces)
-    ? 0
-    : (abs (pos) - interspaces) / 2;
-  Molecule molecule = Molecule();
-
-
-  if (line_count)
-    {
-      Real ledgerlinethickness =
-	Staff_symbol::get_ledger_line_thickness (staff);
-      Real blotdiameter = ledgerlinethickness;
-      Interval y_extent =
-	Interval (-0.5*(ledgerlinethickness),
-		  +0.5*(ledgerlinethickness));
-      Molecule proto_ledger_line =
-	Lookup::round_filled_box (Box (x_extent, y_extent), blotdiameter);
-
-      x_extent[LEFT] += left_shorten;
-      Molecule proto_first_line =
-	Lookup::round_filled_box (Box (x_extent, y_extent), blotdiameter);
-
-      if (!take_space)
-        {
-	  proto_ledger_line.set_empty (true);
-	  proto_first_line.set_empty (true);
-	}
-      
-      Direction dir = (Direction)sign (pos);
-      Real offs = (Staff_symbol_referencer::on_staffline (me, pos))
-        ? 0.0
-        : -dir * inter_f;
-      
-      for (int i = 0; i < line_count; i++)
-        {
-          Molecule ledger_line ((i == 0) 
-				? proto_first_line
-				: proto_ledger_line
-				);
-          ledger_line.translate_axis (-dir * inter_f * i * 2 + offs, Y_AXIS);
-          molecule.add_molecule (ledger_line);
-        }
-    }
-
-  return molecule;
-}
-
-Molecule
-internal_print (Grob *me, bool with_ledgers)
-{
-  SCM style  = me->get_grob_property ("style");
-  if (!gh_symbol_p (style))
-    {
-      return Molecule ();
-    }
-
-  SCM log = gh_int2scm (Note_head::get_balltype (me));
-  SCM proc = me->get_grob_property ("glyph-name-procedure");
-  SCM scm_font_char = scm_call_2 (proc, log, style);
-  String font_char = "noteheads-" + ly_scm2string (scm_font_char);
-
-  Font_metric * fm = Font_interface::get_default_font (me);
-  Molecule out = fm->find_by_name (font_char);
-  if (out.is_empty ())
-    {
-      me->warning (_f ("note head `%s' not found", font_char.to_str0 ()));
-    }
-
-  int interspaces = Staff_symbol_referencer::line_count (me)-1;
-  int pos = (int)rint (Staff_symbol_referencer::get_position (me));
-  if (with_ledgers && interspaces >= 0
-      && abs (pos) - interspaces > 1)
-    {
-      Interval ledger_size = out.extent (X_AXIS);
-      ledger_size.widen ( ledger_size.length ()/4);
-
-      Real left_shorten =0.0;
-      if (Grob * g = unsmob_grob(me->get_grob_property ("accidental-grob")))
-	{
-	  /*
-	    make a little room for accidentals.
-	  
-	    TODO: this will look silly if a chord has ledger lines,
-	    and only the bottom note has an accidental.
-	  */
-
-	  Grob *common = g->common_refpoint (me, X_AXIS);
-	  Real d =
-	    (me->extent (common, X_AXIS)[LEFT]
-	     +g->extent (common, X_AXIS)[RIGHT]) /2;
-
-	  left_shorten =  (-ledger_size[LEFT] + d) >?  0 ;
-
-	  /*
-	    TODO: shorten 2 ledger lines for the case natural +
-	    downstem.
-	   */
-	}
-
-      out.add_molecule (Note_head::brew_ledger_lines (me, pos, interspaces,
-						      ledger_size,
-						      left_shorten,
-						      false));
-    }
-  return out;
-}
-
-
-MAKE_SCHEME_CALLBACK (Note_head,print,1);
-SCM
-Note_head::print (SCM smob)  
-{
-  Grob *me = unsmob_grob (smob);
-
-  /*
-    ledgers don't take space. See top of file.
-   */
-  return internal_print (me, true).smobbed_copy ();
-}
-
-/*
-  Compute the width the head without ledgers.
-
-  -- there used to be some code from the time that ledgers
-  did take space. Nowadays, we can simply take the standard extent.
- */
-Interval
-Note_head::head_extent (Grob *me, Axis a)
-{
-  SCM brewer = me->get_grob_property ("print-function");
-  if (brewer == Note_head::print_proc)
-    {
-      Molecule mol = internal_print (me, false);
-  
-      if (!mol.is_empty ())
-	return mol.extent (a);
-    }
-  else
-    {
-      Molecule * mol = me->get_molecule ();
-      if (mol)
-	return  mol->extent (a) ;
-    }
-  
-  return Interval (0,0);
-}
-
-/*
-  This is necessary to prevent a cyclic dependency: the appearance of
-  the ledgers depends on positioning, so the Grob::get_molecule() can
-  not be used for determining the note head extent.
-  
- */ 
-MAKE_SCHEME_CALLBACK (Note_head,extent,2);
-SCM
-Note_head::extent (SCM smob, SCM axis)  
-{
-  Grob *me = unsmob_grob (smob);
-
-  return ly_interval2scm (head_extent (me, (Axis) gh_scm2int (axis)));
-}
-
-MAKE_SCHEME_CALLBACK (Note_head,brew_ez_molecule,1);
-SCM
-Note_head::brew_ez_molecule (SCM smob)
-{
-  Grob *me = unsmob_grob (smob);
-  int l = Note_head::get_balltype (me);
-
-  int b = (l >= 2);
-
-  SCM cause = me->get_grob_property ("cause");
-  SCM spitch = unsmob_music (cause)->get_mus_property ("pitch");
-  Pitch* pit =  unsmob_pitch (spitch);
-
-  char s[2] = "a";
-  s[0] = (pit->get_notename () + 2)%7 + 'a';
-  s[0] = toupper (s[0]);
-  
-  SCM charstr = scm_makfrom0str (s);
-  
-  SCM at = scm_list_n (ly_symbol2scm ("ez-ball"),
-		       charstr,
-		       gh_int2scm (b),
-		       gh_int2scm (1-b),
-		       SCM_UNDEFINED);
-  Box bx (Interval (0, 1.0), Interval (-0.5, 0.5));
-  Molecule m (bx, at);
-
-  int pos = (int)rint (Staff_symbol_referencer::get_position (me));
-  int interspaces = Staff_symbol_referencer::line_count (me)-1;
-  if (abs (pos) - interspaces > 1)
-    {
-      Interval hd = m.extent (X_AXIS);
-      hd.widen ( hd.length ()/4);
-      m.add_molecule (brew_ledger_lines (me, pos, interspaces, hd, 0, false));
-    }
-
-  return m.smobbed_copy ();
-}
-
-
-Real
-Note_head::stem_attachment_coordinate (Grob *me, Axis a)
-{
-  SCM brewer = me->get_grob_property ("print-function");
-  Font_metric * fm  = Font_interface::get_default_font (me);
-  
-  if (brewer == Note_head::print_proc)
-    {
-      SCM style  = me->get_grob_property ("style");
-      if (!gh_symbol_p (style))
-	{
-	  return 0.0;
-	}
-      
-      SCM log = gh_int2scm (Note_head::get_balltype (me));
-      SCM proc = me->get_grob_property ("glyph-name-procedure");
-      SCM scm_font_char = scm_call_2 (proc, log, style);
-      String font_char = "noteheads-" + ly_scm2string (scm_font_char);
-
-      int k = fm->name_to_index (font_char) ;
-
-      if (k >= 0)
-	{
-	  Box b = fm->get_indexed_char (k);
-	  Offset wxwy = fm->get_indexed_wxwy (k);
-	  Interval v = b[a];
-	  if (!v.is_empty ())
-	    return 2 * (wxwy[a] - v.center()) / v.length ();
-	}
-    }
-  
-  /*
-    Fallback
-   */
-  SCM v = me->get_grob_property ("stem-attachment-function");
-  if (!gh_procedure_p (v))
-    return 0.0;
-  
-  SCM result = scm_call_2 (v, me->self_scm(), gh_int2scm (a));
-  if (!gh_pair_p (result))
-    return 0.0;
-
-  result = (a == X_AXIS) ? ly_car (result) : ly_cdr (result);
-  
-  return robust_scm2double (result,0);
-}
-
-int
-Note_head::get_balltype (Grob*me) 
-{
-  SCM s = me->get_grob_property ("duration-log");
-  return gh_number_p (s) ? gh_scm2int (s) <? 2 : 0;
-}
-
-ADD_INTERFACE (Note_head,"note-head-interface",
-  "Note head",
-  "glyph-name-procedure accidental-grob style stem-attachment-function");
-
diff --git a/lily/note-heads-engraver.cc b/lily/note-heads-engraver.cc
deleted file mode 100644
index b3ab068c3f..0000000000
--- a/lily/note-heads-engraver.cc
+++ /dev/null
@@ -1,120 +0,0 @@
-/*
-  note-heads-engraver.cc -- part of GNU LilyPond
-
-  (c) 1997--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-*/
-#include <ctype.h>
-
-#include "rhythmic-head.hh"
-#include "paper-def.hh"
-#include "event.hh"
-#include "dots.hh"
-#include "dot-column.hh"
-#include "staff-symbol-referencer.hh"
-#include "item.hh"
-#include "engraver.hh"
-#include "warn.hh"
-
-class Note_heads_engraver : public Engraver
-{
-  Link_array<Item> notes_;
-  Link_array<Item> dots_;
-  Link_array<Music> note_reqs_;
-
-public:
-  TRANSLATOR_DECLARATIONS(Note_heads_engraver);
-
-protected:
-  virtual bool try_music (Music *req) ;
-  virtual void process_music ();
-
-  virtual void stop_translation_timestep ();
-};
-
-Note_heads_engraver::Note_heads_engraver()
-{
-}
-
-bool
-Note_heads_engraver::try_music (Music *m) 
-{
-  if (m->is_mus_type ("note-event"))
-    {
-      note_reqs_.push (m);
-      return true;
-    }
-  else if (m->is_mus_type ("busy-playing-event"))
-    return note_reqs_.size ();
-  else if (m->is_mus_type ("start-playing-event"))
-    return note_reqs_.size ();
-  
-  return false;
-}
-
-
-void
-Note_heads_engraver::process_music ()
-{
-  for (int i=0; i < note_reqs_.size (); i++)
-    {
-      Item *note = make_item ("NoteHead");
-
-      Music * req = note_reqs_[i];
-      
-      Duration dur = *unsmob_duration (req->get_mus_property ("duration"));
-
-      note->set_grob_property ("duration-log", gh_int2scm (dur.duration_log ()));
-
-      if (dur.dot_count ())
-	{
-	  Item * d = make_item ("Dots");
-	  Rhythmic_head::set_dots (note, d);
-	  
-	  if (dur.dot_count ()
-	      != robust_scm2int (d->get_grob_property ("dot-count"), 0))
-	    d->set_grob_property ("dot-count", gh_int2scm (dur.dot_count ()));
-
-	  d->set_parent (note, Y_AXIS);
-	  announce_grob (d, SCM_EOL);
-	  dots_.push (d);
-	}
-
-      Pitch *pit =unsmob_pitch (req->get_mus_property ("pitch"));
-
-      int pos = pit ? pit->steps () : 0;
-      SCM c0 = get_property ("centralCPosition");
-      if (gh_number_p (c0))
-	pos += gh_scm2int (c0);
-
-      note->set_grob_property ("staff-position",   gh_int2scm (pos));
-      announce_grob (note,req->self_scm());
-      notes_.push (note);
-    }
-}
-
-void
-Note_heads_engraver::stop_translation_timestep ()
-{
-  for (int i=0; i < notes_.size (); i++)
-    {
-      typeset_grob (notes_[i]);
-    }
-
-  notes_.clear ();
-  for (int i=0; i < dots_.size (); i++)
-    {
-      typeset_grob (dots_[i]);
-    }
-  dots_.clear ();
-  note_reqs_.clear ();
-}
-
-
-
-ENTER_DESCRIPTION(Note_heads_engraver,
-/* descr */       "Generate noteheads.",
-/* creats*/       "NoteHead Dots",
-/* accepts */     "note-event busy-playing-event",
-/* acks  */      "",
-/* reads */       "centralCPosition",
-/* write */       "");
diff --git a/lily/note-name-engraver.cc b/lily/note-name-engraver.cc
deleted file mode 100644
index 47562e6e2c..0000000000
--- a/lily/note-name-engraver.cc
+++ /dev/null
@@ -1,80 +0,0 @@
-/*   
-  note-name-engraver.cc --  implement Note_name_engraver
-  
-  source file of the GNU LilyPond music typesetter
-  
-  (c) 1999--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-  
- */
-
-#include "engraver.hh"
-#include "event.hh"
-#include "item.hh"
-
-class Note_name_engraver : public Engraver
-{
-public:
-  TRANSLATOR_DECLARATIONS(Note_name_engraver);
-
-  Link_array<Music> reqs_;
-  Link_array<Item> texts_;
-  virtual bool  try_music (Music*m);
-  virtual void process_acknowledged_grobs ();
-  virtual void stop_translation_timestep ();
-};
-
-bool
-Note_name_engraver::try_music (Music *m)
-{
-  if (m->is_mus_type ("note-event"))
-    {
-      reqs_.push (m);
-      return true;
-    }
-  return false;
-}
-
-void
-Note_name_engraver::process_acknowledged_grobs ()
-{
-  if (texts_.size ())
-    return;
-  String s ;
-  for (int i=0; i < reqs_.size (); i++)
-    {
-      if (i)
-	s += " ";
-      s += unsmob_pitch (reqs_[i]->get_mus_property ("pitch"))->to_string ();
-    }
-  if (s.length ())
-    {
-      Item * t = make_item ("NoteName");
-      t->set_grob_property ("text", scm_makfrom0str (s.to_str0 ()));
-      announce_grob(t, reqs_[0]->self_scm());
-      texts_.push (t);
-    }
-}
-
-void
-Note_name_engraver::stop_translation_timestep ()
-{
-  for (int i=0; i < texts_.size (); i++)
-    {
-      typeset_grob (texts_[i]);
-    }
-  texts_.clear () ;
-  reqs_.clear ();
-}
-
-
-Note_name_engraver::Note_name_engraver()
-{
-}
-
-ENTER_DESCRIPTION(Note_name_engraver,
-/* descr */       "",
-/* creats*/       "NoteName",
-/* accepts */     "note-event",
-/* acks  */      "",
-/* reads */       "",
-/* write */       "");
diff --git a/lily/note-performer.cc b/lily/note-performer.cc
deleted file mode 100644
index 22df5b0fb8..0000000000
--- a/lily/note-performer.cc
+++ /dev/null
@@ -1,140 +0,0 @@
-/*
-  note-performer.cc -- implement Note_performer
-
-  source file of the GNU LilyPond music typesetter
-
-  (c) 1996--2004 Jan Nieuwenhuizen <janneke@gnu.org>
- */
-
-#include "performer.hh"
-#include "event.hh"
-#include "audio-item.hh"
-#include "audio-column.hh"
-#include "global-translator.hh"
-#include "warn.hh"
-
-/**
-Convert evs to audio notes.
-*/
-class Note_performer : public Performer {
-public:
-  TRANSLATOR_DECLARATIONS(Note_performer);
-  
-protected:
-  virtual bool try_music (Music *ev) ;
-
-  virtual void stop_translation_timestep ();
-  virtual void create_audio_elements ();
-  Global_translator* get_global_translator ();
-
-private:
-  Link_array<Music> note_evs_;
-  Link_array<Audio_note> notes_;
-  Link_array<Audio_note> delayeds_;
-};
-
-void 
-Note_performer::create_audio_elements ()
-{
-  if (note_evs_.size ())
-    {
-      int transposing_i = 0;
-      //urg
-      SCM prop = get_property ("transposing");
-      if (gh_number_p (prop)) 
-	transposing_i = gh_scm2int (prop);
-
-      while (note_evs_.size ())
-	{
-	  Music* n = note_evs_.pop ();
-	  SCM pit =  n->get_mus_property ("pitch");
-
-	  if (Pitch * pitp = unsmob_pitch (pit))
-	    {
-	      Audio_note* p = new Audio_note (*pitp,  n->get_length (), transposing_i);
-	      Audio_element_info info (p, n);
-	      announce_element (info);
-	      notes_.push (p);
-	    }
-	}
-      note_evs_.clear ();
-    }
-}
-
-Global_translator*
-Note_performer::get_global_translator ()
-{
-  Translator *t = this;
-  Global_translator *global =0;
-  do
-    {
-      t = t->daddy_trans_ ;
-      global = dynamic_cast<Global_translator*> (t);
-    }
-  while (!global);
-
-  return global;
-}
-
-
-void
-Note_performer::stop_translation_timestep ()
-{
-
-  // why don't grace notes show up here?
-  // --> grace notes effectively do not get delayed
-  Global_translator* global = get_global_translator ();
-  for (int i=0; i < notes_.size (); i++)
-    {
-      Audio_note* n = notes_[i];
-      Moment m= n->delayed_until_mom_;
-      if (m.to_bool ())
-	{
-	  global->add_moment_to_process (m);
-	  delayeds_.push (n);
-	  notes_[i] = 0;
-	  notes_.del (i);
-	  i--;
-	}
-    }
-
-  Moment now = now_mom ();
-  for (int i=0; i < notes_.size (); i++)
-    {
-      play_element (notes_[i]);
-    }
-  notes_.clear ();
-  note_evs_.clear ();
-  for (int i=0; i < delayeds_.size (); i++)
-    {
-      Audio_note* n = delayeds_[i];
-      if (n->delayed_until_mom_ <= now)
-	{
-	  play_element (n);
-	  delayeds_[i] = 0;
-	  delayeds_.del (i);
-	  i--;
-	}
-    }
-}
- 
-bool
-Note_performer::try_music (Music* ev)
-{
-  if (ev->is_mus_type ("note-event"))
-    {
-      note_evs_.push (ev);
-      return true;
-    }
-  else if (ev->is_mus_type ("busy-playing-event"))
-    return note_evs_.size ();
-  
-  return false;
-}
-
-ENTER_DESCRIPTION(Note_performer,"","",
-		  "note-event busy-playing-event","","","");
-
-Note_performer::Note_performer()
-{
-}
diff --git a/lily/note-spacing.cc b/lily/note-spacing.cc
deleted file mode 100644
index 40cb91d5ba..0000000000
--- a/lily/note-spacing.cc
+++ /dev/null
@@ -1,453 +0,0 @@
-/*   
-  note-spacing.cc -- implement Note_spacing
-
-  source file of the GNU LilyPond music typesetter
-
-  (c) 2001--2004  Han-Wen Nienhuys <hanwen@cs.uu.nl>
-*/
-
-
-#include "paper-column.hh"
-#include "item.hh"
-#include "moment.hh"
-#include "note-spacing.hh"
-#include "grob.hh"
-#include "note-column.hh"
-#include "warn.hh"
-#include "stem.hh"
-#include "separation-item.hh"
-#include "staff-spacing.hh"
-#include "accidental-placement.hh"
-#include "paper-def.hh"
-
-
-/*
-
-TODO: detect hshifts due to collisions, and account for them in
-spacing?
-
-*/ 
-
-void
-Note_spacing::get_spacing (Grob *me, Item* right_col,
-			   Real base_space, Real increment, Real *space, Real *fixed)
-{
-
-  Drul_array<SCM> props(me->get_grob_property ("left-items"),
-			me->get_grob_property ("right-items"));
-  Direction d = LEFT;
-  Direction col_dir =  right_col->break_status_dir ();
-  Drul_array<Interval> extents;
-
-  Interval left_head_wid; 
-  do
-    {
-      for (SCM  s = props[d]; gh_pair_p (s); s = gh_cdr (s))
-	{
-	  Item * it= dynamic_cast<Item*> (unsmob_grob (gh_car(s)));
-	  
-	  if (d == RIGHT && it->break_status_dir () != col_dir)
-	    {
-	      it = it -> find_prebroken_piece (col_dir);
-
-	    }
-	  /*
-	    some kind of mismatch, eg. a note column, that is behind a
-	    linebreak.
-	   */
-	  if (!it)
-	    continue; 
-
-	  Item *it_col = it->get_column ();
-	  if (d == RIGHT && right_col != it_col)
-	    continue;
-	  
-	  if (Separation_item::has_interface (it))
-	    {
-	      extents[d].unite (Separation_item::width (it));
-	      continue;
-	    }
-
-	  if (d == LEFT)
-	    {
-	      SCM r = it->get_grob_property ("rest");
-	      Grob * g = unsmob_grob (r);
-	      if (!g)
-		g =  Note_column::first_head (it);
-
-	      /*
-		Ugh. If Stem is switched off, we don't know what the
-		first note head will be.
-	       */
-	      if (g)
-		left_head_wid = g->extent(it_col, X_AXIS);
-	    }
-	  
-	  extents[d].unite (it->extent (it_col, X_AXIS));
-	  if (d == RIGHT)
-	    {
-	      Grob * accs = Note_column::accidentals (it);
-	      if (!accs)
-		accs = Note_column::accidentals (it->get_parent (X_AXIS));
-	      
-	      if (accs)
-		{
-		  Interval v =
-		    Accidental_placement::get_relevant_accidental_extent (accs, it_col, me);
-		    
-		  extents[d].unite (v);
-		}
-	    }
-	}
-
-      if (extents[d].is_empty ())
-	extents[d] = Interval (0,0);
-    }
-  while (flip (&d) != LEFT);
-
-
-  /*
-    We look at the width of the note head, since smaller heads get less space
-    eg. a quarter rest gets almost 0.5 ss less horizontal space than a note.
-
-    What is sticking out of the note head (eg. a flag), doesn't get
-    the full amount of space.
-
-    FIXED also includes the left part of the right object.
-  */
-  *fixed =
-    (left_head_wid.is_empty () ? increment :
-     /*
-       Size of the head:
-      */
-     (left_head_wid[RIGHT]+
-
-      /*
-       What's sticking out of the head, eg. a flag: 
-      */
-      (extents[LEFT][RIGHT] - left_head_wid[RIGHT])/2))
-
-    /*
-      What is sticking out of the right note:
-     */
-    + (extents[RIGHT].is_empty () ?  0.0 : - extents[RIGHT][LEFT] / 2);
-
-  /*
-    We don't do complicated stuff: (base_space - increment) is the
-    normal amount of white, which also determines the amount of
-    stretch. Upon (extreme) stretching, notes with accidentals should
-    stretch as much as notes without accidentals.
-   */
-  *space = (base_space - increment) + *fixed ;
-
-  if (Item::breakable_b (right_col)
-      || right_col->original_)
-    {
-      /*
-	This is for the situation
-
-	rest | 3/4 (eol)
-	
-       */
-      *space += -extents[RIGHT][LEFT];
-      *fixed += -extents[RIGHT][LEFT];
-    }
-  
-  stem_dir_correction (me, right_col, increment, space, fixed);
-}
-
-Item *
-Note_spacing::left_column (Grob *me)
-{
-  if (!me->live())
-    return 0;
-  
-  return dynamic_cast<Item*> (me)->get_column ();
-}
-
-/*
-  Compute the column of the right-items.  This is a big function,
-since RIGHT-ITEMS may span more columns (eg. if a clef if inserted,
-this will add a new columns to RIGHT-ITEMS. Here we look at the
-columns, and return the left-most. If there are multiple columns, we
-prune RIGHT-ITEMS.
-   
- */
-Item *
-Note_spacing::right_column (Grob*me)
-{
-  if (!me->live())
-    return 0;
-  
-  SCM right = me->get_grob_property ("right-items");
-  Item *mincol = 0;
-  int min_rank = INT_MAX;
-  bool prune = false;
-  for (SCM s = right ; gh_pair_p (s) ; s = gh_cdr (s))
-    {
-      Item * ri = unsmob_item (gh_car (s));
-
-      Item * col = ri->get_column ();
-      int rank = Paper_column::get_rank (col);
-
-      if (rank < min_rank)
-	{
-	  min_rank = rank;
-	  if (mincol)
-	    prune = true;
-
-	  mincol = col;
-	}
-    }
-  
-  if (prune)
-    {
-      // I'm a lazy bum. We could do this in-place.
-      SCM newright  = SCM_EOL;
-      for (SCM s = right ; gh_pair_p (s) ; s =gh_cdr (s))
-	{
-	  if (unsmob_item (gh_car (s))->get_column () == mincol)
-	    newright = gh_cons (gh_car (s), newright);
-	}
-
-      me->set_grob_property ("right-items", newright);
-    }
-  
-  if (!mincol)
-    {
-      /*
-      int r = Paper_column::get_rank (dynamic_cast<Item*>(me)->get_column ());
-      programming_error (_f("Spacing wish column %d has no right item.", r));
-      */
-
-      return 0;
-    }
-
-  return mincol;
-}
-
-/**
-   Correct for optical illusions. See [Wanske] p. 138. The combination
-   up-stem + down-stem should get extra space, the combination
-   down-stem + up-stem less.
-
-   TODO: have to check wether the stems are in the same staff.
-
-*/
-void
-Note_spacing::stem_dir_correction (Grob*me, Item * rcolumn,
-				   Real increment,
-				   Real * space, Real *fixed)  
-{
-  Drul_array<Direction> stem_dirs(CENTER,CENTER);
-  Drul_array<Interval> stem_posns;
-  Drul_array<Interval> head_posns;  
-  Drul_array<SCM> props(me->get_grob_property ("left-items"),
-			me->get_grob_property ("right-items"));
-
-  Drul_array<Grob*> beams_drul(0,0);
-  Drul_array<Grob*> stems_drul(0,0);
-  
-  stem_dirs[LEFT] = stem_dirs[RIGHT] = CENTER;
-  Interval intersect;
-  Interval bar_xextent;
-  Interval bar_yextent;  
-  
-  bool correct_stem_dirs = true;
-  Direction d = LEFT;
-  bool acc_right = false;
-  
-  do
-    {
-      for (SCM  s = props[d]; gh_pair_p (s); s = gh_cdr (s))
-	{
-	  Item * it= dynamic_cast<Item*> (unsmob_grob (gh_car(s)));
-
-	  if (d == RIGHT)
-	    acc_right = acc_right || Note_column::accidentals (it);
-	  
-	  Grob *stem = Note_column::get_stem (it);
-
-	  if (!stem || !stem->live ())
-	    {
-	      if (d == RIGHT && Separation_item::has_interface (it))
-		{
-		  if (it->get_column () != rcolumn)
-		    {
-		      it = it->find_prebroken_piece (rcolumn->break_status_dir ());
-		    }
-		  
-		  Grob *last = Separation_item::extremal_break_aligned_grob (it, LEFT, &bar_xextent);
-
-		  if (last)
-		    bar_yextent = Staff_spacing::bar_y_positions (last);
-
-		  break;
-		}
-
-	      return ;
-	    }
-	  
-	  if(Stem::invisible_b (stem))
-	    {
-	      correct_stem_dirs = false;
-	      continue;
-	    }
-
-	  stems_drul[d] = stem;
-	  beams_drul[d] = Stem::get_beam (stem);
-	    
-	  
-	  Direction sd = Stem::get_direction (stem);
-	  if (stem_dirs[d] && stem_dirs[d] != sd)
-	    {
-	      correct_stem_dirs = false;
-	      continue;
-	    }
-	  stem_dirs[d] = sd;
-
-	  /*
-	    Correction doesn't seem appropriate  when there is a large flag
-	    hanging from the note.
-	   */
-	  if (d == LEFT
-	      && Stem::duration_log (stem) > 2  && !Stem::get_beam (stem))
-	    {
-	      correct_stem_dirs = false;
-	    }
-	  
-	  Interval hp  = Stem::head_positions (stem);
-	  Real chord_start = hp[sd];	  
-	  Real stem_end = Stem::stem_end_position (stem);
-	  
-	  stem_posns[d] = Interval(chord_start<?stem_end, chord_start>? stem_end);
-	  head_posns[d].unite (hp);
-	}
-    }
-  while (flip (&d) != LEFT);
-  
-
-  /*
-    don't correct if accidentals are sticking out of the right side.
-  */
-  if (acc_right)
-    return ;
-
-  Real correction = 0.0;
-
-  if (!bar_yextent.is_empty ())
-    {
-      stem_dirs[RIGHT] = - stem_dirs[LEFT];
-      stem_posns[RIGHT] = bar_yextent;
-    }
-  
-  if (correct_stem_dirs && stem_dirs[LEFT] *stem_dirs[RIGHT] == -1)
-    {
-      if (beams_drul[LEFT] && beams_drul[LEFT] == beams_drul[RIGHT])
-	{
-	  
-	  /*
-	    this is a knee: maximal correction.
-	  */
-	  Real note_head_width = increment;
-	  Grob * st = stems_drul[RIGHT];
-	  Grob * head = st ? Stem::support_head (st)  : 0;
-
-	  Interval head_extent;
-	  if (head)
-	    {
-	      head_extent = head->extent (rcolumn, X_AXIS);
-
-	      if (!head_extent.is_empty ())
-		note_head_width = head_extent[RIGHT];
-
-	      if (st)
-		{
-		  Real thick = Stem::thickness (st);
-
-		  note_head_width -= thick;
-		}
-	    }
-
-	  correction = note_head_width* stem_dirs[LEFT];
-	  correction *= robust_scm2double (me->get_grob_property ("knee-spacing-correction"), 0);
-	  *fixed += correction;
-	}
-      else
-	{
-	  intersect = stem_posns[LEFT];  
-	  intersect.intersect(stem_posns[RIGHT]);
-	  correct_stem_dirs = correct_stem_dirs && !intersect.is_empty ();
-
-	  if (correct_stem_dirs)
-	    {
-	      correction =abs (intersect.length ());
-
-      
-	      /*
-		Ugh. 7 is hardcoded.
-	      */
-	      correction = (correction/7) <? 1.0;
-	      correction *= stem_dirs[LEFT] ;
-	      correction *=
-		robust_scm2double (me->get_grob_property ("stem-spacing-correction"), 0);
-	    }
-	  
-	  if (!bar_yextent.is_empty ())
-	    {
-	      correction *= 0.5;
-	    }
-	}
-    }
-  else if (correct_stem_dirs && stem_dirs[LEFT] *stem_dirs[RIGHT] == UP)
-    {
-      /*
-	Correct for the following situation:
-
-	 X      X
-	|      | 
-	|      |
- 	|   X  |
-	|  |   |
-	========
-
-           ^ move the center one to the left.
-	
-
-	this effect seems to be much more subtle than the
-	stem-direction stuff (why?), and also does not scale with the
-	difference in stem length.
-	
-       */
-
-      
-      Interval hp = head_posns[LEFT];
-      hp.intersect  (head_posns[RIGHT]);
-      if (!hp.is_empty ())
-	return ;
-
-      Direction lowest =
-	(head_posns[LEFT][DOWN] > head_posns[RIGHT][UP]) ? RIGHT : LEFT;
-
-      Real delta = head_posns[-lowest][DOWN] - head_posns[lowest][UP] ;
-      Real corr = robust_scm2double (me->get_grob_property ("stem-spacing-correction"), 0);
-      corr =  (delta <= 1) ? 0.0 : 0.25;
-      
-      correction=  -lowest * corr ;
-    }
-
-  *space += correction;
-
-  /* there used to be a correction for bar_xextent() here, but
-     it's unclear what that was good for ?
-  */
-
-}
- 
-
-
-
-ADD_INTERFACE (Note_spacing,"note-spacing-interface",
-  "",
-  "left-items right-items stem-spacing-correction knee-spacing-correction");
-
diff --git a/lily/ottava-bracket.cc b/lily/ottava-bracket.cc
deleted file mode 100644
index 9adaded43c..0000000000
--- a/lily/ottava-bracket.cc
+++ /dev/null
@@ -1,174 +0,0 @@
-/*   
-  ottava-bracket.cc --  implement Ottava_bracket
-
-  source file of the GNU LilyPond music typesetter
-
-  (c) 2004 Han-Wen Nienhuys <hanwen@xs4all.nl>
-
- */
-
-#include "molecule.hh"
-#include "text-item.hh"
-#include "text-spanner.hh"
-#include "line-spanner.hh"
-#include "spanner.hh"
-#include "font-interface.hh"
-#include "dimensions.hh"
-#include "paper-def.hh"
-#include "warn.hh"
-#include "paper-column.hh"
-#include "staff-symbol-referencer.hh"
-#include "note-column.hh"
-#include "directional-element-interface.hh"
-#include "tuplet-bracket.hh"
-
-struct Ottava_bracket
-{
-  DECLARE_SCHEME_CALLBACK (print, (SCM));
-  static bool has_interface (Grob*);
-};
-
-
-/*
-  TODO: the string for ottava shoudl depend on the available space, ie.
-
-  
-  Long: 15ma        Short: 15ma    Empty: 15
-         8va                8va            8
-         8va bassa          8ba            8
-
-*/
-
-MAKE_SCHEME_CALLBACK (Ottava_bracket, print, 1);
-SCM
-Ottava_bracket::print (SCM smob)
-{
-  Spanner*me  = dynamic_cast<Spanner*> (unsmob_grob (smob));
-  
-  
-  Interval span_points;
-  
-  Grob *common = me->get_bound (LEFT)->common_refpoint (me->get_bound (RIGHT), X_AXIS);
-  Paper_def * paper = me->get_paper();
-
-  
-  Drul_array<bool> broken;
-  Direction d = LEFT;
-  do
-    {
-      Item *b = me->get_bound (d);
-      broken[d] = (b->break_status_dir () != CENTER);
-
-      if (Note_column::has_interface (b))
-	{
-	  common = common_refpoint_of_list (b->get_grob_property ("heads"), common, X_AXIS);
-	}
-    }
-  while (flip (&d) != LEFT);
-
-  SCM properties = Font_interface::font_alist_chain (me);
-  SCM markup = me->get_grob_property ("text");
-  Molecule text;
-  if (Text_item::markup_p (markup)) 
-    text = *unsmob_molecule (Text_item::interpret_markup (paper->self_scm (), properties, markup));
-
-
-  Drul_array<Real> shorten = robust_scm2interval (me->get_grob_property ("shorten-pair"),
-						  Interval (0,0));
-
-
-  /*
-    TODO: we should check if there are ledgers, and modify length of
-    the spanner to that.
-   */
-  do
-    {
-      Item *b = me->get_bound (d);
-
-      Interval ext;
-      if (Note_column::has_interface (b))
-	{
-	  for (SCM s = b->get_grob_property ("note-heads"); gh_pair_p (s); s =gh_cdr (s))
-	    ext.unite (unsmob_grob (gh_car (s))->extent (common, X_AXIS));
-	}
-
-      if (ext.is_empty ())
-	ext = Interval (0,0);
-      
-      span_points[d] =  (broken [d]) ? b->extent (common, X_AXIS)[-d] : ext[d];
-
-      if (broken[d])
-	shorten [d] = 0.0; 
-    }
-  while (flip (&d) != LEFT);
-
-
-  /*
-    0.3 is ~ italic correction. 
-   */
-  Real text_size =  text.extent (X_AXIS).is_empty ()
-    ? 0.0 : text.extent (X_AXIS)[RIGHT] +  0.3;
-  
-  span_points[LEFT] = span_points[LEFT]
-    <? (span_points[RIGHT] - text_size
-	- robust_scm2double (me->get_grob_property ("minimum-length"), -1.0)); 
-  
-  Interval bracket_span_points = span_points;
-  bracket_span_points[LEFT] += text_size;
-  
-  Drul_array<Real> edge_height = robust_scm2interval (me->get_grob_property ("edge-height"),
-						      Interval (1.0, 1.0));
-
-  
-  Drul_array<Real> flare = robust_scm2interval (me->get_grob_property ("bracket-flare"),
-						Interval (0,0));
-
-
-
-  edge_height[LEFT] = 0.0;
-  edge_height[RIGHT] *=  - get_grob_direction (me);
-  if (broken[RIGHT])
-    edge_height[RIGHT] = 0.0;
-  
-  Molecule b;
-  if (!bracket_span_points.is_empty () && bracket_span_points.length () > 0.001)
-    b = Tuplet_bracket::make_bracket (me,
-				      Y_AXIS, Offset (bracket_span_points.length (), 0),
-				       edge_height,
-				      0.0,
-				      flare, shorten);
-
-  /*
-    The vertical lines should not take space, for the following scenario:
-
-    8 -----+
-        o  |
-       |
-       |
-       
-
-    Just a small amount, yes.  In tight situations, it is even
-    possible to center the `8' directly below the note, dropping the
-    ottava line completely...
-
-  */
-  
-  b = Molecule (Box (b.extent (X_AXIS),
-		     Interval (0.1,0.1)),
-		b.get_expr ());
-  
-  b.translate_axis (bracket_span_points[LEFT], X_AXIS);
-  text.translate_axis (span_points[LEFT], X_AXIS);
-  text.align_to (Y_AXIS, CENTER);
-  b.add_molecule (text);
-  
-  b.translate_axis (- me->relative_coordinate (common, X_AXIS), X_AXIS);
-  
-  return b.smobbed_copy ();  
-}
-
-
-ADD_INTERFACE (Ottava_bracket, "ottava-bracket-interface",
-	       "An ottava bracket",
-	       "edge-height bracket-flare shorten-pair minimum-length");
-
diff --git a/lily/ottava-engraver.cc b/lily/ottava-engraver.cc
deleted file mode 100644
index 0cd2ece3b3..0000000000
--- a/lily/ottava-engraver.cc
+++ /dev/null
@@ -1,127 +0,0 @@
-/*
-  text-spanner-engraver.cc -- implement Ottava_spanner_engraver
-
-  source file of the GNU LilyPond music typesetter
-
-  (c) 2000--2004 Han-Wen Nienhuys
-*/
-
-#include "protected-scm.hh"
-#include "note-column.hh"
-#include "item.hh"
-#include "side-position-interface.hh"
-#include "engraver.hh"
-
-class Ottava_spanner_engraver : public Engraver
-{
-public:
-  TRANSLATOR_DECLARATIONS(Ottava_spanner_engraver);  
-protected:
-  virtual void finalize ();
-  virtual void acknowledge_grob (Grob_info);
-  virtual void process_music ();
-  virtual void stop_translation_timestep ();
-private:
-  Spanner *span_;
-  Spanner *finished_;
-  
-  Protected_scm last_ottavation_;
-  
-  void typeset_all ();
-};
-
-
-Ottava_spanner_engraver::Ottava_spanner_engraver ()
-{
-  finished_ = 0;
-  span_ =0;
-  last_ottavation_ = SCM_EOL;
-}
-
-void
-Ottava_spanner_engraver::process_music ()
-{
-  SCM ott = get_property ("ottavation");
-  if (ott != last_ottavation_)
-    {
-      finished_= span_;
-      span_ = 0;
-      if (gh_string_p (ott))
-	{
-	  span_  = make_spanner ("OttavaBracket");
-	  span_->set_grob_property ("text", ott);
-	  announce_grob (span_, SCM_EOL);
-
-	  SCM c0 (get_property ("centralCPosition"));
-	  SCM oc0 (get_property ("originalCentralCPosition"));
-	  if (scm_less_p (oc0, c0) == SCM_BOOL_T)
-	    span_->set_grob_property ("direction", gh_int2scm (DOWN));
-	}
-    }
-  last_ottavation_ = ott;
-}
-
-void
-Ottava_spanner_engraver::acknowledge_grob (Grob_info info)
-{
-  Item *it = dynamic_cast<Item*> (info.grob_);
-  if (span_ && it && Note_column::has_interface (info.grob_))
-    {
-      Side_position_interface::add_support (span_, it);
-
-      if (!span_->get_bound (LEFT))
-	span_->set_bound (LEFT, it);
-      span_->set_bound (RIGHT, it);
-    }
-}
-
-void
-Ottava_spanner_engraver::typeset_all ()
-{  
-  if (finished_)
-    {
-      Direction d = LEFT;
-      do
-	{
-	  if (!finished_->get_bound (RIGHT))
-	    {
-	      Grob* e = unsmob_grob (get_property ("currentMusicalColumn"));
-	      finished_->set_bound (d, e);
-	    }
-	}
-      while (flip (&d) != LEFT);
-      
-      typeset_grob (finished_);
-      finished_ = 0;
-    }
-}
-
-void
-Ottava_spanner_engraver::stop_translation_timestep ()
-{
-  if (span_ && !span_->get_bound (LEFT))
-    {
-      Grob* e = unsmob_grob (get_property ("currentMusicalColumn"));
-      span_->set_bound (LEFT, e);
-    }
-
-  typeset_all ();
-}
-
-void
-Ottava_spanner_engraver::finalize ()
-{
-  typeset_all ();
-  if (span_)
-    finished_ = span_;
-  typeset_all();
-  last_ottavation_ = SCM_EOL;
-}
-
-ENTER_DESCRIPTION(Ottava_spanner_engraver,
-/* descr */       "Create a text spanner when the ottavation property changes..",
-/* creats*/       "OttavaBracket",
-/* accepts */     "",
-/* acks  */      "note-column-interface",
-/* reads */       "ottavation",
-/* write */       "");
diff --git a/lily/output-property-engraver.cc b/lily/output-property-engraver.cc
deleted file mode 100644
index 3d43a85a6e..0000000000
--- a/lily/output-property-engraver.cc
+++ /dev/null
@@ -1,94 +0,0 @@
-/*   
-  output-property-engraver.cc --  implement Output_property_engraver
-  
-  source file of the GNU LilyPond music typesetter
-  
-  (c) 2000--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-  
- */
-
-#include "engraver.hh"
-#include "grob.hh"
-#include "translator-group.hh"
-
-class Output_property_engraver : public Engraver
-{
-TRANSLATOR_DECLARATIONS(Output_property_engraver);
-protected:
-  Link_array<Music> props_;
-
-  virtual void stop_translation_timestep ();
-  virtual void acknowledge_grob (Grob_info);
-  virtual bool try_music (Music*);
-};
-
-
-bool
-Output_property_engraver::try_music (Music* m)
-{
-  if (m->is_mus_type ("layout-instruction"))
-    {
-      props_.push (m);
-      return true;
-    }
-  return false;
-}
-
-void
-Output_property_engraver::acknowledge_grob (Grob_info inf)
-{
-  for (int i=props_.size (); i--;)
-    {
-      Music * o = props_[i];
-      SCM pred = o->get_mus_property ("predicate");
-
-
-
-      if (gh_procedure_p (pred))
-	{
-	  /*
-	    should typecheck pred. 
-	  */
-	  SCM result=scm_call_1 (pred, inf.grob_->self_scm ());
-	  if (to_boolean (result))
-	    {
-	      SCM sym = o->get_mus_property ("grob-property");
-	      SCM val = o->get_mus_property ("grob-value");
-	      inf.grob_->internal_set_grob_property (sym, val);
-	    }
-	}
-      else
-	{
-	  Translator_group * d =
-	    dynamic_cast<Translator_group*> (inf.origin_trans_);
-
-	  if (!d)
-	    d = dynamic_cast<Translator_group*> (inf.origin_trans_->daddy_trans_);
-	  
-	  SCM proc = o->get_mus_property ("procedure");
-	  scm_call_3 (proc,
-		      inf.grob_->self_scm(),
-		      d->self_scm(), 
-		      daddy_trans_->self_scm());
-	}
-    }
-}
-
-void
-Output_property_engraver::stop_translation_timestep ()
-{
-  props_.clear ();
-}
-
-Output_property_engraver::Output_property_engraver()
-{
-}
-
-ENTER_DESCRIPTION(Output_property_engraver,
-/* descr */       "Interpret Music of Output_property type, and apply a function "
-" to any Graphic objects that satisfies the predicate.",
-/* creats*/       "",
-/* accepts */     "layout-instruction",
-/* acks  */       "grob-interface",
-/* reads */       "",
-/* write */       "");
diff --git a/lily/output-property-music-iterator.cc b/lily/output-property-music-iterator.cc
deleted file mode 100644
index fc76c976d4..0000000000
--- a/lily/output-property-music-iterator.cc
+++ /dev/null
@@ -1,35 +0,0 @@
-/*   
-  output-property-music-iterator.cc -- implement Output_property_music_iterator
-  
-  source file of the GNU LilyPond music typesetter
-  
-  (c) 2000--2004 Jan Nieuwenhuizen <janneke@gnu.org>
- */
-
-#include "input.hh"
-#include "music-list.hh"
-#include "simple-music-iterator.hh"
-
-class Output_property_music_iterator : public Simple_music_iterator
-{
-public:  
-  DECLARE_SCHEME_CALLBACK(constructor, ());
-protected:
-  virtual void process (Moment);
-};
-
-
-void
-Output_property_music_iterator::process (Moment m)
-{
-  if (last_processed_mom_ < Moment (0))
-    {
-      bool accepted = try_music (get_music ());
-      if (!accepted)
-	get_music ()->origin ()->warning (_f ("Junking event: `%s'",
-					  classname (get_music ())));
-    }
-  Simple_music_iterator::process (m);
-}
-
-IMPLEMENT_CTOR_CALLBACK (Output_property_music_iterator);
diff --git a/lily/paper-column.cc b/lily/paper-column.cc
deleted file mode 100644
index f6f081f54b..0000000000
--- a/lily/paper-column.cc
+++ /dev/null
@@ -1,168 +0,0 @@
-/*
-  paper-column.cc -- implement Paper_column
-
-  source file of the GNU LilyPond music typesetter
-
-  (c) 1997--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-*/
-
-#include "moment.hh"
-#include "paper-column.hh"
-#include "paper-score.hh"
-#include "warn.hh"
-#include "axis-group-interface.hh"
-#include "spaceable-grob.hh"
-#include "molecule.hh"
-#include "text-item.hh"
-#include "lookup.hh"
-#include "font-interface.hh"
-#include "paper-def.hh"
-
-
-
-
-ADD_INTERFACE (Paper_column, "paper-column-interface",
-  "  Paper_columns form the top-most item parent. (The Paper_columns X\n"
-"  parent is System, which is a spanner.)\n"
-"\n"
-"  Paper_columns form the units for the spacing engine. They are\n"
-"  numbered, the first (leftmost) is column 0. Numbering happens before\n"
-"  line-breaking, and columns are not renumbered after line breaking.\n"
-"\n"
-"  Since many columns go unused, you should only use the rank field to\n"
-"  get ordering information.  Two adjacent columns may have\n"
-"  non-adjacent numbers.\n"
-"\n"
-"  Don't be confused by right-items: each spacing wish can also contain\n"
-"  a number of items, with which a spacing constraint may be kept. It's\n"
-"  a little baroque, but it might come in handy later on?\n"
-"\n",
-  "between-cols between-system-string when bounded-by-me shortest-playing-duration shortest-starter-duration");
-
-
-void
-Paper_column::do_break_processing ()
-{
-  Spaceable_grob::remove_interface (this);
-  Item::do_break_processing ();
-}
-
-
-int
-Paper_column::get_rank (Grob*me) 
-{
-  return dynamic_cast<Paper_column*> (me)->rank_;
-}
-
-System*
-Paper_column::get_system () const
-{
-  return system_;
-}
-
-Paper_column*
-Paper_column::get_column () const
-{
-  return (Paper_column*) (this);
-}
-
-Paper_column::Paper_column (SCM l)
-  : Item (l)		// guh.?
-{
-  system_=0;
-  rank_ = -1;
-}
-
-Moment
-Paper_column::when_mom (Grob*me)
-{
-  SCM m = me->get_grob_property ("when");
-  Moment s (0);
-  if (unsmob_moment (m))
-    {
-      return *unsmob_moment (m);
-    }
-  return s;
-}
-
-bool
-Paper_column::is_musical (Grob *me)
-{
-  SCM m = me->get_grob_property ("shortest-starter-duration");
-  Moment s (0);
-  if (unsmob_moment (m))
-    {
-      s = *unsmob_moment (m);
-    }
-  return s != Moment (0);
-}
-  
-
-bool
-Paper_column::is_used (Grob*me)
-{
-  return gh_pair_p (me->get_grob_property ("elements")) ||  Item::breakable_b (me)
-    || gh_pair_p (me->get_grob_property ("bounded-by-me"))
-    ;
-}
-
-/*
-  Print a vertical line and  the rank number, to aid debugging.  
- */
-
-MAKE_SCHEME_CALLBACK(Paper_column,print,1);
-SCM
-Paper_column::print (SCM p)
-{
-  Grob *me = unsmob_grob (p);
-
-  String r = to_string (Paper_column::get_rank (me));
-  SCM properties = Font_interface::font_alist_chain (me);
-
-  SCM scm_mol = Text_item::interpret_markup (me->get_paper ()->self_scm (),
-					     properties,
-					     scm_makfrom0str (r.to_str0 ()));
-  Molecule t = *unsmob_molecule (scm_mol);
-  t.align_to (X_AXIS, CENTER);
-  t.align_to (Y_AXIS, DOWN);
-  
-  Molecule l = Lookup::filled_box (Box (Interval (-0.01, 0.01),
-				       Interval (-2, -1)));
-
-  t.add_molecule (l);
-  return t.smobbed_copy ();						
-}
-
-/*
-  This is all too hairy. We use bounded-by-me to make sure that some
-  columns are kept "alive". Unfortunately, when spanners are suicided,
-  this falls apart again. (sigh.)
-
-  THIS IS BROKEN KLUDGE. WE SHOULD INVENT SOMETHING BETTER. 
- */
-MAKE_SCHEME_CALLBACK(Paper_column,before_line_breaking,1);
-SCM
-Paper_column::before_line_breaking (SCM grob)
-{
-  Grob *me = unsmob_grob (grob);
-
-  SCM c = me->get_grob_property ("bounded-by-me");
-  SCM *ptrptr = &c;
-
-  while (gh_pair_p (*ptrptr))
-    {
-      Grob * g = unsmob_grob (gh_car (*ptrptr));
-
-      if (!g || !g->live ())
-	{
-	  *ptrptr = gh_cdr (*ptrptr);
-	}
-      else
-	{
-	  ptrptr = SCM_CDRLOC (*ptrptr);
-	}
-    }
-
-  me->set_grob_property ("bounded-by-me", c);
-  return SCM_UNSPECIFIED;
-}
diff --git a/lily/paper-def.cc b/lily/paper-def.cc
deleted file mode 100644
index 27de71fa44..0000000000
--- a/lily/paper-def.cc
+++ /dev/null
@@ -1,154 +0,0 @@
-/*
-  paper-def.cc -- implement Paper_def
-
-  source file of the GNU LilyPond music typesetter
-
-  (c) 1997--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-*/
-
-
-#include <math.h>
-
-#include "virtual-font-metric.hh"
-#include "all-font-metrics.hh"
-#include "string.hh"
-#include "misc.hh"
-#include "paper-def.hh"
-#include "warn.hh"
-#include "scaled-font-metric.hh"
-#include "main.hh"
-#include "scm-hash.hh"
-#include "input-file-results.hh" // urg? header_global
-#include "paper-outputter.hh"
-#include "ly-modules.hh"
-
-/*
-  This is an almost empty thing. The only substantial thing this class
-  handles, is scaling up and down to real-world dimensions (internally
-  dimensions are against global staff-space.)
-  
- */
-Paper_def::Paper_def ()
-{
-}
-
-Paper_def::~Paper_def ()
-{
-}
-
-Paper_def::Paper_def (Paper_def const&src)
-  : Music_output_def (src)
-{
-}
-
-
-
-Real
-Paper_def::get_realvar (SCM s) const
-{
-  SCM val = lookup_variable (s);
-  SCM scale = lookup_variable (ly_symbol2scm ("outputscale"));
-  
-  Real sc = gh_scm2double (scale);
-  return gh_scm2double (val) / sc;
-}
-
-/*
-  FIXME. This is broken until we have a generic way of
-  putting lists inside the \paper block.
- */
-Interval
-Paper_def::line_dimensions_int (int n) const
-{
-  Real lw =  get_realvar (ly_symbol2scm ("linewidth"));
-  Real ind = n? 0.0:get_realvar (ly_symbol2scm ("indent"));
-
-  return Interval (ind, lw);
-}
-
-
-
-
-Paper_outputter*
-Paper_def::get_paper_outputter (String outname)  const
-{
-  progress_indication (_f ("paper output to `%s'...",
-			   outname == "-" ? String ("<stdout>") : outname));
-
-  global_input_file->target_strings_.push (outname);
-  Paper_outputter * po = new Paper_outputter (outname);
-  Path p = split_path (outname);
-  p.ext = "";
-  po->basename_ = p.to_string ();
-  return po;
-}
-
-
-/*
-  Todo: use symbols and hashtable idx?
-*/
-Font_metric *
-Paper_def::find_font (SCM fn, Real m)
-{
-  SCM key = gh_cons (fn, gh_double2scm (m));
-  SCM met = scm_assoc (key, scaled_fonts_);
-
-  if (gh_pair_p (met))
-    return unsmob_metrics (ly_cdr (met));
-
-  /*
-    Hmm. We're chaining font - metrics. Should consider wether to merge
-    virtual-font and scaled_font.
-   */
-  Font_metric*  f=0;
-  if (gh_list_p (fn))
-    {
-      f = new Virtual_font_metric (fn, m, this); // TODO: GC protection.
-      
-      scaled_fonts_ = scm_acons (key, f->self_scm (), scaled_fonts_);
-      scm_gc_unprotect_object (f->self_scm ());
-    }
-  else
-    {
-      SCM scale_var = ly_module_lookup (scope_, ly_symbol2scm ("outputscale"));
-
-      m /= gh_scm2double (scm_variable_ref (scale_var));
-
-      f = all_fonts_global->find_font (ly_scm2string (fn));
-      SCM val = Scaled_font_metric::make_scaled_font_metric (f, m);
-      scaled_fonts_ = scm_acons (key, val, scaled_fonts_);
-      f = unsmob_metrics (val);
-      scm_gc_unprotect_object (val);
-    }
-
-  return f;
-}
-
-
-/*
-  Return alist to translate internally used fonts back to real-world
-  coordinates.  */
-SCM
-Paper_def::font_descriptions ()const
-{
-  SCM l = SCM_EOL;
-  for (SCM s = scaled_fonts_; gh_pair_p (s); s = ly_cdr (s))
-    {
-      SCM desc = ly_caar (s);
-      if (!gh_string_p (gh_car (desc)))
-	continue ;
-
-      SCM mdesc = unsmob_metrics (ly_cdar (s))->description_;
-
-      l = gh_cons (gh_cons (mdesc, desc), l);
-    }
-  return l;
-}
-
-Paper_def* 
-unsmob_paper (SCM x)
-{
-  return dynamic_cast<Paper_def*> (unsmob_music_output_def (x));
-}
-
-  
diff --git a/lily/paper-outputter.cc b/lily/paper-outputter.cc
deleted file mode 100644
index e31c61b4a9..0000000000
--- a/lily/paper-outputter.cc
+++ /dev/null
@@ -1,207 +0,0 @@
-/*
-  paper-outputter.cc -- implement Paper_outputter
-
-  source file of the GNU LilyPond music typesetter
-
-  (c) 1997--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-  Jan Nieuwenhuizen <janneke@gnu.org>
-*/
-
-#include <time.h>
-#include <math.h>
-
-#include "dimensions.hh"
-#include "virtual-methods.hh"
-#include "paper-outputter.hh"
-#include "molecule.hh"
-#include "array.hh"
-#include "string-convert.hh"
-#include "warn.hh"
-#include "font-metric.hh"
-#include "main.hh"
-#include "scm-hash.hh"
-#include "lily-version.hh"
-#include "paper-def.hh"
-#include "input-file-results.hh"
-#include "ly-modules.hh"
-
-
-
-/*
-  TODO: this entire class should be implemented at Scheme level.
-
-
-  
- */
-Paper_outputter::Paper_outputter (String name)
-{
-  if (safe_global_b)
-    {
-      gh_define ("security-paranoia", SCM_BOOL_T);      
-    }
-  
-  file_ = scm_open_file (scm_makfrom0str (name.to_str0 ()),
-			    scm_makfrom0str ("w"));
-
-  /*
-    ugh.
-   */
-  SCM exp = scm_list_n (ly_symbol2scm ("find-dumper"),
-			scm_makfrom0str (output_format_global.to_str0 ()),
-			SCM_UNDEFINED);
-
-  output_func_  = scm_primitive_eval (exp);
-}
-
-Paper_outputter::~Paper_outputter ()
-{
-  scm_close_port (file_);
-  file_ = SCM_EOL;
-}
-
-
-void
-Paper_outputter::output_header ()
-{
-  time_t t (time (0));
-  String generate = ctime (&t);
-  generate = generate.left_string (generate.length () - 1) + " " + *tzname;
-  
-  /* Fixed length time stamp */
-  generate = generate + to_string (' ', (50 - generate.length ()) >? 0);
-  
-  /* Fixed length creator string */
-  String creator = gnu_lilypond_version_string ();
-  creator += " (http://lilypond.org)";
-  creator = creator + to_string (' ', (50 - creator.length ()) >? 0);
-  
-  SCM args_scm = scm_list_n (scm_makfrom0str (creator.to_str0 ()),
-			     scm_makfrom0str (generate.to_str0 ()),
-			     SCM_UNDEFINED);
-
-
-  SCM scm = gh_cons (ly_symbol2scm ("header"), args_scm);
-
-  output_scheme (scm);
-}
-
-
-
-void
-Paper_outputter::output_comment (String str)
-{
-  output_scheme (scm_list_n (ly_symbol2scm ("comment"),
-			  scm_makfrom0str ((char*)str.to_str0 ()),
-			  SCM_UNDEFINED)
-		 );
-}
-
-void
-Paper_outputter::output_scheme (SCM scm)
-{
-  gh_call2 (output_func_, scm, file_);
-}
-
-void
-Paper_outputter::output_scope (SCM mod, String prefix)
-{
-  if (!SCM_MODULEP (mod))
-    return ;
-  
-  SCM al = ly_module_to_alist (mod);
-  for (SCM s = al ; gh_pair_p (s); s = ly_cdr (s))
-    {
-      SCM k = ly_caar (s);
-      SCM v = ly_cdar (s);
-      String s = ly_symbol2string (k);
-      
-      if (gh_string_p (v))
-	{
-	  output_String_def (prefix + s, ly_scm2string (v));
-	}
-      else if (scm_integer_p (v) == SCM_BOOL_T && scm_exact_p (v) == SCM_BOOL_T)
-	{
-	  output_int_def (prefix + s, gh_scm2int (v));	  
-	}
-      else if (gh_number_p (v))
-	{
-	  output_Real_def (prefix + s, gh_scm2double (v));
-	}
-    }
-}
-
-void
-Paper_outputter::output_version ()
-{
-  String id_string = "Engraved by LilyPond";
-  id_string += String_convert::pad_to (String (", ") + version_string (), 40);
-
-  output_String_def ("lilypondtagline", id_string);
-  output_String_def ("LilyPondVersion", version_string ());
-  output_String_def ("lilypondpaperunit", String (INTERNAL_UNIT));  
-}
-
-
-void
-Paper_outputter::output_Real_def (String k, Real v)
-{
-  
-  SCM scm = scm_list_n (ly_symbol2scm ("lily-def"),
-			scm_makfrom0str (k.get_str0 ()),
-			scm_makfrom0str (to_string (v).get_str0 ()),
-			SCM_UNDEFINED);
-  output_scheme (scm);
-}
-
-void
-Paper_outputter::output_String_def (String k, String v)
-{
-  
-  SCM scm = scm_list_n (ly_symbol2scm ("lily-def"),
-		     scm_makfrom0str (k.get_str0 ()),
-		     scm_makfrom0str (v.get_str0 ()),
-		     SCM_UNDEFINED);
-  output_scheme (scm);
-}
-
-void
-Paper_outputter::output_int_def (String k, int v)
-{
-  SCM scm = scm_list_n (ly_symbol2scm ("lily-def"),
-		     scm_makfrom0str (k.get_str0 ()),
-		     scm_makfrom0str (to_string (v).get_str0 ()),
-		     SCM_UNDEFINED);
-  output_scheme (scm);
-}
-
-void
-Paper_outputter::write_header_field_to_file (String filename, SCM key, SCM value)
-{
-  output_scheme (scm_list_n (ly_symbol2scm ("header-to-file"),
-			     scm_makfrom0str (filename.to_str0 ()),
-			     ly_quote_scm (key), value,
-			     SCM_UNDEFINED));
-}
-
-void
-Paper_outputter::write_header_fields_to_file (SCM mod)
-{
-  if (ly_module_p (mod)&&
-      dump_header_fieldnames_global.size ())
-    {
-      SCM fields = ly_module_to_alist (mod);
-      for (int i = 0; i < dump_header_fieldnames_global.size (); i++)
-	{
-	  String key = dump_header_fieldnames_global[i];
-	  SCM val = gh_assoc (ly_symbol2scm (key.to_str0 ()), fields);
-	  String s;
-	  /* Only write header field to file if it exists */
-	  if (gh_pair_p (val) && gh_string_p (ly_cdr (val)))
-	    {
-	      s = ly_scm2string (ly_cdr (val));
-	      /* Always write header field file, even if string is empty ... */
-	      write_header_field_to_file (basename_ , ly_car (val), ly_cdr (val));
-	    }
-	}
-    }
-}
diff --git a/lily/paper-score.cc b/lily/paper-score.cc
deleted file mode 100644
index ac8af7494b..0000000000
--- a/lily/paper-score.cc
+++ /dev/null
@@ -1,130 +0,0 @@
-/*
-  paper-score.cc -- implement Paper_score
-
-  source file of the GNU LilyPond music typesetter
-
-  (c) 1996--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-*/
-
-#include "score.hh"
-#include "main.hh"
-#include "warn.hh"
-#include "font-metric.hh"
-#include "spanner.hh"
-#include "paper-def.hh"
-#include "system.hh"
-#include "paper-column.hh"
-#include "paper-score.hh"
-#include "paper-column.hh"
-#include "scm-hash.hh"
-#include "gourlay-breaking.hh"
-#include "paper-outputter.hh"
-#include "input-file-results.hh"
-#include "misc.hh"
-#include "all-font-metrics.hh"
-
-Paper_score::Paper_score ()
-{
-  paper_ =0;
-  outputter_ =0;
-  system_ = 0;
-  main_smob_ = SCM_EOL;
-}
-
-void
-Paper_score::typeset_line (System *l)
-{
-  if (!system_)
-    {
-      system_ = l;		// ugh.
-    }
-
-  main_smob_ = gh_cons (l->self_scm (), main_smob_);
-  l->pscore_ = this;
-
-  scm_gc_unprotect_object (l->self_scm());
-}
-
-
-Paper_score::Paper_score (Paper_score const &s)
-  : Music_output (s)
-{
-  assert (false);
-}
-
-Array<Column_x_positions>
-Paper_score::calc_breaking ()
-{
-  Break_algorithm *algorithm=0;
-  Array<Column_x_positions> sol;
-
-  algorithm = new Gourlay_breaking ;
-  algorithm->set_pscore (this);
-  sol = algorithm->solve ();
-  delete algorithm;
-
-  return sol;
-}
-
-/*
-  urg. clean me
- */
-void
-Paper_score::process (String outname)
-{
-  if (verbose_global_b)
-    progress_indication (_f ("Element count %d (spanners %d) ",
-			     system_->element_count (),
-			     system_->spanner_count ()));
-
-  
-  progress_indication (_ ("Preprocessing graphical objects...") + " ");
-
-  /*
-    Be sure to set breakability on first & last column.
-   */
-  {
-    Link_array<Grob> pc (system_->columns ());
-  
-    pc[0]->set_grob_property ("breakable", SCM_BOOL_T);
-    pc.top ()->set_grob_property ("breakable", SCM_BOOL_T);
-  }
-  system_->pre_processing ();
- 
-  Array<Column_x_positions> breaking = calc_breaking ();
-  system_->break_into_pieces (breaking);
-  
-  outputter_ = paper_->get_paper_outputter (outname);
-  outputter_->output_header ();
-  outputter_->output_version ();
-
-  progress_indication ("\n");
-
-  if (global_input_file->header_)
-    {
-      outputter_->output_scope (global_input_file->header_, "lilypond");
-      outputter_->write_header_fields_to_file (global_input_file->header_);
-    }
-  
-  if (header_)
-    {
-      outputter_->output_scope (header_, "lilypond");
-      outputter_->write_header_fields_to_file (header_);
-    }
-
-  outputter_->output_scope (paper_->scope_, "lilypondpaper");
-
-  SCM scm = scm_list_n (ly_symbol2scm ("header-end"), SCM_UNDEFINED);
-  outputter_->output_scheme (scm);
-
-  system_->output_lines ();
-
-  scm = scm_list_n (ly_symbol2scm ("end-output"), SCM_UNDEFINED);
-  outputter_->output_scheme (scm);
-
-  progress_indication ("\n");
-
-  // huh?
-  delete outputter_;
-  outputter_ = 0;
-}
diff --git a/lily/parse-scm.cc b/lily/parse-scm.cc
deleted file mode 100644
index d5628707e6..0000000000
--- a/lily/parse-scm.cc
+++ /dev/null
@@ -1,131 +0,0 @@
-#include <stdio.h>
-
-#include "lily-guile.hh"
-#include "parse-scm.hh"
-#include "string.hh"
-#include "source-file.hh"
-
-/*
-  Pass string to scm parser, evaluate one expression.
-  Return result value and #chars read.
-
-  Thanks to Gary Houston <ghouston@freewire.co.uk>
-
-  Need guile-1.3.4 (>1.3 anyway) for ftell on str ports -- jcn
-*/
-SCM
-internal_ly_parse_scm (Parse_start * ps, bool safe)
-{
-  Source_file* sf =ps->start_location_.source_file_;
-  SCM port = sf->get_port();
-
-  int off = ps->start_location_.defined_str0_ - sf->to_str0();
-  
-  scm_seek (port, scm_long2num (off), scm_long2num (SEEK_SET));
-  SCM from = scm_ftell (port);
-
-  SCM form;
-  SCM answer = SCM_UNSPECIFIED;
-
-  /* Read expression from port */
-  if (!SCM_EOF_OBJECT_P (form = scm_read (port)))
-    {
-      if (safe)
-	{
-	  SCM safe_module = scm_primitive_eval (ly_symbol2scm ("safe-module"));
-	  answer = scm_eval (form, safe_module);
-	}
-      else
-	answer = scm_primitive_eval (form);
-    }
- 
-  /* Reset read_buf for scm_ftell.
-     Shouldn't scm_read () do this for us?  */
-  scm_fill_input (port);
-  SCM to = scm_ftell (port);
-  ps->nchars = gh_scm2int (to) - gh_scm2int (from);
-
-  /* Don't close the port here; if we re-enter this function via a
-     continuation, then the next time we enter it, we'll get an error.
-     It's a string port anyway, so there's no advantage to closing it
-     early. */
-  // scm_close_port (port);
-
-  return answer;
-}
-
-SCM
-catch_protected_parse_body (void *p)
-{
-  Parse_start *ps = (Parse_start*) p;
-  return internal_ly_parse_scm (ps, false);
-}
-
-SCM
-safe_catch_protected_parse_body (void *p)
-{
-  Parse_start *ps = (Parse_start*) p;
-  return internal_ly_parse_scm (ps, true);
-}
-
-SCM 
-parse_handler (void * data, SCM tag, SCM args)
-{
-  Parse_start* ps = (Parse_start*) data;
-
-  ps->start_location_.error (_("GUILE signaled an error for the expression beginning here"));
-
-  if (scm_ilength (args) > 2)
-    scm_display_error_message (gh_cadr (args), gh_caddr(args), scm_current_error_port());
-
-  /*
-    The following is a kludge; we should probably search for
-    [a-z][0-9] (a note), and start before that.
-   */
-  ps->nchars = 1;
-    
-  return SCM_UNDEFINED;
-}
-
-/*
-  Do some magical incantations: if not, lily will exit on the first
-  GUILE error, leaving no location trace. 
- */
-
-
-#if GUILE_MINOR_VERSION < 7
-  #define READ_ERROR "misc-error"
-  #else
-  #define READ_ERROR "read-error"
-#endif
-
-SCM
-protected_ly_parse_scm (Parse_start *ps, bool safe)
-{
-  return scm_internal_catch (ly_symbol2scm (READ_ERROR),
-			     (safe ? &safe_catch_protected_parse_body
-			      : catch_protected_parse_body),
-			     (void*)ps,
-			     &parse_handler, (void*)ps);
-}
-
-bool  parse_protect_global  = true; 
-
-/*
-  Try parsing. If failure, then return SCM_UNDEFINED.
- */
-SCM
-ly_parse_scm (char const* s, int *n, Input i, bool safe)
-{
-  
-  Parse_start ps ;
-  ps.str = s;
-  ps.start_location_ = i;
-
-  SCM ans = parse_protect_global ? protected_ly_parse_scm (&ps, safe)
-    : internal_ly_parse_scm (&ps, safe);
-  *n = ps.nchars;
-
-  return ans;  
-}
-
diff --git a/lily/parser.yy b/lily/parser.yy
deleted file mode 100644
index dfbe3dfc32..0000000000
--- a/lily/parser.yy
+++ /dev/null
@@ -1,2470 +0,0 @@
-%{ // -*-Fundamental-*-
-
-/*
-  parser.yy -- Bison/C++ parser for lilypond
-
-  source file of the GNU LilyPond music typesetter
-
-  (c) 1997--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-           Jan Nieuwenhuizen <janneke@gnu.org>
-*/
-
-/*
-  Four shift/reduce problems:
-
-1.	foo = bar.
-
-	"bar" -> String -> Lyric -> Music -> music-assignment
-
-	"bar" -> String -> string-assignment
-
-
-Similar problem for
-
- * \markup identifier.
- * \markup { }
-
-
-2.  \repeat
-	\repeat .. \alternative
-
-
-    \repeat { \repeat .. \alternative }
-
-or
-
-    \repeat { \repeat } \alternative 
-
-)
-
---hwn
-
- */
-
-/*
-
-TODO:
-
-* The rules for who is protecting what are very shady. Uniformise
-  this.
-
-* There are too many lexical modes?
-
-*/
-
-#include <ctype.h>
-#include <stdlib.h>
-#include <stdio.h>
-
-
-#include "scm-option.hh"
-#include "context-def.hh"
-#include "lily-guile.hh"
-#include "misc.hh"
-#include "my-lily-lexer.hh"
-#include "paper-def.hh"
-#include "midi-def.hh"
-#include "main.hh"
-#include "file-path.hh"
-#include "warn.hh"
-#include "dimensions.hh"
-#include "my-lily-parser.hh"
-#include "score.hh"
-#include "input-file-results.hh"
-#include "input.hh"
-#include "lilypond-input-version.hh"
-#include "scm-hash.hh"
-#include "ly-modules.hh"
-#include "music-sequence.hh"
-#include "input-smob.hh"
-#include "event.hh"
-#include "text-item.hh"
-#include "music-list.hh"
-
-#define MY_MAKE_MUSIC(x)  make_music_by_name (ly_symbol2scm (x))
-
-Music *property_op_to_music (SCM op);
-Music *context_spec_music (SCM type, SCM id, Music * m, SCM ops_);
-SCM get_next_unique_context ();
-
-#define YYERROR_VERBOSE 1
-
-My_lily_parser* my_lily_parser;
-#define YYPARSE_PARAM my_lily_parser
-#define YYLEX_PARAM my_lily_parser
-#define THIS\
-	((My_lily_parser *) my_lily_parser)
-
-#define yyerror THIS->parser_error
-
-/*
-  Add symbols to the  TAGS field of a music object. 
-*/
-
-void
-tag_music (Music*m,  SCM tag, Input ip)
-{
-	SCM tags = m->get_mus_property ("tags");
-	if (gh_symbol_p (tag))
-		tags = scm_cons (tag, tags);
-	else if (gh_list_p (tag))
-		tags = gh_append2 (tag, tags);
-	else
-		ip.warning (_("Tag must be symbol or list of symbols."));
-
-	m->set_mus_property ("tags", tags);
-}
-
-
-
-bool
-regular_identifier_b (SCM id)
-{
-  String str = ly_scm2string (id);
-  char const *s = str.to_str0 () ;
-
-  bool v = true;
-  while (*s && v)
-   {
-        v = v && isalpha (*s);
-        s++;
-   }
-  return v;
-}
-
-SCM
-make_simple_markup (SCM a)
-{
-	static SCM simple;
-	if (!simple)
-	simple = scm_c_eval_string ("simple-markup");
-
-	return scm_list_n (simple, a, SCM_UNDEFINED);
-}
-
-
-bool
-is_duration_b (int t)
-{
-  return t && t == 1 << intlog2 (t);
-}
-
-void
-set_music_properties (Music *p, SCM a)
-{
-  for (SCM k = a; gh_pair_p (k); k = ly_cdr (k))
-	{
-	p->internal_set_mus_property (ly_caar (k), ly_cdar (k));
-	}
-}
-
-SCM
-make_chord_step (int step, int alter)
-{
-	if (step == 7)
-		alter += FLAT;
-
-	while(step < 0)
-		step += 7;
-	Pitch m((step -1) / 7 , (step - 1) % 7, alter);
-	return m.smobbed_copy ();
-}
-
-
-SCM
-make_chord (SCM pitch, SCM dur, SCM modification_list)
-{
-	static SCM chord_ctor;
-	if (!chord_ctor)
-		chord_ctor= scm_c_eval_string ("construct-chord");
-	SCM ch=  scm_call_3 (chord_ctor, pitch, dur, modification_list);
-	scm_gc_protect_object (ch);
-	return ch;
-}
-
-/*
-  Todo: actually also use apply iso. call too ... 
-*/
-bool
-ly_input_procedure_p (SCM x)
-{
-	return gh_procedure_p (x)
-		|| (gh_pair_p (x) && gh_procedure_p (gh_car (x)));
-}
-
-Music* 
-set_property_music (SCM sym, SCM value)
-{
-	Music * p = MY_MAKE_MUSIC("PropertySet");
-	p->set_mus_property ("symbol", sym);
-	p->set_mus_property ("value", value);
-	return p;
-}
-
-%}
-
-/* We use SCMs to do strings, because it saves us the trouble of
-deleting them.  Let's hope that a stack overflow doesnt trigger a move
-of the parse stack onto the heap. */
-
-
-%union {
-	String * string;
-    Music *music;
-    Score *score;
-    Music_output_def * outputdef;
-    SCM scm;
-    int i;
-}
-%{
-
-int
-yylex (YYSTYPE *s,  void * v)
-{
-	My_lily_parser	 *pars = (My_lily_parser*) v;
-	My_lily_lexer * lex = pars->lexer_;
-
-	lex->lexval = (void*) s;
-	lex->prepare_for_next_token();
-	return lex->yylex ();
-}
-
-
-%}
-
-%pure_parser
-
-
-%token ACCEPTS
-%token ADDLYRICS
-%token NEWADDLYRICS
-%token ALIAS
-%token ALTERNATIVE
-%token APPLY
-%token APPLYCONTEXT
-%token APPLYOUTPUT
-%token AUTOCHANGE
-%token BAR
-%token BREATHE
-%token CHANGE
-%token CHORDMODIFIERS  
-%token CHORDS
-%token LESSLESS
-%token MOREMORE
-%token CLEF
-%token COMMANDSPANREQUEST
-%token CONSISTS
-%token CONSISTSEND
-%token CONTEXT
-%token DEFAULT
-%token DENIES
-%token DESCRIPTION
-%token EXTENDER
-%token FIGURES FIGURE_OPEN FIGURE_CLOSE
-%token FIGURE_BRACKET_CLOSE FIGURE_BRACKET_OPEN
-%token GRACE 
-%token ACCIACCATURA
-%token APPOGGIATURA 
-%token GROBDESCRIPTIONS
-%token HEADER
-%token HYPHEN
-%token INVALID
-%token KEY
-%token LYRICS
-%token MARK
-%token MIDI
-%token MULTI_MEASURE_REST
-%token NAME
-%token NEWCONTEXT
-%token NOTES
-%token OCTAVE
-%token ONCE
-%token OVERRIDE SET REVERT 
-%token PAPER
-%token PARTCOMBINE
-%token PARTIAL
-%token PROPERTY
-%token RELATIVE
-%token REMOVE
-%token REPEAT
-%token REST
-%token SCM_T
-%token SCORE
-%token SEQUENTIAL
-%token SIMULTANEOUS
-%token SKIP
-%token SPANREQUEST
-%token TAG
-%token TEMPO
-%token TIMES
-%token TIME_T
-%token TRANSLATOR
-%token TRANSPOSE
-%token TYPE
-%token UNSET
-%token WITH
-
-/* escaped */
-%token E_CHAR E_EXCLAMATION E_SMALLER E_BIGGER E_OPEN E_CLOSE
-%token E_LEFTSQUARE E_RIGHTSQUARE E_TILDE
-%token E_BACKSLASH
-%token <i> E_UNSIGNED
-%token CHORD_BASS CHORD_COLON CHORD_MINUS CHORD_CARET  CHORD_SLASH
-%token FIGURE_SPACE
-
-%type <i>	exclamations questions dots optional_rest
-%type <i>  	 bass_mod
-%type <scm> 	grace_head
-%type <scm> 	oct_check
-%type <scm> 	context_mod_list
-%type <scm>  	lyric_element
-%type <scm> 	bass_number br_bass_figure bass_figure figure_list figure_spec
-%token <i>	DIGIT
-%token <scm>	NOTENAME_PITCH
-%token <scm>	TONICNAME_PITCH
-%token <scm>	CHORDMODIFIER_PITCH
-%token <scm>	DURATION_IDENTIFIER
-%token <scm>    FRACTION
-%token <id>	IDENTIFIER
-%token DRUMS
-%token <scm>	DRUM_PITCH
-%token <scm> 	CHORD_MODIFIER
-%token <scm>	SCORE_IDENTIFIER
-%token <scm>	MUSIC_OUTPUT_DEF_IDENTIFIER
-%token <scm>	NUMBER_IDENTIFIER
-%token <scm>	EVENT_IDENTIFIER
-%token <scm>	MUSIC_IDENTIFIER TRANSLATOR_IDENTIFIER
-%token <scm>	STRING_IDENTIFIER SCM_IDENTIFIER 
-%token <scm>	RESTNAME
-%token <scm>	STRING   
-%token <scm>	SCM_T
-%token <i>	UNSIGNED
-%token <scm>   REAL
-
-%token MARKUP
-%token <scm> MARKUP_HEAD_MARKUP0
-%token <scm> MARKUP_HEAD_EMPTY
-%token <scm> MARKUP_HEAD_MARKUP0_MARKUP1
-%token <scm> MARKUP_HEAD_SCM0
-%token <scm> MARKUP_HEAD_SCM0_MARKUP1
-%token <scm> MARKUP_HEAD_SCM0_SCM1 
-%token <scm> MARKUP_HEAD_SCM0_SCM1_SCM2 
-%token <scm> MARKUP_HEAD_SCM0_SCM1_MARKUP2
-
-%token <scm> MARKUP_IDENTIFIER MARKUP_HEAD_LIST0
-%type <scm> markup markup_line markup_list  markup_list_body full_markup 
-
-%type <outputdef> output_def
-%type <scm> 	lilypond_header lilypond_header_body
-%type <music>	open_event close_event
-%type <i>	sub_quotes sup_quotes
-%type <music>	simple_element  event_chord command_element Simple_music  Composite_music 
-%type <music>	Repeated_music
-%type <scm>     Alternative_music
-%type <i>	tremolo_type
-%type <i>	bare_int  bare_unsigned
-%type <i>	script_dir
-%type <scm>	identifier_init 
-
-%type <music> note_chord_element chord_body chord_body_element
-%type <scm>  chord_body_elements 
-%type <scm> steno_duration optional_notemode_duration multiplied_duration
-	
-%type <scm>   post_events 
-%type <music> gen_text_def direction_less_event direction_reqd_event
-%type <scm>   steno_pitch pitch absolute_pitch pitch_also_in_chords
-%type <scm>    steno_tonic_pitch
-%type <scm>	duration_length fraction
-
-%type <scm> new_chord step_number chord_items chord_item chord_separator step_numbers
-
-%type <scm>  embedded_scm scalar
-%type <music>	Music Sequential_music Simultaneous_music 
-%type <music>	relative_music re_rhythmed_music 
-%type <music>	music_property_def context_change 
-%type <scm> Music_list
-%type <scm> property_operation context_mod translator_mod optional_context_mod
-%type <outputdef>  music_output_def_body music_output_def_head
-%type <music>	post_event tagged_post_event
-%type <music> command_req 
-%type <music> string_number_event
-%type <scm>	string bare_number number_expression number_term number_factor 
-%type <score>	score_block score_body
-
-%type <scm>	translator_spec_block translator_spec_body
-%type <music> 	tempo_event
-%type <scm>	script_abbreviation
-
-
-
-%left '-' '+'
-
-/* We don't assign precedence to / and *, because we might need varied
-prec levels in different prods */
-
-%left UNARY_MINUS
-
-%%
-
-lilypond:	/* empty */
-	| lilypond toplevel_expression {}
-	| lilypond assignment  { }
-	| lilypond error {
-		THIS->error_level_  = 1;
-	}
-	| lilypond INVALID	{
-		THIS->error_level_  = 1;
-	}
-	;
-
-toplevel_expression:
-	lilypond_header {
-		THIS->input_file_->header_ = $1;
-	}
-	| score_block {
-		Score * sc = $1;
-
-		SCM head = ly_module_p (sc->header_) ? sc->header_ : THIS->input_file_->header_.to_SCM ();
-
-		Path p = split_path (THIS->output_basename_);
-		int *c =  &THIS->input_file_->score_count_;
-		if (*c)
-			{
-			p.base += "-" + to_string (*c);
-			}
-
-		(*c)++;
-		SCM outname = scm_makfrom0str (p.to_string ().to_str0());
-
-		for (int i=0; i < sc->defs_.size (); i++)
-			default_rendering (sc->music_, sc->defs_[i]->self_scm(),head, outname);
-
-		if (sc->defs_.is_empty ())
-		{
-		   Music_output_def *id =
-			unsmob_music_output_def (THIS->lexer_->lookup_identifier
-				("$defaultpaper"));
-
-		   id = id ? id->clone () : new Paper_def;
-	
-		   default_rendering (sc->music_, id->self_scm(), head, outname);
-						
-		   scm_gc_unprotect_object (id->self_scm ());
-		}
-		scm_gc_unprotect_object (sc->self_scm());
-	}
-	| output_def {
-		SCM id = SCM_EOL;
-		if (dynamic_cast<Paper_def*> ($1))
-			id = scm_makfrom0str ("$defaultpaper");
-		else if (dynamic_cast<Midi_def*> ($1))
-			id = scm_makfrom0str ("$defaultmidi");
-		THIS->lexer_->set_identifier (id,   $1->self_scm ());
-		scm_gc_unprotect_object ($1->self_scm ());
-	}
-	;
-
-embedded_scm:
-	SCM_T
-	| SCM_IDENTIFIER 
-	;
-
-
-
-
-lilypond_header_body:
-	{
-		$$ = ly_make_anonymous_module (); 
-		THIS->lexer_->add_scope ($$);
-	}
-	| lilypond_header_body assignment  { 
-		
-	}
-	;
-
-lilypond_header:
-	HEADER '{' lilypond_header_body '}'	{
-		$$ = THIS->lexer_-> remove_scope();
-	}
-	;
-
-
-/*
-	DECLARATIONS
-*/
-assignment:
-	STRING {
-		THIS->push_spot ();
-	}
-	/* cont */ '=' identifier_init  {
-
-	/*
-		Should find generic way of associating input with objects.
-	*/
-		Input ip = THIS->pop_spot ();
-
-		if (! regular_identifier_b ($1))
-		{
-			ip.warning (_ ("Identifier should have alphabetic characters only"));
-		}
-
-	        THIS->lexer_->set_identifier ($1, $4);
-
-/*
- TODO: devise standard for protection in parser.
-
-  The parser stack lives on the C-stack, which means that
-all objects can be unprotected as soon as they're here.
-
-*/
-	}
-	| embedded_scm { }
-	;
-
-
-identifier_init:
-	score_block {
-		$$ = $1->self_scm ();
-		scm_gc_unprotect_object ($$);
-	}
-	| full_markup {
-		$$ = $1;
-	}
-	| output_def {
-		$$ = $1->self_scm ();
-		scm_gc_unprotect_object ($$);
-	}
-	| translator_spec_block {
-		$$ = $1;
-	}
-	| Music  {
-		$$ = $1->self_scm ();
-		scm_gc_unprotect_object ($$);
-	}
-	| post_event {
-		$$ = $1->self_scm ();
-		scm_gc_unprotect_object ($$);
-	}
-	| number_expression {
-		$$ = $1;
-	}
-	| string {
-		$$ = $1;
-	}
-	| embedded_scm	{
-		$$ = $1;
-	}
-	;
-
-translator_spec_block:
-	TRANSLATOR '{' translator_spec_body '}'
-		{
-		$$ = $3;
-	}
-	;
-
-translator_spec_body:
-	/**/ {
-		$$ = Context_def::make_scm ();
-		unsmob_context_def ($$)->set_spot (THIS->here_input ());
-	}
-	| TRANSLATOR_IDENTIFIER	{
-		$$ = $1;
-		unsmob_context_def ($$)->set_spot (THIS->here_input ());
-	}
-	| translator_spec_body GROBDESCRIPTIONS embedded_scm {
-		Context_def*td = unsmob_context_def($$);
-
-		for (SCM p = $3; gh_pair_p (p); p = ly_cdr (p)) {
-			SCM tag = gh_caar (p);
-
-			/* TODO: should make new tag "grob-definition" ? */
-			td->add_context_mod (scm_list_n (ly_symbol2scm ("assign"),
-							tag, gh_cons (ly_cdar (p), SCM_EOL), SCM_UNDEFINED));
-		}
-	}
-	| translator_spec_body context_mod {
-		unsmob_context_def ($$)->add_context_mod ($2);		
-	}
-	;
-
-/*
-	SCORE
-*/
-score_block:
-	SCORE { 
-		THIS->push_spot ();
-	}
-	/*cont*/ '{' score_body '}' 	{
-		THIS->pop_spot ();
-		$$ = $4;
-
-	}
-	;
-
-score_body:
-	Music	{
-		$$ = new Score;
-	
-		$$->set_spot (THIS->here_input ());
-		SCM m = $1->self_scm ();
-		scm_gc_unprotect_object (m);
-
-		/*
-			guh.
-		*/
-		SCM check_funcs = scm_c_eval_string ("toplevel-music-functions");
-		for (; gh_pair_p (check_funcs); check_funcs = gh_cdr (check_funcs))
-			m = gh_call1 (gh_car (check_funcs), m);
-		$$->music_ = m;
-
-	}
-	| SCORE_IDENTIFIER {
-		$$ = new Score ( *unsmob_score ($1));
-		$$->set_spot (THIS->here_input ());
-	}
-	| score_body lilypond_header 	{
-		$$->header_ = $2;
-	}
-	| score_body output_def {
-		$$->defs_.push ($2);
-		scm_gc_unprotect_object ($2->self_scm ());
-	}
-	| score_body error {
-
-	}
-	;
-
-
-/*
-	MIDI
-*/
-output_def:
-	music_output_def_body '}' {
-		$$ = $1;
-		THIS-> lexer_-> remove_scope ();
-	}
-	;
-
-music_output_def_head:
-	MIDI    {
-		Music_output_def *id = unsmob_music_output_def (THIS->lexer_->lookup_identifier ("$defaultmidi"));
-
-
-		Midi_def* p =0;
-		if (id)
-			p = dynamic_cast<Midi_def*> (id->clone ());
-		else
-			p = new Midi_def;
-
-		$$ = p;
-		THIS->lexer_->add_scope (p->scope_);
-	}
-	| PAPER 	{
-		Music_output_def *id = unsmob_music_output_def (THIS->lexer_->lookup_identifier ("$defaultpaper"));
-		  Paper_def *p = 0;
-		if (id)
-			p = dynamic_cast<Paper_def*> (id->clone ());
-		else
-			p = new Paper_def;
-
-		THIS->lexer_->add_scope (p->scope_);
-		$$ = p;
-	}
-	;
-
-
-music_output_def_body:
-	music_output_def_head '{' { 
-		
-	}
-	| music_output_def_head '{' MUSIC_OUTPUT_DEF_IDENTIFIER 	{
-		scm_gc_unprotect_object ($1->self_scm ());
-		Music_output_def * o =  unsmob_music_output_def ($3);
-		$$ = o;
-		THIS->lexer_->remove_scope ();
-		THIS->lexer_->add_scope (o->scope_);
-	}
-	| music_output_def_body assignment  {
-
-	}
-	| music_output_def_body translator_spec_block	{
-		$$->assign_translator ($2);
-	}
-	| music_output_def_body tempo_event  {
-		/*
-			junk this ? there already is tempo stuff in
-			music.
-		*/
-		int m = gh_scm2int ( $2->get_mus_property ("metronome-count"));
-		Duration *d = unsmob_duration ($2->get_mus_property ("tempo-unit"));
-		Midi_def * md = dynamic_cast<Midi_def*> ($$);
-		if (md)
-			md->set_tempo (d->get_length (), m);
-		scm_gc_unprotect_object ($2->self_scm ());
-	}
-	| music_output_def_body error {
-
-	}
-	;
-
-tempo_event:
-	TEMPO steno_duration '=' bare_unsigned	{
-		$$ = MY_MAKE_MUSIC("MetronomeChangeEvent");
-		$$->set_mus_property ("tempo-unit", $2);
-		$$->set_mus_property ("metronome-count", gh_int2scm ( $4));
-	}
-	;
-
-/*
-The representation of a  list is the
-
-  (LIST . LAST-CONS)
-
- to have  efficient append.
-*/
-Music_list:
-	/* empty */ {
-		$$ = scm_cons (SCM_EOL, SCM_EOL);
-	}
-	| Music_list Music {
-		SCM s = $$;
- 		SCM c = scm_cons ($2->self_scm (), SCM_EOL);
-		scm_gc_unprotect_object ($2->self_scm ()); /* UGH */
-		if (gh_pair_p (ly_cdr (s)))
-			gh_set_cdr_x (ly_cdr (s), c); /* append */
-		else
-			gh_set_car_x (s, c); /* set first cons */
-		gh_set_cdr_x (s, c) ;  /* remember last cell */ 
-	}
-	| Music_list error {
-	}
-	;
-
-
-Music:
-	Simple_music
-	| Composite_music
-	;
-
-Alternative_music:
-	/* empty */ {
-		$$ = SCM_EOL;
-	}
-	| ALTERNATIVE '{' Music_list '}' {
-		$$ = $3;
-	}
-	;
-
-Repeated_music:
-	REPEAT string bare_unsigned Music Alternative_music
-	{
-		Music *beg = $4;
-		int times = $3;
-		SCM alts = gh_pair_p ($5) ? gh_car ($5) : SCM_EOL;
-		if (times < scm_ilength (alts)) {
-		  unsmob_music (gh_car (alts))
-		    ->origin ()->warning (
-		    _("More alternatives than repeats.  Junking excess alternatives."));
-		  alts = ly_truncate_list (times, alts);
-		}
-
-
-		static SCM proc;
-		if (!proc)
-			proc = scm_c_eval_string ("make-repeated-music");
-
-		SCM mus = scm_call_1 (proc, $2);
-		scm_gc_protect_object (mus); // UGH. 
-		Music *r =unsmob_music (mus);
-		if (beg)
-			{
-			r-> set_mus_property ("element", beg->self_scm ());
-			scm_gc_unprotect_object (beg->self_scm ());
-			}
-		r->set_mus_property ("repeat-count", gh_int2scm (times >? 1));
-
-		r-> set_mus_property ("elements",alts);
-		if (gh_equal_p ($2, scm_makfrom0str ("tremolo"))) {
-			/*
-			we can not get durations and other stuff correct down the line, so we have to
-			add to the duration log here.
-			*/
-			static SCM func;
-
-			if (!func)
-				func = scm_primitive_eval (ly_symbol2scm ("shift-duration-log"));
-
-			int dots = ($3 % 3) ? 0 : 1;
-			int shift = -intlog2 ((dots) ? ($3*2/3) : $3);
-
-			Sequential_music * seq = dynamic_cast<Sequential_music*> ($4);
-			
-			if (seq) {
-				int list_len =scm_ilength (seq->music_list ());
-				if (list_len != 2)
-					seq->origin ()->warning ("Chord tremolo must have 2 elements.");
-				shift -= 1;
-				r->compress (Moment (Rational (1,list_len)));
-				}
-			gh_call3 (func, r->self_scm (), gh_int2scm(shift),gh_int2scm(dots));
-
-		}
-		r->set_spot (*$4->origin ());
-
-		$$ = r;
-	}
-	;
-
-Sequential_music:
-	SEQUENTIAL '{' Music_list '}'		{
-		$$ = MY_MAKE_MUSIC("SequentialMusic");
-		$$->set_mus_property ("elements", ly_car ($3));
-		$$->set_spot(THIS->here_input());
-	}
-	| '{' Music_list '}'		{
-		$$ = MY_MAKE_MUSIC("SequentialMusic");
-		$$->set_mus_property ("elements", ly_car ($2));
-		$$->set_spot(THIS->here_input());
-	}
-	;
-
-Simultaneous_music:
-	SIMULTANEOUS '{' Music_list '}'{
-		$$ = MY_MAKE_MUSIC("SimultaneousMusic");
-		$$->set_mus_property ("elements", ly_car ($3));
-		$$->set_spot(THIS->here_input());
-
-	}
-	| simul_open Music_list simul_close	{
-		$$ = MY_MAKE_MUSIC("SimultaneousMusic");
-		$$->set_mus_property ("elements", ly_car ($2));
-		$$->set_spot(THIS->here_input());
-	}
-	;
-
-Simple_music:
-	event_chord		{ $$ = $1; }
-	| APPLYOUTPUT embedded_scm {
-		if (!ly_input_procedure_p ($2))
-			THIS->parser_error (_ ("\\applycontext takes function argument"));
-		$$ = MY_MAKE_MUSIC ("ApplyOutputEvent");
-		$$->set_mus_property ("procedure", $2);
-		$$->set_spot (THIS->here_input());
-	}
-	| APPLYCONTEXT embedded_scm {
-		if (!ly_input_procedure_p ($2))
-			THIS->parser_error (_ ("\\applycontext takes function argument"));
-		$$ = MY_MAKE_MUSIC ("ApplyContext");
-		$$->set_mus_property ("procedure", $2);
-		$$->set_spot (THIS->here_input());
-	}
-	| MUSIC_IDENTIFIER {
-		$$ = unsmob_music ($1);
-	}
-	| music_property_def
-	| context_change
-	;
-
-
-optional_context_mod:
-	/**/ { $$ = SCM_EOL; }
-	| WITH '{' context_mod_list '}'  { $$ = $3; }
-	;
-
-grace_head:
-	GRACE  { $$ = scm_makfrom0str ("Grace"); } 
-	| ACCIACCATURA { $$ = scm_makfrom0str ("Acciaccatura"); }
-	| APPOGGIATURA { $$ = scm_makfrom0str ("Appoggiatura"); }
-	;
-
-context_mod_list:
-	/* */  { $$ = SCM_EOL; }
-	| context_mod_list context_mod  {
-		 $$ = gh_cons ($2, $1);
-	}
-	;
-
-Composite_music:
-	AUTOCHANGE Music	{
-		static SCM proc ;
-		if (!proc)
-			proc = scm_c_eval_string ("make-autochange-music");
-	
-		SCM res = scm_call_1 (proc,  $2->self_scm ());
-		scm_gc_unprotect_object ($2->self_scm ());
-		$$ = unsmob_music (res);
-		scm_gc_protect_object (res);
-		$$->set_spot (THIS->here_input());
-	}
-	| PARTCOMBINE Music Music {
-		static SCM proc;
-		if (!proc)
-			proc = scm_c_eval_string ("make-part-combine-music");
-
-		SCM res = scm_call_1 (proc, gh_list ($2->self_scm (),
-			$3->self_scm (), SCM_UNDEFINED));  
-		scm_gc_unprotect_object ($3->self_scm ());
-		scm_gc_unprotect_object ($2->self_scm ());
-		$$ = unsmob_music (res);
-		scm_gc_protect_object (res);
-		$$->set_spot (THIS->here_input());
-	}
-	| grace_head Music {
-#if 1
-	/*
-		The other version is for easier debugging  of
-		Sequential_music_iterator in combination with grace notes.
-	*/
-
-/*
-
-TODO: should distinguish between both grace types in the
-basic music objects too, since the meaning is different.
-
-*/
-
-		String start_str = "start" + ly_scm2string ($1) + "Music"; 
-		String stop_str = "stop" + ly_scm2string ($1) + "Music"; 
-		
-		SCM start = THIS->lexer_->lookup_identifier (start_str);
-		SCM stop = THIS->lexer_->lookup_identifier (stop_str);
-
-		Music *startm = unsmob_music (start);
-		Music *stopm = unsmob_music (stop);
-
-		SCM ms = SCM_EOL;
-		if (stopm) {
-			stopm = stopm->clone ();
-			ms = scm_cons (stopm->self_scm (), ms);
-			scm_gc_unprotect_object (stopm->self_scm ());
-		}
-		ms = scm_cons ($2->self_scm (), ms);
-		scm_gc_unprotect_object ($2->self_scm());
-		if (startm) {
-			startm = startm->clone ();
-			ms = scm_cons (startm->self_scm () , ms);
-			scm_gc_unprotect_object (startm->self_scm ());
-		}
-
-		Music* seq = MY_MAKE_MUSIC("SequentialMusic");
-		seq->set_mus_property ("elements", ms);
-
-		
-		$$ = MY_MAKE_MUSIC("GraceMusic");
-		$$->set_mus_property ("element", seq->self_scm ());
-		scm_gc_unprotect_object (seq->self_scm ());
-#else
-		$$ = MY_MAKE_MUSIC("GraceMusic");
-		$$->set_mus_property ("element", $2->self_scm ());
-		scm_gc_unprotect_object ($2->self_scm ());
-#endif
-	}
-	| CONTEXT string '=' string optional_context_mod Music {
-		$$ = context_spec_music ($2, $4, $6, $5);
-
-	}
-	| CONTEXT STRING optional_context_mod Music {
-		$$ = context_spec_music ($2, SCM_UNDEFINED, $4, $3);
-	}
-	| NEWCONTEXT string optional_context_mod Music {
-		$$ = context_spec_music ($2, get_next_unique_context (),
-					 $4, $3);
-	}
-
-	| TIMES {
-		THIS->push_spot ();
-	}
-	/* CONTINUED */ 
-		fraction Music 	
-
-	{
-		int n = gh_scm2int (ly_car ($3)); int d = gh_scm2int (ly_cdr ($3));
-		Music *mp = $4;
-
-		$$= MY_MAKE_MUSIC("TimeScaledMusic");
-		$$->set_spot (THIS->pop_spot ());
-
-		$$->set_mus_property ("element", mp->self_scm ());
-		scm_gc_unprotect_object (mp->self_scm ());
-		$$->set_mus_property ("numerator", gh_int2scm (n));
-		$$->set_mus_property ("denominator", gh_int2scm (d));
-		$$->compress (Moment (Rational (n,d)));
-
-	}
-	| Repeated_music		{ $$ = $1; }
-	| Simultaneous_music		{ $$ = $1; }
-	| Sequential_music		{ $$ = $1; }
-	| TRANSPOSE pitch_also_in_chords pitch_also_in_chords Music {
-		$$ = MY_MAKE_MUSIC("TransposedMusic");
-		Music *p = $4;
-		Pitch from = *unsmob_pitch ($2);
-		Pitch to = *unsmob_pitch ($3);
-
-		p->transpose (interval (from, to));
-		$$->set_mus_property ("element", p->self_scm ());
-		scm_gc_unprotect_object (p->self_scm ());
-	}
-	| APPLY embedded_scm Music  {
-		if (!ly_input_procedure_p ($2))
-			{
-			THIS->parser_error (_ ("\\apply takes function argument"));
-			$$ = $3;
-			}
-		else
-			{
-			SCM ret = gh_call1 ($2, $3->self_scm ());
-			Music *m = unsmob_music (ret);
-			if (!m) {
-				THIS->parser_error ("\\apply must return a Music");
-				m = MY_MAKE_MUSIC("Music");
-				}
-			$$ = m;
-			}
-	}
-	| NOTES
-		{
-		SCM nn = THIS->lexer_->lookup_identifier ("pitchnames");
-		THIS->lexer_->push_note_state (alist_to_hashq (nn));
-	}
-	Music
-		{ $$ = $3;
-		  THIS->lexer_->pop_state ();
-		}
-	| DRUMS
-		{
-		SCM nn = THIS->lexer_->lookup_identifier ("drumPitchNames");
-		THIS->lexer_->push_note_state (alist_to_hashq (nn));
-	}
-	Music
-		{ $$ = $3;
-		  THIS->lexer_->pop_state ();
-		}
-	| FIGURES
-		{ THIS->lexer_->push_figuredbass_state (); }
-	Music
-		{
-		  Music * chm = MY_MAKE_MUSIC("UntransposableMusic");
-		  chm->set_mus_property ("element", $3->self_scm ());
-		  $$ = chm;
-		  scm_gc_unprotect_object ($3->self_scm());
-
-		  THIS->lexer_->pop_state ();
-	}
-	| CHORDS {
-		SCM nn = THIS->lexer_->lookup_identifier ("chordmodifiers");
-		THIS->lexer_->chordmodifier_tab_ = alist_to_hashq (nn);
-		nn = THIS->lexer_->lookup_identifier ("pitchnames");
-		THIS->lexer_->push_chord_state (alist_to_hashq (nn));
-
-	} Music {
-		  Music * chm = MY_MAKE_MUSIC("UnrelativableMusic");
-		  chm->set_mus_property ("element", $3->self_scm ());
-		  scm_gc_unprotect_object ($3->self_scm());
-		  $$ = chm;
-
-		  THIS->lexer_->pop_state ();
-	}
-	| LYRICS
-		{ THIS->lexer_->push_lyric_state (); }
-	Music
-		{
-		  $$ = $3;
-		  THIS->lexer_->pop_state ();
-	}
-	| relative_music	{ $$ = $1; }
-	| re_rhythmed_music	{ $$ = $1; } 
-	| TAG embedded_scm Music {
-		tag_music ($3, $2, THIS->here_input ());
-		$$ = $3;
-	}
-	;
-
-relative_music:
-	RELATIVE absolute_pitch Music {
-		Music * p = $3;
-		Pitch pit = *unsmob_pitch ($2);
-		$$ = MY_MAKE_MUSIC("RelativeOctaveMusic");
-
-		$$->set_mus_property ("element", p->self_scm ());
-		scm_gc_unprotect_object (p->self_scm ());
-
-
-		Pitch retpitch = p->to_relative_octave (pit);
-		if (lily_1_8_relative)
-			$$->set_mus_property ("last-pitch", retpitch.smobbed_copy ());
-	}
-	;
-
-re_rhythmed_music:
-	ADDLYRICS Music Music {
-	Music*l =MY_MAKE_MUSIC("LyricCombineMusic");
-	  l->set_mus_property ("elements", gh_list ($2->self_scm (), $3->self_scm (), SCM_UNDEFINED));
-	  scm_gc_unprotect_object ($3->self_scm ());
-	  scm_gc_unprotect_object ($2->self_scm ());
-	  $$ = l;
-	}
-	| NEWADDLYRICS string Music {
-	  Music*l =MY_MAKE_MUSIC("NewLyricCombineMusic");
-	  l->set_mus_property ("element", $3->self_scm ());
-	  scm_gc_unprotect_object ($3->self_scm ());
-	  $$ = l;
-	  l->set_mus_property ("associated-context", $2);
-	}
-	;
-
-context_change:
-	CHANGE STRING '=' STRING  {
-		Music*t= MY_MAKE_MUSIC("TranslatorChange");
-		t-> set_mus_property ("change-to-type", scm_string_to_symbol ($2));
-		t-> set_mus_property ("change-to-id", $4);
-
-		$$ = t;
-		$$->set_spot (THIS->here_input ());
-	}
-	;
-
-property_operation:
-	STRING '='  scalar {
-		$$ = scm_list_n (ly_symbol2scm ("assign"),
-			scm_string_to_symbol ($1), $3, SCM_UNDEFINED);
-	}
-	| STRING UNSET {
-		$$ = scm_list_n (ly_symbol2scm ("unset"),
-			scm_string_to_symbol ($1), SCM_UNDEFINED);
-	}
-	| STRING SET embedded_scm '=' embedded_scm {
-		$$ = scm_list_n (ly_symbol2scm ("poppush"),
-			scm_string_to_symbol ($1), $3, $5, SCM_UNDEFINED);
-	}
-	| STRING OVERRIDE embedded_scm '=' embedded_scm {
-		$$ = scm_list_n (ly_symbol2scm ("push"),
-			scm_string_to_symbol ($1), $3, $5, SCM_UNDEFINED);
-	}
-	| STRING REVERT embedded_scm {
-		$$ = scm_list_n (ly_symbol2scm ("pop"),
-			scm_string_to_symbol ($1), $3, SCM_UNDEFINED);
-	}
-	;
-
-translator_mod:
-	CONSISTSEND { $$ = ly_symbol2scm ("consists-end"); }
-	| CONSISTS { $$ = ly_symbol2scm ("consists"); }
-	| REMOVE { $$ = ly_symbol2scm ("remove"); }
-
-	| ACCEPTS { $$ = ly_symbol2scm ("accepts"); }
-	| DENIES { $$ = ly_symbol2scm ("denies"); }
-
-	| ALIAS { $$ = ly_symbol2scm ("alias"); }
-	| TYPE { $$ = ly_symbol2scm ("translator-type"); }
-	| DESCRIPTION { $$ = ly_symbol2scm ("description"); }
-	| NAME { $$ = ly_symbol2scm ("context-name"); }
-	;
-
-context_mod:
-	property_operation { $$ = $1; }
-	| translator_mod STRING {
-		$$ = scm_list_n ($1, $2, SCM_UNDEFINED);
-	}
-	;
-
-music_property_def:
-	PROPERTY STRING '.' property_operation {
-		Music * t = property_op_to_music ($4);
-		Music *csm = MY_MAKE_MUSIC("ContextSpeccedMusic");
-
-		csm->set_mus_property ("element", t->self_scm ());
-		scm_gc_unprotect_object (t->self_scm ());
-
-		$$ = csm;
-		$$->set_spot (THIS->here_input ());
-
-		csm-> set_mus_property ("context-type", scm_string_to_symbol ($2));
-	}
-	| ONCE music_property_def {
-		$$ = $2;
-		SCM e = $2->get_mus_property ("element");
-		unsmob_music (e)->set_mus_property ("once", SCM_BOOL_T);
-	}
-	;
-
-
-scalar:
-        string          { $$ = $1; }
-        | bare_int      { $$ = gh_int2scm ($1); }
-        | embedded_scm  { $$ = $1; }
-	| full_markup {  $$ = $1; }
-	| DIGIT { $$ = gh_int2scm ($1); }
-        ;
-
-/*
-This is a trick:
-
-Adding pre_events to the simple_element
-makes the choice between
-
-  string:  STRING
-
-and
-
-  simple_element: STRING
-
-a single shift/reduction conflict.
-
-nevertheless, this is not very clean, and we should find a different
-solution.  
-
-*/
-pre_events: {
-		THIS->push_spot ();
-	}
-	;
-
-event_chord:
-	pre_events simple_element post_events	{
-		SCM elts = $2-> get_mus_property ("elements");
-
-		elts = gh_append2 (elts, scm_reverse_x ($3, SCM_EOL));
-
-		$2->set_mus_property ("elements", elts);
-		$$ = $2;
-	}
-	| command_element
-	| note_chord_element
-	;
-
-
-note_chord_element:
-	chord_body optional_notemode_duration post_events
-	{
-		SCM dur = unsmob_duration ($2)->smobbed_copy();
-		SCM es = $1->get_mus_property ("elements");
-		SCM postevs = scm_reverse_x ($3, SCM_EOL);
-
-		for (SCM s = es; gh_pair_p (s); s = gh_cdr (s))
-		  unsmob_music (gh_car(s))->set_mus_property ("duration", dur);
-		es = gh_append2 (es, postevs);
-
-		$1-> set_mus_property ("elements", es);
-		$$ = $1;
-	}
-	;
-
-chord_open: '<'
-	;
-
-chord_close: '>'
-	;
-
-simul_open: LESSLESS
-	;
-
-simul_close: MOREMORE
-	;
-
-chord_body:
-	chord_open chord_body_elements chord_close
-	{
-		$$ = MY_MAKE_MUSIC("EventChord");
-		$$->set_mus_property ("elements",
-			scm_reverse_x ($2, SCM_EOL));
-	}
-	;
-
-chord_body_elements:
-	/* empty */ 		{ $$ = SCM_EOL; }
-	| chord_body_elements chord_body_element {
-		$$ = gh_cons ($2->self_scm(), $1);
-		scm_gc_unprotect_object ($2->self_scm());
-	}
-	;
-
-chord_body_element:
-	pitch exclamations questions post_events
-	{
-		Music * n = MY_MAKE_MUSIC("NoteEvent");
-		n->set_mus_property ("pitch", $1);
-		if ($3 % 2)
-			n->set_mus_property ("cautionary", SCM_BOOL_T);
-		if ($2 % 2 || $3 % 2)
-			n->set_mus_property ("force-accidental", SCM_BOOL_T);
-
-		if (gh_pair_p ($4)) {
-			SCM arts = scm_reverse_x ($4, SCM_EOL);
-			n->set_mus_property ("articulations", arts);
-		}
-		$$ = n;
-	}
-	| DRUM_PITCH post_events {
-		Music *n =  MY_MAKE_MUSIC("NoteEvent");
-		n->set_mus_property ("duration" ,$2);
-		n->set_mus_property ("drum-type" , $1);
-		n->set_spot (THIS->here_input());
-
-		if (gh_pair_p ($2)) {
-			SCM arts = scm_reverse_x ($2, SCM_EOL);
-			n->set_mus_property ("articulations", arts);
-		}
-		$$ = n;
-	}
-	;
-
-command_element:
-	command_req {
-		$$ = MY_MAKE_MUSIC("EventChord");
-		$$->set_mus_property ("elements", scm_cons ($1->self_scm (), SCM_EOL));
-		scm_gc_unprotect_object ($1->self_scm());
-
-		$$-> set_spot (THIS->here_input ());
-		$1-> set_spot (THIS->here_input ());
-	}
-	| SKIP duration_length {
-		Music * skip = MY_MAKE_MUSIC("SkipMusic");
-		skip->set_mus_property ("duration", $2);
-
-		$$ = skip;
-	}
-	| OCTAVE { THIS->push_spot (); }
- 	  pitch {
-		Music *l = MY_MAKE_MUSIC("RelativeOctaveCheck");
-		$$ = l;
-		$$->set_spot (THIS->pop_spot ());
-		$$->set_mus_property ("pitch", $3);
-	}
-	| E_LEFTSQUARE {
-		Music *l = MY_MAKE_MUSIC("LigatureEvent");
-		l->set_mus_property ("span-direction", gh_int2scm (START));
-		l->set_spot (THIS->here_input ());
-
-		$$ = MY_MAKE_MUSIC("EventChord");
-		$$->set_mus_property ("elements", scm_cons (l->self_scm (), SCM_EOL));
-		scm_gc_unprotect_object (l->self_scm());
-		$$->set_spot (THIS->here_input ());
-	}
-	| E_RIGHTSQUARE {
-		Music *l = MY_MAKE_MUSIC("LigatureEvent");
-		l->set_mus_property ("span-direction", gh_int2scm (STOP));
-		l->set_spot (THIS->here_input ());
-
-		$$ = MY_MAKE_MUSIC("EventChord");
-		$$->set_mus_property ("elements", scm_cons (l->self_scm (), SCM_EOL));
-		$$->set_spot (THIS->here_input ());
-		scm_gc_unprotect_object (l->self_scm());
-	}
-	| E_BACKSLASH {
-		$$ = MY_MAKE_MUSIC("VoiceSeparator");
-		$$->set_spot (THIS->here_input ());
-	}
-	| '|'      {
-
-		$$ = MY_MAKE_MUSIC("BarCheck");
-		$$->set_spot (THIS->here_input ());
-	}
-	| BAR STRING  			{
-		Music *t = set_property_music (ly_symbol2scm ("whichBar"), $2);
-
-		Music *csm = MY_MAKE_MUSIC("ContextSpeccedMusic");
-		csm->set_mus_property ("element", t->self_scm ());
-		scm_gc_unprotect_object (t->self_scm ());
-
-		$$ = csm;
-		$$->set_spot (THIS->here_input ());
-
-		csm->set_mus_property ("context-type", ly_symbol2scm ("Timing"));
-	}
-	| PARTIAL duration_length  	{
-		Moment m = - unsmob_duration ($2)->get_length ();
-		Music * p = set_property_music (ly_symbol2scm ( "measurePosition"),m.smobbed_copy ());
-
-		Music * sp = MY_MAKE_MUSIC("ContextSpeccedMusic");
-		sp->set_mus_property ("element", p->self_scm ());
-		scm_gc_unprotect_object (p->self_scm ());
-
-		$$ =sp ;
-		sp-> set_mus_property ("context-type", ly_symbol2scm ("Timing"));
-	}
-	| CLEF STRING  {
-		static SCM proc ;
-		if (!proc)
-			proc = scm_c_eval_string ("make-clef-set");
-
-		SCM result = scm_call_1 (proc, $2);
-		scm_gc_protect_object (result);
-		$$ = unsmob_music (result);
-	}
-	| TIME_T fraction  {
-		static SCM proc;
-		if (!proc)
-			proc = scm_c_eval_string ("make-time-signature-set");
-
-		SCM result = scm_apply_2   (proc, gh_car ($2), gh_cdr ($2), SCM_EOL);
-		scm_gc_protect_object (result);
-		$$ = unsmob_music (result);
-	}
-	| MARK scalar {
-		static SCM proc;
-		if (!proc)
-			proc = scm_c_eval_string ("make-mark-set");
-
-		SCM result = scm_call_1 (proc, $2);
-		scm_gc_protect_object (result);
-		$$ = unsmob_music (result);
-	}
-	;
-
-command_req:
-	BREATHE {
-		$$ = MY_MAKE_MUSIC("BreathingSignEvent");
-	}
-	| E_TILDE {
-		$$ = MY_MAKE_MUSIC("PesOrFlexaEvent");
-	}
-	| MARK DEFAULT  {
-		Music * m = MY_MAKE_MUSIC("MarkEvent");
-		$$ = m;
-	}
-	| tempo_event {
-		$$ = $1;
-	}
-	| KEY DEFAULT {
-		Music *key= MY_MAKE_MUSIC("KeyChangeEvent");
-		$$ = key;
-	}
-	| KEY NOTENAME_PITCH SCM_IDENTIFIER 	{
-
-		Music *key= MY_MAKE_MUSIC("KeyChangeEvent");
-		if (scm_ilength ($3) > 0)
-		{		
-			key->set_mus_property ("pitch-alist", $3);
-			key->set_mus_property ("tonic", Pitch (0,0,0).smobbed_copy());
-			((Music*)key)->transpose (* unsmob_pitch ($2));
-		} else {
-			THIS->parser_error (_("Second argument must be pitch list."));
-		}
-
-		$$ = key;
-	}
-	;
-
-post_events:
-	/* empty */ {
-		$$ = SCM_EOL;
-	}
-	| post_events post_event {
-		$2->set_spot (THIS->here_input ());
-		$$ = gh_cons ($2->self_scm(), $$);
-		scm_gc_unprotect_object ($2->self_scm());
-	}
-	| post_events tagged_post_event {
-		$2 -> set_spot (THIS->here_input ());
-		$$ = scm_cons ($2->self_scm(), $$);
-		scm_gc_unprotect_object ($2->self_scm());
-	}
-	;
-
-
-tagged_post_event:
-	'-' TAG embedded_scm post_event {
-		tag_music ($4, $3, THIS->here_input ());
-		$$ = $4;
-	}
-	;
-
-post_event:
-	direction_less_event {
-		$$ = $1;
-	}
-	| HYPHEN {
-		if (!THIS->lexer_->lyric_state_b ())
-			THIS->parser_error (_ ("Have to be in Lyric mode for lyrics"));
-		$$ = MY_MAKE_MUSIC("HyphenEvent");
-	}
-	| EXTENDER {
-		if (!THIS->lexer_->lyric_state_b ())
-			THIS->parser_error (_ ("Have to be in Lyric mode for lyrics"));
-		$$ = MY_MAKE_MUSIC("ExtenderEvent");
-	}
-	| script_dir direction_reqd_event {
-		if ($1)
-			$2->set_mus_property ("direction", gh_int2scm ($1));
-		$$ = $2;
-	}
-	| script_dir direction_less_event {
-		if ($1)
-			$2->set_mus_property ("direction", gh_int2scm ($1));
-		$$ = $2;
-	}
-	| string_number_event
-	;
-
-string_number_event:
-	E_UNSIGNED {
-		Music * s = MY_MAKE_MUSIC("StringNumberEvent");
-		s->set_mus_property ("string-number",  gh_int2scm($1));
-		s->set_spot (THIS->here_input ());
-		$$ = s;
-	}
-	;
-
-
-direction_less_event:
-	'['  {
-
-
-/*
-
-TODO: should take all these defs out of the parser, adn make use
-configurable, i.e.
-
-
-(set-articulation '~ "trill")
-
-*/
-		Music * m = MY_MAKE_MUSIC ("BeamEvent");
-		m->set_spot (THIS->here_input());
-		m->set_mus_property ("span-direction" , gh_int2scm (START));
-		$$ = m;
-	}
-	| ']'  {
-		Music * m = MY_MAKE_MUSIC ("BeamEvent");
-		m->set_spot (THIS->here_input());
-		m->set_mus_property ("span-direction" , gh_int2scm (STOP));
-		$$ = m;
-	}
-	| '~' {
-		Music * m = MY_MAKE_MUSIC ("TieEvent");
-		m->set_spot (THIS->here_input());
-		$$ = m;
-	}
-	| close_event {
-		$$ = $1;
-		dynamic_cast<Music *> ($$)->set_mus_property ("span-direction",
-			gh_int2scm (START));
-	}
-	| open_event {
-		$$ = $1;
-		dynamic_cast<Music *> ($$)->set_mus_property ("span-direction",
-			gh_int2scm (STOP));
-	}
-	| EVENT_IDENTIFIER	{
-		$$ = unsmob_music ($1);
-	}
-	| tremolo_type  {
-               Music * a = MY_MAKE_MUSIC("TremoloEvent");
-               a->set_spot (THIS->here_input ());
-               a->set_mus_property ("tremolo-type", gh_int2scm ($1));
-               $$ = a;
-        }
-	;	
-	
-direction_reqd_event:
-	gen_text_def {
-		$$ = $1; 
-	}
-	| script_abbreviation {
-		SCM s = THIS->lexer_->lookup_identifier ("dash" + ly_scm2string ($1));
-		Music *a = MY_MAKE_MUSIC("ArticulationEvent");
-		if (gh_string_p (s))
-			a->set_mus_property ("articulation-type", s);
-		else THIS->parser_error (_ ("Expecting string as script definition"));
-		$$ = a;
-	}
-	;
-
-oct_check:
-	/**/ { $$ = SCM_EOL; }
-	| '='  { $$ = gh_int2scm (0); }
-	| '=' sub_quotes { $$ = gh_int2scm ($2); }
-	| '=' sup_quotes { $$ = gh_int2scm ($2); }
-	;
-
-sup_quotes:
-	'\'' {
-		$$ = 1;
-	}
-	| sup_quotes '\'' {
-		$$ ++;
-	}
-	;
-
-sub_quotes:
-	',' {
-		$$ = 1;
-	}
-	| sub_quotes ',' {
-		$$ ++ ;
-	}
-	;
-
-steno_pitch:
-	NOTENAME_PITCH	{
-		$$ = $1;
-	}
-	| NOTENAME_PITCH sup_quotes 	{
-		Pitch p = *unsmob_pitch ($1);
-		p = p.transposed (Pitch ($2,0,0));
-		$$ = p.smobbed_copy ();
-	}
-	| NOTENAME_PITCH sub_quotes	 {
-		Pitch p =* unsmob_pitch ($1);
-		p = p.transposed (Pitch (-$2,0,0));
-		$$ = p.smobbed_copy ();
-	}
-	;
-
-/*
-ugh. duplication
-*/
-
-steno_tonic_pitch:
-	TONICNAME_PITCH	{
-		$$ = $1;
-	}
-	| TONICNAME_PITCH sup_quotes 	{
-		Pitch p = *unsmob_pitch ($1);
-		p = p.transposed (Pitch ($2,0,0));
-		$$ = p.smobbed_copy ();
-	}
-	| TONICNAME_PITCH sub_quotes	 {
-		Pitch p =* unsmob_pitch ($1);
-
-		p = p.transposed (Pitch (-$2,0,0));
-		$$ = p.smobbed_copy ();
-	}
-	;
-
-pitch:
-	steno_pitch {
-		$$ = $1;
-	}
-	;
-
-pitch_also_in_chords:
-	pitch
-	| steno_tonic_pitch
-	;
-
-close_event:
-	'('	{
-		Music * s= MY_MAKE_MUSIC("SlurEvent");
-		$$ = s;
-		s->set_spot (THIS->here_input());
-	}
-	| E_OPEN	{
-		Music * s= MY_MAKE_MUSIC("PhrasingSlurEvent");
-		$$ = s;
-		s->set_spot (THIS->here_input());
-	}
-	| E_SMALLER {
-		Music *s =MY_MAKE_MUSIC("CrescendoEvent");
-		$$ = s;
-		s->set_spot (THIS->here_input());
-	}
-	| E_BIGGER {
-		Music *s =MY_MAKE_MUSIC("DecrescendoEvent");
-		$$ = s;
-		s->set_spot (THIS->here_input());
-	}
-	;
-
-
-open_event:
-	E_EXCLAMATION 	{
-		Music *s =  MY_MAKE_MUSIC("CrescendoEvent");
-		s->set_spot (THIS->here_input());
-
-		$$ = s;
-	}
-	| ')'	{
-		Music * s= MY_MAKE_MUSIC("SlurEvent");
-		$$ = s;
-		s->set_spot (THIS->here_input());
-
-	}
-	| E_CLOSE	{
-		Music * s= MY_MAKE_MUSIC("PhrasingSlurEvent");
-		$$ = s;
-		s->set_mus_property ("span-type", scm_makfrom0str ( "phrasing-slur"));
-		s->set_spot (THIS->here_input());
-	}
-	;
-
-gen_text_def:
-	full_markup {
-		Music *t = MY_MAKE_MUSIC("TextScriptEvent");
-		t->set_mus_property ("text", $1);
-		t->set_spot (THIS->here_input ());
-		$$ = t;	
-	}
-	| string {
-		Music *t = MY_MAKE_MUSIC("TextScriptEvent");
-		t->set_mus_property ("text", make_simple_markup ($1));
-		t->set_spot (THIS->here_input ());
-		$$ = t;
-	
-	}
-	| DIGIT {
-		Music * t = MY_MAKE_MUSIC("FingerEvent");
-		t->set_mus_property ("digit",  gh_int2scm ($1));
-		t->set_spot (THIS->here_input ());
-		$$ = t;
-	}
-	;
-
-script_abbreviation:
-	'^'		{
-		$$ = scm_makfrom0str ("Hat");
-	}
-	| '+'		{
-		$$ = scm_makfrom0str ("Plus");
-	}
-	| '-' 		{
-		$$ = scm_makfrom0str ("Dash");
-	}
- 	| '|'		{
-		$$ = scm_makfrom0str ("Bar");
-	}
-	| '>'		{
-		$$ = scm_makfrom0str ("Larger");
-	}
-	| '.' 		{
-		$$ = scm_makfrom0str ("Dot");
-	}
-	| '_' {
-		$$ = scm_makfrom0str ("Underscore");
-	}
-	;
-
-script_dir:
-	'_'	{ $$ = DOWN; }
-	| '^'	{ $$ = UP; }
-	| '-'	{ $$ = CENTER; }
-	;
-
-
-absolute_pitch:
-	steno_pitch	{
-		$$ = $1;
-	}
-	;
-
-duration_length:
-	multiplied_duration {
-		$$ = $1;
-	}
-	;
-
-optional_notemode_duration:
-	{
-		Duration dd = THIS->default_duration_;
-		$$ = dd.smobbed_copy ();
-
-		THIS->beam_check ($$);
-	}
-	| multiplied_duration	{
-		$$ = $1;
-		THIS->default_duration_ = *unsmob_duration ($$);
-
-		THIS->beam_check ($$);
-	}
-	;
-
-steno_duration:
-	bare_unsigned dots		{
-		int l = 0;
-		if (!is_duration_b ($1))
-			THIS->parser_error (_f ("not a duration: %d", $1));
-		else
-			l =  intlog2 ($1);
-
-		$$ = Duration (l, $2).smobbed_copy ();
-	}
-	| DURATION_IDENTIFIER dots	{
-		Duration *d =unsmob_duration ($1);
-		Duration k (d->duration_log (),d->dot_count () + $2);
-
-		*d = k;
-		$$ = $1;
-	}
-	;
-
-
-
-
-multiplied_duration:
-	steno_duration {
-		$$ = $1;
-	}
-	| multiplied_duration '*' bare_unsigned {
-		$$ = unsmob_duration ($$)->compressed ( $3) .smobbed_copy ();
-	}
-	| multiplied_duration '*' FRACTION {
-		Rational  m (gh_scm2int (ly_car ($3)), gh_scm2int (ly_cdr ($3)));
-
-		$$ = unsmob_duration ($$)->compressed (m).smobbed_copy ();
-	}
-	;
-
-fraction:
-	FRACTION { $$ = $1; }
-	| UNSIGNED '/' UNSIGNED {
-		$$ = scm_cons (gh_int2scm ($1), gh_int2scm ($3));
-	}
-	;
-
-dots:
-	/* empty */ 	{
-		$$ = 0;
-	}
-	| dots '.' {
-		$$ ++;
-	}
-	;
-
-
-tremolo_type: 
-	':'	{
-		$$ =0;
-	}
-	| ':' bare_unsigned {
-		if (!is_duration_b ($2))
-			THIS->parser_error (_f ("not a duration: %d", $2));
-		$$ = $2;
-	}
-	;
-
-
-
-/*****************************************************************
-		BASS FIGURES
-*****************************************************************/
-bass_number:
-	DIGIT   {
-		$$ = scm_number_to_string (gh_int2scm ($1), gh_int2scm (10));
-	}
-	| UNSIGNED {
-		$$ = scm_number_to_string (gh_int2scm ($1), gh_int2scm (10));
-	}
-	| STRING { $$ =  $1; }
-	;
-
-bass_mod:
-	'-' 	{ $$ = -2; }
-	| '+'	{ $$ = 2; } 
-	| '!'	{ $$ = 0; }
-	;
-
-bass_figure:
-	FIGURE_SPACE {
-		Music *bfr = MY_MAKE_MUSIC("BassFigureEvent");
-		$$ = bfr->self_scm();
-		scm_gc_unprotect_object ($$);
-	}
-	| bass_number  {
-		Music *bfr = MY_MAKE_MUSIC("BassFigureEvent");
-		$$ = bfr->self_scm();
-
-		bfr->set_mus_property ("figure", $1);
-
-		scm_gc_unprotect_object ($$);
-	}
-	| bass_figure bass_mod {
-		Music *m = unsmob_music ($1);
-		if ($2) {
-			SCM salter =m->get_mus_property ("alteration");
-			int alter = gh_number_p ( salter) ? gh_scm2int (salter) : 0;
-			m->set_mus_property ("alteration",
-				gh_int2scm (alter + $2));
-		} else {
-			m->set_mus_property ("alteration", gh_int2scm (0));
-		}
-	}
-	;
-
-br_bass_figure:
-	'[' bass_figure {
-		$$ = $2;
-		unsmob_music ($$)->set_mus_property ("bracket-start", SCM_BOOL_T);
-	}
-	| bass_figure	{
-		$$ = $1;
-	}
-	| br_bass_figure ']' {
-		$$ = $1;
-		unsmob_music ($1)->set_mus_property ("bracket-stop", SCM_BOOL_T);
-	}
-	;
-
-figure_list:
-	/**/		{
-		$$ = SCM_EOL;
-	}
-	| figure_list br_bass_figure {
-		$$ = scm_cons ($2, $1); 
-	}
-	;
-
-figure_spec:
-	FIGURE_OPEN figure_list FIGURE_CLOSE {
-		Music * m = MY_MAKE_MUSIC("EventChord");
-		$2 = scm_reverse_x ($2, SCM_EOL);
-		m->set_mus_property ("elements",  $2);
-		$$ = m->self_scm ();
-	}
-	;
-
-
-optional_rest:
-	/**/   { $$ = 0; }
-	| REST { $$ = 1; }
-	;
-
-simple_element:
-	pitch exclamations questions oct_check optional_notemode_duration optional_rest {
-
-		Input i = THIS->pop_spot ();
-		if (!THIS->lexer_->note_state_b ())
-			THIS->parser_error (_ ("Have to be in Note mode for notes"));
-
-		Music *n = 0;
-		if ($6)
-			n =  MY_MAKE_MUSIC("RestEvent");
-		else
-			n =  MY_MAKE_MUSIC("NoteEvent");
-		
-		n->set_mus_property ("pitch", $1);
-		n->set_mus_property ("duration", $5);
-
-		if (gh_number_p ($4))
-		{
-			int q = gh_scm2int ($4); 
-			n->set_mus_property ("absolute-octave", gh_int2scm (q-1));
-		}
-
-		if ($3 % 2)
-			n->set_mus_property ("cautionary", SCM_BOOL_T);
-		if ($2 % 2 || $3 % 2)
-			n->set_mus_property ("force-accidental", SCM_BOOL_T);
-
-		Music *v = MY_MAKE_MUSIC("EventChord");
-		v->set_mus_property ("elements", scm_list_n (n->self_scm (), SCM_UNDEFINED));
-		scm_gc_unprotect_object (n->self_scm());
-
-		v->set_spot (i);
-		n->set_spot (i);
-		$$ = v;
-	}
-	| DRUM_PITCH optional_notemode_duration {
-		Input i = THIS->pop_spot ();
-
-		Music *n =  MY_MAKE_MUSIC("NoteEvent");
-		n->set_mus_property ("duration" ,$2);
-		n->set_mus_property ("drum-type" , $1);
-
-		Music *v = MY_MAKE_MUSIC("EventChord");
-		v->set_mus_property ("elements", scm_list_n (n->self_scm (), SCM_UNDEFINED));
-		scm_gc_unprotect_object (n->self_scm());
-		v->set_spot (i);
-		n->set_spot (i);
-		$$ = v;
-		
-	}
-	| figure_spec optional_notemode_duration {
-		Music * m = unsmob_music ($1);
-		Input i = THIS->pop_spot (); 
-		m->set_spot (i);
-		for (SCM s = m->get_mus_property ("elements"); gh_pair_p (s); s = ly_cdr (s))
-		{
-			unsmob_music (ly_car (s))->set_mus_property ("duration", $2);
-		}
-		$$ = m;
-	}	
- 	| RESTNAME optional_notemode_duration		{
-
-		Input i = THIS->pop_spot ();
-		Music * ev = 0;
- 		if (ly_scm2string ($1) =="s") {
-			/* Space */
-			ev = MY_MAKE_MUSIC("SkipEvent");
-		  }
-		else {
-			ev = MY_MAKE_MUSIC("RestEvent");
-		
-		    }
-		ev->set_mus_property ("duration" ,$2);
-		ev->set_spot (i);
- 		Music * velt = MY_MAKE_MUSIC("EventChord");
-		velt->set_mus_property ("elements", scm_list_n (ev->self_scm (),SCM_UNDEFINED));
-		velt->set_spot (i);
-
-		scm_gc_unprotect_object (ev->self_scm());
-
- 		$$ = velt;
-	}
-	| MULTI_MEASURE_REST optional_notemode_duration  	{
-		THIS->pop_spot ();
-
-		static SCM proc ;
-		if (!proc)
-			proc = scm_c_eval_string ("make-multi-measure-rest");
-
-		SCM mus = scm_call_2 (proc, $2,
-			make_input (THIS->here_input()));	
-		scm_gc_protect_object (mus);
-		$$ = unsmob_music (mus);
-	}
-	
-	| lyric_element optional_notemode_duration 	{
-		Input i = THIS->pop_spot ();
-		if (!THIS->lexer_->lyric_state_b ())
-			THIS->parser_error (_ ("Have to be in Lyric mode for lyrics"));
-
-		Music * lreq = MY_MAKE_MUSIC("LyricEvent");
-                lreq->set_mus_property ("text", $1);
-		lreq->set_mus_property ("duration",$2);
-		lreq->set_spot (i);
-		Music * velt = MY_MAKE_MUSIC("EventChord");
-		velt->set_mus_property ("elements", scm_list_n (lreq->self_scm (), SCM_UNDEFINED));
-
-		$$= velt;
-	}
-	| new_chord {
-		THIS->pop_spot ();
-
-                if (!THIS->lexer_->chord_state_b ())
-                        THIS->parser_error (_ ("Have to be in Chord mode for chords"));
-                $$ = unsmob_music ($1);
-	}
-	;
-
-lyric_element:
-	full_markup { $$ = $1; }
-	| STRING {  $$ = $1 ; }
-	;
-
-new_chord:
-	steno_tonic_pitch optional_notemode_duration   {
-		$$ = make_chord ($1, $2, SCM_EOL);
-	}
-	| steno_tonic_pitch optional_notemode_duration chord_separator chord_items {
-		SCM its = scm_reverse_x ($4, SCM_EOL);
-		$$ = make_chord ($1, $2, gh_cons ($3, its));
-	}
-	;
-
-chord_items:
-	/**/ {
-		$$ = SCM_EOL;		
-	}
-	| chord_items chord_item {
-		$$ = gh_cons ($2, $$);
-	}
-	;
-
-chord_separator:
-	CHORD_COLON {
-		$$ = ly_symbol2scm ("chord-colon");
-	}
-	| CHORD_CARET {
-		$$ = ly_symbol2scm ("chord-caret"); 
-	}
-	| CHORD_SLASH steno_tonic_pitch {
- 		$$ = scm_list_n (ly_symbol2scm ("chord-slash"), $2, SCM_UNDEFINED); 
-	}
-	| CHORD_BASS steno_tonic_pitch {
-		$$ = scm_list_n (ly_symbol2scm ("chord-bass"), $2, SCM_UNDEFINED); 
-	}
-	;
-
-chord_item:
-	chord_separator {
-		$$ = $1;
-	}
-	| step_numbers {
-		$$ = scm_reverse_x ($1, SCM_EOL);
-	}
-	| CHORD_MODIFIER  {
-		$$ = $1;
-	}
-	;
-
-step_numbers:
-	step_number { $$ = gh_cons ($1, SCM_EOL); } 
-	| step_numbers '.' step_number {
-		$$ = gh_cons ($3, $$);
-	}
-	;
-
-step_number:
-	bare_unsigned {
-		$$ = make_chord_step ($1, 0);
-        } 
-	| bare_unsigned '+' {
-		$$ = make_chord_step ($1, SHARP);
-	}
-	| bare_unsigned CHORD_MINUS {
-		$$ = make_chord_step ($1, FLAT);
-	}
-        ;	
-
-/*
-	UTILITIES
-
-TODO: should deprecate in favor of Scheme?
-
- */
-number_expression:
-	number_expression '+' number_term {
-		$$ = scm_sum ($1, $3);
-	}
-	| number_expression '-' number_term {
-		$$ = scm_difference ($1, $3);
-	}
-	| number_term 
-	;
-
-number_term:
-	number_factor {
-		$$ = $1;
-	}
-	| number_factor '*' number_factor {
-		$$ = scm_product ($1, $3);
-	}
-	| number_factor '/' number_factor {
-		$$ = scm_divide ($1, $3);
-	}
-	;
-
-number_factor:
-	'-'  number_factor { /* %prec UNARY_MINUS */
-		$$ = scm_difference ($2, SCM_UNDEFINED);
-	}
-	| bare_number
-	;
-
-
-bare_number:
-	UNSIGNED	{
-		$$ = gh_int2scm ($1);
-	}
-	| REAL		{
-		$$ = $1;
-	}
-	| NUMBER_IDENTIFIER		{
-		$$ = $1;
-	}
-	| REAL NUMBER_IDENTIFIER	{
-		$$ = gh_double2scm (gh_scm2double ($1) * gh_scm2double ($2));
-	}
-	| UNSIGNED NUMBER_IDENTIFIER	{
-		$$ = gh_double2scm ($1 * gh_scm2double ($2));
-	}
-	;
-
-
-bare_unsigned:
-	UNSIGNED {
-			$$ = $1;
-	}
-	| DIGIT {
-		$$ = $1;
-	}
-	;
-
-bare_int:
-	bare_number {
-		if (scm_integer_p ($1) == SCM_BOOL_T)
-		{
-			int k = gh_scm2int ($1);
-			$$ = k;
-		} else
-		{
-			THIS->parser_error (_ ("need integer number arg"));
-			$$ = 0;
-		}
-	}
-	| '-' bare_int {
-		$$ = -$2;
-	}
-	;
-
-
-string:
-	STRING		{
-		$$ = $1;
-	}
-	| STRING_IDENTIFIER	{
-		$$ = $1;
-	}
-	| string '+' string {
-		$$ = scm_string_append (scm_list_n ($1, $3, SCM_UNDEFINED));
-	}
-	;
-
-
-exclamations:
-		{ $$ = 0; }
-	| exclamations '!'	{ $$ ++; }
-	;
-
-questions:
-		{ $$ = 0; }
-	| questions '?'	{ $$ ++; }
-	;
-
-
-
-full_markup:
-	MARKUP_IDENTIFIER {
-		$$ = $1;
- 	}
-	| MARKUP 
-		{ THIS->lexer_->push_markup_state (); }
-	markup
-		{ $$ = $3;
-		  THIS->lexer_->pop_state ();
-		}
-	;
-
-
-/*
-This should be done more dynamically if possible.
-*/ 
-markup:
-	STRING {
-		$$ = make_simple_markup ($1);
-	}
-	| MARKUP_HEAD_EMPTY {
-		$$ = scm_list_n ($1, SCM_UNDEFINED);
-	}
-	| MARKUP_HEAD_MARKUP0 markup {
-		$$ = scm_list_n ($1, $2, SCM_UNDEFINED);
-	}
-	| MARKUP_HEAD_MARKUP0_MARKUP1 markup markup {
-		$$ = scm_list_n ($1, $2, $3, SCM_UNDEFINED);
-	}
-	| MARKUP_HEAD_SCM0_MARKUP1 SCM_T markup {
-		$$  = scm_list_n ($1, $2, $3, SCM_UNDEFINED); 
-	}
-	| markup_line {
-		$$ = $1;
-	}
-	| MARKUP_HEAD_LIST0 markup_list {
-		$$ = scm_list_n ($1,$2, SCM_UNDEFINED);
-	}
-	| MARKUP_HEAD_SCM0 embedded_scm {
-		$$ = scm_list_n ($1, $2, SCM_UNDEFINED);
-	}
-	| MARKUP_HEAD_SCM0_SCM1_MARKUP2 embedded_scm embedded_scm markup {
-		$$ = scm_list_n ($1, $2, $3, $4, SCM_UNDEFINED);
-	}
-	| MARKUP_HEAD_SCM0_SCM1_SCM2 embedded_scm embedded_scm embedded_scm {
-		$$ = scm_list_n ($1, $2, $3, $4, SCM_UNDEFINED);
-	}
-	| MARKUP_HEAD_SCM0_SCM1 embedded_scm embedded_scm {
-		$$ = scm_list_n ($1, $2, $3, SCM_UNDEFINED);
-	}
-	| MARKUP_IDENTIFIER {
-		$$ = $1;
-	}
-	
-	;
-
-markup_list:
-	chord_open markup_list_body chord_close { $$ = scm_reverse_x ($2, SCM_EOL); }
-	;
-
-markup_line:
-	'{' markup_list_body '}' {
-		static SCM line ;
-		if (!line)
-			line = scm_c_eval_string ("line-markup");
-	
-		$$ = scm_list_n (line, scm_reverse_x ($2, SCM_EOL), SCM_UNDEFINED);
-	}
-	;
-
-markup_list_body:
-	/**/ {  $$ = SCM_EOL; }
-	| markup_list_body markup {
-		$$ = gh_cons ($2, $1) ;
-	}
-	;
-
-
-%%
-
-void
-My_lily_parser::set_yydebug (bool )
-{
-#if 0
-	yydebug = 1;
-#endif
-}
-
-extern My_lily_parser * current_parser;
-
-void
-My_lily_parser::do_yyparse ()
-{
-	current_parser = this;;
-	yyparse ((void*)this);
-}
-
-
-/*
-Should make this optional?    It will also complain when you do
-
-	[s4]
-
-which is entirely legitimate.
-
-Or we can scrap it. Barchecks should detect wrong durations, and
-skipTypesetting speeds it up a lot.
-*/
-
-void
-My_lily_parser::beam_check (SCM dur)
-{
-  Duration *d = unsmob_duration (dur);
-  if (unsmob_music (last_beam_start_) && d->duration_log () <= 2)
-    {
-      Music * m = unsmob_music (last_beam_start_);
-      m->origin ()->warning (_("Suspect duration found following this beam"));
-    }
-  last_beam_start_ = SCM_EOL;
-}
-
-
-
-
-/*
-
-It is a little strange to have this function in this file, but
-otherwise, we have to import music classes into the lexer.
-
-*/
-int
-My_lily_lexer::try_special_identifiers (SCM * destination, SCM sid)
-{
-	if (gh_string_p (sid)) {
-		*destination = sid;
-		return STRING_IDENTIFIER;
-	} else if (gh_number_p (sid)) {
-		*destination = sid;
-		return NUMBER_IDENTIFIER;
-	} else if (unsmob_context_def (sid)) {
-		*destination = unsmob_context_def (sid)->clone_scm();
-		return TRANSLATOR_IDENTIFIER;
-	} else if (unsmob_score (sid)) {
-		Score *sc =  new Score (*unsmob_score (sid));
-		*destination =sc->self_scm ();
-		return SCORE_IDENTIFIER;
-	} else if (Music * mus =unsmob_music (sid)) {
-		*destination = unsmob_music (sid)->clone ()->self_scm();
-		unsmob_music (*destination)->
-			set_mus_property ("origin", make_input (last_input_));
-		return dynamic_cast<Event*> (mus)
-			? EVENT_IDENTIFIER : MUSIC_IDENTIFIER;
-	} else if (unsmob_duration (sid)) {
-		*destination = unsmob_duration (sid)->smobbed_copy();
-		return DURATION_IDENTIFIER;
-	} else if (unsmob_music_output_def (sid)) {
-		Music_output_def *p = unsmob_music_output_def (sid);
-		p = p->clone ();
-
-		*destination = p->self_scm();
-		return MUSIC_OUTPUT_DEF_IDENTIFIER;
-	} else if (Text_item::markup_p (sid)) {
-		*destination = sid;
-		return MARKUP_IDENTIFIER;
-	}
-
-	return -1;	
-}
-
-Music *
-property_op_to_music (SCM op)
-{
-	Music * m = 0;
-	SCM tag = gh_car (op);
-	SCM symbol  = gh_cadr (op);
-	SCM args = gh_cddr (op);
-	SCM grob_val = SCM_UNDEFINED;
-	SCM grob_sym = SCM_UNDEFINED;
-	SCM val = SCM_UNDEFINED;
-	
-	if (tag == ly_symbol2scm ("assign"))
-		{
-		m =  MY_MAKE_MUSIC("PropertySet");
-		val = gh_car (args);
-		}
-	else if (tag == ly_symbol2scm ("unset"))
-		m =  MY_MAKE_MUSIC("PropertyUnset");
-	else if (tag == ly_symbol2scm ("poppush")
-		 || tag == ly_symbol2scm ("push"))
-		{
-		m  = MY_MAKE_MUSIC("OverrideProperty");
-		grob_sym = gh_car (args);
-		grob_val = gh_cadr (args);
-		}
-	else if (tag == ly_symbol2scm ("pop")) {
-		m = MY_MAKE_MUSIC("RevertProperty");
-		grob_sym = gh_car (args);
-		}
-
-	m->set_mus_property ("symbol", symbol);
-
-	if (val != SCM_UNDEFINED)
-		m->set_mus_property ("value", val);
-	if (grob_val != SCM_UNDEFINED)
-		m->set_mus_property ("grob-value", grob_val);
-
-	if (grob_sym != SCM_UNDEFINED)
-		{
-		bool itc = internal_type_checking_global_b;
-		/* UGH.
-		*/
-		bool autobeam = gh_equal_p (symbol, ly_symbol2scm ("autoBeamSettings"));
-		if (autobeam)
-			internal_type_checking_global_b = false;
-		m->set_mus_property ("grob-property", grob_sym);
-		if (autobeam)
-			internal_type_checking_global_b = itc;
-		}
-
-	if (op == ly_symbol2scm ("poppush"))
-		m->set_mus_property ("pop-first", SCM_BOOL_T); 
-
-
-	return m;
-}
-
-Music*
-context_spec_music (SCM type, SCM id, Music * m, SCM ops)
-{
-	Music * csm = MY_MAKE_MUSIC("ContextSpeccedMusic");
-
-	csm->set_mus_property ("element", m->self_scm ());
-	scm_gc_unprotect_object (m->self_scm ());
-
-	csm->set_mus_property ("context-type", scm_string_to_symbol (type));
-	csm->set_mus_property ("property-operations", ops);
-
-	if (gh_string_p (id))
-		csm->set_mus_property ("context-id", id);
-	return csm;
-}
-
-
-SCM
-get_next_unique_context ()
-{
-	static int new_context_count;
-
-	char s[1024];
-	snprintf (s, 1024, "uniqueContext%d", new_context_count ++);
-		
-	return scm_makfrom0str (s);
-}
-
diff --git a/lily/part-combine-engraver.cc b/lily/part-combine-engraver.cc
deleted file mode 100644
index c5216f5544..0000000000
--- a/lily/part-combine-engraver.cc
+++ /dev/null
@@ -1,110 +0,0 @@
-/*
-  part-combine-engraver.cc -- implement PC-engraver
-
-  source file of the GNU LilyPond music typesetter
-  
-  (c) 2000--2004 Jan Nieuwenhuizen <janneke@gnu.org>
-
-  Han-Wen Nienhuys <hanwen@xs4all.nl>
-  
-*/
-
-#include "engraver.hh"
-#include "item.hh"
-#include "text-item.hh"
-#include "note-head.hh"
-#include "stem.hh"
-#include "side-position-interface.hh"
-#include "multi-measure-rest.hh"
-
-class Part_combine_engraver : public Engraver
-{
-  TRANSLATOR_DECLARATIONS(Part_combine_engraver);
-
-protected:
-  virtual void acknowledge_grob (Grob_info);
-  virtual void process_music ();
-  virtual void stop_translation_timestep ();
-  virtual bool try_music (Music *);
-private:
-  Item *text_;
-  Music *event_;
-};
-
-bool
-Part_combine_engraver::try_music (Music*m)
-{
-  event_ = m;
-  return true;
-}
-
-Part_combine_engraver::Part_combine_engraver ()
-{
-  text_ = 0;
-  event_  =0;
-}
-
-void
-Part_combine_engraver::process_music ()
-{
-  if (event_
-      && to_boolean (get_property ("soloADue")))
-    {
-      SCM what = event_->get_mus_property ("part-combine-status");
-      SCM text = SCM_EOL;
-      if (what == ly_symbol2scm ("solo1"))
-	text = get_property ("soloText");
-      else if (what== ly_symbol2scm ("solo2"))
-	text = get_property ("soloIIText");
-      else if (what == ly_symbol2scm ("unisono"))
-	text = get_property ("aDueText");
-
-      if (Text_item::markup_p (text))
-	{
-	  text_ =  make_item ("CombineTextScript");
-	  text_->set_grob_property ("text", text);
-	  announce_grob (text_, event_->self_scm ());
-	}
-    }
-}
-
-void
-Part_combine_engraver::acknowledge_grob (Grob_info i)
-{
-  if (text_)
-    {
-      if (Note_head::has_interface (i.grob_))
-	{
-	  Grob*t = text_;
-	  Side_position_interface::add_support (t, i.grob_);
-	  if (Side_position_interface::get_axis (t) == X_AXIS
-	      && !t->get_parent (Y_AXIS))
-	    t->set_parent (i.grob_, Y_AXIS);
-	}
-      if (Stem::has_interface (i.grob_))
-	{
-	  Side_position_interface::add_support (text_, i.grob_);
-	}
-    }
-}
-
-void 
-Part_combine_engraver::stop_translation_timestep ()
-{
-  if (text_)
-    {
-      typeset_grob (text_);
-      text_ = 0;
-    }
-  event_ = 0;
-}
-
-ENTER_DESCRIPTION(Part_combine_engraver,
-/* descr */       "Part combine engraver for orchestral scores:		"
-		  "Print markings a2, Solo, Solo II, and unisono ",
-/* creats*/       "CombineTextScript",
-/* accepts */     "part-combine-event",
-/* acks  */       "multi-measure-rest-interface "
-"slur-interface stem-interface note-head-interface"
-,/* reads */       "soloADue",
-/* write */       "");
diff --git a/lily/percent-repeat-engraver.cc b/lily/percent-repeat-engraver.cc
deleted file mode 100644
index 09009b0baf..0000000000
--- a/lily/percent-repeat-engraver.cc
+++ /dev/null
@@ -1,221 +0,0 @@
-/*   
-  new-chord-tremolo-engraver.cc --  implement Chord_tremolo_engraver
-  
-  source file of the GNU LilyPond music typesetter
-  
-  (c) 2000--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-  
- */
-
-#include "engraver.hh"
-#include "repeated-music.hh"
-#include "engraver-group-engraver.hh"
-#include "global-translator.hh"
-#include "warn.hh"
-#include "misc.hh"
-#include "spanner.hh"
-#include "item.hh"
-#include "percent-repeat-iterator.hh"
-#include "bar-line.hh"
-
-#include "score-engraver.hh"
-#include "translator-group.hh"
-
-/**
-  This acknowledges repeated music with "percent" style.  It typesets
-  a % sign.  
-
-  TODO:
-
-  - BEAT case: Create items for single beat repeats, i.e. c4 / / /
-
-  - DOUBLE_MEASURE case: attach a % to an appropriate barline.
-  
-*/
-class Percent_repeat_engraver : public Engraver
-{
-  void typeset_perc ();
-public:
-  TRANSLATOR_DECLARATIONS(Percent_repeat_engraver);
-protected:
-  Repeated_music * repeat_;
-
-  /// moment (global time) where beam started.
-  Moment start_mom_;
-  Moment stop_mom_;
-
-  /// location  within measure where beam started.
-  Moment beam_start_location_;
-  Moment next_moment_;
-  Moment body_length_;
-
-  enum {
-    UNKNOWN,
-    MEASURE,
-    DOUBLE_MEASURE,
-  } repeat_sign_type_ ;
-
-  Item * double_percent_;
-  Spanner * perc_;
-  Spanner * finished_perc_;
-protected:
-  virtual void finalize ();
-  virtual bool try_music (Music*);
-  virtual void stop_translation_timestep ();
-  virtual void start_translation_timestep ();
-  virtual void process_music ();
-};
-
-Percent_repeat_engraver::Percent_repeat_engraver ()
-{
-  perc_  = 0;
-  finished_perc_ = 0;
-  repeat_ =0;
-
-  double_percent_ = 0;
-}
-
-bool
-Percent_repeat_engraver::try_music (Music * m)
-{
-  Repeated_music * rp = dynamic_cast<Repeated_music*> (m);
-  if (rp
-      && rp->get_mus_property ("iterator-ctor")
-         == Percent_repeat_iterator::constructor_proc
-      && !repeat_)
-    {
-      body_length_ = rp->body_get_length ();
-      int count =   rp->repeat_count ();
-      
-      Moment now = now_mom ();
-      start_mom_ = now;
-      stop_mom_ = start_mom_ + Moment (count) * body_length_;
-      next_moment_ = start_mom_ + body_length_;
-
-      SCM m = get_property ("measureLength");
-      Moment meas_len;
-      if (unsmob_moment (m))
-	meas_len = *unsmob_moment (m);
-
-      if (meas_len == body_length_)
-	repeat_sign_type_ = MEASURE;
-      else if (Moment (2)* meas_len == body_length_)
-	{
-	  repeat_sign_type_ = DOUBLE_MEASURE;
-	  next_moment_ += meas_len ;
-	}
-      else
-	{
-	  warning (_ ("Don't know how to handle a percent repeat of this length."));
-	  return false;
-	}
-
-      repeat_ = rp;
-
-      
-      Global_translator *global =top_engraver();
-      for (int i = 0; i < count; i++)  
-	global->add_moment_to_process (next_moment_ + Moment (i) * body_length_);
-  
-      return true;
-    }
-
-  return false;
-}
-
-void
-Percent_repeat_engraver::process_music ()
-{
-  if (repeat_ && now_mom () == next_moment_)
-    {
-      if (repeat_sign_type_ == MEASURE)
-	{
-	  finished_perc_ = perc_;
-	  typeset_perc ();
-	  perc_ = make_spanner ("PercentRepeat");
-	  SCM col =get_property ("currentCommandColumn");
-	  perc_->set_bound (LEFT, unsmob_grob (col));
-	  announce_grob(perc_, repeat_->self_scm());
-	}
-      else if (repeat_sign_type_ == DOUBLE_MEASURE)
-	{
-	  double_percent_ = make_item ("DoublePercentRepeat");
-	  announce_grob(double_percent_, repeat_->self_scm());
-
-      /*
-	forbid breaks on a % line. Should forbid all breaks, really.
-       */
-
-	    top_engraver()->forbid_breaks ();	// guh. Use properties!      
-	}
-      next_moment_ = next_moment_ + body_length_;
-
-      top_engraver()->add_moment_to_process (next_moment_);
-    }
-}
-
-void
-Percent_repeat_engraver::finalize ()
-{
-  typeset_perc ();
-  if (perc_)
-    {
-      repeat_->origin ()->warning (_ ("unterminated percent repeat"));
-      perc_->suicide ();
-    }
-}
-
-void
-Percent_repeat_engraver::typeset_perc ()
-{
-  if (finished_perc_)
-    {
-      SCM col =get_property ("currentCommandColumn");
-      finished_perc_->set_bound (RIGHT, unsmob_grob (col));
-      typeset_grob (finished_perc_);
-      finished_perc_ = 0;
-    }
-
-  if (double_percent_)
-    {
-      typeset_grob (double_percent_);
-      double_percent_ = 0;
-    }
-}
-
-
-
-
-void
-Percent_repeat_engraver::start_translation_timestep ()
-{
-  if (stop_mom_ == now_mom ())
-    {
-      if (perc_)
-	{
-	  finished_perc_ = perc_;
-	  typeset_perc ();
-	}
-      repeat_ = 0;
-      perc_ = 0;
-      repeat_sign_type_ = UNKNOWN;
-    }
-}
-
-
-void
-Percent_repeat_engraver::stop_translation_timestep ()
-{
-  typeset_perc ();
-}
-
-
-
-
-ENTER_DESCRIPTION(Percent_repeat_engraver,
-/* descr */       "Make whole bar and double bar repeats.",
-/* creats*/       "PercentRepeat DoublePercentRepeat",
-/* accepts */     "repeated-music",
-/* acks  */      "",
-/* reads */       "measureLength currentCommandColumn",
-/* write */       "");
diff --git a/lily/percent-repeat-item.cc b/lily/percent-repeat-item.cc
deleted file mode 100644
index 5688ce5fa5..0000000000
--- a/lily/percent-repeat-item.cc
+++ /dev/null
@@ -1,85 +0,0 @@
-/*   
-  percent-repeat-item.cc --  implement Percent_repeat_item_interface
-  
-  source file of the GNU LilyPond music typesetter
-  
-  (c) 2001--2004  Han-Wen Nienhuys <hanwen@cs.uu.nl>
-  
- */
-#include <math.h>
-
-#include "grob.hh"
-#include "lookup.hh"
-#include "molecule.hh"
-#include "font-interface.hh"
-#include "font-metric.hh" 
-#include "percent-repeat-item.hh"
-
-
-Molecule
-Percent_repeat_item_interface::brew_slash ( Grob *me)
-{
-  Real slope = robust_scm2double (me->get_grob_property ("slope"), 1);
-  Real wid = 2.0 / slope;
-
-  /*
-    todo: check out if in staff-rule thickness normally.
-   */
-  Real thick = robust_scm2double (me->get_grob_property ("thickness"), 1);
-  Molecule m = Lookup::repeat_slash (wid, slope, thick);
-  m.translate_axis (-m.extent (Y_AXIS).center (), Y_AXIS);
-  return m;
-}
-
-/*
-  todo: use grob props for dot_neg_kern, slash_neg_kern?
- */
-Molecule
-Percent_repeat_item_interface::x_percent (Grob *me, int count,
-					  Real dot_neg_kern,
-					  Real slash_neg_kern)
-{
-  Molecule m ;
-  Molecule s = brew_slash (me);
-
-  for (int i  = count; i--;)
-    {
-      m.add_at_edge (X_AXIS, RIGHT, s, -slash_neg_kern,0);
-    }
-  Molecule d1 = Font_interface::get_default_font (me)->find_by_name ("dots-dot");
-  Molecule d2  =  d1;
-  d1.translate_axis (0.5, Y_AXIS );
-  d2.translate_axis (-0.5, Y_AXIS);
-  
-  m.add_at_edge (X_AXIS, LEFT, d1, -dot_neg_kern,0);
-  m.add_at_edge (X_AXIS, RIGHT, d2, -dot_neg_kern,0);
-
-  return m;
-}
-
-MAKE_SCHEME_CALLBACK(Percent_repeat_item_interface,double_percent,1);
-SCM
-Percent_repeat_item_interface::double_percent (SCM grob)
-{
-  Grob *me = unsmob_grob (grob);
-  Molecule m = x_percent (me, 2, 0.75, 1.6);
-  m.translate_axis (- m.extent (X_AXIS).center (), X_AXIS);
-  return m.smobbed_copy ();
-}
-
-MAKE_SCHEME_CALLBACK(Percent_repeat_item_interface,beat_slash,1);
-SCM
-Percent_repeat_item_interface::beat_slash (SCM grob)
-{
-  Grob *me = unsmob_grob (grob);
-  Molecule m = brew_slash (me);
-
-  return m.smobbed_copy ();
-}
-
-ADD_INTERFACE (Percent_repeat_item_interface,"percent-repeat-interface",
-  "Repeats that look like percent signs",
-  "slope thickness");
-
-
-
diff --git a/lily/percent-repeat-iterator.cc b/lily/percent-repeat-iterator.cc
deleted file mode 100644
index e2358a03e4..0000000000
--- a/lily/percent-repeat-iterator.cc
+++ /dev/null
@@ -1,93 +0,0 @@
-/*   
-  percent-repeat-iterator.cc --  implement Percent_repeat_iterator
-  
-  source file of the GNU LilyPond music typesetter
-  
-  (c) 2001--2004  Han-Wen Nienhuys <hanwen@cs.uu.nl>
-  
- */
-
-#include "percent-repeat-iterator.hh"
-#include "repeated-music.hh"
-#include "input.hh"
-
-IMPLEMENT_CTOR_CALLBACK (Percent_repeat_iterator);
-
-
-Percent_repeat_iterator::Percent_repeat_iterator ()
-{
-  child_iter_ = 0;
-}
-
-void
-Percent_repeat_iterator::do_quit()
-{
-  if (child_iter_)
-    child_iter_->quit();
-}
-
-bool
-Percent_repeat_iterator::ok () const
-{
-  return child_iter_;
-}
-
-void
-Percent_repeat_iterator::construct_children ()
-{
-  Repeated_music * mus =dynamic_cast<Repeated_music *> (get_music ());
-  finish_mom_ = mus->get_length ();
-  child_iter_ = unsmob_iterator (get_iterator (mus->body ()));
-}
-
-
-void
-Percent_repeat_iterator::process (Moment m)
-{
-  if (!m.to_bool ())
-    {
-      Music_iterator *yeah = try_music (get_music ());
-      if (yeah)
-	set_translator (yeah->get_outlet ());
-      else
-	get_music ()->origin ()->warning ( _ ("no one to print a percent"));
-    }
-  
-  if (child_iter_->ok ())
-    child_iter_->process (m);
-
-  if (finish_mom_ <= m )
-    {
-      child_iter_->quit(); 
-      child_iter_ = 0;
-    }
-}
-
-Moment
-Percent_repeat_iterator::pending_moment ()const
-{
-  if (child_iter_->ok ())
-    return child_iter_->pending_moment ();
-  else
-    return finish_mom_ ;
-}
-
-Music_iterator*
-Percent_repeat_iterator::try_music_in_children (Music *m) const
-{
-  return child_iter_->try_music (m);
-}
-
-void
-Percent_repeat_iterator::derived_mark()const
-{
-  if (child_iter_)
-    scm_gc_mark (child_iter_->self_scm());
-}
-
-void
-Percent_repeat_iterator::derived_substitute(Translator_group*f,Translator_group*t )
-{
-  if (child_iter_)
-    child_iter_->substitute_outlet (f,t);
-}
diff --git a/lily/performance.cc b/lily/performance.cc
deleted file mode 100644
index 5ce6da278f..0000000000
--- a/lily/performance.cc
+++ /dev/null
@@ -1,168 +0,0 @@
-/*
-  performance.cc -- implement Performance
-
-  source file of the GNU LilyPond music typesetter
-
-  (c) 1997--2004 Jan Nieuwenhuizen <janneke@gnu.org>
-*/
-
-#include <time.h>
-#include "warn.hh"
-#include "string.hh"
-#include "string-convert.hh"
-#include "main.hh"
-#include "midi-def.hh"
-#include "midi-item.hh"
-#include "midi-stream.hh"
-#include "audio-column.hh"
-#include "audio-item.hh"
-#include "audio-staff.hh"
-#include "performance.hh"
-#include "score.hh"
-#include "input-file-results.hh"
-#include "file-path.hh"
-#include "lily-version.hh"
-
-#include "killing-cons.tcc"
-
-Performance::Performance ()
-{
-  midi_ =0;
-  audio_elem_p_list_ = 0;
-}
-
-
-Performance::~Performance ()
-{
-  delete audio_elem_p_list_;
-}
-
-void
-Performance::output (Midi_stream& midi_stream)
-{
-  int tracks_i = audio_staffs_.size () + 1;
-
-  // ugh
-  int clocks_per_4_i = 384;
-
-  midi_stream << Midi_header (1, tracks_i, clocks_per_4_i);
-  output_header_track (midi_stream);
-  progress_indication ("\n");
-  progress_indication (_ ("Track ... "));
-  int channel = 0;
-  for (int i =0; i < audio_staffs_.size (); i++)
-    {
-      Audio_staff *s = audio_staffs_[i];
-      if (verbose_global_b)
-	progress_indication ("[" + to_string (i)) ;
-
-      /*
-	MIDI players tend to ignore instrument settings on
-	channel 10, the percussion channel by default.
-       */
-      if (channel == 9)
-	 channel++;
-      if (s->channel_ < 0)
-	 s->channel_ = channel;
-      s->output (midi_stream, channel++);
-      if (verbose_global_b)
-	progress_indication ("]");
-    }
-}
-
-
-void
-Performance::output_header_track (Midi_stream& midi_stream)
-{
-  Midi_track midi_track;
-
-  midi_track.channel_ = 9;
-
-  // perhaps multiple text events?
-  String id_string;
-  String str = String (_ ("Creator: "));
-  id_string = String_convert::pad_to (gnu_lilypond_version_string (), 30);
-  str += id_string;
-
-  /*
-    This seems silly, but in fact the audio elements should
-    be generated elsewhere: not midi-specific.
-   */
-  Audio_text creator_a (Audio_text::TEXT, str);
-  Midi_text creator (&creator_a);
-  midi_track.add (Moment (0), &creator);
-
-  /* Better not translate this */
-  str = "Generated automatically by: ";
-  str += id_string;
-  
-  Audio_text generate_a (Audio_text::TEXT, str);
-  Midi_text generate (&generate_a);
-  midi_track.add (Moment (0), &generate);
-  
-  str = _ ("at ");
-  time_t t (time (0));
-  str += ctime (&t);
-  str = str.left_string (str.length () - 1);
-  str = String_convert::pad_to (str, 60);
-  
-  Audio_text at_a (Audio_text::TEXT, str);
-  Midi_text at (&at_a);
-  midi_track.add (Moment (0), &at);
-
-
-  // TODO:
-  //  str = _f ("from musical definition: %s", origin_string_);
-
-  Audio_text from_a (Audio_text::TEXT, str);
-  Midi_text from (&from_a);
-  midi_track.add (Moment (0), &from);
-
-  Audio_text track_name_a (Audio_text::TRACK_NAME, "Track "
-			   + String_convert::int2dec (0, 0, '0'));
-  Midi_text track_name (&track_name_a);
-			
-  midi_track.add (Moment (0), &track_name);
-
-  // Some sequencers read track 0 last.
-  //  Audio_tempo tempo_a (midi_->get_tempo (Moment (Rational (1, 4))));
-  //  Midi_tempo tempo (&tempo_a);
-  //  midi_track.add (Moment (0), &tempo);
-
-  midi_stream << midi_track;
-}
-
-void
-Performance::add_element (Audio_element *p)
-{
-  if (Audio_staff*s=dynamic_cast<Audio_staff *> (p)) 
-    {
-      audio_staffs_.push (s);
-    }
-  else if (Audio_column *c = dynamic_cast<Audio_column*> (p))
-    {
-      c->performance_ = this;
-    }
-  audio_elem_p_list_ = new Killing_cons<Audio_element> (p, audio_elem_p_list_);
-}
-
-
-void
-Performance::process (String out)
-{
-  if (out == "-")
-    out = "lelie.midi";
-  
-  /* Maybe a bit crude, but we had this before */
-  Path p = split_path (out);
-  p.ext = "midi";
-  out = p.to_string ();
-  
-  Midi_stream midi_stream (out);
-  progress_indication (_f ("MIDI output to `%s'...", out));
-
-  global_input_file->target_strings_.push (out);
-
-  output (midi_stream);
-  progress_indication ("\n");
-}
diff --git a/lily/performer-group-performer.cc b/lily/performer-group-performer.cc
deleted file mode 100644
index 55776074c0..0000000000
--- a/lily/performer-group-performer.cc
+++ /dev/null
@@ -1,120 +0,0 @@
-/*
-  performer-group-performer.cc -- implement Performer_group_performer
-
-  source file of the GNU LilyPond music typesetter
-
-  (c) 1996--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-               Jan Nieuwenhuizen <janneke@gnu.org>
- */
-
-#include "performer-group-performer.hh"
-
-#include "audio-element.hh"
-#include "warn.hh"
-
-
-ENTER_DESCRIPTION(Performer_group_performer,
-/* descr */       "",
-/* creats*/       "",
-/* accepts */     "",
-/* acks  */      "",
-/* reads */       "",
-/* write */       "");
-
-
-
-void
-Performer_group_performer::announce_element (Audio_element_info info)
-{
-  announce_infos_.push (info);
-  Performer::announce_element (info);
-}
-
-
-
-void
-Performer_group_performer::create_audio_elements ()
-{
-  for (SCM p = get_simple_trans_list (); gh_pair_p (p); p = ly_cdr (p))
-    {
-      Translator * t = unsmob_translator (ly_car (p));
-      Performer * eng = dynamic_cast<Performer*> (t);
-      if (eng)
-	eng->create_audio_elements ();
-    }
-}
-
-void
-Performer_group_performer::acknowledge_audio_elements ()
-{
-  for (int j =0; j < announce_infos_.size (); j++)
-    {
-      Audio_element_info info = announce_infos_[j];
-
-      for (SCM p = get_simple_trans_list (); gh_pair_p (p); p = ly_cdr (p))
-	{
-	  Translator * t = unsmob_translator (ly_car (p));
-	  Performer * eng = dynamic_cast<Performer*> (t);
-	  if (eng && eng!= info.origin_trans_)
-	    eng->acknowledge_audio_element (info);
-	}
-    }
-}
-
-void
-Performer_group_performer::do_announces ()
-{
-  for (SCM p = trans_group_list_; gh_pair_p (p); p =ly_cdr (p))
-    {
-      Translator * t = unsmob_translator (ly_car (p));
-      dynamic_cast<Performer_group_performer*> (t)->do_announces ();
-    }
-
-  
-  create_audio_elements ();
-    
-  while (announce_infos_.size ())
-    {
-      acknowledge_audio_elements ();
-      announce_infos_.clear ();
-      create_audio_elements ();
-    }
-
-  if (announce_infos_.size ())
-    {
-#if 0  //printf?  -> include <stdio.h>     
-      printf ("do_announces: elt: %s\n",
-	      classname (announce_infos_[0].elem_));
-#endif      
-      announce_infos_.clear ();
-    }
-}
-
-Performer_group_performer::Performer_group_performer()
-{
-}
-
-/*
-  C & P from Engraver.
-
-  Should move into Translator ? 
- */
-void
-Performer_group_performer::process_music ()
-{
-   for (SCM p = get_simple_trans_list (); gh_pair_p (p); p =ly_cdr (p))
-    {
-      Translator * t = unsmob_translator (ly_car (p));
-      Performer * eng = dynamic_cast<Performer*> (t);
-
-      if (eng)
-	eng->process_music ();
-    }
-   for (SCM p = trans_group_list_; gh_pair_p (p); p =ly_cdr (p))
-    {
-      Translator * t = unsmob_translator (ly_car (p));
-      Performer*eng = dynamic_cast<Performer*> (t);
-      if (eng)
-	eng->process_music ();
-    }
-}
diff --git a/lily/performer.cc b/lily/performer.cc
deleted file mode 100644
index 6d618346ea..0000000000
--- a/lily/performer.cc
+++ /dev/null
@@ -1,58 +0,0 @@
-/*
-  performer.cc -- implement Performer
-
-  source file of the GNU LilyPond music typesetter
-
-  (c) 1996--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-               Jan Nieuwenhuizen <janneke@gnu.org>
- */
-
-
-#include "performer-group-performer.hh"
-#include "warn.hh"
-
-void 
-Performer::play_element (Audio_element* p) 
-{ 
-  get_daddy_perf ()->play_element (p); 
-}
-
-int
-Performer::get_tempo () const
-{
-  return get_daddy_perf ()->get_tempo ();
-}
-
-Performer_group_performer*
-Performer::get_daddy_perf () const
-{
-  return (daddy_trans_) 
-    ?dynamic_cast<Performer_group_performer *> (daddy_trans_)
-    : 0;
-}
-
-void
-Performer::acknowledge_audio_element (Audio_element_info)
-{
-}
-
-void
-Performer::create_audio_elements ()
-{
-}
-
-
-void
-Performer::announce_element (Audio_element_info i)
-{
-  if (!i.origin_trans_)
-    i.origin_trans_= this;
-  get_daddy_perf ()->announce_element (i);
-}
-
-
-void
-Performer::process_music ()
-{
-  
-}
diff --git a/lily/phrasing-slur-engraver.cc b/lily/phrasing-slur-engraver.cc
deleted file mode 100644
index b3aa443e9a..0000000000
--- a/lily/phrasing-slur-engraver.cc
+++ /dev/null
@@ -1,177 +0,0 @@
-/*
-  phrasing-slur-engraver.cc -- implement Phrasing_slur_engraver
-
-  (c) 1997--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-*/
-
-#include "event.hh"
-#include "slur.hh"
-#include "warn.hh"
-#include "note-column.hh"
-#include "translator-group.hh"
-#include "engraver.hh"
-#include "spanner.hh"
-
-/*
-  TODO:
-  
-  ALGRGRRGRG
-
-  Derive this from Slur_engraver. This code is completely duplicate.
-*/
-class Phrasing_slur_engraver : public Engraver
-{
-  Link_array<Music> eventses_;
-  Link_array<Music> new_phrasing_slur_evs_;
-  Link_array<Grob> phrasing_slurs_;
-  Link_array<Grob> end_phrasing_slurs_;
-  Moment last_start_;
-
-protected:
-  virtual bool try_music (Music*);
-  virtual void acknowledge_grob (Grob_info);
-  virtual void stop_translation_timestep ();
-  virtual void start_translation_timestep ();
-  virtual void finalize ();
-  virtual void process_acknowledged_grobs ();
-
-public:
-  TRANSLATOR_DECLARATIONS(Phrasing_slur_engraver);
-  
-};
-
-Phrasing_slur_engraver::Phrasing_slur_engraver ()
-{
-  last_start_ = Moment (-1);
-}
-
-bool
-Phrasing_slur_engraver::try_music (Music *ev)
-{
- if (ev->is_mus_type ("phrasing-slur-event"))
-    {
-      /*
-	Let's not start more than one phrasing slur per moment.
-      */
-      
-      Direction d = to_dir (ev->get_mus_property ("span-direction"));
- 	  
-      if (d == START)
-	{
-	  if (now_mom () > last_start_)
-	    {
-	      new_phrasing_slur_evs_.push (ev);
-	      last_start_ = now_mom ();
-	      return true;
-	    }
-	}
-      else
-	{
-	  new_phrasing_slur_evs_.push (ev);
-	  return true;
-	}
-    }
-  return false;
-}
-
-void
-Phrasing_slur_engraver::acknowledge_grob (Grob_info info)
-{
-  if (Note_column::has_interface (info.grob_))
-    {
-      Grob *e =info.grob_;
-      for (int i = 0; i < phrasing_slurs_.size (); i++)
-	Slur::add_column (phrasing_slurs_[i], e);
-      for (int i = 0; i < end_phrasing_slurs_.size (); i++)
-	Slur::add_column (end_phrasing_slurs_[i], e);
-    }
-}
-
-void
-Phrasing_slur_engraver::finalize ()
-{
-  for (int i = 0; i < phrasing_slurs_.size (); i++)
-    {
-      /*
-	Let's not typeset unterminated stuff
-      */
-      phrasing_slurs_[i]->suicide ();
-    }
-  phrasing_slurs_.clear ();
-
-  for (int i=0; i < eventses_.size (); i++)
-    {
-      eventses_[i]->origin ()->warning (_ ("unterminated phrasing slur"));
-    }
-}
-
-void
-Phrasing_slur_engraver::process_acknowledged_grobs ()
-{
-  Link_array<Grob> start_phrasing_slurs;
-  for (int i=0; i< new_phrasing_slur_evs_.size (); i++)
-    {
-      Music* phrasing_slur_ev = new_phrasing_slur_evs_[i];
-      // end phrasing slur: move the phrasing slur to other array
-
-      Direction d = to_dir (phrasing_slur_ev->get_mus_property ("span-direction"));
-      
-      if (d == STOP)
-	{
-	  if (phrasing_slurs_.is_empty ())
-	    phrasing_slur_ev->origin ()->warning (_f ("can't find start of phrasing slur"));
-	  else
-	    {
-	      Grob* phrasing_slur = phrasing_slurs_.pop ();
-	      end_phrasing_slurs_.push (phrasing_slur);
-	      eventses_.pop ();
-	    }
-	}
-      else if (d == START)
-	{
-	  // push a new phrasing_slur onto stack.
-	  // (use temp. array to wait for all phrasing_slur STOPs)
-	  Grob* phrasing_slur = make_spanner ("PhrasingSlur");
-	  Slur::set_interface (phrasing_slur); // can't remove.
-
-
-	  if (Direction updown = to_dir (phrasing_slur_ev->get_mus_property ("direction")))
-	    {
-	      phrasing_slur->set_grob_property ("direction", gh_int2scm (updown));
-	    }
-
-	  start_phrasing_slurs.push (phrasing_slur);
-	  eventses_.push (phrasing_slur_ev);
-	  announce_grob(phrasing_slur, phrasing_slur_ev->self_scm());
-	}
-    }
-  for (int i=0; i < start_phrasing_slurs.size (); i++)
-    phrasing_slurs_.push (start_phrasing_slurs[i]);
-  new_phrasing_slur_evs_.clear ();
-}
-
-void
-Phrasing_slur_engraver::stop_translation_timestep ()
-{
-  for (int i = 0; i < end_phrasing_slurs_.size (); i++)
-    {
-      typeset_grob (end_phrasing_slurs_[i]);
-    }
-  end_phrasing_slurs_.clear ();
-}
-
-void
-Phrasing_slur_engraver::start_translation_timestep ()
-{
-  new_phrasing_slur_evs_.clear ();
-}
-
-
-
-ENTER_DESCRIPTION(Phrasing_slur_engraver,
-/* descr */       "Print phrasing slurs. Similar to @ref{Slur_engraver}",
-/* creats*/       "PhrasingSlur",
-/* accepts */     "phrasing-slur-event",
-/* acks  */       "note-column-interface",
-/* reads */       "",
-/* write */       "");
diff --git a/lily/piano-pedal-bracket.cc b/lily/piano-pedal-bracket.cc
deleted file mode 100644
index 957a795274..0000000000
--- a/lily/piano-pedal-bracket.cc
+++ /dev/null
@@ -1,91 +0,0 @@
-/*   
-  piano-pedal-bracket.cc --  implement  Piano_pedal_bracket
-
-source file of the GNU LilyPond music typesetter
-
-(c) 2003--2004 Han-Wen Nienhuys <hanwen@xs4all.nl>
-
-*/
-
-#include "molecule.hh"
-#include "spanner.hh"
-#include "item.hh"
-#include "tuplet-bracket.hh"
-
-struct Piano_pedal_bracket
-{
-  DECLARE_SCHEME_CALLBACK(print,(SCM));
-  static bool has_interface (Grob*);
-};
-
-
-MAKE_SCHEME_CALLBACK(Piano_pedal_bracket,print,1);
-SCM
-Piano_pedal_bracket::print (SCM smob)
-{
-  Spanner *me = dynamic_cast<Spanner*> (unsmob_grob (smob));
-  
-  Drul_array<bool> broken (false,false);
-  Drul_array<Real> height = robust_scm2drul
-    (me->get_grob_property ("edge-height"), Interval (0,0));
-  Drul_array<Real> shorten = robust_scm2drul
-    (me->get_grob_property ("shorten-pair"), Interval (0,0));
-  Drul_array<Real> flare = robust_scm2drul
-    (me->get_grob_property ("bracket-flare"), Interval (0,0));
-
-  Grob *common = me->get_bound (LEFT)
-    ->common_refpoint (me->get_bound (RIGHT), X_AXIS);
-  Grob *textbit = unsmob_grob (me->get_grob_property("pedal-text"));
-
-  if (textbit)
-    common = common->common_refpoint (textbit, X_AXIS);
-
-  Interval span_points (0,0);
-  Direction d = LEFT;
-  do
-    {
-      Item *b = me->get_bound (d);
-      broken[d] = b->break_status_dir () != CENTER;
-      if (broken[d])
-	height[d] = 0.0;
-
-      Interval ext   = b->extent (common,  X_AXIS);
-      span_points[d] = ext [broken[d] ?  RIGHT : LEFT];
-    }
-  while (flip (&d) != LEFT);
-
-  
-  /* For 'Mixed' style pedals, i.e.  a bracket preceded by text:  Ped._____|
-   need to shorten by the extent of the text grob
-  */
-  if (textbit)
-    {
-      height[LEFT] = 0;
-      
-      Real padding = robust_scm2double (me->get_grob_property ("if-text-padding"), 0);
-      
-      span_points[LEFT] = padding
-	+ textbit->extent (common, X_AXIS)[RIGHT];
-    }
-  
-
-  Molecule m ;
-  if (!span_points.is_empty () &&
-      span_points.length () > 0.001)
-    {
-      m = Tuplet_bracket::make_bracket (me, Y_AXIS,
-					Offset (span_points.length (), 0),
-					height,
-					0.0,
-					flare, shorten);
-    }
-  m.translate_axis (span_points[LEFT]
-		    - me->relative_coordinate (common, X_AXIS), X_AXIS);
-  return m.smobbed_copy ();
-}
-
-
-
-ADD_INTERFACE (Piano_pedal_bracket,"piano-pedal-bracket-interface",
-	       "The bracket of the piano pedal.  It can be tuned through the regular bracket properties (bracket-flare, edge-height, shorten-pair).",
-	       "edge-height shorten-pair bracket-flare pedal-text");
diff --git a/lily/piano-pedal-engraver.cc b/lily/piano-pedal-engraver.cc
deleted file mode 100644
index b9068bea0c..0000000000
--- a/lily/piano-pedal-engraver.cc
+++ /dev/null
@@ -1,560 +0,0 @@
-/*   
-  piano-pedal-engraver.cc --  implement Piano_pedal_engraver
-  
-  source file of the GNU LilyPond music typesetter
-  
- (c) 2000--2004 Jan Nieuwenhuizen <janneke@gnu.org>
-  
-  Chris Jackson <chris@fluffhouse.org.uk> - extended to support
-  bracketed pedals.
-*/
-
-#include "engraver.hh"
-#include "event.hh"
-#include "grob.hh"
-#include "item.hh"
-#include "lily-guile.hh"
-#include "side-position-interface.hh"
-#include "staff-symbol-referencer.hh"
-#include "item.hh"
-#include "axis-group-interface.hh"
-#include "translator-group.hh"
-#include "directional-element-interface.hh"
-#include "note-column.hh"
-#include "warn.hh"
-
-/*
-  Urgh. This engraver is too complex. rewrite. --hwn
-
-*/
-
-struct Pedal_info
-{
-  char const * name_;
-
-  /*
-    Event for currently running pedal.
-  */
-  Music* current_bracket_ev_;
-
-  /*
-    Event for currently starting pedal, (necessary?
-    
-    distinct from current_bracket_ev_, since current_bracket_ev_ only
-    necessary for brackets, not for text style.
-   */
-  Music* start_ev_;
-
-
-  
-  /*
-    Events that were found in this timestep.
-   */
-  Drul_array<Music*> event_drul_;
-  Item* item_;
-  Spanner* bracket_;     // A single portion of a pedal bracket
-  Spanner* finished_bracket_;
-
-  /*
-    This grob contains all the pedals of the same type on the same staff
-   */
-  Spanner* line_spanner_;
-  Spanner* finished_line_spanner_;
-};
-
-
-class Piano_pedal_engraver : public Engraver
-{
-public:
-  TRANSLATOR_DECLARATIONS (Piano_pedal_engraver);
-  ~Piano_pedal_engraver ();
-protected:
-  virtual void initialize ();
-  virtual void finalize ();
-  virtual bool try_music (Music*);
-  virtual void stop_translation_timestep ();
-  virtual void acknowledge_grob (Grob_info);
-  virtual void process_music ();
-
-private:
-
-  Pedal_info *info_list_;
-
-  /*
-    Record a stack of the current pedal spanners, so if more than one pedal
-    occurs simultaneously then extra space can be added between them.
-  */
-  
-  Link_array<Spanner> previous_;
-  
-  void create_text_grobs (Pedal_info *p, bool);
-  void create_bracket_grobs (Pedal_info *p, bool);
-  void typeset_all ();
-};
-
-
-Piano_pedal_engraver::Piano_pedal_engraver ()
-{
-  info_list_ = 0;
-}
-
-void
-Piano_pedal_engraver::initialize ()
-{
-  previous_.clear ();
-
-  char * names [] = { "Sostenuto", "Sustain", "UnaCorda", 0  };
-
-  info_list_ = new Pedal_info[sizeof (names)/ sizeof (const char*)]; 
-  Pedal_info *p = info_list_;
-
-  char **np = names ;
-  do
-    {
-      p->name_ = *np;
-      p->item_ = 0;
-      p->bracket_ = 0;
-      p->finished_bracket_ = 0;
-      p->line_spanner_ = 0;
-      p->finished_line_spanner_ = 0;
-      p->current_bracket_ev_ = 0;
-      p->event_drul_[START] = 0;
-      p->event_drul_[STOP] = 0;
-      p->start_ev_ = 0;
-
-      p++;
-    }
-  while (* (np ++));
-}
-
-Piano_pedal_engraver::~Piano_pedal_engraver ()
-{
-  delete[] info_list_;
-}
-
-/*
-   Urg: Code dup
-   I'm a script
-  */
-void
-Piano_pedal_engraver::acknowledge_grob (Grob_info info)
-{
-  for (Pedal_info*p = info_list_; p && p->name_; p ++)
-    {
-      if (Note_column::has_interface (info.grob_))
-	{
-	  if (p->line_spanner_)
-	    {
-	      Side_position_interface::add_support (p->line_spanner_, info.grob_);
-	      add_bound_item (p->line_spanner_,info.grob_);
-	    }	  
-	  if (p->bracket_)
-	    add_bound_item (p->bracket_,info.grob_);
-	  if (p->finished_bracket_)
-	    add_bound_item (p->finished_bracket_,info.grob_);		  
-	}
-    }
-}
-
-bool
-Piano_pedal_engraver::try_music (Music *m)
-{
- if  (m->is_mus_type ("pedal-event"))
-    {
-      for (Pedal_info*p = info_list_; p->name_; p ++)
-	{
-	  String nm = p->name_ + String ("Event");
-	  if (gh_equal_p (m->get_mus_property ("name") ,
-			  gh_symbol2scm (nm.to_str0())))
-	    {
-	      Direction d = to_dir (m->get_mus_property ("span-direction"));
-	      p->event_drul_[d] = m;
-	      return true;
-	    }
-	}
-    }
-  return false;
-}
-
-void
-Piano_pedal_engraver::process_music ()
-{
-  for (Pedal_info*p = info_list_; p && p->name_; p ++)
-    {
-      if (p->event_drul_[STOP] || p->event_drul_[START])
-	{
-	  if (!p->line_spanner_)
-	    {
-	      String name  = String (p->name_) + "PedalLineSpanner";
-	      p->line_spanner_ = make_spanner (name.to_str0 ());
-
-	      Music * rq = (p->event_drul_[START]  ?  p->event_drul_[START]  :  p->event_drul_[STOP]);
-	      announce_grob (p->line_spanner_, rq->self_scm ());
-	    }
-      
-	  /* Choose the appropriate grobs to add to the line spanner
-	   These can be text items or text-spanners
-	  */
-
-	  /*
-	    ugh, code dup, should read grob to create from other
-	    property.
-
-	      bracket: |_________/\____|
-	      text:    Ped.     *Ped.  *
-	      mixed:   Ped. _____/\____|
-	   */
-
-
-	  String prop = String ("pedal")  + p->name_ + "Style";
-	  SCM style = get_property (prop.to_str0 ());
-	  bool mixed = style == ly_symbol2scm ("mixed");
-	  if (style == ly_symbol2scm ("text") ||
-	      mixed)    
-	    {
-	      if (! p->item_)
-		create_text_grobs (p, mixed);
-	    }
-	  if (style == ly_symbol2scm ("bracket") ||
-	      mixed)
-	   {
-	     create_bracket_grobs (p, mixed);
-	   }
-	}
-    }
-}
-
-void
-Piano_pedal_engraver::create_text_grobs (Pedal_info *p, bool mixed)
-{
-  SCM s = SCM_EOL;
-  SCM strings = get_property ( ("pedal" + String (p->name_) + "Strings").to_str0 ());
-
-  if (scm_ilength (strings) < 3)
-    {
-      Music * m =       p->event_drul_[START]; 
-      if (!m) m = p->event_drul_ [STOP];
-
-      String msg = _ ("Need 3 strings for piano pedals. No pedal made. ");
-      if (m)
-	m->origin()->warning (msg);
-      else
-	warning (msg);
-      
-      return ;
-    }
-  
-  if (p->event_drul_[STOP] && p->event_drul_[START]) 
-    {
-      if (!mixed)
-	{
-	  if (!p->start_ev_)
-	    {
-	      p->event_drul_[STOP]->origin ()->warning (_f ("can't find start of piano pedal: `%s'",  p->name_));
-	    }
-	  else
-	    {
-	      s = ly_cadr (strings);
-	    }
-	  p->start_ev_ = p->event_drul_[START];
-	}
-    }
-  else if (p->event_drul_[STOP])
-    { 
-      if (!mixed)
-	{
-	  if (!p->start_ev_)
-	    {
-	      p->event_drul_[STOP]->origin ()->warning (_f ("can't find start of piano pedal: `%s'", p->name_));
-	    }
-	  else
-	    {
-	      s = ly_caddr (strings);
-	      if (previous_.size ())
-		previous_.pop();
-	    }
-	  p->start_ev_ = 0;
-	}
-    }
-  else if (p->event_drul_[START])
-    {
-      p->start_ev_ = p->event_drul_[START];
-      s = ly_car (strings);
-      if (!mixed)
-	{
-	  /*
-	    Code dup?! see below.
-	  */
-	  if (previous_.size ())
-	    // add extra space below the previous already-occuring pedal
-	    Side_position_interface::add_support (p->line_spanner_,
-						  previous_.top ());
-	  previous_.push ( p->line_spanner_);
-	}
-    }
-      
-  if (gh_string_p (s))
-    {
-      String propname = String (p->name_) + "Pedal";
-
-      p->item_ = make_item (propname.to_str0 ());
-      p->item_->set_grob_property ("text", s);
-      Axis_group_interface::add_element (p->line_spanner_, p->item_);
-	  
-      announce_grob (p->item_,
-		     (p->event_drul_[START]
-		      ? p->event_drul_[START]
-		      : p->event_drul_[STOP])->self_scm ());
-    }
-
-  if (!mixed)
-    {
-      p->event_drul_[START] = 0;
-      p->event_drul_[STOP] = 0;
-    }
-}
-
-void
-Piano_pedal_engraver::create_bracket_grobs (Pedal_info *p, bool mixed)
-{
-  if (!p->bracket_ && p->event_drul_[STOP])
-    {
-      String msg =_f ("can't find start of piano pedal bracket: `%s'", p->name_);
-      p->event_drul_[STOP]->origin ()->warning (msg);
-      p->event_drul_[STOP] =  0;
-    }
-
-  if (p->event_drul_[STOP])
-    {
-      if (!p->event_drul_[START])
-	{
-	  if (previous_.size())
-	    previous_.pop();
-	}
-      
-      assert (!p->finished_bracket_); 
-
-      Grob *cmc = unsmob_grob (get_property ("currentMusicalColumn"));
-
-      if (!p->bracket_->get_bound (RIGHT))
-	p->bracket_->set_bound (RIGHT, cmc);
-
-      /*
-	Set properties so that the molecule-creating function will
-	know whether the right edge should be flared ___/
-       */
-
-      if (!p->event_drul_[START])
-	{
-	  SCM flare = p->bracket_->get_grob_property ("bracket-flare");
-	  p->bracket_->set_grob_property ("bracket-flare", scm_cons (gh_car (flare),
-								     gh_double2scm (0)));
-	}
-
-      p->finished_bracket_ = p->bracket_;
-      p->bracket_ = 0;
-      p->current_bracket_ev_ = 0;
-    }
-
-  if (p->event_drul_[START])
-    {
-      p->start_ev_ = p->event_drul_[START];
-      p->current_bracket_ev_ = p->event_drul_[START];
-
-      p->bracket_  = make_spanner ("PianoPedalBracket");
-
-      /*
-	Set properties so that the molecule-creating function will
-	know whether the left edge should be flared \___
-      */
-
-      if (!p->finished_bracket_)
-	{
-	  SCM flare = p->bracket_->get_grob_property ("bracket-flare");
-	  p->bracket_->set_grob_property ("bracket-flare", scm_cons (gh_double2scm (0),gh_cdr (flare)));
-	}
-
-
-      /* Set this property for 'mixed style' pedals,    Ped._______/\ ,  
-        so the molecule function will shorten the ____ line by the length of the Ped. text.
-      */
-
-      if (mixed)
-	{
-	  /*
-	    Mixed style: Store a pointer to the preceding text for use in
-	    calculating the length of the line
-
-
-	    TODO:
-
-	    WTF is pedal-text not the bound of the object? --hwn
-	  */
-	  if (p->item_)
-	    p->bracket_->set_grob_property ("pedal-text", p->item_->self_scm ());
-	}
-
-
-      /*
-	We do not use currentMusicalColumn for the left span-point.
-	If the column as accidentals (eg on a different stave), the
-	currentMusicalColumn is too wide, making the bracket too big.
-
-	TODO:
-
-	Hmm. What do we do when there are no notes when the spanner starts?
-
-	TODO:
-
-	what about the right span point?
-	
-       */
-      Axis_group_interface::add_element (p->line_spanner_, p->bracket_);	      
-      announce_grob (p->bracket_, p->event_drul_[START]->self_scm ());
-
-      if (!p->event_drul_[STOP])
-	{
-
-	  /*
-	    code dup. --hwn.
-
-	    // position new pedal spanner below the current one
-	  */
-	  if (previous_.size()) 
-	    Side_position_interface::add_support (p->line_spanner_, previous_.top());
-
-	  previous_.push (p->line_spanner_);	
-	}
-    }
-
-  p->event_drul_[START] = 0;
-  p->event_drul_[STOP] = 0;
-}
-
-void
-Piano_pedal_engraver::finalize ()
-{  
-  for (Pedal_info*p = info_list_; p && p->name_; p ++)
-    {
-      /*
-	suicide?
-       */
-      if (p->line_spanner_
-	  && !p->line_spanner_->live())
-	p->line_spanner_ = 0;
-      
-      if (p->line_spanner_)
-	{
-	  p->finished_line_spanner_ = p->line_spanner_;
-	  typeset_all ();
-	}
-      if (p->bracket_
-	  && !p->bracket_->live())
-	p->bracket_ = 0;
-      
-      if (p->bracket_)
-	{
-	  p->current_bracket_ev_->origin ()->warning (_ ("unterminated pedal bracket"));
-	  p->bracket_->suicide ();
-	  p->bracket_ = 0;
-	}
-    }
-}
-
-  
-void
-Piano_pedal_engraver::stop_translation_timestep ()
-{
-  for (Pedal_info*p = info_list_; p && p->name_; p ++)
-    {
-      if (!p->bracket_)
-	{
-	  p->finished_line_spanner_ = p->line_spanner_;
-	  p->line_spanner_ = 0;
-	}
-    }
-  
-  typeset_all ();
-
-  for (Pedal_info*p = info_list_; p->name_; p ++)
-    {
-      p->event_drul_[STOP] = 0;
-      p->event_drul_[START] = 0;
-    }
-}
-
-
-void
-Piano_pedal_engraver::typeset_all ()
-{
-  Item * sustain = 0;
-  for (Pedal_info*p = info_list_; p->name_; p ++)
-    {
-      /*
-	Handle suicide. 
-       */
-      if (p->finished_line_spanner_
-	  && !p->finished_line_spanner_->live ())
-	p->finished_line_spanner_ = 0;
-      if (p->finished_bracket_
-	  && !p->finished_bracket_->live())
-	p->finished_bracket_ = 0;
-
-
-      if (p->name_ == String ("Sustain"))
-	sustain = p->item_;
-
-      if (p->item_)
-	{
-	  /*
-	    Hmm.
-	  */
-	  if (p->name_ != String ("Sustain") && sustain)
-	    {
-	      Side_position_interface::add_support (p->item_,sustain);
-	    }
-	  typeset_grob (p->item_);
-	  p->item_ = 0;
-	}
-      
-      if (p->finished_bracket_)
-	{
-	  Grob * r = p->finished_bracket_->get_bound (RIGHT);      
-	  if (!r)
-	    {
-	      p->finished_bracket_->set_bound (RIGHT, unsmob_grob (get_property ("currentMusicalColumn")));
-	    }
-
-	  typeset_grob (p->finished_bracket_);
-	  
-	  p->finished_bracket_ =0;
-	}
-
-      if (p->finished_line_spanner_)
-	{
-	  Grob * l = p->finished_line_spanner_->get_bound (LEFT);
-	  Grob * r = p->finished_line_spanner_->get_bound (RIGHT);      
-	  if (!r && l)
-	    p->finished_line_spanner_->set_bound (RIGHT, l);
-	  else if (!l && r)
-	    p->finished_line_spanner_->set_bound (LEFT, r);
-	  else if (!r && !l)
-	    {
-	      Grob * cc = unsmob_grob (get_property ("currentMusicalColumn"));
-	      Item * ci = dynamic_cast<Item*> (cc);
-	      p->finished_line_spanner_->set_bound (RIGHT, ci);
-	      p->finished_line_spanner_->set_bound (LEFT, ci);	  
-	    }
-	  typeset_grob (p->finished_line_spanner_);
-	  p->finished_line_spanner_ = 0;
-	}
-    }
-}
-
-ENTER_DESCRIPTION (Piano_pedal_engraver,
-/* descr */       "Engrave piano pedal symbols and brackets.",
-/* creats*/       "SostenutoPedal SustainPedal UnaCordaPedal SostenutoPedalLineSpanner SustainPedalLineSpanner UnaCordaPedalLineSpanner",
-/* accepts */     "pedal-event",
-/* acks  */       "note-column-interface",
-/* reads */       "pedalSostenutoStrings pedalSustainStrings pedalUnaCordaStrings pedalSostenutoStyle pedalSustainStyle pedalUnaCordaStyle",
-/* write */       "");
diff --git a/lily/piano-pedal-performer.cc b/lily/piano-pedal-performer.cc
deleted file mode 100644
index 3ec96a9d49..0000000000
--- a/lily/piano-pedal-performer.cc
+++ /dev/null
@@ -1,147 +0,0 @@
-/*
-  piano-pedal-performer.cc -- implement Piano_pedal_performer
-
-  source file of the GNU LilyPond music typesetter
-
-  (c) 2000--2004 Jan Nieuwenhuizen <janneke@gnu.org>
-*/
-
-#include "performer.hh"
-
-#include "event.hh"
-#include "audio-item.hh"
-
-/**
-   perform Piano pedals
- */
-class Piano_pedal_performer : public Performer
-{
-  struct Pedal_info
-  {
-    char const *name_;
-    Music* start_req_;
-    Drul_array<Music*> req_l_drul_;
-  };
-
-public:
-  TRANSLATOR_DECLARATIONS(Piano_pedal_performer);
-  ~Piano_pedal_performer ();
-  
-protected:
-  virtual void initialize ();
-  virtual bool try_music (Music*);
-  virtual void create_audio_elements ();
-  virtual void stop_translation_timestep ();
-  virtual void start_translation_timestep ();
-
-private:
-  Link_array<Audio_piano_pedal> audios_;
-  Pedal_info * info_alist_;
-};
-
-Piano_pedal_performer::Piano_pedal_performer ()
-{
-  info_alist_ = 0;
-}
-
-Piano_pedal_performer::~Piano_pedal_performer ()
-{
-  delete[] info_alist_;
-}
-
-void
-Piano_pedal_performer::initialize ()
-{
-  info_alist_ = new Pedal_info[4];
-  Pedal_info *p = info_alist_;
-
-  char * names [] = { "Sostenuto", "Sustain", "UnaCorda", 0  };
-  char **np = names ;
-  do
-    {
-      p->name_ = *np;
-      p->req_l_drul_[START] = 0;
-      p->req_l_drul_[STOP] = 0;
-      p->start_req_ = 0;
-
-      p++;
-    }
-  while (* (np ++));
-}
-
-void
-Piano_pedal_performer::create_audio_elements ()
-{
-  for (Pedal_info*p = info_alist_; p && p->name_; p ++)
- 
-    {
-      if (p->req_l_drul_[STOP])
-	{
-	  if (!p->start_req_)
-	    {
-	      p->req_l_drul_[STOP]->origin ()->warning (_f ("can't find start of piano pedal: `%s'", String (p->name_)));
-	    }
-	  else
-	    {
-	      Audio_piano_pedal* a = new Audio_piano_pedal;
-	      a->type_string_ = String (p->name_);
-	      a->dir_ = STOP;
-	      audios_.push (a);
-	    }
-	  p->start_req_ = 0;
-	}
-
-      if (p->req_l_drul_[START])
-	{
-	  p->start_req_ = p->req_l_drul_[START];
-	  Audio_piano_pedal* a = new Audio_piano_pedal;
-	  a->type_string_ = String (p->name_);
-	  a->dir_ = START;
-	  audios_.push (a);
-	}
-      p->req_l_drul_[START] = 0;
-      p->req_l_drul_[STOP] = 0;
-    }
-}
-
-void
-Piano_pedal_performer::stop_translation_timestep ()
-{
-  for (int i=0; i< audios_.size (); i++)
-    play_element (audios_[i]);
-  audios_.clear ();
-}
-
-void
-Piano_pedal_performer::start_translation_timestep ()
-{
-  for (Pedal_info*p = info_alist_; p && p->name_; p ++)
-    {
-      p->req_l_drul_[STOP] = 0;
-      p->req_l_drul_[START] = 0;
-    }
-}
-
-bool
-Piano_pedal_performer::try_music (Music* r)
-{
- if  (r->is_mus_type ("pedal-event"))
-    {
-      for (Pedal_info*p = info_alist_; p->name_; p ++)
-	{
-	  String nm = p->name_ + String ("Event");
-	  if (gh_equal_p (r->get_mus_property ("name") ,
-			  scm_makfrom0str (nm.to_str0())))
-	    {
-	      Direction d = to_dir (r->get_mus_property ("span-direction"));
-	      p->req_l_drul_[d] = r;
-	      return true;
-	    }
-	}
-    }
-  return false;
-}
-
-ENTER_DESCRIPTION (Piano_pedal_performer, "","",
-		   "pedal-event",
-		   "","","" );
diff --git a/lily/pitch-squash-engraver.cc b/lily/pitch-squash-engraver.cc
deleted file mode 100644
index 197b589fa4..0000000000
--- a/lily/pitch-squash-engraver.cc
+++ /dev/null
@@ -1,50 +0,0 @@
-/*   
-  pitch-squash-grav.cc --  implement Pitch_squash_engraver
-  
-  source file of the GNU LilyPond music typesetter
-  
-  (c) 1997--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-  
- */
-#include "staff-symbol-referencer.hh"
-#include "note-head.hh"
-#include "rhythmic-head.hh"
-#include "engraver.hh"
-
-class Pitch_squash_engraver : public Engraver {
-public:
-  TRANSLATOR_DECLARATIONS(Pitch_squash_engraver);
-  virtual void acknowledge_grob (Grob_info);
-};
-
-
-void
-Pitch_squash_engraver::acknowledge_grob (Grob_info i)
-{
-  SCM newpos = get_property ("squashedPosition");
-  if (gh_number_p (newpos)
-      && Note_head::has_interface (i.grob_))
-    {
-      i.grob_->set_grob_property ("staff-position", newpos);
-    }
-}
-
-
-
-Pitch_squash_engraver::Pitch_squash_engraver()
-{
-}
-
-ENTER_DESCRIPTION(Pitch_squash_engraver,
-/* descr */       
-		  "Set the vertical position of noteheads to "
-		  "@code{squashedPosition}, if that "
-		  "property is set. "
-		  "This can be used to make  a single line staff "
-		  "demonstrating the rhythm of a melody.",
-
-/* creats*/       "",
-/* accepts */     "",
-/* acks  */      "note-head-interface",
-/* reads */       "squashedPosition",
-/* write */       "");
diff --git a/lily/pitch.cc b/lily/pitch.cc
deleted file mode 100644
index 76ab39c9e2..0000000000
--- a/lily/pitch.cc
+++ /dev/null
@@ -1,452 +0,0 @@
-/*   
-  musical-pitch.cc --  implement Pitch
-  
-  source file of the GNU LilyPond music typesetter
-  
-  (c) 1998--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-  
- */
-#include "pitch.hh"
-#include "warn.hh"
-#include "main.hh"
-#include "ly-smobs.icc"
-
-
-
-Pitch::Pitch (int o, int n, int a)
-{
-  notename_ = n;
-  alteration_ = a;
-  octave_ = o;
-  normalise ();
-}
-
-Pitch::Pitch ()
-{
-  notename_ = 0;
-  alteration_ = 0;
-  octave_ = 0;
-}
-
-int
-Pitch::compare (Pitch const &m1, Pitch const &m2)
-{
-  int o=  m1.octave_ - m2.octave_;
-  int n = m1.notename_ - m2.notename_;
-  int a = m1.alteration_ - m2.alteration_;
-
-  if (o)
-	return o;
-  if (n)
-	return n;
-  if (a)
-	return a;
-  return 0;
-}
-
-int
-Pitch::steps () const
-{
-  return  notename_ + octave_*7;
-}
-
-/*
-  should be settable from input?
- */
-static Byte diatonic_scale_semitones[  ] = { 0, 2, 4, 5, 7, 9, 11 };
-
-
-/* Calculate pitch height in 12th octave steps.  Don't assume
-   normalised pitch as this function is used to normalise the pitch.  */
-int
-Pitch::semitone_pitch () const
-{
-  int o = octave_;
-  int n = notename_;
-  while (n < 0)
-    {
-      n += 7;
-      o --;
-    }
-
-  if (alteration_ % 2)
-    {
-      programming_error ("Calling semitone_pitch() for quarter tone alterations.");
-      
-    }
-  
-  return (o + n / 7) * 12 + diatonic_scale_semitones[n % 7] + (alteration_/2);
-}
-
-int
-Pitch::quartertone_pitch () const
-{
-  int o = octave_;
-  int n = notename_;
-  while (n < 0)
-    {
-      n += 7;
-      o --;
-    }
-  
-  return (o + n / 7) * 24 +  2*  diatonic_scale_semitones[n % 7] + (alteration_);
-}
-
-void
-Pitch::normalise ()
-{
-  int pitch = quartertone_pitch ();
-  while (notename_ >= 7)
-    {
-      notename_ -= 7;
-      octave_++;
-      alteration_ -= quartertone_pitch () - pitch;
-    }
-  while (notename_ < 0)
-    {
-      notename_ += 7;
-      octave_--;
-      alteration_ -= quartertone_pitch () - pitch;
-    }
-  while (alteration_ > DOUBLE_SHARP)
-    {
-      if (notename_ == 6)
-	{
-	  notename_ = 0;
-	  octave_++;
-	}
-      else
-	notename_++;
-
-      alteration_ = 0;
-      alteration_ -= quartertone_pitch () - pitch;
-    }
-  
-  while (alteration_ < DOUBLE_FLAT)
-    {
-      if (notename_ == 0)
-	{
-	  notename_ = 6;
-	  octave_--;
-	}
-      else
-	notename_--;
-
-      alteration_ = 0;
-      alteration_ -= quartertone_pitch () - pitch;
-    }
-}
-
-/* WHugh, wat een intervaas */
-void
-Pitch::transpose (Pitch delta)
-{
-  int new_semi = quartertone_pitch ()  +delta.quartertone_pitch();
-  octave_ += delta.octave_;
-  notename_ += delta.notename_;
-  alteration_ += new_semi - quartertone_pitch();
-
-  normalise ();
-}
-
-Pitch
-interval (Pitch const & from , Pitch const & to )
-{
-  int sound = to.quartertone_pitch()  - from.quartertone_pitch ();
-  Pitch pt (to.get_octave () - from.get_octave (),
-	    to.get_notename() - from.get_notename(),
-
-	    to.get_alteration() - from.get_alteration());
-
-  return pt.transposed (Pitch(0,0,sound - pt.quartertone_pitch()));
-}
-
-
-/* FIXME
-   Merge with *pitch->text* funcs in chord-name.scm
- */
-char const *accname[] = {"eses", "eseh", "es", "eh", "",
-			 "ih", "is" , "isih",  "isis"};
-
-String
-Pitch::to_string () const
-{
-  int n = (notename_ + 2) % 7;
-  String s = ::to_string (char (n + 'a'));
-  if (alteration_)
-    s += String (accname[alteration_ - DOUBLE_FLAT]);
-
-  if (octave_ >= 0)
-    {
-      int o = octave_ + 1;
-      while (o--)
-	s += "'";
-    }
-  else if (octave_ < 0)
-    {
-      int o = (-octave_) - 1;
-      while (o--)
-	s += ::to_string (',');
-    }
-
-  return s;
-}
-
-/*
-  change me to relative, counting from last pitch p
-  return copy of resulting pitch
- */
-Pitch
-Pitch::to_relative_octave (Pitch p) const
-{
-  int oct_mod = octave_  + 1;	// account for c' = octave 1 iso. 0 4
-  Pitch up_pitch (p);
-  Pitch down_pitch (p);
-
-  up_pitch.alteration_ = alteration_;
-  down_pitch.alteration_ = alteration_;
-  
-  Pitch n = *this;
-  up_pitch.up_to (notename_);
-  down_pitch.down_to (notename_);
-
-  int h = p.steps ();
-  if (abs (up_pitch.steps () - h) < abs (down_pitch.steps () - h))
-    n = up_pitch;
-  else
-    n = down_pitch;
-  
-  n.octave_ += oct_mod;
-  return n;
-}
-
-void
-Pitch::up_to (int notename)
-{
-  if (notename_  > notename)
-    {
-      octave_ ++;
-    }
-  notename_  = notename;
-}
-
-void
-Pitch::down_to (int notename)
-{
-  if (notename_ < notename)
-    {
-      octave_ --;
-    }
-  notename_ = notename;
-}
- 
-LY_DEFINE(ly_pitch_transpose,
-	  "ly:pitch-transpose", 2, 0, 0,
-	  (SCM p, SCM delta),
-	  "Transpose @var{p} by the amount @var{delta}, where @var{delta} is the "
-" pitch that central C is transposed to.")
-{
-  Pitch* t = unsmob_pitch (p);
-  Pitch *d = unsmob_pitch (delta);
-  SCM_ASSERT_TYPE(t, p, SCM_ARG1, __FUNCTION__, "pitch")  ;
-  SCM_ASSERT_TYPE(d, delta, SCM_ARG1, __FUNCTION__, "pitch")  ;
-
-  return t->transposed (*d).smobbed_copy ();
-}
-
-/****************************************************************/
-
-
-IMPLEMENT_TYPE_P (Pitch, "ly:pitch?");
-
-SCM
-Pitch::mark_smob (SCM)
-{
-  return SCM_EOL;
-}
-
-IMPLEMENT_SIMPLE_SMOBS (Pitch);
-int
-Pitch::print_smob (SCM s, SCM port, scm_print_state *)
-{
-  Pitch  *r = (Pitch *) ly_cdr (s);
-     
-  scm_puts ("#<Pitch ", port);
-  scm_display (scm_makfrom0str (r->to_string ().to_str0 ()), port);
-  scm_puts (" >", port);
-  
-  return 1;
-}
-
-SCM
-Pitch::equal_p (SCM a , SCM b)
-{
-  Pitch  *p = (Pitch *) ly_cdr (a);
-  Pitch  *q = (Pitch *) ly_cdr (b);  
-
-  bool eq = p->notename_ == q->notename_
-    && p->octave_ == q->octave_
-    && p->alteration_ == q->alteration_;
-
-  return eq ? SCM_BOOL_T : SCM_BOOL_F;
-}
-
-MAKE_SCHEME_CALLBACK (Pitch, less_p, 2);
-SCM
-Pitch::less_p (SCM p1, SCM p2)
-{
-  Pitch *a = unsmob_pitch (p1);
-  Pitch *b = unsmob_pitch (p2);
-
-  if (compare (*a, *b) < 0)
-    return SCM_BOOL_T;
-  else
-    return SCM_BOOL_F;
-}
-
-/*
-  should add optional args
- */
-
-LY_DEFINE(make_pitch, "ly:make-pitch", 3, 0, 0, 
-	  (SCM o, SCM n, SCM a),
-	  "@var{octave} is specified by an integer, zero for the octave containing "
-	  "middle C.  @var{note} is a number from 0 to 6, with 0 corresponding to C "
-	  "and 6 corresponding to B.  The shift is zero for a natural, negative for "
-	  "flats, or positive for sharps. ")
-{
-  SCM_ASSERT_TYPE(gh_number_p (o), o, SCM_ARG1, __FUNCTION__, "number");
-  SCM_ASSERT_TYPE(gh_number_p (n), n, SCM_ARG2, __FUNCTION__, "number");
-  SCM_ASSERT_TYPE(gh_number_p (a), a, SCM_ARG3, __FUNCTION__, "number");
-
-  Pitch p (gh_scm2int (o), gh_scm2int (n), gh_scm2int (a));
-  return p.smobbed_copy ();
-}
-
-LY_DEFINE(pitch_steps, "ly:pitch-steps", 1, 0,0,
-	  (SCM p),
-	  "Number of steps counted from central C of the pitch @var{p}.")
-{
-  Pitch *pp = unsmob_pitch (p);
-  SCM_ASSERT_TYPE(pp, p, SCM_ARG1, __FUNCTION__, "Pitch");
-
-  return gh_int2scm (pp->steps());
-}
-
-LY_DEFINE(pitch_octave, "ly:pitch-octave", 1, 0, 0, 
-	  (SCM pp),
-	  "extract the octave from pitch @var{p}.")
-{
-  Pitch *p = unsmob_pitch (pp);
-  SCM_ASSERT_TYPE(p, pp, SCM_ARG1, __FUNCTION__, "Pitch");
-  int q = p->get_octave ();
-
-  return gh_int2scm (q);
-}
-
-LY_DEFINE(pitch_alteration, "ly:pitch-alteration", 1, 0, 0, 
-	  (SCM pp),
-	  "extract the alteration from pitch  @var{p}.")
-{
-  Pitch *p = unsmob_pitch (pp);
-  SCM_ASSERT_TYPE(p, pp, SCM_ARG1, __FUNCTION__, "Pitch");
-  int     q = p->get_alteration ();
-
-  return gh_int2scm (q);
-}
-
-LY_DEFINE(pitch_notename, "ly:pitch-notename", 1, 0, 0, 
-	  (SCM pp),
-	  "extract the note name from pitch  @var{pp}.")
-{
-  Pitch *p = unsmob_pitch (pp);
-  SCM_ASSERT_TYPE(p, pp, SCM_ARG1, __FUNCTION__, "Pitch");
-  int q  = p->get_notename ();
-
-  return gh_int2scm (q);
-}
-
-LY_DEFINE(ly_pitch_quartertones,  "ly:pitch-quartertones", 1, 0, 0, 
-	  (SCM pp),
-	  "calculate the number of semitones of @var{p} from central C.")
-{
-  Pitch *p = unsmob_pitch (pp);
-  SCM_ASSERT_TYPE(p, pp, SCM_ARG1, __FUNCTION__, "Pitch");
- 
-  int q = p->quartertone_pitch ();
-  
-  return gh_int2scm (q);
-}
-
-LY_DEFINE(ly_pitch_semitones,  "ly:pitch-semitones", 1, 0, 0, 
-	  (SCM pp),
-	  "calculate the number of semitones of @var{p} from central C.")
-{
-  Pitch *p = unsmob_pitch (pp);
-  SCM_ASSERT_TYPE(p, pp, SCM_ARG1, __FUNCTION__, "Pitch");
- 
-  int q = p->semitone_pitch ();
-  
-  return gh_int2scm (q);
-}
-
-LY_DEFINE(pitch_less, "ly:pitch<?", 2,0,0, (SCM p1, SCM p2),
-	  "Is @var{p1} lower than @var{p2}? This uses lexicographic ordening.")
-{
-  Pitch *a = unsmob_pitch (p1);
-  Pitch *b = unsmob_pitch (p2);
-  
-  SCM_ASSERT_TYPE(a, p1, SCM_ARG1, __FUNCTION__, "Pitch");
-  SCM_ASSERT_TYPE(b, p2, SCM_ARG2, __FUNCTION__, "Pitch");
-
-  if (Pitch::compare (*a, *b) < 0)
-    return SCM_BOOL_T;
-  else
-    return SCM_BOOL_F;
-}
-
-LY_DEFINE(ly_pitch_diff, "ly:pitch-diff", 2 ,0 ,0,
-	  (SCM pitch, SCM  root),
-	  "Return pitch with value DELTA =  PITCH - ROOT, ie, "
-	  "ROOT == (ly:pitch-transpose PITCH DELTA).")
-{
-  Pitch *p = unsmob_pitch (pitch);
-  Pitch *r = unsmob_pitch (root);
-  SCM_ASSERT_TYPE(p, pitch, SCM_ARG1, __FUNCTION__, "Pitch");
-  SCM_ASSERT_TYPE(r, root, SCM_ARG2, __FUNCTION__, "Pitch");
-
-  return interval (*r,  *p).smobbed_copy();
-}
-
-SCM
-Pitch::smobbed_copy ()const
-{
-  Pitch *  p = new Pitch (*this);
-  return p->smobbed_self ();
-}
-
-int
-Pitch::get_octave ()const
-{
-  return octave_;
-}
-
-int
-Pitch::get_notename () const
-{
-  return notename_;
-}
-
-int
-Pitch::get_alteration () const
-{
-  return alteration_;
-}
-
-Pitch
-Pitch::transposed (Pitch d) const
-{
-  Pitch p =*this;
-  p.transpose (d);
-  return p;
-}
diff --git a/lily/property-iterator.cc b/lily/property-iterator.cc
deleted file mode 100644
index 9ce3befab7..0000000000
--- a/lily/property-iterator.cc
+++ /dev/null
@@ -1,171 +0,0 @@
-/*
-  property-iterator.cc -- implement Property_iterator
-
-  source file of the GNU LilyPond music typesetter
-
-  (c) 1997--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-*/
-
-#include "property-iterator.hh"
-#include "music.hh"
-#include "context-def.hh"
-#include "translator-group.hh"
-#include "global-translator.hh"
-
-
-bool check_grob(Music *mus, SCM sym);
-
-/**
-   There is no real processing to a property: just lookup the
-   translation unit, and set the property.
-*/
-void
-Property_iterator::process (Moment m)
-{
-  SCM sym = get_music ()->get_mus_property ("symbol");
-  if (gh_symbol_p (sym))
-    {
-      SCM val = get_music ()->get_mus_property ("value");
-      bool ok= true;
-      if (val != SCM_EOL)
-	ok = type_check_assignment (sym, val, ly_symbol2scm ("translation-type?"));
-      if (ok)
-	get_outlet ()->internal_set_property (sym, val);
-    }
-  Simple_music_iterator::process (m);
-}
-
-void
-Property_unset_iterator::process (Moment m)
-{
-  SCM sym = get_music ()->get_mus_property ("symbol");
-  type_check_assignment (sym, SCM_EOL, ly_symbol2scm ("translation-type?"));  
-  get_outlet ()->unset_property (sym);
-
-  Simple_music_iterator::process (m);
-}
-
-MAKE_SCHEME_CALLBACK(Property_iterator,once_finalization, 2);
-SCM
-Property_iterator::once_finalization(SCM translator, SCM music )
-{
-  Music * m = unsmob_music (music);
-  Translator_group * tg
-    = dynamic_cast<Translator_group*> (unsmob_translator (translator));
-  SCM sym = m->get_mus_property ("symbol");
-
-  tg->unset_property (sym);
-  return SCM_UNSPECIFIED;
-}
-
-void
-Property_iterator::do_quit ()
-{
-  if (to_boolean (get_music ()->get_mus_property  ("once")))
-    {
-      SCM trans = get_outlet ()->self_scm();
-      SCM music = get_music()->self_scm();
-
-      Global_translator * tg=  get_outlet ()->top_translator ();
-
-      tg->add_finalization (scm_list_n (once_finalization_proc,
-					trans, music, SCM_UNDEFINED));
-    }
-}
-
-
-SCM list_p = 0;
-
-/*
-  This is a rather crude check: we merely check if the translator
-  property is a list.
- */
-bool
-check_grob(Music *mus, SCM sym)
-{
-  if (!list_p)
-    {
-      list_p = gh_eval_str ("list?");
-    }
-  
-  
-  SCM type = scm_object_property (sym, ly_symbol2scm ("translation-type?"));
-  bool ok = type == list_p;
-
-  if (!ok)
-    {
-      mus->origin()->warning (_f("Not a grob name, `%s'." , ly_symbol2string (sym)));
-    }
-  return  ok;
-}
-
-void
-Push_property_iterator::process (Moment m)
-{
-  SCM sym = get_music ()->get_mus_property ("symbol");
-  if (check_grob (get_music (), sym))
-    {
-      SCM eprop = get_music ()->get_mus_property ("grob-property");
-      SCM val = get_music ()->get_mus_property ("grob-value");
-
-      if (to_boolean (get_music ()->get_mus_property ("pop-first"))
-	  && !to_boolean (get_music ()->get_mus_property ("once"))
-	  )
-	execute_pushpop_property (get_outlet (), sym, eprop, SCM_UNDEFINED);
-
-      execute_pushpop_property (get_outlet (), sym, eprop, val);
-    }
-  Simple_music_iterator::process (m);
-}
-
-MAKE_SCHEME_CALLBACK(Push_property_iterator,once_finalization, 2);
-SCM
-Push_property_iterator::once_finalization (SCM trans, SCM music)
-{
-  Music * mus = unsmob_music (music);
-  Translator_group * tg = dynamic_cast<Translator_group*> (unsmob_translator (trans));
-    
-  SCM sym = mus->get_mus_property ("symbol");
-  if (check_grob (mus, sym))
-    {
-      SCM eprop = mus->get_mus_property ("grob-property");
-  
-      execute_pushpop_property (tg, sym, eprop, SCM_UNDEFINED);
-    }
-  return SCM_UNSPECIFIED;
-}
-
-void
-Push_property_iterator::do_quit ()
-{
-  if (to_boolean (get_music ()->get_mus_property  ("once")))
-    {
-      SCM trans = get_outlet ()->self_scm();
-      SCM music = get_music ()->self_scm();
-
-      Global_translator * tg=  get_outlet ()->top_translator ();
-      tg->add_finalization (scm_list_n (once_finalization_proc,
-					trans, music, SCM_UNDEFINED));
-    }
-}
-
-void
-Pop_property_iterator::process (Moment m)
-{
-  SCM sym = get_music ()->get_mus_property ("symbol");
-  
-  if (check_grob (get_music (), sym))
-    {
-      SCM eprop = get_music ()->get_mus_property ("grob-property");
-execute_pushpop_property (get_outlet (), sym, eprop, SCM_UNDEFINED);
-    }
-  Simple_music_iterator::process (m);
-}
-
-
-
-IMPLEMENT_CTOR_CALLBACK (Pop_property_iterator);
-IMPLEMENT_CTOR_CALLBACK (Push_property_iterator);
-IMPLEMENT_CTOR_CALLBACK (Property_iterator);
-IMPLEMENT_CTOR_CALLBACK (Property_unset_iterator);
-
diff --git a/lily/protected-scm.cc b/lily/protected-scm.cc
deleted file mode 100644
index 93b29a48d4..0000000000
--- a/lily/protected-scm.cc
+++ /dev/null
@@ -1,64 +0,0 @@
-/*   
-  protected-scm.cc --  implement Protected_scm
-  
-  source file of the GNU LilyPond music typesetter
-  
-  (c) 1998--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-  
- */
-#include "protected-scm.hh"
-#include "lily-guile.hh"
-
-Protected_scm::Protected_scm ()
-{
-  object_ = SCM_UNDEFINED;
-}
-
-Protected_scm::Protected_scm (SCM s)
-{
-  object_ = SCM_NIMP (s)  ? scm_gc_protect_object (s): s;
-}
-
-Protected_scm::Protected_scm (Protected_scm const &s)
-{
-  object_ = SCM_NIMP (s.object_) ? scm_gc_protect_object (s.object_) : s.object_;
-}
-
-Protected_scm & 
-Protected_scm::operator = (SCM s)
-{
-  if (object_ == s)
-    return *this;
-  
-  if (SCM_NIMP (object_))
-    scm_gc_unprotect_object (object_);
-
-  object_ =  SCM_NIMP (s) ? scm_gc_protect_object (s): s;
-  return *this;
-}
-
-Protected_scm&
-Protected_scm::operator = (Protected_scm const &s)
-{
-  return operator= (s.object_);
-}
-
-
-Protected_scm::~Protected_scm ()
-{
-  if (SCM_NIMP (object_))
-    {
-      scm_gc_unprotect_object (object_);
-    }
-}
-
-Protected_scm::operator SCM () const
-{
-  return object_;
-}
-
-SCM 
-Protected_scm::to_SCM () const
-{
-  return object_;
-}
diff --git a/lily/recording-group-engraver.cc b/lily/recording-group-engraver.cc
deleted file mode 100644
index 1deac7f2b7..0000000000
--- a/lily/recording-group-engraver.cc
+++ /dev/null
@@ -1,91 +0,0 @@
-/*   
-  recording-group-engraver.cc -- implement Recording_group_engraver
-
-  source file of the GNU LilyPond music typesetter
-
-  (c) 2003--2004 Han-Wen Nienhuys <hanwen@xs4all.nl>
-
- */
-
-#include "engraver-group-engraver.hh"
-#include "protected-scm.hh"
-
-class Recording_group_engraver : public Engraver_group_engraver
-{
-public:
-  TRANSLATOR_DECLARATIONS(Recording_group_engraver);
-  virtual bool try_music (Music *m);
-  virtual void start_translation_timestep ();
-  virtual void stop_translation_timestep ();
-  virtual void finalize ();
-  virtual void initialize ();
-  Protected_scm accumulator_;
-};
-
-void
-Recording_group_engraver::initialize ()
-{
-  Engraver_group_engraver::initialize ();
-  accumulator_ = gh_cons (SCM_EOL, SCM_EOL);
-}
-
-Recording_group_engraver::Recording_group_engraver()
-{
-}
-
-void
-Recording_group_engraver::start_translation_timestep ()
-{
-  Engraver_group_engraver::start_translation_timestep();
-  
-  scm_set_car_x (accumulator_, gh_cons (now_mom ().smobbed_copy (), SCM_EOL));
-}
-
-void
-Recording_group_engraver::stop_translation_timestep ()
-{
-  Engraver_group_engraver::stop_translation_timestep();
-  scm_set_cdr_x (accumulator_, gh_cons (gh_car (accumulator_), gh_cdr (accumulator_)));
-
-  scm_set_car_x (accumulator_, SCM_EOL);
-}
-
-void
-Recording_group_engraver::finalize ()
-{
-  Engraver_group_engraver::finalize ();
-  SCM proc = get_property ("recordEventSequence");
-
-  if (gh_procedure_p (proc))
-    scm_call_2  (proc, self_scm(), gh_cdr (accumulator_));
-
-  accumulator_ = SCM_EOL;
-}
-
-bool
-Recording_group_engraver::try_music (Music  *m)
-{
-  bool here_success = Translator_group::try_music_on_nongroup_children (m);
-  bool retval = here_success;
-  if (!here_success && daddy_trans_)
-    retval = daddy_trans_->try_music (m);
-      
-  SCM seq = gh_cdar (accumulator_);
-  seq = gh_cons (gh_cons  (m->self_scm(), gh_bool2scm (here_success)),
-		 seq);
-  
-  scm_set_cdr_x  (gh_car (accumulator_), seq);
-
-  return retval;
-}
-
-
-ENTER_DESCRIPTION(Recording_group_engraver,
-		  "Engraver_group_engraver that records all music events "
-		  "for this context. Calls the procedure "
-		  "in @code{recordEventSequence} when finished.",
-		  "",
-		  "",
-		  "",
-		  "recordEventSequence",
-		  "");
diff --git a/lily/relative-octave-check.cc b/lily/relative-octave-check.cc
deleted file mode 100644
index f0234b8af6..0000000000
--- a/lily/relative-octave-check.cc
+++ /dev/null
@@ -1,38 +0,0 @@
-#include "relative-octave-check.hh"
-#include "input.hh"
-#include "pitch.hh"
-
-/*
-  yeah, so this should be in a separate file.
-  I'm lazy.
- */
-Pitch
-Relative_octave_check::to_relative_octave (Pitch p)
-{
-  Pitch * check_p = unsmob_pitch (get_mus_property ("pitch"));
-
-  int delta_oct = 0;
-  if (check_p)
-    {
-      Pitch no_octave (-1,
-		       check_p->get_notename (),
-		       check_p->get_alteration());
-
-      Pitch result = no_octave.to_relative_octave (p);
-
-      if (result != *check_p)
-	{
-	  String s = _("Failed octave check, got: ");
-	  s += result.to_string ();
-	  
-	  origin ()->warning (s);
-	  
-	  delta_oct = check_p->get_octave () - result.get_octave ();
-	}
-    }
-  
-  return  Pitch (p.get_octave () + delta_oct,
-		 p.get_notename (), p.get_alteration ());
-}
-
-ADD_MUSIC(Relative_octave_check);
diff --git a/lily/relative-octave-music.cc b/lily/relative-octave-music.cc
deleted file mode 100644
index 3a52d5d475..0000000000
--- a/lily/relative-octave-music.cc
+++ /dev/null
@@ -1,42 +0,0 @@
-/*   
-  relative-music.cc --  implement Relative_octave_music
-  
-  source file of the GNU LilyPond music typesetter
-  
-  (c) 1998--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-  
- */
-#include "relative-music.hh"
-#include "warn.hh"
-#include "scm-option.hh"
-
-
-Pitch
-Relative_octave_music::to_relative_octave (Pitch p)
-{
-  if (lily_1_8_relative)
-    {
-      lily_1_8_compatibility_used = true;
-      /*
-	ugh: last-pitch should  be junked.
-
-	Change this for lilypond 2.0. When you do,
-	then B should start where A left off.
-
-	\relative { A \relative { ...} B }
-
-      */
-      return * unsmob_pitch (get_mus_property ("last-pitch"));
-    }
-  else
-    return p;
-}
-
-
-Relative_octave_music::Relative_octave_music ()
-{
-}
-
-ADD_MUSIC (Relative_octave_music);
-
-
diff --git a/lily/repeat-acknowledge-engraver.cc b/lily/repeat-acknowledge-engraver.cc
deleted file mode 100644
index 18907b15b3..0000000000
--- a/lily/repeat-acknowledge-engraver.cc
+++ /dev/null
@@ -1,117 +0,0 @@
-/*   
-  repeat-acknowledge-engraver.cc --  implement Repeat_acknowledge_engraver
-  
-  source file of the GNU LilyPond music typesetter
-  
-  (c) 2000--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-  
- */
-#include "engraver.hh"
-#include "translator-group.hh"
-#include "repeated-music.hh"
-
-
-/*
-  Objective:
-
-  -- set and reset repeatCommands, so Unfolded_repeat_iterator knows
-    where to set variables.
-
-  -- collect information passed by Unfolded_repeat_iterator for
-   Bar_engraver: writes whichBar property. (TODO: check for
-   interactions with timing engraver.)
-  
- */
-class Repeat_acknowledge_engraver : public Engraver
-{
-public:
-  TRANSLATOR_DECLARATIONS(Repeat_acknowledge_engraver);
-
-  virtual void start_translation_timestep ();
-  virtual void process_music ();
-  virtual void initialize ();
-
-};
-
-void
-Repeat_acknowledge_engraver::initialize ()
-{
-  daddy_trans_->set_property ("repeatCommands", SCM_EOL);
-}
-
-
-Repeat_acknowledge_engraver::Repeat_acknowledge_engraver ()
-{
-}
-
-void
-Repeat_acknowledge_engraver::start_translation_timestep ()
-{
-  Translator_group * tr = daddy_trans_->where_defined (ly_symbol2scm ("repeatCommands"));
-  if (!tr)
-    tr = daddy_trans_;
-
-  tr->set_property ("repeatCommands", SCM_EOL);
-}
-
-void
-Repeat_acknowledge_engraver::process_music ()
-{
-  /*
-    At the start of a piece, we don't print any repeat bars.
-   */
-  if (now_mom () == Moment (0))
-    return ; 
-  
-  SCM cs = get_property ("repeatCommands");
-  
-  String s = "";
-  bool start = false;
-  bool end = false;
-  bool volta_found = false;
-  while (gh_pair_p (cs))
-    {
-      SCM command = ly_car (cs);
-      if (command == ly_symbol2scm ("start-repeat"))
-	start = true;
-      else if (command == ly_symbol2scm ("end-repeat"))
-	end = true;
-      else if (gh_pair_p (command) && ly_car (command) == ly_symbol2scm ("volta"))
-	volta_found = true;
-      cs = ly_cdr (cs);      
-    }
-
-  if (start && end)
-    s = ":|:";
-  else if (start)
-    s = "|:";
-  else if (end)
-    s = ":|";
-
-  /*
-    TODO: line breaks might be allowed if we set whichBar to "".
-   */
-
-  /*
-    We only set the barline if we wouldn't overwrite a previously set
-    barline.
-   */
-  SCM wb = get_property ("whichBar");
-  SCM db  = get_property ("defaultBarType");
-  if (!gh_string_p (wb) || gh_equal_p (db, wb))
-    {
-      if (s != "" || (volta_found && !gh_string_p (wb)))
-	{
-	  daddy_trans_->set_property ("whichBar", scm_makfrom0str (s.to_str0 ()));
-	}
-    }
-}
-
-ENTER_DESCRIPTION(Repeat_acknowledge_engraver,
-/* descr */       "Acknowledge repeated music, and convert the contents of "
-"repeatCommands ainto an appropriate setting for whichBar.",
-/* creats*/       "",
-/* accepts */     "",
-/* acks  */      "",
-/* reads */       "repeatCommands whichBar",
-/* write */       "");
diff --git a/lily/repeated-music.cc b/lily/repeated-music.cc
deleted file mode 100644
index 85a1c280bc..0000000000
--- a/lily/repeated-music.cc
+++ /dev/null
@@ -1,188 +0,0 @@
-/*   
-  repeated-music.cc --  implement Repeated_music
-  
-  source file of the GNU LilyPond music typesetter
-  
-  (c) 1999--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-  
- */
-
-#include "repeated-music.hh"
-#include "music-list.hh"
-#include "pitch.hh"
-#include "warn.hh"
-#include "music-sequence.hh"
-#include "scm-option.hh"
-
-Music *
-Repeated_music::body ()const
-{
-  return unsmob_music (get_mus_property ("element"));
-}
-
-SCM
-Repeated_music::alternatives ()const
-{
-  return get_mus_property ("elements");
-}
-
-
-
-
-Pitch
-Repeated_music::to_relative_octave (Pitch p)
-{
-  if (lily_1_8_relative)
-    {
-      if (body ())
-	p = body ()->to_relative_octave (p);
-
-      Pitch last = p ; 
-      if (alternatives ())
-	{
-	  lily_1_8_compatibility_used = true; 
-
-	  for (SCM s = alternatives (); gh_pair_p (s);  s = ly_cdr (s))
-	    unsmob_music (ly_car (s))->to_relative_octave (p);
-	}     
-
-      return last;
-    }
-  else
-    {
-      return Music::to_relative_octave (p);
-    }
-}
-
-
-Moment
-Repeated_music::alternatives_get_length (bool fold) const
-{
-  if (!alternatives ())
-    return 0;
-  
-  if (fold)
-    return Music_sequence::maximum_length (alternatives ());
-
-  Moment m =0;
-  int done =0;
-
-  SCM p = alternatives ();
-  while (gh_pair_p (p) && done < repeat_count ())
-    {
-      m = m + unsmob_music (ly_car (p))->get_length ();
-      done ++;
-      if (repeat_count () - done < scm_ilength (alternatives ()))
-	p = ly_cdr (p);
-    }
-  return m;
-}
-
-/*
-  Sum all duration of all available alternatives. This is for the case
-  of volta repeats, where the alternatives are iterated just as they
-  were entered.  */
-Moment
-Repeated_music::alternatives_volta_get_length () const
-{
-  if (!alternatives ())
-    return 0;
-
-  Moment m;
-  SCM p = alternatives ();
-  while (gh_pair_p (p))
-    {
-      m = m + unsmob_music (ly_car (p))->get_length ();
-      p = ly_cdr (p);
-    }
-  return m;
-}
-
-
-/*
-  Length of the body in THIS. Disregards REPEAT-COUNT. 
- */
-Moment
-Repeated_music::body_get_length () const
-{
-  Moment m = 0;
-  if (body ())
-    {
-      m = body ()->get_length ();
-    }
-  return m;
-}
-
-int
-Repeated_music::repeat_count () const
-{
-  return gh_scm2int (get_mus_property ("repeat-count"));
-}
-
-
-MAKE_SCHEME_CALLBACK (Repeated_music,unfolded_music_length, 1);
-MAKE_SCHEME_CALLBACK (Repeated_music,folded_music_length, 1);
-MAKE_SCHEME_CALLBACK (Repeated_music,volta_music_length, 1);
-
-SCM
-Repeated_music::unfolded_music_length (SCM m)
-{
-  Repeated_music* r = dynamic_cast<Repeated_music*> (unsmob_music (m));
-  
-  Moment l = Moment (r->repeat_count ()) * r->body_get_length () + r->alternatives_get_length (false);
-  return l.smobbed_copy ();
-}
-
-SCM
-Repeated_music::folded_music_length (SCM m)
-{
-  Repeated_music* r = dynamic_cast<Repeated_music*> (unsmob_music (m));
- 
-  Moment l =  r->body_get_length () + r->alternatives_get_length (true);
-  return l.smobbed_copy ();
-}
-
-SCM
-Repeated_music::volta_music_length (SCM m)
-{
-  Repeated_music* r = dynamic_cast<Repeated_music*> (unsmob_music (m));
-  Moment l =  r->body_get_length () + r->alternatives_volta_get_length ();
-  return l.smobbed_copy ();
-}
-
-ADD_MUSIC (Repeated_music);
-
-Repeated_music::Repeated_music ()
-  : Music ()
-{
-}
-
-
-MAKE_SCHEME_CALLBACK (Repeated_music,minimum_start, 1);
-MAKE_SCHEME_CALLBACK (Repeated_music,first_start, 1);
-
-SCM
-Repeated_music::minimum_start (SCM m)
-{
-  Music * me = unsmob_music (m);
-  Music * body = unsmob_music (me->get_mus_property ("element"));
-
-  if (body)
-    return body->start_mom ().smobbed_copy();
-  else
-    {
-      return Music_sequence::minimum_start (me->get_mus_property ("elements")).smobbed_copy();
-    }
-}
-
-SCM
-Repeated_music::first_start (SCM m)
-{
-  Music * me = unsmob_music (m);
-  Music * body = unsmob_music (me->get_mus_property ("element"));
-
-  Moment rv =  (body) ? body->start_mom () :
-    Music_sequence::first_start (me->get_mus_property ("elements"));
-
-  return rv.smobbed_copy ();
-}
diff --git a/lily/rest-collision-engraver.cc b/lily/rest-collision-engraver.cc
deleted file mode 100644
index af3d0ecc89..0000000000
--- a/lily/rest-collision-engraver.cc
+++ /dev/null
@@ -1,80 +0,0 @@
-/*
-  rest-collision-reg.cc -- implement Rest_collision_engraver
-
-  source file of the GNU LilyPond music typesetter
-
-  (c) 1997--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-*/
-
-#include "warn.hh"
-#include "rest-collision.hh"
-#include "engraver.hh"
-#include "note-collision.hh"
-#include "note-column.hh"
-
-class Rest_collision_engraver : public Engraver
-{
-  Item* rest_collision_;
-  int rest_count_; 
-  Link_array<Grob> note_columns_;
-protected:
-  virtual void acknowledge_grob (Grob_info);
-  virtual void process_acknowledged_grobs ();
-  virtual void stop_translation_timestep ();
-public:
-  TRANSLATOR_DECLARATIONS(Rest_collision_engraver);  
-};
-
-
-
-Rest_collision_engraver::Rest_collision_engraver ()
-{
-  rest_collision_ =0;
-  rest_count_ = 0;
-}
-
-void
-Rest_collision_engraver::process_acknowledged_grobs ()
-{
-  if (rest_collision_
-      || note_columns_.is_empty ()
-      || !rest_count_)
-    return;
-
-  rest_collision_ = make_item ("RestCollision");
-
-  announce_grob(rest_collision_, SCM_EOL);
-  for (int i=0; i < note_columns_.size (); i++)
-    Rest_collision::add_column (rest_collision_,note_columns_[i]);
-}
-
-void
-Rest_collision_engraver::acknowledge_grob (Grob_info i)
-{
-  if (Note_column::has_interface (i.grob_))
-    {
-      note_columns_.push (i.grob_);
-      if (Note_column::has_rests (i.grob_))
-	rest_count_ ++;
-    }
-}
-
-void
-Rest_collision_engraver::stop_translation_timestep ()
-{
-  if (rest_collision_) 
-    {
-      typeset_grob (rest_collision_);
-      rest_collision_ = 0;
-    }
-  note_columns_.clear ();
-  rest_count_ = 0;
-}
-
-ENTER_DESCRIPTION(Rest_collision_engraver,
-/* descr */       "Handles collisions of rests.",
-/* creats*/       "RestCollision",
-/* accepts */     "",
-/* acks  */      "note-column-interface",
-/* reads */       "",
-/* write */       "");
diff --git a/lily/rest-collision.cc b/lily/rest-collision.cc
deleted file mode 100644
index e80e0d9cd7..0000000000
--- a/lily/rest-collision.cc
+++ /dev/null
@@ -1,253 +0,0 @@
-/*
-  rest-collision.cc -- implement Rest_collision
-
-  source file of the GNU LilyPond music typesetter
-
-  (c) 1997--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-*/
-
-#include <math.h>		// ceil.
-
-#include "warn.hh"
-#include "rest-collision.hh"
-#include "note-column.hh"
-#include "stem.hh"
-#include "rhythmic-head.hh"
-#include "paper-def.hh"
-#include "rest.hh"
-#include "group-interface.hh"
-#include "staff-symbol-referencer.hh"
-#include "duration.hh"
-
-MAKE_SCHEME_CALLBACK (Rest_collision,force_shift_callback,2);
-SCM
-Rest_collision::force_shift_callback (SCM element_smob, SCM axis)
-{
-  Grob *them = unsmob_grob (element_smob);
-  Axis a = (Axis) gh_scm2int (axis);
-  assert (a == Y_AXIS);
-
-  Grob * rc = unsmob_grob (them->get_grob_property ("rest-collision"));
-
-  if (rc && !to_boolean (rc->get_grob_property ("positioning-done")))
-    {
-      rc->set_grob_property ("positioning-done", SCM_BOOL_T);
-
-      do_shift (rc);
-    }
-  
-  return gh_double2scm (0.0);
-}
-
-void
-Rest_collision::add_column (Grob*me,Grob *p)
-{
-  me->add_dependency (p);
-  Pointer_group_interface::add_grob (me, ly_symbol2scm ("elements"), p);
-
-  /*
-    only add callback for the rests, since we don't move anything
-    else.
-
- (not?)
-  */
-  p->add_offset_callback (Rest_collision::force_shift_callback_proc, Y_AXIS);
-  p->set_grob_property ("rest-collision", me->self_scm ());
-}
-
-
-/*
-  Combination of dot-count and duration-log.
- */
-static SCM
-head_characteristic (Grob * col)
-{
-  Grob * s = unsmob_grob (col->get_grob_property ("rest"));
-
-  if (!s)
-    return SCM_BOOL_F;
-  else
-    return gh_cons (s->get_grob_property ("duration-log"),
-		    gh_int2scm (Rhythmic_head::dot_count (s)));
-}
-
-/*
-  TODO: fixme, fucks up if called twice on the same set of rests.
-
-  TODO: look at horizontal-shift to determine ordering between rests
-  for more than two voices.
-
-  TODO: look at previous note to determine vertical position?
-  
- */
-SCM
-Rest_collision::do_shift (Grob *me)
-{
-  SCM elts = me->get_grob_property ("elements");
-
-  Link_array<Grob> rests;
-  Link_array<Grob> notes;
-
-  for (SCM s = elts; gh_pair_p (s); s = ly_cdr (s))
-    {
-      Grob * e = unsmob_grob (ly_car (s));
-      if (unsmob_grob (e->get_grob_property ("rest")))
-	rests.push (e);
-      else
-	notes.push (e);
-    }
-
-  
-  /* 
-     handle rest-rest and rest-note collisions
-
-     [todo]
-     * decide not to print rest if too crowded?
-
-     * ignore rests under beams.
-   */
-
-  // no rests to collide
-  if (!rests.size ())
-    return SCM_UNSPECIFIED;
-
-  // no partners to collide with
-  if (rests.size () + notes.size () < 2)
-    {
-      if (rests.size () == 1
-	  && Note_column::dir (rests[0]))
-	{
-	  Note_column::translate_rests (rests[0],
-					4 * Note_column::dir (rests[0]));
-	}
-    }
-  // meisjes met meisjes
-  if (!notes.size ()) 
-    {
-      SCM characteristic = head_characteristic (rests[0]);
-      int i = 1;
-      for (; i < rests.size (); i++)
-	{
-	  if (!gh_equal_p (head_characteristic (rests[i]), characteristic))
-	    break;
-	}
-
-      /*
-	If all durations are the same, we'll check if there are more
-	rests than maximum-rest-count.
-	Otherwise (different durations), we'll try to display them all
- (urg: all 3 of them, currently).
-       */
-      int display_count;
-      SCM s = me->get_grob_property ("maximum-rest-count");
-      if (i == rests.size ()
-	  && gh_number_p (s) && gh_scm2int (s) < rests.size ())
-	{
-	  display_count = gh_scm2int (s);
-	  for (; i > display_count; i--)
-	    {
-	      Grob* r = unsmob_grob (rests[i-1]->get_grob_property ("rest"));
-	      if (r)
-		{
-		  Grob * d = unsmob_grob (r->get_grob_property ("dot"));
-		  if (d)
-		    d->suicide();
-		  r->suicide ();
-		}
-	      rests[i-1]->suicide ();
-	    }
-	}
-      else
-	display_count = rests.size ();
-      
-      /*
-	Ugh. Should have minimum dist.
-
-	Ugh. What do we do if we have three different rests?
-	
-       */
-      int dy = display_count > 2 ? 6 : 4; // FIXME Should get dims from table.
-      if (display_count > 1)
-	{
-	  Direction d0 = Note_column::dir (rests[0]);
-	  Direction d1 = Note_column::dir (rests[1]);	  
-
-	  if (!d0 && !d1)
-	    {
-	      d0= UP;
-	      d1 = DOWN;
-	    }
-	  else if (!d0)
-	    d0 = - d1;
-	  else if (!d1)
-	    d1 = -d0;
-		
-	  Note_column::translate_rests (rests[0],d0 *dy);	
-	  Note_column::translate_rests (rests[1], d1 *dy);
-	}
-    }
-  // meisjes met jongetjes
-  else 
-    {
-      if (rests.size () > 1)
-	{
-	  warning (_ ("too many colliding rests"));
-	}
-      Grob * rcol = rests[0];
-      Direction dir = Note_column::dir (rests[0]);
-
-      if (!dir)
-	{
-	  dir = - Note_column::dir (notes[0]);
-	}
-      Grob * r = unsmob_grob (rcol->get_grob_property ("rest"));
-      Interval restdim = r->extent (r, Y_AXIS);	// ??
-
-      if (restdim.is_empty ())
-	return SCM_UNSPECIFIED;
-      
-
-      Real staff_space = Staff_symbol_referencer::staff_space (rcol);
-
-      Real minimum_dist = robust_scm2double (me->get_grob_property ("minimum-distance"), 1.0) * staff_space;
-
-
-      Grob *common = common_refpoint_of_array (notes, rcol, Y_AXIS);
-
-      Interval notedim;
-      for (int i = 0; i < notes.size (); i++) 
-	{
-	  notedim.unite (notes[i]->extent (common, Y_AXIS));
-	}
-
-      Interval inter (notedim);
-      inter.intersect (restdim);
-
-      Real dist =
-	minimum_dist +  dir * (notedim[dir] - restdim[-dir]) >? 0;
-
-      int stafflines = Staff_symbol_referencer::line_count (me);
-      if (!stafflines)
-	{
-	  programming_error ("No staff line count ? ");
-	  stafflines =5;
-	}
-      
-      // move discretely by half spaces.
-      int discrete_dist = int (ceil (dist / (0.5 *staff_space)));
-
-      // move by whole spaces inside the staff.
-      if (discrete_dist < stafflines+1)
-	discrete_dist = int (ceil (discrete_dist / 2.0)* 2.0);
-      
-      Note_column::translate_rests (rcol,dir * discrete_dist);
-    }
-  return SCM_UNSPECIFIED;
-}
-
-
-ADD_INTERFACE (Rest_collision,"rest-collision-interface",
-  "Move around ordinary rests (not multi-measure-rests) to avoid "
-"conflicts.",
-  "maximum-rest-count minimum-distance positioning-done elements");
-
diff --git a/lily/rest-engraver.cc b/lily/rest-engraver.cc
deleted file mode 100644
index a660dfda44..0000000000
--- a/lily/rest-engraver.cc
+++ /dev/null
@@ -1,124 +0,0 @@
-/*
-  rest-grav.cc -- implement Rest_engraver
-
-  source file of the GNU LilyPond music typesetter
-
-  (c) 1997--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-*/
-#include "item.hh"
-#include "staff-symbol-referencer.hh"
-#include "event.hh"
-#include "dots.hh"
-#include "rhythmic-head.hh"
-#include "engraver.hh"
-
-
-class Rest_engraver : public Engraver
-{
-  Music *rest_req_;
-  Item * dot_;
-  Grob* rest_;
-protected:
-  virtual bool try_music (Music *);
-  virtual void stop_translation_timestep ();
-  virtual void start_translation_timestep ();
-  virtual void process_music ();
-
-public:
-  TRANSLATOR_DECLARATIONS(Rest_engraver);
-};
-
-
-/*
-  Should merge with Note_head_engraver
- */
-Rest_engraver::Rest_engraver ()
-{
-  rest_req_ =0;
-  rest_ =0;
-  dot_ =0;
-}
-
-void
-Rest_engraver::start_translation_timestep ()
-{
-  rest_req_ =0;
-}
-
-void
-Rest_engraver::stop_translation_timestep ()
-{
-  if (rest_)
-    {
-      typeset_grob (rest_);
-      rest_ =0;
-    }
-  if (dot_)
-    {
-      typeset_grob (dot_);
-      dot_ =0;
-    }    
-}
-
-void
-Rest_engraver::process_music ()
-{
-  if (rest_req_ && !rest_) 
-    {
-      rest_ = make_item ("Rest");
-
-      int durlog  = unsmob_duration (rest_req_->get_mus_property ("duration"))-> duration_log ();
-      
-      rest_->set_grob_property ("duration-log",
-				  gh_int2scm (durlog));
-
-      int dots =unsmob_duration (rest_req_->get_mus_property ("duration"))->dot_count ();
-      
-      if (dots)
-	{
-	  dot_ = make_item ("Dots");
-
-	  Rhythmic_head::set_dots (rest_, dot_);
-	  dot_->set_parent (rest_, Y_AXIS);
-	  dot_->set_grob_property ("dot-count", gh_int2scm (dots));
-	  announce_grob (dot_, SCM_EOL);
-	}
-
-      Pitch *p = unsmob_pitch (rest_req_->get_mus_property ("pitch"));
-
-      /*
-	This is ridiculous -- rests don't have pitch, but we act as if
-	our nose is bleeding.
-       */
-      if (p)
-	{
-	  int pos= p->steps ();
-	  SCM c0 = get_property ("centralCPosition");
-	  if (gh_number_p (c0))
-	    pos += gh_scm2int (c0);
-	  
-	  rest_->set_grob_property ("staff-position", gh_int2scm (pos));
-	}
-      
-      announce_grob(rest_, rest_req_->self_scm());
-    }
-}
-
-bool
-Rest_engraver::try_music (Music *m)
-{
-  if (m->is_mus_type ("rest-event"))
-    {
-      rest_req_ = m;
-      return true;
-    }
-  return false;
-}
-
-ENTER_DESCRIPTION(Rest_engraver,
-/* descr */       "",
-/* creats*/       "Rest Dots",
-/* accepts */     "rest-event",
-/* acks  */      "",
-/* reads */       "centralCPosition",
-/* write */       "");
diff --git a/lily/rest.cc b/lily/rest.cc
deleted file mode 100644
index 210e756814..0000000000
--- a/lily/rest.cc
+++ /dev/null
@@ -1,167 +0,0 @@
-/*
- rest.cc -- implement Rest
-
-  source file of the GNU LilyPond music typesetter
-
-  (c) 1997--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-*/
-
-#include "molecule.hh"
-#include "paper-def.hh"
-#include "font-interface.hh"
-#include "rest.hh"
-#include "dots.hh"
-#include "paper-score.hh"
-#include "staff-symbol-referencer.hh"
-
-// -> offset callback
-MAKE_SCHEME_CALLBACK (Rest,after_line_breaking,1);
-SCM
-Rest::after_line_breaking (SCM smob)
-{
-  Grob *me = unsmob_grob (smob);
-  int bt = gh_scm2int (me->get_grob_property ("duration-log"));
-  int lc = Staff_symbol_referencer::line_count (me);
-  Real ss = Staff_symbol_referencer::staff_space (me);
-  if(lc % 2)
-    {
-      if (bt == 0 && lc > 1)
-	{
-	  me->translate_axis (ss , Y_AXIS);
-	}
-    }
-  else
-    {
-      me->translate_axis (ss/2 , Y_AXIS);
-    }
-
-  Grob * d = unsmob_grob (me->get_grob_property ("dot"));
-  if (d && bt > 4) // UGH.
-    {
-      d->set_grob_property ("staff-position",
-			    gh_int2scm ((bt == 7) ? 4 : 3));
-    }
-  if (d && bt >= -1 && bt <= 1) // UGH again.
-    {
-      d->set_grob_property ("staff-position",
-      			    gh_int2scm ((bt == 0) ? -1 : 1));
-    }
-  return SCM_UNSPECIFIED;
-}
-
-/*
-  make this function easily usable in C++
- */
-String
-Rest::glyph_name (Grob *me, int balltype, String style)
-{
-  bool ledgered_b = false;
-
-  if (balltype == 0 || balltype == 1)
-    {
-      Real rad = Staff_symbol_referencer::staff_radius (me) * 2.0;
-      Real pos = Staff_symbol_referencer::get_position (me);
-
-      /*
-	Figure out when the rest is far enough outside the staff. This
-	could bemore generic, but hey, we understand this even after
-	dinner.
-       */
-      ledgered_b |= (balltype == 0) && (pos >= +rad + 2 || pos < -rad);
-      ledgered_b |= (balltype == 1) && (pos <= -rad - 2 || pos > +rad);
-    }
-
-  String actual_style (style.to_str0 ());
-
-  if ((style == "mensural") || (style == "neo_mensural")) {
-
-    /*
-      FIXME: Currently, ancient font does not provide ledgered rests;
-      hence the "o" suffix in the glyph name is bogus.  But do we need
-      ledgered rests at all now that we can draw ledger lines with
-      variable width, length and blotdiameter? -- jr
-    */
-    ledgered_b = 0;
-
-    /*
-      There are no 32th/64th/128th mensural/neo_mensural rests.  In
-      these cases, revert back to default style.
-    */
-    if (balltype > 4)
-      actual_style = "";
-  }
-
-  if ((style == "classical") && (balltype != 2)) {
-    /*
-      classical style: revert back to default style for any rest other
-      than quarter rest
-    */
-    actual_style = "";
-  }
-
-  if (style == "default") {
-    /*
-      Some parts of lily still prefer style "default" over "".
-      Correct this here. -- jr
-    */
-    actual_style = "";
-  }
-
-  return ("rests-") + to_string (balltype) + (ledgered_b ? "o" : "") + actual_style;
-}
-
-
-MAKE_SCHEME_CALLBACK (Rest,print,1);
-
-SCM
-Rest::brew_internal_molecule (SCM smob)
-{
-  Grob* me = unsmob_grob (smob);
-
-  SCM balltype_scm = me->get_grob_property ("duration-log");
-  if (!gh_number_p (balltype_scm))
-    return Molecule ().smobbed_copy ();
-
-  int balltype = gh_scm2int (balltype_scm);
-  
-  String style; 
-  SCM style_scm = me->get_grob_property ("style");
-  if (gh_symbol_p (style_scm))
-    {
-      style = ly_scm2string (scm_symbol_to_string (style_scm));
-    }
-
-  Font_metric *fm = Font_interface::get_default_font (me);
-  String font_char = glyph_name (me, balltype, style);
-  Molecule out = fm->find_by_name (font_char);
-  if (out.is_empty ())
-    {
-      me->warning (_f ("rest `%s' not found, ", font_char.to_str0 ()));
-    }
-
-  return out.smobbed_copy();
-}
-
-SCM 
-Rest::print (SCM smob) 
-{
-  return brew_internal_molecule (smob);
-}
-MAKE_SCHEME_CALLBACK (Rest,extent_callback,2);
-/*
-  We need the callback. The real molecule has ledgers depending on
-  Y-position. The Y-position is known only after line breaking.  */
-SCM
-Rest::extent_callback (SCM smob, SCM ax)
-{
-  Axis a = (Axis) gh_scm2int (ax);
-  SCM m = brew_internal_molecule (smob);
-  return ly_interval2scm (unsmob_molecule (m)->extent (a));
-}
-
-
-
-ADD_INTERFACE (Rest,"rest-interface",
-  "a rest",
-  "style minimum-distance");
-
diff --git a/lily/rhythmic-column-engraver.cc b/lily/rhythmic-column-engraver.cc
deleted file mode 100644
index 8efcf1cd40..0000000000
--- a/lily/rhythmic-column-engraver.cc
+++ /dev/null
@@ -1,179 +0,0 @@
-/*
-  rhythmic-column-grav.cc -- implement Rhythmic_column_engraver
-
-  source file of the GNU LilyPond music typesetter
-
-  (c) 1997--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-*/
-
-
-#include "slur.hh"
-#include "engraver.hh"
-#include "rhythmic-head.hh"
-#include "stem.hh"
-#include "note-column.hh"
-#include "dot-column.hh"
-#include "event.hh"
-#include "item.hh"
-#include "group-interface.hh"
-
-
-
-/*
-  this engraver  glues together stems, rests and note heads into a NoteColumn
-  grob.
-
-  It also generates spacing objects.  Originally, we have tried to
-  have the spacing functionality at different levels.
-  
-  - by simply using the sequence of Separation-item as
-  spacing-sequences (at staff level). Unfortunately, this fucks up if
-  there are different kinds of tuplets in different voices (8th and
-  8ths triplets combined made the program believe there were 1/12 th
-  notes.).
-
-  Doing it in a separate engraver using timing info is generally
-  complicated (start/end time management), and fucks up if a voice
-  changes staff.
-
-  Now we do it from here again. This has the problem that voices can
-  appear and disappear at will, leaving lots of loose ends (the note
-  spacing engraver don't know where to connect the last note of the
-  voice on the right with), but we don't complain about those, and let
-  the default spacing do its work.
-
- */
-
-
-class Rhythmic_column_engraver :public Engraver
-{
-  Link_array<Grob> rheads_;
-  Grob * stem_;
-  Grob * note_column_;
-  Grob * dotcol_;
-
-  Grob * last_spacing_;
-  Grob * spacing_;
-  
-  TRANSLATOR_DECLARATIONS(Rhythmic_column_engraver);
-protected:
-
-  virtual void acknowledge_grob (Grob_info);
-  virtual void process_acknowledged_grobs ();
-  virtual void stop_translation_timestep ();
-};
-
-
-
-Rhythmic_column_engraver::Rhythmic_column_engraver ()
-{
-  spacing_ =0 ;
-  last_spacing_ = 0;
-  
-  stem_ =0;
-  note_column_=0;
-  dotcol_ =0;
-}
-
-
-void
-Rhythmic_column_engraver::process_acknowledged_grobs ()
-{
-  if (rheads_.size ())
-    {
-      if (!note_column_)
-	{
-	  note_column_ = make_item ("NoteColumn");
-	  announce_grob(note_column_, rheads_[0]->self_scm ());
-
-	  spacing_ = make_item ("NoteSpacing");
-	  spacing_->set_grob_property ("left-items", gh_cons (note_column_->self_scm (), SCM_EOL));
-
-
-	  announce_grob (spacing_, SCM_EOL);
-
-	  if (last_spacing_)
-	    {
-	      Pointer_group_interface::add_grob (last_spacing_,
-						 ly_symbol2scm ("right-items" ),
-						 note_column_);
-	    }
-
-	}
-
-      for (int i=0; i < rheads_.size (); i++)
-	{
-	  if (!rheads_[i]->get_parent (X_AXIS))
-	    Note_column::add_head (note_column_, rheads_[i]);
-	}
-      rheads_.set_size (0);
-    }
-
-  
-  if (note_column_)
-    {
-      if (dotcol_
-	  && !dotcol_->get_parent (X_AXIS))
-	{
-	  Note_column::set_dotcol (note_column_, dotcol_);
-	}
-
-      if (stem_
-	  && !stem_->get_parent (X_AXIS))
-	{
-	  Note_column::set_stem (note_column_, stem_);
-	  stem_ = 0;
-	}
-
-    }
-}
-
-void
-Rhythmic_column_engraver::acknowledge_grob (Grob_info i)
-{
-  Item * item =  dynamic_cast <Item *> (i.grob_);
-  if (!item || item->get_parent (X_AXIS))
-    return ; 
-  if (Stem::has_interface (item))
-    {
-      stem_ = item;
-    }
-  else if (Rhythmic_head::has_interface (item))
-    {
-      rheads_.push (item);
-    }
-  else if (Dot_column::has_interface (item))
-    {
-      dotcol_ = item;
-    }
-}
-
-void
-Rhythmic_column_engraver::stop_translation_timestep ()
-{
-  if (note_column_) 
-    {
-      typeset_grob (note_column_);
-      note_column_ =0;
-    }
-
-  if (spacing_)
-    {
-      typeset_grob (spacing_);
-      last_spacing_ = spacing_;
-      spacing_ =0;
-    }
-  
-  dotcol_ =0;
-  stem_ =0;
-}
-
-
-
-ENTER_DESCRIPTION(Rhythmic_column_engraver,
-/* descr */       "Generates NoteColumn, an objects that groups stems, noteheads and rests.",
-/* creats*/       "NoteColumn NoteSpacing",
-/* accepts */     "",
-/* acks  */      "stem-interface rhythmic-head-interface dot-column-interface",
-/* reads */       "",
-/* write */       "");
diff --git a/lily/rhythmic-head.cc b/lily/rhythmic-head.cc
deleted file mode 100644
index 977777f98b..0000000000
--- a/lily/rhythmic-head.cc
+++ /dev/null
@@ -1,58 +0,0 @@
-/*
-  rhythmic-head.cc -- implement Rhythmic_head
-
-  source file of the GNU LilyPond music typesetter
-
-  (c) 1997--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-*/
-
-#include "rhythmic-head.hh"
-#include "warn.hh"
-#include "rest.hh"
-#include "stem.hh"
-#include "staff-symbol-referencer.hh"
-#include "item.hh"
-
-
-Item*
-Rhythmic_head::get_dots (Grob*me) 
-{
-  SCM s = me->get_grob_property ("dot");
-  return unsmob_item (s);
-}
-
-Item*
-Rhythmic_head::get_stem (Grob*me) 
-{
-  SCM s = me->get_grob_property ("stem");
-  return unsmob_item (s);
-}
-
-int
-Rhythmic_head::dot_count (Grob*me) 
-{
-  return get_dots (me)
-    ? gh_scm2int (get_dots (me)->get_grob_property ("dot-count")) : 0;
-}
-
-void
-Rhythmic_head::set_dots (Grob*me,Item *dot)
-{
-  me->set_grob_property ("dot", dot->self_scm ());
-}
-
-
-
-int
-Rhythmic_head::duration_log (Grob*me) 
-{
-  SCM s = me->get_grob_property ("duration-log");
-  return gh_number_p (s) ? gh_scm2int (s) : 0;
-}
-
-
-
-ADD_INTERFACE (Rhythmic_head,"rhythmic-head-interface",
-  "Note head or rest",
-  "dot stem duration-log");
-
diff --git a/lily/rod.cc b/lily/rod.cc
deleted file mode 100644
index d79fd7f772..0000000000
--- a/lily/rod.cc
+++ /dev/null
@@ -1,44 +0,0 @@
-/*   
-  rod.cc --  implement Rod, Column_rod
-  
-  source file of the GNU LilyPond music typesetter
-  
-  (c) 1998--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-  
- */
-#include "rod.hh"
-#include "paper-column.hh"
-#include "warn.hh"
-#include "dimensions.hh"
-#include "spaceable-grob.hh"
-
-Rod::Rod ()
-{
-  distance_ = 0.0;
-  item_l_drul_[LEFT] = item_l_drul_[RIGHT] =0;
-}
-
-
-
-void
-Rod::columnize ()
-{
-  Direction d = LEFT;
-  do {
-    Paper_column * pc = item_l_drul_[d]->get_column ();
-    distance_ += - d * item_l_drul_[d]->relative_coordinate (pc, X_AXIS);
-    item_l_drul_[d] = pc;
-  } while ((flip (&d))!=LEFT);
-
-}
-
-void
-Rod::add_to_cols ()
-{
-  columnize ();
-  if (item_l_drul_[LEFT] != item_l_drul_[RIGHT])
-    Spaceable_grob::add_rod (item_l_drul_[LEFT],
-				item_l_drul_[RIGHT],
-				distance_);
-}
-
diff --git a/lily/scaled-font-metric.cc b/lily/scaled-font-metric.cc
deleted file mode 100644
index ca0039386d..0000000000
--- a/lily/scaled-font-metric.cc
+++ /dev/null
@@ -1,87 +0,0 @@
-/*   
-     scaled-font-metric.cc -- declare Scaled_font_metric
-  
-  source file of the GNU LilyPond music typesetter
-  
-  (c) 1999--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-  
- */
-
-#include "scaled-font-metric.hh"
-#include "string.hh"
-#include "molecule.hh"
-
-
-Scaled_font_metric::Scaled_font_metric (Font_metric* m, Real magn)
-{
-  magnification_ = magn;
-  SCM desc = m->description_;
-
-  Real total_mag = magn * gh_scm2double (ly_cdr (desc));
-  assert (total_mag);
-  
-  description_ = gh_cons (ly_car (desc), gh_double2scm (total_mag));
-  orig_ = m;
-}
-
-SCM
-Scaled_font_metric::make_scaled_font_metric (Font_metric*m, Real s)
-{
-  Scaled_font_metric *sfm = new Scaled_font_metric (m,s);
-  return sfm->self_scm ();
-}
-
-Molecule
-Scaled_font_metric::find_by_name (String s) const
-{
-  Molecule m = orig_->find_by_name (s);
-  Box b = m.extent_box ();
-  b.scale (magnification_);
-  Molecule q (b,fontify_atom ((Font_metric*) this, m.get_expr ()));
-
-  return q ;
-}
-
-Box 
-Scaled_font_metric::get_indexed_char (int i) const
-{
-  Box b = orig_->get_indexed_char (i);
-  b.scale (magnification_);
-  return b;  
-}
-
-Box 
-Scaled_font_metric::get_ascii_char (int i) const
-{
-  Box b = orig_->get_ascii_char (i);
-  b.scale (magnification_);
-  return b;  
-}
-
-Box
-Scaled_font_metric::text_dimension (String t) const
-{
-  Box b (orig_->text_dimension (t));
-
-  b.scale (magnification_);
-  return b;
-}
-
-int
-Scaled_font_metric::count () const
-{
-  return orig_->count ();
-}
-
-Offset
-Scaled_font_metric::get_indexed_wxwy (int k) const
-{
-  Offset o = orig_->get_indexed_wxwy (k);
-  return o * magnification_;
-}
-
-int
-Scaled_font_metric::name_to_index (String s)const
-{
-  return orig_->name_to_index (s);
-}
diff --git a/lily/scm-hash.cc b/lily/scm-hash.cc
deleted file mode 100644
index 9fbd7c5153..0000000000
--- a/lily/scm-hash.cc
+++ /dev/null
@@ -1,167 +0,0 @@
-/*   
-  scm-hash.cc --  implement Scheme_hash_table
-  
-  source file of the GNU LilyPond music typesetter
-  
-  (c) 1999--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-  
- */
-#include <stdio.h>
-
-#include "scm-hash.hh"
-#include "ly-smobs.icc"
-
-/*
-  Return: number of objects.
- */
-int
-copy_scm_hashes (SCM dest, SCM src)
-{
-  int k = 0;
-  for (int i = SCM_VECTOR_LENGTH (src); i--;)
-    for (SCM s = scm_vector_ref (src, SCM_MAKINUM (i)); ly_pair_p(s); s = ly_cdr (s))
-      {
-	scm_hashq_set_x (dest, ly_caar (s), ly_cdar (s));
-	k++;
-      }
-  return k ;
-}
-
-
-Scheme_hash_table::Scheme_hash_table ()
-{
-  hash_tab_ = SCM_EOL;
-  smobify_self ();
-  hash_tab_ = scm_make_vector (gh_int2scm (119), SCM_EOL);
-  elt_count_ = 0;
-}
-
-
-Scheme_hash_table::Scheme_hash_table (Scheme_hash_table const &src)
-
-{
-  hash_tab_ = SCM_EOL;
-  elt_count_ = 0;
-  smobify_self ();
-
-  hash_tab_ = scm_make_vector (gh_int2scm (src.elt_count_ >? 11 ), SCM_EOL);  
-  elt_count_ = copy_scm_hashes (hash_tab_, src.hash_tab_);
-}
-
-void
-Scheme_hash_table::operator = (Scheme_hash_table const & src)
-{
-  if (&src == this)
-    return;
-  
-  hash_tab_ = scm_make_vector (gh_int2scm (src.elt_count_ >? 11), SCM_EOL);  
-  elt_count_ = copy_scm_hashes (hash_tab_, src.hash_tab_);
-}
-
-SCM
-Scheme_hash_table::mark_smob (SCM s)
-{
-  Scheme_hash_table *me = (Scheme_hash_table*) SCM_CELL_WORD_1 (s);
-  scm_gc_mark (me->hash_tab_);
-  return SCM_EOL;
-}
-
-int
-Scheme_hash_table::print_smob (SCM s, SCM p, scm_print_state*)
-{
-  assert (unsmob (s));
-  char str[1000];
-  sprintf (str, "#<Scheme_hash_table 0x%0lx ", SCM_UNPACK(s));
-  Scheme_hash_table *me = (Scheme_hash_table*) SCM_CELL_WORD_1 (s);
-  scm_display (me->hash_tab_, p);      
-  scm_puts ("> ",p);        
-  return 1;
-}
-
-bool
-Scheme_hash_table::try_retrieve (SCM k, SCM *v)
-{
-  SCM handle = scm_hashq_get_handle (hash_tab_, k);
-  if (ly_pair_p (handle))
-    {
-      *v = ly_cdr (handle);
-      return true;
-    }
-  else
-    return false;
-
-}
-
-bool
-Scheme_hash_table::contains (SCM k) const
-{
-  return ly_pair_p (scm_hashq_get_handle (hash_tab_, k));
-}
-
-void
-Scheme_hash_table::set (SCM k, SCM v)
-{
-  assert (gh_symbol_p (k));
-  SCM handle = scm_hashq_create_handle_x (hash_tab_, k, SCM_UNDEFINED);
-  if (ly_cdr (handle) == SCM_UNDEFINED)
-    {
-      elt_count_++;
-    }
-  
-  gh_set_cdr_x (handle, v);
-
-  /*
-    resize if getting too large.
-  */
-  if (elt_count_ > 2 * SCM_VECTOR_LENGTH (hash_tab_))
-    {
-      SCM nh = scm_make_vector (gh_int2scm (3* elt_count_+1), SCM_EOL);
-      elt_count_ = copy_scm_hashes (nh, hash_tab_);
-      hash_tab_ = nh;
-    }
-}
-
-// UGH. 
-SCM
-Scheme_hash_table::get (SCM k)const
-{
-  /*
-    42 will stick out like a sore thumb, hopefully.
-   */
-  return scm_hashq_ref (hash_tab_, k, SCM_MAKINUM(42));
-}
-
-void
-Scheme_hash_table::remove (SCM k)
-{
-  scm_hashq_remove_x (hash_tab_, k);
-  /*
-    don't decrease elt_count_ , as this may cause underflow. The exact
-    value of elt_count_ is not important.
-   */
-}
-
-Scheme_hash_table::~Scheme_hash_table ()
-{
-}
-
-SCM
-Scheme_hash_table::to_alist () const
-{
-  SCM l = SCM_EOL;
-  for (int i = SCM_VECTOR_LENGTH (hash_tab_); i--;)
-    for (SCM s = scm_vector_ref (hash_tab_, gh_int2scm (i)); ly_pair_p(s); s = ly_cdr (s))
-      {
-	l = scm_acons (ly_caar (s), ly_cdar (s), l);
-      }
-  return l;  
-}
-
-
-
-
-
-IMPLEMENT_SMOBS (Scheme_hash_table);
-IMPLEMENT_DEFAULT_EQUAL_P (Scheme_hash_table);
-
-
diff --git a/lily/scm-option.cc b/lily/scm-option.cc
deleted file mode 100644
index 64302127c8..0000000000
--- a/lily/scm-option.cc
+++ /dev/null
@@ -1,180 +0,0 @@
-/*   
-  scm-option.cc --  implement option setting from Scheme
-  
-  source file of the GNU LilyPond music typesetter
-  
-  (c) 2001--2004  Han-Wen Nienhuys <hanwen@cs.uu.nl>
-  
- */
-#include <stdio.h>
-
-#include "parse-scm.hh"
-#include "string.hh"
-#include "lily-guile.hh"
-#include "scm-option.hh"
-#include "warn.hh"
-#include "main.hh"
-
-/*
-  This interface to option setting is meant for setting options are
-  useful to a limited audience. The reason for this interface is that
-  making command line options clutters up the command-line option name
-  space.
-
-
-  preferably, also dont use TESTING_LEVEL_GLOBAL, since it defeats
-  another purpose of this very versatile interface, which is to
-  support multiple debug/testing options concurrently.
-  
- */
-
-
-/* Write midi as formatted ascii stream? */
-bool midi_debug_global_b;
-
-/* General purpose testing flag */
-int testing_level_global;
-
-/*
-  Backwards compatibility.
- */
-bool lily_1_8_relative = false;
-bool lily_1_8_compatibility_used = false;
-
-/*
-  crash if internally the wrong type is used for a grob property.
- */
-bool internal_type_checking_global_b;
-
-LY_DEFINE (ly_option_usage, "ly:option-usage", 0, 0, 0, (SCM),
-		  "Print ly-set-option usage")
-{  
-  printf ( _("lilypond -e EXPR means:").to_str0 ());
-  puts ("");
-  printf (_ ("  Evalute the Scheme EXPR before parsing any .ly files.").to_str0 ());
-  puts ("");
-  printf (_ ("  Multiple -e options may be given, they will be evaluated sequentially.").to_str0 ());
-  puts ("");
-  printf (_("  The function ly-set-option allows for access to some internal variables.").to_str0 ());
-  puts ("\n");
-  printf (_ ("Usage: lilypond -e \"(ly-set-option SYMBOL VAL)\"").to_str0 ());
-  puts ("\n");
-  printf (_ ("Where SYMBOL VAL pair is any of:").to_str0 ());
-  puts ("");
-  printf ( "  help ANY-SYMBOL\n"
-	   "  internal-type-checking BOOLEAN\n"
-	   "  midi-debug BOOLEAN\n"
-	   "  parse-protect BOOLEAN\n"
-	   "  testing-level INTEGER\n");
-  
-  exit (0);
-  return SCM_UNSPECIFIED;
-}
-
-/* Add these as well:
-
-@item -T,--no-timestamps
-don't timestamp the output
-
-@item -t,--test
-Switch on any experimental features.  Not for general public use. */
-LY_DEFINE (ly_set_option, "ly:set-option", 1, 1, 0, (SCM var, SCM val),
-	    "Set a global option value.  Supported options include\n"
-"\n"
-"@table @code\n"
-"@item help\n"
-"List all options.\n"
-"@item midi-debug\n"
-"If set to true, generate human readable MIDI\n"
-"@item internal-type-checking\n"
-"Set paranoia for property assignments\n"
-"@item parse-protect\n"
-"If protection is switched on, errors in inline scheme are caught in the parser. \n"
-"If off, GUILE will halt on errors, and give a stack trace. Default is protected evaluation. \n"
-"@item old-relative\n"
-"Relative for simultaneous functions similar to chord syntax\n"
-"@item new-relative\n"
-"Relative for simultaneous functions similar to sequential music\n"
-"@end table\n"
-"\n"
-"This function is useful to call from the command line: @code{lilypond -e\n"
-"\"(ly-set-option 'midi-debug #t)\"}.\n")
-{
-  if (val == SCM_UNDEFINED)
-    val = SCM_BOOL_T;
-
-  if (var == ly_symbol2scm ("help"))
-    {
-      /* lilypond -e "(ly-set-option 'help #t)" */
-      ly_option_usage (SCM_EOL);
-    }
-  else if (var == ly_symbol2scm ("midi-debug"))
-    {
-      midi_debug_global_b = to_boolean (val);
-    }
-  else if (var == ly_symbol2scm ("testing-level"))
-    {
-     testing_level_global = gh_scm2int (val); 
-    }
-  else if (var == ly_symbol2scm ("parse-protect" ))
-    {
-      parse_protect_global = to_boolean(val);
-    }
-  else if (var == ly_symbol2scm ("internal-type-checking"))
-    {
-     internal_type_checking_global_b = to_boolean (val); 
-    }
-  else if (var == ly_symbol2scm ("old-relative"))
-    {
-      lily_1_8_relative = true;
-      lily_1_8_compatibility_used = false; 
-    }
-  else if (var == ly_symbol2scm ("new-relative"))
-    {
-      lily_1_8_relative = false;
-    }
-  else if (var == ly_symbol2scm ("debug-beam"))
-    {
-      extern bool debug_beam_quanting_flag;
-      debug_beam_quanting_flag = true;
-    }
-  else
-    {
-      warning (_("Unknown internal option!"));
-    }
-
-  return SCM_UNSPECIFIED;
-}
-
-
-LY_DEFINE (ly_get_option, "ly:get-option", 1, 0, 0, (SCM var),
-	    "Get a global option setting.  Supported options include\n"
-	   "@table @code\n"
-	   "@item old-relative-used\n"
-	   "Report whether old-relative compatibility mode is necessary\n"
-	   "@item old-relative\n"
-	   "Report whether old-relative compatibility mode is used\n"
-	   "@item verbose\n"
-	   "Report whether we are running in verbose mode\n"
-	   "@end table\n"
-	   "\n")
-{
-  if (var == ly_symbol2scm ("old-relative-used"))
-    {
-      return gh_bool2scm (lily_1_8_compatibility_used);
-    }
-  if (var == ly_symbol2scm ("old-relative"))
-    {
-      return gh_bool2scm (lily_1_8_relative);
-    }
-  if (var == ly_symbol2scm ("verbose"))
-    {
-      return gh_bool2scm (verbose_global_b);
-    }  
-  else
-    {
-      warning (_("Unknown internal option!"));
-    }
-
-  return SCM_UNSPECIFIED;
-}
diff --git a/lily/score-engraver.cc b/lily/score-engraver.cc
deleted file mode 100644
index a100c17d04..0000000000
--- a/lily/score-engraver.cc
+++ /dev/null
@@ -1,356 +0,0 @@
-/*
-  score-engraver.cc -- implement Score_engraver
-
-  source file of the GNU LilyPond music typesetter
-
-  (c) 1997--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-*/
-
-#include "all-font-metrics.hh"
-#include "afm.hh"
-#include "warn.hh"
-#include "main.hh"
-#include "system.hh"
-#include "item.hh"
-#include "score-engraver.hh"
-#include "paper-score.hh"
-#include "paper-column.hh"
-
-#include "paper-def.hh"
-#include "axis-group-interface.hh"
-#include "context-def.hh"
-
-#include "staff-spacing.hh"
-#include "note-spacing.hh"
-
-/*
-  TODO: the column creation logic is rather hairy. Revise it.
- */
-Score_engraver::Score_engraver ()
-{
-  system_ =0;
-  command_column_ =0;
-  musical_column_ =0;
-  breaks_ =0;
-  pscore_ = 0;
-}
-
-void
-Score_engraver::make_columns ()
-{
-  /*
-    ugh.
-   */
-  if (!command_column_)
-    {
-      SCM nmp
-	= updated_grob_properties (this,
-				   ly_symbol2scm ("NonMusicalPaperColumn"));
-      SCM pc = updated_grob_properties (this,
-					ly_symbol2scm ("PaperColumn"));
-      
-      set_columns (new Paper_column (nmp), new Paper_column (pc));
-  
-      command_column_->set_grob_property ("breakable", SCM_BOOL_T);
-
-
-      Grob_info i1;
-      i1.grob_ = command_column_;
-      i1.origin_trans_ = this;
-  
-      announce_grob (i1);
-
-      Grob_info i2;
-      i2.grob_ = musical_column_;
-      i2.origin_trans_ = this;
-
-      announce_grob (i2);
-    }
-}
-
-void
-Score_engraver::prepare (Moment w)
-{
-  Global_translator::prepare (w);
-
-  /*
-    TODO: don't make columns when skipTypesetting is true.
-   */
-  make_columns ();
-  
-  command_column_->set_grob_property ("when", now_mom_.smobbed_copy ());
-  musical_column_->set_grob_property ("when", now_mom_.smobbed_copy ());
-
-  
-  Translator_group::start_translation_timestep();
-}
-
-void
-Score_engraver::finish ()
-{
-  if ((breaks_%8))
-    progress_indication ("[" + to_string (breaks_) + "]");
-   
-  check_removal ();
-  finalize ();
-}
-
-/*
-  use start/finish?
- */
-void
-Score_engraver::initialize ()
-{
-  Font_metric *fm = all_fonts_global->find_afm("feta20");
-  if (!fm)
-    error (_f ("can't find `%s'", "feta20.afm")
-	   + "\n" +_ ("Fonts have not been installed properly.  Aborting"));
-   
-  unsmob_context_def (definition_)->apply_default_property_operations (this);
-
-  assert (!daddy_trans_);
-  pscore_ = new Paper_score;
-  pscore_->paper_ = dynamic_cast<Paper_def*> (get_output_def ());
-
-  SCM props = updated_grob_properties (this, ly_symbol2scm ("System"));
-
-  pscore_->typeset_line (new System (props));
-  
-  make_columns ();
-  system_ = pscore_->system_;
-  system_->set_bound (LEFT, command_column_);
-  command_column_->set_grob_property ("breakable", SCM_BOOL_T);
-
-  Engraver_group_engraver::initialize ();
-}
-
-
-void
-Score_engraver::finalize ()
-{
-  Engraver_group_engraver::finalize ();
-
-  Grob * cc
-    = unsmob_grob (get_property ("currentCommandColumn"));
-  system_->set_bound (RIGHT, cc);
-  cc->set_grob_property ("breakable", SCM_BOOL_T);
-  
-  typeset_all ();
-}
-
-void
-Score_engraver::one_time_step ()
-{
-  if (!to_boolean (get_property ("skipTypesetting")))
-    {
-      process_music ();
-      do_announces ();
-    }
-  
-  stop_translation_timestep ();
-  
-  apply_finalizations ();
-  check_removal ();
-
-
-  for (int i = announce_infos_.size(); i--;)
-    {
-      Grob *g = announce_infos_[i].grob_;
-      if (!dynamic_cast<Paper_column*> (g)) // ugh.
-	{
-	  String msg= "Grob "
-	    + g->name()
-	    + " was created too late!";
-	  g->programming_error (msg);
-	}
-    }
-  announce_infos_.clear ();
-}
-
-void
-Score_engraver::announce_grob (Grob_info info)
-{
-  announce_infos_.push (info);
-  pscore_->system_->typeset_grob (info.grob_);
-}
-
-void
-Score_engraver::typeset_grob (Grob *elem)
-{
-  if (!elem)
-    programming_error ("Score_engraver: empty elt\n");
-  else
-    elems_.push (elem);
-}
-
-void
-Score_engraver::typeset_all ()
-{
-  for (int i =0; i < elems_.size (); i++) 
-    {
-      Grob * elem = elems_[i];
-      
-      if (Spanner *s = dynamic_cast <Spanner *> (elem))
-	{
-	  /*
-	    do something sensible if spanner not 
-	    spanned on 2 items.
-	  */
-	  Direction d = LEFT;
-	  do {
-	    if (!s->get_bound (d))
-	      {
-		s->set_bound (d, command_column_);
-		/* don't warn for empty/suicided spanners,
-		   it makes real warningsinvisible.
-		   maybe should be junked earlier? */
-		if (!elem->live())
-		  ; // gdb hook
-		else
-		  elem->warning (_f ("unbound spanner `%s'", s->name ().to_str0 ()));
-	      }
-	  }
-	  while (flip (&d) != LEFT);
-
-	  if (dynamic_cast<Item*> (s->get_parent (Y_AXIS)))
-	    programming_error ("Spanner Y-parent is an item.");
-	}
-      else 
-	{
-	  if (!elem->get_parent (X_AXIS))
-	    {
-	      bool br = to_boolean (elem->get_grob_property ("breakable"));
-	      Axis_group_interface::add_element (br ? command_column_ : musical_column_, elem);
-
-	    }
-	}
-      if (!elem->get_parent (Y_AXIS))
-	Axis_group_interface::add_element (system_, elem);
-    }
-  elems_.clear ();
-}
-
-void
-Score_engraver::stop_translation_timestep ()
-{
-  // this generates all items.
-  Engraver_group_engraver::stop_translation_timestep ();
-  
-  typeset_all ();
-  if (to_boolean (command_column_->get_grob_property ("breakable")))
-    {
-      breaks_ ++;
-      if (! (breaks_%8))
-	progress_indication ("[" + to_string (breaks_) + "]");
-    }
-
-
-  system_->add_column (command_column_);
-  system_->add_column (musical_column_);
-  
-  command_column_ = 0;
-  musical_column_ = 0;
-}
-
-void
-Score_engraver::set_columns (Paper_column *new_command, 
-			     Paper_column *new_musical)
-{
-  assert (!command_column_ && !musical_column_);
-
-  command_column_ = new_command;
-  musical_column_ = new_musical;
-  if (new_command)
-    {
-      set_property ("currentCommandColumn", new_command->self_scm ());  
-    }
-  
-  if (new_musical)
-    {
-      set_property ("currentMusicalColumn", new_musical->self_scm ());
-    }
-}
-
-Music_output*
-Score_engraver::get_output ()
-{
-  Music_output * o = pscore_;
-  pscore_=0;
-  return o;
-}
-
-
-bool
-Score_engraver::try_music (Music*r)
-{
-  bool gotcha = Engraver_group_engraver::try_music (r);  
-
-  if (!gotcha && r->is_mus_type ("break-event"))
-    {
-      gotcha = true;
-
-      SCM pen = command_column_->get_grob_property ("penalty");
-      Real total_penalty = gh_number_p (pen)
-	? gh_scm2double (pen)
-	: 0.0;
-
-      SCM rpen = r->get_mus_property ("penalty");
-      if (gh_number_p (rpen))
-	total_penalty +=  gh_scm2double (rpen);
-	  
-      if (total_penalty > 10000.0) //  ugh. arbitrary.
-	forbid_breaks ();
-
-      command_column_->set_grob_property ("penalty",
-					  gh_double2scm (total_penalty));
-    }
-  return gotcha;
-}
-
-/*
-  TODO:  use property Score.breakForbidden = #t
- */
-void
-Score_engraver::forbid_breaks ()
-{
-  /*
-    result is junked.
-   */
-  if (command_column_)
-    command_column_->set_grob_property ("breakable", SCM_EOL);
-}
-  
-void
-Score_engraver::acknowledge_grob (Grob_info gi)
-{
-  if (Staff_spacing::has_interface (gi.grob_))
-    {
-      Pointer_group_interface::add_grob (command_column_,
-					 ly_symbol2scm ("spacing-wishes"),
-					 gi.grob_);
-    }
-  if (Note_spacing::has_interface (gi.grob_))
-    {
-      Pointer_group_interface::add_grob (musical_column_,
-					 ly_symbol2scm ("spacing-wishes"),
-					 gi.grob_);
-    }
-}
-
-
-
-ENTER_DESCRIPTION(Score_engraver,
-/* descr */       "Top level engraver. Takes care of generating columns and the complete  system (ie. System) "
-"\n\n "
-"This engraver decides whether a column is breakable. The default is "
-"that a column is always breakable. However, when every Bar_engraver "
-"that does not have a barline at a certain point will call "
-"Score_engraver::forbid_breaks to stop linebreaks.  In practice, this "
-"means that you can make a breakpoint by creating a barline (assuming "
-"that there are no beams or notes that prevent a breakpoint.) "
-,
-/* creats*/       "System PaperColumn NonMusicalPaperColumn", 
-/* accepts */     "break-event",
-/* acks  */       "note-spacing-interface staff-spacing-interface",
-/* reads */       "currentMusicalColumn currentCommandColumn",
-/* write */       "");
diff --git a/lily/score-performer.cc b/lily/score-performer.cc
deleted file mode 100644
index 9c1e55f3c2..0000000000
--- a/lily/score-performer.cc
+++ /dev/null
@@ -1,119 +0,0 @@
-/*
-  score-performer.cc -- implement Score_performer
-
-  source file of the GNU LilyPond music typesetter
-
-  (c) 1996--2004 Jan Nieuwenhuizen <janneke@gnu.org>
- */
-
-#include "score-performer.hh"
-#include "midi-def.hh"
-#include "audio-column.hh"
-#include "audio-item.hh"
-#include "performance.hh"
-#include "midi-stream.hh"
-#include "string-convert.hh"
-#include "warn.hh"
-#include "context-def.hh"
-
-
-
-ENTER_DESCRIPTION(Score_performer,
-/* descr */       "",
-/* creats*/       "",
-/* accepts */     "",
-/* acks  */      "",
-/* reads */       "",
-/* write */       "");
-
-
-Score_performer::Score_performer ()
-{
-  performance_ = 0;
-}
-
-
-Score_performer::~Score_performer ()
-{
-}
-
-void
-Score_performer::play_element (Audio_element * p)
-{
-  if (Audio_item * i=dynamic_cast<Audio_item *> (p)) 
-    {
-      audio_column_->add_audio_item (i);
-    }
-  performance_->add_element (p);
-}
-
-void
-Score_performer::announce_element (Audio_element_info info)
-{
-  announce_infos_.push (info);
-
-
-  /*
-    huh?
-    copied from score-engraver, but
-    this way staff gets in list twice
-  if (Audio_item* i = dynamic_cast<Audio_item*> (info.elem_))
-    performance_->add_element (i);
-  */
-}
-
-void 
-Score_performer::prepare (Moment m)
-{
-  Global_translator::prepare (m);
-  audio_column_ = new Audio_column (m);
-  play_element (audio_column_);
-  start_translation_timestep ();
-}
-
-
-void 
-Score_performer::one_time_step ()
-{
-  process_music ();
-  do_announces ();
-  stop_translation_timestep ();
-  check_removal ();
-}
-
-void
-Score_performer::start ()
-{
-}
-
-
-int
-Score_performer::get_tempo () const
-{
-  return performance_->midi_->get_tempo (Moment (Rational (1, 4)));
-}
-
-void
-Score_performer::finish ()
-{
-  check_removal ();
-  finalize ();
-}
-
-Music_output *
-Score_performer::get_output ()
-{
-  Music_output * o = performance_;
-  performance_ =0;
-  return o;
-}
-
-void
-Score_performer::initialize ()
-{
-  unsmob_context_def (definition_)->apply_default_property_operations (this);
-  performance_ = new Performance;
-  performance_->midi_ = dynamic_cast<Midi_def*> (get_output_def ());
-
-  Translator_group::initialize ();
-}
diff --git a/lily/score.cc b/lily/score.cc
deleted file mode 100644
index eabb2fde90..0000000000
--- a/lily/score.cc
+++ /dev/null
@@ -1,186 +0,0 @@
-/*
-  score.cc -- implement Score
-
-  source file of the GNU LilyPond music typesetter
-
-  (c) 1997--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-*/
-
-#include <stdio.h>
-
-#include "ly-smobs.icc"
-
-#include "score.hh"
-#include "warn.hh"
-#include "music-output-def.hh"
-#include "music-output.hh"
-#include "music-iterator.hh"
-#include "music.hh"
-#include "global-translator.hh"
-#include "scm-hash.hh"
-#include "cpu-timer.hh"
-#include "main.hh"
-#include "paper-def.hh"
-#include "ly-modules.hh"
-
-
-
-/*
-  TODO: junkme.
- */
-Score::Score ()
-  : Input ()
-{
-  header_ = SCM_EOL;
-  music_ = SCM_EOL;
-
-  smobify_self ();
-}
-
-Score::~Score ()
-{
-  
-}
-
-
-
-
-IMPLEMENT_SMOBS (Score);
-IMPLEMENT_DEFAULT_EQUAL_P (Score);
-
-
-SCM
-Score::mark_smob (SCM s)
-{
-  Score * sc = (Score*) SCM_CELL_WORD_1 (s);
-
-  if (sc->header_)
-    scm_gc_mark (sc->header_);
-  for (int i = sc->defs_.size (); i--;)
-    scm_gc_mark (sc->defs_[i]->self_scm ());
-  
-  return sc->music_;
-}
-
-int
-Score::print_smob (SCM , SCM p, scm_print_state*)
-{
-  scm_puts ("#<Score>", p);
-
-  return 1;
-}
-
-
-
-/*
-  store point & click locations.
-  Global to save some time. (Sue us!)
- */
-
-Score::Score (Score const &s)
-  : Input (s)
-{
-  music_ = SCM_EOL;
-  header_ = 0;
-  smobify_self ();
-
-  Music * m =unsmob_music (s.music_);
-  music_ =  m?m->clone ()->self_scm () : SCM_EOL;
-  scm_gc_unprotect_object (music_);
-  
-  for (int i=0; i < s.defs_.size (); i++)
-    defs_.push (s.defs_[i]->clone ());
-
-  header_ = ly_make_anonymous_module ();
-  if (ly_module_p (s.header_))
-    ly_copy_module_variables (header_, s.header_);
-}
-
-
-
-LY_DEFINE(ly_run_translator, "ly:run-translator", 
-	  2, 0, 0,
-	  (SCM mus, SCM output_def),
-	  "Process @var{mus} according to @var{output_def}. A interpretation "
-"context is set up, and @var{mus} is interpreted with it. The  "
-"context is returned in its final state." )
-{
-  Music_output_def *odef = unsmob_music_output_def (output_def);
-  Music * music = unsmob_music (mus);
-
-  SCM_ASSERT_TYPE (music, mus, SCM_ARG1, __FUNCTION__, "Music");
-  SCM_ASSERT_TYPE (odef, output_def, SCM_ARG2, __FUNCTION__, "Output definition");
-  
-  Cpu_timer timer;
-  Global_translator * trans = odef->get_global_translator ();
-  if (!trans)
-    {
-      programming_error ("no toplevel translator");
-      return SCM_BOOL_F;
-    }
-  progress_indication (_ ("Interpreting music..."));
-  
-  trans->final_mom_ = music->get_length ();
-  SCM protected_iter =  Music_iterator::get_static_get_iterator (music);
-  Music_iterator * iter = unsmob_iterator (protected_iter);
-  iter->init_translator (music, trans);
-
-  iter->construct_children ();
-
-  if (! iter->ok ())
-    {
-      warning (_ ("Need music in a score"));
-      return SCM_BOOL_F;	// todo: shoudl throw exception.
-    }
-
-  trans->start ();
-  trans->run_iterator_on_me (iter);
-  iter->quit();
-  scm_remember_upto_here_1 (protected_iter);
-  trans->finish ();
-
-  if (verbose_global_b)
-    progress_indication (_f ("elapsed time: %.2f seconds",  timer.read ()));
-
-  
-  return scm_gc_unprotect_object (trans->self_scm ());
-}
-
-
-LY_DEFINE(ly_render_output, "ly:render-output",
-	  3,0,0,
-	  (SCM context, SCM header, SCM out_filename),
-	  "Given a Score context in its final state, calculate the output, "
-	  "and  dump the result to @var{out-filename}, using "
-	  "@var{header} for the bibliographic information.")
-{
-  Translator *tr = unsmob_translator (context);
-  Global_translator * gt = dynamic_cast<Global_translator*> (tr);
-  
-  SCM_ASSERT_TYPE(gt, context, SCM_ARG1, __FUNCTION__,
-		  "Score context");
-  SCM_ASSERT_TYPE(ly_module_p(header), header, SCM_ARG2, __FUNCTION__,
-		  "module");
-  SCM_ASSERT_TYPE(gh_string_p (out_filename), out_filename, SCM_ARG3, __FUNCTION__,
-		  "output filename");
-
-  Music_output * output = gt->get_output ();
-
-  output->header_ = header;
-  
-  progress_indication ("\n");
-  output->process (ly_scm2string (out_filename));
-  
-  delete output ;
-
-  return SCM_UNDEFINED ;
-}
-
-void
-default_rendering (SCM mus, SCM outdef, SCM head, SCM outname)
-{
-  SCM context = ly_run_translator (mus, outdef);
-  
-  if (unsmob_translator (context))
-    ly_render_output (context,  head, outname);
-}
diff --git a/lily/script-column-engraver.cc b/lily/script-column-engraver.cc
deleted file mode 100644
index 80e41b5b9b..0000000000
--- a/lily/script-column-engraver.cc
+++ /dev/null
@@ -1,86 +0,0 @@
-/*   
-  script-column-engraver.cc --  implement Script_column_engraver
-  
-  source file of the GNU LilyPond music typesetter
-  
-  (c) 1999--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-  
- */
-
-#include "engraver.hh"
-#include "script-column.hh"
-#include "item.hh"
-#include "side-position-interface.hh"
-
-/**
-   Find potentially colliding scripts, and put them in a
-   Script_column, that will fix the collisions.  */
-class Script_column_engraver : public Engraver
-{
-  Grob *scol_;
-  Link_array<Item> scripts_;
-
-public:
-  TRANSLATOR_DECLARATIONS(Script_column_engraver);
-protected:
-  virtual void acknowledge_grob (Grob_info);
-  virtual void process_acknowledged_grobs ();
-  virtual void stop_translation_timestep ();
-};
-
-
-Script_column_engraver::Script_column_engraver ()
-{
-  scol_ =0;
-}
-
-void
-Script_column_engraver::stop_translation_timestep ()
-{
-  if (scol_)
-    {
-      typeset_grob (scol_);
-      scol_ =0;
-    }
-  scripts_.clear ();
-}
-
-void
-Script_column_engraver::acknowledge_grob (Grob_info inf) 
-{
-  Item *thing = dynamic_cast<Item*> (inf.grob_);
-  if (thing && Side_position_interface::has_interface (inf.grob_)) // ugh FIXME
-    {
-      if (!Item::breakable_b (thing)
-	  && Side_position_interface::get_axis (inf.grob_) == Y_AXIS)
-	{
-	  scripts_.push (thing);
-	}
-    }
-}
-
-void
-Script_column_engraver::process_acknowledged_grobs ()
-{
-  if (!scol_ && scripts_.size () > 1)
-    {
-      scol_ = make_item ("ScriptColumn");
-      announce_grob(scol_, SCM_EOL);
-    }
-
-  if (scol_)
-    {
-      for (int i=0; i < scripts_.size (); i++)
-	Script_column::add_staff_sided (scol_, scripts_[i]);
-      scripts_.clear ();
-    }
-
-}
-
-ENTER_DESCRIPTION(Script_column_engraver,
-/* descr */       "",
-/* creats*/       "ScriptColumn",
-/* accepts */     "",
-/* acks  */      "side-position-interface",
-/* reads */       "",
-/* write */       "");
diff --git a/lily/script-column.cc b/lily/script-column.cc
deleted file mode 100644
index 7d8ca6fcfe..0000000000
--- a/lily/script-column.cc
+++ /dev/null
@@ -1,97 +0,0 @@
-/*   
-  script-column.cc --  implement Script_column
-  
-  source file of the GNU LilyPond music typesetter
-  
-  (c) 1999--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-  
- */
-#include "script-column.hh"
-#include "side-position-interface.hh"
-#include "warn.hh"
-#include "group-interface.hh"
-
-void
-Script_column::add_staff_sided (Grob *me, Item *i)
-{
-  SCM p = i->get_grob_property ("script-priority");
-  if (!gh_number_p (p))
-    return;
-
-  Pointer_group_interface::add_grob (me, ly_symbol2scm ("scripts"),i);
-  
-  me->add_dependency (i);
-}
-
-LY_DEFINE(grob_script_priority_less,
-	  "ly:grob-script-priority-less", 2, 0, 0, 
-	  (SCM a, SCM b),
-	  "Compare two grobs by script priority. For internal use.")
-{
-  Grob * i1 = unsmob_grob (a);
-  Grob* i2 = unsmob_grob (b);
-
-  SCM p1 = i1->get_grob_property ("script-priority");
-  SCM p2 = i2->get_grob_property ("script-priority");
-
-  return gh_scm2int (p1) < gh_scm2int (p2) ? SCM_BOOL_T : SCM_BOOL_F;
-}
-
-
-
-MAKE_SCHEME_CALLBACK (Script_column,before_line_breaking,1);
-SCM
-Script_column::before_line_breaking (SCM smob)
-{
-  Grob* me = unsmob_grob (smob);
-  Drul_array<SCM> scripts (SCM_EOL, SCM_EOL);
-  Link_array<Grob> staff_sided;
-  
-  for (SCM s  = me->get_grob_property( "scripts");  gh_pair_p (s); s = gh_cdr( s))
-    {
-      Grob *sc = unsmob_grob (gh_car (s));
-
-      if (!sc->has_offset_callback_b (Side_position_interface::aligned_side_proc, X_AXIS))
-	staff_sided.push (sc);
-    }
-  
-  for (int i=0; i < staff_sided.size (); i++)
-    {
-      Grob* g = staff_sided[i];
-      Direction d = Side_position_interface::get_direction (g);
-      if (!d)
-	{
-	  programming_error ( "No direction for script?");
-	  d = DOWN;
-	  g->set_grob_property ("direction", gh_int2scm (d));
-	}
-      
-      scripts[d] = scm_cons (g->self_scm(), scripts[d]);
-    }
-
-  Direction d = DOWN;
-  do {
-    SCM ss = scm_reverse_x (scripts[d], SCM_EOL);
-    ss = scm_stable_sort_x (ss,  grob_script_priority_less_proc);
-
-    Grob * last = 0;
-    for (SCM s = ss; gh_pair_p (s); s = gh_cdr (s))
-      {
-	Grob* g = unsmob_grob (gh_car (s));
-	if (last)
-	  Side_position_interface::add_support (g,last);
-
-	last = g;
-      }
-    
-  } while (flip (&d) != DOWN);
-
-  return SCM_UNSPECIFIED;
-}
-
-
-ADD_INTERFACE (Script_column,"script-column-interface",
-  "An interface that sorts scripts according to their @code{script-priority}",
-  "");
-
-
diff --git a/lily/script-engraver.cc b/lily/script-engraver.cc
deleted file mode 100644
index 03826157bf..0000000000
--- a/lily/script-engraver.cc
+++ /dev/null
@@ -1,241 +0,0 @@
-/*
-  script-engraver.cc -- implement Script_engraver
-
-  (c) 1997--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-*/
-
-#include "script.hh"
-#include "side-position-interface.hh"
-#include "event.hh"
-#include "stem.hh"
-#include "rhythmic-head.hh"
-#include "engraver.hh"
-#include "note-column.hh"
-#include "translator-group.hh"
-#include "warn.hh"
-
-struct Script_tuple
-{
-  Music *event_;
-  Grob * script_;
-  SCM description_;
-  Script_tuple ()
-  {
-    event_ = 0;
-    script_ = 0;
-    description_ = SCM_EOL;
-  }
-};
-
-class Script_engraver : public Engraver
-{
-  Array<Script_tuple> scripts_;
-public:
-  TRANSLATOR_DECLARATIONS(Script_engraver);
-protected:
-  virtual bool try_music (Music*);
-  virtual void stop_translation_timestep ();
-  virtual void process_music ();
-  virtual void acknowledge_grob (Grob_info);
-};
-
-bool
-Script_engraver::try_music (Music *r)
-{
-  if (r->is_mus_type ("articulation-event"))
-    {
-      /*
-	Discard double articulations.
-	This is necessary for part-combining.
-       */
-      for (int j = 0; j < scripts_.size (); j++)
-	if (gh_equal_p (scripts_[j]. event_->get_mus_property ("articulation-type"),
-			r->get_mus_property ("articulation-type")
-			))
-	  return true;
-	  
-      Script_tuple t;
-      t.event_ =r;
-      scripts_.push (t);
-      
-      return true;
-    }
-  return false;
-}
-
-void
-copy_property (Grob * g , SCM sym, SCM alist)
-{
-  if (g->internal_get_grob_property (sym) == SCM_EOL)
-    {
-      SCM entry = scm_assoc (sym,alist);
-      if (gh_pair_p (entry))
-	{
-	  g->internal_set_grob_property (sym, gh_cdr (entry));
-	}
-    }
-}
-
-
-/*
-  We add the properties, one by one for each Script. We could save a
-  little space by tacking the props onto the Script grob (i.e. make
-  ScriptStaccato , ScriptMarcato, etc. )
- */
-void make_script_from_event (Grob *p,
-			     SCM * descr, Translator_group*tg,
-			     SCM art_type, 
-			     int index)
-{
-  SCM alist = tg->get_property ("scriptDefinitions");
-  SCM art = scm_assoc (art_type, alist);
-
-  if (art == SCM_BOOL_F)
-    {
-      warning (_("Don't know how to interpret articulation:"));
-      warning (_("Scheme encoding: "));
-      scm_write (art_type, scm_current_error_port ());
-      return  ;
-    }
-
-  art = gh_cdr (art);
-  
-  *descr = art;  
-
-
-  copy_property (p, ly_symbol2scm ("script-molecule"), art);
-  copy_property (p, ly_symbol2scm ("direction"), art);
-  copy_property (p, ly_symbol2scm ("side-relative-direction"), art);
-
-  int prio =0;
-  SCM sprio = scm_assoc (ly_symbol2scm ("script-priority"), art);
-  if (gh_pair_p (sprio))
-    prio = gh_scm2int (gh_cdr (sprio));
-
-
-  /*
-    Make sure they're in order of user input by adding index i.
-    Don't use the direction in this priority. Smaller means closer
-    to the head.
-  */
-  prio += index;
-
-  Side_position_interface::set_axis (p, Y_AXIS);
-  p->set_grob_property ("script-priority", gh_int2scm (prio));
-}
-
-void
-Script_engraver::process_music ()
-{
-  for (int i=0; i < scripts_.size (); i++)
-    {
-      Music* l=scripts_[i].event_;
-
-      Grob * p = make_item ("Script");
-
-      make_script_from_event (p, &scripts_[i].description_, daddy_trans_,
-			      l->get_mus_property ("articulation-type"),
-			      i);
-
-      scripts_[i].script_ = p;
-
-      
-      SCM force_dir = l->get_mus_property ("direction");
-      if (is_direction (force_dir) && to_dir (force_dir))
-	p->set_grob_property ("direction", force_dir);
-      
-      if (p)
-	announce_grob (p, l->self_scm());
-    }
-}
-
-void
-Script_engraver::acknowledge_grob (Grob_info inf)
-{
-  if (Stem::has_interface (inf.grob_))
-    {
-      for (int i=0; i < scripts_.size (); i++)
-	{
-	  Grob*e = scripts_[i].script_;
-
-	  if (to_dir (e->get_grob_property ("side-relative-direction")))
-	    e->set_grob_property ("direction-source", inf.grob_->self_scm ());
-
-	  /*
-	    add dep ? 
-	   */
-	  e->add_dependency (inf.grob_);
-	  Side_position_interface::add_support (e, inf.grob_);
-	}
-    }
-  else if (Rhythmic_head::has_interface (inf.grob_))
-    {
-      for (int i=0; i < scripts_.size (); i++)
-	{
-	  Grob *e = scripts_[i].script_;
-	  
-	  if (Side_position_interface::get_axis (e) == X_AXIS
-	      && !e->get_parent (Y_AXIS))
-	    {
-	      e->set_parent (inf.grob_, Y_AXIS);
-	      e->add_dependency (inf.grob_); // ??
-	    }
-	  Side_position_interface::add_support (e,inf.grob_);
-	}
-    }
-  else if (Note_column::has_interface (inf.grob_))
-    {
-
-      /*
-	We make note column the parent of the script. That's not
-	correct, but due to seconds in a chord, noteheads may be
-	swapped around horizontally. We don't know which note head to
-	put it on, so we postpone this decision to
-	Script_interface::before_line_breaking ().
- 
-       */
-      for (int i=0; i < scripts_.size (); i++)
-	{
-	  Grob *e = scripts_[i].script_;
-	  
-	  if (!e->get_parent (X_AXIS) &&
-	      Side_position_interface::get_axis (e) == Y_AXIS)
-	    {
-	      e->set_parent (inf.grob_, X_AXIS);
-	    }
-	}
-    }
-}
-
-void
-Script_engraver::stop_translation_timestep ()
-{
-  for (int i=0; i < scripts_.size (); i++) 
-    {
-      if (!scripts_[i].script_)
-	continue;
-      
-      Grob * sc = scripts_[i].script_;
-
-      SCM follow = scm_assoc (ly_symbol2scm ("follow-into-staff"), scripts_[i].description_);
-      if (gh_pair_p (follow) && to_boolean (gh_cdr (follow)))
-	{
-	  sc->add_offset_callback (Side_position_interface::quantised_position_proc, Y_AXIS);
-	  sc->set_grob_property ("staff-padding", SCM_EOL);
-	}
-      typeset_grob (sc);
-    }
-  scripts_.clear ();
-}
-
-
-
-Script_engraver::Script_engraver(){}
-
-ENTER_DESCRIPTION(Script_engraver,
-/* descr */       "Handles note scripted articulations.",
-/* creats*/       "Script",
-/* accepts */     "script-event articulation-event",
-/* acks  */      "stem-interface rhythmic-head-interface note-column-interface",
-/* reads */       "scriptDefinitions",
-/* write */       "");
diff --git a/lily/script.cc b/lily/script.cc
deleted file mode 100644
index 3e8a8148b7..0000000000
--- a/lily/script.cc
+++ /dev/null
@@ -1,115 +0,0 @@
-/*   
-  script.cc --  implement Script_interface
-  
-  source file of the GNU LilyPond music typesetter
-  
-  (c) 1999--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-  
- */
-
-#include "directional-element-interface.hh"
-#include "warn.hh"
-#include "script.hh"
-#include "font-interface.hh"
-#include "side-position-interface.hh"
-#include "paper-def.hh"
-#include "item.hh"
-#include "molecule.hh"
-#include "lookup.hh"
-#include "stem.hh"
-#include "note-column.hh"
-
-Molecule
-Script_interface::get_molecule (Grob * me, Direction d)
-{
-  SCM s = me->get_grob_property ("script-molecule");
-  assert (gh_pair_p (s));
-
-  SCM key = ly_car (s);
-  if (key == ly_symbol2scm ("feta"))
-    {
-      SCM name_entry = ly_cdr (s);
-
-      SCM str = (gh_pair_p (name_entry)) ? index_get_cell (name_entry, d) :  name_entry;
-      return Font_interface::get_default_font (me)->find_by_name ("scripts-" +
-								  ly_scm2string (str));
-    }
- else if (key == ly_symbol2scm ("accordion"))
-    {
-      return Lookup::accordion (ly_cdr (s), 1.0, Font_interface::get_default_font (me));
-    }
-  else
-    assert (false);
-
-  return Molecule ();
-}
-
-MAKE_SCHEME_CALLBACK (Script_interface,before_line_breaking,1);
-SCM
-Script_interface::before_line_breaking (SCM smob)
-{
-  Grob * me = unsmob_grob (smob);
-
-  Direction d = Side_position_interface::get_direction (me);
-
-  if (!d)
-    {
-      /*
-	we should not have `arbitrary' directions. 
-      */
-      programming_error ("Script direction not yet known!");
-      d = DOWN;
-    }
-  
-  set_grob_direction (me, d);
-
-  if (Grob * par = me->get_parent (X_AXIS))
-    {
-      Grob * stem = Note_column::get_stem (par);
-      if (stem && Stem::first_head (stem))
-	{
-	  me->set_parent (Stem::first_head (stem), X_AXIS);
-	}
-    }
-  
-  return SCM_UNSPECIFIED;
-}
-
-
-MAKE_SCHEME_CALLBACK (Script_interface,print,1);
-
-SCM
-Script_interface::print (SCM smob)
-{
-  Grob *me= unsmob_grob (smob);
-
-  Direction dir = Side_position_interface::get_direction (me);
-  if (!dir)
-    {
-      programming_error ("Script direction not known, but molecule wanted.");
-      dir= DOWN;
-    }
-  
-  return get_molecule (me, dir).smobbed_copy ();
-}
-
-
-
-struct Text_script
-{
-    static bool has_interface (Grob*);
-};
-
-struct Skript
-{
-    static bool has_interface (Grob*);
-};
-
-ADD_INTERFACE (Text_script,"text-script-interface",
-  "Any text script",
-  "script-priority");
-
-ADD_INTERFACE (Script_interface, "script-interface",
-  "",
-  "script-priority script-molecule");
-
diff --git a/lily/self-aligment-interface.cc b/lily/self-aligment-interface.cc
deleted file mode 100644
index 365409461f..0000000000
--- a/lily/self-aligment-interface.cc
+++ /dev/null
@@ -1,114 +0,0 @@
-#include "self-alignment-interface.hh"
-#include "warn.hh"
-
-/*
-  Position centered on parent.
- */
-MAKE_SCHEME_CALLBACK (Self_alignment_interface,centered_on_parent,2);
-SCM
-Self_alignment_interface::centered_on_parent (SCM element_smob, SCM axis)
-{
-  Grob *me = unsmob_grob (element_smob);
-  Axis a = (Axis) gh_scm2int (axis);
-  Grob *him = me->get_parent (a);
-  Interval he = him->extent (him,a);
-  
-  return  gh_double2scm (he.is_empty () ? 0.0 : he.center ());
-}
-
-MAKE_SCHEME_CALLBACK (Self_alignment_interface,aligned_on_parent,2);
-SCM
-Self_alignment_interface::aligned_on_parent (SCM element_smob, SCM axis)
-{
-  Grob *me = unsmob_grob (element_smob);
-  Axis a = (Axis) gh_scm2int (axis);
-  Grob *him = me->get_parent (a);
-  Interval he = him->extent (him,a);
-  
-  SCM sym= (a == X_AXIS) ? ly_symbol2scm ("self-alignment-X"): ly_symbol2scm ("self-alignment-Y");
-  SCM align_prop (me->internal_get_grob_property (sym));
-
-  if (!gh_number_p (align_prop))
-    return gh_int2scm (0);
-
-  Real x = 0.0;
-
-  Real align = gh_scm2double (align_prop);
-      
-  Interval ext (me->extent (me,a));
-  if (ext.is_empty ())
-    {
-      programming_error ("I'm empty. Can't align on self");
-      
-    }
-  else
-    x -= ext.linear_combination (align) ;
-
-  if (!he.is_empty ())
-    {
-      x += he.linear_combination (align);
-    }
-
-  return gh_double2scm (x);
-}
-
-/*
-  Position centered on parent.
- */
-MAKE_SCHEME_CALLBACK (Self_alignment_interface,centered_on_other_axis_parent,2);
-SCM
-Self_alignment_interface::centered_on_other_axis_parent (SCM element_smob,
-							 SCM axis)
-{
-  Grob *me = unsmob_grob (element_smob);
-  Axis a = (Axis) gh_scm2int (axis);
-  Grob *him = me->get_parent (other_axis (a));
-  Interval he = him->extent (him,a);
-  
-  return  gh_double2scm (he.is_empty () ? 0.0 : he.center ());
-}
-
-
-
-
-/**
-  callback that centers the element on itself
-
-  Requires that self-alignment-{X,Y} be set.
- */
-MAKE_SCHEME_CALLBACK (Self_alignment_interface,aligned_on_self,2);
-SCM
-Self_alignment_interface::aligned_on_self (SCM element_smob, SCM axis)
-{
-  Grob *me = unsmob_grob (element_smob);
-  Axis a = (Axis) gh_scm2int (axis);
-
-  SCM sym= (a == X_AXIS) ? ly_symbol2scm ("self-alignment-X"): ly_symbol2scm ("self-alignment-Y");
-  
-  SCM align (me->internal_get_grob_property (sym));
-  if (gh_number_p (align))
-    {
-      Interval ext (me->extent (me,a));
-
-      if (ext.is_empty ())
-	{
-	  programming_error ("I'm empty. Can't align on self");
-	  return gh_double2scm (0.0);
-	}
-      else
-	{
-	  return gh_double2scm (- ext.linear_combination (gh_scm2double (align)));
-	}
-    }
-  else if (unsmob_grob (align))
-    {
-      return gh_double2scm (- unsmob_grob (align)->relative_coordinate (me,  a));
-    }
-  return gh_double2scm (0.0);
-}
-
-
-ADD_INTERFACE (Self_alignment_interface, "self-alignment-interface",
-  "Position self using some alignment",
-  "self-alignment-X self-alignment-Y");
-
diff --git a/lily/separating-group-spanner.cc b/lily/separating-group-spanner.cc
deleted file mode 100644
index 868e49ecdd..0000000000
--- a/lily/separating-group-spanner.cc
+++ /dev/null
@@ -1,117 +0,0 @@
-/*   
-  separating-group-spanner.cc --  implement Separating_group_spanner
-  
-  source file of the GNU LilyPond music typesetter
-  
-  (c) 1998--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-  
- */
-
-#include "separating-group-spanner.hh"
-#include "separation-item.hh"
-#include "paper-column.hh"
-#include "paper-def.hh"
-#include "dimensions.hh"
-#include "group-interface.hh"
-
-void
-Separating_group_spanner::find_rods (Item * r, SCM next, Real padding)
-{
-
-  /*
-    This is an inner loop: look for the first normal (unbroken) Left
-    grob.  This looks like an inner loop (ie. quadratic total), but in
-    most cases, the interesting L will just be the first entry of
-    NEXT, making it linear in most of the cases.
-  */
-  if (Separation_item::width (r).is_empty ())
-    return; 
-
-
-  for(; gh_pair_p (next); next = ly_cdr (next))
-    {
-      Item *l = dynamic_cast<Item*> (unsmob_grob (ly_car( next)));
-      Item *lb = l->find_prebroken_piece (RIGHT);
-
-      if (lb)
-	{
-	  Interval li (Separation_item::width (lb));
-	  Interval ri (Separation_item::conditional_width (r, lb));
-	  if (!li.is_empty () && !ri.is_empty ())
-	    {
-	      Rod rod;
-
-	      rod.item_l_drul_[LEFT] = lb;
-	      rod.item_l_drul_[RIGHT] = r;
-
-	      rod.distance_ = li[RIGHT] - ri[LEFT] + padding;
-	      rod.add_to_cols ();
-	    }
-	}
-
-      Interval li (Separation_item::width (l));
-      Interval ri (Separation_item::conditional_width (r, l));
-      if (!li.is_empty () && !ri.is_empty ())
-	{
-	  Rod rod;
-
-	  rod.item_l_drul_[LEFT] =l;
-	  rod.item_l_drul_[RIGHT]=r;
-
-	  rod.distance_ = li[RIGHT] - ri[LEFT] + padding;
-	
-	  rod.add_to_cols ();
-	  break;
-	}
-
-      /*
-	this grob doesn't cause a constraint. We look further until we
-	find one that does.
-      */
-
-    }
-}
-
-MAKE_SCHEME_CALLBACK (Separating_group_spanner,set_spacing_rods,1);
-SCM
-Separating_group_spanner::set_spacing_rods (SCM smob)
-{
-  Grob*me = unsmob_grob (smob);
-  Real padding = robust_scm2double (me->get_grob_property ("padding"), 0.1);
-  
-  for (SCM s = me->get_grob_property ("elements"); gh_pair_p (s) && gh_pair_p (ly_cdr (s)); s = ly_cdr (s))
-    {
-      /*
-	Order of elements is reversed!
-       */
-      SCM elt = ly_car (s);
-      Item *r = unsmob_item (elt);
-
-      if (!r)
-	continue;
-
-      Item *rb
-	= dynamic_cast<Item*> (r->find_prebroken_piece (LEFT));
-      
-      find_rods (r, ly_cdr (s), padding);
-      if (rb)
-	find_rods (rb, ly_cdr (s), padding);
-    }
-
-  return SCM_UNSPECIFIED ;
-}
-
-void
-Separating_group_spanner::add_spacing_unit (Grob* me ,Item*i)
-{
-  Pointer_group_interface::add_grob (me, ly_symbol2scm ("elements"), i);
-  me->add_dependency (i);
-}
-
-
-
-
-
-ADD_INTERFACE (Separating_group_spanner,"separation-spanner-interface",
-  "Spanner that containing @code{separation-item-interface} grobs to calculate rods",
-  "");
diff --git a/lily/separating-line-group-engraver.cc b/lily/separating-line-group-engraver.cc
deleted file mode 100644
index aef4a23a66..0000000000
--- a/lily/separating-line-group-engraver.cc
+++ /dev/null
@@ -1,231 +0,0 @@
-/*   
-'  separating-line-group-engraver.cc --  implement Separating_line_group_engraver
-  
-  source file of the GNU LilyPond music typesetter
-  
-  (c) 1998--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-  
- */
-
-#include "separating-group-spanner.hh"
-#include "separation-item.hh"
-#include "paper-column.hh"
-#include "paper-def.hh"
-#include "engraver.hh"
-#include "axis-group-interface.hh"
-#include "note-spacing.hh"
-#include "group-interface.hh"
-#include "accidental-placement.hh"
-#include "translator-group.hh"
-
-
-struct Spacings
-{
-  Item * staff_spacing_;
-  Link_array<Item> note_spacings_;
-
-  Spacings ()
-  {
-    staff_spacing_ = 0;
-  }
-
-  bool is_empty () const
-  {
-    return !staff_spacing_ && !note_spacings_.size (); 
-  }
-  void clear () {
-    staff_spacing_ = 0;
-    note_spacings_.clear();
-  }
-};
-
-
-class Separating_line_group_engraver : public Engraver
-{
-protected:
-  Item * break_item_;
-  Item * musical_item_;
-  Item * last_musical_item_;
-
-  Spacings current_spacings_;
-  Spacings last_spacings_;
-  
-  Spanner * sep_span_;
-  
-  virtual void acknowledge_grob (Grob_info);
-  virtual void process_music ();
-  virtual void finalize ();
-  virtual void stop_translation_timestep ();
-  virtual void start_translation_timestep ();  
-public:
-  TRANSLATOR_DECLARATIONS(Separating_line_group_engraver);
-};
-
-Separating_line_group_engraver::Separating_line_group_engraver ()
-{
-  sep_span_ = 0;
-  break_item_ = 0;
-  musical_item_ =0;
-}
-
-void
-Separating_line_group_engraver::process_music ()
-{
-
-  if (!sep_span_)
-    {
-      sep_span_ = make_spanner ("SeparatingGroupSpanner");
-
-      announce_grob(sep_span_, SCM_EOL);
-      sep_span_->set_bound (LEFT, unsmob_grob (get_property ("currentCommandColumn")));
-    }
-}
-void
-Separating_line_group_engraver::finalize ()
-{
-  if (!sep_span_)
-    return ;
-  
-  SCM ccol = get_property ("currentCommandColumn");
-  Grob *column = unsmob_grob (ccol);
-  
-  sep_span_->set_bound (RIGHT, unsmob_grob (ccol));
-  typeset_grob (sep_span_);
-  sep_span_ =0;
-
-  for  (int i= 0 ; i < last_spacings_.note_spacings_.size(); i++)
-    {
-      Pointer_group_interface::add_grob (last_spacings_.note_spacings_[i],
-					 ly_symbol2scm ("right-items" ),
-					 column);
-    }
-   
-  if(last_spacings_.staff_spacing_
-     && last_spacings_.staff_spacing_->get_column () == column)
-    {
-      last_spacings_.staff_spacing_->suicide ();
-    }
-}
-
-void
-Separating_line_group_engraver::acknowledge_grob (Grob_info i)
-{
-  Item * it = dynamic_cast <Item *> (i.grob_);
-  if (!it)
-    return;
-  if (it->get_parent (X_AXIS)
-      && it->get_parent (X_AXIS)
-      ->has_extent_callback_b(Axis_group_interface::group_extent_callback_proc, X_AXIS))
-    return;
-
-  
-  if (to_boolean (it->get_grob_property ("no-spacing-rods")))
-    return ;
-
-  if (Note_spacing::has_interface (it)) 
-    {
-      current_spacings_.note_spacings_.push (it);
-      return ;
-    }
-  
-  bool ib =Item::breakable_b (it);
-  Item *&p_ref_ (ib ? break_item_
-		 : musical_item_);
-
-  if (!p_ref_)
-    {
-      p_ref_ = make_item ("SeparationItem");
-
-      if (ib)
-	{
-	  p_ref_->set_grob_property ("breakable", SCM_BOOL_T);
-	  daddy_trans_->set_property ("breakableSeparationItem", p_ref_->self_scm ());
-	}
-      announce_grob(p_ref_, SCM_EOL);
-
-      if (p_ref_ == break_item_)
-	{
-	  Item *it  = make_item ("StaffSpacing");
-	  current_spacings_.staff_spacing_ = it;
-	  it->set_grob_property ("left-items", gh_cons (break_item_->self_scm (), SCM_EOL));
-	  
-	  announce_grob(it, SCM_EOL);
-
-	  if (int i = last_spacings_.note_spacings_.size ())
-	    {
-	      for (; i--;)
-		Pointer_group_interface::add_grob (last_spacings_.note_spacings_[i],
-						   ly_symbol2scm ("right-items"),
-						   break_item_);
-				     
-	    }
-	  else if (last_spacings_.staff_spacing_)
-	    {
-	      
-	      last_spacings_.staff_spacing_->set_grob_property ("right-items",
-								gh_cons (break_item_->self_scm(), SCM_EOL));
-	    }
-	}
-    }
-
-  if (Accidental_placement::has_interface (it))
-    Separation_item::add_conditional_item (p_ref_, it);
-  else
-    Separation_item::add_item (p_ref_,it);
-}
-
-void
-Separating_line_group_engraver::start_translation_timestep ()
-{
-  if (break_item_)
-    daddy_trans_->unset_property (ly_symbol2scm ("breakableSeparationItem"));
-  break_item_ =0;
-}
-
-void
-Separating_line_group_engraver::stop_translation_timestep ()
-{
-  if (break_item_)
-    {
-      Separating_group_spanner::add_spacing_unit (sep_span_, break_item_);
-      typeset_grob (break_item_);
-    }
-  
-  if (Item * sp = current_spacings_.staff_spacing_)
-    {
-      /*
-	TODO: should really look at the left-items of following
-	note-spacing grobs.
-       */
-      if (musical_item_)
-	Pointer_group_interface::add_grob (sp, ly_symbol2scm ("right-items"),
-					   musical_item_);
-
-      typeset_grob (sp);
-    }
-
-  
-  if (!current_spacings_.is_empty ())
-    {
-      last_spacings_ = current_spacings_;
-    }
-
-  current_spacings_.clear ();
-  
-  if (musical_item_)
-    {
-      Separating_group_spanner::add_spacing_unit (sep_span_, musical_item_);
-      typeset_grob (musical_item_);
-    }
-  
-  musical_item_ =0;
-}
-
-
-ENTER_DESCRIPTION(Separating_line_group_engraver,
-/* descr */       "Generates objects for computing spacing parameters.",
-/* creats*/       "SeparationItem SeparatingGroupSpanner",
-/* accepts */     "",
-/* acks  */      "item-interface",
-/* reads */       "",
-/* write */       "breakableSeparationItem");
diff --git a/lily/separation-item.cc b/lily/separation-item.cc
deleted file mode 100644
index b3e7c8a368..0000000000
--- a/lily/separation-item.cc
+++ /dev/null
@@ -1,174 +0,0 @@
-/*   
-     separation-item.cc --  implement Separation_item
-  
-  source file of the GNU LilyPond music typesetter
-  
-  (c) 1998--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-  
- */
-
-#include "separation-item.hh"
-#include "paper-column.hh"
-#include "warn.hh"
-#include "group-interface.hh"
-#include "accidental-placement.hh"
-
-void
-Separation_item::add_item (Grob*s,Item* i)
-{
-  assert (i);
-  Pointer_group_interface::add_grob (s, ly_symbol2scm ("elements"),i);
-  s->add_dependency (i);
-}
-
-void
-Separation_item::add_conditional_item (Grob* me , Grob *e)
-{
-  Pointer_group_interface::add_grob (me, ly_symbol2scm ("conditional-elements"), e);
-}
-
-/*
-  Return the width of ME given that we are considering the object on
-  the LEFT.
- */
-Interval
-Separation_item::conditional_width (Grob * me, Grob * left)
-{
-  Interval w = width (me);
-  
-  Item *item = dynamic_cast<Item*> (me);
-  Paper_column * pc = item->get_column ();
-  
-  
-  for (SCM s =  me->get_grob_property ("conditional-elements"); gh_pair_p (s); s = ly_cdr (s))
-    {
-      SCM elt = ly_car (s);
-      if (!unsmob_grob (elt))
-	continue;
-      
-      Item *il = unsmob_item (elt);
-      if (pc != il->get_column ())
-	{
-	  /* this shouldn't happen, but let's continue anyway. */
-	  programming_error (_ ("Separation_item:  I've been drinking too much"));
-	  continue;		/*UGH UGH*/ 
-	}
-
-      if (to_boolean (il->get_grob_property ("no-spacing-rods")))
-	{
-	  continue;
-	}
-
-      if (Accidental_placement::has_interface (il))
-	{
-	  w.unite (Accidental_placement::get_relevant_accidental_extent (il, pc, left));
-	}
-    }
-
-  SCM pad = me->get_grob_property ("padding");
-
-  w.widen (robust_scm2double (pad, 0.0));
-  return w;
-}
-
-Interval
-Separation_item::width (Grob *me)
-{
-  SCM sw = me->get_grob_property ("X-extent");
-  if (is_number_pair (sw))
-    {
-      return ly_scm2interval (sw);
-    }
-
-  Item *item = dynamic_cast<Item*> (me);
-  Paper_column * pc = item->get_column ();
-  Interval w;
-  
-  for (SCM s =  me->get_grob_property ("elements"); gh_pair_p (s); s = ly_cdr (s))
-    {
-      SCM elt = ly_car (s);
-      if (!unsmob_grob (elt))
-	continue;
-
-      Item *il = unsmob_item (elt);
-      if (pc != il->get_column ())
-	{
-	  /* this shouldn't happen, but let's continue anyway. */
-	  programming_error (_ ("Separation_item:  I've been drinking too much"));
-	  continue;		/*UGH UGH*/ 
-	}
-
-      if (to_boolean (il->get_grob_property ("no-spacing-rods")))
-	{
-	  continue;
-	}
-
-      Interval iv (il->extent (pc, X_AXIS));
-      if (!iv.is_empty ())
-	{
-	  w.unite (iv);
-	}
-    }
-
-  SCM pad = me->get_grob_property ("padding");
-
-  w.widen (robust_scm2double (pad, 0.0));
-
-  me->set_grob_property ("X-extent", ly_interval2scm (w));
-  
-  return w;
-}
-
-Interval
-Separation_item::relative_width (Grob * me, Grob * common)
-{
-  Interval iv = width (me);
-
-  return dynamic_cast<Item*>(me)->get_column ()->relative_coordinate (common, X_AXIS) + iv ;
-}
-
-
-/*
-  Try to find the break-aligned symbol in SEPARATION_ITEM that is
-  sticking out at direction D. The x size is put in LAST_EXT
-*/
-Grob*
-Separation_item::extremal_break_aligned_grob (Grob *separation_item, Direction d,
-					    Interval * last_ext)
-{
-  Grob *col = dynamic_cast<Item*> (separation_item)->get_column ();
-  last_ext->set_empty ();
-  Grob *last_grob = 0;
-  for (SCM s = separation_item->get_grob_property ("elements");
-       gh_pair_p (s); s = gh_cdr (s))
-    {
-      Grob * break_item = unsmob_grob (gh_car (s));
-      
-      if (!gh_symbol_p (break_item->get_grob_property ("break-align-symbol")))
-	continue;
-
-      Interval ext = break_item->extent (col, X_AXIS);
-
-      if (ext.is_empty ())
-	continue;
-      if (!last_grob
-	  || (last_grob && d * (ext[d]- (*last_ext)[d]) > 0) )
-	{
-	  *last_ext = ext;
-	  last_grob = break_item; 
-	}
-    }
-
-  return last_grob;  
-}
-
-
-
-
-
-ADD_INTERFACE (Separation_item,"separation-item-interface",
-  "Item that computes widths to generate spacing rods.\n"
-"\n"
-"Calculate dimensions for the Separating_group_spanner; this has to be "
-"an item to get dependencies correct.  "
-, "padding X-extent conditional-elements elements");
diff --git a/lily/sequential-iterator.cc b/lily/sequential-iterator.cc
deleted file mode 100644
index e0fef5778b..0000000000
--- a/lily/sequential-iterator.cc
+++ /dev/null
@@ -1,304 +0,0 @@
-/*
-  Sequential_iterator.cc -- implement Sequential_iterator
-
-  source file of the GNU LilyPond music typesetter
-
-  (c) 1997--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-*/
-
-#include "translator-group.hh"
-
-#include "sequential-iterator.hh"
-#include "music-list.hh"
-
-Grace_fixup *copy_grace_fixups (Grace_fixup* src);
-Grace_fixup *get_grace_fixups (SCM cursor);
-
-/*
-  
-  TODO: handling of grace notes is exquisite pain.  This handling
-  should be formally specified and then the implementation verified.
-
-*/
-
-/*
-  Invariant for the data structure.
-
-
-  if (gh_pair_p (cursor_))
-    iter_->music_ == unsmob_music (ly_car (cursor_))
-  else
-    iter_ == 0;
-
-  The length of musiclist from start to up to cursor_ (cursor_ not
-  including), is summed
-
-  here_mom_  = sum (length (musiclist [start ... cursor>))  %)  
-  
- */
-Sequential_iterator::Sequential_iterator ()
-{
-  here_mom_ = Moment (0);
-  list_ = SCM_EOL;
-  cursor_ = SCM_EOL; 
-  grace_fixups_ = 0;
-  iter_ =0;
-}
-
-SCM 
-Sequential_iterator::get_music_list () const
-{
-  return SCM_EOL;
-}
-
-void
-Sequential_iterator::do_quit ()
-{
-  if (iter_)
-    iter_->quit();
-}
-
-
-
-
-void
-Sequential_iterator::derived_mark ()const
-{
-  if (iter_)
-    scm_gc_mark (iter_->self_scm());
-  scm_gc_mark (list_);
-  scm_gc_mark (cursor_);
-}
-
-
-void
-Sequential_iterator::derived_substitute (Translator_group*f,Translator_group*t)
-{
-  if (iter_)
-    iter_->substitute_outlet (f,t);
-  
-}
-
-Grace_fixup *
-get_grace_fixups (SCM cursor)
-{
-  Moment here;
-  Moment last (-1);
-  Grace_fixup *head = 0;
-  Grace_fixup **tail = &head;
-
-  for (; gh_pair_p (cursor); cursor = ly_cdr (cursor))
-    {
-      Music * mus = unsmob_music (ly_car (cursor));
-      Moment s = mus->start_mom ();
-      Moment l =mus->get_length () - s;
-
-      if (s.grace_part_)
-	{
-	  if (last != Moment (-1))
-	    {
-	      Grace_fixup *p =new Grace_fixup;
-	      p->start_ = last;
-	      p->length_ = here - last;
-	      p->grace_start_ = s.grace_part_;
-	      p->next_ = 0;
-	      *tail = p;
-	      tail = &(*tail)->next_; 
-	    }
-
-	  here.grace_part_ = s.grace_part_;
-	}
-      
-      if (l.to_bool())
-	{
-	  last = here;
-	  here += l;
-	}
-    }
-  return  head;
-}
-
-Grace_fixup *
-copy_grace_fixups (Grace_fixup* src)
-{
-  Grace_fixup * head = 0;
-  Grace_fixup **dest = &head;
-
-  while (src)
-    {
-      *dest = new Grace_fixup (*src);
-      dest = & (*dest)->next_;
-      src = src ->next_;
-    }
-
-  return head;
-}
-
-void
-Sequential_iterator::construct_children ()
-{
-  list_ = get_music_list ();
-  cursor_ = list_; 
-
-  iter_ = 0;
-  if (gh_pair_p (cursor_))
-    {
-      Music *m  =unsmob_music (ly_car (cursor_));
-      iter_ = unsmob_iterator (get_iterator (m));
-    }
-  
-  while (iter_ && !iter_->ok ())
-    {
-      next_element (true);
-    }
-
-  here_mom_ = get_music ()->start_mom ();
-  grace_fixups_ = get_grace_fixups (cursor_);
-
-  /*
-    iter_->ok () is tautology, but what the heck.
-   */
-  if (iter_ && iter_->ok ()) 
-    descend_to_child ();
-}
-
-
-/*
-  maintain invariants: change cursor, iter and here_mom_ in one fell
-  swoop.
-*/
-void
-Sequential_iterator::next_element (bool)
-{
-  Moment len =iter_->music_get_length () - iter_->music_start_mom ();
-  assert (!grace_fixups_  || grace_fixups_->start_ >= here_mom_);
-  
-  if (len.main_part_ && grace_fixups_ &&
-      grace_fixups_->start_ == here_mom_)
-    {
-      here_mom_ += grace_fixups_->length_;
-      here_mom_.grace_part_ += grace_fixups_->grace_start_;
-
-      Grace_fixup * n =grace_fixups_->next_;
-      delete grace_fixups_;
-      grace_fixups_ = n;
-    }
-  else if (len.grace_part_ && !len.main_part_)
-    {
-      here_mom_.grace_part_ =0;
-    }
-  else
-    {
-      /*
-	!len.grace_part_ || len.main_part_
-
-	We skip over a big chunk (mainpart != 0). Any starting graces
-	in that chunk should be in len.grace_part_
-
-      */
-      here_mom_ += len;
-    }
-  
-  cursor_ = ly_cdr (cursor_);
-
-  iter_->quit();
-  if (gh_pair_p (cursor_))
-    iter_ = unsmob_iterator (get_iterator (unsmob_music (ly_car (cursor_))));
-  else
-    iter_ = 0;
-}
-
-/*
-  move to context of child iterator if it is deeper down in the
-  hierarchy.
-  */
-void
-Sequential_iterator::descend_to_child ()
-{
-  Translator_group  * child_report = child_report = iter_->get_outlet ();
-  Translator_group * me_report = get_outlet ();
-
-  Translator_group * c = child_report;
-  while (c && c != me_report)
-    {
-      c= c->daddy_trans_;
-    }
-  
-  if (c == me_report)
-    set_translator (child_report);
-}
-
-
-
-void
-Sequential_iterator::process (Moment until)
-{
-  while (iter_)
-    {
-      if (grace_fixups_ &&
-	  grace_fixups_->start_ == here_mom_
-	  && (grace_fixups_->start_ + grace_fixups_->length_
-	      + Moment (Rational (0), grace_fixups_->grace_start_) == until))
-	{
-	  /*
-	    do the stuff/note/rest preceding a grace.
-	   */
-	  iter_->process (iter_->music_get_length ());
-	}
-      else
-	iter_->process (until - here_mom_ + iter_->music_start_mom ());
-
-      /*
-	if the iter is still OK, there must be events left that have
-	
-	  TIME > LEFT
-	  
-      */
-      if (iter_->ok ())
-	return ;
-
-      descend_to_child ();
-      next_element (true);
-    }
-}
-
-Moment
-Sequential_iterator::pending_moment () const
-{
-  Moment cp = iter_->pending_moment ();
-
-  /*
-    Fix-up a grace note halfway in the music.
-  */
-  if (grace_fixups_ && here_mom_ == grace_fixups_->start_
-      && grace_fixups_->length_ + iter_->music_start_mom () == cp)
-    {
-      return here_mom_ + grace_fixups_->length_ + Moment (0, grace_fixups_->grace_start_);
-    }
-
-  /*
-    Fix-up a grace note at  the start of the music.
-  */
-  return cp + here_mom_ - iter_->music_start_mom ();
-}
-
-
-bool
-Sequential_iterator::ok () const
-{
-  return iter_;
-}
-
-Music_iterator*
-Sequential_iterator::try_music_in_children (Music *m) const
-{ 
-  return iter_ ? iter_->try_music (m) : 0;
-}
-
-IMPLEMENT_CTOR_CALLBACK (Sequential_iterator);
-
-bool
-Sequential_iterator::run_always () const
-{
-  return iter_ ? iter_->run_always () : false; 
-}
diff --git a/lily/sequential-music-iterator.cc b/lily/sequential-music-iterator.cc
deleted file mode 100644
index c309287699..0000000000
--- a/lily/sequential-music-iterator.cc
+++ /dev/null
@@ -1,23 +0,0 @@
-/*
-  Sequential_music_iterator.cc -- implement Sequential_music_iterator
-
-  source file of the GNU LilyPond music typesetter
-
-  (c) 1997--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-*/
-
-#include "translator-group.hh"
-#include "warn.hh"
-#include "sequential-music-iterator.hh"
-#include "music-list.hh"
-
-
-
-
-IMPLEMENT_CTOR_CALLBACK (Sequential_music_iterator);
-
-SCM
-Sequential_music_iterator::get_music_list()const
-{
-  return dynamic_cast<Music_sequence const*> (get_music ())->music_list ();
-}
diff --git a/lily/sequential-music.cc b/lily/sequential-music.cc
deleted file mode 100644
index caba59421a..0000000000
--- a/lily/sequential-music.cc
+++ /dev/null
@@ -1,21 +0,0 @@
-
-#include "music-list.hh"
-#include "sequential-music-iterator.hh"
-
-Sequential_music::Sequential_music ()
-  : Music_sequence ()
-{
-}
-
-Moment
-Sequential_music::get_length () const
-{
-  return Music_sequence::cumulative_length (get_mus_property ("elements"));
-}
-ADD_MUSIC (Sequential_music);
-
-Moment
-Sequential_music::start_mom () const
-{
-  return Music_sequence::first_start (get_mus_property ("elements"));
-}
diff --git a/lily/side-position-interface.cc b/lily/side-position-interface.cc
deleted file mode 100644
index 78be35c460..0000000000
--- a/lily/side-position-interface.cc
+++ /dev/null
@@ -1,256 +0,0 @@
-/*   
-  staff-side.cc --  implement Staff_side_element
-  
-  source file of the GNU LilyPond music typesetter
-  
-  (c) 1998--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-  
- */
-#include <math.h>		// ceil.
-
-#include "side-position-interface.hh"
-#include "warn.hh"
-#include "warn.hh"
-#include "dimensions.hh"
-#include "staff-symbol-referencer.hh"
-#include "group-interface.hh"
-#include "directional-element-interface.hh"
-#include "staff-symbol-referencer.hh"
-
-void
-Side_position_interface::add_support (Grob*me, Grob*e)
-{
-  Pointer_group_interface::add_grob (me, ly_symbol2scm ("side-support-elements"), e);
-}
-
-Direction
-Side_position_interface::get_direction (Grob*me)
-{
-  SCM d = me->get_grob_property ("direction");
-  if (is_direction (d) && to_dir (d))
-    return to_dir (d);
-
-  Direction relative_dir = Direction (1);
-  SCM reldir = me->get_grob_property ("side-relative-direction");	// should use a lambda.
-  if (is_direction (reldir))
-    {
-      relative_dir = to_dir (reldir);
-    }
-  
-  SCM other_elt = me->get_grob_property ("direction-source");
-  Grob * e = unsmob_grob (other_elt);
-  if (e)
-    {
-      return (Direction) (relative_dir * get_grob_direction (e));
-    }
-  
-  return CENTER;
-}
-  
-
-MAKE_SCHEME_CALLBACK (Side_position_interface,aligned_on_support_extents, 2);
-SCM
-Side_position_interface::aligned_on_support_extents (SCM element_smob, SCM axis)
-{
-  Grob *me = unsmob_grob (element_smob);
-  Axis a = (Axis) gh_scm2int (axis);
-
-  return general_side_position (me, a, true);
-}
-
-
-/*
- Puts the element next to the support, optionally taking in
- account the extent of the support.
-*/
-SCM
-Side_position_interface::general_side_position (Grob * me, Axis a, bool use_extents)
-{
-  Real ss = Staff_symbol_referencer::staff_space (me);
-  SCM support = me->get_grob_property ("side-support-elements");
-  Grob *common = common_refpoint_of_list (support, me->get_parent (a), a);
-  
-  Interval dim;
-  for (SCM s = support; s != SCM_EOL; s = ly_cdr (s))
-    {
-      Grob * e  = unsmob_grob (ly_car (s));
-      if (e)
-	if (use_extents)
-	  dim.unite (e->extent (common, a));
-	else
-	  {
-	    Real x = e->relative_coordinate (common, a);
-	    dim.unite (Interval (x,x));
-	  }
-    }
-
-  if (dim.is_empty ())
-    {
-      dim = Interval (0,0);
-    }
-
-  Direction dir = Side_position_interface::get_direction (me);
-    
-  Real off =  me->get_parent (a)->relative_coordinate (common, a);
-  Real  minimum_space = ss * robust_scm2double (me->get_grob_property ("minimum-space"),  -1);
-
-  Real total_off = dim.linear_combination (dir) - off;
-  total_off += dir * ss * robust_scm2double (me->get_grob_property ("padding"), 0);
-
-  if (minimum_space >= 0
-      && dir
-      && total_off * dir < minimum_space)
-    {
-      total_off = minimum_space * dir;
-    }
-
-  if (fabs (total_off) > 100 CM)
-    programming_error ("Huh ? Improbable staff side dim.");
-
-
-  
-  
-  return gh_double2scm (total_off);
-}
-
-/*
-  Cut & paste (ugh.)
- */
-MAKE_SCHEME_CALLBACK (Side_position_interface,aligned_on_support_refpoints,2);
-SCM
-Side_position_interface::aligned_on_support_refpoints (SCM smob, SCM axis)
-{
-  Grob *me = unsmob_grob (smob);
-  Axis a = (Axis) gh_scm2int (axis);
-
-  return general_side_position (me, a, false); 
-}
-
-
-
-
-Real
-directed_round (Real f, Direction d)
-{
-  if (d < 0)
-    return floor (f);
-  else
-    return ceil (f);
-}
-
-/*
-  Callback that quantises in staff-spaces, rounding in the direction
-  of the elements "direction" elt property.
-
-  Only rounds when we're inside the staff, as determined by
-  Staff_symbol_referencer::staff_radius () */
-MAKE_SCHEME_CALLBACK (Side_position_interface,quantised_position,2);
-SCM
-Side_position_interface::quantised_position (SCM element_smob, SCM)
-{
-  Grob *me = unsmob_grob (element_smob);
-  
-  Direction d = Side_position_interface::get_direction (me);
-
-  Grob * stsym = Staff_symbol_referencer::get_staff_symbol (me);
-  if (stsym)
-    {
-      Real p = Staff_symbol_referencer::get_position (me);
-      Real rp = directed_round (p, d);
-      Real rad = Staff_symbol_referencer::staff_radius (me) *2 ;
-      int ip = int (rp);
-
-      if (abs (ip) <= rad && Staff_symbol_referencer::on_staffline (me,ip))
-	{
-	  ip += d;
-	  rp += d;
-	}
-
-      return gh_double2scm ((rp - p) * Staff_symbol_referencer::staff_space (me) / 2.0);
-    }
-  return gh_double2scm (0.0);
-}
-
-/*
-  Position next to support, taking into account my own dimensions and padding.
- */
-MAKE_SCHEME_CALLBACK (Side_position_interface,aligned_side,2);
-SCM
-Side_position_interface::aligned_side (SCM element_smob, SCM axis)
-{
-  Grob *me = unsmob_grob (element_smob);
-  Axis a = (Axis) gh_scm2int (axis);
-  
-  Direction d = Side_position_interface::get_direction (me);
-  
-  Real o = gh_scm2double (aligned_on_support_extents (element_smob,axis));
-
-  Interval iv =  me->extent (me, a);
-
-  if (!iv.is_empty ())
-    {
-      if (!d)
-	{
-	  programming_error ("Direction unknown, but aligned-side wanted.");
-	  d = DOWN;
-	}
-      o += - iv[-d];
-    }
-
-  /*
-  Maintain a minimum distance to the staff. This is similar to side
-  position with padding, but it will put adjoining objects on a row if
-  stuff sticks out of the staff a little.
- */
-  Grob * st = Staff_symbol_referencer::get_staff_symbol (me);
-  if (st && a == Y_AXIS
-      && gh_number_p (me->get_grob_property ("staff-padding")))
-    {
-      Real padding=
-      Staff_symbol_referencer::staff_space (me)
-      * gh_scm2double (me->get_grob_property ("staff-padding"));
-  
-      Grob *common = me->common_refpoint (st, Y_AXIS);
-      
-      Interval staff_size = st->extent (common, Y_AXIS);
-      Interval me_ext = me->extent (common, a);
-      Real diff =  d*staff_size[d] + padding - d*(o + iv[-d]);
-      o += (d*  (diff >? 0));
-    }
-      
-  return gh_double2scm (o);
-}
-
-
-void
-Side_position_interface::set_axis (Grob*me, Axis a)
-{
-  me->add_offset_callback (Side_position_interface::aligned_side_proc, a);
-}
-
-
-
-// ugh. doesn't cactch all variants. 
-Axis
-Side_position_interface::get_axis (Grob*me)
-{
-  if (me->has_offset_callback_b (Side_position_interface::aligned_side_proc, X_AXIS)
-      || me->has_offset_callback_b (Side_position_interface::aligned_side_proc , X_AXIS))
-    return X_AXIS;
-
-  
-  return Y_AXIS;
-}
-
-
-
-
-ADD_INTERFACE (Side_position_interface,"side-position-interface",
-	       "Position a victim object (this one) next to other objects (the "
-	       "support).  In this case, the property @code{direction} signifies where to put the  "
-	       "victim object relative to the support (left or right, up or down?)\n\n "
-	       "The routine puts objects at a distance of the staff if the property "
-	       "@code{staff-padding} is defined. If undefined, the staff symbol is ignored." 
-	       ,
-	       "staff-padding side-support-elements direction-source "
-	       "direction side-relative-direction minimum-space padding");
diff --git a/lily/simple-music-iterator.cc b/lily/simple-music-iterator.cc
deleted file mode 100644
index 6b1dedb55a..0000000000
--- a/lily/simple-music-iterator.cc
+++ /dev/null
@@ -1,55 +0,0 @@
-/*   
-  simple-music-iterator.cc --  implement Simple_music_iterator
-  
-  source file of the GNU LilyPond music typesetter
-  
-  (c) 2000--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-  
- */
-
-#include "simple-music-iterator.hh"
-#include "music.hh"
-#include "input.hh"
-
-Simple_music_iterator::Simple_music_iterator ()
-  : Music_iterator ()
-{
-  last_processed_mom_ = -1;
-}
-
-bool
-Simple_music_iterator::ok ()const
-{
-  return last_processed_mom_ < music_get_length ();
-}
-
-/*
-  TODO: remove last_processed_mom_, and the complete shit.  We should
-  only process a simple-music once, and that is at its start.
-
-  Engravers can detect and event the end-moments to be processed as
-  well.
-
-*/
-Moment
-Simple_music_iterator::pending_moment ()const
-{
-  if (last_processed_mom_ < Moment (0))
-    return Moment (0);
-  else
-    return music_get_length ();
-}
-
-
-void
-Simple_music_iterator::process (Moment m)
-{
-  /*
-  don't do try_music (), since it would make the function useless for
-  base classes
-  */
-
-  last_processed_mom_ = m;
-}
-
-IMPLEMENT_CTOR_CALLBACK (Simple_music_iterator);
diff --git a/lily/simple-spacer.cc b/lily/simple-spacer.cc
deleted file mode 100644
index 91aa56a2b6..0000000000
--- a/lily/simple-spacer.cc
+++ /dev/null
@@ -1,408 +0,0 @@
-/*   
-  simple-spacer.cc -- implement Simple_spacer
-  
-  source file of the GNU LilyPond music typesetter
-  
-  (c) 1999--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-
-  TODO:
-  - add support for different stretch/shrink constants?
-  
-*/
-#include <stdio.h>
-#include <math.h>
-#include <libc-extension.hh>	// isinf
-
-#include "simple-spacer.hh"
-#include "paper-column.hh"
-#include "spring.hh"
-#include "rod.hh"
-#include "warn.hh"
-#include "column-x-positions.hh"
-#include "spaceable-grob.hh"
-#include "dimensions.hh"
-
-
-/*
-   A simple spacing constraint solver. The approach:
-
-   Stretch the line uniformly until none of the constraints (rods)
-   block.  It then is very wide.
-
-      Compress until the next constraint blocks,
-
-      Mark the springs over the constrained part to be non-active.
-      
-   Repeat with the smaller set of non-active constraints, until all
-   constraints blocked, or until the line is as short as desired.
-
-   This is much simpler, and much much faster than full scale
-   Constrained QP. On the other hand, a situation like this will not
-   be typeset as dense as possible, because
-
-   c4                   c4           c4                  c4
-   veryveryverylongsyllable2         veryveryverylongsyllable2
-   " "4                 veryveryverylongsyllable2        syllable4
-
-
-   can be further compressed to
-
-
-   c4    c4                        c4   c4
-   veryveryverylongsyllable2       veryveryverylongsyllable2
-   " "4  veryveryverylongsyllable2      syllable4
-
-
-   Perhaps this is not a bad thing, because the 1st looks better anyway.  */
-
-
-Simple_spacer::Simple_spacer ()
-{
-  /*
-    Give an extra penalty for compression. Needed to avoid compressing
-    tightly spaced lines.
-  */
-  compression_penalty_b_ = false;
-  active_count_ = 0;
-  force_ = 0.;
-  indent_ =0.0;
-  default_space_ = 20 PT;
-}
-
-void
-Simple_spacer::add_rod (int l, int r, Real dist)
-{
-  if (isinf (dist) || isnan (dist))
-    {
-      programming_error ("Weird minimum distance. Ignoring");
-      return;
-    }
-
-  Real c = range_stiffness (l,r);
-  if (isinf (c))
-    {
-      /*
-	If a spring is fixed, we have to do something here:
-	we let the rod override the spring. 
-       */
-      Real total_dist = 0.;
-      for (int i = l ; i < r; i++)
-	total_dist += springs_[i].ideal_;
-
-      if (total_dist < dist)
-	for (int i = l ; i < r; i++)
-	  springs_[i].ideal_ *= dist/total_dist;
-
-      return;
-    }
-  
-  Real d = range_ideal_len (l,r);
-  Real block_stretch = dist - d;
-  
-  Real block_force = c * block_stretch;
-  force_ = force_ >? block_force;
-
-  for (int i=l; i < r; i++)
-    springs_[i].block_force_ = block_force >?
-      springs_[i].block_force_ ;
-}
-
-Real
-Simple_spacer::range_ideal_len (int l, int r)   const
-{
-  Real d =0.;
-  for (int i=l; i < r; i++)
-    d += springs_[i].ideal_;
-  return d;
-}
-
-Real
-Simple_spacer::range_stiffness (int l, int r) const
-{
-  Real den =0.0;
-  for (int i=l; i < r; i++)
-    {
-      if (springs_[i].active_b_)
-	den += 1 / springs_[i].hooke_;
-    }
-
-  return 1 / den;
-}
-
-Real
-Simple_spacer::active_blocking_force () const
-{
-  Real bf = - infinity_f; 
-  for (int i=0; i < springs_.size (); i++)
-    if (springs_[i].active_b_)
-      {
-	bf = bf >? springs_[i].block_force_;
-      }
-  return bf;
-}
-
-Real
-Simple_spacer::active_springs_stiffness () const
-{
-  return range_stiffness (0, springs_.size ());
-}
-
-void
-Simple_spacer::set_active_states ()
-{
-  /* float comparison is safe, since force is only copied.  */
-  for (int i=0 ; i <springs_.size (); i++)
-    if (springs_[i].active_b_
-	&& springs_[i].block_force_ >= force_)
-      {
-	springs_[i].active_b_ = false;
-	active_count_ --; 
-      }
-}   
-
-Real
-Simple_spacer::configuration_length () const
-{
-  Real l =0.;
-  for (int i=0; i < springs_.size (); i++)
-    l += springs_[i].length (force_);
-
-  return l;
-}
-
-bool
-Simple_spacer::active_b () const
-{
-  return active_count_; 
-}
-
-void
-Simple_spacer::my_solve_linelen ()
-{
-  while (active_b ())
-    {
-      force_ = active_blocking_force ();
-      Real conf = configuration_length ();
-
-      if (conf < line_len_)
-	{
-	  force_ += (line_len_  - conf) * active_springs_stiffness ();
-	  break;
-	}
-      else
-	set_active_states ();
-    }
-}
-
-
-void
-Simple_spacer::my_solve_natural_len ()
-{
-  while (active_b ())
-    {
-      force_ = active_blocking_force () >? 0.0;
-
-      if (force_ < 1e-8) // ugh.,
-	break;
-      
-      set_active_states ();
-    }
-}
-
-void
-Simple_spacer::add_columns (Link_array<Grob> const &icols)
-{
-  Link_array<Grob> cols(icols);
-  
-  for (int i =  cols.size (); i--;)
-    if (gh_pair_p (cols[i]->get_grob_property ("between-cols")))
-      {
-	loose_cols_.push (cols[i]);
-	cols.del (i);
-      }
-  
-  spaced_cols_ = cols;
-  for (int i=0; i < cols.size () - 1; i++)
-    {
-      Spring_smob *spring = 0;
-
-      for (SCM s = cols[i]->get_grob_property ("ideal-distances");
-	   !spring && gh_pair_p (s);
-	   s = ly_cdr (s))
-	{
-	  Spring_smob *sp = unsmob_spring (ly_car (s));
-	  
-	  
-	  if (sp->other_ == cols[i+1])
-	    spring = sp;
-	}
-
-      Spring_description desc;
-      if (spring)
-	{
-	  desc.ideal_ = spring->distance_;
-	  desc.hooke_ = spring->strength_;
-	}
-      else
-	{
-	  programming_error (_f("No spring between column %d and next one",
-				Paper_column::get_rank (cols[i])
-				));
-	  desc.hooke_ = 1.0;
-	  desc.ideal_ = default_space_;
-
-	  continue;
-	}
-
-      if (!desc.sane_b ())
-	{
-	  programming_error ("Insane spring found. Setting to unit spring.");
-
-	  desc.hooke_ = 1.0;
-	  desc.ideal_ = 1.0;
-	}
-
-      if (isinf (desc.hooke_))
-	{
-	  desc.active_b_ = false;
-	  springs_.push (desc);
-	}
-      else
-	{
-	  desc.block_force_ = - desc.hooke_ * desc.ideal_; // block at distance 0
-	  springs_.push (desc);
-      
-	  active_count_ ++;
-	}
-
-      if (spring->expand_only_b_)
-	{
-	  compression_penalty_b_ = true;
-	}
-      
-    }
-  
-  for (int i=0; i < cols.size () - 1; i++)
-    {
-      for (SCM s = Spaceable_grob::get_minimum_distances (cols[i]);
-	   gh_pair_p (s); s = ly_cdr (s))
-	{
-	  Grob * other = unsmob_grob (ly_caar (s));
-	  int oi = cols.find_index (other);
-	  if (oi >= 0)
-	    {
-	      add_rod (i, oi, gh_scm2double (ly_cdar (s)));
-	    }
-	}
-    }
-
-
-}
-
-/*
-  
-  TODO: should a add penalty for widely varying spring forces (caused
-  by constraints, eg.
-
-
-         =====  
-         |   |
-  o|o|  x ##x
-
-
-  The ## forces the notes apart; we shouldn't allow the O's to touch
-  this closely.
-  
- */
-void
-Simple_spacer::solve (Column_x_positions *positions, bool ragged) 
-{
-  /*
-    TODO: should support natural length on only the last line.
-   */
-  ragged = ragged || (line_len_ < 0) ;
-  if (ragged)
-    my_solve_natural_len ();
-  else
-    my_solve_linelen ();
-
-  positions->force_ = force_;
-  /*
-    We used to have a penalty for compression, no matter what, but that
-    fucked up wtk1-fugue2 (taking 3 full pages.)
-  */
-  
-  positions->config_.push (indent_);
-  for (int i=0; i <springs_.size (); i++)
-    {
-      Real  l = springs_[i].length ((ragged) ? 0.0 : force_);
-      positions->config_.push (positions->config_.top () + l);
-      /*
-	we have l>= 0 here, up to rounding errors 
-      */
-    }
-
-  /*
-    For raggedright, we must have a measure of music density: this is
-    to prevent lots of short lines (which all have force = 0).
-    */
-  if (ragged && line_len_ > 0)
-    {
-      Real len = positions->config_.top ();
-      positions->force_ = (line_len_ - len) *  active_springs_stiffness ();
-    }
-
-
-  positions->cols_ = spaced_cols_;
-  positions->loose_cols_ = loose_cols_;
-  positions->satisfies_constraints_b_ = (line_len_ < 0) || active_b ();
-
-  /*
-    Check if breaking constraints are met.
-   */
-  bool break_satisfy = true;
-  int sz =  positions->cols_.size ();
-  for (int i = sz; i--; )
-    {
-      SCM p = positions->cols_[i]->get_grob_property( "penalty");
-      if (gh_number_p (p))
-	{
-	  if (gh_scm2double (p) < -9999)
-	    break_satisfy = break_satisfy && (i == 0 || i == sz -1);
-	  if (gh_scm2double (p) > 9999)
-	    break_satisfy = break_satisfy && !(i == 0 || i == sz -1);
-	}
-      
-    }
-
-  positions->satisfies_constraints_b_ =
-    positions->satisfies_constraints_b_ && break_satisfy;
-
-  if (ragged && force_ < 0)
-    positions->satisfies_constraints_b_ = false;
-}
-
-/****************************************************************/
-
-Spring_description::Spring_description ()
-{
-  ideal_ =0.0;
-  hooke_ =0.0;
-  active_b_ = true;
-  block_force_ = 0.0;
-}
-
-
-bool
-Spring_description::sane_b () const
-{
-  return (hooke_ > 0) &&  !isinf (ideal_) && !isnan (ideal_);
-}
-
-Real
-Spring_description::length (Real f) const
-{
-  if (!active_b_)
-    f = block_force_;
-  return ideal_ + f / hooke_ ;
-}
diff --git a/lily/simultaneous-music-iterator.cc b/lily/simultaneous-music-iterator.cc
deleted file mode 100644
index df3c947ba6..0000000000
--- a/lily/simultaneous-music-iterator.cc
+++ /dev/null
@@ -1,159 +0,0 @@
-/*
-  Simultaneous_music-iterator.cc -- implement Simultaneous_music_iterator
-
-  source file of the GNU LilyPond music typesetter
-
-  (c) 1997--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-*/
-
-#include "translator-group.hh"
-#include "warn.hh"
-#include "simultaneous-music-iterator.hh"
-#include "music-list.hh"
-#include "context-def.hh"
-
-
-Simultaneous_music_iterator::Simultaneous_music_iterator ()
-{
-  separate_contexts_b_ = false;
-  children_list_ = SCM_EOL;
-}
-
-
-void
-Simultaneous_music_iterator::derived_mark()const
-{
-  scm_gc_mark (children_list_);
-}
-
-void
-Simultaneous_music_iterator::derived_substitute(Translator_group*f,Translator_group*t)
-{
-  for (SCM s = children_list_; gh_pair_p (s); s = gh_cdr(s))
-    unsmob_iterator (gh_car (s))-> substitute_outlet (f,t);
-}
-
-void
-Simultaneous_music_iterator::construct_children ()
-{
-  int j = 0;
-
-  SCM i = get_music ()->get_mus_property ("elements");
-
-  children_list_ = SCM_EOL;
-  SCM * tail = &children_list_;
-  for (; gh_pair_p (i); i = ly_cdr (i), j++)
-    {
-      Music *mus = unsmob_music (ly_car (i));
-
-      SCM scm_iter = get_static_get_iterator (mus);
-      Music_iterator * mi = unsmob_iterator (scm_iter);
-
-      /* if separate_contexts_b_ is set, create a new context with the
-	 number number as name */
-
-      SCM name = unsmob_context_def (get_outlet ()->definition_)->get_context_name ();
-      Translator_group * t = (j && separate_contexts_b_)
-	? get_outlet ()->find_create_translator (name, to_string (j), SCM_EOL)
-	: get_outlet ();
-
-      if (!t)
-	t = get_outlet ();
-
-      mi->init_translator (mus, t);
-      mi->construct_children ();
-
-      if (mi->ok ()) 
-	{
-	  *tail = scm_cons (scm_iter, *tail);
-	  tail = SCM_CDRLOC (*tail);
-	}
-      else
-	mi->set_translator (0);
-    }
-}
-
-void
-Simultaneous_music_iterator::process (Moment until)
-{
-  SCM *proc = &children_list_; 
-  while(gh_pair_p (*proc))
-    {
-      Music_iterator * i = unsmob_iterator (gh_car (*proc));
-      if (i->run_always ()
-	  || i->pending_moment () == until) 
-	{
-	  i->process (until);
-	}
-      if (!i->ok ())
-	{
-	  i->quit ();
-	  *proc = gh_cdr (*proc);
-	}
-      else
-	{
-	  proc = SCM_CDRLOC(*proc);
-	}
-    }
-}
-
-Moment
-Simultaneous_music_iterator::pending_moment () const
-{
-  Moment next;
-  next.set_infinite (1);
-  
-  for (SCM s = children_list_; gh_pair_p (s); s = gh_cdr(s))
-    {
-      Music_iterator * it = unsmob_iterator (gh_car (s));
-      next = next <? it->pending_moment ();
-    }
-  
-  return next;
-}
-
-bool
-Simultaneous_music_iterator::ok () const
-{
-  bool run_always_ok = false; 
-  for (SCM s = children_list_; gh_pair_p (s); s = gh_cdr(s))
-    {
-      Music_iterator * it = unsmob_iterator (gh_car (s));
-      if (!it->run_always ())
-	return true;
-      else
-	run_always_ok =  run_always_ok || it->ok ();
-    }
-  return run_always_ok;
-}
-
-bool
-Simultaneous_music_iterator::run_always () const
-{
-  for (SCM s = children_list_; gh_pair_p (s); s = gh_cdr(s))
-    {
-      Music_iterator * it = unsmob_iterator (gh_car (s));
-      if (it->run_always ())
-	return true;
-    }
-  return false;
-}
-
-Music_iterator*
-Simultaneous_music_iterator::try_music_in_children (Music *m) const
-{
-  Music_iterator * b=0;
-  for (SCM s = children_list_; !b && gh_pair_p (s); s = gh_cdr(s))
-    b =unsmob_iterator (gh_car (s))->try_music (m);
-  return b;
-}
-
-void
-Simultaneous_music_iterator::do_quit ()
-{
-  for (SCM s = children_list_; gh_pair_p (s); s = gh_cdr(s))
-    unsmob_iterator (gh_car (s))->quit();
-}
-
-
-IMPLEMENT_CTOR_CALLBACK (Simultaneous_music_iterator);
diff --git a/lily/simultaneous-music.cc b/lily/simultaneous-music.cc
deleted file mode 100644
index 011734b966..0000000000
--- a/lily/simultaneous-music.cc
+++ /dev/null
@@ -1,50 +0,0 @@
-/*   
-  simultaneous-music.cc --  implement Simultaneous_music
-
-  source file of the GNU LilyPond music typesetter
-
-  (c) 1998--2004 Han-Wen Nienhuys <hanwen@xs4all.nl>
-
-*/
-
-#include "input.hh"
-#include "moment.hh"
-#include "pitch.hh"
-#include "music-list.hh"
-#include "scm-option.hh"
-
-Moment
-Simultaneous_music::get_length () const
-{
-  return Music_sequence::maximum_length (get_mus_property ("elements"));
-}
-
-Moment
-Simultaneous_music::start_mom () const
-{
-  return Music_sequence::minimum_start (get_mus_property ("elements"));
-}
-
-Simultaneous_music::Simultaneous_music()
-{
-
-}
-
-Pitch
-Simultaneous_music::to_relative_octave (Pitch p)
-{
-  if (lily_1_8_relative)
-    lily_1_8_compatibility_used = true;
-  
-  return music_list_to_relative (music_list(), p, lily_1_8_relative);
-}
-
-ADD_MUSIC (Simultaneous_music);
-
-Pitch
-Event_chord::to_relative_octave (Pitch p)
-{
-  return music_list_to_relative (music_list (), p, true);
-}
-
-ADD_MUSIC(Event_chord);
diff --git a/lily/skyline.cc b/lily/skyline.cc
deleted file mode 100644
index 718200c012..0000000000
--- a/lily/skyline.cc
+++ /dev/null
@@ -1,198 +0,0 @@
-/*   
-  skyline.cc -- implement Skyline_entry and funcs.
-
-  source file of the GNU LilyPond music typesetter
-
-  (c) 2002--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-*/
-
-#include "skyline.hh" 
-
-
-/*
-  A skyline is a shape of the form:
-
-
-		   ----
-		   |  |
-	  ---------|  |
-	  |	      |
-          |	      |
-          |	      |______
-  --------|		     |___
-  
-
-
-  This file deals with building such skyline structure, and computing
-  the minimum distance between two opposing skylines.
-  
-   
-  Invariants for a skyline:
-
-  skyline[...].width_ forms a partition of the real interval, where
-  the segments are adjacent, and ascending. Hence we have
-  
-  skyline.top().width_[RIGHT] = inf
-  skyline[0].width_[LEFT] = -inf
-  
- */
-
-
-const Real EPS = 1e-12;  
-
-/*
-  TODO: avoid unnecessary fragmentation.
-
-  This is O(n^2), searching and insertion.  Could be O(n log n) with
-  binsearch.
-*/
-void
-insert_extent_into_skyline (Array<Skyline_entry> *line, Box b, Axis line_axis,
-			    Direction d)
-{
-  Interval extent = b[line_axis];
-  if (extent.is_empty ())
-    return;
-  
-  Real stick_out = b[other_axis (line_axis)][d];
-
-  /*
-    Intersect each segment of LINE with EXTENT, and if non-empty, insert relevant segments. 
-   */
-  for (int i = line->size(); i--;)
-    {
-      Interval w = line->elem(i).width_;
-      w.intersect (extent);
-
-      if (extent[LEFT] >= w[RIGHT])
-	break;
-      
-      Real my_height = line->elem(i).height_;
-
-      if (!w.is_empty () &&
-	  w.length() > EPS
-	  && d* (my_height - stick_out) < 0)
-	{
-	  Interval e1 (line->elem(i).width_[LEFT], extent[LEFT]);
-	  Interval e3 (extent[RIGHT], line->elem(i).width_[RIGHT]);
-
-	  if (!e3.is_empty () && e3.length() > EPS)
-	    line->insert (Skyline_entry (e3, my_height), i+1);
-
-	  line->elem_ref(i).height_ = stick_out;
-	  line->elem_ref(i).width_ = w;
-	  if (!e1.is_empty () && e1.length() > EPS)
-	    line->insert (Skyline_entry (e1, my_height), i );
-	}
-
-
-    }
-}
-
-void
-merge_skyline (Array<Skyline_entry> * a1,
-	       Array<Skyline_entry> const  & a2,
-	       Direction dir)
-{
-  for (int i = 0; i < a2.size(); i++)
-    {
-      Box b;
-      b[X_AXIS] = a2[i].width_;
-      b[Y_AXIS][dir] = a2[i].height_;
-      b[Y_AXIS][-dir] = dir * infinity_f ;
-
-      insert_extent_into_skyline (a1, b, X_AXIS, dir);
-    }
-}
-
-
-Array<Skyline_entry>
-empty_skyline (Direction d)
-{
-  Array<Skyline_entry> skyline;
-
-  Interval i;
-  i.set_empty();
-  i.swap();
-  Skyline_entry e;
-  e.width_ = i;
-  e.height_ = -d * infinity_f; 
-  skyline.push (e);
-  return skyline;
-}
-
-Array<Skyline_entry>
-extents_to_skyline (Array<Box> const &extents, Axis a, Direction d)
-{
-
-  Array<Skyline_entry> skyline = empty_skyline(d);
-
-  /*
-    This makes a cubic algorithm (array  insertion is O(n),
-    searching the array dumbly is O(n), and for n items, we get O(n^3).)
-
-    We could do a lot better (n log (n), using a balanced tree) but
-    that seems overkill for now.
-   */
-  for (int j = extents.size(); j--; )
-    insert_extent_into_skyline (&skyline, extents[j], a, d);
-
-  return skyline;
-}
-
-
-
-/*
-  minimum distance that can be achieved between baselines. "Clouds" is
-  a skyline pointing down.
-
-  This is an O(n) algorithm.
- */
-Real
-skyline_meshing_distance (Array<Skyline_entry> const &buildings,
-			  Array<Skyline_entry> const &clouds)
-{
-  int i = buildings.size () -1;
-  int j  = clouds.size() -1;
-
-  Real distance = - infinity_f;
-  
-  while (i > 0 || j > 0)
-    {
-      Interval w = buildings[i].width_;
-      w.intersect(clouds[j].width_);
-      
-      if (!w.is_empty ())
-	distance = distance >? (buildings[i].height_ - clouds[j].height_);
-
-      if (i>0 && buildings[i].width_[LEFT] >=  clouds[j].width_[LEFT])
-	{
-	  i--;
-	}
-      else if (j > 0 && buildings[i].width_[LEFT] <=  clouds[j].width_[LEFT])
-	{
-	  j--;
-	}	
-    }
-
-  return distance;
-}
-
-Skyline_entry::Skyline_entry()
-{
-  height_ = 0.0;
-}
-
-Skyline_entry::Skyline_entry (Interval i, Real r)
-{
-  width_ = i;
-  height_ = r;
-  
-}
-
-void
-heighten_skyline (Array<Skyline_entry> *buildings, Real ground)
-{
-  for (int i = 0; i < buildings->size (); i++)
-    buildings->elem_ref (i).height_ += ground; 
-}
diff --git a/lily/slash-repeat-engraver.cc b/lily/slash-repeat-engraver.cc
deleted file mode 100644
index 3ca67f6e72..0000000000
--- a/lily/slash-repeat-engraver.cc
+++ /dev/null
@@ -1,149 +0,0 @@
-/*   
-     slash-repeat-engraver.cc --  implement Chord_tremolo_engraver
-  
-  source file of the GNU LilyPond music typesetter
-  
-  (c) 2000--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-  
- */
-
-#include "engraver.hh"
-#include "repeated-music.hh"
-#include "engraver-group-engraver.hh"
-#include "global-translator.hh"
-#include "warn.hh"
-#include "misc.hh"
-#include "spanner.hh"
-#include "item.hh"
-#include "percent-repeat-iterator.hh"
-#include "bar-line.hh"
-
-#include "score-engraver.hh"
-#include "translator-group.hh"
-
-/**
-  This acknowledges repeated music with "percent" style.  It typesets
-  a % sign.  
-
-  TODO:
-
-  - BEAT case: Create items for single beat repeats, i.e. c4 / / /
-
-  - DOUBLE_MEASURE case: attach a % to an appropriate barline.
-  
-*/
-class Slash_repeat_engraver : public Engraver
-{
-public:
-  TRANSLATOR_DECLARATIONS(Slash_repeat_engraver);
-protected:
-  Repeated_music * repeat_;
-
-  /// moment (global time) where beam started.
-  Moment start_mom_;
-  Moment stop_mom_;
-
-  /// location  within measure where beam started.
-  Moment beam_start_location_;
-  Moment next_moment_;
-  Moment body_length_;
-
-  Item * beat_slash_;
-  Item * double_percent_;
-protected:
-  virtual bool try_music (Music*);
-  virtual void stop_translation_timestep ();
-  virtual void start_translation_timestep ();
-  virtual void process_music ();
-};
-
-Slash_repeat_engraver::Slash_repeat_engraver ()
-{
-  repeat_ =0;
-  beat_slash_ = 0;
-}
-
-bool
-Slash_repeat_engraver::try_music (Music * m)
-{
-  Repeated_music * rp = dynamic_cast<Repeated_music*> (m);
-  if (rp
-      && !repeat_
-      && rp->get_mus_property ("iterator-ctor")
-      == Percent_repeat_iterator::constructor_proc)
-    {
-      body_length_ = rp->body_get_length ();
-      int count =   rp->repeat_count ();
-      
-      Moment now = now_mom ();
-      start_mom_ = now;
-      stop_mom_ = start_mom_ + Moment (count) * body_length_;
-      next_moment_ = start_mom_ + body_length_;
-
-      SCM m = get_property ("measureLength");
-      Moment meas_len;
-      if (Moment *mp = unsmob_moment (m))
-	meas_len = *mp;
-
-      if (body_length_ < meas_len 
-	  && meas_len.main_part_.mod_rat (body_length_.main_part_)
-	  == Moment (Rational (0,0)))
-	{
-	  repeat_ = rp;
-	}
-      else
-	return false;
-      
-      Global_translator *global =top_engraver();
-      for (int i = 0; i < count; i++)  
-	global->add_moment_to_process (next_moment_ + Moment (i) * body_length_);
-  
-      return true;
-    }
-
-  return false;
-}
-
-void
-Slash_repeat_engraver::process_music ()
-{
-  if (repeat_ && now_mom () == next_moment_)
-    {
-      beat_slash_ = make_item ("RepeatSlash");
-      announce_grob(beat_slash_, repeat_->self_scm());
-      next_moment_ = next_moment_ + body_length_;
-
-      top_engraver()->add_moment_to_process (next_moment_);
-    }
-}
-
-
-void
-Slash_repeat_engraver::start_translation_timestep ()
-{
-  if (stop_mom_ == now_mom ())
-    {
-      repeat_ = 0;
-    }
-}
-
-void
-Slash_repeat_engraver::stop_translation_timestep ()
-{
- if (beat_slash_)
-    {
-      typeset_grob (beat_slash_);
-      beat_slash_ = 0;
-    }
-}
-
-
-
-
-ENTER_DESCRIPTION(Slash_repeat_engraver,
-/* descr */       "Make beat repeats.",
-/* creats*/       "RepeatSlash",
-/* accepts */     "repeated-music",
-/* acks  */      "",
-/* reads */       "measureLength",
-/* write */       "");
diff --git a/lily/slur-bezier-bow.cc b/lily/slur-bezier-bow.cc
deleted file mode 100644
index f007d58dae..0000000000
--- a/lily/slur-bezier-bow.cc
+++ /dev/null
@@ -1,219 +0,0 @@
-/*
-  slur-bezier-bow.cc -- implement Slur_bezier_bow
-
-  source file of the GNU LilyPond music typesetter
-
-  (c) 2000--2004  Jan Nieuwenhuizen <janneke@gnu.org>
-*/
-
-#include "warn.hh"
-#include "paper-def.hh"
-#include "slur-bezier-bow.hh"
-
-Slur_bezier_bow::Slur_bezier_bow (Array<Offset> encompass, Direction dir,
-				  Real h_inf, Real r_0)
-{
-  h_inf_ = h_inf;
-  r_0_ = r_0;
-  alpha_ = 0;
-  dir_ = dir;
-  encompass_ = encompass;
-  to_canonical_form ();
-
-  Real w = encompass_.top ()[X_AXIS] - encompass_[0][X_AXIS];
-  curve_ = slur_shape (w, h_inf, r_0);
-}
-
-Bezier
-Slur_bezier_bow::get_bezier () const
-{
-  Bezier rv = curve_;
-  if (dir_ == DOWN)
-    {
-      rv.scale (1, -1);
-    }
-
-  rv.rotate (alpha_);
-  rv.translate (origin_);
-  
-  return rv;
-}
-
-void
-Slur_bezier_bow::to_canonical_form ()
-{
-  origin_ = encompass_[0];
-  translate (&encompass_, -origin_);
-
-  Offset delta = encompass_.top () - encompass_[0];
-  alpha_ = delta.arg ();
-
-  rotate (&encompass_, -alpha_);
-  if (dir_ == DOWN)
-    {
-      scale (&encompass_, 1, -1);
-    }
-
-  while (encompass_.size () > 1 && encompass_[1][X_AXIS] <= 0.0)
-    {
-      programming_error ("Degenerate bow: infinite steepness reqd");
-      encompass_.del (1);
-    }
-
-  Real l = encompass_.top ()[X_AXIS];
-  while (encompass_.size () > 1 && encompass_.top (1)[X_AXIS] >= l)
-    {
-      programming_error ("Degenerate bow: infinite steepness reqd");
-      encompass_.del (encompass_.size ()-2);
-    }
-}
-
-
-
-void
-Slur_bezier_bow::blow_fit ()
-{
-  Real len = curve_.control_[3][X_AXIS]; 
-  Real h = curve_.control_[1][Y_AXIS] * fit_factor () / len;
-  curve_.control_[1][Y_AXIS] = h * len;
-  curve_.control_[2][Y_AXIS] = h * len;  
-  curve_.assert_sanity ();
-}
-
-
-Real
-Slur_bezier_bow::get_enclosed_area () const
-{
-  Real a = 0;
-  for (int i=0; i < encompass_.size (); i++)
-    {
-      Interval x;
-      Interval y;
-      if (i == 0)
-	{
-	  x = Interval (0, encompass_[1][X_AXIS] / 2);
-	  y = Interval (0,
-			curve_.get_other_coordinate (X_AXIS,
-						     encompass_[1][X_AXIS]
-						     / 2));
-	}
-      else if (i == encompass_.size () - 1)
-	{
-	  x = Interval ((encompass_[i-1][X_AXIS] + encompass_[i][X_AXIS])/2, 
-			encompass_[i][X_AXIS]);
-	  y = Interval (0,
- (curve_.get_other_coordinate (X_AXIS,
- (x[MIN] + x[MAX]) / 2)));
-	}
-      else
-	{
-	  x = Interval ((encompass_[i-1][X_AXIS] + encompass_[i][X_AXIS]) / 2, 
- (encompass_[i][X_AXIS] + encompass_[i+1][X_AXIS]) / 2);
-	  y = Interval (encompass_[i][Y_AXIS],
- (curve_.get_other_coordinate (X_AXIS, x[MIN])
-			 + curve_.get_other_coordinate (X_AXIS,
- (x[MIN] + x[MAX]) / 2)
-			 + curve_.get_other_coordinate (X_AXIS, x[MAX])) / 3);
-	}
-      
-      Real da = x.length () * y.length ();
-      a += da;
-    }
-  return a;
-}
-
-Array<Real>
-Slur_bezier_bow::area_x_gradientses (Real area)
-{
-  Real len = curve_.control_[3][X_AXIS]; 
-  Real grow = len / 10.0;
-  Array<Real> da (2);
-  for (int i=0; i < 2; i++)
-    {
-      Real r = curve_.control_[i+1][X_AXIS];
-      curve_.control_[i+1][X_AXIS] += grow;
-      da[i] = (get_enclosed_area () - area) / grow;
-      curve_.control_[i+1][X_AXIS] = r; 
-    }
-  return da;
-}
-
-/*
-  ugh, should have another look, and use a regular optimization
-  algorithm, instead of this homebrew.
-*/
-void
-Slur_bezier_bow::minimise_enclosed_area (Real beauty,
-					 SCM bezier_props)
-{
-  Real length = curve_.control_[3][X_AXIS]; 
-  Real beautiful = beauty * length * slur_height (length, h_inf_, r_0_);
-
-
-  if (fit_factor () > 1.0)
-    blow_fit ();
-  
-  Real pct_c0 = gh_scm2double (ly_cdr (scm_assoc (ly_symbol2scm ("bezier-pct-c0"), bezier_props)));
-  Real pct_c3 = gh_scm2double (ly_cdr (scm_assoc (ly_symbol2scm ("bezier-pct-c3"), bezier_props)));
-  Real pct_in_max =  gh_scm2double (ly_cdr (scm_assoc (ly_symbol2scm ("bezier-pct-in-max"), bezier_props)));
-  Real pct_out_max = gh_scm2double (ly_cdr (scm_assoc (ly_symbol2scm ("bezier-pct-out-max"), bezier_props)));
-  Real steps =  gh_scm2double (ly_cdr (scm_assoc (ly_symbol2scm ("bezier-area-steps"),bezier_props)));
-
-  for (int i=0; i < steps; i++)
-    {
-      Real area = get_enclosed_area ();
-      if (area <= beautiful)
-	break;
-
-      Array<Real> da = area_x_gradientses (area);
-
-      // urg
-      Real pct = pct_c0 + pct_c3 * length * length * length;
-      pct *= (steps - i) / steps;
-      if (da[0] > 0 || da[1] < 0)
-	pct = pct <? pct_out_max;
-      else
-	pct = pct <? pct_in_max;
-
-      Real u = (abs (curve_.control_[1][X_AXIS] / da[0])
-		<? abs ((curve_.control_[3][X_AXIS]
-			 - curve_.control_[2][X_AXIS]) / da[1]));
-
-      curve_.control_[1][X_AXIS] -= da[0] * u * pct;
-      curve_.control_[2][X_AXIS] -= da[1] * u * pct;
-    }
-}
-
-
-
-/*
-  max (encompass.y / curve.y)
-  
- */
-Real
-Slur_bezier_bow::fit_factor () const
-{
-  Real x1 = encompass_[0][X_AXIS];
-  Real x2 = encompass_.top ()[X_AXIS];
-
-  Real factor = 0.0;
-  for (int i=1; i < encompass_.size ()-1; i++)
-    {
-      if (encompass_[i][X_AXIS] > x1 && encompass_[i][X_AXIS] < x2)
-	{
-	 Real y = curve_.get_other_coordinate (X_AXIS, encompass_[i][X_AXIS]);
-	 if (y>0)
-	   {
-	     Real f = encompass_[i][Y_AXIS] / y;
-	     factor = factor >? f;
-	   }
-	}
-    }
-
-
-  return factor;
-}
-
-
-
-
diff --git a/lily/slur-engraver.cc b/lily/slur-engraver.cc
deleted file mode 100644
index 172a9ff42e..0000000000
--- a/lily/slur-engraver.cc
+++ /dev/null
@@ -1,192 +0,0 @@
-/*
-  slur-engraver.cc -- implement Slur_engraver
-
-  (c) 1997--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-*/
-
-#include "event.hh"
-#include "slur.hh"
-#include "warn.hh"
-#include "note-column.hh"
-#include "translator-group.hh"
-#include "engraver.hh"
-#include "spanner.hh"
-
-/*
-  TODO: junk nested slur functionality.
- */
-class Slur_engraver : public Engraver
-{
-  Link_array<Music> events_;
-  Link_array<Music> new_slur_evs_;
-  Link_array<Grob> slur_stack_;
-  Link_array<Grob> end_slurs_;
-  Moment last_start_;
-
-  void set_melisma (bool);
-
-protected:
-  virtual bool try_music (Music*);
-  virtual void acknowledge_grob (Grob_info);
-  virtual void stop_translation_timestep ();
-  virtual void finalize ();
-  virtual void process_music ();
-
-public:
-  TRANSLATOR_DECLARATIONS (Slur_engraver);
-};
-
-Slur_engraver::Slur_engraver ()
-{
-  last_start_ = Moment (-1);
-}
-
-bool
-Slur_engraver::try_music (Music *ev)
-{
-  if (ev->is_mus_type ("slur-event"))
-    {
-      /*
-	Let's not start more than one slur per moment.
-      */
-      Direction d = to_dir (ev->get_mus_property ("span-direction"));
-      if (d == START)
-	{
-	  if (now_mom () > last_start_)
-	    {
-	      new_slur_evs_.push (ev);
-	      last_start_ = now_mom ();
-	    }
-
-	  /*
-	    But we swallow other slur events.
-	  */
-	      
-	  return true;
-	}
-      else if (d == STOP)
-	{
-	  /*
-	    Swallow other events.
-	  */
-	  for (int j = new_slur_evs_.size(); j--;)
-	    {
-	      Direction nd = to_dir (new_slur_evs_[j]->get_mus_property ("span-direction"));
-	      
-	      if (nd == STOP)
-		return true;
-	    }
-	      
-	  new_slur_evs_.push (ev);
-	  return true;
-	}
-    }
-  return false;
-}
-
-void
-Slur_engraver::set_melisma (bool m)
-{
-  daddy_trans_->set_property ("slurMelismaBusy", m ? SCM_BOOL_T :SCM_BOOL_F);
-}
-
-void
-Slur_engraver::acknowledge_grob (Grob_info info)
-{
-  if (Note_column::has_interface (info.grob_))
-    {
-      Grob *e =info.grob_;
-      for (int i = 0; i < slur_stack_.size (); i++)
-	Slur::add_column (slur_stack_[i], e);
-      for (int i = 0; i < end_slurs_.size (); i++)
-	Slur::add_column (end_slurs_[i], e);
-    }
-}
-
-void
-Slur_engraver::finalize ()
-{
-  for (int i = 0; i < slur_stack_.size (); i++)
-    {
-      /*
-	Let's not typeset unterminated stuff
-       */
-      slur_stack_[i]->suicide ();
-    }
-  slur_stack_.clear ();
-
-  for (int i=0; i < events_.size (); i++)
-      {
-	events_[i]->origin ()->warning (_ ("unterminated slur"));
-      }
-}
-
-void
-Slur_engraver::process_music ()
-{
-  Link_array<Grob> start_slurs;
-  for (int i=0; i< new_slur_evs_.size (); i++)
-    {
-      Music* slur_ev = new_slur_evs_[i];
-      // end slur: move the slur to other array
-      Direction d = to_dir (slur_ev->get_mus_property ("span-direction"));
-      if (d== STOP)
-	{
-	  if (slur_stack_.is_empty ())
-	    /* How to shut up this warning, when Voice_devnull_engraver has
-	       eaten start event? */
-	    slur_ev->origin ()->warning (_f ("can't find start of slur"));
-	  else
-	    {
-	      Grob* slur = slur_stack_.pop ();
-	    
-	      end_slurs_.push (slur);
-	      events_.pop ();
-	    }
-	}
-      else  if (d == START)
-	{
-	  // push a new slur onto stack.
-	  // (use temp. array to wait for all slur STOPs)
-	  Grob* slur = make_spanner ("Slur");
-	  Slur::set_interface (slur); // cannot remove yet!
-
-
-	  if (Direction updown = to_dir (slur_ev->get_mus_property ("direction")))
-	    {
-	      slur->set_grob_property ("direction", gh_int2scm (updown));
-	    }
-	  
-	  start_slurs.push (slur);
-	  events_.push (slur_ev);
-	  announce_grob (slur, slur_ev->self_scm ());
-	}
-    }
-
-  slur_stack_.concat  (start_slurs);
-
-  set_melisma (slur_stack_.size ());
-
-  new_slur_evs_.clear ();
-}
-
-void
-Slur_engraver::stop_translation_timestep ()
-{
-  for (int i = 0; i < end_slurs_.size (); i++)
-    {
-      typeset_grob (end_slurs_[i]);
-    }
-  end_slurs_.clear ();
-  new_slur_evs_.clear ();
-}
-
-
-
-ENTER_DESCRIPTION (Slur_engraver,
-/* descr */       "Build slurs from Slur_evs",
-/* creats*/       "Slur",
-/* accepts */     "slur-event",
-/* acks  */      "note-column-interface",
-/* reads */       "slurMelismaBusy",
-/* write */       "");
diff --git a/lily/slur-performer.cc b/lily/slur-performer.cc
deleted file mode 100644
index ac086bee88..0000000000
--- a/lily/slur-performer.cc
+++ /dev/null
@@ -1,95 +0,0 @@
-/*
-  slur-performer.cc -- implement Slur_performer
-
-  source file of the GNU LilyPond music typesetter
-
-  (c) 1996--2004 Jan Nieuwenhuizen <janneke@gnu.org>
- */
-
-#include "performer.hh"
-#include "event.hh"
-#include "audio-item.hh"
-#include "audio-column.hh"
-#include "global-translator.hh"
-#include "warn.hh"
-
-/*
-  this is C&P from beam_performer.
- */
-
-class Slur_performer : public Performer {
-public:
-  TRANSLATOR_DECLARATIONS(Slur_performer);
-  
-protected:
-  virtual bool try_music (Music *ev) ;
-  virtual void start_translation_timestep ();
-  virtual void process_music ();
-  void set_melisma (bool);
-private:
-  Music *start_ev_;
-  Music *now_stop_ev_;
-  bool slur_;
-};
-
-void 
-Slur_performer::process_music ()
-{
-  if (now_stop_ev_)
-    {
-      slur_ = false;
-    }
-
-  if (start_ev_)
-    {
-      slur_ = true;
-      set_melisma (true);
-    }
-}
-
-
-void
-Slur_performer::set_melisma (bool ml)
-{
-  daddy_trans_->set_property ("slurMelismaBusy", ml ? SCM_BOOL_T :SCM_BOOL_F);
-}
-
-void
-Slur_performer::start_translation_timestep ()
-{
-  if (slur_)
-    {
-      set_melisma (true);
-    }
-  
-  start_ev_ = 0;
-  now_stop_ev_ = 0;
-}
- 
-bool
-Slur_performer::try_music (Music *m)
-{
-  if (m->is_mus_type ("slur-event"))
-    {
-      Direction d = to_dir (m->get_mus_property ("span-direction"));
-
-      if (d == START)
-	{
-	  start_ev_ = m;
-	}
-      else if (d==STOP)
-	{
-	  now_stop_ev_ = m;
-	}
-      return true;
-    }
-  return false;
-}
-
-ENTER_DESCRIPTION(Slur_performer,"","",
-		  "slur-event","","","");
-
-Slur_performer::Slur_performer()
-{
-  slur_ = false;
-}
diff --git a/lily/slur.cc b/lily/slur.cc
deleted file mode 100644
index 5777cdcf20..0000000000
--- a/lily/slur.cc
+++ /dev/null
@@ -1,697 +0,0 @@
-/*
-  slur.cc -- implement  Slur
-
-  source file of the GNU LilyPond music typesetter
-
-  (c) 1996--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-    Jan Nieuwenhuizen <janneke@gnu.org>
-*/
-
-/*
-  [TODO]
-  
-    * should avoid stafflines with horizontal part.
-
-    * begin and end should be treated as a/acknowledge Scripts.
-
-    * smart changing of endings
-
-    * smart changing of (Y-?)offsets to avoid ugly beziers
- (along-side-stem)
- 
- */
-
-#include "directional-element-interface.hh"
-#include "group-interface.hh"
-#include "slur.hh"
-#include "lookup.hh"
-#include "paper-def.hh"
-#include "note-column.hh"
-#include "stem.hh"
-#include "paper-column.hh"
-#include "molecule.hh"
-#include "warn.hh"
-#include "slur-bezier-bow.hh"
-#include "main.hh"
-#include "group-interface.hh"
-#include "staff-symbol-referencer.hh"
-#include "spanner.hh"
-
-
-void
-Slur::set_interface (Grob*me)
-{
-  /* Copy to mutable list. */
-  me->set_grob_property ("attachment",
-			 ly_deep_copy (me->get_grob_property ("attachment")));
-}
-
-void
-Slur::add_column (Grob*me, Grob*n)
-{
-  Pointer_group_interface::add_grob (me, ly_symbol2scm ("note-columns"), n);
-  me->add_dependency (n);
-
-  add_bound_item (dynamic_cast<Spanner*> (me), dynamic_cast<Item*> (n));
-}
-
-void
-Slur::de_uglyfy (Grob*me, Slur_bezier_bow* bb, Real default_height)
-{
-  Real length = bb->curve_.control_[3][X_AXIS] ; 
-  Real ff = bb->fit_factor ();
-  for (int i = 1; i < 3; i++)
-    {
-      Real ind = abs (bb->curve_.control_[ (i-1)*3][X_AXIS]
-		      - bb->curve_.control_[i][X_AXIS]) / length;
-      Real h = bb->curve_.control_[i][Y_AXIS] * ff / length;
-
-      Real f = default_height / length;
-      SCM up = me->get_grob_property ("de-uglify-parameters");
-      
-      Real c1 = gh_scm2double (ly_car (up));
-      Real c2 = gh_scm2double (ly_cadr (up));
-      Real c3 = gh_scm2double (ly_caddr (up)); 
-      
-      if (h > c1 * f)
-	{
-	  h = c1 * f; 
-	}
-      else if (h > c2 + c3 * ind)
-	{
-	  h = c2 + c3 * ind; 
-	}
-      
-      bb->curve_.control_[i][Y_AXIS] = h * length;
-    } 
-
-  bb->curve_.assert_sanity ();
-}
-
-
-
-Direction
-Slur::get_default_dir (Grob*me) 
-{
-  Link_array<Grob> encompasses =
-    Pointer_group_interface__extract_grobs (me, (Grob*)0, "note-columns");
-  
-  Direction d = DOWN;
-  for (int i=0; i < encompasses.size (); i ++) 
-    {
-      if (Note_column::dir (encompasses[i]) < 0) 
-	{
-	  d = UP;
-	  break;
-	}
-    }
-  return d;
-}
-
-
-MAKE_SCHEME_CALLBACK (Slur, after_line_breaking,1);
-SCM
-Slur::after_line_breaking (SCM smob)
-{
-  Grob *me = unsmob_grob (smob);
-  if (!scm_ilength (me->get_grob_property ("note-columns")))
-    {
-      me->suicide ();
-      return SCM_UNSPECIFIED;
-    }
-  set_extremities (me);
-  if (!gh_pair_p (me->get_grob_property ("control-points")))
-    set_control_points (me);
-  return SCM_UNSPECIFIED;
-} 
-
-
-void
-Slur::check_slope (Grob *me)
-{
-  /*
-    Avoid too steep slurs.
-   */
-  SCM s = me->get_grob_property ("slope-limit");
-  if (gh_number_p (s))
-    {
-      Array<Offset> encompass = get_encompass_offsets (me);
-      Drul_array<Offset> attachment;
-      attachment[LEFT] = encompass[0];
-      attachment[RIGHT] = encompass.top ();
-
-      Real dx = attachment[RIGHT][X_AXIS] - attachment[LEFT][X_AXIS];
-      Real dy = attachment[RIGHT][Y_AXIS] - attachment[LEFT][Y_AXIS];
-      if (!dx)
-	return;
-      
-      Real slope = slope = abs (dy / dx);
-
-      Real limit = gh_scm2double (s);
-
-      if (slope > limit)
-	{
-	  Real staff_space = Staff_symbol_referencer::staff_space ((Grob*)me);
-	  Direction dir = (Direction)gh_scm2int (me->get_grob_property ("direction"));
-	  Direction d = (Direction) (- dir * (sign (dy)));
-	  SCM a = me->get_grob_property ("attachment-offset");
-	  Drul_array<Offset> o;
-	  o[LEFT] = ly_scm2offset (index_get_cell (a, LEFT));
-	  o[RIGHT] = ly_scm2offset (index_get_cell (a, RIGHT));
-	  o[d][Y_AXIS] -= (limit - slope) * dx * dir / staff_space;
-
-	  o[d][Y_AXIS] *= get_grob_direction (me);
-
-	  me->set_grob_property ("attachment-offset",
-				gh_cons (ly_offset2scm (o[LEFT]),
-					 ly_offset2scm (o[RIGHT])));
-	}
-    }
-
-}
-
-/*
-  Set 'attachment grob property, and return it.
-*/
-SCM
-Slur::set_extremities (Grob *me)
-{
-  if (!get_grob_direction (me))
-    set_grob_direction (me, get_default_dir (me));
-
-  SCM att = me->get_grob_property ("attachment");
-      /*
-       */
-      if (!gh_pair_p (att))
-	{
-	  programming_error ("attachment is not a cons?!");
-	  att = gh_cons (SCM_EOL, SCM_EOL);
-	  me->set_grob_property ("attachment", att);
-	}
-      
-  Direction dir = LEFT;
-  do 
-    {
-    
-      if (!gh_symbol_p (index_get_cell (att, dir)))
-	{
-	  for (SCM s = me->get_grob_property ("extremity-rules");
-	       s != SCM_EOL; s = ly_cdr (s))
-	    {
-	      SCM r = gh_call2 (ly_caar (s), me->self_scm (),
-				 gh_int2scm ((int)dir));
-	      if (r != SCM_BOOL_F)
-		{
-		  index_set_cell (att, dir,
-				  ly_cdar (s));
-		  break;
-		}
-	    }
-	}
-    }
-  while (flip (&dir) != LEFT);
-
-  check_slope (me);
-
-  return att;
-}
-
-
-Real
-Slur::get_boundary_notecolumn_y (Grob *me, Direction dir)
-{
-  SCM cols = me->get_grob_property ("note-columns");
-
-  if(!gh_pair_p (cols))
-    {
-      programming_error ("No note-columns in slur?");
-      me->suicide ();
-      return 0.0;
-    }
-  
-  if (dir == LEFT)
-    cols = scm_reverse(cols);
-  
-  Grob *col = unsmob_grob (ly_car (cols));
-  Grob *common[] =
-  {
-    0,
-    me->common_refpoint (col, Y_AXIS)
-  };
-  Real y;
-  if (col == ((Spanner*)me)->get_bound (dir))
-    {
-      y = get_attachment (me, dir, common)[Y_AXIS];
-    }
-  else
-    {
-      y = encompass_offset (me, col, common)[Y_AXIS]
-	- me->relative_coordinate (common[Y_AXIS], Y_AXIS); 
-    }
-  return y;
-}
-
-Offset
-Slur::broken_trend_offset (Grob *me, Direction dir)
-{
-  /*
-    A broken slur should maintain the same vertical trend
-    the unbroken slur would have had.
-  */
-  Offset o;
-  if (Spanner *mother =  dynamic_cast<Spanner*> (me->original_))
-    {
-      int k = broken_spanner_index (dynamic_cast<Spanner*> (me));
-      Grob *neighbour = mother->broken_intos_[k + dir];      
-      if (dir == RIGHT)
-	neighbour->set_grob_property ("direction",
-				      me->get_grob_property ("direction"));
-      Real neighbour_y = get_boundary_notecolumn_y (neighbour, dir);
-      Real y = get_boundary_notecolumn_y (me, -dir);
-      int neighbour_cols = scm_ilength (neighbour->get_grob_property ("note-columns"));
-      int cols = scm_ilength (me->get_grob_property ("note-columns"));
-      o = Offset (0, (y*neighbour_cols + neighbour_y*cols) /
-		  (cols + neighbour_cols));
-    }
-  return o;
-}
-
-/*
-  COMMON is size-2 array with common refpoints.
-
-UGH: this routine delivers offsets which are *not* relative to COMMON.
-
-UGH,  we should take COMMON-Y as argument.
-*/ 
-Offset
-Slur::get_attachment (Grob *me, Direction dir,
-		      Grob **common) 
-{
-  SCM s = me->get_grob_property ("attachment");
-  if (!gh_pair_p (s) || !gh_symbol_p (index_get_cell (s, dir)))
-    {
-      s = set_extremities (me);
-    }
-  
-  SCM a = (dir == LEFT) ? ly_car (s) : ly_cdr (s);
-  Spanner*sp = dynamic_cast<Spanner*> (me);
-  String str = ly_symbol2string (a);
-  
-  Real staff_space = Staff_symbol_referencer::staff_space ((Grob*)me);
-  Real hs = staff_space / 2.0;
-  Offset o;
-  
-  Direction slurdir = to_dir (me->get_grob_property ("direction"));
-  
-  Grob *stem = 0;
-  if (Note_column::has_interface (sp->get_bound (dir)))
-    {
-      Grob * n =sp->get_bound (dir);
-      stem = Note_column::get_stem (n);
-      if (stem)
-	{
-	  Real x_extent;
-	  Grob *head = Note_column::first_head (n);
-	  if (head)
-	    x_extent = head->extent (head, X_AXIS).length ();
-	  else
-	    x_extent = n->extent (n, X_AXIS).length ();
-
-	  if (!head)
-	    {
-	      o = Offset (0, n->extent (n, Y_AXIS)[slurdir]);
-	    }
-	  else if (str == "head")
-	    {
-	      o = Offset (0, Stem::head_positions (stem)
-			  [slurdir] * hs);
-	      /*
-		Default position is centered in X, on outer side of head Y
-	       */
-	      o += Offset (0.5 * x_extent,
-			   0.5 * staff_space
-			   * slurdir);
-	    }
-	  else if (str == "alongside-stem")
-	    {
-	      o = Offset (0, Stem::chord_start_y (stem));
-	      /*
-		Default position is on stem X, on outer side of head Y
-	       */
-	      o += Offset (x_extent * (1 + Stem::get_direction (stem)),
-			   0.5 * staff_space
-			   * slurdir);
-	    }
-	  else if (str == "stem")
-	    {
-	      o = Offset (0, Stem::stem_end_position (stem) * hs);
-	      /*
-		Default position is on stem X, at stem end Y
-	       */
-	      Real stem_thickness = Stem::thickness (stem);
-	      o += Offset (0.5 *
-			   x_extent * (1 + Stem::get_direction (stem))
-			   - ((dir + 1)/2) * stem_thickness
-			   + ((1 - slurdir)/2) * stem_thickness,
-			   0);
-	    }
-	}
-    }
-  /*
-    If we're not a note_column, we can't be anything but a loose-end.
-    But if user has set (attachment . (stem . stem)), our string is
-    stem, not loose-end.
-
-    Hmm, maybe after-line-breaking should set this to loose-end?  */
-  else // if (str == "loose-end")
-    {
-      SCM other_a = dir == LEFT ? ly_cdr (s) : ly_car (s);
-      if (ly_symbol2string (other_a) != "loose-end")
-	o = broken_trend_offset (me, dir);
-    }
-
-  SCM alist = me->get_grob_property ("extremity-offset-alist");
-  int stemdir = stem ? Stem::get_direction (stem) : 1;
-  SCM l = scm_assoc
-    (scm_list_n (a,
-		  gh_int2scm (stemdir * dir),
-		  gh_int2scm (slurdir * dir),
-                  SCM_UNDEFINED), alist);
-
-  if (l != SCM_BOOL_F)
-    {
-      Offset off = ly_scm2offset (ly_cdr (l)) * staff_space;
-      off[X_AXIS] *= dir;
-      off[Y_AXIS] *= slurdir;
-      o += off;
-    }
-
-  /*
-    What if get_bound () is not a note-column?
-   */
-  if (str != "loose-end"
-      && sp->get_bound (dir)->common_refpoint (common[Y_AXIS], Y_AXIS) == common[Y_AXIS])
-    {      
-      o[Y_AXIS] += sp->get_bound (dir)->relative_coordinate (common[Y_AXIS], Y_AXIS) 
-	- me->relative_coordinate (common[Y_AXIS], Y_AXIS);
-    }
-
-  Offset off = ly_scm2offset (index_get_cell (me->get_grob_property
-					  ("attachment-offset"),
-					  dir)) * staff_space;
-
-  off[Y_AXIS] *= slurdir;
-  o += off;
-  return o;
-}
-
-Offset
-Slur::encompass_offset (Grob*me,
-			Grob* col,
-			Grob **common) 
-{
-  Offset o;
-  Grob* stem = unsmob_grob (col->get_grob_property ("stem"));
-  
-  Direction dir = get_grob_direction (me);
-  
-  if (!stem)
-    {
-      programming_error ("No stem for note column?");
-      o[X_AXIS] = col->relative_coordinate (common[X_AXIS], X_AXIS);
-      o[Y_AXIS] = col->relative_coordinate (common[Y_AXIS], Y_AXIS);
-      return o;  
-    }
-  Direction stem_dir = get_grob_direction (stem);
-  o[X_AXIS] = stem->relative_coordinate (0, X_AXIS);
-
-  /*
-    Simply set x to middle of notehead
-   */
-  Real x_extent;
-  if (Grob *head = Note_column::first_head (col))
-    x_extent = head->extent (head, X_AXIS).length ();
-  else
-    x_extent = col->extent (col, X_AXIS).length ();
-  o[X_AXIS] -= 0.5 * stem_dir * x_extent;
-
-  if ((stem_dir == dir)
-      && !stem->extent (stem, Y_AXIS).is_empty ())
-    {
-      o[Y_AXIS] = stem->extent (common[Y_AXIS], Y_AXIS)[dir];
-    }
-  else
-    {
-      o[Y_AXIS] = col->extent (common[Y_AXIS], Y_AXIS)[dir];
-    }
-
-  /*
-   leave a gap: slur mustn't touch head/stem
-   */
-  o[Y_AXIS] += dir * robust_scm2double (me->get_grob_property ("y-free"), 0) *
-    1.0;
-  return o;
-}
-
-Array<Offset>
-Slur::get_encompass_offsets (Grob *me)
-{
-  Spanner*sp = dynamic_cast<Spanner*> (me);
-  SCM eltlist = me->get_grob_property ("note-columns");
-  Grob *common[] = {common_refpoint_of_list (eltlist, me, X_AXIS),
-		    common_refpoint_of_list (eltlist, me, Y_AXIS)};
-
-
-  common[X_AXIS] = common[X_AXIS]->common_refpoint (sp->get_bound (RIGHT), X_AXIS);
-  common[X_AXIS] = common[X_AXIS]->common_refpoint (sp->get_bound (LEFT), X_AXIS);
-  
-  Link_array<Grob>  encompasses = ly_scm2grobs (eltlist);
-  Array<Offset> offsets;
-
-  Offset origin (me->relative_coordinate (common[X_AXIS], X_AXIS),
-		 me->relative_coordinate (common[Y_AXIS], Y_AXIS)); 
-
-  int first = 1;
-  int last = encompasses.size () - 2;
-
-  offsets.push (get_attachment (me, LEFT, common));
-
-  /*
-    left is broken edge
-  */
-  if (encompasses[0] != sp->get_bound (LEFT))
-    {
-      first--;
-
-      // ?
-      offsets[0][Y_AXIS] -=
-	encompasses[0]->relative_coordinate (common[Y_AXIS], Y_AXIS) 
-	- me->relative_coordinate (common[Y_AXIS], Y_AXIS); 
-    }
-
-  /*
-    right is broken edge
-  */
-  if (encompasses.top () != sp->get_bound (RIGHT))
-    {
-      last++;
-    }
-
-  for (int i = first; i <= last; i++)
-    {
-      Offset o (encompass_offset (me, encompasses[i], common));
-      offsets.push (o - origin);
-    }
-
-  offsets.push (Offset (sp->spanner_length (), 0) + get_attachment (me, RIGHT,common));
-
-  if (encompasses[0] != sp->get_bound (LEFT))
-    {
-      offsets.top ()[Y_AXIS] -= encompasses.top ()->relative_coordinate (common[Y_AXIS], Y_AXIS) 
-	- me->relative_coordinate (common[Y_AXIS], Y_AXIS);
-    }
-
-  return offsets;
-}
-
-
-
-
-/*
-  ugh ?
- */
-MAKE_SCHEME_CALLBACK (Slur, height, 2);
-SCM
-Slur::height (SCM smob, SCM ax)
-{
-  Axis a = (Axis)gh_scm2int (ax);
-  Grob * me = unsmob_grob (smob);
-  assert (a == Y_AXIS);
-
-  SCM mol = me->get_uncached_molecule ();
-  Interval ext;
-  if (Molecule * m = unsmob_molecule (mol))
-    ext = m->extent (a);
-  return ly_interval2scm (ext);
-}
-
-/*
-  Ugh should have dash-length + dash-period
- */
-MAKE_SCHEME_CALLBACK (Slur, print,1);
-SCM
-Slur::print (SCM smob)
-{
-  Grob * me = unsmob_grob (smob);
-  if (!scm_ilength (me->get_grob_property ("note-columns")))
-    {
-      me->suicide ();
-      return SCM_EOL;
-    }
-
-  Real base_thick = robust_scm2double (me->get_grob_property ("thickness"), 1);
-  Real thick = base_thick * Staff_symbol_referencer::line_thickness (me);
-
-  Real ss = Staff_symbol_referencer::staff_space (me);
-  Bezier one = get_curve (me);
-
-  // get_curve may suicide
-  if (!scm_ilength (me->get_grob_property ("note-columns")))
-    return SCM_EOL;
-
-  Molecule a;
-  SCM d =  me->get_grob_property ("dashed");
-  if (gh_number_p (d))
-    a = Lookup::dashed_slur (one, thick, thick * robust_scm2double (d, 0));
-  else
-    a = Lookup::slur (one, get_grob_direction (me) * base_thick * ss / 10.0,
-		      thick);
-
-  return a.smobbed_copy ();
-}
-
-void
-Slur::set_control_points (Grob*me)
-{
-  Real staff_space = Staff_symbol_referencer::staff_space ((Grob*)me);
-
-  SCM details = me->get_grob_property ("details");
-  SCM h_inf_scm = me->get_grob_property ("height-limit");
-  SCM r_0_scm = me->get_grob_property ("ratio");
-
-  Real r_0 = robust_scm2double (r_0_scm, 1);
-  Real h_inf = staff_space * gh_scm2double (h_inf_scm);
-  
-  Slur_bezier_bow bb (get_encompass_offsets (me),
-		      get_grob_direction (me),
-		      h_inf, r_0);
-
-
-  if (bb.fit_factor () > 1.0)
-    {
-      Real length = bb.curve_.control_[3][X_AXIS]; 
-      Real default_height = slur_height (length, h_inf, r_0);
-
-      SCM ssb = me->get_grob_property ("beautiful");
-      Real sb = 0;
-      if (gh_number_p (ssb))
-	sb = gh_scm2double (ssb);
-
-      bb.minimise_enclosed_area (sb, details);
-      SCM sbf = scm_assq (ly_symbol2scm ("force-blowfit"), details);
-      Real bff = 1.0;
-      if (gh_pair_p (sbf) && gh_number_p (ly_cdr (sbf)))
-	  bff = gh_scm2double (ly_cdr (sbf));
-
-      bb.curve_.control_[1][Y_AXIS] *= bff;
-      bb.curve_.control_[2][Y_AXIS] *= bff;
-      bb.blow_fit ();
-
-      
-      Real beautiful = length * default_height * sb;
-      Real area = bb.get_enclosed_area ();
-      
-      /*
-	Slurs that fit beautifully are not ugly
-      */
-      if (area > beautiful)
-	de_uglyfy (me, &bb, default_height);
-    }
-
-  Bezier b = bb.get_bezier ();
-
-
-  SCM controls = SCM_EOL;
-  for (int i= 4; i--;)
-    {
-      controls = gh_cons (ly_offset2scm (b.control_[i]), controls);
-      /*
-	BRRR WHURG.
-	All these null control-points, where do they all come from?
-      */
-      if (i && b.control_[i][X_AXIS] == 0)
-	{
-	  me->suicide ();
-	  return;
-	}
-    }
-
-  me->set_grob_property ("control-points", controls);
-}
-  
-Bezier
-Slur::get_curve (Grob*me) 
-{
-  Bezier b;
-  int i = 0;
-
-  SCM attach = me->get_grob_property ("attachment");
-  if (!gh_pair_p (attach))
-    attach = set_extremities(me);
-
-  
-  if (!get_grob_direction (me)
-      || ! gh_symbol_p (index_get_cell (attach, LEFT))
-      || ! gh_symbol_p (index_get_cell (attach, RIGHT)))
-    set_extremities (me);
-  
-  if (!gh_pair_p (me->get_grob_property ("control-points")))
-    set_control_points (me);
-
-  // set_control_points may suicide
-  if (!scm_ilength (me->get_grob_property ("note-columns")))
-    return b;
-
-  for (SCM s= me->get_grob_property ("control-points"); s != SCM_EOL; s = ly_cdr (s))
-    {
-      b.control_[i] = ly_scm2offset (ly_car (s));
-      i++;
-    }
-
-  Array<Offset> enc (get_encompass_offsets (me));
-  Direction dir = get_grob_direction (me);
-  
-  Real x1 = enc[0][X_AXIS];
-  Real x2 = enc.top ()[X_AXIS];
-
-  Real off = 0.0;
-  for (int i=1; i < enc.size ()-1; i++)
-    {
-      Real x = enc[i][X_AXIS];
-      if (x > x1 && x <x2)
-	{
-	  Real y = b.get_other_coordinate (X_AXIS, x);
-	  off = off >? dir * (enc[i][Y_AXIS] - y);
-	}
-    }
-  b.translate (Offset (0, dir * off));
-  return b;
-}
-
-
-
-
-ADD_INTERFACE (Slur,"slur-interface",
-  "A slur",
-  "attachment attachment-offset beautiful control-points dashed details de-uglify-parameters direction extremity-rules extremity-offset-alist height-limit ratio slope-limit thickness y-free");
-
diff --git a/lily/source-file.cc b/lily/source-file.cc
deleted file mode 100644
index 0ef67667b5..0000000000
--- a/lily/source-file.cc
+++ /dev/null
@@ -1,339 +0,0 @@
-/*
-  source-file.cc -- implement Source_file
-
-  source file of the GNU LilyPond music typesetter
-
-  (c) 1997--2004 Jan Nieuwenhuizen <janneke@gnu.org>
-  Han-Wen Nienhuys <hanwen@cs.uu.nl>
-*/
-
-#include "config.h"
-
-#include <stdio.h>
-#include <assert.h>
-#if HAVE_SSTREAM
-#include <sstream>
-#else
-#include <strstream.h>
-#define istringstream(x) istrstream(x, length ()) 
-#endif
-
-#include "string.hh"
-#include "flower-proto.hh"
-#include "warn.hh"
-#include "source-file.hh"
-#include "array.hh"
-
-void
-Source_file::load_stdin ()
-{
-  length_ = 0;
-
-  int c;
-  Array<char> chs;		// ugh.
-  while ((c = fgetc (stdin)) != EOF)
-    chs.push (c);
-
-  chs.push (0);
-  length_ = chs.size ();
-  contents_str0_ = chs.remove_array ();
-}
-
-
-
-char *
-gulp_file (String fn, int* len)
-{
-  /*
-    let's hope that "b" opens anything binary, and does not apply
-    CR/LF translation
-    */
-  FILE * f =  fopen (fn.to_str0 (), "rb");
-
-  if (!f)
-    {
-      warning (_f ("can't open file: `%s'", fn.to_str0 ()));
-      return 0;
-    }
-
-  int ret = fseek (f, 0, SEEK_END);
-
-  *len = ftell (f);
-  rewind (f);
-  char *  str = new char[*len+1];
-  str[*len] = 0;
-  ret = fread (str, sizeof (char), *len, f);
-
-  if (ret!=*len)
-    warning (_f ("Huh?  Got %d, expected %d characters", ret, *len));
-
-  fclose (f);
-
-
-  return str;
-}
-
-/*
-  Unused.
- */
-Source_file::Source_file (String filename, String data)
-{
-  name_ = filename;
-  istream_ = 0;
-  contents_str0_ = data.get_copy_str0();
-  length_ = data.length();
-  pos_str0_ = to_str0 ();
-  init_port();
-}
-
-Source_file::Source_file (String filename_string)
-{
-  name_ = filename_string;
-  istream_ = 0;
-  contents_str0_ = 0;
-
-  if (filename_string == "-")
-    load_stdin ();
-  else
-    contents_str0_ = gulp_file (filename_string, &length_);
-  
-  pos_str0_ = to_str0 ();
-
-  init_port();
-
-  for (int i = 0; i < length_; i++)
-    if (contents_str0_[i] == '\n')
-      newline_locations_.push (contents_str0_ + i);
-}
-
-void
-Source_file::init_port ()
-{
-  SCM str =scm_makfrom0str (contents_str0_);
-  
-  str_port_ = scm_mkstrport (SCM_INUM0, str, SCM_OPN | SCM_RDNG,
-			     __FUNCTION__);
-  scm_set_port_filename_x (str_port_,
-			   scm_makfrom0str (name_.get_str0()));
-}
-
-int
-Source_file::tell () const
-{
-  return pos_str0_  - contents_str0_; 
-}
-
-std::istream*
-Source_file::get_istream ()
-{
-  if (!istream_)
-    {
-      if (length ()) // can-t this be done without such a hack?
-	istream_ = new std::istringstream (to_str0 ());
-      else
-	{
-	  istream_ = new std::istringstream ("");
-	  istream_->setstate (std::ios::eofbit);
-	  //	  istream_->set (ios::eofbit);
-	}
-    }
-  return istream_;
-}
-
-String
-Source_file::file_line_column_string (char const *context_str0) const
-{
-  if (!to_str0 ())
-    return " (" + _ ("position unknown") + ")";
-  else
-    return name_string () + ":" + to_string (get_line (context_str0))
-      + ":" + to_string (get_char (context_str0));
-}
-
-String
-Source_file::name_string () const
-{
-  return name_;
-}
-
-Source_file::~Source_file ()
-{
-  delete istream_;
-  istream_ = 0;
-  delete[] contents_str0_;
-}
-
-Slice
-Source_file::line_slice (char const* pos_str0) const
-{
-  if (!in_b (pos_str0))
-    return Slice (0,0);
-
-  char const* data_str0 = to_str0 ();
-  char const * eof_C_ = data_str0 + length ();
-
-  if (pos_str0 == eof_C_)
-    pos_str0 --;
-  char const* begin_str0 = pos_str0;
-  while (begin_str0 > data_str0)
-    if (*--begin_str0 == '\n')
-      {
-	begin_str0++;
-	break;
-      }
-
-  char const* end_str0 = pos_str0;
-  while (end_str0 < eof_C_)
-    if (*end_str0++ == '\n')
-      {
-	end_str0--;
-	break;
-      }
-
-  return Slice (begin_str0 - data_str0, end_str0 - data_str0);
-}
-
-String
-Source_file::line_string (char const* pos_str0) const
-{
-  if (!in_b (pos_str0))
-    return "";
-
-  Slice line = line_slice (pos_str0);
-  char const* data_str0 = to_str0 ();
-  return String ((Byte const*)data_str0 + line[LEFT], line.length ());
-}
-
-int
-Source_file::get_char (char const* pos_str0) const
-{
-  if (!in_b (pos_str0))
-    return 0;
-
-  char const* data_str0 = to_str0 ();
-  return pos_str0 - (line_slice (pos_str0)[SMALLER] + data_str0);
-}
-
-int
-Source_file::get_column (char const* pos_str0) const
-{
-  if (!in_b (pos_str0))
-    return 0;
-
-  int ch_i = get_char (pos_str0);
-  String line = line_string (pos_str0);
-
-  int col_i = 0;
-  for (int i = 0; i < ch_i; i++)
-    if (line[i] == '\t')
-      col_i = (col_i / 8 + 1) * 8;
-    else
-      col_i++;
-
-  return col_i;
-}
-
-String
-Source_file::error_string (char const* pos_str0) const
-{
-  if (!in_b (pos_str0))
-    return " (" + _ ("position unknown") + ")";
-
-  int ch_i = get_char (pos_str0);
-  String line = line_string (pos_str0);
-  String context = line.left_string (ch_i)
-    + to_string ('\n')
-    + to_string (' ', get_column (pos_str0))
-    + line.cut_string (ch_i, INT_MAX);
-
-  return context;
-}
-
-bool
-Source_file::in_b (char const* pos_str0) const
-{
-  return (pos_str0 && (pos_str0 >= to_str0 ()) && (pos_str0 <= to_str0 () + length ()));
-}
-
-int
-Source_file::get_line (char const* pos_str0) const
-{
-  if (!in_b (pos_str0))
-    return 0;
-
-  if (!newline_locations_.size())
-    return 1;
-  
-  int lo=0;
-  int hi = newline_locations_.size();
-
-  if (newline_locations_[lo] > pos_str0)
-    return 1;
-  
-  if (newline_locations_[hi-1] < pos_str0)
-    return hi;
-  
-  binary_search_bounds (newline_locations_,
-			pos_str0, 
-			Link_array<char>::default_compare,
-			&lo, &hi);
-
-  if (*pos_str0 == '\n')
-    lo --;
-  return lo + 2;
-}
-
-int
-Source_file::length () const
-{
-  return length_;
-}
-
-char const *
-Source_file::to_str0 () const
-{
-  return contents_str0_;
-}
-
-void
-Source_file::set_pos (char const * pos_str0)
-{
-  if (in_b (pos_str0))
-    pos_str0_ = pos_str0;
-  else
-    error (error_string (pos_str0) + "invalid pos");
-}
-
-char const*
-Source_file::seek_str0 (int n)
-{
-  char const* new_str0 = to_str0 () + n;
-  if (n < 0)
-    new_str0 += length ();
-  if (in_b (new_str0))
-    pos_str0_ = new_str0;
-  else
-    error (error_string (new_str0) + "seek past eof");
-
-  return pos_str0_;
-}
-
-char const*
-Source_file::forward_str0 (int n)
-{
-  char const* old_pos = pos_str0_;
-  char const* new_str0 = pos_str0_ + n;
-  if (in_b (new_str0))
-    pos_str0_ = new_str0;
-  else
-    error (error_string (new_str0)  + "forward past eof");
-
-  return old_pos;
-}
-
-String
-Source_file::get_string (int n)
-{
-  String str = String ((Byte const*)forward_str0 (n), n);
-  return str;
-}
diff --git a/lily/source.cc b/lily/source.cc
deleted file mode 100644
index 1ba4378196..0000000000
--- a/lily/source.cc
+++ /dev/null
@@ -1,85 +0,0 @@
-/*
-  source.cc -- implement Sources
-
-  source file of the LilyPond music typesetter
-
-  (c) 1997--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-*/
-
-
-#include <assert.h>
-
-#include "killing-cons.tcc"
-#include "string.hh"
-#include "flower-proto.hh"
-#include "source-file.hh"
-#include "source.hh"
-#include "file-path.hh"
-
-Sources::Sources ()
-{
-  sourcefile_list_ = 0;
-  path_C_= 0;
-  is_binary_ = false;
-}
-
-void
-Sources::set_binary (bool bo)
-{
-  is_binary_ = bo;
-}
-
-void
-Sources::set_path (File_path *f)
-{
-  path_C_ = f;
-}
-
-/**
-  open a file
-
-  @param file_string the file to be opened, name might be changed if it
-  is found in a search path. UGH!
-
-  @return 0 if no file found
-  */
-Source_file*
-Sources::get_file (String &file_string) //UGH
-{
-  if ((file_string != "-") && path_C_)
-    {
-      String file_string_o = path_C_->find (file_string); 
-      if ((file_string_o == "") && (file_string != ""))
-	return 0;
-      file_string = file_string_o;
-    }
-  Source_file * f = new Source_file (file_string) ;
-  add (f);
-  return f;
-}
-
-void
-Sources::add (Source_file* sourcefile)
-{
-  sourcefile_list_ = new Killing_cons<Source_file> (sourcefile, sourcefile_list_);
-}
-
-Sources::~Sources ()
-{
-  delete sourcefile_list_;
-}
-/**
-  search the list for file whose map contains pointer #str0#
-
-  @return 0 if not found.
-  */
-Source_file*
-Sources::get_sourcefile (char const* str0)
-{
-
-  for (Cons<Source_file> *i = sourcefile_list_; i; i = i->next_)
-    if (i->car_->in_b (str0))	
-      return i->car_;
-  return 0;
-}
-
diff --git a/lily/spaceable-grob.cc b/lily/spaceable-grob.cc
deleted file mode 100644
index 87df4b7154..0000000000
--- a/lily/spaceable-grob.cc
+++ /dev/null
@@ -1,109 +0,0 @@
-/*   
-  spaceable-grob.cc --  implement Spaceable_grob
-  
-  source file of the GNU LilyPond music typesetter
-  
-  (c) 2000--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-  
- */
-#include <stdio.h> 
-#include <math.h>
-
-#include "spaceable-grob.hh"
-#include "grob.hh"
-#include "warn.hh"
-#include "spring.hh"
-#include "group-interface.hh"
-
-SCM
-Spaceable_grob::get_minimum_distances (Grob*me)
-{
-  return me->get_grob_property ("minimum-distances");
-}
-
-/*todo: merge code of spring & rod?
- */
-void
-Spaceable_grob::add_rod (Grob *me , Grob * p, Real d)
-{
-  //  printf ("rod %lf\n", d);
-
-  
-  SCM mins = get_minimum_distances (me);
-  SCM newdist = gh_double2scm (d);
-  for (SCM s = mins; gh_pair_p (s); s = ly_cdr (s))
-    {
-      SCM dist = ly_car (s);
-      if (ly_car (dist) == p->self_scm ())
-	{
-	  gh_set_cdr_x (dist, scm_max (ly_cdr (dist),
-				       newdist));
-	  return ;
-	}
-    }
-
-  mins = gh_cons (gh_cons (p->self_scm (), newdist), mins);
-  me->set_grob_property ("minimum-distances", mins);
-}
-
-void
-Spaceable_grob::add_spring (Grob*me, Grob * p, Real d, Real strength, bool expand_only)
-{
-  //  printf ("dist %lf, str %lf\n", d, strength); 
-  if (d <= 0.0 || strength <= 0.0)
-    {
-      programming_error ("Adding reverse spring! Setting to unit spring");
-      d = 1.0;
-      strength = 1.0;
-    }
-  
-  if (isinf (d) || isnan(d)
-      || isnan (strength))
-    {
-      /*
-	strength == INF is possible. It means fixed distance.
-       */
-      programming_error ("Insane distance found.");
-      d = 1.0;
-      strength = 1.0;
-    }
-    
-#ifndef NDEBUG
-  SCM mins = me->get_grob_property ("ideal-distances");
-  for (SCM s = mins; gh_pair_p (s); s = ly_cdr (s))
-    {
-      Spring_smob * sp = unsmob_spring(ly_car (s));
-      if (sp->other_ == p)
-	{
-	  programming_error ("already have that spring");
-	  return ;
-	}
-    }
-#endif
-  
-  Spring_smob spring;
-  spring.strength_ = strength;
-  spring.distance_ = d;
-  spring.expand_only_b_ = expand_only;
-  spring.other_ = p;
-  
-  Group_interface::add_thing (me, ly_symbol2scm ("ideal-distances"), spring.smobbed_copy ());
-}
-
-
-void
-Spaceable_grob::remove_interface (Grob*me)
-{
-  me->set_grob_property ("minimum-distances" , SCM_EOL);
-  me->set_grob_property ("spacing-wishes", SCM_EOL);
-  me->set_grob_property ("ideal-distances", SCM_EOL);
-}
-
-
-
-ADD_INTERFACE (Spaceable_grob,"spaceable-grob-interface",
-	       "A grob (a Paper_column) that takes part in the \n"
-	       "spacing problem. ",
-  "measure-length spacing-wishes penalty minimum-distances ideal-distances "
-"left-neighbors right-neighbors");
-
diff --git a/lily/spacing-engraver.cc b/lily/spacing-engraver.cc
deleted file mode 100644
index 109a306321..0000000000
--- a/lily/spacing-engraver.cc
+++ /dev/null
@@ -1,188 +0,0 @@
-/*   
-  spacing-engraver.cc --  implement Spacing_engraver
-  
-  source file of the GNU LilyPond music typesetter
-  
-  (c) 1999--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-  
- */
-
-#include "event.hh"
-#include "paper-column.hh"
-#include "engraver.hh"
-#include "pqueue.hh"
-#include "note-spacing.hh"
-#include "staff-spacing.hh"
-#include "group-interface.hh"
-#include "spanner.hh"
-
-struct Rhythmic_tuple
-{
-  Grob_info info_;
-  Moment end_;
-  
-  Rhythmic_tuple ()
-    {
-    }
-  Rhythmic_tuple (Grob_info i, Moment m)
-    {
-      info_ = i;
-      end_ = m;
-    }
-  static int time_compare (Rhythmic_tuple const &, Rhythmic_tuple const &);  
-};
-
-/**
-   Acknowledge rhythmic elements, for initializing spacing fields in
-   the columns.
-
-   should be the  last one of the toplevel context
-*/
-class Spacing_engraver : public Engraver
-{
-  PQueue<Rhythmic_tuple> playing_durations_;
-  Array<Rhythmic_tuple> now_durations_;
-  Array<Rhythmic_tuple> stopped_durations_;
-  Moment now_;
-  Spanner * spacing_;
-  
-  TRANSLATOR_DECLARATIONS(Spacing_engraver);
-protected:
-  virtual void acknowledge_grob (Grob_info);
-  virtual void start_translation_timestep ();
-  virtual void stop_translation_timestep ();
-  virtual void process_music ();
-  virtual void finalize ();
-};
-
-inline int
-compare (Rhythmic_tuple const &a, Rhythmic_tuple const &b)
-{
-  return Rhythmic_tuple::time_compare (a,b);
-}
-
-int
-Rhythmic_tuple::time_compare (Rhythmic_tuple const &h1,
-			      Rhythmic_tuple const &h2)
-{
-  return (h1.end_ - h2.end_).main_part_.sign ();
-}
-
-Spacing_engraver::Spacing_engraver ()
-{
-  spacing_ = 0;
-}
-
-void
-Spacing_engraver::process_music ()
-{
-  if (!spacing_)
-    {
-      spacing_ = make_spanner ("SpacingSpanner");
-      spacing_->set_bound (LEFT, unsmob_grob (get_property ("currentCommandColumn")));  
-      announce_grob(spacing_, SCM_EOL);
-    }
-}
-
-void
-Spacing_engraver::finalize ()
-{
-  if (spacing_)
-    {
-      Grob * p = unsmob_grob (get_property ("currentCommandColumn"));
-  
-      spacing_->set_bound (RIGHT, p);
-      typeset_grob (spacing_);
-      spacing_ =0;
-    }
-}
-
-void
-Spacing_engraver::acknowledge_grob (Grob_info i)
-{
-  if (Note_spacing::has_interface (i.grob_) || Staff_spacing::has_interface (i.grob_))
-    {
-      Pointer_group_interface::add_grob (spacing_, ly_symbol2scm  ("wishes"), i.grob_);
-    }
-  
-  if (i.grob_->internal_has_interface (ly_symbol2scm ("lyric-syllable-interface")))
-    return;
-
-  /*
-    only pay attention to durations that are not grace notes. 
-   */
-  if (!now_.grace_part_)
-    {
-      Music *r = i.music_cause ();
-      if (r && r->is_mus_type ("rhythmic-event"))
-	{
-	  Moment len = r->get_length ();
-	  Rhythmic_tuple t (i, now_mom () + len);
-	  now_durations_.push (t);
-	}
-    }
-}
-
-void
-Spacing_engraver::stop_translation_timestep ()
-{
-  Moment shortest_playing;
-  shortest_playing.set_infinite (1);
-  for (int i=0; i < playing_durations_.size (); i++)
-    {
-      Music * mus = playing_durations_[i].info_.music_cause ();
-      if (mus)
-	{
-	  Moment m = mus->get_length ();
-	  shortest_playing = shortest_playing <? m;
-	}
-    }
-  Moment starter;
-  starter.set_infinite (1);
-
-  for (int i=0; i < now_durations_.size (); i++)
-    {
-      Moment m = now_durations_[i].info_.music_cause ()->get_length ();
-      if (m.to_bool ())
-	{
-	  starter = starter <? m;
-	  playing_durations_.insert (now_durations_[i]);
-
-	}
-    }
-  now_durations_.clear ();
-  
-  shortest_playing = shortest_playing <? starter;
-  
-  Paper_column * sc
-    = dynamic_cast<Paper_column*> (unsmob_grob (get_property ("currentMusicalColumn")));
-
-  assert (starter.to_bool ());
-  SCM sh = shortest_playing.smobbed_copy ();
-  SCM st = starter.smobbed_copy ();
-
-  sc->set_grob_property ("shortest-playing-duration", sh);  
-  sc->set_grob_property ("shortest-starter-duration", st);
-}
-
-void
-Spacing_engraver::start_translation_timestep ()
-{
-  now_ = now_mom ();
-  stopped_durations_.clear ();
-  while (playing_durations_.size () && playing_durations_.front ().end_ < now_)
-    playing_durations_.delmin ();
-  while (playing_durations_.size () && playing_durations_.front ().end_ == now_)
-    stopped_durations_.push (playing_durations_.get ());
-}
-
-
-
-
-ENTER_DESCRIPTION(Spacing_engraver,
-/* descr */       "make a SpacingSpanner and do bookkeeping of shortest starting and playing notes  ",
-/* creats*/       "SpacingSpanner",
-/* accepts */     "",
-/* acks  */      "grob-interface",
-/* reads */       "",
-/* write */       "");
diff --git a/lily/spacing-spanner.cc b/lily/spacing-spanner.cc
deleted file mode 100644
index 666253aeeb..0000000000
--- a/lily/spacing-spanner.cc
+++ /dev/null
@@ -1,961 +0,0 @@
-/*   
-  spacing-spanner.cc -- implement Spacing_spanner
-  
-  source file of the GNU LilyPond music typesetter
-  
-  (c) 1999--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-  
- */
-
-#include <math.h>
-#include <stdio.h>
-
-#include "main.hh"
-#include "system.hh"
-#include "warn.hh"
-#include "paper-def.hh"
-#include "paper-score.hh"
-#include "paper-column.hh"
-#include "item.hh"
-#include "moment.hh"
-#include "note-spacing.hh"
-#include "misc.hh"
-#include "warn.hh"
-#include "staff-spacing.hh"
-#include "spring.hh"
-#include "paper-column.hh"
-#include "spaceable-grob.hh"
-#include "break-align-interface.hh"
-#include "spacing-interface.hh"
-
-
-/*
-  TODO: this file/class is too complex. Should figure out how to chop
-  this up even more.
-    
- */
-
-class Spacing_spanner
-{
-public:
-  static void standard_breakable_column_spacing (Grob * me, Item*l, Item*r,
-						 Real * fixed, Real * space, Moment);
-  
-
-  static Real default_bar_spacing (Grob*,Grob*,Grob*,Moment);
-  static Real note_spacing (Grob*,Grob*,Grob*,Moment, bool*);
-  static Real get_duration_space (Grob*,Moment dur, Rational shortest, bool*);
-  static Rational find_shortest (Grob *, Link_array<Grob> const &);  
-  static void breakable_column_spacing (Grob*, Item* l, Item *r, Moment);
-  static void find_loose_columns () {}
-  static void prune_loose_columns (Grob*,Link_array<Grob> *cols, Rational);
-  static void find_loose_columns (Link_array<Grob> cols);
-  static void set_explicit_neighbor_columns (Link_array<Grob> cols);
-  static void set_implicit_neighbor_columns (Link_array<Grob> cols);
-  static void do_measure (Rational, Grob*me,Link_array<Grob> *cols);
-  static void musical_column_spacing (Grob*,Item*,Item*, Real, Rational); 
-  DECLARE_SCHEME_CALLBACK (set_springs, (SCM ));
-  static bool has_interface (Grob*);
-};
-
-/*
-  Return whether COL is fixed to its neighbors by some kind of spacing
-  constraint.
-
-  
-  If in doubt, then we're not loose; the spacing engine should space
-  for it, risking suboptimal spacing.
-  
-  (Otherwise, we might risk core dumps, and other weird stuff.)
-
-*/
-static bool
-loose_column (Grob *l, Grob *c, Grob *r) 
-{
-  SCM rns = c->get_grob_property ("right-neighbors");
-  SCM lns = c->get_grob_property ("left-neighbors");
-
- /*
-    If this column doesn't have a proper neighbor, we should really
-    make it loose, but spacing it correctly is more than we can
-    currently can handle.
-
-    (this happens in the following situation:
-
-       |
-       |    clef G 
-      *
-
-       |               |      ||
-       |               |      || 
-      O               O       ||
-
-
-    the column containing the clef is really loose, and should be
-    attached right to the first column, but that is a lot of work for
-    such a borderline case.)
-    
-  */  
-  if (!gh_pair_p (lns) || !gh_pair_p (rns))
-    return false;
-
-  Item * l_neighbor = dynamic_cast<Item*>  (unsmob_grob (gh_car (lns)));
-  Item * r_neighbor = dynamic_cast<Item*>  (unsmob_grob (gh_car (rns)));
-
-  if (!l_neighbor || !r_neighbor)
-    return false;
-
-  l_neighbor = l_neighbor->get_column ();
-  r_neighbor = dynamic_cast<Item*> (Note_spacing::right_column  (r_neighbor));
-
-  if (l == l_neighbor && r == r_neighbor)
-    return false;
-
-  if (!l_neighbor || !r_neighbor)
-    return false;
-
-
-  
-  /*
-    Only declare loose if the bounds make a little sense.  This means
-    some cases (two isolated, consecutive clef changes) won't be
-    nicely folded, but hey, then don't do that.
-  */
-  if(!  ((Paper_column::is_musical (l_neighbor) || Item::breakable_b (l_neighbor))
-	 && (Paper_column::is_musical (r_neighbor) || Item::breakable_b (r_neighbor))) )
-    {
-      return false;
-    }
-
-
-  /*
-    A rather hairy check, but we really only want to move around clefs. (anything else?)
-
-    in any case, we don't want to move bar lines.
-   */
-  for (SCM e = c->get_grob_property ("elements"); gh_pair_p (e); e = gh_cdr (e))
-    {
-      Grob * g = unsmob_grob (gh_car (e));
-      if (g && Break_align_interface::has_interface (g))
-	{
-	  for (SCM s = g->get_grob_property ("elements"); gh_pair_p (s);
-	       s = gh_cdr (s))
-	    {
-	      Grob *h = unsmob_grob (gh_car (s));
-
-	      /*
-		ugh. -- fix staff-bar name? 
-	       */
-	      if (h  && h->get_grob_property ("break-align-symbol") == ly_symbol2scm ("staff-bar"))
-		return false;
-	    }
-	}
-    }
-  
-  return true;
-}
-
-/*
-  Remove columns that are not tightly fitting from COLS. In the
-  removed columns, set 'between-cols to the columns where it is in
-  between.
-*/
-void
-Spacing_spanner::prune_loose_columns (Grob*me,Link_array<Grob> *cols, Rational shortest)
-{
-  Link_array<Grob> newcols;
-  Real increment = robust_scm2double (me->get_grob_property ("spacing-increment"), 1.2);
-  for (int i=0; i < cols->size ();  i++)
-    {
-      if (Item::breakable_b (cols->elem(i)) || Paper_column::is_musical (cols->elem (i)))
-	{
-	  newcols.push (cols->elem(i));
-	  continue;
-	}
-
-      Grob *c = cols->elem(i);
-      if (loose_column (cols->elem (i-1), c, cols->elem (i+1)))
-	{
-	  SCM lns = c->get_grob_property ("left-neighbors");
-	  lns = gh_pair_p (lns) ? gh_car (lns) : SCM_BOOL_F;
-
-	  SCM rns = c->get_grob_property ("right-neighbors");
-	  rns = gh_pair_p (rns) ? gh_car (rns) : SCM_BOOL_F;
-
-	  /*
-	    Either object can be non existent, if the score ends
-	    prematurely.
-	   */
-	  rns = gh_car (unsmob_grob (rns)->get_grob_property ("right-items"));
-	  c->set_grob_property ("between-cols", gh_cons (lns,
-							 rns));
-
-	  /*
-	    Set distance constraints for loose columns
-	  */
-	  Drul_array<Grob*> next_door;
-	  next_door[LEFT] =cols->elem (i - 1);
-	  next_door[RIGHT] =cols->elem (i + 1);	  
-	  Direction d = LEFT;
-	  Drul_array<Real> dists(0,0);
-
-	  do
-	    {
-	      dists[d] = 0.0;
-	      Item *lc = dynamic_cast<Item*> ((d == LEFT)  ? next_door[LEFT] : c);
-	      Item *rc = dynamic_cast<Item*> (d == LEFT  ? c : next_door[RIGHT]);
-
-	      for (SCM s = lc->get_grob_property ("spacing-wishes");
-		   gh_pair_p (s); s = gh_cdr (s))
-		{
-		  Grob *sp = unsmob_grob (gh_car (s));
-		  if (Note_spacing::left_column (sp) != lc
-		      || Note_spacing::right_column (sp) != rc)
-		    continue;
-
-		  Real space, fixed;
-		  fixed = 0.0;
-		  bool dummy;
-
-		  if (d == LEFT)
-		    {
-		      /*
-			The note spacing should be taken from the musical
-			columns.
-		    
-		      */
-		      Real base = note_spacing (me, lc, rc, shortest, &dummy);
-		      Note_spacing::get_spacing (sp, rc, base, increment, &space, &fixed);
-
-		      space -= increment; 
-		  
-		      dists[d] = dists[d] >? space;
-		    }
-		  else
-		    {
-		      Real space, fixed_space;
-		      Staff_spacing::get_spacing_params (sp,
-							 &space, &fixed_space);
-
-		      dists[d] = dists[d] >? fixed_space;
-		    }
-		  
-		}
-	    }
-	  while (flip (&d) != LEFT);
-
-	  Rod r;
-	  r.distance_ = dists[LEFT] + dists[RIGHT];
-	  r.item_l_drul_[LEFT] = dynamic_cast<Item*> (cols->elem(i-1));
-	  r.item_l_drul_[RIGHT] = dynamic_cast<Item*> (cols->elem (i+1));
-
-	  r.add_to_cols ();
-	}
-      else
-	{
-	  newcols.push (c);
-	}
-    }
-
-  *cols = newcols;
-}
-
-/*
-  Set neighboring columns determined by the spacing-wishes grob property.  
-*/
-void
-Spacing_spanner::set_explicit_neighbor_columns (Link_array<Grob> cols)
-{
-  for (int i=0; i < cols.size(); i++)
-    {
-      SCM right_neighbors = SCM_EOL;
-      int min_rank = 100000;	// inf.
-
-
-      SCM wishes=  cols[i]->get_grob_property ("spacing-wishes");
-      for (SCM s =wishes; gh_pair_p (s); s = gh_cdr (s))
-	{
-	  Item * wish = dynamic_cast<Item*> (unsmob_grob (gh_car (s)));
-
-	  Item * lc = wish->get_column ();
-	  Grob * right = Note_spacing::right_column (wish);
-
-	  if (!right)
-	    continue;
-
-	  Item * rc = dynamic_cast<Item*> (right);
-
-	  int right_rank = Paper_column::get_rank (rc);
-	  int left_rank = Paper_column::get_rank (lc);	  
-
-	  /*
-	    update the left column.
-	   */
-	  if (right_rank <= min_rank)
-	    {
-	      if (right_rank < min_rank)
-		right_neighbors  =SCM_EOL;
-	      
-	      min_rank = right_rank;
-	      right_neighbors = gh_cons (wish->self_scm (), right_neighbors);
-	    }
-
-	  /*
-	    update the right column of the wish.
-	   */
-	  int maxrank = 0;
-	  SCM left_neighs = rc->get_grob_property ("left-neighbors");
-	  if (gh_pair_p (left_neighs)
-	      && unsmob_grob (gh_car (left_neighs)))
-	    {
-	      Item * it = dynamic_cast<Item*> (unsmob_grob (gh_car (left_neighs)));
-	      maxrank = Paper_column::get_rank (it->get_column ());
-	    }
-
-	  if (left_rank >= maxrank)
-	    {
-	      if (left_rank > maxrank)
-		left_neighs = SCM_EOL;
-
-	      left_neighs = gh_cons (wish->self_scm (), left_neighs);
-	      rc->set_grob_property ("left-neighbors", right_neighbors);
-	    }
-	}
-
-      if (gh_pair_p (right_neighbors))
-	{
-	  cols[i]->set_grob_property ("right-neighbors", right_neighbors);
-	}
-    }
-}
-
-/*
-  Set neighboring columns that have no left/right-neighbor set
-  yet. Only do breakable non-musical columns, and musical columns. 
-*/
-void
-Spacing_spanner::set_implicit_neighbor_columns (Link_array<Grob> cols)
-{
-  for (int i = 0; i < cols.size (); i++)
-    {
-      Item * it = dynamic_cast<Item*>(cols[i]);
-      if (!Item::breakable_b (it) && !Paper_column::is_musical (it))
-	continue;
-
-      // it->breakable || it->musical
-
-      /*
-	sloppy with typnig left/right-neighbors should take list, but paper-column found instead.
-       */
-      SCM ln = cols[i] ->get_grob_property ("left-neighbors");
-      if (!gh_pair_p (ln) && i ) 
-	{
-	  cols[i]->set_grob_property ("left-neighbors", gh_cons (cols[i-1]->self_scm(), SCM_EOL));
-	}
-
-      SCM rn = cols[i] ->get_grob_property ("right-neighbors");
-      if (!gh_pair_p (rn) && i < cols.size () - 1) 
-	{
-	  cols[i]->set_grob_property ("right-neighbors", gh_cons (cols[i + 1]->self_scm(), SCM_EOL));
-	}
-    }
-}
-
-
-MAKE_SCHEME_CALLBACK (Spacing_spanner, set_springs,1);
-SCM
-Spacing_spanner::set_springs (SCM smob)
-{
-  Grob *me = unsmob_grob (smob);
-
-  Link_array<Grob> all (me->pscore_->system_->columns ());
-
-  set_explicit_neighbor_columns (all);
-
-  SCM preset_shortest = me->get_grob_property ("common-shortest-duration");
-  Rational global_shortest;
-  if (unsmob_moment (preset_shortest))
-    {
-      global_shortest = unsmob_moment (preset_shortest)->main_part_;
-    }
-  else
-    {
-      global_shortest = find_shortest (me, all);
-      if (verbose_global_b)
-	{
-	  progress_indication (_f("Global shortest duration is %s\n", global_shortest.to_string ())); 
-	}
-    }
-  prune_loose_columns (me, &all, global_shortest);
-  set_implicit_neighbor_columns (all);
-
-  
-  int j = 0;
-  for (int i = 1; i < all.size (); i++)
-    {
-      Grob *sc = all[i];
-      if (Item::breakable_b (sc))
-        {
-	  Link_array<Grob> measure (all.slice (j, i+1));	  
-          do_measure (global_shortest, me, &measure);
-	  j = i;
-        }
-    }
-
-  return SCM_UNSPECIFIED;
-}
-
-
-/*
-  We want the shortest note that is also "common" in the piece, so we
-  find the shortest in each measure, and take the most frequently
-  found duration.
-
-  This probably gives weird effects with modern music, where every
-  note has a different duration, but hey, don't write that kind of
-  stuff, then.
-
-*/
-Rational
-Spacing_spanner::find_shortest (Grob *me, Link_array<Grob> const &cols)
-{
-  /*
-    ascending in duration
-   */
-  Array<Rational> durations; 
-  Array<int> counts;
-  
-  Rational shortest_in_measure;
-  shortest_in_measure.set_infinite (1);
-  
-  for (int i =0 ; i < cols.size (); i++)  
-    {
-      if (Paper_column::is_musical (cols[i]))
-	{
-	  Moment *when = unsmob_moment (cols[i]->get_grob_property  ("when"));
-
-	  /*
-	    ignore grace notes for shortest notes.
-	  */
-	  if (when && when->grace_part_)
-	    continue;
-	  
-	  SCM  st = cols[i]->get_grob_property ("shortest-starter-duration");
-	  Moment this_shortest = *unsmob_moment (st);
-	  assert (this_shortest.to_bool());
-	  shortest_in_measure = shortest_in_measure <? this_shortest.main_part_;
-	}
-      else if (!shortest_in_measure.is_infinity ()
-	       && Item::breakable_b (cols[i]))
-	{
-	  int j = 0;
-	  for (; j < durations.size(); j++)
-	    {
-	      if (durations[j] > shortest_in_measure)
-		{
-		  counts.insert (1, j);
-		  durations.insert (shortest_in_measure, j);
-		  break;
-		}
-	      else if (durations[j] == shortest_in_measure)
-		{
-		  counts[j]++;
-		  break;
-		}
-	    }
-
-	  if (durations.size() == j)
-	    {
-	      durations.push (shortest_in_measure);
-	      counts.push (1);
-	    }
-
-	  shortest_in_measure.set_infinite(1); 
-	}
-    }
-
-  int max_idx = -1;
-  int max_count = 0;
-  for (int i =durations.size(); i--;)
-    {
-      if (counts[i] >= max_count)
-	{
-	  max_idx = i;
-	  max_count = counts[i];
-	}
-
-      //      printf ("duration %d/%d, count %d\n", durations[i].num (), durations[i].den (), counts[i]);
-    }
-
-  SCM  bsd = me->get_grob_property ("base-shortest-duration");
-  Rational d = Rational (1,8);
-  if (Moment *m = unsmob_moment (bsd))
-    d = m->main_part_;
-  
-  if (max_idx >= 0)
-    d = d <? durations[max_idx] ;
-
-  return d;
-}
-
-/*
-  Generate spacing for a single measure. We used to have code that did
-  per-measure spacing. Now we have piecewise spacing. We should fix
-  this to support "spacing-regions": some regions have different notes
-  (different time sigs) than others, and should be spaced differently.
- */
-void
-Spacing_spanner::do_measure (Rational shortest, Grob*me, Link_array<Grob> *cols) 
-{
-
-  Real headwid = robust_scm2double (me->get_grob_property ("spacing-increment"), 1);
-  for (int i= 0; i < cols->size () - 1; i++)
-    {
-      Item * l = dynamic_cast<Item*> (cols->elem (i));
-      Item * r =  dynamic_cast<Item*> (cols->elem (i+1));
-
-      Paper_column * lc = dynamic_cast<Paper_column*> (l);
-      Paper_column * rc = dynamic_cast<Paper_column*> (r);
-
-      if (!Paper_column::is_musical (l))
-	{
-	  breakable_column_spacing (me, l, r, shortest);
-
-	  /*
-	    
-	    The case that the right part is broken as well is rather
-	    rare, but it is possible, eg. with a single empty measure,
-	    or if one staff finishes a tad earlier than the rest.
-	    
-	   */
-	  Item *lb = l->find_prebroken_piece (RIGHT);
-	  Item *rb = r->find_prebroken_piece (LEFT);
-	  
-	  if (lb)
-	    breakable_column_spacing (me, lb,r, shortest);
-
-	  if (rb)
-	    breakable_column_spacing (me, l, rb, shortest);
-	  if (lb && rb)
-	    breakable_column_spacing (me, lb, rb, shortest);
-	  
-	  continue ; 
-	}
-
-
-      musical_column_spacing (me, lc, rc, headwid, shortest);
-      if (Item *rb = r->find_prebroken_piece (LEFT))
-	musical_column_spacing (me, lc, rb, headwid, shortest);
-    }    
-}
-
-
-/*
-  Generate the space between two musical columns LC and RC, given
-  spacing parameters INCR and SHORTEST.
- */
-void
-Spacing_spanner::musical_column_spacing (Grob *me, Item * lc, Item *rc, Real increment, Rational shortest)
-{
-  bool expand_only = false;
-  Real base_note_space = note_spacing (me, lc, rc, shortest, &expand_only);
-
-  Real compound_note_space = 0.0;
-  Real compound_fixed_note_space = 0.0;
-  int wish_count = 0;
-  
-  SCM seq  = lc->get_grob_property ("right-neighbors");
-
-  /*
-    We adjust the space following a note only if the next note
-    happens after the current note (this is set in the grob
-    property SPACING-SEQUENCE.
-  */
-  for (SCM s = seq; gh_pair_p (s); s = ly_cdr (s))
-    {
-      Grob * wish = unsmob_grob (gh_car (s));
-
-      Item *wish_rcol = Note_spacing::right_column (wish);
-      if (Note_spacing::left_column (wish) != lc
-	  || (wish_rcol != rc && wish_rcol != rc->original_))
-	continue;
-
-      /*
-	This is probably a waste of time in the case of polyphonic
-	music.  */
-      if (Note_spacing::has_interface (wish))
-	{
-	  Real space =0.0;
-	  Real fixed =0.0;
-	  
-	  Note_spacing::get_spacing (wish, rc, base_note_space, increment, &space, &fixed);
-
-	  
-	  compound_note_space = compound_note_space + space;
-	  compound_fixed_note_space = compound_fixed_note_space + fixed;
-	  wish_count ++;
-	  
-	}
-    }
-
-  if (Paper_column::when_mom (rc).grace_part_ &&
-      !Paper_column::when_mom (lc).grace_part_)
-    {
-      /*
-	Ugh. 0.8 is arbitrary.
-       */
-      compound_note_space *= 0.8; 
-    }
-  
-  if (compound_note_space < 0 || wish_count == 0)
-    {
-      compound_note_space = base_note_space;
-      compound_fixed_note_space =  increment;
-    }
-  else
-    {
-      compound_note_space /= wish_count;
-      compound_fixed_note_space /= wish_count;
-    }
-
-  /*
-    Whatever we do, the fixed space is smaller than the real
-    space.
-
-    TODO: this criterion is discontinuous in the derivative.
-    Maybe it should be continuous?
-  */
-  compound_fixed_note_space = compound_fixed_note_space <? compound_note_space;
-
-  bool packed = to_boolean (me->get_paper ()->get_scmvar ("packed"));
-  Real strength, distance;
-
-  /*
-    TODO: make sure that the space doesn't exceed the right margin.
-   */
-  if (packed)
-    {
-      /*
-	In packed mode, pack notes as tight as possible.  This makes
-	sense mostly in combination with raggedright mode: the notes
-	are then printed at minimum distance.  This is mostly useful
-	for ancient notation, but may also be useful for some flavours
-	of contemporary music.  If not in raggedright mode, lily will
-	pack as much bars of music as possible into a line, but the
-	line will then be stretched to fill the whole linewidth.
-      */
-      strength = 1.0;
-      distance = compound_fixed_note_space;
-    }
-  else
-    {
-      strength = 1 / (compound_note_space - compound_fixed_note_space);
-      distance = compound_note_space;
-    }
-
-  //  Spaceable_grob::add_spring (lc, rc, distance, strength, expand_only);
-
-  Spaceable_grob::add_spring (lc, rc, distance, strength, false);  
-}
-
-
-/*
-  The one-size-fits all spacing. It doesn't take into account
-  different spacing wishes from one to the next column.
- */
-void
-Spacing_spanner::standard_breakable_column_spacing (Grob * me, Item*l, Item*r,
-				   Real * fixed, Real * space,
-				   Moment shortest)
-{
-  *fixed = 0.0;
-  Direction d = LEFT;
-  Drul_array<Item*> cols(l,r);
-  
-  do
-    {
-      if (!Paper_column::is_musical (cols[d]))
-	{
-	  /*
-	    Tied accidentals over barlines cause problems, so lets see
-	    what happens if we do this for non musical columns only.
-	   */
-	  Interval lext = cols[d]->extent (cols [d], X_AXIS);
-	  if (!lext.is_empty ())
-	    *fixed += -d * lext[-d];
-	}
-    }
-  while (flip (&d) != LEFT);
-  
-
-  if (l->breakable_b (l) && r->breakable_b(r))
-    {
-      Moment *dt = unsmob_moment (l->get_grob_property ("measure-length"));
-      Moment mlen (1);
-      if (dt)
-	mlen = *dt;
-      
-      Real incr = robust_scm2double (me->get_grob_property ("spacing-increment"), 1);
-
-      *space =  *fixed + incr * double (mlen.main_part_ / shortest.main_part_) * 0.8;
-    }
-  else
-    {
-      Moment dt = Paper_column::when_mom (r) - Paper_column::when_mom (l);
-
-      if (dt == Moment (0,0))
-	{
-	  /*
-	    In this case, Staff_spacing should handle the job,
-	    using dt when it is 0 is silly.
-	   */
-	  *space = *fixed + 0.5; 
-	}
-      else
-	{
-	  bool dummy;
-	  *space = *fixed + get_duration_space (me, dt, shortest.main_part_, &dummy);
-	}
-    }
-}
-
-
-/*
-  Read hints from L and generate springs.
-*/
-void
-Spacing_spanner::breakable_column_spacing (Grob*me, Item* l, Item *r,Moment shortest)
-{
-  Real compound_fixed = 0.0;
-  Real compound_space = 0.0;
-  int wish_count = 0;
-
-  Moment dt = Paper_column::when_mom (r) - Paper_column::when_mom (l);
-
-  if (dt == Moment (0,0))
-    {
-      for (SCM s = l->get_grob_property ("spacing-wishes");
-	   gh_pair_p (s); s = gh_cdr (s))
-	{
-	  Item * spacing_grob = dynamic_cast<Item*> (unsmob_grob (gh_car (s)));
-
-	  if (!spacing_grob || !Staff_spacing::has_interface (spacing_grob))
-	    continue;
-
-	  Real space;
-	  Real fixed_space;
-
-	  /*
-	    column for the left one settings should be ok due automatic
-	    pointer munging.
-
-	  */
-	  assert (spacing_grob-> get_column () == l);
-
-	  Staff_spacing::get_spacing_params (spacing_grob,
-					     &space, &fixed_space);
-
-	  if (Paper_column::when_mom (r).grace_part_)
-	    {
-	      /*
-		Correct for grace notes.
-
-		Ugh. The 0.8 is arbitrary.
-	      */
-	      space *= 0.8;
-	    }
-
-
-	  compound_space += space;
-	  compound_fixed += fixed_space;
-	  wish_count ++ ;
-	}
-    }
-
-  if (compound_space <= 0.0 || !wish_count)
-    {
-      standard_breakable_column_spacing (me, l, r, &compound_fixed, &compound_space ,
-					 shortest);
-      wish_count = 1;
-    }
-  else
-    {
-      compound_space /= wish_count;
-      compound_fixed /= wish_count;
-    }
-
-  assert (!isinf (compound_space));
-  compound_space = compound_space >? compound_fixed;
-
-  
-  /*
-    Hmm.  we do 1/0 in the next thing. Perhaps we should check if this
-    works on all architectures.
-   */
-
-  /*
-    There used to be code that changed spacing depending on
-    raggedright setting.  Ugh.
-
-    Do it more cleanly, or rename the property. 
-    
-   */
-  Real strength = 1 / (compound_space - compound_fixed);
-  Real distance = compound_space;
-  Spaceable_grob::add_spring (l, r, distance, strength, false);
-}
-
-
-/**
-  Get the measure wide ant for arithmetic spacing.
-  */
-Real
-Spacing_spanner::get_duration_space (Grob*me, Moment d, Rational shortest, bool * expand_only) 
-{
-  Real k = robust_scm2double (me->get_grob_property ("shortest-duration-space"), 1);
-  Real incr = robust_scm2double (me->get_grob_property ("spacing-increment"), 1);
-  
-  if (d < shortest)
-    {
-      /*
-	We don't space really short notes using the log of the
-	duration, since it would disproportionally stretches the long
-	notes in a piece. In stead, we use geometric spacing with constant 0.5
-	(i.e. linear.)
-
-	This should probably be tunable, to use other base numbers.
-
-	In Mozart hrn3 by EB., we have 8th note = 3.9 mm (total), 16th note =
-	3.6 mm (total).  head-width = 2.4, so we 1.2mm for 16th, 1.5
-	mm for 8th. (white space), suggesting that we use
-
-	(1.2 / 1.5)^{-log2(duration ratio)}
-	
-
-       */
-      Rational ratio = d.main_part_ / shortest;
-
-      return ((k-1) + double (ratio)) * incr;
-    }
-  else
-    {
-      /*
-	  John S. Gourlay. ``Spacing a Line of Music,'' Technical
-	  Report OSU-CISRC-10/87-TR35, Department of Computer and
-	  Information Science, The Ohio State University, 1987.
-       */
-      Real log =  log_2 (shortest);
-      k -= log;
-      Rational compdur = d.main_part_ + d.grace_part_ /Rational (3);
-      *expand_only = false;      
-   
-      return (log_2 (compdur) + k) * incr;
-    }
-}
-
-Real
-Spacing_spanner::note_spacing (Grob*me, Grob *lc, Grob *rc,
-			       Moment shortest, bool * expand_only) 
-{
-  Moment shortest_playing_len = 0;
-  SCM s = lc->get_grob_property ("shortest-playing-duration");
-
-  if (unsmob_moment (s))
-    shortest_playing_len = *unsmob_moment (s);
-  
-  if (! shortest_playing_len.to_bool ())
-    {
-      programming_error ("can't find a ruling note at " + Paper_column::when_mom (lc).to_string ());
-      shortest_playing_len = 1;
-    }
-
-  Moment lwhen = Paper_column::when_mom (lc);
-  Moment rwhen =  Paper_column::when_mom (rc);
-
-  Moment delta_t = rwhen - lwhen;
-  if (!Paper_column::is_musical (rc ))
-    {
-      /*
-	when toying with mmrests, it is possible to have musical
-	column on the left and non-musical on the right, spanning
-	several measures.
-
-	In 2.0.1, this still fucks up in an interesting way:
-
-	
-\score {
-{	\property Score.skipBars = ##t
-	\context Staff = clarinet
-	    { 
-		\notes {
-		\time 3/4 \mark "72"
-<< s1*0^"all"		R4*3*11 >>
-		\mark "73"
-		R4*3*11 \mark "74"
-	d2 r4
-
-
-		}}}
-    \paper { raggedright = ##t }
-}
-
-	
-       */
-      
-      Moment *dt = unsmob_moment (rc->get_grob_property ("measure-length"));
-      if (dt)
-	delta_t = delta_t <? *dt; 
-    }
-  Real dist = 0.0;
-
-  /*
-    In normal situations, the next column is at most
-    SHORTEST_PLAYING_LEN away. However chord-tremolos do funky faking stuff
-    with durations, invalidating this assumption. Here we kludge
-    around to get chord tremolos to behave properly.
-    
-   */
-  shortest_playing_len = shortest_playing_len >? delta_t;
-  if (delta_t.main_part_ && !lwhen.grace_part_)
-    {
-      dist = get_duration_space (me, shortest_playing_len, shortest.main_part_, expand_only);
-      dist *= (double) (delta_t.main_part_ / shortest_playing_len.main_part_);
-    }
-  else if (delta_t.grace_part_)
-    {
-      /*
-	TODO: figure out how to space grace notes.
-      */
-      dist = get_duration_space (me, shortest, shortest.main_part_, expand_only);
-
-      Real grace_fact
-	= robust_scm2double (me->get_grob_property ("grace-space-factor"), 1);
-
-      dist *= grace_fact;
-    }
-
-  
-  return dist;
-}
-
-
-
-ADD_INTERFACE (Spacing_spanner,"spacing-spanner-interface",
-"The space taken by a note is dependent on its duration. Doubling a\n"
-"duration adds spacing-increment to the space. The most common shortest\n"
-"note gets shortest-duration-space. Notes that are even shorter are\n"
-"spaced proportonial to their duration.\n"
-"\n"
-"Typically, the increment is the width of a black note head.  In a\n"
-"piece with lots of 8th notes, and some 16th notes, the eighth note\n"
-"gets 2 note heads width (i.e. the space following a note is 1 note\n"
-"head width) A 16th note is followed by 0.5 note head width. The\n"
-"quarter note is followed by  3 NHW, the half by 4 NHW, etc.\n",
-  "grace-space-factor spacing-increment base-shortest-duration shortest-duration-space common-shortest-duration");
-
-
-
-ADD_INTERFACE (Spacing_interface,"spacing-interface",
-  "Something to do with line breaking and spacing. Kill this one after determining line breaks.",
-  "");
-
diff --git a/lily/span-arpeggio-engraver.cc b/lily/span-arpeggio-engraver.cc
deleted file mode 100644
index 9b33ae95f3..0000000000
--- a/lily/span-arpeggio-engraver.cc
+++ /dev/null
@@ -1,112 +0,0 @@
-/*
-  span-arpeggio-engraver.cc -- implement Span_arpeggio_engraver
-
-  source file of the GNU LilyPond music typesetter
-
-  (c) 2000--2004 Jan Nieuwenhuizen <janneke@gnu.org>
-
-  Han-Wen Nienhuys <hanwen@xs4all.nl>
-*/
-
-#include "engraver.hh"
-#include "lily-guile.hh"
-#include "item.hh"
-#include "arpeggio.hh"
-#include "group-interface.hh"
-#include "side-position-interface.hh"
-#include "staff-symbol-referencer.hh"
-
-
-/** 
-  Make arpeggios that span multiple staves.  Catch arpeggios, and span a
-  Span_arpeggio over them if we find more than two arpeggios.
-  */
-class Span_arpeggio_engraver : public Engraver
-{
-public:
-  TRANSLATOR_DECLARATIONS(Span_arpeggio_engraver);
-  
-protected:
-  virtual void acknowledge_grob (Grob_info);
-  virtual void process_acknowledged_grobs ();
-  virtual void stop_translation_timestep ();
-
-private:
-  Item *span_arpeggio_;
-  Link_array<Grob> arpeggios_;
-};
-
-
-Span_arpeggio_engraver::Span_arpeggio_engraver ()
-{
-  span_arpeggio_ = 0;
-}
-
-void
-Span_arpeggio_engraver::acknowledge_grob (Grob_info info)
-{
-    if (info.origin_transes (this).size ()
-        && Arpeggio::has_interface (info.grob_))
-    {
-      arpeggios_.push (info.grob_);
-    }
-}
-
-void
-Span_arpeggio_engraver::process_acknowledged_grobs ()
-{
-  /*
-    connectArpeggios is slightly brusque; we should really read a grob
-    property of the caught non-span arpeggios. That way, we can have
-
-    both non-connected and connected arps in one pianostaff.
-
-  */
-  if (!span_arpeggio_ && arpeggios_.size () > 1
-      && to_boolean (get_property ("connectArpeggios")))
-    {
-      span_arpeggio_ = make_item ("Arpeggio");
-      announce_grob(span_arpeggio_, SCM_EOL);      
-    }
-}
-
-void
-Span_arpeggio_engraver::stop_translation_timestep ()
-{
-  if (span_arpeggio_) 
-    {
-      /*
-	we do this very late, to make sure we also catch `extra'
-	side-pos support like accidentals.
-       */
-      for (int i=0; i < arpeggios_.size (); i ++)
-	{
-	  for (SCM s = arpeggios_[i]->get_grob_property ("stems");
-	       gh_pair_p (s); s = ly_cdr (s))
-	    Group_interface::add_thing (span_arpeggio_, ly_symbol2scm ("stems"), ly_car (s));
-	  for (SCM s = arpeggios_[i]->get_grob_property ("side-support-elements");
-	       gh_pair_p (s); s = ly_cdr (s))
-	    Group_interface::add_thing (span_arpeggio_, ly_symbol2scm ("side-support-elements"), ly_car (s));
-
-	  /*
-	    we can't kill the children, since we don't want to the
-	    previous note to bump into the span arpeggio; so we make
-	    it transparent.  */
-	  arpeggios_[i]->set_grob_property ("print-function", SCM_EOL);
-	}
-      
-      typeset_grob (span_arpeggio_);
-      span_arpeggio_ = 0;
-    }
-  arpeggios_.clear ();
-}
-
-
-
-ENTER_DESCRIPTION(Span_arpeggio_engraver,
-/* descr */       "",
-/* creats*/       "Arpeggio",
-/* accepts */     "",
-/* acks  */      "arpeggio-interface",
-/* reads */       "connectArpeggios",
-/* write */       "");
diff --git a/lily/span-bar-engraver.cc b/lily/span-bar-engraver.cc
deleted file mode 100644
index 0738451478..0000000000
--- a/lily/span-bar-engraver.cc
+++ /dev/null
@@ -1,99 +0,0 @@
-/*
-  span-bar-grav.cc -- implement Span_bar_engraver
-
-  source file of the GNU LilyPond music typesetter
-
-  (c) 1997--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-*/
-
-
-#include "lily-guile.hh"
-#include "bar-line.hh"
-#include "item.hh"
-#include "span-bar.hh"
-#include "engraver.hh"
-
-
-/** 
-
-  Make bars that span multiple "staves". Catch bars, and span a
-  Span_bar over them if we find more than 2 bars.  Vertical alignment
-  of staves changes the appearance of spanbars.  It is up to the
-  aligner (Vertical_align_engraver, in this case, to add extra
-  dependencies to the spanbars.
-
-  */
-class Span_bar_engraver : public Engraver
-{
-  Item * spanbar_;
-  Link_array<Item> bars_;
-
-public:
-  TRANSLATOR_DECLARATIONS(Span_bar_engraver);
-protected:
-  virtual void acknowledge_grob (Grob_info);
-  virtual void stop_translation_timestep ();
-
-};
-
-
-Span_bar_engraver::Span_bar_engraver ()
-{
-  spanbar_ =0;
-}
-
-
-
-void
-Span_bar_engraver::acknowledge_grob (Grob_info i)
-{
-  int depth = i.origin_transes (this).size ();
-  if (depth > 1
-      && Bar_line::has_interface (i.grob_))
-    {
-      Item * it = dynamic_cast<Item*> (i.grob_);
-      bars_.push (it);
-
-      if (bars_.size () >= 2 && !spanbar_) 
-	{
-	  spanbar_ = make_item ("SpanBar");
-
-	  spanbar_->set_parent (bars_[0], X_AXIS);
-
-	  announce_grob (spanbar_, SCM_EOL);
-	}
-    }
-}
-void
-Span_bar_engraver::stop_translation_timestep ()
-{
-  if (spanbar_) 
-    {
-      for (int i=0; i < bars_.size () ; i++)
-	Span_bar::add_bar (spanbar_,bars_[i]);
-
-      SCM vissym =ly_symbol2scm ("break-visibility");
-      SCM vis = bars_[0]->internal_get_grob_property (vissym);	  
-      if (scm_equal_p (spanbar_->internal_get_grob_property (vissym), vis) != SCM_BOOL_T)
-	spanbar_->internal_set_grob_property (vissym, vis);
-
-      typeset_grob (spanbar_);
-      spanbar_ =0;
-    }
-  bars_.set_size (0);
-}
-
-
-
-
-
-
-
-ENTER_DESCRIPTION(Span_bar_engraver,
-/* descr */       "This engraver makes cross-staff barlines: It catches all normal "
-"bar lines, and draws a single span-bar across them.",
-/* creats*/       "SpanBar",
-/* accepts */     "",
-/* acks  */      "bar-line-interface",
-/* reads */       "",
-/* write */       "");
diff --git a/lily/span-bar.cc b/lily/span-bar.cc
deleted file mode 100644
index 46c39c6798..0000000000
--- a/lily/span-bar.cc
+++ /dev/null
@@ -1,247 +0,0 @@
-/*
-  span-bar.cc -- implement Span_bar
-
-  source file of the GNU LilyPond music typesetter
-
-  (c) 1997--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-*/
-
-#include "span-bar.hh"
-#include "font-interface.hh"
-#include "dimensions.hh"
-#include "paper-def.hh"
-#include "molecule.hh"
-#include "warn.hh"
-#include "axis-group-interface.hh"
-#include "group-interface.hh"
-#include "grob.hh"
-#include "bar-line.hh"
-
-void
-Span_bar::add_bar (Grob*me, Grob*b)
-{
-  Pointer_group_interface::add_grob (me, ly_symbol2scm ("elements"),  b);
-
-  me->add_dependency (b);
-}
-
-MAKE_SCHEME_CALLBACK (Span_bar,print,1);
-
-/* Limitations/Bugs:
-
-   (1) Elements from 'me->get_grob_property ("elements")' must be
-   ordered according to their y coordinates relative to their common
-   axis group parent.  Otherwise, the computation goes mad.
-
-   (TODO:
-   apply a sort algorithm that ensures this precondition.)  However,
-   until now, I have seen no case where lily has not fulfilled this
-   precondition.
-
-   (2) This method depends on bar_engraver not being removed from
-   staff context.  If bar_engraver is removed, the size of the staff
-   lines is evaluated as 0, which results in a solid span bar line
-   with faulty y coordinate. */
-
-/* This routine was originally by Juergen Reuter, but it was a on the
-   bulky side. Rewritten by Han-Wen. */
-SCM
-Span_bar::print (SCM smobbed_me) 
-{
-  Grob *me = unsmob_grob (smobbed_me);
-  SCM first_elt = me->get_grob_property ("elements");
-
-  /* compute common refpoint of elements */
-  Grob *refp = me;
-  for (SCM elts = first_elt; gh_pair_p (elts); elts = ly_cdr (elts))
-    {
-      SCM smobbed_staff_bar = ly_car (elts);
-      Grob *staff_bar = unsmob_grob (smobbed_staff_bar);
-      refp = staff_bar->common_refpoint (refp, Y_AXIS);
-    }
-
-  Span_bar::evaluate_glyph (me);
-  SCM glyph = me->get_grob_property ("glyph");
-
-  /* glyph may not be a string, when ME is killed by Hara Kiri in
-    between. */
-  if (!gh_string_p (glyph))
-    return SCM_EOL;
-  
-  String glyph_string = ly_scm2string (glyph);
-
-  /* compose span_bar_mol */
-  Molecule span_bar_mol;
-
-  Interval prev_extent;
-  for (SCM elts = first_elt; gh_pair_p (elts); elts = ly_cdr (elts))
-    {
-      SCM smobbed_staff_bar = ly_car (elts);
-      Grob *staff_bar = unsmob_grob (smobbed_staff_bar);
-      Interval ext = staff_bar->extent (refp, Y_AXIS);
-      if (ext.is_empty ())
-	continue; 
-      
-      if (!prev_extent.is_empty ())
-	{
-	  Interval l (prev_extent [UP],
-		     ext[DOWN]);
-
-	  if (l.is_empty ())
-	    {
-	      /* There is overlap between the bar lines.  Do nothing. */
-	    }
-	  else
-	    {
-	      Molecule interbar = Bar_line::compound_barline (staff_bar,
-							      glyph_string,
-							      l.length ());
-	      interbar.translate_axis (l.center (), Y_AXIS);
-	      span_bar_mol.add_molecule (interbar);
-	    }
-	}
-      prev_extent = ext;
-    }
-
-  span_bar_mol.translate_axis (- me->relative_coordinate (refp, Y_AXIS),
-			       Y_AXIS);
-  
-  return span_bar_mol.smobbed_copy ();
-}
-
-MAKE_SCHEME_CALLBACK (Span_bar,width_callback,2);
-SCM
-Span_bar::width_callback (SCM element_smob, SCM scm_axis)
-{
-  Grob *se = unsmob_grob (element_smob);
-  Axis a = (Axis) gh_scm2int (scm_axis);
-  assert (a == X_AXIS);
-  String gl = ly_scm2string (se->get_grob_property ("glyph"));
-
-  /*
-    urg.
-  */
-  Molecule m = Bar_line::compound_barline (se, gl, 40 PT);
-  
-  return ly_interval2scm (m.extent (X_AXIS));
-}
-
-MAKE_SCHEME_CALLBACK (Span_bar,before_line_breaking,1);
-SCM
-Span_bar::before_line_breaking (SCM smob)
-{
-  evaluate_empty (unsmob_grob (smob));
-  evaluate_glyph (unsmob_grob (smob));
-
-  /* No need to call Bar_line::before_line_breaking (), because the info
-     in ELEMENTS already has been procced by
-     Bar_line::before_line_breaking (). */
-  return SCM_UNSPECIFIED;
-}
-
-MAKE_SCHEME_CALLBACK (Span_bar,center_on_spanned_callback,2);
-
-SCM
-Span_bar::center_on_spanned_callback (SCM element_smob, SCM axis)
-{
-  Grob *me = unsmob_grob (element_smob);
-  Axis a = (Axis) gh_scm2int (axis);
-  assert (a == Y_AXIS);
-  Interval i (get_spanned_interval (me));
-
-  /* Bar_line::print delivers a barline of y-extent (-h/2,h/2), so
-     we have to translate ourselves to be in the center of the 
-     interval that we span. */
-  if (i.is_empty ())
-    {
-      me->suicide ();
-      return gh_double2scm (0.0);
-    }
-  
-  return gh_double2scm (i.center ());
-}
-
-void
-Span_bar::evaluate_empty (Grob*me)
-{
-  /* TODO: filter all hara-kiried out of ELEMENS list, and then
-     optionally do suicide. Call this cleanage function from
-     center_on_spanned_callback () as well. */
-  if (!gh_pair_p (me->get_grob_property ("elements")))
-    {
-      me->suicide ();
-    }
-}
-
-void
-Span_bar::evaluate_glyph (Grob*me)
-{
-  SCM elts = me->get_grob_property ("elements");
-  SCM glyph_symbol = ly_symbol2scm ("glyph");
-  SCM gl = SCM_EOL;
-
-  while (gh_pair_p (elts))
-    {
-      gl = unsmob_grob (gh_car (elts))
-	->internal_get_grob_property (glyph_symbol);
-      if (gh_string_p (gl))
-	break;
-      elts =gh_cdr (elts);
-    }
-
-  if (!gh_string_p (gl))
-    {
-      me->suicide ();
-      return;
-    }
-  
-  String type = ly_scm2string (gl);
-  if (type == "|:") 
-    {
-      type = ".|";
-    }
-  else if (type== ":|")
-    {
-      type = "|.";
-    }
-  else if (type== ":|:")
-    {
-      type = ".|.";
-    }
-
-  gl = scm_makfrom0str (type.to_str0 ());
-  if (scm_equal_p (me->internal_get_grob_property (glyph_symbol), gl)
-      != SCM_BOOL_T)
-    me->internal_set_grob_property (glyph_symbol, gl);
-}
-
-Interval
-Span_bar::get_spanned_interval (Grob*me) 
-{
-  return ly_scm2interval (Axis_group_interface::group_extent_callback
-			  (me->self_scm (), gh_int2scm (Y_AXIS))); 
-}
-
-
-MAKE_SCHEME_CALLBACK (Span_bar,get_bar_size,1);
-SCM
-Span_bar::get_bar_size (SCM smob)
-{
-  Grob* me =  unsmob_grob (smob);
-  Interval iv (get_spanned_interval (me));
-  if (iv.is_empty ())
-    {
-      /* This happens if the bars are hara-kiried from under us. */
-      me->suicide ();
-      return gh_double2scm (-1);
-    }
-  return gh_double2scm (iv.length ());
-}
-
-
-
-ADD_INTERFACE (Span_bar,"span-bar-interface",
-  "A bar line that spans other barlines (typically used to get cross-staff barlines.",
-  "");
-
-
diff --git a/lily/span-dynamic-performer.cc b/lily/span-dynamic-performer.cc
deleted file mode 100644
index 7c2375d90b..0000000000
--- a/lily/span-dynamic-performer.cc
+++ /dev/null
@@ -1,189 +0,0 @@
-/*
-  span-dynamic-performer.cc -- implement Span_dynamic_performer
-
-  source file of the GNU LilyPond music typesetter
-
-  (c) 2000--2004 Jan Nieuwenhuizen <janneke@gnu.org>
-*/
-
-#include "performer.hh"
-
-#include "event.hh"
-#include "audio-item.hh"
-
-/*
-  TODO: fold this into 1 engraver: \< and \> should also stop when
-  absdyn is encountered.
- */
-
-struct Audio_dynamic_tuple
-{
-  Audio_dynamic* audio_;
-  Moment mom_;
-};
-
-/**
-   perform span-dynamics
- */
-class Span_dynamic_performer : public Performer
-{
-public:
-  TRANSLATOR_DECLARATIONS(Span_dynamic_performer);
-
-protected:
-  virtual bool try_music (Music*);
-  virtual void acknowledge_audio_element (Audio_element_info);
-  virtual void process_music ();
-  virtual void stop_translation_timestep ();
-
-private:
-  Audio_dynamic* audio_;
-  Real last_volume_;
-  Music* span_start_event_;
-  Drul_array<Music*> span_events_;
-  Array<Audio_dynamic_tuple> dynamic_tuples_;
-  Array<Audio_dynamic_tuple> finished_dynamic_tuples_;
-  Direction dir_;
-  Direction finished_dir_;
-};
-
-Span_dynamic_performer::Span_dynamic_performer ()
-{
-  span_events_[START] = 0;
-  span_events_[STOP] = 0;
-  span_start_event_ = 0;
-  audio_ = 0;
-  last_volume_ = 0;
-}
-
-void
-Span_dynamic_performer::acknowledge_audio_element (Audio_element_info i)
-{
-  if (Audio_dynamic * d = dynamic_cast <Audio_dynamic*> (i.elem_))
-    {
-      last_volume_ = d->volume_;
-    }
-}
-
-void
-Span_dynamic_performer::process_music ()
-{
-  if (span_start_event_ || span_events_[START])
-    {
-      audio_ = new Audio_dynamic (0);
-      Audio_element_info info (audio_, span_events_[START]
-			       ? span_events_[START]
-			       : span_events_[STOP]);
-      announce_element (info);
-      Audio_dynamic_tuple a = { audio_, now_mom () };
-      dynamic_tuples_.push (a);
-    }
-  
-  if (span_events_[STOP])
-    {
-      if (!span_start_event_)
-	{
-	  span_events_[STOP]->origin ()->warning (_ ("can't find start of (de)crescendo"));
-	  span_events_[STOP] = 0;
-	}
-      else
-	{
-	  finished_dir_ = dir_;
-	  finished_dynamic_tuples_ = dynamic_tuples_;
-	}
-      dynamic_tuples_.clear ();
-      span_start_event_ = 0;
-    }
-
-  if (span_events_[START])
-    {
-      dir_ =  (span_events_[START]->is_mus_type ("crescendo-event"))
-	? RIGHT : LEFT;
-      span_start_event_ = span_events_[START];
-      
-      dynamic_tuples_.clear ();
-      Audio_dynamic_tuple a = { audio_, now_mom () };
-      dynamic_tuples_.push (a);
-    }
-
-
-  if (span_events_[STOP])
-    { 
-      finished_dynamic_tuples_.top ().audio_->volume_ = last_volume_;
-    }
-  
-  if (span_events_[START])
-    {
-      dynamic_tuples_[0].audio_->volume_ = last_volume_;
-    }
-  span_start_event_ = 0;
-  span_events_[START] = 0;
-  span_events_[STOP] = 0;
-}
-
-void
-Span_dynamic_performer::stop_translation_timestep ()
-{
-  if (finished_dynamic_tuples_.size () > 1)
-    {
-      Real start_volume = finished_dynamic_tuples_[0].audio_->volume_;
-      Real dv = finished_dynamic_tuples_.top ().audio_->volume_
-	- start_volume;
-      /*
-	urg.
-	Catch and fix the case of:
-
-             |                         |
-	    x|                        x|
-            f cresc.  -- -- -- -- --  pp 
-
-	 Actually, we should provide a non-displayed dynamic/volume setting,
-	 to set volume to 'ff' just before the pp.
-       */
-      if (!dv || sign (dv) != finished_dir_)
-	{
-	  // urg.  20%: about two volume steps
-	  dv = (Real)finished_dir_ * 0.2;
-	  if (!start_volume)
-	    start_volume = finished_dynamic_tuples_.top
- ().audio_->volume_ - dv;
-	}
-      Moment start_mom = finished_dynamic_tuples_[0].mom_;
-      Moment dt = finished_dynamic_tuples_.top ().mom_ - start_mom;
-      for (int i=0; i < finished_dynamic_tuples_.size (); i++)
-	{
-	  Audio_dynamic_tuple* a = &finished_dynamic_tuples_[i];
-	  Real volume = start_volume + dv * (Real) (a->mom_ - start_mom).main_part_
-	    / (Real)dt.main_part_;
-	  a->audio_->volume_ = volume;
-	}
-      finished_dynamic_tuples_.clear ();
-    }
-
-  if (audio_)
-    {
-      play_element (audio_);
-      audio_ = 0;
-    }
-
-  span_events_[STOP] = 0;
-  span_events_[START] = 0;
-
-}
-
-bool
-Span_dynamic_performer::try_music (Music* r)
-{
-  if (r->is_mus_type ("crescendo-event")
-      || r->is_mus_type ("decrescendo-event"))
-    {
-      Direction d = to_dir (r->get_mus_property ("span-direction"));
-      span_events_[d] = r;
-      return true;
-    }
-  return false;
-}
-ENTER_DESCRIPTION (Span_dynamic_performer,
-		   "", "",
-		   "crescendo-event decrescendo-event", 
-		   "", "", "");
diff --git a/lily/spanner.cc b/lily/spanner.cc
deleted file mode 100644
index fdc34380a4..0000000000
--- a/lily/spanner.cc
+++ /dev/null
@@ -1,376 +0,0 @@
-/*
-  spanner.cc -- implement Spanner
-
-  source file of the GNU LilyPond music typesetter
-
-  (c) 1996--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-*/
-#include <math.h>
-#include <libc-extension.hh>
-
-
-#include "warn.hh"
-#include "spanner.hh"
-#include "paper-column.hh"
-#include "paper-score.hh"
-#include "molecule.hh"
-#include "paper-outputter.hh"
-#include "paper-column.hh"
-#include "system.hh"
-#include "group-interface.hh"
-
-void
-Spanner::do_break_processing ()
-{
-  //break_into_pieces
-  Item * left = spanned_drul_[LEFT];
-  Item * right = spanned_drul_[RIGHT];
-
-  if (!left || !right)
-    return;
-  
-  /*
-    Check if our parent in X-direction spans equally wide
-    or wider than we do.
-   */
-  for (int a = X_AXIS; a < NO_AXES; a ++)
-    {
-      if (Spanner* parent = dynamic_cast<Spanner*> (get_parent ((Axis)a)))
-	{
-	  if (!parent->spanned_rank_iv ().contains_b (this->spanned_rank_iv ()))
-	    {
-	      programming_error (to_string ("Spanner `%s' is not fully contained in parent spanner `%s'.",
-					 name ().to_str0 (),
-					 parent->name ().to_str0 ()));
-	    }
-	}
-    }
-  
-  if (get_system () || broken_b ())
-    return;
-
-  if (left == right)
-    {
-      /*
-	If we have a spanner spanning one column, we must break it
-	anyway because it might provide a parent for another item.  */
-      Direction d = LEFT;
-      do
-	{
-	  Item* bound = left->find_prebroken_piece (d);
-	  if (!bound)
-	    programming_error ("no broken bound");
-	  else if (bound->get_system ())
-	    {
-	      Spanner * span = dynamic_cast<Spanner*> (clone ());
-	      span->set_bound (LEFT, bound);
-	      span->set_bound (RIGHT, bound);
-
-	      assert (span->get_system ()); 
-	      span->get_system ()->typeset_grob (span);
-	      broken_intos_.push (span);
-	    }
-	}
-      while ((flip (&d))!= LEFT);
-    }
-  else
-    {
-      Link_array<Item> break_points = pscore_->system_->broken_col_range (left,right);
-
-      break_points.insert (left,0);
-      break_points.push (right);
-
-      for (int i=1; i < break_points.size (); i++) 
-	{
-	  Drul_array<Item*> bounds;
-	  bounds[LEFT] = break_points[i-1];
-	  bounds[RIGHT] = break_points[i];
-	  Direction d = LEFT;
-	  do
-	    {
-	      if (!bounds[d]->get_system ())
-		bounds[d] = bounds[d]->find_prebroken_piece (- d);
-	    }
-	  while ((flip (&d))!= LEFT);
-
-  	  if (!bounds[LEFT] ||  ! bounds[RIGHT])
-	    {
-	      programming_error ("bounds of this piece aren't breakable. ");
-	      continue; 
-	    }
-
-	  Spanner *span = dynamic_cast<Spanner*> (clone ());
-	  span->set_bound (LEFT,bounds[LEFT]);
-	  span->set_bound (RIGHT,bounds[RIGHT]);
-
-	  if (!bounds[LEFT]->get_system () 
-	    
-	      || !bounds[RIGHT]->get_system ()
-	      || bounds[LEFT]->get_system () != bounds[RIGHT]->get_system ())
-	    {
-	      programming_error ("bounds of spanner are invalid");
-	      span->suicide ();
-	    }
-	  else
-	    {
-	      bounds[LEFT]->get_system ()->typeset_grob (span);
-	      broken_intos_.push (span);
-	    }
-	}
-    }
-  broken_intos_.sort (Spanner::compare);
-  for (int i= broken_intos_.size();i--;)
-    broken_intos_[i]->break_index_ = i;
-}
-
-int
-Spanner::get_break_index ()const
-{
-  return break_index_;
-}
-
-void
-Spanner::set_my_columns ()
-{
-  Direction i = (Direction) LEFT;
-  do 
-    {
-      if (!spanned_drul_[i]->get_system ())
-	set_bound (i,spanned_drul_[i]->find_prebroken_piece ((Direction) -i));
-    } 
-  while (flip (&i) != LEFT);
-}       
-
-Interval_t<int>
-Spanner::spanned_rank_iv ()
-{
-  Interval_t<int> iv (0, 0);
-
-  if (spanned_drul_[LEFT])
-    {
-      iv[LEFT] = Paper_column::get_rank (spanned_drul_[LEFT]->get_column ());
-    }
-  if (spanned_drul_[RIGHT])
-    {
-      iv[RIGHT] = Paper_column::get_rank (spanned_drul_[RIGHT]->get_column ());
-    }
-  return iv;
-}
-
-
-Item*
-Spanner::get_bound (Direction d) const
-{
-  return spanned_drul_ [d];
-}
-
-/*
-  Set the items that this spanner spans. If D == LEFT, we also set the
-  X-axis parent of THIS to S.
-*/
-void
-Spanner::set_bound (Direction d, Grob*s)
-{
-  Item * i = dynamic_cast<Item*> (s);
-  if (!i)
-    {
-      programming_error ("Must have Item for spanner bound.");
-      return;
-    }
-  
-  spanned_drul_[d] =i;
-
-  /**
-     We check for System to prevent the column -> line_of_score
-     -> column -> line_of_score -> etc situation */
-  if (d== LEFT && !dynamic_cast<System*> (this))
-    {
-      set_parent (i, X_AXIS);
-    }
-
-  /*
-    Signal that this column needs to be kept alive. They need to be
-    kept alive to have meaningful position and linebreaking.
-
-    [maybe we should try keeping all columns alive?, and perhaps
-    inherit position from their (non-)musical brother]
-    
-  */
-  if (dynamic_cast<Paper_column*> (i))
-    {
-      Pointer_group_interface::add_grob (i, ly_symbol2scm ("bounded-by-me"), this);  
-    }
-}
-
-Spanner::Spanner (SCM s)
-  : Grob (s)
-{
-  break_index_ = 0;
-  spanned_drul_[LEFT]=0;
-  spanned_drul_[RIGHT]=0;
-
-  Group_interface::add_thing (this, ly_symbol2scm ("interfaces"), ly_symbol2scm ("spanner-interface"));
-}
-
-Spanner::Spanner (Spanner const &s)
-  : Grob (s)
-{
-  spanned_drul_[LEFT] = spanned_drul_[RIGHT] =0;
-}
-
-Real
-Spanner::spanner_length () const
-{  
-  Real l = spanned_drul_[LEFT]->relative_coordinate (0, X_AXIS);
-  Real r = spanned_drul_[RIGHT]->relative_coordinate (0, X_AXIS);
-
-  if (r< l)
-    programming_error ("spanner with negative length");
-
-  return r-l;
-}
-
-System *
-Spanner::get_system () const
-{
-  if (!spanned_drul_[LEFT] || !spanned_drul_[RIGHT])
-    return 0;
-  if (spanned_drul_[LEFT]->get_system () != spanned_drul_[RIGHT]->get_system ())
-    return 0;
-  return spanned_drul_[LEFT]->get_system ();
-}
-
-
-Grob*
-Spanner::find_broken_piece (System*l) const
-{
-  int idx = binsearch_links (broken_intos_, (Spanner*)l, Spanner::compare);
-  
-  if (idx < 0)
-    return 0;
-  else
-    return broken_intos_ [idx];
-}
-
-
-int
-Spanner::compare (Spanner * const &p1, Spanner * const &p2)
-{
-  return  p1->get_system ()->rank_ - p2->get_system ()->rank_;
-}
-
-bool
-Spanner::broken_b () const
-{
-  return broken_intos_.size ();
-}
-
-
-/*
-  If this is a broken spanner, return the amount the left end is to be
-  shifted horizontally so that the spanner starts after the initial
-  clef and key on the staves. This is necessary for ties, slurs,
-  crescendo and decrescendo signs, for example.
-*/
-Real
-Spanner::get_broken_left_end_align () const
-{
-  Paper_column *sc = dynamic_cast<Paper_column*> (spanned_drul_[LEFT]->get_column ());
-
-  // Relevant only if left span point is first column in line
-  if (sc != NULL &&
-      sc->break_status_dir () == RIGHT)
-    {
-      /*
-	
-	We used to do a full search for the Break_align_item.
-	But that doesn't make a difference, since the Paper_column
-	is likely to contain only a Break_align_item.
-      */
-      return sc->extent (sc, X_AXIS)[RIGHT];
-    }
-
-  return 0.0;
-}
-
-SCM
-Spanner::do_derived_mark () const
-{
-  /*
-    We'd be fucked if this is called before spanned_drul_[] is inited.  */
-  if (status_ == ORPHAN)
-    return SCM_EOL;
-  
-  Direction d = LEFT;
-  do
-    if (spanned_drul_[d])
-      scm_gc_mark (spanned_drul_[d]->self_scm ());
-  while (flip (&d) != LEFT);
-
-  for (int i= broken_intos_.size () ; i--;)
-    scm_gc_mark (broken_intos_[i]->self_scm ());
-
-  return SCM_EOL;
-}
-
-
-/*
-  Set left or right bound to IT.
-
-  Warning: caller should ensure that subsequent calls put in ITems
-  that are left-to-right ordered.
- */
-void
-add_bound_item (Spanner* sp, Grob*it)
-{
-  if (!sp->get_bound (LEFT))
-    sp->set_bound (LEFT, it);
-  else
-    sp->set_bound (RIGHT, it);
-}
-
-
-MAKE_SCHEME_CALLBACK (Spanner,set_spacing_rods,1);
-SCM
-Spanner::set_spacing_rods (SCM smob)
-{
-  Grob*me = unsmob_grob (smob);
-
-  Rod r;
-  Spanner*sp = dynamic_cast<Spanner*> (me);
-  r.item_l_drul_[LEFT] = sp->get_bound (LEFT);
-  r.item_l_drul_[RIGHT] = sp->get_bound (RIGHT);
-  r.distance_ =
-    robust_scm2double (me->get_grob_property ("minimum-length"), 0);
-
-  r.add_to_cols ();
-  return SCM_UNSPECIFIED;
-}
-
-
-/*
-  Return I such that SP == SP->ORIGINAL_->BROKEN_INTOS_[I]. 
- */
-int
-broken_spanner_index (Spanner * sp)
-{
-  Spanner * parent = dynamic_cast<Spanner*> (sp->original_);
-  return parent->broken_intos_.find_index (sp);
-}
-		      
-
-Spanner*
-unsmob_spanner (SCM s )
-{
-  return dynamic_cast<Spanner*> (unsmob_grob (s));
-}
-
-ADD_INTERFACE(Spanner,
-	      "spanner-interface",
-"Other grobs have a shape that depends on the horizontal spacing. For\n"
-"example, slur, beam, tie, etc. These grobs form a subtype called\n"
-"@code{Spanner}. All spanners have two span-points (these must be\n"
-"@code{Item}s), one on the left and one on the right. The left bound is\n"
-"also the X-reference point of the spanner.\n"
-,
-	      "minimum-length");
diff --git a/lily/spring-smob.cc b/lily/spring-smob.cc
deleted file mode 100644
index bab14e8418..0000000000
--- a/lily/spring-smob.cc
+++ /dev/null
@@ -1,47 +0,0 @@
-/*   
-  spring.cc --  implement Spring
-  
-  source file of the GNU LilyPond music typesetter
-  
-  (c) 1999--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-  
- */
-
-#include "spring.hh"
-#include "warn.hh"
-#include "ly-smobs.icc"
-
-Spring_smob::Spring_smob()
-{
-  distance_ =0.;
-  strength_ =1.0;
-  expand_only_b_ = false;
-  other_ = 0;
-}
-
-
-IMPLEMENT_SIMPLE_SMOBS(Spring_smob);
-
-SCM
-Spring_smob::mark_smob (SCM) { return SCM_UNSPECIFIED; }
-
-int
-Spring_smob::print_smob (SCM s, SCM p, scm_print_state *)
-{
-  Spring_smob *ss = unsmob_spring (s);
-  scm_puts (_f("#<spring smob d= %f>", ss->distance_).to_str0 (), p);
-  return 1;
-}
-
-SCM
-Spring_smob::equal_p (SCM a , SCM b)
-{
-  return a==b? SCM_BOOL_T : SCM_BOOL_F;
-}
-
-SCM
-Spring_smob::smobbed_copy ()const
-{
-  Spring_smob *  p = new Spring_smob (*this);
-  return p->smobbed_self ();
-}
diff --git a/lily/staff-collecting-engraver.cc b/lily/staff-collecting-engraver.cc
deleted file mode 100644
index be285af113..0000000000
--- a/lily/staff-collecting-engraver.cc
+++ /dev/null
@@ -1,46 +0,0 @@
-/*   
-staff-collecting-engraver.cc --  implement Staff_collecting_engraver
-
-source file of the GNU LilyPond music typesetter
-
-(c) 2001--2004  Han-Wen Nienhuys <hanwen@cs.uu.nl>
-
- */
-#include "staff-symbol.hh"
-#include "engraver.hh"
-#include "grob.hh"
-#include "translator-group.hh"
-
-class Staff_collecting_engraver : public Engraver
-{
-public:
-  TRANSLATOR_DECLARATIONS(Staff_collecting_engraver);
-  virtual void acknowledge_grob (Grob_info);
-};
-
-Staff_collecting_engraver::Staff_collecting_engraver ()
-{
-  
-}
-
-void
-Staff_collecting_engraver::acknowledge_grob (Grob_info gi)
-{
-  if (Staff_symbol::has_interface (gi.grob_))
-    {
-      SCM staffs = get_property ("stavesFound");
-      staffs = gh_cons (gi.grob_->self_scm (), staffs);
-
-      daddy_trans_->set_property ("stavesFound", staffs);
-    }
-}
-
-
-ENTER_DESCRIPTION(Staff_collecting_engraver,
-/* descr */       "Maintain the stavesFound variable",
-
-/* creats*/       "",
-/* accepts */     "",
-/* acks  */      "staff-symbol-interface",
-/* reads */       "stavesFound",
-/* write */       "stavesFound");
diff --git a/lily/staff-performer.cc b/lily/staff-performer.cc
deleted file mode 100644
index 1c5e99f066..0000000000
--- a/lily/staff-performer.cc
+++ /dev/null
@@ -1,157 +0,0 @@
-/*
-  staff-performer.cc -- implement Staff_performer
-
-  source file of the GNU LilyPond music typesetter
-
-  (c) 1997--2004 Jan Nieuwenhuizen <janneke@gnu.org>
- */
-
-#include "translator-group.hh"
-#include "warn.hh"
-#include "audio-column.hh"
-#include "audio-item.hh"
-#include "audio-staff.hh"
-#include "performer-group-performer.hh"
-
-/** Perform a staff. Individual notes should have their instrument
- (staff-wide) set, so we override play_element ()
-
-  */
-class Staff_performer : public Performer_group_performer 
-{
-public:
-  TRANSLATOR_DECLARATIONS(Staff_performer);
-  ~Staff_performer ();
-
-  String new_instrument_string ();
-  String instrument_string_;
-
-protected:
-  virtual void play_element (Audio_element* p);
-  virtual void finalize ();
-  virtual void initialize ();
-  virtual void create_audio_elements ();
-  virtual void stop_translation_timestep ();
-
-private:
-  Audio_staff* audio_staff_;
-  Audio_instrument* instrument_;
-  Audio_text* instrument_name_;
-  Audio_text* name_;
-  Audio_tempo* tempo_;
-};
-
-ENTER_DESCRIPTION (Staff_performer, "", "",
-		   "",
-		   "", "", "");
-
-Staff_performer::Staff_performer ()
-{
-  audio_staff_ = 0;
-  instrument_ = 0;
-  instrument_name_ = 0;
-  name_ = 0;
-  tempo_ = 0;
-}
-
-Staff_performer::~Staff_performer ()
-{
-}
-
-void
-Staff_performer::initialize ()
-{
-  audio_staff_ = new Audio_staff;
-  announce_element (Audio_element_info (audio_staff_, 0));
-
-  name_ = new Audio_text (Audio_text::TRACK_NAME, id_string_);
-  announce_element (Audio_element_info (name_, 0));
-
-  tempo_ = new Audio_tempo (get_tempo ());
-  announce_element (Audio_element_info (tempo_, 0));
-
-  Performer_group_performer::initialize ();
-}
-
-void
-Staff_performer::create_audio_elements ()
-{
-  String str = new_instrument_string ();
-  if (str.length ())
-    {
-      instrument_name_ = new Audio_text (Audio_text::INSTRUMENT_NAME, str);
-      announce_element (Audio_element_info (instrument_name_, 0));
-      instrument_ = new Audio_instrument (str);
-      announce_element (Audio_element_info (instrument_, 0));
-    }
-  Performer_group_performer::create_audio_elements ();
-}
-
-void
-Staff_performer::stop_translation_timestep ()
-{
-  /*
-    UGH. -> don't use eval.
-  */
-  static SCM proc;
-  if (!proc)
-    proc = scm_primitive_eval (ly_symbol2scm ("percussion?"));
-  
-  SCM drums = gh_call1 (proc, ly_symbol2scm (instrument_string_.to_str0 ()));
-  audio_staff_->channel_ = (drums == SCM_BOOL_T ? 9 : -1 );
-  if (name_)
-    {
-      play_element (name_);
-      name_ = 0;
-    }
-  if (tempo_)
-    {
-      play_element (tempo_);
-      tempo_ = 0;
-    }
-  if (instrument_name_)
-    {
-      play_element (instrument_name_);
-      instrument_name_ = 0;
-    }
-  if (instrument_)
-    {
-      play_element (instrument_);
-      instrument_ = 0;
-    }
-  Performer_group_performer::stop_translation_timestep ();
-}
-
-void
-Staff_performer::finalize ()
-{
-  Performer_group_performer::finalize ();
-  Performer::play_element (audio_staff_);
-  audio_staff_ = 0;
-}
-
-String 
-Staff_performer::new_instrument_string () 
-{ 
-  // mustn't ask Score for instrument: it will return piano!
-  SCM minstr = get_property ("midiInstrument");
-
-  if (!gh_string_p (minstr)
-      || ly_scm2string (minstr) == instrument_string_)
-    return "";
-
-  instrument_string_ = ly_scm2string (minstr);
-
-  return instrument_string_;
-}
-
-void 
-Staff_performer::play_element (Audio_element* p)
-{
-  if (Audio_item *ai = dynamic_cast<Audio_item *> (p)) 
-    {
-      audio_staff_->add_audio_item (ai);
-    }
-  Performer::play_element (p);
-}
-
diff --git a/lily/staff-spacing.cc b/lily/staff-spacing.cc
deleted file mode 100644
index ddb26dd47b..0000000000
--- a/lily/staff-spacing.cc
+++ /dev/null
@@ -1,246 +0,0 @@
-/*   
-     staff-spacing.cc --  implement Staff_spacing
-
-     source file of the GNU LilyPond music typesetter
-
-     (c) 2001--2004  Han-Wen Nienhuys <hanwen@cs.uu.nl>
-
-*/
-#include <stdio.h>
-
-#include "paper-column.hh" 
-#include "separation-item.hh"
-#include "item.hh"
-#include "staff-spacing.hh"
-#include "grob.hh"
-#include "warn.hh"
-#include "bar-line.hh"
-#include "staff-symbol-referencer.hh"
-#include "note-column.hh"
-#include "stem.hh"
-#include "accidental-placement.hh"
-
-/*
-  Insert some more space for the next note, in case it has a stem in
-  the wrong direction
-
- */
-Real
-Staff_spacing::next_note_correction (Grob * me,
-				     Grob * g,
-				     Interval bar_size)
-{
-  if (!g || !Note_column::has_interface (g))
-    return 0.0;
-
-  Item *col =dynamic_cast<Item*> (g)->get_column ();
-  Real max_corr = 0. >? (- g->extent (col, X_AXIS)[LEFT]);
-
-  /*
-    Duh. If this gets out of hand, we should invent something more generic.
-   */
-  if (Grob * a = Note_column::accidentals (g))
-    {
-      Interval v;
-      if (Accidental_placement::has_interface (a))
-	{
-	  v = Accidental_placement::get_relevant_accidental_extent(a, col, me);
-	}
-      else
-	v = a->extent (col, X_AXIS);
-      
-      max_corr = max_corr >? (- v[LEFT]);
-    }
-  if (Grob* a = unsmob_grob (g->get_grob_property ("arpeggio")))
-    {
-      max_corr = max_corr >? (- a->extent (col, X_AXIS)[LEFT]);
-    }
-  
-  /*
-    Let's decrease the space a little if the problem is not located
-    after a barline.
-  */
-  if (bar_size.is_empty ())
-    max_corr *= 0.75;
-  
-  if (!bar_size.is_empty ())
-    if (Grob *stem = Note_column::get_stem (g))
-      {
-	Direction d = Stem::get_direction (stem);
-	if (d == DOWN)
-	  {
-	    Real stem_start = Stem::head_positions (stem) [DOWN];
-	    Real stem_end = Stem::stem_end_position (stem); 
-	    Interval stem_posns (stem_start <? stem_end,
-				 stem_end >? stem_start);
-
-	    stem_posns.intersect (bar_size);
-
-	    Real corr = abs (stem_posns.length ()/7.) <? 1.0;
-	    corr *=
-	      robust_scm2double (me->get_grob_property ("stem-spacing-correction"), 1);
-
-	    if (d != DOWN)
-	      corr = 0.0;
-	    max_corr = max_corr >? corr;
-	  }
-      }
-  return max_corr;
-}
-
-
-/*
-  Y-positions that are covered by BAR_GROB, in the case that it is a
-  barline.  */
-Interval
-Staff_spacing::bar_y_positions (Grob *bar_grob)
-{
-  Interval bar_size;
-  bar_size.set_empty();
-  if (Bar_line::has_interface (bar_grob))
-    {
-      SCM glyph = bar_grob->get_grob_property ("glyph");
-      
-      String glyph_string = gh_string_p (glyph) ? ly_scm2string (glyph) : "";
-      if (glyph_string.left_string (1) == "|" || glyph_string.left_string (1) == ".")
-	{
-	  SCM sz = Bar_line::get_staff_bar_size (bar_grob->self_scm());
-	  bar_size = Interval (-1,1);
-	  bar_size *= robust_scm2double (sz, 1)
-	    / Staff_symbol_referencer::staff_space (bar_grob);
-	}
-    }
-  return bar_size;
-}
-
-/*
-  Do corrections for the following notes.
-
-  This is slightly convoluted, since the staffspacing grob gets
-  pointers to the separation-items, not the note-columns or
-  note-spacings.
-  
- */
-Real
-Staff_spacing::next_notes_correction (Grob *me, Grob * last_grob)
-{
-  Interval bar_size = bar_y_positions (last_grob);
-  Real max_corr =0.0;
-
-  for (SCM s = me->get_grob_property ("right-items");
-       gh_pair_p (s);  s = gh_cdr (s))
-    {
-      Grob * g = unsmob_grob (gh_car (s));
-
-      max_corr = max_corr >?  next_note_correction (me, g,  bar_size);
-      for (SCM t = g->get_grob_property ("elements");
-	   gh_pair_p (t); t  = gh_cdr (t))
-	max_corr = max_corr >? next_note_correction (me, unsmob_grob (gh_car (t)), bar_size);
-      
-    }
-  
-  return max_corr;
-}
-
-void
-Staff_spacing::get_spacing_params (Grob *me, Real * space, Real * fixed)
-{
-  *space = 1.0;
-  *fixed = 1.0;
-
-  Grob * separation_item=0;
-  Item * me_item  = dynamic_cast<Item*> (me);
-    
-  for (SCM s = me->get_grob_property ("left-items");
-       gh_pair_p (s); s = gh_cdr(s))
-    {
-      Grob * cand = unsmob_grob(gh_car (s));
-      if (cand && Separation_item::has_interface (cand))
-	separation_item = cand ;
-    }
-
-  //  printf ("doing col %d\n" , Paper_column::get_rank (left_col));
-
-  if (!separation_item)
-    {
-      programming_error ("no sep item");
-      return;
-    }
-
-  Interval last_ext;
-  Grob *last_grob = Separation_item::extremal_break_aligned_grob (separation_item, RIGHT,
-						 &last_ext);
-  if (!last_grob)
-    {
-      /*
-	TODO:
-	
-	Should  insert a adjustable space here? For excercises, you might want to
-	use a staff without a clef in the beginning. 
-       */
-      
-      /*
-	we used to have a warning here, but itgenerates a lot of
-	spurious error messages.
-      */
-      return ;
-    }
-
-  *fixed = last_ext[RIGHT];
-  *space = *fixed + 1.0;
-  
-  SCM alist = last_grob->get_grob_property ("space-alist");
-  if (!scm_list_p (alist))
-    return ;
-  
-  SCM space_def = scm_sloppy_assq (ly_symbol2scm ("first-note"), alist);
-  if (me_item->break_status_dir () == CENTER)
-    {
-      SCM nndef = scm_sloppy_assq (ly_symbol2scm ("next-note"), alist);
-      if (gh_pair_p (nndef))
-	space_def = nndef;
-    }
-  
-  
-  if (!gh_pair_p (space_def))
-    {
-      programming_error ("Unknown prefatory spacing. "); 
-      return; 
-    }
-
-  space_def = gh_cdr (space_def);
-  Real distance = gh_scm2double (gh_cdr (space_def));
-  SCM type = gh_car (space_def) ;
-
-  *fixed = last_ext[RIGHT];
-  if (type == ly_symbol2scm ("fixed-space"))
-    {
-     *fixed += distance;
-     *space = *fixed;
-    }
-  else if (type == ly_symbol2scm ("extra-space")) 
-    {
-      *space = *fixed + distance;
-    }
-  else if (type == ly_symbol2scm ("semi-fixed-space"))
-    {
-      *fixed += distance / 2; 
-      *space =  *fixed + distance/2;
-    }
-  else if (type == ly_symbol2scm("minimum-space"))
-    {
-      *space = last_ext[LEFT] + (last_ext.length () >? distance);
-    }
-  else if (type == ly_symbol2scm("minimum-fixed-space"))
-    {
-      *space = last_ext[LEFT] + (last_ext.length () >? distance);
-      *fixed = *space;
-    }
-  
-  *space += next_notes_correction (me, last_grob);
-}
-
-
-ADD_INTERFACE (Staff_spacing,"staff-spacing-interface",
-  "",
-  "stem-spacing-correction left-items right-items");
diff --git a/lily/staff-symbol-engraver.cc b/lily/staff-symbol-engraver.cc
deleted file mode 100644
index d71dcb4f21..0000000000
--- a/lily/staff-symbol-engraver.cc
+++ /dev/null
@@ -1,86 +0,0 @@
-/*
-  staff-symbol-engraver.cc -- implement Staff_symbol_engraver
-
-  source file of the GNU LilyPond music typesetter
-
-  (c) 1997--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-*/
-
-
-#include "score.hh"
-#include "paper-column.hh"
-#include "paper-def.hh"
-#include "side-position-interface.hh"
-#include "engraver.hh"
-#include "moment.hh"
-
-/**
-  Manage the staff symbol.
- */
-class Staff_symbol_engraver : public Engraver { 
-  Spanner *span_;
-public:
-  TRANSLATOR_DECLARATIONS(Staff_symbol_engraver);
-  
-protected:
-  virtual ~Staff_symbol_engraver ();
-  virtual void acknowledge_grob (Grob_info);
-  virtual void finalize ();
-  virtual void process_music ();
-};
-
-
-Staff_symbol_engraver::~Staff_symbol_engraver ()
-{
-  assert (!span_);
-}
-
-Staff_symbol_engraver::Staff_symbol_engraver ()
-{
-  span_ = 0;
-}
-
-void
-Staff_symbol_engraver::process_music ()
-{
-  if (!span_)
-    {
-      span_ = make_spanner ("StaffSymbol");
-  
-      span_->set_bound (LEFT, unsmob_grob (get_property ("currentCommandColumn")));
-
-      announce_grob(span_, SCM_EOL);
-    }
-}
-
-void
-Staff_symbol_engraver::finalize ()
-{
-  if (span_)
-    {
-      span_->set_bound (RIGHT,unsmob_grob (get_property ("currentCommandColumn")));
-      typeset_grob (span_);
-    }
-  span_ =0;
-}
-
-void
-Staff_symbol_engraver::acknowledge_grob (Grob_info s)
-{
-  s.grob_->set_grob_property ("staff-symbol", span_->self_scm ());
-
-  // remove this. probly not necessary?
-  s.grob_->add_dependency (span_); // UGH. UGH. UGH
-}
-
-
-
-
-ENTER_DESCRIPTION(Staff_symbol_engraver,
-/* descr */       "create the constellation of five (default) "
-"staff lines.",
-/* creats*/       "StaffSymbol",
-/* accepts */     "",
-/* acks  */      "grob-interface",
-/* reads */       "",
-/* write */       "");
diff --git a/lily/staff-symbol-referencer.cc b/lily/staff-symbol-referencer.cc
deleted file mode 100644
index cfb871d575..0000000000
--- a/lily/staff-symbol-referencer.cc
+++ /dev/null
@@ -1,180 +0,0 @@
-/*   
-  staff-symbol-referencer.cc -- implement Staff_symbol_referencer
-  
-  source file of the GNU LilyPond music typesetter
-  
-  (c) 1999--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
- */
-
-#include <math.h>
-
-#include "staff-symbol-referencer.hh"
-#include "staff-symbol.hh"
-#include "paper-def.hh"
-#include "libc-extension.hh" 
-
-
-int
-Staff_symbol_referencer::line_count (Grob*me) 
-{
-  Grob *st = get_staff_symbol (me);
-  return st  ?  Staff_symbol::line_count (st) : 0;
-}
-
-bool
-Staff_symbol_referencer::on_staffline (Grob*me)
-{
-  return on_staffline (me, (int) rint (get_position (me)));
-}
-
-bool
-Staff_symbol_referencer::on_staffline (Grob*me, int pos)
-{
-  int sz = line_count (me)-1;
-  return ((pos + sz) % 2) == 0;
-}
-
-Grob*
-Staff_symbol_referencer::get_staff_symbol (Grob*me) 
-{
-  SCM st = me->get_grob_property ("staff-symbol");
-  return unsmob_grob (st);
-}
-
-Real
-Staff_symbol_referencer::staff_space (Grob*me) 
-{
-  Grob * st = get_staff_symbol (me);
-  if (st)
-    return Staff_symbol::staff_space (st);
-
-  return 1.0;
-}
-
-Real
-Staff_symbol_referencer::line_thickness (Grob*me) 
-{
-  Grob * st = get_staff_symbol (me);
-  if (st)
-    return Staff_symbol::get_line_thickness (st);
-
-  return me->get_paper ()->get_realvar (ly_symbol2scm ("linethickness"));
-}
-
-Real
-Staff_symbol_referencer::get_position (Grob*me) 
-{
-  Real p =0.0;
-  Grob * st = get_staff_symbol (me);
-  Grob * c = st ? me->common_refpoint (st, Y_AXIS) : 0;
-  if (st && c)
-    {
-      Real y = me->relative_coordinate (c, Y_AXIS)
-	- st->relative_coordinate (c, Y_AXIS);
-
-      p += 2.0 * y / Staff_symbol::staff_space (st);
-      return p;
-    }
-
-  return robust_scm2double ( me->get_grob_property ("staff-position"), p);
-}
-
-
-LY_DEFINE(ly_grob_staff_position,
-	  "ly:grob-staff-position",
-	  1, 0,0, (SCM sg),
-	  "Return the Y-position of this grob relative to the staff.")
-{
-  Grob * g = unsmob_grob (sg);
-
-  SCM_ASSERT_TYPE (g, sg, SCM_ARG1, __FUNCTION__, "grob");
-  Real pos = Staff_symbol_referencer::get_position (g);
-
-  if (fabs (rint (pos) -pos) < 1e-6) // ugh.
-    return gh_int2scm ((int) my_round (pos));
-  else
-    return gh_double2scm (pos);
-}
-
-
-/*
-  should use offset callback!
- */
-MAKE_SCHEME_CALLBACK (Staff_symbol_referencer,callback,2);
-SCM
-Staff_symbol_referencer::callback (SCM element_smob, SCM)
-{
-  Grob *me = unsmob_grob (element_smob);
-
-  SCM pos = me->get_grob_property ("staff-position");
-  Real off =0.0;
-  if (gh_number_p (pos))
-    {
-      Real space = Staff_symbol_referencer::staff_space (me);
-      off = gh_scm2double (pos) * space/2.0;
-      me->set_grob_property ("staff-position", gh_int2scm (0));
-    }
-
-  return gh_double2scm (off);
-}
-
- /*
-  
-  This sets the position relative to the center of the staff symbol.
- 
-  The function is hairy, because it can be callled in two situations:
-
-  1.  There is no staff yet; we must set staff-position
-
-  2.  There is a staff, and perhaps someone even applied a
-  translate_axis (). Then we must compensate for the translation
-  
-  In either case, we set a callback to be sure that our new position
-  will be extracted from staff-position
-  
- */
-void
-Staff_symbol_referencer::set_position (Grob*me,Real p)
-{
-  Grob * st = get_staff_symbol (me);
-  if (st && me->common_refpoint (st, Y_AXIS))
-    {
-      Real oldpos = get_position (me);
-      me->set_grob_property ("staff-position", gh_double2scm (p - oldpos));
-    }
-  else
-    {
-      me->set_grob_property ("staff-position",
-			    gh_double2scm (p));
-
-    }
-
-  if (me->has_offset_callback_b (Staff_symbol_referencer::callback_proc, Y_AXIS))
-    return ; 
-
-  me->add_offset_callback (Staff_symbol_referencer::callback_proc, Y_AXIS);
-}
-
-/*
-  Half of the height, in staff space, i.e. 2.0 for a normal staff. 
-*/
-Real
-Staff_symbol_referencer::staff_radius (Grob*me)
-{
-  return (line_count (me) -1) / 2.0;
-}
-
-
-int
-compare_position (Grob *const  &a, Grob * const &b)
-{
-  return sign (Staff_symbol_referencer::get_position ((Grob*)a) - 
-    Staff_symbol_referencer::get_position ((Grob*)b));
-}
-
-ADD_INTERFACE (Staff_symbol_referencer,"staff-symbol-referencer-interface",
-  "Object whose Y position is meaning with reference to a staff "
-"symbol. Objects that have this interface should include "
-"Staff_symbol_referencer::callback in their Y-offset-callback. "
-,
-  "staff-position");
diff --git a/lily/staff-symbol.cc b/lily/staff-symbol.cc
deleted file mode 100644
index a8ef6c0d1b..0000000000
--- a/lily/staff-symbol.cc
+++ /dev/null
@@ -1,129 +0,0 @@
-/*
-  staff-symbol.cc -- implement Staff_symbol
-
-  source file of the GNU LilyPond music typesetter
-
-  (c) 1997--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-*/
-
-#include "lookup.hh"
-#include "dimensions.hh"
-#include "paper-def.hh"
-#include "molecule.hh"
-#include "warn.hh"
-#include "item.hh"
-#include "staff-symbol.hh"
-#include "staff-symbol-referencer.hh"
-#include "spanner.hh"
-
-
-
-MAKE_SCHEME_CALLBACK (Staff_symbol,print,1);
-
-SCM
-Staff_symbol::print (SCM smob)
-{
-  Grob *me = unsmob_grob (smob);
-  Spanner* sp = dynamic_cast<Spanner*> (me);
-  Grob * common
-    = sp->get_bound (LEFT)->common_refpoint (sp->get_bound (RIGHT), X_AXIS);
-  
-  Real width  = 0.0;
-
-  /*
-    For raggedright without ragged staffs, simply set width to the linewidth.
-
-    (ok -- lousy UI, since width is in staff spaces)
-
-    --hwn.
-   */
-  SCM width_scm = me->get_grob_property ("width");
-  if (gh_number_p (width_scm))
-    {
-
-      /*
-	don't multiply by Staff_symbol_referencer::staff_space (me),
-	since that would make aligning staff symbols of different sizes to
-	one right margin hell.
-      */      
-      width = gh_scm2double (width_scm);
-    }
-  else
-    {
-      width = sp->get_bound (RIGHT)->relative_coordinate (common , X_AXIS);
-    }
-
-  // respect indentation, if any
-  width -= sp->get_bound (LEFT)->relative_coordinate (common, X_AXIS);
-
-  if (width < 0)
-    {
-      warning (_f ("staff symbol: indentation yields beyond end of line"));
-      width = 0;
-    }
-
-  Real t = me->get_paper ()->get_realvar (ly_symbol2scm ("linethickness"));
-  t *= robust_scm2double ( me->get_grob_property("thickness"), 1.0);
-  
-  int l = Staff_symbol::line_count (me);
-  
-  Real height = (l-1) * staff_space (me) /2;
-  Molecule m;
-  for (int i=0; i < l; i++)
-    {
-      Molecule a =
-	Lookup::horizontal_line (Interval (0,width), t);
-
-      a.translate_axis (height - i * staff_space (me), Y_AXIS);
-      m.add_molecule (a);
-    }
-
-  return m.smobbed_copy ();
-}
-
-int
-Staff_symbol::get_steps (Grob*me) 
-{
-  return line_count (me) * 2;
-}
-
-int
-Staff_symbol::line_count (Grob*me) 
-{
-  SCM c = me->get_grob_property ("line-count");
-  if (gh_number_p (c))
-    return gh_scm2int (c);
-  else
-    return 0;
-}
-
-Real
-Staff_symbol::staff_space (Grob*me)
-{
-  return robust_scm2double ( me->get_grob_property ("staff-space"), 1.0);
-}
-
-Real
-Staff_symbol::get_line_thickness (Grob* me)
-{
-  Real lt =  me->get_paper ()->get_realvar (ly_symbol2scm ("linethickness"));
-
-  return robust_scm2double (me->get_grob_property ("thickness"), 1.0) * lt;
-}
-
-Real
-Staff_symbol::get_ledger_line_thickness (Grob * me)
-{
-  SCM lt_pair = me->get_grob_property ("ledger-line-thickness");
-  Offset z = robust_scm2offset (lt_pair, Offset (1.0, 0.1));
-  
-  return z[X_AXIS] * get_line_thickness(me) + z[Y_AXIS]* staff_space (me);
-}
-
-
-ADD_INTERFACE (Staff_symbol,"staff-symbol-interface",
-  "This spanner draws the lines of a staff.  The center (i.e. middle line "
-"or space) is position 0. The length of the symbol may be set by hand "
-"through the @code{width} property. ",
-	       
-  "ledger-line-thickness width staff-space thickness line-count");
diff --git a/lily/stanza-number-engraver.cc b/lily/stanza-number-engraver.cc
deleted file mode 100644
index f5d7257154..0000000000
--- a/lily/stanza-number-engraver.cc
+++ /dev/null
@@ -1,86 +0,0 @@
-/*   
-  lyric-number-engraver.cc --  implement Stanza_number_engraver
-  
-  source file of the GNU LilyPond music typesetter
-  
-  (c) 2000--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>, Glen Prideaux <glenprideaux@iname.com>
-
-*/
-
-#include "engraver.hh"
-#include "item.hh"
-#include "side-position-interface.hh"
-
-class Stanza_number_engraver : public Engraver
-{
-  Item *text_;
-
-  /*
-    This is naughty, since last_stanza_ may be GCd from under us.  But
-    since we don't look at the contents, we are/should be (knock on
-    wood) OK.
-   */
-  SCM last_stanza_;
-public:
-  TRANSLATOR_DECLARATIONS(Stanza_number_engraver);
-  virtual void process_music ();
-  virtual void stop_translation_timestep ();
-  virtual void acknowledge_grob (Grob_info);
-};
-
-
-/*
-  TODO: should make engraver that collects all the stanzas on a higher
-  level, and then groups them to the side. Stanza numbers should be
-  all aligned.
- */
-
-Stanza_number_engraver::Stanza_number_engraver ()
-{
-  text_ = 0;
-}
-
-void
-Stanza_number_engraver::process_music ()
-{
-  SCM stanza = get_property ("stanza");
-  
-  if (gh_string_p (stanza) && stanza != last_stanza_)
-    {
-      last_stanza_ = stanza;
-      
-      text_ = make_item ("StanzaNumber");
-      text_->set_grob_property ("text", stanza);
-      announce_grob (text_, SCM_EOL);
-    }
-}
-
-
-void
-Stanza_number_engraver::acknowledge_grob (Grob_info inf)
-{
-  if (text_
-      && inf.grob_->internal_has_interface (ly_symbol2scm ("lyric-syllable-interface")))
-    {
-      Side_position_interface::add_support (text_, inf.grob_);
-    }
-}
-
-void
-Stanza_number_engraver::stop_translation_timestep ()
-{
-  if (text_)
-    {
-      typeset_grob (text_);
-      text_ = 0;
-    }
-}
-
-
-ENTER_DESCRIPTION(Stanza_number_engraver,
-/* descr */       "",
-/* creats*/       "StanzaNumber",
-/* accepts */     "",
-/* acks  */      "lyric-syllable-interface",
-/* reads */       "stanza",
-/* write */       "");
diff --git a/lily/stem-engraver.cc b/lily/stem-engraver.cc
deleted file mode 100644
index f8d19adcbe..0000000000
--- a/lily/stem-engraver.cc
+++ /dev/null
@@ -1,185 +0,0 @@
-/*
-  stem-grav.cc -- implement Stem_engraver
-
-  source file of the GNU LilyPond music typesetter
-
-  (c) 1997--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-*/
-
-#include "staff-symbol-referencer.hh"
-#include "rhythmic-head.hh"
-#include "stem.hh"
-#include "event.hh"
-#include "misc.hh"
-#include "stem-tremolo.hh"
-#include "item.hh"
-#include "translator-group.hh"
-#include "engraver.hh"
-
-
-
-/**
-  Make stems upon receiving noteheads.
- */
-class Stem_engraver : public Engraver
-{
-  TRANSLATOR_DECLARATIONS(Stem_engraver);
-protected:
-  virtual void acknowledge_grob (Grob_info);
-  virtual void stop_translation_timestep ();
-  virtual bool try_music (Music*);
-  
-private:
-  Grob  *stem_;
-  Grob *tremolo_;
-  Music *rhythmic_ev_;
-  Music* tremolo_ev_;
-};
-
-Stem_engraver::Stem_engraver ()
-{
-  tremolo_ev_ = 0;
-  stem_ = 0;
-  tremolo_ = 0;
-  rhythmic_ev_ =0;
-}
-
-
-void
-Stem_engraver::acknowledge_grob (Grob_info i)
-{
-  Grob* h = i.grob_;
-  if (Rhythmic_head::has_interface (h))
-    {
-      if (Rhythmic_head::get_stem (h))
-	return;
-
-      /* Reverted to the old method so chord tremolos work again. /MB 
-      */
-      int duration_log = 0;
-
-      Music * m = i.music_cause ();
-      if (m->is_mus_type ("rhythmic-event"))
-	duration_log = unsmob_duration (m->get_mus_property ("duration"))-> duration_log (); 
-      
-      if (!stem_) 
-	{
-	  stem_ = make_item ("Stem");
-
-	  stem_->set_grob_property ("duration-log", gh_int2scm (duration_log));
-
-	  if (tremolo_ev_)
-	    {
-	      /*
-		Stem tremolo is never applied to a note by default,
-		is must me evuested.  But there is a default for the
-		tremolo value:
-
-		   c4:8 c c:
-
-		the first and last (quarter) note bothe get one tremolo flag.
-	       */
-	      int requested_type = gh_scm2int (tremolo_ev_->get_mus_property ("tremolo-type"));
-	      SCM f = get_property ("tremoloFlags");
-	      if (!requested_type)
-		if (gh_number_p (f))
-		  requested_type = gh_scm2int (f);
-		else
-		  requested_type = 8; 
-	      else
-		daddy_trans_->set_property ("tremoloFlags", gh_int2scm (requested_type));
-
-	      int tremolo_flags = intlog2 (requested_type) - 2
-		- (duration_log > 2 ? duration_log - 2 : 0);
-	      if (tremolo_flags <= 0)
-		{
-		  tremolo_ev_->origin()->warning (_("tremolo duration is too long"));
-		  tremolo_flags = 0;
-		}
-
-	      if (tremolo_flags)
-		{
-		  tremolo_ = make_item ("StemTremolo");
-		  announce_grob(tremolo_, tremolo_ev_->self_scm());
-
-		  /*
-		    The number of tremolo flags is the number of flags of
-		    the tremolo-type minus the number of flags of the note
-		    itself.
-		   */
-		  tremolo_->set_grob_property ("flag-count",
-					       gh_int2scm (tremolo_flags));
-		  tremolo_->set_parent (stem_, X_AXIS);
-		  stem_->set_grob_property ("tremolo-flag", tremolo_->self_scm ());
-		}
-	    }
-
-	  /*
-	    We announce the cause of the head as cause of the stem.
-	    The stem needs a rhythmic structure to fit it into a beam.  */
-	  announce_grob(stem_, i.music_cause ()->self_scm());
-	}
-
-      if (Stem::duration_log (stem_) != duration_log)
-	{
-	  i.music_cause ()->origin ()->warning (_f ("Adding note head to incompatible stem (type = %d)", 1 <<  Stem::duration_log (stem_))
-						+ _f ("Don't you want polyphonic voices instead?")
-						);
-	}
-
-      Stem::add_head (stem_,h);
-    }
-}
-
-void
-Stem_engraver::stop_translation_timestep ()
-{
-  if (tremolo_)
-    {
-      Stem_tremolo::set_stem (tremolo_, stem_);
-      typeset_grob (tremolo_);
-      tremolo_ = 0;
-    }
-
-  if (stem_)
-    {
-      SCM prop = get_property ("stemLeftBeamCount");
-      if (gh_number_p (prop))
-	{
-	  Stem::set_beaming (stem_,gh_scm2int (prop),LEFT);
-	  daddy_trans_->unset_property (ly_symbol2scm ("stemLeftBeamCount"));
-	}
-      prop = get_property ("stemRightBeamCount");
-      if (gh_number_p (prop))
-	{
-	  Stem::set_beaming (stem_,gh_scm2int (prop), RIGHT);
-	  daddy_trans_->unset_property (ly_symbol2scm ("stemRightBeamCount"));
-	}
-
-      typeset_grob (stem_);
-      stem_ = 0;
-    }
-
-
-  tremolo_ev_ = 0;
-}
-
-bool
-Stem_engraver::try_music (Music* r)
-{
-  if (r->is_mus_type ("tremolo-event"))
-    {
-      tremolo_ev_ = r;
-      return true;
-    }
-  return false;
-}
-
-ENTER_DESCRIPTION(Stem_engraver,
-/* descr */       "Create stems and single-stem tremolos.  It also works together with "
-"the beam engraver for overriding beaming.",
-/* creats*/       "Stem StemTremolo",
-/* accepts */     "tremolo-event",
-/* acks  */      "rhythmic-head-interface",
-/* reads */       "tremoloFlags stemLeftBeamCount stemRightBeamCount",
-/* write */       "");
diff --git a/lily/stem-tremolo.cc b/lily/stem-tremolo.cc
deleted file mode 100644
index c3a8b54c52..0000000000
--- a/lily/stem-tremolo.cc
+++ /dev/null
@@ -1,203 +0,0 @@
-/*   
-  stem-tremolo.cc --  implement Stem_tremolo
-  
-  source file of the GNU LilyPond music typesetter
-  
-  (c) 1997--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-  
- */
-
-#include "stem-tremolo.hh"
-#include "warn.hh"
-#include "beam.hh"
-#include "paper-def.hh"
-#include "lookup.hh"
-#include "stem.hh"
-#include "item.hh"
-#include "staff-symbol-referencer.hh"
-#include "directional-element-interface.hh"
-
-/*
-  TODO:
-    lengthen stem if necessary
- */
-MAKE_SCHEME_CALLBACK (Stem_tremolo,dim_callback,2);
-
-/*
-  todo: init with cons. 
- */
-SCM
-Stem_tremolo::dim_callback (SCM e, SCM)
-{
-  Grob * se = unsmob_grob (e);
-  
-  Real space = Staff_symbol_referencer::staff_space (se);
-  return ly_interval2scm (Interval (-space, space));
-}
-
-/*
-  ugh ?  --from Slur
- */
-MAKE_SCHEME_CALLBACK (Stem_tremolo, height, 2);
-SCM
-Stem_tremolo::height (SCM smob, SCM ax)
-{
-  Axis a = (Axis)gh_scm2int (ax);
-  Grob * me = unsmob_grob (smob);
-  assert (a == Y_AXIS);
-
-  SCM mol = me->get_uncached_molecule ();
-
-  if (Molecule *m = unsmob_molecule (mol))
-    return ly_interval2scm (m->extent (a));
-  else
-    return ly_interval2scm (Interval());
-}
-
-
-Molecule
-Stem_tremolo::raw_molecule (Grob *me)
-{
-  Grob *stem = unsmob_grob (me->get_grob_property ("stem"));
-  Grob *beam = Stem::get_beam (stem);
-  
-  Real dydx;
-  if (beam)
-    {
-      Real dy = 0;
-      SCM s = beam->get_grob_property ("positions");
-      if (is_number_pair (s))
-	{
-	  dy = -gh_scm2double (gh_car (s)) +gh_scm2double (gh_cdr (s));
-	}
-      
-      Real dx = Beam::last_visible_stem (beam)->relative_coordinate (0, X_AXIS)
-	- Beam::first_visible_stem (beam)->relative_coordinate (0, X_AXIS);
-      dydx = dx ? dy/dx : 0;
-    }
-  else
-    // urg
-    dydx = 0.25;
-
-  Real ss = Staff_symbol_referencer::staff_space (me);
-  Real thick = robust_scm2double (me->get_grob_property ("beam-thickness"),1);
-  Real width = robust_scm2double (me->get_grob_property ("beam-width"),1);
-  Real blot = me->get_paper ()->get_realvar (ly_symbol2scm ("blotdiameter"));
-
-  width *= ss;
-  thick *= ss;
-  
-  Molecule a (Lookup::beam (dydx, width, thick, blot));
-  a.translate (Offset (-width/2, width / 2 * dydx));
-  
-  int tremolo_flags = 0;
-  SCM s = me->get_grob_property ("flag-count");
-  if (gh_number_p (s))
-    tremolo_flags = gh_scm2int (s);
-
-  if (!tremolo_flags)
-    {
-      programming_error ("No tremolo flags?");
-
-      me->suicide();
-      return Molecule ();
-    }
-
-  /*
-    Who the fuck is 0.81 ?
-
-    --hwn.
-   */
-  Real beam_translation = beam ? Beam::get_beam_translation (beam) : 0.81;
-
-  Molecule mol; 
-  for (int i = 0; i < tremolo_flags; i++)
-    {
-      Molecule b (a);
-      b.translate_axis (beam_translation * i, Y_AXIS);
-      mol.add_molecule (b);
-    }
-  return mol;
-}
-
-
-MAKE_SCHEME_CALLBACK (Stem_tremolo,print,1);
-SCM
-Stem_tremolo::print (SCM grob) 
-{
-  Grob *me = unsmob_grob (grob);
-  Grob *stem = unsmob_grob (me->get_grob_property ("stem"));
-  Grob *beam = Stem::get_beam (stem);
-  Direction stemdir = Stem::get_direction (stem);
-  Real beam_translation
-    = (beam && beam->live ())
-    ? Beam::get_beam_translation (beam)
-    : 0.81;
-
-  Molecule mol = raw_molecule (me);
-  Interval mol_ext = mol.extent (Y_AXIS);
-  Real ss = Staff_symbol_referencer::staff_space (me);
-
-  // ugh, rather calc from Stem_tremolo_req
-  int beam_count = (beam) ? (Stem::beam_multiplicity (stem).length () + 1): 0;
-
-  /*
-    TODO.
-   */
-
-
-  Real beamthickness = 0.0;
-  SCM sbt = (beam) ? beam->get_grob_property ("thickness") : SCM_EOL ;
-  if (gh_number_p (sbt))
-    {
-      beamthickness = gh_scm2double (sbt) * ss;
-    }
-
-  Real end_y
-    = Stem::stem_end_position (stem) *ss/2 
-    - stemdir * (beam_count * beamthickness
-		 + ((beam_count -1) >? 0) * beam_translation);
-
-  /*
-    the 0.33 ss is to compensate for the size of the note head
-   */
-  Real chord_start_y = Stem::chord_start_y (stem) +
-    0.33 * ss * stemdir;
-
-  Real padding = beam_translation;
-
-  /*
-    if there is a flag, just above/below the notehead.
-    if there is not enough space, center on remaining space,
-    else one beamspace away from stem end.
-   */
-  if (!beam && Stem::duration_log (stem) >= 3)
-    {
-      mol.align_to (Y_AXIS, -stemdir);
-      mol.translate_axis (chord_start_y + .5 * stemdir, Y_AXIS);
-    }
-  else if (stemdir * (end_y - chord_start_y) - 2*padding - mol_ext.length ()  < 0.0)
-    {
-      mol.translate_axis (0.5 * (end_y + chord_start_y)  - mol_ext.center (),Y_AXIS);
-    }
-  else
-    {
-      mol.translate_axis (end_y - stemdir * beam_translation
-			  -mol_ext [stemdir]
-			  , Y_AXIS);
-    }
-  
-  return mol.smobbed_copy ();
-}
-
-
-void
-Stem_tremolo::set_stem (Grob*me,Grob *s)
-{
-  me->set_grob_property ("stem", s->self_scm ());
-}
-
-
-ADD_INTERFACE (Stem_tremolo,"stem-tremolo-interface",
-  "",
-  "stem beam-width beam-thickness flag-count");
diff --git a/lily/stem.cc b/lily/stem.cc
deleted file mode 100644
index a5d0c00e73..0000000000
--- a/lily/stem.cc
+++ /dev/null
@@ -1,997 +0,0 @@
-/*
-  stem.cc -- implement Stem
-
-  source file of the GNU LilyPond music typesetter
-
-  (c) 1996--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-    Jan Nieuwenhuizen <janneke@gnu.org>
-
-  TODO: This is way too hairy
-
-  TODO: fix naming.
-
-  Stem-end, chord-start, etc. is all confusing naming.
-*/
-
-#include <math.h>		// rint
-
-#include "lookup.hh"
-#include "directional-element-interface.hh"
-#include "note-head.hh"
-#include "stem.hh"
-#include "warn.hh"
-#include "paper-def.hh"
-#include "rhythmic-head.hh"
-#include "font-interface.hh"
-#include "molecule.hh"
-#include "paper-column.hh"
-#include "misc.hh"
-#include "beam.hh"
-#include "rest.hh"
-#include "group-interface.hh"
-#include "staff-symbol-referencer.hh"
-#include "spanner.hh"
-#include "side-position-interface.hh"
-#include "dot-column.hh"
-#include "stem-tremolo.hh"
-
-void
-Stem::set_beaming (Grob*me, int beam_count,  Direction d)
-{
-  SCM pair = me->get_grob_property ("beaming");
-  
-  if (!gh_pair_p (pair))
-    {
-      pair = gh_cons (SCM_EOL, SCM_EOL);
-      me->set_grob_property ("beaming", pair);
-    }
-
-  SCM l = index_get_cell (pair, d);
-  for( int i = 0; i<  beam_count; i++)
-    {
-      l = gh_cons (gh_int2scm (i), l);
-    }
-  index_set_cell (pair, d, l);		
-}
-
-
-Interval
-Stem::head_positions (Grob*me) 
-{
-  if (!head_count (me))
-    {
-      Interval iv;
-      return iv;
-    }
-
-  Drul_array<Grob*> e (extremal_heads (me));
-
-  return Interval (Staff_symbol_referencer::get_position (e[DOWN]),
-		   Staff_symbol_referencer::get_position (e[UP]));
-}
-
-
-Real
-Stem::chord_start_y (Grob*me) 
-{
-  return head_positions (me)[get_direction (me)]
-    * Staff_symbol_referencer::staff_space (me)/2.0;
-}
-
-Real
-Stem::stem_end_position (Grob*me) 
-{
-  SCM p =me->get_grob_property ("stem-end-position");
-  Real pos;
-  if (!gh_number_p (p))
-    {
-      pos = get_default_stem_end_position (me);
-      me->set_grob_property ("stem-end-position", gh_double2scm (pos));
-    }
-  else
-    pos = gh_scm2double (p);
-
-  return pos;
-}
-
-Direction
-Stem::get_direction (Grob*me)
-{
-  Direction d = get_grob_direction (me);
-
-  if (!d)
-    {
-       d = get_default_dir (me);
-       // urg, AAARGH!
-       set_grob_direction (me, d);
-    }
-  return d ;
-}
-
-
-void
-Stem::set_stemend (Grob*me, Real se)
-{
-  // todo: margins
-  Direction d= get_direction (me);
-  
-  if (d && d * head_positions (me)[get_direction (me)] >= se*d)
-    me->warning (_ ("Weird stem size; check for narrow beams"));
-
-  me->set_grob_property ("stem-end-position", gh_double2scm (se));
-}
-
-
-/*
-  Note head that determines hshift for upstems
-
-  WARNING: triggers direction
-*/ 
-Grob*
-Stem::support_head (Grob*me)
-{
-  if (head_count (me) == 1)
-    {
-      /*
-	UGH.
-       */
-      
-      return unsmob_grob (ly_car (me->get_grob_property ("note-heads")));
-    }
-  else
-    return first_head (me);
-}
-
-
-int
-Stem::head_count (Grob*me)
-{
-  return  Pointer_group_interface::count (me, "note-heads");
-}
-
-/*
-  The note head which forms one end of the stem.  
-
-  WARNING: triggers direction
-*/
-Grob*
-Stem::first_head (Grob*me)
-{
-  Direction d = get_direction (me);
-  if (!d)
-    return 0;
-  return extremal_heads (me)[-d];
-}
-
-/*
-  The note head opposite to the first head.
- */
-Grob*
-Stem::last_head (Grob*me)
-{
-  Direction d = get_direction (me);
-  if (!d)
-    return 0;
-  return extremal_heads (me)[d];
-}
-
-/*
-  START is part where stem reaches `last' head. 
- */
-Drul_array<Grob*>
-Stem::extremal_heads (Grob*me) 
-{
-  const int inf = 1000000;
-  Drul_array<int> extpos;
-  extpos[DOWN] = inf;
-  extpos[UP] = -inf;  
-  
-  Drul_array<Grob *> exthead;
-  exthead[LEFT] = exthead[RIGHT] =0;
-  
-  for (SCM s = me->get_grob_property ("note-heads"); gh_pair_p (s); s = ly_cdr (s))
-    {
-      Grob * n = unsmob_grob (ly_car (s));
-
-      
-      int p = int (Staff_symbol_referencer::get_position (n));
-
-      Direction d = LEFT;
-      do {
-      if (d* p > d* extpos[d])
-	{
-	  exthead[d] = n;
-	  extpos[d] = p;
-	}
-      } while (flip (&d) != DOWN);
-    }
-
-  return exthead;
-}
-
-static int
-icmp (int const &a, int const &b)
-{
-  return a-b;
-}
-
-/*
-  The positions, in ascending order.
- */
-Array<int>
-Stem::note_head_positions (Grob *me)
-{
-  Array<int> ps ;
-  for (SCM s = me->get_grob_property ("note-heads"); gh_pair_p (s); s = ly_cdr (s))
-    {
-      Grob * n = unsmob_grob (ly_car (s));
-      int p = int (Staff_symbol_referencer::get_position (n));
-
-      ps.push (p);
-    }
-  
-  ps.sort (icmp);
-  return ps; 
-}
-
-
-void
-Stem::add_head (Grob*me, Grob *n)
-{
-  n->set_grob_property ("stem", me->self_scm ());
-  n->add_dependency (me);
-
-  /*
-    TODO: why not store Rest pointers? 
-  */
-  if (Note_head::has_interface (n))
-    {
-      Pointer_group_interface::add_grob (me, ly_symbol2scm ("note-heads"), n);
-    }
-}
-
-bool
-Stem::invisible_b (Grob*me)
-{
-  return ! (head_count (me)
-	    && gh_scm2int (me->get_grob_property ("duration-log")) >= 1);
-}
-
-Direction
-Stem::get_default_dir (Grob*me) 
-{
-  int staff_center = 0;
-  Interval hp = head_positions (me);
-  if (hp.is_empty ())
-    {
-      return CENTER;
-    }
-  
-  int udistance = (int) (UP * hp[UP] - staff_center);
-  int ddistance = (int) (DOWN* hp[DOWN] - staff_center);  
-  
-  if (sign (ddistance - udistance))
-    return Direction (sign (ddistance -udistance));
-
-  return to_dir (me->get_grob_property ("neutral-direction"));
-}
-
-Real
-Stem::get_default_stem_end_position (Grob*me) 
-{
-  Real ss = Staff_symbol_referencer::staff_space (me); 
-
-  int durlog = duration_log (me);
-    
-  SCM s;
-  Array<Real> a;
-
-  
-  Real length = 7;		// WARNING: IN HALF SPACES
-  SCM scm_len = me->get_grob_property ("length");
-  if (gh_number_p (scm_len))
-    {
-      length = gh_scm2double (scm_len);
-    }
-  else
-    {
-      s = me->get_grob_property ("lengths");
-      if (gh_pair_p (s))
-	{
-	  length = 2* gh_scm2double (robust_list_ref (durlog -2, s));
-	}
-    }
-
-
-
-  /* URGURGURG
-     'set-default-stemlen' sets direction too
-   */
-  Direction dir = get_direction (me);
-  if (!dir)
-    {
-      dir = get_default_dir (me);
-      set_grob_direction (me, dir);
-    }
-
-
-  /* stems in unnatural (forced) direction should be shortened, 
-    according to [Roush & Gourlay] */
-  if (!chord_start_y (me)
-      || (get_direction (me) != get_default_dir (me)))
-    {
-      
-  
-      SCM sshorten = me->get_grob_property ("stem-shorten");
-      SCM scm_shorten = gh_pair_p (sshorten) ?
-	robust_list_ref ((duration_log (me) - 2) >? 0, sshorten): SCM_EOL;
-      Real shorten = 2* robust_scm2double (scm_shorten,0);
-      
-  
-      /* On boundary: shorten only half */
-      if (abs (head_positions (me)[get_direction (me)]) <= 1)
-	shorten *= 0.5;
-  
-      length -= shorten;
-    }
-
-  /*
-    Tremolo stuff: 
-  */
-  Grob * trem = unsmob_grob (me->get_grob_property ("tremolo-flag"));
-  if (trem &&  !unsmob_grob (me->get_grob_property ("beam")))
-    {
-      /*
-	Crude hack: add extra space if tremolo flag is there.
-
-	We can't do this for the beam, since we get into a loop
-	(Stem_tremolo::raw_molecule() looks at the beam.)
-	
-	 --hwn 
-      */
-      
-      Real minlen =
-	1.0 + 2 * Stem_tremolo::raw_molecule (trem).extent (Y_AXIS).length  () / ss;
-      
-      if (durlog >= 3)
-	{
-	  Interval flag_ext = flag (me).extent (Y_AXIS) ;
-	  if (!flag_ext.is_empty ())
-	    minlen += 2 * flag_ext.length () / ss ;
-
-	  /*
-	    The clash is smaller for down stems (since the tremolo is
-	    angled up.)
-	   */
-	  if (dir == DOWN)
-	    minlen -= 1.0;
-	}
-      
-      length = length >? (minlen + 1.0);
-    }
-   
-  Interval hp = head_positions (me);  
-  Real st = hp[dir] + dir * length;
-
-  /*
-    TODO: change name  to extend-stems to staff/center/'()
-  */
-  bool no_extend_b = to_boolean (me->get_grob_property ("no-stem-extend"));
-  if (!no_extend_b && dir * st < 0) // junkme?
-    st = 0.0;
-
-  /*
-    Make a little room if we have a upflag and there is a dot.
-    previous approach was to lengthen the stem. This is not
-    good typesetting practice. 
-    
-  */
-  if (!get_beam (me) && dir == UP
-      && durlog > 2)
-    {
-      Grob * closest_to_flag = extremal_heads (me)[dir];
-      Grob * dots = closest_to_flag
-	? Rhythmic_head::get_dots (closest_to_flag ) : 0;
-
-      if (dots)
-	{
-	  Real dp = Staff_symbol_referencer::get_position (dots);
-	  Real flagy =  flag (me).extent (Y_AXIS)[-dir] * 2
-	    / ss;
-
-	  /*
-	    Very gory: add myself to the X-support of the parent,
-	    which should be a dot-column.
-	   */
-	  if (dir * (st + flagy -  dp) < 0.5)
-	    {
-	      Grob *par = dots->get_parent (X_AXIS);
-
-	      if (Dot_column::has_interface (par))
-		{
-		  Side_position_interface::add_support (par, me);
-
-		  /*
-		    TODO: apply some better logic here. The flag is
-		    curved inwards, so this will typically be too
-		    much.
-		  */
-		}
-	    }
-	}
-    }
-
-
-  return st;
-}
-
-
-
-/*
-  
-  the log of the duration (Number of hooks on the flag minus two)
- */
-int
-Stem::duration_log (Grob*me) 
-{
-  SCM s = me->get_grob_property ("duration-log");
-  return (gh_number_p (s)) ? gh_scm2int (s) : 2;
-}
-
-void
-Stem::position_noteheads (Grob*me)
-{
-  if (!head_count (me))
-    return;
-  
-  Link_array<Grob> heads =
-    Pointer_group_interface__extract_grobs (me, (Grob*)0, "note-heads");
-
-  heads.sort (compare_position);
-  Direction dir =get_direction (me);
-  
-  if (dir < 0)
-    heads.reverse ();
-
-
-  Real thick = thickness (me);
-      
-  Grob *hed = support_head (me);
-  Real w = Note_head::head_extent (hed,X_AXIS)[dir];
-  for (int i=0; i < heads.size (); i++)
-    {
-      heads[i]->translate_axis (w - Note_head::head_extent (heads[i],X_AXIS)[dir],
-				X_AXIS);
-    }
-  
-  bool parity= true;
-  Real lastpos = Real (Staff_symbol_referencer::get_position (heads[0]));
-  for (int i=1; i < heads.size (); i ++)
-    {
-      Real p = Staff_symbol_referencer::get_position (heads[i]);
-      Real dy =fabs (lastpos- p);
-
-      /*
-       dy should always be 0.5, 0.0, 1.0, but provide safety margin
-       for rounding errors.
-      */
-      if (dy < 1.1)		
-	{
-	  if (parity)
-	    {
-	      Real l = Note_head::head_extent (heads[i], X_AXIS).length ();
-
-	      Direction d = get_direction (me);
-	      /*
-		Reversed head should be shifted l-thickness, but this
-		looks too crowded, so we only shift l-0.5*thickness.
-
-		This leads to assymetry: Normal heads overlap the
-		stem 100% whereas reversed heads only overlaps the
-		stem 50%
-
-	      */
-
-	      Real reverse_overlap =0.5;
-	      heads[i]->translate_axis ((l-thick*reverse_overlap) * d, X_AXIS);
-
-	      if (invisible_b(me))
-		heads[i]->translate_axis (-thick*(2 - reverse_overlap) * d , X_AXIS);
-
-	      
-	     /* TODO:
-		 
-	      For some cases we should kern some more: when the
-	      distance between the next or prev note is too large, we'd 
-	      get large white gaps, eg.
-	      
-               |
-              X|
-	       |X  <- kern this.
-	       |
-	      X
-	      
-	      */
-	    }
-	  parity = !parity;
-	}
-      else
-	parity = true;
-      
-      lastpos = int (p);
-    }
-}
-
-MAKE_SCHEME_CALLBACK (Stem,before_line_breaking,1);
-SCM
-Stem::before_line_breaking (SCM smob)
-{
-  Grob*me = unsmob_grob (smob);
-
-
-  /*
-    Do the calculations for visible stems, but also for invisible stems
-    with note heads (i.e. half notes.)
-   */
-  if (head_count (me))
-    {
-      stem_end_position (me);	// ugh. Trigger direction calc.
-      position_noteheads (me);
-    }
-  else
-    {
-      me->set_grob_property ("print-function", SCM_EOL);
-    }
-  
-  return SCM_UNSPECIFIED;
-}
-
-/*
-  ugh.
-  When in a beam with tuplet brackets, brew_mol is called early,
-  caching a wrong value.
- */
-MAKE_SCHEME_CALLBACK (Stem, height, 2);
-SCM
-Stem::height (SCM smob, SCM ax)
-{
-  Axis a = (Axis)gh_scm2int (ax);
-  Grob * me = unsmob_grob (smob);
-  assert (a == Y_AXIS);
-
-  SCM mol = me->get_uncached_molecule ();
-  Interval iv;
-  if (mol != SCM_EOL)
-    iv = unsmob_molecule (mol)->extent (a);
-  if (Grob *b =get_beam (me))
-    {
-      Direction d = get_direction (me);
-      iv[d] += d * Beam::get_thickness (b) /2.0 ;
-    }
-
-  return ly_interval2scm (iv);
-}
-
-
-Molecule
-Stem::flag (Grob*me)
-{
-  /* TODO: maybe property stroke-style should take different values,
-     e.g. "" (i.e. no stroke), "single" and "double" (currently, it's
-     '() or "grace").  */
-  String flag_style;
-  
-  SCM flag_style_scm = me->get_grob_property ("flag-style");
-  if (gh_symbol_p (flag_style_scm))
-    {
-      flag_style = ly_symbol2string (flag_style_scm);
-    }
-
-  if (flag_style == "no-flag")
-    {
-      return Molecule ();
-    }
-
-  bool adjust = to_boolean (me->get_grob_property ("adjust-if-on-staffline"));
-
-  String staffline_offs;
-  if (String::compare (flag_style, "mensural") == 0)
-    /* Mensural notation: For notes on staff lines, use different
-       flags than for notes between staff lines.  The idea is that
-       flags are always vertically aligned with the staff lines,
-       regardless if the note head is on a staff line or between two
-       staff lines.  In other words, the inner end of a flag always
-       touches a staff line.
-    */
-    {
-      if (adjust)
-        {
-	  /* Urrgh!  We have to detect wether this stem ends on a staff
-	     line or between two staff lines.  But we can not call
-	     stem_end_position(me) or get_default_stem_end_position(me),
-	     since this encounters the flag and hence results in an
-	     infinite recursion.  However, in pure mensural notation,
-	     there are no multiple note heads attached to a single stem,
-	     neither is there usually need for using the stem_shorten
-	     property (except for 32th and 64th notes, but that is not a
-	     problem since the stem length in this case is augmented by
-	     an integral multiple of staff_space).  Hence, it should be
-	     sufficient to just take the first note head, assume it's
-	     the only one, look if it's on a staff line, and select the
-	     flag's shape accordingly.  In the worst case, the shape
-	     looks slightly misplaced, but that will usually be the
-	     programmer's fault (e.g. when trying to attach multiple
-	     note heads to a single stem in mensural notation).
-	  */
-
-	  /*
-	    perhaps the detection whether this correction is needed should
-	    happen in a different place  to avoid the recursion.
-	    
-	    --hwn.
-	  */
-	  int p = (int)rint (Staff_symbol_referencer::get_position (first_head (me)));
-	  staffline_offs = Staff_symbol_referencer::on_staffline (me, p) ?
-	    "1" : "0";
-	}
-      else
-        {
-	  staffline_offs = "2";
-	}
-    }
-  else
-    {
-      staffline_offs = "";
-    }
-
-  char dir = (get_direction (me) == UP) ? 'u' : 'd';
-  String font_char =
-    flag_style + to_string (dir) + staffline_offs + to_string (duration_log (me));
-  Font_metric *fm = Font_interface::get_default_font (me);
-  Molecule flag = fm->find_by_name ("flags-" + font_char);
-  if (flag.is_empty ())
-    {
-      me->warning (_f ("flag `%s' not found", font_char));
-    }
-
-  SCM stroke_style_scm = me->get_grob_property ("stroke-style");
-  if (gh_string_p (stroke_style_scm))
-    {
-      String stroke_style = ly_scm2string (stroke_style_scm);
-      if (!stroke_style.is_empty ())
-	{
-	  String font_char = to_string (dir) + stroke_style;
-	  Molecule stroke = fm->find_by_name ("flags-" + font_char);
-	  if (stroke.is_empty ())
-	    {
-	      me->warning (_f ("flag stroke `%s' not found", font_char));
-	    }
-	  else
-	    {
-	      flag.add_molecule (stroke);
-	    }
-	}
-    }
-
-  return flag;
-}
-
-MAKE_SCHEME_CALLBACK (Stem,dim_callback,2);
-SCM
-Stem::dim_callback (SCM e, SCM ax)
-{
-  Axis a = (Axis) gh_scm2int (ax);
-  assert (a == X_AXIS);
-  Grob *me = unsmob_grob (e);
-  Interval r (0, 0);
-  if (unsmob_grob (me->get_grob_property ("beam")) || abs (duration_log (me)) <= 2)
-    ;	// TODO!
-  else
-    {
-      r = flag (me).extent (X_AXIS)
-	+ thickness (me)/2;
-    }
-  return ly_interval2scm (r);
-}
- 
-Real
-Stem::thickness (Grob* me)
-{
-  return gh_scm2double (me->get_grob_property ("thickness"))
-    * Staff_symbol_referencer::line_thickness (me);
-}
-
-MAKE_SCHEME_CALLBACK (Stem,print,1);
-
-SCM
-Stem::print (SCM smob) 
-{
-  Grob*me = unsmob_grob (smob);
-  Molecule mol;
-  Direction d = get_direction (me);
-     
-  /*
-    TODO: make the stem start a direction ?
-
-    This is required to avoid stems passing in tablature chords...
-  */
-  Grob *lh = to_boolean (me->get_grob_property ("avoid-note-head")) 
-    ? last_head (me) :  lh = first_head (me);
-
-  if (!lh)
-    return SCM_EOL;
-
-  if (invisible_b (me))
-    return SCM_EOL;
-  
-  Real y1 = Staff_symbol_referencer::get_position (lh);
-  Real y2 = stem_end_position (me);
-  
-  Interval stem_y (y1 <? y2,y2 >? y1);
- 
-
-  // dy?
-  Real dy = Staff_symbol_referencer::staff_space (me) * 0.5;
-
-  if (Grob *hed = support_head (me))
-    {
-      /*
-	must not take ledgers into account.
-       */
-      Interval head_height = Note_head::head_extent (hed,Y_AXIS);
-      Real y_attach = Note_head::stem_attachment_coordinate (hed, Y_AXIS);
-
-      y_attach = head_height.linear_combination (y_attach);
-      stem_y[Direction (-d)] += d * y_attach/dy;
-    }
-
-  
-  // URG
-  Real stem_width = thickness (me);
-  Real blot = 
-	me->get_paper ()->get_realvar (ly_symbol2scm ("blotdiameter"));
-  
-  Box b = Box (Interval (-stem_width/2, stem_width/2),
-	       Interval (stem_y[DOWN]*dy, stem_y[UP]*dy));
-
-  Molecule ss = Lookup::round_filled_box (b, blot);
-  mol.add_molecule (ss);
-
-  if (!get_beam (me) && abs (duration_log (me)) > 2)
-    {
-      Molecule fl = flag (me);
-      fl.translate_axis (stem_y[d]*dy - d * blot/2, Y_AXIS);
-      fl.translate_axis (stem_width/2, X_AXIS);
-      mol.add_molecule (fl);
-    }
-
-  return mol.smobbed_copy ();
-}
-
-/*
-  move the stem to right of the notehead if it is up.
- */
-MAKE_SCHEME_CALLBACK (Stem,off_callback,2);
-SCM
-Stem::off_callback (SCM element_smob, SCM)
-{
-  Grob *me = unsmob_grob (element_smob);
-  
-  Real r=0;
-
-  if (head_count (me) == 0)
-    {
-      return gh_double2scm (0.0);
-    }
-  
-  if (Grob * f = first_head (me))
-    {
-      Interval head_wid = Note_head::head_extent(f, X_AXIS);
-      
-      Real attach =0.0;
-
-      if (invisible_b (me))
-	{
-	  attach = 0.0;
-	}
-      else
-	attach = Note_head::stem_attachment_coordinate(f, X_AXIS);
-
-      Direction d = get_direction (me);
-
-      Real real_attach = head_wid.linear_combination (d * attach);
-
-      r = real_attach;
-
-      /*
-	If not centered: correct for stem thickness.
-       */
-      if (attach)
-	{
-	  Real rule_thick
-	    = thickness (me);
-	  
-	  r += - d * rule_thick * 0.5;
-	}
-    }
-  return gh_double2scm (r);
-}
-
-
-Grob*
-Stem::get_beam (Grob*me)
-{
-  SCM b=  me->get_grob_property ("beam");
-  return unsmob_grob (b);
-}
-
-Stem_info
-Stem::get_stem_info (Grob *me)
-{
-  /* Return cached info if available */
-  SCM scm_info = me->get_grob_property ("stem-info");
-  if (!gh_pair_p (scm_info))
-    {
-      calc_stem_info (me);
-      scm_info = me->get_grob_property ("stem-info");
-    }
-  
-  Stem_info si;
-  si.dir_ = get_grob_direction (me); 
-  si.ideal_y_ = gh_scm2double (gh_car (scm_info)); 
-  si.shortest_y_ = gh_scm2double (gh_cadr (scm_info));
-  return si;
-}
-
-
-/*
-  TODO: add extra space for tremolos!
- */
-void
-Stem::calc_stem_info (Grob *me)
-{
-  Direction my_dir = get_grob_direction (me);
-  Real staff_space = Staff_symbol_referencer::staff_space (me);
-  Grob *beam = get_beam (me);
-  Real beam_translation = Beam::get_beam_translation (beam);
-  Real beam_thickness = Beam::get_thickness (beam);
-  int beam_count = Beam::get_direction_beam_count (beam, my_dir);
-
-
-  /* Simple standard stem length */
-  SCM lengths = me->get_grob_property ("beamed-lengths");
-  Real ideal_length =
-    gh_scm2double (robust_list_ref (beam_count - 1,lengths))
-		
-    * staff_space
-    /* stem only extends to center of beam */
-    - 0.5 * beam_thickness;
-  
-  /* Condition: sane minimum free stem length (chord to beams) */
-  lengths = me->get_grob_property ("beamed-minimum-free-lengths");
-  Real ideal_minimum_free =
-    gh_scm2double (robust_list_ref (beam_count - 1, lengths))
-    * staff_space;
-  
-
-  /* UGH
-     It seems that also for ideal minimum length, we must use
-     the maximum beam count (for this direction):
-     
-     \score{ \notes\relative c''{ [a8 a32] }}
-     
-     must be horizontal. */
-  Real height_of_my_beams = beam_thickness
-    + (beam_count - 1) * beam_translation;
-
-  Real ideal_minimum_length = ideal_minimum_free
-    + height_of_my_beams
-    /* stem only extends to center of beam */
-    - 0.5 * beam_thickness;
-
-  ideal_length = ideal_length >? ideal_minimum_length;
-
-  
-  /* Convert to Y position, calculate for dir == UP */
-  Real note_start =
-    /* staff positions */
-    head_positions (me)[my_dir] * 0.5
-    * my_dir * staff_space;
-  Real ideal_y = note_start + ideal_length;
-
-
-  /* Conditions for Y position */
-
-  /* Lowest beam of (UP) beam must never be lower than second staffline
- 
-     Reference?
- 
-     Although this (additional) rule is probably correct,
-     I expect that highest beam (UP) should also never be lower
-     than middle staffline, just as normal stems.
-
-     Reference?
-
-     Obviously not for grace beams.
-     
-     Also, not for knees.  Seems to be a good thing. */
-  bool no_extend_b = to_boolean (me->get_grob_property ("no-stem-extend"));
-  bool knee_b = to_boolean (beam->get_grob_property ("knee"));
-  if (!no_extend_b && !knee_b)
-    {
-      /* Highest beam of (UP) beam must never be lower than middle
-	 staffline */
-      ideal_y =	ideal_y >? 0;
-      /* Lowest beam of (UP) beam must never be lower than second staffline */
-      ideal_y =	ideal_y >? (-staff_space
-			    - beam_thickness + height_of_my_beams);
-    }
-
-
-  ideal_y -= robust_scm2double (beam->get_grob_property ("shorten"), 0);
-
-  Real minimum_free =
-    gh_scm2double (robust_list_ref
-		   (beam_count - 1,
-		    me->get_grob_property
-		    ("beamed-extreme-minimum-free-lengths")))
-    * staff_space;
-
-  Real minimum_length = minimum_free
-    + height_of_my_beams
-    /* stem only extends to center of beam */
-    - 0.5 * beam_thickness;
-
-  Real minimum_y = note_start + minimum_length;
-  
-  
-  ideal_y *= my_dir;
-  Real shortest_y = minimum_y * my_dir; 
-  
-  me->set_grob_property ("stem-info",
-			 scm_list_n (gh_double2scm (ideal_y),
-				     gh_double2scm (shortest_y),
-				     SCM_UNDEFINED));
-}
-
-Slice
-Stem::beam_multiplicity (Grob *stem)
-{
-  SCM beaming= stem->get_grob_property ("beaming");
-  Slice l = int_list_to_slice (gh_car (beaming));
-  Slice r = int_list_to_slice (gh_cdr (beaming));
-  l.unite (r);
-
-  return l;
-}
-
-
-/*
-  these are too many props.
- */
-ADD_INTERFACE (Stem,"stem-interface",
-	       "A stem",
-	       "tremolo-flag french-beaming "
-	       "avoid-note-head adjust-if-on-staffline thickness "
-	       "stem-info beamed-lengths beamed-minimum-free-lengths "
-	       "beamed-extreme-minimum-free-lengths lengths beam stem-shorten "
-	       "duration-log beaming neutral-direction stem-end-position "
-	       "note-heads direction length flag-style "
-	       "no-stem-extend stroke-style");
-
-
-
-/****************************************************************/
-
-Stem_info::Stem_info()
-{
-  ideal_y_ = shortest_y_ =0;
-  dir_ = CENTER;
-}
-
-void
-Stem_info::scale (Real x)
-{
-  ideal_y_ *= x;
-  shortest_y_ *= x;
-}
diff --git a/lily/string-number-engraver.cc b/lily/string-number-engraver.cc
deleted file mode 100644
index 5fdc4e79f1..0000000000
--- a/lily/string-number-engraver.cc
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
-  Junk String numbers.
-  
- */
-
-#include "engraver.hh"
-
-class String_number_engraver : public Engraver
-{
-public:
-  TRANSLATOR_DECLARATIONS(String_number_engraver);
-protected:
-  virtual bool try_music (Music* m);
-};
-
-
-bool
-String_number_engraver::try_music (Music * )
-{
-  return true;
-}
-
-String_number_engraver::String_number_engraver ()
-{
-
-}
-
-/*
-  TODO: string numbers are printed right of the note circled. This
-  engraver should provide this functionality.
-  
- */
-
-ENTER_DESCRIPTION(String_number_engraver,
-/* descr */       "Swallow string-number-events - the purpose of this engraver is to"
-" process tab for normal notation. To provent warnings for unprocessed "
-" string-number-event to obscure real error messages, this engraver "
-" swallows them all.",
-		  
-/* creats*/       "",
-/* accepts */     "string-number-event",
-/* acks  */      "",
-/* reads */       "",
-/* write */       "");
diff --git a/lily/sustain-pedal.cc b/lily/sustain-pedal.cc
deleted file mode 100644
index 30658d7bf3..0000000000
--- a/lily/sustain-pedal.cc
+++ /dev/null
@@ -1,67 +0,0 @@
-/*   
-  sustain-pedal.cc --  implement Sustain_pedal
-  
-  source file of the GNU LilyPond music typesetter
-  
-  (c) 2000--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-  
- */
-#include "grob.hh"
-#include "molecule.hh"
-#include "font-interface.hh"
-#include "string.hh"
-
-// update comment --hwn 
-/*
-  Urg.
-  This is almost text
-  Problem is:
-    * we have no kerning
-    * symbols are at wrong place in font
-
-
-
-  Properties:
-
-  glyph -- text string (TODO: make one large glyph of the Ped symbol, removes need for member_print ())
-
-*/
-
-struct Sustain_pedal
-{
-public:
-  DECLARE_SCHEME_CALLBACK (print, (SCM));
-};
-
-
-MAKE_SCHEME_CALLBACK (Sustain_pedal,print,1);
-SCM
-Sustain_pedal::print (SCM smob) 
-{
-  Grob * e = unsmob_grob (smob);
-  
-  Molecule mol;
-  SCM glyph = e->get_grob_property ("text");
-  if (!gh_string_p (glyph))
-    return mol.smobbed_copy ();
-  
-  String text = ly_scm2string (glyph);
-
-  for (int i = 0; i < text.length (); i++)
-    {
-      String idx ("pedal-");
-      if (text.cut_string (i, 3) == "Ped")
-	{
-	  idx += "Ped";
-	  i += 2;
-	}
-      else
-	idx += String (&text.to_bytes ()[i], 1);
-      Molecule m = Font_interface::get_default_font (e)->find_by_name (idx);
-      if (!m.is_empty ())
-	mol.add_at_edge (X_AXIS, RIGHT, m, 0, 0);
-    }
-    
-  return mol.smobbed_copy ();
-}
-
diff --git a/lily/swallow-engraver.cc b/lily/swallow-engraver.cc
deleted file mode 100644
index 4bda0a7ebf..0000000000
--- a/lily/swallow-engraver.cc
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
-  swallow-reg.cc -- implement Swallow_engraver
-
-  source file of the GNU LilyPond music typesetter
-
-  (c) 1997--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-*/
-
-#include "engraver.hh"
-
-/**
- */
-class Swallow_engraver : public Engraver
-{
-public:
-  TRANSLATOR_DECLARATIONS(Swallow_engraver);
-protected:
-  bool try_music (Music*) ;
-};
-
-
-
-bool
-Swallow_engraver::try_music (Music*) 
-{
-  return true;
-}
-
-Swallow_engraver::Swallow_engraver ()
-{
-}
-
-ENTER_DESCRIPTION(Swallow_engraver,
-/* descr */       "This engraver swallows everything given to it silently. The purpose of "
-		  "this is to prevent spurious \"event junked\" warnings.",
-/* creats*/       "",
-/* accepts */     "general-music",
-/* acks  */       "",
-/* reads */       "",
-/* write */       "");
diff --git a/lily/swallow-perf.cc b/lily/swallow-perf.cc
deleted file mode 100644
index dbeb4cc515..0000000000
--- a/lily/swallow-perf.cc
+++ /dev/null
@@ -1,38 +0,0 @@
-/*
-  swallow-perf.cc -- implement Swallow_performer
-
-  source file of the GNU LilyPond music typesetter
-
-  (c) 1997--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-*/
-
-#include "performer.hh"
-
-class Swallow_performer : public Performer
-{
-public:
-  TRANSLATOR_DECLARATIONS(Swallow_performer);
-protected:
-  virtual bool try_music (Music*);
-};
-
-bool
-Swallow_performer::try_music (Music *m)
-{
-  if (m->is_mus_type ("busy-playing-event")
-      || m->is_mus_type ("melisma-playing-event"))
-    return false;
-  else
-    return true; 
-}
-
-Swallow_performer::Swallow_performer()
-{}
-
-ENTER_DESCRIPTION(Swallow_performer,
-/* descr */       "",
-/* creats*/       "",
-/* accepts */     "general-music",
-/* acks  */      "",
-/* reads */       "",
-/* write */       "");
diff --git a/lily/system-start-delimiter-engraver.cc b/lily/system-start-delimiter-engraver.cc
deleted file mode 100644
index 967fc24d5f..0000000000
--- a/lily/system-start-delimiter-engraver.cc
+++ /dev/null
@@ -1,98 +0,0 @@
-/*   
-  system-start-delimiter-engraver.cc -- implement System_start_delimiter_engraver
-  
-  source file of the GNU LilyPond music typesetter
-  
-  (c) 2000--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-  
- */
-
-#include "system-start-delimiter.hh"
-#include "engraver.hh"
-#include "staff-symbol.hh"
-#include "group-interface.hh"
-#include "paper-column.hh"
-#include "paper-def.hh"
-#include "spanner.hh"
-
-class System_start_delimiter_engraver : public Engraver
-{
-public:
-  TRANSLATOR_DECLARATIONS(System_start_delimiter_engraver);
-
-protected:
-  Spanner * delim_;
-  virtual void acknowledge_grob (Grob_info);
-  virtual void process_music ();
-  virtual void finalize ();
-};
-
-
-
-void
-System_start_delimiter_engraver::acknowledge_grob (Grob_info inf)
-{
-  if (Staff_symbol::has_interface (inf.grob_))
-    {
-      /*
-	don't add as Axis_group_interface::add_element (delim_,),
-	because that would set the parent as well */
-	  
-      Pointer_group_interface::add_grob (delim_, ly_symbol2scm ("elements"),  inf.grob_);
-    }
-  else if (System_start_delimiter::has_interface (inf.grob_))
-    {
-      SCM gl = inf.grob_->get_grob_property ("glyph");
-      SCM my_gl = delim_->get_grob_property ("glyph");
-
-      /*
-	UGH UGH
-       */
-      if (gh_string_p (gl) && gh_equal_p (gl, scm_makfrom0str  ("brace"))
-	  && gh_string_p (my_gl) && gh_equal_p (my_gl, scm_makfrom0str  ("bracket")))
-	inf.grob_->translate_axis (-0.8, X_AXIS); // ugh
-      else if (gh_string_p (gl) && gh_equal_p (gl, scm_makfrom0str  ("bracket"))
-	       && gh_string_p (my_gl) && gh_equal_p (my_gl, scm_makfrom0str  ("bracket")))
-       {
-         inf.grob_->translate_axis ( -0.8, X_AXIS); // ugh
-         inf.grob_->set_grob_property ("arch-height",
-				       gh_double2scm (gh_scm2double(inf.grob_->get_grob_property
-                                       ("arch-height"))+0.5));
-       }
-    }
-}
-
-System_start_delimiter_engraver::System_start_delimiter_engraver ()
-{
-  delim_ = 0;
-}
-
-void
-System_start_delimiter_engraver::process_music ()
-{
-  if (!delim_)
-    {
-      SCM delim_name =get_property ("systemStartDelimiter");
-      delim_ = make_spanner_from_properties (daddy_trans_, delim_name);
-
-      delim_->set_bound (LEFT, unsmob_grob (get_property ("currentCommandColumn")));
-      announce_grob (delim_, SCM_EOL);
-    }
-}
-void
-System_start_delimiter_engraver::finalize ()
-{
-  if (delim_)
-    {
-      delim_->set_bound (RIGHT, unsmob_grob (get_property ("currentCommandColumn")));
-      typeset_grob (delim_);
-    }
-}
-
-ENTER_DESCRIPTION(System_start_delimiter_engraver,
-/* descr */       "Creates a system start delimiter (ie. SystemStart@{Bar,Brace,Bracket@} spanner",
-/* creats*/       "SystemStartBar SystemStartBrace SystemStartBracket",
-/* accepts */     "",
-/* acks  */      "system-start-delimiter-interface staff-symbol-interface",
-/* reads */       "systemStartDelimiter",
-/* write */       "");
diff --git a/lily/system-start-delimiter.cc b/lily/system-start-delimiter.cc
deleted file mode 100644
index d4784aa3c1..0000000000
--- a/lily/system-start-delimiter.cc
+++ /dev/null
@@ -1,187 +0,0 @@
-/*   
-  system-start-delimiter.cc --  implement System_start_delimiter
-  
-  source file of the GNU LilyPond music typesetter
-  
-  (c) 2000--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-  
- */
-#include <math.h>
-
-#include "axis-group-interface.hh"
-#include "system-start-delimiter.hh"
-#include "paper-def.hh"
-#include "molecule.hh"
-#include "font-interface.hh"
-#include "all-font-metrics.hh"
-#include "grob.hh"
-#include "staff-symbol-referencer.hh"
-#include "lookup.hh"
-
-Molecule
-System_start_delimiter::staff_bracket (Grob*me,Real height)  
-{
-  Real arc_height = gh_scm2double (me->get_grob_property ("arch-height")) ;
-  
-  SCM at = scm_list_n (ly_symbol2scm ("bracket"),
-		    me->get_grob_property ("arch-angle"),
-		    me->get_grob_property ("arch-width"),
-		    gh_double2scm (arc_height),
-		    gh_double2scm (height),
-		    me->get_grob_property ("arch-thick"),
-		    me->get_grob_property ("thickness"),
-		    SCM_UNDEFINED);
-
-/*
-TODO: sort this out.
-    
-Another thing:
-In system-start-delimiter.cc I see the line
-
-  Real h = height + 2 * arc_height;
-
-But I really think that you mean
-
- Real h = height + 2 * arc_width;
-
-(arc_height changes the x-axis-size of arc ; arc_width changes the
-y-axis-size)
-Will not fix it since I'm not sure.
-  
-   */
-
-  Real h = height + 2 * arc_height;
-  Box b (Interval (0, 1.5), Interval (-h/2, h/2));
-  Molecule mol (b, at);
-  mol.align_to (X_AXIS, CENTER);
-  return mol;
-}
-
-
-
-Molecule
-System_start_delimiter::simple_bar (Grob*me,Real h) 
-{
-  Real lt =me->get_paper ()->get_realvar (ly_symbol2scm ("linethickness")) ;
-  Real w = lt * robust_scm2double (me->get_grob_property ("thickness"), 1);
-  return Lookup::round_filled_box (Box (Interval (0,w), Interval (-h/2, h/2)),
-				   lt);
-}
-
-MAKE_SCHEME_CALLBACK (System_start_delimiter,after_line_breaking,1);
-
-SCM
-System_start_delimiter::after_line_breaking (SCM smob)
-{
-  Grob * me = unsmob_grob (smob);
-  SCM   gl = me->get_grob_property ("glyph");
-  if (gh_equal_p (gl,scm_makfrom0str ("bar-line")))
-    {
-      int count = 0;
-
-      /*
-	Get all coordinates, to trigger Hara kiri. 
-      */
-      SCM elts = me->get_grob_property ("elements");
-      Grob *common = common_refpoint_of_list (elts, me, Y_AXIS);
-      for (SCM s = elts; gh_pair_p (s); s = gh_cdr (s))
-	{
-	  Interval v = unsmob_grob (gh_car (s))->extent (common, Y_AXIS);
-
-	  if (!v.is_empty ())
-	    count ++;
-	}
-  
-  
-      if (count <=  1)
-	{
-	  me->suicide ();
-	}
-    }
-  return SCM_UNSPECIFIED;
-}
-
-
-MAKE_SCHEME_CALLBACK (System_start_delimiter,print,1);
-SCM
-System_start_delimiter::print (SCM smob)
-{
-  Grob * me = unsmob_grob (smob);
-
-  SCM s = me->get_grob_property ("glyph");
-  if (!gh_string_p (s))
-    return SCM_EOL;
-  SCM gsym = scm_string_to_symbol (s) ;
-  
-  Real staff_space = Staff_symbol_referencer::staff_space (me);
-  Interval ext = ly_scm2interval (Axis_group_interface::group_extent_callback
- (me->self_scm (), gh_int2scm (Y_AXIS)));
-  Real l = ext.length () / staff_space;
-  
-  if (ext.is_empty ()
-      || (robust_scm2double (me->get_grob_property ("collapse-height"), 0.0) >= l))
-    {
-      me->suicide ();
-      return SCM_EOL;
-    }
-
-  Molecule m;
-
-  if (gsym== ly_symbol2scm ("bracket"))
-    m = staff_bracket (me,l);
-  else if (gsym == ly_symbol2scm ("brace"))
-    m =  staff_brace (me,l);
-  else if (gsym == ly_symbol2scm ("bar-line"))
-    m = simple_bar (me,l);
-  
-  m.translate_axis (ext.center (), Y_AXIS);
-  return m.smobbed_copy ();
-}
-
-Molecule
-System_start_delimiter::staff_brace (Grob*me, Real y)
-{
-  Font_metric *fm = 0;
-  
-  /* We go through the style sheet to lookup the font file
-     name.  This is better than using find_font directly,
-     esp. because that triggers mktextfm for non-existent
-     fonts. */
-  SCM br = ly_symbol2scm ("braces");
-  SCM fam = gh_cons (ly_symbol2scm ("font-family"), br);
-  SCM sz = gh_cons (ly_symbol2scm ("font-relative-size"), ly_symbol2scm ("*"));
-  
-  SCM alist = scm_list_n (fam, sz, SCM_UNDEFINED);
-  fm = select_font (me->get_paper (), scm_list_n (alist, SCM_UNDEFINED));
-  
-
-  int lo = 0;
-
-  int hi = (fm->count () - 1) >? 2;
-  Box b;
-
-  /* do a binary search for each Y, not very efficient, but passable?  */
-  do
-    {
-      int cmp = (lo + hi) / 2;
-      b = fm->get_indexed_char (cmp);
-      if (b[Y_AXIS].is_empty () || b[Y_AXIS].length () > y)
-	hi = cmp;
-      else
-	lo = cmp;
-    }
-  while (hi - lo > 1);
-      
-  Molecule m (fm->get_indexed_char_molecule (lo)); // ugh.  ascii?
-  b=m.extent_box();
-  b[X_AXIS] = Interval (0,0);
-
-  return Molecule (b, m.get_expr());
-}
-  
-
-
-
-ADD_INTERFACE (System_start_delimiter,"system-start-delimiter-interface",
-  "#'style can be bar-line, bracket or brace",
-  "collapse-height thickness arch-height arch-angle arch-thick arch-width bracket-thick glyph");
diff --git a/lily/system.cc b/lily/system.cc
deleted file mode 100644
index 3a0f2dbaa3..0000000000
--- a/lily/system.cc
+++ /dev/null
@@ -1,622 +0,0 @@
-/*
-  system.cc -- implement System
-
-  source file of the GNU LilyPond music typesetter
-
-  (c) 1996--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-*/
-
-#include "input-smob.hh"
-#include "axis-group-interface.hh"
-#include "warn.hh"
-#include "system.hh"
-#include "main.hh"
-#include "paper-column.hh"
-#include "paper-def.hh"
-#include "paper-outputter.hh"
-#include "paper-score.hh"
-#include "string.hh"
-#include "warn.hh"
-#include "dimensions.hh"
-#include "molecule.hh"
-#include "all-font-metrics.hh"
-#include "spacing-interface.hh"
-#include "staff-symbol-referencer.hh"
-
-// todo: use map.
-void
-fixup_refpoints (SCM s)
-{
-  for (; gh_pair_p (s); s = ly_cdr (s))
-    {
-      Grob::fixup_refpoint (ly_car (s));
-    }
-}
-
-
-System::System (SCM s)
-  : Spanner (s)
-{
-  rank_ = 0;
-}
-
-int
-System::element_count () const
-{
-  return scm_ilength (get_grob_property ("all-elements"));
-}
-
-int
-System::spanner_count () const
-{
-  int k =0;
-  for (SCM s = get_grob_property ("all-elements");
-       gh_pair_p (s); s = ly_cdr (s))
-    {
-      if (dynamic_cast<Spanner*> (unsmob_grob (gh_car(s))))
-	k++;
-    }
-
-  return k;
-}
-  
-
-int
-scm_default_compare (const void * a, const void *b)
-{
-  SCM pa = *(SCM *)a;
-  SCM pb = *(SCM *)b;
-
-  if (pa < pb) return -1 ;
-  else if (pa > pb) return 1;
-  else return 0;
-}
-
-/*
-  modify L in place: sort it 
-*/
-
-SCM
-uniquify_list (SCM l)
-{
-  int len = scm_ilength (l);
-  SCM  * arr = new SCM[len];
-  int k = 0;
-  for (SCM s =l ; SCM_NNULLP (s); s = SCM_CDR(s))
-    arr[k++] = SCM_CAR(s);
-
-  assert (k == len);
-  qsort (arr, len, sizeof (SCM), &scm_default_compare);
-
-  k = 0;
-  SCM s =l;
-  for (int i = 0; i < len ; i++)
-    {
-      if (i && arr[i] == arr[i-1])
-	continue;
-
-      SCM_SETCAR(s, arr[i]);
-
-      if (i < len - 1)
-	s = SCM_CDR(s);
-    }
-
-  SCM_SETCDR(s, SCM_EOL);
-  delete arr;
-  
-  return l; 
-}
-
-void
-System::typeset_grob (Grob * elem)
-{
-  if (elem->pscore_)
-    programming_error ("Adding element twice.");
-  
-  elem->pscore_ = pscore_;
-  Pointer_group_interface::add_grob (this, ly_symbol2scm ("all-elements"), elem);
-  scm_gc_unprotect_object (elem->self_scm ());
-}
-
-void
-System::output_lines ()
-{
-  for (SCM s = get_grob_property ("all-elements");
-       gh_pair_p (s); s = ly_cdr (s))
-    {
-      Grob * g = unsmob_grob (ly_car (s));
-      if (g->internal_has_interface (ly_symbol2scm ("only-prebreak-interface")))
-	{
-	  /*
-	    Kill no longer needed grobs. 
-	   */
-	  Item * it = dynamic_cast<Item*> (g);
-	  if (it && Item::breakable_b(it))
-	    {
-	      it->find_prebroken_piece (LEFT)->suicide();
-	      it->find_prebroken_piece (RIGHT)->suicide();
-	    }
-	  g->suicide ();
-	}
-      else if (g->live ())
-	g->do_break_processing ();
-    }
-
-  /*
-    fixups must be done in broken line_of_scores, because new elements
-    are put over there.  */
-  int count = 0;
-  for (int i=0; i < broken_intos_.size (); i++)
-    {
-      Grob *se = broken_intos_[i];
-      SCM all = se->get_grob_property ("all-elements");
-      for (SCM s = all; gh_pair_p (s); s = ly_cdr (s))
-	{
-	  fixup_refpoint (ly_car (s));
-	}
-      count += scm_ilength (all);
-    }
-  
-  /*
-    needed for doing items.
-   */
-  fixup_refpoints (get_grob_property ("all-elements"));
-
-  
-  for (SCM s = get_grob_property ("all-elements");
-       gh_pair_p (s); s = ly_cdr (s))
-    {
-      unsmob_grob (ly_car (s))->handle_broken_dependencies ();
-    }
-  handle_broken_dependencies ();
-
-  /*
-    Because the this->get_grob_property (all-elements) contains items
-    in 3 versions, handle_broken_dependencies () will leave duplicated
-    items in all-elements. Strictly speaking this is harmless, but it
-    leads to duplicated symbols in the output. uniquify_list() makes
-    sure that no duplicates are in the list.
-   */
-  for (int i=0; i < broken_intos_.size (); i++)
-    {
-      /*
-	don't do this: strange side effects.
-       */
-      //    SCM al = broken_intos_[i]->get_grob_property ("all-elements");
-      //      al  = uniquify_list (al); 
-    }
-  
-  if (verbose_global_b)
-    progress_indication (_f ("Element count %d.",  count + element_count ()));
-
-  
-  for (int i=0; i < broken_intos_.size (); i++)
-    {
-      System *system = dynamic_cast<System*> (broken_intos_[i]);
-
-      if (verbose_global_b)
-	progress_indication ("[");
-      bool last = i+1 == broken_intos_.size ();
-      system->post_processing (last);
-
-      if (verbose_global_b)
-	{
-	  progress_indication (to_string (i));
-	  progress_indication ("]");
-	}
-
-      if (i < broken_intos_.size () - 1)
-	{
-	  SCM lastcol =  ly_car (system->get_grob_property ("columns"));
-	  Grob*  e = unsmob_grob (lastcol);
-
-	  SCM between = ly_symbol2scm ("between-system-string");
-	  SCM inter = e->internal_get_grob_property (between);
-	  if (gh_string_p (inter))
-	    {
-	      pscore_->outputter_
-		->output_scheme (scm_list_n (between, 
-					     inter, SCM_UNDEFINED));	      
-	    }
-	}
-    }
-}
-
-
-
-
-/*
-  Find the loose columns in POSNS, and drape them around the columns
-  specified in BETWEEN-COLS.  */
-void
-set_loose_columns (System* which, Column_x_positions const *posns)
-{
-  for (int i = 0; i < posns->loose_cols_.size (); i++)
-    {
-      int divide_over = 1;
-      Item *loose = dynamic_cast<Item*> (posns->loose_cols_[i]);
-      Paper_column* col = dynamic_cast<Paper_column*> (loose);
-      
-      if (col->system_)
-	continue;
-      
-      Item * left = 0;
-      Item * right = 0;
-      do
-	{
-	  SCM between = loose->get_grob_property ("between-cols");
-	  if (!gh_pair_p (between))
-	    break;
-
-
-	  Item * l=dynamic_cast<Item*> (unsmob_grob (ly_car (between)));
-	  Item * r=dynamic_cast<Item*> (unsmob_grob (ly_cdr (between)));
-
-	  if (!(l && r))
-	    break ;
-	  
-	  if (!left && l)
-	    {
-	      left = l->get_column ();
-	      if (!left->get_system ())
-		left = left->find_prebroken_piece (RIGHT);
-	    }
-
-	  divide_over ++;
-	  loose = right = r->get_column ();
-	}
-      while (1);
-
-      if (!right->get_system ())
-	right = right->find_prebroken_piece (LEFT);
-      
-      /*
-	We divide the remaining space of the column over the left and
-	right side. At the moment, we  
-	
-      */
-      Grob * common = right->common_refpoint (left, X_AXIS);
-      
-      Real rx =	right->extent(common, X_AXIS)[LEFT];
-      Real lx = left->extent(common, X_AXIS)[RIGHT];
-      Real total_dx = rx - lx;
-      Interval cval =col->extent (col, X_AXIS);
-
-      /*
-	
-	We put it in the middle. This is not an ideal solution -- the
-	break alignment code inserts a fixed space before the clef
-	(about 1 SS), while the space following the clef is
-	flexible. In tight situations, the clef will almost be on top
-	of the following note. 
-	
-      */
-      Real dx = rx-lx - cval.length ();
-      if (total_dx < 2* cval.length ())
-	{
-	  /*
-	    todo: this is discontinuous. I'm too tired to
-	    invent a sliding mechanism. Duh.
-
-	    TODO.
-	   */
-	  dx *= 0.25;
-	}
-      else
-	dx *= 0.5;
-
-      col->system_ = which;
-      col->translate_axis (- col->relative_coordinate (common, X_AXIS), X_AXIS);
-      col->translate_axis (lx + dx - cval[LEFT], X_AXIS); 
-    }
-}
-
-// const?
-void
-System::break_into_pieces (Array<Column_x_positions> const &breaking)
-{
-  for (int i=0; i < breaking.size (); i++)
-    {
-      System *system = dynamic_cast <System*> (clone ());
-      system->rank_ = i;
-
-      Link_array<Grob> c (breaking[i].cols_);
-      pscore_->typeset_line (system);
-      
-      system->set_bound (LEFT,c[0]);
-      system->set_bound (RIGHT,c.top ());
-      for (int j=0; j < c.size (); j++)
-	{
-	  c[j]->translate_axis (breaking[i].config_[j],X_AXIS);
-	  dynamic_cast<Paper_column*> (c[j])->system_ = system;
-	}
-      set_loose_columns (system, &breaking[i]);
-      broken_intos_.push (system);
-    }
-}
-
-void
-System::output_molecule (SCM expr, Offset o)
-{
-  while (1)
-    {
-      if (!gh_pair_p (expr))
-	return;
-  
-      SCM head =ly_car (expr);
-      if (unsmob_input (head))
-	{
-	  Input * ip = unsmob_input (head);
-      
-	  pscore_->outputter_->output_scheme (scm_list_n (ly_symbol2scm ("define-origin"),
-							   scm_makfrom0str (ip->file_string ().to_str0 ()),
-							   gh_int2scm (ip->line_number ()),
-							   gh_int2scm (ip->column_number ()),
-							   SCM_UNDEFINED));
-	  expr = ly_cadr (expr);
-	}
-      else  if (head ==  ly_symbol2scm ("no-origin"))
-	{
-	  pscore_->outputter_->output_scheme (scm_list_n (head, SCM_UNDEFINED));
-	  expr = ly_cadr (expr);
-	}
-      else if (head == ly_symbol2scm ("translate-molecule"))
-	{
-	  o += ly_scm2offset (ly_cadr (expr));
-	  expr = ly_caddr (expr);
-	}
-      else if (head == ly_symbol2scm ("combine-molecule"))
-	{
-	  output_molecule (ly_cadr (expr), o);
-	  expr = ly_caddr (expr);
-	}
-      else
-	{
-	  pscore_->outputter_->
-	    output_scheme (scm_list_n (ly_symbol2scm ("placebox"),
-				    gh_double2scm (o[X_AXIS]),
-				    gh_double2scm (o[Y_AXIS]),
-				    expr,
-				    SCM_UNDEFINED));
-
-	  return;
-	}
-    }
-}
-
-void
-System::output_scheme (SCM s)
-{
-  pscore_->outputter_->output_scheme (s);
-}
-
-void
-System::add_column (Paper_column*p)
-{
-  Grob *me = this;
-  SCM cs = me->get_grob_property ("columns");
-  Grob * prev =  gh_pair_p (cs) ? unsmob_grob (ly_car (cs)) : 0;
-
-  p->rank_ = prev ? Paper_column::get_rank (prev) + 1 : 0; 
-
-  me->set_grob_property ("columns",  gh_cons (p->self_scm (), cs));
-
-  Axis_group_interface::add_element (me, p);
-}
-
-void
-System::pre_processing ()
-{
-  for (SCM s = get_grob_property ("all-elements"); gh_pair_p (s); s = ly_cdr (s))
-    unsmob_grob (ly_car (s))->discretionary_processing ();
-
-  if (verbose_global_b)
-    progress_indication (_f ("Grob count %d ",  element_count ()));
-
-  
-  for (SCM s = get_grob_property ("all-elements"); gh_pair_p (s); s = ly_cdr (s))
-    unsmob_grob (ly_car (s))->handle_prebroken_dependencies ();
-  
-  fixup_refpoints (get_grob_property ("all-elements"));
-  
-  for (SCM s = get_grob_property ("all-elements"); gh_pair_p (s); s = ly_cdr (s))
-    {
-      Grob* sc = unsmob_grob (ly_car (s));
-      sc->calculate_dependencies (PRECALCED, PRECALCING, ly_symbol2scm ("before-line-breaking-callback"));
-    }
-  
-  progress_indication ("\n" + _ ("Calculating line breaks...") + " ");
-  for (SCM s = get_grob_property ("all-elements"); gh_pair_p (s); s = ly_cdr (s))
-    {
-      Grob * e = unsmob_grob (ly_car (s));
-      SCM proc = e->get_grob_property ("spacing-procedure");
-      if (gh_procedure_p (proc))
-	gh_call1 (proc, e->self_scm ());
-    }
-}
-
-
-  const int LAYER_COUNT= 3;
-
-
-
-void
-System::post_processing (bool last_line)
-{
-  for (SCM s = get_grob_property ("all-elements");
-       gh_pair_p (s); s = ly_cdr (s))
-    {
-      Grob* sc = unsmob_grob (ly_car (s));
-      sc->calculate_dependencies (POSTCALCED, POSTCALCING,
-				  ly_symbol2scm ("after-line-breaking-callback"));
-    }
-
-  Interval i (extent (this, Y_AXIS));
-  if (i.is_empty ())
-    programming_error ("Huh?  Empty System?");
-  else
-    translate_axis (- i[MAX], Y_AXIS);
-
-  Real height = i.length ();
-  if (height > 50 CM)
-    {
-      programming_error ("Improbable system height");
-      height = 50 CM;
-    }
-
-  /*
-    generate all molecules  to trigger all font loads.
-
-    (ugh. This is not very memory efficient.)  */
-
-  SCM all = get_grob_property ("all-elements")  ;
-  all = uniquify_list (all);
-
-  /*
-    triger font loads first.
-
-    This might seem inefficient, but Molecules are cached per grob
-    anyway.
-    */
-  this->get_molecule();
-  for (SCM s = all; gh_pair_p (s); s = ly_cdr (s))
-    {
-      Grob * g = unsmob_grob (ly_car (s));
-      g->get_molecule ();
-    }
-  
-  /*
-    font defs;
-   */
-  SCM font_names = ly_quote_scm (get_paper ()->font_descriptions ());  
-  output_scheme (scm_list_n (ly_symbol2scm ("define-fonts"),
-			     font_names,
-			     SCM_UNDEFINED));
-
-  /*
-    line preamble.
-   */
-  Interval j (extent (this, X_AXIS));
-  Real length = j[RIGHT];
-    
-  output_scheme (scm_list_n (ly_symbol2scm ("start-system"),
-			  gh_double2scm (length),
-			  gh_double2scm (height),
-			  SCM_UNDEFINED));
-  
-  /* Output elements in three layers, 0, 1, 2.
-     The default layer is 1. */
-  {
-    Molecule *m = this->get_molecule();
-    if (m)
-      output_molecule (m->get_expr (), Offset(0,0));
-  }
-  
-  for (int i = 0; i < 3; i++)
-    for (SCM s = get_grob_property ("all-elements"); gh_pair_p (s);
-	 s = ly_cdr (s))
-      {
-	Grob *sc = unsmob_grob (ly_car (s));
-	Molecule *m = sc->get_molecule ();
-	if (!m)
-	  continue;
-	
-	SCM s = sc->get_grob_property ("layer");
-	int layer = gh_number_p (s) ? gh_scm2int (s) : 1;
-	if (layer != i)
-	  continue;
-	
-	Offset o (sc->relative_coordinate (this, X_AXIS),
-		  sc->relative_coordinate (this, Y_AXIS));
-	
-	SCM e = sc->get_grob_property ("extra-offset");
-	if (gh_pair_p (e))
-	  {
-	    Offset z = ly_scm2offset (e);
-	    z *= Staff_symbol_referencer::staff_space (sc);
-	    
-	    o += z;
-	  }
-	
-	output_molecule (m->get_expr (), o);
-      }
-
-  
-  
-  if (last_line)
-    {
-      output_scheme (scm_list_n (ly_symbol2scm ("stop-last-system"), SCM_UNDEFINED));
-    }
-  else
-    {
-      output_scheme (scm_list_n (ly_symbol2scm ("stop-system"), SCM_UNDEFINED));
-    }
-}
-
-
-Link_array<Item> 
-System::broken_col_range (Item const*l, Item const*r) const
-{
-  Link_array<Item> ret;
-
-  l = l->get_column ();
-  r = r->get_column ();
-  SCM s = get_grob_property ("columns");
-
-  while (gh_pair_p (s) && ly_car (s) != r->self_scm ())
-    s = ly_cdr (s);
-    
-  if (gh_pair_p (s))
-    s = ly_cdr (s);
-  
-  while (gh_pair_p (s) && ly_car (s) != l->self_scm ())
-    {
-      Paper_column*c = dynamic_cast<Paper_column*> (unsmob_grob (ly_car (s)));
-      if (Item::breakable_b (c) && !c->system_)
-	ret.push (c);
-
-      s = ly_cdr (s);
-    }
-
-  ret.reverse ();
-  return ret;
-}
-
-/**
-   Return all columns, but filter out any unused columns , since they might
-   disrupt the spacing problem.
- */
-Link_array<Grob>
-System::columns ()const
-{
-  Link_array<Grob> acs
-    = Pointer_group_interface__extract_grobs (this, (Grob*) 0, "columns");
-  bool bfound = false;
-  for (int i= acs.size (); i -- ;)
-    {
-      bool brb = Item::breakable_b (acs[i]);
-      bfound = bfound || brb;
-
-      /*
-	the last column should be breakable. Weed out any columns that
-	seem empty. We need to retain breakable columns, in case
-	someone forced a breakpoint.
-      */
-      if (!bfound || !Paper_column::is_used (acs[i]))
-	acs.del (i);
-    }
-  return acs;
-}
-  
-
-
-
-ADD_INTERFACE (System,"system-interface",
-  "Super grob, parent of all: "
-"\n\n"
-"The columns of a score that form one line.  The toplevel grob.  Any "
-"grob has a Line_of_score as both X and Y reference point. The "
-"Paper_score contains one grob of this type. Control enters the "
-"Grob dependency calculation from this single Line_of_score "
-"object.",
-  "between-system-string all-elements columns");
diff --git a/lily/tab-note-heads-engraver.cc b/lily/tab-note-heads-engraver.cc
deleted file mode 100644
index 1e3f78cbc6..0000000000
--- a/lily/tab-note-heads-engraver.cc
+++ /dev/null
@@ -1,187 +0,0 @@
-/*
-  head-grav.cc -- part of GNU LilyPond
-
-  (c) 1997--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-*/
-#include <ctype.h>
-#include <stdio.h>
-
-#include "rhythmic-head.hh"
-#include "paper-def.hh"
-#include "event.hh"
-#include "dots.hh"
-#include "dot-column.hh"
-#include "staff-symbol-referencer.hh"
-#include "item.hh"
-#include "score-engraver.hh"
-#include "warn.hh"
-
-/**
-   make (guitar-like) tablature note
-*/
-class Tab_note_heads_engraver : public Engraver
-{
-  Link_array<Item> notes_;
-  
-  Link_array<Item> dots_;
-  Link_array<Music> note_events_;
-  Link_array<Music> tabstring_events_;
-public:
-  TRANSLATOR_DECLARATIONS(Tab_note_heads_engraver);
-
-protected:
-  virtual bool try_music (Music *event) ;
-  virtual void process_music ();
-
-  virtual void stop_translation_timestep ();
-};
-
-
-Tab_note_heads_engraver::Tab_note_heads_engraver()
-{
-}
-
-bool
-Tab_note_heads_engraver::try_music (Music *m) 
-{
-  if (m->is_mus_type ("note-event"))
-    {
-      note_events_.push (m);
-      return true;
-    }
-  else if (m->is_mus_type ("string-number-event"))
-    {
-      tabstring_events_.push (m);
-      return true;
-    }
-  else if (m->is_mus_type ("busy-playing-event"))
-    {
-      return note_events_.size ();
-    }
-  
-  return false;
-}
-
-
-void
-Tab_note_heads_engraver::process_music ()
-{
-  int j = 0; 
-  for (int i=0; i < note_events_.size (); i++)
-    {
-      SCM stringTunings = get_property ("stringTunings");
-      int number_of_strings = ((int) gh_length(stringTunings));
-      bool high_string_one = to_boolean(get_property ("highStringOne"));
-
-      Item * note  = make_item ("TabNoteHead");
-      
-      Music * event = note_events_[i];
-
-      
-      Music * tabstring_event=0;
-
-      for (SCM s =event->get_mus_property ("articulations");
-	   !tabstring_event && gh_pair_p (s); s = gh_cdr (s))
-	{
-	  Music * art = unsmob_music (gh_car (s));
-
-	  if (art->is_mus_type ("string-number-event"))
-	    tabstring_event = art;
-	}
-
-      if (!tabstring_event  && j < tabstring_events_.size ())
-	{
-	  tabstring_event = tabstring_events_[j];
-	  if (j +1 <  tabstring_events_.size())
-	    j++;
-	}
-
-      int tab_string;
-      bool string_found;
-      if (tabstring_event)
-	{
-	  tab_string = gh_scm2int(tabstring_event->get_mus_property ("string-number"));
-	  string_found = true;
-	}
-      else
-	{
-	  tab_string = high_string_one ? 1 : number_of_strings;
-	  string_found = false;
-	}
-      
-      Duration dur = *unsmob_duration (event->get_mus_property ("duration"));
-      note->set_grob_property ("duration-log",
-			       gh_int2scm (dur.duration_log ()));
-
-      if (dur.dot_count ())
-	{
-	  Item * d = make_item ("Dots");
-	  Rhythmic_head::set_dots (note, d);
-	  
-	  if (dur.dot_count ()
-	      != gh_scm2int (d->get_grob_property ("dot-count")))
-	    d->set_grob_property ("dot-count", gh_int2scm (dur.dot_count ()));
-
-	  d->set_parent (note, Y_AXIS);
-	  announce_grob (d, SCM_EOL);
-	  dots_.push (d);
-	}
-      
-      
-      SCM scm_pitch = event->get_mus_property ("pitch");
-      SCM proc      = get_property ("tablatureFormat");
-      SCM min_fret_scm = get_property ("minimumFret");
-      int min_fret = gh_number_p(min_fret_scm) ? gh_scm2int(min_fret_scm) : 0;
-
-      while(!string_found)
-	{
-	  int fret = unsmob_pitch(scm_pitch)->semitone_pitch()
-	    - gh_scm2int(gh_list_ref(stringTunings,gh_int2scm(tab_string-1)));
-	  if(fret<min_fret)
-	    tab_string += high_string_one ? 1 : -1;
-	  else
-	    string_found = true;
-	}
-
-      SCM text = gh_call3 (proc, gh_int2scm (tab_string), stringTunings, scm_pitch);
-
-      int pos = 2 * tab_string - number_of_strings - 1; // No tab-note between the string !!!
-      if(to_boolean(get_property("stringOneTopmost")))
-	pos = -pos;
-      
-      note->set_grob_property ("text", text);      
-      
-      note->set_grob_property ("staff-position", gh_int2scm (pos));
-      announce_grob (note, event->self_scm());
-      notes_.push (note);
-    }
-}
-
-void
-Tab_note_heads_engraver::stop_translation_timestep ()
-{
-  for (int i=0; i < notes_.size (); i++)
-    {
-      typeset_grob (notes_[i]);
-    }
-
-  notes_.clear ();
-  for (int i=0; i < dots_.size (); i++)
-    {
-      typeset_grob (dots_[i]);
-    }
-  
-  dots_.clear ();
-  note_events_.clear ();
-  tabstring_events_.clear ();
-}
-
-
-ENTER_DESCRIPTION(Tab_note_heads_engraver,
-/* descr */       "Generate one or more tablature noteheads from Music of type NoteEvent.",
-/* creats*/       "TabNoteHead Dots",
-/* accepts */     "note-event string-number-event busy-playing-event",
-/* acks  */      "",
-/* reads */       "centralCPosition stringTunings minimumFret tablatureFormat highStringOne stringOneTopmost",
-/* write */       "");
-
diff --git a/lily/template5.cc b/lily/template5.cc
deleted file mode 100644
index 8a71838252..0000000000
--- a/lily/template5.cc
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
-  template5.cc -- instantiate Intervals
-
-  source file of the GNU LilyPond music typesetter
-
-  (c) 1997--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-*/
-
-#include <limits.h>
-#include "string.hh"
-#include "moment.hh"
-#include "real.hh"
-#include "interval.tcc"
-#include "compare.hh"
-
-Rational
-Interval_t<Rational>::infinity ()
-{
-  Rational infty;
-  infty.set_infinite (1);
-  return infty;
-}
-
-String
-Interval_t<Rational>::T_to_string (Rational a)
-{
-  return a.to_string ();
-}
-
-
-
-template INTERVAL__INSTANTIATE (Rational);
diff --git a/lily/tempo-performer.cc b/lily/tempo-performer.cc
deleted file mode 100644
index 5a4a614d63..0000000000
--- a/lily/tempo-performer.cc
+++ /dev/null
@@ -1,85 +0,0 @@
-/*
-  tempo-performer.cc -- implement Tempo_performer
-
-  source file of the GNU LilyPond music typesetter
-
-  (c) 1997--2004 Jan Nieuwenhuizen <janneke@gnu.org>
-*/
-
-
-#include "audio-item.hh"
-#include "performer.hh"
-
-class Tempo_performer : public Performer
-{
-public:
-  TRANSLATOR_DECLARATIONS(Tempo_performer);
-  ~Tempo_performer ();
-
-protected:
-
-  virtual bool try_music (Music* req);
-  virtual void stop_translation_timestep ();
-  virtual void create_audio_elements ();
-
-private:
-Music* tempo_req_;
-  Audio_tempo* audio_;
-};
-
-Tempo_performer::Tempo_performer ()
-{
-  tempo_req_ = 0;
-  audio_ = 0;
-}
-
-Tempo_performer::~Tempo_performer ()
-{
-}
-
-
-void
-Tempo_performer::create_audio_elements ()
-{
-  if (tempo_req_)
-    {
-
-      SCM met = tempo_req_->get_mus_property ("metronome-count");
-      Duration *d = unsmob_duration (tempo_req_->get_mus_property ("tempo-unit"));
-      
-      Rational r =  (d->get_length () / Moment (Rational (1, 4)) * Moment (gh_scm2int (met))).main_part_;
-      
-      audio_ = new Audio_tempo (int (r));
-
-      Audio_element_info info (audio_, tempo_req_);
-      announce_element (info);
-      tempo_req_ = 0;
-    }
-}
-
-void
-Tempo_performer::stop_translation_timestep ()
-{
-  if (audio_)
-    {
-      play_element (audio_);
-      audio_ = 0;
-    }
-}
-
-bool
-Tempo_performer::try_music (Music* req)
-{
-  if (tempo_req_)
-    return false;
-
-      tempo_req_ = req;
-      return true;
-}
-
-
-
-
-ENTER_DESCRIPTION (Tempo_performer, "","",
-		   "metronome-change-event",
-		   "","","" );
diff --git a/lily/text-engraver.cc b/lily/text-engraver.cc
deleted file mode 100644
index f34701b2ab..0000000000
--- a/lily/text-engraver.cc
+++ /dev/null
@@ -1,142 +0,0 @@
-/*   
-  text-engraver.cc --  implement Text_engraver
-  
-  source file of the GNU LilyPond music typesetter
-  
-  (c) 1998--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-  
- */
-#include "directional-element-interface.hh"
-#include "engraver.hh"
-#include "side-position-interface.hh"
-#include "item.hh"
-#include "event.hh"
-#include "stem.hh"
-#include "rhythmic-head.hh"
-#include "text-item.hh"
-
-
-/**
-   typeset directions that are  plain text.
- */
-class Text_engraver : public Engraver
-{
-  Link_array<Music> reqs_;
-  Link_array<Item> texts_;
-public:
-  TRANSLATOR_DECLARATIONS(Text_engraver);
-protected:
-  virtual bool try_music (Music* m);
-  virtual void stop_translation_timestep ();
-  virtual void process_acknowledged_grobs ();
-  virtual void acknowledge_grob (Grob_info);
-};
-
-bool
-Text_engraver::try_music (Music *m)
-{
-  if (m->is_mus_type ("text-script-event"))
-    {
-      reqs_.push (m);
-      return true;
-    }
-  return false;
-}
-
-void
-Text_engraver::acknowledge_grob (Grob_info inf)
-{
-  if (Rhythmic_head::has_interface (inf.grob_))
-    {
-      for (int i=0; i < texts_.size (); i++)
-	{
-	  Grob*t = texts_[i];
-	  Side_position_interface::add_support (t,inf.grob_);
-
-	  /*
-	    ugh.
-	   */
-	  if (Side_position_interface::get_axis (t) == X_AXIS
-	      && !t->get_parent (Y_AXIS))
-	    t->set_parent (inf.grob_, Y_AXIS);
-	  else if (Side_position_interface::get_axis (t) == Y_AXIS
-	      && !t->get_parent (X_AXIS))
-	    t->set_parent (inf.grob_, X_AXIS);
-	}
-    }
-  
-  if (Stem::has_interface (inf.grob_))
-    {
-      for (int i=0; i < texts_.size (); i++)
-	{
-	  Side_position_interface::add_support (texts_[i],inf.grob_);
-	}
-    }
-}
-
-void
-Text_engraver::process_acknowledged_grobs ()
-{
-  if (texts_.size ())
-    return;
-  for (int i=0; i < reqs_.size (); i++)
-    {
-      Music * r = reqs_[i];
-      
-      // URG: Text vs TextScript
-      String basic = "TextScript";
-
-      Item *text = new Item (get_property (basic.to_str0 ()));
-
-      
-      Axis ax = Y_AXIS;
-      Side_position_interface::set_axis (text, ax);
-
-      // Hmm
-      int priority = 200;
-      SCM s = text->get_grob_property ("script-priority");
-      if (gh_number_p (s))
-	priority = gh_scm2int (s);
-      
-      /* see script-engraver.cc */
-      priority += i;
-      
-      text->set_grob_property ("script-priority", gh_int2scm (priority));
-
-      Direction dir = to_dir (r->get_mus_property ("direction"));
-      if (dir)
-	set_grob_direction (text, dir);
-
-
-      SCM mark = r->get_mus_property ("text");
-
-      text->set_grob_property ("text", mark);
-      announce_grob (text, r->self_scm ());
-      texts_.push (text);
-    }
-}
-
-void
-Text_engraver::stop_translation_timestep ()
-{
-  for (int i=0; i < texts_.size (); i++)
-    {
-      Item *ti = texts_[i];
-      typeset_grob (ti);
-    }
-  texts_.clear ();
-  reqs_.clear ();
-}
-
-
-Text_engraver::Text_engraver ()
-{
-}
-
-ENTER_DESCRIPTION(Text_engraver,
-/* descr */       "Create text-scripts",
-/* creats*/       "TextScript",
-/* accepts */     "text-script-event",
-/* acks  */      "rhythmic-head-interface stem-interface",
-/* reads */       "",
-/* write */       "");
diff --git a/lily/text-item.cc b/lily/text-item.cc
deleted file mode 100644
index c70ab7c74b..0000000000
--- a/lily/text-item.cc
+++ /dev/null
@@ -1,87 +0,0 @@
-/*   
-  text-item.cc -- implement Text_item
-
-  source file of the GNU LilyPond music typesetter
-  
-  (c) 1998--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-  Jan Nieuwenhuizen <janneke@gnu.org>
- */
-#include <math.h>
-
-#include "warn.hh"
-#include "grob.hh"
-#include "text-item.hh"
-#include "font-interface.hh"
-#include "virtual-font-metric.hh"
-#include "paper-def.hh"
-
-MAKE_SCHEME_CALLBACK(Text_item,interpret_markup,3);
-SCM
-Text_item::interpret_markup (SCM paper, SCM props, SCM markup)
-{
-  if (gh_string_p (markup))
-    {
-      Paper_def *pap = unsmob_paper (paper);
-      Font_metric *fm = select_font (pap, props);
-  
-      SCM list = scm_list_n (ly_symbol2scm ("text"), markup, SCM_UNDEFINED);
-      
-      if (dynamic_cast<Virtual_font_metric*> (fm))
-	{
-	  /*
-	    ARGH.
-	  */
-	  programming_error ("Can't use virtual font for text.");
-	}
-      else
-	list = fontify_atom (fm, list);
-
-      Box b = fm->text_dimension (ly_scm2string (markup));
-      return Molecule (b, list).smobbed_copy();
-    }
-  else if (gh_pair_p (markup))
-    {
-      SCM func = gh_car (markup);
-      SCM args = gh_cdr (markup);
-      if (!markup_p (markup))
-	programming_error ("Markup head has no markup signature.");
-      
-      return scm_apply_2 (func, paper, props, args);
-    }
-  else
-    {
-      return SCM_EOL;
-    }
-}
-
-MAKE_SCHEME_CALLBACK(Text_item,print,1);
-SCM
-Text_item::print (SCM grob)
-{
-  Grob * me = unsmob_grob (grob);
-  
-  SCM t = me->get_grob_property ("text");
-  SCM chain = Font_interface::font_alist_chain (me);
-  return interpret_markup (me->get_paper ()->self_scm (), chain, t);
-}
-
-
-/*
-  Ugh. Duplicated from Scheme.
- */
-bool
-Text_item::markup_p (SCM x)
-{
-  return
-    gh_string_p (x) ||
-    (gh_pair_p (x)
-     && SCM_BOOL_F != scm_object_property (gh_car (x), ly_symbol2scm ("markup-signature")));
-}
-
-ADD_INTERFACE (Text_item,"text-interface",
-  "A scheme markup text, see @ref{Markup functions}.",
-  "text baseline-skip word-space");
-
-
-
-
diff --git a/lily/text-spanner-engraver.cc b/lily/text-spanner-engraver.cc
deleted file mode 100644
index 29814d752b..0000000000
--- a/lily/text-spanner-engraver.cc
+++ /dev/null
@@ -1,155 +0,0 @@
-/*
-  text-spanner-engraver.cc -- implement Text_spanner_engraver
-
-  source file of the GNU LilyPond music typesetter
-
-  (c) 2000--2004 Jan Nieuwenhuizen <janneke@gnu.org>
-*/
-
-#include "note-column.hh"
-#include "item.hh"
-#include "side-position-interface.hh"
-#include "engraver.hh"
-
-class Text_spanner_engraver : public Engraver
-{
-public:
-  TRANSLATOR_DECLARATIONS(Text_spanner_engraver);  
-protected:
-  virtual void finalize ();
-  virtual void acknowledge_grob (Grob_info);
-  virtual bool try_music (Music *);
-  virtual void stop_translation_timestep ();
-  virtual void process_music ();
-
-private:
-  Spanner *span_;
-  Spanner *finished_;
-  Music *current_req_;
-  Drul_array<Music*> req_drul_;
-  void typeset_all ();
-};
-
-
-Text_spanner_engraver::Text_spanner_engraver ()
-{
-  finished_ = 0;
-  current_req_ = 0;
-  span_ =0;
-  req_drul_[START] = 0;
-  req_drul_[STOP] = 0;
-}
-
-bool
-Text_spanner_engraver::try_music (Music *m)
-{
-  if (m->is_mus_type ("text-span-event"))
-    {
-
-      Direction d = to_dir (m->get_mus_property ("span-direction"));
-      req_drul_[d] = m;
-      return true;
-    }
-
-  return false;
-}
-
-void
-Text_spanner_engraver::process_music ()
-{
-  if (req_drul_[STOP])
-    {
-      if (!span_)
-	{
-	  req_drul_[STOP]->origin ()->warning
- (_ ("can't find start of text spanner"));
-	}
-      else
-	{
-	  finished_ = span_;
-	  span_ = 0;
-	  current_req_ = 0;
-	}
-    }
-
-  if (req_drul_[START])
-    {
-      if (current_req_)
-	{
-	  req_drul_[START]->origin ()->warning(_ ("already have a text spanner"));
-	}
-      else
-	{
-	  current_req_ = req_drul_[START];
-	  span_  = make_spanner ("TextSpanner");
-
-	  
-	  Side_position_interface::set_axis (span_, Y_AXIS);
-	  announce_grob (span_, req_drul_[START]->self_scm());
-	  req_drul_[START] = 0;
-	}
-    }
-}
-
-void
-Text_spanner_engraver::acknowledge_grob (Grob_info info)
-{
-  Spanner * spans[2] ={span_, finished_};
-  for (int i = 0;  i < 2 ; i++)
-    {
-      if (spans[i] && Note_column::has_interface (info.grob_))
-	{
-	  Side_position_interface::add_support (spans[i], info.grob_);
-	  add_bound_item (spans[i], dynamic_cast<Item*> (info.grob_));
-	}
-    }
-}
-
-void
-Text_spanner_engraver::typeset_all ()
-{  
-  if (finished_)
-    {
-      if (!finished_->get_bound (RIGHT))
-	{
-	  Grob* e = unsmob_grob (get_property ("currentMusicalColumn"));
-	  finished_->set_bound (RIGHT, e);
-	}
-      typeset_grob (finished_);
-      finished_ = 0;
-    }
-}
-
-void
-Text_spanner_engraver::stop_translation_timestep ()
-{
-  if (span_ && !span_->get_bound (LEFT))
-    {
-      Grob* e = unsmob_grob (get_property ("currentMusicalColumn"));
-      span_->set_bound (LEFT, e);
-    }
-
-  typeset_all ();
-  req_drul_[START] = 0;
-  req_drul_[STOP] = 0;
-}
-
-void
-Text_spanner_engraver::finalize ()
-{
-  typeset_all ();
-  if (span_)
-    {
-      current_req_->origin ()->warning (_ ("unterminated text spanner"));
-      span_->suicide ();
-      span_ = 0;
-    }
-}
-
-ENTER_DESCRIPTION(Text_spanner_engraver,
-/* descr */       "Create text spanner from a Music.",
-/* creats*/       "TextSpanner",
-/* accepts */     "text-span-event",
-/* acks  */      "note-column-interface",
-/* reads */       "",
-/* write */       "");
diff --git a/lily/text-spanner.cc b/lily/text-spanner.cc
deleted file mode 100644
index f88df10985..0000000000
--- a/lily/text-spanner.cc
+++ /dev/null
@@ -1,160 +0,0 @@
-/*
-  text-spanner.cc -- implement Text_spanner
-
-  source file of the GNU LilyPond music typesetter
-
-  (c) 2000--2004 Jan Nieuwenhuizen <janneke@gnu.org>
-
-  Revised over good by Han-Wen. 
-*/
-
-#include "molecule.hh"
-#include "text-item.hh"
-#include "text-spanner.hh"
-#include "line-spanner.hh"
-#include "spanner.hh"
-#include "font-interface.hh"
-#include "dimensions.hh"
-#include "paper-def.hh"
-#include "warn.hh"
-#include "paper-column.hh"
-#include "staff-symbol-referencer.hh"
-
-/*
-  TODO:
-  - vertical start / vertical end (fixme-name) |
-  - contination types (vert. star, vert. end)  |-> eat volta-bracket
-  - more styles
-  - more texts/positions
-*/
-
-MAKE_SCHEME_CALLBACK (Text_spanner, print, 1);
-
-/*
-  TODO: this function is too long
-*/
-SCM
-Text_spanner::print (SCM smob) 
-{
-  Grob *me= unsmob_grob (smob);
-  Spanner *spanner = dynamic_cast<Spanner*> (me);
-  
-  /* Ugh, must be same as Hairpin::print.  */
-
-  Grob *common = spanner->get_bound (LEFT)->common_refpoint (spanner->get_bound (RIGHT), X_AXIS);
-  Paper_def * paper = me->get_paper();
-
-  SCM flare = me->get_grob_property ("bracket-flare");
-  SCM shorten = me->get_grob_property ("shorten-pair");
-
-  Interval span_points;
-  Drul_array<bool> broken;
-  Direction d = LEFT;
-  do
-    {
-      Item *b = spanner->get_bound (d);
-      broken[d] = b->break_status_dir () != CENTER;
-
-      if (broken[d])
-	{
-	  if (d == LEFT)
-	    span_points[d] = spanner->get_broken_left_end_align ();
-	  else
-	    span_points[d] = b->relative_coordinate (common, X_AXIS);
-	}
-      else
-	  {
-	    Real encl = robust_scm2double (me->get_grob_property ("enclose-bounds"), 0.0);
-	    span_points[d] = b->extent (common, X_AXIS).linear_combination (d * encl);
-
-	    if (is_number_pair (shorten))
-	      span_points -= d * gh_scm2double (index_get_cell (shorten, d));
-	  }
-      
-      if (is_number_pair (flare))
-	span_points -= d * gh_scm2double (index_get_cell (flare, d));
-    }
-  while (flip (&d) != LEFT);
-
-
-  SCM properties = Font_interface::font_alist_chain (me);
-  SCM edge_text = me->get_grob_property ("edge-text");
-  Drul_array<Molecule> edge;
-  if (gh_pair_p (edge_text))
-    {
-      Direction d = LEFT;
-      do
-	{
-	  if (!to_boolean (me->get_grob_property ("text-repeat-if-broken"))
-	      && broken[d])
-	    continue;
-	  
-	  SCM text = index_get_cell (edge_text, d);
-
-	  if (Text_item::markup_p (text)) 
-	    edge[d] = *unsmob_molecule (Text_item::interpret_markup (paper->self_scm (), properties, text));
-	  
-	  if (!edge[d].is_empty ())
-	    edge[d].align_to (Y_AXIS, CENTER);
-	}
-      while (flip (&d) != LEFT);
-    }
-  
-  Drul_array<Real> edge_height = robust_scm2interval (me->get_grob_property ("edge-height"),
-						      Interval (0.0, 0.0));
-  Drul_array<Molecule> edge_line;
-    {
-      Direction d = LEFT;
-      int dir = to_dir (me->get_grob_property ("direction"));
-      do
-	{
-	  if (broken[d])
-	    continue;
-	  
-	  Real dx = 0.0;
-	  if (is_number_pair (flare))
-	    dx = gh_scm2double (index_get_cell (flare, d)) * d;
-
-	  Real dy = - dir * edge_height[d] ;
-	  if (dy)
-	    edge_line[d] = Line_spanner::line_molecule (me, Offset(0,0), Offset (dx, dy));
-	}
-      while (flip (&d) != LEFT);
-    }
-  
-  Molecule m;
-  do
-    {
-      Interval ext = edge[d].extent (X_AXIS);
-      if (!ext.is_empty ())
-	{
-	  edge[d].translate_axis (span_points[d], X_AXIS);
-	  m.add_molecule (edge[d]);
-	  span_points[d] += -d *  ext[-d];
-	}
-    }
-  while (flip (&d) != LEFT);
-  do
-    {
-      if (d* span_points[d] > d * edge[-d].extent(X_AXIS)[d])
-	{
-	  edge_line[d].translate_axis (span_points[d], X_AXIS);
-	  m.add_molecule (edge_line[d]);
-	}
-    }
-  while (flip (&d) != LEFT);
-
-  if (!span_points.is_empty ())
-    {
-      Molecule l =Line_spanner::line_molecule (me, Offset (span_points[LEFT], 0),
-					       Offset (span_points[RIGHT], 0));
-      m.add_molecule (l);
-    }
-  m.translate_axis (- me->relative_coordinate (common, X_AXIS), X_AXIS);
-  return m.smobbed_copy ();
-}
-
-ADD_INTERFACE (Text_spanner,"text-spanner-interface",
-	       "generic text spanner",
-	       "text-repeat-if-broken dash-period if-text-padding dash-fraction edge-height bracket-flare edge-text shorten-pair style thickness enclose-bounds");
-
diff --git a/lily/tfm-reader.cc b/lily/tfm-reader.cc
deleted file mode 100644
index 2e3b1148c9..0000000000
--- a/lily/tfm-reader.cc
+++ /dev/null
@@ -1,298 +0,0 @@
-/*   
-  tfm-reader.cc --  implement Tex_font_metric_reader
-  
-  source file of the GNU LilyPond music typesetter
-  
-  (c) 1999--2004 Jan Nieuwenhuizen <janneke@gnu.org>
-  
-
-  some code shamelessly copied from GNU fontutils-0.6/tfm/tfm_input.c
- */
-
-#include "tfm-reader.hh"
-#include "string-convert.hh"
-#include "warn.hh"
-#include "warn.hh"
-
-#define format_string String_convert::form_string
-#define FIX_UNITY \
- (1 << 20)
-static const Real fix_to_real (Fix f);
-
-
-Tex_font_metric_reader::Tex_font_metric_reader (String name)
-  : input_ (name)
-{
-  
-  for (int i=0; i < TFM_SIZE; i++)
-    ascii_to_metric_idx_.push (-1);
-
-  read_header ();
-  read_params ();
-  read_char_metrics ();
-
-}
-
-static const Real
-fix_to_real (Fix f)
-{
-  Real r = f / FIX_UNITY + ((Real) (f % FIX_UNITY) / (Real) FIX_UNITY);
-  return r;
-}
-
-/* Most quantities are fixed-point fractions.  */
-
-Real
-Tex_font_metric_reader::get_U32_fix ()
-{
-  return fix_to_real (input_.get_U32 ());
-}
-
-/* Dimensions are a `Fix' scaled by the design size.  */
-
-Real
-Tex_font_metric_reader::get_U32_fix_scaled ()
-{
-  return get_U32_fix () * info_.design_size;
-}
-
-String
-Tex_font_metric_reader::get_bcpl_string ()
-{
-  U8 length_u8 = input_.get_U8 ();
-  String str = input_.get_string (length_u8);
-  return str;
-}
-
-/* Here we read the information at the beginning of the file.  We store
-   the result into the static variables `global_info' and
-   `tfm_header'.  */
-void
-Tex_font_metric_reader::read_header ()
-{
-  U16 file_length = input_.get_U16 ();
- (void) file_length;
-  U16 header_length = input_.get_U16 ();
-
-  info_.first_charcode = input_.get_U16 ();
-  info_.last_charcode = input_.get_U16 ();
-  U16 width_word_count = input_.get_U16 ();
-  U16 height_word_count = input_.get_U16 ();
-  U16 depth_word_count = input_.get_U16 ();
-  U16 italic_correction_word_count = input_.get_U16 ();
-  U16 lig_kern_word_count = input_.get_U16 ();
-  U16 kern_word_count = input_.get_U16 ();
- (void)kern_word_count;
-  U16 extensible_word_count = input_.get_U16 ();
- (void)extensible_word_count;
-  
-  header_.param_word_count = input_.get_U16 ();
-  info_.parameter_count = header_.param_word_count;
-
-  header_.char_info_pos = (6 + header_length) * 4;
-  header_.width_pos = header_.char_info_pos
-                         + (info_.last_charcode
-                            - info_.first_charcode + 1) * 4;
-  header_.height_pos = header_.width_pos + width_word_count * 4;
-  header_.depth_pos = header_.height_pos + height_word_count * 4;
-  header_.italic_correction_pos = header_.depth_pos
-                                     + depth_word_count * 4;
-  header_.lig_kern_pos = header_.italic_correction_pos
-    + italic_correction_word_count * 4;
-  header_.kern_pos = header_.lig_kern_pos + lig_kern_word_count * 4;
-  /* We don't care about the extensible table.  */
-
-  if (header_length < 2)
-    /* Not using ngettext's plural feature here, as this message is
-       more of a programming error.  */
-    error (_f ("TFM header of `%s' has only %u word (s)",
-	       input_.name_string ().to_str0 (), header_length));
-
-  info_.checksum = input_.get_U32 ();
-  info_.design_size = get_U32_fix ();
-
-  /* Although the coding scheme might be interesting to the caller, the
-     font family and face byte probably aren't.  So we don't read them.  */
-  info_.coding_scheme = header_length > 2
-    ? get_bcpl_string () : "unspecified";
-
-}
-
-/* Although TFM files are only usable by TeX if they have at least seven
-   parameters, that is not a requirement of the file format itself, so
-   we don't impose it.  And they can have many more than seven, of
-   course.  We do impose a limit of TFM_MAX_FONT_PARAMETERS.  We assume
-   that `tfm_header' has already been filled in.  */
-
-void
-Tex_font_metric_reader::read_params ()
-{
-  /* If we have no font parameters at all, we're done.  */
-  if (header_.param_word_count == 0)
-    return;
-
-  //brrr
-  /* Move to the beginning of the parameter table in the file.  */
-  input_.seek_str0 (-4 * header_.param_word_count);
-
-  /* It's unlikely but possible that this TFM file has more fontdimens
-     than we can deal with.  */
-  if (header_.param_word_count > TFM_MAX_FONTDIMENS)
-    {
-      warning (_f ("%s: TFM file has %u parameters, which is more than the %u I can handle",
-		   input_.name_string ().to_str0 (),
-		   header_.param_word_count,
-		   TFM_MAX_FONTDIMENS));
-      header_.param_word_count = TFM_MAX_FONTDIMENS;
-    }
-
-  /* The first parameter is different than all the rest, because it
-     isn't scaled by the design size.  */
-  info_.parameters[ (TFM_SLANT_PARAMETER) - 1] = get_U32_fix ();
-
-  for (Char_code i = 2; i <= header_.param_word_count; i++)
-    info_.parameters[i - 1] = get_U32_fix_scaled ();
-
-}
-
-/* Read every character in the TFM file, storing the result in the
-   static `tfm_char_table'.  We return a copy of that variable.  */
-
-void
-Tex_font_metric_reader::read_char_metrics ()
-{
-  for (int i = info_.first_charcode; i <= info_.last_charcode; i++)
-    {
-      Tex_font_char_metric tfm_char = read_char_metric (i);
-      if (tfm_char.exists_b_)
-	ascii_to_metric_idx_[tfm_char.code_] = char_metrics_.size ();
-      char_metrics_.push (tfm_char);
-    }
-}
-
-/* Read the character CODE.  If the character doesn't exist, return
-   NULL.  If it does, save the information in `tfm_char_table', as well
-   as returning it.  */
-
-Tex_font_char_metric
-Tex_font_metric_reader::read_char_metric (Char_code code)
-{
-  Tex_font_char_metric tfm_char;
-
-  /* If the character is outside the declared bounds in the file, don't
-     try to read it. */
-  if (code < info_.first_charcode || code > info_.last_charcode)
-    return tfm_char;
-  
-  //brr
-  /* Move to the appropriate place in the `char_info' array.  */
-  input_.seek_str0 (header_.char_info_pos + (code - info_.first_charcode) * 4);
-
-  /* Read the character.  */
-  tfm_char = read_char ();
-
-  if (tfm_char.exists_b_)
-    tfm_char.code_ = code;
-
-  return tfm_char;
-}
-
-
-/* We assume we are positioned at the beginning of a `char_info' word.
-   We read that word to get the indexes into the dimension tables; then
-   we go read the tables to get the values (if the character exists).  */
-
-Tex_font_char_metric
-Tex_font_metric_reader::read_char ()
-{
-  /* Read the char_info word.  */
-  U8 width_index = input_.get_U8 ();
-
-  U8 packed;
-  packed = input_.get_U8 ();
-  U8 height_index = (packed & 0xf0) >> 4;
-  U8 depth_index = packed & 0x0f;
-
-  packed = input_.get_U8 ();
-  U8 italic_correction_index = (packed & 0xfc) >> 6;
-  U8 tag = packed & 0x3;
-
-  U8 remainder = input_.get_U8 ();
-
-  Tex_font_char_metric tfm_char;
-
-#define GET_CHAR_DIMEN(d) \
-   if (d##_index != 0) \
-     { \
-       input_.seek_str0 (header_. d##_pos + d##_index*4); \
-       tfm_char.d##_fix_ = input_.get_U32 (); \
-       tfm_char.d##_ = fix_to_real (tfm_char.d##_fix_) \
-                      * info_.design_size; \
-     }
-
-  GET_CHAR_DIMEN (width);
-  GET_CHAR_DIMEN (height);
-  GET_CHAR_DIMEN (depth);
-  GET_CHAR_DIMEN (italic_correction);
-
-  /* The other condition for a character existing is that it be between
-     the first and last character codes given in the header.  We've
-     already assumed that's true (or we couldn't be positioned at a
-     `char_info_word').  */
-  tfm_char.exists_b_ = width_index != 0;
-
-  if (tag == 1)
-    {
-      input_.seek_str0 (header_.lig_kern_pos + remainder * 4);
-      read_lig_kern_program (&tfm_char.ligatures_, &tfm_char.kerns_);
-    }
-
-  /* We don't handle the other tags.  */
-  return tfm_char;
-}
-
-/* Read a ligature/kern program at the current position, storing the
-   result into *LIGATURE and *KERN.  We don't distinguish all the kinds
-   of ligatures that Metafont can output.  */
-
-#define STOP_FLAG 128
-#define KERN_FLAG 128
-
-void
-Tex_font_metric_reader::read_lig_kern_program (Array <Tfm_ligature>* ligatures, Array <Tfm_kern>* kerns)
-{
-  bool end_b;
-
-  do
-    {
-      end_b = input_.get_U8 () >= STOP_FLAG;
-
-      U8 next_char = input_.get_U8 ();
-      bool kern_step_b = input_.get_U8 () >= KERN_FLAG;
-      U8 remainder = input_.get_U8 ();
-
-
-      if (kern_step_b)
-	{
-	  Tfm_kern kern_element;
-	  kern_element.character = next_char;
-
-	  char const* old_pos = input_.pos_str0 ();
-	  input_.seek_str0 (header_.kern_pos + remainder * 4);
-	  kern_element.kern = get_U32_fix_scaled ();
-	  input_.set_pos (old_pos);
-
-	  kerns->push (kern_element);
-
-	}
-      else
-	{
-	  Tfm_ligature ligature_element;
-	  ligature_element.character = next_char;
-	  ligature_element.ligature = remainder;
-	  ligatures->push (ligature_element);
-
-	}
-  } while (!end_b);
-}
-
diff --git a/lily/tfm.cc b/lily/tfm.cc
deleted file mode 100644
index 5529c0b189..0000000000
--- a/lily/tfm.cc
+++ /dev/null
@@ -1,135 +0,0 @@
-/*   
-  tfm.cc -- implement Tex_font_metric
-  
-  source file of the GNU LilyPond music typesetter
-  
-  (c) 1999--2004 Jan Nieuwenhuizen <janneke@gnu.org>
-  
-
-  some code shamelessly copied from GNU fontutils-0.6/tfm/tfm_input.c
- */
-
-#include "tfm.hh"
-#include "tfm-reader.hh"
-#include "string-convert.hh"
-#include "warn.hh"
-#include "warn.hh"
-#include "dimensions.hh"
-
-Box
-Tex_font_char_metric::dimensions () const
-{
-  if (!exists_b_)
-    {
-      Box b;
-      b.set_empty ();
-      return b;
-    }
-  
-  Real d = -depth_;
-
-  Real point_constant = 1 PT;
-  
-  return Box (Interval (0, width_*point_constant ),
-	      Interval ((d <? height_)*point_constant,
-			(d >? height_)*point_constant));
-}
-
-Tex_font_char_metric::Tex_font_char_metric ()
-{
-  exists_b_ = false;
-  code_ = 0;;
-  width_ = 0;
-  height_ = 0;
-  depth_ = 0;
-  italic_correction_ = 0;
-  width_fix_ = 0;
-  height_fix_ = 0;
-  depth_fix_ = 0;
-  italic_correction_fix_ = 0;
-}
-
-#define APPEND_CHAR_METRIC_ELT(k)  outstr += ::to_string (#k) + " "  + ::to_string (k ## _)  + "; "
-
-String
-Tex_font_char_metric::to_string () const
-{
-  String outstr ;
-
-  APPEND_CHAR_METRIC_ELT (exists_b);
-  APPEND_CHAR_METRIC_ELT (code);
-  APPEND_CHAR_METRIC_ELT (width);
-  APPEND_CHAR_METRIC_ELT (height);
-  APPEND_CHAR_METRIC_ELT (depth);
-  APPEND_CHAR_METRIC_ELT (italic_correction);
-  
-  return outstr + "\n";
-}
-
-Tex_font_metric::Tex_font_metric ()
-{
-}
-
-
-static Tex_font_char_metric dummy_static_char_metric;
-
-Tex_font_char_metric const *
-Tex_font_metric::find_ascii (int ascii, bool warn) const
-{
-  if (ascii >= 0 && ascii < ascii_to_metric_idx_.size () && ascii_to_metric_idx_[ascii] >= 0)
-    return & char_metrics_[ascii_to_metric_idx_ [ascii]];
-  else if (warn)
-    {
-      warning (_f ("can't find ascii character: %d", ascii));
-    }
-  return &dummy_static_char_metric;  
-}
-
-
-/*
-  UGH: glyphs need not be consecutive in TFM.
- */
-int
-Tex_font_metric::count () const
-{
-  for (int i = ascii_to_metric_idx_.size (); i--;)
-    {
-      if (ascii_to_metric_idx_[i] != -1)
-	return i + 1;
-    }
-  return 0;
-}
-
-Box
-Tex_font_metric::get_ascii_char (int a) const
-{
-  Box b = find_ascii (a)->dimensions () ;
-  return b;
-}
-
-String
-Tex_font_metric::to_string () const
-{
-  String outstr;
-  for (int i=0; i < char_metrics_.size (); i++)
-    outstr += char_metrics_[i].to_string ();
-  
-  return outstr;
-}
-
-
-
-
-SCM
-Tex_font_metric::make_tfm (String fn)
-{
-  Tex_font_metric * tfm = new Tex_font_metric;
-  Tex_font_metric_reader reader (fn);
-
-  tfm->info_ = reader.info_;
-  tfm->header_ = reader.header_;
-  tfm->char_metrics_ = reader.char_metrics_;
-  tfm->ascii_to_metric_idx_ = reader.ascii_to_metric_idx_;
-  
-  return tfm->self_scm ();
-}
diff --git a/lily/tie-column.cc b/lily/tie-column.cc
deleted file mode 100644
index 44208c234f..0000000000
--- a/lily/tie-column.cc
+++ /dev/null
@@ -1,208 +0,0 @@
-/*   
-  tie-column.cc --  implement Tie_column
-  
-  source file of the GNU LilyPond music typesetter
-  
-  (c) 2000--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-  
- */
-
-#include "spanner.hh"
-#include "tie-column.hh"
-#include "group-interface.hh"
-#include "tie.hh"
-#include "directional-element-interface.hh"
-#include "rhythmic-head.hh"
-
-
-
-
-
-
-/*
-  tie dir depends on what Tie_column does.
-*/
-/*
-  TODO: this doesn't follow standard pattern. Regularize.
- */
-void
-Tie_column::add_tie (Grob*me,Grob *s)
-{
-  if (s->get_parent (Y_AXIS)
-      && Tie_column::has_interface (s->get_parent (Y_AXIS)))
-    return ;
-  
-  if (!  Pointer_group_interface::count (me, "ties"))
-    {
-      dynamic_cast<Spanner*> (me)->set_bound (LEFT, Tie::head (s,LEFT));
-      dynamic_cast<Spanner*> (me)->set_bound (RIGHT, Tie::head (s,RIGHT));
-    }
-  s->set_parent (me, Y_AXIS);
-  Pointer_group_interface::add_grob (me, ly_symbol2scm ("ties"), s);
-  s->add_dependency (me);
-}
-
-
-void
-Tie_column::set_directions (Grob*me)
-{
-  werner_directions (me);
-}
-
-int
-tie_compare (Grob* const & s1,
-	     Grob* const & s2)
-{
-  return sign (Tie::get_position (s1) - Tie::get_position (s2));
-}
-
-/*
-  See [Ross p. 138].
-
-
-  In normal chord cases, the outer ties point outwards, and the
-  direction of the rest is determined by their staff position.
-
-  Ross forgets about the tie that is *on* the middle staff line. We
-  assume it goes UP. (TODO: make me settable) */
-void
-Tie_column::old_directions (Grob*me)
-{
-  Link_array<Grob> ties =
-    Pointer_group_interface__extract_grobs (me, (Grob*)0, "ties");
-
-  for (int i = ties.size (); i--;)
-    if (get_grob_direction (ties[i]))
-      ties.del (i);
-
-  if (!ties.size ())
-    return ;
-
-  Direction d = get_grob_direction (me);
-  if (d)
-    {
-      for (int i = ties.size (); i--;)
-	{
-	  Grob *  t = ties[i];
-	  set_grob_direction (t, d);
-	}
-      return;
-    }
-  
-  if (ties.size () == 1)
-    {
-      Grob *  t = ties[0];      
-      set_grob_direction (t,Tie::get_default_dir (t));
-      return;
-    }
-  
-  ties.sort (tie_compare);
-  set_grob_direction (ties[0], DOWN);
-  ties.del (0);
-  
-  set_grob_direction (ties.pop (), UP);
-  for (int i=ties.size (); i--;)
-    {
-      Grob *  t = ties[i];
-      Real p = Tie::get_position (t);
-      Direction d = (Direction) sign (p);
-      if (!d)
-	d = UP;
-      set_grob_direction (t, d);
-    }
-  
-}
-
-/*
-  
-% . The algorithm to choose the direction of the ties doesn't work
-%   properly.  I suggest the following for applying ties sequentially
-%   from top to bottom:
-%
-%     + The topmost tie is always `up'.
-%
-%     + If there is a vertical gap to the last note above larger than
-%       or equal to a fifth (or sixth?), the tie is `up', otherwise it
-%       is `down'.
-%
-%     + The bottommost tie is always `down'.
-
- */
-void
-Tie_column::werner_directions (Grob *me)
-{
-  Link_array<Grob> ties =
-    Pointer_group_interface__extract_grobs (me, (Grob*)0, "ties");
-
-  if (!ties.size ())
-    return ;
-  
-  ties.sort (tie_compare);
-
-  Direction d = get_grob_direction (me);
-  if (d)
-    {
-      for (int i = ties.size (); i--;)
-	{
-	  Grob *  t = ties[i];
-	  if (!get_grob_direction (t))
-	    set_grob_direction (t, d);
-	}
-      return ;
-    }
-  
-  if (ties.size () == 1)
-    {
-      Grob *  t = ties[0];
-      if (t->live ()
-	  && !get_grob_direction (t))
-	set_grob_direction (t,Tie::get_default_dir (t));
-      return ;
-    }
-
-  Real last_down_pos = 10000;
-  if (!get_grob_direction (ties[0]))
-    set_grob_direction (ties[0], DOWN);
-  
-  for (int i = ties.size (); i--;)
-    {
-      Grob *t = ties[i];
-      
-      Direction d = get_grob_direction (t);
-      Real p  = Tie::get_position (t);
-      if (!d)
-	{
-	  if (last_down_pos - p  > 5)
-	    {
-	      d = UP;
-	    }
-	  else
-	    {
-	      d = DOWN;
-	    }
-
-	  set_grob_direction (t, d);
-	}
-
-      if (d == DOWN)
-	last_down_pos = p;
-    }
-
-  return ;
-}
-
-
-MAKE_SCHEME_CALLBACK (Tie_column,after_line_breaking,1);
-SCM
-Tie_column::after_line_breaking (SCM smob)
-{
-  werner_directions (unsmob_grob (smob));
-  return SCM_UNSPECIFIED;
-}
-
-
-
-ADD_INTERFACE (Tie_column,"tie-column-interface",
-  "that sets tie directions in a tied chord",
-  "direction");
-
diff --git a/lily/tie-engraver.cc b/lily/tie-engraver.cc
deleted file mode 100644
index 7b4232d2ff..0000000000
--- a/lily/tie-engraver.cc
+++ /dev/null
@@ -1,197 +0,0 @@
-/*   
-  new-tie-engraver.cc --  implement Tie_engraver
-  
-  source file of the GNU LilyPond music typesetter
-  
-  (c) 1998--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-  
- */
-
-#include "event.hh"
-#include "tie.hh"
-#include "translator-group.hh"
-#include "spanner.hh"
-#include "tie-column.hh"
-#include "engraver.hh"
-#include "item.hh"
-#include "grob-pitch-tuple.hh"
-#include "warn.hh"
-#include "note-head.hh"
-#include "staff-symbol-referencer.hh"
-
-/**
-   Manufacture ties.  Acknowledge noteheads, and put them into a
-   priority queue. If we have a TieEvent, connect the notes that finish
-   just at this time, and note that start at this time.
-
-   TODO: Remove the dependency on musical info. We should tie on the
-   basis of position and duration-log of the heads (not of the events).
-
-   TODO: support sparseTies.
-
-   TODO: melismata will fuck up now:
-
-   < { c8 ~ c8 }
-     { c16 c c c  } >
-
-   melisma is after the 2nd 8th note, but will now be signaled as
-   lasting till the 3rd 16th.
-*/
-class Tie_engraver : public Engraver
-{
-  Music *event_;
-  Music *last_event_;
-  Link_array<Grob> now_heads_;
-  Link_array<Grob> heads_to_tie_;
-  Link_array<Grob> ties_;
-  
-  Spanner * tie_column_;
-  
-protected:
-  virtual void stop_translation_timestep ();
-  virtual void start_translation_timestep ();
-  virtual void acknowledge_grob (Grob_info);
-  virtual bool try_music (Music*);
-  virtual void process_music ();
-  void typeset_tie (Grob*);
-public:
-  TRANSLATOR_DECLARATIONS(Tie_engraver);
-};
-
-
-
-Tie_engraver::Tie_engraver ()
-{
-  event_ = 0;
-  last_event_  = 0;
-  tie_column_ = 0;
-}
-
-
-bool
-Tie_engraver::try_music (Music *mus)
-{
-  if (mus->is_mus_type ("tie-event"))
-    {
-      event_ = mus;
-    }
-  
-  return true;
-}
-
-void
-Tie_engraver::process_music ()
-{
-  if (event_)
-    daddy_trans_->set_property ("tieMelismaBusy", SCM_BOOL_T);
-}
-
-void
-Tie_engraver::acknowledge_grob (Grob_info i)
-{
-  if (Note_head::has_interface (i.grob_))
-    {
-      Grob * h  = i.grob_;
-      now_heads_.push (h);
-      for  (int i = heads_to_tie_.size (); i--;)
-	{
-	  Grob *th =  heads_to_tie_[i];
-	  Music * right_mus = unsmob_music (h->get_grob_property ("cause"));
-	  Music * left_mus = unsmob_music (th->get_grob_property ("cause"));
-
-	  /*
-	    maybe should check positions too.
-	   */
-	  if (right_mus && left_mus
-	      && gh_equal_p (right_mus->get_mus_property ("pitch"),
-			     left_mus->get_mus_property ("pitch")))
-	    {
-	      Grob * p = make_spanner ("Tie");
-	      Tie::set_interface (p); // cannot remove yet!
-	  
-	      Tie::set_head (p, LEFT, th);
-	      Tie::set_head (p, RIGHT, h);
-	  
-	      ties_.push (p);
-	      announce_grob(p, last_event_->self_scm());
-	    }
-	}
-
-      if (ties_.size () && ! tie_column_)
-	{
-	  tie_column_ = make_spanner ("TieColumn");
-	  announce_grob(tie_column_, SCM_EOL);
-	}
-
-      if (tie_column_)
-	for (int i = ties_.size (); i--;)
-	  Tie_column::add_tie (tie_column_,ties_ [i]);
-    }
-}
-
-void
-Tie_engraver::start_translation_timestep ()
-{
-  daddy_trans_->set_property ("tieMelismaBusy",
-			      gh_bool2scm (heads_to_tie_.size ()));
-      
-}
-
-void
-Tie_engraver::stop_translation_timestep ()
-{
-  if (ties_.size ())
-    {
-      heads_to_tie_.clear ();
-      for (int i=0; i<  ties_.size (); i++)
-	{
-	  typeset_tie (ties_[i]);
-	}
-
-      ties_.clear();
-      last_event_ = 0;
-      if (tie_column_)
-	{
-	  typeset_grob (tie_column_);
-	  tie_column_ =0;
-	}
-    }
-  
-  if (event_)
-    {
-      heads_to_tie_ = now_heads_;
-      last_event_ = event_;
-    }
-  event_ = 0;
-  now_heads_.clear ();
-}
-
-void
-Tie_engraver::typeset_tie (Grob *her)
-{
-  if (! (Tie::head (her,LEFT) && Tie::head (her,RIGHT)))
-    warning (_ ("lonely tie"));
-
-  Direction d = LEFT;
-  Drul_array<Grob *> new_head_drul;
-  new_head_drul[LEFT] = Tie::head (her,LEFT);
-  new_head_drul[RIGHT] = Tie::head (her,RIGHT);  
-  do {
-    if (!Tie::head (her,d))
-      new_head_drul[d] = Tie::head (her, (Direction)-d);
-  } while (flip (&d) != LEFT);
-
-  index_set_cell (her->get_grob_property ("head-pair"), LEFT, new_head_drul[LEFT]->self_scm ());
-  index_set_cell (her->get_grob_property ("head-pair"), RIGHT, new_head_drul[RIGHT]->self_scm ());
-
-  typeset_grob (her);
-}
-
-
-ENTER_DESCRIPTION(Tie_engraver,
-/* descr */       "Generate ties between noteheads of equal pitch.",
-/* creats*/       "Tie TieColumn",
-/* accepts */     "tie-event",
-/* acks  */      "rhythmic-head-interface",
-/* reads */       "tieMelismaBusy",
-/* write */       "");
diff --git a/lily/tie-performer.cc b/lily/tie-performer.cc
deleted file mode 100644
index 5d16b88b01..0000000000
--- a/lily/tie-performer.cc
+++ /dev/null
@@ -1,223 +0,0 @@
-/*   
-  tie-performer.cc --  implement Tie_performer
-  
-  source file of the GNU LilyPond music typesetter
-  
-  (c) 1999--2004 Jan Nieuwenhuizen <janneke@gnu.org>
-  
- */
-
-#include "translator-group.hh"
-#include "audio-item.hh"
-#include "event.hh"
-#include "pqueue.hh"
-#include "performer.hh"
-
-struct CNote_melodic_tuple {
-  Music *event_ ;
-  Audio_note *note_;
-  Moment end_;
-  CNote_melodic_tuple ();
-  CNote_melodic_tuple (Audio_note*, Music*, Moment);
-  static int pitch_compare (CNote_melodic_tuple const &, CNote_melodic_tuple const &);
-  static int time_compare (CNote_melodic_tuple const &, CNote_melodic_tuple const &);  
-};
-
-inline int compare (CNote_melodic_tuple const &a, CNote_melodic_tuple const &b)
-{
-  return CNote_melodic_tuple::time_compare (a,b);
-}
-
-
-/**
-   Manufacture ties.  Acknowledge notes, and put them into a
-   priority queue. If we have a Music, connect the notes that finish
-   just at this time, and note that start at this time.
-
-   TODO: should share code with Tie_engraver ?
- */
-class Tie_performer : public Performer
-{
-public:
-  TRANSLATOR_DECLARATIONS(Tie_performer);
-private:
-
-  bool ties_created_;
-  Array<CNote_melodic_tuple> now_notes_;
-  Array<CNote_melodic_tuple> tied_notes_;
-
-  Music *event_;
-  Music * prev_event_;
-  
-  Link_array<Audio_tie> ties_;
-  
-protected:
-  virtual void process_music ();
-  virtual void start_translation_timestep ();
-  virtual void stop_translation_timestep ();
-  virtual void acknowledge_audio_element (Audio_element_info);
-  virtual bool try_music (Music*);
-  virtual void create_audio_elements ();
-};
-
-void
-Tie_performer::process_music ()
-{
-  if (event_)
-    daddy_trans_->set_property ("tieMelismaBusy", SCM_BOOL_T);
-}
-
-
-Tie_performer::Tie_performer ()
-{
-  event_ = 0;
-  ties_created_ = false;
-  prev_event_ = 0;
-}
-
-ENTER_DESCRIPTION (Tie_performer, "", "",
-		   "tie-event",
-		   "", "", "");
-
-
-
-bool
-Tie_performer::try_music (Music *m)
-{
-  if (!event_)
-    {
-      event_ = m;
-      return true;
-    }
-  return false;
-}
-
-void
-Tie_performer::acknowledge_audio_element (Audio_element_info i)
-{
-  if (Audio_note *nh = dynamic_cast<Audio_note *> (i.elem_))
-    {
-      Music *m = i.event_;
-      if (m->is_mus_type ("note-event"))
-	now_notes_.push (CNote_melodic_tuple (nh, m, now_mom ()+ m->get_length ()));
-    }
-}
-
-void
-Tie_performer::create_audio_elements ()
-{
-  /*
-    This is a nested loop. Not optimal, but good enough.
-   */
-  if (tied_notes_.size ())
-    {
-      Moment now = now_mom();
-      for (int i = tied_notes_.size (); i--; )
-	{
-	  if (tied_notes_[i].end_ != now)
-	    continue;
-
-	  for (int j = now_notes_.size(); j--;)
-	    {
-	      int comp
-		= Pitch::compare (*unsmob_pitch (tied_notes_[i].event_->get_mus_property ("pitch")),
-				  *unsmob_pitch (now_notes_[j].event_->get_mus_property ("pitch")));
-
-	      if (comp == 0)
-		{
-		  
-		  Audio_tie * p = new Audio_tie;
-		  p->set_note (LEFT, tied_notes_[i].note_);
-		  p->set_note (RIGHT, now_notes_[j].note_);
-		  ties_.push (p);
-		  announce_element (Audio_element_info (p, event_));
-		  ties_created_ = true;
-
-		  tied_notes_.del (i);
-		  break ; 
-		}
-	    }
-	}
-    }
-}
-
-
-void
-Tie_performer::stop_translation_timestep ()
-{
-  if (prev_event_ && tied_notes_.size () && !ties_.size ()
-      && now_notes_.size ())
-    {
-      prev_event_->origin ()->warning (_ ("No ties were performed."));
-    }
-
-  if (ties_created_)
-    {
-      prev_event_ = 0;
-      tied_notes_.clear();
-    }
-  
-  if (event_)
-    {
-      tied_notes_ = now_notes_ ;
-      prev_event_ = event_;
-    }
-
-  event_ = 0;
-  now_notes_ .clear ();
-
-  for (int i=ties_.size (); i--;)
-    {
-      ties_[i]->note_drul_[RIGHT]->tie_to (ties_[i]->note_drul_[LEFT]);
-    }
-  
-  ties_.clear ();
-}
-
-void
-Tie_performer::start_translation_timestep ()
-{
-  event_ =0;
-  ties_created_ = false;
-  Moment now = now_mom ();
-  for (int i= tied_notes_.size (); i-- ;)
-    {
-      if (tied_notes_[i].end_ < now)
-	tied_notes_.del (i);
-      else
-	break ;
-    }
-}
-
-
-CNote_melodic_tuple::CNote_melodic_tuple ()
-{
-  note_ =0;
-  event_ =0;
-  end_ = 0;
-}
-
-CNote_melodic_tuple::CNote_melodic_tuple (Audio_note *h, Music*m, Moment mom)
-{
-  note_ = h;
-  event_ = m;
-  end_ = mom;
-}
-
-int
-CNote_melodic_tuple::pitch_compare (CNote_melodic_tuple const&h1,
-				    CNote_melodic_tuple const &h2)
-{
-  SCM p1  = h1.event_->get_mus_property ("pitch");
-  SCM p2  = h2.event_->get_mus_property ("pitch");  
-  return Pitch::compare (*unsmob_pitch (p1),
-			       *unsmob_pitch (p2));
-}
-
-int
-CNote_melodic_tuple::time_compare (CNote_melodic_tuple const&h1,
-				   CNote_melodic_tuple const &h2)
-{
-  return (h1.end_ - h2.end_).main_part_.sign ();
-}
-
diff --git a/lily/tie.cc b/lily/tie.cc
deleted file mode 100644
index 3440fd9aeb..0000000000
--- a/lily/tie.cc
+++ /dev/null
@@ -1,360 +0,0 @@
-/*
-  tie.cc -- implement Tie
-
-  source file of the GNU LilyPond music typesetter
-
-  (c) 1997--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-*/
-#include <math.h>
-
-
-#include "spanner.hh"
-#include "lookup.hh"
-#include "paper-def.hh"
-#include "tie.hh"
-#include "rhythmic-head.hh"
-#include "bezier.hh"
-#include "paper-column.hh"
-#include "warn.hh"
-#include "staff-symbol-referencer.hh"
-#include "directional-element-interface.hh"
-#include "molecule.hh"
-#include "bezier-bow.hh"
-#include "stem.hh"
-#include "note-head.hh"
-#include "tie-column.hh"
-
-/*
-  tie: Connect two noteheads.
-
-  What if we have
-
-  c4 ~ \clef bass ; c4 or
-
-  c4 \staffchange c4
-
-  do we have non-horizontal ties then?
-  */
-
-
-void
-Tie::set_head (Grob*me,Direction d, Grob * h)
-{
-  assert (!head (me,d));
-  index_set_cell (me->get_grob_property ("head-pair"), d, h->self_scm ());
-  
-  dynamic_cast<Spanner*> (me)->set_bound (d, h);
-  me->add_dependency (h);
-}
-
-void
-Tie::set_interface (Grob*me)
-{
-  me->set_grob_property ("head-pair", gh_cons (SCM_EOL, SCM_EOL));
-}
-
-
-Grob*
-Tie::head (Grob*me, Direction d) 
-{
-  SCM c = me->get_grob_property ("head-pair");
-
-  if (gh_pair_p (c))
-    return unsmob_grob (index_get_cell (c, d));
-  else
-    return 0;
-}
-
-Real
-Tie::get_position (Grob*me) 
-{
-  Direction d = head (me,LEFT) ? LEFT:RIGHT;
-  return Staff_symbol_referencer::get_position (head (me,d));
-}
-
-
-/*
-  Default:  Put the tie oppositie of the stem [Wanske p231]
-
-  In case of chords: Tie_column takes over
-  
-  The direction of the Tie is more complicated (See [Ross] p136 and
-  further).
-
-  (what about linebreaks? )  
-  
-*/
-Direction
-Tie::get_default_dir (Grob*me) 
-{
-  Item * sl =  head (me,LEFT) ? Rhythmic_head::get_stem (head (me,LEFT)) :0;
-  Item * sr =  head (me,RIGHT) ? Rhythmic_head::get_stem (head (me,RIGHT)) :0;  
-  if (sl && sr)
-    {
-      if (get_grob_direction (sl) == UP
-	  && get_grob_direction (sr) == UP)
-	return DOWN;
-    }
-  else if (sl || sr)
-    {
-      Item *s = sl ? sl : sr;
-      return - get_grob_direction (s);
-    }
-
-  
-  return UP;
-}
-
-
-void
-Tie::set_direction (Grob*me)
-{
-  if (!get_grob_direction (me))
-    {
-      if (Tie_column::has_interface (me->get_parent (Y_AXIS)))
-	Tie_column::set_directions (me->get_parent (Y_AXIS));
-      else
-	set_grob_direction (me, Tie::get_default_dir (me));
-    }
-}
-
-/*
-  TODO: we should also use thickness for computing the clearance
-  between head and tie. Very thick ties will now touch the note head.
-  
-  */
-SCM
-Tie::get_control_points (SCM smob)
-{  
-  Spanner*me = unsmob_spanner (smob);
-  Direction headdir = CENTER; 
-  if (head (me,LEFT))
-    headdir = LEFT;
-  else if (head (me,RIGHT))
-    headdir = RIGHT;
-  else
-    {
-      programming_error ("Tie without heads.");
-      me->suicide ();
-      return SCM_EOL;
-    }
-
-  set_direction (me);
-
-  Direction dir = get_grob_direction (me);
-  
-  Real staff_space = Staff_symbol_referencer::staff_space (me);
-
-  Real x_gap_f = robust_scm2double (me->get_grob_property ("x-gap"), 0);
-
-  Grob* l = me->get_bound (LEFT);
-  Grob* r = me->get_bound (RIGHT);  
-
-  Grob* commonx = me->common_refpoint (l, X_AXIS);
-  commonx = me->common_refpoint (r, X_AXIS);
-  
-  Real left_x;
-
-  /*
-     the tie has to be long enough to be visible, but should not go
-    through key sigs. In the 1.5 series the pref.matter - note
-    distance is fixed , so this won't be a problem anymore.
-   */
-  Real lambda = 0.9;		
-  
-  if (Note_head::has_interface (l))
-    {
-      Real where = RIGHT;
-
-      /*
-	This correction is due te the shape of the black note head.
-       */
-      if (Rhythmic_head::duration_log (l) == 2)
-	where += dir* 0.2;
-      left_x = l->extent (l, X_AXIS).linear_combination (where)
-	+ x_gap_f;
-    }
-  else
-    left_x = l->extent (l, X_AXIS).linear_combination (lambda);
-  
-
-  Real width;
-  if (Note_head::has_interface (l) && Note_head::has_interface (r))
-    {
-      width = 
-	+ r->extent (commonx,X_AXIS)[LEFT]
-	- l->extent (commonx, X_AXIS)[RIGHT]
-	-2 * x_gap_f;
-    }
-  else
-    {
-      if (Note_head::has_interface (l))
-	width = r->relative_coordinate (commonx, X_AXIS)
-	  - l->extent (commonx, X_AXIS)[RIGHT]
-	  - 2 * x_gap_f;
-      else
-	width =
-	  - l->extent (commonx, X_AXIS).linear_combination (lambda)  
-	  + r->extent (commonx, X_AXIS)[LEFT]
-	  - 2 * x_gap_f;
-    }
-  
-
-
-  SCM details = me->get_grob_property ("details");
-
-  SCM lim // groetjes aan de chirurgendochter.
-    = scm_assq (ly_symbol2scm ("height-limit"),details);
-  
-  Real h_inf = gh_scm2double (ly_cdr (lim)) *  staff_space;
-  Real r_0 = gh_scm2double (ly_cdr (scm_assq (ly_symbol2scm ("ratio"),details)));
-
-  Bezier b  = slur_shape (width, h_inf, r_0);
-  
-  /*
-    I think this better, particularly for small ties. It always allows the user to move ties if
-    they seem in the wrong place
-
-    TODO: what if 2 heads have different size.
-
-  */
-
-  Real ypos = Tie::get_position (me) * staff_space/2
-    + dir * gh_scm2double (me->get_grob_property ("y-offset"));;
-
-  /*
-    Make sure we don't start on a dots
-   */
-  if (Note_head::has_interface (l) && Rhythmic_head::get_dots (l))
-    {
-      Grob* dots = Rhythmic_head::get_dots (l);
-      if(fabs (staff_space * Staff_symbol_referencer::get_position (dots) /2
-	       - ypos) < 0.5)
-	{
-	  ypos += 0.5 * dir ;
-	}
-    }
-
-  
-  /*
-    todo: prevent ending / staffline collision.
-
-    todo: tie / stem collision
-   */
-
-  b = slur_shape (width,h_inf, r_0);
-  b.scale (1, dir);
-  b.translate (Offset (left_x, ypos));
-  
-
-  /*
-    Avoid colliding of the horizontal part with stafflines.
-
-    
-    TODO: redo this, heuristic is half-baken, and ties often look ugly
-    as a result.
-
-    TODO: doesn't work when on staff with even number of lines.
-   */
-  Array<Real> horizontal (b.solve_derivative (Offset (1,0)));
-  if (horizontal.size ())
-    {
-      /*
-	ugh. Doesnt work for non-horizontal curves.
-       */
-      Real y = b.curve_point (horizontal[0])[Y_AXIS];
-
-      Real ry = rint (y/staff_space) * staff_space;
-      Real diff = ry - y;
-      Real newy = y;
-
-      Real clear = staff_space * gh_scm2double (me->get_grob_property ("staffline-clearance"));
-
-      if (fabs (y) <=
-	  Staff_symbol_referencer::staff_radius (me) * staff_space + clear
-	  && fabs (diff) < clear)
-	{
-	  Real y1 = ry + clear;
-	  Real y2 = ry - clear;
-
-	  /*
-	    ugh, we shove the 0.5 out of our sleeves.
-
-	    Any way. This test is to make sure that staffline
-	    collision avoidance does not result in completely flat
-	    ties.
-	   */
-	  if (fabs (y1 - ypos) < 0.5)
-	    y1 = y2;
-	  else if (fabs (y2 - ypos) < 0.5)
-	    y2 = y1;
-	  
-	  newy = (fabs (y1 - y) < fabs (y2 - y)) ? y1 : y2;
-	  
-	  // newy = ry - 0.5 * staff_space * sign (diff) ;
-
-	  /*
-	    we don't want horizontal ties
-	   */
-	  if (fabs (newy - b.control_[0][Y_AXIS]) < 1e-2)
-	    {
-	      newy = newy + dir * staff_space; 
-	    }
-	}
-
-      Real y0 = b.control_ [0][Y_AXIS];
-      b.control_[2][Y_AXIS] = 
-      b.control_[1][Y_AXIS] =
- (b.control_[1][Y_AXIS] - y0)  * ((newy - y0) / (y - y0)) + y0; 
-    }
-  else
-    programming_error ("Tie is nowhere horizontal");
-
-
-
-  SCM controls = SCM_EOL;
-  for (int i= 4; i--;)
-    controls = gh_cons (ly_offset2scm (b.control_[i]), controls);
-  return controls;
-}
-
-
-MAKE_SCHEME_CALLBACK (Tie,print,1);
-SCM
-Tie::print (SCM smob) 
-{
-  Grob*me = unsmob_grob (smob);
-
-  SCM cp = me->get_grob_property ("control-points");
-  if (!gh_pair_p (cp))		// list is more accurate
-    {
-      cp = get_control_points (smob);
-      me->set_grob_property ("control-points", cp);
-    }
-
-  if (!gh_pair_p (cp))
-    return Molecule ().smobbed_copy ();
-  
-  Real thick
-    = Staff_symbol_referencer::line_thickness (me)
-    *  robust_scm2double (me->get_grob_property ("thickness"), 1);
-
-  Bezier b;
-  int i = 0;
-  for (SCM s= cp; s != SCM_EOL; s = ly_cdr (s))
-    {
-      b.control_[i] = ly_scm2offset (ly_car (s));
-      i++;
-    }
-  
-   Molecule a = Lookup::slur (b, get_grob_direction (me) * thick, thick);
-   
-   return a.smobbed_copy ();
-}
-
-
-
-ADD_INTERFACE (Tie,"tie-interface",
-  "A tie connecting two noteheads.\n"
-"direction = Forced direction for all ties",
-  "y-offset staffline-clearance control-points head-pair details thickness x-gap direction minimum-length");
diff --git a/lily/time-scaled-music-iterator.cc b/lily/time-scaled-music-iterator.cc
deleted file mode 100644
index 7bd174bc02..0000000000
--- a/lily/time-scaled-music-iterator.cc
+++ /dev/null
@@ -1,31 +0,0 @@
-/*   
-  time-scaled-music-iterator.cc -- implement Time_scaled_music_iterator
-  
-  source file of the GNU LilyPond music typesetter
-  
-  (c) 1998--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-  
- */
-
-#include "time-scaled-music-iterator.hh"
-#include "time-scaled-music.hh"
-#include "event.hh"
-#include "translator-group.hh"
-
-
-void
-Time_scaled_music_iterator::process (Moment m)
-{
-  if (!m.to_bool ())
-    {
-      Music_iterator *yeah = try_music (get_music ());
-      if (yeah)
-	set_translator (yeah->get_outlet ());
-      else
-	get_music ()->origin ()->warning (_ ("no one to print a tuplet start bracket"));
-    }
-
-  Music_wrapper_iterator::process (m);
-}
- 
-IMPLEMENT_CTOR_CALLBACK (Time_scaled_music_iterator);
diff --git a/lily/time-scaled-music.cc b/lily/time-scaled-music.cc
deleted file mode 100644
index 2d70b02adc..0000000000
--- a/lily/time-scaled-music.cc
+++ /dev/null
@@ -1,17 +0,0 @@
-/*   
-  time-scaled-music.cc --  implement Time_scaled_music
-  
-  source file of the GNU LilyPond music typesetter
-  
-  (c) 1998--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-  
- */
-
-#include "time-scaled-music.hh"
-#include "time-scaled-music-iterator.hh"
-
-Time_scaled_music::Time_scaled_music ()
-{
-  
-}
-ADD_MUSIC (Time_scaled_music);
diff --git a/lily/time-signature-engraver.cc b/lily/time-signature-engraver.cc
deleted file mode 100644
index 8684c9d5cd..0000000000
--- a/lily/time-signature-engraver.cc
+++ /dev/null
@@ -1,90 +0,0 @@
-/*
-  time-signature-engraver.cc -- implement Time_signature_engraver
-
-  source file of the GNU LilyPond music typesetter
-
-  (c) 1997--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-*/
-
-#include "time-signature.hh"
-#include "warn.hh"
-
-#include "engraver.hh"
-#include "engraver-group-engraver.hh"
-#include "misc.hh"
-
-/**
-  generate time_signatures. 
-  */
-class Time_signature_engraver : public Engraver
-{
-  Item * time_signature_;
-  SCM last_time_fraction_;
-
-protected:
-  virtual void stop_translation_timestep ();
-  virtual void process_music ();
-public:
-  TRANSLATOR_DECLARATIONS(Time_signature_engraver);
-};
-
-
-Time_signature_engraver::Time_signature_engraver ()
-{ 
-  time_signature_ =0;
-  last_time_fraction_ = SCM_BOOL_F;
-}
-
-void
-Time_signature_engraver::process_music ()
-{
-  /*
-    not rigorously safe, since the value might get GC'd and
-    reallocated in the same spot */
-  SCM fr= get_property ("timeSignatureFraction");
-  if (!time_signature_
-      && last_time_fraction_ != fr
-      && gh_pair_p (fr))
-    {
-      int den = gh_scm2int (gh_cdr (fr));
-      if (den != (1 << intlog2 (den)))
-	{
-	  /*
-	    Todo: should make typecheck?
-
-	    OTOH, Tristan Keuris writes 8/20 in his Intermezzi.
-	   */
-	  warning (_f("Found strange time signature %d/%d.",
-		      den,
-		      gh_scm2int (gh_car (fr))
-		      ));
-	}
-  
-      
-      last_time_fraction_ = fr; 
-      time_signature_ = make_item ("TimeSignature");
-      time_signature_->set_grob_property ("fraction",fr);
-
-      if (time_signature_)
-	announce_grob(time_signature_, SCM_EOL);
-    }
-}
-
-void
-Time_signature_engraver::stop_translation_timestep ()
-{
-  if (time_signature_) 
-    {
-      typeset_grob (time_signature_);
-      time_signature_ =0;
-    }
-}
- 
-
-ENTER_DESCRIPTION(Time_signature_engraver,
-/* descr */       "Create a TimeSignature whenever @code{timeSignatureFraction} changes",
-/* creats*/       "TimeSignature",
-/* accepts */     "",
-/* acks  */      "",
-/* reads */       "",
-/* write */       "");
diff --git a/lily/time-signature-performer.cc b/lily/time-signature-performer.cc
deleted file mode 100644
index efab395ee2..0000000000
--- a/lily/time-signature-performer.cc
+++ /dev/null
@@ -1,70 +0,0 @@
-/*
-  time-signature-performer.cc -- implement Time_signature_performer
-
-  source file of the GNU LilyPond music typesetter
-
-  (c) 1997--2004 Jan Nieuwenhuizen <janneke@gnu.org>
-*/
-
-#include "audio-item.hh"
-#include "lily-proto.hh"
-#include "performer.hh"
-
-
-class Time_signature_performer : public Performer
-{
-public:
-  TRANSLATOR_DECLARATIONS(Time_signature_performer);
-  ~Time_signature_performer ();
-
-protected:
-
-  virtual void stop_translation_timestep ();
-  virtual void create_audio_elements ();
-
-  SCM prev_fraction_;
-private:
-
-  Audio_time_signature* audio_;
-};
-
-
-Time_signature_performer::Time_signature_performer ()
-{
-  prev_fraction_ = SCM_BOOL_F;
-  audio_ = 0;
-}
-
-Time_signature_performer::~Time_signature_performer ()
-{
-}
-
-
-void
-Time_signature_performer::create_audio_elements ()
-{
-  SCM fr = get_property ("timeSignatureFraction");
-  if (gh_pair_p (fr) && !gh_equal_p (fr, prev_fraction_))
-    {
-      prev_fraction_ = fr;
-      int b = gh_scm2int (ly_car (fr));
-      int o = gh_scm2int (ly_cdr (fr));
-      
-      audio_ = new Audio_time_signature (b,o);
-      Audio_element_info info (audio_, 0);
-      announce_element (info);
-
-    }
-}
-
-void
-Time_signature_performer::stop_translation_timestep ()
-{
-  if (audio_)
-    {
-      play_element (audio_);
-      audio_ = 0;
-    }
-}
-
-ENTER_DESCRIPTION(Time_signature_performer,"","","","","","");
diff --git a/lily/time-signature.cc b/lily/time-signature.cc
deleted file mode 100644
index 2a4d380db3..0000000000
--- a/lily/time-signature.cc
+++ /dev/null
@@ -1,161 +0,0 @@
-/*   
-  time-signature.cc -- implement Time_signature
-  
-  source file of the GNU LilyPond music typesetter
-  
-  (c) 1996--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-  
- */
-
-
-#include "molecule.hh"
-#include "text-item.hh"
-#include "time-signature.hh"
-#include "paper-def.hh"
-#include "font-interface.hh"
-#include "warn.hh"
-#include "staff-symbol-referencer.hh"
-
-
-/*
-  TODO:
-
-  this file should go ; The formatting can completely be done with
-  markups.
-  
- */
-
-MAKE_SCHEME_CALLBACK (Time_signature, print, 1);
-SCM
-Time_signature::print (SCM smob) 
-{
-  Grob * me = unsmob_grob (smob);
-  SCM st = me->get_grob_property ("style");
-  SCM frac = me->get_grob_property ("fraction");
-  int n = 4;
-  int d = 4;
-  if (gh_pair_p (frac))
-    {
-      n = gh_scm2int (ly_car (frac));
-      d = gh_scm2int (ly_cdr (frac));
-    }
-
-  Molecule m;
-  if (gh_symbol_p (st))
-    {
-      String style (ly_scm2string (scm_symbol_to_string (st)));
-      if (style[0]=='1')
-	{
-	  m = numbered_time_signature (me, n, 0);
-	}
-      else
-	{
-	  m = special_time_signature (me, st, n, d);
-	}
-    }
-  else
-    m = numbered_time_signature (me, n,d);
-
-  if (Staff_symbol_referencer::line_count (me) % 2 == 0)
-    m.translate_axis (Staff_symbol_referencer::staff_space (me)/2 , Y_AXIS);
-
-  return m.smobbed_copy ();
-}
-
-Molecule
-Time_signature::special_time_signature (Grob *me, SCM scm_style, int n, int d)
-{
-  String style = ly_scm2string (scm_symbol_to_string (scm_style));
-
-  if (style == "numbered")
-    return numbered_time_signature (me, n, d);
-
-  if ((style == "default") || (style == ""))
-    style = to_string ("C");
-
-  if (style == "C")
-    {
-      if /* neither C2/2 nor C4/4 */
-	(((n != 2) || (d != 2)) && 
-	 ((n != 4) || (d != 4)))
-	{
-	  return numbered_time_signature (me, n, d);
-	}
-    }
-
-  String char_name = style + to_string (n) + "/" + to_string (d);
-  me->set_grob_property ("font-family", ly_symbol2scm ("music"));
-  Molecule out = Font_interface::get_default_font (me)
-    ->find_by_name ("timesig-" + char_name);
-  if (!out.is_empty ())
-    return out;
-
-  /* If there is no such symbol, we default to the numbered style.
-    (Here really with a warning!) */
-  me->warning (_f ("time signature symbol `%s' not found; "
-		   "reverting to numbered style", char_name));
-  return numbered_time_signature (me, n, d);
-}
-
-Molecule
-Time_signature::numbered_time_signature (Grob*me,int num, int den)
-{
-  SCM chain = Font_interface::font_alist_chain (me);
-  me->set_grob_property ("font-family", ly_symbol2scm ("number"));
-
-SCM sn =
-    Text_item::interpret_markup (me->get_paper ()->self_scm(), chain,
-				 scm_makfrom0str (to_string (num).to_str0 ()));
-SCM sd =
-    Text_item::interpret_markup (me->get_paper ()->self_scm(), chain,
-				 scm_makfrom0str (to_string (den).to_str0 ()));
-
-  Molecule n = *unsmob_molecule (sn);
-  Molecule d = *unsmob_molecule (sd);
-			      
-  n.align_to (X_AXIS, CENTER);
-  d.align_to (X_AXIS, CENTER);
-  Molecule m;
-  if (den)
-    {
-      m.add_at_edge (Y_AXIS, UP, n, 0.0, 0);
-      m.add_at_edge (Y_AXIS, DOWN, d, 0.0,0);
-    }
-  else
-    {
-      m = n;
-      m.align_to (Y_AXIS, CENTER);
-    }
-
-  m.align_to (X_AXIS, LEFT);
-  
-  return m;
-}
-
-ADD_INTERFACE (Time_signature, "time-signature-interface",
-  "A time signature, in different styles.\n"
-"  The following values for 'style are are recognized:\n"
-"\n"
-"    @table @samp\n"
-"      @item @code{C}\n"
-"        4/4 and 2/2 are typeset as C and struck C, respectively.  All\n"
-"        other time signatures are written with two digits.\n"
-"\n"
-"      @item @code{neo_mensural}\n"
-"        2/2, 3/2, 2/4, 3/4, 4/4, 6/4, 9/4, 4/8, 6/8 and 9/8 are\n"
-"        typeset with neo-mensural style mensuration marks.  All other time\n"
-"        signatures are written with two digits.\n"
-"\n"
-"      @item @code{mensural}\n"
-"        2/2, 3/2, 2/4, 3/4, 4/4, 6/4, 9/4, 4/8, 6/8 and 9/8 are\n"
-"        typeset with mensural style mensuration marks.  All other time\n"
-"        signatures are written with two digits.\n"
-"\n"
-"      @item @code{1xxx}\n"
-"        All time signatures are typeset with a single\n"
-"        digit, e.g. 3/2 is written as 3. (Any symbol starting\n"
-"	with the digit @code{1} will do.)\n"
-"    @end table\n"
-"\n"
-"See also the test-file @file{input/test/time.ly}.\n",
-  "fraction style");
diff --git a/lily/timing-engraver.cc b/lily/timing-engraver.cc
deleted file mode 100644
index c9139b95bb..0000000000
--- a/lily/timing-engraver.cc
+++ /dev/null
@@ -1,98 +0,0 @@
-/*
-  timing-grav.cc -- implement Timing_engraver
-
-  source file of the GNU LilyPond music typesetter
-
-  (c) 1997--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-*/
-#include "translator-group.hh"
-
-#include "grob-info.hh"
-#include "multi-measure-rest.hh"
-#include "timing-translator.hh"
-#include "engraver.hh"
-#include "grob.hh"
-
-/**
-  Do time bookkeeping
- */
-class Timing_engraver : public Timing_translator, public Engraver
-{
-protected:
-  /* Needed to know whether we're advancing in grace notes, or not. */
-  Moment last_moment_;
-  
-  virtual void start_translation_timestep ();
-  virtual void stop_translation_timestep ();
-
-public:
-  TRANSLATOR_DECLARATIONS (Timing_engraver);
-};
-
-
-Timing_engraver::Timing_engraver ()
-{
-  last_moment_.main_part_ = Rational (-1);
-}
-
-
-
-void
-Timing_engraver::start_translation_timestep ()
-{
-  Timing_translator::start_translation_timestep ();
-
-  SCM automatic_bars = get_property ("automaticBars");
-  Moment now = now_mom ();
-  SCM which = get_property ("whichBar");
-
-  /* Set the first bar of the score? */
-  if (!gh_string_p (which))
-    which
-      = (now.main_part_ || now.main_part_ == last_moment_.main_part_)
-      ? SCM_EOL : scm_makfrom0str ("|");
-
-  Moment mp = measure_position ();
-  bool start_of_measure = (last_moment_.main_part_ != now.main_part_
-			   && !mp.main_part_);
-
-  if (start_of_measure)
-    {
-      Moment mlen = Moment (measure_length ());
-      unsmob_grob (get_property ("currentCommandColumn"))
-	->set_grob_property ("measure-length", mlen.smobbed_copy ()); 
-    }
-  
-  if (!gh_string_p (which) && to_boolean (automatic_bars))
-    {
-      SCM always = get_property ("barAlways");
-
-      if ( start_of_measure || (to_boolean (always)))
-	{
-	  /* should this work, or be junked?  See input/bugs/no-bars.ly */
-	  which = get_property ("defaultBarType");
-	}
-    }
-
-  daddy_trans_->set_property ("whichBar", which);
-}
-
-void
-Timing_engraver::stop_translation_timestep ()
-{
-  Timing_translator::stop_translation_timestep ();
-  daddy_trans_->set_property ("whichBar", SCM_EOL);
-  last_moment_ = now_mom ();
-}
-
-
-ENTER_DESCRIPTION (Timing_engraver,
-/* descr */       " Responsible for synchronizing timing information from staves.  "
-"Normally in @code{Score}.  In order to create polyrhythmic music, "
-"this engraver should be removed from @code{Score} and placed in "
-"@code{Staff}.",
-/* creats*/       "",
-/* accepts */     "",
-/* acks  */      "",
-/* reads */       "timeSignatureFraction automaticBars whichBar barAlways defaultBarType skipBars timing measureLength measurePosition currentBarNumber",
-/* write */       "");
diff --git a/lily/timing-translator.cc b/lily/timing-translator.cc
deleted file mode 100644
index 80e71deadf..0000000000
--- a/lily/timing-translator.cc
+++ /dev/null
@@ -1,165 +0,0 @@
-/*
-  timing-translator.cc -- implement Timing_translator
-
-
-  source file of the GNU LilyPond music typesetter
-
-  (c) 1997--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-*/
-
-#include "warn.hh"
-#include "timing-translator.hh"
-
-#include "translator-group.hh"
-#include "global-translator.hh"
-#include "multi-measure-rest.hh"
-
-
-void
-Timing_translator::stop_translation_timestep ()
-{
-  Translator *t = this;
-  Global_translator *global =0;
-  do
-    {
-      t = t->daddy_trans_ ;
-      global = dynamic_cast<Global_translator*> (t);
-    }
-  while (!global);
-
-  /* allbars == ! skipbars */
-  SCM sb = get_property ("skipBars");
-  bool allbars = !to_boolean (sb);
-
-  // urg: multi bar rests: should always process whole of first bar?
-  SCM tim = get_property ("timing");
-  bool timb = to_boolean (tim);
-  if (timb && allbars)
-    {
-      Moment barleft = (measure_length () - measure_position ());
-      Moment now = now_mom ();
-
-      if (barleft > Moment (0)
-	  /*
-	    Hmm. We insert the bar moment every time we process a
-	    moment.  A waste of cpu?
-	   */
-	  && !now.grace_part_)
-	global->add_moment_to_process (now + barleft);
-    }
-}
-
-void
-Timing_translator::initialize ()
-{
-
-  /*
-    move this to engraver-init.ly? 
-   */
- 
-  daddy_trans_->set_property ("timing" , SCM_BOOL_T);  
-  daddy_trans_->set_property ("currentBarNumber" , gh_int2scm (1));
-
-  daddy_trans_->set_property ("timeSignatureFraction",
-				gh_cons (gh_int2scm (4), gh_int2scm (4)));
-  daddy_trans_->set_property ("measurePosition", Moment (Rational (0)).smobbed_copy ());
-  daddy_trans_->set_property ("measureLength", Moment (Rational (1)).smobbed_copy ());
-  daddy_trans_->set_property ("beatLength", Moment (Rational (1,4)).smobbed_copy ());
-}
-
-Rational
-Timing_translator::measure_length () const
-{
-  SCM l = get_property ("measureLength");
-  if (unsmob_moment (l))
-    return unsmob_moment (l)->main_part_;
-  else
-    return Rational (1);
-}
-
-Timing_translator::Timing_translator ()
-{
-
-}
-
-Moment
-Timing_translator::measure_position () const
-{
-  SCM sm = get_property ("measurePosition");
-  
-  Moment m   =0;
-  if (unsmob_moment (sm))
-    {
-      m = *unsmob_moment (sm);
-      while (m.main_part_ < Rational (0))
-	m.main_part_ += measure_length ();
-    }
-  
-  return m;
-}
-
-void
-Timing_translator::start_translation_timestep ()
-{
-  Translator *t = this;
-  Global_translator *global =0;
-  do
-    {
-      t = t->daddy_trans_ ;
-      global = dynamic_cast<Global_translator*> (t);
-    }
-  while (!global);
-
-  Moment now = global->now_mom_;
-  Moment dt = now  - global->prev_mom_;
-  if (dt < Moment (0))
-    {
-      programming_error ("Moving backwards in time");
-      dt = 0;
-    }
-  else if (dt.main_part_.is_infinity ())
-    {
-      programming_error ("Moving infinitely to future");
-      dt = 0;
-    }
-  
-  if (!dt.to_bool ())
-    return;
-
-  Moment measposp;
-
-  SCM s = get_property ("measurePosition");
-  if (unsmob_moment (s))
-    {
-      measposp = *unsmob_moment (s);
-    }
-  else
-    {
-      measposp = now;
-      daddy_trans_->set_property ("measurePosition", measposp.smobbed_copy ());
-    }
-  
-  measposp += dt;
-  
-  SCM barn = get_property ("currentBarNumber");
-  int b = 0;
-  if (gh_number_p (barn))
-    {
-      b = gh_scm2int (barn);
-    }
-
-  SCM cad = get_property ("timing");
-  bool c= to_boolean (cad);
-
-  Rational len = measure_length ();
-  while (c && measposp.main_part_ >= len)
-    {
-      measposp.main_part_ -= len;
-      b ++;
-    }
-
-  daddy_trans_->set_property ("currentBarNumber", gh_int2scm (b));
-  daddy_trans_->set_property ("measurePosition", measposp.smobbed_copy ());
-}
-
-ENTER_DESCRIPTION(Timing_translator,"","","","","","");
diff --git a/lily/translator-ctors.cc b/lily/translator-ctors.cc
deleted file mode 100644
index abac03a986..0000000000
--- a/lily/translator-ctors.cc
+++ /dev/null
@@ -1,57 +0,0 @@
-/*
-  translator-ctors.cc -- implement Translator construction
-
-  source file of the GNU LilyPond music typesetter
-
-  (c) 1997--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-*/
-
-#include "translator.hh"
-#include "scm-hash.hh"
-#include "warn.hh"
-
-/*
-  should delete these after exit.
-*/
-
-Scheme_hash_table *global_translator_dict=0;
-
-LY_DEFINE(get_all_translators,"ly:get-all-translators", 0, 0, 0,  (),
-	  "Return an list of a all translator objects that may be instantiated "
-	  " during a lilypond run.")
-{
-  SCM l = global_translator_dict ?  global_translator_dict->to_alist () : SCM_EOL;
-
-  for (SCM s =l; gh_pair_p (s); s = gh_cdr (s))
-    {
-      gh_set_car_x (s, gh_cdar (s));
-    }
-
-  return l;
-}
-
-void
-add_translator (Translator *t)
-{
-  if (!global_translator_dict)
-    global_translator_dict = new Scheme_hash_table;
-
-  SCM k= ly_symbol2scm  (classname (t));
-  global_translator_dict->set (k, t->self_scm ());
-
-  scm_gc_unprotect_object (t->self_scm ());
-}
-
-Translator*
-get_translator (SCM sym)
-{
-  SCM v = SCM_BOOL_F;
-  if (global_translator_dict)
-    global_translator_dict->try_retrieve (sym, &v);
-
-  if (v == SCM_BOOL_F)
-    error (_f ("unknown translator: `%s'", ly_symbol2string (sym).to_str0 ()));
-
-  return unsmob_translator (v);
-}
-
diff --git a/lily/translator-def.cc b/lily/translator-def.cc
deleted file mode 100644
index f48e78d3aa..0000000000
--- a/lily/translator-def.cc
+++ /dev/null
@@ -1,319 +0,0 @@
-/*   
-  translator-def.cc --  implement Context_def
-  
-  source file of the GNU LilyPond music typesetter
-  
-  (c) 2000--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-  
- */
-
-#include "lily-proto.hh"
-#include "context-def.hh"
-#include "translator-group.hh"
-#include "warn.hh"
-#include "music-output-def.hh"
-#include "ly-smobs.icc"
-
-int
-Context_def::print_smob (SCM smob, SCM port, scm_print_state*)
-{
-  Context_def* me = (Context_def*) SCM_CELL_WORD_1 (smob);
-
-  scm_puts ("#<Context_def ", port);
-  scm_display (me->context_name_, port);
-  scm_puts (">", port);
-  return 1;
-}
-
-
-SCM
-Context_def::mark_smob (SCM smob)
-{
-  Context_def* me = (Context_def*) SCM_CELL_WORD_1 (smob);
-
-  scm_gc_mark (me->description_);
-  scm_gc_mark (me->context_aliases_);
-  scm_gc_mark (me->accept_mods_);
-  scm_gc_mark (me->translator_mods_);
-  scm_gc_mark (me->property_ops_);  
-  scm_gc_mark (me->translator_group_type_);
-  return me->context_name_;
-}
-
-
-Context_def::Context_def ()
-{
-  context_aliases_ = SCM_EOL;
-  translator_group_type_ = SCM_EOL;
-  accept_mods_ = SCM_EOL;
-  translator_mods_ = SCM_EOL;
-  property_ops_ = SCM_EOL;
-  context_name_ = SCM_EOL;
-  description_ = SCM_EOL;
-
-  smobify_self();
-}
-
-Context_def::~Context_def ()
-{
-}
-
-Context_def::Context_def (Context_def const & s)
-  : Input (s)
-{
-  context_aliases_ = SCM_EOL;
-  translator_group_type_ = SCM_EOL;
-  accept_mods_ = SCM_EOL;   
-  translator_mods_ = SCM_EOL;
-  property_ops_ = SCM_EOL;
-  context_name_ = SCM_EOL;
-  description_ = SCM_EOL;
-  
-  smobify_self();
-  description_ = s.description_;
-
-  accept_mods_ = s.accept_mods_;
-  property_ops_ = s.property_ops_;
-  translator_mods_ = s.translator_mods_;
-  context_aliases_ = s.context_aliases_;
-  translator_group_type_ = s.translator_group_type_;
-  context_name_ = s.context_name_;
-}
-
-
-void
-Context_def::add_context_mod (SCM mod)
-{
-  SCM tag  = gh_car (mod);
-  if (ly_symbol2scm ("description")  == tag)
-    {
-      description_ = gh_cadr (mod);
-      return ;
-    }
-
-  SCM sym = gh_cadr (mod);
-  if (gh_string_p (sym))
-    sym = scm_string_to_symbol (sym);
-  
-  if (ly_symbol2scm ("consists") == tag
-      || ly_symbol2scm ("consists-end") == tag
-      || ly_symbol2scm ("remove") == tag)
-    {
-      if (!get_translator (sym))
-	error (_f ("Program has no such type: `%s'", ly_symbol2string (sym).to_str0 ()));
-      else
-	translator_mods_ = gh_cons (scm_list_2 (tag, sym), translator_mods_ );
-    }
-  else if (ly_symbol2scm ("accepts") == tag
-	   || ly_symbol2scm ("denies") == tag)
-    {
-      accept_mods_ = gh_cons (scm_list_2 (tag, sym), accept_mods_); 
-    }
-  else if (ly_symbol2scm ("poppush") == tag
-	   || ly_symbol2scm ("pop") == tag
-	   || ly_symbol2scm ("push") == tag
-	   || ly_symbol2scm ("assign") == tag
-	   || ly_symbol2scm ("unset") == tag)
-    {
-      property_ops_ = gh_cons (mod, property_ops_);
-    }
-  else if (ly_symbol2scm ("alias") == tag)
-    {
-      context_aliases_ = gh_cons (sym, context_aliases_);
-    }
-  else if (ly_symbol2scm ("translator-type")  == tag)
-    {
-      translator_group_type_ = sym;
-    }
-  else if (ly_symbol2scm ("context-name")  == tag)
-    {
-      context_name_ = sym;
-    }
-  else
-    {
-      programming_error ("Unknown context mod tag.");
-    }
-}
-
-
-
-SCM
-Context_def::get_context_name () const
-{
-  return context_name_;
-}
-
-SCM
-Context_def::get_accepted (SCM user_mod) const
-{
-  SCM mods = scm_reverse_x (scm_list_copy (accept_mods_),
-			    user_mod);
-  SCM acc = SCM_EOL;
-  for (SCM s = mods; gh_pair_p (s); s = gh_cdr (s))
-    {
-      SCM tag = gh_caar (s);
-      SCM sym = gh_cadar (s);
-      if (tag == ly_symbol2scm ("accepts"))
-	acc = gh_cons (sym, acc);
-      else if (tag == ly_symbol2scm ("denies"))
-	acc = scm_delete_x (sym, acc);
-    }
-  return acc;
-}
-
-	   
-Link_array<Context_def>
-Context_def::path_to_acceptable_translator (SCM type_sym, Music_output_def* odef) const
-{
-  assert (gh_symbol_p (type_sym));
-  
-  SCM accepted = get_accepted (SCM_EOL);
-
-  Link_array<Context_def> accepteds;
-  for (SCM s = accepted; gh_pair_p (s); s = ly_cdr (s))
-    {
-      Context_def *t = unsmob_context_def (odef->find_translator (ly_car (s)));
-      if (!t)
-	continue;
-      accepteds.push (t);
-    }
-
-  Link_array<Context_def> best_result;
-  for (int i=0; i < accepteds.size (); i++)
-    {
-      /*
-	don't check aliases, because \context Staff should not create RhythmicStaff.
-      */
-      if (gh_equal_p (accepteds[i]->get_context_name (), type_sym))
-	{
-	  best_result.push (accepteds[i]);
-	  return best_result;
-	}
-    }
-      
-  int best_depth= INT_MAX;
-  for (int i=0; i < accepteds.size (); i++)
-    {
-      Context_def * g = accepteds[i];
-
-      Link_array<Context_def> result
-	= g->path_to_acceptable_translator (type_sym, odef);
-      if (result.size () && result.size () < best_depth)
-	{
-	  result.insert (g,0);
-	  best_result = result;
-
-	  /*
-	    this following line was added in 1.9.3, but hsould've been
-	    there all along... Let's hope it doesn't cause nightmares.
-	   */
-	  best_depth = result.size();
-	}
-    }
-
-  return best_result;
-}
-
-IMPLEMENT_SMOBS (Context_def);
-IMPLEMENT_DEFAULT_EQUAL_P (Context_def);
-
-
-
-
-SCM
-Context_def::get_translator_names (SCM user_mod) const
-{
-  SCM l1 = SCM_EOL;
-  SCM l2 = SCM_EOL;
-
-  SCM mods = scm_reverse_x (scm_list_copy (translator_mods_),
-			    user_mod);
-  
-  for (SCM s = mods; gh_pair_p (s); s = gh_cdr (s))
-    {
-      SCM tag = gh_caar (s);
-      SCM arg = gh_cadar (s);
-
-      if (gh_string_p (arg))
-	arg = scm_string_to_symbol (arg);
-      
-      if (ly_symbol2scm ("consists") == tag)
-	l1 = gh_cons (arg, l1);
-      else if (ly_symbol2scm ("consists-end") == tag)
-	l2 = gh_cons (arg, l2);
-      else if (ly_symbol2scm ("remove") == tag)
-	{
-	  l1 = scm_delete_x (arg, l1);
-	  l2 = scm_delete_x (arg, l2);
-	}
-    }
-
-  return scm_append_x (scm_list_2 (l1, l2));
-}
-
-
-Translator_group *
-Context_def::instantiate (SCM ops)
-{
-  Translator * g = get_translator (translator_group_type_);
-  g = g->clone (); 
-
-  Translator_group *tg = dynamic_cast<Translator_group*> (g);
-  tg->definition_ = self_scm ();
-
-  SCM trans_names = get_translator_names (ops); 
-  tg->simple_trans_list_ = names_to_translators (trans_names, tg);
-  tg->accepts_list_ = get_accepted  (ops);
-  return tg;
-}
-
-
-SCM
-Context_def::clone_scm () const
-{
-  Context_def * t = new Context_def (*this);
-  scm_gc_unprotect_object (t->self_scm());
-  return t->self_scm();
-}
-
-SCM
-Context_def::make_scm ()
-{
-  Context_def* t = new Context_def;
-  scm_gc_unprotect_object (t->self_scm());
-  return t->self_scm();
-}
-
-void
-Context_def::apply_default_property_operations (Translator_group *tg)
-{
-  apply_property_operations (tg , property_ops_);
-}
-
-SCM
-Context_def::to_alist () const
-{
-  SCM l = SCM_EOL;
-
-  l = gh_cons (gh_cons (ly_symbol2scm ("consists"),
-			get_translator_names (SCM_EOL)), l);
-  l = gh_cons (gh_cons (ly_symbol2scm ("description"),  description_), l);
-  l = gh_cons (gh_cons (ly_symbol2scm ("aliases"),  context_aliases_), l);
-  l = gh_cons (gh_cons (ly_symbol2scm ("accepts"),  get_accepted (SCM_EOL)), l);
-  l = gh_cons (gh_cons (ly_symbol2scm ("property-ops"),  property_ops_), l);
-  l = gh_cons (gh_cons (ly_symbol2scm ("context-name"),  context_name_), l);
-  l = gh_cons (gh_cons (ly_symbol2scm ("group-type"),  translator_group_type_), l);    
-
-  return l;  
-}
-
-bool
-Context_def::is_alias (SCM sym) const
-{
-  bool b  = sym == context_name_;
-
-  for (SCM a = context_aliases_; !b && gh_pair_p (a); a = ly_cdr (a))
-    b = b || sym == ly_car (a);
-
-  return b;
-}
diff --git a/lily/translator-group.cc b/lily/translator-group.cc
deleted file mode 100644
index cc09ca0668..0000000000
--- a/lily/translator-group.cc
+++ /dev/null
@@ -1,295 +0,0 @@
-/*
-  Translator_group.cc -- implement Translator_group
-
-  source file of the GNU LilyPond music typesetter
-
-  (c) 1997--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-*/
-
-#include "music-output-def.hh"
-#include "translator-group.hh"
-#include "translator.hh"
-#include "warn.hh"
-#include "moment.hh"
-#include "scm-hash.hh"
-#include "context-def.hh"
-#include "main.hh"
-#include "music.hh"
-
-Translator_group::Translator_group (Translator_group const&s)
-  : Translator (s)
-{
-  iterator_count_ =0;
-  
-  Scheme_hash_table * tab =  new Scheme_hash_table (*s.properties_dict ());
-  properties_scm_ = tab->self_scm ();
-  scm_gc_unprotect_object (tab->self_scm ());
-}
-
-Scheme_hash_table*
-Translator_group::properties_dict () const
-{
-  return Scheme_hash_table::unsmob (properties_scm_);
-}
-
-Translator_group::~Translator_group ()
-{
-  
-  //assert (is_removable ());
-}
-
-
-Translator_group::Translator_group ()
-{
-  iterator_count_  = 0;
-  Scheme_hash_table *tab = new Scheme_hash_table ;
-  properties_scm_ = tab->self_scm ();
-
-  scm_gc_unprotect_object (tab->self_scm ());
-}
-
-void
-Translator_group::check_removal ()
-{
-  SCM next = SCM_EOL; 
-  for (SCM p = trans_group_list_; gh_pair_p (p); p = next)
-    {
-      next = ly_cdr (p);
-
-      Translator_group *trg =  dynamic_cast<Translator_group*> (unsmob_translator (ly_car (p)));
-
-      trg->check_removal ();
-      if (trg->is_removable ())
-	terminate_translator (trg);
-    }
-}
-
-SCM
-Translator_group::add_translator (SCM list, Translator *t)
-{
-  /*
-    Must append, since list ordering must be preserved.
-   */
-  list = gh_append2 (list, gh_cons (t->self_scm (), SCM_EOL));
-  t->daddy_trans_ = this;
-  t->output_def_ = output_def_;
-
-  return list;
-}
-
-
-void
-Translator_group::add_used_group_translator (Translator *t)
-{
-  trans_group_list_ = add_translator (trans_group_list_,t);
-}
-
-
-void
-Translator_group::add_fresh_group_translator (Translator*t)
-{
-  Translator_group*tg = dynamic_cast<Translator_group*> (t);
-  trans_group_list_ = add_translator (trans_group_list_,t);
-  scm_gc_unprotect_object (t->self_scm ());
-
-  Context_def * td = unsmob_context_def (tg->definition_);
-
-  /*
-    this can not move before add_translator(), because \override
-    operations require that we are in the hierarchy.
-   */
-  td->apply_default_property_operations (tg);
-
-  t->initialize ();
-}
-
-bool
-Translator_group::try_music (Music* m)
-{
-  bool hebbes_b = try_music_on_nongroup_children (m);
-  
-  if (!hebbes_b && daddy_trans_)
-    hebbes_b = daddy_trans_->try_music (m);
-  
-  return hebbes_b ;
-}
-
-void
-Translator_group::terminate_translator (Translator*r)
-{
-  r->finalize ();
-  /*
-    Return value ignored. GC does the rest.
-   */
-  remove_translator (r);
-}
-
-
-/**
-   Remove a translator from the hierarchy.
- */
-Translator *
-Translator_group::remove_translator (Translator*trans)
-{
-  assert (trans);
-
-  trans_group_list_ = scm_delq_x (trans->self_scm (), trans_group_list_);
-  trans->daddy_trans_ = 0;
-  return trans;
-}
-
-
-static void
-static_each (SCM list, Method_pointer method)
-{
-  for (SCM p = list; gh_pair_p (p); p = ly_cdr (p))
-    (unsmob_translator (ly_car (p))->*method) ();
-  
-}
-
-void
-Translator_group::each (Method_pointer method) 
-{
-  static_each (get_simple_trans_list (), method);
-  static_each (trans_group_list_, method);
-}
-
-
-
-
-/*
-  STUBS
-*/
-void
-Translator_group::stop_translation_timestep ()
-{
-  each (&Translator::stop_translation_timestep);
-}
-
-void
-Translator_group::start_translation_timestep ()
-{
-  each (&Translator::start_translation_timestep);
-}
-
-void
-Translator_group::do_announces ()
-{
-  each (&Translator::do_announces);
-}
-
-void
-Translator_group::initialize ()
-{
-  SCM tab = scm_make_vector (gh_int2scm (19), SCM_BOOL_F);
-  set_property ("acceptHashTable", tab);
-  each (&Translator::initialize);
-}
-
-void
-Translator_group::finalize ()
-{
-  each (&Translator::finalize);
-}
-
-bool
-translator_accepts_any_of (Translator*tr, SCM ifaces)
-{
-  SCM ack_ifs = scm_assoc (ly_symbol2scm ("events-accepted"),
-			   tr->translator_description());
-  ack_ifs = gh_cdr (ack_ifs);
-  for (SCM s = ifaces; ly_pair_p (s); s = ly_cdr (s))
-    if (scm_memq (ly_car (s), ack_ifs) != SCM_BOOL_F)
-      return true;
-  return false;
-}
-
-SCM
-find_accept_translators (SCM gravlist, SCM ifaces)
-{
-  SCM l = SCM_EOL;
-  for (SCM s = gravlist; ly_pair_p (s);  s = ly_cdr (s))
-    {
-      Translator* tr = unsmob_translator (ly_car (s));
-      if (translator_accepts_any_of (tr, ifaces))
-	l = scm_cons (tr->self_scm (), l); 
-    }
-  l = scm_reverse_x (l, SCM_EOL);
-
-  return l;
-}
-
-bool
-Translator_group::try_music_on_nongroup_children (Music *m )
-{
-  SCM tab = get_property ("acceptHashTable");
-  SCM name = scm_sloppy_assq (ly_symbol2scm ("name"),
-			      m->get_property_alist (false));
-
-  if (!gh_pair_p (name))
-    return false;
-
-  name = gh_cdr (name);
-  SCM accept_list = scm_hashq_ref (tab, name, SCM_UNDEFINED);
-  if (accept_list == SCM_BOOL_F)
-    {
-      accept_list = find_accept_translators (get_simple_trans_list (),
-					     m->get_mus_property ("types"));
-      scm_hashq_set_x (tab, name, accept_list);
-    }
-
-  for (SCM p = accept_list; gh_pair_p (p); p = ly_cdr (p))
-    {
-      Translator * t = unsmob_translator (ly_car (p));
-      if (t && t->try_music (m))
-	return true;
-    }
-  return false;
-}
-
-SCM
-Translator_group::properties_as_alist () const
-{
-  return properties_dict()->to_alist();
-}
-
-String
-Translator_group::context_name () const
-{
-  Context_def * td = unsmob_context_def (definition_ );
-  return ly_symbol2string (td->get_context_name ());
-}
-
-
-
-SCM
-names_to_translators (SCM namelist, Translator_group*tg)
-{
-  SCM l = SCM_EOL;
-  for (SCM s = namelist; gh_pair_p (s) ; s = ly_cdr (s))
-    {
-      Translator * t = get_translator (ly_car (s));
-      if (!t)
-	warning (_f ("can't find: `%s'", s));
-      else
-	{
-	  Translator * tr = t->clone ();
-	  SCM str = tr->self_scm ();
-	  l = gh_cons (str, l);
-
-	  tr->daddy_trans_ = tg;
-	  tr->output_def_  = tg->output_def_;
-
-	  scm_gc_unprotect_object (str);
-	}
-    }
-  return l;
-}
-
-
-SCM
-Translator_group::get_simple_trans_list ()
-{
-  return simple_trans_list_;
-}
-
diff --git a/lily/translator-property.cc b/lily/translator-property.cc
deleted file mode 100644
index 9e48ad9553..0000000000
--- a/lily/translator-property.cc
+++ /dev/null
@@ -1,192 +0,0 @@
-/*   
-translator-property.cc --  implement manipulation of
-
-   immutable Grob property lists. 
-
-source file of the GNU LilyPond music typesetter
-
-(c) 2004 Han-Wen Nienhuys <hanwen@xs4all.nl>
-
- */
-
-#include "translator-group.hh"
-#include "warn.hh"
-#include "item.hh"
-#include "spanner.hh"
-
-/*
-  Grob descriptions (ie. alists with layout properties) are
-  represented as a (ALIST . BASED-ON) pair, where BASED-ON is the
-  alist defined in a parent context. BASED-ON should always be a tail
-  of ALIST.
-  
-  */
-
-/*
-  Push or pop (depending on value of VAL) a single entry (ELTPROP . VAL)
-  entry from a translator property list by name of PROP
-*/
-
-
-void
-execute_pushpop_property (Translator_group * trg,
-			  SCM prop, SCM eltprop, SCM val)
-{
-  if (gh_symbol_p (prop))
-    {
-      if (val != SCM_UNDEFINED)
-	{
-	  SCM prev = SCM_EOL;
-	  Translator_group * where = trg->where_defined (prop);
-
-	  /*
-	    Don't mess with MIDI.
-	   */
-	  if (!where)
-	    return ;
-	  if (where != trg)
-	    {
-	      SCM base = updated_grob_properties (trg, prop);
-	      prev = gh_cons (base, base); 
-	      trg->internal_set_property (prop, prev);
-	    }
-	  else
-	    prev = trg->internal_get_property (prop);
-	  
-	  if (!gh_pair_p (prev))
-	    {
-	      programming_error ("Grob definition should be cons.");
-	      return ;
-	    }
-
-	  SCM prev_alist = gh_car (prev);
-	  
-	  if (gh_pair_p (prev_alist) || prev_alist == SCM_EOL)
-	    {
-	      bool ok = type_check_assignment (eltprop, val, ly_symbol2scm ("backend-type?"));
-	      
-	      if (ok)
-		{
-		  gh_set_car_x (prev, scm_acons (eltprop, val, prev_alist));
-		}
-	    }
-	  else
-	    {
-	      // warning here.
-	    }
-	}
-      else if (trg->where_defined (prop) == trg)
-	{
-	  SCM prev = trg->internal_get_property (prop);
-	  SCM prev_alist = gh_car (prev);
-	  SCM daddy = gh_cdr (prev);
-	  
-	  SCM new_alist = SCM_EOL;
-	  SCM *tail = &new_alist;
-
-	  while (prev_alist != daddy)
-	    {
-	      if (!gh_equal_p (gh_caar (prev_alist), eltprop))
-		{
-		  *tail = gh_cons (gh_car (prev_alist), daddy);
-		  tail = SCM_CDRLOC (*tail);
-		}
-	      prev_alist = gh_cdr (prev_alist);
-	    }
-
-	  if (new_alist == SCM_EOL)
-	    trg->unset_property (prop);
-	  else
-	    trg->internal_set_property (prop, gh_cons (new_alist, daddy));
-	}
-    }
-}
-
-/*
-  PRE_INIT_OPS is in the order specified, and hence must be reversed.
- */
-void
-apply_property_operations (Translator_group*tg, SCM pre_init_ops)
-{
-  SCM correct_order = scm_reverse (pre_init_ops);
-  for (SCM s = correct_order; gh_pair_p (s); s = ly_cdr (s))
-    {
-      SCM entry = ly_car (s);
-      SCM type = ly_car (entry);
-      entry = ly_cdr (entry); 
-      
-      if (type == ly_symbol2scm ("push") || type == ly_symbol2scm ("poppush"))
-	{
-	  SCM val = ly_cddr (entry);
-	  val = gh_pair_p (val) ? ly_car (val) : SCM_UNDEFINED;
-
-	  execute_pushpop_property (tg, ly_car (entry), ly_cadr (entry), val);
-	}
-      else if (type == ly_symbol2scm ("assign"))
-	{
-	  tg->internal_set_property (ly_car (entry), ly_cadr (entry));
-	}
-    }
-}
-
-/*
-  Return the object alist for SYM, checking if its base in enclosing
-  contexts has changed. The alist is updated if necessary. 
-   */
-SCM
-updated_grob_properties (Translator_group* tg, SCM sym)
-{
-  assert (gh_symbol_p (sym));
-  
-  tg = tg->where_defined (sym);
-  SCM daddy_props
-    = (tg->daddy_trans_)
-    ? updated_grob_properties (tg->daddy_trans_, sym)
-    : SCM_EOL;
-  
-  SCM props  = tg->internal_get_property (sym);
-
-  if (!gh_pair_p (props))
-    {
-      programming_error ("grob props not a pair?");
-      return SCM_EOL;
-    }
-
-  SCM based_on = gh_cdr (props);
-  if (based_on == daddy_props)
-    {
-      return gh_car (props);
-    }
-  else
-    {
-      SCM copy = daddy_props;
-      SCM * tail = &copy;
-      SCM p = gh_car (props);
-      while  (p != based_on)
-	{
-	  *tail = gh_cons (gh_car (p), daddy_props);
-	  tail = SCM_CDRLOC (*tail);
-	  p = SCM_CDR (p);
-	}
-      
-      scm_set_car_x (props, copy);
-      scm_set_cdr_x (props, daddy_props);
-
-      return copy;
-    }
-}
-
-Item*
-make_item_from_properties (Translator_group* tg, SCM x)
-{
-  SCM props = updated_grob_properties (tg, x);
-  return new Item (props);
-}
-
-Spanner*
-make_spanner_from_properties (Translator_group *tg, SCM x)
-{
-  SCM props = updated_grob_properties (tg, x);
-  return new Spanner (props);
-}
-
diff --git a/lily/translator-scheme.cc b/lily/translator-scheme.cc
deleted file mode 100644
index 1ccee6c729..0000000000
--- a/lily/translator-scheme.cc
+++ /dev/null
@@ -1,246 +0,0 @@
-/*   
-  translator-scheme.cc --  implement Scheme context functions
- 
-  source file of the GNU LilyPond music typesetter
-
-  (c) 2002--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-
- */
-
-#include "translator.hh"
-#include "context-def.hh"
-
-#include "translator-group.hh"
-#include "lily-guile.hh"
-
-LY_DEFINE(ly_get_context_property,
-	  "ly:get-context-property", 2, 0, 0,
-	  (SCM context, SCM name),
-	  "retrieve the value of @var{name} from context @var{context}")
-{
-  Translator *t = unsmob_translator (context);
-  Translator_group* tr=   dynamic_cast<Translator_group*> (t);
-  SCM_ASSERT_TYPE(tr, context, SCM_ARG1, __FUNCTION__, "Translator group");
-  SCM_ASSERT_TYPE(gh_symbol_p (name), name, SCM_ARG2, __FUNCTION__, "symbol");
-
-  return tr->internal_get_property (name);
-  
-}
-
-LY_DEFINE(ly_set_context_property,
-	  "ly:set-context-property!", 3, 0, 0,
-	  (SCM context, SCM name, SCM val),
-	  "set value of property @var{name} in context @var{context} to @var{val}.")
-{
-  Translator *t = unsmob_translator (context);
-  Translator_group* tr=   dynamic_cast<Translator_group*> (t);
-
-  SCM_ASSERT_TYPE(tr, context, SCM_ARG1, __FUNCTION__, "Context");
-  SCM_ASSERT_TYPE(gh_symbol_p (name), name, SCM_ARG2, __FUNCTION__, "symbol");
-
-  tr->internal_set_property (name, val);
-
-  return SCM_UNSPECIFIED;
-}
-
-
-LY_DEFINE(ly_context_property_where_defined,
-	  "ly:context-property-where-defined", 2, 0, 0,
-	  (SCM context, SCM name),
-	  "Return the context above @var{context} where @var{name}  is defined.")
-{
-  Translator *t = unsmob_translator (context);
-  Translator_group* tr = dynamic_cast<Translator_group*> (t);
-  SCM_ASSERT_TYPE(tr, context, SCM_ARG1, __FUNCTION__, "Context");
-  SCM_ASSERT_TYPE(gh_symbol_p (name), name, SCM_ARG2, __FUNCTION__, "symbol");
-
-
-  tr = tr->where_defined (name);
-
-  if (tr)
-    return tr->self_scm();
-
-  return SCM_EOL;
-}
-
-LY_DEFINE(ly_unset_context_property,
-	  "ly:unset-context-property", 2, 0, 0,
-	  (SCM context, SCM name),
-	  "Unset value of property @var{name} in context @var{context}.")
-{
-  Translator *t = unsmob_translator (context);
-  Translator_group* tr = dynamic_cast<Translator_group*> (t);
-  SCM_ASSERT_TYPE(tr, context, SCM_ARG1, __FUNCTION__, "Context");
-  SCM_ASSERT_TYPE(gh_symbol_p (name), name, SCM_ARG2, __FUNCTION__, "symbol");
-
-  tr->unset_property (name);
-
-  return SCM_UNSPECIFIED;
-}
-
-
-
-LY_DEFINE(ly_context_parent,
-	  "ly:context-parent", 1, 0, 0,
-	  (SCM context),
-	  "Return the parent of @var{context}, #f if none.")
-{
-  Translator *t = unsmob_translator (context);
-  Translator_group* tr=   dynamic_cast<Translator_group*> (t);
-
-  SCM_ASSERT_TYPE(tr, context, SCM_ARG1, __FUNCTION__, "Context");
-
-  tr =  tr->daddy_trans_ ;
-  if (tr)
-    return tr->self_scm();
-  else
-    return SCM_BOOL_F;
-}
-
-/*
-  Todo: should support translator IDs, and creation?
- */
-LY_DEFINE(ly_translator_find,
-	  "ly:translator-find", 2, 0,0,
-	  (SCM context, SCM name),
-	  "Find a parent of @var{context} that has name or alias @var{name}. "
-	  "Return @code{#f} if not found." )
-{
-  Translator_group* tr=   dynamic_cast<Translator_group*> ( unsmob_translator (context));
-
-  SCM_ASSERT_TYPE(tr, context, SCM_ARG1, __FUNCTION__, "context");
-  SCM_ASSERT_TYPE(gh_symbol_p (name), name, SCM_ARG2, __FUNCTION__, "symbol");
-  
-  while (tr)
-    {
-      if (tr->is_alias (name))
-	return tr->self_scm();
-      tr =  tr->daddy_trans_ ;
-    }
-  
-  return SCM_BOOL_F;
-}
-
-
-LY_DEFINE(ly_context_properties,
-	  "ly:context-properties", 1, 0, 0,
-	  (SCM context),
-	  "Return all properties  of @var{context} in an alist.")
-{
-  Translator *t = unsmob_translator (context);
-  Translator_group* tr=   dynamic_cast<Translator_group*> (t);
-
-  SCM_ASSERT_TYPE(tr, context, SCM_ARG1, __FUNCTION__, "Context");
-
-  return tr->properties_as_alist ();
-}
-
-
-
-LY_DEFINE(ly_translator_name,
-	  "ly:translator-name", 1,0,0,  (SCM trans),
-	  "Return the type name of the translator object @var{trans}. The name is a symbol.")
-{
-  Translator * tr =  unsmob_translator (trans);
-  SCM_ASSERT_TYPE(tr, trans, SCM_ARG1, __FUNCTION__, "Translator");
-
-  char const* nm = classname (tr);
-  return ly_symbol2scm (nm);
-}
-
-
-LY_DEFINE(ly_context_id,
-	  "ly:context-id", 1,0,0,  (SCM context),
-	  "Return the id string of @var{context}, i.e. for @code{\\context Voice "
-"= one .. } it will return the string @code{one}.")
-{
-  Translator_group* tr =  dynamic_cast<Translator_group*> (unsmob_translator (context));
-  SCM_ASSERT_TYPE(tr, context, SCM_ARG1, __FUNCTION__, "Context");
-
-  return scm_makfrom0str (tr->id_string_. to_str0 ());
-}
-
-
-LY_DEFINE(ly_context_name,
-	  "ly:context-name", 1,0,0,  (SCM context),
-	  "Return the name of @var{context}, i.e. for @code{\\context Voice "
-"= one .. } it will return the symbol @code{Voice}.")
-{
-  Translator_group* tr =  dynamic_cast<Translator_group*> (unsmob_translator (context));
-  SCM_ASSERT_TYPE(tr, context, SCM_ARG1, __FUNCTION__, "Context");
-
-  return unsmob_context_def (tr->definition_)->get_context_name (); 
-}
-
-
-LY_DEFINE(ly_translator_description,
-	  "ly:translator-description",
-	  1,0,0, (SCM me),
-	  "Return an alist of properties of  translator @var{me}.")
-{
-  Translator *tr =unsmob_translator (me);
-  SCM_ASSERT_TYPE (tr, me, SCM_ARG1, __FUNCTION__, "Context");
-
-  return tr->translator_description ();
-}
-
-
-LY_DEFINE(ly_context_pushpop_property,
-	  "ly:context-pushpop-property", 3, 1, 0,
-	  (SCM context, SCM grob, SCM eltprop, SCM val),
-	  "Do a single @code{\\override} or @code{\\revert} operation "
-	  "in @var{context}. The grob definition @code{grob} is extended with "
-	  "@code{eltprop} (if @var{val} is specified) "
-	  "or reverted (if  unspecified).")
-{
-  Translator_group *tg = dynamic_cast<Translator_group*> (unsmob_translator (context));
-
-  SCM_ASSERT_TYPE(tg, context, SCM_ARG1, __FUNCTION__, "context");
-  SCM_ASSERT_TYPE(gh_symbol_p (grob), grob, SCM_ARG2, __FUNCTION__, "symbol");
-  SCM_ASSERT_TYPE(gh_symbol_p (eltprop), eltprop, SCM_ARG3, __FUNCTION__, "symbol");
-
-  execute_pushpop_property (tg, grob, eltprop, val);
-
-  return SCM_UNDEFINED;
-}
-
-LY_DEFINE(ly_context_p,
-	  "ly:context?", 1, 0, 0,
-	  (SCM x),
-	  "Type predicate: is @var{x} a context?")
-{
-  Translator_group *tg = dynamic_cast<Translator_group*> (unsmob_translator (x));
-
-  return SCM_BOOL (tg);
-}
-	  
-
-int
-Translator::print_smob (SCM s, SCM port, scm_print_state *)
-{
-  Translator *sc = (Translator *) ly_cdr (s);
-     
-  scm_puts ("#<Translator ", port);
-  if (Context_def *d=unsmob_context_def (sc->definition_))
-    {
-      scm_display (d->get_context_name (), port);
-    }
-  else
-    scm_display (ly_translator_name (s), port);
-
-  if (Translator_group *td=dynamic_cast<Translator_group*> (sc))
-    {
-      scm_puts ("=", port);
-      scm_puts (td->id_string_.to_str0 (), port);
-    }
-  
-  scm_display (sc->simple_trans_list_, port);
-
-  /*
-    don't try to print properties, that is too much hassle.
-   */
-  scm_puts (" >", port);
-  
-  return 1;
-}
-
diff --git a/lily/translator.cc b/lily/translator.cc
deleted file mode 100644
index c8a99998c5..0000000000
--- a/lily/translator.cc
+++ /dev/null
@@ -1,159 +0,0 @@
-/*
-  translator.cc -- implement Translator
-
-  source file of the GNU LilyPond music typesetter
-
-  (c) 1997--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-*/
-
-
-#include "translator.hh"
-#include "warn.hh"
-#include "translator-group.hh"
-#include "context-def.hh"
-
-#include "moment.hh"
-#include "ly-smobs.icc"
-
-
-Translator::~Translator ()
-{
-}
-
-void
-Translator::init ()
-{
-  simple_trans_list_ = SCM_BOOL_F;
-  trans_group_list_ = SCM_EOL;
-  properties_scm_ = SCM_EOL;
-  definition_ = SCM_EOL;
-  daddy_trans_ =0;
-  accepts_list_ = SCM_EOL;
-}
-
-Translator::Translator ()
-{
-  self_scm_ = SCM_EOL;
-  init ();
-  output_def_ = 0;
-  smobify_self ();
-}
-
-Translator::Translator (Translator const &s)
-{
-  self_scm_ = SCM_EOL;
-  init ();
-  output_def_ = s.output_def_;
-
-  smobify_self ();
-}
-
-bool
-Translator::is_alias (SCM sym) const
-{
-  return unsmob_context_def (definition_)->is_alias (sym);
-}
-
-bool
-Translator::try_music (Music *)
-{
-  return false;
-}
-			    
-
-Moment
-Translator::now_mom () const
-{
-  return daddy_trans_->now_mom ();
-}
-
-void
-Translator::do_announces ()
-{
-}
-
-Music_output_def *
-Translator::get_output_def () const
-{
-  return
-    (daddy_trans_)
-    ? daddy_trans_->get_output_def ()
-    : 0;
-}
-
-SCM
-Translator::internal_get_property (SCM sym) const
-{
-  return daddy_trans_->internal_get_property (sym);
-}
-
-void
-Translator::stop_translation_timestep ()
-{
-}
-
-/*
-  this function has 2 properties
-
-  - It is called before try_music()
-
-  - It is called before any user information enters the translators.
-  (i.e. any \property or event is not processed yet.)
-
-  */
-void
-Translator::start_translation_timestep ()
-{
-}
-
-void
-Translator::initialize ()
-{
-}
-
-void
-Translator::finalize ()
-{
-}
-
-
-/*
-
-  SMOBS
-
-*/
-SCM
-Translator::mark_smob (SCM sm)
-{
-  Translator * me = (Translator*) SCM_CELL_WORD_1 (sm);
-  scm_gc_mark (me->simple_trans_list_);
-  scm_gc_mark (me->trans_group_list_);
-  scm_gc_mark (me->definition_);  
-  scm_gc_mark (me->properties_scm_);  
-  scm_gc_mark (me->accepts_list_);
-
-  return me->properties_scm_;
-}
-
-SCM
-Translator::translator_description () const
-{
-  return SCM_EOL;
-}
-
-SCM
-Translator::static_translator_description ()const
-{
-  return SCM_EOL;
-}
-
-
-IMPLEMENT_SMOBS (Translator);
-IMPLEMENT_DEFAULT_EQUAL_P (Translator);
-IMPLEMENT_TYPE_P(Translator,"ly:translator?");
-
-SCM
-Translator::get_simple_trans_list()
-{
-  return SCM_EOL;
-}
diff --git a/lily/transposed-music.cc b/lily/transposed-music.cc
deleted file mode 100644
index 47905bca53..0000000000
--- a/lily/transposed-music.cc
+++ /dev/null
@@ -1,23 +0,0 @@
-/*   
-  transposed-music.cc --  implement Transposed_music
-  
-  source file of the GNU LilyPond music typesetter
-  
-  (c) 1998--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-  
- */
-
-#include "transposed-music.hh"
-#include "warn.hh"
-
-Pitch
-Transposed_music::to_relative_octave (Pitch p)
-{
-  return p;
-}
-
-ADD_MUSIC (Transposed_music);
-Transposed_music::Transposed_music ()
-{
-
-}
diff --git a/lily/tuplet-bracket.cc b/lily/tuplet-bracket.cc
deleted file mode 100644
index 5bc83b5e12..0000000000
--- a/lily/tuplet-bracket.cc
+++ /dev/null
@@ -1,541 +0,0 @@
-/*
-  tuplet-bracket.cc -- implement Tuplet_bracket
-
-  source file of the GNU LilyPond music typesetter
-
-  (c) 1997--2004 Jan Nieuwenhuizen <janneke@gnu.org>
-  Han-Wen Nienhuys <hanwen@xs4all.nl>
-*/
-
-/*
-  TODO:
-
-  - tuplet bracket should probably be subject to the same rules as
-  beam sloping/quanting.
-
-  - There is no support for kneed brackets, or nested brackets.
-
-  - number placement for parallel beams should be much more advanced:
-    for sloped beams some extra horizontal offset must be introduced.
-
-  - number placement is usually done over the center note, not the
-    graphical center.
-  
- */
-
-#include <math.h>
-
-#include "line-interface.hh"
-#include "beam.hh"
-#include "box.hh"
-#include "warn.hh"
-#include "font-interface.hh"
-#include "molecule.hh"
-#include "paper-def.hh"
-#include "text-item.hh"
-#include "tuplet-bracket.hh"
-#include "stem.hh"
-#include "note-column.hh"
-#include "group-interface.hh"
-#include "directional-element-interface.hh"
-#include "spanner.hh"
-#include "staff-symbol-referencer.hh"
-#include "lookup.hh"
-
-
-static Grob*
-get_x_bound_grob (Grob *g, Direction my_dir)
-{
-  if (Note_column::get_stem (g)
-      && Note_column::dir (g) == my_dir)
-    {
-      g = Note_column::get_stem (g);
-    }
-  return g;
-}
-
-
-
-Grob*
-Tuplet_bracket::parallel_beam (Grob *me, Link_array<Grob> const &cols, bool *equally_long)
-{
-  /*
-    ugh: code dup. 
-  */
-  Grob *s1 = Note_column::get_stem (cols[0]); 
-  Grob *s2 = Note_column::get_stem (cols.top());    
-
-  Grob*b1 = s1 ? Stem::get_beam (s1) : 0;
-  Grob*b2 = s2 ? Stem::get_beam (s2) : 0;
-  
-  Spanner*sp = dynamic_cast<Spanner*> (me);  
-
-  *equally_long= false;
-  if (! (b1 && (b1 == b2) && !sp->broken_b()))
-      return 0;
-
-  Link_array<Grob> beam_stems = Pointer_group_interface__extract_grobs
-    (b1, (Grob*)0, "stems");
-
-  if (beam_stems.size() == 0)
-    {
-      programming_error ("Beam under tuplet bracket has no stems!");
-      *equally_long = 0;
-      return 0;
-    }
-  
-  *equally_long = (beam_stems[0] == s1 && beam_stems.top() == s2);
-  return b1;
-}
-
-
-/*
-  TODO:
-
-  in the case that there is no bracket, but there is a (single) beam,
-  follow beam precisely for determining tuplet number location.
-  
- */
-MAKE_SCHEME_CALLBACK (Tuplet_bracket,print,1);
-SCM
-Tuplet_bracket::print (SCM smob) 
-{
-  Grob *me= unsmob_grob (smob);
-  Molecule  mol;
-  Link_array<Grob> columns=
-    Pointer_group_interface__extract_grobs (me, (Grob*)0, "note-columns");
-
-  if (!columns.size ())
-    return mol.smobbed_copy ();
-
-  
-
-  {
-    SCM lp = me->get_grob_property ("left-position");
-    SCM rp = me->get_grob_property ("right-position");  
-
-    if (!gh_number_p (rp) || !gh_number_p (lp))
-      after_line_breaking (smob);
-  }
-  
-  Real ly = robust_scm2double (me->get_grob_property ("left-position"), 0);
-  Real ry = robust_scm2double (me->get_grob_property ("right-position"), 0);  
-  
-  bool equally_long = false;
-  Grob * par_beam = parallel_beam (me, columns, &equally_long);
-
-  Spanner*sp = dynamic_cast<Spanner*> (me);  
-
-  bool bracket_visibility = !(par_beam && equally_long);
-  bool number_visibility = true;
-
-  /*
-    Fixme: the type of this prop is sucky.
-   */
-  SCM bracket = me->get_grob_property ("bracket-visibility");
-  if (gh_boolean_p (bracket))
-    {
-      bracket_visibility = gh_scm2bool (bracket);
-    }
-  else if (bracket == ly_symbol2scm ("if-no-beam"))
-    bracket_visibility = !par_beam;
-
-  SCM numb = me->get_grob_property ("number-visibility");  
-  if (gh_boolean_p (numb))
-    {
-      number_visibility = gh_scm2bool (numb);
-    }
-  else if (numb == ly_symbol2scm ("if-no-beam"))
-    number_visibility = !par_beam;
-	
-  Grob * commonx = columns[0]->common_refpoint (columns.top (),X_AXIS);
-
-  /*
-    Tuplet brackets are normally not broken, but we shouldn't crash if
-    they are.
-   */
-  commonx = commonx->common_refpoint (sp->get_bound(LEFT), X_AXIS);
-  commonx = commonx->common_refpoint (sp->get_bound(RIGHT), X_AXIS);  
-  
-  Direction dir = get_grob_direction (me);
-
-  Grob * lgr = get_x_bound_grob (columns[0], dir);
-  Grob * rgr = get_x_bound_grob (columns.top(), dir);  
-  Real x0 = lgr->extent (commonx,X_AXIS)[LEFT];
-  Real x1 = rgr->extent (commonx,X_AXIS)[RIGHT];
-
-  Real w = x1 -x0;
-  
-  SCM number = me->get_grob_property ("text");
-
-  Paper_def *pap = me->get_paper ();
-  if (gh_string_p (number) && number_visibility)
-    {
-      SCM properties = Font_interface::font_alist_chain (me);
-      SCM snum = Text_item::interpret_markup (pap->self_scm (), properties, number);
-      Molecule num = *unsmob_molecule (snum);
-      num.align_to (X_AXIS, CENTER);
-      num.translate_axis (w/2, X_AXIS);
-      num.align_to (Y_AXIS, CENTER);
-	
-      num.translate_axis ((ry-ly)/2, Y_AXIS);
-
-      mol.add_molecule (num);
-    }
-
-
-  /*
-    No bracket when it would be smaller than the number.
-
-    TODO: should use GAP in calculation too.
-   */
-  if (bracket_visibility && number_visibility
-      && mol.extent (X_AXIS).length () > w)
-    {
-      bracket_visibility = false;
-    }
-  
-  if (bracket_visibility)      
-    {
-      Real ss =   Staff_symbol_referencer::staff_space (me);
-      Real gap = robust_scm2double (me->get_grob_property ("gap"), 1.0)
-	* ss;
-      
-      SCM fl = me->get_grob_property ("bracket-flare");
-      SCM eh = me->get_grob_property ("edge-height");
-      SCM sp = me->get_grob_property ("shorten-pair");
-      
-      Direction d = LEFT;
-      Drul_array<Real> height, flare, shorten;
-      do {
-	flare[d] =  height[d] = shorten[d] = 0.0;
-	if (is_number_pair (fl))
-	  flare[d] +=  ss * gh_scm2double (index_get_cell (fl, d));
-	if (is_number_pair (eh))
-	  height[d] +=  - dir * ss *gh_scm2double (index_get_cell (eh, d));
-	if (is_number_pair (sp))
-	  shorten[d] +=  ss *gh_scm2double (index_get_cell (sp, d));
-      }
-      while (flip (&d) != LEFT);
-      
-      Molecule brack = make_bracket (me, Y_AXIS,
-				     Offset (w, ry - ly), 
-				     height, gap,
-				     flare, shorten);
-      mol.add_molecule (brack);
-    }
-  
-  mol.translate_axis (ly, Y_AXIS);
-  mol.translate_axis (x0  - sp->get_bound (LEFT)->relative_coordinate (commonx,X_AXIS),X_AXIS);
-  return mol.smobbed_copy ();
-}
-
-/*
-  should move to lookup?
-
-  TODO: this will fail for very short (shorter than the flare)
-  brackets.
- */
-Molecule
-Tuplet_bracket::make_bracket (Grob *me,	// for line properties.
-			      Axis protusion_axis,
-			      Offset dz,
-			      Drul_array<Real> height,
-			      Real gap,
-			      Drul_array<Real> flare,
-			      Drul_array<Real> shorten)
-{
-  Drul_array<Offset> corners (Offset(0,0), dz);
-  
-  Real length = dz.length ();
-  Drul_array<Offset> gap_corners;
-
-  
-  Axis bracket_axis = other_axis (protusion_axis);
-
-  Drul_array<Offset> straight_corners = corners;
-
-  Direction d = LEFT;
-  do {
-    straight_corners[d] += - d * shorten[d] /length * dz;
-  } while (flip (&d) != LEFT);
-
-  /*
-    UGH: the shortening factor is magic.
-   */
-  gap = gap <?
-    (0.66 * (straight_corners[RIGHT] - straight_corners[LEFT]).length ());
-  
-  do {
-    gap_corners[d] = (dz * 0.5) + d * 0.5 * gap / length * dz;
-  } while (flip (&d) != LEFT);
-
-  Drul_array<Offset> flare_corners = straight_corners;
-  do {
-    flare_corners[d][bracket_axis] = straight_corners[d][bracket_axis];
-    flare_corners[d][protusion_axis] += height[d];
-    straight_corners[d][bracket_axis] += - d * flare[d];
-  } while (flip (&d) != LEFT);
-
-  Molecule m;
-  do {
-    m.add_molecule (Line_interface::line (me, straight_corners[d],
-						 gap_corners[d]));
-    
-    m.add_molecule (Line_interface::line (me,  straight_corners[d],
-						 flare_corners[d]));
-  } while (flip (&d) != LEFT);
-
-  return m;  
-}
-
-
-/*
-  use first -> last note for slope, and then correct for disturbing
-  notes in between.  */
-void
-Tuplet_bracket::calc_position_and_height (Grob*me,Real *offset, Real * dy) 
-{
-  Link_array<Grob> columns=
-    Pointer_group_interface__extract_grobs (me, (Grob*)0, "note-columns");
-
-
-  SCM cols = me->get_grob_property ("note-columns");
-  Grob * commony = common_refpoint_of_list (cols, me, Y_AXIS);
-  Grob * commonx = common_refpoint_of_list (cols, me, X_AXIS);  
-
-  Interval staff;
-  if (Grob * st = Staff_symbol_referencer::get_staff_symbol (me))
-    staff = st->extent (commony, Y_AXIS);
-  
-  Direction dir = get_grob_direction (me);
-
-  /*
-    Use outer non-rest columns to determine slope
-   */
-  int l = 0;
-  while (l <columns.size () && Note_column::has_rests (columns[l]))
-    l ++;
-
-  int r = columns.size ()- 1;
-  while (r >= l && Note_column::has_rests (columns[r]))
-    r--;
-  
-  if (l < r)
-    {
-      Interval rv =columns[r]->extent (commony, Y_AXIS);
-      Interval lv =columns[l]->extent (commony, Y_AXIS);
-      rv.unite (staff);
-      lv.unite (staff);
-      Real graphical_dy =  rv[dir] - lv[dir];
-
-      Slice ls = Note_column::head_positions_interval (columns[l]);
-      Slice rs = Note_column::head_positions_interval (columns[r]);
-      
-      Interval musical_dy;
-      musical_dy[UP] = rs[UP] - ls[UP];
-      musical_dy[DOWN] = rs[DOWN] - ls[DOWN];
-      if (sign (musical_dy[UP]) != sign (musical_dy[DOWN]))
-	*dy = 0.0;
-      else if (sign (graphical_dy) != sign (musical_dy[DOWN]))
-	*dy = 0.0;
-      else
-	*dy = graphical_dy;
-    }
-  else
-    * dy = 0;
-
-
-  *offset = - dir * infinity_f;
-
-  if (!columns.size ())
-    return;
-
-
-  
-  Grob * lgr = get_x_bound_grob (columns[0], dir);
-  Grob * rgr = get_x_bound_grob (columns.top(), dir);  
-  Real x0 = lgr->extent (commonx,X_AXIS)[LEFT];
-  Real x1 = rgr->extent (commonx,X_AXIS)[RIGHT];
-
-
-  /*
-    Slope.
-  */
-  Real factor = columns.size () > 1 ? 1/ (x1 - x0) : 1.0;
-  
-  for (int i = 0; i < columns.size ();  i++)
-    {
-      Interval note_ext =columns[i]->extent (commony, Y_AXIS);
-      note_ext.unite (staff);
-      Real notey = note_ext[dir] - me->relative_coordinate (commony, Y_AXIS);
-      
-      Real x = columns[i]->relative_coordinate (commonx, X_AXIS) - x0;
-      Real tuplety =  *dy * x * factor;
-
-      if (notey * dir > (*offset + tuplety) * dir)
-	*offset = notey - tuplety; 
-    }
-
-  // padding
-  *offset +=  gh_scm2double (me->get_grob_property ("padding")) *dir;
-
-  
-  /*
-    horizontal brackets should not collide with staff lines.
-    
-   */
-  Real ss= Staff_symbol_referencer::staff_space (me);
-  if (*dy == 0 && fabs (*offset) <  ss * Staff_symbol_referencer::staff_radius (me))
-    {
-      // quantize, then do collision check.
-      *offset *= 2 / ss;
-      
-      *offset = rint (*offset);
-      if (Staff_symbol_referencer::on_staffline (me, (int) rint (*offset)))
-	*offset += dir;
-
-      *offset *= 0.5 * ss;
-    }
-  
-}
-
-
-
-/*
-  We depend on the beams if there are any.
- */
-MAKE_SCHEME_CALLBACK (Tuplet_bracket,before_line_breaking,1);
-SCM
-Tuplet_bracket::before_line_breaking (SCM smob)
-{
-  Grob *me = unsmob_grob (smob);
-  Link_array<Grob> columns=
-    Pointer_group_interface__extract_grobs (me, (Grob*)0, "note-columns");
-
-
-  for (int i = columns.size(); i--;)
-    {
-      Grob * s =Note_column::get_stem (columns[i]);
-      Grob * b = s ? Stem::get_beam (s): 0;
-      if (b)
-	me->add_dependency (b);
-    }
-  return SCM_UNDEFINED;
-}
-
-MAKE_SCHEME_CALLBACK (Tuplet_bracket,after_line_breaking,1);
-
-SCM
-Tuplet_bracket::after_line_breaking (SCM smob)
-{
-  Grob * me = unsmob_grob (smob);
-  Link_array<Grob> columns=
-    Pointer_group_interface__extract_grobs (me, (Grob*)0, "note-columns");
-
-  if (!columns.size ())
-    {
-      me->suicide ();
-      return SCM_UNSPECIFIED;
-    }
-  if (dynamic_cast<Spanner*> (me)->broken_b ())
-    {
-      me->warning (_("Killing tuplet bracket across linebreak."));
-      me->suicide();
-      return SCM_UNSPECIFIED;
-    }
-  
-  Direction dir = get_grob_direction (me);
-  if (!dir)
-    {
-      dir = Tuplet_bracket::get_default_dir (me);
-      set_grob_direction (me, dir);
-    }
-  
-  bool equally_long = false;
-  Grob * par_beam = parallel_beam (me, columns, &equally_long);
-
-  /*
-    We follow the beam only if there is one, and we are next to it.
-   */
-  Real dy, offset;
-  if (!par_beam
-      || get_grob_direction (par_beam) != dir)
-    {
-      calc_position_and_height (me,&offset,&dy);
-    }
-  else
-    {
-      SCM ps =  par_beam->get_grob_property ("positions"); 
-
-      Real lp = gh_scm2double (gh_car (ps));
-      Real rp = gh_scm2double (gh_cdr (ps));
-
-      /*
-	duh. magic.
-       */
-      offset = lp + dir * (0.5 + gh_scm2double (me->get_grob_property ("padding")));
-      dy = rp- lp;
-    }
-  
-  
-  SCM lp =  me->get_grob_property ("left-position");
-  SCM rp = me->get_grob_property ("right-position");  
-  
-  if (gh_number_p (lp) && !gh_number_p (rp))
-    {
-      rp = gh_double2scm (gh_scm2double (lp) + dy);
-    }
-  else if (gh_number_p (rp) && !gh_number_p (lp))
-    {
-      lp = gh_double2scm (gh_scm2double (rp) - dy);
-    }
-  else if (!gh_number_p (rp) && !gh_number_p (lp))
-    {
-      lp = gh_double2scm (offset);
-      rp = gh_double2scm (offset +dy);
-    }
-
-  me->set_grob_property ("left-position", lp);
-  me->set_grob_property ("right-position", rp);
-
-  return SCM_UNSPECIFIED;
-}
-
-
-/*
-  similar to beam ? 
- */
-Direction
-Tuplet_bracket::get_default_dir (Grob*me)
-{
-  Drul_array<int> dirs(0,0);  
-  for (SCM s = me->get_grob_property ("note-columns"); gh_pair_p (s); s = ly_cdr (s))
-    {
-      Grob * nc = unsmob_grob (ly_car (s));
-      Direction d = Note_column::dir (nc);
-      if (d)
-	dirs[d]++;
-    }
-
-  return dirs[UP] >= dirs[DOWN] ? UP : DOWN;
-}
-
-void
-Tuplet_bracket::add_column (Grob*me, Item*n)
-{
-  Pointer_group_interface::add_grob (me, ly_symbol2scm ("note-columns"), n);
-  me->add_dependency (n);
-
-  add_bound_item (dynamic_cast<Spanner*> (me), n);
-}
-
-
-
-
-
-
-ADD_INTERFACE (Tuplet_bracket,"tuplet-bracket-interface",
-  "A bracket with a number in the middle, used for tuplets.",
-  "note-columns bracket-flare edge-height shorten-pair padding gap left-position right-position bracket-visibility number-visibility thickness direction");
-
diff --git a/lily/tuplet-engraver.cc b/lily/tuplet-engraver.cc
deleted file mode 100644
index 0db8d88ef2..0000000000
--- a/lily/tuplet-engraver.cc
+++ /dev/null
@@ -1,161 +0,0 @@
-/*   
-  plet-engraver.cc --  implement Tuplet_engraver
-  
-  source file of the GNU LilyPond music typesetter
-  
-  (c) 1998--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-  
- */
-
-
-
-#include "tuplet-bracket.hh"
-#include "note-column.hh"
-#include "time-scaled-music.hh"
-#include "beam.hh"
-#include "music-list.hh"
-#include "engraver.hh"
-#include "spanner.hh"
-
-class Tuplet_engraver : public Engraver
-{
-public:
-  TRANSLATOR_DECLARATIONS(Tuplet_engraver);
-
-protected:
-  Link_array<Music> time_scaled_musics_;
-  /// when does the scaled music stop? Array order is synced with time_scaled_musics_
-  Array<Rational> stop_moments_;
-  /// when does the current spanner stop? Array order is synced with time_scaled_musics_
-  Array<Rational> span_stop_moments_;
-  
-  /// The spanners. Array order is synced with time_scaled_musics_
-  Link_array<Spanner> started_spanners_;
-
-  virtual void finalize ();
-  virtual void acknowledge_grob (Grob_info);
-  virtual bool try_music (Music*r);
-  virtual void start_translation_timestep ();
-  virtual void process_acknowledged_grobs ();
-};
-
-bool
-Tuplet_engraver::try_music (Music *c)
-{
-  if (c->is_mus_type ("time-scaled-music"))
-    {
-      Music *el = unsmob_music (c->get_mus_property ("element"));
-      if (el && !el->is_mus_type ("event-chord"))
-	{
-	  time_scaled_musics_.push (c);
-	  Rational m = now_mom ().main_part_ + c->get_length ().main_part_;
-	  stop_moments_.push (m);
-
-	  SCM s = get_property ("tupletSpannerDuration");
-	  if (unsmob_moment (s))
-	    m = m <? (now_mom () + *unsmob_moment (s)).main_part_;
-	  
-	  span_stop_moments_.push (m);
-	}
-      return true;
-    }
-  return false;
-}
-
-void
-Tuplet_engraver::process_acknowledged_grobs ()
-{
-  for (int i= 0; i < time_scaled_musics_.size (); i++)
-    {
-      if (i < started_spanners_.size () && started_spanners_[i])
-	continue;
-
-      Spanner* glep = make_spanner ("TupletBracket");
-
-      if (i >= started_spanners_.size ())
-	started_spanners_.push (glep);
-      else
-	started_spanners_[i] = glep;
-      
-
-      SCM proc = get_property ("tupletNumberFormatFunction");
-      if (gh_procedure_p (proc))
-	{
-	  SCM t = gh_apply (proc, scm_list_n (time_scaled_musics_[i]->self_scm (), SCM_UNDEFINED));
-	  glep->set_grob_property ("text", t);
-	}
-      
-      announce_grob(glep, time_scaled_musics_ [i]->self_scm());
-    }
-}
-
-void
-Tuplet_engraver::acknowledge_grob (Grob_info i)
-{
-  if (Note_column::has_interface (i.grob_))
-    {
-      for (int j =0; j  <started_spanners_.size (); j++)
-	if (started_spanners_[j]) 
-	  Tuplet_bracket::add_column (started_spanners_[j], dynamic_cast<Item*> (i.grob_));
-    }
-}
-
-void
-Tuplet_engraver::start_translation_timestep ()
-{
-  Moment now = now_mom ();
-
-  Moment tsd;
-  SCM s = get_property ("tupletSpannerDuration");
-  if (unsmob_moment (s))
-    tsd = unsmob_moment (s)->main_part_;
-
-  for (int i= started_spanners_.size (); i--;)
-    {
-      if (now.main_part_ >= span_stop_moments_[i])
-	{
-	  if (Spanner *sp = started_spanners_[i])
-	    {
-	      if (!sp->get_bound (RIGHT))
-		sp->set_bound (RIGHT, sp->get_bound (LEFT));
-	      
-	      typeset_grob (sp);
-
-	      started_spanners_[i] =0;
-	    }
-	  
-	  if (tsd.to_bool ())
-	    span_stop_moments_[i] += tsd.main_part_;
-	}
-
-      if (now.main_part_ >= stop_moments_[i])
-	{
-	  started_spanners_.del (i);
-	  stop_moments_.del (i);
-	  span_stop_moments_.del (i);
-	  time_scaled_musics_.del (i);
-	}
-    }
-}
-
-void
-Tuplet_engraver::finalize ()
-{
-  for (int i=0; i < started_spanners_.size (); i++)
-    {
-      if (started_spanners_[i])
-	typeset_grob (started_spanners_[i]);
-    }  
-}
-
-
-
-Tuplet_engraver::Tuplet_engraver(){}
-
-ENTER_DESCRIPTION(Tuplet_engraver,
-/* descr */       "Catch Time_scaled_music and generate appropriate bracket  ",
-/* creats*/       "TupletBracket",
-/* accepts */     "time-scaled-music",
-/* acks  */      "note-column-interface",
-/* reads */       "tupletNumberFormatFunction tupletSpannerDuration",
-/* write */       "");
diff --git a/lily/type-swallow-translator.cc b/lily/type-swallow-translator.cc
deleted file mode 100644
index b5832f93ce..0000000000
--- a/lily/type-swallow-translator.cc
+++ /dev/null
@@ -1,73 +0,0 @@
-/*
-  type-swallow-translator.cc -- implement Type_swallow_translator
-
-  source file of the GNU LilyPond music typesetter
-
-  (c) 1997--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-*/
-
-#include "translator.hh"
-#include "event.hh"
-
-class Skip_event_swallow_translator : public virtual Translator
-{
-protected:
-  virtual bool try_music (Music*) { return true; }
-
-public:  
-  TRANSLATOR_DECLARATIONS(Skip_event_swallow_translator);
-};
-
-
-class Rest_swallow_translator : public virtual Translator
-{
-protected:
-  virtual bool try_music (Music*) { return true; }
-
-public:  
-  TRANSLATOR_DECLARATIONS(Rest_swallow_translator);
-};
-
-
-Skip_event_swallow_translator::Skip_event_swallow_translator(){}
-
-ENTER_DESCRIPTION(Skip_event_swallow_translator,
-		  "Swallow \\skip.",
-		  "",
-		  "skip-event",
-		  "",
-		  "",
-		  "");
-
-
-Rest_swallow_translator::Rest_swallow_translator(){}
-
-ENTER_DESCRIPTION(Rest_swallow_translator,
-		  "Swallow rest",
-		  "",
-		  "rest-event",
-		  "",
-		  "",
-	
-
-	  "");
-
-class Note_swallow_translator : public virtual Translator
-{
-protected:
-  virtual bool try_music (Music*) { return true; }
-
-public:  
-  TRANSLATOR_DECLARATIONS(Note_swallow_translator);
-};
-
-Note_swallow_translator::Note_swallow_translator(){}
-
-ENTER_DESCRIPTION(Note_swallow_translator,
-		  "Swallow notes",
-		  "",
-		  "note-event",
-		  "",
-		  "",
-		  "");
-		  
diff --git a/lily/un-relativable-music.cc b/lily/un-relativable-music.cc
deleted file mode 100644
index fa6ee090fb..0000000000
--- a/lily/un-relativable-music.cc
+++ /dev/null
@@ -1,24 +0,0 @@
-/*   
-  un-relativable-music.cc --  implement Un_relativable_music
-  
-  source file of the GNU LilyPond music typesetter
-  
-  (c) 2001--2004  Han-Wen Nienhuys <hanwen@cs.uu.nl>
-  
- */
-
-#include "un-relativable-music.hh"
-
-
-Un_relativable_music::Un_relativable_music ( )
-{
-}
-
-Pitch
-Un_relativable_music::to_relative_octave (Pitch p)
-{
-  return p;
-}
-
-ADD_MUSIC(Un_relativable_music);
-
diff --git a/lily/unfolded-repeat-iterator.cc b/lily/unfolded-repeat-iterator.cc
deleted file mode 100644
index a963311538..0000000000
--- a/lily/unfolded-repeat-iterator.cc
+++ /dev/null
@@ -1,172 +0,0 @@
-/*   
-unfolded-repeat-iterator.cc --  implement Unfolded_repeat_iterator, Volta_repeat_iterator
-
-source file of the GNU LilyPond music typesetter
-
-
-(c) 2002--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-*/
-
-
-#include "music.hh"
-#include "sequential-iterator.hh"
-#include "translator-group.hh"
-
-class Unfolded_repeat_iterator : public Sequential_iterator
-{
-public:
-  DECLARE_SCHEME_CALLBACK(constructor, ());
-protected:
-  virtual SCM get_music_list () const;
-};
-
-
-SCM
-Unfolded_repeat_iterator::get_music_list () const
-{
-  SCM l = SCM_EOL;
-  SCM *tail = &l;
-  
-  SCM body = get_music ()->get_mus_property ("element");
-  SCM alts = get_music ()->get_mus_property ("elements");
-  int alt_count = scm_ilength (alts);
-  int rep_count = gh_scm2int (get_music ()->get_mus_property ("repeat-count"));
-
-  for (int i = 0; i < rep_count; i++)
-    {
-      if (unsmob_music (body))
-	*tail = gh_cons (body, SCM_EOL) ;
-
-      tail = SCM_CDRLOC (*tail);
-
-      if (alt_count)
-	{
-	  *tail = gh_cons (gh_car (alts), SCM_EOL);
-	  tail = SCM_CDRLOC (*tail);
-	  if (i >= rep_count - alt_count)
-	    
-	    alts = gh_cdr (alts);
-	}      
-    }
-
-  return l; 
-}
-
-class Volta_repeat_iterator : public Sequential_iterator
-{
-public:
-  DECLARE_SCHEME_CALLBACK(constructor, ());
-  Volta_repeat_iterator();
-
-  void add_repeat_command (SCM);
-protected:
-  virtual SCM get_music_list () const;
-  virtual void next_element (bool);
-  virtual void construct_children();
-  virtual void process (Moment);
-
-  bool first_time_;
-  int alt_count_;
-  int rep_count_;
-  int done_count_;
-};
-
-
-Volta_repeat_iterator::Volta_repeat_iterator()
-{
-  done_count_ = alt_count_ = rep_count_= 0;
-  first_time_ = true;
-}
-
-SCM
-Volta_repeat_iterator::get_music_list()const
-{
-  return gh_cons (get_music ()->get_mus_property ("element"),
-		  get_music ()->get_mus_property ("elements"));
-}
-
-void
-Volta_repeat_iterator::construct_children ()
-{
-  Sequential_iterator::construct_children();
-  
-  SCM alts = get_music ()->get_mus_property ("elements");
-
-  alt_count_ = scm_ilength (alts);
-  rep_count_ = gh_scm2int (get_music ()->get_mus_property ("repeat-count"));
-  done_count_ = 0;
-}
-
-
-/*
-  TODO: add source information for debugging
- */
-void
-Volta_repeat_iterator::add_repeat_command (SCM what)
-{
-  SCM reps = ly_symbol2scm ("repeatCommands");
-  SCM current_reps = get_outlet ()->internal_get_property (reps);
-
-  Translator_group * where = get_outlet ()->where_defined (reps);
-  if (where
-      && current_reps == SCM_EOL || gh_pair_p (current_reps))
-    {
-      current_reps = gh_cons (what, current_reps);
-      where->internal_set_property (reps, current_reps);
-    }
-}
-
-
-void
-Volta_repeat_iterator::next_element (bool side_effect)
-{
-  done_count_ ++;
-
-  Sequential_iterator::next_element (side_effect);
-
-  if (side_effect)
-    {    
-      if (alt_count_)
-	{
-	  String repstr = to_string (rep_count_ - alt_count_ + done_count_) + ".";
-	  if (done_count_ > 1)
-	    {
-	      add_repeat_command (scm_list_n (ly_symbol2scm ("volta"), SCM_BOOL_F, SCM_UNDEFINED));
-
-	      if (done_count_ - 1 < alt_count_)
-		add_repeat_command (ly_symbol2scm ("end-repeat"));
-	    }
-
-	  
-      
-	  if (done_count_ == 1 && alt_count_ < rep_count_)
-	    {
-	      repstr = "1.--" + to_string (rep_count_ - alt_count_ + done_count_) + ".";
-	    }
-
-	  if (done_count_ <= alt_count_)
-	    add_repeat_command (scm_list_n (ly_symbol2scm ("volta"),
-					    scm_makfrom0str (repstr.to_str0 ()), SCM_UNDEFINED));
-	}
-      else
-	{
-	  add_repeat_command (ly_symbol2scm ("end-repeat"));
-	}
-    }
-}
-
-
-void
-Volta_repeat_iterator::process (Moment m)
-{
-  if (first_time_)
-    {
-      add_repeat_command (ly_symbol2scm ("start-repeat"));
-      first_time_ = false;
-    }
-  Sequential_iterator::process(m);
-}
-
-
-IMPLEMENT_CTOR_CALLBACK(Volta_repeat_iterator);
-IMPLEMENT_CTOR_CALLBACK(Unfolded_repeat_iterator);
diff --git a/lily/untransposable-music.cc b/lily/untransposable-music.cc
deleted file mode 100644
index a6c3024fa4..0000000000
--- a/lily/untransposable-music.cc
+++ /dev/null
@@ -1,33 +0,0 @@
-/*   
-untransposable-music.cc --  implement Untransposable_music
-
-source file of the GNU LilyPond music typesetter
-
-(c) 2001--2004  Han-Wen Nienhuys <hanwen@cs.uu.nl>
-
- */
-
-#include "untransposable-music.hh"
-
-/*
-  todo: This one, together with Un_relativable_music is ugh.
-
-  fixthis.
-*/
-void
-Untransposable_music::transpose (Pitch )
-{
-}
-
-Pitch
-Untransposable_music::to_relative_octave (Pitch p)
-{
-  return p;
-}
-
-ADD_MUSIC(Untransposable_music);
-
-Untransposable_music::Untransposable_music()
-{
-
-}
diff --git a/lily/vaticana-ligature-engraver.cc b/lily/vaticana-ligature-engraver.cc
deleted file mode 100644
index a7d4dfff10..0000000000
--- a/lily/vaticana-ligature-engraver.cc
+++ /dev/null
@@ -1,587 +0,0 @@
-/*
-  vaticana-ligature-engraver.cc -- implement Vaticana_ligature_engraver
-  
-  source file of the GNU LilyPond music typesetter
-  
-  (c) 2003 Juergen Reuter <reuter@ipd.uka.de>
- */
-
-#include "gregorian-ligature-engraver.hh"
-#include "gregorian-ligature.hh"
-#include "vaticana-ligature.hh"
-#include "item.hh"
-#include "spanner.hh"
-#include "staff-symbol-referencer.hh"
-#include "font-interface.hh"
-#include "warn.hh"
-#include "paper-def.hh"
-#include "paper-column.hh"
-
-/*
- * This class implements the notation specific aspects of Vaticana
- * style ligatures for Gregorian chant notation.
- */
-
-class Vaticana_ligature_engraver : public Gregorian_ligature_engraver
-{
-
-private:
-  bool is_stacked_head (int prefix_set,
-			int context_info);
-  Real align_heads (Array<Grob_info> primitives,
-		    Real flexa_width,
-		    Real thickness);
-
-public:
-  TRANSLATOR_DECLARATIONS(Vaticana_ligature_engraver);
-
-protected:
-  virtual Spanner *create_ligature_spanner ();
-  virtual void transform_heads (Spanner *ligature,
-				Array<Grob_info> primitives);
-};
-
-Vaticana_ligature_engraver::Vaticana_ligature_engraver ()
-{
-}
-
-Spanner *
-Vaticana_ligature_engraver::create_ligature_spanner ()
-{
-  return make_spanner ("VaticanaLigature");
-}
-
-bool
-Vaticana_ligature_engraver::is_stacked_head (int prefix_set,
-					     int context_info)
-{
-      bool is_stacked_b;
-
-      // upper head of pes is stacked upon lower head of pes ...
-      is_stacked_b = context_info & PES_UPPER;
-
-      // ... unless this note starts a flexa
-      if (context_info & FLEXA_LEFT)
-	is_stacked_b = false;
-
-      // ... or another pes
-      if (context_info & PES_LOWER)
-	is_stacked_b = false;
-
-      // ... or the previous note is a semivocalis or inclinatum
-      if (context_info & AFTER_DEMINUTUM)
-	is_stacked_b = false;
-
-      // auctum head is never stacked upon preceding note
-      if (prefix_set & AUCTUM)
-	is_stacked_b = false;
-
-      // virga is never stacked upon preceding note
-      if (prefix_set & VIRGA)
-	is_stacked_b = false;
-
-      // oriscus is never stacked upon preceding note
-      if (prefix_set & ORISCUS)
-	is_stacked_b = false;
-
-      if ((prefix_set & DEMINUTUM) &&
-	  !(prefix_set & INCLINATUM) &&
-	  (context_info & FLEXA_RIGHT))
-	is_stacked_b = true; // semivocalis head of deminutus form
-
-      return is_stacked_b;
-}
-
-/*
- * When aligning the heads, sometimes extra space is needed, e.g. to
- * avoid clashing with the appendix of an adjacent notehead or with an
- * adjacent notehead itself if it has the same pitch.  Extra space is
- * added at most once between to heads.
- */
-bool
-need_extra_space (int prev_prefix_set, int prefix_set,
-		  int context_info, int delta_pitch)
-{
-  if (prev_prefix_set & VIRGA)
-    /*
-     * After a virga, make a an additional small space such that the
-     * appendix on the right side of the head does not touch the
-     * following head.
-     */
-    return true;
-
-  if ((prefix_set & INCLINATUM) &&
-	   !(prev_prefix_set & INCLINATUM))
-    /*
-     * Always start a series of inclinatum heads with an extra space.
-     */
-    return true;
-
-  if ((context_info & FLEXA_LEFT) && !(context_info & PES_UPPER))
-    /*
-     * Before a flexa (but not within a torculus), make a an
-     * additional small space such that the appendix on the left side
-     * of the flexa does not touch the this head.
-     */
-    return true;
-
-  if (delta_pitch == 0)
-    /*
-     * If there are two adjacent noteheads with the same pitch, add
-     * additional small space between them, such that they do not
-     * touch each other.
-     */
-    return true;
-
-  return false;
-}
-
-Real
-Vaticana_ligature_engraver::align_heads (Array<Grob_info> primitives,
-					 Real flexa_width,
-					 Real thickness)
-{
-  if (!primitives.size ())
-    {
-      programming_error ("Vaticana_ligature: "
-			 "empty ligature [ignored]");
-      return 0.0;
-    }
-
-  /*
-   * The paper column where we put the whole ligature into.
-   */
-  Paper_column *column =
-    dynamic_cast<Item*> (primitives[0].grob_)->get_column ();
-
-  Real join_thickness =
-    thickness * column->get_paper ()->get_realvar (ly_symbol2scm ("linethickness"));
-
-  /*
-   * Amount of extra space two put between some particular
-   * configurations of adjacent heads.
-   *
-   * TODO: make this a property of primtive grobs.
-   */
-  Real extra_space = 4.0 * join_thickness;
-
-  /*
-   * Keep track of the total width of the ligature.
-   */
-  Real ligature_width = 0.0;
-
-  Item *prev_primitive = 0;
-  int prev_prefix_set = 0;
-  for (int i = 0; i < primitives.size (); i++)
-    {
-      Item *primitive = dynamic_cast<Item*> (primitives[i].grob_);
-      int prefix_set =
-	gh_scm2int (primitive->get_grob_property ("prefix-set"));
-      int context_info =
-	gh_scm2int (primitive->get_grob_property ("context-info"));
-
-      /*
-       * Get glyph_name, delta_pitch and context_info for this head.
-       */
-
-      SCM glyph_name_scm = primitive->get_grob_property ("glyph-name");
-      if (glyph_name_scm == SCM_EOL)
-	{
-	  primitive->programming_error ("Vaticana_ligature:"
-					"undefined glyph-name -> "
-					"ignoring grob");
-	  continue;
-	}
-      String glyph_name = ly_scm2string (glyph_name_scm);
-
-      int delta_pitch = 0;
-      if (prev_primitive) /* urgh, need prev_primitive only here */
-	{
-	  SCM delta_pitch_scm = prev_primitive->get_grob_property ("delta-pitch");
-	  if (delta_pitch_scm != SCM_EOL)
-	    {
-	      delta_pitch = gh_scm2int (delta_pitch_scm);
-	    }
-	  else
-	    {
-	      primitive->programming_error ("Vaticana_ligature:"
-					    "delta-pitch undefined -> "
-					    "ignoring grob");
-	      continue;
-	    }
-	}
-
-      /*
-       * Now determine width and x-offset of head.
-       */
-
-      Real head_width;
-      Real x_offset;
-
-      if (context_info & STACKED_HEAD)
-	{
-	  /*
-	   * This head is stacked upon the previous one; hence, it
-	   * does not contribute to the total width of the ligature,
-	   * and its width is assumed to be 0.0.  Moreover, it is
-	   * shifted to the left by its width such that the right side
-	   * of this and the other head are horizontally aligned.
-	   */
-	  head_width = 0.0;
-	  x_offset = join_thickness -
-	    Font_interface::get_default_font (primitive)->
-	    find_by_name ("noteheads-" + glyph_name).extent (X_AXIS).length ();
-	}
-      else if (!String::compare (glyph_name, "flexa") ||
-	       !String::compare (glyph_name, ""))
-	{
-	  /*
-	   * This head represents either half of a flexa shape.
-	   * Hence, it is assigned half the width of this shape.
-	   */
-	  head_width = 0.5 * flexa_width;
-	  x_offset = 0.0;
-	}
-      else
-	{
-	  /*
-	   * This is a regular head, placed right to the previous one.
-	   * Retrieve its width from corresponding font.
-	   */
-	  head_width =
-	    Font_interface::get_default_font (primitive)->
-	    find_by_name ("noteheads-" + glyph_name).extent (X_AXIS).length ();
-	  x_offset = 0.0;
-	}
-
-      /*
-       * Save the head's final x-offset.
-       */
-      primitive->set_grob_property ("x-offset",
-				    gh_double2scm (x_offset));
-
-      /*
-       * If the head is the 2nd head of a pes or flexa (but not a
-       * flexa shape), mark this head to be joined with the left-side
-       * neighbour head (i.e. the previous head) by a vertical beam.
-       */
-      if ((context_info & PES_UPPER) ||
-	  ((context_info & FLEXA_RIGHT) &&
-	   !(context_info & PES_LOWER)))
-	{
-	  if (!prev_primitive)
-	    {
-	      primitive->programming_error ("vaticana ligature: add-join: "
-					    "missing previous primitive");
-	    }
-	  else
-	    {
-	      prev_primitive->set_grob_property ("add-join",
-						 gh_bool2scm(true));
-
-	      /*
-	       * Create a small overlap of adjacent heads so that the join
-	       * can be drawn perfectly between them.
-	       */
-	      ligature_width -= join_thickness;
-	    }
-	}
-      else if (!String::compare (glyph_name, ""))
-	{
-	  /*
-	   * This is the 2nd (virtual) head of flexa shape.  Join it
-	   * tightly with 1st head, i.e. do *not* add additional
-	   * space, such that next head will not be off from the flexa
-	   * shape.
-	   */
-	}
-
-      if (need_extra_space (prev_prefix_set, prefix_set,
-			    context_info, delta_pitch))
-	ligature_width += extra_space;
-
-      /*
-       * Horizontally line-up this head to form a ligature.
-       */
-      get_set_column (primitive, column);
-      primitive->translate_axis (ligature_width, X_AXIS);
-      ligature_width += head_width;
-
-      prev_primitive = primitive;
-      prev_prefix_set = prefix_set;
-    }
-
-  /*
-   * Add extra horizontal padding space after ligature, such that
-   * neighbouring ligatures do not touch each other.
-   */
-  ligature_width += extra_space;
-
-  return ligature_width;
-}
-
-/*
- * Depending on the typographical features of a particular ligature
- * style, some prefixes may be ignored.  In particular, if a curved
- * flexa shape is produced, any prefixes to either of the two
- * contributing heads that would select a head other than punctum, is
- * by definition ignored.
- *
- * This function prints a warning, if the given primitive is prefixed
- * such that a head other than punctum would be chosen, if this
- * primitive were engraved as a stand-alone head.
- */
-void
-check_for_prefix_loss (Item *primitive)
-{
-  int prefix_set =
-    gh_scm2int (primitive->get_grob_property ("prefix-set"));
-  if (prefix_set & ~PES_OR_FLEXA)
-    {
-      String prefs = Gregorian_ligature::prefixes_to_str (primitive);
-      primitive->warning (_f ("ignored prefix(es) `%s' of this head according "
-			      "to restrictions of the selected ligature style",
-			      prefs.to_str0 ()));
-    }
-}
-
-void
-Vaticana_ligature_engraver::transform_heads (Spanner *ligature,
-					     Array<Grob_info> primitives)
-{
-  Real flexa_width= robust_scm2double ( ligature->get_grob_property ("flexa-width"), 2);
-
-  Real thickness= robust_scm2double ( ligature->get_grob_property ("thickness"), 1);
-
-  Item *prev_primitive = 0;
-  int prev_prefix_set = 0;
-  int prev_context_info = 0;
-  int prev_delta_pitch = 0;
-  String prev_glyph_name = "";
-  for (int i = 0; i < primitives.size(); i++) {
-    Item *primitive = dynamic_cast<Item*> (primitives[i].grob_);
-
-    int delta_pitch;
-    SCM delta_pitch_scm = primitive->get_grob_property ("delta-pitch");
-    if (delta_pitch_scm != SCM_EOL)
-      {
-	delta_pitch = gh_scm2int (delta_pitch_scm);
-      }
-    else
-      {
-	primitive->programming_error ("Vaticana_ligature:"
-				      "delta-pitch undefined -> "
-				      "ignoring grob");
-	continue;
-      }
-
-    /* retrieve & complete prefix_set and context_info */
-    int prefix_set =
-      gh_scm2int (primitive->get_grob_property ("prefix-set"));
-    int context_info =
-      gh_scm2int (primitive->get_grob_property ("context-info"));
-    if (is_stacked_head (prefix_set, context_info))
-      {
-	context_info |= STACKED_HEAD;
-	primitive->set_grob_property ("context-info",
-				      gh_int2scm (context_info));
-      }
-
-    /*
-     * Now determine which head to typeset (this is context sensitive
-     * information, since it depends on neighbouring heads; therefore,
-     * this decision must be made here in the engraver rather than in
-     * the backend).
-     */
-    String glyph_name;
-    if (prefix_set & VIRGA)
-      {
-	glyph_name = "vaticana_punctum";
-	primitive->set_grob_property ("add-stem", gh_bool2scm(true));
-      }
-    else if (prefix_set & QUILISMA)
-      glyph_name = "vaticana_quilisma";
-    else if (prefix_set & ORISCUS)
-      glyph_name = "solesmes_oriscus";
-    else if (prefix_set & STROPHA)
-      if (prefix_set & AUCTUM)
-	glyph_name = "solesmes_stropha_aucta";
-      else glyph_name = "solesmes_stropha";
-    else if (prefix_set & INCLINATUM)
-      if (prefix_set & AUCTUM)
-	glyph_name = "solesmes_incl_auctum";
-      else if (prefix_set & DEMINUTUM)
-	glyph_name = "solesmes_incl_parvum";
-      else
-	glyph_name = "vaticana_inclinatum";
-    else if (prefix_set & DEMINUTUM)
-      if (i == 0)
-	{
-	  // initio debilis
-	  glyph_name = "vaticana_reverse_plica";
-	}
-      else if (prev_delta_pitch > 0)
-	{
-	  // epiphonus
-	  if (!(prev_context_info & FLEXA_RIGHT))
-	    /* correct head of previous primitive */
-	    if (prev_delta_pitch > 1)
-	      prev_glyph_name = "vaticana_epiphonus";
-	    else
-	      prev_glyph_name = "vaticana_vepiphonus";
-	  glyph_name = "vaticana_plica";
-	}
-      else // (prev_delta_pitch <= 0)
-	{
-	  // cephalicus
-	  if (!(prev_context_info & FLEXA_RIGHT))
-	    /* correct head of previous primitive */
-	    {
-	      if (i > 1)
-		{
-		  /* cephalicus head with fixed size cauda */
-		  prev_glyph_name = "vaticana_inner_cephalicus";
-		}
-	      else
-		{
-		  /* cephalicus head without cauda */
-		  prev_glyph_name = "vaticana_cephalicus";
-		}
-
-	      /*
-	       * Flexa has no variable size cauda if its left head is
-	       * stacked on the right head.  This is true for
-	       * cephalicus.  Hence, remove the cauda.
-	       *
-	       * Urgh: for the current implementation, this rule only
-	       * applies for cephalicus; but it is a fundamental rule.
-	       * Therefore, the following line of code should be
-	       * placed somewhere else.
-	       */
-	      prev_primitive->set_grob_property ("add-cauda",
-						 gh_bool2scm(false));
-	    }
-	  glyph_name = "vaticana_reverse_plica";
-	}
-    else if (prefix_set & (CAVUM | LINEA))
-      if ((prefix_set & CAVUM) && (prefix_set & LINEA))
-	glyph_name = "vaticana_linea_punctum_cavum";
-      else if (prefix_set & CAVUM)
-	glyph_name = "vaticana_punctum_cavum";
-      else
-	glyph_name = "vaticana_linea_punctum";
-    else if (prefix_set & AUCTUM)
-      if (prefix_set & ASCENDENS)
-	glyph_name = "solesmes_auct_asc";
-      else
-	glyph_name = "solesmes_auct_desc";
-    else if ((context_info & STACKED_HEAD) &&
-	     (context_info & PES_UPPER))
-      if (prev_delta_pitch > 1)
-	glyph_name = "vaticana_upes";
-      else
-	glyph_name = "vaticana_vupes";
-    else
-      glyph_name = "vaticana_punctum";
-
-    /*
-     * This head needs a cauda, if it starts a flexa, is not the upper
-     * head of a pes, and if it is a punctum.
-     */
-    if ((context_info & FLEXA_LEFT) && !(context_info & PES_UPPER))
-      if (!String::compare (glyph_name, "vaticana_punctum"))
-	primitive->set_grob_property ("add-cauda", gh_bool2scm(true));
-
-    /*
-     * Execptional rule for porrectus:
-     *
-     * If the current head is preceded by a \flexa and succeded by a
-     * \pes (e.g. "a \flexa g \pes a"), then join the current head and
-     * the previous head into a single curved flexa shape.
-     */
-    if ((context_info & FLEXA_RIGHT) && (context_info & PES_LOWER))
-      {
-	check_for_prefix_loss (prev_primitive);
-	prev_glyph_name = "flexa";
-	prev_primitive->set_grob_property ("flexa-height",
-					   gh_int2scm (prev_delta_pitch));
-	prev_primitive->set_grob_property ("flexa-width",
-					   gh_double2scm (flexa_width));
-	bool add_cauda = !(prev_prefix_set && PES_OR_FLEXA);
-	prev_primitive->set_grob_property ("add-cauda",
-					   gh_bool2scm (add_cauda));
-	check_for_prefix_loss (primitive);
-	glyph_name = "";
-	primitive->set_grob_property ("flexa-width",
-				      gh_double2scm (flexa_width));
-      }
-
-    /*
-     * Exceptional rule for pes:
-     *
-     * If this head is stacked on the previous one due to a \pes, then
-     * set the glyph of the previous head to that for this special
-     * case, thereby avoiding potential vertical collision with the
-     * current head.
-     */
-    if (prefix_set & PES_OR_FLEXA)
-      {
-	if ((context_info & PES_UPPER) && (context_info & STACKED_HEAD))
-	  {
-	    if (!String::compare (prev_glyph_name, "vaticana_punctum"))
-	      if (prev_delta_pitch > 1)
-		prev_glyph_name = "vaticana_lpes";
-	      else
-		prev_glyph_name = "vaticana_vlpes";
-	  }
-      }
-
-    if (prev_primitive)
-      prev_primitive->set_grob_property ("glyph-name",
-					 scm_makfrom0str (prev_glyph_name.to_str0 ()));
-
-    /*
-     * In the backend, flexa shapes and joins need to know about line
-     * thickness.  Hence, for simplicity, let's distribute the
-     * ligature grob's value for thickness to each ligature head (even
-     * if not all of them need to know).
-     */
-    primitive->set_grob_property ("thickness", gh_double2scm (thickness));
-
-    prev_primitive = primitive;
-    prev_prefix_set = prefix_set;
-    prev_context_info = context_info;
-    prev_delta_pitch = delta_pitch;
-    prev_glyph_name = glyph_name;
-  }
-
-  prev_primitive->set_grob_property ("glyph-name",
-				     scm_makfrom0str (prev_glyph_name.to_str0 ()));
-
-#if 0
-  Real ligature_width =
-#endif
-
-  align_heads (primitives, flexa_width, thickness);
-
-#if 0 // experimental code to collapse spacing after ligature
-  /* TODO: set to max(old/new spacing-increment), since other
-     voices/staves also may want to set this property. */
-  Item *first_primitive = dynamic_cast<Item*> (primitives[0].grob_);
-  Paper_column *paper_column = first_primitive->get_column();
-  paper_column->warning (_f ("Vaticana_ligature_engraver: "
-			     "setting `spacing-increment = %f': ptr=%ul",
-			     ligature_width, paper_column));
-  paper_column->
-    set_grob_property("forced-spacing", gh_double2scm (ligature_width));
-#endif
-}
-
-
-ENTER_DESCRIPTION (Vaticana_ligature_engraver,
-/* descr */       "Handles ligatures by glueing special ligature heads together.",
-/* creats*/       "VaticanaLigature",
-/* accepts */     "ligature-event",
-/* acks  */      "note-head-interface rest-interface",
-/* reads */       "",
-/* write */       "");
diff --git a/lily/vaticana-ligature.cc b/lily/vaticana-ligature.cc
deleted file mode 100644
index ba3626d90f..0000000000
--- a/lily/vaticana-ligature.cc
+++ /dev/null
@@ -1,336 +0,0 @@
-/*
-  vaticana-ligature.cc -- implement Vaticana_ligature
-  
-  source file of the GNU LilyPond music typesetter
-  
-  (c) 2003--2004 Juergen Reuter <reuter@ipd.uka.de>
-*/
-
-#include <math.h>
-#include "item.hh"
-#include "vaticana-ligature.hh"
-#include "font-interface.hh"
-#include "molecule.hh"
-#include "lookup.hh"
-#include "staff-symbol-referencer.hh"
-#include "note-head.hh"
-#include "paper-def.hh"
-#include "bezier.hh"
-#include "warn.hh"
-
-Molecule
-vaticana_brew_cauda (Grob *me,
-		     int pos,
-		     int delta_pitch,
-		     Real thickness,
-		     Real blotdiameter)
-{
-  bool on_staffline = Staff_symbol_referencer::on_staffline (me, pos);
-  int interspaces = Staff_symbol_referencer::line_count (me)-1;
-  bool above_staff = pos > interspaces;
-
-  if (delta_pitch > -1)
-    {
-      me->programming_error ("flexa cauda: invalid delta_pitch; assuming -1");
-      delta_pitch = -1;
-    }
-  Real length;
-  if (on_staffline)
-    {
-      if (delta_pitch >= -1)
-	length = 1.30;
-      else if (delta_pitch >= -2)
-	length = 1.35;
-      else
-	length = 1.85;
-    }
-  else
-    {
-      if (delta_pitch >= -1)
-	if (above_staff)
-	  length = 1.30;
-	else
-	  length = 1.00;
-      else if (delta_pitch >= -2)
-	length = 1.35;
-      else if (delta_pitch >= -3)
-	length = 1.50;
-      else
-	length = 1.85;
-    }
-  Box cauda_box (Interval (0, thickness), Interval (-length, 0));
-  return Lookup::round_filled_box (cauda_box, blotdiameter);
-}
-
-/*
- * TODO: move this function to class Lookup?
- */
-Molecule
-vaticana_brew_flexa (Grob *me,
-		     bool solid,
-		     Real line_thickness)
-{
-  Real staff_space = Staff_symbol_referencer::staff_space (me);
-  Molecule molecule = Molecule ();
-  Real right_height = 0.6 * staff_space;
-
-  Real interval;
-  SCM flexa_height_scm = me->get_grob_property ("flexa-height");
-  if (flexa_height_scm != SCM_EOL)
-    {
-      interval = gh_scm2int (flexa_height_scm);
-    }
-  else
-    {
-      me->warning ("Vaticana_ligature: "
-		   "flexa-height undefined; assuming 0");
-      interval = 0.0;
-    }
-
-  if (interval >= 0.0)
-    {
-      me->warning (_ ("ascending vaticana style flexa"));
-    }
-
-  Real width = robust_scm2double ( me->get_grob_property ("flexa-width"), 2);
-
-  /*
-   * Compensate curve thickness that appears to be smaller in steep
-   * section of bend.
-   */
-  Real left_height =
-    right_height +
-    min (0.12 * abs(interval), 0.3) * staff_space;
-
-  /*
-   * Compensate optical illusion regarding vertical position of left
-   * and right endings due to curved shape.
-   */
-  Real ypos_correction = -0.1*staff_space * sign(interval);
-  Real interval_correction = 0.2*staff_space * sign(interval);
-  Real corrected_interval = interval*staff_space + interval_correction;
-
-  /*
-   * middle curve of flexa shape
-   */
-  Bezier curve;
-  curve.control_[0] = Offset (0.00 * width, 0.0);
-  curve.control_[1] = Offset (0.33 * width, corrected_interval / 2.0);
-  curve.control_[2] = Offset (0.66 * width, corrected_interval / 2.0);
-  curve.control_[3] = Offset (1.00 * width, corrected_interval / 2.0);
-
-  Bezier top_curve = curve, bottom_curve = curve;
-  for (int i = 0; i < 4; i++)
-    {
-      Real curve_thickness = 0.33 * ((3 - i)*left_height + i*right_height);
-      top_curve.control_[i] += Offset (0, 0.5 * curve_thickness);
-      bottom_curve.control_[i] -= Offset (0, 0.5 * curve_thickness);
-    }
-
-  if (solid)
-    {
-      Molecule solid_head =
-	Lookup::bezier_sandwich (top_curve, bottom_curve);
-      molecule.add_molecule (solid_head);
-    }
-  else // outline
-    {
-      Bezier inner_top_curve = top_curve;
-      inner_top_curve.translate (Offset (0.0, -line_thickness));
-      Molecule top_edge =
-	Lookup::bezier_sandwich (top_curve, inner_top_curve);
-      molecule.add_molecule(top_edge);
-
-      Bezier inner_bottom_curve = bottom_curve;
-      inner_bottom_curve.translate (Offset (0.0, +line_thickness));
-      Molecule bottom_edge =
-	Lookup::bezier_sandwich (bottom_curve, inner_bottom_curve);
-      molecule.add_molecule(bottom_edge);
-
-      /*
-       * TODO: Use horizontal slope with proper slope value rather
-       * than filled box for left edge, since the filled box stands
-       * out from the flexa shape if the interval is big and the line
-       * thickness small.  The difficulty here is to compute a proper
-       * slope value, as it should roughly be equal with the slope of
-       * the left end of the bezier curve.
-       */
-      Box left_edge_box (Interval (0, line_thickness),
-			 Interval (-0.5*left_height, +0.5*left_height));
-      Molecule left_edge = Lookup::filled_box (left_edge_box);
-      molecule.add_molecule(left_edge);
-
-      Box right_edge_box (Interval (-line_thickness, 0),
-			  Interval (-0.5*right_height, +0.5*right_height));
-      Molecule right_edge = Lookup::filled_box (right_edge_box);
-      right_edge.translate_axis (width, X_AXIS);
-      right_edge.translate_axis (corrected_interval / 2.0, Y_AXIS);
-      molecule.add_molecule(right_edge);
-    }
-  molecule.translate_axis (ypos_correction, Y_AXIS);
-  return molecule;
-}
-
-Molecule
-vaticana_brew_join (Grob *me, int delta_pitch,
-		    Real join_thickness, Real blotdiameter)
-{
-  Real staff_space = Staff_symbol_referencer::staff_space (me);
-  if (!delta_pitch)
-    {
-      me->programming_error (_f ("Vaticana_ligature: "
-				 "zero join (delta_pitch == 0)"));
-      return Molecule ();
-    }
-  Interval x_extent = Interval (0, join_thickness);
-  Interval y_extent = (delta_pitch > 0) ?
-    Interval (0, delta_pitch * 0.5 * staff_space) : // ascending join
-    Interval (delta_pitch * 0.5 * staff_space, 0); // descending join
-  Box join_box (x_extent, y_extent);
-  return Lookup::round_filled_box (join_box, blotdiameter);
-}
-
-void
-vaticana_add_ledger_lines (Grob *me, Molecule *out, int pos, Real offs,
-			   bool ledger_take_space)
-{
-  int interspaces = Staff_symbol_referencer::line_count (me)-1;
-  if (abs (pos) - interspaces > 1)
-    {
-      Interval hd = out->extent (X_AXIS);
-      Real left_ledger_protusion = hd.length ()/4;
-      Real right_ledger_protusion = left_ledger_protusion;
-
-      Interval l_extents = Interval (hd[LEFT] - left_ledger_protusion,
-				     hd[RIGHT] + right_ledger_protusion);
-      Molecule ledger_lines =
-	Note_head::brew_ledger_lines (me, pos, interspaces,
-				      l_extents, 0,
-				      ledger_take_space);
-      ledger_lines.translate_axis (offs, Y_AXIS);
-      out->add_molecule (ledger_lines);
-    }
-}
-
-Molecule
-vaticana_brew_primitive (Grob *me, bool ledger_take_space)
-{
-  SCM glyph_name_scm = me->get_grob_property ("glyph-name");
-  if (glyph_name_scm == SCM_EOL)
-    {
-      me->programming_error ("Vaticana_ligature: "
-			     "undefined glyph-name -> ignoring grob");
-      return Molecule ();
-    }
-
-  String glyph_name = ly_scm2string (glyph_name_scm);
-
-  Molecule out;
-  int flexa_height = 0;
-  Real thickness = robust_scm2double ( me->get_grob_property ("thickness"), 1);
-
-  Real line_thickness =
-    thickness * me->get_paper ()->get_realvar (ly_symbol2scm ("linethickness"));
-
-  Real blotdiameter =
-    (me->get_paper ()->get_realvar (ly_symbol2scm ("blotdiameter")));
-
-  int pos = (int)rint (Staff_symbol_referencer::get_position (me));
-
-  SCM delta_pitch_scm = me->get_grob_property ("delta-pitch");
-  int delta_pitch;
-  if (delta_pitch_scm != SCM_EOL)
-    delta_pitch = gh_scm2int (delta_pitch_scm);
-  else
-    delta_pitch = 0;
-
-  Real x_offset = robust_scm2double ( me->get_grob_property ("x-offset"), 0);
-
-  bool add_stem = to_boolean (me->get_grob_property ("add-stem"));
-  bool add_cauda = to_boolean (me->get_grob_property ("add-cauda"));
-  bool add_join = to_boolean (me->get_grob_property ("add-join"));
-
-  if (!String::compare (glyph_name, ""))
-    {
-      /*
-       * This is an empty head.  This typically applies for the right
-       * side of a curved flexa shape, which is already typeset by the
-       * associated left side head.  The only possible thing left to
-       * do is to draw a vertical join to the next head.  (Urgh: need
-       * flexa_width.)
-       */
-      Real staff_space = Staff_symbol_referencer::staff_space (me);
-      Real flexa_width  = robust_scm2double ( me->get_grob_property ("flexa-width"), 2)  *staff_space;
-      out =
-	Lookup::blank (Box (Interval (0, 0.5*flexa_width), Interval (0,0)));
-    }
-  else if (!String::compare (glyph_name, "flexa"))
-    {
-      out = vaticana_brew_flexa (me, true, line_thickness);
-    }
-  else
-    {
-      out =
-	Font_interface::get_default_font (me)->
-	find_by_name ("noteheads-" + glyph_name);
-    }
-  out.translate_axis (x_offset, X_AXIS);
-  Real head_width = out.extent (X_AXIS).length ();
-
-  if (add_cauda)
-    {
-      Molecule cauda =
-	vaticana_brew_cauda (me, pos, delta_pitch,
-			     line_thickness, blotdiameter);
-      out.add_molecule (cauda);
-    }
-
-  if (add_stem)
-    {
-      Molecule stem =
-	vaticana_brew_cauda (me, pos, -1,
-			     line_thickness, blotdiameter);
-      stem.translate_axis (head_width - line_thickness, X_AXIS);
-      out.add_molecule (stem);
-    }
-
-  if (add_join)
-    {
-      Molecule join =
-	vaticana_brew_join (me, delta_pitch, line_thickness, blotdiameter);
-      join.translate_axis (head_width - line_thickness, X_AXIS);
-      out.add_molecule (join);
-    }
-
-  vaticana_add_ledger_lines(me, &out, pos, 0, ledger_take_space);
-  if (!String::compare (glyph_name, "flexa"))
-    {
-      pos += flexa_height;
-      vaticana_add_ledger_lines(me, &out, pos, 0.5*flexa_height,
-				ledger_take_space);
-    }
-
-  return out;
-}
-
-MAKE_SCHEME_CALLBACK (Vaticana_ligature, brew_ligature_primitive, 1);
-SCM
-Vaticana_ligature::brew_ligature_primitive (SCM smob)
-{
-  Grob *me = unsmob_grob (smob);
-  SCM primitive = vaticana_brew_primitive (me, false).smobbed_copy ();
-  return primitive;
-}
-
-MAKE_SCHEME_CALLBACK (Vaticana_ligature, print, 1);
-SCM
-Vaticana_ligature::print (SCM)
-{
-  return SCM_EOL;
-}
-
-ADD_INTERFACE (Vaticana_ligature, "vaticana-ligature-interface",
-	       "A vaticana style gregorian ligature",
-	       "glyph-name flexa-height flexa-width thickness add-cauda "
-	       "add-stem add-join delta-pitch x-offset "
-	       "ligature-primitive-callback");
diff --git a/lily/vertical-align-engraver.cc b/lily/vertical-align-engraver.cc
deleted file mode 100644
index 0007e6cb5e..0000000000
--- a/lily/vertical-align-engraver.cc
+++ /dev/null
@@ -1,80 +0,0 @@
-/*
-  vertical-align-grav.cc -- implement Vertical_align_engraver
-
-  source file of the GNU LilyPond music typesetter
-
-  (c) 1997--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-*/
-#include "translator-group.hh"
-#include "paper-column.hh"
-#include "align-interface.hh"
-#include "span-bar.hh"
-#include "axis-group-interface.hh"
-#include "engraver.hh"
-#include "spanner.hh"
-
-class Vertical_align_engraver : public Engraver
-{
-  Spanner * valign_;
-  bool qualifies_b (Grob_info) const;  
-public:
-  TRANSLATOR_DECLARATIONS(Vertical_align_engraver);
-protected:
-  virtual void acknowledge_grob (Grob_info);
-  virtual void process_music ();
-  virtual void finalize ();
-};
-
-Vertical_align_engraver::Vertical_align_engraver ()
-{
-  valign_ =0;
-}
-
-void
-Vertical_align_engraver::process_music ()
-{
-  if (!valign_)
-    {
-      valign_ =make_spanner ("VerticalAlignment");
-      valign_->set_bound (LEFT,unsmob_grob (get_property ("currentCommandColumn")));
-      announce_grob (valign_ , SCM_EOL);
-    }
-}
-
-void
-Vertical_align_engraver::finalize ()
-{
-  if (valign_)
-    {
-      valign_->set_bound (RIGHT,unsmob_grob (get_property ("currentCommandColumn")));
-      typeset_grob (valign_);
-      valign_ =0;
-    }
-}
-
-bool
-Vertical_align_engraver::qualifies_b (Grob_info i) const
-{
-  int sz = i.origin_transes ((Translator*)this).size ()  ;
-
-  return sz > 1 && Axis_group_interface::has_interface (i.grob_)
-    && !i.grob_->get_parent (Y_AXIS) && Axis_group_interface::axis_b (i.grob_, Y_AXIS);
-}
-
-void
-Vertical_align_engraver::acknowledge_grob (Grob_info i)
-{
-  if (qualifies_b (i))
-    {
-      Align_interface::add_element (valign_,i.grob_, get_property ("verticalAlignmentChildCallback"));
-    }
-}
-
-
-ENTER_DESCRIPTION(Vertical_align_engraver,
-/* descr */       "Catch Vertical axis groups and stack them.",
-/* creats*/       "VerticalAlignment",
-/* accepts */     "",
-/* acks  */      "axis-group-interface",
-/* reads */       "",
-/* write */       "");
diff --git a/lily/virtual-font-metric.cc b/lily/virtual-font-metric.cc
deleted file mode 100644
index 24d7bcdd6a..0000000000
--- a/lily/virtual-font-metric.cc
+++ /dev/null
@@ -1,157 +0,0 @@
-/*   
-  virtual-font-metric.cc --  implement Virtual_font_metric
-
-source file of the GNU LilyPond music typesetter
-
-(c) 2002--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-
- */
-
-#include "warn.hh"
-#include "virtual-font-metric.hh"
-#include "all-font-metrics.hh"
-#include "molecule.hh"
-#include "paper-def.hh"
-
-
-/*
-  passing DEF is ughish. Should move into paperdef?
-  */
-Virtual_font_metric::Virtual_font_metric (SCM name_list, 
-					  Real mag,Paper_def*def)
-{
-  font_list_ = SCM_EOL;
-  SCM *tail = &font_list_;
-  for (SCM s = name_list; gh_pair_p (s); s = gh_cdr (s))
-    {
-      SCM nm = gh_car (s);
-
-      Font_metric *fm = def->find_font (nm, mag);
-      *tail =  scm_cons (fm->self_scm(),SCM_EOL);
-      tail = SCM_CDRLOC (*tail);
-    }
-}
-
-void
-Virtual_font_metric::derived_mark()const
-{
-  scm_gc_mark (font_list_);
-}
-
-int
-Virtual_font_metric::count () const
-{
-  int k = 0;
-  for (SCM s = font_list_; gh_pair_p (s); s = gh_cdr (s))
-    {
-      k+= unsmob_metrics (gh_car (s))->count ();
-    }
-
-  return k;
-}
-
-Molecule
-Virtual_font_metric::find_by_name (String glyph) const
-{
-  Molecule m;  
-  for (SCM s = font_list_; m.is_empty () && gh_pair_p (s); s = gh_cdr (s))
-    {
-      m = unsmob_metrics (gh_car (s))->find_by_name (glyph);
-    }
-
-  return m;
-}
-  
-  
-
-Box
-Virtual_font_metric::get_ascii_char (int)  const
-{
-  programming_error ("Virtual font metric cannot be indexed by ASCII.");
-  return Box();
-}
-
-Molecule
-Virtual_font_metric::get_ascii_char_molecule (int )  const
-{
-  programming_error ("Virtual font metric cannot be indexed by ASCII.");
-  return Molecule();
-}
-
-
-Offset
-Virtual_font_metric::get_indexed_wxwy (int code)  const
-{
-  int total = 0;
-  for (SCM s = font_list_; gh_pair_p (s); s = gh_cdr (s))
-    {
-      Font_metric* fm = unsmob_metrics (gh_car (s));
-      if (code < total + fm->count ())
-	{
-	  return fm->get_indexed_wxwy (code - total);
-	}
-      total += fm->count ();
-    }
-
-  
-  return Offset (0,0);
-}
-
-Box
-Virtual_font_metric::get_indexed_char (int code)  const
-{
-  int total = 0;
-  for (SCM s = font_list_; gh_pair_p (s); s = gh_cdr (s))
-    {
-      Font_metric* fm = unsmob_metrics (gh_car (s));
-      if (code < total + fm->count ())
-	{
-	  return fm->get_indexed_char (code - total);
-	}
-      total += fm->count ();
-    }
-
-  
-  return Box();
-}
-
-
-int 
-Virtual_font_metric::name_to_index (String glyph) const
-{
-  Molecule m;
-  int total = 0; 
-  for (SCM s = font_list_; m.is_empty () && gh_pair_p (s); s = gh_cdr (s))
-    {
-      Font_metric *m =unsmob_metrics (gh_car (s));
-      int k = m->name_to_index (glyph);
-      if (k >= 0)
-	return total + k;
-
-      total += m->count ();
-    }
-
-  return -1;
-}
-
-  
-Molecule
-Virtual_font_metric::get_indexed_char_molecule (int code)  const
-{
-  Molecule  m ;  
-  int total = 0;
-  
-  for (SCM s = font_list_; gh_pair_p (s); s = gh_cdr (s))
-    {
-      Font_metric* fm = unsmob_metrics (gh_car (s));
-      if (code < total + fm->count())
-	{
-	  m = fm->get_indexed_char_molecule (code - total); // ugh.
-	  break; 
-	}
-      total += fm->count ();
-    }
-
-  return m;
-}
-  
diff --git a/lily/volta-bracket.cc b/lily/volta-bracket.cc
deleted file mode 100644
index 813bc1162f..0000000000
--- a/lily/volta-bracket.cc
+++ /dev/null
@@ -1,137 +0,0 @@
-/*
-  volta-bracket.cc -- implement Volta_bracket_interface
-
-  source file of the GNU LilyPond music typesetter
-
-  (c) 1997--2004 Jan Nieuwenhuizen <janneke@gnu.org>
-*/
-
-#include <string.h>
-
-#include "box.hh"
-#include "warn.hh"
-#include "font-interface.hh"
-#include "line-interface.hh"
-#include "molecule.hh"
-#include "paper-column.hh"
-#include "paper-def.hh"
-#include "text-item.hh"
-#include "volta-bracket.hh"
-#include "group-interface.hh"
-#include "side-position-interface.hh"
-#include "directional-element-interface.hh"
-#include "lookup.hh"
-
-/*
-  this is too complicated. Yet another version of side-positioning,
-  badly implemented.
-
-  --
-
-  * Should look for system_start_delim to find left edge of staff.
-  
-*/
-
-MAKE_SCHEME_CALLBACK (Volta_bracket_interface,print,1);
-SCM
-Volta_bracket_interface::print (SCM smob) 
-{
-  Grob *me = unsmob_grob (smob);
-  Link_array<Item> bars
-    = Pointer_group_interface__extract_grobs (me, (Item*)0, "bars");
-
-  if (!bars.size ())
-    return SCM_EOL;
-
-  Spanner *orig_span =  dynamic_cast<Spanner*> (me->original_);
-
-  bool broken_first_bracket = orig_span && (orig_span->broken_intos_[0] == (Spanner*)me);
-
-  bool broken_last_bracket = orig_span && (orig_span->broken_intos_.top () == (Spanner*)me);
-
-  bool no_vertical_start = orig_span && !broken_first_bracket;
-  bool no_vertical_end = orig_span && !broken_last_bracket;
-  SCM s = me->get_grob_property ("bars");
-  Grob * endbar =   unsmob_grob (ly_car (s));
-  SCM glyph = endbar->get_grob_property("glyph");
-  
-  String str;
-  if (gh_string_p (glyph))
-    str = ly_scm2string(glyph);
-  else
-    return SCM_EOL;
-  
-  const char* cs = str.to_str0 ();
-  no_vertical_end |=
-    (strcmp(cs,":|")!=0 && strcmp(cs,"|:")!=0 && strcmp(cs,"|.")!=0
-     && strcmp(cs,":|:")!=0 && strcmp(cs,".|")!=0);
-
-  Paper_def * paper =me->get_paper ();
-  Real half_space = 0.5;
-
-  Item * bound = dynamic_cast<Spanner*> (me)->get_bound (LEFT);
-
-  /*
-    not a start, but really broken in two
-  */
-  Real left =0.;  
-  if (bound->break_status_dir () == RIGHT)
-    {
-      Paper_column *pc = bound->get_column ();
-      left = pc->extent (pc, X_AXIS)[RIGHT]   - bound->relative_coordinate (pc, X_AXIS);
-    }
-  else
-    {
-      /*
-	the volta spanner is attached to the bar-line, which is moved
-	to the right. We don't need to compensate for the left edge.
-      */
-    }
-
-  Real w = dynamic_cast<Spanner*> (me)->spanner_length () - left - half_space;
-  Real h =  robust_scm2double (me->get_grob_property ("height"), 1);
-
-  Molecule start,end ;
-  if (!no_vertical_start)
-    start = Line_interface::line (me, Offset (0,0), Offset (0, h)); 
-  
-  if (!no_vertical_end)
-    end = Line_interface::line (me, Offset (w, 0), Offset (w,h));
-
-  Molecule mol = Line_interface::line (me, Offset (0, h), Offset (w,h));
-  mol.add_molecule (start);
-  mol.add_molecule (end);
-
-  if (!orig_span || broken_first_bracket)
-    {
-      SCM text = me->get_grob_property ("text");
-      SCM properties = me->get_property_alist_chain (SCM_EOL);
-      SCM snum  = Text_item::interpret_markup (paper->self_scm (), properties, text);
-      Molecule num = *unsmob_molecule (snum);
-
-      mol.add_at_edge (X_AXIS, LEFT, num, - num.extent (X_AXIS).length ()
-		       - 1.0, 0);
-    }
-  mol.translate_axis (left, X_AXIS);
-  return mol.smobbed_copy ();
-}
-
-
-void
-Volta_bracket_interface::add_bar (Grob *me, Item* b)
-{
-  Pointer_group_interface::add_grob (me, ly_symbol2scm ("bars"), b);
-  Side_position_interface::add_support (me,b);
-  add_bound_item (dynamic_cast<Spanner*> (me), b); 
-}
-
-void
-Volta_bracket_interface::add_column (Grob*me, Grob* c)
-{
-  Side_position_interface::add_support (me,c);
-}
-
-ADD_INTERFACE (Volta_bracket_interface,"volta-bracket-interface",
-	       "Volta bracket with number",
-	       "bars thickness height");
-
diff --git a/lily/volta-engraver.cc b/lily/volta-engraver.cc
deleted file mode 100644
index 7e2b3376a3..0000000000
--- a/lily/volta-engraver.cc
+++ /dev/null
@@ -1,255 +0,0 @@
-/*   
-  volta-engraver.cc --  implement Volta_engraver
-  
-  source file of the GNU LilyPond music typesetter
-  
-  (c) 2000--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-  
- */
-
-#include "engraver.hh"
-#include "translator-group.hh"
-#include "volta-bracket.hh"
-#include "item.hh"
-#include "note-column.hh"
-#include "bar-line.hh"
-#include "side-position-interface.hh"
-#include "warn.hh"
-#include "staff-symbol.hh"
-
-/*
-  Create Volta spanners, by reading repeatCommands  property, usually
-  set by Unfolded_repeat_iterator.
- */
-class Volta_engraver : public Engraver
-{
-public:
-  TRANSLATOR_DECLARATIONS(Volta_engraver);
-protected:
-
-  virtual void acknowledge_grob (Grob_info);
-  virtual void finalize ();
-  virtual void stop_translation_timestep ();
-  virtual void process_music ();
-  
-  Moment started_mom_;
-  Spanner *volta_span_;
-  Spanner *end_volta_span_;
-  SCM staff_;
-  SCM start_string_;
-
-  bool staff_eligible ();
- 
-};
-
-Volta_engraver::Volta_engraver ()
-{
-  staff_ = SCM_EOL;
-  volta_span_ = 0;
-  end_volta_span_ = 0;
-}
-
-
-/*
-  TODO: this logic should be rewritten, it is buggy.
-
-  One of the problems is that we can't determine wether or not to
-  print the volta bracket during the first step, since that requires
-  acknowledging the staff.
- */
-bool
-Volta_engraver::staff_eligible ()
-{
-  /*
-    UGH.
-   */
-  if (!unsmob_grob (staff_))
-    return true;
-  
-  if (!to_boolean (get_property ("voltaOnThisStaff")))
-    {
-      /*
-	TODO: this does weird things when you open a piece with a
-	volta spanner.
-	
-       */
-      SCM staffs = get_property ("stavesFound");
-
-      /*
-	only put a volta on the top staff.
-	
-	May be this is a bit convoluted, and we should have a single
-	volta engraver in score context or somesuch.
-	
-      */
-      if (!gh_pair_p (staffs))
-	{
-	  programming_error ("Huh? Volta engraver can't find staffs?");
-	  return false;
-	}
-      else if (ly_car (scm_last_pair (staffs)) != staff_)
-	{
-	  return false;
-	}
-    }
-  return true;
-}
-
-void
-Volta_engraver::process_music ()
-{
-  SCM cs = get_property ("repeatCommands");
-
-  if (!staff_eligible ())
-    return ; 
-
-    
-  bool  end = false;
-  start_string_ = SCM_EOL;
-  while (gh_pair_p (cs))
-    {
-      SCM c = ly_car (cs);
-
-      if (gh_pair_p (c)
-	  && ly_car (c) == ly_symbol2scm ("volta")
-	  && gh_pair_p (ly_cdr (c)))
-	{
-	  if (ly_cadr (c) ==  SCM_BOOL_F)
-	    end = true;
-	  else
-	    start_string_ = ly_cadr (c);
-	}
-      
-      cs = ly_cdr (cs);
-    }
-
-  if (volta_span_)
-    {
-      SCM l (get_property ("voltaSpannerDuration"));
-      Moment now = now_mom ();
-  
-      bool early_stop = unsmob_moment (l)
-	&& *unsmob_moment (l) <= now - started_mom_;
-      
-      end = end || early_stop;
-    }
-
-  
-  if (end && !volta_span_)
-    {
-      warning (_ ("No volta spanner to end")); // fixme: be more verbose.
-    }
-  else if (end)
-    {
-      end_volta_span_ = volta_span_;
-      volta_span_ =0;
-    }
-
-  if (volta_span_ && 
-      (gh_string_p (start_string_) || gh_pair_p (start_string_)))
-    {
-      warning (_ ("Already have a volta spanner.  Stopping that one prematurely."));
-      
-      if (end_volta_span_)
-	{
-	  warning (_ ("Also have a stopped spanner.  Giving up."));
-	  return ;
-	}
-
-      end_volta_span_ = volta_span_;
-      volta_span_ = 0;
-    }
-
-  if (!volta_span_ && 
-      (gh_string_p (start_string_) || gh_pair_p (start_string_)))
-    {
-      started_mom_ = now_mom () ;
-
-      volta_span_ = make_spanner ("VoltaBracket");
-
-      announce_grob (volta_span_, SCM_EOL);
-      volta_span_->set_grob_property ("text", start_string_);
-    }
-}
-
-
-void
-Volta_engraver::acknowledge_grob (Grob_info i)
-{
-  if (Item* item = dynamic_cast<Item*> (i.grob_))
-    {
-      if (Note_column::has_interface (item))
-	{
-	  if (volta_span_)
-	    Volta_bracket_interface::add_column (volta_span_,item);
-	}
-      if (Bar_line::has_interface (item))
-	{
-	  if (volta_span_)
-	    Volta_bracket_interface::add_bar (volta_span_, item);
-	  if (end_volta_span_)
-	    Volta_bracket_interface::add_bar (end_volta_span_ , item);
-	}
-    }
-  else if (Staff_symbol::has_interface (i.grob_))
-    {
-      /*
-	We only want to know about a single staff: then we add to the
-	support.  */
-      if (staff_ != SCM_EOL)
-	staff_ = SCM_UNDEFINED;
-
-      if (staff_ != SCM_UNDEFINED)
-	staff_ = i.grob_->self_scm();
-    }
-}
-
-void
-Volta_engraver::finalize ()
-{
-  if (volta_span_)
-    {
-      typeset_grob (volta_span_);
-    }
-  if (end_volta_span_)
-    {
-      typeset_grob (end_volta_span_);
-    }
-}
-
-
-
-void 
-Volta_engraver::stop_translation_timestep ()
-{
-  if (volta_span_ && !staff_eligible ())
-    {
-      /*
-	THIS IS A KLUDGE.
-
-	we need to do this here, because STAFF_ is not initialized yet
-	in the 1st call of process_music()
-      */
-      
-      volta_span_->suicide( );
-      volta_span_ = 0;
-    }
-  
-  if (end_volta_span_)
-    {
-      typeset_grob (end_volta_span_);
-      end_volta_span_ =0;
-    }
-}
-
-/*
-  TODO: should attach volta to paper-column if no bar is found.
- */
-
-ENTER_DESCRIPTION(Volta_engraver,
-/* descr */       "Make volta brackets",
-/* creats*/       "VoltaBracket",
-/* accepts */     "",
-/* acks  */       "bar-line-interface staff-symbol-interface note-column-interface",
-/* reads */       "repeatCommands voltaSpannerDuration stavesFound",
-/* write */       "");
diff --git a/lily/warn.cc b/lily/warn.cc
deleted file mode 100644
index 9193017cda..0000000000
--- a/lily/warn.cc
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
-  warn.cc -- implement warning and error messages. Needs cleanup.
-
-  source file of the GNU LilyPond music typesetter
-
-  (c) 1997--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-*/
-
-#include <stdio.h>
-
-#include "string.hh"
-#include "main.hh"
-
-void
-progress_indication (String s)
-{
- fputs (s.to_str0 (), stderr);
- fflush (stderr);
-}
-
diff --git a/lilypond.vim b/lilypond.vim
deleted file mode 100644
index 717730cbc6..0000000000
--- a/lilypond.vim
+++ /dev/null
@@ -1,78 +0,0 @@
-" Vim syntax file
-" Language:	LilyPond
-" Maintainer:	Heikki Junes <hjunes@cc.hut.fi>
-" Created:      Oct 17, 2002
-" Last Change:	Sep 23, 2003
-" Version:	6.1-1
-" Latest:
-" http://savannah.gnu.org/cgi-bin/viewcvs/lilypond/lilypond/lilypond.vim
-
-" For version 5.x: Clear all syntax items
-" For version 6.x: Quit when a syntax file was already loaded
-if version < 600
-  syntax clear
-elseif exists("b:current_syntax")
-  finish
-endif
-
-" Read the LilyPond syntax match groups: 
-"   lilyKeyword, lilyReservedWord, lilyNote
-if version < 600
-  so <sfile>:p:h/lilypond.words.vim
-else
-  runtime! syntax/lilypond.words.vim
-  if exists("b:current_syntax")
-    unlet b:current_syntax
-  endif
-endif
-
-" Match also parethesis of angle type
-set mps+=<:>
-
-" Case matters
-syn case match
-
-syn cluster lilyMatchGroup	contains=lilyMatcher,lilyString,lilyComment,lilyStatement,lilyNumber,lilyEquation,lilySlur,lilySpecial,lilyNote,lilyKeyword,lilyReservedWord
-
-syn region lilyMatcher	matchgroup=Delimiter start="{" skip="\\\\\|\\[<>]"	end="}"	contains=@lilyMatchGroup fold
-syn region lilyMatcher	matchgroup=Delimiter start="\["		end="]"	contains=@lilyMatchGroup fold
-syn region lilyMatcher	matchgroup=Delimiter start="<" skip="\\\\\|\\[{<>}]" end=">"	contains=@lilyMatchGroup fold
-
-syn region lilyString	start=/"/ end=/"/ skip=/\\"/
-syn region lilyComment	start="%{" skip="%$" end="%}"
-syn region lilyComment	start="%\([^{]\|$\)" end="$"
-
-syn match lilyNumber	"[-_^.]\?\d\+[.]\?"
-syn match lilyEquation	"\(#['`]\)\?\(\a*[-]\)*\a*\s*=\s*\(#[#'`]\?\)\?\a*"
-syn match lilySlur	"[(~)]"
-syn match lilySlur	"\\[()]"
-syn match lilySpecial	"\\[<!>\\]"
-
-" Rest of syntax highlighting rules start here
-"
-" " Define the default highlighting.
-" " For version 5.7 and earlier: only when not done already
-" " For version 5.8 and later: only when an item doesn't have highlighting yet
-if version >= 508 || !exists("did_lily_syn_inits")
-  if version < 508
-    let did_lily_syn_inits = 1
-    command -nargs=+ HiLink hi link <args>
-  else
-    command -nargs=+ HiLink hi def link <args>
-  endif
-
-  HiLink Delimiter	Identifier
-  
-  HiLink lilyString	String
-  HiLink lilyComment	Comment
- 
-  HiLink lilyNote	Identifier
-  HiLink lilyKeyword	Keyword
-  HiLink lilyReservedWord	Type
-
-  HiLink lilyNumber	Constant
-  HiLink lilySpecial	Special
-  HiLink lilySlur	ModeMsg
-
-  delcommand HiLink
-endif
diff --git a/ly/GNUmakefile b/ly/GNUmakefile
deleted file mode 100644
index 93c085d46e..0000000000
--- a/ly/GNUmakefile
+++ /dev/null
@@ -1,13 +0,0 @@
-depth = ..
-
-INI_FILES = $(FLY_FILES) $(SLY_FILES) $(LY_FILES)
-EXTRA_DIST_FILES = $(SCM_FILES)
-
-INSTALLATION_DIR=$(local_lilypond_datadir)/ly/
-INSTALLATION_FILES=$(INI_FILES)
-
-STEPMAKE_TEMPLATES=install
-LOCALSTEPMAKE_TEMPLATES=ly 
-
-include $(depth)/make/stepmake.make 
-
diff --git a/ly/a3-init.ly b/ly/a3-init.ly
deleted file mode 100644
index de751af0df..0000000000
--- a/ly/a3-init.ly
+++ /dev/null
@@ -1,5 +0,0 @@
-\version "1.9.8"
-% a3-init.ly
-
-hsize = 296.9 \mm
-vsize = 420.0 \mm
diff --git a/ly/a4-init.ly b/ly/a4-init.ly
deleted file mode 100644
index 1cbf7111ca..0000000000
--- a/ly/a4-init.ly
+++ /dev/null
@@ -1,5 +0,0 @@
-\version "1.9.8"
-% a4.ly
-
-hsize = 210.0 \mm
-vsize = 296.9 \mm
diff --git a/ly/accordion-defs-init.ly b/ly/accordion-defs-init.ly
deleted file mode 100644
index 32de5a4d0f..0000000000
--- a/ly/accordion-defs-init.ly
+++ /dev/null
@@ -1,56 +0,0 @@
-\version "1.9.8"
-% Symbols needed to print accordion music
-% 
-%  2' = T
-%  4' = F
-%  8' = E
-% 16' = S
-%
-
-accDiscant = #(make-articulation "accDiscant")
-accDiscantF = #(make-articulation "accDiscantF")
-accDiscantE = #(make-articulation "accDiscantE")
-accDiscantEh = #(make-articulation "accDiscantEh")
-accDiscantFE = #(make-articulation "accDiscantFE")
-accDiscantFEh = #(make-articulation "accDiscantFEh")
-accDiscantEE = #(make-articulation "accDiscantEE")
-accDiscantFEE = #(make-articulation "accDiscantFEE")
-accDiscantEEE = #(make-articulation "accDiscantEEE")
-accDiscantFEEE = #(make-articulation "accDiscantFEEE")
-accDiscantS = #(make-articulation "accDiscantS")
-accDiscantFS = #(make-articulation "accDiscantFS")
-accDiscantES = #(make-articulation "accDiscantES")
-accDiscantEhS = #(make-articulation "accDiscantEhS")
-accDiscantFES = #(make-articulation "accDiscantFES")
-accDiscantFEhS = #(make-articulation "accDiscantFEhS")
-accDiscantEES = #(make-articulation "accDiscantEES")
-accDiscantFEES = #(make-articulation "accDiscantFEES")
-accDiscantEEES = #(make-articulation "accDiscantEEES")
-accDiscantFEEES = #(make-articulation "accDiscantFEEES")
-accDiscantSS = #(make-articulation "accDiscantSS")
-accDiscantESS = #(make-articulation "accDiscantESS")
-accDiscantEESS = #(make-articulation "accDiscantEESS")
-accDiscantEEESS = #(make-articulation "accDiscantEEESS")
-
-accFreebase = #(make-articulation "accFreebase")
-accFreebaseF = #(make-articulation "accFreebaseF")
-accFreebaseE = #(make-articulation "accFreebaseE")
-accFreebaseFE = #(make-articulation "accFreebaseFE")
-
-accBayanbase = #(make-articulation "accBayanbase")
-accBayanbaseT = #(make-articulation "accBayanbaseT")
-accBayanbaseE = #(make-articulation "accBayanbaseE")
-accBayanbaseTE = #(make-articulation "accBayanbaseTE")
-accBayanbaseEE = #(make-articulation "accBayanbaseEE")
-accBayanbaseTEE = #(make-articulation "accBayanbaseTEE")
-
-accStdbase = #(make-articulation "accStdbase")
-accStdbaseFE = #(make-articulation "accStdbaseFE")
-accStdbaseTFE = #(make-articulation "accStdbaseTFE")
-accStdbaseMES = #(make-articulation "accStdbaseMES")
-accStdbaseTFMES = #(make-articulation "accStdbaseTFMES")
-
-accSB = #(make-articulation "accSB")
-accBB = #(make-articulation "accBB")
-accOldEE = #(make-articulation "accOldEE")
-accOldEES = #(make-articulation "accOldEES")
diff --git a/ly/book-init-init.ly b/ly/book-init-init.ly
deleted file mode 100644
index 7ebb27bbe6..0000000000
--- a/ly/book-init-init.ly
+++ /dev/null
@@ -1,14 +0,0 @@
-% Toplevel initialisation file. 
-	
-\version "2.1.13"
-
-
-\include "declarations-init.ly"
-#(set-global-staff-size 16)
-
- \paper{
-	\paperSixteen
-}
-
-
-\maininput
diff --git a/ly/catalan.ly b/ly/catalan.ly
deleted file mode 100644
index cc93ae08f0..0000000000
--- a/ly/catalan.ly
+++ /dev/null
@@ -1,76 +0,0 @@
-%{
-
- Common catalan names for notes. "b" means flat (bemoll), "d" means sharp (diesi).
- Also "s" is included for sharp (sostingut).  Both "diesi" and "sostingut" are approved
- by "Diccionari de la Llengua Catalana" from "Institut d'Estudis Catalans".
-
- Adapted from italiano.ly.
-
- English: a   b   c   d   e   f   g
- Catalan: la  si  do  re  mi  fa  sol
-
- For spanish naming just use the sharp sign "s" (sostenido) instead of "s"
-(sostenido) .
-%}
-
-% contributed by Jaume Obrador <<jobrador@ipc4.uib.es>>
-
-
-% For using "sostingut" notation, which is also correct
-pitchnamesCatalan = #`(
-	(dobb . ,(ly:make-pitch -1 0 DOUBLE-FLAT))
-	(dob . ,(ly:make-pitch -1 0 FLAT))
-	(do . ,(ly:make-pitch -1 0 NATURAL))
-	(dod . ,(ly:make-pitch -1 0 SHARP))
-	(dodd . ,(ly:make-pitch -1 0 DOUBLE-SHARP))
-	(rebb . ,(ly:make-pitch -1 1 DOUBLE-FLAT))
-	(reb . ,(ly:make-pitch -1 1 FLAT))
-	(re . ,(ly:make-pitch -1 1 NATURAL))
-	(red . ,(ly:make-pitch -1 1 SHARP))
-	(redd . ,(ly:make-pitch -1 1 DOUBLE-SHARP))
-	(mibb . ,(ly:make-pitch -1 2 DOUBLE-FLAT))
-	(mib . ,(ly:make-pitch -1 2 FLAT))
-	(mi . ,(ly:make-pitch -1 2 NATURAL))
-	(mid . ,(ly:make-pitch -1 2 SHARP))
-	(midd . ,(ly:make-pitch -1 2 DOUBLE-SHARP))
-	(fabb . ,(ly:make-pitch -1 3 DOUBLE-FLAT))
-	(fab . ,(ly:make-pitch -1 3 FLAT))
-	(fa . ,(ly:make-pitch -1 3 NATURAL))
-	(fad . ,(ly:make-pitch -1 3 SHARP))
-	(fadd . ,(ly:make-pitch -1 3 DOUBLE-SHARP))
-	(solbb . ,(ly:make-pitch -1 4 DOUBLE-FLAT))
-	(solb . ,(ly:make-pitch -1 4 FLAT))
-	(sol . ,(ly:make-pitch -1 4 NATURAL))
-	(sold . ,(ly:make-pitch -1 4 SHARP))
-	(soldd . ,(ly:make-pitch -1 4 DOUBLE-SHARP))
-	(labb . ,(ly:make-pitch -1 5 DOUBLE-FLAT))
-	(lab . ,(ly:make-pitch -1 5 FLAT))
-	(la . ,(ly:make-pitch -1 5 NATURAL))
-	(lad . ,(ly:make-pitch -1 5 SHARP))
-	(ladd . ,(ly:make-pitch -1 5 DOUBLE-SHARP))
-	(sibb . ,(ly:make-pitch -1 6 DOUBLE-FLAT))
-	(sib . ,(ly:make-pitch -1 6 FLAT))
-	(si . ,(ly:make-pitch -1 6 NATURAL))
-	(sid . ,(ly:make-pitch -1 6 SHARP))
-	(sidd . ,(ly:make-pitch -1 6 DOUBLE-SHARP))
-
-	;; Now that we have espanol.ly, should these be junked? --jcn
-	(dos . ,(ly:make-pitch -1 0 SHARP))
-	(doss . ,(ly:make-pitch -1 0 DOUBLE-SHARP))
-	(res . ,(ly:make-pitch -1 1 SHARP))
-	(ress . ,(ly:make-pitch -1 1 DOUBLE-SHARP))
-	(mis . ,(ly:make-pitch -1 2 SHARP))
-	(miss . ,(ly:make-pitch -1 2 DOUBLE-SHARP))
-	(fas . ,(ly:make-pitch -1 3 SHARP))
-	(fass . ,(ly:make-pitch -1 3 DOUBLE-SHARP))
-	(sols . ,(ly:make-pitch -1 4 SHARP))
-	(solss . ,(ly:make-pitch -1 4 DOUBLE-SHARP))
-	(las . ,(ly:make-pitch -1 5 SHARP))
-	(lass . ,(ly:make-pitch -1 5 DOUBLE-SHARP))
-	(sis . ,(ly:make-pitch -1 6 SHARP))
-	(siss . ,(ly:make-pitch -1 6 DOUBLE-SHARP))
-)
-
-pitchnames = \pitchnamesCatalan
-
-\version "2.1.19"
diff --git a/ly/center-init.ly b/ly/center-init.ly
deleted file mode 100644
index ca066e96b4..0000000000
--- a/ly/center-init.ly
+++ /dev/null
@@ -1,15 +0,0 @@
-% Toplevel initialisation file. 
-	
-\version "2.1.13"
-
-
-\include "declarations-init.ly"
-#(set-global-staff-size 16)
-
- \paper { 
-  \paperSixteen
-%  linewidth = 7.\cm
-  linewidth = 11.\cm
-}
-
-\maininput
diff --git a/ly/chord-modifiers-init.ly b/ly/chord-modifiers-init.ly
deleted file mode 100644
index a74dfb5b49..0000000000
--- a/ly/chord-modifiers-init.ly
+++ /dev/null
@@ -1,39 +0,0 @@
-\version "2.1.19"
-
-chordmodifiers = #default-chord-modifier-list
-
-whiteTriangleMarkup = #(make-override-markup
-			'(font-family . math) (make-simple-markup "M"))
-
-blackTriangleMarkup = #(make-override-markup
-			'(font-family . math) (make-simple-markup "N"))
-
-ignatzekExceptionMusic = \notes{
-	<c e gis>1-\markup { "+" }
-	<c es ges>-\markup { \super "o" } % should be $\circ$ ?
-	<c es ges bes>-\markup { \super \combine "o" "/" }
-	<c es ges beses>-\markup { \super  "o7" }
-}
-
-ignatzekExceptions = #(sequential-music-to-chord-exceptions
-		       ignatzekExceptionMusic #t)
-
-partialJazzMusic = \notes{
-    <c d>1-\markup { \normal-size-super "2" }
-    <c es>-\markup { "m" }
-    <c f>-\markup { \normal-size-super "sus4" }
-    <c g>-\markup { \normal-size-super "5" }
-    
-    %% TODO, partial exceptions
-    <c es f>-\markup { "m" }-\markup { \normal-size-super "sus4" }
-    <c d es>-\markup { "m" }-\markup { \normal-size-super "sus2" }
-}
-
-%% TODO: compatibility ignatzek code
-fullJazzExceptions = #(sequential-music-to-chord-exceptions
-                       ignatzekExceptionMusic #f)
-
-partialJazzExceptions = #(sequential-music-to-chord-exceptions
-                          partialJazzMusic #f)
-
-		       
diff --git a/ly/declarations-init.ly b/ly/declarations-init.ly
deleted file mode 100644
index a9247573c0..0000000000
--- a/ly/declarations-init.ly
+++ /dev/null
@@ -1,138 +0,0 @@
-#(ly:set-option 'old-relative)
-
-\version "2.1.19"
-breve = #(ly:make-duration -1 0)
-longa = #(ly:make-duration -2 0 )
-maxima = #(ly:make-duration -3 0)
-
-\include "nederlands.ly"		% dutch
-\include "drumpitch-init.ly"		
-\include "chord-modifiers-init.ly"
-\include "script-init.ly"
-
-% declarations for standard directions
-left = -1
-right = 1
-up = 1
-down = -1
-start = -1
-stop = 1
-smaller = -1
-bigger = 1
-center=0
-
-%{
-
-should also set allowBeamBreak, but how to do it "portably"? (ie. also
-working with lyric sections)
-
-%}
-break =#(make-event-chord (list (make-penalty-music -10001)))
-noBreak =  #(make-event-chord (list (make-penalty-music 10001)))
-
-\include "scale-definitions-init.ly"
-
-melisma = \property Staff.melismaBusy = ##t
-melismaEnd = \property Staff.melismaBusy = ##f
-
-
-\include "grace-init.ly"
-
-% ugh
-\include "midi-init.ly"
-
-
-% Do units first; must be done before any units are specified.
-\paper {
-    unit = "mm"
-    mm = 1.0
-    in = 25.4
-    pt = #(/  in 72.27)
-    cm = #(* 10 mm)
-
-    texsetting = ""
-    pssetting = ""
-    scmsetting = "(lilyponddefs.ps) findlibfile {exch pop //systemdict /run get exec} { /undefinedfilename signalerror } ifelse\n"% UGH. 
-
-
-    #(define font-defaults
-      '((font-family . music)
-	(font-shape . upright)
-	(baseline-skip . 2)
-	(word-space . 0.6)
-	(font-series . medium)
-    ))
-    
-    \include "engraver-init.ly"
-}
-
-#(set-paper-size "a4")
-
-
-%{
-
-; note:
-; you can add fonts manually  in the paper block by issuing
-
-#(set! fonts (append ...myfonts... fonts))
-
-for the format of myfonts, see font.scm
-
-%}
-
-
-paperEleven = \paper {
-    #(paper-set-staff-size (* 11.0 pt))
-}
-
-paperThirteen = \paper {
-    #(paper-set-staff-size (* 13.0 pt))
-}
-
-paperSixteen = \paper {
-    #(paper-set-staff-size (* 16.0 pt))
-}
-
-paperEightteen = \paper {
-    #(paper-set-staff-size (* 18.0 pt))
-}
-
-paperTwenty = \paper {
-    #(paper-set-staff-size (* 20.0 pt))
-}
-
-paperTwentythree = \paper {
-    #(paper-set-staff-size (* 23.0 pt))
-}
-
-paperTwentysix = \paper {
-    #(paper-set-staff-size (* 26.0 pt))
-}
-
-\paper { \paperTwenty }
-
-partCombineListener = \paper {
- \translator {
-	  \VoiceContext
-	  \consists Note_heads_engraver
-	  \consists Rest_engraver
-	  \type "Recording_group_engraver"
-	  recordEventSequence = #notice-the-events-for-pc
- }
- \translator { \ScoreContext skipTypesetting = ##t }
-}
-
-#(set-part-combine-listener partCombineListener)
-
-\include "dynamic-scripts-init.ly"
-\include "spanners-init.ly"
-
-\include "property-init.ly"
-
-
-
-% reset default duration
-unusedEntry = \notes { c4 }
-
-% music = "\melodic\relative c"
-
diff --git a/ly/deutsch.ly b/ly/deutsch.ly
deleted file mode 100644
index b4dec3933a..0000000000
--- a/ly/deutsch.ly
+++ /dev/null
@@ -1,52 +0,0 @@
-% common german names for notes. "es" means flat, "is" means sharp
-%
-% by Roland Meier <<meier@informatik.th-darmstadt.de>>
-% based on swedish.ly by Mats Bengtsson.
-
-% 1999/06/09 Bjoern Jacke <<bjoern.jacke@gmx.de>>
-%            added asas and marked ases as `unusual'
-
-
-pitchnamesDeutsch =  #`(
-	(ceses . ,(ly:make-pitch -1 0 DOUBLE-FLAT))
-	(ces . ,(ly:make-pitch -1 0 FLAT))
-	(c . ,(ly:make-pitch -1 0 NATURAL))
-	(cis . ,(ly:make-pitch -1 0 SHARP))
-	(cisis . ,(ly:make-pitch -1 0 DOUBLE-SHARP))
-	(deses . ,(ly:make-pitch -1 1 DOUBLE-FLAT))
-	(des . ,(ly:make-pitch -1 1 FLAT))
-	(d . ,(ly:make-pitch -1 1 NATURAL))
-	(dis . ,(ly:make-pitch -1 1 SHARP))
-	(disis . ,(ly:make-pitch -1 1 DOUBLE-SHARP))
-	(eses . ,(ly:make-pitch -1 2 DOUBLE-FLAT))
-	(es . ,(ly:make-pitch -1 2 FLAT))
-	(e . ,(ly:make-pitch -1 2 NATURAL))
-	(eis . ,(ly:make-pitch -1 2 SHARP))
-	(eisis . ,(ly:make-pitch -1 2 DOUBLE-SHARP))
-	(feses . ,(ly:make-pitch -1 3 DOUBLE-FLAT))
-	(fes . ,(ly:make-pitch -1 3 FLAT))
-	(f . ,(ly:make-pitch -1 3 NATURAL))
-	(fis . ,(ly:make-pitch -1 3 SHARP))
-	(fisis . ,(ly:make-pitch -1 3 DOUBLE-SHARP))
-	(geses . ,(ly:make-pitch -1 4 DOUBLE-FLAT))
-	(ges . ,(ly:make-pitch -1 4 FLAT))
-	(g . ,(ly:make-pitch -1 4 NATURAL))
-	(gis . ,(ly:make-pitch -1 4 SHARP))
-	(gisis . ,(ly:make-pitch -1 4 DOUBLE-SHARP))
-	(asas . ,(ly:make-pitch -1 5 DOUBLE-FLAT))
-	(ases . ,(ly:make-pitch -1 5 DOUBLE-FLAT))   ;;non-standard name for asas
-	(as . ,(ly:make-pitch -1 5 FLAT))
-	(a . ,(ly:make-pitch -1 5 NATURAL))
-	(ais . ,(ly:make-pitch -1 5 SHARP))
-	(aisis . ,(ly:make-pitch -1 5 DOUBLE-SHARP))
-	(heses . ,(ly:make-pitch -1 6 DOUBLE-FLAT))
-	(b . ,(ly:make-pitch -1 6 FLAT))
-	(h . ,(ly:make-pitch -1 6 NATURAL))
-	(his . ,(ly:make-pitch -1 6 SHARP))
-	(hisis . ,(ly:make-pitch -1 6 DOUBLE-SHARP))
-)
-
-
-pitchnames = \pitchnamesDeutsch
-
-\version "2.1.19"
diff --git a/ly/drumpitch-init.ly b/ly/drumpitch-init.ly
deleted file mode 100644
index bf6bca0744..0000000000
--- a/ly/drumpitch-init.ly
+++ /dev/null
@@ -1,318 +0,0 @@
-
-drumPitchNames =
-#'((acousticbassdrum . acousticbassdrum)
-   (bassdrum . bassdrum)
-   (hisidestick . hisidestick)
-   (sidestick . sidestick)
-   (losidestick . losidestick)
-   (acousticsnare . acousticsnare)
-   (snare . snare)
-   (handclap . handclap)
-   (electricsnare . electricsnare)
-   (lowfloortom . lowfloortom)
-   (closedhihat . closedhihat)
-   (hihat . hihat)
-   (highfloortom . highfloortom)
-   (pedalhihat . pedalhihat)
-   (lowtom . lowtom)
-   (openhihat . openhihat)
-   (halfopenhihat . halfopenhihat)
-   (lowmidtom . lowmidtom)
-   (himidtom . himidtom)
-   (crashcymbala . crashcymbala)
-   (crashcymbal . crashcymbal)
-   (hightom . hightom)
-   (ridecymbala . ridecymbala)
-   (ridecymbal . ridecymbal)
-   (chinesecymbal . chinesecymbal)
-   (ridebell . ridebell)
-   (tambourine . tambourine)
-   (splashcymbal . splashcymbal)
-   (cowbell . cowbell)
-   (crashcymbalb . crashcymbalb)
-   (vibraslap . vibraslap)
-   (ridecymbalb . ridecymbalb)
-   (mutehibongo . mutehibongo)
-   (hibongo . hibongo)
-   (openhibongo . openhibongo)
-   (mutelobongo . mutelobongo)
-   (lobongo . lobongo)
-   (openlobongo . openlobongo)
-   (mutehiconga . mutehiconga)
-   (muteloconga . muteloconga)
-   (openhiconga . openhiconga)
-   (hiconga . hiconga)
-   (openloconga . openloconga)
-   (loconga . loconga)
-   (hitimbale . hitimbale)
-   (lotimbale . lotimbale)
-   (hiagogo . hiagogo)
-   (loagogo . loagogo)
-   (cabasa . cabasa)
-   (maracas . maracas)
-   (shortwhistle . shortwhistle)
-   (longwhistle . longwhistle)
-   (shortguiro . shortguiro)
-   (longguiro . longguiro)
-   (guiro . guiro)
-   (claves . claves)
-   (hiwoodblock . hiwoodblock)
-   (lowoodblock . lowoodblock)
-   (mutecuica . mutecuica)
-   (opencuica . opencuica)
-   (mutetriangle . mutetriangle)
-   (triangle . triangle)
-   (opentriangle . opentriangle)
-   (oneup . oneup)
-   (twoup . twoup)
-   (threeup . threeup)
-   (fourup . fourup)
-   (fiveup . fiveup)
-   (onedown . onedown)
-   (twodown . twodown)
-   (threedown . threedown)
-   (fourdown . fourdown)
-   (fivedown . fivedown)
-   (bda . acousticbassdrum)
-   (bd . bassdrum)
-   (ssh . hisidestick)
-   (ss . sidestick)
-   (ssl . losidestick)
-   (sna . acousticsnare)
-   (sn . snare)
-   (hc . handclap)
-   (sne . electricsnare)
-   (tomfl . lowfloortom)
-   (hhc . closedhihat)
-   (hh . hihat)
-   (tomfh . highfloortom)
-   (hhp . pedalhihat)
-   (toml . lowtom)
-   (hho . openhihat)
-   (hhho . halfopenhihat)
-   (tomml . lowmidtom)
-   (tommh . himidtom)
-   (cymca . crashcymbala)
-   (cymc . crashcymbal)
-   (tomh . hightom)
-   (cymra . ridecymbala)
-   (cymr . ridecymbal)
-   (cymch . chinesecymbal)
-   (rb . ridebell)
-   (tamb . tambourine)
-   (cyms . splashcymbal)
-   (cb . cowbell)
-   (cymcb . crashcymbalb)
-   (vibs . vibraslap)
-   (cymrb . ridecymbalb)
-   (bohm . mutehibongo)
-   (boh . hibongo)
-   (boho . openhibongo)
-   (bolm . mutelobongo)
-   (bol . lobongo)
-   (bolo . openlobongo)
-   (cghm . mutehiconga)
-   (cglm . muteloconga)
-   (cgho . openhiconga)
-   (cgh . hiconga)
-   (cglo . openloconga)
-   (cgl . loconga)
-   (timh . hitimbale)
-   (timl . lotimbale)
-   (agh . hiagogo)
-   (agl . loagogo)
-   (cab . cabasa)
-   (mar . maracas)
-   (whs . shortwhistle)
-   (whl . longwhistle)
-   (guis . shortguiro)
-   (guil . longguiro)
-   (gui . guiro)
-   (cl . claves)
-   (wbh . hiwoodblock)
-   (wbl . lowoodblock)
-   (cuim . mutecuica)
-   (cuio . opencuica)
-   (trim . mutetriangle)
-   (tri . triangle)
-   (trio . opentriangle)
-   (ua . oneup)
-   (ub . twoup)
-   (uc . threeup)
-   (ud . fourup)
-   (ue . fiveup)
-   (da . onedown)
-   (db . twodown)
-   (dc . threedown)
-   (dd . fourdown)
-   (de . fivedown)
-   )
-
-midiDrumPitches = #`(
-	(acousticbassdrum . ,(ly:make-pitch -3 6 NATURAL))
-	(bassdrum . ,(ly:make-pitch -2 0 NATURAL))
-	(hisidestick . ,(ly:make-pitch -3 6 DOUBLE-SHARP))
-	(sidestick . ,(ly:make-pitch -2 0 SHARP))
-	(losidestick . ,(ly:make-pitch -2 1 FLAT))
-	(acousticsnare . ,(ly:make-pitch -2 1 NATURAL))
-	(snare . ,(ly:make-pitch -2 2 DOUBLE-FLAT))
-	(handclap . ,(ly:make-pitch -2 1 SHARP))
-	(electricsnare . ,(ly:make-pitch -2 2 NATURAL))
-	(lowfloortom . ,(ly:make-pitch -2 3 NATURAL))
-	(closedhihat . ,(ly:make-pitch -2 3 SHARP))
-	(hihat . ,(ly:make-pitch -2 4 FLAT))
-	(highfloortom . ,(ly:make-pitch -2 4 NATURAL))
-	(pedalhihat . ,(ly:make-pitch -2 4 SHARP))
-	(lowtom . ,(ly:make-pitch -2 5 NATURAL))
-	(openhihat . ,(ly:make-pitch -2 5 SHARP))
-	(halfopenhihat . ,(ly:make-pitch -2 5 SHARP))
-	(lowmidtom . ,(ly:make-pitch -2 6 NATURAL))
-	(himidtom . ,(ly:make-pitch -1 0 NATURAL))
-	(crashcymbala . ,(ly:make-pitch -1 0 SHARP))
-	(crashcymbal . ,(ly:make-pitch -1 1 FLAT))
-	(hightom . ,(ly:make-pitch -1 1 NATURAL))
-	(ridecymbala . ,(ly:make-pitch -1 1 SHARP))
-	(ridecymbal . ,(ly:make-pitch -1 2 FLAT))
-	(chinesecymbal . ,(ly:make-pitch -1 2 NATURAL))
-	(ridebell . ,(ly:make-pitch -1 3 NATURAL))
-	(tambourine . ,(ly:make-pitch -1 3 SHARP))
-	(splashcymbal . ,(ly:make-pitch -1 4 NATURAL))
-	(cowbell . ,(ly:make-pitch -1 4 SHARP))
-	(crashcymbalb . ,(ly:make-pitch -1 5 NATURAL))
-	(vibraslap . ,(ly:make-pitch -1 5 SHARP))
-	(ridecymbalb . ,(ly:make-pitch -1 6 NATURAL))
-	(mutehibongo . ,(ly:make-pitch -1 6 SHARP))
-	(hibongo . ,(ly:make-pitch 0 0 NATURAL))
-	(openhibongo . ,(ly:make-pitch 0 1 DOUBLE-FLAT))
-	(mutelobongo . ,(ly:make-pitch -1 6 DOUBLE-SHARP))
-	(lobongo . ,(ly:make-pitch 0 0 SHARP))
-	(openlobongo . ,(ly:make-pitch 0 1 FLAT))
-	(mutehiconga . ,(ly:make-pitch 0 1 NATURAL))
-	(muteloconga . ,(ly:make-pitch 0 2 DOUBLE-FLAT))
-	(openhiconga . ,(ly:make-pitch 0 1 SHARP))
-	(hiconga . ,(ly:make-pitch 0 2 FLAT))
-	(openloconga . ,(ly:make-pitch 0 1 DOUBLE-SHARP))
-	(loconga . ,(ly:make-pitch 0 2 NATURAL))
-	(hitimbale . ,(ly:make-pitch 0 3 NATURAL))
-	(lotimbale . ,(ly:make-pitch 0 3 SHARP))
-	(hiagogo . ,(ly:make-pitch 0 4 NATURAL))
-	(loagogo . ,(ly:make-pitch 0 4 SHARP))
-	(cabasa . ,(ly:make-pitch 0 5 NATURAL))
-	(maracas . ,(ly:make-pitch 0 5 SHARP))
-	(shortwhistle . ,(ly:make-pitch 0 6 NATURAL))
-	(longwhistle . ,(ly:make-pitch 1 0 NATURAL))
-	(shortguiro . ,(ly:make-pitch 1 0 SHARP))
-	(longguiro . ,(ly:make-pitch 1 1 NATURAL))
-	(guiro . ,(ly:make-pitch 1 0 DOUBLE-SHARP))
-	(claves . ,(ly:make-pitch 1 1 SHARP))
-	(hiwoodblock . ,(ly:make-pitch 1 2 NATURAL))
-	(lowoodblock . ,(ly:make-pitch 1 3 NATURAL))
-	(mutecuica . ,(ly:make-pitch 1 3 SHARP))
-	(opencuica . ,(ly:make-pitch 1 4 NATURAL))
-	(mutetriangle . ,(ly:make-pitch 1 4 SHARP))
-	(triangle . ,(ly:make-pitch 1 4 DOUBLE-SHARP))
-	(opentriangle . ,(ly:make-pitch 1 5 NATURAL))
-	
-	;; "transposing" pitches:
-	(oneup . ,(ly:make-pitch 0 1 NATURAL))
-	(twoup . ,(ly:make-pitch 0 2 NATURAL))
-	(threeup . ,(ly:make-pitch 0 3 NATURAL))
-	(fourup . ,(ly:make-pitch 0 4 NATURAL))
-	(fiveup . ,(ly:make-pitch 0 5 NATURAL))
-	(onedown . ,(ly:make-pitch -1 6 NATURAL))
-	(twodown . ,(ly:make-pitch -1 5 NATURAL))
-	(threedown . ,(ly:make-pitch -1 4 NATURAL))
-	(fourdown . ,(ly:make-pitch -1 3 NATURAL))
-	(fivedown . ,(ly:make-pitch -1 2 NATURAL))
-)
-
-
-#(map
-  (lambda (k-v)
-    (module-define! (current-module)
-		    (car k-v)
-		    (alist->hash-table (cdr k-v)))
-    )
-   '((drums-style .
-     (
-      (acousticbassdrum () #f -3)
-      (bassdrum () #f -3)
-      (sidestick cross #f 1)
-      (acousticsnare () #f 1)
-      (snare () #f 1)
-      (handclap triangle #f 1)
-      (electricsnare () #f 1)
-      (lowfloortom () #f -4)
-      (closedhihat cross "stopped" 3)
-      (hihat cross #f 3)
-      (highfloortom () #f -2)
-      (pedalhihat cross #f -5)
-      (lowtom () #f -1)
-      (openhihat cross "open" 3)
-      (halfopenhihat xcircle #f 3)
-      (lowmidtom () #f 0)
-      (himidtom () #f 2)
-      (crashcymbala xcircle #f 5)
-      (crashcymbal xcircle #f 5)
-      (hightom () #f 4)
-      (ridecymbala cross #f 5)
-      (ridecymbal cross #f 5)
-      (chinesecymbal mensural #f 5)
-      (ridebell () #f 5)
-      (splashcymbal diamond #f 5)
-      (cowbell triangle #f 5)
-      (crashcymbalb cross #f 5)
-      (vibraslap diamond #f 4)
-      (ridecymbalb cross #f 5)
-      ))
-
-   (timbales-style .
-     ((losidestick cross #f -1)
-      (lotimbale () #f -1)
-      (cowbell triangle #f 2)
-      (hisidestick cross #f 1)
-      (hitimbale () #f 1)
-      ))
-
-
-   (congas-style .
-     ((losidestick cross #f -1)
-      (loconga () #f -1)
-      (openloconga () "open" -1)
-      (muteloconga () "stopped" -1)
-      (hisidestick cross #f 1)
-      (hiconga () #f 1)
-      (openhiconga () "open" 1)
-      (mutehiconga () "stopped" 1)
-      ))
-
-
-   (bongos-style .
-     ((losidestick cross #f -1)
-      (lobongo () #f -1)
-      (openlobongo () "open" -1)
-      (mutelobongo () "stopped" -1)
-      (hisidestick cross #f 1)
-      (hibongo () #f 1)
-      (openhibongo () "open" 1)
-      (mutehibongo () "stopped" 1)
-      ))
-
-
-   (percussion-style .
-     ((opentriangle cross "open" 0)
-      (mutetriangle cross "stopped" 0)
-      (triangle cross #f 0)
-      (shortguiro () staccato 0)
-      (longguiro () tenuto 0)
-      (guiro () #f 0)
-      (cowbell triangle #f 0)
-      (claves () #f 0)
-      (tambourine () #f 0)
-      (cabasa cross #f 0)
-      (maracas () #f 0)
-      (handclap () #f 0)
-      ))
-   ))
-
-
diff --git a/ly/dynamic-scripts-init.ly b/ly/dynamic-scripts-init.ly
deleted file mode 100644
index 004ef5823b..0000000000
--- a/ly/dynamic-scripts-init.ly
+++ /dev/null
@@ -1,32 +0,0 @@
-\version "1.9.8"
-
-%
-% declare the standard dynamic identifiers.
-%
-
-#(define (make-dynamic-script str)
-  (let* ((m (make-music-by-name  'AbsoluteDynamicEvent)))
-  (ly:set-mus-property! m 'text str)
-  m
-  ))
-ppppp = #(make-dynamic-script "pppp")
-pppp = #(make-dynamic-script "pppp")
-ppp = #(make-dynamic-script "ppp")
-pp = #(make-dynamic-script "pp")
-p = #(make-dynamic-script "p")
-mp = #(make-dynamic-script "mp")
-mf = #(make-dynamic-script "mf")
-f = #(make-dynamic-script "f")
-ff = #(make-dynamic-script "ff")
-fff = #(make-dynamic-script "fff")
-ffff = #(make-dynamic-script "ffff")
-fp = #(make-dynamic-script "fp")
-sf = #(make-dynamic-script "sf")
-sfp = #(make-dynamic-script "sfp")
-sff = #(make-dynamic-script "sff")
-sfz = #(make-dynamic-script "sfz")
-fz = #(make-dynamic-script "fz")
-sp = #(make-dynamic-script "sp")
-spp = #(make-dynamic-script "spp")
-rfz = #(make-dynamic-script "rfz")
-
diff --git a/ly/english.ly b/ly/english.ly
deleted file mode 100644
index 68dd5d07c4..0000000000
--- a/ly/english.ly
+++ /dev/null
@@ -1,91 +0,0 @@
-%{
-     English note names spelled out in full, and abbreviated
-     with s for sharp and f for flat.
-%}
-
-pitchnamesEnglish = #`(
-	(cflatflat . ,(ly:make-pitch -1 0 DOUBLE-FLAT))
-	(cflat . ,(ly:make-pitch -1 0 FLAT))
-	(c . ,(ly:make-pitch -1 0 NATURAL))
-	(csharp . ,(ly:make-pitch -1 0 SHARP))
-	(csharpsharp . ,(ly:make-pitch -1 0 DOUBLE-SHARP))
-	(dflatflat . ,(ly:make-pitch -1 1 DOUBLE-FLAT))
-	(dflat . ,(ly:make-pitch -1 1 FLAT))
-	(d . ,(ly:make-pitch -1 1 NATURAL))
-	(dsharp . ,(ly:make-pitch -1 1 SHARP))
-	(dsharpsharp . ,(ly:make-pitch -1 1 DOUBLE-SHARP))
-	(eflatflat . ,(ly:make-pitch -1 2 DOUBLE-FLAT))
-	(eflat . ,(ly:make-pitch -1 2 FLAT))
-	(e . ,(ly:make-pitch -1 2 NATURAL))
-	(esharp . ,(ly:make-pitch -1 2 SHARP))
-	(esharpsharp . ,(ly:make-pitch -1 2 DOUBLE-SHARP))
-	(fflatflat . ,(ly:make-pitch -1 3 DOUBLE-FLAT))
-	(fflat . ,(ly:make-pitch -1 3 FLAT))
-	(f . ,(ly:make-pitch -1 3 NATURAL))
-	(fsharp . ,(ly:make-pitch -1 3 SHARP))
-	(fsharpsharp . ,(ly:make-pitch -1 3 DOUBLE-SHARP))
-	(gflatflat . ,(ly:make-pitch -1 4 DOUBLE-FLAT))
-	(gflat . ,(ly:make-pitch -1 4 FLAT))
-	(g . ,(ly:make-pitch -1 4 NATURAL))
-	(gsharp . ,(ly:make-pitch -1 4 SHARP))
-	(gsharpsharp . ,(ly:make-pitch -1 4 DOUBLE-SHARP))
-	(aflatflat . ,(ly:make-pitch -1 5 DOUBLE-FLAT))
-	(aflat . ,(ly:make-pitch -1 5 FLAT))
-	(a . ,(ly:make-pitch -1 5 NATURAL))
-	(asharp . ,(ly:make-pitch -1 5 SHARP))
-	(asharpsharp . ,(ly:make-pitch -1 5 DOUBLE-SHARP))
-	(bflatflat . ,(ly:make-pitch -1 6 DOUBLE-FLAT))
-	(bflat . ,(ly:make-pitch -1 6 FLAT))
-	(b . ,(ly:make-pitch -1 6 NATURAL))
-	(bsharp . ,(ly:make-pitch -1 6 SHARP))
-	(bsharpsharp . ,(ly:make-pitch -1 6 DOUBLE-SHARP))
-
-	(cff . ,(ly:make-pitch -1 0 DOUBLE-FLAT))
-	(cf . ,(ly:make-pitch -1 0 FLAT))
-	(c . ,(ly:make-pitch -1 0 NATURAL))
-	(cs . ,(ly:make-pitch -1 0 SHARP))
-	(css . ,(ly:make-pitch -1 0 DOUBLE-SHARP))
-	(cx . ,(ly:make-pitch -1 0 DOUBLE-SHARP))
-	(dff . ,(ly:make-pitch -1 1 DOUBLE-FLAT))
-	(df . ,(ly:make-pitch -1 1 FLAT))
-	(d . ,(ly:make-pitch -1 1 NATURAL))
-	(ds . ,(ly:make-pitch -1 1 SHARP))
-	(dss . ,(ly:make-pitch -1 1 DOUBLE-SHARP))
-	(dx . ,(ly:make-pitch -1 1 DOUBLE-SHARP))
-	(eff . ,(ly:make-pitch -1 2 DOUBLE-FLAT))
-	(ef . ,(ly:make-pitch -1 2 FLAT))
-	(e . ,(ly:make-pitch -1 2 NATURAL))
-
-	(es . ,(ly:make-pitch -1 2 SHARP))    
-	(ess . ,(ly:make-pitch -1 2 DOUBLE-SHARP))
-	(ex . ,(ly:make-pitch -1 2 DOUBLE-SHARP))
-	(fff . ,(ly:make-pitch -1 3 DOUBLE-FLAT))
-	(ff . ,(ly:make-pitch -1 3 FLAT))
-	(f . ,(ly:make-pitch -1 3 NATURAL))
-	(fs . ,(ly:make-pitch -1 3 SHARP))
-	(fss . ,(ly:make-pitch -1 3 DOUBLE-SHARP))
-	(fx . ,(ly:make-pitch -1 3 DOUBLE-SHARP))
-	(gff . ,(ly:make-pitch -1 4 DOUBLE-FLAT))
-	(gf . ,(ly:make-pitch -1 4 FLAT))
-	(g . ,(ly:make-pitch -1 4 NATURAL))
-	(gs . ,(ly:make-pitch -1 4 SHARP))
-	(gss . ,(ly:make-pitch -1 4 DOUBLE-SHARP))
-	(gx . ,(ly:make-pitch -1 4 DOUBLE-SHARP))
-	(aff . ,(ly:make-pitch -1 5 DOUBLE-FLAT))
-	(af . ,(ly:make-pitch -1 5 FLAT))
-	(a . ,(ly:make-pitch -1 5 NATURAL))
-	(as . ,(ly:make-pitch -1 5 SHARP))
-	(ass . ,(ly:make-pitch -1 5 DOUBLE-SHARP))
-	(ax . ,(ly:make-pitch -1 5 DOUBLE-SHARP))
-	(bff . ,(ly:make-pitch -1 6 DOUBLE-FLAT))
-	(bf . ,(ly:make-pitch -1 6 FLAT))
-	(b . ,(ly:make-pitch -1 6 NATURAL))
-	(bs . ,(ly:make-pitch -1 6 SHARP))
-	(bss . ,(ly:make-pitch -1 6 DOUBLE-SHARP))
-	(bx . ,(ly:make-pitch -1 6 DOUBLE-SHARP))
-)
-
-pitchnames = \pitchnamesEnglish
-
-\version "2.1.19"
-
diff --git a/ly/engraver-init.ly b/ly/engraver-init.ly
deleted file mode 100644
index 854228ced0..0000000000
--- a/ly/engraver-init.ly
+++ /dev/null
@@ -1,781 +0,0 @@
-\version "2.1.21"
-
-
-%
-% setup for Request->Element conversion. Guru-only
-%
-
-\translator {
-	\type "Engraver_group_engraver"
-	\name Staff
-
-	\description "Handles clefs, bar lines, keys, accidentals.  It can contain
-@code{Voice} contexts."
-
-	
-	\consists "Output_property_engraver"	
-	
-	\consists "Bar_engraver"
-% Bar_engraver must be first so default bars aren't overwritten
-% with empty ones.
-	\consists "Font_size_engraver"
-
-%	\consists "Repeat_engraver"
-	\consists "Volta_engraver"
-	\consists "Separating_line_group_engraver"	
-	\consists "Dot_column_engraver"
-
-	% perhaps move to Voice context?
-	\consists "Ottava_spanner_engraver"
-	\consists "Clef_engraver"
-	\consists "Key_engraver"
-	\consists "Time_signature_engraver"
-	\consists "Staff_symbol_engraver"
-	\consists "Collision_engraver"
-	\consists "Rest_collision_engraver"
-	\consists "Accidental_engraver"
-	\consists "Piano_pedal_engraver"
-	\consists "Instrument_name_engraver"
-	\consists "Grob_pq_engraver"
-	\consists "Forbid_line_break_engraver"
-	\consists "String_number_engraver"
-	\consistsend "Axis_group_engraver"
-
-	minimumVerticalExtent = #'(-6 . 6)
-	extraVerticalExtent = ##f
-	verticalExtent = ##f 
-	localKeySignature = #'()
-
-	% explicitly set instrument, so we don't get 
-	% weird effects when doing instrument names for
-	% piano staves
-
-	instrument = #'()
-	instr = #'()
-	  
-	\accepts "Voice"
-}
-
-\translator {
-    \StaffContext
-    \type "Engraver_group_engraver"
-    \name DrumStaff
-    \alias Staff
-
-    \remove "Accidental_engraver"
-    \remove "Ottava_spanner_engraver"
-    \remove "Key_engraver" 
-    \remove "Piano_pedal_engraver"
-    \remove "String_number_engraver"
-    
-    \description "Handles typesetting for percussion."
-
-    \denies Voice
-    \accepts DrumVoice
-
-    clefGlyph = #"clefs-percussion"
-    clefPosition = #0
-    Script \set #'staff-padding = #0.75 
-}
-
-
-\translator {
-    \type Engraver_group_engraver
-    \consists "Axis_group_engraver"
-    minimumVerticalExtent = ##f
-    extraVerticalExtent = ##f
-    verticalExtent = ##f 
-    localKeySignature = #'()
-
-    \accepts Staff
-    \name StaffContainer
-}
-
-\translator {
-    \type "Engraver_group_engraver"
-    \name InnerChoirStaff
-    \consists "System_start_delimiter_engraver"
-    systemStartDelimiter = #'SystemStartBracket
-    localKeySignature = #'()
-
-    \accepts "Staff"
-    \accepts "DrumStaff"
-    \accepts "RhythmicStaff"
-    \accepts "GrandStaff"
-    \accepts "PianoStaff"
-    \accepts "Lyrics"
-    \accepts "ChordNames"
-}
-
-\translator {
-	\InnerChoirStaffContext
-	\name ChoirStaff
-	
-	\description "Identical to @code{StaffGroup} except that the
-    contained staves are not connected vertically."
-	
-	\accepts "InnerChoirStaff"
-	\accepts "InnerStaffGroup"
-}
-
-
-\translator{
-    \type "Engraver_group_engraver"
-    
-    \consists "Output_property_engraver"	
-
-    \description  "
-    A context like @code{Staff} but for printing rhythms.  Pitches are
-    ignored; the notes are printed on one line.  
-"
-    minimumVerticalExtent = ##f
-    extraVerticalExtent = ##f
-    verticalExtent = ##f 
-    localKeySignature = #'()
-
-    \consists "Pitch_squash_engraver"
-    \consists "Separating_line_group_engraver"	
-    \name RhythmicStaff
-    \alias "Staff"
-    
-    BarLine \override #'bar-size = #4
-    VoltaBracket \override #'minimum-space =  #15
-    VoltaBracket \override #'padding =  #5
-    StaffSymbol \override #'line-count = #1	
-
-    Stem \override #'neutral-direction = #1
-    Beam \override #'neutral-direction = #1 	
-				%	\consists "Repeat_engraver"
-    \consists "Dot_column_engraver"
-    \consists "Volta_engraver"
-    \consists "Bar_engraver"
-    \consists "Time_signature_engraver"
-    \consists "Staff_symbol_engraver"
-    \consists "Instrument_name_engraver"
-    \consistsend "Axis_group_engraver"
-    \accepts "Voice"
-}
-
-
-\translator {
-    \type "Engraver_group_engraver"
-    \name Voice
-
-    \description "
-    Corresponds to a voice on a staff.  This context handles the
-    conversion of dynamic signs, stems, beams, super- and subscripts,
-    slurs, ties, and rests.
-
-    You have to instantiate this explicitly if you want to have
-    multiple voices on the same staff."
-
-    localKeySignature = #'()
-    \consists "Font_size_engraver"
-    
-    \consists "Output_property_engraver"	
-    \consists "Arpeggio_engraver"
-    \consists "Multi_measure_rest_engraver"
-    \consists "Text_spanner_engraver"
-    \consists "Grob_pq_engraver"
-
-    \consists "Note_head_line_engraver"
-    \consists "Glissando_engraver"
-    \consists "Ligature_bracket_engraver"
-    \consists "Breathing_sign_engraver"
-				% \consists "Rest_engraver"
-    \consists "Note_heads_engraver"
-    \consists "Rest_engraver"
-
-    \consists "Stem_engraver"
-    \consists "Beam_engraver"
-    \consists "Grace_beam_engraver"
-    \consists "Auto_beam_engraver"
-    \consists "New_fingering_engraver"
-    \consists "Chord_tremolo_engraver"
-    \consists "Percent_repeat_engraver"
-    \consists "Slash_repeat_engraver"
-    \consists "Melisma_engraver"
-    \consists "Part_combine_engraver"
-
-%{
-    Must come before text_engraver, but after note_column engraver.
-
-%}
-    \consists "Text_engraver"
-    \consists "Dynamic_engraver"
-    \consists "Fingering_engraver"
-
-    \consists "Script_engraver"
-    \consists "Script_column_engraver"
-    \consists "Rhythmic_column_engraver"
-    \consists "Phrasing_slur_engraver"
-    \consists "Cluster_spanner_engraver"
-    \consists "Slur_engraver"
-    \consists "Tie_engraver"
-    \consists "Tuplet_engraver"
-
-    \consists "Skip_event_swallow_translator"
-}
-
-\translator {
-    \VoiceContext
-    \name DrumVoice
-    \alias Voice
-
-    \description " A voice on a percussion staff."
-    
-    
-    \remove "Arpeggio_engraver"
-    \consists "Multi_measure_rest_engraver"
-    \consists "Text_spanner_engraver"
-    \consists "Grob_pq_engraver"
-
-    \remove "Note_head_line_engraver"
-    \remove "Glissando_engraver"
-    \remove "Ligature_bracket_engraver"
-    \remove "Note_heads_engraver"
-    \consists "Rest_engraver"
-    \consists "Drum_notes_engraver"
-    \remove "New_fingering_engraver"
-
-    \remove "Fingering_engraver"
-
-    \remove "Phrasing_slur_engraver"
-    \remove "Cluster_spanner_engraver"
-    \remove "Slur_engraver"
-    \consists "Tuplet_engraver"
-
-    \consists "Skip_event_swallow_translator"
-}
-
-\translator{
-    \type "Engraver_group_engraver"
-    \name GrandStaff
-    localKeySignature = #'()
-    
-    \description " A group of staffs, with a brace on the left
-    side, grouping the staves together.  The bar lines of the
-    contained staves are connected vertically.  "
-
-    \consists "Span_bar_engraver"
-    \consists "Span_arpeggio_engraver"
-    \consists "System_start_delimiter_engraver"
-    systemStartDelimiter = #'SystemStartBrace
-
-    \accepts "Staff"
-}
-
-\translator{
-    \GrandStaffContext
-    \name "PianoStaff"
-    \alias "GrandStaff"
-
-    \description
-    "Just like @code{GrandStaff} but with a forced distance between
-    the staves, so cross staff beaming and slurring can be used."
-    
-    verticalAlignmentChildCallback = #Align_interface::fixed_distance_alignment_callback
-    VerticalAlignment \override #'forced-distance = #12
-    VerticalAlignment \override #'self-alignment-Y = #0
-
-    \consists "Vertical_align_engraver"
-    \consists "Instrument_name_engraver"
-    
-    instrument = #'()
-    instr = #'()
-}
-
-\translator {
-    \type "Engraver_group_engraver"
-    \name InnerStaffGroup
-    localKeySignature = #'()
-
-    \consists "Span_bar_engraver"
-    \consists "Span_arpeggio_engraver"
-    \consists "Output_property_engraver"	
-    systemStartDelimiter = #'SystemStartBracket
-
-    \consists "System_start_delimiter_engraver"
-    \accepts "Staff"
-    \accepts "RhythmicStaff"
-    \accepts "DrumStaff"
-    \accepts "GrandStaff"
-    \accepts "PianoStaff"
-    \accepts "TabStaff"	
-    \accepts "Lyrics"
-    \accepts "ChordNames"
-}
-
-\translator {
-    \InnerStaffGroupContext
-    \name StaffGroup
-    
-    \description
-
-    "Groups staffs while adding a bracket on the left side, grouping
-the staves together.  The bar lines of the contained staves are
-connected vertically.  "
-    
-    \accepts "InnerChoirStaff"
-    \accepts "ChoirStaff"
-    \accepts "InnerStaffGroup"
-    \accepts "FiguredBass"
-}
-
-
-\translator{
-    \type "Engraver_group_engraver"
-    \consistsend "Hara_kiri_engraver"
-    minimumVerticalExtent = #'(-1.2 . 2.4)
-    extraVerticalExtent = ##f
-    verticalExtent = ##f
-
-    \description " Corresponds to a voice with lyrics.  Handles the
-printing of a single line of lyrics.  "
-    
-    \name Lyrics 
-    \consists "Separating_line_group_engraver"
-    \consists "Lyric_engraver"
-    \consists "Extender_engraver"
-    \consists "Hyphen_engraver"
-    \consists "Stanza_number_engraver"
-    \consists "Vocal_name_engraver"
-    \consists "Skip_event_swallow_translator"
-    SeparationItem \set #'padding = #0.2
-}
-
-\translator {
-    \type "Engraver_group_engraver"
-    \name NoteNames
-    \consistsend "Axis_group_engraver"
-
-    minimumVerticalExtent = ##f
-    extraVerticalExtent = ##f
-    verticalExtent = ##f 
-
-    
-    \consists "Rest_swallow_translator" 
-    \consists "Skip_event_swallow_translator"
-    \consists "Tie_engraver"
-    \consists "Note_swallow_translator"
-    \consists "Note_name_engraver"
-    \consists "Separating_line_group_engraver"
-}
-
-\translator {
-    \type "Engraver_group_engraver"
-    \name ChordNames
-    \description "Typesets chord names."
-    
-    \consists "Rest_swallow_translator" 
-    \consists "Output_property_engraver"	
-    \consists "Separating_line_group_engraver"
-    \consists "Chord_name_engraver"
-    \consists "Skip_event_swallow_translator"
-    \consistsend "Hara_kiri_engraver"
-    
-    minimumVerticalExtent = #'(0 . 2.5)
-    extraVerticalExtent = ##f
-    SeparatingGroupSpanner \override #'padding = #0.8
-    verticalExtent = ##f 
-}
-
-
-RemoveEmptyStaffContext= \translator {
-    \StaffContext
-    \remove "Axis_group_engraver"
-    \consistsend "Hara_kiri_engraver"
-    Beam \override #'auto-knee-gap = #'()
-}
-
-AncientRemoveEmptyStaffContext = \translator {
-    %% why not add by default?
-    
-    \RemoveEmptyStaffContext
-    \accepts "VaticanaVoice"
-    \accepts "GregorianTranscriptionVoice"
-}
-
-\translator {
-    \type Score_engraver
-    \name Score
-    localKeySignature = #'()
-
-    \description "This is the top level notation context.  No
-    other context can contain a @code{Score} context.  This context
-    handles the administration of time signatures.  It also makes sure
-    that items such as clefs, time signatures, and key-signatures are
-    aligned across staves.
-
-    You cannot explicitly instantiate a Score context (since it is
-    not contained in any other context).  It is instantiated
-    automatically when an output definition (a @code{\score} or
-    @code{\paper} block) is processed."
-    
-    \consists "Repeat_acknowledge_engraver"
-    \consists "Staff_collecting_engraver"
-
-				% move the alias along with the engraver.
-
-    %% TODO? add this alias from Timing_engraver::initialize() ? 
-    \consists "Timing_engraver"
-    \alias "Timing"
-    
-    \consists "Output_property_engraver"
-    \consists "System_start_delimiter_engraver"
-    \consists "Mark_engraver"	
-    \consists "Metronome_mark_engraver"	
-    \consists "Break_align_engraver"
-    \consists "Spacing_engraver"
-    \consists "Vertical_align_engraver"
-    \consists "Lyric_phrasing_engraver"
-    \consists "Bar_number_engraver"
-    \consists "Span_arpeggio_engraver"
-
-    \accepts "Staff"
-    \accepts "TabStaff"
-    \accepts "VaticanaStaff"
-    \accepts "GregorianTranscriptionStaff"
-    \accepts "StaffContainer"
-    \accepts "StaffGroup"
-    \accepts "RhythmicStaff"
-    \accepts "DrumStaff"
-    \accepts "Lyrics"
-    \accepts "ChordNames"
-    \accepts "GrandStaff"
-    \accepts "ChoirStaff"
-    \accepts "PianoStaff"
-    \accepts "Devnull"
-    \accepts "NoteNames"
-    \accepts "FiguredBass"
-
-    soloText = #"Solo"
-    soloIIText = #"Solo II"
-    aDueText = #"a2"
-    soloADue = ##t
-    systemStartDelimiter =#'SystemStartBar
-
-    drumStyleTable = #drums-style
-    
-    melismaBusyProperties = #default-melisma-properties
-    
-    clefGlyph = #"clefs-G"
-    clefPosition = #-2
-    centralCPosition = #-6
-    
-    defaultBarType = #"|"
-    barNumberVisibility = #default-bar-number-visibility
-    automaticBars = ##t
-    
-    explicitClefVisibility = #all-visible
-    explicitKeySignatureVisibility = #all-visible
-    autoBeamSettings = #(cons default-auto-beam-settings '())
-    autoBeaming = ##t
-    scriptDefinitions = #default-script-alist
-
-    verticalAlignmentChildCallback = #Align_interface::alignment_callback
-
-    pedalSustainStrings = #'("Ped." "*Ped." "*")
-    pedalSustainStyle = #'text
-    pedalUnaCordaStrings = #'("una corda" "" "tre corde")
-    pedalUnaCordaStyle = #'text
-
-    %% These are in ordinary italic font, including the *,
-    %% but they are unlikely to be used, 
-    %% as the default pedal-style for SostenutoPedal is 'mixed':
-    %% i.e.  Sost. Ped_____________________ 
-    pedalSostenutoStrings = #'("Sost. Ped." "*Sost. Ped." "*") 
-    pedalSostenutoStyle = #'mixed
-
-    fingeringOrientations = #'(up down)
-    tupletNumberFormatFunction = #denominator-tuplet-formatter
-    markFormatter = #format-mark-letters
-    rehearsalMark = #1 
-    subdivideBeams = ##f
-    allowBeamBreak = ##f
-    extraNatural = ##t
-    autoAccidentals = #'(Staff (same-octave . 0))
-    autoCautionaries = #'()  
-
-    keyAccidentalOrder = #`(
-	(6 . ,FLAT) (2  . ,FLAT) (5 . ,FLAT ) (1  . ,FLAT) (4  . ,FLAT) (0  . ,FLAT) (3  . ,FLAT)
-	(3  . ,SHARP) (0 . ,SHARP) (4 . ,SHARP) (1 . ,SHARP) (5 . ,SHARP) (2 . ,SHARP) (6 . ,SHARP)
-	(6 . ,DOUBLE-FLAT) (2  . ,DOUBLE-FLAT) (5 . ,DOUBLE-FLAT ) (1  . ,DOUBLE-FLAT) (4  . ,DOUBLE-FLAT) (0  . ,DOUBLE-FLAT) (3 . ,DOUBLE-FLAT)
-	(3  . ,DOUBLE-SHARP) (0 . ,DOUBLE-SHARP) (4 . ,DOUBLE-SHARP) (2 . ,DOUBLE-SHARP) (5 . ,DOUBLE-SHARP) (2 . ,DOUBLE-SHARP) (6 . ,DOUBLE-SHARP)
-    )
-    breakAlignOrder = #'(
-    instrument-name
-    left-edge
-    ambitus
-    breathing-sign
-    clef
-    rehearsal-mark
-    staff-bar
-    key-signature
-    time-signature
-    custos
-    )
-    barCheckSynchronize = ##f
-    
-    %% chord names:
-    chordNameFunction = #ignatzek-chord-names
-    majorSevenSymbol = #whiteTriangleMarkup
-    chordNameSeparator = #(make-simple-markup  "/")
-    chordNameExceptions = #ignatzekExceptions
-    chordNoteNamer = #'()
-    chordRootNamer = #note-name->markup
-    chordNameExceptionsFull = #fullJazzExceptions
-    chordNameExceptionsPartial = #partialJazzExceptions
-    
-    %% tablature:
-    stringOneTopmost = ##t
-    highStringOne = ##t
-
-    %% One may change the strings tuning as following :
-    %% The lenght of the list must be equal to the number of string
-    stringTunings   = #guitar-tunings
-    tablatureFormat = #fret-number-tablature-format
-
-    %%
-    bassFigureFormatFunction = #make-bass-figure-markup
-    metronomeMarkFormatter = #format-metronome-markup
-    graceSettings = #`#(
-	(Voice Stem direction 1)
-
-	;; TODO: should take from existing definition.
-	;; c&p from define-grobs.scm
-	
-	(Voice Stem lengths ,(map (lambda (x) (* 0.8 x)) '(3.5 3.5 3.5 4.5 5.0)))
-	(Voice Stem stem-shorten (0.4 0))
-	(Voice Stem  font-size -3)
-	(Voice NoteHead  font-size -3)
-	(Voice Dots  font-size -3)
-	(Voice Stem beamed-lengths  
-	 ,(map (lambda (x) (* 0.8 x)) '(3.26)))
-	(Voice Stem beamed-minimum-free-lengths  
-	 ,(map (lambda (x) (* 0.8 x)) '(2.5 2.0 1.5)))
-	(Voice Stem beamed-extreme-minimum-free-lengths  
-	 ,(map (lambda (x) (* 0.8 x)) '(1.83 1.5)))
-
-	(Voice Stem no-stem-extend #t)
-	(Voice Beam thickness 0.384)
-	(Voice Beam space-function ,(lambda (beam mult)
-				     (* 0.8 (Beam::space_function
-					     beam mult))))
-	(Voice Beam position-callbacks (,Beam::least_squares
-					,Beam::check_concave
-					,Beam::slope_damping))
-	(Staff Accidental font-size -4)
-	(Voice Slur direction -1)
-    )
-    
-    \grobdescriptions #all-grob-descriptions
-}
-
-OrchestralScoreContext = \translator {
-	\ScoreContext
-}
-
-EasyNotation = \translator {
-	\ScoreContext
-	NoteHead \override #'print-function = #Note_head::brew_ez_molecule
-	NoteHead \override #'Y-extent-callback = #'()
-	NoteHead \override #'X-extent-callback = #'()
-}
-
-
-
-\translator {
-	\type "Engraver_group_engraver"
-	\name FiguredBass 
-	\consists "Figured_bass_engraver"
-	\consists "Rest_swallow_translator"
-	\consists "Note_swallow_translator"
-	\consists "Separating_line_group_engraver"
-	
-	\consistsend "Hara_kiri_engraver"
-}
-
-\translator {
-    \name "Devnull"
-    \type "Engraver_group_engraver"
-
-    %% don't want to route anything out of here: 
-    \alias "Staff"
-    \alias "Timing"
-    \alias "Voice"
-    \consists "Swallow_engraver"
-    \description "Silently discards all musical information given to this context. "
-    }
-
-\translator {
-      \VoiceContext
-      \name "TabVoice"
-      \consists "Tab_note_heads_engraver"
-      \remove "Note_heads_engraver"
-      \remove "Fingering_engraver"
-      \remove "New_fingering_engraver"
-
-      \description "Context for drawing notes in a Tab staff. "
-      Slur \override #'font-family       = #'roman
-      Slur \override #'print-function = #hammer-print-function
-      Slur \override #'direction    = #-1
-
-      % Draws all stems/beams out of the staff (and not in the middle of the staff !)
-      % This feature is now disabled because most of the tab does not use it.
-      %Beam \override #'damping = #100000
-      %Stem \override #'up-to-staff = ##t
-
-      % No accidental in tablature !
-      \remove Accidental_engraver
-}
-
-\translator {
-      \StaffContext
-      \alias "Staff"
-      \name "TabStaff"
-      \denies "Voice"
-
-      \description "Context for generating tablature. [DOCME]"
-
-%{
-      TODO: this context should use a special staff_symbol engraver that
-      takes the line count out of the stringTunings property.
-
-%}
-      
-      
-      \accepts "TabVoice"
-      
-      % 6 strings
-      StaffSymbol \override #'line-count  = #6
-      StaffSymbol \override #'staff-space = #1.5
-
-     % Don't draw stems over the tablature figures !
-      Stem \override #'avoid-note-head = ##t
-      
-      % No accidental in tablature !
-      \remove "Accidental_engraver"
-      \remove "Key_engraver"
-      \remove "String_number_engraver"
-      % Special "TAB" clef
-      clefGlyph = #"clefs-tab"
-      clefPosition = #0
-}
-
-% TODO: Gregorian Chant contexts should be moved to gregorian-init.ly,
-% but this does not work (is this a bug or intended behaviour?):
-%
-% If I try to do so, I get "error: unknown escaped string:
-% `\VaticanaStaffContext'" in params-init.ly.  If I also move
-% "\translator { \Vaticana*Context }" from params-init.ly to the end
-% of gregorian-init.ly, then I get "error: parse error, unexpected
-% TRANSLATOR: \translator { \VaticanaStaffContext }" in
-% gregorian-init.ly. --jr
-
-\translator {
-  \VoiceContext
-  \name "VaticanaVoice"
-  \alias "Voice"
-  \description "Same as @code{Voice} context, except that it is accommodated for tyepsetting Gregorian Chant in the notational style of Editio Vaticana."
-
-  \remove "Slur_engraver"
-  \remove "Stem_engraver"
-  \remove "Ligature_bracket_engraver"
-  \consists "Vaticana_ligature_engraver"
-
-  % Set default head for notes outside of \[ \].
-  NoteHead \set #'style = #'vaticana_punctum
-
-  % Put some space before and after divisiones.
-  % FIXME: This does not seem to show any effect.
-  Script \set #'padding = #0.5
-
-  % There are no beams in Gregorian Chant notation.
-  autobeaming = ##f
-
-  % Prepare TextSpanner for \episem{Initium|Finis} use.
-  TextSpanner \set #'style = #'line
-  TextSpanner \set #'edge-height = #'(0 . 0)
-  TextSpanner \set #'padding = #0.5
-  TextSpanner \set #'enclose-bounds = #1
-  TextSpanner \set #'edge-text = #'("" . "")
-}
-
-\translator {
-  \StaffContext
-  \name "VaticanaStaff"
-  \alias "Staff"
-  \denies "Voice"
-  \accepts "VaticanaVoice"
-  \description "Same as @code{Staff} context, except that it is accommodated for tyepsetting Gregorian Chant in the notational style of Editio Vaticana."
-
-  \remove "Time_signature_engraver"
-  \consists "Custos_engraver"
-
-  % We can not remove Bar_engraver; otherwise clefs and custodes will
-  % not show up any more among other line breaking issues.
-  % Instead, we make the grob transparent.
-  BarLine \set #'transparent = ##t
-
-  StaffSymbol \set #'line-count = #4
-  StaffSymbol \set #'thickness = #0.6
-
-  % FIXME: unit on StaffSymbol's width should be \linewidth.
-  % StaffSymbol \set #'width = #60.0
-
-  % Choose vaticana do clef on 3rd line as default.
-  clefGlyph = #"clefs-vaticana_do"
-  centralCPosition = #1
-  clefPosition = #1
-  clefOctavation = #0
-
-  % Select vaticana style font.
-  KeySignature \set #'style = #'vaticana
-  Accidental \set #'style = #'vaticana
-  Custos \set #'style = #'vaticana
-  Custos \set #'neutral-position = #3
-  Custos \set #'neutral-direction = #-1
-  Custos \set #'adjust-if-on-staffline = ##t
-
-  % Score.timing = ##f
-  % Score.barAlways = ##t
-}
-
-\translator {
-  \VoiceContext
-  \name "GregorianTranscriptionVoice"
-  \alias "Voice"
-
-  % Removing ligature bracket engraver without replacing it by some
-  % other ligature engraver would cause a "Junking event: `LigatureEvent'"
-  % warning for every "\[" and "\]".  Therefore, we make the grob
-  % transparent instead.
-  LigatureBracket \set #'transparent = ##t
-
-  % Put some space before and after divisiones.
-  % FIXME: This does not seem to show any effect.
-  Script \set #'padding = #0.5
-
-  % There are no beams in Gregorian Chant notation.
-  autobeaming = ##f
-
-  % Prepare TextSpanner for \episem{Initium|Finis} use.
-  TextSpanner \set #'style = #'line
-  TextSpanner \set #'edge-height = #'(0 . 0)
-  TextSpanner \set #'padding = #0.5
-  TextSpanner \set #'enclose-bounds = #1
-  TextSpanner \set #'edge-text = #'("" . "")
-}
- \translator {
-  \StaffContext
-  \name "GregorianTranscriptionStaff"
-  \alias "Staff"
-  \denies "Voice"
-  \accepts "GregorianTranscriptionVoice"
-
-  % We can not remove Bar_engraver; otherwise clefs and custodes will
-  % not show up any more among other line breaking issues.
-  % Instead, we make the grob transparent.
-  BarLine \set #'transparent = ##t
-}
diff --git a/ly/espanol.ly b/ly/espanol.ly
deleted file mode 100644
index 595af54c4f..0000000000
--- a/ly/espanol.ly
+++ /dev/null
@@ -1,61 +0,0 @@
-%{
-
- Common Spanish names for notes. "b" means flat (bemol), "s" means sharp (sostenido).
- Adapted from italiano.ly.
-
- English: a   b   c   d   e   f   g
- Spanish: la  si  do  re  mi  fa  sol
-
-%}
-
-% contributed by Carlos García Suárez <<cgscqmp@terra.es>>
-
-
-% For using "sostingut" notation, which is also correct
-pitchnamesEspanol = #`(
-	(dobb . ,(ly:make-pitch -1 0 DOUBLE-FLAT))
-	(dob . ,(ly:make-pitch -1 0 FLAT))
-	(do . ,(ly:make-pitch -1 0 NATURAL))
-	(dos . ,(ly:make-pitch -1 0 SHARP))
-	(doss . ,(ly:make-pitch -1 0 DOUBLE-SHARP))
-
-	(rebb . ,(ly:make-pitch -1 1 DOUBLE-FLAT))
-	(reb . ,(ly:make-pitch -1 1 FLAT))
-	(re . ,(ly:make-pitch -1 1 NATURAL))
-	(res . ,(ly:make-pitch -1 1 SHARP))
-	(ress . ,(ly:make-pitch -1 1 DOUBLE-SHARP))
-
-	(mibb . ,(ly:make-pitch -1 2 DOUBLE-FLAT))
-	(mib . ,(ly:make-pitch -1 2 FLAT))
-	(mi . ,(ly:make-pitch -1 2 NATURAL))
-	(mis . ,(ly:make-pitch -1 2 SHARP))
-	(miss . ,(ly:make-pitch -1 2 DOUBLE-SHARP))
-
-	(fabb . ,(ly:make-pitch -1 3 DOUBLE-FLAT))
-	(fab . ,(ly:make-pitch -1 3 FLAT))
-	(fa . ,(ly:make-pitch -1 3 NATURAL))
-	(fas . ,(ly:make-pitch -1 3 SHARP))
-	(fass . ,(ly:make-pitch -1 3 DOUBLE-SHARP))
-
-	(solbb . ,(ly:make-pitch -1 4 DOUBLE-FLAT))
-	(solb . ,(ly:make-pitch -1 4 FLAT))
-	(sol . ,(ly:make-pitch -1 4 NATURAL))
-	(sols . ,(ly:make-pitch -1 4 SHARP))
-	(solss . ,(ly:make-pitch -1 4 DOUBLE-SHARP))
-
-	(labb . ,(ly:make-pitch -1 5 DOUBLE-FLAT))
-	(lab . ,(ly:make-pitch -1 5 FLAT))
-	(la . ,(ly:make-pitch -1 5 NATURAL))
-	(las . ,(ly:make-pitch -1 5 SHARP))
-	(lass . ,(ly:make-pitch -1 5 DOUBLE-SHARP))
-
-	(sibb . ,(ly:make-pitch -1 6 DOUBLE-FLAT))
-	(sib . ,(ly:make-pitch -1 6 FLAT))
-	(si . ,(ly:make-pitch -1 6 NATURAL))
-	(sis . ,(ly:make-pitch -1 6 SHARP))
-	(siss . ,(ly:make-pitch -1 6 DOUBLE-SHARP))
-)
-
-pitchnames = \pitchnamesEspanol
-
-\version "2.1.19"
diff --git a/ly/generate-documentation.ly b/ly/generate-documentation.ly
deleted file mode 100644
index 8f752ed0e6..0000000000
--- a/ly/generate-documentation.ly
+++ /dev/null
@@ -1,7 +0,0 @@
-\version "1.9.8"
-
-%
-% Running LilyPond on this file generates the documentation
-%
-#(ly:set-option 'parse-protect #f)
-#(load-from-path "documentation-generate.scm")
diff --git a/ly/generate-interface-doc-init.ly b/ly/generate-interface-doc-init.ly
deleted file mode 100644
index b902e70cf9..0000000000
--- a/ly/generate-interface-doc-init.ly
+++ /dev/null
@@ -1,6 +0,0 @@
-\version "1.9.8"
-
-%
-% Running LilyPond on this file generates the short interface doc
-%
-#(eval-string (ly:gulp-file "generate-interface-doc.scm"))
diff --git a/ly/generic-paper-init.ly b/ly/generic-paper-init.ly
deleted file mode 100644
index 8b13789179..0000000000
--- a/ly/generic-paper-init.ly
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/ly/grace-init.ly b/ly/grace-init.ly
deleted file mode 100644
index 4b1dc9b94b..0000000000
--- a/ly/grace-init.ly
+++ /dev/null
@@ -1,33 +0,0 @@
-\version "1.9.8"
-
-
-startGraceMusic = \notes {
-    \context Voice \applycontext #set-start-grace-properties
-}
-
-stopGraceMusic = \notes { 
-    \context Voice \applycontext #set-stop-grace-properties
-}
-
-startAppoggiaturaMusic =
-\notes {
-    \context Voice \applycontext #set-start-grace-properties
-    s1*0(
-}
-
-stopAppoggiaturaMusic = \notes { 
-    \context Voice \applycontext #set-stop-grace-properties
-    s1*0)
-}
-
-startAcciaccaturaMusic = \notes {
-    \context Voice \applycontext #set-start-grace-properties
-    s1*0(
-    \property Voice.Stem \override #'stroke-style = #"grace"
-}
-
-stopAcciaccaturaMusic = \notes {
-    \property Voice.Stem \revert #'stroke-style
-    \context Voice \applycontext #set-stop-grace-properties
-    s1*0)
-}
diff --git a/ly/gregorian-init.ly b/ly/gregorian-init.ly
deleted file mode 100644
index 850392a80f..0000000000
--- a/ly/gregorian-init.ly
+++ /dev/null
@@ -1,102 +0,0 @@
-\version "2.1.21"
-
-%%%%%%%%
-%%%%%%%% shortcuts common for all styles of gregorian chant notation
-%%%%%%%%
-
-%
-% declare head prefix shortcuts
-%
-virga =
-  \once \property Voice.NoteHead \override #'virga = ##t
-stropha =
-  \once \property Voice.NoteHead \override #'stropha = ##t
-inclinatum =
-  \once \property Voice.NoteHead \override #'inclinatum = ##t
-auctum =
-  \once \property Voice.NoteHead \override #'auctum = ##t
-descendens =
-  \once \property Voice.NoteHead \override #'descendens = ##t
-ascendens =
-  \once \property Voice.NoteHead \override #'ascendens = ##t
-pes =
-  \once \property Voice.NoteHead \override #'pes-or-flexa = ##t
-flexa =
-  \once \property Voice.NoteHead \override #'pes-or-flexa = ##t
-oriscus =
-  \once \property Voice.NoteHead \override #'oriscus = ##t
-quilisma =
-  \once \property Voice.NoteHead \override #'quilisma = ##t
-deminutum =
-  \once \property Voice.NoteHead \override #'deminutum = ##t
-linea =
-  \once \property Voice.NoteHead \override #'linea = ##t
-cavum =
-  \once \property Voice.NoteHead \override #'cavum = ##t
-
-%
-% declare divisiones shortcuts
-%
-virgula = {
-  \once \property Voice.BreathingSign \override #'text = #(make-musicglyph-markup "scripts-rcomma")
-  \once \property Voice.BreathingSign \override #'font-size = #-2
-
-  % Workaround: add padding.  Correct fix would be spacing engine handle this.
-  \once \property Voice.BreathingSign \override #'extra-X-extent = #'(-1.0 . 0)
-
-  \breathe
-}
-caesura = {
-  \once \property Voice.BreathingSign \override #'text = #(make-musicglyph-markup "scripts-rvarcomma")
-  \once \property Voice.BreathingSign \override #'font-size = #-2
-
-  % Workaround: add padding.  Correct fix would be spacing engine handle this.
-  \once \property Voice.BreathingSign \override #'extra-X-extent = #'(-1.0 . 0)
-
-  \breathe
-}
-divisioMinima = {
-  \once \property Voice.BreathingSign \override #'print-function = #Breathing_sign::divisio_minima
-
-  % Workaround: add padding.  Correct fix would be spacing engine handle this.
-  \once \property Voice.BreathingSign \override #'extra-X-extent = #'(-1.0 . 0)
-
-  \breathe
-}
-divisioMaior = {
-  \once \property Voice.BreathingSign \override #'print-function = #Breathing_sign::divisio_maior
-  \once \property Voice.BreathingSign \override #'Y-offset-callbacks = #'()
-
-  % Workaround: add padding.  Correct fix would be spacing engine handle this.
-  \once \property Voice.BreathingSign \override #'extra-X-extent = #'(-1.0 . 0)
-
-  \breathe
-}
-divisioMaxima = {
-  \once \property Voice.BreathingSign \override #'print-function = #Breathing_sign::divisio_maxima
-  \once \property Voice.BreathingSign \override #'Y-offset-callbacks = #'()
-
-  % Workaround: add padding.  Correct fix would be spacing engine handle this.
-  \once \property Voice.BreathingSign \override #'extra-X-extent = #'(-1.0 . 0)
-
-  \breathe
-}
-finalis = {
-  \once \property Voice.BreathingSign \override #'print-function = #Breathing_sign::finalis
-  \once \property Voice.BreathingSign \override #'Y-offset-callbacks = #'()
-
-  % Workaround: add padding.  Correct fix would be spacing engine handle this.
-  \once \property Voice.BreathingSign \override #'extra-X-extent = #'(-1.0 . 0)
-
-  \breathe
-}
-
-%
-% declare articulation shortcuts
-%
-accentus = #(make-articulation "accentus")
-ictus = #(make-articulation "ictus")
-semicirculus = #(make-articulation "semicirculus")
-circulus = #(make-articulation "circulus")
-episemInitium = #(make-span-event 'TextSpanEvent START)
-episemFinis = #(make-span-event 'TextSpanEvent STOP)
diff --git a/ly/init.ly b/ly/init.ly
deleted file mode 100644
index f0d780b267..0000000000
--- a/ly/init.ly
+++ /dev/null
@@ -1,29 +0,0 @@
-% Toplevel initialisation file. 
-
-#(define-public point-and-click #f)
-#(define-public midi-debug #f)
-
-
-\version "1.9.8"
-
-\include "declarations-init.ly"
-
-
-#(ly:set-option 'new-relative)
-#(ly:set-point-and-click #f)
-
-\maininput
-
-#(if (and (ly:get-option 'old-relative)
-      (not (ly:get-option 'old-relative-used)))
-  (ly:warn (string-append
-	    "\n"
-	    input-file-name ": old relative compatibility was not used.")))
-
-
-#(if (ly:get-option 'verbose)
-  (begin
-   (gc)
-   (write (gc-stats) (current-error-port))
-   ))
-
diff --git a/ly/italiano.ly b/ly/italiano.ly
deleted file mode 100644
index 418b9491f3..0000000000
--- a/ly/italiano.ly
+++ /dev/null
@@ -1,89 +0,0 @@
-%{
- Common italian names for notes. "b" means flat (bemolle), "d" means sharp (diesis) and "s" means semi- (semi-).
- Adapted from dutch.ly.
-
- English: a   b   c   d   e   f   g
- Italian: la  si  do  re  mi  fa  sol
-
- For french naming just change 'do' in 'ut'.
-%}
-
-% contributed by Paolo Zuliani <<zuliap@easynet.it>>
-% additions for semi-sharps and semi-flats by Eric Wurbel <<wurbel@univ-tln.fr>>
-
-pitchnamesItaliano = #`(
-	(dobb . ,(ly:make-pitch -1 0 DOUBLE-FLAT))
-	(dobsb . ,(ly:make-pitch -1 0 THREE-Q-FLAT))
-	(dob . ,(ly:make-pitch -1 0 FLAT))
-	(dosb . ,(ly:make-pitch -1 0 SEMI-FLAT))
-	(do . ,(ly:make-pitch -1 0 NATURAL))
-	(dosd . ,(ly:make-pitch -1 0 SEMI-SHARP))
-	(dod . ,(ly:make-pitch -1 0 SHARP))
-	(dodsd . ,(ly:make-pitch -1 0 THREE-Q-SHARP))
-	(dodd . ,(ly:make-pitch -1 0 DOUBLE-SHARP))
-
-	(rebb . ,(ly:make-pitch -1 1 DOUBLE-FLAT))
-	(rebsb . ,(ly:make-pitch -1 1 THREE-Q-FLAT))
-	(reb . ,(ly:make-pitch -1 1 FLAT))
-	(resb . ,(ly:make-pitch -1 1 SEMI-FLAT))
-	(re . ,(ly:make-pitch -1 1 NATURAL))
-	(resd . ,(ly:make-pitch -1 1 SEMI-SHARP))
-	(red . ,(ly:make-pitch -1 1 SHARP))
-	(redsd . ,(ly:make-pitch -1 1 THREE-Q-SHARP))
-	(redd . ,(ly:make-pitch -1 1 DOUBLE-SHARP))
-
-	(mibb . ,(ly:make-pitch -1 2 DOUBLE-FLAT))
-	(mibsb . ,(ly:make-pitch -1 2 THREE-Q-FLAT))
-	(mib . ,(ly:make-pitch -1 2 FLAT))
-	(misb . ,(ly:make-pitch -1 2 SEMI-FLAT))
-	(mi . ,(ly:make-pitch -1 2 NATURAL))
-	(misd . ,(ly:make-pitch -1 2 SEMI-SHARP))
-	(mid . ,(ly:make-pitch -1 2 SHARP))
-	(midsd . ,(ly:make-pitch -1 2 THREE-Q-SHARP))
-	(midd . ,(ly:make-pitch -1 2 DOUBLE-SHARP))
-
-	(fabb . ,(ly:make-pitch -1 3 DOUBLE-FLAT))
-	(fabsb . ,(ly:make-pitch -1 3 THREE-Q-FLAT))
-	(fab . ,(ly:make-pitch -1 3 FLAT))
-	(fasb . ,(ly:make-pitch -1 3 SEMI-FLAT))
-	(fa . ,(ly:make-pitch -1 3 NATURAL))
-	(fasd . ,(ly:make-pitch -1 3 SEMI-SHARP))
-	(fad . ,(ly:make-pitch -1 3 SHARP))
-	(fadsd . ,(ly:make-pitch -1 3 THREE-Q-SHARP))
-	(fadd . ,(ly:make-pitch -1 3 DOUBLE-SHARP))
-
-	(solbb . ,(ly:make-pitch -1 4 DOUBLE-FLAT))
-	(solbsb . ,(ly:make-pitch -1 4 THREE-Q-FLAT))
-	(solb . ,(ly:make-pitch -1 4 FLAT))
-	(solsb . ,(ly:make-pitch -1 4 SEMI-FLAT))
-	(sol . ,(ly:make-pitch -1 4 NATURAL))
-	(solsd . ,(ly:make-pitch -1 4 SEMI-SHARP))
-	(sold . ,(ly:make-pitch -1 4 SHARP))
-	(soldsd . ,(ly:make-pitch -1 4 THREE-Q-SHARP))
-	(soldd . ,(ly:make-pitch -1 4 DOUBLE-SHARP))
-
-	(labb . ,(ly:make-pitch -1 5 DOUBLE-FLAT))
-	(labsb . ,(ly:make-pitch -1 5 THREE-Q-FLAT))
-	(lab . ,(ly:make-pitch -1 5 FLAT))
-	(lasb . ,(ly:make-pitch -1 5 SEMI-FLAT))
-	(la . ,(ly:make-pitch -1 5 NATURAL))
-	(lasd . ,(ly:make-pitch -1 5 SEMI-SHARP))
-	(lad . ,(ly:make-pitch -1 5 SHARP))
-	(ladsd . ,(ly:make-pitch -1 5 THREE-Q-SHARP))
-	(ladd . ,(ly:make-pitch -1 5 DOUBLE-SHARP))
-
-	(sibb . ,(ly:make-pitch -1 6 DOUBLE-FLAT))
-	(sibsb . ,(ly:make-pitch -1 6 THREE-Q-FLAT))
-	(sib . ,(ly:make-pitch -1 6 FLAT))
-	(sisb . ,(ly:make-pitch -1 6 SEMI-FLAT))
-	(si . ,(ly:make-pitch -1 6 NATURAL))
-	(sisd . ,(ly:make-pitch -1 6 SEMI-SHARP))
-	(sid . ,(ly:make-pitch -1 6 SHARP))
-	(sidsd . ,(ly:make-pitch -1 6 THREE-Q-SHARP))
-	(sidd . ,(ly:make-pitch -1 6 DOUBLE-SHARP))
-
-)
-
-pitchnames = \pitchnamesItaliano
-
-\version "2.1.19"
diff --git a/ly/legal-init.ly b/ly/legal-init.ly
deleted file mode 100644
index ee113f7cdd..0000000000
--- a/ly/legal-init.ly
+++ /dev/null
@@ -1,5 +0,0 @@
-\version "1.9.8"
-% legal-init.ly
-
-hsize = 8.5 \in
-vsize = 14.0 \in
diff --git a/ly/letter-init.ly b/ly/letter-init.ly
deleted file mode 100644
index 6b2d704997..0000000000
--- a/ly/letter-init.ly
+++ /dev/null
@@ -1,7 +0,0 @@
-\version "1.9.8"
-% letter-init.ly
-
-hsize = 8.5 \in
-vsize = 11.0 \in
-
-
diff --git a/ly/midi-init.ly b/ly/midi-init.ly
deleted file mode 100644
index 31857ef63b..0000000000
--- a/ly/midi-init.ly
+++ /dev/null
@@ -1,6 +0,0 @@
-\version "1.9.8"
-\midi {
-        \tempo 4=60
-	\include "performer-init.ly"
-}
-
diff --git a/ly/nederlands.ly b/ly/nederlands.ly
deleted file mode 100644
index f0e1ad12be..0000000000
--- a/ly/nederlands.ly
+++ /dev/null
@@ -1,84 +0,0 @@
-\version "2.1.19"
-%{
- common dutch names for notes. es means flat, is means sharp
-%}
-
-dutchPitchnames =  #`(
-	(ceses . ,(ly:make-pitch -1 0 DOUBLE-FLAT))
-
-	(ceh . ,(ly:make-pitch -1 0 SEMI-FLAT))
-	(ces . ,(ly:make-pitch -1 0 FLAT))
-	(ceseh . ,(ly:make-pitch -1 0 THREE-Q-FLAT))
-	(c . ,(ly:make-pitch -1 0 NATURAL))
-	(cis . ,(ly:make-pitch -1 0 SHARP))
-	(cih . ,(ly:make-pitch -1 0 SEMI-SHARP))
-	(cisih . ,(ly:make-pitch -1 0 THREE-Q-SHARP))
-	(cisis . ,(ly:make-pitch -1 0 DOUBLE-SHARP))
-	(deses . ,(ly:make-pitch -1 1 DOUBLE-FLAT))
-
-	(deh . ,(ly:make-pitch -1 1 SEMI-FLAT))
-	(des . ,(ly:make-pitch -1 1 FLAT))
-	(deseh . ,(ly:make-pitch -1 1 THREE-Q-FLAT))
-	(d . ,(ly:make-pitch -1 1 NATURAL))
-	(dis . ,(ly:make-pitch -1 1 SHARP))
-	(dih . ,(ly:make-pitch -1 1 SEMI-SHARP))
-	(disih . ,(ly:make-pitch -1 1 THREE-Q-SHARP))
-	(disis . ,(ly:make-pitch -1 1 DOUBLE-SHARP))
-	(eeses . ,(ly:make-pitch -1 2 DOUBLE-FLAT))
-	(eses . ,(ly:make-pitch -1 2 DOUBLE-FLAT))
-
-	(eeh . ,(ly:make-pitch -1 2 SEMI-FLAT))
-	(ees . ,(ly:make-pitch -1 2 FLAT))
-	(eeseh . ,(ly:make-pitch -1 2 THREE-Q-FLAT))
-	(es . ,(ly:make-pitch -1 2 FLAT))
-	(e . ,(ly:make-pitch -1 2 NATURAL))
-	(eis . ,(ly:make-pitch -1 2 SHARP))
-	(eih . ,(ly:make-pitch -1 2 SEMI-SHARP))
-	(eisih . ,(ly:make-pitch -1 2 THREE-Q-SHARP))
-	(eisis . ,(ly:make-pitch -1 2 DOUBLE-SHARP))
-	(feses . ,(ly:make-pitch -1 3 DOUBLE-FLAT))
-
-	(feh . ,(ly:make-pitch -1 3 SEMI-FLAT))
-	(fes . ,(ly:make-pitch -1 3 FLAT))
-	(feseh . ,(ly:make-pitch -1 3 THREE-Q-FLAT))
-	(f . ,(ly:make-pitch -1 3 NATURAL))
-	(fis . ,(ly:make-pitch -1 3 SHARP))
-	(fih . ,(ly:make-pitch -1 3 SEMI-SHARP))
-	(fisih . ,(ly:make-pitch -1 3 THREE-Q-SHARP))
-	(fisis . ,(ly:make-pitch -1 3 DOUBLE-SHARP))
-	(geses . ,(ly:make-pitch -1 4 DOUBLE-FLAT))
-
-	(geh . ,(ly:make-pitch -1 4 SEMI-FLAT))
-	(ges . ,(ly:make-pitch -1 4 FLAT))
-	(geseh . ,(ly:make-pitch -1 4 THREE-Q-FLAT))
-	(g . ,(ly:make-pitch -1 4 NATURAL))
-	(gis . ,(ly:make-pitch -1 4 SHARP))
-	(gih . ,(ly:make-pitch -1 4 SEMI-SHARP))
-	(gisih . ,(ly:make-pitch -1 4 THREE-Q-SHARP))
-	(gisis . ,(ly:make-pitch -1 4 DOUBLE-SHARP))
-	(aeses . ,(ly:make-pitch -1 5 DOUBLE-FLAT))
-	(ases . ,(ly:make-pitch -1 5 DOUBLE-FLAT))
-
-	(aeh . ,(ly:make-pitch -1 5 SEMI-FLAT))
-	(aes . ,(ly:make-pitch -1 5 FLAT))
-	(aeseh . ,(ly:make-pitch -1 5 THREE-Q-FLAT))
-	(as . ,(ly:make-pitch -1 5 FLAT))
-	(a . ,(ly:make-pitch -1 5 NATURAL))
-	(ais . ,(ly:make-pitch -1 5 SHARP))
-	(aih . ,(ly:make-pitch -1 5 SEMI-SHARP))
-	(aisih . ,(ly:make-pitch -1 5 THREE-Q-SHARP))
-	(aisis . ,(ly:make-pitch -1 5 DOUBLE-SHARP))
-	(beses . ,(ly:make-pitch -1 6 DOUBLE-FLAT))
-
-	(beh . ,(ly:make-pitch -1 6 SEMI-FLAT))
-	(bes . ,(ly:make-pitch -1 6 FLAT))
-	(beseh . ,(ly:make-pitch -1 6 THREE-Q-FLAT))
-	(b . ,(ly:make-pitch -1 6 NATURAL))
-	(bis . ,(ly:make-pitch -1 6 SHARP))
-	(bih . ,(ly:make-pitch -1 6 SEMI-SHARP))
-	(bisih . ,(ly:make-pitch -1 6 THREE-Q-SHARP))
-	(bisis . ,(ly:make-pitch -1 6 DOUBLE-SHARP))
-	)
-
-
-pitchnames = \dutchPitchnames 
diff --git a/ly/norsk.ly b/ly/norsk.ly
deleted file mode 100644
index 1f1ec4fdc4..0000000000
--- a/ly/norsk.ly
+++ /dev/null
@@ -1,108 +0,0 @@
-
-% 	Idx norsk.ly,v 1.1 1998/03/25 11:38:28 arvidg Exp arvidg $	
-
-%{
-
- Common norwegian names for notes, including versions without the
- double s-es to save typing, as well as the traditional names with
- them not to confuse musicians.  "es" or "ess" means flat, "is" or
- "iss" means sharp.
-
- Otherwise, the main difference from the dutch names is the that the
- "b" is called "h" in norwegian, while the dutch "bes" is a norwegian
- "b".
-
- Staying within the (proud?) naming convention for norwegian language
- setup used in LaTeX, this file is called "norsk.ly" instead of
- "norwegian.ly", even if all other languages' files use the english
- name.
-
- This file is based on "dutch.ly".  Basically, I copied "dutch.ly",
- duplicated all lines containing at least one "is" or "es", changed
- every other "is" into an "iss" and every other "es" into an "ess",
- added "ass" et al, and made some b->h-related changes.  There may be
- bugs in here please tell me (or send patches) if you find any.
-
-                                  Arvid Gr=F8tting <<arvidg@ifi.uio.no>>
-
-%}
-
-pitchnamesNorsk = #`(
-	(ceses . ,(ly:make-pitch -1 0 DOUBLE-FLAT))
-	(cessess . ,(ly:make-pitch -1 0 DOUBLE-FLAT))
-	(ces . ,(ly:make-pitch -1 0 FLAT))
-	(cess . ,(ly:make-pitch -1 0 FLAT))
-	(c . ,(ly:make-pitch -1 0 NATURAL))
-	(cis . ,(ly:make-pitch -1 0 SHARP))
-	(ciss . ,(ly:make-pitch -1 0 SHARP))
-	(cisis . ,(ly:make-pitch -1 0 DOUBLE-SHARP))
-	(cississ . ,(ly:make-pitch -1 0 DOUBLE-SHARP))
-	(deses . ,(ly:make-pitch -1 1 DOUBLE-FLAT))
-	(dessess . ,(ly:make-pitch -1 1 DOUBLE-FLAT))
-	(des . ,(ly:make-pitch -1 1 FLAT))
-	(dess . ,(ly:make-pitch -1 1 FLAT))
-	(d . ,(ly:make-pitch -1 1 NATURAL))
-	(dis . ,(ly:make-pitch -1 1 SHARP))
-	(diss . ,(ly:make-pitch -1 1 SHARP))
-	(disis . ,(ly:make-pitch -1 1 DOUBLE-SHARP))
-	(dississ . ,(ly:make-pitch -1 1 DOUBLE-SHARP))
-	(eeses . ,(ly:make-pitch -1 2 DOUBLE-FLAT))
-	(eessess . ,(ly:make-pitch -1 2 DOUBLE-FLAT))
-	(eses . ,(ly:make-pitch -1 2 DOUBLE-FLAT))
-	(essess . ,(ly:make-pitch -1 2 DOUBLE-FLAT))
-	(ees . ,(ly:make-pitch -1 2 FLAT))
-	(eess . ,(ly:make-pitch -1 2 FLAT))
-	(es . ,(ly:make-pitch -1 2 FLAT))
-	(ess . ,(ly:make-pitch -1 2 FLAT))
-	(e . ,(ly:make-pitch -1 2 NATURAL))
-	(eis . ,(ly:make-pitch -1 2 SHARP))
-	(eiss . ,(ly:make-pitch -1 2 SHARP))
-	(eisis . ,(ly:make-pitch -1 2 DOUBLE-SHARP))
-	(eississ . ,(ly:make-pitch -1 2 DOUBLE-SHARP))
-	(feses . ,(ly:make-pitch -1 3 DOUBLE-FLAT))
-	(fessess . ,(ly:make-pitch -1 3 DOUBLE-FLAT))
-	(fes . ,(ly:make-pitch -1 3 FLAT))
-	(fess . ,(ly:make-pitch -1 3 FLAT))
-	(f . ,(ly:make-pitch -1 3 NATURAL))
-	(fis . ,(ly:make-pitch -1 3 SHARP))
-	(fiss . ,(ly:make-pitch -1 3 SHARP))
-	(fisis . ,(ly:make-pitch -1 3 DOUBLE-SHARP))
-	(fississ . ,(ly:make-pitch -1 3 DOUBLE-SHARP))
-	(geses . ,(ly:make-pitch -1 4 DOUBLE-FLAT))
-	(gessess . ,(ly:make-pitch -1 4 DOUBLE-FLAT))
-	(ges . ,(ly:make-pitch -1 4 FLAT))
-	(gess . ,(ly:make-pitch -1 4 FLAT))
-	(g . ,(ly:make-pitch -1 4 NATURAL))
-	(g . ,(ly:make-pitch -1 4 NATURAL))
-	(gis . ,(ly:make-pitch -1 4 SHARP))
-	(giss . ,(ly:make-pitch -1 4 SHARP))
-	(gisis . ,(ly:make-pitch -1 4 DOUBLE-SHARP))
-	(gississ . ,(ly:make-pitch -1 4 DOUBLE-SHARP))
-	(aeses . ,(ly:make-pitch -1 5 DOUBLE-FLAT))
-	(aessess . ,(ly:make-pitch -1 5 DOUBLE-FLAT))
-	(ases . ,(ly:make-pitch -1 5 DOUBLE-FLAT))
-	(assess . ,(ly:make-pitch -1 5 DOUBLE-FLAT))
-	(aes . ,(ly:make-pitch -1 5 FLAT))
-	(aess . ,(ly:make-pitch -1 5 FLAT))
-	(as . ,(ly:make-pitch -1 5 FLAT))
-	(ass . ,(ly:make-pitch -1 5 FLAT))
-	(a . ,(ly:make-pitch -1 5 NATURAL))
-	(ais . ,(ly:make-pitch -1 5 SHARP))
-	(aiss . ,(ly:make-pitch -1 5 SHARP))
-	(aisis . ,(ly:make-pitch -1 5 DOUBLE-SHARP))
-	(aississ . ,(ly:make-pitch -1 5 DOUBLE-SHARP))
-	(bes . ,(ly:make-pitch -1 6 DOUBLE-FLAT))
-	(bess . ,(ly:make-pitch -1 6 DOUBLE-FLAT))
-	(b . ,(ly:make-pitch -1 6 FLAT))
-	(b . ,(ly:make-pitch -1 6 FLAT))
-	(h . ,(ly:make-pitch -1 6 NATURAL))
-	(his . ,(ly:make-pitch -1 6 SHARP))
-	(hiss . ,(ly:make-pitch -1 6 SHARP))
-	(hisis . ,(ly:make-pitch -1 6 DOUBLE-SHARP))
-	(hississ . ,(ly:make-pitch -1 6 DOUBLE-SHARP))
-)
-
-
-pitchnames =\pitchnamesNorsk
-
-\version "2.1.19"
diff --git a/ly/params-init.ly b/ly/params-init.ly
deleted file mode 100644
index d8dd41d556..0000000000
--- a/ly/params-init.ly
+++ /dev/null
@@ -1,2 +0,0 @@
-\version "2.1.1"
-
diff --git a/ly/part-paper-init.ly b/ly/part-paper-init.ly
deleted file mode 100644
index 0ecdebdfe5..0000000000
--- a/ly/part-paper-init.ly
+++ /dev/null
@@ -1,10 +0,0 @@
-\version "1.9.8"
-
-% JUNKME
-%part-paper-init.ly
-
-\paper {
-	\translator { \OrchestralPartStaffContext }
-	\translator { \ScoreContext skipBars = ##t }
-}
-
diff --git a/ly/performer-init.ly b/ly/performer-init.ly
deleted file mode 100644
index 279f1e0861..0000000000
--- a/ly/performer-init.ly
+++ /dev/null
@@ -1,153 +0,0 @@
-\version "2.1.21"
-
-				%
-				% setup for Request->Element conversion. Guru-only
-				%
-\translator {
-    \type "Staff_performer"
-    \name Staff
-    \accepts Voice
-
-    \consists "Key_performer"
-    \consists "Tempo_performer"
-    \consists "Time_signature_performer"
-
-}
-\translator {
-    \StaffContext
-    \name DrumStaff
-    midiInstrument = #"drums"
-    \accepts DrumVoice
-}
-
-\translator {
-    \type "Performer_group_performer"
-    \name Voice
-    \consists "Dynamic_performer"
-    \consists "Span_dynamic_performer"
-    \consists "Tie_performer"
-    \consists "Piano_pedal_performer"
-}
-
-\translator {
-    \VoiceContext
-    \remove "Note_performer"
-    \consists "Drum_note_performer" 
-    \name DrumVoice
-}
-
-\translator {
-    \type "Performer_group_performer"
-    \name Voice
-    \consists "Note_performer"
-    \consists "Beam_performer"
-    \consists "Slur_performer"
-    \consists "Melisma_performer"
-}
-
-\translator {
-    \type "Performer_group_performer"
-    \name FiguredBass 
-    \consists "Swallow_performer"
-}
-
-\translator {
-    \type "Performer_group_performer"
-    \name GrandStaff
-    \accepts RhythmicStaff
-    \accepts Staff
-}
-
-\translator {
-    \type "Performer_group_performer"
-    \name "PianoStaff"
-    \accepts Staff
-    \accepts DrumStaff
-}
-
-\translator {
-    \type "Performer_group_performer"
-    \name "TabVoice"
-    \consists "Swallow_performer"
-}
-
-\translator {
-    \type "Performer_group_performer"
-    \name "Devnull"
-    \consists "Swallow_performer"
-}
-\translator {
-    \type "Performer_group_performer"
-    \name "TabStaff"
-    \accepts "TabVoice"
-}
-
-\translator {
-    \type "Score_performer"
-
-    \name Score
-    \alias Timing
-    melismaBusyProperties = #default-melisma-properties
-    instrument = #"bright acoustic"
-    \accepts Staff
-    \accepts DrumStaff
-    \accepts GrandStaff
-    \accepts PianoStaff
-    \accepts TabStaff
-    \accepts Staff
-    \accepts StaffGroup
-    \accepts Devnull
-    \accepts ChoirStaff
-    \accepts RhythmicStaff
-    \accepts ChordNames
-    \accepts FiguredBass
-    \accepts Lyrics
-    \alias "Timing"
-    \consists "Timing_translator"
-    \consists "Swallow_performer"
-    
-    dynamicAbsoluteVolumeFunction = #default-dynamic-absolute-volume
-    instrumentEqualizer = #default-instrument-equalizer
-    drumPitchTable = #(alist->hash-table midiDrumPitches) 
-}
-
-
-\translator {
-    \type "Staff_performer" % Performer_group_performer ?
-    \consists "Lyric_performer"
-    \name Lyrics
-    \consists "Time_signature_performer"
-    \consists "Tempo_performer"
-}
-
-\translator{
-    \type "Performer_group_performer"
-    \name ChoirStaff
-    \accepts Staff
-    \accepts DrumStaff
-}
-
-
-\translator {
-    \type "Staff_performer"
-    \accepts ChordNameVoice
-    \name ChordNames
-}
-
-\translator {
-    \type "Performer_group_performer"
-    \consists "Note_performer"
-    \name ChordNameVoice	
-}
-
-\translator {
-    \type "Performer_group_performer"
-
-    \name StaffGroup
-    \accepts Staff
-    \accepts DrumStaff
-}
-
-\translator { \StaffContext \name RhythmicStaff }
-
-
diff --git a/ly/property-init.ly b/ly/property-init.ly
deleted file mode 100644
index 51fbb8bc44..0000000000
--- a/ly/property-init.ly
+++ /dev/null
@@ -1,265 +0,0 @@
-% property-init.ly
-
-\version "2.1.21"
-
-stemUp = \property Voice.Stem \set #'direction = #1
-stemDown = \property Voice.Stem \set #'direction = #-1 
-stemBoth= \property Voice.Stem \revert #'direction
-
-slurUp   = \property Voice.Slur \set #'direction = #1
-slurDown = \property Voice.Slur \set #'direction = #-1
-slurBoth = \property Voice.Slur \revert #'direction 
-
-% There's also dash, but setting dash period/length should be fixed.
-slurDotted = \property Voice.Slur \set #'dashed = #1
-slurSolid = \property Voice.Slur \revert #'dashed
-
-
-phrasingSlurUp   = \property Voice.PhrasingSlur \set #'direction = #1
-phrasingSlurDown = \property Voice.PhrasingSlur \set #'direction = #-1
-phrasingSlurBoth = \property Voice.PhrasingSlur \revert #'direction 
-
-shiftOn  = \property Voice.NoteColumn \set #'horizontal-shift = #1
-shiftOnn  = \property Voice.NoteColumn \set #'horizontal-shift = #2
-shiftOnnn  = \property Voice.NoteColumn \set #'horizontal-shift = #3
-shiftOff  = \property Voice.NoteColumn \revert #'horizontal-shift 
-
-tieUp = \property Voice.Tie \set #'direction = #1
-tieDown = \property Voice.Tie \set #'direction = #-1
-tieBoth = \property Voice.Tie \revert #'direction 
-
-tieDotted = \property Voice.Tie \set #'dashed = #1
-tieSolid = \property Voice.Tie \revert #'dashed
-
-
-dynamicUp  = {
-  \property Voice.DynamicText \set #'direction = #1
-  \property Voice.DynamicLineSpanner \set #'direction = #1
-}
-dynamicDown = {
-  \property Voice.DynamicText \set #'direction = #-1
-  \property Voice.DynamicLineSpanner \set #'direction = #-1
-}
-dynamicBoth = {
-  \property Voice.DynamicText \revert #'direction
-  \property Voice.DynamicLineSpanner \revert #'direction
-}
-
-scriptUp  = {
-  \property Voice.TextScript \set #'direction = #1
-  \property Voice.Script \set #'direction = #1
-}
-scriptDown = {
-  \property Voice.TextScript \set #'direction = #-1
-  \property Voice.Script \set #'direction = #-1
-}
-scriptBoth = {
-  \property Voice.TextScript \revert #'direction
-  \property Voice.Script \revert #'direction
-}
-
-dotsUp = \property Voice.Dots \set #'direction = #1
-dotsDown = \property Voice.Dots \set #'direction = #-1
-dotsBoth = \property Voice.Dots \revert #'direction 
-
-tupletUp  =   \property Voice.TupletBracket \set #'direction = #1
-tupletDown =   \property Voice.TupletBracket \set #'direction = #-1
-tupletBoth =   \property Voice.TupletBracket \revert #'direction
-
-cadenzaOn = \property Timing.timing = ##f
-cadenzaOff = {
-  \property Timing.timing = ##t
-  \property Timing.measurePosition = #(ly:make-moment 0 1)
-}
-
-newpage = \notes
-{
-  \break
-  % urg, only works for TeX output
-  \context Score \applyoutput
-  #(outputproperty-compatibility (make-type-checker 'paper-column-interface)
-    'between-system-string "\\newpage")
-}
-
-% dynamic ly:dir?  text script, articulation script ly:dir?	
-oneVoice = #(context-spec-music (make-voice-props-revert) 'Voice)
-voiceOne = #(context-spec-music (make-voice-props-set 0) 'Voice)
-voiceTwo = #(context-spec-music (make-voice-props-set 1) 'Voice)
-voiceThree =#(context-spec-music (make-voice-props-set 2) 'Voice)
-voiceFour = #(context-spec-music (make-voice-props-set 3) 'Voice)
-
-	
-tiny  = 
-	\property Voice.fontSize= #-2
-
-small  = 
-	\property Voice.fontSize= #-1
-
-normalsize = {
-	\property Voice.fontSize= #0
-}
-
-
-% End the incipit and print a ``normal line start''.
-endincipit = \notes \context Staff {
-    \partial 16 s16  % Hack to handle e.g. \bar ".|" \endincipit
-    \once \property Staff.Clef \set #'full-size-change = ##t
-    \once \property Staff.Clef \set #'non-default = ##t
-    \bar ""
-}
-
-autoBeamOff = \property Voice.autoBeaming = ##f
-autoBeamOn = \property Voice.autoBeaming = ##t
-
-fatText = \property Voice.TextScript \set #'no-spacing-rods = ##f
-emptyText = \property Voice.TextScript \set #'no-spacing-rods  = ##t
-
-showStaffSwitch = \property Voice.followVoice = ##t
-hideStaffSwitch = \property Voice.followVoice = ##f
-
-% accidentals as they were common in the 18th century.
-defaultAccidentals = {
-  \property Current.extraNatural = ##t
-  \property Current.autoAccidentals = #'(Staff (same-octave . 0))
-  \property Current.autoCautionaries = #'()
-}
-
-% accidentals in voices instead of staves.
-% Notice that accidentals from one voice do NOT get cancelled in other voices
-voiceAccidentals = {
-  \property Current.extraNatural = ##t
-  \property Current.autoAccidentals = #'(Voice (same-octave . 0))
-  \property Current.autoCautionaries = #'()
-  
-}
-
-% accidentals as suggested by Kurt Stone, Music Notation in the 20th century.
-% This includes all the default accidentals, but accidentals also needs cancelling
-% in other octaves and in the next measure.
-modernAccidentals = {
-  \property Current.extraNatural = ##f
-  \property Current.autoAccidentals = #'(Staff (same-octave . 0) (any-octave . 0) (same-octave . 1))
-  \property Current.autoCautionaries = #'()  
-}
-
-% the accidentals that Stone adds to the old standard as cautionaries
-modernCautionaries = {
-  \property Current.extraNatural = ##f
-  \property Current.autoAccidentals = #'(Staff (same-octave . 0))
-  \property Current.autoCautionaries = #'(Staff (any-octave . 0) (same-octave . 1))  
-}
-
-% Multivoice accidentals to be read both by musicians playing one voice
-% and musicians playing all voices.
-% Accidentals are typeset for each voice, but they ARE cancelled across voices.
-modernVoiceAccidentals = {
-  \property Current.extraNatural = ##f
-  \property Current.autoAccidentals = #'(
-    Voice (same-octave . 0) (any-octave . 0) (same-octave . 1)
-    Staff (same-octave . 0) (any-octave . 0) (same-octave . 1)
-  )
-  \property Current.autoCautionaries = #'()  
-}
-
-% same as modernVoiceAccidental eccept that all special accidentals are typeset
-% as cautionaries
-modernVoiceCautionaries = {
-  \property Current.extraNatural = ##f
-  \property Current.autoAccidentals = #'(
-    Voice (same-octave . 0) 
-  )
-  \property Current.autoCautionaries = #'(
-    Voice (any-octave . 0) (same-octave . 1)
-    Staff (same-octave . 0) (any-octave . 0) (same-octave . 1)
-  )  
-}
-
-% stone's suggestions for accidentals on grand staff.
-% Accidentals are cancelled across the staves in the same grand staff as well
-pianoAccidentals = {
-  \property Current.autoAccidentals = #'(
-    Staff (same-octave . 0) (any-octave . 0) (same-octave . 1)
-    GrandStaff (any-octave . 0) (same-octave . 1)
-  )
-  \property Current.autoCautionaries = #'()  
-}
-
-pianoCautionaries = {
-  \property Current.autoAccidentals = #'(
-    Staff (same-octave . 0)
-  )
-  \property Current.autoCautionaries = #'(
-    Staff (any-octave . 0) (same-octave . 1)
-    GrandStaff (any-octave . 0) (same-octave . 1)
-  )  
-}
-
-
-% Do not reset the key at the start of a measure.  Accidentals will be
-% printed only once and are in effect until overridden, possibly many
-% measures later.
-noResetKey = {
-  \property Current.autoAccidentals = #'(Staff (same-octave . #t))
-  \property Current.autoCautionaries = #'()
-}
-
-% do not set localKeySignature when a note alterated differently from
-% localKeySignature is found.
-% Causes accidentals to be printed at every note instead of
-% remembered for the duration of a measure.
-% accidentals not being remembered, causing accidentals always to be typeset relative to the time signature
-forgetAccidentals = {
-  \property Current.autoAccidentals = #'(Staff (same-octave . -1))
-  \property Current.autoCautionaries = #'()  
-}
-
-
-% To remove a Volta bracket or some other graphical object,
-% set it to turnOff. Example: \property Staff.VoltaBracket = \turnOff
-
-%%
-%% DO NOT USE THIS. IT CAN LEAD TO CRASHES.
-turnOff = #(cons '() '())
-
-% For drawing vertical chord brackets with \arpeggio
-% This is a shorthand for the value of the print-function property 
-% of either Staff.Arpeggio or PianoStaff.Arpeggio, depending whether 
-% cross-staff brackets are desired. 
-
-arpeggioBracket = #Arpeggio::brew_chord_bracket
-arpeggio = #(make-music-by-name 'ArpeggioEvent)
-glissando = #(make-music-by-name 'GlissandoEvent)
-
-fermataMarkup = \markup { \musicglyph #"scripts-ufermata" } 
-
-setMmRestFermata =
-  \once \property Voice.MultiMeasureRestNumber \override #'text =
-    #fermataMarkup 
-
-
-hideNotes =\sequential {
-				% hide notes, accidentals, etc.
-    \property Voice.Dots \override #'transparent = ##t
-    \property Voice.NoteHead \override #'transparent = ##t
-    \property Voice.Stem \override #'transparent = ##t
-    \property Voice.Beam \override #'transparent = ##t
-    \property Staff.Accidental \override #'transparent = ##t
-}
-
-
-unHideNotes =  \sequential {
-  \property Staff.Accidental \revert #'transparent
-  \property Voice.Beam \revert #'transparent
-  \property Voice.Stem \revert #'transparent
-  \property Voice.NoteHead \revert #'transparent
-  \property Voice.Dots \revert #'transparent 
-}
-
-germanChords = {
-    \property ChordNames. chordRootNamer = #(chord-name->german-markup #t)
-    \property ChordNames. chordNoteNamer = #note-name->german-markup
-}
-semiGermanChords = {
-    \property ChordNames. chordRootNamer = #(chord-name->german-markup #f)
-    \property ChordNames. chordNoteNamer = #note-name->german-markup
-}
diff --git a/ly/scale-definitions-init.ly b/ly/scale-definitions-init.ly
deleted file mode 100644
index c32b0e2db1..0000000000
--- a/ly/scale-definitions-init.ly
+++ /dev/null
@@ -1,100 +0,0 @@
-\version "1.9.8"
-
-
-major = #`(
-    (0 . 0)
-    (1 . 0)
-    (2 . 0)
-    (3 . 0)
-    (4 . 0)
-    (5 . 0)
-    (6 . 0)
-  )
-
-minor = #`(
-    (0 . 0)
-    (1 . 0)
-    (2 . ,FLAT)
-    (3 . 0)
-    (4 . 0)
-    (5 . ,FLAT)
-    (6 . ,FLAT)
-    )
-
-
-ionian = #`(
-    (0 . 0)
-    (1 . 0)
-    (2 . 0)
-    (3 . 0)
-    (4 . 0)
-    (5 . 0)
-    (6 . 0)
-  )  
-
-
-locrian = #`(
-    (0 . 0)
-    (1 . ,FLAT)
-    (2 . ,FLAT)
-    (3 . 0)
-    (4 . ,FLAT)
-    (5 . ,FLAT)
-    (6 . ,FLAT)
-  )  
-
-
-aeolian = #`(
-    (0 . 0)
-    (1 . 0)
-    (2 . ,FLAT)
-    (3 . 0)
-    (4 . 0)
-    (5 . ,FLAT)
-    (6 . ,FLAT)
-    )
-
-
-mixolydian = #`(
-    (0 . 0)
-    (1 . 0)
-    (2 . 0)
-    (3 . 0)
-    (4 . 0)
-    (5 . 0)
-    (6 . ,FLAT)
-  )  
-
-
-lydian = #`(
-    (0 . 0)
-    (1 . 0)
-    (2 . 0)
-    (3 . ,SHARP)
-    (4 . 0)
-    (5 . 0)
-    (6 . 0)
-  )  
-
-
-phrygian = #`(
-    (0 . 0)
-    (1 . ,FLAT)
-    (2 . ,FLAT)
-    (3 . 0)
-    (4 . 0)
-    (5 . ,FLAT)
-    (6 . ,FLAT)
-)  
-
-
-dorian = #`(
-    (0 . 0)
-    (1 . 0)
-    (2 . ,FLAT)
-    (3 . 0)
-    (4 . 0)
-    (5 . 0)
-    (6 . ,FLAT)
-  )
-
diff --git a/ly/script-init.ly b/ly/script-init.ly
deleted file mode 100644
index 35fd6e86ee..0000000000
--- a/ly/script-init.ly
+++ /dev/null
@@ -1,51 +0,0 @@
-\version "1.9.8"
-
-
-dashHat= "marcato"
-dashPlus= "stopped"
-dashDash= "tenuto"
-dashBar= "staccatissimo"
-dashLarger= "accent"
-dashDot= "staccato"
-dashUnderscore = "portato"
-
-harmonic = #(make-music-by-name 'HarmonicEvent)
-
-thumb = #(make-articulation "thumb")
-accent = #(make-articulation "accent")
-marcato = #(make-articulation "marcato")
-staccatissimo = #(make-articulation "staccatissimo")
-portato = #(make-articulation "portato")
-signumcongruentiae = #(make-articulation "signumcongruentiae")
-fermata = #(make-articulation "fermata")
-shortfermata = #(make-articulation "shortfermata")
-longfermata = #(make-articulation "longfermata")
-verylongfermata = #(make-articulation "verylongfermata")
-stopped = #(make-articulation "stopped")
-staccato = #(make-articulation "staccato")
-tenuto = #(make-articulation "tenuto")
-upbow = #(make-articulation "upbow")
-downbow = #(make-articulation "downbow")
-lheel = #(make-articulation "lheel")
-rheel = #(make-articulation "rheel")
-ltoe = #(make-articulation "ltoe")
-rtoe = #(make-articulation "rtoe")
-turn = #(make-articulation "turn")
-open = #(make-articulation "open")
-flageolet = #(make-articulation "flageolet")
-reverseturn = #(make-articulation "reverseturn")
-trill = #(make-articulation "trill")
-prall = #(make-articulation "prall")
-mordent = #(make-articulation "mordent")
-upmordent = #(make-articulation "upmordent")
-downmordent = #(make-articulation "downmordent")
-prallprall = #(make-articulation "prallprall")
-prallup = #(make-articulation "prallup")
-pralldown = #(make-articulation "pralldown")
-lineprall = #(make-articulation "lineprall")
-prallmordent = #(make-articulation "prallmordent")
-upprall = #(make-articulation "upprall")
-downprall = #(make-articulation "downprall")
-segno = #(make-articulation "segno")
-coda = #(make-articulation "coda")
-varcoda = #(make-articulation "varcoda")
diff --git a/ly/spanners-init.ly b/ly/spanners-init.ly
deleted file mode 100644
index 5d655b730c..0000000000
--- a/ly/spanners-init.ly
+++ /dev/null
@@ -1,65 +0,0 @@
-\version "1.9.8"
-
-startGroup = #(make-span-event 'NoteGroupingEvent START)
-stopGroup = #(make-span-event 'NoteGroupingEvent STOP)
-
-
-cr = #(make-span-event 'CrescendoEvent START)
-decr = #(make-span-event 'DecrescendoEvent START)
-enddecr = #(make-span-event 'DecrescendoEvent STOP)
-endcr = #(make-span-event 'CrescendoEvent STOP) 
-
-%% TODO: remove for 2.0
-rc = \endcr
-rced = \enddecr
-
-startTextSpan = #(make-span-event 'TextSpanEvent START)
-stopTextSpan = #(make-span-event 'TextSpanEvent STOP)
-
-cresc = \notes {
-  #(ly:export (make-event-chord (list cr)))
-  \property Voice.crescendoText = \markup { \italic "cresc." }
-  \property Voice.crescendoSpanner = #'dashed-line
-}
-
-% ah, this is handy: maybe drop resetting of properties in
-% dynamic-engraver ?
-endcresc = \notes {
-  #(ly:export (make-event-chord (list rc)))
-  \property Voice.crescendoText \unset
-  \property Voice.crescendoSpanner \unset
-}
-
-dim = \notes {
-  #(ly:export (make-event-chord (list decr)))
-
-  \property Voice.decrescendoText = \markup { \italic "dim." }
-  \property Voice.decrescendoSpanner = #'dashed-line
-}
-
-enddim = \notes {
-  #(ly:export (make-event-chord (list rced)))
-   \property Voice.decrescendoText \unset
- \property Voice.decrescendoSpanner \unset
-}
-
-%{
-
-cresc = \spanevent \start "crescendo"
-endcresc = \spanevent \stop "crescendo"
-
-%}
-
-% better name sustainstart/stop? 
-sustainUp = #(make-span-event 'SustainEvent STOP)
-sustainDown = #(make-span-event 'SustainEvent START)
-
-unaCorda = #(make-span-event 'UnaCordaEvent START)
-treCorde = #(make-span-event 'UnaCordaEvent STOP)
-
-sostenutoDown = #(make-span-event 'SostenutoEvent START)
-sostenutoUp = #(make-span-event 'SostenutoEvent STOP)
-
-%crescpoco = \property Voice.crescendoText = "cresc. poco a poco"
-%decresc = \property Voice.crescendoText = "decr."
-%dim = \property Voice.crescendoText = "dim."
diff --git a/ly/suomi.ly b/ly/suomi.ly
deleted file mode 100644
index 1a82687171..0000000000
--- a/ly/suomi.ly
+++ /dev/null
@@ -1,51 +0,0 @@
-% common finnish names for notes. "es" means flat, "is" means sharp
-%
-% by Heikki Junes <<heikki.junes@hut.fi>>
-% based on svenska.ly by Mats Bengtsson.
-
-% 2001/08/28 Heikki Junes <<heikki.junes@hut.fi>>
-%            added bb and marked heses as `unusual'
-
-pitchnamesSuomi = #`(
-	(ceses . ,(ly:make-pitch -1 0 DOUBLE-FLAT))
-	(ces . ,(ly:make-pitch -1 0 FLAT))
-	(c . ,(ly:make-pitch -1 0 NATURAL))
-	(cis . ,(ly:make-pitch -1 0 SHARP))
-	(cisis . ,(ly:make-pitch -1 0 DOUBLE-SHARP))
-	(deses . ,(ly:make-pitch -1 1 DOUBLE-FLAT))
-	(des . ,(ly:make-pitch -1 1 FLAT))
-	(d . ,(ly:make-pitch -1 1 NATURAL))
-	(dis . ,(ly:make-pitch -1 1 SHARP))
-	(disis . ,(ly:make-pitch -1 1 DOUBLE-SHARP))
-	(eses . ,(ly:make-pitch -1 2 DOUBLE-FLAT))
-	(es . ,(ly:make-pitch -1 2 FLAT))
-	(e . ,(ly:make-pitch -1 2 NATURAL))
-	(eis . ,(ly:make-pitch -1 2 SHARP))
-	(eisis . ,(ly:make-pitch -1 2 DOUBLE-SHARP))
-	(feses . ,(ly:make-pitch -1 3 DOUBLE-FLAT))
-	(fes . ,(ly:make-pitch -1 3 FLAT))
-	(f . ,(ly:make-pitch -1 3 NATURAL))
-	(fis . ,(ly:make-pitch -1 3 SHARP))
-	(fisis . ,(ly:make-pitch -1 3 DOUBLE-SHARP))
-	(geses . ,(ly:make-pitch -1 4 DOUBLE-FLAT))
-	(ges . ,(ly:make-pitch -1 4 FLAT))
-	(g . ,(ly:make-pitch -1 4 NATURAL))
-	(gis . ,(ly:make-pitch -1 4 SHARP))
-	(gisis . ,(ly:make-pitch -1 4 DOUBLE-SHARP))
-	(asas . ,(ly:make-pitch -1 5 DOUBLE-FLAT))
-	(ases . ,(ly:make-pitch -1 5 DOUBLE-FLAT))   ;;non-standard name for asas
-	(as . ,(ly:make-pitch -1 5 FLAT))
-	(a . ,(ly:make-pitch -1 5 NATURAL))
-	(ais . ,(ly:make-pitch -1 5 SHARP))
-	(aisis . ,(ly:make-pitch -1 5 DOUBLE-SHARP))
-	(bb . ,(ly:make-pitch -1 6 DOUBLE-FLAT))
-	(heses . ,(ly:make-pitch -1 6 DOUBLE-FLAT))  ;;non-standard name for bb
-	(b . ,(ly:make-pitch -1 6 FLAT))
-	(h . ,(ly:make-pitch -1 6 NATURAL))
-	(his . ,(ly:make-pitch -1 6 SHARP))
-	(hisis . ,(ly:make-pitch -1 6 DOUBLE-SHARP))
-)
-
-pitchnames = \pitchnamesSuomi
-
-\version "2.1.19"
diff --git a/ly/svenska.ly b/ly/svenska.ly
deleted file mode 100644
index d81d7f1467..0000000000
--- a/ly/svenska.ly
+++ /dev/null
@@ -1,45 +0,0 @@
-%
-% common Swedish names for notes. "ess" means flat, "iss" means sharp
-%
-% by Mats Bengtsson.
-
-pitchnamesSvenska = #`(
-	(cessess . ,(ly:make-pitch -1 0 DOUBLE-FLAT))
-	(cess . ,(ly:make-pitch -1 0 FLAT))
-	(c . ,(ly:make-pitch -1 0 NATURAL))
-	(ciss . ,(ly:make-pitch -1 0 SHARP))
-	(cississ . ,(ly:make-pitch -1 0 DOUBLE-SHARP))
-	(dessess . ,(ly:make-pitch -1 1 DOUBLE-FLAT))
-	(dess . ,(ly:make-pitch -1 1 FLAT))
-	(d . ,(ly:make-pitch -1 1 NATURAL))
-	(diss . ,(ly:make-pitch -1 1 SHARP))
-	(dississ . ,(ly:make-pitch -1 1 DOUBLE-SHARP))
-	(essess . ,(ly:make-pitch -1 2 DOUBLE-FLAT))
-	(ess . ,(ly:make-pitch -1 2 FLAT))
-	(e . ,(ly:make-pitch -1 2 NATURAL))
-	(eiss . ,(ly:make-pitch -1 2 SHARP))
-	(eississ . ,(ly:make-pitch -1 2 DOUBLE-SHARP))
-	(fessess . ,(ly:make-pitch -1 3 DOUBLE-FLAT))
-	(fess . ,(ly:make-pitch -1 3 FLAT))
-	(f . ,(ly:make-pitch -1 3 NATURAL))
-	(fiss . ,(ly:make-pitch -1 3 SHARP))
-	(fississ . ,(ly:make-pitch -1 3 DOUBLE-SHARP))
-	(gessess . ,(ly:make-pitch -1 4 DOUBLE-FLAT))
-	(gess . ,(ly:make-pitch -1 4 FLAT))
-	(g . ,(ly:make-pitch -1 4 NATURAL))
-	(giss . ,(ly:make-pitch -1 4 SHARP))
-	(gississ . ,(ly:make-pitch -1 4 DOUBLE-SHARP))
-	(assess . ,(ly:make-pitch -1 5 DOUBLE-FLAT))
-	(ass . ,(ly:make-pitch -1 5 FLAT))
-	(a . ,(ly:make-pitch -1 5 NATURAL))
-	(aiss . ,(ly:make-pitch -1 5 SHARP))
-	(aississ . ,(ly:make-pitch -1 5 DOUBLE-SHARP))
-	(hessess . ,(ly:make-pitch -1 6 DOUBLE-FLAT))
-	(b . ,(ly:make-pitch -1 6 FLAT))
-	(h . ,(ly:make-pitch -1 6 NATURAL))
-	(hiss . ,(ly:make-pitch -1 6 SHARP))
-	(hississ . ,(ly:make-pitch -1 6 DOUBLE-SHARP))
-)
-
-pitchnames =  \pitchnamesSvenska
-\version "2.1.19"
diff --git a/ly/tabloid-init.ly b/ly/tabloid-init.ly
deleted file mode 100644
index 41f0e88bc3..0000000000
--- a/ly/tabloid-init.ly
+++ /dev/null
@@ -1,8 +0,0 @@
-\version "1.9.8"
-
-% tabloid-init.ly
-
-hsize = 11.0 \in
-vsize = 17.0 \in
-
-
diff --git a/make/GNUmakefile b/make/GNUmakefile
deleted file mode 100644
index 323589032f..0000000000
--- a/make/GNUmakefile
+++ /dev/null
@@ -1,10 +0,0 @@
-depth = ..
-
-STEPMAKE_TEMPLATES=makedir install
-INSTALLATION_DIR=$(local_lilypond_datadir)/make
-INSTALLATION_FILES=$(DIST_FILES)
-
-include $(depth)/make/stepmake.make 
-
-default: spec
-
diff --git a/make/generic-rules.make b/make/generic-rules.make
deleted file mode 100644
index b41e4846f0..0000000000
--- a/make/generic-rules.make
+++ /dev/null
@@ -1,17 +0,0 @@
-# title	   package specific rules
-# file	   make/Rules.make
-
-# urg
-$(outdir)/%.ly: %.lym4
-	$(M4) $< | sed "s/\`/,/g" > $@
-
-$(outdir)/%: %.in
-	rm -f $@
-	cat $< | sed $(sed-atfiles) $(sed-atvariables) > $@
-
-
-
-include $(depth)/make/substitute.make
-
-
-
diff --git a/make/generic-targets.make b/make/generic-targets.make
deleted file mode 100644
index 7f4a380a20..0000000000
--- a/make/generic-targets.make
+++ /dev/null
@@ -1,2 +0,0 @@
-# title	   package specific targets
-# file	   make/Targets.make
diff --git a/make/generic-vars.make b/make/generic-vars.make
deleted file mode 100644
index a1c15f8b0d..0000000000
--- a/make/generic-vars.make
+++ /dev/null
@@ -1,43 +0,0 @@
-# title	   package specific variables
-# file	   make/Variables.make
-#
-# do not change this file for site-wide extensions; please use 
-# make/$(outdir)/Site.make; 
-#
-# Any change in files in this directory (make/) would be distributed, if 
-# you do make dist 
-#
-
-buildscript-dir = $(src-depth)/buildscripts
-script-dir = $(src-depth)/scripts
-input-dir = $(src-depth)/input
-
-
-flower-dir = $(src-depth)/flower
-lily-dir = $(src-depth)/lily
-mi2mu-dir = $(src-depth)/mi2mu
-make-dir = $(src-depth)/make
-include-flower = $(src-depth)/flower/include
-
-
-LILYPOND_INCLUDES = $(include-flower) $(depth)/flower/$(outdir) 
-
-
-# should use to create .spec ?
-
-# installed by 'make installextradoc'
-EXTRA_DOC_FILES = \
-  ANNOUNCEMENT ANNOUNCE-0.1 AUTHORS.txt  COPYING DEDICATION INSTALL.txt NEWS PATCHES.txt README.txt TODO \
-  Documentation/out/*.txt\
-  Documentation/tex/*.doc\
-  Documentation/tex/*.bib\
-  Documentation/pictures/out/lelie_logo.gif\
-  input\
-
-INSTALLED_EXTRA_DOC_FILES = $(addprefix $(prefix:/%=%)/doc/lilypond/, $(EXTRA_DOC_FILES))
-
-
-INSTALLED_DIST_FILES = $(addprefix $(prefix:/%=%)/, $(INSTALL_DIST_FILES))
-
-
-
diff --git a/make/lilypond-rules.make b/make/lilypond-rules.make
deleted file mode 100644
index ea30561d83..0000000000
--- a/make/lilypond-rules.make
+++ /dev/null
@@ -1 +0,0 @@
-#empty
diff --git a/make/lilypond-targets.make b/make/lilypond-targets.make
deleted file mode 100644
index a894b28fb0..0000000000
--- a/make/lilypond-targets.make
+++ /dev/null
@@ -1,6 +0,0 @@
-#empty
-
-
-## TODO: fail dist or web if no \version present. 
-check-version:
-	grep -L version $(LY_FILES) 
diff --git a/make/lilypond-vars.make b/make/lilypond-vars.make
deleted file mode 100644
index 0b8613180d..0000000000
--- a/make/lilypond-vars.make
+++ /dev/null
@@ -1,45 +0,0 @@
-##
-## settings to run LilyPond
-
-
-export PATH:=$(builddir)/lily/$(outconfbase):$(builddir)/buildscripts/$(outconfbase):$(PATH)
-
-# LilyPond is often run from within $(outdir), making a relative
-# PREFIX incorrect.
-export LILYPONDPREFIX:=$(build_lilypond_datadir)
-
-export PYTHONPATH:=$(builddir)/python/$(outconfbase):$(PYTHONPATH)
-
-## arg, TEXINPUTS, TFMFONTS, MFINPUTS may still override and thus break this
-export TEXMF:={$(LILYPONDPREFIX),$(shell kpsexpand \$$TEXMF)}
-
-export MFINPUTS:=
-export TEXINPUTS:=
-export TFMFONTS:=
-export extra_mem_top=1000000
-export extra_mem_bottom=1000000
-export pool_size=500000
-
-
-ifdef DEB_BUILD
-export PKFONTS := $(topdir)/mf/out
-export MT_DESTROOT := $(topdir)/mf/out
-export DVIPSMAKEPK := mktexpk --destdir $(topdir)/mf/out
-endif
-
-
-# guile load path?
-
-the-script-dir=$(wildcard $(script-dir))
-
-
-ABC2LY = $(script-dir)/abc2ly.py
-CONVERT_LY = $(script-dir)/convert-ly.py
-LILYPOND = $(builddir)/lily/$(outconfbase)/lilypond
-LILYPOND_BOOK = $(script-dir)/lilypond-book.py
-LILYPOND_BOOK_INCLUDES = -I $(pwd) -I $(outdir) -I$(input-dir) -I $(input-dir)/tricks/ -I $(input-dir)/regression/ -I $(input-dir)/test/ -I $(input-dir)/tutorial/ -I $(builddir)/mf/$(outconfbase)/  -I $(builddir)/mf/out/
-
-#texi-html for www only:
-LILYPOND_BOOK_FORMAT=$(if $(subst out-www,,$(notdir $(outdir))),texi,texi-html)
-LY2DVI = $(script-dir)/lilypond.py
-LYS_TO_TELY = $(buildscript-dir)/lys-to-tely.py
diff --git a/make/lilypond.mandrake.spec.in b/make/lilypond.mandrake.spec.in
deleted file mode 100644
index 8dcd8bdf1e..0000000000
--- a/make/lilypond.mandrake.spec.in
+++ /dev/null
@@ -1,275 +0,0 @@
-%define info yes
-
-%define name lilypond
-%define version @TOPLEVEL_VERSION@
-%define release 4mdk
-
-Summary:	A program for printing sheet music.
-Name:		%{name}
-Version:	%{version}
-Release:	%{release}
-License:	GPL
-Group:		Publishing
-URL:		http://www.lilypond.org/
-Source0:	ftp.lilypond.org:/pub/LilyPond/development/lilypond-%{version}.tar.bz2
-BuildRoot:	%{_tmppath}/%{name}-buildroot
-BuildRequires:	t1utils bison texinfo t1lib1-devel libstdc++5-devel libguile12-devel >= 1.6.4
-BuildRequires:	gcc-c++ glibc-devel flex >= 2.5.4a-22mdk groff netpbm autotrace
-BuildRequires:  ImageMagick >= 5.5.4.4 libMagick5.5.4-devel >= 5.5.4.4
-BuildRequires:	ghostscript >= 7.05-53.2mdk mftrace >= 1.0.19 pfaedit >= 030822
-Requires:	tetex tetex-latex chkfontpath XFree86 info-install
-PreReq:		chkfontpath
- 
-
-%description
-LilyPond is a music typesetter.  It produces beautiful sheet music using a
-high level description file as input.  LilyPond is part of the GNU project.
- 
-LilyPond is split into two packages.  The package "lilypond" provides the
-core package, containing the utilities for converting the music source
-(.ly) files into printable output.  The package "lilypond-documentation" 
-provides the full documentation, example .ly files for various features and 
-the Mutopia project files (musical equivalent of the Gutenberg project - see
-http://www.mutopiaproject.org for details).
- 
-If you are new to lilypond, you will almost certainly want to install the
-"lilypond-documentation" package in addition to the "lilypond" package.
-
-%package -n liblilypond
-Summary: LilyPond libraries.
-License: GPL
-Group: System/Libraries
-Requires: lilypond >= %{version}
-
-%description -n liblilypond
-LilyPond libs
- 
-%package documentation
-Summary: LilyPond documentation, examples and Mutopia files.
-Group: Publishing
-Requires: %{name}
-
-%description documentation
-The documentation of LilyPond, both in HTML and PostScript, along with
-example input files and the files from the Mutopia project.
-
-%prep
-rm -rf $RPM_BUILD_ROOT
-
-%setup
-
-%build
-# DO NOT use % { configure } , it hardcodes all paths, runs libtool,
-# so we can't do make prefix=/tmp/ install.
-# -- not sure what this comment means; it's a relic from the PPC spec file -- mbrown@fensystems.co.uk
-##./configure --disable-checking --disable-debugging --enable-printing --prefix=%{_prefix} --disable-optimising --enable-shared
-## Add options if needed
-
-#Fix conflicting php variable out=/dev/vc/
-unset out
-
-./configure --disable-checking --prefix=%{_prefix} --libdir=%{_libdir} --enable-optimising
-
-%make  all
-
-# make info
-make -C Documentation
-
-# make  html
-make web
-make -C Documentation/user omf
-
-%install
-
-#Fix conflicting php variable out=/dev/vc/
-unset out
-
-# Create installation root folders
-rm -rf $RPM_BUILD_ROOT
-RPM_DOC_ROOT=$RPM_BUILD_ROOT%{_docdir}/%{name}-%{version}
-rm -rf $RPM_DOC_ROOT
-mkdir -p $RPM_DOC_ROOT
-
-strip lily/out/lilypond 
-%makeinstall 
-local_lilypond_libdir=$RPM_BUILD_ROOT/%{_libdir}/%{name}/%{version}
-
-%if %{info}
-  rm -f $RPM_BUILD_ROOT/%{_infodir}/dir
-  bzip2 $RPM_BUILD_ROOT%{_infodir}/*
-%endif
-
-mkdir -p $RPM_BUILD_ROOT%{_datadir}/emacs/site-lisp/site-start.d
-install -m 644 elisp/lilypond-init.el $RPM_BUILD_ROOT%{_datadir}/emacs/site-lisp/site-start.d
-
-bzip2 $RPM_BUILD_ROOT%{_mandir}/man1/*
-
-mkdir -p $RPM_BUILD_ROOT%{_prefix}/../etc/profile.d
-cp buildscripts/out/lilypond-profile $RPM_BUILD_ROOT%{_prefix}/../etc/profile.d/lilypond.sh
-cp buildscripts/out/lilypond-login $RPM_BUILD_ROOT%{_prefix}/../etc/profile.d/lilypond.csh
-
-make prefix="$RPM_BUILD_ROOT%{_prefix}" webdir="$RPM_BUILD_ROOT%{_prefix}/share/doc/%{name}-documentation-%{version}/" out=www web-install
-
-# Menu
-# Every entry must be changed according package specifications
-# Pay attention to "section" "command" and "longtitle"
-
-mkdir -p $RPM_BUILD_ROOT%{_menudir}
-cat >$RPM_BUILD_ROOT%{_menudir}/%{name} <<EOF
-?package(%name):\
-  command="info %{name}"\
-  needs="text"\
-  icon="%{name}.png"\
-  section="Documentation"\
-  title="%{name}-info"\
-  longtitle="%{name} Info"
-EOF
-  
-cat >$RPM_BUILD_ROOT%{_menudir}/%{name}-documentation <<EOF
-?package(%name):\
-  command="\$BROWSER %{_docdir}/%{name}-documentation-%{version}/index.html"\
-  needs="X11"\
-  icon="%{name}.png"\
-  section="Documentation"\
-  title="%{name}-documentation"\
-  longtitle="%{name} Documentation"
-EOF
-
-# icon
-install -d $RPM_BUILD_ROOT/%{_iconsdir}
-install -m 644 Documentation/pictures/out-www/lelie-logo.png $RPM_BUILD_ROOT/%{_iconsdir}/%{name}.png
-
-%{find_lang} %{name}
-
-%post
-%{update_menus}
-
-touch /tmp/.lilypond-install
-rm `find /var/lib/texmf -name 'feta*pk' -or -name 'feta*tfm' -or -name 'parmesan*pk' -or -name 'parmesan*tfm' -print` /tmp/.lilypond-install
-
-%if %{info}
-  /sbin/install-info --quiet %{_infodir}/lilypond.info.bz2 %{_infodir}/dir 
-%endif
-
-/usr/X11R6/bin/mkfontdir %{_datadir}/lilypond/%{version}/fonts/type1/
-chkfontpath --add=%{_datadir}/lilypond/%{version}/fonts/type1/
-
-%post documentation
-%{update_menus}
-scrollkeeper-update
-
-%preun
-
-%if %{info}
-  if [ $1 = 0 ]; then
-    /sbin/install-info --quiet --delete %{_infodir}/lilypond.info.bz2 %{_infodir}/dir 
-  fi
-%endif
-
-rm -f %{_datadir}/lilypond/%{version}/fonts/type1/fonts.dir
-chkfontpath --remove=%{_datadir}/lilypond/%{version}/fonts/type1/
-
-%postun
-%{clean_menus}
-
-%postun documentation
-%{clean_menus}
-scrollkeeper-update
-
-%clean
-rm -rf $RPM_BUILD_ROOT
-
-%files -f %{name}.lang
-%defattr(-, root, root)
-%doc COPYING README.txt INSTALL.txt DEDICATION NEWS.txt AUTHORS.txt THANKS
-
-%{_datadir}/emacs/site-lisp/site-start.d/lilypond-*
-%{_datadir}/emacs/site-lisp/lilypond*
-
-%if %{info}
-  %{_infodir}/*
-%endif
-
-%{_datadir}/%{name}/%{version}/
-%{_datadir}/locale/*/LC_MESSAGES/lilypond.mo
-%{_prefix}/../etc/profile.d/lilypond.*
-%_bindir/*
-%_mandir/*
-%_menudir/*
-%_iconsdir/%{name}.*
-
-%files -n liblilypond
-%defattr(-,root,root)
-%{_libdir}/%{name}/%{version}/python/*.so
-
-%files documentation
-%defattr(-, root, root)
-
-%{_docdir}/*
-%{_datadir}/omf/lilypond/%{version}
-%{_menudir}/%{name}-documentation
-
-%changelog
-* Thu Sep 01 2003 Heikki Johannes Junes <hjunes@cc.hut.fi> 1.8.4-4mdk
-- add target lilypond.words.
-
-* Sun Aug 25 2003 Torbjorn Turpeinen <tobbe@nyvalls.se> 1.8.1-3mdk
-- Fixed doc-path in menu.
-
-* Thu Aug 23 2003 Heikki Johannes Junes <hjunes@cc.hut.fi> 1.8.1-1mdk
-* Sun Aug 24 2003 Torbjorn Turpeinen <tobbe@nyvalls.se> 1.8.1-2mdk
-- Added Heikki Johannes Junes fix for confilcting PHP variable
-  out=/dev/vc/ by adding unset out before compiling
-- Compiled with recent guile = 1.6.4 and mftrace = 1.0.19
-- Changed icon to lilypond.png
-- Added menu and icons again
-
-* Thu Aug 07 2003 Heikki Johannes Junes <hjunes@cc.hut.fi> 1.8.0-1mdk
-- removed menu and icons, sync with redhat-spec
-
-* Thu Jun 12 2003 Heikki Johannes Junes <hjunes@cc.hut.fi> 1.7.23-1mdk
-- refreshed dependencies and file list.
-
-* Sat Feb 01 2003 Torbjorn Turpeinen <tobbe@nyvalls.se> 1.7.12-1mdk
-- Built for Mandrake 9.1
-
-* Fri Dec 01 2002 Heikki Johannes Junes <hjunes@cc.hut.fi> 1.7.9-1mdk
-- set menu-items to lilypond-info and lilypond-documentation.
-
-* Fri Nov 30 2002 Heikki Johannes Junes <hjunes@cc.hut.fi> 1.7.8-4mdk
-- add pre/post-dependencies and menus with icon from source.
-
-* Fri Oct 28 2002 Heikki Johannes Junes <hjunes@cc.hut.fi> 1.7.4-1mdk
-- info, commented menu
-
-* Fri Aug 30 2002 Heikki Johannes Junes <hjunes@cc.hut.fi> 1.6.0-1mdk
-- Adapted from lilypond.redhat.skel and skeleton found in Mandrake's RPM-docs.
-- TODO: info (?) and dependencies.
-
-* Fri Jun 01 2001 Lenny Cartier <lenny@mandrakesoft.com> 1.4.2-1mdk
-- updated by Michael Brown <mbrown@linux-mandrake.com> :
-	- Upgraded to 1.4.2
-	- Changed URL
-	- Removed /etc/profile.d scripts: all TeX bits are now located properly
-	- Rearranged documentation
-	- Tidied spec file
-	- Updated README.first
-
-* Mon Feb 26 2001 Lenny Cartier <lenny@mandrakesoft.com> 1.3.129-1mdk
-- added in contribs by Michael Brown <mbrown@fensystems.co.uk> :
-	- Removed info files completely (couldn't get info reader to read them)
-	- TODO: Get this to work at some point (in the meantime, use documentation in lilypond-extras)
-
-* Sat Feb 17 2001 Michael Brown <mbrown@fensystems.co.uk>
-- Moved TeX font folders into the system TeX tree (this ensures that the /var/lib/texmf font cache is used instead of current folder)
-- Added mktexlsr to post-install and post-uninstall scripts
-- Patched scripts in /etc/profile.d to reflect changes to font locations
-- Added QuickStart guide and Points to note sections to README.first (well worth reading)
-- Fixed install-info and uninstall-info sections to use Mandrake's RPM macros :-)
-
-* Tue Feb 13 2001 Michael Brown <mbrown@fensystems.co.uk>
-- First Mandrake package
-- spec file heavily adapted from PowerPC contribs.
-- Note HTML documentation may contain duff links and may be incomplete.  Lots of warnings appear when building HTML docs.
-- PostScript documentation is duplicated (how do you get an rpm package to contain a symlink?)
-- Created README.first file
diff --git a/make/lilypond.redhat.spec.in b/make/lilypond.redhat.spec.in
deleted file mode 100644
index fbc31225ea..0000000000
--- a/make/lilypond.redhat.spec.in
+++ /dev/null
@@ -1,172 +0,0 @@
-# -*-rpm-spec-mode-*-
-
-%define info yes
-%define docdir %{_docdir}/lilypond/
-
-Name: lilypond
-Version: @TOPLEVEL_VERSION@
-Release: 1
-License: GPL
-Group: Applications/Publishing
-Source0: ftp.lilypond.org:/pub/LilyPond/development/lilypond-@TOPLEVEL_VERSION@.tar.gz
-Summary: Create and print music notation 
-URL: http://www.lilypond.org/
-BuildRoot: %{_tmppath}/%{name}-%{version}-root
-
-
-Buildrequires: t1utils bison flex mftrace ImageMagick
-Buildrequires: texinfo >= 4.6
-Buildrequires: guile-devel >= 1.6.4-8
-Requires: tetex  tetex-latex libstdc++ python  tetex-dvips tetex-latex
-Requires: guile >= 1.6.4-8
-
-%description
-LilyPond lets you create music notation.  It produces
-beautiful sheet music from  a high-level description file.
-
-%package documentation
-Summary:  All LilyPond documentation, in HTML
-Group: Applications/Publishing
-# BuildArchitectures: noarch
-
-%description documentation
-Documentation and example files of LilyPond. An index is available at
-%{docdir}/web/Documentation/out-www/index.html
-
-%prep
-%setup
-
-%build
-
-# DO NOT use % { configure } , it hardcodes all paths, runs libtool,
-# so we can't do make prefixix=/tmp/ install.
-
-# In fact, do not take out the spaces between % and { in the above comment,
-# because RPM will gladly do a substitution anyway.
-
-./configure --disable-checking --prefix=%{_prefix} --enable-optimising
-
-
-make all
-
-# make info
-make -C Documentation
-
-# make  html
-make web
-make -C Documentation/user omf
-
-%install
-
-
-rm -rf $RPM_BUILD_ROOT
-mkdir -p $RPM_BUILD_ROOT/tmp/lilypond-rpm-doc
-
-make prefix="$RPM_BUILD_ROOT%{_prefix}" infodir="$RPM_BUILD_ROOT%{_infodir}"  mandir="$RPM_BUILD_ROOT%{_mandir}" install
-
-%if %{info}
-rm -f $RPM_BUILD_ROOT/%{_infodir}/dir
-gzip -9fn $RPM_BUILD_ROOT%{_infodir}/*
-%endif
-
-mkdir -p $RPM_BUILD_ROOT%{_datadir}/emacs/site-lisp/site-start.d
-# install -m 755 -d  $RPM_BUILD_ROOT/etc/emacs/site-start.d
-install -m 644 elisp/lilypond-init.el  $RPM_BUILD_ROOT%{_datadir}/emacs/site-lisp/site-start.d
-
-gzip -9fn $RPM_BUILD_ROOT%{_mandir}/man1/*
-
-mkdir -p $RPM_BUILD_ROOT/etc/profile.d
-cp buildscripts/out/lilypond-profile $RPM_BUILD_ROOT/etc/profile.d/lilypond.sh
-cp buildscripts/out/lilypond-login $RPM_BUILD_ROOT/etc/profile.d/lilypond.csh
-
-make prefix="$RPM_BUILD_ROOT%{_prefix}" webdir="$RPM_BUILD_ROOT%{_prefix}/share/doc/lilypond/" web-install
-
-
-%post
-
-touch /tmp/.lilypond-install
-rm `find /var/lib/texmf -name 'feta*pk' -or -name 'feta*tfm' -or -name 'parmesan*pk' -or -name 'parmesan*tfm' -print` /tmp/.lilypond-install
-
-%if %{info}
-/sbin/install-info %{_infodir}/lilypond.info.gz %{_infodir}/dir 
-%endif
-
-# chkfontpath --add=%{_datadir}/lilypond/@TOPLEVEL_VERSION@/fonts/type1/
-
-echo 'Please logout first before using LilyPond.'
-
-%preun
-
-
-%if %{info}
-if [ $1 = 0 ]; then
-    /sbin/install-info --delete %{_infodir}/lilypond.info.gz %{_infodir}/dir 
-fi
-%endif
-
-# chkfontpath --remove=%{_datadir}/share/lilypond/@TOPLEVEL_VERSION@/fonts/type1/
-
-
-%post documentation
-scrollkeeper-update
-
-%postun documentation
-scrollkeeper-update
-
-
-
-%files
-%defattr(-, root, root)
-%{_datadir}/emacs/site-lisp/lilypond*
-%{_datadir}/emacs/site-lisp/site-start.d/lilypond*
-
-%{_bindir}/abc2ly
-%{_bindir}/convert-ly
-%{_bindir}/etf2ly
-%{_bindir}/lilypond
-%{_bindir}/lilypond-bin
-%{_bindir}/midi2ly
-%{_bindir}/lilypond-book
-%{_bindir}/mup2ly
-%{_bindir}/musedata2ly
-%{_bindir}/pmx2ly
-
-%doc THANKS
-%doc COPYING
-%doc DEDICATION
-%doc README.txt
-%doc AUTHORS.txt
-%doc INSTALL.txt
-%doc NEWS.txt
-
-%if %{info}
-%{_infodir}/*
-%endif
-
-%{_mandir}/man1/abc2ly.1.gz
-%{_mandir}/man1/convert-ly.1.gz
-%{_mandir}/man1/etf2ly.1.gz
-%{_mandir}/man1/lilypond-bin.1.gz
-%{_mandir}/man1/lilypond.1.gz
-%{_mandir}/man1/midi2ly.1.gz
-%{_mandir}/man1/lilypond-book.1.gz
-%{_mandir}/man1/musedata2ly.1.gz
-%{_mandir}/man1/mup2ly.1.gz
-%{_mandir}/man1/pmx2ly.1.gz
-
-%{_datadir}/lilypond/@TOPLEVEL_VERSION@/
-%{_datadir}/locale/*/LC_MESSAGES/lilypond.mo
-
-%{_libdir}/lilypond/
-
-/etc/profile.d/lilypond.*
-
-
-%files documentation
-
-%defattr(-, root, root)
-
-%{docdir}
-%{_datadir}/omf/lilypond/@TOPLEVEL_VERSION@
-
-
diff --git a/make/lilypond.suse.spec.in b/make/lilypond.suse.spec.in
deleted file mode 100644
index 059a922f98..0000000000
--- a/make/lilypond.suse.spec.in
+++ /dev/null
@@ -1,303 +0,0 @@
-#
-# spec file for package lilypond (Version 1.3.149)
-# based on 
-#    spec file for package lilypond (Version 1.2.17)
-#    Copyright  (c)  2000  SuSE GmbH  Nuernberg, Germany.
-#
-# Please send bug reports to schlemme@mathe.tu-freiberg.de
-
-%define info yes
-
-# neededforbuild  guile tcsh tetex te_latex te_mpost libpng python gpp libgpp gettext autoconf netpbm libnetpb gs_serv gs_lib gs_fonts guile
-# usedforbuild    aaa_base aaa_dir autoconf automake base bash bindutil binutils bison bzip compress cpio cracklib devs diff ext2fs file fileutil find flex gawk gcc gdbm gettext gpm gpp gppshare groff gs_fonts gs_lib gs_serv guile gzip kbd less libc libgpp libnetpb libpng libtool libz lx_suse make mktemp modules ncurses net_tool netcfg netpbm nkita nkitb nssv1 pam patch perl pgp ps python rcs rpm sendmail sh_utils shadow shlibs strace syslogd sysvinit tcsh te_ams te_latex te_mpost tetex texinfo textutil timezone unzip util vim xdevel xf86 xshared guile
-
-
-Distribution: SuSE Linux 7.0 (i386)
-Name: lilypond
-Version: @TOPLEVEL_VERSION@
-Release: 2
-Copyright:    GPL
-Group: Applications/Publishing
-Source0: ftp.lilyond.org:/pub/LilyPond/development/lilypond-@TOPLEVEL_VERSION@.tar.gz
-# music notation software for.. ?
-Summary: A program for printing sheet music.
-URL: http://www.lilypond.org/
-# rpm: 4.0: broken for -ta builds: rpm doesn't look in tarball for xpm
-# Icon: lilypond-icon.xpm
-BuildRoot: /tmp/lilypond-install
-# add lots of Buildreq: tetex-kpath, te_mpost, bison
-# better prereqs: tetex-latex, python, (mpost?) etc.
-Prereq: tetex python
-
-# use keywords: music notation software
-%description
-LilyPond is a music typesetter.  It produces beautiful
-sheet music using a high level description file as input.  LilyPond is
-part of the GNU Project.
-
-Authors:
---------
-    Han-Wen Nienhuys <hanwen@cs.uu.nl>
-    Jan Nieuwenhuizen <janneke@gnu.org>
-    Alexandre Oliva <oliva@dcc.unicamp.br>
-    Mats Bengtsson <matsb@s3.kth.se>
-    Eric Bullinger <eric@aut.ee.ethz.ch>
-    Jan Arne Fagertun <Jan.A.Fagertun@energy.sintef.no>
-    Anthony Fok <foka@debian.org>
-    Neil Jerram <nj104@cus.cam.ac.uk>
-    Donald Ervin Knuth
-    Werner Lemberg <wl@gnu.org>
-    David R. Linn <drl@vuse.vanderbilt.edu>
-    François Pinard <pinard@iro.umontreal.ca>
-    Jeffrey B. Reed <daboys@bga.com>
-    Shay Rojanski
-    Tom Cato Amundsen <tca@gnu.org>
-    Laura Conrad <lconrad@world.std.com>
-    James Hammons <jlhamm@pacificnet.net>
-    Bjoern Jacke <bjoern.jacke@gmx.de>
-    Michael Krause <m.krause@tu-harburg.de>
-    David R. Linn <drl@vuse.vanderbilt.edu>
-    Adrian Mariano
-    Stephen Peters <portnoy@ai.mit.edu>
-    Glen Prideaux <glenprideaux@iname.com>
-    Roy R. Rankin <Roy.Rankin@alcatel.com.au>
-    Juergen Reuter <reuter@ipd.uka.de>
-    August S.Sigov <august@infran.ru>
-    Rune Zedeler <rune@zedeler.dk>
-
-SuSE series: ap
-
-%package doc
-Summary: Prebuilt website containing all LilyPond documentation.
-Group: Applications/Publishing
-# BuildArchitectures: noarch
-
-%description doc
-
-The documentation of LilyPond, both in HTML and PostScript.
-
-%define INSTALL install -m755 -s
-%define INSTALL_DIR install -d -m755
-%define INSTALL_DATA install -m644
-%prep
-%setup
-
-%build
-
-#
-
-# DO NOT use % { configure } , it hardcodes all paths, runs libtool,
-# so we can't do make prefix=/tmp/ install.
-
-# In fact, do not take out the spaces between % and { , because RPM will gladly
-# do a substitution anyway.
-
-CFLAGS="$RPM_OPT_FLAGS" ./configure --disable-checking --disable-debugging --enable-printing --prefix=%{_prefix} --enable-optimising --enable-shared
-
-make LDFLAGS=-s "CFLAGS=$RPM_OPT_FLAGS" all
-
-# urg
-# %build doc
-# line 42: second %build
-# ok, now make sure that lilypond package will succeed,
-# even if documentation fails to build
-
-make lilypond.words
-
-make web
-
-%install
-
-
-
-rm -rf $RPM_BUILD_ROOT
-mkdir -p $RPM_BUILD_ROOT/tmp/lilypond-rpm-doc
-
-## this is an ugly hack
-mkdir -p scripts/share/lilypond/tex
-cp tex/titledefs.tex scripts/share/lilypond/tex
-## end of hack
-
-
-strip lily/out/lilypond 
-make prefix="$RPM_BUILD_ROOT%{_prefix}" install
-
-%{INSTALL_DIR} $RPM_BUILD_ROOT/usr/share/texmf/fonts/source/public/lilypond
-(cd $RPM_BUILD_ROOT/usr/share/lilypond \
-    && mv mf/* $RPM_BUILD_ROOT/usr/share/texmf/fonts/source/public/lilypond \
-    && rm -fr mf \
-    && ln -s ../texmf/fonts/source/public/lilypond mf)
-%{INSTALL_DIR} $RPM_BUILD_ROOT/usr/share/texmf/fonts/afm/lilypond
-(cd $RPM_BUILD_ROOT/usr/share/lilypond \
-    && mv afm/* $RPM_BUILD_ROOT/usr/share/texmf/fonts/afm/lilypond \
-    && rm -fr afm \
-    && ln -s ../texmf/fonts/afm/lilypond afm)
-%{INSTALL_DIR} $RPM_BUILD_ROOT/usr/share/texmf/tex/lilypond
-(cd $RPM_BUILD_ROOT/usr/share/lilypond \
-    && mv tex/* $RPM_BUILD_ROOT/usr/share/texmf/tex/lilypond \
-    && rm -fr tex \
-    && ln -s ../texmf/tex/lilypond tex)
-%{INSTALL_DIR} $RPM_BUILD_ROOT/usr/share/texmf/lilypond/ps
-(cd $RPM_BUILD_ROOT/usr/share/lilypond \
-    && mv ps/* $RPM_BUILD_ROOT/usr/share/texmf/lilypond/ps \
-    && rm -fr ps \
-    && ln -s ../texmf/lilypond/ps ps)
-
-
-%if info=="yes"
-gzip -9fn $RPM_BUILD_ROOT%{_prefix}/info/* || true
-%endif
-
-
-
-gzip -9fn $RPM_BUILD_ROOT%{_prefix}/man/man1/* || true
-
-
-
-
-mkdir -p $RPM_BUILD_ROOT%{_prefix}/../etc/profile.d
-cp buildscripts/out/lilypond-profile $RPM_BUILD_ROOT%{_prefix}/../etc/profile.d/lilypond.sh
-cp buildscripts/out/lilypond-login $RPM_BUILD_ROOT%{_prefix}/../etc/profile.d/lilypond.csh
-
-# urg
-#%install doc
-#line 63: second %install
-# again, make sure that main package installs even if doco fails
-mkdir -p web/out
-tar -C web -xzf out/web.tar.gz || true
-
-%ifos cygwin
-# urg, this symlink doesn't come through on cygwin
-# this is the way symlinks work over there, let's fake one
-rm -f $RPM_BUILD_ROOT%{_prefix}/share/lilypond/cmtfm
-echo '!<symlink>c:\\texmf\\fonts\\tfm\\public\\cm' > $RPM_BUILD_ROOT%{_prefix}/share/lilypond/cmtfm
-%{fix_suffixes}
-%endif
-
-%{?suse_check}
-
-
-%pre
-if [ -d usr/share/lilypond/ps ]; then
-  mv usr/share/lilypond/ps usr/share/lilypond/ps.old
-  echo "please, remove /usr/share/lilypond/ps.old manually."
-fi
-
-%post
-
-touch /tmp/.lilypond-install
-rm `find /var/lib/texmf -name 'feta*pk' -or -name 'feta*tfm' -or -name 'parmesan*pk' -or -name 'parmesan*tfm' -print'` /tmp/.lilypond-install
-%if info=="yes"
-/usr/bin/install-info %{_prefix}/info/lilypond.info.gz %{_prefix}/info/dir || true
-%endif
-mkdir -p var/adm/SuSEconfig
-touch var/adm/SuSEconfig/run-texhash
-
-
-%preun
-%if info=="yes"
-if [ $1 = 0 ]; then
-    /usr/bin/install-info --delete %{_prefix}/info/lilypond.info.gz %{_prefix}/info/dir || true
-fi
-%endif
-
-%postun
-mkdir -p var/adm/SuSEconfig
-touch var/adm/SuSEconfig/run-texhash
-
-
-
-%files
-%defattr(-, root, root)
-%doc CHANGES COPYING DEDICATION INSTALL.txt NEWS
-%doc README.txt FAQ.txt AUTHORS.txt VERSION ROADMAP
-%doc buildscripts/
-%doc scripts/
-# hairy to hook it in (possibly non-existing) emacs
-%doc lilypond-mode.el
-%doc lilypond-font-lock.el
-%doc lilypond-indent.el
-%doc lilypond-init.el
-%doc out/lilypond.words.el
-
-%config /etc/profile.d/*
-
-%ifnos cygwin
-%{_prefix}/bin/abc2ly
-%{_prefix}/bin/convert-ly
-%{_prefix}/bin/etf2ly
-%{_prefix}/bin/lilypond-bin
-%{_prefix}/bin/lilypond
-%{_prefix}/bin/midi2ly
-%{_prefix}/bin/lilypond-book
-%{_prefix}/bin/mup2ly
-%{_prefix}/bin/musedata2ly
-%{_prefix}/bin/pmx2ly
-%else
-%{_prefix}/bin
-%endif
-
-%if info=="yes"
-%{_prefix}/info/lilypond.info.gz
-%{_prefix}/info/lilypond-internals.info.gz
-%endif
-
-%{_prefix}/man/man1/abc2ly.1.gz
-%{_prefix}/man/man1/convert-ly.1.gz
-%{_prefix}/man/man1/etf2ly.1.gz
-%{_prefix}/man/man1/lilypond-bin.1.gz
-%{_prefix}/man/man1/lilypond.1.gz
-%{_prefix}/man/man1/midi2ly.1.gz
-%{_prefix}/man/man1/lilypond-book.1.gz
-%{_prefix}/man/man1/musedata2ly.1.gz
-%{_prefix}/man/man1/mup2ly.1.gz
-%{_prefix}/man/man1/pmx2ly.1.gz
-
-%{_prefix}/share/lilypond/
-%{_prefix}/share/texmf/
-%{_prefix}/share/locale/*/LC_MESSAGES/lilypond.mo
-# urg?
-#%{_prefix}/../etc/profile.d/lilypond.*
-
-%files doc
-%defattr(-, root, root)
-# this gets too messy...
-
-
-%doc web/
-# verbatim include of input: list the directory without issuing a %dir 
-
-%changelog -n lilypond
-* Sun Apr 22 2001 - schlemme@mathe.tu-freiberg.de
-- update: 1.3.149
-* Mon Apr 10 2000 - bk@suse.de
-- added suse update config macro
-* Thu Mar 16 2000 - kukuk@suse.de
-- Use gs_serv, not gs_both (doesn't exist on all platforms)
-* Wed Mar 01 2000 - uli@suse.de
-- moved man pages to /usr/share
-* Tue Dec 21 1999 - ke@suse.de
-- add documentation (#271).
-* Mon Dec 13 1999 - ke@suse.de
-- update: 1.2.17.
-- compiler fix (thanks to schwab@suse.de).
-- #271.
-* Mon Oct 25 1999 - ke@suse.de
-- update: 1.2.16.
-* Mon Sep 13 1999 - bs@suse.de
-- ran old prepare_spec on spec file to switch to new prepare_spec.
-* Mon Sep 06 1999 - ro@suse.de
-- update to 1.2.6 to make it compile with new guile
-- various fixes and one hack to make this compile at all
-* Sun Aug 22 1999 - ke@suse.de
-- provide /etc/profile.d scripts.
-- make lily.ps available (thanks to Ulrich Windl).
-* Tue Aug 17 1999 - ke@suse.de
-- update: version 1.2.1.
-* Thu Nov 05 1998 - ke@suse.de
-- use the TDS and provide links from /usr/share/lilypond.
-- install examples via %doc.
-* Wed Oct 28 1998 - ke@suse.de
-- update: version 1.0.17.
-* Fri Aug 07 1998 - ke@suse.de
-- initial package: version 1.0.0
diff --git a/make/ly-rules.make b/make/ly-rules.make
deleted file mode 100644
index 174dee86eb..0000000000
--- a/make/ly-rules.make
+++ /dev/null
@@ -1,75 +0,0 @@
-.SUFFIXES: .doc .dvi .tely .texi .ly
-
-
-$(outdir)/%.latex: %.doc
-	if [ -f $@ ]; then chmod a+w $@; fi
-	$(PYTHON) $(LILYPOND_BOOK) $(LILYPOND_BOOK_INCLUDES) --process='$(LILYPOND) $(LILYPOND_BOOK_INCLUDES)' --output=$(outdir) --verbose $(LILYPOND_BOOK_FLAGS) $<
-	chmod -w $@
-
-# don't do ``cd $(outdir)'', and assume that $(outdir)/.. is the src dir.
-# it is not, for --srcdir builds
-$(outdir)/%.texi: %.tely
-	if [ -f $@ ]; then chmod a+w $@; fi
-	$(PYTHON) $(LILYPOND_BOOK) $(LILYPOND_BOOK_INCLUDES) --process='$(LILYPOND) $(LILYPOND_BOOK_INCLUDES)' --output=$(outdir) --format=$(LILYPOND_BOOK_FORMAT) --verbose $(LILYPOND_BOOK_FLAGS) $<
-	chmod -w $@
-
-$(outdir)/%.texi: $(outdir)/%.tely
-	if [ -f $@ ]; then chmod a+w $@; fi
-	$(PYTHON) $(LILYPOND_BOOK) $(LILYPOND_BOOK_INCLUDES) --process='$(LILYPOND) $(LILYPOND_BOOK_INCLUDES)' --output=$(outdir) --format=$(LILYPOND_BOOK_FORMAT) --verbose $(LILYPOND_BOOK_FLAGS) $<
-#
-# DON'T REMOVE SOURCE FILES, otherwise the .TEXI ALWAYS OUT OF DATE.
-#	rm -f $<
-	chmod -w $@
-
-# nexi: no-lily texi
-# for plain info doco: don't run lily
-$(outdir)/%.nexi: %.tely
-	if [ -f $@ ]; then chmod a+w $@; fi
-	$(PYTHON) $(LILYPOND_BOOK) $(LILYPOND_BOOK_INCLUDES) --output=$(outdir) --format=$(LILYPOND_BOOK_FORMAT) --verbose $(LILYPOND_BOOK_FLAGS) --process='true' $<
-	mv $(outdir)/$*.texinfo $@ 2>/dev/null || mv $(outdir)/$*.texi $@
-	chmod -w $@
-
-# nfo: info from non-lily texi
-$(outdir)/%.info: $(outdir)/%.nexi
-	$(MAKEINFO) -I $(outdir) --output=$(outdir)/$(*F).info $<
-
-# nfo: info from non-lily texi
-#$(outdir)/%.nfo: $(outdir)/%.nexi
-#	$(MAKEINFO) --output=$(outdir)/$(*F).info $<
-
-#
-# let's not do this: this interferes with the lilypond-book dependency mechanism.
-#
-##$(outdir)/%.tex: $(outdir)/%.ly
-##	$(LILYPOND) $(LILYPOND_BOOK_INCLUDES) -o $@ $< 
-
-#
-# Timothy's booklet
-#
-$(outdir)/%-book.ps: $(outdir)/%.ps
-	psbook $< $<.tmp
-	pstops '2:0L@.7(21cm,0)+1L@.7(21cm,14.85cm)' $<.tmp $@
-
-$(outdir)/%.pdf: $(outdir)/%.dvi
-	dvips -u +lilypond.map -o $@.pdfps -t $(DVIPS_PAPERSIZE)  -Ppdf $<
-	ps2pdf -sPAPERSIZE=$(DVIPS_PAPERSIZE) $@.pdfps $@
-
-
-$(outdir)/%.html.omf: %.tely
-	$(call GENERATE_OMF,html)
-
-$(outdir)/%.pdf.omf: %.tely
-	$(call GENERATE_OMF,pdf)
-
-$(outdir)/%.ps.gz.omf: %.tely
-	$(call GENERATE_OMF,ps.gz) 
-
-
-$(outdir)/%.html.omf: $(outdir)/%.texi
-	$(call GENERATE_OMF,html)
-
-$(outdir)/%.pdf.omf: $(outdir)/%.texi
-	$(call GENERATE_OMF,pdf)
-
-$(outdir)/%.ps.gz.omf: $(outdir)/%.texi
-	$(call GENERATE_OMF,ps.gz) 
diff --git a/make/ly-targets.make b/make/ly-targets.make
deleted file mode 100644
index d01701d859..0000000000
--- a/make/ly-targets.make
+++ /dev/null
@@ -1,14 +0,0 @@
-convert-ly: local-convert-ly
-	$(LOOP)
-
-local-convert-ly:
-	$(PYTHON) $(CONVERT_LY) --edit --assume-old *ly
-
-local-help: local-ly-help
-
-local-ly-help:
-	@echo -e "\
-  convert-ly  convert all LilyPond sources\n\
-"\
-#
-
diff --git a/make/ly-vars.make b/make/ly-vars.make
deleted file mode 100644
index 3a844e20bb..0000000000
--- a/make/ly-vars.make
+++ /dev/null
@@ -1,18 +0,0 @@
-# rules for directories with LilyPond files.
-
-# empty
-
-# huh ? these are for documentation?!
-TELY_FILES := $(wildcard *.tely)
-
-OMF_FILES += $(foreach format, html pdf ps.gz, $(foreach f, $(TELY_FILES), $(outdir)/$(f:.tely=.$(format)).omf))
-
-ITELY_FILES := $(wildcard *.itely)
-ITEXI_FILES := $(wildcard *.itexi)
-LY_FILES := $(wildcard *.ly)
-LYINC_FILES := $(wildcard *.lyinc)
-
-TEXINFO_SOURCES += $(TELY_FILES) $(ITELY_FILES) $(ITEXI_FILES)
-
-EXTRA_DIST_FILES += $(TELY_FILES) $(LY_FILES) $(ITEXI_FILES) $(ITELY_FILES) $(LYINC_FILES)
-
diff --git a/make/ly.make b/make/ly.make
deleted file mode 100644
index caee2d2245..0000000000
--- a/make/ly.make
+++ /dev/null
@@ -1,86 +0,0 @@
-#!/usr/bin/make
-#
-# Mutopia Makefile Project
-#
-# Rename this file to GNUmakefile, and issue `make help'
-#
-
-
-#
-# Magic: find and include LilyPond's StepMake rules
-#
-# 0: try local tree
-# 1: follow LILYPONDPREFIX
-# 2: try source tree in home
-# 3: try installed tree in $HOME
-# 4: try system installed tree
-# 5: try system installed tree
-#
-make-root=$(wildcard $(depth)/make)
-make-root?=$(wildcard $(LILYPONDPREFIX)/make)
-make-root?=$(wildcard $(HOME)/usr/src/lilypond/make)
-make-root?=$(wildcard $(HOME)/usr/share/lilypond/make)
-make-root?=$(wildcard /usr/share/lilypond/make)
-make-root?=$(wildcard /usr/local/share/lilypond/make)
-#make-root=<LilyPond's datadir>/make
-ifneq ($(make-root),)
-### some versions apparently choke on $(message)
-### $(message running from $(make-root))
-depth:=$(make-root)/..
-LOCALSTEPMAKE_TEMPLATES=ly mutopia
-include $(make-root)/stepmake.make
-else
-$(error can't find LilyPond's stepmake installation)
-endif
-#
-
-
-#
-# Mutopia/user targets.
-# This needs some work.
-#
-
-#
-# Name of mutopia project
-#
-name=book
-tarball=$(name)
-parts=$(patsubst %.ly,%,$(wildcard *-part.ly))
-
-#
-# scores for target local-WWW (duh)
-#
-examples=
-
-#
-# scores for target mutopia
-#
-mutopia-examples=$(name) $(parts)
-
-# moved to ly-rules.make
-# Timothy's booklet
-#
-#$(outdir)/%-book.ps: $(outdir)/%.ps
-#	psbook $< $<.tmp
-#	pstops  '2:0L@.7(21cm,0)+1L@.7(21cm,14.85cm)' $<.tmp $@
-
-#
-# Catch-all target: type `make foo' to make out/foo.ps,
-# or make `foo-book' to make out/foo-book.ps
-#
-%: $(outdir)/%.ps
-	@echo Generated $< for target $@.
-
-#
-# Also clean hand-compiled stuff in cwd
-#
-local-clean: local-auto-gen-clean
-
-# Compose string from two parts: must not remove myself.
-auto-gen-tag=Generated
-auto-gen-tag+= automatically by
-
-local-auto-gen-clean:
-	rm -f `grep -l '$(auto-gen-tag)' *`
-	rm -f *.dvi *.png
-
diff --git a/make/lysdoc-rules.make b/make/lysdoc-rules.make
deleted file mode 100644
index 9e696adb8d..0000000000
--- a/make/lysdoc-rules.make
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
-
-$(outdir)/collated-files.tely: $(LY_FILES)
-	$(PYTHON) ../../buildscripts/lys-to-tely.py --name=$(outdir)/collated-files --title="$(TITLE)" $(LY_FILES)
-
diff --git a/make/lysdoc-targets.make b/make/lysdoc-targets.make
deleted file mode 100644
index a3a313758b..0000000000
--- a/make/lysdoc-targets.make
+++ /dev/null
@@ -1,3 +0,0 @@
-
-
-local-WWW: $(outdir)/$(NAME).html $(outdir)/$(NAME).ps.gz $(outdir)/$(NAME).pdf
diff --git a/make/lysdoc-vars.make b/make/lysdoc-vars.make
deleted file mode 100644
index e653213363..0000000000
--- a/make/lysdoc-vars.make
+++ /dev/null
@@ -1,4 +0,0 @@
-TITLE=LYs Doc
-
-NAME=collated-files
-
diff --git a/make/mutopia-inclusions.make b/make/mutopia-inclusions.make
deleted file mode 100644
index 28636f7de0..0000000000
--- a/make/mutopia-inclusions.make
+++ /dev/null
@@ -1,9 +0,0 @@
-
-ifndef MUTOPIA_INCLUSIONS
-STEPMAKE_TEMPLATES := tex $(STEPMAKE_TEMPLATES)
-
--include $(stepdir)/tex-inclusions
-MUTOPIA_INCLUSIONS=done
-
-
-endif
diff --git a/make/mutopia-rules.make b/make/mutopia-rules.make
deleted file mode 100644
index 03cba6f2e9..0000000000
--- a/make/mutopia-rules.make
+++ /dev/null
@@ -1,40 +0,0 @@
-
-
-$(outdir)/%.png: $(outdir)/%.ps
-	gs -sDEVICE=pnggray -dTextAlphaBits=4 -dGraphicsAlphaBits=4 -sOutputFile="$(name-stem)-page%d.png" -r90 -dNOPAUSE $< -c quit
-	-mv $(name-stem)-page*.png $(outdir)/
-	rm -f $@
-	ln -s $(name-stem)-page1.png $@
-
-$(outdir)/%.ly.txt: %.ly
-	ln -f $< $@
-
-$(outdir)/%.ly.txt: $(outdir)/%.ly
-	cp -f $< $@
-
-$(outdir)/%.ly.txt: %.abc
-#which file to show here -- abc seems more cute?
-	ln -f $< $@
-
-$(outdir)/%.ly: %.abc
-	$(PYTHON) $(ABC2LY) --strict -o $@ $< 
-
-$(outdir)/%.dvi: $(outdir)/%.ly
-	$(PYTHON) $(LY2DVI) --output=$@ --dependencies $< 
-
-# don't junk intermediate .dvi files.  They're easier to view than
-# .ps or .png
-.PRECIOUS: $(outdir)/%.dvi
-
-$(outdir)/%.dvi: %.ly
-	$(PYTHON) $(LY2DVI) --output=$@ --dependencies $< 
-
-
-$(outdir)/%.pdf: $(outdir)/%.dvi
-	dvips -u +lilypond.map -t $(DVIPS_PAPERSIZE) -o $@.pdfps  -Ppdf $<
-	ps2pdf -sPAPERSIZE=$(DVIPS_PAPERSIZE) $@.pdfps $@
-
-$(outdir)-$(PAPERSIZE)/%.dvi: %.ly
-	$(PYTHON) $(LY2DVI) --output=$@ --dependencies --set=papersize=$(PAPERSIZE) $< 
-
-
diff --git a/make/mutopia-targets.make b/make/mutopia-targets.make
deleted file mode 100644
index 54cd429bb5..0000000000
--- a/make/mutopia-targets.make
+++ /dev/null
@@ -1,57 +0,0 @@
-
-include $(stepdir)/www-targets.make
-
-
-.PHONY: download mutopia png ps scores tar
-
-.PRECIOUS: $(outdir)/%.ps $(outdir)/%-book.ps
-.PRECIOUS: $(outdir)-letter/%.dvi $(outdir)-letter/%.ps
-
-
-all: $(OUT_FILES)
-
-# we want dvi_examples as well, because they get thrown away otherwise
-# incurring another costly lilypond run.
-local-WWW: $(ly_examples) $(pdf_examples) $(ps_examples) $(png_examples)
-
-tar:
-	mkdir -p $(outdir)/$(tarball)
-	cp -p *.ly $(outdir)/$(tarball)
-	cd $(outdir) && tar czf $(tarball).tar.gz $(tarball)
-	rm -rf $(outdir)/$(tarball)
-
-png: $(png_examples)
-
-ps: $(ps_examples)
-
-scores: $(score_ps)
-	$(MAKE) ps_examples="$<" ps
-
-local-mutopia:
-	$(MAKE) examples="$(mutopia-examples)" PAPERSIZE=letter local-WWW $(mutopia-letter)
-
-mutopia: local-mutopia
-	$(LOOP)
-
-mutopia-letter=$(mutopia-examples:%=out-letter/%.ps.gz)
-
-local-clean: local-letter-clean
-
-local-letter-clean:
-	rm -f $(outdir)-letter/*
-
-
-local-help: local-mutopia-help
-
-local-mutopia-help:
-	@echo -e "\
-  <NAME>      update $(outdir)/<NAME>.ps\n\
-  <NAME>-book update booklet $(outdir)/<NAME>-book.ps\n\
-  mutopia     update PNGs, PostScript a4 and letter of all mutopia-examples\n\
-  png         update PNGs of all examples\n\
-  ps          update PostScript of all examples\n\
-  scores      update PostScript of all scores\n\
-"\
-#
-
-
diff --git a/make/mutopia-vars.make b/make/mutopia-vars.make
deleted file mode 100644
index 84bc7bf849..0000000000
--- a/make/mutopia-vars.make
+++ /dev/null
@@ -1,29 +0,0 @@
-
-# UGH UGH
-include $(make-dir)/lilypond-vars.make
-
-# LY_FILES is defined the LY make template.
-
-SCORE_LY_FILES = $(shell fgrep -l score *.ly)
-
-M4_FILES = $(wildcard *.m4)
-LYM4_FILES = $(wildcard *.lym4)
-EXTRA_DIST_FILES +=  $(M4_FILES) $(LYM4_FILES)
-
-ly_examples=$(addprefix $(outdir)/, $(addsuffix .ly.txt, $(examples)))
-all_examples=$(examples)
-dvi_examples=$(addprefix $(outdir)/, $(addsuffix .dvi, $(all_examples)))
-ps_examples=$(addprefix $(outdir)/, $(addsuffix .ps.gz, $(all_examples)))
-pdf_examples=$(addprefix $(outdir)/, $(addsuffix .pdf, $(all_examples)))
-gif_examples=$(addprefix $(outdir)/, $(addsuffix .gif, $(all_examples)))
-png_examples=$(addprefix $(outdir)/, $(addsuffix .png, $(all_examples)))
-
-html_subdirs=$(addprefix --subdirs ,$(SUBDIRS))
-
-
-name-stem= $(notdir $(basename $<))
-
-OUT_FILES = $(addprefix $(outdir)/,$(M4_FILES:%.m4=%)) \
- $(addprefix $(outdir)/,$(LYM4_FILES:%.lym4=%.ly))
-
-score_ps = $(addprefix $(outdir)/, $(addsuffix .ps.gz, $($SCORE_LY_FILES)))
diff --git a/make/ports-rules.make b/make/ports-rules.make
deleted file mode 100644
index 5e509eeb33..0000000000
--- a/make/ports-rules.make
+++ /dev/null
@@ -1,22 +0,0 @@
-ifeq ($(zipped),)
-%.ly:
-	wget $(MUTOPIA_MIRROR)/$(mutopia-dir)/$@
-	$(MAKE) local-convert-ly
-else
-%.zip:
-	wget $(MUTOPIA_MIRROR)/$(mutopia-dir)/$@
-
-%.ly:	%-lys.zip
-	unzip -n $<
-	$(MAKE) local-convert-ly
-endif
-
-%/GNUmakefile:
-	mkdir -p $(@D)
-	$(if $(shell grep '[.]ly' $(@D)/index.html), \
-		echo 'mutopia-name = $(@D)' > $@, \
-		$(if $(shell grep '[.]zip' $(@D)/index.html), \
-			echo -e 'zipped = true\nmutopia-name = $(@D)' > $@))
-	echo -e $(GNUmakefile) >> $@
-
-
diff --git a/make/ports-targets.make b/make/ports-targets.make
deleted file mode 100644
index 529672ced5..0000000000
--- a/make/ports-targets.make
+++ /dev/null
@@ -1,51 +0,0 @@
-
-local-ly-clean:
-	$(if $(wildcard *.ly), -mv -f $(wildcard *.ly) $(outdir))
-
-ly-clean: local-ly-clean
-	$(LOOP)
-
-local-download: $(mutopia-examples:%=%.ly)
-	@echo downloading $<
-
-download: local-download
-	$(LOOP)
-
-#
-# Lots smarter would be to do one recursive wget, getting all index.html,
-# parse those with python script to setup tree.
-#
-local-sync:
-	wget --recursive --no-parent --level=1 --timestamping --dont-remove-listing --no-host-directories --accept=index.html $(MUTOPIA_MIRROR)/$(mutopia-dir)/
-# ugh
-# -mv ./ftp/$(mutopia-dir)/* .
-	cp -r ./ftp/$(mutopia-dir)/* .
-	rm -rf ./ftp
-	$(MAKE) 'dirs-before=$(dirs-before)' generate-GNUmakefiles
-
-#
-# should we dowload .ly and .zip just to fill-in tree?
-#
-sync: local-sync
-#	wget --recursive --no-parent --timestamping --dont-remove-listing --no-host-directories --cut-dirs=2 --accept=foo $(MUTOPIA_MIRROR)/$(mutopia-dir)/
-	$(LOOP)
-
-generate-GNUmakefiles: $(dirs-after:%=%/GNUmakefile)
-
-truncate = $(filter-out %/GNUmakefile , $(wildcard */*))
-trunc:
-	rm -fr $(truncate)
-
-# too time-consuming?
-# local-dist: local-ly-clean
-
-local-help: local-ports-help
-
-local-ports-help:
-	@echo -e "\
-  download    download .lys from $(MUTOPIA_MIRROR)\n\
-  ly-clean    move all .lys to $(outdir)\n\
-  sync        generate missing parts of tree\n\
-  trunc       truncate tree\n\
-"\
-
diff --git a/make/ports-vars.make b/make/ports-vars.make
deleted file mode 100644
index e44308971e..0000000000
--- a/make/ports-vars.make
+++ /dev/null
@@ -1,45 +0,0 @@
-
-# -> mutopia-vars.make
-MUTOPIA_MIRROR = http://www.mutopiaproject.org/ftp
-# ugh: doesn't work
-# mutopia-dir = $(pwd:%/mutopia/%=mutopia)
-mutopia-dir = $(shell pwd | sed 's@.*mutopia@@')
-
-
-wget-list = $(mutopia-examples:%=$(mutopia-dir)/%)
-
-dirs-ignore = GNUmakefile out out-% index.html ftp
-dirs-before = $(SUBDIRS)
-dirs-after = $(filter-out .,$(shell find . -maxdepth 1 -type d -not -name 'out*'))
-
-
-GNUmakefile = '\
-depth = $(depth)/..\n\
-include $$(depth)/ports/ports.make\n\
-'
-
-
-#
-# scores for target local-WWW (duh)
-#
-examples=
-
-
-#
-# scores for target mutopia
-#
-# Hairy hack to support name `score.ly' inside zipfile.
-# This will fail to download and build mutopia in one go,
-# either download first, or issue `make mutopia' twice.
-# How to really fix this?
-#
-mutopia-parts = $(patsubst %.ly,%,$(wildcard *-part.ly))
-mutopia-scores = $(patsubst %.ly,%,$(wildcard $(mutopia-name).ly score.ly))
-ifeq ($(mutopia-scores),)
-mutopia-scores = $(patsubst %.ly,%, $(shell grep -l '\\score' *.ly))
-ifeq ($(mutopia-scores),)
-mutopia-scores = $(mutopia-name)
-endif
-endif
-mutopia-examples = $(sort $(mutopia-scores) $(mutopia-parts))
-
diff --git a/make/srcdir.make.in b/make/srcdir.make.in
deleted file mode 100644
index 734ce42bd4..0000000000
--- a/make/srcdir.make.in
+++ /dev/null
@@ -1,54 +0,0 @@
-# -*-Makefile-*-
-# specific srcdir makefile for LilyPond  
-
-depth=.
-
-# Don't try to outsmart us, you puny computer!
-ifeq (0,${MAKELEVEL})
-  MAKE:=$(MAKE) --no-builtin-rules
-endif
-
-# Use alternate configurations alongside eachother:
-#
-#     ./configure --enable-configsuffix=debug
-#     make conf=debug
-#
-# uses config-debug.make and config-debug.h; output goes to out-debug.
-#
-ifdef conf
-  CONFIGSUFFIX=-$(conf)
-endif
-
-# Use same configurations, but different output directory:
-#
-#     make out=WWW
-#
-# uses config.make and config.h; output goes to out-WWW.
-#
-ifdef out
-  outbase=out-$(out)
-else
-  outbase=out$(CONFIGSUFFIX)
-endif
-
-config = config$(CONFIGSUFFIX).make
-
-include $(config)
-
-export SRCMAKE=$(MAKE) -C $(srcdir) -f GNUmakefile.in builddir=$(builddir)
-
-default: all
-
-%:
-	$(SRCMAKE) $@
-
-web: 
-	$(SRCMAKE) out=www WWW
-	$(SRCMAKE) out=www WWW-post
-
-web-install:
-	$(SRCMAKE) out=www install-WWW
-
-install:
-	$(SRCMAKE) install
-	$(SRCMAKE) final-install
diff --git a/make/stepmake.make b/make/stepmake.make
deleted file mode 100644
index dee7d04835..0000000000
--- a/make/stepmake.make
+++ /dev/null
@@ -1,91 +0,0 @@
-# make/Stepmake.make
-
-include $(depth)/make/toplevel-version.make
-
-# Use alternate configurations alongside eachother:
-#
-#     ./configure --enable-config=debug
-#     make conf=debug
-#
-# uses config-debug.make and config-debug.h; output goes to out-debug.
-#
-ifdef conf
-  CONFIGSUFFIX=-$(conf)
-endif
-
-# Use same configuration, but different output directory:
-#
-#     make out=www
-#
-# uses config.make and config.h; output goes to out-www.
-#
-ifdef out
-  outbase=out-$(out)
-else
-  outbase=out$(CONFIGSUFFIX)
-endif
-
-ifdef config
-  config_make=$(config)
-else
-  ifeq ($(builddir),)
-    config_make=$(depth)/config$(CONFIGSUFFIX).make
-  else
-    config_make=$(builddir)/config$(CONFIGSUFFIX).make
-  endif
-endif
-
-ifeq ($(builddir),)
-  outroot=.
-else
-  outroot=$(builddir)/$(patsubst $(shell cd $(depth); pwd)%,%,$(pwd))
-endif
-
-include $(config_make)
-
-outdir=$(outroot)/$(outbase)
-
-# why not generic ?? 
-config_h=$(builddir)/config$(CONFIGSUFFIX).h
-
-# The outdir that was configured for: best guess to find binaries
-outconfbase=out$(CONFIGSUFFIX)
-outconfdir=$(outroot)/$(outconfbase)
-
-# user package
-stepdir = $(stepmake)/stepmake
-# for stepmake package
-# stepdir = $(depth)/stepmake
-
-STEPMAKE_TEMPLATES := generic $(STEPMAKE_TEMPLATES) 
-LOCALSTEPMAKE_TEMPLATES:= generic $(LOCALSTEPMAKE_TEMPLATES)
-
-# Don't try to outsmart us, you puny computer!
-# Well, UGH.  This only removes builtin rules from
-# subsequent $(MAKE)s, *not* from the current run!
-ifeq ($(BUILTINS_REMOVED),)
-  export BUILTINS_REMOVED = yes
-  MAKE:=$(MAKE) --no-builtin-rules
-  include $(stepdir)/no-builtin-rules.make
-endif
-.SUFFIXES:
-
-all:
-
--include $(addprefix $(depth)/make/,$(addsuffix -inclusions.make, $(LOCALSTEPMAKE_TEMPLATES)))
-
--include $(addprefix $(stepdir)/,$(addsuffix -inclusions.make, $(STEPMAKE_TEMPLATES)))
-
-
-include $(addprefix $(stepdir)/,$(addsuffix -vars.make, $(STEPMAKE_TEMPLATES)))
-
-# ugh. need to do this because of PATH :=$(topdir)/..:$(PATH) 
-include $(addprefix $(depth)/make/,$(addsuffix -vars.make, $(LOCALSTEPMAKE_TEMPLATES))) 
-
-
-include $(addprefix $(depth)/make/,$(addsuffix -rules.make, $(LOCALSTEPMAKE_TEMPLATES))) 
-include $(addprefix $(stepdir)/,$(addsuffix -rules.make, $(STEPMAKE_TEMPLATES))) 
-include $(addprefix $(depth)/make/,$(addsuffix -targets.make, $(LOCALSTEPMAKE_TEMPLATES))) 
-include $(addprefix $(stepdir)/,$(addsuffix -targets.make, $(STEPMAKE_TEMPLATES))) 
-
-
diff --git a/make/substitute.make b/make/substitute.make
deleted file mode 100644
index 21f626ea3a..0000000000
--- a/make/substitute.make
+++ /dev/null
@@ -1,31 +0,0 @@
-# make/Substitute.make
-
-#guh
-include $(stepdir)/substitute-vars.make
-include $(stepdir)/substitute-rules.make
-
-ATVARIABLES = \
-  BASH\
-  DATE\
-  sharedstatedir\
-  GUILE\
-  bindir\
-  date\
-  datadir\
-  lilypond_datadir\
-  lilypond_libdir\
-  local_lilypond_datadir\
-  local_lilypond_libdir\
-  localedir\
-  PACKAGE\
-  package\
-  PATHSEP\
-  PERL\
-  prefix\
-  program_prefix\
-  program_suffix\
-  PYTHON\
-  SHELL\
-  TOPLEVEL_VERSION\
-  step-bindir\
-
diff --git a/make/toplevel-version.make b/make/toplevel-version.make
deleted file mode 100644
index f657bfecee..0000000000
--- a/make/toplevel-version.make
+++ /dev/null
@@ -1,8 +0,0 @@
-# Toplevel_version.make
-
-include $(depth)/VERSION
-TOPLEVEL_MAJOR_VERSION=$(MAJOR_VERSION)
-TOPLEVEL_MINOR_VERSION=$(MINOR_VERSION)
-TOPLEVEL_PATCH_LEVEL=$(PATCH_LEVEL)
-# use to send patches, always empty for released version:
-TOPLEVEL_MY_PATCH_LEVEL=$(MY_PATCH_LEVEL)
diff --git a/mf/GNUmakefile b/mf/GNUmakefile
deleted file mode 100644
index f8f3d5d5e8..0000000000
--- a/mf/GNUmakefile
+++ /dev/null
@@ -1,172 +0,0 @@
-depth = ..
-
-STEPMAKE_TEMPLATES=metafont install install-out
-
-include $(depth)/make/stepmake.make 
-
-AF_FILES = $(wildcard *.af) 
-
-EXTRA_DIST_FILES += README feta.tex
-
-# We don't use $(MF_FILES), because there's more .mf cruft here
-FETA_MF_FILES = $(wildcard feta[0-9]*.mf)\
-	$(wildcard feta-braces*[0-9].mf)\
-	$(wildcard feta-din*[0-9].mf)\
-	$(wildcard feta-nummer*[0-9].mf)\
-	$(wildcard parmesan[0-9]*.mf)
-
-FETA_FONTS = $(FETA_MF_FILES:.mf=)
-
-XPM_FONTS = feta20 feta-din10 feta-nummer10 feta-braces20 parmesan20
-
-LOG_FILES = $(FETA_MF_FILES:%.mf=$(outdir)/%.log)
-TEXTABLES = $(FETA_MF_FILES:%.mf=$(outdir)/%.tex)
-AFM_FILES = $(FETA_MF_FILES:%.mf=$(outdir)/%.afm) \
-	$(AF_FILES:%.af=$(outdir)/%.afm)
-ENC_FILES = $(TEXTABLES:.tex=.enc)
-TFM_FILES = $(FETA_MF_FILES:%.mf=$(outdir)/%.tfm)
-FETA_LIST_FILES = $(FETA_MF_FILES:%.mf=$(outdir)/%list.ly)
-
-
-ENCODING_FILE=$(findstring $(<:.mf=.enc), $(FETA_MF_FILES:.mf=.enc))
-MFTRACE_FLAGS=$(if $(ENCODING_FILE),--encoding $(ENCODING_FILE),)
-
-SAUTER_FONTS = cmbxti8
-
-ALL_FONTS = $(FETA_FONTS) $(SAUTER_FONTS)
-PFA_FILES = $(ALL_FONTS:%=$(outdir)/%.pfa)
-PFB_FILES = $(PFA_FILES:%.pfa=%.pfb)
-
-# Make tfm files first, log files last, 
-# so that normally log files aren't made twice
-ALL_GEN_FILES= $(TFM_FILES) $(TEXTABLES) $(AFM_FILES) $(TFM_FILES) $(LOG_FILES) $(ENC_FILES) $(FETA_LIST_FILES) $(PFA_FILES) $(outdir)/lilypond.map $(outdir)/fonts.scale
-
-#PRE_INSTALL=$(MAKE) "$(ALL_GEN_FILES)"
-INSTALLATION_DIR=$(local_lilypond_datadir)/fonts/source
-INSTALLATION_FILES=$(MF_FILES) $(AF_FILES)
-
-INSTALLATION_OUT_SUFFIXES=1 2 3 4 5 6
-
-INSTALLATION_OUT_DIR1=$(local_lilypond_datadir)/tex
-INSTALLATION_OUT_FILES1=$(TEXTABLES)
-
-INSTALLATION_OUT_DIR2=$(local_lilypond_datadir)/fonts/afm
-INSTALLATION_OUT_FILES2=$(AFM_FILES)
-
-INSTALLATION_OUT_DIR3=$(local_lilypond_datadir)/fonts/tfm
-INSTALLATION_OUT_FILES3=$(TFM_FILES)
-
-INSTALLATION_OUT_DIR4=$(local_lilypond_datadir)/ly
-INSTALLATION_OUT_FILES4=$(FETA_LIST_FILES)
-
-INSTALLATION_OUT_DIR5=$(local_lilypond_datadir)/fonts/type1
-INSTALLATION_OUT_FILES5=$(PFA_FILES) $(outdir)/fonts.scale
-
-INSTALLATION_OUT_DIR6=$(local_lilypond_datadir)/dvips/
-INSTALLATION_OUT_FILES6=$(outdir)/lilypond.map
-
-export MFINPUTS:=.:$(MFINPUTS)
-
-default: pfa_warning $(ALL_GEN_FILES)
-
-
-pfa_warning:
-ifneq ($(notdir $(MFTRACE)),mftrace)
-	@echo ""
-	@echo "ERROR: mftrace not found"
-	@echo ""
-	@echo "For obtaining PFA fonts, either install mftrace "
-	@echo "(see http://www.xs4all.nl/~hanwen/mftrace/ ),"
-	@echo "or try one of the following commands in this directory: "
-	@echo ""
-	@echo " make get-pfa "
-	@echo " make get-rpm-pfa "
-	@echo " make get-deb-pfa "
-	@echo ""
-	@echo "These commands will try to download the files from the internet."
-	@false
-endif
-
-
-debian-mirror=http://ftp.us.debian.org
-debian-package =lilypond_$(TOPLEVEL_VERSION)-1_i386.deb
-$(outdir)/$(debian-package):
-	wget --passive-ftp -P $(outdir) $(debian-mirror)/debian/pool/main/l/lilypond/$(debian-package)
-
-get-deb-pfa: $(outdir)/$(debian-package)
-	rm -rf $(outdir)/./usr
-	ar p $< data.tar.gz | \
-		tar -C $(outdir) -zvxf - '*.pfa'
-	touch $(addprefix $(outdir)/, $(addsuffix .bla,$(SAUTER_FONTS)))
-	cp `find $(outdir)/usr/ -name '*.pfa'` $(outdir)/
-
-
-redhat-package=lilypond-$(TOPLEVEL_VERSION)-1.i386.rpm
-$(outdir)/$(redhat-package):
-	wget  --passive-ftp -P $(outdir) http://lilypond.org/download/binaries/RedHat-9/$(redhat-package)
-
-get-rpm-pfa: $(outdir)/$(redhat-package)
-	cd $(outdir) ; rm -rf usr/ # (root alert!) 
-	cd $(outdir) ; rpm2cpio $(redhat-package) | cpio -uid '*.pfa'
-	touch $(addprefix $(outdir)/, $(addsuffix .bla,$(SAUTER_FONTS)))
-	cp `find $(outdir)/usr/ -name '*.pfa'` $(outdir)/
-
-# change this dependency 
-get-pfa: get-rpm-pfa
-
-
-##
-## todo: this also depends on .tfm, FIXME.
-$(outdir)/%.afm  $(outdir)/%.enc  $(outdir)/%.tex $(outdir)/%list.ly $(outdir)/%.dep: $(outdir)/%.log $(outdir)/%.tfm
-	$(PYTHON) $(buildscript-dir)/mf-to-table.py --package=$(topdir) --outdir=$(outdir) --dep $(outdir)/$(<F:.log=.dep)  --afm $(outdir)/$(<F:.log=.afm)  --enc $(outdir)/$(<F:.log=.enc) --tex $(outdir)/$(<F:.log=.tex) --ly $(outdir)/$(<F:.log=list.ly) $<
-
-fontdir: $(addprefix $(outdir)/, lilypond.map lilypond.sfd private-fonts fonts.scale fonts.dir)
-
-## Urg
-mapentry=$(1) $(shell fgrep FontName $(outdir)/$(1).afm | sed -e 's/FontName *//') <$(1).pfaX
-
-map = $(foreach a,$(2),$(call $(1),$(a)))
-$(outdir)/lilypond.xmap: $(AFM_FILES)
-	echo '$(call map,mapentry,$(ALL_FONTS))' | \
-		tr 'X' '\n' | sed -e 's/^ *//'> $@
-
-# using shell for loop seems most robust
-$(outdir)/lilypond.map: $(AFM_FILES)
-	for i in $(FETA_FONTS); do echo $$i $$(fgrep FontName $(outdir)/$$i.afm | sed -e 's/FontName *//') '<'$$i.pfa; done > $@
-	for i in $(SAUTER_FONTS); do echo "$$i $$i <$$i.pfa"; done >> $@
-
-
-$(outdir)/fonts.scale: $(PFA_FILES)
-#	cd $(outdir) && echo $(FETA_MF_FILES:.mf=.pfa) $(FETA_MF_FILES:.mf=.pfb) | $(PYTHON) $(topdir)/buildscripts/make-font-dir.py  > $(@F)
-	cd $(outdir) && echo *.pfa *.pfb | $(PYTHON) $(topdir)/buildscripts/make-font-dir.py  > $(@F)
-
-$(outdir)/fonts.dir: $(outdir)/fonts.scale
-	cd $(outdir) && mkfontdir
-
-# Sketch map file
-$(outdir)/lilypond.sfd:
-#	cd $(outdir) && echo sketch $(FETA_MF_FILES:.mf=.pfa) | $(PYTHON) $(topdir)/buildscripts/make-font-dir.py  > $(@F)
-	cd $(outdir) && echo sketch *.pfa | $(PYTHON) $(topdir)/buildscripts/make-font-dir.py  > $(@F)
-
-# Sodipodi map file
-SODIPODI_FONTS = parmesan20 feta-braces0 feta-nummer10 feta20
-$(outdir)/private-fonts:
-	cd $(outdir) && echo sodipodi $(SODIPODI_FONTS:%=%.pfa) | $(PYTHON) $(topdir)/buildscripts/make-font-dir.py  > $(@F)
-
-local-clean:
-	rm -f mfplain.mem mfplain.log 
-	rm -f *.tfm *.log
-
-afm: $(AFM_FILES)
-pfa: afm $(PFA_FILES) fontdir
-pfb: afm $(PFB_FILES) fontdir
-
-
-# stupid trick to have separate rules for each PFA font ;
-# otherwise building PFAs is all-or-nothing.
-$(SAUTER_FONTS:%=$(outdir)/%.bla):
-	$(foreach i, $@, touch $i && ) true
-
-$(outdir)/%.pfa: $(outdir)/%.bla
-	$(MFTRACE) -I $(outdir)/ --pfa --simplify --keep-trying $(notdir $(basename $@))  && mv $(notdir $@) $(outdir)/
-
diff --git a/mf/README b/mf/README
deleted file mode 100644
index 7dad4c4a22..0000000000
--- a/mf/README
+++ /dev/null
@@ -1,18 +0,0 @@
-
-This is a font of music symbols.  All MF sources are original.  Most
-of the doco is in comments in the MF code, and in
-Documentation/tex/fonts.doc
-
-To make xpms of feta20 font:
-
-    make xpms
-
-
-Accordion symbols are broken: comment-out 
-
-    input feta-accordion;
-
-from feta-schrift, and remake mf dir:
-
-    make clean
-    make all xpms
diff --git a/mf/feta-accordion.mf b/mf/feta-accordion.mf
deleted file mode 100644
index 461f27fe78..0000000000
--- a/mf/feta-accordion.mf
+++ /dev/null
@@ -1,195 +0,0 @@
-% -*- Fundamental -*-
-
-fet_begingroup("accordion")
-
-accreg_dot_size# := .5staff_space#;
-accreg_linethickness# := 1.3stafflinethickness#;
-
-% This dimention is the same on all registersymbols.
-% The different symbols should calculate their other
-% dimensions from this and accreg_dot_size
-accreg_lh# := 1.0staff_space#;
-
-define_pixels(accreg_dot_size, accreg_linethickness, accreg_lh);
-pen accreg_pen;
-accreg_pen := pencircle xscaled accreg_linethickness yscaled 0.7accreg_linethickness;
-
-fet_beginchar("accDiscant", "accDiscant", "accDiscant")
-	save r, sx;
-	r# = 3/2accreg_lh#;
-	define_pixels(r);
-%	set_char_box(r#, r#, 2r#, 0);
-	set_char_box(r#, r#, 0r#, 2r#); %% arg3 = under linjen, arg4 = over
-	pickup accreg_pen;
-	draw fullcircle scaled 2r;
-	sx = cosd(19.471221);
-	draw (-sx*r, r/3)--(sx*r, r/3);
-	draw (-sx*r, -r/3)--(sx*r, -r/3);
-	currentpicture := currentpicture shifted (0, r);
-fet_endchar;
-
-fet_beginchar("accDot", "accDot", "accDot")
-	set_char_box(accreg_dot_size#, accreg_dot_size#, 0, 0);
-	pickup pencircle scaled accreg_dot_size;
-	draw(0, 0);
-fet_endchar;
-
-fet_beginchar("accFreebase", "accFreebase", "accFreebase")
-	save r;
-	r#= accreg_lh#;
-	define_pixels(r);
-	set_char_box(r#, r#, 0, 2r#);
-	pickup accreg_pen;
-	draw fullcircle scaled 2r;
-	draw (-r, 0)--(r, 0);
-	currentpicture := currentpicture shifted (0, r);
-fet_endchar;
-
-fet_beginchar("accStdbase", "accStdbase", "accStdbase")
-	save r, sx;
-	r# = 2accreg_lh#;
-	define_pixels(r);
-	sx = cosd 30 ;
-	set_char_box(r#, r#, 0, 2r#);
-	pickup accreg_pen;
-	draw fullcircle scaled 2r;
-	draw (-r, 0)--(r, 0);
-	draw (-sx*r, r/2)--(sx*r, r/2);
-	draw (-sx*r, -r/2)--(sx*r, -r/2);
-	currentpicture := currentpicture shifted (0, r);
-fet_endchar;
-
-%%% strange turning path.
-fet_beginchar("accBayanbase", "accBayanbase", "accBayanbase")
-	save lh;
-	lh = accreg_lh;
-%	set_char_box(accreg_lh#, accreg_lh#, 3accreg_lh#, 0);
-	set_char_box(accreg_lh#, accreg_lh#, 0, 3accreg_lh#);
-	pickup pencircle scaled accreg_linethickness;
-	%draw (0, 0)--(2w, 0)--(2w, 3accreg_lh)--(0, 3accreg_lh)--(0, 0);
-	draw (0, 0)--(2w, 0)--(2w, 3accreg_lh)--(0, 3accreg_lh)--cycle;
-	draw (0, accreg_lh)--(2w, accreg_lh);
-	draw (0, 2accreg_lh)--(2w, 2accreg_lh);
-	currentpicture := currentpicture shifted (-w, 0);% -3lh);
-fet_endchar;
-
-def def_B(expr w, h) = 
-	% huh?
-	% pickup pencircle scaled 0.1pt;
-	pickup pencircle scaled 0.15linethickness;
-	penpos10(thin, -90);
-	penpos11(thin, -90);
-	penpos12(thick, 0);
-	penpos13(thin, 90);
-	penpos14(thin, 90);
-
-	penpos15(thick, 180);
-	penpos16(thin, -90);
-	penpos17(thin, -90);
-	penpos18(thick, 0);
-	penpos19(thick, 0);
-	z10 = (0, 0);
-	z11 = (cOne*w, 0);
-	z12 = (w, .5mb*h);
-	z13 = (cTwo*w, mb*h);
-	z14 = (2thick, mb*h);
-	z15 = (.94w, h-.5mt*h);
-	z16 = z13 + (0, mt*h);
-	z17 = (0, h);
-	z18 = (1.5thick, 0);
-	z19 = (1.5thick, h);
-enddef;
-
-def def_S(expr w, h) =
-	% huh?
-	%pickup pencircle scaled 0.02pt;
-	pickup pencircle scaled 0.03linethickness;
-	penpos1(thin, 180);
-	penpos2(thin, -90);
-	penpos3(thick, 0);
-	penpos4(.5thick, 90);
-	penpos5(thick, 0);
-	penpos6(thin, -90);
-	penpos7(thin, 180);
-	penpos8(thin, 180);
-	penpos9(thin, 0);
-	z1 = (0, hs);
-	z2 = (w/2, 0);
-	z3 = (w-.5thick, .5mb*h);
-	z4 = (w/2, mb*h);
-	z5 = (.5thick, h-.5mt*h);
-	z6 = (w/2, h);
-	z7 = (w, h-hs);
-	z8 = (0, y2r);
-	z9 = (w, y6l);
-	path bue, bueoverst;
-	bue=z2{left}..z1{up};
-	numeric t;
-	t:=xpart(bue intersectiontimes(z8l--z7l));
-	show t;
-	bueoverst=z6{right}..z7{down};
-enddef;
-
-def def_some_vars =
-	save hs, mb, mt, thin, thick, height, width, cOne, cTwo;
-	width = .8(4 staff_space);
-	height = 2.4staff_space;
-	% URG.  smaller sizes should be wider and fatter
-	%thin = 0.05staff_space;
-	%thick = 0.2staff_space;
-	save bx,hx; 4hx+bx=1.15; 10hx+bx=1;
-	fatten:=designsize*hx+bx*1.2;
-	thick:= 0.2staff_space*fatten;
-	% urg: mustn't ever go thinner than blot!
-	thin#:= blot_diameter#;
-	define_pixels (thin);
-
-	hs = 0.4staff_space;
-	mb = .53;
-	mt = .47;	
-	cOne = 0.65;
-	cTwo = 0.60;
-enddef;
-
-def print_penpos (suffix $)=
-	message "z"&str $ &"l = ("&decimal x.$.l&", "&decimal y.$.l&"); z"&str $ &"r = ("&decimal x.$.r&", "&decimal y.$.r&");";
-enddef;
-
-
-%%% strange turning path.
-fet_beginchar("accOldEE", "accOldEE", "accOldEE")
-	set_char_box(staff_space#, staff_space#, 0, 2staff_space#);
-	show w;
-	show h;
-	r = staff_space;
-	lr = .4 staff_space - linethickness;
-	ir = .6 staff_space;
-
-	z1 = (0,0);
-	z2 = (0, ir);
-	penpos1 (0,0);
-	penpos2 ( .05 staff_space + .5 linethickness,0);
-
-	penlabels(1,2,3);
-
-	numeric pp;
-	pickup pencircle scaled blot_diameter;
-	for pp := 0 step 45 until 360:
-		filldraw fullcircle scaled lr shifted (ir*(dir pp));
-		filldraw  (z1r--z1l--z2l--z2r--cycle) rotated pp;
-	endfor
-
-	pickup accreg_pen;
-	draw fullcircle scaled 2r;
-	pickup penrazor;
-
-	filldraw fullcircle scaled lr;
-
-	currentpicture := currentpicture shifted (0, r);
-
-
-fet_endchar;
-
-
-
-fet_endgroup("accordion")
diff --git a/mf/feta-autometric.mf b/mf/feta-autometric.mf
deleted file mode 100644
index a777939034..0000000000
--- a/mf/feta-autometric.mf
+++ /dev/null
@@ -1,139 +0,0 @@
-% 
-% autometric.mf -- administrative MF routines
-% 
-% source file of the Feta (not an acronym for Font-En-Tja)
-% pretty-but-neat music font
-% 
-% (c) 1997--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-%          Jan Nieuwenhuizen <janneke@gnu.org>
-% 
-% these macros help create ascii logging output
-% to automate generation of lily tables and tex backend
-% The output should be parsed by the mf-to-table script
-
-message "******************************************************";
-message "Using feta Autometric macros. ";
-message "Do not worry about the @ signs in the output, they are not errors. "; 
-message "******************************************************";
-
-% font or database?
-def fet_beginfont(expr name,size) =
-	font_identifier:=name&decimal size;
-	font_size size;
-	message "@{font@:GNU@:LilyPond@:"&name&"@:"&decimal size&"@}";
-	message "";
-	enddef;
-
-def fet_endfont(expr name) =
-	message "@{tnof@:"&name&"@}";
-	message "";
-	enddef;
-
-% group or table?
-def fet_begingroup(expr name) =
-	message "@{group@:"&name&"@}";
-	message "";
-	begingroup
-enddef;
-
-def fet_endgroup(expr name) =
-	endgroup;
-	message "@{puorg@:"&name&"@}";
-	message "";
-enddef;
-
-def autometric_output_char=
-	message "@{char@:"&charnamestr&"@:"&decimal charcode&"@:"&decimal charbp&"@:"&decimal charwd&"@:"&decimal chardp&"@:"&decimal charht&"@:"&decimal charwx&"@:"&decimal charwy&"@:"&idstr&"@:"&texstr&"@}";
-enddef;
-
-def hround_pixels(expr sharped) = hround(sharped * hppp) enddef;
-def vround_pixels(expr sharped) = vround(sharped * vppp) enddef;
-
-def tand(expr alpha) = 
-	(sind alpha/cosd alpha)
-	enddef;
-
-%breapth, width, depth, height
-%     breapth	x-depth
-def set_char_box(expr b_sharp, w_sharp, d_sharp,h_sharp) = 
-	save scharbp, scharht, scharwd, schardp;
-
-	% some paranoia if someone calls set_char_box(charwd, charbp, .. )
-	scharbp := b_sharp;
-	scharht := h_sharp;
-	schardp := d_sharp;
-	scharwd := w_sharp;
-
-	charbp := scharbp;
-	charht := scharht;
-	chardp := schardp;
-	charwd := scharwd;
-
-	w := hround(w_sharp *hppp);
-	b := hround(b_sharp *hppp);
-	h := hround(h_sharp *vppp);
-	d := hround(d_sharp *vppp);
-
-	charwx := charwd;
-	charwy := 0;
-enddef;
-
-def no_dimen_beginchar(expr c) =
-	begingroup
-	charcode := if known c: byte c else: 0; fi;
-	charic := 0;
-	clearxy;
-	clearit;
-	clearpen;
-	scantokens extra_beginchar;
-enddef;
-
-
-%
-% we leave the ctrl characters alone.
-%
-code:=32;
-
-% starts just as plain mf's beginchar:
-%     charcode, 
-% and then adds:
-%     charname	see below
-%     id	index in lily's table
-%     texstr	name of tex macro in lily's table and tex backend
-
-% the dims are uninitialised; you should use set_char_box manually.
-def fet_beginchar(expr name, id_lit, texstr_lit) =
-	save texstr, idstr, charnamestr;
-	save charbp;
-	save w,b,h,d;
-	save charwx, charwy;
-
-	string texstr, idstr, charnamestr;
-	texstr := texstr_lit;
-	charnamestr := name;
-	idstr := id_lit;
-
-	no_dimen_beginchar(incr code) name;
-	enddef;
-
-
-def makebox_with_breapth(text r) = 
-	for y = -d, 0, h: r((-b, y),(w,y)); endfor
-	for x = -b, 0, w: r((x, -d),(x, h)); endfor
-enddef;
-
-%
-% override plain endchar.  We want a different box. 
-%
-def breapth_endchar =
-	scantokens extra_endchar;
-	if proofing > 0: makebox_with_breapth(proofrule); fi
-	chardx := (w + b);	%what the hack is chardx
-	shipit;
-	endgroup
-enddef;
-
-def fet_endchar=
-	autometric_output_char;
-	breapth_endchar;
-	enddef;
diff --git a/mf/feta-banier.mf b/mf/feta-banier.mf
deleted file mode 100644
index 04022aacb3..0000000000
--- a/mf/feta-banier.mf
+++ /dev/null
@@ -1,453 +0,0 @@
-% flags 
-%
-
-
-fet_begingroup("flags")
-save outer_path;
-path outer_path;
-
-% Flags pointing down overlap with  the notehead (in x-direction), so 
-% the down-flag can be bigger
-upflag_width# = .650 black_notehead_width# + stemthickness#/2;
-downflag_width# = .833 black_notehead_width# + stemthickness#/2;
-
-right_upflag_space# = .0 upflag_width#;
-right_downflag_space# = .0 downflag_width#;
-
-%
-% Flags pointing down cannot overlap with the notehead in y-direction,
-% so they have less slant.
-
-% Because of optical illusion, the utmost flag (bottom for
-% down-pointing, top for up-pointing) should be smaller than the other
-% flags.  Adobe Sonata doesn't do this correctly.  (Instead they have
-% an extension flag, which looks less elegant)
-%
-
-save hip_thickness, foot_thickness;
-
-hip_thickness# = 1.0 linethickness# + 0.069 staff_space#;
-foot_thickness# =   1.2055 linethickness# + 0.06 staff_space#;
-
-%
-% Inspired by Adobe Sonata and [Wanske]
-% for example, see POSTSCRIPT Language -- program design, 
-% page 119, and [Wanske], p 41,42
-%
-def draw_flag(expr center, flare, 
-	dims, hip_depth, foot_wid, hip_thickness, foot_thickness)=
-	clearxy;
-	save c ;
-	c = 0.7;
-	penpos1(flare, 90);
-	penpos2(whatever, 0);
-	x2r - x2l = hip_thickness;
-	penpos3 (foot_thickness, -20.0);
-
-	z1r  = center;
-	z2r = center + (xpart dims, -ypart(dims) * hip_depth);
-	z3r = center + (xpart(dims) * foot_wid, -ypart dims);
-
-	outer_path := z3r{curl c} .. z2r{up} .. {up}z1r;
-
-	penlabels(1, 2, 3);
-	fill z1l{curl 0}
-		..tension 1.1 .. z2l{down} .. 
-		{curl c} simple_serif(z3l, z3r, 80) &
-		outer_path & z1r -- cycle;
-enddef;
-
-%
-% TODO: calc intersectpoint (see TeX book, p. 137)
-% TODO: calc incision_depth
-% 
-
-def add_flag(expr yoff, flare, hip_wid_multiplier, 
-		hip_dep_multiplier,
-		intersectpoint, hip_thickness, foot_thickness) =
-	begingroup
-	save prev_center, prev_xextreme, prev_yextreme;
-	save rel_foot, ip, center, incision_depth;
-	save prev_hipwid, prev_footdep, prev_hipdep, wid, dep, hip_dep;
-	save hip_dep_ratio, foot_wid_ratio;
-	pair prev_center, center, foot, prev_xextreme, prev_yextreme;
-	pair ip, rel_foot;
-	
-	incision_depth = 1.013;
-	prev_center = point 2 of outer_path;
-	prev_xextreme = point 1 of outer_path;
-	prev_yextreme = point 0 of outer_path;
-	prev_hipwid = xpart (prev_xextreme - prev_center);
-	prev_footdep = -ypart (prev_yextreme - prev_center);
-	prev_hipdep = -ypart(prev_xextreme - prev_center);
-	ip = point intersectpoint of outer_path;
-
-	wid = prev_hipwid * hip_wid_multiplier;
-	hip_dep = prev_hipdep * hip_dep_multiplier;
-
-	center = prev_center + (0,yoff);
-	rel_foot = incision_depth [(wid, hip_dep), ip - center];
-	dep = -ypart(rel_foot);
-	foot_wid_ratio = xpart(rel_foot ) / wid;
-	hip_dep_ratio = hip_dep / dep;
-
-	draw_flag(center, flare, 
-		(wid, dep), hip_dep_ratio, foot_wid_ratio, 
-		hip_thickness, foot_thickness);
-	endgroup
-enddef;
-
-fet_beginchar("8th Flag (up)", "u3", "eighthflag")
-	save flare, 
-		hip_depth_ratio, hip_width,
-		foot_depth, foot_width_ratio;
-
-	flare# = 1.0 staff_space#;
-	hip_depth_ratio = .72; 
-	foot_width_ratio = .8;
-	hip_width# = upflag_width# - hip_thickness#/2;
-
-	foot_depth# =  3 staff_space# - blot_diameter#/2;
-
-	set_char_box(0, hip_width# 
- 		+ stemthickness#/2 + right_upflag_space#, 
-		 foot_depth# + foot_thickness#/2, stemthickness#/2)
-
-	define_pixels(flare, hip_width, hip_thickness,
-		foot_depth, foot_thickness);
-	draw_flag((0,0), flare, 
-		(hip_width, foot_depth), 
-		hip_depth_ratio, foot_width_ratio, hip_thickness, foot_thickness);
-
-	draw_square_block ((-.5 stemthickness,-1 staff_space),
-			   (0, 0));
-fet_endchar;
-
-fet_beginchar("16th Flag (up)", "u4", "sixteenthflag")
-	save flare, 
-		hip_depth_ratio, hip_width,
-		foot_depth, foot_width_ratio;
-	save flagspace, total_depth, flag_count;
-	total_depth# = 3.5 staff_space# - blot_diameter# /2 ;
-	flag_count = 2;
-	flare# = .85 staff_space#;
-	flagspace# = .85 staff_space#;	
-	hip_depth_ratio = .72 ;
-	hip_width# = upflag_width# - hip_thickness#/2;
-	flagspace# + foot_depth# = total_depth#;
-
-	foot_width_ratio = .8;
-
-	set_char_box(0, hip_width#
-		+ stemthickness#/2 + right_upflag_space#, 
-		total_depth# + foot_thickness#/2, stemthickness#/2)
-
-	define_pixels(flare, hip_width, hip_thickness,
-		flagspace,
-		foot_depth,  foot_thickness);
-	draw_flag((0, - flagspace ), flare, 
-		(hip_width, foot_depth), 
-		hip_depth_ratio,foot_width_ratio, hip_thickness, foot_thickness);
-
-	add_flag(flagspace, flare,
-		.97, 1.00, 1.25, hip_thickness, foot_thickness);  
-
-	pickup pencircle scaled stemthickness;
-
-	draw_square_block ((-.5 stemthickness,0),
-			   (0, -2 staff_space));
-fet_endchar;
-
-
-fet_beginchar("32nd Flag (up)", "u5", "thirtysecondflag")
-	save flare, 
-		hip_depth_ratio, hip_width,
-		foot_depth, foot_width_ratio;
-	save flagspace, total_depth, flag_count;
-	flag_count = 3;
-	total_depth#=4.25 staff_space#;
-	flare# = .85 staff_space#;
-	flagspace# = .87 staff_space#;	
-	hip_depth_ratio = .72 ;
-	hip_width# = upflag_width# - hip_thickness#/2;
-	(flag_count-1) * flagspace# + foot_depth# = total_depth#;
-
-	foot_width_ratio = .8;
-
-	set_char_box(0, hip_width#
-		+  right_upflag_space#, 
-		total_depth# + foot_thickness#/2, stemthickness#/2)
-
-	define_pixels(flare, hip_width, hip_thickness,
-		flagspace,
-		foot_depth,  foot_thickness);
-
-	draw_flag((0,- 2 flagspace), flare, 
-		(hip_width, foot_depth), 
-		hip_depth_ratio,foot_width_ratio, hip_thickness, foot_thickness);
-
-	add_flag(flagspace, flare,
-		.97, 1.00, 1.25, hip_thickness, foot_thickness);  
-
-	add_flag(flagspace, flare,
-		.95, 1.05, 1.25, hip_thickness, foot_thickness);  
-
-
-
-	draw_square_block ((-.5 stemthickness,0),
-			   (0, -3 staff_space));
-fet_endchar;
-
-fet_beginchar("64th Flag (up)", "u6", "sixtyfourthflag")
-	save flare, 
-		hip_depth_ratio, hip_width,
-		foot_depth, foot_width_ratio;
-	save flagspace, total_depth, flag_count;
-	
-	flag_count = 4;
-	flare# = .85 staff_space#;
-	flagspace# = .9 staff_space#;	
-	hip_depth_ratio = .72 ;
-	hip_width# = upflag_width# - hip_thickness#/2;
-	total_depth# = 5.25 staff_space#;
-	(flag_count-1) * flagspace# + foot_depth# = total_depth#;
-
-	foot_width_ratio = .8;
-
-	set_char_box(0, hip_width#
-		+  right_upflag_space#, 
-		total_depth# + foot_thickness#/2, stemthickness#/2)
-
-	define_pixels(flare, hip_width, hip_thickness,
-		flagspace,
-		foot_depth,  foot_thickness);
-
-	draw_flag((0,- (flag_count-1)* flagspace), flare, 
-		(hip_width, foot_depth), 
-		hip_depth_ratio,foot_width_ratio, hip_thickness, foot_thickness);
-
-	add_flag(flagspace, flare,
-		.97, 1.00, 1.3, hip_thickness, foot_thickness);  
-
-	add_flag(flagspace, flare,
-		1.00, 1.00, 1.25, hip_thickness, foot_thickness);  
-	add_flag(flagspace, flare,
-		.95, 1.05, 1.25, hip_thickness, foot_thickness);  
-
-	draw_square_block ((-.5 stemthickness,0),
-			   (0, -4 staff_space));
-fet_endchar;
-
-fet_beginchar("8th (down)", "d3", "deighthflag")
-	save flare, 
-		hip_depth_ratio, hip_width,
-		foot_depth, foot_width_ratio;
-	save flagspace, total_depth, flag_count;
-	
-	flag_count = 1;
-	flare# = .99 staff_space#;
-	flagspace# = .9 staff_space#;	
-	hip_depth_ratio = .72 ;
-	hip_width# = downflag_width# - hip_thickness#/2;
-	total_depth# = 2.85 staff_space#;
-	(flag_count-1) * flagspace# + foot_depth# = total_depth#;
-
-	foot_width_ratio = .8;
-
-	set_char_box(0, hip_width#
-		+  right_downflag_space#,
-		total_depth# + foot_thickness#/2, stemthickness#/2)
-
-	define_pixels(flare, hip_width, hip_thickness,
-		flagspace,
-		foot_depth,  foot_thickness);
-
-	draw_flag((0,- (flag_count-1) *flagspace), flare, 
-		(hip_width, foot_depth), 
-		hip_depth_ratio,foot_width_ratio, hip_thickness, foot_thickness);
-	draw_square_block ((-.5 stemthickness,0),
-			   (0, - staff_space));
-
-        y_mirror_char;
-fet_endchar;
-
-%%%%%%%%
-%
-%
-%
-% Single Stroke for Short Appogiatura
-%
-%
-%
-
-fet_beginchar("grace dash (up)", "ugrace", "gracedash")
-	save flare, 
-		hip_depth_ratio, hip_width,
-		foot_depth;
-
-	flare# = 1.0 staff_space#;
-	hip_depth_ratio = .72; 
-	hip_width# = upflag_width# - hip_thickness#/2;
-
-	foot_depth# =  3 staff_space#;
-
-	define_pixels(flare, hip_width, hip_thickness,
-		foot_depth, foot_thickness);
-
-	set_char_box(hip_width# * hip_depth_ratio,
-	  hip_width# +  right_upflag_space#, 
-	  foot_depth# * hip_depth_ratio, -flare#)
-
- 	pickup pencircle scaled 1.5 stemthickness;
- 	draw (-b ,-d) ..
- 	  (w, h);
-
-fet_endchar;
-
-fet_beginchar("grace dash (down)", "dgrace", "dgracedash")
-	save flare, hip_depth_ratio, hip_width,	foot_depth;
-	save flagspace, total_depth, flag_count;
-	
-	flag_count = 1;
-	flare# = .99 staff_space#;
-	flagspace# = .9 staff_space#;	
-	hip_depth_ratio = .72 ;
-	hip_width# = downflag_width# - hip_thickness#/2;
-	total_depth# = 2.85 staff_space#;
-	(flag_count-1) * flagspace# + foot_depth# = total_depth#;
-
-	foot_width_ratio = .8;
-
-	define_pixels(flare, hip_width, hip_thickness,
-		flagspace, foot_depth);
-
-	set_char_box(hip_width# * hip_depth_ratio,
-	  hip_width# +  right_downflag_space#,
-	  foot_depth# * hip_depth_ratio, -flare#)
-
- 	pickup pencircle scaled 1.5 stemthickness;
- 	draw (-b ,-d) ..
- 	  (w, h);
-	y_mirror_char;
-fet_endchar;
-
-fet_beginchar("16th (down)", "d4", "dsixteenthflag")
-	save flare, 
-		hip_depth_ratio, hip_width,
-		foot_depth, foot_width_ratio;
-	save flagspace, total_depth, flag_count;
-	
-	flag_count = 2;
-	flare# = .8 staff_space#;
-	flagspace# = .9 staff_space#;	
-	hip_depth_ratio = .85 ;
-	hip_width# = downflag_width# - hip_thickness#/2;
-	total_depth# = 3.0 staff_space# - blot_diameter# /2;
-	(flag_count-1) * flagspace# + foot_depth# = total_depth#;
-
-	foot_width_ratio = .95;
-
-	set_char_box(0, hip_width#
-		+  right_downflag_space#, 
-		total_depth# + foot_thickness#/2, stemthickness#/2)
-
-	define_pixels(flare, hip_width, hip_thickness,
-		flagspace,
-		foot_depth,  foot_thickness);
-
-	draw_flag((0,- (flag_count-1) *flagspace), flare, 
-		(hip_width, foot_depth), 
-		hip_depth_ratio,foot_width_ratio, hip_thickness, foot_thickness);
-	add_flag(flagspace, flare,
-		.95, 1.00, 1.25, hip_thickness, foot_thickness);  
-
-	
-	draw_square_block ((-.5 stemthickness,0),
-			   (0, - 2 staff_space));
-
-
-	y_mirror_char;
-fet_endchar;
-
-fet_beginchar("32nd (down)", "d5", "dthirtysecondflag")
-	save flare, 
-		hip_depth_ratio, hip_width,
-		foot_depth, foot_width_ratio;
-	save flagspace, total_depth, flag_count;
-	
-	flag_count = 3;
-	flare# = .84 staff_space#;
-	flagspace# = .9 staff_space#;	
-	hip_depth_ratio = .85 ;
-	hip_width# = downflag_width# - hip_thickness#/2;
-	total_depth# = 3.85 staff_space#;
-	(flag_count-1) * flagspace# + foot_depth# = total_depth#;
-
-	foot_width_ratio = .95;
-
-	set_char_box(0, hip_width#
-		+  right_downflag_space#, 
-		total_depth# + foot_thickness#/2, stemthickness#/2)
-
-	define_pixels(flare, hip_width, hip_thickness,
-		flagspace,
-		foot_depth,  foot_thickness);
-
-	draw_flag((0,- (flag_count-1) *flagspace), flare, 
-		(hip_width, foot_depth), 
-		hip_depth_ratio,foot_width_ratio, hip_thickness, foot_thickness);
-	add_flag(flagspace, flare,
-		.97, 1.00, 1.25, hip_thickness, foot_thickness);  
-
-	add_flag(flagspace, flare,
-		.95, 1.05, 1.25, hip_thickness, foot_thickness);  
-	draw_square_block ((-.5 stemthickness,0),
-			   (0, - 3 staff_space));
-
-
-	y_mirror_char;
-fet_endchar;
-fet_beginchar("64th (down)", "d6", "dsixtyfourthflag")
-	save flare, 
-		hip_depth_ratio, hip_width,
-		foot_depth, foot_width_ratio;
-	save flagspace, total_depth, flag_count;
-	
-	flag_count = 4;
-	flare# = .8 staff_space#;
-	flagspace# = .9 staff_space#;	
-	hip_depth_ratio = .85 ;
-	hip_width# = downflag_width# - hip_thickness#/2;
-	total_depth# = 4.35 staff_space#;
-	(flag_count-1) * flagspace# + foot_depth# = total_depth#;
-
-	foot_width_ratio = .98;
-
-	set_char_box(0, hip_width#
-		+ right_downflag_space#, 
-		total_depth# + foot_thickness#/2, stemthickness#/2)
-
-	define_pixels(flare, hip_width, hip_thickness,
-		flagspace,
-		foot_depth,  foot_thickness);
-
-	draw_flag((0,- (flag_count-1) *flagspace), flare, 
-		(hip_width, foot_depth), 
-		hip_depth_ratio,foot_width_ratio, hip_thickness, foot_thickness);
-	add_flag(flagspace, flare,
-		.97, 1.20, 1.175, hip_thickness, foot_thickness);  
-	add_flag(flagspace, flare,
-		.97, 1.10, 1.175, hip_thickness, foot_thickness);  
-
-	add_flag(.98 flagspace, flare,
-		.91, 1.05, 1.2, hip_thickness, foot_thickness);  
-
-	draw_square_block ((-.5 stemthickness,0),
-			   (0, - 4 staff_space));
-
-	y_mirror_char;
-fet_endchar;
-
-
-
-fet_endgroup("flags");
diff --git a/mf/feta-beugel.mf b/mf/feta-beugel.mf
deleted file mode 100644
index 8ab96f18c6..0000000000
--- a/mf/feta-beugel.mf
+++ /dev/null
@@ -1,108 +0,0 @@
-
-
-input feta-autometric;
-input feta-macros;
-
-staffsize# := 20 pt#;  %% arbitrary.
-
-
-input feta-params;
-
-font_coding_scheme "feta braces";
-
-% we set the designsize arbitrarily at 10
-% if the * 10 is left out, pktrace gets confused  over the proper magnification,
-% and makes it too large.
-fet_beginfont("feta-braces", font_count * 10);
-
-mode_setup;
-
-
-
-save code;
-code := -1;
-
-
-def abc_encode_int (expr i) =
-	if i > 0:
-		abc_encode_int(i div 26)&char(65 + i mod 26)
-	else:
-		"A"
-	fi
-enddef ;
-
-def draw_brace (expr height_sharp, width_sharp, slt_sharp) =
-
-	save pendir, height, width, thin, thick, slt;
-	save penangle;
-	height# := height_sharp;
-	width# := width_sharp;
-	slt# := slt_sharp;
-
-%% +1  is needed because fet_beginchar increments after dumping the strings.
-fet_beginchar("brace number "&(decimal (code + 1)), "brace"&abc_encode_int(code+1),
-		"brace"&abc_encode_int (code+1))
-
-	set_char_box (0, width#, height#/2, height#/2);
-	  
-	define_pixels (height, width, slt);
-	thin = 2 slt;
-	thick = .5 width;
-	
-	z2 = .5 [z1, z3];
-	y3l = y1 + height/2;
-	x3 = x1 + width;
-	y1 =0;
-	x3 = - width / 2;
-
-	pair pendir;
-	pendir = unitvector(x3 - x1, y3l/6 - y1);
-	penangle = angle pendir - 90;
-	penpos3(thin, penangle);
-	penpos2(thick, angle(z3 -z1) -90 );
-	penpos1(2/3 thin, penangle);
-	
-	penlabels(1,2,3);
-	fill z2r ..  simple_serif (z3r, z3l, 90)
-		.. z2l .. simple_serif (z1l, z1r, 90) ..cycle;
-
-	addto currentpicture also currentpicture yscaled -1;
-fet_endchar;
-enddef;
-
-
-
-save stafflinethickness;
-save increment;
-
-linethickness := 0.5pt#;
-increment := 0.5pt#;
-y := 10pt#;
-
-
-
-for i := 0 step 1 until font_count:
-
-  %% We can't store more than 64 (65?) height dimensions in a TFM
-  %% file, so we make small files.
-
-  for j := 0 step 1 until 63:
-    % message "l: "&decimal l;
-    % note: define_pixels (x) multiplies x by hppp,
-    % must never get bigger than infinity
-    y := min (y + increment, infinity/hppp - 1);
-
-    % x should be about one staff space, taking brace to have
-    % default height of 3 staffs, this yields height / 3 / 4 = 12
-    % but 15 looks better
-    x := y / 15;
-
-    increment := x / 10;
-    linethickness :=  min (0.5pt#, y/150);
-    if i = font_count:
-      draw_brace (y, x, linethickness);
-    fi
-  endfor;
-endfor
-  
-fet_endfont("feta-braces");
diff --git a/mf/feta-beum.mf b/mf/feta-beum.mf
deleted file mode 100644
index a3ffe74758..0000000000
--- a/mf/feta-beum.mf
+++ /dev/null
@@ -1,23 +0,0 @@
-% 
-% feta-beum.mf --  implement runtime MF beams
-% 
-% source file of LilyPond's pretty-but-neat music font
-% 
-% (c) 1997--2004 Jan Nieuwenhuizen <janneke@gnu.org>
-% 
-mode_setup;
-
-def drawbeam(expr widths,slope,thicks) =
-	beginchar(0,0,0,0) "Embedded mf";
-		width#:=widths*1pt#;
-		thick#:=thicks*1pt#;
-		height#:=slope*width#;
-		% do separately, to identify "value too large"
-		define_pixels(height);
-		define_pixels(thick);
-		define_pixels(width);
-		fill (0, - thick/2)--(width,height - thick/2)--(width,height+thick/2)--(0,thick/2)
-			-- cycle;
-		endchar;
-	enddef;
-
diff --git a/mf/feta-bolletjes.mf b/mf/feta-bolletjes.mf
deleted file mode 100644
index 9cef053267..0000000000
--- a/mf/feta-bolletjes.mf
+++ /dev/null
@@ -1,535 +0,0 @@
-%  -*-Fundamental-*-
-% feta-bolletjes.mf --  implement noteheads
-% 
-% source file of LilyPond's pretty-but-neat music font
-% 
-% (c) 1997--2004 Jan Nieuwenhuizen <janneke@gnu.org>
-% & Han-Wen Nienhuys <hanwen@cs.uu.nl>
-% & Juergen Reuter <reuter@ipd.uka.de>
-% 
-
-test_outlines := 0;
-
-
-% most beautiful noteheads are pronounced, not circular, 
-% and not even symmetric.
-% These examples are inspired by [Wanske], see literature list
-
-
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-% NOTE HEAD VARIABLES
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-save black_notehead_width, noteheight,
-	slash_thick, slash_slope, overdone_heads;
-numeric black_notehead_width, noteheight, slash_thick;
-
-fet_begingroup("noteheads");
-
-
-
-% slope of slash. From scm/grob-description.scm. How to auto-copy?
-slash_slope := 1.7; 
-
-% thickness of slash lines. quarter notes get 1.5slt width.
-slash_thick# := 2/3*0.48staff_space#;
-
-
-%
-% Hand-engraved music often has balls extending above and below
-% the lines.  If you like that, modify overdone heads (unit:
-% stafflinethickness)
-%
-overdone_heads = 0.0;
-noteheight#:=staff_space#+ (1 + overdone_heads) *stafflinethickness#;
-
-define_pixels(slash_thick, noteheight);
-
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%
-% SLANT moves both extremes on the long axis (by SLANT * ELLIPSIDITY,
-% so SLANT = -1, puts the extreme on the long axis next to the short axis one.)
-%
-
-def draw_outside_ellipse (expr ellipsidity, tilt, superness,
-			slant) =
-	save attachment_y;
-	save p;
-	path p;
-
-	p := superellipse ((ellipsidity, 0), (-slant * ellipsidity, 1.0),
-			(- ellipsidity, 0), (slant * ellipsidity, -1.0), superness);
-
-	p := p rotated tilt;
-
-	save top_point, right_point;
-	pair top_point, right_point;
-
-	top_point := directionpoint left of p;
-	right_point := directionpoint up of p;
-
-	save scaling, width, height;
-
-	scaling# = noteheight# /(2 ypart (top_point));
-	width# := 2 xpart (right_point) * scaling#;
-
-	define_pixels (width, scaling);
-	
-	set_char_box (0, width#, noteheight#/2, noteheight#/2);
-
-	% attachment Y
-	charwy := ypart (right_point) * scaling#;
-	charwx := width# ;
-
-	p := p scaled scaling shifted (width/2, 0) ;
-	if test_outlines = 1:
-		pickup pencircle scaled 1 ; draw p;
-	else:
-		fill p;
-	fi;
-enddef;
-
-
-def undraw_inside_ellipse (expr ellipsidity, tilt, superness, clearance,
-			center) =
-begingroup
-	save p;
-	path p;
-
-	p := superellipse ((ellipsidity, 0), (0, 1.0),
-			(- ellipsidity, 0), (0, -1.0), superness);
-
-	p := p rotated tilt;
-
-	save top_point, right_point;
-	pair top_point, right_point;
-
-	top_point := directionpoint left of p;
-	right_point := directionpoint up of p;
-
-	save height, scaling;
-
-	height# = staff_space# + stafflinethickness# - clearance;
-	scaling# = height# /(2 ypart (top_point));
-
-	define_pixels (scaling);
-	p := (p scaled scaling) shifted center;
-
-	if test_outlines = 1:
-		pickup pencircle scaled 1; draw p;
-	else:
-		unfill p;
-	fi
-endgroup;
-enddef;
-
-
-
-
-
-%
-% dimensions aren't entirely right.
-%
-fet_beginchar ("Brevis notehead", "-1", "brevishead");
-	save stemthick, fudge;
-	define_pixels (stemthick);
-	fudge = blot_diameter /2;
-	stemthick# = 2 stafflinethickness#;
-
-	draw_outside_ellipse (1.80, 0, 0.707, 0);
-	undraw_inside_ellipse (1.30, 125, 0.68, 2 stafflinethickness#,
-				(w /2, 0));
-
-	pickup pencircle scaled stemthick;
-
-	bot y1 = -d;
-	top y2 = h;
-	rt x1 - fudge = 0;
-	x1 = x2;
-
-	fudge + lft x3 = w;
-	x4 = x3;
-	y4 = y2;
-	y3 = y1;
-
-	draw_gridline(z1,z2,stemthick);
-	draw_gridline(z3,z4,stemthick);
-
-fet_endchar;
-
-
-
-fet_beginchar("Whole notehead", "0", "wholehead")
-	draw_outside_ellipse (1.80 - puff_up_factor / 3.0, 0, 0.707, 0);
-	undraw_inside_ellipse (1.30, 125 - puff_up_factor *10,
-			0.68, 2 stafflinethickness#,
-			(w /2, 0));
-
-%	draw_staff_outline (-2, 2, 0.5);
-
-fet_endchar;
-
-
-fet_beginchar("Half notehead", "1", "halfhead")
-	draw_outside_ellipse (1.53 - puff_up_factor / 3.0, 34, 0.66, 0.17);
-	undraw_inside_ellipse (3.25, 33, 0.81,
-		2.5 stafflinethickness#, (w/2, 0));
-
-fet_endchar;
-	
-fet_beginchar("Quart notehead", "2", "quarthead")
-
-	% used to have 32. With 30, they are slightly bolder.
-	draw_outside_ellipse (1.42 - puff_up_factor / 3.0, 30, 0.707, 0);
-	black_notehead_width# := charwd;
-fet_endchar;
-
-%%%%%%%%%%%%%%%%
-
-%% testing shapes.
-
-if 0 = 1 : 
-
-
-fet_beginchar("Quart noteheadPQ", "2PQ", "quartheadPQ")
-	draw_outside_ellipse (1.0 - puff_up_factor / 2.0, 32, 0.707, 0);
-fet_endchar;
-
-fet_beginchar("Quart noteheadAA", "2AA", "quartheadAA")
-	draw_outside_ellipse (1.35 - puff_up_factor / 2.0, 32, 0.707, 0);
-fet_endchar;
-
-fet_beginchar("Quart noteheadAB", "2AB", "quartheadAB")
-	draw_outside_ellipse (1.4 - puff_up_factor / 2.0, 32, 0.707, 0);
-	
-fet_endchar;
-fet_beginchar("Quart noteheadAC", "2AC", "quartheadAC")
-	draw_outside_ellipse (1.45 - puff_up_factor / 2.0, 32, 0.707, 0);
-fet_endchar;
-
-fet_beginchar("Quart noteheadAD", "2AD", "quartheadAD")
-	draw_outside_ellipse (1.5 - puff_up_factor / 2.0, 32, 0.707, 0);
-fet_endchar;
-
-fet_beginchar("Quart noteheadAD", "2AE", "quartheadAD")
-	draw_outside_ellipse (1.55 - puff_up_factor / 2.0, 32, 0.707, 0);
-fet_endchar;
-
-fet_beginchar("Quart noteheadAD", "2AF", "quartheadAD")
-	draw_outside_ellipse (1.6 - puff_up_factor / 2.0, 32, 0.707, 0);
-fet_endchar;
-fet_beginchar("Quart noteheadAD", "2AG", "quartheadAD")
-	draw_outside_ellipse (1.65 - puff_up_factor / 2.0, 32, 0.707, 0);
-fet_endchar;
-
-
-fet_beginchar("Quart noteheadBA", "2BA", "quartheadBA")
-	draw_outside_ellipse (1.35 - puff_up_factor / 2.0, 35, 0.707, 0);
-fet_endchar;
-fet_beginchar("Quart noteheadBB", "2BB", "quartheadBB")
-	draw_outside_ellipse (1.4 - puff_up_factor / 2.0, 35, 0.707, 0);
-	
-fet_endchar;
-fet_beginchar("Quart noteheadBC", "2BC", "quartheadBC")
-	draw_outside_ellipse (1.45 - puff_up_factor / 2.0, 35, 0.707, 0);
-fet_endchar;
-fet_beginchar("Quart noteheadBD", "2BD", "quartheadBD")
-	draw_outside_ellipse (1.5 - puff_up_factor / 2.0, 35, 0.707, 0);
-fet_endchar;
-fet_beginchar("Quart noteheadBD", "2BE", "quartheadBD")
-	draw_outside_ellipse (1.55 - puff_up_factor / 2.0, 35, 0.707, 0);
-fet_endchar;
-fet_beginchar("Quart noteheadBD", "2BF", "quartheadBD")
-	draw_outside_ellipse (1.6 - puff_up_factor / 2.0, 35, 0.707, 0);
-fet_endchar;
-fet_beginchar("Quart noteheadBD", "2BG", "quartheadBD")
-	draw_outside_ellipse (1.65 - puff_up_factor / 2.0, 35, 0.707, 0);
-fet_endchar;
-
-
-
-fet_beginchar("Quart noteheadCA", "2CA", "quartheadCA")
-	draw_outside_ellipse (1.35 - puff_up_factor / 2.0, 40, 0.707, 0);
-fet_endchar;
-fet_beginchar("Quart noteheadCB", "2CB", "quartheadCB")
-	draw_outside_ellipse (1.4 - puff_up_factor / 2.0, 40, 0.707, 0);
-fet_endchar;
-fet_beginchar("Quart noteheadCC", "2CC", "quartheadCC")
-	draw_outside_ellipse (1.45 - puff_up_factor / 2.0, 40, 0.707, 0);
-fet_endchar;
-fet_beginchar("Quart noteheadCD", "2CD", "quartheadCD")
-	draw_outside_ellipse (1.5 - puff_up_factor / 2.0, 40, 0.707, 0);
-fet_endchar;
-fet_beginchar("Quart noteheadCD", "2CE", "quartheadCD")
-	draw_outside_ellipse (1.55 - puff_up_factor / 2.0, 40, 0.707, 0);
-fet_endchar;
-fet_beginchar("Quart noteheadCD", "2CF", "quartheadCD")
-	draw_outside_ellipse (1.6 - puff_up_factor / 2.0, 40, 0.707, 0);
-fet_endchar;
-fet_beginchar("Quart noteheadCD", "2CG", "quartheadCD")
-	draw_outside_ellipse (1.65 - puff_up_factor / 2.0, 40, 0.707, 0);
-fet_endchar;
-
-fi
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
-
-fet_beginchar("Whole diamondhead", "0diamond", "wholediamondhead")
-	draw_outside_ellipse (1.80, 0, 0.495, 0);
-	undraw_inside_ellipse (1.30, 125, 0.6,
-			.4 staff_space# +  stafflinethickness#,
-				(w /2, 0));
-
-fet_endchar;
-
-fet_beginchar("Half diamondhead", "1diamond", 
-	"halfdiamondhead")
-
-	draw_outside_ellipse (1.50, 34, 0.49, 0.17);
-	undraw_inside_ellipse (3.5, 33, 0.80,
-		.3 staff_space# + 1.5 stafflinethickness#, (w/2, 0));
-
-fet_endchar;
-
-fet_beginchar("Quart diamondhead", "2diamond", "diamondhead")
-	draw_outside_ellipse (1.80, 35, 0.495, -0.25);
-fet_endchar;
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
-
-
-
-
-def def_triangle =
-	save triangle,kern; path triangle;
-	save left_point, height, width;
-	pair exact_left_point;
-	save pen_thick;
-	pen_thick# = stafflinethickness#  + .1 staff_space#;
-	define_pixels(pen_thick);
-
-	exact_left_point := llap# * dir (90 + tilt);
-	height# = max (ypart exact_left_point,
-			-ypart  (exact_left_point rotated 120)) + pen_thick#/2;
-
-	kern# = 1/3 xpart (exact_left_point - (exact_left_point rotated 120));
-	width# = xpart (-exact_left_point + (exact_left_point rotated 240));
-	define_pixels (kern);	
-	z1 = (hround_pixels (xpart exact_left_point), vround_pixels  (ypart exact_left_point));
-	z2 = z1 rotated 120;
-	z3 = z1 rotated 240;
-
-	z12 = caveness[.5[z1,z2],z3];
-	z23 = z12 rotated 120;
-	z31 = z12 rotated 240;
-	triangle = z1 .. z12 .. z2 ..
-		    z2 .. z23 .. z3 ..
-		    z3 .. z31 .. z1 ..
-		    cycle;
-	triangle := triangle shifted (-x1+pen_thick/2-kern,0) xscaled xs;
-	pickup pencircle scaled pen_thick xscaled xs;
-%	labels(1,2,12,23,31,3);
-	set_char_box(0, width# - kern#+ pen_thick#, height#, height#);
-enddef;
-
-fet_beginchar("Whole trianglehead", "0triangle", "wholetrianglehead")
-	save hei,xs;
-	save llap;
-	save tilt;
-
-	tilt = 40;
-	llap# = 3/4noteheight#;
-
-	xs = 1.5;
-	caveness:=0.1;
-	def_triangle;
-	draw triangle;
-fet_endchar;
-
-fet_beginchar("Half trianglehead", "1triangle", "halftrianglehead")
-	save hei,xs;
-	save llap;
-	save tilt;
-
-	tilt = 40;
-	llap# = 2/3noteheight#;
-	xs = 1.2;
-	caveness:=0.1;
-	def_triangle;
-	draw triangle;
-fet_endchar;
-
-fet_beginchar("Quart trianglehead", "2triangle", "trianglehead")
-	save hei,xs;
-	save llap;
-	save tilt;
-	tilt = 40;
-	llap# = 2/3noteheight#;
-	xs = 1.0;
-	caveness:=0.1;
-	def_triangle;
-	filldraw triangle;
-fet_endchar;
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%
-% slash heads are for indicating improvisation. They are  
-% twice as high as normal heads.
-%
-def draw_slash(expr hwid_hash) =
-	save exact_height;
-	save ne_dir;
-	pair ne_dir;
-	exact_height =  staff_space# + stafflinethickness#/2;
-
-	set_char_box (0, 2 exact_height / slash_slope + hwid_hash,
-			exact_height, exact_height);
-
-	charwx := charwd;
-	charwy := charht;
-
-	clearxy;
-	pickup pencircle scaled blot_diameter;
-
-	bot y1 = - d;
-	top y2 = h;
-	lft x1 = 0;
-	lft x2 = 2 h / slash_slope;
-	
-	rt x3 = w;
-	y3 = y2;
-	y4 = y1;
-	x3- x2 = x4 - x1;
-
-	ne_dir := unitvector( z3  - z4);
-	filldraw z1 --- z2 --- z3 --- z4 --- cycle;
-
-	if hwid_hash > 2 slash_thick#:
-		save th;
-
-		th = slash_thick - blot_diameter;
-		y6 = y7;
-		y5 = y8;
-		y3 - y7 = th;
-		y5 - y1 = th;
-		z6 - z5 = whatever * ne_dir;
-		z8 - z7 = whatever * ne_dir;
-
-		z5  = z1 + whatever * ne_dir + th * (ne_dir rotated -90);
-		z8  = z4 + whatever * ne_dir + th * (ne_dir rotated 90);
-
-		unfill
-			z5 -- z6 -- z7 -- z8 -- cycle;
-	fi
-	labels (range 1 thru 10);
-enddef;
-
-fet_beginchar("Whole slashhead","0slash","wholeslashhead")
-	draw_slash(4 slash_thick# + 0.5 staff_space#);
-fet_endchar;
-
-fet_beginchar("Half slashhead","1slash","halfslashhead")
-	draw_slash(3.0 slash_thick# + 0.15 staff_space#);
-fet_endchar;
-
-fet_beginchar("Quart slashhead","2slash","quartslashhead")
-	draw_slash(1.5 slash_thick#);
-fet_endchar;
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-% thick is the distance between the NE/SW parallel lines in the cross
-% (distance between centres of lines)
-% in stafflinethickness def
-%
-def draw_cross(expr thick) =
-	save pent, slant, ne_dir;
-	pair ne_dir;
-	save crz; path crz;
-
-	pen_thick# := 1.2stafflinethickness#;
-	define_pixels (pen_thick);
-	pickup pencircle scaled pen_thick;
-
-	top y3 = h;
-	ne_dir := unitvector ((1, (2 h -pen_thick)/(w - pen_thick)));
-	rt x4 = w/2;
-	y5 = 0;
-	z4 - z5 = whatever * ne_dir;
-	x6 = 0;
-	z6 - z3 = whatever * ne_dir;
-	z3 - z4 = whatever * (ne_dir yscaled -1);
-
-	z4 - z3 = whatever * (ne_dir) + (ne_dir rotated -90) * thick * stafflinethickness;
-
- 	x1 = charwd/2 - .5 pen_thick#;
-	z1 = whatever * ne_dir + thick/2 * stafflinethickness# * (ne_dir rotated -90);
-
-	
-	labels (1,2,3,4,5,6);
-
-	crz = (z6 -- z3 -- z4 -- z5) ;
-
-	draw crz shifted(w/2,0);
-	draw crz xscaled -1 shifted(w/2,0);
-	draw crz yscaled -1 shifted(w/2,0);
-	draw crz scaled -1 shifted(w/2,0);
-
-	charwx := charwd;
-	charwy := y1;
-		message (decimal charwx);
-		message (decimal charwy);
-	z12 = (charwx * hppp, y1 * vppp);
-	labels (12);
-enddef;
-
-fet_beginchar("Whole Crossed notehead", "0cross", "wholecrossedhead")
-	wid# := black_notehead_width#+4stafflinethickness#;
-	hei# := noteheight#+stafflinethickness#;
-	set_char_box(0, wid#,hei#/2,hei#/2);
-	
-	draw_cross (3.75);
-fet_endchar;
-
-fet_beginchar("Half Crossed notehead", "1cross", "halfcrossedhead")
-	wid# := black_notehead_width#+2stafflinethickness#;
-	hei# := noteheight#+stafflinethickness#/2;
-	set_char_box(0, wid#,hei#/2,hei#/2);
-	draw_cross(3.0);
-fet_endchar;
-
-fet_beginchar("Crossed notehead", "2cross", "crossedhead")
-	wid# := black_notehead_width#;
-	hei# := noteheight#;
-	set_char_box(0, wid#,hei#/2,hei#/2);
-	draw_cross(1.0);
-fet_endchar;
-
-fet_beginchar("X-Circled notehead", "2xcircle", "xcircledhead")
-	wid# := black_notehead_width#*sqrt(sqrt2);
-	hei# := noteheight#*sqrt(sqrt2);
-	set_char_box(0, wid#,hei#/2,hei#/2);
-	cthick := (1.2+1/4)*stafflinethickness;
-	cxr := w/2-cthick/2;
-	cyr := h-cthick/2;
-	pickup pencircle scaled cthick;
-	draw fullcircle xscaled 2cxr yscaled 2cyr shifted (w/2,0);
-	xpos := cxr/sqrt2;
-	ypos := cyr/sqrt2;
-	draw (-xpos+w/2,-ypos) -- (xpos+w/2,ypos);
-	draw (-xpos+w/2,ypos) -- (xpos+w/2,-ypos);
-
-	charwx := charwd ; 
-	charwy := 0 ;
-
-	z12 = (charwx * hppp , charwy * vppp );
-	labels (12);
-fet_endchar;
-
-
-
-fet_endgroup("noteheads");
-
-define_pixels(black_notehead_width);
diff --git a/mf/feta-braces00.mf b/mf/feta-braces00.mf
deleted file mode 100644
index 7044ac5a89..0000000000
--- a/mf/feta-braces00.mf
+++ /dev/null
@@ -1,11 +0,0 @@
-% 
-% feta-braces0.mf --  256 smallest braces
-% 
-% source file of the Feta (Font-En-Tja) music font
-% 
-% (c) 1997--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-% 
-
-font_count := 0;
-input feta-beugel;
-end.
diff --git a/mf/feta-braces10.mf b/mf/feta-braces10.mf
deleted file mode 100644
index 740f28d53d..0000000000
--- a/mf/feta-braces10.mf
+++ /dev/null
@@ -1,11 +0,0 @@
-% 
-% feta-braces1.mf --  next 256 braces
-% 
-% source file of the Feta (Font-En-Tja) music font
-% 
-% (c) 1997--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-% 
-
-font_count := 1;
-input feta-beugel;
-end.
diff --git a/mf/feta-braces20.mf b/mf/feta-braces20.mf
deleted file mode 100644
index e8ce7f28c8..0000000000
--- a/mf/feta-braces20.mf
+++ /dev/null
@@ -1,11 +0,0 @@
-% 
-% feta-braces2.mf --  next 256 braces
-% 
-% source file of the Feta (Font-En-Tja) music font
-% 
-% (c) 1997--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-% 
-
-font_count := 2;
-input feta-beugel;
-end.
diff --git a/mf/feta-braces30.mf b/mf/feta-braces30.mf
deleted file mode 100644
index 66d9a0bc39..0000000000
--- a/mf/feta-braces30.mf
+++ /dev/null
@@ -1,11 +0,0 @@
-% 
-% feta-braces3.mf --  next 256 braces
-% 
-% source file of the Feta (Font-En-Tja) music font
-% 
-% (c) 1997--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-% 
-
-font_count := 3;
-input feta-beugel;
-end.
diff --git a/mf/feta-braces40.mf b/mf/feta-braces40.mf
deleted file mode 100644
index 39c44f062f..0000000000
--- a/mf/feta-braces40.mf
+++ /dev/null
@@ -1,13 +0,0 @@
-% 
-% feta-braces4.mf --  next 256 braces
-% 
-% source file of the Feta (Font-En-Tja) music font
-% 
-% (c) 1997--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-% 
-
-font_count := 4;
-input feta-beugel;
-end.
-
-
diff --git a/mf/feta-braces50.mf b/mf/feta-braces50.mf
deleted file mode 100644
index d7ea284806..0000000000
--- a/mf/feta-braces50.mf
+++ /dev/null
@@ -1,11 +0,0 @@
-% 
-% feta-braces5.mf --  next 256 braces
-% 
-% source file of the Feta (Font-En-Tja) music font
-% 
-% (c) 1997--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-% 
-
-font_count := 5;
-input feta-beugel;
-end.
diff --git a/mf/feta-braces60.mf b/mf/feta-braces60.mf
deleted file mode 100644
index 3b0ab2a7db..0000000000
--- a/mf/feta-braces60.mf
+++ /dev/null
@@ -1,11 +0,0 @@
-% 
-% feta-braces6.mf --  next 256 braces
-% 
-% source file of the Feta (Font-En-Tja) music font
-% 
-% (c) 1997--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-% 
-
-font_count := 6;
-input feta-beugel;
-end.
diff --git a/mf/feta-braces70.mf b/mf/feta-braces70.mf
deleted file mode 100644
index 61635b92bd..0000000000
--- a/mf/feta-braces70.mf
+++ /dev/null
@@ -1,11 +0,0 @@
-% 
-% feta-braces6.mf --  next 256 braces
-% 
-% source file of the Feta (Font-En-Tja) music font
-% 
-% (c) 1997--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-% 
-
-font_count := 7;
-input feta-beugel;
-end.
diff --git a/mf/feta-braces80.mf b/mf/feta-braces80.mf
deleted file mode 100644
index fb603a9b10..0000000000
--- a/mf/feta-braces80.mf
+++ /dev/null
@@ -1,11 +0,0 @@
-% 
-% feta-braces6.mf --  next 256 braces
-% 
-% source file of the Feta (Font-En-Tja) music font
-% 
-% (c) 1997--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-% 
-
-font_count := 8;
-input feta-beugel;
-end.
diff --git a/mf/feta-din-code.mf b/mf/feta-din-code.mf
deleted file mode 100644
index 438b923f4b..0000000000
--- a/mf/feta-din-code.mf
+++ /dev/null
@@ -1,737 +0,0 @@
-
-%%
-%
-% TODO: blot diameter should be fixed, not scalable.
-%
-%
-
-
-save serif_thick;
-serif_thick# = 1.1 linethickness#;
-define_blacker_pixels (serif_thick);
-med_thick = round (1.5 linethickness);
-bottom_blot = 1.3 serif_thick;
-
-
-code := 32;
-fet_beginchar("Space", "space", "space")
-	set_char_box(0, horizontal_space#,  0, ex#);
-fet_endchar;
-
-
-%
-% Couldn't find many z examples. This one is losely inspired 
-% by a sfz from Mueller etuden fuer Horn (Edition Hofmeister.)
-%
-
-code := 121;
-fet_beginchar ("dynamic z", "z", "dynz");
- 	set_char_box (0, .98 ex#, 0, 0.9 ex#);
-
-	save thin_thick, top_narrow, over_shoot;
-	save bot_thick;
-
-	thin_thick = serif_thick;
-	top_narrow = thin_thick;
-	top_overshoot =  .8 serif_thick;
-	top_thick = .3 h ;
-	bot_thick = .2 ex;
-	bot_overshoot = serif_thick;
-
-	x0 = + top_narrow;
-	y0 = .9  [y1r, y1l];
-	y1l = .72 h;
-	x1r = .34 ex;
-	x2 = .66 ex;
-	y2 = y1r - top_overshoot;
-
-
-	y3 = h - .7 thin_thick;
-	x3 = w - .6 top_narrow - .5 thin_thick;
-
-	y4 = .5 thin_thick;
-	x4 = .5 thin_thick;
-
-	x5l =.25 ex;
-	y5l = .4 bot_overshoot;
-	y6l = -bot_overshoot;
-	x6 = w - 3 top_narrow;
-	x7 = w;
-	y7 = .82 [y8r, y6r];
-	x8r = w - .35 top_narrow;
-	x9 = w;
-	y8r = .45 h;
-
-	penpos1(top_thick, 80);
-	penpos3 (thin_thick, angle(z3-z4) + 90);
-	penpos4(thin_thick, angle (z3-z4) + 90);
-	penpos5(bot_thick, 70);
-	penpos6(3/2 bot_thick, 70);
-	penpos8 (thin_thick, 20);
-
-	penlabels(range 0 thru 9);
-
-	save p,q,r;
-	path p,q,r;
-
-	p := z0{down}
-		..  z1l{dir(10)}
-
-		.. simple_serif (z3l, z3r, 90) .. z2{left} .. z1r{left}
-		.. tension 1.2 
-		.. cycle;
-	q := z3l -- z3r -- z4r -- z4l -- cycle;
-	r := simple_serif (z4r, z4l, 90) .. z5l{right}
-		.. z6l{right}
-		.. z7{up}
-		.. simple_serif (z8r, z8l, 90)
-		..  z6r{left} .. z5r{left} .. cycle;
-	pickup pencircle scaled 1;
-%	draw p ; draw q ; draw r ;
-
-	fill p; fill q; fill r;
-
-fet_endchar;
-
-
-% forte f, grabbed from Ed Breitkopf Mozart horn concerto 3.
-%
-% NOTES:
-%
-% * the bulbs are open.
-%
-% * blotting around the serif
-%
-%
-%
-% TODO: insert blots around the serif
-%
-%
-%
-slant_angle = 20;
-
-
-code := 101;
-fet_beginchar("dynamic f", "f", "dynf");
-	set_char_box (0, 1.1 ex#, descender#, ex# + ascender#);
-
-	save left_angle, right_angle;
-	save serif_length, serif_excentricity;
-	save f_thick;
-	save bulb_thick, bulb_diam, fill_up;
-	save p;
-	path p;	
-	bulb_diam = 7.5 / 40 ex;
-	bulb_thick = 8.5/40 ex;
-	fill_up = 1.5 serif_thick;
-	save slant;
-	left_angle =   slant_angle - 6;
-	right_angle =  slant_angle - 3;
-	f_thick = 7/16 ex;
-	serif_length = 0.96 ex;
-	serif_excentricity = 0.01 ex;
-
-
-	% z1 is the "base point"
-	z1 = (0.2 ex, - serif_thick);
-	y2 = y1 + ex;
-	z2l = z1 + whatever*dir (90 - left_angle);
-	penpos2 (f_thick, 0);
-
-	y3l = y1 + ex + ascender;
-	x3l = x1 + 1 ex;
-	penpos3 (med_thick, -90);
-	penpos4 (bulb_thick, -20);
-	z3r = whatever [z4r,z4l];
-
-	x4l - x3l = 1/10 ex;
-
-	penpos5(bulb_thick, -45);
-	x5r = 0.1 [x4l, x4r];
-	y5l = y4l - bulb_diam;
-
-	z6 = z2r + whatever* dir (90 - right_angle);
-	y6 = y1 + 3/8 ex;
-
-	x7 = x1 - 1/4 ex;
-	y7r = y1 -descender;
-	penpos7(med_thick, -90);
-
-	penpos8 (bulb_thick, 160);
-	x8l = x7l - 1/10 ex;
-	z7l = whatever [z8r,z8l];
-
-	penpos9 (bulb_thick, 135);
-	x9r = 0.1 [x8l, x8r];
-	y9l = y8l + bulb_diam;
-	labels(1,6,9);
-	penlabels(2, 3,4,5, 7, 8,9);
-
-	p := z1 --- z2l 
-		.. tension 1.1
-		.. z3l{right} .. z4r{down}
-		.. z5r{left} .. z5l{up}
-		.. tension 0.8
-		.. z4l{up} .. z3r{left}
-		.. tension 1.1
-		.. z2r --- z6 .. tension 1.25 ..  z7r{left}
-		.. z8r{up} .. z9r{right} .. z9l{down} .. tension 0.8
-		.. z8l{down} .. z7l{right} .. cycle;
-	pickup pencircle scaled 1;
-	fill p;
-%	draw p;
-
-%
-% todo round for pixels...
-%
-	pickup pencircle scaled round (1.4 serif_thick);
-	(rt x13) - (lft x14) = serif_length;
-	y13 = y14;
-	y14 = y2;
-	0.5 [x13, x14] = x2 + serif_excentricity;
-
-	draw z13 .. z14;
-
-	penlabels(16);
-	labels(13,14,15);
-fet_endchar;
-
-
-%
-% Notes:
-%  
-% - The S is trapezoidal (i.e. narrower at the top) 
-%
-% - The white space is differently shaped at the top (the bulb's inner
-% curve is filled up.)
-%
-% - less heavy than the f and p signs.
-%
-
-
-code := 114;
-fet_beginchar("dynamic s", "s", "dyns");
-	set_char_box (0, 17/24  ex#, 0, 1 ex#);
-
-	save left_angle, right_angle;
-	save s_thick, s_thin;
-	save base_point;
-	save bulb_diam, bulb_len;
-	save over_shoot;
-	over_shoot = 0; % .2 serif_thick;
-	pair base_point;
-
-	bulb_diam = 11/70 ex;
-	bulb_len = 1.0 bulb_diam;
-	left_angle =  slant_angle - 2;
-	right_angle =  slant_angle -11;
-
-	s_thick = 16/70 ex;
-	s_thin = serif_thick;
-
-	base_point = (0,0);
-
-	penpos1 (bulb_diam, -45);
-	z1 = 0.35 [z2l,z2r] + bulb_len * dir(45);
-	penpos2 (bulb_diam, -25);
-	y2l = 0.845 [y7r, y3r];
-
-	z2l = base_point + whatever * dir (90-left_angle);
-	penpos3 (s_thin, 100);
-	x3l = 1/2 w ;
-	y3l = ypart base_point - over_shoot ;
-	
-	penpos4 (s_thick, 25);
-	ypart z4l  = ypart z1r;
-	z4r = base_point + (w,0) + whatever *dir(90-right_angle);
-	penpos5 (s_thick, 40);
-	z5 = z3l + whatever * dir (90-right_angle);
-	y5 = ypart (0.48 [z7r, z3r]);
-
-	
-	penpos6 (s_thick, 25);
-	z6l = base_point + whatever *dir(90-left_angle);
-	y6r = y9l;
-
-	penpos7 (.9 s_thin, 110);
-	z7l = 0.45 [z6r, z8l] + whatever * dir (90-left_angle);
-	y7r = h + over_shoot;
-
-	penpos8 (.9 bulb_diam, -25);
-	z8 = .6 [z4l,z4r] + whatever *dir(90-right_angle);
-
-	y8r = ypart (0.23 [z7r, z3r]);
-
-	penpos9 (.9 bulb_diam, -45);
-	z9 = .4 [z8r,z8l] + .9 bulb_len * dir (-135);
-
-	penlabels(1,2,3,4,5,6,7,8,9);
-
-	labels(12);
-	save p;
-	path p;
-	p := z2l{down} .. z3l{right} .. z4r{up}
-		.. z5r
-		.. z6r{up}
-		.. z7l{right}
-		%.. z8l{down}
-		..z9l{down}
-		.. z9r{right} .. z7r{left}
-		.. z6l{down}
-		.. z5l
-		.. z4l{down}
-		.. z3r{left}
-		.. z2r{up} .. z1r{up}
-		.. z1l{left} .. cycle;
-	pickup pencircle scaled 1;
-	fill p;
-fet_endchar;
-
-
-
-
-%
-% piano p, grabbed from Ed Breitkopf Mozart horn concerto 3.
-%
-% Notes:
-%
-% * there is no dishing in the serif (but we do it anyway)
-%
-% * The cheek is a little fatter than the stem 
-% 
-% * The slant is extreme: 20 degrees
-%
-% * the twiddle (what'sitcalled) is a slightly darker than the serif
-%
-% * The hole in the cheek has a straight right side.
-%
-% * Corners are filled up.
-%
-%
-
-save slant;
-slant := ypart (dir(slant_angle));
-currenttransform := currenttransform slanted slant;
-
-code := 111;
-
-
-fet_beginchar("dynamic p", "p", "dynp")
-	%
-	% TODO w really   is 13/12 ex
-	% but should do kerning
-	set_char_box (0, 15/12 ex#, descender#, 1.0 ex#);
-
-	save twiddle_thick, stem_thick, cheek_thick;
-	save updir, fill_up;
-	save serif, dishing_angle, p, q;
-	save cheek_medium, left_serif_protude, right_serif_protude;
-	save lower_overshoot;
-
-	pair updir;
-	path serif,q,p;
-	save my_slant_angle;
-	my_slant_angle = 0; 
-	updir := dir (90 - my_slant_angle );
-	twiddle_thick = med_thick;
-	cheek_medium = 1/6 ex;
-
-	dishing_angle = 5;
-	fill_up := 1.5 serif_thick;
-	straigh_len = 0.5 ex;
-	lower_overshoot  := .3 serif_thick; 
-
-	stem_thick = 2/6 ex;
-	cheek_thick = 13/32 ex;
-	cheek_width = 0.72 ex;
-	left_serif_protude = 18/60 ex;
-	right_serif_protude= 15/60 ex;
-	
-	penpos1 (twiddle_thick, -slant - 5);
-	penpos2 (cheek_medium, 90 - slant );
-	penpos3 (cheek_medium, 90 - slant);
-
-	x4r - x4l = cheek_thick;
-	penpos4 (whatever, 0);
-	penpos5 (whatever, -38);
-	penpos6 (stem_thick, 0);
-	penpos17 (straigh_len, 90 -slant);
-	whatever [z17l, z17r] =  z4l;
-	y17 = 7/16 ex;
-
-	x6l = 0;
-	y6l = - descender + serif_thick/2;
-	z1l = z6l - whatever *dir (90 - my_slant_angle + 20 );
-	y1r = 0.5 ex;
-	y2r = ex;
-	z7 = whatever * updir + z6l;
-	y7 = 43/60  ex;
-	
-	z2l = whatever *updir + 0.3 [z7, z1r];
-	y8 = ypart (0.9 [z7, z2l]);
-	z8 = 2/3 [z6l, z6r] + whatever * updir;
-
-
-	y3r = ex;
-	z3l = 0.58 [(stem_thick, -descender), (stem_thick + cheek_width - cheek_thick, -descender)] + whatever * updir;
-	y4r = .38  ex;
-	z4r = whatever*updir + (stem_thick+  cheek_width, -descender);
-
-	z5l = whatever*updir  + z3l;
-	y5r = -lower_overshoot;
-	y5l = y5r + cheek_medium * ypart dir(55);
-
-	z9 = z6r + whatever*updir;
-	y9 = .2 [y5l, y5r];
-
-	p :=
-		z2r{right} .. {dir( -60)}z8 & z8{dir 35} .. z3r{right}
-		.. z4r{-updir}
-		.. tension 1.1
-		.. z5r{left} .. z9
-		& z9 -- z6r -- z6l -- z7{updir} 
-		..  z2l{left} .. tension 1.2 ..
-		% z1r & z1r -- z1l & z1l
-		simple_serif (z1r, z1l, -90)
-		.. cycle;
-
-
-	save blot_t, corner_t;
-
-	blot_t := 0.13;
-	corner_t := xpart (p intersectiontimes z9);
-
-	z19 = point corner_t - 2 blot_t of p;
-	z20 = point corner_t + blot_t of p;
-	labels(19,20);
-
-	save blot_path;
-	path blot_path;
-
-	pickup pencircle scaled 1;
-
-	fill z19{up} .. {right}z20{updir} .. z19{-(direction corner_t - 2 blot_t of p)} .. cycle;
-
-	pickup pencircle scaled 1;
-	fill p;
-
-	y12  = 0.5 ex;
-	z12 = z6r + whatever*updir;
-
-	save inner_tension;
-	inner_tension = 1.4;
-	q :=
-		z17l .. tension 1.5 .. z17r  .. z3l{left}.. tension 1.05 .. z12{-updir} .. tension 1.05 .. z5l{right} .. cycle; 
-	unfill q;
-	penlabels (1, 2, 3, 4, 5, 6, 17);
-
-
-
-
-	pickup pencircle scaled serif_thick;
-	lft x11 = -left_serif_protude;
-	rt x10 = stem_thick+ right_serif_protude;
-	bot y10 = bot y11 = -descender;
-
-	
-	serif := simple_serif (z10, z11, dishing_angle);
-	draw serif;
-
-	labels(7,8, 9, 10, 11,12);
-
-	
-	z13 = point 0.05 of serif;
-	z14 = point 0.85 of serif;
-	z15 = z6l + updir * fill_up +( serif_thick/2, 0);
-	z16 = z6r + updir * 1.2fill_up- +( serif_thick/2, 0);
-	labels(13,14, 15, 16);
-
-%	pickup pencircle scaled 1;
-	draw z13{direction 0.05 of serif} .. z16{updir};
-	draw z14{-(direction 0.85 of serif)} .. z15{updir};
-fet_endchar;
-
-%
-% NOTES:
-%
-% * right stem is fatter and more straight than the left 2 two stems.
-%
-% * The twiddle  at the left is similar to the p twiddle 
-%
-% * The bottoms of the stems are blotted. 
-%
-
-%
-%
-% This is cut & paste programming. Somehow 3 i shapes in two chars (p and m)
-% Doesn't seem worth the trouble of writing a macro.
-%
-code := 108;
-
-fet_beginchar("dynamic m", "m", "dynm");
-	set_char_box (0, 1.5 ex#, 0, 1.0 ex#);
-
-	% should share code with p for twiddle.
-
-	save i_thick, i_angle, i_twiddle_thick,
-		i_twiddle_start_angle, i_twiddle_start_y, 
-		i_left_space;
-	save p;
-	save idir, center, right_ending;
-	save overshoot;
-	pair center, idir, right_ending;
-
-	path p;
-
-	overshoot = .25  serif_thick;
-	i_thick := 21 / 80 ex;
-	i_angle := 0;
-	idir := dir(90- i_angle);
-
-	i_left_space = 16/80 ex;
-	i_twiddle_thick = 1.2 serif_thick;
-	i_twiddle_start_y =  8/16 ex;
-	i_twiddle_start_angle = 0;
-	center =(0,0);
-
-	penpos1 (i_twiddle_thick, -i_twiddle_start_angle);
-	y1 = i_twiddle_start_y;
-	z1r = center - (i_left_space,0)  + whatever * idir;
-
-	y3 = 0.5 bottom_blot + ypart center; 
-	penpos3(i_thick, 0);
-	z3l = center + whatever * idir;
-	y4 = ypart center;
-	penpos4 (i_thick - bottom_blot, 0);
-	z4 - z3 = whatever * idir;
-
-	y2l = 1 ex  +  overshoot;
-	z2l = .08 [z3l, z3r] + whatever * idir;
-	z2r = 5/8 [z1r, z3l] + whatever * idir;
-	y2r = y5l + 1/9 ex;
-	z2 = 1/2 [z2l, z2r] ;
-	penpos5(i_thick, 0);
-	z5 = z4 + whatever * idir;
-	y5 = 55 / 80 ex;
-
-	p := simple_serif (z1l, z1r, 90) .. tension 1.2 .. z2r{right} .. z5l --- z3l
-		..  z4l --- z4r .. z3r --- z5r .. tension 1.2 .. z2l{left} .. cycle;
-
-	fill p;
-	right_ending := z5r;
-	penlabels (1, 2, 3 , 4,5);
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-	clearxy;
-
-	i_angle := -3.2;
-	idir := dir(90 - i_angle);
-	i_left_space := 14/80 ex;
-
-
-	z1r = right_ending;
-	z5l = right_ending + (i_left_space,0);
-	penpos1(serif_thick, - i_twiddle_start_angle);
-
-	y3 = .5 bottom_blot + ypart center; 
-	penpos3(i_thick, 0);
-	z3l = z5l + whatever * idir;
-	y4 = ypart center;
-	penpos4(i_thick - bottom_blot, 0);
-	z4 - z3 = whatever * idir;
-
-	y2l = 1 ex+ overshoot;
-
-	z2l = .08 [z3l, z3r] + whatever * idir;
-	z2r = 5/8 [z1r, z3l] + whatever * idir;
-	y2r = y5l + 1/9 ex;
-	z2 = 1/2 [z2l, z2r] ;
-	penpos5(i_thick, 0);
-
-	p := simple_serif (z1l, z1r, 90) .. tension 1.05 .. z2r{right} .. z5l --- z3l
-		..  z4l --- z4r .. z3r --- z5r .. tension 1.2 .. z2l{left} .. cycle;
-
-	fill p;
-	right_ending := z5r;
-	penlabels (1, 2, 3 , 4,5);
-	clearxy;
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
-	i_thick := 23 / 80 ex;
-	i_angle := -6;
-	i_left_space := 14/80 ex;
-
-
-	idir := dir(90- i_angle);
-	z1r = right_ending;
-	z5l = right_ending + (i_left_space,0);
-	penpos5 (whatever, 10);
-	penpos3 (whatever, 20);
-
-	y7 = 0; 
-	penpos7(i_thick ,0);
-	
-	penpos1(serif_thick, - i_twiddle_start_angle);
-	
-	z3l = z7l + whatever * idir;
-	z3r = z7r + whatever * idir;
-	z5l = z7l + whatever * idir;
-	z5r = z7r + whatever * idir;
-
-	save end_twiddle_angle;
-	end_twiddle_angle := 35;
-	penpos6(serif_thick, - end_twiddle_angle);
-	y6l = 23/80 ex + ypart center;
-	z6l = 1.6 [z3l, z3r]  + whatever * idir;
-	
-
-
-	y3l =  1/8 ex + ypart center; 
-	y2l = 1 ex+  overshoot;
-	z2l = .08 [z3l, z3r] + whatever * idir;
-	z2r = 5/8 [z1r, z3l] + whatever * idir;
-	y2r = y5l + 1/9 ex;
-	z2 = 1/2 [z2l, z2r] ;
-	z8 = z7 - (0, 1 overshoot);
-
-	p := simple_serif (z1l, z1r, 90) .. tension 1.05
-		.. z2r{right} .. z5l --- z3l
-		.. z8{right}
-		.. simple_serif(z6r, z6l, 90)
-		.. tension 0.85
-		.. z3r --- z5r
-		.. tension 1.2
-		.. z2l{left} .. cycle;
-
-%	pickup pencircle scaled 1;
-%	draw p;
-	fill p;
-	right_ending := z5r;
-	penlabels (1, 2, 3 , 4,5,6,7, 8);
-	clearxy;
-
-fet_endchar;
-
-
-code := 113;
-
-
-currenttransform := identity slanted ypart(dir(15));
-fet_beginchar("dynamic r", "r", "dynr");
-	set_char_box (0, .75 ex#, 0, 1ex#);
-
-
-	save base_point, stem_thick, bulb_diam;
-	save twiddle_thick, attach_len, overshoot, taille;
-	stem_thick =.26 ex;
-	bulb_diam = .30 ex;
-	twiddle_thick= 1.1 serif_thick;
-	overshoot = .5 serif_thick;
-
-	taille = -0.3 serif_thick;
-
-	pair base_point;
-	base_point = (0,0);
-
-	x1l = 0;
-	y1l = .5 bottom_blot;
-
-	penpos10(stem_thick - bottom_blot, 0);
-	y10 = 0;
-	x10 = x1;
-
-	penpos1 (stem_thick, 0);
-	y2l - y1l = 36/47 ex;
-	x2l = x1l;
-	penpos2 (stem_thick, 0);
-
-	y3 = .77  ex;
-	x3r = x2l - .2 ex;
-	penpos3(twiddle_thick, -20);
-
-	x9 = 0.15 [x1r, x1l] ;
-	y9 = y4l - .12 ex ;
-
-	x4l = -0.1 [x1l, x1r];
-	y4l = ex + overshoot;
-
-	x4r = 0.62 [x3r, x2l];
-	y4r = 0.5 [y4l, y2l];
-
-	penpos5(whatever, -74);
-	y5l - y5r =  bulb_diam;
-	y5l = ex + overshoot;
-	x5 = x2r + attach_len;
-	attach_len + bulb_diam/2 + stem_thick = w;
-
-	z6 = z5;
-	penpos6 (bulb_diam, 0);
-%	z7 = z6l + taille* dir(180);
-
-	save alpha;
-	alpha := 35;
-	z7 = z6 + .4 * bulb_diam * dir (-90 -alpha);
-	z8 = 9/10 [z1r, z2r];
-
-
-	save p;
-	path p;
-
-	p := z1r .. z10r --- z10l .. z1l 
-		--- z2l
-		.. z4r{left}
-		.. tension 1.2
-		.. {down}simple_serif(z3r, z3l,-90){up}
-		.. tension 0.95
-		.. z4l
-		.. z9
-		& z9{curl 0}
-		.. z5l
-		.. z6r{dir(-80)}
-		.. z5r{left}
-		.. z7
-		.. z6l
-		.. tension 1.2
-		.. z8 --- cycle;
-	pickup pencircle scaled 1;
-	draw p;
-	fill p;
-	penlabels (1,2,3, 4,5,6,7,8, 9, 10);
-fet_endchar ;
-
-
-
-
-
-%%% KERNING
-
-ligtable "m" : "p" kern 0.2 ex#, "f" kern -0.1 ex#;
-ligtable "f" : "f" kern -0.13 ex#;
-ligtable "r" : "f" kern 0.1 ex#;
-
-
-
-
-
-
-
-
-
-
-%% notes from old dyn code.
-
-% "f" obviously has a _lot_ bigger slant than "p" (see Wanske p.239)
-% however; perhaps we need two f symbols:
-%  - a super-slanted one used in "f" "mf" "sfz" "sf", and
-%  - a more normal-slanted in "ff" "fff" "fp" "fp" (see Wanske p.241)
-%
-% looking at professionally typeset music reveals that typesetters 
-% are somewhat unsure about slanting in "mf", "fp", "sfz"
-
-% "f" and "p" (in any combination) are a lot (factor two) fatter than
-% "s", "m", and "z".  sometimes the "m" and "z" are a bit fatter than
-% "s".
-
-
-% Chester, Breitkopf suggest smaller sizes of these other chars,
-% using the x-height as reference point.
diff --git a/mf/feta-din.mf b/mf/feta-din.mf
deleted file mode 100644
index ca5029d286..0000000000
--- a/mf/feta-din.mf
+++ /dev/null
@@ -1,34 +0,0 @@
-% feta-din.mf
-% part of LilyPond's pretty-but-neat music font
-
-test:=0;
-
-input feta-autometric;
-input feta-macros;
-% input feta-params;
-mode_setup;
-
-ex# :=  (design_size / 2.4)* pt#;
-descender# := 0.5 ex#;
-ascender# := 0.72 ex#;
-staffspace# := 1.75 / 2.0 * ex#;
-
-
-%% !! synchronize with feta-params.mf
-linethickness# := 0.3 pt# + 0.04 staffspace#;
-stafflinethickness# := stafflinethickness#;
-
-horizontal_space# :=  .66 ex#;
-
-font_x_height ex#;
-font_normal_space horizontal_space#;
-
-define_pixels (staffspace, linethickness, stafflinethickness, ex, descender, ascender);
-
-fet_beginfont("feta-din", design_size);
-
-input feta-din-code;
-
-fet_endfont("feta-din");
-
-end.
diff --git a/mf/feta-din10.mf b/mf/feta-din10.mf
deleted file mode 100644
index 55a476a584..0000000000
--- a/mf/feta-din10.mf
+++ /dev/null
@@ -1,9 +0,0 @@
-% feta-din10.mf
-% part of LilyPond's pretty-but-neat music font
-
-design_size:=10; % feta20 = 20pt
-
-input feta-din;
-
-end.
-
diff --git a/mf/feta-din11.mf b/mf/feta-din11.mf
deleted file mode 100644
index 5fb32da8ac..0000000000
--- a/mf/feta-din11.mf
+++ /dev/null
@@ -1,9 +0,0 @@
-% feta-din11.mf
-% part of LilyPond's pretty-but-neat music font
-
-design_size:=11.25; % feta23 = 22.5pt
-
-input feta-din;
-
-end.
-
diff --git a/mf/feta-din12.mf b/mf/feta-din12.mf
deleted file mode 100644
index f444107455..0000000000
--- a/mf/feta-din12.mf
+++ /dev/null
@@ -1,9 +0,0 @@
-% feta-din12.mf
-% part of LilyPond's pretty-but-neat music font
-
-design_size:=12; % feta16 = 16pt
-
-input feta-din;
-
-end.
-
diff --git a/mf/feta-din13.mf b/mf/feta-din13.mf
deleted file mode 100644
index 762539aa92..0000000000
--- a/mf/feta-din13.mf
+++ /dev/null
@@ -1,9 +0,0 @@
-% feta-din13.mf
-% part of LilyPond's pretty-but-neat music font
-
-design_size:=13; % feta26 = 26pt
-
-input feta-din;
-
-end.
-
diff --git a/mf/feta-din14.mf b/mf/feta-din14.mf
deleted file mode 100644
index 178c19a613..0000000000
--- a/mf/feta-din14.mf
+++ /dev/null
@@ -1,9 +0,0 @@
-% feta-din14.mf
-% part of LilyPond's pretty-but-neat music font
-
-design_size:=14; % feta20 = 20pt
-
-input feta-din;
-
-end.
-
diff --git a/mf/feta-din17.mf b/mf/feta-din17.mf
deleted file mode 100644
index 516f9c1048..0000000000
--- a/mf/feta-din17.mf
+++ /dev/null
@@ -1,9 +0,0 @@
-% feta-din17.mf
-% part of LilyPond's pretty-but-neat music font
-
-design_size:=17; % feta23 = 23pt
-
-input feta-din;
-
-end.
-
diff --git a/mf/feta-din19.mf b/mf/feta-din19.mf
deleted file mode 100644
index 83464207bb..0000000000
--- a/mf/feta-din19.mf
+++ /dev/null
@@ -1,9 +0,0 @@
-% feta-din19.mf
-% part of LilyPond's pretty-but-neat music font
-
-design_size:=19; % feta26 = 26pt
-
-input feta-din;
-
-end.
-
diff --git a/mf/feta-din6.mf b/mf/feta-din6.mf
deleted file mode 100644
index efaf13d5d9..0000000000
--- a/mf/feta-din6.mf
+++ /dev/null
@@ -1,9 +0,0 @@
-% feta-din6.mf
-% part of LilyPond's pretty-but-neat music font
-
-design_size:=5.5; %  feta11 = 11pt
-
-input feta-din.mf;
-
-end.
-
diff --git a/mf/feta-din8.mf b/mf/feta-din8.mf
deleted file mode 100644
index 32767f685b..0000000000
--- a/mf/feta-din8.mf
+++ /dev/null
@@ -1,7 +0,0 @@
-% feta-din8.mf
-% part of LilyPond's pretty-but-neat music font
-
-design_size:=8; % feta16 = 16pt
-
-input feta-din.mf;
-
diff --git a/mf/feta-eindelijk.mf b/mf/feta-eindelijk.mf
deleted file mode 100644
index 780190df9b..0000000000
--- a/mf/feta-eindelijk.mf
+++ /dev/null
@@ -1,435 +0,0 @@
-% feta-eindelijk.mf -- implement rest symbols -*-Fundamental-*-
-%
-% part of LilyPond's pretty-but-neat music font
-%
-% source file of the Feta (not the Font-En-Tja) music font
-% 
-% (c) 1997--2004 Jan Nieuwenhuizen <janneke@gnu.org>
-
-fet_begingroup("rests");
-
-begingroup
-
-
-save block_rest_y, block_rest_x;
-save breve_rest_y, breve_rest_x;
-
-breve_rest_y# =  staff_space#;
-breve_rest_x# = 3/5 staff_space#;
-block_rest_y# = 5/8 staff_space#;
-block_rest_x# = 3/2 staff_space#;
-
-define_pixels(block_rest_y, block_rest_x);
-
-def block_rest =
-	draw_block ((0,0), (block_rest_x, block_rest_y));
-	enddef;
-
-fet_beginchar( "whole rest", "0", "wholerest");
-	set_char_box(0, block_rest_x#,
-		block_rest_y#,  0);
-	block_rest;
-	currentpicture := currentpicture shifted (0,- block_rest_y);
-fet_endchar;
-
-fet_beginchar("half rest", "1", "halfrest");
-	set_char_box(0, block_rest_x#, 0, block_rest_y#);
-	block_rest;
-fet_endchar;
-
-
-%
-% should use ledgerline thickness?
-%
-fet_beginchar( "whole rest (outside staff)", "0o", "outsidewholerest");
-	set_char_box(0, block_rest_x#,
-		block_rest_y#, ledgerlinethickness#/2);
-	block_rest;
-	currentpicture := currentpicture shifted (0, - block_rest_y);
-	pickup pencircle scaled ledgerlinethickness;
-
-	y5 = y6 = 0;
-	lft x5 = - b - block_rest_y;
-	rt x6 = w + block_rest_y;
-	draw_gridline(z5,z6,ledgerlinethickness);
-fet_endchar;
-
-fet_beginchar("half rest (outside staff)", "1o", "outsidehalfrest");
-	set_char_box(0, block_rest_x#,
-		ledgerlinethickness#/2, block_rest_y#);
-	block_rest;
-	pickup pencircle scaled ledgerlinethickness;
-	y5 = y6 = 0;
-	lft x5 = - b - block_rest_y ;  
-	rt x6 = w + block_rest_y;
-	draw_gridline (z5,z6,ledgerlinethickness);
-fet_endchar;
-
-
-
-define_pixels(breve_rest_y, breve_rest_x, multi_rest_x, multi_beam_height);
-
-fet_beginchar("maxima rest", "-3", "maximarest");
-	set_char_box(0, 3 breve_rest_x#, breve_rest_y#, breve_rest_y#);
-	draw_block ((0,-floor (breve_rest_y)), (breve_rest_x, floor (breve_rest_y)));
-	addto currentpicture also currentpicture shifted (2 breve_rest_x, 0);
-fet_endchar;
-
-fet_beginchar("longa rest", "-2", "longarest");
-	set_char_box(0, breve_rest_x#, breve_rest_y#, breve_rest_y#);
-	draw_block ((0,-floor (breve_rest_y)), (breve_rest_x, floor (breve_rest_y)));
-fet_endchar;
-
-fet_beginchar("breve rest", "-1", "breverest");
-	set_char_box(0, breve_rest_x#, 0, breve_rest_y#);
-	draw_block ((0,0), (breve_rest_x, floor (breve_rest_y)));
-fet_endchar;
-
-
-tracingvariables := 1;
-
-fet_beginchar("Quarter rest","2","quartrest");
-%	draw_staff (-2, 2, 0.0);	
-	save alpha, yshift, height;
-	alpha:=-50;
-
-
-	thick# := 1/4 staff_space#;
-	define_blacker_pixels(thick);
-
-	rthin := 1.25 linethickness;
-	rthick := 2 thick+rthin;
-
-
-
-	yshift# = -1.25 staff_space#;
-	height# = 2.8125 staff_space#;
-
-	define_pixels (yshift, height);
-	save xcenter;
-	xcenter = -0.1 staff_space;
-	
-	set_char_box(0, 0.95 staff_space#,
-	  -yshift#,
-	  yshift# + height#);
-	
-	save ne,nw, se, sw; pair ne, nw, se, sw;
-	
-	se=dir alpha; nw=dir (alpha+180);
-	ne=dir (alpha+90); sw=dir (alpha-90);
-	penpos1(rthin, alpha+90);
-	penpos2(5/4rthick, alpha);
-	penpos4(5/4rthick, alpha);
-	penpos5(rthin, alpha+90);
-	penpos3(3/4rthick, alpha);
-%	penpos6(5/8rthick, alpha);
-	penpos6(2/3rthick,  alpha);
-	penpos7(1/2rthin,  alpha+90);
-
-	z10=z2l+1/2rthin*sw;
-%	z11=z4l+1/2rthin*sw;
-	z11=z4l+1/2rthin*sw+1/2rthin*se;
-	z12=z4r+1/2rthin*ne;
-%	z13=z2r+1/2rthin*ne;
-	z13=z2r+1/2rthin*ne+1/2rthin*nw;
-
-	y1r = h;
-	x1l=xcenter +  1/3staff_space;
-	z2r=z1+staff_space*se;
-	z3=1/2[z2, z4];
-	x4= xcenter + 3/8staff_space;
-	y4= 0;
-	z5=z4l+1.3staff_space*se;
-	x6l=x4l;
-	y6l=y4r;
-	x7= xcenter + 2/5staff_space;
-	y7= -d;
-	
-	fill z1l{se}..{se}z10..z3l..z11{se}..{se}z5l..z5r{nw}..{nw}z12..z3r..z13{nw}..{nw}z1r.. cycle;
-	fill z5r{nw}..tension1.4..z6l..tension1.4..{se}z7l..z7r{nw}..tension1.4..z6r..tension1.4..{se}z5l..cycle;
-	penlabels(1, 2, 3, 4, 5, 6, 7);
-	penlabels(10, 11, 12, 13);
-	
-fet_endchar;
-
-def rest_crook(expr a, w) =
-	balled_crook(a, w, ball_crook_balldiam, ball_crook_stem)
-enddef;
-
-%
-% Notes about 8th rest:  
-% 
-% * 8th rest should be no wider than the black note head
-%
-% * The inside corner of the horizontal portion is usually a little blotted.
-%
-% * The top of the crook chops off the vertical brush
-% 
-% * The crook widens a little
-%
-% * The bottom of the brush is slightly flat, as it has to align with
-% stafflines if it is inside the staff.
-%
-% * The top of the brush usually is a little lower than the top of bulb.
-%
-% * The bulb can vary. Sometimes it is open (like in the clefs). Sometimes 
-% it is closed, or even a flare.
-% 
-
-% from an email to Rune Zedeler:
-%
-% 
-% For example, the 8th rest was vaguely based on a book with trumpet
-% studies by Duhem, and by Baerenreiters cello suites. I included my
-% findings in a comment in the mf file.  One of the things that I tried
-% to do was make the rest a little lighter and narrower than the black
-% note head. I think this looks better in polyphonic music, when the
-% rest is below a head from a different voice.
-%
-%
-
-save bulb_diam, thin, thick;
-
-bulb_diam# := 0.64 staff_space#;
-thin# := 1.4 linethickness# - 0.02 staff_space#;
-thick# :=  2.2 linethickness#;
-crook_thin := 0.5 linethickness  + 0.08 staff_space;
-
-lower_brush := 1.5 linethickness;
-
-define_pixels ( bulb_diam, thin, thick);
-
-%
-% PAT is a compact way to pass the brush shape to the routine.
-%
-
-def draw_rest_bulb(expr ycenter, ycut, pat, stretch) =
-begingroup;
-	save x,y,pt;
-	z1l = point 0 of pat;
-	z2l = point 1 of pat;
-	z2r = point 3 of pat;
-	z1r = point 4 of pat;
-	z1 = 0.5[z1l,z1r];
-	z2 = 0.5[z2l,z2r];
-	y10 = ycenter;
-	z10 = whatever[z2, z1] + left*bulb_diam*stretch;
-
-
-	z3 = z10+bulb_diam/2.15*dir(-72) ;
-	z5 = z10 + up*bulb_diam/2 + right*linethickness/3;
-	
-	z7 = 0.5 [z4, z5] +  crook_thin * (0.45 ,0.4 ) / 1.3;
-	x8 = x10-0.4bulb_diam;
-	y8 = y10 + 0.25 linethickness;
-
-	z6 = whatever [z1l, z2l];
-	z6 = z3 + whatever * dir(12);
-
-	z4 = z3 + whatever * (z6-z3)
-		+ 1.1 crook_thin *(unitvector (z6 -z3) rotated 90);
-	x4 = x10+bulb_diam*.62 ;
-	y4 := ceiling (y4);
-
-	(pt,whatever) = pat intersectiontimes ((0,ycut)--(w,ycut));
-
-	fill point pt of pat {-direction pt of pat} .. tension 2
-		.. z4{left} .. tension 0.9 .. z7
-		.. z5{left} .. z8 .. z3{right}
-		.. {curl 0.2} z6 {right} .. tension 10 .. {left} point pt of pat -- cycle;
-
-	labels(3, 4, 5, 6, 7, 8, 9, 10, 11);
-
-endgroup;
-enddef;
-
-def draw_eighth_rest =
-	save width;
-	save ycenter;
-	save crook_dir, pat;
-	pair crook_dir;
-	path pat;
-
-	width# := 1.0 staff_space#;
-
-	define_pixels (width);
-	set_char_box (0, width#,
-		1.0 staff_space# + 0.5 linethickness#, 0.5 staff_space# + bulb_diam#/2);
-
-	penpos1 (thick, 0);
-	penpos2 (thin, 10);
-
-	y1 = - staff_space ;
-	y2 = h -  lower_brush;
-	x2r = width;
-	z2 = z1 + whatever*dir(72);
-       	z9 = z2 + 0.5 linethickness * dir (angle(z2 - z1)- 10);
-	pat = z1l --- z2l .. z9 .. z2r --- simple_serif (z1r, z1l, -40) .. cycle;
-	fill pat;
-	
-
-	draw_rest_bulb (0.5 staff_space , y2r , pat , 1.0);
-	penlabels (1, 2);
-	labels(9);
-
-	% draw_staff (-2,2,0.0);
-
-	enddef;
-
-fet_beginchar("Classical quarter rest","2classical","clasquartrest");
-	draw_eighth_rest;
-	currentpicture := currentpicture xscaled -1 shifted (w,0);
-	fet_endchar;
-
-fet_beginchar("8th rest","3","eighthrest");
-	draw_eighth_rest;
-	fet_endchar;
-
-
-%
-% TODO: the X dimensions of the rests are fucked up:
-% they can collide with augmentation dots. 
-%
-
-fet_beginchar("16th rest","4","sixteenthrest");
-	save width;
-	save ycenter;
-	save crook_dir, pat;
-	pair crook_dir;
-	path pat;
-
-	width# := 1.2 staff_space#;
-
-	define_pixels (width);
-	set_char_box (0, width#,
-		2.0 staff_space# + 0.5 linethickness#, 0.5 staff_space# + bulb_diam#/2);
-
-	penpos1 (thick, 0);
-	penpos2 (thin, 10);
-
-	y1 = -2 staff_space ;
-	y2 = h -  lower_brush;
-	x2r = width;
-	z2 = z1 + whatever*dir(74);
-       	z9 = z2 + 0.5 linethickness * dir (angle(z2 - z1)- 10);
-	pat = z1l --- z2l .. z9 .. z2r --- simple_serif (z1r, z1l, -40) .. cycle;
-	fill pat;
-	
-
-	draw_rest_bulb(0.5 staff_space , y2r , pat , 0.98);
-	draw_rest_bulb(-0.5 staff_space , (-0.5+0.2)*staff_space , pat , 1.02);
-	penlabels (1, 2);
-	labels(9);
-
-	% draw_staff (-2,2,0.0);
-	fet_endchar;
-
-fet_beginchar("32th rest","5","thirtysecondrest");
-	save width;
-	save ycenter;
-	save crook_dir, pat;
-	pair crook_dir;
-	path pat;
-
-	width# := 1.3 staff_space#;
-
-	define_pixels (width);
-	set_char_box (0, width#,
-		2.0 staff_space# + 0.5 linethickness#, 1.5 staff_space# + bulb_diam#/2);
-
-	penpos1 (thick, 0);
-	penpos2 (thin, 10);
-
-	y1 = -2 staff_space ;
-	y2 = h -  lower_brush;
-	x2r = width;
-	z2 = z1 + whatever*dir(76);
-       	z9 = z2 + 0.5 linethickness * dir (angle(z2 - z1)- 10);
-	pat = z1l --- z2l .. z9 .. z2r --- simple_serif (z1r, z1l, -40) .. cycle;
-	fill pat;
-	
-
-	draw_rest_bulb(1.5 staff_space , y2r , pat , 0.96);
-	draw_rest_bulb(0.5 staff_space , (0.5+0.2)*staff_space , pat , 1.00);
-	draw_rest_bulb(-0.5 staff_space , (-0.5+0.21)*staff_space , pat , 1.04);
-	penlabels (1, 2);
-	labels(9);
-
-	% draw_staff (-2,2,0.0);
-	fet_endchar;
-
-fet_beginchar("64th rest","6","sixtyfourthrest");
-	save width;
-	save ycenter;
-	save crook_dir, pat;
-	pair crook_dir;
-	path pat;
-
-	width# := 1.4 staff_space#;
-
-	define_pixels (width);
-	set_char_box (0, width#,
-		3.0 staff_space# + 0.5 linethickness#, 1.5 staff_space# + bulb_diam#/2);
-
-	penpos1 (thick, 0);
-	penpos2 (thin, 10);
-
-	y1 = -3 staff_space ;
-	y2 = h -  lower_brush;
-	x2r = width;
-	z2 = z1 + whatever*dir(78);
-       	z9 = z2 + 0.5 linethickness * dir (angle(z2 - z1)- 10);
-	pat = z1l --- z2l .. z9 .. z2r --- simple_serif (z1r, z1l, -40) .. cycle;
-	fill pat;
-	
-
-	draw_rest_bulb(1.5 staff_space , y2r , pat , 0.94);
-	draw_rest_bulb(0.5 staff_space , (0.5+0.20)*staff_space , pat , 0.98);
-	draw_rest_bulb(-0.5 staff_space , (-0.5+0.21)*staff_space , pat , 1.02);
-	draw_rest_bulb(-1.5 staff_space , (-1.5+0.22)*staff_space , pat , 1.06);
-	penlabels (1, 2);
-	labels(9);
-
-	% draw_staff (-2,2,0.0);
-	fet_endchar;
-
-fet_beginchar("128th rest","7","hundredtwentyeighthrest");
-	save width;
-	save ycenter;
-	save crook_dir, pat;
-	pair crook_dir;
-	path pat;
-
-	width# = 1.5 staff_space#;
-
-	define_pixels (width);
-	set_char_box (0, width#,
-		3.0 staff_space# + 0.5 linethickness#, 2.5 staff_space# + bulb_diam#/2);
-
-	penpos1 (thick, 0);
-	penpos2 (thin, 10);
-
-	y1 = -3 staff_space ;
-	y2 = h -  lower_brush;
-	x2r = width;
-	z2 = z1 + whatever*dir(80);
-       	z9 = z2 + 0.5 linethickness * dir (angle(z2 - z1)- 10);
-	pat = z1l --- z2l .. z9 .. z2r --- simple_serif (z1r, z1l, -40) .. cycle;
-	fill pat;
-	
-
-	draw_rest_bulb(2.5 staff_space , y2r , pat , 0.92);
-	draw_rest_bulb(1.5 staff_space , (1.5+0.20)*staff_space , pat , 0.96);
-	draw_rest_bulb(0.5 staff_space , (0.5+0.21)*staff_space , pat , 1.0);
-	draw_rest_bulb(-0.5 staff_space , (-0.5+0.22)*staff_space , pat , 1.04);
-	draw_rest_bulb(-1.5 staff_space , (-1.5+0.23)*staff_space , pat , 1.08);
-	penlabels (1, 2);
-	labels(9);
-
-	% draw_staff (-2,2,0.0);
-	fet_endchar;
-
-
-endgroup;
-
-fet_endgroup("rests")
diff --git a/mf/feta-generic.mf b/mf/feta-generic.mf
deleted file mode 100644
index 767a83d194..0000000000
--- a/mf/feta-generic.mf
+++ /dev/null
@@ -1,41 +0,0 @@
-% 
-% feta-generic.mf --  implement generic stuff: include lots of files, but don't
-%  set dims.
-%
-% source file of the Feta (defintively not an abbreviation for Font-En-Tja)
-% music font
-% 
-% (c) 1997--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-% 
-
-
-if test = -1:
-	mode := smoke;
-fi
-
-mode_setup;
-%
-
-input feta-macros;
-
-input feta-params;
-
-font_x_height  staff_space#;
-font_coding_scheme "feta music";
-
-if test = 0: 
-	input feta-eindelijk;
-	input feta-toevallig;
-	input feta-puntje;
-	input feta-bolletjes;
-	input feta-schrift;
-	input feta-banier;
-	input feta-klef;
-	input feta-timesig;
-	input feta-pendaal;
-	input feta-accordion;
-	input feta-solfa;
-else:
-	input feta-test-generic.mf;
-
-fi
diff --git a/mf/feta-haak.mf b/mf/feta-haak.mf
deleted file mode 100644
index 9fb5c2b163..0000000000
--- a/mf/feta-haak.mf
+++ /dev/null
@@ -1,74 +0,0 @@
-input feta-macros;
-input feta-params;
-input feta-autometric;
-
-save code;
-code :=0;
-
-
-def draw_bracket( expr height_sharp, width_sharp) = 
-	save alpha, height, p, width, thin, thick;
-	height# := height_sharp;
-	width#  := width_sharp;
-
-	beginchar(incr code, width#, height#/2, height#/2);
- 
-	define_pixels (height, width);
-	thin = 2 linethickness;
-	thick = .5 staff_space;
-	
-	pickup pencircle scaled thin;
-	lft x1 = 0;
-	top y1 = height/2 + thick + thin;
-
-	x2 = x1;
-	z2 = (x1, 0);
-	rt x3 = thick;
-	y3 = y2;
-
-	x4 = x3;
-	bot y4 = y1 - thick + thin/2;
-
-	alpha = 50;
-	z5 = z1 + (width, 3/4staff_space);
-
-	% need silly z6?
-	% strange turning path when invoked via MakeTeXTFM...?
-	% mf "\\mode:=ljfour; mag:=1; scrollmode; input feta-brackets16"
-	z6 = z5 - (0, thin/16);
-
-	filldraw z5{dir(180+alpha)}..{left}z1--z2--z3..{up}z4{right}
-		..{dir(alpha)}z6..cycle;
-
-%	% try control points to do this in ps
-%	currentpicture:=currentpicture shifted (-x5/2,(x5-x4)/2);
-%
-%	s7 := 0.4*(x5-x1);
-%	x7 = x1 + s7 * cosd(0);
-%	y7 = y1 + s7 * sind(0);
-%
-%	s8 := -0.25*(x5-x1);
-%	x8 := x5 + s8 * cosd(alpha);
-%	y8 := y5 + s8 * sind(alpha);
-%
-%	s9 := 0.5*(x5-x4);
-%	x9 := x4 + s9 * cosd(0);
-%	y9 := y4 + s9 * sind(0);
-%
-%	s10 := -0.15*(x5-x4);
-%	x10 := x5 + s10 * cosd(alpha);
-%	y10 := y5 + s10 * sind(alpha);
-%
-%	draw z5..controls z8 and z7..z1--z2--z3..{up}z4
-%		..controls z9 and z10..z6..cycle;
-%
-%	labels(1,2,3,4,5,6,7,8,9,10);
-	addto currentpicture also currentpicture yscaled -1;
-endchar;
-enddef;
-
-% for h :=  staffsize# step 1 pt# until (1.1 * staffsize#):
-for h :=  staffsize# step 1 pt# until (7 * staffsize#):
-	draw_bracket(h, 2staff_space# );
-endfor
-
diff --git a/mf/feta-harmonica.mf b/mf/feta-harmonica.mf
deleted file mode 100644
index 313c001688..0000000000
--- a/mf/feta-harmonica.mf
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
-fet_begingroup("balls");
-
-fet_endgroup("balls");
-
diff --git a/mf/feta-ital-f.mf b/mf/feta-ital-f.mf
deleted file mode 100644
index a0800cf0f0..0000000000
--- a/mf/feta-ital-f.mf
+++ /dev/null
@@ -1,40 +0,0 @@
-% ital-f.mf
-% from itall.mf
-%
-% Computer Modern Italic lower case:
-% This lowercase italic alphabet was prepared by D. E. Knuth in December, 1979,
-% inspired by the Monotype faces used in {\sl The Art of Computer Programming}.
-% The programs were revised for the new \MF\ conventions in 1985.
-
-% Character codes \0141 through \0172 are generated.
-% not
-
-% cmchar "Italic letter f";
-% beginchar("f",max(1.5u#,stem#)+max(3.5u#,2flare#),asc_height#,desc_depth#);
-"Dynamic letter f";
-beginchar(fcode ,max(1.5u#,stem#)+max(3.5u#,2flare#),asc_height#,desc_depth#);
-
-italcorr asc_height#*slant+.75u#;
-adjust_fit(if monospace:u#,u# else: 0,0 fi); pickup fine.nib;
-numeric theta; z88=(.5w-.5u,h); z89=(.5w+.5u,-d); theta=angle(z88-z89);
-pos0(flare,0); pos1(hair,0); pos2(vair,90);
-pos3(.5[hair,stem],180); pos4(stem,theta+90);
-pos5(stem,theta-90); pos6(.5[hair,stem],0);
-pos7(vair,-90); pos8(hair,-180); pos9(flare,-180);
-rt x1r=hround(w+.25u); lft x8r=hround-.35u; x2=.6[x1,x4]; x7=.6[x8,x5];
-y9-.5flare=vround -.85d; y2-y0=y9-y7; top y2r=h+oo; bot y7r=-d-oo;
-% y4=.25[x_height,h]; y5=.5[-d,y4];
-y4=x_height-.5bar; y5=y4;
-z4=whatever[z88,z89]; z5=whatever[z88,z89];
-x3=.8[x2+x4-x88,x88]; x6=.8[x7+x5-x89,x89]; y3=.8[y4,y2]; y6=.8[y5,y7];
-bulb(2,1,0); bulb(7,8,9);  % bulbs
-filldraw stroke z2e{left}...z3e...{z89-z88}z4e;  % upper arc
-filldraw z4r--z5l--z5r--z4l--cycle;  % stem
-filldraw stroke z5e{z89-z88}...z6e...{left}z7e;  % lower arc
-pickup crisp.nib; pos20(bar,90); pos21(bar,90);
-top y20r=top y21r=x_height;
-%lft x20=lft x4r-.5stem-u; rt x21=rt x4l+.5stem+1.5u;
-lft x20=lft x4r-.5stem-xbar; rt x21=rt x4l+.5stem+1.5xbar;
-filldraw stroke z20e--z21e;  %  crossbar
-math_fit(desc_depth#*slant+u#,x_height#*slant);
-penlabels(0,1,2,3,4,5,6,7,8,9,20,21,88,89); endchar;
diff --git a/mf/feta-ital-m.mf b/mf/feta-ital-m.mf
deleted file mode 100644
index 73f1a8abc8..0000000000
--- a/mf/feta-ital-m.mf
+++ /dev/null
@@ -1,37 +0,0 @@
-% ital-m.mf
-% from itall.mf
-%
-% Computer Modern Italic lower case:
-% This lowercase italic alphabet was prepared by D. E. Knuth in December, 1979,
-% inspired by the Monotype faces used in {\sl The Art of Computer Programming}.
-% The programs were revised for the new \MF\ conventions in 1985.
-
-% Character codes \0141 through \0172 are generated.
-% not
-
-% cmchar "Italic letter m";
-% beginchar("m",15u#,x_height#,0);
-\"Dynamic letter m\";
-% beginchar(incr num,15u#,x_height#,0);
-beginchar( 109 ,12u#, asc_height#,0);
-
-italcorr 1/3x_height#*slant+.5hair#+.5u#;
-adjust_fit(if monospace:-1.5u#,-2u# else: 0,0 fi); pickup fine.nib;
-numeric shaved_stem; shaved_stem=mfudged.stem;
-save stem; stem=shaved_stem;
-pos2(stem,0); x1=x2;
-if monospace: pos1(stem,0); lft x1l=hround(2.5u-.5stem); top y1=h;
-else: x0=0; lft x2l=hround(2.5u-.5stem);
- hook_in(0,a,1); fi  % opening hook
-y2-.5stem=-oo; filldraw circ_stroke z2e--z1e;  % left stem
-x4+.5stem=hround(.5w+.5stem); ital_arch(2,3,4);  % left arch
-pos5(stem,0); y5=y2; x5=x4;
-filldraw circ_stroke z5e--z4e;  % middle stem
-x7+.5stem=hround(w-2.5u+.5stem);
-x8=x7-.25u; ital_arch(5,6,7);  % right arch
-if monospace: pos9(vair,90); x9=good.x .5[x8,w]; bot y9l=0; y8=1/3h;
- pos8(stem,0); filldraw stroke z8e{-u,-x_height}...{right}z9e; % terminal
-else: x9=w; hook_out(8,b,9)(skewed); fi  % closing hook
-filldraw stroke z7e{down}..{-u,-x_height}z8e;  % right stem
-math_fit(-2/3x_height#*slant+.5hair#+.5u#,ic#);
-penlabels(0,a,1,2,3,4,5,6,7,8,9); endchar;
diff --git a/mf/feta-ital-p.mf b/mf/feta-ital-p.mf
deleted file mode 100644
index a1320364fe..0000000000
--- a/mf/feta-ital-p.mf
+++ /dev/null
@@ -1,29 +0,0 @@
-% ital-p.mf
-% from itall.mf
-%
-% Computer Modern Italic lower case:
-% This lowercase italic alphabet was prepared by D. E. Knuth in December, 1979,
-% inspired by the Monotype faces used in {\sl The Art of Computer Programming}.
-% The programs were revised for the new \MF\ conventions in 1985.
-
-% Character codes \0141 through \0172 are generated.
-% not
-
-% cmchar "Italic letter p";
-% beginchar("p",9u#,x_height#,desc_depth#);
-"Dynamic letter p";
-beginchar(112, 9u#,x_height#,desc_depth#);
-italcorr .7x_height#*slant+.5curve#-u# if math_fitting:-.5u# fi;
-adjust_fit(0,0); pickup fine.nib;
-x0=0; x2-.5stem=hround(2.5u-.5stem); hook_in(0,1,2);  % opening hook
-pos4(hair,-180); pos5(vair,-90); pos6(curve,0); pos7(vair,90);
-x4=x2; rt x6r=hround(w-1.5u+.5curve); x5=x7=.5[x4,x6];
-bot y5r=-oo; top y7r=h+oo; y4=y6=.5[y5,y7];
-filldraw stroke super_arc.e(4,5) & pulled_arc.e(5,6)
- & pulled_arc.e(6,7) & super_arc.e(7,4);  % bowl
-pickup tiny.nib; pos2'(stem,0); pos3(stem,0);
-z2=z2'; x3=x2; bot y3=-d; filldraw stroke z2'e--z3e;  % stem
-dish_serif(3,2',a,1/3,.75jut,b,1/3,jut);  % serif
-math_fit(-min(2/3x_height#*slant-.5hair#-.5u#,
- 2u#-.5stem#-desc_depth#*slant),ic#);
-penlabels(0,1,2,3,4,5,6,7); endchar;
diff --git a/mf/feta-ital-r.mf b/mf/feta-ital-r.mf
deleted file mode 100644
index b5a5e67a53..0000000000
--- a/mf/feta-ital-r.mf
+++ /dev/null
@@ -1,27 +0,0 @@
-% ital-r.mf
-% from itall.mf
-%
-% Computer Modern Italic lower case:
-% This lowercase italic alphabet was prepared by D. E. Knuth in December, 1979,
-% inspired by the Monotype faces used in {\sl The Art of Computer Programming}.
-% The programs were revised for the new \MF\ conventions in 1985.
-
-% Character codes \0141 through \0172 are generated.
-% not
-
-% cmchar "Italic letter r";
-% beginchar("r",5.5u#+max(1.75u#,flare#),x_height#,0);
-"Dynamic letter r";
-beginchar( 114 ,5.5u#+max(1.75u#,flare#),x_height#,0);
-
-italcorr x_height#*slant;
-adjust_fit(if monospace:.25u#,.5u# else: 0,0 fi); pickup fine.nib;
-x0=0; x2=x3; pos3(stem,0); lft x3l=hround(2.5u-.5stem); y3-.5stem=-oo;
-hook_in(0,1,2);  % opening hook
-filldraw circ_stroke z3e--z2e;  % left stem
-pos3'(hair,180); z3'=z3; pos4(vair,90); pos5(hair,0); pos6(flare,0);
-x4=w-.5u-max(1.75u,flare); rt x5r=hround(r-.5u); top y4r=h+oo;
-filldraw stroke z3'e{up}...z4e{right};  % link
-y6+.5flare=vround(bot y4l-.03x_height); bulb(4,5,6);  % bulb
-math_fit(-2/3x_height#*slant+.5hair#+.5u#,ic#-.5u#);
-penlabels(0,1,2,3,4,5,6); endchar;
diff --git a/mf/feta-ital-s.mf b/mf/feta-ital-s.mf
deleted file mode 100644
index 31bbe575c1..0000000000
--- a/mf/feta-ital-s.mf
+++ /dev/null
@@ -1,34 +0,0 @@
-% ital-s.mf
-% from itall.mf
-%
-% Computer Modern Italic lower case:
-% This lowercase italic alphabet was prepared by D. E. Knuth in December, 1979,
-% inspired by the Monotype faces used in {\sl The Art of Computer Programming}.
-% The programs were revised for the new \MF\ conventions in 1985.
-
-% Character codes \0141 through \0172 are generated.
-% not
-
-% cmchar "Italic letter s";
-% beginchar("s",5.25u#+max(1.75u#,flare#),x_height#,0);
-"Dynamic letter s";
-beginchar(115 ,5.25u#+max(1.75u#,flare#),x_height#,0);
-italcorr x_height#*slant-.5u#;
-adjust_fit(0,0); pickup fine.nib;
-numeric theta; theta=90-angle(40u,h); slope:=-h/40u;  % angle at middle
-pos2(vair,-90); pos0(max(fine.breadth,ess),theta); pos7(vair,-90);
-x2l=x0=x7=.5w; top y2l=h+oo; bot y7r=-oo;
-y0-.5ess=y7l+.55(y2r-y7l-ess);
-lft x3l=hround u-eps; rt x6r=hround(w-.5u)+eps;
-x3r-x3l=x6r-x6l=hround .5[vair,ess]-fine;
-ellipse_set(2l,3l,4l,0l); ellipse_set(2r,3r,4r,0r); y3=y3r;
-ellipse_set(7l,6l,5l,0l); ellipse_set(7r,6r,5r,0r); y6=y6r;
-interim superness:=more_super;
-filldraw stroke super_arc.e(2,3) & z3e{down}
- ..z4e---z5e..z6e{down} & super_arc.e(6,7);  % main stroke
-pos1(hair,0); pos10(hround .75[hair,flare],0);
-pos2'(vair,90); z2'=z2;
-pos8(hair,-180); pos9(flare,-180);
-rt x10r=hround(w-u)+2eps; lft x9r=hround .5u-2eps; y10=.78h; y9=.25h;
-bulb(2',1,10); bulb(7,8,9);  % bulbs
-math_fit(0,ic#); penlabels(0,1,2,3,4,5,6,7,8,9,10); endchar;
diff --git a/mf/feta-ital-z.mf b/mf/feta-ital-z.mf
deleted file mode 100644
index ba11a2b047..0000000000
--- a/mf/feta-ital-z.mf
+++ /dev/null
@@ -1,29 +0,0 @@
-% ital-z.mf
-% from itall.mf
-%
-% Computer Modern Italic lower case:
-% This lowercase italic alphabet was prepared by D. E. Knuth in December, 1979,
-% inspired by the Monotype faces used in {\sl The Art of Computer Programming}.
-% The programs were revised for the new \MF\ conventions in 1985.
-
-% Character codes \0141 through \0172 are generated.
-%not
-
-% cmchar "Italic letter z";
-% beginchar("z",5.5u#+max(1.5u#,stem#),x_height#,0);
-\"Dynamic letter z";
-beginchar(122,5.5u#+max(1.5u#,stem#),x_height#,0);
-italcorr x_height#*slant+.5hair#;
-adjust_fit(if monospace:.5u#,.5u# else: 0,0 fi); pickup fine.nib;
-pos1(hair,0); pos2(stem,-90); pos3(vair,-90); pos4(hair,0);
-lft x1l=hround(u-.5hair); x2=2.5u; x3=w-2u; rt x4r=hround(w-.5u);
-top y1=.78h; top y2l=top y4=h+oo; y3=.825h;
-pos5(hair,0); pos6(vair,-90); pos7(stem,-90); pos8(hair,0);
-x5=x1; x6=2.5u; x7=w-2u; x8+.5hair=hround(w+.5hair-eps);
-bot y5=bot y7r=-oo; y6=.175h; bot y8=.31h;
-pair p; p=(z4-z5) yscaled 2;
-filldraw stroke z1e{up}...z2e{right}..z3e{right}...{p}z4e;  % upper bar
-filldraw stroke z5e{p}...z6e{right}..{right}z7e...{up}z8e;  % lower bar
-filldraw stroke z5e{p}..{p}z4e;  % diagonal
-math_fit(0,1/3x_height#*slant+.5hair#+.5u#);
-penlabels(1,2,3,4,5,6,7,8); endchar;
diff --git a/mf/feta-klef.mf b/mf/feta-klef.mf
deleted file mode 100644
index 0f9df26550..0000000000
--- a/mf/feta-klef.mf
+++ /dev/null
@@ -1,671 +0,0 @@
-% feta-klef.mf --  implement Clefs -*-Fundamental-*-
-% 
-% part of LilyPond's pretty-but-neat music font
-%
-% source file of the Feta (not the Font-En-Tja) music font
-% 
-% (c) 1997--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>,
-% Jan Nieuwenhuizen <janneke@gnu.org>,
-% Juergen Reuter <reuter@ipd.uka.de>
-
-
-fet_begingroup("clefs");
-test_staff = 0;
-
-
-% [Wanske] says the bulbs should be positioned about 1/4 right of the
-% "arrow"
-
-%
-% TODO: the hair-curve at z6r looks a little awkward.
-def draw_c_clef (expr reduction) = 
-	save hair, norm, reduced_ss, right_edge;
-	reduced_ss#=staff_space#*reduction;
-	norm#:=2/3reduced_ss#;
-	hair#:=0.06 reduced_ss# + 0.5 linethickness# ;
-
-	right_edge# = 15/4norm#+2hair#;
-
-	set_char_box (0, right_edge# + 0, 
-		2 reduced_ss#, 2 reduced_ss#);
-	define_pixels (hair,norm,reduced_ss, right_edge);
-
-	draw_block ((0,-d), (3/4norm+1/2hair,h));
-	draw_block ((3/4norm+2hair,-d), 
-		(3/4norm+7/2hair,h));
-
-	
-	save xoff;
-	xoff=3/4norm+7/2hair;
-	z5l = (xoff - 3/4 hair, 0);
-	z5r = (x4, 0);
-
-	penpos1(hair,-90);
-	z1l=(xoff+norm+hair,h);
-	penpos2(norm-3/2hair,180);
-	z2l=(right_edge,h/2);
-	penpos3(hair,90);
-	z3=(((right_edge -xoff)/2)+xoff,2hair);
-
-	penpos4(hair,0);
-	z4=(xoff+1/2norm+1/2hair, reduced_ss - linethickness - .2 hair);
-
-	penpos6(norm-hair,90);
-	z6=(xoff+3/4norm,0);
-
-
-	save t; t=0.833;
-	save p; path p;
-	p = z5l..z4l{up}..z4r{down}..z3r{right}..tension t..z2r{up}
-		..tension t..
-		flare_path(z1l,180,90,hair,norm-1/2hair, -1)
-		..tension t..z2l{down}
-		..z3l{left}..z6r..z5r{down};
-	pickup pencircle scaled 1pt#;
-	filldraw p..(reverse p yscaled -1)..cycle;
-	penlabels (1,2,3,4,5,6);
-
-	% ugh, should be bulb, not flare?
-
-	enddef;
-
-fet_beginchar ("C clef", "C", "altoclef")
-	if test_staff = 1:
-		draw_staff (-2,2, 0.0);
-	fi;
-	draw_c_clef (1.0);
-fet_endchar;
-
-fet_beginchar ("C clef", "C_change", "caltoclef")
-	if test_staff = 1:
-		draw_staff (-2,2, 0.0);
-	fi;
-	draw_c_clef (.8);
-fet_endchar;
-
-%
-% New bulb routine:
-%
-% Insert a brushed piece of the path, and draw a bulb separately
-%
-% The bulb is  circular form. Neat merging of the bulb and brushed path
-% is done by playing with tension.
-%
-%
-
-def new_bulb (expr outer_tangent_point, 
-    big_radius, bulb_radius, flare, direction, turning_dir) =
-
-begingroup;
-    save p, oldpen;
-    path p;
-    pen oldpen;
-    save center;
-    pair center;
-    clearxy;
-    
-    center = outer_tangent_point +big_radius* dir(0) + big_radius* dir(-turning_dir * 90)
-      - bulb_radius * dir (- turning_dir * 90);
-
-    z1 = center + bulb_radius * dir (turning_dir * 180);
-    z2 = center + bulb_radius * dir (turning_dir * 270);
-
-    z9 = center + bulb_radius * dir (0);
-    z10 = center + bulb_radius * dir (turning_dir *90);
-    z3 = outer_tangent_point + flare * dir (0);
-
-    labels(1,2,3,9,10);
-
-    % tension is needed to open up the space between return path and the
-    % ball.
-    fill
-%	draw
-      z9 .. z10 .. tension 1.1  .. z1 .. z2 .. cycle;
-    
-    p:=    outer_tangent_point{dir (-turning_dir* 90)}
-       .. tension 0.97
-       .. {dir (turning_dir * 90)}z9 -- z3
-     ;
-    if direction = 1:
-      p
-    else:
-      reverse p
-    fi
-  endgroup
-enddef;
-
-
-
-%
-%
-% There is  some variation is shape of bass clefs. Important points
-%
-% * the size of the swoosh tip: in some clefs, it almost reaches the
-% bottom staff line, in some it crosses the 2nd line from the bottom
-% with a small overshoot.
-%
-% The most popular design is where the X part of the tip is aligned 
-% left bulb boundary, and the Y part ends on the 2nd staffline exactly. 
-% This is what we do.
-%
-% * The size of the bulb. The diameter of the bulb is the width of the 
-% open space.
-%
-% * The y-alignment of the bulb. The center of the bulb can be on or slightly 
-% above the staff line.
-%
-% * The position of the dots. They can be symmetrical around the
-% staffline, centered in the staff space. The Baerenreiter SCS has the
-% bottom dot raised by approx. 0.1 ss.
-%
-% * uncarefully set music may have overshoots at the top. We have none. 
-%
-% * It is not exactly clear where the vertical tangent at the right
-% of the swoosh should be.
-%
-%
-
-def draw_bass_clef(expr exact_center, reduction) = 
-        save reduced_ss, left_tilt, left_thick, swoosh_width;
-	save right_thickness, tip_protude;
-	pair tip_protude;
-        save dot_diam;
-        reduced_ss# = staff_space# * reduction;
-
-        2.2 dot_diam = round reduction* (staff_space - stafflinethickness);
-	right_thickness = 0.37 staff_space + 1.2 linethickness ;
-        swoosh_width# = 2.1 reduced_ss#;
-%	tip_protude := (-linethickness, -.2 staff_space);
-	tip_protude := (0, 0);	
-	bulb_y_offset := 0.15 staff_space;
-	overshoot_top := 0.0;
-	%% 
-
-        set_char_box(0 +
-                - xpart exact_center,
-                0 +
-                xpart exact_center + swoosh_width# + 7/12 reduced_ss#, 
-                - ypart exact_center + 2.5 reduced_ss#, 
-                ypart exact_center +reduced_ss#);
-
-        define_pixels(swoosh_width);
-	define_whole_pixels(reduced_ss); 
-        left_tilt = 5;
-
-	y1 = bulb_y_offset;
-	x1 = 0;
-
-        x2 = .5 [x1,x3];
-	x2l = x2r = x2;
-
-	y2l := vround_pixels (reduced_ss#  + 0.5 linethickness#);
-	y2l - y2r = (1.0 + overshoot_top) * linethickness;
-
-        x3l - x1 =  swoosh_width;
-        x3l - x3r = right_thickness;
-
-	% try to correct: the top dot seems farther away if y3l = 0.
-        y3l = 0.05 staff_space;
-	
-        z4 =  - (0, 2.0 reduced_ss) + tip_protude;
-
-        z5 = (x3l +  1/3 reduced_ss, .5 reduced_ss);
-
-        penpos3(whatever,  185);
-        penpos4(linethickness, 135);
-
-	pickup pencircle scaled 1; 
-%	draw
-	fill
-           new_bulb (z1, 0.45 reduced_ss, 0.4 reduced_ss, 2.5 linethickness,  1, 1)
-
-{dir (90)}
-	        .. z2r{right} .. tension 1.0 .. z3r{down}  .. {curl 0} 
-                simple_serif(z4r, z4l, 90) {curl 0}
-                .. z3l{up} .. tension 0.9 .. z2l{left} 
-                 .. cycle
-		;
-        labels(2,4);
-        labels(range 1 thru 12);
-
-	penlabels(2,3,4);
-
-        pickup pencircle scaled dot_diam;
-        drawdot z5;
-        drawdot z5 yscaled -1;
-enddef;
-
-
-
-
-fet_beginchar("F clef ", "F", "bassclef")
-	if test_staff = 1:
-		draw_staff(-3,1, 0.0);
-	fi;
-	draw_bass_clef((0, 0), 1.0);
-fet_endchar;
-
-fet_beginchar("F clef (reduced)", "F_change", "cbassclef")
-	draw_bass_clef((0, 0),0.8);
-fet_endchar;
-
-
-
-%
-% Inspired by Baerenreiter
-% 
-
-% Beste lezers, kijk,
-%
-% Een bolletje  hebben we bij toeval allemaal wel eens getekend, maar begint u
-% toch eenvoudig.   Eerst een eenvoudig kruis of herstellingsteken
-% en via de dubbelslag naar een voorzichtig vlaggetje, en heb geduld!
-% Ikzelf heb bijvoorbeeld over mijn eerste gave G-sleutel
-% 35 kilobyte metafont, 12 patchlevels, 0 vriendinnen en 45 dagen gedaan
-%
-%  -- vrij naar Van Kooten & De Bie
-%
-def debugfill = fill enddef;
-def draw_gclef (expr reduction)=
-	save reduced_ss, downstroke_dir, downstroke_angle, center;
-	save breapth_factor, inner_thick_end, thinness, thickness, thinnib;
-	save inner_start_angle, thinness;
-	reduced_ss# = staff_space# * reduction;
-	define_pixels(reduced_ss);
-	pair downstroke_dir, center;
-
-	thinness = 0.08 staff_space + 0.7 linethickness;
-	downstroke_dir = unitvector (14, -75);
-	downstroke_angle = angle downstroke_dir;
-
-
-	breapth_factor = 21.0 /14;
-	inner_thick_end = 45;
-	inner_start_angle = downstroke_angle - 43;
-	thickness = .32 reduced_ss + 1.1 linethickness;
-
-	thinnib = thinness;
-
-	
-	set_char_box(0,
-		 1.71 * breapth_factor* reduced_ss#, 
-		 2.6 * reduced_ss#,
-		 5 * reduced_ss#);
-
-	center := (1.0 * breapth_factor* reduced_ss, 0);
-
-	save upward_swoosh_angle;
-	upward_swoosh_angle = 132;
-	penpos7(thickness, upward_swoosh_angle);
-	penpos5(thickness, upward_swoosh_angle);
-
-	
-	z1 = center + whatever * dir (inner_start_angle);
-	x1 = xpart center -.28 reduced_ss;
-	
-	top z2r = center + (0,reduced_ss + stafflinethickness/2);
-	
-	x4 = xpart center - .1 reduced_ss;
-	bot y4r = -(reduced_ss + .5 stafflinethickness);
-
-	z3 = (z4 - center) rotated inner_thick_end + center;
-	x5r = - breapth_factor* reduced_ss + xpart center;
-	y5r = .37 reduced_ss + ypart center;
-
-	z6 = center + whatever * downstroke_dir;
-	y6 = ypart center + 2 reduced_ss;
-
-	z7l - z6 = whatever * (z5 - z6) ;
-	y7l = 3.5 reduced_ss;
-
-	x9 = .7 [x10, x7r];
-	top y9l = 5 reduced_ss;
-
-	y11 = ypart center  - 47/28 reduced_ss;
-	y12 = ypart center  - 71/28 reduced_ss;
-	y13 = .48 [y12,y4r];
-	x11 - x13r  = 1.5 reduced_ss + 0.5 thinnib;
-	x12r = xpart (.45 [z13r , z11] + .75 reduced_ss * downstroke_dir) ;
-
-%	z10=  center + whatever * dir (downstroke_angle - 1.5 );
-	x10 = x6 - 2 thinnib;
-	y10 = ypart center + 3.5  reduced_ss;
-	y10l  - y10r = 1.2 thickness;
-	z10r - z10l =
-		.7 thinnib* dir (downstroke_angle + 90) + whatever * downstroke_dir;
-
-	z10 = .5 [z10l, z10r];
-
-	z11 =  center + whatever * downstroke_dir +  ( .00 reduced_ss, 0);
-
-	penpos1(thinnib, inner_start_angle);
-	penpos2(thickness, 90);
-	penpos3(thinnib, -90 + inner_thick_end);
-	penpos4(thinnib, -90);
-
-
-	penpos9(1.45 thickness, -70);  
-	save lipje;
-	pair lipje;
-	lipje= .5 [z9l, z9r] +  .25 ((z9r- z9l)  rotated -90);
-	penpos13(thinnib + 0.14 staff_space, 180);
-
-	pickup pencircle scaled 1;
-
-	debugfill
-		z2l{right}
-		.. z3l
-		.. z4l{left}
-		.. z5l{up}
-		.. z7l{up} 
-		.. tension 1.2 
-		.. z9l -- lipje
-		--z9r % {dir (downstroke_angle+ 0)}
-		.. tension 0.8
-		.. z7r{down} .. z5r{down} .. z4r{right}
-		.. z3r .. z2r{left} .. 
-		tension .95 .. 
-		z1r -- simple_serif(z1r, z1l, 80) -- z1l 
-		.. tension 0.85 ..cycle;
-
- 	save p, staffline_time, staff_line_path, down_staff_line_intersection;
-	path p, staff_line_path;
-	pair down_staff_line_intersection;
-	p := z4{left} .. z5{up} .. z7{up} ;
-
-	staff_line_path := (-reduced_ss, 2 reduced_ss) ..  (2 reduced_ss,2 reduced_ss);
-
-	draw p;
-
-
-	% we don't do this with a path: variations in thickness
-	% are  very easily made and look very ugh.
-	pickup pencircle scaled thinnib;
-	
-
-	save bot_angle;
-
-	bot_angle = -180; % downstroke_angle- 87;
-
-	penpos12(thinnib, bot_angle + 90);
-
-	p := z9 .. z10{down}
-		.. z6
-		.. z11{dir (-95) }
-		.. z12{dir(bot_angle)}
-		.. z13{up}
-	;
-	save down_intersection_t;	
-	down_intersection_t :=  xpart (p intersectiontimes  staff_line_path) ;
-	down_staff_line_intersection = point down_intersection_t of p;
-	z14 = down_staff_line_intersection;
-	penpos14(thinnib, angle (direction down_intersection_t of p) + 90);
-
-	save start_angle;
-	start_angle=angle (direction xpart (p intersectiontimes z11) of p);
-	penpos11 (thinnib, start_angle+ 90);
-
-	save loop_end_dir;
-	pair loop_end_dir;
-	loop_end_dir = direction (xpart (p intersectiontimes staff_line_path)) of p;
-	draw p;
-
-	penpos6(thinnib, angle (loop_end_dir) + 90);
-	pickup pencircle scaled 1;
-	debugfill
-		z9l
-		.. {down}z10l
-		.. z14l{loop_end_dir} -- z14r{-loop_end_dir}
-		.. z10r{up}
-		.. tension .98
-		.. z9r
-		-- cycle;
-
-	pickup pencircle scaled 1;
-
-	debugfill
-		z11r{dir(start_angle)}
-		.. z12r{dir(bot_angle)}
-
-		..new_bulb (z13r, 0.45 reduced_ss, 0.38 reduced_ss, thinnib
-			+ .15 staff_space
-			,  1, -1) {down}
-
-%		.. tension 0.98
-		.. z12l{-dir (bot_angle)}
-
-		.. z11l{-dir(start_angle)}
-		.. cycle;
-
-
-
-	penlabels(range 1 thru 16);
-enddef;
-
-
-fet_beginchar("G clef", "G", "trebleclef")
-	if test_staff = 1:
-		draw_staff(-1,3, 0.0);
-	fi;
-	draw_gclef(1.0);
-fet_endchar;
-fet_beginchar("G clef", "G_change", "ctrebleclef")
-	draw_gclef(0.8);
-fet_endchar;
-
-%%%%
-% PERCUSSION
-%
-%
-
-
-
-%%
-%
-% The perc clef extent is not coincident with its bbox, since 
-%  the perc clef needs more space in front than a normal clef.
-%
-
-def draw_percussion_clef(expr reduction) =
-	save reduced_ss, razt;
-
-	reduced_ss# = staff_space# * reduction;
-	define_pixels(reduced_ss);
-	set_char_box(-.67reduced_ss#,2.0reduced_ss#,reduced_ss#,reduced_ss#);
-	razt := 0.45reduced_ss;
-	draw_block((-b,-d),(-b+razt,h));
-	draw_block((w-razt,-d),(w,h));
-enddef;
-
-fet_beginchar("percussion clef", "percussion", "percussionclef")
-	draw_percussion_clef(1.0);
-fet_endchar;
-
-fet_beginchar("percussion clef (reduced)", "percussion_change", "cpercussionclef")
-	draw_percussion_clef(.8);
-fet_endchar;
-
-def draw_tab_T(expr pos, siz, slant) =
-	begingroup;
-	clearxy;
-	pair vx,vy;
-	vx=(xpart siz) * dir 0;
-	vy=(ypart siz) * dir 90;
-
-	penpos1(.75penh, 100);
-	z1=z2+(1/6*vx-.15*vy);
-	penpos2(.9penw, 0);
-	z2l = pos+.75vy;
-	penpos3(penh,-100);
-	z3l = pos+.4vx+vy;
-	penpos4(penh,-90);
-	z4=-.1vy+.5[z3,z5];
-	penpos5(.8penh,-30);
-	x5r=xpart (pos+siz);
-	y5l=ypart (pos+siz);
-
-	penpos10(penw,170);
-	z10=pos+.55vx+.85vy;
-	penpos11(.75[penh,penw],170);
-	z11=z10-.5vy+.025vx;
-	penpos12(penh,100);
-	z12l=(xpart .5[z13,z11],ypart (pos-.025*siz));
-	penpos13(.75penh,60);
-	z13=pos +.2vx+.15vy;
-	
-	% penlabels (1,2,3,4,5,10,11,12,13);
-
-	soft_penstroke (z1e..tension 1.1
-		..z2e
-	   	..z3e{right}..tension 1.5
-		..z4e
-		..z5e
-		) slanted slant shifted (slant*-ypart pos,0);
-
-	soft_penstroke (z10e..tension 1.5
-		..z11e
-		..z12e..tension 1.1
-		..z13e{(z13r-z13l) rotated 90}
-		) slanted slant shifted (slant*-ypart pos,0);
-	endgroup;
-enddef;
-	   
-def draw_tab_A(expr pos, siz, slant) =
-	begingroup;
-	clearxy;
-	pair vx,vy;
-	vx=(xpart siz) * dir 0;
-	vy=(ypart siz) * dir 90;
-	
-	penpos1(.75penh,-110);
-	z1r=pos+.07vy;
-	penpos2(penh,-75);
-	z2r=(.5[x1,x3],ypart pos);
-	penpos3(.25[penh,penw],-30);
-	z3=(.45[x2,x4],.15[y2,y4]);
-	penpos4(1[penh,penw],0);
-	z4=pos+.5vx+.975vy;
-
-	penpos5(1[penh,penw],-180);
-	z5=z4;
-	penpos6(.2[penh,penw],-150);
-	z6l=(.8[x5l,x7l],.9[y5l,y7l]);
-	penpos7(penh,-90);
-	z7r=(.5[x6,x8],ypart pos);
-	penpos8(.75penh,-70);
-	z8r=(xpart(pos+siz),y7r+.075ypart(siz));
-
-	penpos10(penh,-105);
-	z10=.2[z3,z4];
-	penpos11(.9penh,-90);
-	z11=.4[z10,z6]-0.05vy;
-	penpos12(.75penh,-75);
-	z12=.3[z11,z6]+0.02vy;
-
-	% penlabels(1,2,3,4,5,6,7,8,10,11,12);
-
-	soft_penstroke (z1e {(z1r-z1l) rotated 90}
-		..z2e 
-		..z3e
-		..z4e
-		) slanted slant shifted (slant*-ypart pos,0);
-
-	soft_penstroke (z5e
-		..z6e 
-		..z7e
-		..z8e {(z8r-z8l) rotated 90}
-		) slanted slant shifted (slant*-ypart pos,0);
-
-	soft_penstroke (z10e
-		..z11e
-		..z12e
-		) slanted slant shifted (slant*-ypart pos,0);
-
-	endgroup;
-enddef;
-
-def draw_tab_B(expr pos, siz, slant) =
-	begingroup;
-	clearxy;
-	pair vx,vy;
-	vx=(xpart siz) * dir 0;
-	vy=(ypart siz) * dir 90;
-
-	penpos1(.75penh, 100);
-	z1=z2+(.15*vx-.1*vy);
-	penpos2(.9penw, 0);
-	z2l = pos+.75vy;
-	penpos3(penh,-100);
-	z3l = pos+.4vx+1.05vy;
-	penpos4(.8[penh,penw],-180);
-	z4=(xpart(pos+.75siz),.5[y3,y5]);
-	penpos5(.8penh,90);
-	z5=(.5[x10,x4],ypart (pos+.55siz));
-
-	penpos6(.8penh,270);
-	z6=z5;
-	penpos7(penw,180);
-	z7l=(xpart(pos+siz),.5[y6,y8]);
-	penpos8(.8penh,45);
-	z8=.5[z12l,z11l]+.15vx-.05vy;
-
-	penpos10(.75[penh,penw],170);
-	z10=pos+.375vx+.95vy;
-	penpos11(.8[penh,penw],150);
-	z11=z10-.5vy+.04vx;
-	penpos12(penh,100);
-	z12l=(xpart .5[z13,z11],ypart pos);
-	penpos13(.75penh,60);
-	z13=pos+.1vx+.15vy;
-	
-	% penlabels (1,2,3,4,5,6,7,8,10,11,12,13);
-
-	soft_penstroke (z1e..tension 1.1
-		..z2e
-	   	..z3e
-		..z4e
-		..z5e{left}
-		) slanted slant shifted (slant*-ypart pos,0);
-
-	soft_penstroke (z6e{right}
-		..z7e
-	   	..z8e{(z8r-z8l) rotated 90}
-		) slanted slant shifted (slant*-ypart pos,0);
-
-	soft_penstroke (z10e.. tension 1.5
-		..z11e
-		..z12e..tension 1.1
-		..z13e{(z13r-z13l) rotated 90}
-		) slanted slant shifted (slant*-ypart pos,0);
-	endgroup;
-enddef;
-
-def draw_tab_clef(expr reduction) =
-        save reduced_ss,vx,vy,letterheight,penw,penh;
-	reduced_ss# = staff_space# * reduction;
-	letterheight# = 1.8*reduced_ss#;
-	define_pixels(reduced_ss,letterheight);
-	set_char_box(-.2*reduced_ss#,2.8*reduced_ss#,1.6*letterheight#,1.6*letterheight#);
-
-		%draw_staff (-3,2, 0.5);
-
-	penw = .45reduced_ss;
-	penh = .2reduced_ss;
-
-	draw_tab_T((-b+.15reduced_ss,h-letterheight),
-	  (2.1*reduced_ss,letterheight),0.2);
-	draw_tab_A((-b-.05reduced_ss,-.5letterheight +.15reduced_ss),
-	  (2.2*reduced_ss,letterheight),0.4);
-	draw_tab_B((-b+.025reduced_ss,-d),
-	  (2.1*reduced_ss,letterheight),0.25);
-enddef;
-
-fet_beginchar("tab clef", "tab", "tabclef")
-	draw_tab_clef(1.0);
-fet_endchar;
-
-fet_beginchar("tab clef (reduced)", "tab_change", "ctabclef")
-	draw_tab_clef(.8);
-fet_endchar;
-
-fet_endgroup("clefs");
diff --git a/mf/feta-macros.mf b/mf/feta-macros.mf
deleted file mode 100644
index 2fd3e72ae8..0000000000
--- a/mf/feta-macros.mf
+++ /dev/null
@@ -1,324 +0,0 @@
-%
-% debugging
-%
-def test_grid =
-if test>1:
-	proofrulethickness 1pt#;
-	makegrid(0pt,0pt for i:=-5pt step 1pt until 5pt: ,i endfor)
-		(0pt,0pt for i:=-5pt step 1pt until 5pt: ,i endfor);
-	proofrulethickness .1pt#;
-	makegrid(0pt,0pt for i:=-4.8pt step .2pt until 4.8pt: ,i endfor)
-		(0pt,0pt for i:=-4.8pt step .2pt until 4.8pt: ,i endfor);
-fi
-	enddef;
-
-def treq =
-	tracingequations := tracingonline := 1;
-enddef;
-
-
-def draw_staff(expr first, last, offset)=
-if test <> 0:
-	pickup pencircle scaled stafflinethickness;
-	for i:= first step 1 until last:
-		draw (- staff_space, (i + offset) * staff_space) .. (4 staff_space,( i+ offset)* staff_space);
-	endfor
-fi;
-
-enddef;
-
-% draw the outline of the stafflines. For fine tuning. 
-def draw_staff_outline(expr first, last, offset)=
-if test <> 0:
-	save p;
-	path p;
-	pickup pencircle scaled 2;
-	for i:= first step 1 until last:
-		p := (- staff_space,  (i + offset) * staff_space) .. (4 staff_space,( i+ offset)* staff_space);
-
-		draw p shifted (0, .5 stafflinethickness);
-		draw p shifted (0, -.5 stafflinethickness);
-	endfor
-fi;
-
-enddef;
-
-%
-% Transforms
-%
-
-def scaledabout(expr point, scale) =
-	shifted -point scaled scale shifted point
-enddef;
-
-
-%
-% make a local (restored after endgroup) copy of t_var 
-%
-def local_copy(text type, t_var)=
-	save copy_temp;
-	type copy_temp;	
-	copy_temp := t_var;
-	save t_var;
-	type t_var;
-	t_var := copy_temp;
-enddef;
-
-
-%
-% Urgh! Want to do parametric types
-%
-
-def del_picture_stack=
-	save save_picture_stack, picture_stack_idx;
-enddef;
-
-% better versions of Taupin/Egler savepic cmds
-%
-%
-def make_picture_stack = 
-	% override previous stack.
-	del_picture_stack;
-	picture save_picture_stack[];
-	numeric picture_stack_idx;
-	picture_stack_idx := 0;
-	def push_picture(expr p) = 
-		save_picture_stack[picture_stack_idx] := p ;
-		picture_stack_idx := picture_stack_idx + 1;
-	enddef;
-	def pop_picture =  save_picture_stack[decr picture_stack_idx] enddef;
-	def top_picture = save_picture_stack[picture_stack_idx] enddef;
-enddef;
-
-
-% save/restore pens
-% why can't I delete individual pens?
-def make_pen_stack =
-	del_pen_stack;
-	pen save_pen_stack[];
-	numeric pen_stack_idx;
-	pen_stack_idx := 0;
-	def push_pen(expr p) = 
-		save_pen_stack[pen_stack_idx] := p ;
-		pen_stack_idx := pen_stack_idx +1;
-	enddef;
-	def pop_pen =  save_pen_stack[decr pen_stack_idx] enddef;
-	def top_pen = save_pen_stack[pen_stack_idx] enddef;
-enddef;
-def del_pen_stack=
-	save save_pen_stack, pen_stack_idx;
-enddef;
-
-%
-% drawing
-%
-
-def soft_penstroke text t =
-	forsuffixes e = l,r: path_.e:=t; endfor
-	if cycle path_.l:
-	  cyclestroke_
-	else:
-	  fill path_.l .. tension1.5 .. reverse path_.r .. tension1.5 .. cycle
-	fi
-enddef;
-
-
-%
-% make a round path segment going from P to Q. 2*A is the angle that the 
-% path should take.
-%
-
-def simple_serif(expr p,q, a)= 
-	p{dir(angle(q-p) -a)} .. q{ - dir(angle(p -q) + a)}
-enddef;
-%
-
-%
-% draw an axis aligned block making sure that edges are on pixels.
-%
-
-def draw_rounded_block (expr bottom_left, top_right, roundness) =
-       save round;
-       round = floor min(roundness,xpart (top_right-bottom_left),
-                                   ypart (top_right-bottom_left));
- 
- 
-       pickup pencircle scaled round;
-  
-        begingroup;
-        save x,y;
-       z2+(round/2,round/2) = top_right;
-       z4-(round/2,round/2) = bottom_left;
-        y3 = y2;
-        y4 = y1;
-        x2 = x1;
-        x4 = x3;
-       fill bot z1 .. rt z1 --- rt z2 .. top z2 ---
-            top z3 .. lft z3 --- lft z4 .. bot z4 --- cycle;
-        endgroup;
-        enddef;
-  
-
-
- def draw_block (expr bottom_left, top_right) =
-       draw_rounded_block (bottom_left, top_right, blot_diameter);
-       enddef;
-
- def draw_square_block (expr bottom_left, top_right) =
-    	save x,y;
-	x1 = xpart bottom_left;
-	y1 = ypart bottom_left;
-	x2 = xpart top_right;
-	y2 = ypart top_right;
-
-
-	fill (x1,y1) --- (x2,y1) --- (x2,y2) --- (x1,y2) --- cycle; 
-       enddef;
-
-
- def draw_gridline (expr bottom_left,top_right,thickness) =
-       draw_rounded_block (bottom_left-(thickness/2,thickness/2),
-                           top_right+(thickness/2,thickness/2),
-                           thickness);
-       enddef;
-       
-
-def draw_brush(expr a,w,b,v) =
-	save x,y;
-	z1=a; z2=b;
-	penpos3(w,angle(z2-z1)+90);
-	penpos4(w,angle(z2-z1));
-	penpos5(v,angle(z1-z2)+90);
-	penpos6(v,angle(z1-z2));
-	z3 = z4 = z1;
-	z5 = z6 = z2;
-
-	fill z3r{z3r-z5l}..z4l..{z5r-z3l}z3l..z5r{z5r-z3l}..z6l..{z3r-z5l}z5l..cycle;
-enddef;
-
-
-
-%
-% make a superellipsoid segment going from FROM to TO, with SUPERNESS.  
-% Take superness = sqrt(2)/2 to get a circle segment 
-%
-% see Knuth, p. 267 and p.126
-def super_curvelet(expr from, to, superness, dir) =
-	if dir = 1:
-	 (superness [xpart to, xpart from], superness [ypart from,ypart to]){to - from}
-	else:
-	 (superness [xpart from, xpart to], superness [ypart  to,ypart from]){to - from}
-	fi
-enddef;
-
-
-%
-% Bulb with smooth inside curve.
-%
-% alpha = start direction.
-% beta = which side to turn to.
-% flare = diameter of the bulb
-% line = diameter of line attachment
-% direction = is ink on left or right side (1 or -1)
-%
-def flare_path(expr pos,alpha,beta,line,flare, direction) =
-	begingroup;
-	clearxy;
-	penpos1(line,180+beta+alpha);
-	z1r=pos;
-	penpos2(flare,180+beta+alpha);
-	z2=z3;
-	penpos3(flare,0+alpha);
-	z3l=z1r+(1/2+0.43)*flare*dir(alpha+beta) ;
-	save taille;
-	taille = 0.0;
-	z4=z2r-  line * dir(alpha);
-	penlabels(1,2,3,4);
-	pickup pencircle;
-	save t; t=0.833;
-	save p; 
-	path p;
-	p:=z1r{dir(alpha)}..z3r{dir(180+alpha-beta)}..z2l{dir(alpha+180)}
-		..z3l{dir(180+alpha+beta)}..tension t
-		..z4{dir(180+alpha+beta)}..z1l{dir(alpha+180)};
-
-	if direction = 1:
-		p
-	else:
-		reverse p
-	fi
-	endgroup
-	enddef;
-
-
-
-def brush(expr a,w,b,v) =
-	begingroup;
-	draw_brush(a,w,b,v);	
-	penlabels(3,4,5,6);
-	endgroup;
-enddef;
-
-%
-% Draw a (rest) crook, starting at thickness STEM in point A,
-% ending a ball W to the left, diameter BALLDIAM
-% ypart of the center of the ball is BALLDIAM/4 lower than ypart A
-%
-def balled_crook(expr a, w, balldiam, stem) =
-begingroup;
-	save x,y;
-	penpos1(balldiam/2,-90);
-	penpos2(balldiam/2,0);
-	penpos3(balldiam/2,90);
-	penpos4(balldiam/2,180);
-	x4r=xpart a-w; y3r=ypart a+balldiam/4;
-	x1l=x2l=x3l=x4l;
-	y1l=y2l=y3l=y4l;
-	penpos5(stem,250);
-	x5=x4r+9/8balldiam; y5r=y1r;
-	penpos6(stem,260);
-	x6l=xpart a; y6l=ypart a;
-	penstroke z1e..z2e..z3e..z4e..z1e..z5e{right}..z6e;
-	penlabels(1,2,3,4,5,6);
-endgroup;
-enddef;
-
-
-def y_mirror_char =
-	currentpicture := currentpicture yscaled -1;
-	set_char_box(charbp, charwd, charht, chardp);
-enddef;
-
-
-def xy_mirror_char =
-	currentpicture := currentpicture scaled -1;
-	set_char_box(charwd, charbp, charht, chardp);
-enddef;
-
- 
-%
-% center_factor: typically .5, the larger, the larger the radius of the bulb
-% radius factor: how much the bulb curves inward
-%
-def draw_bulb(expr turndir, zl, zr, bulb_rad, radius_factor)=
-	begingroup;
-	clearxy;
-	save rad, ang;
-
-	ang = angle(zr-zl);
-
-	% don't get near infinity
-	%z0 = zr + bulb_rad * (zl-zr)/length(zr -zl);
-	z0 = zr + bulb_rad /length(zr -zl) * (zl-zr);
-
-	rad =  bulb_rad;
-
-	z1 = z0 + radius_factor* rad * dir(ang + turndir* 100);
-	z2 = z0 + rad * dir(ang  + turndir*300);
-	labels(0,1,2);
-	fill zr{dir (ang + turndir* 90)} .. z1 .. z2 -- cycle;
-
-	endgroup
-enddef;
-
-pi:=3.14159;
diff --git a/mf/feta-nummer-code.mf b/mf/feta-nummer-code.mf
deleted file mode 100644
index 0f0646a16d..0000000000
--- a/mf/feta-nummer-code.mf
+++ /dev/null
@@ -1,589 +0,0 @@
-% feta-nummer.mf -- implement bold Orator numerals
-%
-% part of LilyPond's pretty-but-neat music font
-%
-% source file of the Feta (not the Font-En-Tja) music font
-% 
-% (c) 1997--2004 Jan Nieuwenhuizen <janneke@gnu.org>
-
-%
-% These numbers were taken from a part that that the EJE violas played
-% 1997 -- Probably Mendelssohn's ouverture Heimkehr aus der Fremde.
-%
-
-%
-% TODO all the invocation of flare_path are weird -- 
-% the horizontal tangents should be more at the center of the 
-% glyph.
-%
-
-fet_begingroup("number")
-
-define_pixels(height,thick,thick,thin,hair,flare);
-define_pixels(foot_top,foot_width);
-define_pixels(kuulleke);
-
-%
-% Yet Another Bulb Routine with smooth inside curve.
-%
-% alpha = start direction.
-% beta = which side to turn to.
-% flare = diameter of the bulb
-% line = diameter of line attachment
-% direction = is ink on left or right side (1 or -1)
-%
-
-% 
-% move_away_to = amount left (for 2) 
-% turn_to  = amount down (for  2 )
-% 
-def number_flare_path(expr pos,alpha,beta,line,flare,
-
-			move_away_to,
-			turn_to, taille, taille_ratio,
-			direction) =
-	begingroup;
-	clearxy;
-
-%	z5 = z2 + 0.43* flare *dir (alpha - 1.5 beta);
-
-	z4 = (0.75 - taille)  [z2r, z2l] + whatever* dir (alpha - beta) ;
-	z4 = (taille_ratio * taille) [z3l, z3r] + whatever* dir(alpha);
-	penpos1(line,180+beta+alpha);
-	z1r=pos;
-
-	z2r = z1r + move_away_to *dir (alpha) + (line + turn_to) * dir(alpha+beta);
-	z3r = 0.5 [z2l,z2r] + 0.5 *flare *dir(alpha + beta);
-
-	penpos2(flare, alpha );
-	penpos3(flare, alpha +  beta);
-	penlabels(1, 2, 3, 4, 5);
-	pickup pencircle;
-
-	save p;
-	path p;
-	p := z1r{dir(alpha)}
-		.. z2r{dir(180+alpha-beta)}
-		.. z3r{dir(alpha+180)}
-		.. z2l{dir(alpha-beta)} 
-
-
-%%% Two versions of the curve: one with z4, the other with z5.
-%		.. z5{dir(alpha- beta/2 )}
-		..z4{dir(180+alpha+beta)}
-		..z1l{dir(alpha+180)};
-%	draw p ;
-	if direction = 1:
-		p
-	else:
-		reverse p
-	fi
-	endgroup
-	enddef;
-
-
-
-def calc_kuulleke(expr w,alpha) = 
-	begingroup;
-	save beta; beta=(alpha-90)/2;
-	save gamma; gamma=(90+alpha)/2;
-
-	penpos1(w/cosd(alpha),alpha);
-	penpos2(hair,90+beta);
-	z2=z1l+(1/2hair/tand((alpha+90)/2))*dir(beta);
-
-	penpos3(hair,gamma-90);
-	z3=z1r-(1/2hair/tand((90-alpha)/2))*dir(gamma);
-	z4=z1+kuulleke*dir(alpha-90);
-	endgroup;
-	enddef;
-
-% should make generic macro? 
-%
-def draw_foot(expr xpos) = 
-	begingroup;
-	clearxy;
-	penpos1(thick,0);
-	z1=(xpos,foot_top);
-	penpos2(foot_width,0);
-	z2=(x1,0);
-	penpos3(hair,-90);
-	z3r=z2r;
-	penpos4(hair,90);
-	z4l=z2l;
-	z5=(x1,kuulleke);
-	penlabels(1,2,3,4);
-	fill z1..{right}z1r{down}..{right}z3l..z3r{left}..z5
-		..{left}z4l..z4r{right}..{up}z1l{right}..z1..cycle;
-	endgroup;
-	enddef;
-
-def draw_six =
-	set_char_box(0, .68  height#*widen, 0, height#);
-	message "w:"&decimal w;
-	message "h:"&decimal h;
-
-	penpos1(thin,90);
-	z1=(thick,h/2+thin-hair/2);
-	penpos2(hair,90);
-	
-	z2=(w/2,y1);
-
-	penpos3 (15/16 thick,0);
-	% yup, should use the path fract [] "everywhere"
-	x3r=w;
-	y3r = .5 [y4r, y2r];
-	penpos4(hair,-90);
-	z4r=(x2,0);
-	penpos6(hair,90);
-	x6r = .56 w;
-	y6r = h;
-	penpos7(thick,180);
-
-	x7r=0;
-	y7r = .50 h;
-
-	penpos10(thick,180);
-	z10r=(0,y3);
-	penlabels(1,2,3,4,5,6,7,8,9,10,11);
-
-
-	save outer_t; outer_t= 0.88;
-	save t ; t := tense; 
-	fill
-%	draw
-		z7{right}..z2r{right}
-		..tension outer_t
-		..z3r{down}
-		..tension outer_t
-		..z4r{left}
-%		..tension t
-		..z7r{up}
-%		.. flare_path (z6r,0,-90,hair,flare, 1)
-		.. number_flare_path (z6r, 0,-90,hair,flare,
-			w - x6r -hair/2, .16 h, 0.05, 2.5, 1)
-
-%		..tension t
-		..z7l{down}
-		 .. {down}z10l -- cycle;
-
-	unfill z2l{right}..tension t..z3l{down}..tension t
-		..z4l{left}..tension t..z10l{up}..tension t..cycle;
-	enddef;
-
-save dot_diam;
-dot_diam# = 7/8flare#;
-define_pixels(dot_diam);
-
-code := 31; % , 32
-fet_beginchar("Space", "space", "space")
-	set_char_box(0, space#,  0,height#);
-fet_endchar;
-
-code := 43;  % , = 44 
-
-% urg
-fet_beginchar("Numeral comma", ",", "comma")
-	set_char_box(0, dot_diam#, 3/2dot_diam#, dot_diam#);
-	pickup pencircle scaled dot_diam;
-	draw (dot_diam/2,dot_diam/2);
-	z0=(w/3,0);
-	alpha=65;
-        penpos1(thin,alpha+90);
-        z1l=(w/2,-1.5h+hair);
-	z2=(w,h/2);
-	pickup pencircle;
-	filldraw z1l{dir(alpha)}..{up}z2..{z0-z2}z0{right}..{dir(180+alpha)}z1r..cycle;
-	labels(0,1,2);
-	penlabels(1);
-fet_endchar;
-
-fet_beginchar("Numeral dash", "-", "dash")
-	set_char_box(0, height#/3, 0, height#);
-	pickup pencircle scaled thin;
-	lft x1 = -b;
-	rt x2 = w;
-	y1 = y2 = h/3;
-	draw z1 .. z2;
-fet_endchar;
-
-fet_beginchar("Numeral dot", ".", "dot")
-	set_char_box(0, dot_diam#, 0, dot_diam#);
-	pickup pencircle scaled dot_diam;
-	draw (dot_diam/2,dot_diam/2);
-fet_endchar;
-
-
-% skip slash
-
-code := 47; % 0 = 48
-
-fet_beginchar("Numeral 0", "0", "zero")
-	set_char_box(0, 11/15height# * widen, 0, height#);
-	message "w:"&decimal w;
-	message "h:"&decimal h;
-	penpos1(thin,90);
-	z1r=(w/2,h);
-	penpos2(thick,180);
-	z2r=(0,h/2);
-	penpos3(thin,-90);
-	z3r=(w/2,0);
-	penpos4(thick,0);
-	z4r=(w,h/2);
-	fill z1r..z2r..z3r..z4r..cycle;
-	save t; t=1/tense;
-	penlabels(1,2,3,4);
-	unfill z1l..tension t..z2l..tension t..z3l
-		..tension t..z4l..tension t..cycle;
-fet_endchar;
-	
-fet_beginchar("Numeral 1", "1", "one")
-%	set_char_box(0, 19/30height#*widen, 0, height#);
-	set_char_box(0, 1/2foot_width#+3/2thick#+1/2hair#, 0, height#);
-	message "w:"&decimal w;
-	message "h:"&decimal h;
-
-	save alpha; alpha=0;
-	calc_kuulleke(thick,alpha);
-	z1=(3/2thick,height);
-
-	penpos5(thick,0);
-	z5=(x1,foot_top);
-	
-	z6=(0,h/2);
-	save beta; beta=angle(z1l-z6);
-	penpos7(thin,beta-90);
-	z7l=z6;
-	penpos8(thin/cosd(beta),-90);
-	z8l=z1l;
-	penpos9(thin,beta-90);
-	z9r=z8r+(thin/cosd(beta))*(0,-1);
-	penlabels(1,2,3,4,5,6,7,8,9);
-	save gamma; gamma=angle(length(z1r-z1),+2kuulleke);
-	fill z2r{dir(alpha-gamma)}..z4..{dir(alpha+gamma)}z3l..z3r{down}
-		..{down}z5r{left}..z5..{left}z5l{up}..{up}z2l..cycle;
-	fill z7l{dir(beta)}..{dir(beta)}z1l..z2r..z9r{up}
-		..z9l{dir(180+beta)}..{dir(180+beta)}z7r..cycle;
-	penlabels(7,8,9);
-
-	draw_foot(x1);
-fet_endchar;
-
-fet_beginchar("Numeral 2", "2", "two")
-	set_char_box(0, 22/30 height#*widen, 0, height#);
-	message "w:"&decimal w;
-	message "h:"&decimal h;
-	clearxy;
-	save alpha; alpha=-45*widen;
-	save beta; beta=85;
-	save gamma; gamma=beta-10;
-	save flare_start_distance;
-
-	flare_start = 0.25 ;
-	save theta; theta=20/widen;
-	penpos1(hair,90+beta);
-	z1=(0,0)+(1/2sqrt(2)*hair)*dir(45);
-	penpos3(hair,90+gamma);
-	z3=(w,thick)+(1/2sqrt(2)*hair)*dir(-135);
-	penpos2(thick, 90+alpha -15);
-	x2-x1=x3-x2;
-	y2=10/16 thick/widen;
-	fill z1r{dir(beta)}.. tension 0.9 .. {dir(alpha + 10)}z2r..{dir(gamma)}z3r
-		..z3l{dir(180+gamma)}..{dir(180+alpha - 5)}z2l
-		..{dir(180+beta)}z1l..cycle;
-
-	penpos4(thick,0);
-	z4r=(w-thin/2, .71 h);
-	penpos5(hair,90);
-	y5r = h;
-	x5r = 9/20 w ;
-
-	penlabels(1,2,3,4);
-	penlabels(5,6);
-	save t; t=tense;
-
-	save p;
-	path p ;
-	p := z1l{dir(beta)}..tension t..z4r{up}
- 		.. number_flare_path(z5r,180,90,hair, 1.05 flare,
-				x5r  - 1/2 hair,
-				.21 h, 0.006, 0.4, 1)
-		.. z4l{down}..tension t
-		..{dir(180+beta)}z1r..cycle;
-
-	pickup pencircle scaled 1;
-%	draw p;
-	fill p;
-
-fet_endchar;
-
-
-%%
-% TODO: should widen a bit. The right edge of the 3 bumps into next glyph in
-% combinations 
-%
-fet_beginchar("Numeral 3", "3", "three")
-	set_char_box(0, 2/3height#*widen, 0, height#);
-	message "w:"&decimal w;
-	message "h:"&decimal h;
-	penpos1(hair,-90);
-
-%	flare_start = 0.25 ;
-	x1l = 36/80 w;
-	y1l = h;
-	
-%	z1l=(17/16thick,h);
-	penpos2(7/8thick,180);
-	x2l= w-thick/8;
-	y2l = 3/4h + thick*  3/32; 
-	penpos3(thin,90);
-	z3=(w/2,h/2+1/8thick);
-	penpos4(thin,90);
-	z4=(5/8thick+1/2thin,y3);
-	penpos5(thick,0);
-	x5r=w;
-	y5r = 17/64 h + thick/16;
-
-	penpos6(hair,-90);
-
-	x6r= 37/80 w;
-	y6r = 0;
-	penpos7(3/2thin,90);
-	x7 = .83 w ;
-	y7 = y3;
-	penlabels(1,2,3,4,5,6,7);
-	save alpha; alpha=25;
-	save t; t=tense;
-	save outer_t; outer_t := 0.93;
-	pickup pencircle scaled 1;
-
-%	draw
-	fill
-		number_flare_path (z1l, 180, 90, hair,  7/8 flare, x1l - .5 hair,
-			.16 h, 0.06, 1.5,  -1)
-		..tension outer_t
-		.. z2l{down}
-		.. tension outer_t
-		..z7r{dir(180+alpha)}
-		..z7l{dir(-alpha)}
-		.. tension outer_t 
-		..z5r{down}
-		.. tension outer_t
-		.. number_flare_path (z6r, 180, -90, hair,  flare, x6l,
-			.18 h, 0.06, 1.5,  1)
-
-		.. z5l{up}
-		..tension t
-		..z3l{left}
-		..z4l{left}
-		..z4r{right}
-		..z3r{right}
-		..tension t
-		..z2r{up}
-		..tension t
-		.. cycle
-;
-fet_endchar;
-
-
-	
-fet_beginchar("Numeral 4", "4", "four")
-	set_char_box(0, 4/5height#*widen, 0, height#);
-	message "w:"&decimal w;
-	message "h:"&decimal h;
-
-	save alpha; alpha=0;
-	calc_kuulleke(3/2thick,alpha);
-	z1r=(w-3/4thick,height);
-
-	z5=(thin,1/4height+thin);
-	save beta; beta=angle(z3r-z5);
-	penpos6(thin,-90);
-	z6l=z5;
-	penpos7(thin,-90);
-	y7=y6; x7=w-1/2thin;
-	penpos8(thin,-alpha);
-	z8r=z5;
-	penlabels(1,2,3,4,5,6,7);
-	save gamma; gamma=angle(length(z1r-z1),+2kuulleke);
-	fill z2r{dir(alpha-gamma)}..z4..{dir(alpha+gamma)}z3l
-		..z3r{dir(180+beta)}..{dir(180+beta)}z8r{right}
-		..{right}z7l..z7r{left}..{left}z6r..z8l{dir(beta)}
-		..{up}z2l..cycle;
-
-	clearxy;
-
-	save alpha; alpha=beta;
-	calc_kuulleke(thick,alpha);
-	z1r=(w-3/4thick,height-(3/2thin)/cosd(alpha));
-
-	penpos5(thick,0);
-	z5=(x1,foot_top);
-	
-	save gamma; gamma=angle(length(z1r-z1),+2kuulleke);
-	fill z2r{dir(alpha-gamma)}..z4..{dir(alpha+gamma)}z3l
-		..z3r{down}..{down}z5r{left}..z5..{left}z5l{up}
-		..{up}z2l..cycle;
-	penlabels(1,2,3,4,5);
-
-	draw_foot(x5);
-fet_endchar;
-
-fet_beginchar("Numeral 5", "5", "five")
-	set_char_box(0, 27/40 height#*widen, 0, height#);
-	message "w:"&decimal w;
-	message "h:"&decimal h;
-	calc_kuulleke(w-thin,0);
-
-	z1=(w/2+1/8thick,h);
-	save alpha; alpha=0;
-	penpos5(thin,0);
-	z5l=(x1l,h-15/16thick);
-	penpos6(hair,90-45);
-	z6=z5r+1/2hair*dir(-45);
-	penpos7(thin,0);
-	z7l=(x1l,h/2+thin-hair);
-	penlabels(1,2,3,4,5,6,7);
-	save gamma; gamma=angle(length(z1r-z1),+2kuulleke);
-	fill z2r{dir(alpha-gamma)}..z4..{dir(alpha+gamma)}z3l
-		..z3r{dir(-135)}..{left}z6r..z6l{down}..z7r{down}
-		..z7l{up}..{up}z2l..cycle;
-	penpos8(thin,90);
-	z8l=(x7r,y7r-1/16thick);
-	penpos9(thin,90);
-
-	
-	y9=10/16[y5,y7];
-	x9 = .36 [x8r, x10r] ;
-
-	penpos10(thick,0);
-	x10r = w+ hair/2;
-	y10r = 1/2[y9r,y11r];
-	penpos11(hair,-90);
-    	y11r = 0;
-	x11r = .7 [0, x10l]; 
-
-	penlabels(8,9,10,11, 12);
-	save beta; beta=45;
-
-	save inner_t, outer_t;
-	inner_t= 1.0;
-	outer_t= .85;
-	fill z8r{dir(beta)}..z9r{right}
-		..tension outer_t
-		..z10r{down}
-		.. number_flare_path (z11r, 180, -90, hair,  flare, x11l,
-			.18 h, 0.06, 1.5,  1)
-		..z11l{right}
-		..tension inner_t
-		..z10l{up}
-		..tension inner_t
-		..z9l{left}..z8l{dir(180+beta+10)}..cycle;
-
-fet_endchar;
-
-fet_beginchar("Numeral 6", "6", "six")
-	draw_six;
-fet_endchar;
-
-fet_beginchar("Numeral 7", "7", "seven")
-	set_char_box(0, 11/15height#*widen, 0, height#);
-	message "w:"&decimal w;
-	message "h:"&decimal h;
-
-	save alpha; alpha=-180;
-if true:
-	penpos1(3/2thick,180+alpha);
-	penpos2(hair,180+alpha-45);
-	z2=z1l+(1/4sqrt(2)*hair)*dir(alpha-135);
-	penpos3(hair,180+alpha+45);
-	z3=z1r+(1/4sqrt(2)*hair)*dir(alpha-45);
-	z4=z1+kuulleke*dir(alpha-90);
-else:
-	% shit, does not work
-	calc_kuulleke(3/2thick,-alpha);
-fi
-	z1l=(thin,0);
-
-	save beta; beta=55;
-	penpos5(thin,90+beta);
-	z5=(w,h)+(1/2sqrt(2)*thin)*dir(-135);
-
-	save gamma; gamma=angle(length(z1r-z1),+2kuulleke);
-	save delta; delta=12;
-	pickup pencircle;
-	fill z3l{dir(alpha-gamma)}..z4..{dir(alpha+gamma)}z2r..
-		z2l{dir(beta+delta)}..{dir(beta)}z5r
-		..z5l{dir(180+beta)}..{dir(delta-90)}z3r..cycle;
-	penlabels(1,2,3,4,5);
-
-	clearxy;
-	save alpha; alpha=-45*widen;
-	penpos1(1/2thick,90);
-	z1=(3/2thin,h-(thick+thin)/2);
-	penpos3(thin,90+beta);
-	z3=(w,h)+(1/2sqrt(2)*thin)*dir(-135);
-	penpos2(thick,90+alpha);
-	x2=1/2[x1,x3]-1/4thick; y2=h-15/16thick+thin*widen;
-
-	penpos4(thin,0);
-	z4l=(0,h-thin/2);
-	penpos5(thin,0);
-	z5l=(0,h/2+thin/2);
-
-	penpos6(9/8thick,90);
-	z6r=(thin,y1r+2/16thick);
-	
-	fill z1r{dir(beta)}..{dir(alpha)}z2r..{dir(beta)}z3r
-		..z3l{dir(180+beta)}..{dir(180+alpha)}z2l
-		..{dir(180+beta)}z1l..z6l{down}..{down}z5r
-		..z5l{up}..{up}z4l..z4r{down}..{down}z6r..{right}cycle;
-	penlabels(1,2,3,4,5,6);
-fet_endchar;
-
-fet_beginchar("Numeral 8", "8", "eight")
-	set_char_box(0, 11/15height#*widen, 0, height#);
-	message "w:"&decimal w;
-	message "h:"&decimal h;
-	save alpha; alpha=60;
-	save beta; beta=alpha-15;
-	z1=(w/2,h/2+thick/8);
-	penpos2(14/8 thin,0);
-	z2=(w/3,h/2+thin);
-	penpos3(3/2thin,0);
-	z3l=(0,h/4+thin/2);
-	penpos4(hair,90);
-
-	z4l=(x1 ,0);
-	penpos5(thick,90+90+alpha);
-	z5=z1+w/4*dir(alpha-90);
-	penpos6(thick,90+90+alpha);
-	z6=z1+(w/4-thin/2)*dir(90+alpha);
-	penpos7(hair,90);
-	z7r= (x1 + .02 w ,h);
-	penpos8(3/2thin,0);
-	z8r=(w-thin/2,3/4h+thin/2);
-	penpos9( 13/8 thin,0);
-	z9=(2/3w,h/2);
-	penlabels(1,2,3,4,5,6,7,8,9);
-	save t; t=tense;
-	fill z2r{dir(180+beta)}..z3r{down}..z4r{right}
-		..z5r{dir(90+alpha)}..z6r{dir(90+alpha)}
-		..tension t..z7r{right}..z8r{down}..z9r{dir(180+beta)}
-		..z9l{dir(beta)}..z8l{up}..z7l{left}..z6l{dir(alpha-90)}
-		..z5l{dir(alpha-90)}..tension t..z4l{left}..z3l{up}
-		..z2l{dir(beta)}..cycle;
-fet_endchar;
-
-fet_beginchar("Numeral 9", "9", "nine")
-	draw_six;
-%	xy_mirror_char;
-	currentpicture := currentpicture scaled -1;
-	currentpicture := currentpicture shifted (w,h);
-fet_endchar;
-
-fet_endgroup("number")
-
-ligtable "3" : "3" kern 0.1 space#,  "0" kern 0.1 space#; 
-ligtable "2" : "7" kern 0.15 space#;
-
diff --git a/mf/feta-nummer.mf b/mf/feta-nummer.mf
deleted file mode 100644
index 7b1778b15b..0000000000
--- a/mf/feta-nummer.mf
+++ /dev/null
@@ -1,60 +0,0 @@
-% feta-nummer.mf
-% part of LilyPond's pretty-but-neat music font
-
-test:=0;
-
-input feta-autometric;
-input feta-macros;
-
-
-
-%%%
-% TODO: make sure font size  for text and
-% font size for music both jibe with the number font.
-%%%
-
-%blot_diameter# = .4pt#;
-
-fet_beginfont("feta-nummer", design_size);
-mode_setup;
-
-height#:=designsize;
-space# := design_size/2;
-
-font_x_height height#;
-font_normal_space space#;
-font_coding_scheme "feta number";
-
-
-%
-% DOCME!
-%ugh. b and h are reused.
-%
-
-save b,h; 4h+b=1.15; 10h+b=1;
-fatten:=designsize*h+b;
-
-save b,h; 4h+b=1.05; 10h+b=1;
-widen:=designsize*h+b;
-
-tense=0.85;
-thick#:=7/30height#*fatten;
-thin#:=thick#/4*fatten  + max(.1 (height# / 10 - 1), 0);
-
-%% sqrt(.8 * blot_diameter#* thin#) ;
-hair#:= thin# * .8 ;
-
-
-flare#:=9/8 thick# + .75 (height# / 10 - 1);
-
-save b,h; 4h+b=1/8; 10h+b=1/6;
-kuulleke#:=thick#*designsize*h+b;
-foot_top#:=thick#;
-foot_width#:=9/4thick#;
-
-input feta-nummer-code;
-
-fet_endfont("feta-nummer");
-
-
-end.
diff --git a/mf/feta-nummer10.mf b/mf/feta-nummer10.mf
deleted file mode 100644
index 2c6e8f5338..0000000000
--- a/mf/feta-nummer10.mf
+++ /dev/null
@@ -1,9 +0,0 @@
-% feta-nummer10.mf
-% part of LilyPond's pretty-but-neat music font
-
-design_size:=10; % feta20 = 20pt
-% mode := smoke;
-input feta-nummer;
-
-end.
-
diff --git a/mf/feta-nummer11.mf b/mf/feta-nummer11.mf
deleted file mode 100644
index 9bebc84f90..0000000000
--- a/mf/feta-nummer11.mf
+++ /dev/null
@@ -1,9 +0,0 @@
-% feta-nummer11.mf
-% part of LilyPond's pretty-but-neat music font
-
-design_size:=11.25; % feta23 = 22.5pt
-
-input feta-nummer;
-
-end.
-
diff --git a/mf/feta-nummer12.mf b/mf/feta-nummer12.mf
deleted file mode 100644
index c3e868d31e..0000000000
--- a/mf/feta-nummer12.mf
+++ /dev/null
@@ -1,2 +0,0 @@
-design_size := 12;
-input feta-nummer;
diff --git a/mf/feta-nummer13.mf b/mf/feta-nummer13.mf
deleted file mode 100644
index e87025b6ba..0000000000
--- a/mf/feta-nummer13.mf
+++ /dev/null
@@ -1,9 +0,0 @@
-% feta-nummer13.mf
-% part of LilyPond's pretty-but-neat music font
-
-design_size:=13; % feta26 = 26pt
-
-input feta-nummer;
-
-end.
-
diff --git a/mf/feta-nummer16.mf b/mf/feta-nummer16.mf
deleted file mode 100644
index 92423b0058..0000000000
--- a/mf/feta-nummer16.mf
+++ /dev/null
@@ -1,2 +0,0 @@
-design_size := 16;
-input feta-nummer;
diff --git a/mf/feta-nummer20.mf b/mf/feta-nummer20.mf
deleted file mode 100644
index 8ddfd9e16a..0000000000
--- a/mf/feta-nummer20.mf
+++ /dev/null
@@ -1,2 +0,0 @@
-design_size := 20.74;
-input feta-nummer;
diff --git a/mf/feta-nummer23.mf b/mf/feta-nummer23.mf
deleted file mode 100644
index d3241514f3..0000000000
--- a/mf/feta-nummer23.mf
+++ /dev/null
@@ -1,2 +0,0 @@
-design_size := 23;
-input feta-nummer;
diff --git a/mf/feta-nummer26.mf b/mf/feta-nummer26.mf
deleted file mode 100644
index a9308dd0ba..0000000000
--- a/mf/feta-nummer26.mf
+++ /dev/null
@@ -1,2 +0,0 @@
-design_size := 26;
-input feta-nummer;
diff --git a/mf/feta-nummer4.mf b/mf/feta-nummer4.mf
deleted file mode 100644
index ebe2cfcdec..0000000000
--- a/mf/feta-nummer4.mf
+++ /dev/null
@@ -1,9 +0,0 @@
-% feta-nummer4.mf
-% part of LilyPond's pretty-but-neat music font
-
-design_size:=3.82; % 5.5/1.2/1.2  nummer6 = 5.5pt
-
-input feta-nummer.mf;
-
-end.
-
diff --git a/mf/feta-nummer5.mf b/mf/feta-nummer5.mf
deleted file mode 100644
index ad480d1529..0000000000
--- a/mf/feta-nummer5.mf
+++ /dev/null
@@ -1,9 +0,0 @@
-% feta-nummer5.mf
-% part of LilyPond's pretty-but-neat music font
-
-design_size:=4.58; % 5.5/1.2 :  nummer6 = 5.5pt
-
-input feta-nummer.mf;
-
-end.
-
diff --git a/mf/feta-nummer6.mf b/mf/feta-nummer6.mf
deleted file mode 100644
index 4038deb23d..0000000000
--- a/mf/feta-nummer6.mf
+++ /dev/null
@@ -1,9 +0,0 @@
-% feta-nummer6.mf
-% part of LilyPond's pretty-but-neat music font
-
-design_size:=5.5; %  feta11 = 11pt
-
-input feta-nummer.mf;
-
-end.
-
diff --git a/mf/feta-nummer7.mf b/mf/feta-nummer7.mf
deleted file mode 100644
index 6a4bbacbde..0000000000
--- a/mf/feta-nummer7.mf
+++ /dev/null
@@ -1,9 +0,0 @@
-% feta-nummer7.mf
-% part of LilyPond's pretty-but-neat music font
-
-design_size:=6.5; % feta13 = 13pt
-
-input feta-nummer.mf;
-
-end.
-
diff --git a/mf/feta-nummer8.mf b/mf/feta-nummer8.mf
deleted file mode 100644
index d23a9f31b3..0000000000
--- a/mf/feta-nummer8.mf
+++ /dev/null
@@ -1,7 +0,0 @@
-% feta-nummer8.mf
-% part of LilyPond's pretty-but-neat music font
-
-design_size:=8; % feta16 = 16pt
-
-input feta-nummer.mf;
-
diff --git a/mf/feta-params.mf b/mf/feta-params.mf
deleted file mode 100644
index af82b3cc01..0000000000
--- a/mf/feta-params.mf
+++ /dev/null
@@ -1,62 +0,0 @@
-
-stafflines = 5;
-
-%
-% The design size of a staff should really be the 
-% staff_space, but we use staffsize for historical reasons.
-% 
-staff_space# = staffsize#/(stafflines-1);
-
-
-% measuring on pocket scores turns out: stafflinethickness is
-% largely independent on staff size, and generally about 0.5 pt.
-%
-% by request of WL, we tune down the blackness a little
-% for increased contrast with beams.
-
-%% !! synchronize with paper.scm
-stafflinethickness#  = 0.3 pt# + 0.04 staff_space#; 
-
-%
-% The following tunes the general blackness of the glyphs. 
-%
-linethickness# = stafflinethickness#; %%   0.5 pt#;
-
-%
-% bigger puff_up_factor, relatively thicker stafflines.
-% 20 pt = puff_up_factor 0.
-% 10 pt = puff_up_factor 1
-%
-puff_up_factor =  (linethickness# - 0.1 staff_space#) / (0.1 staff_space#);
-
-
-
-stemthickness# := 1.3 stafflinethickness#;
-ledgerlinethickness# := 2 stafflinethickness#;
-
-define_pixels(staff_space, stemthickness);
-define_pixels(stafflinethickness, ledgerlinethickness, linethickness);
-
-
-% 
-% Because of the engraving/stamping process, no traditional
-% characters have sharp edges and corners
-% The following variable controls the amount of "roundness"
-%
-% this is not a meta variable: it is related to absolute sizes.
-%
-% FIXME: According to [Wanske], only outside corners should be round
-%        I don't think we do this anywhere -- jcn
-numeric blot_diameter;
-blot_diameter# = .35 pt#;
-if (blot_diameter# * hppp) < 1:
-	blot_diameter# := 1/hppp;
-fi
-if (blot_diameter# * vppp) < 1:
-	blot_diameter# := 1/vppp;
-fi
-define_pixels(blot_diameter);
-
-
-
-
diff --git a/mf/feta-pendaal.mf b/mf/feta-pendaal.mf
deleted file mode 100644
index d509130ad9..0000000000
--- a/mf/feta-pendaal.mf
+++ /dev/null
@@ -1,299 +0,0 @@
-% -*- Fundamental -*-  (emacs-20 mf mode mucks
-% feta-pendaal.mf -- piano pedal markings
-%
-% part of LilyPond's pretty-but-neat music font
-%
-% source file of the Feta (not the Font-En-Tja) music font
-% 
-% (c) 2000--2004 Jan Nieuwenhuizen <janneke@gnu.org>
-%
-% Voor Cup
-
-% Kerning
-%
-% Pe = -0.034 pedalh == -0.07 staff-space
-% ed = -0.27 pedalh == -0.53 staff-space
-
-fet_begingroup("pedal")
-
-pedalpha = 40;
-pedbeta = 25;
-
-penh#=0.7linethickness#;
-
-penw# = 2penh# + 0.14 staff_space#;
-
-define_pixels (penh,penw);
-
-pedalh# = 2staff_space#;
-pedalbh# = 4/7pedalh#;
-define_pixels (pedalh,pedalbh);
-
-% code values for own pedal font commented out
-% code := 41;  % * = 42
-
-fet_beginchar("Pedal asterisk", "*", "pedalasterisk")
-	set_char_box(0, 7/9pedalh#, 0, pedalh#);
-	z0 = (1/2w, h - 1/2w);
-	save bulb, p, radius, thin;
-	path p;
-
-	thin = 0.8 linethickness;
-
-	bulb + 2 radius = w;
-	0.9 thin +  bulb = (radius * pi * 2) / 8;
-
-	pickup pencircle scaled penh;
-	penpos 1 (bulb, 180);
-	penpos 2 (bulb, 0);
-	penpos 3 (thin, 0);
-
-	z1 = z0 + (0,radius);
-	z2 = z1;
-
-	save inner_r ;
-	inner_r = .45 radius ;
-
-	z4l = z0 + inner_r * dir (90 + 360/16);
-	z4r = z0 + inner_r * dir (90 - 360/16);
-
-	z4 = .5 [z4l,z4r];
-	z3 = .75 [z1,z4];
-
-
-	penlabels (1,2,3,4);
-
-	%% what is empty path? 
-	p = z3r{up} ..  z1l{up}..z2l{down}..z3l{down} .. z4l{dir (180 + 360/16)}; 
-	for i = 1 upto 7:
-		p := p ... ((z3r{up}.. z1l{up}..z2l{down}..z3l{down}..z4l{dir (180 + 360/16)}) 
-		rotatedaround (z0, 360/8i));
-		endfor
-
-	p := p .. cycle;
-	fill p;
-	pickup pencircle scaled (7/8 inner_r);
-	undraw z0;
-fet_endchar;
-
-% skip + and ,
-
-% code := 44;  % - = 45
-
-%% ugh. rounded corners!
-
-fet_beginchar("Pedal dash", "-", "pedaldash")
-	set_char_box(0, 3penw#, 0, pedalbh#);
-	pickup pencircle scaled penh;
-
-	penpos 1 (penw, 60);
-	penpos 2 (penw, 60);
-	z1l = (0, 2/3h - 1/2penw);
-	z2r = (w, y1l + 1.2penw);
-	penlabels (1,2);
-	penstroke z1e{dir 40}..tension 1.2 ..z2e{dir 40};
-fet_endchar;
-
-fet_beginchar("Pedal dot", ".", "pedaldot")
-	set_char_box(0, penw#, 0, penw#);
-	pickup pencircle scaled penw;
-	draw (1/2penw,1/2penw);
-fet_endchar;
-
-def draw_pedal_P =
-	begingroup;
-	clearxy;
-	pickup pencircle scaled penh;
-
-	penpos 1 (penh, 0);
-	penpos 2 (penw, 55);
-	penpos 3 (penw, pedalpha);
-	penpos 4 (1.2penh, -pedalpha);
-	penpos 5 (penh, -pedalpha);
-	penpos 6 (penh, 180-pedalpha);
-	penpos 7 (2penh, 180-pedalpha);
-	penpos 8 (penh, 90);
-	penpos 9 (4/3penw,50);
-	penpos 10 (1.4penw,50);
-	penpos 11 (penh, 90+pedalpha);
-
-	z1r = (0.6w, h);
-	x2l = x1l - penw;
-	y2 = 0.7h;
-	x3r = x2l + 2penw;
-	y3r = 0.4h;
-	z4l = z5r + 1/4(z3r - z5r);
-	x5 = 1/4w;
-	y5r = 0;
-	z6 = z5;
-	z7 = z6r + 1/3(z8r - z6r);
-	z8r = z5r + 3/5(z3r - z5r);
-	x9l = x10l - penh;
-	y9l = 1/4penh;
-	x10l = w - tand (90-pedalpha)*y11l;
-	y10l = 1/4penh;
-	x11l = w;
-	y11 = 1/5h;
-
-	penlabels (1,2,3,4,5,6,7,8,9,10,11);
-	soft_penstroke z1e..tension 2.5 .. z2e.. tension 1.5 .. z3e ..tension 2.5
-		..z4e..tension 1.5
-		..z5e..z6e..tension 1.5
-		..z7e..tension 1.5
-		..z8e{right}..tension 1.5
-		..z9e{dir -pedalpha}
-		..z10e..tension 2.5..z11e;
-
-	penpos 12 (penh, 0);
-	penpos 13 (penw, -90-pedbeta);
-	penpos 14 (penh, 90);
-	penpos 15 (penw, -90+pedbeta);
-	penpos 16 (penh, 180+pedbeta);
-	z12 = (5/9x1, y2);
-	z13l = (1/2x12r, y15r);
-	z14r = z1r;
-	z15l = (1/2[x16,w], y2l + 0.5penw);
-	x16 = 1/4[x1, w];
-	y16r = y2r;
-
-	penlabels (12,13,14,15,16);
-	soft_penstroke z12e{down}..tension 1.1
-		..z13e{dir (180-pedbeta)}..tension 1.1
-		..z14e{right}..tension 1.1
-		..z15e{dir (180+pedbeta)}..tension 1.1
-		..z16e{dir (90+pedbeta)};
-	endgroup;
-	enddef;
-
-
-def draw_pedal_d =
-	begingroup;
-	clearxy;
-	pickup pencircle scaled penh;
-
-	penpos 1 (penh, -70);
-	penpos 2 (3/4penw, 0);
-	penpos 3 (2penh, 90);
-	penpos 4 (penw, 190);
-	penpos 5 (penh, -10-90);
-
-	z1l = (2/3w, pedalbh);
-	z2l = (1/3w, 1/2pedalbh);
-	z3l = (x1l, 0);
-	z4 = (w - 1/2penw, 1/2pedalbh + penh);
-	x5r = 0;
-	y5l = h;
-
-	penlabels (1,2,3,4,5);
-
-	soft_penstroke z1e{dir (-70-90)}..tension 1.1
-		..z2e{down}..tension 1.1
-		..z3e{right}..tension 1.1
-		..z4e{dir (90+10)}..tension 1.1
-		..z5e{dir (180-10)};
-	endgroup;
-	enddef;
-
-def draw_pedal_e =
-	begingroup;
-	clearxy;
-	pickup pencircle scaled penh;
-
-	penpos 1 (penh, pedalpha-90);
-	penpos 2 (penh, pedalpha-90);
-	penpos 3 (3/5penw, pedalpha);
-	penpos 4 (1.2penh, 90+pedalpha);
-	penpos 5 (2/3penw, 180);
-	penpos 6 (penw, 180+pedalpha);
-	penpos 7 (2/3penw, -90-20);
-	penpos 8 (penh, pedalpha-90);
-
-	z1l = (0, 1/5pedalh);
-	z2 = z1 + dir pedalpha * penw;
-	z3 = (3/5w, 8/9h);
-
-	z4 = (2/9w,  y3);
-
-	x5r = 0;
-	y5 = y2;
-
-	x6 = 3/8w;
-	y6r = 1/2penh;
-
-	z7l = (x6l+penh, y6l);
-
-	x8r = w;
-	y8 = 1/5pedalh;
-
-	penlabels (1,2,3,4,5,6,7,8);
-	soft_penstroke z1e{dir pedalpha}
-		..z2e{dir pedalpha}.. tension 1.1
-		%urg
-		..z3e..tension 1.05
-		..z4e..tension 1.1
-		..z5e..tension 1.5
-		..z6e{dir -pedalpha}..tension 1.1
-		..z7e.. tension 2.5
-		..z8e;
-	endgroup;
-	enddef;
-
-
-% code := 79;  % P = 80
-
-fet_beginchar("Pedal P", "P", "pedalP")
-	set_char_box(0, 5/6pedalh#, 0, pedalh#);
-	draw_pedal_P;
-fet_endchar;
-
-% code := 99;  % d = 100
-
-fet_beginchar("Pedal d", "d", "pedald")
-	set_char_box(0, 2/3pedalh#, 0, 7/8pedalh#);
-	draw_pedal_d;
-fet_endchar;
-
-fet_beginchar("Pedal e", "e", "pedale")
-	set_char_box(0, 2/5pedalh#, 0, pedalbh#);
-	draw_pedal_e;
-fet_endchar;
-
-%
-% Han-Wen insists on having a `Ped' symbol, ready-kerned in mf.
-% The pre 1.3.59 user-scm kerning sucks, but I'm not struck by
-% the looks of this either.
-%
-fet_beginchar("Pedal Ped", "Ped", "pedalPed")
-	P_width# = 5/6pedalh#;
-	e_width# = 2/5pedalh#;
-	d_width# = 2/3pedalh#;
-	define_pixels (P_width, e_width, d_width);
-
-	e_height# = pedalbh#;
-	d_height# = 7/8pedalh#;
-	define_pixels (e_height, d_height);
-
-	% Pe = -0.034 pedalh == -0.07 staff-space
-	% ed = -0.27 pedalh == -0.53 staff-space
-	Pe_kern# = -0.034 pedalh#;
-	ed_kern# = -0.27 pedalh#;
-	define_pixels (Pe_kern, ed_kern);
-
-	w := d_width;
-	h := d_height;
-	draw_pedal_d;
-	currentpicture := currentpicture shifted (e_width + ed_kern, 0);
-	w := e_width;
-	h := e_height;
-	draw_pedal_e;
-	currentpicture := currentpicture shifted (P_width + Pe_kern, 0);
-	w := P_width;
-	h := pedalh;
-	draw_pedal_P;
-	set_char_box(0, P_width# + Pe_kern# + e_width# + ed_kern# + d_width#,
-		0, pedalh#);
-fet_endchar;
-
-
-fet_endgroup("pedal")
-
diff --git a/mf/feta-puntje.mf b/mf/feta-puntje.mf
deleted file mode 100644
index 74544b4429..0000000000
--- a/mf/feta-puntje.mf
+++ /dev/null
@@ -1,13 +0,0 @@
-fet_begingroup("dots");
-
-save dot_radius;
-4 dot_radius# = staff_space# - stafflinethickness#;
-define_whole_blacker_pixels(dot_radius);
-
-fet_beginchar("duration dot","dot", "dot")
-	pickup pencircle scaled 2 dot_radius;
-	drawdot (dot_radius,0);
-	set_char_box(0, 2*dot_radius#, dot_radius#, dot_radius#);
-fet_endchar;
-
-fet_endgroup("dots");
diff --git a/mf/feta-schrift.mf b/mf/feta-schrift.mf
deleted file mode 100644
index 50b3fd551a..0000000000
--- a/mf/feta-schrift.mf
+++ /dev/null
@@ -1,1082 +0,0 @@
-% -*- Fundamental -*-  (emacs-20 mf mode mucks
-% feta-schrift.mf --  implement scripts
-% 
-% source file of the Feta (defintively not an abbreviation for Font-En-Tja)
-% music font
-% 
-% (c) 1997--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-%	Jan Nieuwenhuizen <janneke@gnu.org>
-% 
-
-
-fet_begingroup("scripts")
-
-def draw_fermata =
-  save alpha, radius, crook_thinness, crook_fatness, dot_radius;
-  
-	% [Wanske] and some  Baerenreiter editions
-	% suggest ca 80 degrees iso half-circle
-  alpha := 10;
-
-  radius# = 1.25 staff_space#;
-  crook_thinness# = 1.5linethickness#;
-  crook_fatness# = 0.25 staff_space# +  1.5 linethickness#;
-
-  radius# + crook_fatness#/2 = h#;
-  radius# + crook_thinness#/2 = w#;
-  set_char_box(w#, w#, crook_thinness#/2, h#);
-  
-  define_pixels(radius, crook_thinness, crook_fatness);
-  dot_radius = round (4/6 crook_fatness);
-
-
-  penpos1(crook_thinness, 0);
-  penpos2(crook_fatness, -90);
-  z1 = (-radius,0);
-  z2 = (0, radius);
-
-  fill z1l{dir (-alpha-90)}..{dir (90-alpha)}z1r..
-  {right}z2r -- z2l{left} .. cycle;
-
-  addto currentpicture also 
-  currentpicture xscaled -1;
-
-  pickup pencircle scaled 2dot_radius;
-  x4 =0;
-  bot y4 = - crook_thinness/2;
-  drawdot z4;
-enddef;
-
-fet_beginchar("fermata up", "ufermata", "ufermata")
-	draw_fermata;	
-	penlabels(1,2,4);
-fet_endchar;
-
-fet_beginchar("fermata down", "dfermata", "dfermata")
-	draw_fermata;
-	y_mirror_char;
-fet_endchar;
-
-def draw_short_fermata =
-	save fat_factor, thinness, dot_radius;
-	set_char_box(staff_space#, staff_space#, 0, 2.2 staff_space#);
-
-	dot_radius# = 0.133 staff_space# + 1.33 linethickness#;
-	define_pixels(dot_radius)
-
-	fat_factor = .11;
-	thinness = 1.5 linethickness;
-
-	pickup pencircle scaled thinness;
-	rt x2 = w;
-	lft x5 = -b;
-	bot y5 = 0;
-	top y3 = h;
-	y1 = y2 = y5;
-
-	x3 = 0;
-	z1 - z4 = whatever * (charwd, -charht);
-	z4 = fat_factor [z3, z5];
-
-	filldraw z1 -- z2 -- z3 -- z4 -- cycle;
-	draw z3 .. z5;
-
-	pickup pencircle scaled 2dot_radius;
-	x1 - 2x6 = x2;
-	bot y6 = -d;
-	drawdot z6;
-enddef;
-
-fet_beginchar("short fermata up", "ushortfermata", "ushortfermata")
-	draw_short_fermata;	
-fet_endchar;
-
-fet_beginchar("short fermata down", "dshortfermata", "dshortfermata")
-	draw_short_fermata;
-	xy_mirror_char;
-fet_endchar;
-
-def draw_long_fermata =
-	save stemthick, beamheight, dot_radius, wd;
-	define_pixels(wd, dot_radius)
-
-	wd# = 2.5 staff_space#;
-	stemthick = 1.5 linethickness;
-	beamheight = 0.3 staff_space+  linethickness;
-	dot_radius# = 0.133 staff_space#+ + 1.333 *linethickness#;
-	set_char_box(wd#/2, wd#/2, 0, 3/2 staff_space#);
-
-	draw_rounded_block((-b, h-beamheight), (w, h), blot_diameter);
-	draw_rounded_block((-b, -d),(-b+stemthick, h-stemthick), stemthick);
-	addto currentpicture also currentpicture xscaled -1;
-
-	pickup pencircle scaled 2dot_radius;
-	x4 = 0;
-	bot y4 = -d;
-	drawdot z4;
-enddef;
-
-fet_beginchar("long fermata up", "ulongfermata", "ulongfermata")
-	draw_long_fermata;	
-fet_endchar;
-
-fet_beginchar("long fermata down", "dlongfermata", "dlongfermata")
-	draw_long_fermata;
-	y_mirror_char;
-fet_endchar;
-
-def draw_very_long_fermata =
-	save ibeamheight, obeamheight;
-	save ihwd, ohwd, iht, oht; % inner/outer half_width/height
-	save stemthick, dot_radius;
-	define_pixels(ihwd, ohwd, iht, oht)
-
-	ihwd# = 1.0 staff_space#;
-	ohwd# = 1.5 staff_space#;
-	iht# = 0.9 staff_space#;
-	oht# = 1.6 staff_space#;
-
-	stemthick = 1.5 linethickness;
-	ibeamheight = 0.3 staff_space;
-	obeamheight = 0.5 staff_space;
-	dot_radius = ((iht - ibeamheight) * 4/10)  ;
-
-	set_char_box(ohwd#, ohwd#, 0, oht#);
-
-	draw_rounded_block((-ohwd, oht-obeamheight), (ohwd, oht), blot_diameter);
-	draw_rounded_block((-ohwd, 0),(-ohwd+stemthick, ohwd-stemthick), stemthick);
-	draw_rounded_block((-ihwd, iht-ibeamheight), (ihwd, iht), blot_diameter);
-	draw_rounded_block((-ihwd, 0),(-ihwd+stemthick, ihwd-stemthick), stemthick);
-	addto currentpicture also currentpicture xscaled -1;
-
-	pickup pencircle scaled 2dot_radius;
-	x4 = 0;
-	bot y4 = -d;
-	drawdot z4;
-enddef;
-
-fet_beginchar("very long fermata up", "uverylongfermata", "uverylongfermata")
-	draw_very_long_fermata;	
-fet_endchar;
-
-fet_beginchar("very long fermata down", "dverylongfermata", "dverylongfermata")
-	draw_very_long_fermata;
-	y_mirror_char;
-fet_endchar;
-
-%
-% Thumbs are used in cello music.
-% TODO : thumbs should look like the finger-font and should be placed in
-% the same way in the score.
-%
-
-fet_beginchar("Thumb", "thumb", "thumb")
-        save thin, height, width, thick;
-        height# = 5/4 width#;
-        height# = staff_space#;
-        set_char_box(width#/2, width#/2, height#/2, height#/2);
-	define_pixels (height,width)
-
-        thin = .6  linethickness + 0.06 staff_space;
-	2 thick + 0.5 (height - 2 thin) = width;
-
-	penpos1(thick, 0);
-        penpos2(thin, 90);
-        z1r = (w, 0);
-        z2r = (0, h);
-        penlabels(1,2);
-        penstroke z1e{up} .. {left}z2e;
-        addto currentpicture also currentpicture xscaled -1;
-        addto currentpicture also currentpicture yscaled -1;
-
-	z3 = (0, -h);
-	z4 = (0, -1.5h);
-	penlabels(3,4);
-	draw_brush(z3,1.4*thin, z4,0.9*thick);
-fet_endchar;
-
-%
-% FIXME: rounded endings
-%
-% `\accent' is TeX reserved.
-fet_beginchar("> accent", "sforzato", "sforzatoaccent")
-	set_char_box(.9 staff_space#, .9 staff_space#, .5 staff_space#, .5 staff_space#);
-	save thickness, diminish;
-
-	thickness = 0.05 staff_space + linethickness;
-	pickup pencircle scaled thickness;
-
-	% prevent blobs at crossing lines
-	diminish = .75;
-
-	top y1 = h;
-	lft x1 = -b;
-	rt x2 = w;
-	y2 = .25 thickness* diminish;
-
-	rt z4 = (w,0);
-	x3 = - linethickness + 0.1 staff_space;
-	z3 = whatever [z1, z4];
-
-	penpos2(thickness*(2 - diminish)/2 , 90);
-	penpos1(thickness, 90);
-	penpos3(thickness, 90);
-
-	draw z1 .. z3;
-	draw (z1 .. z3) yscaled -1;
-	draw z4;
-	penstroke z3e .. z2e;
-	penstroke (z3e .. z2e) yscaled -1;
-
-	penlabels(1,2,3);
-	labels(4);
-fet_endchar;
-
-fet_beginchar("staccato dot", "staccato", "staccato")
-	save radius;
-	radius# =   0.20 * staff_space#;
-	define_whole_pixels(radius);
-	pickup pencircle scaled 2 radius;
-	drawdot (0,0);
-	set_char_box(radius#, radius#, radius#, radius#);
-fet_endchar;
-
-def draw_staccatissimo =
-	save radius, height;
-	height# = .8 staff_space#;
-	radius# = linethickness# + .1 staff_space#;
-	define_whole_pixels(radius);
-	define_pixels(height);
-
-	draw_brush((0,0), linethickness, (0, height),2 radius);
-	set_char_box(radius#,radius#, blot_diameter#/2, height# + radius#);
-enddef;
-
-fet_beginchar("staccatissimo/martellato up", "ustaccatissimo", 
-		"ustaccatissimo")
-	draw_staccatissimo;
-fet_endchar;
-
-fet_beginchar("staccatissimo/martellato down", "dstaccatissimo", "dstaccatissimo")
-	draw_staccatissimo;
-	y_mirror_char;
-fet_endchar;
-
-fet_beginchar("portato/single tenuto", "tenuto", "tenuto")
-	save thick;
-	thick# = 1.6 linethickness#;
-	define_whole_pixels(thick);
-
-	set_char_box(.6 staff_space#, .6 staff_space#, thick#/2,thick#/2);
-	pickup pencircle scaled thick;
-	draw_rounded_block((-b,-thick/2),(w,thick/2),thick);
-fet_endchar;
-
-def draw_portato = 
-	save thick, radius;
-	thick# = 1.4 linethickness#;
-	radius# = 1.4 linethickness#;
-	define_whole_pixels(thick,radius);
-	
-	set_char_box(.6 staff_space#, .6 staff_space#, thick#/2,.5 staff_space#+ radius#);
-	draw_rounded_block((-b,-thick/2),(w,thick/2),thick);
-
-	pickup pencircle scaled 2 radius;
-	drawdot (0,h);
-enddef;
-
-
-fet_beginchar("portato/tenuto with staccato", "uportato", 
-		"uportato")
-	draw_portato;
-fet_endchar;
-
-
-fet_beginchar("portato/tenuto with staccato", "dportato", 
-		"dportato")
-	draw_portato;
-	y_mirror_char
-fet_endchar;
-
-
-def draw_marcato = 
-	save fat_factor, thinness;
-	set_char_box(staff_space#/2, staff_space#/2, 0, 1.1 staff_space#);
-
-	fat_factor = .3;
-	thinness =  linethickness;
-
-	pickup pencircle scaled thinness;
-	rt x2 = w;
-	lft x5 = -b;
-	bot y5 = 0;
-	top y3 = h;
-	y1 = y2 = y5;
-
-	x3 =0;
-	z1 - z4 = whatever * (charwd, -charht);
-	z4 = fat_factor [z3, z5];
-
-	filldraw z1 -- z2 -- z3 -- z4 -- cycle;
-	draw z3 .. z5;
-enddef;
-
-fet_beginchar("marcato up", "umarcato", "umarcato")
-	draw_marcato;
-	labels(1,2,3,4,5);
-fet_endchar;
-
-
-%
-% The down marcato char (not very much used). 
-% Contrary to what some MF/TeX `gurus' believe
-% it is *point*-symmetric with the "up" version
-%
-fet_beginchar("marcato down", "dmarcato", "dmarcato")
-	draw_marcato;
-	xy_mirror_char;
-fet_endchar;
- 
-
-%
-% used in french horn music todo
-%
-% TODO: too light at 20pt
-fet_beginchar("open (unstopped)", "open", "ouvert")
-	save thin, height, width, thick;
-	height# = 5/4 width#;
-	height# = staff_space#;
-        thin = .6  linethickness + 0.06 staff_space;
-	set_char_box(width#/2, width#/2, height#/2, height#/2);
-	define_pixels (width,height);
-	2 thick + 0.6 (height - 2 thin) = width;
-	
-	penpos1(thick, 0);
-	penpos2(thin, 90);
-	z1r = (w, 0);
-	z2r = (0, h);
-	penlabels(1,2);
-	penstroke z1e{up} .. {left}z2e;
-	addto currentpicture also currentpicture xscaled -1;
-	addto currentpicture also currentpicture yscaled -1;
-fet_endchar;
-
-
-fet_beginchar("plus (stopped)", "stopped", "plusstop")
-	save thick, size;
-	thick = 2 linethickness;
-	size# = 1.1 staff_space#;
-
-	set_char_box(size#/2, size#/2, size#/2, size#/2);
-	draw_rounded_block((-b,-thick/2),(w,thick/2),thick);
-	addto currentpicture also currentpicture rotated 90;
-fet_endchar;
-
-
-%
-% A vee with tapered insides to prevent visual blotting
-%
-
-def draw_vee (expr width, height, thickness) =
-begingroup
-	save diminish;
-
-	diminish = 0.75;
-
-	pickup pencircle scaled thickness;
-	
-	x1 = 0;
-	bot y1 = 0;
-	rt x2 =  w;
-	top y2 = h;
-
-	z3 = whatever [z2, z1];
-	y3 = 0.6 [y2, y1] + thickness;
-
-	penpos3(thickness, 0);
-	penpos4(thickness * diminish, 0);
-	x4r = thickness/2;
-	y4 = thickness/2;
-	labels(1,2);
-	penlabels(3,4);
-
-	draw z1;
-	draw z3 -- z2;
-	penstroke z3e .. z4e;
-	addto currentpicture also currentpicture xscaled -1;
-endgroup;
-enddef;
-
-fet_beginchar("Upbow", "upbow", "upbow")
-	save ht, wd, thick, diminish;
-	
-	thick = 1.4 linethickness;
-	wd# = 1.3 staff_space#;
-	ht# = 1.6 wd#; 
-	set_char_box(wd#/2, wd#/2, 0, ht#);
-	draw_vee (wd, ht, thick);
-fet_endchar;
-
-
-fet_beginchar("Downbow", "downbow", "downbow")
-	save stemthick, beamheight;
-	save wd,round;
-	define_pixels(wd)
-
-	wd# = 1.5 staff_space#;
-	stemthick = 1.2 linethickness;
-	set_char_box(wd#/2, wd#/2, 0, 4/3 staff_space#);
-
-	beamheight = 4/10 h;
-
-	draw_rounded_block((-b,h-beamheight),(w,h),blot_diameter);
-	draw_rounded_block((-b,-d),(-b+stemthick,h-stemthick),stemthick);
-	addto currentpicture also currentpicture xscaled -1;
-fet_endchar;
-
-%
-% Inspired by a computer-set version of Auf dem Strom by Baerenreiter. 
-%
-
-def draw_turn =
-	save thin, thick, ball_diam, darkness;
-	save wd, ht, thick_nibangle, ball_nib_thick;
-	save turndir;
-	pair turndir;
-
-	wd# = 35/16 staff_space#;
-	ht# = 18/17 staff_space#;
-	darkness = 0.3 linethickness + 0.09 staff_space;
-
-	set_char_box(wd#/2, wd#/2, ht#/2, ht#/2);	
-
-	thick_nibangle = 60;
-	thick = 3 darkness;
-	thin = darkness;
-	ball_nib_thick = 2.7 darkness;
-	ball_diam = ball_nib_thick + (h - ball_nib_thick) / 10;
-
-	
-	x3l = w;
-	y3 = 0;
-	y4l = h;
-	x4 = x2;
-	x2l = w/2;
-	y2l = -d;
-	z1 = (0,0);
-
-	penpos1(1.1 thick, thick_nibangle);
-	penpos2(thick, thick_nibangle);
-	penpos3(thin, 180);
-	penpos4(ball_nib_thick, -90);
-
-	path swoosh, ploop;
-	swoosh :=  z1l{curl 0} .. z2l .. z3l{up} .. {left}z4l 
-	  -- z4r .. z3r{down} .. z2r{left} ;
-	fill swoosh .. (swoosh scaled -1) .. cycle;
-
-	x5r = x4;
-	y5r = y4l - ball_diam /2;
-	z6r = z5r;
-
-	penpos5(1.6 ball_diam/2, 10);
-	penpos6(ball_diam/2, 150);
-
-	ploop := z4l{left} .. z5l .. z6l -- cycle;
-	fill ploop;
-	fill ploop scaled -1;
-
-
-enddef;
-
-fet_beginchar("Reverse turn","reverseturn","reverseturn")
-	draw_turn;
-	currentpicture := currentpicture yscaled -1;
-fet_endchar;
-
-
-fet_beginchar("Turn","turn","turn")
-	draw_turn;
-	penlabels(1,2,3,4,5,6,7);
-fet_endchar;
-
-
-
-%
-% Inspired by a (by now) PD edition of Durand & C'ie edition of 
-% Saint-Saens' Celloconcerto no. 1 
-%
-% FIXME take out hardcoded vars.
-% FIXME the two loops on the `t' should be smoother (and the left one bigger).
-% FIXME generic macros for serifs: top of the t and bottom of r
-%
-% 
-
-fet_beginchar("Trill (`tr')","trill","trill")
-	
-	save start_nib_angle,  ascender_extra, ex, hair_thick, fatness,
-	  slant_angle, slant, t_fatness, r_fatness, kerning, t_overshoot, 
-	  uitschieter, bulb_size;
-	;
-	pair slant_vec;
-
-	ascender_extra# = 1/2 ex#;
-	ascender# = ascender_extra# + ex#;
-	ex# = 1.4 staff_space#;
-	kerning# = .60 ex#;
-	start_nib_angle = 20;
-	bulb_size = 0.80;
-	define_pixels(ex, ascender_extra, ascender, kerning);
-
-	t_overshoot = 0.03 ex;
-	fatness = 12/40 ex;
-	t_fatness = 0.78 fatness;
-	t_width =  1.9 t_fatness;
-	r_fatness = 0.78 fatness;
-	uitschieter = 0.48 ex;
-	hair_thick =  linethickness;
-	r_flare = .5 hair_thick + 0.25 r_fatness;
-	r_width =  2 r_fatness + 0.25 kerning;
-	slant = .2;
-
-%	slant = .0;
-
-	local_copy(transform)(currenttransform);
-	currenttransform := currenttransform slanted slant shifted (- staff_space, 0)  ;
-
-	y1 = ascender;
-
-	% try to position in such a way that the center is the visual
-	% center
-
-	x1l = 0.2 staff_space;
-	x1r - x1l = t_fatness;
-	penpos1(start_nib_wid, start_nib_angle);
-	
-	z2 = (x1, 7/18 ex);
-	penpos2(start_nib_wid, start_nib_angle);
-
-	z3l = (x2l + 0.5 t_width, - t_overshoot);
-
-	z4l = (x2l + t_width, 0.23 ex);
-	penpos4(whatever, 200);
-	x4l - x4r = hair_thick;
-
-	x3r = 0.5 [x4r, x2r];
-%	1.7 [x3l, x3r] = x4r;
-	y3r - y3l = 0.6 t_fatness;
-
-	
-	save t_p, krul_p;
-	path t_p, krul_p, r_p;
-
-	z5 = (x2l + t_fatness/2, 2/3 ex);
-%	penpos5(hair_thick, ); 
-
-	t_p := z1r{dir (angle(z1l-z1r) + 30)} .. z1l{-dir (angle(z1r-z1l) - 45)}
-		-- z2l {down}
-		.. tension (1 + .5 slant)
-		.. z3l{right} 
-		
-		.. z4l{up} -- z4r{down} 
-		.. z3r{left}
-		.. tension (1.5 + .7 slant)
-		.. z2r{up} .. z1r -- cycle;
-	fill t_p ;
-
-	krul_ang = 32;
-
-	pickup pencircle scaled hair_thick;
-	
-	lft x6 = x2l - uitschieter;
-	y6 =  y5 ; % - 1/20 ex;
-
-	z7 = z5 + whatever*dir krul_ang;
-	up_angle = krul_ang;
-	% angle (z7-z5)
-	x7 = 5/10 kerning + x5;
-	
-	penpos7(hair_thick, up_angle + 90);
-
-	
-	y9 = 3/4 ex;
-	x9 = x1 + kerning;
-	penpos9(r_fatness, 0);
-
-	x10 = x9;
-	y10 =  -0.3 linethickness;
-	penpos10(r_fatness, 0);
-
-	krul_p := z4{up}
-		.. tension 0.98
-		.. z5
-		.. z6
-		.. z5 --- z7;
-	draw krul_p;
-	r_p := z7l{z7-z5} .. z9l{down} --- simple_serif (z10l, z10r, -30)
-		--- z9r{up} 
-		 ..  z7r{z5-z7} -- cycle;
-	fill r_p;
-
-	set_char_box(.85 staff_space# , .85 staff_space#, 0,ascender#);
-
-
-	penpos11(hair_thick, -4);
-	z11r = z9r;
-	
-	z13l = (x9l + r_width, y11 -  linethickness );
-	penpos13(r_flare, 180);
-
-	z15 = z13r  - ( bulb_size * r_fatness,0);
-	z14 = 0.5 [z13l, z15] - (0,bulb_size* r_fatness);
-	z16 = 0.5 [z13l, z15] + (0,bulb_size* r_fatness);
-
-
-	fill z11r{up} .. tension 0.94 .. z13r{down} -- z15{down}
-		.. tension 1.0 .. z13l{up}
-		.. z11l{down} -- cycle;
-
-	fill z15{up} .. tension 1.06 .. z13l{down} .. z14 .. cycle;
-
-
-
-	penlabels(range 1 thru 15);
-
-fet_endchar;
-
-
-def draw_heel =
-	save radius, thickness, wall;
-
-	radius# := .5 staff_space#;
-
-	define_pixels(radius);
-	set_char_box(radius#, radius#, radius#, 2/3 staff_space#);
-
-	thickness := 1.5 linethickness;	
-	pickup pencircle scaled thickness;
-	rt x1 = b;
-	top y1 = h;
-	
-	x2 =x1;
-	y2 = 0;
-
-	x3 = 0;
-	bot y3 = -d;
-
-	draw z1{down} .. z2{down} .. z3{left};
-	addto currentpicture also currentpicture xscaled -1;
-	
-enddef;
-
-
-fet_beginchar("left heel", "upedalheel", "upedalheel")
-	draw_heel;
-	labels(1,2,3);
-fet_endchar;
-
-fet_beginchar("right heel", "dpedalheel", "dpedalheel")
-	draw_heel;
-	y_mirror_char;
-fet_endchar;
-
-def draw_toe =
-	save ht,wd;
-
-	thickness := 1.5 linethickness;
-	ht# := 1.5 staff_space#;
-	wd# := 1/3 ht#;
-	define_pixels(ht,wd);
-
-
-	set_char_box(wd#, wd#, 0, ht#);
-	draw_vee (wd, ht, thickness);
-enddef;
-	
-fet_beginchar("left toe", "upedaltoe", "upedaltoe")
-	draw_toe;
-	labels(1,2,3);
-fet_endchar;
-fet_beginchar("right toe", "dpedaltoe", "dpedaltoe")
-	draw_toe;
-	y_mirror_char;
-fet_endchar;
-
-fet_beginchar("Flageolet", "flageolet", "flageolet")
-	save height,width,thickness;
-	height#=4/15 staffsize#;
-	width#=height#;
-	thickness#=blot_diameter#;
-	define_pixels(height,width,thickness);
-	set_char_box(width#/2,width#/2,height#/2,height#/2);
-	
-	pickup pencircle scaled thickness;
-	x1= .5 [x2, x4];
-	x1 = 0;
-	top y1=height/2;
-	rt x4  - lft x2 =width; 
-	y2 = 0;
-	y4=y2;
-	x3=x1;
-	bot y3=-height/2;
-
-	penlabels(1,2,3,4);
-	draw z1..z2..z3..z4..cycle;
-fet_endchar;
-
-%%
-%
-%TODO:  ARGRGHGH code dup.
-%
-%
-
-fet_beginchar("Segno", "segno", "segno")
-	save thin, thick, ball_diam, darkness, pointheight;
-	save wd, ht, thick_nibangle, ball_nib_thick;
-	save turndir;
-	pair turndir;
-
-	ht# = 3 staff_space#;
-	wd# = 2 staff_space#;
-	darkness = .08 staff_space + 0.4  linethickness;
-
-	set_char_box(wd#/2, wd#/2, ht#/2, ht#/2);	
-
-	thick_nibangle = 30;
-	thick = 3 darkness;
-	thin = darkness;
-	ball_nib_thick = 2.7 darkness;
-	ball_diam = ball_nib_thick + (w - ball_nib_thick) / 10;
-	pointheight = 2 linethickness;
-	
-	y3l = h;
-	2 x3 = x2 + x4;
-	x4 = 0;
-	y4 = y2;
-	y2l = .6 h;
-	x2l = -b;
-	z1 = (0,0);
-
-	penpos1(thick, 2 thick_nibangle);
-	penpos2(thick, thick_nibangle);
-	penpos3(thin, -90);
-	penpos4(ball_nib_thick, 180-thick_nibangle);
-
-	path swoosh, ploop;
-	swoosh :=  z1l{curl 0} .. z2l .. z3l{right} .. {down}z4l 
-	  -- z4r .. z3r{left} .. z2r{down} ;
-	fill swoosh .. (swoosh scaled -1) .. cycle;
-	penlabels(1,2,3,4);
-
-	y5r = y4;
-	x5r = x4l - ball_diam /2;
-	z6r = z5r;
-
-	penpos5(1.6 ball_diam/2, 100);
-	penpos6(ball_diam/2, 240);
-
-	ploop := z4l{down} .. z5l .. z6l -- cycle;
-	fill ploop;
-	fill ploop scaled -1;
-	penlabels(4,5,6);
-
-	penpos7(2 thin,0);
-	z7l=(-b,-d);
-	penpos8(2 thin,0);
-	z8r=(w,h);
-	filldraw z7l--z8l{right}--z8r{down}--z7r{right}--cycle;
-	pickup pencircle scaled 2 thin;
-	draw (-x2r,pointheight);
-	draw (x2r,-pointheight);
-fet_endchar;
-
-fet_beginchar("Coda", "coda", "coda")
-	save stickout, thin, thick, codawidth, codaheight;
-
-	stickout# = 0.35 staff_space#;
-	codawidth# = 2/3 staff_space#;
-	codaheight# = 1 staff_space#;
-
-	set_char_box(codawidth#+stickout#, codawidth#+stickout#,
-		codaheight#+stickout#, codaheight#+stickout#);
-
-	define_pixels(codawidth, codaheight);
-	thin = 1.2 linethickness;
-	0.1 (codaheight - 2 thin)  = (codawidth - 2 thick);
-
-	penpos1(thick,0);
-	penpos2(thin,-90);
-	penpos3(thick,180);
-	x1l=-codawidth;
-	y2l=codaheight;
-	y1=0;
-	x2=0;
-	z3 = - z1;
-	penlabels(1,2,3);
-
-	path halfcoda;
-	halfcoda := z1l{up} .. z2l{right} .. z3l{down} -- 
-		z3r{up} .. z2r{left} .. z1r{down} .. cycle;
-	fill halfcoda;
-	fill (halfcoda scaled -1);
-
-	draw_gridline((0,-h),(0,h),thin);
-	draw_gridline((-w,0),(w,0),thin);
-
-fet_endchar;
-
-fet_beginchar("Varied Coda", "varcoda", "varcoda")
-	save thin, thick, codawidth, codaheight;
-	thin# = 1.2 linethickness#;
-	thick# = 1.0 linethickness# + 0.25 staff_space#;
-	codawidth# = 2/3 staff_space#;
-	codaheight# = 1 staff_space#;
-	define_pixels(thin, thick, codawidth, codaheight);
-
-	set_char_box(codawidth#+thick#, codawidth#+thick#,
-		codaheight#+thick#, codaheight#+thick#);
-
-	x1 = -codawidth;
-	y1 = y2 - thin;
-	x2 = 0;
-	y2 = codaheight;
-	draw_rounded_block(z1, z2, blot_diameter);
-
-	x3 = x1;
-	y3 = -blot_diameter;
-	x4 = x1 + thick;
-	y4 = y2;
-	draw_rounded_block(z3, z4, blot_diameter);
-	labels(1,2,3,4);
-
-	addto currentpicture also currentpicture xscaled -1;
-	addto currentpicture also currentpicture yscaled -1;
-
-	draw_gridline((0,-h),(0,h),thin);
-	draw_gridline((-w,0),(w,0),thin);
-fet_endchar;
-
-def draw_comma = 
-	save alpha, thick, thin, ht;
-	alpha:=35;
-	thin# = 1.2 linethickness#;
-	thick# = 3 linethickness#;
-	ht# = .6staff_space#;
-	define_pixels(thin, thick,ht);
-	set_char_box(0, .5staff_space#, ht#, ht#);
-
-	penpos1(thick, alpha);
-	penpos2(thick, alpha+90);
-	penpos3(thin, 180-alpha);
-	penpos4(thin, 90-alpha);
-	x3r=0;
-	x1l=x3l;
-	y2r=-y4l=h;
-	z1=z2;
-	z3=z4;
-	penlabels(1,2,3,4);
-	fill z1l{dir (alpha+90)} .. z2r{dir alpha} .. z1r{dir (alpha-90)} .. 
-	z3l{dir (270-alpha)} .. z4l{dir (alpha+180)} .. 
-	z3r{dir (90-alpha)} .. cycle;
-enddef;
-
-fet_beginchar("Right Comma","rcomma","rcomma");
-	draw_comma;
-fet_endchar;
-
-fet_beginchar("Left Comma","lcomma","lcomma");
-	draw_comma;
-	xy_mirror_char;
-fet_endchar;
-
-def draw_varcomma = 
-	save thick, thin, ht, wd, alpha;
-	alpha:=35;
-	thin# = 1.2 linethickness#;
-	thick# = 3 linethickness#;
-	ht# = .6 staff_space#;
-	wd# = .25 staff_space#;
-	define_pixels(thin, thick, ht, alpha);
-	set_char_box(wd#, wd#, ht#, ht#);
-	z1 = (-b, -d);
-	z2 = (w, h);
-	draw_brush(z1, thin, z2, thick);
-enddef;
-
-fet_beginchar("Right Varied Comma","rvarcomma","rvarcomma");
-	draw_varcomma;
-fet_endchar;
-
-fet_beginchar("Left Varied Comma","lvarcomma","lvarcomma");
-	draw_varcomma;
-	xy_mirror_char;
-fet_endchar;
-
-thick#:=1/24designsize;
-define_blacker_pixels(thick);
-
-rthin:= 0.075 *staff_space + 0.5 linethickness;
-rthick:=2thick+rthin;
-
-def draw_arpeggio =
-	save alpha;
-	alpha:=-40;
-	save ne,nw,se,sw; pair ne,nw,se,sw;
-	save x,y;
-	
-	se=dir alpha; nw=dir (alpha+180);
-	ne=dir (alpha+90); sw=dir (alpha-90);
-	penpos1(rthin,alpha+90);
-	penpos2(5/4rthick,alpha);
-	penpos4(5/4rthick,alpha);
-	penpos5(rthin,alpha+90);
-	penpos3(3/4rthick,alpha);
-
-	z1=(width/2, height) - overshoot*se;
-	z2=2[z4,(width/2,height/2)];
-	z3=1/2[z2,z4];
-	x4=2/8staff_space;
-	y4=rthin;
-
-	z5=2[z1,(width/2,height/2)];
-	z6=z2l+1/2rthin*sw;
-	z7=z4l+1/2rthin*sw+1/2rthin*se;
-	z8=2[z6,(width/2,height/2)];
-	z9=2[z7,(width/2,height/2)];
-	
-	fill z1l{se}..{se}z6..z3l..z7{se}..{se}z5l..z5r{nw}..{nw}z8..z3r..z9{nw}..{nw}z1r.. cycle;
-	penlabels(1,2,3,4,5,6,7,8,9);
-	enddef;
-
-fet_beginchar("Arpeggio","arpeggio","arpeggio");
-	%draw_staff (-2, 2, 0.0);	
-	save height, overshoot, width;
-	height# = staff_space#;
-	width# = 0.8height#;
-        overshoot# = 0.25 staff_space#;
-	define_pixels (height,overshoot,width);
-	set_char_box(0, width#, 0, height#);
-	draw_arpeggio;
-	fet_endchar;
-
-% Extendable Trill symbol.
-% Not yet used
-% Rename me to Trill, rename Trill to Tr?
-fet_beginchar("Trill-element","trill-element","trillelement");
-	save height, overshoot;
-	height# = staff_space#;
-	width# = 0.8height#;
-        overshoot# = 0.25 staff_space#;
-	define_pixels (height,overshoot,width);
-	set_char_box(0, height#, 0, width#);
-	draw_arpeggio;
-	currentpicture := currentpicture shifted -(width/2, height/2);
-	currentpicture := currentpicture rotated 90;
-	currentpicture := currentpicture shifted (height/2, width/2);
-	fet_endchar;
-
-
-
-%
-% Arpeggio arrow by Chris Jackson <chris@fluffhouse.org.uk>
-%
-
-def draw_arpeggio_arrow =
-        save thinness, height, width, overshoot, se, sw, ne, nw, alpha;
-	pair ne, nw, se, sw;
-        height# = staff_space#;
-        width# = 0.8height#;
-        overshoot# = 0.25 staff_space#;
-        define_pixels (height,overshoot,width);
-	set_char_box(0, width#, 0, height#);
-        alpha := -40;
-	nw = dir (alpha+180);
-        sw = dir (alpha-90); se = dir alpha;
-
-        penpos1(rthin,     alpha+90);
-	penpos2(5/4 rthick, alpha);
-        penpos3(5/4 rthick,     0);
-
-        z1 = (width/2, height) - overshoot*se; % numbering is consistent with the arpeggio symbol
-        z2 = 2[z4,(width/2,height/2)];
-        z3 = (0.5 width, 0.5 height);
-        z4 = (0.25 staff_space, rthin);
-	z6 = z2l + 1/2rthin*sw;
-        z9 = (width/2, height) + overshoot*se;
-        fill z1l {se}..{se} z6 .. z3l .. z3r.. z9{nw} ..{nw} z1r.. cycle;
-
-	bot z10 = ( 0.5w,  0   );
-	lft z11 = (-0.3w,  0.8h);
-	rt z12  = ( 1.3w,  0.8h);
-	pickup pencircle scaled 0.5 rthin;
-	filldraw z3 -- z12 {dir -130} ..  {dir -110} z10 {dir 110} ..  {dir 130} z11 -- cycle;
-enddef;
-
-fet_beginchar("Arpeggio arrow down", "arpeggio-arrow--1", "arpeggioarrowdown");
-	draw_arpeggio_arrow;
-fet_endchar;
-
-
-fet_beginchar("Arpeggio arrow up", "arpeggio-arrow-1", "arpeggioarrowup");
-        draw_arpeggio_arrow;
-        currentpicture := currentpicture scaled -1 shifted (0.8staff_space, staff_space);
-fet_endchar;
-
-
-
-
-% Hmm
-input feta-slag;
-
-% railroad tracks.
-%
-% I actually have no clue how they should look, so we use a slightly curvy  
-% and tapered shape. 
-%
-fet_beginchar("Caesura", "caesura", "caesura");
-  save slant, space_between, clearance;
-  save alpha, p;
-  save botthick, topthick;
-  save krom ;
-
-  path p;
-
-  botthick = 1.5 linethickness;
-  topthick = 2.5 linethickness;
-  pickup pencircle scaled botthick;
-
-
-  slant = 3.5 ;
-  space_between# = 0.6 staff_space#;
-  clearance# = 0.2 staff_space#;
-  height# = 1.2 staff_space#;
-
-  set_char_box(0, 2.0 staff_space#, staff_space# - clearance#, height#);
-  define_pixels (space_between, clearance, height);
-
-  bot y1 = -d;
-  top y2 = h;
- 
-  lft x1 = 0;
-  x2 = (y2 - y1) / slant;
-
-  krom = 10;
-
-  alpha = angle (z2 - z1);
-  penpos1 (botthick, alpha - krom);
-  penpos3 (botthick, alpha - krom + 90);
-
-  penpos2 (topthick, alpha + krom );
-  penpos4 (topthick, alpha + krom + 90);
-  z3 = z1; z4 = z2; 
-  penlabels (1,2,3,4);
-
-  p  := z3r{(z1r - z1l)} .. z4r{z2r-z2l} .. z2r{z4l-z4r} .. z4l{z2l-z2r} .. z3l{z1l-z1r} .. z1l{z3r-z3l} .. cycle;
-  fill p;
-  fill p shifted (space_between , 0);
-
-fet_endchar; 
-
-
-fet_endgroup("scripts");
-
diff --git a/mf/feta-slag.mf b/mf/feta-slag.mf
deleted file mode 100644
index 96b4db54fd..0000000000
--- a/mf/feta-slag.mf
+++ /dev/null
@@ -1,199 +0,0 @@
-% -*- Fundamental -*-  (emacs-20 mf mode mucks
-% feta-slag.mf --  implement trill symbols
-% 
-% source file of the Feta (defintively not an abbreviation for Font-En-Tja)
-% music font
-% 
-% (c) 1998--2004 Jan Nieuwenhuizen <janneke@gnu.org>
-% 
-
-% this file is included by feta-scripts.mf
-
-trill_thin# = 0.1 staff_space# + 0.6 stafflinethickness#;
-trill_thick# = 1/2 staff_space#;
-trill_width# = 5/12 staff_space#;
-trill_height# = 1/2staff_space#;
-trill_overlap# = 1/6 staff_space#;
-
-pair trill_ne;
-trill_ne := unitvector ((6,9));
-
-define_pixels (trill_thick, trill_thin, 
-		trill_width, trill_overlap, trill_height);
-
-
-%
-% the trill element sticks out on both the left and right side
-% out of the normal bbox, so you can glue them together easily.
-%
-def draw_trillelement (expr startx) =
-begingroup
-	clearxy;
-	save x, y, p;
-
-	pickup pencircle scaled trill_thin;
-	
-	x1 = - trill_width;
-	y1 = 0;
-	z3 = whatever * trill_ne + z1;
-	top y3 = trill_height;
-	z2 =  z3 - (trill_thick - trill_thin) * trill_ne;
-
-	z4 = z1 - trill_ne * trill_overlap;
-
-	path p;
-	p = z3 -- z2 -- z4 -- z2;
-	p := p -- (p scaled -1) -- cycle;
-	%pickup pencircle scaled 2;
-	filldraw (p shifted (startx + trill_width,0)) ;
-	%draw p;
-	labels(1,2,3,4);
-endgroup;
-enddef;
-
-
-
-
-fet_beginchar("trilelement", "trilelement", "trilelement")
-	set_char_box(trill_width#, trill_width#,
-				trill_height#, trill_height#);
-	draw_trillelement(-trill_width);
-fet_endchar;
-
-fet_beginchar("prall", "prall", "prall")
-	set_char_box(2 trill_width#, 2 trill_width#,
-		     trill_height#, trill_height#);
-	draw_trillelement(-2 trill_width);
-	draw_trillelement(0);
-fet_endchar;
-
-fet_beginchar("mordent", "mordent", "mordent")
-	set_char_box(2 trill_width#, 2 trill_width#,
-			4/3 trill_height#, 4/3 trill_height#);
-	draw_trillelement(-2 trill_width);
-	draw_trillelement(0);
-
-	pickup pencircle scaled trill_thin;
-	top y1 = h;
-	bot y2 = -d;
-	x1 = x2 ;
-	x2 = 0;
-	draw z1 -- z2;
-fet_endchar;
-
-fet_beginchar("prallprall", "prallprall", "prallprall")
-	set_char_box(3 trill_width#, 3 trill_width#,
-		     trill_height#, trill_height#);
-	draw_trillelement(-3 trill_width);
-	draw_trillelement(-1 trill_width);
-	draw_trillelement(1 trill_width);
-fet_endchar;
-
-fet_beginchar("prallmordent", "prallmordent", "prallmordent")
-
-	set_char_box(3 trill_width#, 3 trill_width#,
-		     4/3 trill_height#, 4/3trill_height#);
-	draw_trillelement(-3 trill_width);
-	draw_trillelement(-1 trill_width);
-	draw_trillelement(1 trill_width);
-
-	pickup pencircle scaled trill_thin;
-	top y1 = h;
-	bot y2 = -d;
-	x1 = x2 ;
-	x2 = trill_width;
-	draw z1 -- z2;
-fet_endchar;
-
-save remember_pic;
-picture remember_pic;
-
-fet_beginchar("upprall", "upprall", "upprall")
-	set_char_box(3 trill_width#, 3 trill_width#,
-		      trill_height#, trill_height#);
-	draw_trillelement(-3 trill_width);
-	draw_trillelement(-1 trill_width);
-	draw_trillelement(1 trill_width);
-
-
-	z1 = (- b,0) - trill_overlap * trill_ne ;
-	z4 = z1 + (0, - 2 trill_height);
-	labels (1,4);
-	draw z1{-trill_ne} .. z4{trill_ne yscaled  -1};
-	remember_pic := currentpicture ;
-fet_endchar;
-
-fet_beginchar("upmordent", "upmordent", "upmordent")
-	set_char_box(3 trill_width#, 3 trill_width#,
-		      trill_height#, trill_height#);
-
-	currentpicture := remember_pic;
-
-	pickup pencircle scaled trill_thin;
-	top y1 = h;
-	bot y2 = -d;
-	x1 = x2 ;
-	x2 = trill_width;
-	draw z1 -- z2;
-fet_endchar;
-
-fet_beginchar("pralldown", "pralldown", "pralldown")
-	set_char_box(3 trill_width#, 3 trill_width#,
-		      trill_height#, trill_height#);
-	currentpicture := remember_pic xscaled -1;
-fet_endchar;
-
-fet_beginchar("downprall", "downprall", "downprall")
-	set_char_box(3 trill_width#, 3 trill_width#,
-		      trill_height#, trill_height#);
-	remember_pic := currentpicture;
-	draw_trillelement(-3 trill_width);
-	draw_trillelement(-1 trill_width);
-	draw_trillelement(1 trill_width);
-
-
-	z1 = (- b,0) - trill_overlap * trill_ne ;
-	z4 = z1 + (0, 2 trill_height);
-	labels (1,4);
-	draw z1{trill_ne xscaled -1} .. z4{trill_ne};
-	remember_pic := currentpicture ;
-
-fet_endchar;
-
-fet_beginchar("downmordent", "downmordent", "downmordent")
-	set_char_box(3 trill_width#, 3 trill_width#,
-		    4/3  trill_height#, 4/3trill_height#);
-
-	currentpicture := remember_pic;
-
-	pickup pencircle scaled trill_thin;
-	top y1 = h;
-	bot y2 = -d;
-	x1 = x2 ;
-	x2 = trill_width;
-	draw z1 -- z2;
-fet_endchar;
-
-fet_beginchar("prallup", "prallup", "prallup")
-	set_char_box(3 trill_width#, 3 trill_width#,
-		      trill_height#, trill_height#);
-	currentpicture := remember_pic xscaled -1;
-fet_endchar;
-
-
-fet_beginchar("lineprall", "lineprall", "lineprall")
-	set_char_box(3 trill_width#, 3 trill_width#,
-		      trill_height#, 4trill_height#);
-	remember_pic := currentpicture;
-	draw_trillelement(-3 trill_width);
-	draw_trillelement(-1 trill_width);
-	draw_trillelement(1 trill_width);
-
-	
-	z1 = (- b,0) - trill_overlap * trill_ne ;
-	z4 = z1 + (0, h);
-	labels (1,4);
-	draw z1 -- z4;
-fet_endchar;
-
-
diff --git a/mf/feta-solfa.mf b/mf/feta-solfa.mf
deleted file mode 100644
index d5f5468002..0000000000
--- a/mf/feta-solfa.mf
+++ /dev/null
@@ -1,328 +0,0 @@
-% solfa.mf - implements solfa shaped notes
-%
-% (c) 2001--2004 Glen Prideaux <glenprideaux@iname.com>
-
-% We can use the regular distorted-elliptical head in the feta font
-% for the sol head, but we can't use the triangle or diamond heads for
-% the do or me because they're too narrow and their lines too thin.
-
-fet_begingroup("solfa");
-
-noteheight#:=staff_space#+ (overdone_heads) *stafflinethickness#;
-define_pixels(noteheight);
-
-%%%%%%%%
-%
-%
-% SOLFA SHAPED NOTES
-%
-%
-save pent;
-pent# = stafflinethickness#;
-define_pixels(pent);
-
-def generic_drawnoteshape =
-  save a,beta,black,white;
-  path black, white;
-
-  pickup pencircle scaled pent;
-  2 beta# = noteheight#;
-  a# = a_b*beta#;
-  wid# := 2a#+pent#;
-  hei# := noteheight#+pent#;
-  set_char_box(0, wid#,0.5 hei#, 0.5 hei#);
-
-  define_pixels(a,beta);
-
-  black = noteshape xscaled a yscaled beta shifted (a+pent/2,0);
-  filldraw black;
-
-  if (solid=false):
-    white = noteishape xscaled (a*ai_a) yscaled (beta*bi_b)
-                       shifted ((dx+1)*(a+pent/2),dy*(beta+pent/2));
-    unfill white;
-  fi;
-enddef;  
-
-def drawnoteshape =
-  save solid; boolean solid;
-  solid=false;
-  generic_drawnoteshape;
-enddef;
-def drawquarternoteshape =
-  save solid; boolean solid;
-  solid=true;
-  generic_drawnoteshape;
-enddef;
-
-% do - equilateral triangle: (0,-h/2) -- (w/2,h/2) -- (w,-h/2) -- cycle;
-% stem attachment: -h/2
-
-save triangle; path triangle;
-triangle := (-1,-1) -- (0,1) -- (1,-1) -- cycle;
-
-def drawdoshape =
-  save noteshape, noteishape, dx, dy, ai_a, bi_b;
-  path noteshape, noteishape;
-  noteshape = noteishape = triangle;
-  (dx,dy)=(0,0.05);
-  (ai_a,bi_b)=(i_o,i_o);
-  drawnoteshape;
-enddef;
-
-fet_beginchar("Whole dohead", "0do", "wholedohead")
-  pickup pencircle scaled blot_diameter;
-  save a_b, i_o;
-  a_b = 1.8;
-  i_o = 0.6;
-
-  drawdoshape;
-fet_endchar;
-  
-fet_beginchar("Half dohead", "1do", "halfdohead")
-  save a_b, i_o;
-  a_b = 1.5;
-  i_o = 0.6;
-
-  drawdoshape;
-fet_endchar;
-  
-fet_beginchar("Quart dohead", "2do", "dohead")
-  save a_b, noteshape;
-  path noteshape;
-  a_b = 1.54;
-  
-  noteshape = triangle;
-  drawquarternoteshape;
-
-fet_endchar;
-  
-% re - flat top, curved bottom:
-%                (0,h/2) {dir -90} .. (w/2,-h/2) .. {dir 90} (w,h/2) -- cycle;
-% (broader along the base and with more vertical sides for half and
-% whole notes)
-% stem attachment: h/2
-
-save reshape; path reshape;
-reshape = (-1,1)--(-1,0.2){down} ... (0,-1) ... {up}(1,0.2)--(1,1)--cycle;
-
-fet_beginchar("Whole rehead", "0re", "wholerehead")
-  save a_b, ai_a, bi_b, dx, dy, noteshape, noteishape;
-  path noteshape, noteishape;
-  noteshape = reshape;
-  noteishape = reshape;
-  a_b = 1.8;
-  bi_b = 0.65;
-  ai_a = 0.8;
-  (dx,dy)=(0,-0.1);
-  drawnoteshape;
-fet_endchar;
-
-fet_beginchar("Half rehead", "1re", "halfrehead")
-  save a_b, ai_a, bi_b, dx, dy, noteshape, noteishape;
-  path noteshape, noteishape;
-  noteshape = reshape;
-  noteishape = reshape;
-  a_b = 1.5;
-  bi_b = 0.65;
-  ai_a = 0.8;
-  (dx,dy)=(0,-0.1);
-  drawnoteshape;
-fet_endchar;
-
-fet_beginchar("Quart rehead", "2ro", "rehead")
-  save a_b, noteshape;
-  path noteshape;
-  a_b = 1.54;
-  
-  noteshape = reshape;
-  drawquarternoteshape;
-fet_endchar;
-  
-% me - diamond: (0,0) -- (w/2,h/2) -- (w,0) -- (w/2,-h/2) -- cycle;
-% similar to existing diamond shaped head, but not quite the same
-% stem attachment: 0
-
-save meshape; path meshape;
-meshape = (-1,0)--(0,1)--(1,0)--(0,-1)--cycle;
-
-fet_beginchar("Whole mehead", "0me", "wholemehead")
-  save a_b, ai_a, bi_b, dx, dy, noteshape, noteishape;
-  path noteshape, noteishape;
-  noteshape = meshape;
-  noteishape = (meshape slanted -0.35) rotated -10.5;
-  a_b = 1.8;
-  bi_b = 0.65;
-  ai_a = 0.7;
-  (dx,dy)=(0,0);
-  drawnoteshape;
-fet_endchar;
-
-fet_beginchar("Half mehead", "1me", "halfmehead")
-  save a_b, ai_a, bi_b, dx, dy, noteshape, noteishape;
-  path noteshape, noteishape;
-  noteshape = meshape;
-  noteishape =  (meshape slanted -0.35) rotated -10.5;
-  a_b = 1.5;
-  bi_b = 0.65;
-  ai_a = 0.7;
-  (dx,dy)=(0,0);
-  drawnoteshape;
-fet_endchar;
-
-fet_beginchar("Quart mehead", "2me", "mehead")
-  save a_b, noteshape;
-  path noteshape;
-  a_b = 1.54;
-  
-  noteshape = meshape;
-  drawquarternoteshape;
-fet_endchar;
-
-
-% fa - scalene triangle:
-%         for stem up: (0,h/2) -- (w,h/2) -- (w,-h/2) -- cycle;
-%       for stem down: (w,-h/2) -- (0,1h/2) -- (0,h/2) -- cycle;
-%       (one is a 180 degree rotation of the other)
-% stem attachment: (doesn't much matter)
-
-save fashape; path fashape;
-fashape = (-1,1)--(1,1)--(1,-1)--cycle;
-
-fet_beginchar("Whole fahead", "0fa", "wholefahead")
-  save a_b, ai_a, bi_b, dx, dy, noteshape, noteishape;
-  path noteshape, noteishape;
-  noteshape = fashape;
-  noteishape = fashape;
-  a_b = 1.8;
-  bi_b = 0.6;
-  ai_a = 0.6;
-  (dx,dy)=(0.2,.05);
-  drawnoteshape;
-fet_endchar;
-
-fet_beginchar("Half stemup fahead", "1fau", "halffauhead")
-  save a_b, ai_a, bi_b, dx, dy, noteshape, noteishape;
-  path noteshape, noteishape;
-  noteshape = fashape;
-  noteishape =  fashape;
-  a_b = 1.5;
-  bi_b = 0.6;
-  ai_a = 0.6;
-  (dx,dy)=(0.2,.05);
-  drawnoteshape;
-fet_endchar;
-
-fet_beginchar("Quart stemup fahead", "2fau", "fauhead")
-  save a_b, noteshape;
-  path noteshape;
-  a_b = 1.54;
-  
-  noteshape = fashape;
-  drawquarternoteshape;
-fet_endchar;
-
-fet_beginchar("Half stemdn fahead", "1fad", "halffadhead")
-  save a_b, ai_a, bi_b, dx, dy, noteshape, noteishape;
-  path noteshape, noteishape;
-  noteshape = fashape rotated 180;
-  noteishape =  fashape rotated 180;
-  a_b = 1.5;
-  bi_b = 0.6;
-  ai_a = 0.6;
-  (dx,dy)=(-0.2,-.05);
-  drawnoteshape;
-fet_endchar;
-
-fet_beginchar("Quart stemdn fahead", "2fad", "fadhead")
-  save a_b, noteshape;
-  path noteshape;
-  a_b = 1.54;
-  
-  noteshape = fashape rotated 180;
-  drawquarternoteshape;
-fet_endchar;
-
-
-% sol - oval ... the standard "round" note
-
-% la - rectangle: (0,h/2)--(w,h.2)--(w,-h/2)--(0,-h/2)--cycle;
-% stem attachment: (doesn't much matter)
-save lashape; path lashape;
-lashape = (-1,-1)--(-1,1)--(1,1)--(1,-1)--cycle;
-
-fet_beginchar("Whole lahead", "0la", "wholelahead")
-  save a_b, ai_a, bi_b, dx, dy, noteshape, noteishape;
-  path noteshape, noteishape;
-  noteshape = lashape;
-  noteishape = lashape;
-  a_b = 1.8;
-  bi_b = 0.6;
-  ai_a = 0.85;
-  (dx,dy)=(0,0);
-  drawnoteshape;
-fet_endchar;
-
-fet_beginchar("Half lahead", "1la", "halflahead")
-  save a_b, ai_a, bi_b, dx, dy, noteshape, noteishape;
-  path noteshape, noteishape;
-  noteshape = lashape;
-  noteishape =  lashape;
-  a_b = 1.5;
-  bi_b = 0.6;
-  ai_a = 0.85;
-  (dx,dy)=(0,0);
-  drawnoteshape;
-fet_endchar;
-
-fet_beginchar("Quart lahead", "2la", "lahead")
-  save a_b, noteshape;
-  path noteshape;
-  a_b = 1.54;
-  
-  noteshape = lashape;
-  drawquarternoteshape;
-fet_endchar;
-
-
-% te - an "icecream cone" with about 2/3 of
-% the height in the cone and only 1/3 in the curved top:
-%      (0,h/6)--(w/2,-h/2)--(w,h/6)..(w/2,h/2)..cycle;
-% stem attachment: h/6
-save teshape; path teshape;
-teshape = (0,-1)--(-1,0.3)..(0,1)..(1,0.3)--cycle;
-
-fet_beginchar("Whole tehead", "0te", "wholetehead")
-  save a_b, ai_a, bi_b, dx, dy, noteshape, noteishape;
-  path noteshape, noteishape;
-  noteshape = teshape;
-  noteishape = teshape;
-  a_b = 1.8;
-  bi_b = 0.75;
-  ai_a = 0.75;
-  (dx,dy)=(0,-.02);
-  drawnoteshape;
-fet_endchar;
-
-fet_beginchar("Half tehead", "1te", "halftehead")
-  save a_b, ai_a, bi_b, dx, dy, noteshape, noteishape;
-  path noteshape, noteishape;
-  noteshape = teshape;
-  noteishape =  teshape;
-  a_b = 1.5;
-  bi_b = 0.75;
-  ai_a = 0.75;
-  (dx,dy)=(0,-.02);
-  drawnoteshape;
-fet_endchar;
-
-fet_beginchar("Quart tehead", "2te", "tehead")
-  save a_b, noteshape;
-  path noteshape;
-  a_b = 1.54;
-  
-  noteshape = teshape;
-  drawquarternoteshape;
-fet_endchar;
-
-fet_endgroup("solfa")
diff --git a/mf/feta-test-generic.mf b/mf/feta-test-generic.mf
deleted file mode 100644
index 635e7f1391..0000000000
--- a/mf/feta-test-generic.mf
+++ /dev/null
@@ -1,18 +0,0 @@
-%
-% test stuff.
-% in a separate file to avoid tainting non-test font files for testing.
-%
-%
-
-input feta-bolletjes;	
-%input feta-banier;
-%input feta-slag;
-%input feta-eindelijk;
-input feta-klef;
-%	input feta-toevallig;
-%	input feta-schrift;
-%	input feta-haak;
-%	input feta-timesig;
-%	input feta-pendaal;
-%	input feta-accordion;
-%	input feta-solfa;
diff --git a/mf/feta-test11.mf b/mf/feta-test11.mf
deleted file mode 100644
index 1568c9d5aa..0000000000
--- a/mf/feta-test11.mf
+++ /dev/null
@@ -1,21 +0,0 @@
-% feta-test11
-% part of LilyPond's pretty-but-neat music font
-
-input feta-autometric;
-fet_beginfont("feta-test", 11);
-staffsize#:=11pt#;
-test:=1;
-
-% smoked cheese
-% test := -1;
-
-
-% dem piksels.
-%test := 1;
-
-input feta-generic;
-
-fet_endfont("feta");
-
-end.
-
diff --git a/mf/feta-test13.mf b/mf/feta-test13.mf
deleted file mode 100644
index fc79ef990c..0000000000
--- a/mf/feta-test13.mf
+++ /dev/null
@@ -1,21 +0,0 @@
-% feta-test13
-% part of LilyPond's pretty-but-neat music font
-
-input feta-autometric;
-fet_beginfont("feta-test", 13);
-staffsize#:=13pt#;
-test:=1;
-
-% smoked cheese
-% test := -1;
-
-
-% dem piksels.
-%test := 1;
-
-input feta-generic;
-
-fet_endfont("feta");
-
-end.
-
diff --git a/mf/feta-test16.mf b/mf/feta-test16.mf
deleted file mode 100644
index 3d2ed3cea2..0000000000
--- a/mf/feta-test16.mf
+++ /dev/null
@@ -1,21 +0,0 @@
-% feta-test16
-% part of LilyPond's pretty-but-neat music font
-
-input feta-autometric;
-fet_beginfont("feta-test", 16);
-staffsize#:=16pt#;
-test:=1;
-
-% smoked cheese
-% test := -1;
-
-
-% dem piksels.
-%test := 1;
-
-input feta-generic;
-
-fet_endfont("feta");
-
-end.
-
diff --git a/mf/feta-test20.mf b/mf/feta-test20.mf
deleted file mode 100644
index 72f9a87758..0000000000
--- a/mf/feta-test20.mf
+++ /dev/null
@@ -1,22 +0,0 @@
-% feta-test20
-% part of LilyPond's pretty-but-neat music font
-
-
-input feta-autometric;
-fet_beginfont("feta-test", 20);
-staffsize#:=20pt#;
-test:=1;
-
-% smoked cheese
-% test := -1;
-
-
-% dem piksels.
-%test := 1;
-
-input feta-generic;
-
-fet_endfont("feta");
-
-end.
-
diff --git a/mf/feta-test23.mf b/mf/feta-test23.mf
deleted file mode 100644
index e4656d6d26..0000000000
--- a/mf/feta-test23.mf
+++ /dev/null
@@ -1,22 +0,0 @@
-% feta-test23
-% part of LilyPond's pretty-but-neat music font
-
-
-input feta-autometric;
-fet_beginfont("feta-test", 23);
-staffsize#:=23pt#;
-test:=1;
-
-% smoked cheese
-% test := -1;
-
-
-% dem piksels.
-%test := 1;
-
-input feta-generic;
-
-fet_endfont("feta");
-
-end.
-
diff --git a/mf/feta-test26.mf b/mf/feta-test26.mf
deleted file mode 100644
index 09f34025bd..0000000000
--- a/mf/feta-test26.mf
+++ /dev/null
@@ -1,21 +0,0 @@
-% feta-test26
-% part of LilyPond's pretty-but-neat music font
-
-input feta-autometric;
-fet_beginfont("feta-test", 26);
-staffsize#:=26pt#;
-test:=1;
-
-% smoked cheese
-% test := -1;
-
-
-% dem piksels.
-%test := 1;
-
-input feta-generic;
-
-fet_endfont("feta");
-
-end.
-
diff --git a/mf/feta-timesig.mf b/mf/feta-timesig.mf
deleted file mode 100644
index 216166755b..0000000000
--- a/mf/feta-timesig.mf
+++ /dev/null
@@ -1,101 +0,0 @@
-% 
-% feta-timesig.mf --  implement Time Signatures
-% 
-% source file of the Feta (not an abbreviation of Font-En-Tja) music font
-% 
-% (c) 1998--2004 Mats Bengtsson <matsb@s3.kth.se>,
-%		 Christian Mondrup <scancm@biobase.dk>
-
-fet_begingroup("timesig");
-
-
-%
-% originally by Mats B. nuked by Han-Wen, inspired by
-% Baerenreiter BA320 (Bach Cello Suites, Suite III)
-%
-% Notes:
-% 
-%  * the inside curve of the C is rather straight.
-%  * the outside curve of the C is rather round.
-%  * right tips of the C point slightly outward
-%  * lower tip protudes to the right very slightly.
-%
-
-
-def draw_C =
-  	save hair, bulb_rad, left_fatness;
-	save left_width, right_width;
-	save width;
-
-	width# := 1.8 staff_space#- stafflinethickness#;
-	define_pixels (width);
-
-	left_width# := 1.0 staff_space#;
-	right_width# := 0.8 staff_space#;
-	define_pixels(left_width,right_width);
-  
-	hair# := stafflinethickness#;
-	bulb_rad# := 0.4 staff_space#;
-	define_pixels(hair, bulb_rad);
-	left_fatness = 0.55;
-	
-	x1r - x3r = width;
-	x3r = 0.0;
-	y1r = .45 staff_space;
-	y2 = -y4 = staff_space;
-	x2 = x4;
-	x2 = x3r + staff_space;
-	y3r = 0;
-
-	x5r = x1r + 0.3 stafflinethickness;
-	y5r = -0.37 staff_space;
-	z6l = z1l;
-
-	penpos1(hair, 10);
-	penpos2(stafflinethickness, 90);
-	penpos3(left_fatness * staff_space, 180);
-	penpos4(stafflinethickness, -90);
-	penpos5(hair, -13);
-	penpos6(hair, 10);
-	
-	draw_bulb(-1, z6l,  z6r, bulb_rad, .8);
-
-	save s ;
-	s := 0.735;
-	fill z1l{dir (100)}
-		.. z2l{left}
-			.. tension 0.8
-		.. z3l{down} .. tension 0.8 .. z4l{right} ..
-		simple_serif(z5l, z5r, -90) .. 
-		z4r{left}
-			.. super_curvelet (z4r,z3r,s,-1)
-			..  z3r{up}
-			.. super_curvelet (z3r,z2r,s, 1)
-			.. z2r{right} .. {dir (-80)}z1r -- cycle;
-	
-	set_char_box(0, width#, staff_space#, staff_space#);
-
-	penlabels(1,2,3,4,5,6);
-enddef;
-
-fet_beginchar ("4/4 meter", "C4/4", "fourfourmeter")
-	draw_C;
-fet_endchar;
-
-fet_beginchar ("2/2 meter", "C2/2", "allabreve")
-	draw_C;
-	save excentricity;
-	pair excentricity;
-
-	xpart excentricity = x2 -1.25 stafflinethickness;
-	ypart excentricity = 0;
-
-	save stemlen ;
-	stemlen = 1.4 staff_space;
-	save thick;
-	thick = stafflinethickness / 2 + 0.025 staff_space;
-
-	draw_block((- thick, - stemlen) + excentricity, (thick , stemlen) + excentricity);
-fet_endchar;
-
-fet_endgroup("timesig");
diff --git a/mf/feta-toevallig.mf b/mf/feta-toevallig.mf
deleted file mode 100644
index 8c40d83485..0000000000
--- a/mf/feta-toevallig.mf
+++ /dev/null
@@ -1,404 +0,0 @@
-% 
-% feta-toevallig.mf --  implement Accidentals
-% 
-% source file of the Feta (Font-En-Tja) music font
-% 
-% (c) 1997--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-% 
-
-
-%
-% Accidentals from various sources, notably
-%
-%   Baerenreiter edition of Schuberts `Auf dem Strom' (sharp, natural)
-%   F Hofmeister edition of Muellers `Etueden fuer Horn'  (double sharp, flat)
-%
-
-
-%tracingall;
-%proofing := 2;
-%\tracingequations:= tracingonline := 1;
-
-fet_begingroup("accidentals");
-
-%
-% The beams of most sharps have horizontal endings (as if drawn with 
-% a square pen).  [Wanske] does not mention this, so we'll just ignore 
-% this fact
-%
-
-def draw_meta_sharp (expr width) =
-	save interbeam, interstem, beamheight, beamwidth, 
-		stemwidth, beamslope;
-	save spanwidth, spanheight;
-	
-	save center;
-	pair center;
-
-	interbeam := 1.05 staff_space;
-	beamheight := 0.3 staff_space + stafflinethickness;
-	beamwidth := width;
-	stemwidth := 1.0 stafflinethickness + .05 staff_space;
-	roundness := 2 blot_diameter;
-
-	center := (.5 w, 0);
-	
-	roundness + 2 spanwidth = beamwidth;
-	roundness + 2 spanheight = beamheight;
-
-	z2 - z1 = (beamwidth - roundness, beamheight);
-	z1 + z2 = 2*center;
-	beamslope = (y2-y1)/(x2-x1);
-
-	pair hspan, vspan;
-	hspan = (spanwidth, beamslope * spanwidth);
-	vspan = (0, spanheight);
-	
-	path beam;
-	beam := (hspan + vspan -- -hspan 
-		+  vspan -- -hspan -vspan -- hspan - vspan -- cycle )
-		shifted center;
-
-	pickup pencircle scaled roundness;
-	filldraw (beam shifted (0,-interbeam/2));
-
-	pickup pencircle scaled stemwidth;
-	x3 = x4 = xpart center;
-
-
-	enddef;
-
-fet_beginchar("Sharp" , "2", "sharp");
-	set_char_box(0, 1.1 staff_space#, 1.5 staff_space#, 
-		1.5 staff_space#);
-	draw_meta_sharp (w);
-
-	save stemx;
-	stemx := 7 / 32 * w;
-
-	(bot y3) + - stemx * beamslope = -1.5 staff_space + ypart center;
-	top y4  + stemx * beamslope = 1.5 staff_space + ypart center;
-
-	labels(1,2,3,4);
-
-	draw_gridline (z3-(stemx,stemx* beamslope),z4-(stemx, stemx*beamslope), stemwidth);
-	addto currentpicture also currentpicture rotated 180 shifted (w,0);
-
-	fet_endchar;
-
-fet_beginchar("1/2 Sharp" , "1", "semisharp");
-	set_char_box(0, 0.7 staff_space#, 1.5 staff_space#, 
-		1.5 staff_space#);
-
-	draw_meta_sharp (w);
-	stemx := 7 / 32 * w;
-
-	(bot y3) + - stemx * beamslope = -1.5 staff_space + ypart center;
-	top y4  + stemx * beamslope = 1.5 staff_space + ypart center;
-
-	labels(1,2,3,4);
-
-	draw_gridline (z3, z4, stemwidth);
-	addto currentpicture also currentpicture rotated 180 shifted (w,0);
-
-	fet_endchar;
-
-
-fet_beginchar("3/4 Sharp" , "3", "threequartersharp");
-	set_char_box(0, 1.6 staff_space#, 1.5 staff_space#, 
-		1.5 staff_space#);
-
-	draw_meta_sharp (w);
-	stemx := 9 / 32 * w;
-
-	(bot y3) + - stemx * beamslope = -1.5 staff_space + ypart center;
-	top y4  + stemx * beamslope = 1.5 staff_space + ypart center;
-
-	labels(1,2,3,4);
-
-	draw_gridline (z3-(stemx,stemx* beamslope),z4-(stemx, stemx*beamslope), stemwidth);
-	draw_gridline (z3, z4, stemwidth);
-	addto currentpicture also currentpicture rotated 180 shifted (w,0);
-
-	fet_endchar;
-
-%
-% The stems of the natural are brushed (at least, in Barenreiter SCS )
-%
-%
-
-fet_beginchar( "Natural", "0", "natural")
-	save height, xcenter;
-	save interbeam, interstem, beamheight, beamwidth, 
-	stemwidth;
-	save top_stem_thick;
-
-	beamheight# = 0.35 staff_space# + .5 stafflinethickness#;
-	height# = 1.5 staff_space#;
-	set_char_box(0, 2/3 staff_space#, height#, height#);
-
-	define_pixels(height);
-	define_blacker_pixels(beamheight);
-
-	top_stem_thick = round (1 stafflinethickness + .09staff_space ) + 0.4;
-	stemwidth = 0.08 staff_space + .5 stafflinethickness;
-	
-
-	interstem + stemwidth =  w;
-
-	z2 -z1 = (interstem, slope * interstem);
-	xpart .5 [z2,z1] = xcenter ;
-	xcenter = w/2;
-
-
-	pickup penrazor scaled beamheight rotated 90;
-	top y2 = staff_space - 3/2 stafflinethickness ;
-	slope = stafflinethickness / interstem;
-	
-	draw z1 .. z2;
-	draw (xpart z1, -y2) .. (xpart z2, -y1);
-	beamtop = top y2;
-
-	pickup pencircle scaled stemwidth;
-	x3 := round (xpart z1);
-	x4 := round (xpart z2);
-
-	penpos3(top_stem_thick, 0);
-	penpos5(top_stem_thick, 0);	
-	penpos4(stemwidth, 0);
-	penpos6(stemwidth, 0);	
-	
-	y3 = height;
-	top y4 = beamtop;
-
-	x5 = x4;
-	x6 = x3;
-	bot y6 = -beamtop;
-	y5 = - height;
-
-	fill simple_serif (z3l, z3r, -30) -- simple_serif(z6r, z6l, -90) -- cycle;
-	fill simple_serif (z5l, z5r, 30) -- simple_serif(z4r, z4l, 90) -- cycle;
-
-
-
-	penlabels(3,4,5,6);
-
-	labels(1,2);
-	fet_endchar;
-
-
-%
-% Dedicated to my mom.    (3/10/97)
-%
-% Mamma, ik hou van je; kom je alsjeblieft terug? 
-%    -- HW
-%
-
-% TODO: remove crook_fatness
-% TODO: document, simplify!
-%
-def draw_meta_flat(expr xcenter, w, crook_fatness) =
-	clearxy;
-	save crook_thinness;
-	save bottom_overshoot;
-	save top_stem_thick, bottom_stem_thick, hair, smaller_hole;
-	save top_crook_thinness;
-	save zwiep; 
-	save center;
-	pair center;
-	save clearing;
-	center = (xcenter, 0);
-
-% the shouldn't reach to the top staff line.
-%% TODO: should take from height.
-	clearing = 1.2 stafflinethickness; 
-
-%
-%  TODO: parameterize  this
-%
-	if w >= 0.75 staff_space:
-		smaller_hole = 0.35 stafflinethickness;
-	else:
-		smaller_hole = 0.0 stafflinethickness;
-	fi
-	crook_thinness = .7 stafflinethickness + .06 staff_space;
-	top_crook_thinness = 1 stafflinethickness + .065 staff_space ;
-
-	% this is a somewhat heuristic.  We should  probably make it
-	% straight for low resolution (300 dpi and less).
-	top_stem_thick = round (0.1 staff_space + 1.2 stafflinethickness) + 0.74;
-
-	bottom_overshoot = stafflinethickness;
-	bottom_stem_thick = 0.06 staff_space +  0.6 stafflinethickness;
-
-	z1 = (0, 2 staff_space) + center - (0, stafflinethickness/2
-		+ clearing);
-	z2 =  (0, - 1/2 staff_space - stafflinethickness/2 )+  center;
-
-	penpos1(top_stem_thick, 0);
-	penpos2(bottom_stem_thick, 0); 
-
-	fill simple_serif(z1r, z1l, 30) -- z2l -- z2r -- cycle;
-
-
-	y3l = (staff_space - stafflinethickness) / 2 + ypart center;
-	z3l = whatever [z2r,z1r];
-
-	z3r = .3 [z2r, z1r] + (smaller_hole, 0);
-
-	z10 = whatever [z2r, z1r] + (smaller_hole , 0);
-	z11 = center + (bottom_overshoot/3,
-		-staff_space/2 - stafflinethickness/2) - (0,bottom_overshoot);
-
-	penpos4(whatever, 53);
-
-	y4l - y4r =  top_crook_thinness ;
-
-	y5r = .15 staff_space + ypart center;
-	x5l = w + xpart center;
-	y4 = ypart center + staff_space/2;
-	x4r = .45 [x5r, x3r];
-
-	penpos5(crook_fatness, -175);
-
-	save bot_crook_dir ;
-	pair bot_crook_dir ;
-	bot_crook_dir =  unitvector ((x5l,0) - z11);
-	z8 = z11 +  whatever * bot_crook_dir;
-	y8 = - staff_space /2  +0.0* stafflinethickness;
-
-	z7 = z8 + whatever * bot_crook_dir + crook_thinness  * (bot_crook_dir rotated 90);
-
-	x7 = .1 [x3r, x8];
-
-	penlabels(range 0 thru 10);
-
-	y10 = -1/10 staff_space;
-%	draw_staff (-2, 2, 0.5);
-%	draw_staff (-2, 2, 0.0);
-
-	unfill z3r{z3r-z10} .. z4r{right} .. z5r{down}
-		..  z7{- bot_crook_dir}
-		& z7 % .. tension 1.3
-		.. z10{z3r-z10}
-
-		-- cycle;
-	fill z2l{down}
-		
-		.. z11{right}
-		.. z8{bot_crook_dir}
-		.. z5l{up}
-		.. z4l{left} .. z3l -- cycle;
-		
-	labels(10);
-enddef;
-
-	
-%
-% unfortunately, 600dpi is not enough to show the brush of the stem.
-%
-fet_beginchar("Flat", "-2", "flat")
-	set_char_box(1.2 stafflinethickness#, .8 staff_space#, 0.6 staff_space#, 1.9 staff_space#);
-	draw_meta_flat(0, w, 0.31 staff_space);
-	fet_endchar;
-
-fet_beginchar("Semi flat", "-1", "semiflat")
-	set_char_box(1.2 stafflinethickness#, .8 staff_space#, 0.6 staff_space#, 1.9 staff_space#);
-	draw_meta_flat(0, w, 0.31 staff_space);
-	currentpicture := currentpicture xscaled -1 shifted (w - b, 0);  
-	fet_endchar;
-
-
-fet_beginchar("Double Flat", "-4", "flatflat")
-	save left_wid, overlap, right_wid;
-	left_wid = .7;
-	right_wid = .8;
-	overlap = .05;
-	set_char_box(1.2 stafflinethickness#, (left_wid + right_wid -overlap) *staff_space#, .6 staff_space#, 1.9 staff_space#);
-	draw_meta_flat(0, left_wid*  staff_space, 1/3 staff_space);
-	draw_meta_flat(round ((left_wid - overlap) *staff_space),
-		right_wid *staff_space, 0.33 staff_space);
-	fet_endchar;
-
-fet_beginchar("3/4 Flat", "-3", "threeqflat")
-	save left_wid, overlap, right_wid;
-	left_wid = .7;
-	right_wid = .8;
-	overlap = .05;
-	set_char_box(1.2 stafflinethickness#, (left_wid + right_wid -overlap) *staff_space#, .6 staff_space#, 1.9 staff_space#);
-	draw_meta_flat(0, left_wid*  staff_space, 1/3 staff_space);
-	draw_meta_flat(round ((left_wid - overlap) *staff_space),
-		right_wid *staff_space, 0.33 staff_space);
-
-	%% maybe we should clip part of the stems?
-	%% or make the 1st flat smaller?
-	%% or reverse it? 
-	pickup pencircle scaled 2 stafflinethickness;
-	z12 = ( - .25 w - b, .55 staff_space);
-	z13 = (  .75 w , 1.45 staff_space);
-	draw z12 -- z13;
-	fet_endchar;
-
-
-fet_beginchar("Double Sharp", "4", "sharpsharp")
-	set_char_box(0, staff_space#, .5 staff_space#, .5 staff_space#);
-	save klaverblad, klaversteel;
-
-	klaversteel = 1/15 staff_space;
-	klaverblad = .40 staff_space - .5 stafflinethickness;
-
-	z1 = (klaversteel, 0);
-	z2 = (w/2 - klaverblad / 10, h - klaverblad);
-	z3 = (w/2, h);
-	z4 = z2 reflectedabout((0,0), (1,1));
-	z5 = z1 reflectedabout((0,0), (1,1));
-
-	labels(1,2,3,4,5);
-	pickup pencircle scaled blot_diameter;
-	filldraw  
-		z1{dir 45} .. {right}z2 -- z3 -- 
-		z4{down} .. {dir 225}z5 .. cycle;
-	
-
-	addto currentpicture also currentpicture yscaled (-d/h);
-	addto currentpicture also currentpicture xscaled (-1);
-
-	% ugh
-	currentpicture := currentpicture  shifted (w/2,0);
-
-
-
-fet_endchar;
-
-
-def draw_paren =
-  	save leftindent;
-	leftindent# := .2 staff_space#;
-	define_pixels(leftindent);
-  	set_char_box(0, .5 staff_space#+stafflinethickness#,
-	  staff_space#, staff_space#);
-	z1 = (leftindent,h);
-	z2 = (w-stafflinethickness,0);
-	z3 = (leftindent,-d);
-
-	penpos1(stafflinethickness, 35);
-	penpos2(.1 staff_space + stafflinethickness, 0);
-	penpos3(stafflinethickness, -35);
-
-	penlabels(1,2,3);
-	fill z2l{down} .. simple_serif(z3l, z3r, 90) ..	z2r{up}
-	.. simple_serif(z1r, z1l, 90) .. z2l{down} -- cycle;
-enddef;
-  
-fet_beginchar("Right Parenthesis", "rightparen", "rightparen")
-	draw_paren;
-fet_endchar;
-
-fet_beginchar("Left Parenthesis", "leftparen", "leftparen")
-	draw_paren;
-        currentpicture := currentpicture xscaled -1;
-        set_char_box(charwd, charbp, chardp, charht);
-fet_endchar;
-
-fet_endgroup("accidentals");
-
diff --git a/mf/feta.tex b/mf/feta.tex
deleted file mode 100644
index 1fe629ef72..0000000000
--- a/mf/feta.tex
+++ /dev/null
@@ -1,70 +0,0 @@
-% display all feta chars in a pretty picture
-% GNU LilyPond
-% (c)  1998--2003 Jan Nieuwenhuizen <janneke@gnu.org>
-%
-% urg: fool ls-latex
-\def\urg{
-\title{The Feta font}
-\author{JCN}
-\begin{document}
-}
-
-
-\parindent0pt
-\nopagenumbers
-\newcount\n
-\newcount\i
-
-\font\fetatwenty = feta20
-\font\fetanumber = feta-nummer12
-\font\fetafinger = feta-nummer5
-\font\fetadyn = feta-din10 scaled \magstep 2
-\font\titlefont = cmbx12 scaled \magstep 4
-\font\subtitle = cmr9
-
-\def\lilyfooter{Lily was here}
-\def\setchar#1#2{\hbox to\charwidth{\hss{#1\char#2}\hss}}
-
-\def\charsperline{6}
-\def\charheight{55pt}
-\def\charwidth{60pt}
-
-\def\listfont#1#2#3{
-        \n=#2
-        \advance\n by-1
-        \advance\n by-\charsperline
-        \loop\ifnum\n<#3
-        \advance\n by\charsperline
-        \i=0
-        {\vbox to\charheight{\vss\centerline{
-        {\loop\ifnum\i<\charsperline
-        \advance\i by1
-        \advance\n by1
-        {\setchar{#1}{\number\n}}
-        \repeat}}}}\repeat}
-
-\def\title#1{\centerline{\titlefont #1}}
-\def\author#1{\centerline{#1}}
-
-\title{FETA}
-
-\centerline{\subtitle (definitely not an abbreviation for Font-En-Tja)}
-
-\author{Han-Wen Nienhuys and Jan Nieuwenhuizen}
-
-
-\vskip5mm
-
-\listfont{\fetatwenty}{0}{105}
-% urg
-\vskip-\charheight
-\listfont{\fetanumber}{48}{58}
-\vskip-\charheight
-\listfont{\fetafinger}{48}{58}
-\vskip-\charheight
-\listfont{\fetadyn}{0}{6}
-\vskip-\charheight
-
-\lilyfooter
-
-\bye
diff --git a/mf/feta11.mf b/mf/feta11.mf
deleted file mode 100644
index c0e87d7d8c..0000000000
--- a/mf/feta11.mf
+++ /dev/null
@@ -1,16 +0,0 @@
-% feta16.mf
-% part of LilyPond's pretty-but-neat music font
-
-
-input feta-autometric;
-fet_beginfont("feta", 11);
-staffsize#:=11.22pt#;
-test:=0;
-
-
-input feta-generic;
-
-fet_endfont("feta");
-
-end.
-
diff --git a/mf/feta13.mf b/mf/feta13.mf
deleted file mode 100644
index 1987d39750..0000000000
--- a/mf/feta13.mf
+++ /dev/null
@@ -1,15 +0,0 @@
-% feta16.mf
-% part of LilyPond's pretty-but-neat music font
-
-input feta-autometric;
-fet_beginfont("feta", 13);
-staffsize#:=12.60pt#;
-test:=0;
-
-
-input feta-generic;
-
-fet_endfont("feta");
-
-end.
-
diff --git a/mf/feta14.mf b/mf/feta14.mf
deleted file mode 100644
index cc8aa4a6fd..0000000000
--- a/mf/feta14.mf
+++ /dev/null
@@ -1,16 +0,0 @@
-
-% feta16.mf
-% part of LilyPond's pretty-but-neat music font
-
-input feta-autometric;
-fet_beginfont("feta", 14);
-staffsize#:=14.14pt#;
-test:=0;
-
-
-input feta-generic;
-
-fet_endfont("feta");
-
-end.
-
diff --git a/mf/feta16.mf b/mf/feta16.mf
deleted file mode 100644
index 30d7b0a2a2..0000000000
--- a/mf/feta16.mf
+++ /dev/null
@@ -1,15 +0,0 @@
-% feta16.mf
-% part of LilyPond's pretty-but-neat music font
-
-input feta-autometric;
-fet_beginfont("feta", 16);
-staffsize#:=15.87pt#;
-test:=0;
-
-
-input feta-generic;
-
-fet_endfont("feta");
-
-end.
-
diff --git a/mf/feta18.mf b/mf/feta18.mf
deleted file mode 100644
index 1fa053e169..0000000000
--- a/mf/feta18.mf
+++ /dev/null
@@ -1,17 +0,0 @@
-% feta23.mf
-% part of LilyPond's pretty-but-neat music font
-
-input feta-autometric;
-
-% todo change file name
-fet_beginfont("feta", 18);
-staffsize#:=17.82pt#;
-test:=0;
-
-
-input feta-generic;
-
-fet_endfont("feta");
-
-end.
-
diff --git a/mf/feta20.mf b/mf/feta20.mf
deleted file mode 100644
index 35190154ff..0000000000
--- a/mf/feta20.mf
+++ /dev/null
@@ -1,17 +0,0 @@
-% feta20.mf
-% part of LilyPond's pretty-but-neat music font
-
-staffsize#:=20pt#;
-
-input feta-autometric;
-fet_beginfont("feta", 20);
-
-
-% use feta-test for debugging.
-test := 0;
-input feta-generic;
-
-fet_endfont("feta");
-
-end.
-
diff --git a/mf/feta23.mf b/mf/feta23.mf
deleted file mode 100644
index 95962446ba..0000000000
--- a/mf/feta23.mf
+++ /dev/null
@@ -1,17 +0,0 @@
-% feta23.mf
-% part of LilyPond's pretty-but-neat music font
-
-input feta-autometric;
-
-% todo change file name
-fet_beginfont("feta", 22.5);
-staffsize#:=22.45pt#;
-test:=0;
-
-
-input feta-generic;
-
-fet_endfont("feta");
-
-end.
-
diff --git a/mf/feta26.mf b/mf/feta26.mf
deleted file mode 100644
index ec85398e99..0000000000
--- a/mf/feta26.mf
+++ /dev/null
@@ -1,16 +0,0 @@
-% feta16.mf
-% part of LilyPond's pretty-but-neat music font
-
-input feta-autometric;
-fet_beginfont("feta", 26);
-staffsize#:=25.20pt#;
-test:=0;
-
-
-input feta-generic;
-
-fet_endfont("feta");
-
-end.
-
-
diff --git a/mf/graycx.mf b/mf/graycx.mf
deleted file mode 100644
index 35fb3c4929..0000000000
--- a/mf/graycx.mf
+++ /dev/null
@@ -1,8 +0,0 @@
-% Gray font for CX with proofsheet resolution 75 pixels per inch.
-% Each pixel is represented by a 4x4 square, with 4/16 of the dots on.
-
-font_identifier "GRAYCX";
-
-%boolean lightweight;
-
-input grayf
diff --git a/mf/graylj.mf b/mf/graylj.mf
deleted file mode 100644
index 45b2347d38..0000000000
--- a/mf/graylj.mf
+++ /dev/null
@@ -1,9 +0,0 @@
-% Gray font for LJ with proofsheet resolution 150 pixels per inch.
-% Each pixel is represented by a 4x4 square, with 4/16 of the dots on.
-
-
-font_identifier "GRAYLJ";
-
-boolean lightweight;
-
-input grayf
diff --git a/mf/parmesan-accidentals.mf b/mf/parmesan-accidentals.mf
deleted file mode 100644
index a91367753f..0000000000
--- a/mf/parmesan-accidentals.mf
+++ /dev/null
@@ -1,189 +0,0 @@
-% -*-Fundamental-*-
-% parmesan-accidentals.mf -- implement ancient accidentals
-% 
-% source file of LilyPond's pretty-but-neat music font
-% 
-% (c) 2001--2004 Juergen Reuter <reuter@ipd.uka.de>
-% 
-
-fet_begingroup ("accidentals")
-
-
-%%%%%%%%
-%
-%
-%
-% EDITIO MEDICAEA
-%
-%
-%
-fet_beginchar("Ed. Med. Flat" , "medicaea-1", "medicaeaflat");
-	set_char_box(0.1 staff_space#, 0.6 staff_space#,
-		     0.6 staff_space#, 1.0 staff_space#);
-
-	pickup pencircle
-		xscaled 0.50 linethickness
-		yscaled 0.22 staff_space;
-
-	save za, zb;
-	pair za, zb;
-
-	za = (0.00 staff_space, +0.90 staff_space);
-	zb = (0.00 staff_space, -0.50 staff_space);
-	draw za -- zb;
-
-	pickup pencircle
-		xscaled 0.50 linethickness
-		yscaled 0.22 staff_space
-		rotated -63;
-
-	save zc, zd, ze;
-	pair zc, zd, ze;
-
-	zc = (0.10 staff_space, -0.50 staff_space);
-	zd = (0.40 staff_space, +0.40 staff_space);
-	ze = (0.10 staff_space, +0.40 staff_space);
-
-	draw zc{(1,2)} .. zd .. ze{(-1,-1)};
-
-	fet_endchar;
-
-%%%%%%%%
-%
-%
-%
-% EDITIO VATICANA
-%
-%
-%
-fet_beginchar("Ed. Vat. Flat" , "vaticana-1", "vaticanaflat");
-        save za, zb, zc, zd, ze, zf, zg;
-        pair za, zb, zc, zd, ze, zf, zg;
-        za = (0.00 staff_space, +0.80 staff_space);
-        zb = (0.00 staff_space, -0.03 staff_space);
-        zc = (0.25 staff_space, -0.23 staff_space);
-        zd = (0.50 staff_space, -0.23 staff_space);
-        ze = (0.50 staff_space, +0.00 staff_space);
-        zf = (0.25 staff_space, +0.20 staff_space);
-        zg = (0.15 staff_space, +0.26 staff_space);
-
-        pickup pencircle
-                xscaled 0.50 linethickness
-                yscaled 0.22 staff_space;
-        draw za{down} .. {down}zb .. zc .. zd{up} .. {up}ze .. zf .. zg;
-
-        set_char_box(0.00 staff_space# + 0.25 linethickness#,
-		     0.50 staff_space# + 0.25 linethickness#,
-		     0.23 staff_space# + 0.11 staff_space#,
-		     0.80 staff_space# + 0.11 staff_space#);
-        fet_endchar;
-
-fet_beginchar("Ed. Vat. Natural" , "vaticana0", "vaticananatural");
-	save za, zb, zc, zd;
-	pair za, zb, zc, zd;
-	pickup pencircle
-		xscaled 0.80 linethickness
-		yscaled 0.22 staff_space;
-	za = (0.00 staff_space, +0.65 staff_space);
-	zb = (0.00 staff_space, -0.35 staff_space);
-	zc = (0.00 staff_space, -0.30 staff_space);
-	zd = (0.40 staff_space, -0.08 staff_space);
-	draw za -- zb;
-	draw zc -- zd;
-
-	addto currentpicture also currentpicture
-		xscaled -1
-		yscaled -1
-		shifted (0.40 staff_space, 0.0 staff_space);
-
-	set_char_box(0.00 staff_space# + 0.40 linethickness#,
-		     0.40 staff_space# + 0.40 linethickness#,
-		     0.65 staff_space# + 0.11 staff_space#,
-		     0.65 staff_space# + 0.11 staff_space#);
-
-	fet_endchar;
-
-%%%%%%%%
-%
-%
-%
-% MENSURAL NOTATION
-%
-%
-%
-fet_beginchar("Mensural Sharp" , "mensural1", "mensuralsharp");
-	save stemthick;
-	define_pixels (stemthick);
-	stemthick# = linethickness#;
-
-	save za, zb;
-	pair za, zb;
-	pickup pencircle scaled 0.8 stemthick;
-	za = 0.4 * staff_space * (0.8, 1);
-	za = -zb;
-	draw za .. zb;
-
-	addto currentpicture also currentpicture xscaled -1;
-	addto currentpicture also currentpicture shifted (0.20 staff_space, 0);
-
-	set_char_box(0.8 * 0.4 staff_space# + 0.4 stemthick#,
-		     (0.8 * 0.4 + 0.2) * staff_space# + 0.4 stemthick#,
-		     0.4 staff_space# + 0.4 stemthick#, 
-		     0.4 staff_space# + 0.4 stemthick#);
-
-	fet_endchar;
-
-fet_beginchar("Mensural Flat" , "mensural-1", "mensuralflat");
-	save stemthick;
-	define_pixels (stemthick);
-	stemthick# = linethickness#;
-
-	save za, zb, zc, zd, ze;
-	pair za, zb, zc, zd, ze;
-	pickup pencircle
-		xscaled 1.4 stemthick
-		yscaled 0.6 stemthick
-		rotated 45;
-
-	za = (0.00 staff_space, +1.80 staff_space);
-	zb = (0.00 staff_space, -0.25 staff_space);
-	zc = (0.35 staff_space, -0.25 staff_space);
-	zd = (0.35 staff_space, +0.25 staff_space);
-	ze = (0.00 staff_space, +0.25 staff_space);
-	draw za -- zb .. zc .. zd .. ze;
-
-	set_char_box(0.00 staff_space# + 0.75 stemthick#,
-		     0.40 staff_space# + 0.75 stemthick#,
-		     0.25 staff_space# + 0.75 stemthick#,
-		     1.80 staff_space# + 0.75 stemthick#);
-
-	fet_endchar;
-
-fet_beginchar("Hufnagel Flat" , "hufnagel-1", "hufnagelflat");
-	save stemthick;
-	define_pixels (stemthick);
-	stemthick# = linethickness#;
-
-	save za, zb, zc, zd, ze, zf;
-	pair za, zb, zc, zd, ze, zf;
-	pickup pencircle
-		xscaled 2.4 stemthick
-		yscaled 0.4 stemthick
-		rotated 45;
-
-	za = (0.00 staff_space, +1.80 staff_space);
-	zb = (0.00 staff_space, -0.15 staff_space);
-	zc = (0.25 staff_space, -0.30 staff_space);
-	zd = (0.50 staff_space, +0.00 staff_space);
-	ze = (0.30 staff_space, +0.30 staff_space);
-	zf = (0.00 staff_space, +0.15 staff_space);
-	draw za -- zb -- zc .. zd .. ze -- zf;
-
-	set_char_box(0.00 staff_space# + 1.0 stemthick#,
-		     0.50 staff_space# + 1.0 stemthick#,
-		     0.30 staff_space# + 0.5 stemthick#, 
-		     1.80 staff_space# + 0.5 stemthick#);
-
-	fet_endchar;
-
-fet_endgroup ("accidentals")
diff --git a/mf/parmesan-clefs.mf b/mf/parmesan-clefs.mf
deleted file mode 100644
index f1c8a40ac4..0000000000
--- a/mf/parmesan-clefs.mf
+++ /dev/null
@@ -1,928 +0,0 @@
-% -%-Fundamental-%- -*-Metafont-*-
-% parmesan-clefs.mf -- implement ancient clefs
-% 
-% source file of LilyPond's pretty-but-neat music font
-%
-% (c) 2001--2004 Juergen Reuter <reuter@ipd.uka.de>
-%
-
-fet_begingroup ("clefs")
-
-%
-% character aligment:
-%
-%   Each clef is associated with a particular pitch: the treble clef
-%   with the 'g', the alto clef with the 'c', the bass clef with the
-%   'f', etc.  The shape of each clef character defines a vertical
-%   position that is assumed to represent this pitch.  For the treble
-%   clef, it is the vertical position of the center of the spiral
-%   ending that represents the 'g' pitch.  For the bass clef, it is
-%   the center between the two fat dots that define the vertical
-%   position of the 'f' pitch.  For the alto clef, it is the vertical
-%   center of the clef that is aligned with the 'c' pitch.  For each
-%   clef character, this center should be vertically aligned with the
-%   point (0, 0).  The horizontal alignment of each clef character
-%   should be such that the vertical line through the point (0, 0)
-%   touches the left-most edge of the clef.
-%
-%   TODO: document exact_center
-%
-% set_char_box() conventions:
-%
-% * breapth: Ignored (as far as I know).  Should be set to 0.
-%
-% * width: Should match the head's width.
-%
-% * depth: Should match the bottom edge of the head.  Affects vertical
-%   collision handling.
-%
-% * height: Should match the top edge of the head.  Affects vertical
-%   collision handling.
-%
-
-
-%%%%%%%%
-%
-%
-%
-% Editio Vaticana
-%
-%
-%
-def draw_vaticana_do_clef(expr exact_center, reduction) = 
-	save reduced_il;
-
-	reduced_il# = staff_space# * reduction;
-	set_char_box(0 - xpart exact_center,
-		     0.5reduced_il# + xpart exact_center,
-		     0.8reduced_il# - ypart exact_center,
-		     0.8reduced_il# + ypart exact_center);
-
-	define_pixels(reduced_il);
-
-	pickup pencircle xscaled 0.6linethickness yscaled 0.6 reduced_il;
-
-	save za, zb, zc, zd, ze, zf;
-	pair za, zb, zc, zd, ze, zf;
-
-	save xoffs, yoffs;
-	xoffs# = xpart exact_center;
-	yoffs# = ypart exact_center;
-	define_pixels(xoffs, yoffs);
-
-	rt  za = (xoffs + 0.50reduced_il, yoffs - .45reduced_il);
-	    zb = (xoffs + 0.25reduced_il, yoffs - .50reduced_il);
-	lft zc = (xoffs + 0.00reduced_il, yoffs - .25reduced_il);
-	lft zd = (xoffs + 0.00reduced_il, yoffs + .25reduced_il);
-	    ze = (xoffs + 0.25reduced_il, yoffs + .50reduced_il);
-	rt  zf = (xoffs + 0.50reduced_il, yoffs + .45reduced_il);
-	draw za .. zb .. zc --	% lower punctum
-	     zd .. ze .. zf;	% upper punctum
-enddef;
-
-
-fet_beginchar("Ed. Vat. do clef", "vaticana_do", "vatdoclef")
-	if test = 1:
-		draw_staff(-1,3, 0.0);
-	fi;
-	draw_vaticana_do_clef((0,0), 1.0);
-fet_endchar;
-fet_beginchar("Ed. Vat. do clef", "vaticana_do_change", "vatcdoclef")
-	draw_vaticana_do_clef((0,0), 1.0); % no reduction
-fet_endchar;
-
-
-def draw_vaticana_fa_clef(expr exact_center, reduction) = 
-
-	save reduced_il, z;
-	reduced_il# = staff_space# * reduction;
-	define_pixels(reduced_il);
-
-	save za, zb, zc, zd, ze;
-	pair za, zb, zc, zd, ze;
-
-	save xoffs, yoffs;
-	xoffs# = xpart exact_center;
-	yoffs# = ypart exact_center;
-	define_pixels(xoffs, yoffs);
-
-	%left-handed punctum
-	pickup pencircle xscaled 0.6linethickness yscaled 0.5reduced_il;
-	lft za = (xoffs + 0.00reduced_il, xoffs + 0.00reduced_il);
-	    zb = (xoffs + 0.25reduced_il, xoffs + 0.05reduced_il);
-	rt  zc = (xoffs + 0.50reduced_il, xoffs - 0.05reduced_il);
-	draw za .. zb .. zc;
-
-	%stem
-	pickup pencircle scaled 0.6linethickness;
-	xpart zc = xpart zd = xpart ze;
-	ypart zd = yoffs = bot ypart ze + 1.5reduced_il;
-	draw zd -- ze;
-
-	%right-handed puncta as in do clef
-	draw_vaticana_do_clef(exact_center + (0.55reduced_il#, 0), reduction);
-
-	set_char_box(0 - xpart exact_center,
-		     1.05reduced_il# + xpart exact_center,
-		     1.5reduced_il# - ypart exact_center,
-		     0.8reduced_il# + ypart exact_center);
-enddef;
-
-
-fet_beginchar("Ed. Vat. fa clef", "vaticana_fa", "vatfaclef")
-	if test = 1:
-		draw_staff(-1,3, 0.0);
-	fi;
-	draw_vaticana_fa_clef((0,0), 1.0);
-fet_endchar;
-fet_beginchar("Ed. Vat. fa clef", "vaticana_fa_change", "vatcfaclef")
-	draw_vaticana_fa_clef((0,0), 1.0); % no reduction
-fet_endchar;
-
-%%%%%%%%
-%
-%
-%
-% Editio Medicaea
-%
-%
-%
-def draw_medicaea_do_clef(expr exact_center, reduction) = 
-	save reduced_il, reduced_slt;
-	reduced_il# = staff_space# * reduction;
-	reduced_slt# = linethickness# * reduction;
-	define_pixels(reduced_il);
-	define_pixels(reduced_slt);
-
-	save flag_height;
-	flag_height# = 0.5 reduced_il#;
-	define_pixels(flag_height);
-
-	save xoffs, yoffs;
-	xoffs# = xpart exact_center;
-	yoffs# = ypart exact_center;
-	define_pixels(xoffs, yoffs);
-
-	%upper flag
-	save za, zb;
-	pair za, zb;
-	pickup pencircle xscaled reduced_slt yscaled flag_height;
-	xoffs = lft xpart za = rt xpart zb - reduced_il;
-	ypart za = yoffs + 0.5 (reduced_il - flag_height - staff_space);
-	ypart zb = ypart za - reduced_il + flag_height;
-	draw za -- zb;
-
-	%lower flag
-	save za, zb;
-	pair za, zb;
-	pickup pencircle xscaled reduced_slt yscaled flag_height;
-	xoffs = lft xpart za = rt xpart zb - reduced_il;
-	ypart za = yoffs + 0.5 (reduced_il - flag_height + staff_space);
-	ypart zb = ypart za - reduced_il + flag_height;
-	draw za -- zb;
-
-	%stem
-	save za, zb;
-	pair za, zb;
-	pickup pencircle scaled reduced_slt;
-	lft xpart za = lft xpart zb = xoffs;
-	yoffs = top ypart zb - 1.5 reduced_il = bot ypart za + 1.5 reduced_il;
-	draw za -- zb;
-
-	set_char_box(0 - xpart exact_center,
-		     1.0reduced_il# + xpart exact_center,
-		     1.5reduced_il# - ypart exact_center,
-		     1.5reduced_il# + ypart exact_center);
-enddef;
-
-
-fet_beginchar("Ed. Med. do clef", "medicaea_do", "meddoclef")
-	if test = 1:
-		draw_staff(-1,3, 0.0);
-	fi;
-	draw_medicaea_do_clef((0,0), 1.0);
-fet_endchar;
-fet_beginchar("Ed. Med. do clef", "medicaea_do_change", "cmeddoclef")
-	draw_medicaea_do_clef((0,0), .8);
-fet_endchar;
-
-
-def draw_medicaea_fa_clef(expr exact_center, reduction) = 
-	% inspired by Regensburger Edition of Medicaea (1885/86), in:
-	% MGG, volume 2, col. 1327 ("Choralreform"), fig. 2.
-
-	save reduced_il, reduced_slt;
-	reduced_il# = staff_space# * reduction;
-	reduced_slt# = linethickness# * reduction;
-	define_pixels(reduced_il);
-	define_pixels(reduced_slt);
-
-	save za, zb, zc, zd, ze;
-	pair za, zb, zc, zd, ze;
-
-	save xoffs, yoffs;
-	xoffs# = xpart exact_center;
-	yoffs# = ypart exact_center;
-	define_pixels(xoffs, yoffs);
-
-	%stem
-	pickup pencircle scaled linethickness;
-	xpart za = xpart zb = xoffs + 0.4reduced_il;
-	ypart za = yoffs = bot ypart zb + 1.5reduced_il;
-	draw za -- zb;
-
-	%left-handed punctum
-	pickup pencircle xscaled reduced_slt yscaled reduced_il;
-	lft zc = (xoffs, yoffs);
-	zd = lft zc + (0.4reduced_il, 0);
-	draw zc -- zd;
-
-	%right-handed puncta as in do clef
-	draw_medicaea_do_clef(exact_center + (0.7reduced_il#, 0), reduction);
-
-	set_char_box(0 - xpart exact_center,
-		     1.7reduced_il# + xpart exact_center,
-		     1.5reduced_il# - ypart exact_center,
-		     1.5reduced_il# + ypart exact_center);
-enddef;
-
-
-fet_beginchar("Ed. Med. fa clef", "medicaea_fa", "medfaclef")
-	if test = 1:
-		draw_staff(-1,3, 0.0);
-	fi;
-	draw_medicaea_fa_clef((0,0), 1.0);
-fet_endchar;
-fet_beginchar("Ed. Med. fa clef", "medicaea_fa_change", "cmedfaclef")
-	draw_medicaea_fa_clef((0,0), .8);
-fet_endchar;
-
-
-%%%%%%%%
-%
-%
-%
-% Mensural Notation
-%
-%
-%
-
-%
-% width:        interval from left end to right end
-% height:       interval from bottom of lower beam to top of upper beam
-% exact_center: the coordinates of the vertical center point of the
-%               left edge.
-%
-def draw_brevis(expr exact_center, bwidth, bheight, blinethickness) =
-
-	save brevis_width, brevis_height, linethickness;
-	brevis_width# = bwidth; brevis_height# = bheight;
-	linethickness# = blinethickness;
-
-	save beam_width, beam_height, serif_size, serif_protrude, hole_height;
-	beam_width# = 1.4 linethickness#;
-	hole_height# = 3 linethickness#;
-	2 beam_height# + hole_height# = brevis_height#;
-	serif_size# = (hole_height# - linethickness#)/2;
-	serif_protrude# = 1.5 serif_size#;
-
-	save xoffs, yoffs;
-	xoffs# = xpart exact_center;
-	yoffs# = ypart exact_center;
-	define_pixels(xoffs, yoffs);
-
-	define_pixels(brevis_width, brevis_height, linethickness);
-	define_pixels(beam_width, beam_height, serif_size, serif_protrude);
-
-	penpos1(beam_width, 0);
-	penpos2(beam_width, 0);
-	penpos3(beam_height, 90);
-	penpos4(beam_height, 90);
-	penpos5(beam_width, 180);
-	z1l = (xoffs, yoffs);
-	z2l = z1l + (0, -linethickness);
-	z3r = z2r + serif_size*(1,-1);
-	y4r = y3r;
-	x4l = x1l + brevis_width/2;
-	z5l = z3l + (-serif_size, -serif_protrude);
-	fill z1r -- z1l -- z5r{down} .. z5l{up} .. z3l{right}
-		-- z4l -- z4r -- z3r{left} .. z2r{up} -- cycle;
-
-	addto currentpicture also currentpicture
-		yscaled -1 shifted (0, 2*yoffs);
-
-	pickup pencircle scaled linethickness;
-	top y6 = yoffs + brevis_height/2;
-	bot y7 = yoffs - brevis_height/2;
-	lft x6 = lft x7 = xoffs;
-	draw z6 -- z7;
-
-	addto currentpicture also currentpicture
-		xscaled -1 shifted (2xoffs + brevis_width, 0);
-enddef;
-
-
-def draw_neo_mensural_c_clef(expr exact_center, reduction) = 
-	save reduced_il, reduced_slt, stem_width;
-	reduced_il# = staff_space# * reduction;
-	reduced_slt# = linethickness# * reduction;
-	stem_width# = 1.4 reduced_slt#;
-	define_pixels(reduced_il, reduced_slt, stem_width);
-
-	draw_brevis(exact_center + (3reduced_slt#, 0),
-		    2reduced_il#, reduced_il#, reduced_slt#);
-
-	save xoffs, yoffs;
-	xoffs# = xpart exact_center;
-	yoffs# = ypart exact_center;
-	define_pixels(xoffs, yoffs);
-
-	pickup pencircle xscaled stem_width yscaled blot_diameter;
-	lft x8  = lft x9  = xoffs;
-	lft x10 = lft x11 = lft x8  + 3reduced_slt;
-	rt  x12 = rt  x13 = lft x10 + 2reduced_il;
-	rt  x14 = rt  x15 = rt  x12 + 3reduced_slt;
-	top y9 - bot y8 = 4reduced_il;
-	top y9 + bot y8 = 2yoffs;
-	y12 = y14 = y10 = y8; y13 = y15 = y11 = y9;
-	draw z8 -- z9;
-	draw z10 -- z11;
-	draw z12 -- z13;
-	draw z14 -- z15;
-
-	set_char_box(0 - xpart exact_center,
-		     2reduced_il# + 6reduced_slt# + xpart exact_center,
-		     2reduced_il# - ypart exact_center,
-		     2reduced_il# + ypart exact_center);
-enddef;
-
-
-fet_beginchar("neo-mensural c clef", "neo_mensural_c", "neomenscclef")
-	if test = 1:
-		draw_staff(-1,3, 0.0);
-	fi;
-	draw_neo_mensural_c_clef((0,0), 1.0);
-fet_endchar;
-fet_beginchar("neo-mensural c clef", "neo_mensural_c_change", "cneomenscclef")
-	draw_neo_mensural_c_clef((0,0), .8);
-fet_endchar;
-
-
-def draw_petrucci_c_clef(expr exact_center, flare_align, reduction) = 
-	% inspired by Josquin Desprez, "Stabat Mater", Libro tertio,
-	% 1519, printed by Petrucci, in: MGG, volume 7, Table 11.
-	% Also by Petrucci's Canti C, Venedig 1503.  In: MGG, volume
-	% 9, p. 1681/1682.
-
-	save reduced_il, reduced_slt;
-	reduced_il# = staff_space# * reduction;
-	reduced_slt# = linethickness# * reduction;
-	define_pixels(reduced_il);
-
-	draw_brevis(exact_center + (0, 0.5staff_space#),
-		    reduced_il#, reduced_il#, reduced_slt#);
-
-	addto currentpicture also currentpicture shifted (0, -staff_space);
-
-	save half_reduced_il, left_depth, left_height;
-	half_reduced_il# = staff_space# * sqrt(reduction);
-	left_height# = half_reduced_il# * min(3.2, 3.2 + 0.2 + flare_align);
-	left_depth# = half_reduced_il# * min(3.2, 3.2 + 0.2 - flare_align);
-
-	define_pixels(half_reduced_il);
-	define_pixels(left_depth, left_height);
-
-	save xoffs, yoffs;
-	xoffs# = xpart exact_center;
-	yoffs# = ypart exact_center;
-	define_pixels(xoffs, yoffs);
-
-	pickup pencircle xscaled 1.4 linethickness yscaled blot_diameter;
-	lft x8 = lft x9 = xoffs;
-	top y8 = yoffs + left_height;
-	bot y9 = yoffs - left_depth;
-	draw z8 .. z9;
-
-	rt x10 = rt x11 = xoffs + brevis_width;
-	y10 = min(y8 - 0.2*half_reduced_il, yoffs + 2.2half_reduced_il);
-	y11 = max(y9 + 0.2*half_reduced_il, yoffs - 2.2half_reduced_il);
-	draw z10 .. z11;
-
-	set_char_box(0 - xpart exact_center,
-		     reduced_il# + xpart exact_center,
-		     left_depth# - ypart exact_center,
-		     left_height# + ypart exact_center);
-enddef;
-
-
-fet_beginchar("petrucci c1 clef", "petrucci_c1", "petruccic1clef")
-	if test = 1:
-		draw_staff(-1,3, 0.0);
-	fi;
-	draw_petrucci_c_clef((0,0), +2, 1.0);
-fet_endchar;
-fet_beginchar("petrucci c1 clef", "petrucci_c1_change", "cpetruccic1clef")
-	draw_petrucci_c_clef((0,0), +2, .8);
-fet_endchar;
-
-fet_beginchar("petrucci c2 clef", "petrucci_c2", "petruccic2clef")
-	if test = 1:
-		draw_staff(-1,3, 0.0);
-	fi;
-	draw_petrucci_c_clef((0,0), +1, 1.0);
-fet_endchar;
-fet_beginchar("petrucci c2 clef", "petrucci_c2_change", "cpetruccic2clef")
-	draw_petrucci_c_clef((0,0), +1, .8);
-fet_endchar;
-
-fet_beginchar("petrucci c3 clef", "petrucci_c3", "petruccic3clef")
-	if test = 1:
-		draw_staff(-1,3, 0.0);
-	fi;
-	draw_petrucci_c_clef((0,0), 0, 1.0);
-fet_endchar;
-fet_beginchar("petrucci c3 clef", "petrucci_c3_change", "cpetruccic3clef")
-	draw_petrucci_c_clef((0,0), 0, .8);
-fet_endchar;
-
-fet_beginchar("petrucci c4 clef", "petrucci_c4", "petruccic4clef")
-	if test = 1:
-		draw_staff(-1,3, 0.0);
-	fi;
-	draw_petrucci_c_clef((0,0), -1, 1.0);
-fet_endchar;
-fet_beginchar("petrucci c4 clef", "petrucci_c4_change", "cpetruccic4clef")
-	draw_petrucci_c_clef((0,0), -1, .8);
-fet_endchar;
-
-fet_beginchar("petrucci c5 clef", "petrucci_c5", "petruccic5clef")
-	if test = 1:
-		draw_staff(-1,3, 0.0);
-	fi;
-	draw_petrucci_c_clef((0,0), -2, 1.0);
-fet_endchar;
-fet_beginchar("petrucci c5 clef", "petrucci_c5_change", "cpetruc5iceclef")
-	draw_petrucci_c_clef((0,0), -2, .8);
-fet_endchar;
-
-
-def draw_mensural_c_clef(expr exact_center, reduction) =
-	% inspired by Ockeghem, "Missa Prolationum", in: MGG, volume
-	% 9, table 94.
-
-	save reduced_il;
-	reduced_il# = staff_space# * reduction;
-	draw_brevis(exact_center + (0, 0.5staff_space#),
-		    2reduced_il#, 0.8staff_space#, 0.8linethickness#);
-	define_pixels(reduced_il);
-	addto currentpicture also currentpicture shifted (0, -staff_space);
-	addto currentpicture also currentpicture shifted (0, -staff_space);
-
-	save half_reduced_il;
-	half_reduced_il# = staff_space# * sqrt(reduction);
-	define_pixels(half_reduced_il);
-
-	save xoffs, yoffs;
-	xoffs# = xpart exact_center;
-	yoffs# = ypart exact_center;
-	define_pixels(xoffs, yoffs);
-
-	pickup pencircle xscaled 1.4 linethickness yscaled blot_diameter;
-	lft x8 = lft x9 = xoffs;
-	top y8 = yoffs + 2.2 half_reduced_il;
-	bot y9 = yoffs - 2.2 half_reduced_il - staff_space;
-	draw z8 .. z9;
-
-	rt x10 = rt x11 = xoffs + brevis_width;
-	y10 = yoffs + 1.4half_reduced_il;
-	y11 = yoffs - 1.4half_reduced_il - staff_space;
-	draw z10 .. z11;
-
-	set_char_box(0 - xpart exact_center,
-		     2reduced_il# + xpart exact_center,
-		     2.2 half_reduced_il# + staff_space# - 2 ypart exact_center,
-		     2.2 half_reduced_il# + 2 ypart exact_center);
-enddef;
-
-
-fet_beginchar("mensural c clef", "mensural_c", "menscclef")
-	if test = 1:
-		draw_staff(-1,3, 0.0);
-	fi;
-	draw_mensural_c_clef((0,0), 1.0);
-fet_endchar;
-fet_beginchar("mensural c clef", "mensural_c_change", "cmenscclef")
-	draw_mensural_c_clef((0,0), .8);
-fet_endchar;
-
-def draw_diamond(expr exact_center, reduction) =
-	save stem_width, reduced_nht, holeheight, beamheight;
-	save rh_height, rh_width;
-
-	stem_width# = 1.4 reduced_slt#;
-	reduced_nht# = noteheight# * reduction;
-	holeheight# = 3 reduced_slt#;
-	beamheight# = 0.4(reduced_nht# - holeheight#);
-
-	rh_height# = 1.2 staff_space# * reduction;
-	rh_width# / rh_height# = tand(30);
-
-	define_pixels(beamheight);
-	define_pixels(stem_width);
-	define_pixels(rh_height);
-	define_pixels(rh_width);
-
-	save xoffs, yoffs;
-	xoffs# = xpart exact_center;
-	yoffs# = ypart exact_center;
-	define_pixels(xoffs, yoffs);
-
-	pickup pencircle
-		xscaled beamheight
-		yscaled stem_width
-		rotated 45;
-
-	draw
-		(xoffs - rh_width/2, yoffs) --
-		(xoffs, yoffs + rh_height/2) --
-		(xoffs + rh_width/2, yoffs) --
-		(xoffs, yoffs - rh_height/2) --
-		cycle;
-enddef;
-
-def draw_petrucci_f_clef(expr exact_center, reduction) =
-	% inspired by L'homme arme super voces musicales in Misse
-	% Josquin, 1502, Petrucci, in: MGG, volume 7, col. 200; also
-	% inspired by Gaspar van Weerbeke, "Virgo Maria" (1502), in:
-	% MGG, volume 9, col. 653 ("Motette"), fig. 3.; also by Andr'e
-	% Campra, "Entr'ee des s'er'enades" (1710), in: MGG, volume 2,
-	% col. 1649 ("Contredanse"), fig. 2.
-	%
-
-	save interline, reduced_il, reduced_slt;
-	interline# = staff_space#;
-	reduced_il# = staff_space# * reduction;
-	reduced_slt# = linethickness# * reduction;
-
-	draw_brevis(exact_center, reduced_il#, reduced_il#, reduced_slt#);
-	draw_diamond(exact_center + (1.6interline#*reduction, interline#/2),
-		     reduction);
-	draw_diamond(exact_center + (1.6interline#*reduction, -interline#/2),
-		     reduction);
-
-	define_pixels(interline);
-	define_pixels(reduced_il);
-	define_pixels(reduced_slt);
-
-	save stem_width;
-	stem_width# = 1.4 reduced_slt#;
-	define_pixels(stem_width);
-
-	save xoffs, yoffs;
-	xoffs# = xpart exact_center;
-	yoffs# = ypart exact_center;
-
-	define_pixels(xoffs, yoffs);
-
-	% brevis stem
-	pickup pencircle xscaled stem_width yscaled blot_diameter;
-	rt z8 = (xoffs + reduced_il, yoffs);
-	z9 = z8 + (0, -4reduced_il);
-	draw z8 .. z9;
-
-	% upper diamond's stem
-	pickup pencircle xscaled stem_width yscaled blot_diameter;
-	z10 = (xoffs + 1.6interline*reduction + stem_width/2,
-	  yoffs + interline*reduction);
-	top z11 = z10 + (0, 1.5interline*reduction);
-	draw z10 .. z11;
-
-	% lower diamond's stem
-	pickup pencircle xscaled stem_width yscaled blot_diameter;
-	z12 = (xoffs + 1.6interline*reduction - stem_width/2,
-	  yoffs - interline*reduction);
-	bot z13 = z12 + (0, -3.5interline*reduction);
-	draw z12 .. z13;
-
-	save reduced_il, rh_height, rh_width;
-	reduced_il# = staff_space# * reduction;
-	rh_height# = 1.2reduced_il#;
-	rh_width# / rh_height# = tand(30);
-	set_char_box(0 - xpart exact_center,
-		     1.6interline#*reduction + 0.5rh_width# + xpart exact_center,
-		     4.5*interline#*reduction - ypart exact_center,
-		     2.5*interline#*reduction + ypart exact_center);
-enddef;
-
-
-fet_beginchar("petrucci f clef", "petrucci_f", "petruccifclef")
-	if test = 1:
-		draw_staff(-1,3, 0.0);
-	fi;
-	draw_petrucci_f_clef((0,0), 1.0);
-fet_endchar;
-fet_beginchar("petrucci f clef", "petrucci_f_change", "cpetruccifclef")
-	draw_petrucci_f_clef((0,0), .8);
-fet_endchar;
-
-
-def draw_mensural_f_clef(expr exact_center, reduction) =
-	%
-	% inspired by Philippe le Duc, "Dite Signori" (1590), in: MGG,
-	% volume 3, col. 848 ("Duc"); also by John Dowland, "The First
-	% Booke of Songes" (1597), in: MGG, volume 3, col. 721
-	% ("Dowland"), fig. 3.
-
-	save width, reduced_slt, stem_width, dot_diameter;
-
-	width# = 1.2staff_space# * reduction;
-	reduced_slt# = linethickness# * reduction;
-	stem_width# = 1.4 reduced_slt#;
-	dot_diameter# = 0.1 reduction * staff_space#;
-	define_pixels(width, stem_width, staff_space, dot_diameter);
-
-	save xoffs, yoffs;
-	xoffs# = xpart exact_center;
-	yoffs# = ypart exact_center;
-	define_pixels(xoffs, yoffs);
-
-	pickup pencircle
-		xscaled 0.2width
-		yscaled stem_width
-		rotated 45;
-
-	% half circle
-	lft z5 = (0, 0);
-	draw	halfcircle scaled width rotated -90
-		shifted (z5-(xoffs, yoffs));
-
-
-	% upper dot
-	rt x2 = xoffs + width;
-	top y1 = yoffs + 0.5width;
-	z2 - z1 = (dot_diameter, -dot_diameter);
-	draw z1 -- z2;
-
-	% lower dot
-	x3 = x1;
-	top y1 - bot y4 = width;
-	z4 - z3 = (dot_diameter, -dot_diameter);
-	draw z3 -- z4;
-
-	set_char_box(0 - xpart exact_center,
-		     width# + xpart exact_center,
-		     0.5width# - ypart exact_center,
-		     0.5width# + ypart exact_center);
-enddef;
-
-fet_beginchar("mensural f clef", "mensural_f", "mensfclef")
-	if test = 1:
-		draw_staff(-1,3, 0.0);
-	fi;
-	draw_mensural_f_clef((0,0), 1.0);
-fet_endchar;
-fet_beginchar("mensural f clef", "mensural_f_change", "cmensfclef")
-	draw_mensural_f_clef((0,0), .8);
-fet_endchar;
-
-
-def draw_petrucci_g_clef(expr exact_center, reduction) =
-	% inspired by Josquin Desprez, "Stabat Mater", Libro tertio,
-	% 1519, printed by Petrucci, in: MGG, volume 7, Table 11.
-
-	save reduced_il, reduced_slt;
-
-	reduced_il# = staff_space# * reduction;
-	reduced_slt# = linethickness# * reduction;
-	define_pixels(reduced_il, reduced_slt);
-
-	set_char_box(0 - xpart exact_center,
-		     1.25 reduced_il# + xpart exact_center,
-		     0.65 reduced_il# - ypart exact_center,
-		     3.80 reduced_il# + ypart exact_center);
-
-	save za, zb, zc, zd, ze, zf, zg, zh, zi, zj;
-	pair za, zb, zc, zd, ze, zf, zg, zh, zi, zj;
-
-	save xoffs, yoffs;
-	xoffs# = xpart exact_center;
-	yoffs# = ypart exact_center;
-	define_pixels(xoffs, yoffs);
-
-	pickup pencircle
-		xscaled 0.50 reduced_slt
-		yscaled 0.22 reduced_il
-		rotated -35;
-
-	lft za = (xoffs + 0.80 reduced_il, yoffs + 0.00 reduced_il);
-	lft zb = (xoffs + 1.00 reduced_il, yoffs + 1.20 reduced_il);
-	lft zc = (xoffs + 0.70 reduced_il, yoffs + 2.00 reduced_il);
-	lft zd = (xoffs + 0.30 reduced_il, yoffs + 3.00 reduced_il);
-	lft ze = (xoffs + 0.80 reduced_il, yoffs + 3.70 reduced_il);
-	lft zf = (xoffs + 1.00 reduced_il, yoffs + 3.00 reduced_il);
-	lft zg = (xoffs + 0.60 reduced_il, yoffs + 2.00 reduced_il);
-	lft zh = (xoffs + 0.30 reduced_il, yoffs + 1.70 reduced_il);
-	lft zi = (xoffs + 0.00 reduced_il, yoffs + 0.75 reduced_il);
-	lft zj = (xoffs + 0.20 reduced_il, yoffs + 0.60 reduced_il);
-
-	draw za{-1,2} .. zb .. zc .. zd .. ze .. zf .. zg .. zh .. zi .. zj;
-
-	save za, zb, zc, zd, ze, zf;
-	pair za, zb, zc, zd, ze, zf;
-
-	pickup pencircle
-		xscaled 0.75 reduced_slt
-		yscaled 0.33 reduced_il
-		rotated -35;
-
-	lft za = (xoffs + 1.05 reduced_il, yoffs + 0.45 reduced_il);
-	lft zb = (xoffs + 0.55 reduced_il, yoffs + 0.45 reduced_il);
-	lft zc = (xoffs + 0.55 reduced_il, yoffs - 0.45 reduced_il);
-	lft zd = (xoffs + 1.05 reduced_il, yoffs - 0.45 reduced_il);
-	lft ze = (xoffs + 1.10 reduced_il, yoffs + 0.00 reduced_il);
-	lft zf = (xoffs + 0.80 reduced_il, yoffs + 0.00 reduced_il);
-
-	draw za .. zb .. zc .. zd .. {up}ze -- zf;
-enddef;
-
-
-fet_beginchar("petrucci g clef", "petrucci_g", "petruccigclef")
-	if test = 1:
-		draw_staff(-1,3, 0.0);
-	fi;
-	draw_petrucci_g_clef((0,0), 1.0);
-fet_endchar;
-fet_beginchar("petrucci g clef", "petrucci_g_change", "cpetruccigclef")
-	draw_petrucci_g_clef((0,0), .8);
-fet_endchar;
-
-
-def draw_mensural_g_clef(expr exact_center, reduction) =
-  % TODO: Rewrite me.  The former mensural g clef looked ugly, and the
-  % code was removed when it broke for small font sizes after some
-  % global changes in the font.  Currently, the character is mapped to
-  % a copy of the petrucci g clef (which, after all, *is* a mensural g
-  % clef, but not the one that we have in mind here). -- jr
-  %
-  % Possible sources of inspiration for this clef include: Francisco
-  % Guerrero, "Lib. 1.  Missarum" (1566), in: MGG, volume 3, col. 858
-  % ("Ducis"); Stefano Fabri, "Quam speciosa veteranis" (1611), in:
-  % MGG, volume 3, col. 1698 ("Fabri"); Philippus Dulichius,
-  % "Fasciculus novus ..."  (1598), in: MGG, volume 3, col. 919
-  % ("Dulichius"), fig. 1; Noe Faignient, "Ic sal de Heer myn God
-  % gebenedye" (1568), in: MGG, volume 3, col. 1735 ("Faignient").
-enddef;
-
-%
-% FIXME: This clef is preliminarily mapped to the petrucci g clef
-% until the code for the mensural g clef will be rewritten.
-%
-fet_beginchar("mensural g clef", "mensural_g", "mensgclef")
-	if test = 1:
-		draw_staff(-1,3, 0.0);
-	fi;
-	draw_petrucci_g_clef((0,0), 1.0);
-fet_endchar;
-fet_beginchar("mensural g clef", "mensural_g_change", "cmensgclef")
-	draw_petrucci_g_clef((0,0), .8);
-fet_endchar;
-
-
-
-%%%%%%%%
-%
-%
-%
-% Hufnagel
-%
-%
-%
-def draw_hufnagel_do_clef(expr exact_center, reduction) =
-	%
-	% inspired by Graduale of Friedrich Zollner (1442), in: MGG,
-	% volume 9, col. 1413 ("Neustift"), fig. 1.
-	%
-	save reduced_il;
-
-	reduced_il# = staff_space# * reduction;
-
-	define_pixels(reduced_il);
-
-	pickup pencircle
-		xscaled (0.60reduced_il)
-		yscaled (0.10reduced_il)
-		rotated 40;
-	save za, zb, zc, zd, ze, zf;
-	pair za, zb, zc, zd, ze, zf;
-
-	save xoffs, yoffs;
-	xoffs# = xpart exact_center;
-	yoffs# = ypart exact_center;
-	define_pixels(xoffs, yoffs);
-
-	za = (xoffs + 0.90reduced_il, yoffs + .45reduced_il);
-	zb = (xoffs + 0.80reduced_il, yoffs + .45reduced_il);
-	zc = (xoffs + 0.50reduced_il, yoffs + .60reduced_il);
-	zd = (xoffs + 0.20reduced_il, yoffs + .45reduced_il);
-	ze = (xoffs + 0.20reduced_il, yoffs - .45reduced_il);
-	zf = (xoffs + 0.40reduced_il, yoffs - .55reduced_il);
-	draw za .. zb .. zc -- zd -- ze -- zf;
-
-	set_char_box(0 - xpart exact_center,
-		     1.10reduced_il# + xpart exact_center,
-		     0.70reduced_il# - ypart exact_center,
-		     0.75reduced_il# + ypart exact_center);
-enddef;
-
-
-fet_beginchar("Hufnagel do clef", "hufnagel_do", "hufnageldoclef")
-	if test = 1:
-		draw_staff(-1,3, 0.0);
-	fi;
-	draw_hufnagel_do_clef((0,0), 1.0);
-fet_endchar;
-fet_beginchar("Hufnagel do clef", "hufnagel_do_change", "chufnageldoclef")
-	draw_hufnagel_do_clef((0,0), .8);
-fet_endchar;
-
-
-def draw_hufnagel_fa_clef(expr exact_center, reduction) =
-	%
-	% inspired by Bamberger Manuscript (15th century), in:
-	% MGG, volume 2, table 59.
-	%
-	save reduced_il;
-
-	reduced_il# = staff_space# * reduction;
-
-	define_pixels(reduced_il);
-
-	pickup pencircle
-		xscaled (0.60reduced_il)
-		yscaled (0.10reduced_il)
-		rotated 40;
-	save za, zb, zc, zd, ze, zf;
-	pair za, zb, zc, zd, ze, zf;
-
-	save xoffs, yoffs;
-	xoffs# = xpart exact_center;
-	yoffs# = ypart exact_center;
-	define_pixels(xoffs, yoffs);
-
-	za = (xoffs + 0.90reduced_il, yoffs + 0.70reduced_il);
-	zb = (xoffs + 0.80reduced_il, yoffs + 0.70reduced_il);
-	zc = (xoffs + 0.50reduced_il, yoffs + 0.85reduced_il);
-	zd = (xoffs + 0.20reduced_il, yoffs + 0.70reduced_il);
-	ze = (xoffs + 0.20reduced_il, yoffs - 1.10reduced_il);
-	draw za .. zb .. zc -- zd -- ze;
-
-	save zg, zh, zi, zj;
-	pair zg, zh, zi, zj;
-
-	zg = (xoffs + 0.90reduced_il, yoffs - 0.05reduced_il);
-	zh = (xoffs + 0.80reduced_il, yoffs - 0.05reduced_il);
-	zi = (xoffs + 0.50reduced_il, yoffs + 0.10reduced_il);
-	zj = (xoffs + 0.20reduced_il, yoffs - 0.05reduced_il);
-	draw zg .. zh .. zi -- zj;
-
-	set_char_box(0 - xpart exact_center,
-		     1.20reduced_il# + xpart exact_center,
-		     1.15reduced_il# - ypart exact_center,
-		     1.00reduced_il# + ypart exact_center);
-enddef;
-
-
-fet_beginchar("Hufnagel fa clef", "hufnagel_fa", "hufnagelfaclef")
-	if test = 1:
-		draw_staff(-1,3, 0.0);
-	fi;
-	draw_hufnagel_fa_clef((0,0), 1.0);
-fet_endchar;
-fet_beginchar("Hufnagel fa clef", "hufnagel_fa_change", "chufnagelfaclef")
-	draw_hufnagel_fa_clef((0,0), .8);
-fet_endchar;
-
-
-def draw_hufnagel_do_fa_clef(expr exact_center, reduction) =
-	draw_hufnagel_do_clef(exact_center, reduction);
-	draw_hufnagel_fa_clef(exact_center + (0, -2staff_space#), reduction);
-	set_char_box(0 - xpart exact_center,
-		     1.20reduced_il# + xpart exact_center,
-		     1.15reduced_il# + 2staff_space# - ypart exact_center,
-		     0.75reduced_il# + ypart exact_center);
-enddef;
-
-
-fet_beginchar("Hufnagel do/fa clef", "hufnagel_do_fa", "hufnageldofaclef")
-	if test = 1:
-		draw_staff(-1,3, 0.0);
-	fi;
-	draw_hufnagel_do_fa_clef((0,0), 1.0);
-fet_endchar;
-fet_beginchar("Hufnagel do/fa clef", "hufnagel_do_fa_change",
-	      "chufnageldofaclef")
-	draw_hufnagel_do_fa_clef((0,0), .8);
-fet_endchar;
-
-
-fet_endgroup ("clefs")
diff --git a/mf/parmesan-custodes.mf b/mf/parmesan-custodes.mf
deleted file mode 100644
index 12b54bf740..0000000000
--- a/mf/parmesan-custodes.mf
+++ /dev/null
@@ -1,357 +0,0 @@
-% -%-Fundamental-%- -*-Metafont-*-
-% parmesan-custodes.mf -- implement ancient custodes
-% 
-% source file of LilyPond's pretty-but-neat music font
-% 
-% (c) 2000--2004 Juergen Reuter <reuter@ipd.uka.de>
-% 
-
-save black_notehead_width;
-numeric black_notehead_width;
-
-fet_begingroup ("custodes")
-
-%
-% character aligment:
-%
-%   The custos is assumed to be vertically centered around (0, 0).
-%   The left-most edge of the custos should touch the vertical line
-%   that goes though the point (0, 0).
-%
-% set_char_box() conventions:
-%
-% * breapth: Ignored (as far as I know).  Should be set to 0.
-%
-% * width: Should cover the horizontal range of the custos that is to
-%   be printed in the staff.  If the custos has an appendage that is
-%   supposed to reach beyond the right end of the staff, the width
-%   should be set such that the appendage is outside of the char box.
-%
-% * depth: Should match the bottom edge of the custos.  Affects
-%   vertical collision handling.
-%
-% * height: Should match the top edge of the custos.  Affects vertical
-%   collision handling.
-%
-
-save between_staff_lines, on_staff_line, anywhere;
-between_staff_lines = 0;
-on_staff_line = 1;
-anywhere = 2;
-
-save dir_up, dir_down;
-dir_up = 1;
-dir_down = -1;
-
-
-%%%%%%%%
-%
-%
-% Hufnagel style
-%
-%
-
-% parameterized hufnagel custos
-def custos_hufnagel(expr verbose_name, internal_name, ly_name,
-		    direction, staffline_adjustment) =
-
-	fet_beginchar(verbose_name, internal_name, ly_name)
-		save alpha, dalpha, ht, wd, stem_ht, pen_size;
-		ht# = noteheight#;
-		wd#/ht# = 0.6;
-		alpha# = 35;
-		dalpha# = direction*alpha#;
-
-		if staffline_adjustment = between_staff_lines:
-			stem_ht# = 1.00 staff_space#;
-		elseif staffline_adjustment = on_staff_line:
-			stem_ht# = 1.50 staff_space#;
-		else: % staffline_adjustment = anywhere
-			stem_ht# = 1.25 staff_space#;
-		fi;
-		pen_size# = 0.5*sqrt(wd#*wd#+ht#*ht#);
-
-		define_pixels(ht, wd, pen_size, stem_ht);
-		pickup pencircle
-		  xscaled linethickness
-		  yscaled pen_size
-		  rotated -dalpha#;
-
-		if direction = dir_up:
-			top y1 = ht/2;
-			bot y2 = -ht/2;
-		else:
-			bot y1 = -ht/2;
-			top y2 = ht/2;
-		fi;
-		lft x1 = 0;
-		rt  x2 = wd;
-		y3 - y2 = direction*stem_ht;
-		(y3 - y2) = (x3 - x2) * tand(90-dalpha#);
-		draw z1 -- z2 -- z3;
-
-		% The stem is intentionally outside of the char box.
-		if direction > 0:
-			set_char_box(0, wd#, ht#/2, stem_ht#);
-		else:
-			set_char_box(0, wd#, stem_ht#, ht#/2);
-		fi;
-	fet_endchar;
-enddef;
-
-% custos hufnagel, stem up, between staff lines
-custos_hufnagel("Custos Hufnagel", "hufnagel-u0", "hufnagelu0",
-		dir_up, between_staff_lines);
-
-% custos hufnagel, stem up, on staff line
-custos_hufnagel("Custos Hufnagel", "hufnagel-u1", "hufnagelu1",
-		dir_up, on_staff_line);
-
-% custos hufnagel, stem up, anywhere
-custos_hufnagel("Custos Hufnagel", "hufnagel-u2", "hufnagelu2",
-		dir_up, anywhere);
-
-% custos hufnagel, stem down, between staff lines
-custos_hufnagel("Reverse Custos Hufnagel", "hufnagel-d0", "hufnageld0",
-		dir_down, between_staff_lines);
-
-% custos hufnagel, stem down, on staff line
-custos_hufnagel("Reverse Custos Hufnagel", "hufnagel-d1", "hufnageld1",
-		dir_down, on_staff_line);
-
-% custos hufnagel, stem down, anywhere
-custos_hufnagel("Reverse Custos Hufnagel", "hufnagel-d2", "hufnageld2",
-		dir_down, anywhere);
-
-%%%%%%%%
-%
-%
-% Medicaea style
-%
-%
-
-def custos_medicaea(expr verbose_name, internal_name, ly_name,
-		    direction, staffline_adjustment) =
-
-	fet_beginchar(verbose_name, internal_name, ly_name)
-
-		save ht, wd, stem_ht;
-		ht# = noteheight#;
-		wd#/ht# = 0.25;
-
-		if staffline_adjustment = between_staff_lines:
-			stem_ht# = 1.00 staff_space#;
-		elseif staffline_adjustment = on_staff_line:
-			stem_ht# = 1.50 staff_space#;
-		else: % staffline_adjustment = anywhere
-			stem_ht# = 1.25 staff_space#;
-		fi;
-
-		define_pixels(ht, wd, stem_ht);
-
-		pickup pencircle xscaled 0.6linethickness yscaled ht;
-		lft x1 = 0;
-		y1 = 0;
-		rt x2 = wd;
-		y2 = y1;
-		draw z1 -- z2;
-
-		pickup pencircle scaled 0.6linethickness;
-		rt x3 = wd;
-		y3 = 0;
-		x4 = x3;
-		y4 = direction*stem_ht;
-		draw z3 -- z4;
-
-		if direction > 0:
-			set_char_box(0, wd#, ht#/2, stem_ht#);
-		else:
-			set_char_box(0, wd#, stem_ht#, ht#/2);
-		fi;
-	fet_endchar;
-enddef;
-
-% custos medicaea, stem up, between staff lines
-custos_medicaea("Custos Med.", "medicaea-u0", "medicaeau0",
-		dir_up, between_staff_lines);
-
-% custos medicaea, stem up, on staff line
-custos_medicaea("Custos Med.", "medicaea-u1", "medicaeau1",
-		dir_up, on_staff_line);
-
-% custos medicaea, stem up, anywhere
-custos_medicaea("Custos Med.", "medicaea-u2", "medicaeau2",
-		dir_up, anywhere);
-
-% custos medicaea, stem down, between staff lines
-custos_medicaea("Reverse Custos Med.", "medicaea-d0", "medicaead0",
-		dir_down, between_staff_lines);
-
-% custos medicaea, stem down, on staff line
-custos_medicaea("Reverse Custos Med.", "medicaea-d1", "medicaead1",
-		dir_down, on_staff_line);
-
-% custos medicaea, stem down, anywhere
-custos_medicaea("Reverse Custos Med.", "medicaea-d2", "medicaead2",
-		dir_down, anywhere);
-
-%%%%%%%%
-%
-%
-% Editio Vaticana style
-%
-%
-
-def custos_vaticana(expr verbose_name, internal_name, ly_name,
-		    direction, staffline_adjustment) =
-
-	fet_beginchar(verbose_name, internal_name, ly_name)
-		save ht, wd, u_offs, l_offs, stem_size, stem_end;
-		save pen_ht, l_shift, curve_ht, bend_ht;
-		ht# = noteheight#;
-		wd# = 0.24ht#;
-
-		if staffline_adjustment = between_staff_lines:
-			stem_size# = 1.00;
-		elseif staffline_adjustment = on_staff_line:
-			stem_size# = 1.50;
-		else: % staffline_adjustment = anywhere
-			stem_size# = 1.25;
-		fi;
-		curve_ht# = 0.6ht#;
-		bend_ht# = 0.10ht#;
-		l_shift# = 0.04ht#;
-		u_offs# = +direction*0.5*(bend_ht#+l_shift#);
-		l_offs# = -direction*0.5*(bend_ht#-l_shift#);
-		stem_end# = direction*stem_size#*staff_space#;
-		pen_ht# = curve_ht#-l_shift#;
-
-		define_pixels(u_offs, l_offs, stem_end, ht, wd, pen_ht);
-
-		pickup pencircle scaled 0.6linethickness;
-		z1 = (0, u_offs);
-		z2 = (0.7wd, l_offs);
-		z3 = (wd, l_offs);
-		penpos1(pen_ht, 90);
-		penpos2(pen_ht, 90);
-		penpos3(pen_ht, 90);
-		penstroke z1e{z2 - z1} .. {right}z2e .. z3e;
-
-		rt x4 = wd;
-		bot y4 = 0;
-		x5 = x4;
-		top y5 = stem_end;
-		draw z4 -- z5;
-
-		if direction > 0:
-			set_char_box(0, wd#, -l_offs#+0.5pen_ht#, stem_end#);
-		else:
-			set_char_box(0, wd#, -stem_end#, +l_offs#+0.5pen_ht#);
-		fi;
-
-	fet_endchar;
-enddef;
-
-% custos vaticana, stem up, between staff lines
-custos_vaticana("Custos Ed. Vat.", "vaticana-u0", "vaticanau0",
-		dir_up, between_staff_lines);
-
-% custos vaticana, stem up, on staff line
-custos_vaticana("Custos Ed. Vat.", "vaticana-u1", "vaticanau1",
-		dir_up, on_staff_line);
-
-% custos vaticana, stem up, anywhere
-custos_vaticana("Custos Ed. Vat.", "vaticana-u2", "vaticanau2",
-		dir_up, anywhere);
-
-% custos vaticana, stem down, between staff lines
-custos_vaticana("Reverse Custos Ed. Vat.", "vaticana-d0", "vaticanad0",
-		dir_down, between_staff_lines);
-
-% custos vaticana, stem down, on_staff_line
-custos_vaticana("Reverse Custos Ed. Vat.", "vaticana-d1", "vaticanad1",
-		dir_down, on_staff_line);
-
-% custos vaticana, stem down, anywhere
-custos_vaticana("Reverse Custos Ed. Vat.", "vaticana-d2", "vaticanad2",
-		dir_down, anywhere);
-
-%%%%%%%%
-%
-%
-% Mensural style
-%
-%
-
-def custos_mensural(expr verbose_name, internal_name, ly_name,
-		    direction, staffline_adjustment) =
-
-	fet_beginchar(verbose_name, internal_name, ly_name)
-		save alpha, dalpha, ht, wd, stem_ht;
-		ht# = noteheight#;
-		wd#/ht# = 1.2;
-		alpha# = 35;
-		dalpha# = direction*alpha#;
-
-		if staffline_adjustment = between_staff_lines:
-			stem_ht# = 1.00 staff_space#;
-		elseif staffline_adjustment = on_staff_line:
-			stem_ht# = 1.50 staff_space#;
-		else: % staffline_adjustment = anywhere
-			stem_ht# = 1.25 staff_space#;
-		fi;
-
-		define_pixels(ht, wd, stem_ht);
-		pickup pencircle
-		  xscaled linethickness
-		  yscaled 0.4ht
-		  rotated -dalpha#;
-
-		if direction > 0:
-			bot y1 = bot y3 = bot y5 = -direction*0.33ht;
-			top y2 = top y4 = +direction*0.33ht;
-		else:
-			top y1 = top y3 = top y5 = -direction*0.33ht;
-			bot y2 = bot y4 = +direction*0.33ht;
-		fi;
-		lft x1 = 0.0wd; lft x2 = 0.2wd; lft x3 = 0.4wd;
-		lft x4 = 0.6wd; lft x5 = 0.8wd;
-		y6 - y5 = direction*stem_ht;
-		(y6 - y5) = (x6 - x5) * tand(90-dalpha#);
-
-		draw z1 -- z2 -- z3 -- z4 -- z5 -- z6;
-
-		% The stem is intentionally outside of the char box.
-		if direction > 0:
-			set_char_box(0, wd#, +direction*0.33ht#, stem_ht#);
-		else:
-			set_char_box(0, wd#, stem_ht#, -direction*0.33ht#);
-		fi;
-	fet_endchar;
-enddef;
-
-% custos mensural, stem up, between staff lines
-custos_mensural("Custos Mensural", "mensural-u0", "mensuralu0",
-		dir_up, between_staff_lines);
-
-% custos mensural, stem up, on staff line
-custos_mensural("Custos Mensural", "mensural-u1", "mensuralu1",
-		dir_up, on_staff_line);
-
-% custos mensural, stem up, anywhere
-custos_mensural("Custos Mensural", "mensural-u2", "mensuralu2",
-		dir_up, anywhere);
-
-% custos mensural, stem down, between staff lines
-custos_mensural("Reverse Custos Mensural", "mensural-d0", "mensurald0",
-		dir_down, between_staff_lines);
-
-% custos mensural, stem down, on staff line
-custos_mensural("Reverse Custos Mensural", "mensural-d1", "mensurald1",
-		dir_down, on_staff_line);
-
-% custos mensural, stem down, anywhere
-custos_mensural("Reverse Custos Mensural", "mensural-d2", "mensurald2",
-		dir_down, anywhere);
-
-fet_endgroup ("custodes")
diff --git a/mf/parmesan-flags.mf b/mf/parmesan-flags.mf
deleted file mode 100644
index 994c7840a0..0000000000
--- a/mf/parmesan-flags.mf
+++ /dev/null
@@ -1,233 +0,0 @@
-% -*-Fundamental-*-
-% parmesan-flags.mf -- implement ancient flags
-% 
-% source file of LilyPond's pretty-but-neat music font
-% 
-% (c) 2001--2004 Juergen Reuter <reuter@ipd.uka.de>
-% 
-
-fet_begingroup ("flags")
-
-save between_staff_lines, on_staff_line, anywhere;
-between_staff_lines = 0;
-on_staff_line = 1;
-anywhere = 2;
-
-save dir_up, dir_down;
-dir_up = 1;
-dir_down = -1;
-
-
-%%%%%%%%
-%
-%
-%
-% Mensural Notation
-%
-%
-%
-
-def draw_mensural_outermost_flare (expr staffline_adjustment) =
-	define_pixels(linethickness, staff_space)
-
-	pickup pencircle
-		xscaled 1.00 linethickness
-		yscaled 0.22 staff_space
-		rotated -35;
-
-	save za, zb, zc, zd, ze;
-	pair za, zb, zc, zd, ze;
-
-	za = (+0.00 staff_space, -0.00 staff_space);
-	zb = (+0.15 staff_space, -0.00 staff_space);
-
-	if staffline_adjustment = between_staff_lines:
-		zc = (+0.45 staff_space, -0.35 staff_space);
-		zd = (+0.45 staff_space, -0.85 staff_space);
-		ze = (+0.00 staff_space, -2.00 staff_space);
-	elseif staffline_adjustment = on_staff_line:
-		zc = (+0.20 staff_space, -0.05 staff_space);
-		zd = (+0.20 staff_space, -1.15 staff_space);
-		ze = (+0.00 staff_space, -1.40 staff_space);
-	else: % staffline_adjustment = anywhere
-		zc = (+0.33 staff_space, -0.20 staff_space);
-		zd = (+0.33 staff_space, -1.00 staff_space);
-		ze = (+0.00 staff_space, -1.70 staff_space);
-	fi;
-
-	draw za .. zb -- zc{zc-zb} .. {ze-zd}zd -- ze;
-enddef;
-
-def draw_mensural_inner_flare(expr il_shift) =
-	define_pixels(linethickness, staff_space)
-
-	pickup pencircle
-		xscaled 1.00 linethickness
-		yscaled 0.22 staff_space
-		rotated -35;
-
-	save zs, za, zb, zc, zd;
-	pair zs, za, zb, zc, zd;
-
-	zs = (0, -il_shift * staff_space);
-	za = zs + (+0.00 staff_space, -0.10 staff_space);
-	zb = zs + (+0.33 staff_space, -0.30 staff_space);
-	zc = zs + (+0.33 staff_space, -0.70 staff_space);
-	zd = zs + (+0.00 staff_space, -0.90 staff_space);
-
-	draw za{2,1} .. zb .. zc .. {-2,-1}zd;
-enddef;
-
-def draw_mensural_flag (expr staffline_adjustment, flares, direction) =
-	save char_box_adjust, flare_shift;
-	if staffline_adjustment = between_staff_lines:
-		flare_shift = 0.5;
-	elseif staffline_adjustment = on_staff_line:
-		flare_shift = 0.0;
-	else: % staffline_adjustment = anywhere
-		flare_shift = 0.25;
-	fi;
-	char_box_adjust = flare_shift+0.5;
-	if direction = dir_up:
-		set_char_box(0,
-			     0.60 staff_space#,
-			     (flares+char_box_adjust)*staff_space#,
-			     0.10 staff_space#)
-	else: % direction = dir_down
-		set_char_box(0.60 staff_space#,
-			     0,
-			     0.10 staff_space#,
-			     (flares+char_box_adjust)*staff_space#)
-	fi;
-	draw_mensural_outermost_flare (staffline_adjustment)
-	for flare_count := 2 step 1 until 4:
-		if flares >= flare_count:
-			draw_mensural_inner_flare(flare_shift+flare_count-0.5)
-		fi;
-	endfor;
-	if direction = dir_down:
-		currentpicture := currentpicture xscaled -1 yscaled -1;
-	fi;
-enddef;
-
-% 8th mensural flag, upwards, between staff lines
-fet_beginchar("8th Mensural Flag (up)", "mensuralu03", "menseighthflag")
-	draw_mensural_flag (between_staff_lines, 1, dir_up)
-fet_endchar;
-
-% 8th mensural flag, upwards, on staff line
-fet_beginchar("8th Mensural Flag (up)", "mensuralu13", "mens1eighthflag")
-	draw_mensural_flag (on_staff_line, 1, dir_up)
-fet_endchar;
-
-% 8th mensural flag, upwards, anywhere
-fet_beginchar("8th Mensural Flag (up)", "mensuralu23", "mens1eighthflag")
-	draw_mensural_flag (anywhere, 1, dir_up)
-fet_endchar;
-
-% 8th mensural flag, downwards, between staff lines
-fet_beginchar("8th Mensural Flag (down)", "mensurald03", "mensdeighthflag")
-	draw_mensural_flag (between_staff_lines, 1, dir_down)
-fet_endchar;
-
-% 8th mensural flag, downwards, on staff line
-fet_beginchar("8th Mensural Flag (down)", "mensurald13", "mensd1eighthflag")
-	draw_mensural_flag (on_staff_line, 1, dir_down)
-fet_endchar;
-
-% 8th mensural flag, downwards, anywhere
-fet_beginchar("8th Mensural Flag (down)", "mensurald23", "mensd1eighthflag")
-	draw_mensural_flag (anywhere, 1, dir_down)
-fet_endchar;
-
-% 16th mensural flag, upwards, between staff lines
-fet_beginchar("16th Mensural Flag (up)", "mensuralu04", "menssixteenthflag")
-	draw_mensural_flag (between_staff_lines, 2, dir_up)
-fet_endchar;
-
-% 16th mensural flag, upwards, on staff line
-fet_beginchar("16th Mensural Flag (up)", "mensuralu14", "mens1sixteenthflag")
-	draw_mensural_flag (on_staff_line, 2, dir_up)
-fet_endchar;
-
-% 16th mensural flag, upwards, anywhere
-fet_beginchar("16th Mensural Flag (up)", "mensuralu24", "mens1sixteenthflag")
-	draw_mensural_flag (anywhere, 2, dir_up)
-fet_endchar;
-
-% 16th mensural flag, downwards, between staff lines
-fet_beginchar("16th Mensural Flag (down)", "mensurald04", "mensdsixteenthflag")
-	draw_mensural_flag (between_staff_lines, 2, dir_down)
-fet_endchar;
-
-% 16th mensural flag, downwards, on staff line
-fet_beginchar("16th Mensural Flag (down)", "mensurald14", "mensd1sixteenthflag")
-	draw_mensural_flag (on_staff_line, 2, dir_down)
-fet_endchar;
-
-% 16th mensural flag, downwards, anywhere
-fet_beginchar("16th Mensural Flag (down)", "mensurald24", "mensd1sixteenthflag")
-	draw_mensural_flag (anywhere, 2, dir_down)
-fet_endchar;
-
-% 32th mensural flag, upwards, between staff lines
-fet_beginchar("32th Mensural Flag (up)", "mensuralu05", "mensthirtysecondflag")
-	draw_mensural_flag (between_staff_lines, 3, dir_up)
-fet_endchar;
-
-% 32th mensural flag, upwards, on staff line
-fet_beginchar("32th Mensural Flag (up)", "mensuralu15", "mens1thirtysecondflag")
-	draw_mensural_flag (on_staff_line, 3, dir_up)
-fet_endchar;
-
-% 32th mensural flag, upwards, anywhere
-fet_beginchar("32th Mensural Flag (up)", "mensuralu25", "mens1thirtysecondflag")
-	draw_mensural_flag (anywhere, 3, dir_up)
-fet_endchar;
-
-% 32th mensural flag, downwards, between staff lines
-fet_beginchar("32th Mensural Flag (down)", "mensurald05", "mensdthirtysecondflag")
-	draw_mensural_flag (between_staff_lines, 3, dir_down)
-fet_endchar;
-
-% 32th mensural flag, downwards, on staff line
-fet_beginchar("32th Mensural Flag (down)", "mensurald15", "mensd1thirtysecondflag")
-	draw_mensural_flag (on_staff_line, 3, dir_down)
-fet_endchar;
-
-% 32th mensural flag, downwards, anywhere
-fet_beginchar("32th Mensural Flag (down)", "mensurald25", "mensd1thirtysecondflag")
-	draw_mensural_flag (anywhere, 3, dir_down)
-fet_endchar;
-
-% 64th mensural flag, upwards, between staff lines
-fet_beginchar("64th Mensural Flag (up)", "mensuralu06", "menssixtyfourthflag")
-	draw_mensural_flag (between_staff_lines, 4, dir_up)
-fet_endchar;
-
-% 64th mensural flag, upwards, on staff line
-fet_beginchar("64th Mensural Flag (up)", "mensuralu16", "mens1sixtyfourthflag")
-	draw_mensural_flag (on_staff_line, 4, dir_up)
-fet_endchar;
-
-% 64th mensural flag, upwards, anywhere
-fet_beginchar("64th Mensural Flag (up)", "mensuralu26", "mens1sixtyfourthflag")
-	draw_mensural_flag (anywhere, 4, dir_up)
-fet_endchar;
-
-% 64th mensural flag, downwards, between staff lines
-fet_beginchar("64th Mensural Flag (down)", "mensurald06", "mensdsixtyfourthflag")
-	draw_mensural_flag (between_staff_lines, 4, dir_down)
-fet_endchar;
-
-% 64th mensural flag, downwards, on staff line
-fet_beginchar("64th Mensural Flag (down)", "mensurald16", "mensd1sixtyfourthflag")
-	draw_mensural_flag (on_staff_line, 4, dir_down)
-fet_endchar;
-
-% 64th mensural flag, downwards, anywhere
-fet_beginchar("64th Mensural Flag (down)", "mensurald26", "mensd1sixtyfourthflag")
-	draw_mensural_flag (anywhere, 4, dir_down)
-fet_endchar;
-
-fet_endgroup ("flags")
diff --git a/mf/parmesan-generic.mf b/mf/parmesan-generic.mf
deleted file mode 100644
index 3b9e69d13d..0000000000
--- a/mf/parmesan-generic.mf
+++ /dev/null
@@ -1,37 +0,0 @@
-
-% -*-Fundamental-*-
-% parmesan-generic.mf --  implement generic stuff: include lots of files,
-% but don't set dims.
-%
-% source file of LilyPond's pretty-but-neat music font
-% 
-% (c) 2002--2004 Juergen Reuter <reuter@ipd.uka.de>
-% 
-
-
-if test = -1:
-	mode := smoke;
-fi
-
-mode_setup;
-%
-
-input feta-macros;
-input feta-params;
-
-font_x_height  staff_space#;
-font_coding_scheme "parmesan music";
-
-if test = 0: 
-	input parmesan-rests;
-	input parmesan-heads;
-	input parmesan-clefs;
-	input parmesan-custodes
-	input parmesan-accidentals;
-	input parmesan-flags;
-	input parmesan-timesig;
-	input parmesan-scripts;
-
-else:
-
-fi
diff --git a/mf/parmesan-heads.mf b/mf/parmesan-heads.mf
deleted file mode 100644
index 680a85f321..0000000000
--- a/mf/parmesan-heads.mf
+++ /dev/null
@@ -1,821 +0,0 @@
-% -%-Fundamental-%- -*-Metafont-*-
-% parmesan-heads.mf -- implement ancient note heads
-% 
-% source file of LilyPond's pretty-but-neat music font
-% 
-% (c) 2001--2004 Juergen Reuter <reuter@ipd.uka.de>
-% 
-% Neo-mensural heads originally by
-% Christian Mondrup and Mats Bengtsson
-% 
-
-save black_notehead_width;
-numeric black_notehead_width;
-
-fet_begingroup ("noteheads")
-
-%
-% character aligment:
-%
-%   The head is assumed to be vertically centered around (0, 0).
-%   The left-most edge of the head should touch the vertical line
-%   that goes though the point (0, 0).
-%
-% set_char_box() conventions:
-%
-% * breapth: Ignored (as far as I know).  Should be set to 0.
-%
-% * width: Should match the head's width.
-%
-% * depth: Should match the bottom edge of the head.  Affects vertical
-%   collision handling.
-%
-% * height: Should match the top edge of the head.  Affects vertical
-%   collision handling.
-%
-% TODO: should depth/height include appendages/stems?
-
-overdone_heads = 0;
-noteheight# := staff_space# + (1 + overdone_heads)*stafflinethickness#;
-define_pixels(noteheight);
-
-
-%%%%%%%%
-%
-%
-%
-% MENSURAL NOTATION
-%
-%
-%
-
-def draw_neo_brevis(expr brevwid) =
-	save beamheight, head_width;
-	save holeheight, stem_width;
-	save serif_size, serif_protrude;
-
-	head_width# = brevwid;
-	holeheight = 3 stafflinethickness;
-	stem_width = 1.4 stafflinethickness;
-
-
-	define_pixels(head_width);
-	set_char_box(0, head_width#, noteheight#/2, noteheight#/2);
-	
-	2 beamheight + holeheight = noteheight;
-	serif_size = (holeheight - stafflinethickness)/2;
-	serif_protrude = 1.5 serif_size;
-	penpos1(stem_width, 0);
-	penpos2(stem_width, 0);
-	penpos3(beamheight, 90);
-	penpos4(beamheight, 90);
-	penpos5(stem_width, 180);
-
-	z1l = (0, 0);
-	z2l = (0, -stafflinethickness/2);
-	z3r = z2r + serif_size *(1,-1);
-	y4r = y3r;
-	x4r = head_width/2;
-	z5l = z3l + (-serif_size, -serif_protrude);
-
-	penlabels(1,2,3,4, 5);
-	fill z1r -- z1l -- z5r{down} .. z5l{up} .. z3l{right}
-		-- z4l -- z4r -- z3r{left} .. z2r{up} -- cycle;
-
-	addto currentpicture also currentpicture yscaled -1;
-	show z4r; show z4l;
-	addto currentpicture also currentpicture 
-		shifted (-x4r,0) xscaled -1 shifted (x4l,0);
-
-enddef;
-
-
-def draw_neo_left_stemmed_head (expr wid) =
-	draw_neo_brevis(wid);
-
-	x6 = x7 = head_width - stem_width/2;
-	y6 = y5;
-	y7 = y5 - 2.25 staff_space;
-	pickup pencircle scaled stem_width;
-	draw z6 .. z7;
-enddef;
-
-fet_beginchar("Left stemmed notehead", "lneo_mensural", "mensuralleftstemmedhead");
-	draw_neo_left_stemmed_head (2 staff_space#);
-fet_endchar;
-
-%
-% Some sources (eg Musix/OpusTeX think that the appendage should be on
-% the left, some say right. Right wins democratically.
-%
-def draw_neo_longa (expr wid) =
-	draw_neo_brevis(wid);
-	save theta;
-
-	x7r = head_width;
-	y7 = y5;
-%	z7 = z5;
-	z6 - z7 = (stem_width/2, -staff_space);
-	theta = angle(z6-z7)+ 90;
-	penpos7(stem_width, theta);
-	penpos6(1.2 stem_width, theta);
-	
-	fill z7r .. z6r{z6-z7} .. {z7-z6} z6l -- z7l -- cycle;
-	penlabels(6,7);
-enddef;
-
-%
-% En wij presenteren U: de opvolgster van Emily
-%
-% (ze is wel breed)
-% 
-fet_beginchar("Maxima notehead", "-3neo_mensural", "neomensuralmaximahead");
-	draw_neo_longa (2.6 staff_space#)
-fet_endchar;
-
-fet_beginchar("Longa notehead", "-2neo_mensural", "neomensurallongahead");
-	draw_neo_longa (2 staff_space#)
-fet_endchar;
-
-fet_beginchar("Brevis notehead", "-1neo_mensural", "neomensuralbrevishead")
-	draw_neo_brevis(2 staff_space#);
-fet_endchar;
-
-def draw_neo_mensural_black_head (expr wid, height) =
-	save head_width;
-	head_width# = wid;
-	set_char_box (0, head_width#, height/2, height/2);
-	
-	charwx := head_width# / 2;
-	charwy := height / 2;
-
-	y3 = y1 =0;
-	x2 = x4 = (x1 + x3) /2;
-	define_pixels (head_width);
-	pickup pencircle scaled blot_diameter;
-	top y2 = h;
-	bot y4 = -d;
-	lft x1 = 0;
-	rt x3 = w;
-
-	filldraw z1 -- z2 -- z3 -- z4 -- cycle;
-enddef;
-
-def draw_neo_mensural_open_head (expr wid, height)=
-	draw_neo_mensural_black_head (wid, height);
-	save diamNW, diamSW;
-	diamNW = length (z2 - z1) + blot_diameter;
-	diamSW = length (z4 - z1) + blot_diameter;
-	
-	save hole_widthNW, hole_widthSW;
-	hole_widthNW = 0.34 diamNW ;
-	hole_widthSW + 2.6 linethickness = diamSW;
-
-	(z7 + z5)/2 = (w/2, 0);
-	(z8 + z6)/2 = (w/2, 0);
-	(z6 - z5) = hole_widthNW * unitvector (z2 - z1);
-	(z7 - z6) = hole_widthSW * unitvector (z4 - z1);
-
-	labels (1,2,3,4,5,6,7,8);
-
-	unfill z5 -- z6 -- z7 -- z8 --cycle;
-enddef;
-
-fet_beginchar("Neo-mensural open head","0neo_mensural","neomensuralsemibrevishead")
-      draw_neo_mensural_open_head (staff_space#, noteheight#);
-fet_endchar;
-
-%
-% WL says the thin lines should be thinner.
-%
-
-fet_beginchar("Harmonic notehead (Neo-mensural open)",
-		"0harmonic","harmonichead")
-
-	draw_neo_mensural_open_head (1.3 staff_space#, 1.3 noteheight#);
-	charwx := head_width#;
-	charwy := 0;
-fet_endchar;
-
-
-fet_beginchar("Neo-mensural open head","1neo_mensural","neomensuralminimahead")
-      draw_neo_mensural_open_head (staff_space#, noteheight#);
-fet_endchar;
-
-fet_beginchar("Neo-mensural black head","2neo_mensural","neomensuralsemiminimahead")
-      draw_neo_mensural_black_head (staff_space#, noteheight#);
-fet_endchar;
-
-
-
-def draw_brevis (expr wid) =
-	% TODO.  For the moment, fall back to draw_neo_brevis.
-	draw_neo_brevis(wid);
-enddef;
-
-def draw_left_stemmed_head (expr wid) =
-	draw_brevis(wid);
-	save theta;
-
-	x6 = x7 = stem_width/2;
-	y6 = y5;
-	y7 = y5 - 2.25staff_space;
-	pickup pencircle scaled stem_width;
-	draw z6 .. z7;
-enddef;
-
-fet_beginchar("Left stemmed notehead", "lmensural", "mensuralleftstemmedhead");
-	draw_left_stemmed_head (staff_space#)
-fet_endchar;
-
-def draw_longa (expr wid) =
-	draw_brevis(wid);
-
-	x6 = x7 = head_width - stem_width/2;
-	y6 = y5;
-	y7 = y5 - 2.25staff_space;
-	pickup pencircle scaled stem_width;
-	draw z6 .. z7;
-enddef;
-
-fet_beginchar("Maxima notehead", "-3mensural", "mensuralmaximahead");
-	draw_longa (2.0 staff_space#)
-fet_endchar;
-
-fet_beginchar("Longa notehead", "-2mensural", "mensurallongahead");
-	draw_longa (staff_space#)
-fet_endchar;
-
-fet_beginchar("Brevis notehead", "-1mensural", "mensuralbrevishead")
-	draw_brevis(staff_space#);
-fet_endchar;
-
-def draw_diamond_head (expr head_h, pen_w, pen_h, angle, open) =
-      save head_width, head_height;
-      head_height# = head_h;
-      head_width# / head_height# = tand(angle);
-      define_pixels(head_width, head_height);
-
-      set_char_box (0, head_width#,
-	head_height#/2, head_height#/2);
-      
-      charwx := head_width# / 2;
-      charwy := head_height# / 2 - linethickness#;
-
-      pickup pencircle
-	     xscaled (min(blot_diameter, pen_w * head_width))
-	     yscaled (min(blot_diameter, pen_h * head_width))
-	     rotated -angle;
-
-      %% FIXME: replace "xpart (top z2)" (and, analogously,
-      %% "ypart (rt z3)") with an expression that really delivers the
-      %% x coordinate of the uppermost pixel that is drawn with respect
-      %% to the pencircle (this requires some elliptical computations).
-      %% MF obviously interprets "xpart (top z2)" as "top (xpart z2)",
-      %% i.e. "top x2", which is not what we want.
-
-      xpart (top z2) = ypart (rt z3) = 0;
-      top y2 = head_height/2;
-      rt x3 = head_width/2;
-      z2 = - z4;
-      z3 = - z1;
-
-      if open:
-	      draw z1 -- z2 -- z3 -- z4 -- cycle;
-      else:
-	      filldraw z1 -- z2 -- z3 -- z4 -- cycle;
-      fi;
-
-      currentpicture := currentpicture shifted (head_width/2, 0);
-
-enddef;
-
-
-fet_beginchar("Mensural open head","0mensural","mensuralsemibrevishead")
-	draw_diamond_head (staff_space#, 0.15, 0.30, 30, true);
-fet_endchar;
-
-fet_beginchar("Mensural open head","1mensural","mensuralminimahead")
-	draw_diamond_head (staff_space#, 0.15, 0.30, 30, true);
-fet_endchar;
-
-fet_beginchar("Mensural black head","2mensural","mensuralsemiminimahead")
-	draw_diamond_head (staff_space#, 0.15, 0.30, 30, false);
-fet_endchar;
-
-
-%%%%%%%%
-%
-%
-%
-% EDITIO VATICANA (including solesmes extensions)
-%
-%
-%
-
-% parameterized punctum
-def punctum_char (expr verbose_name, internal_name, ly_name,
-		  left_stem, right_stem, linea, cavum,
-		  straight, auctum, direction_up, excentric, up_shift, down_shift, mag) =
-
-	fet_beginchar(verbose_name, internal_name, ly_name)
-		save b_h, a_w;
-		a_b := 1.54; % b_h*a_b/a_w = wd/ht
-		b_h := 0.85;
-		a_w := 1.09;
-
-		save a, beta, ht, wd;
-		ht# = noteheight# * mag;
-		2beta# = ht# * b_h;
-		a# = beta# * a_b;
-		wd# = 2a# / a_w;
-		black_notehead_width# := wd#;
-
-		% direction
-		save direction, direction_sign;
-		pair direction;
-		if direction_up:
-			direction = up;
-			direction_sign# = 1;
-		else:
-			direction = down;
-			direction_sign# = -1;
-		fi;
-
-		% convexity and excentricity
-		save u_convexity, u_excentricity;
-		if straight:
-			u_convexity# = -0.01ht#;
-			u_excentricity# = 0.0ht#; % dummy
-		elseif auctum:
-			u_convexity# = -0.03ht#;
-			u_excentricity# = +0.25ht#;
-		else:
-			u_convexity# = -0.05ht#;
-			u_excentricity# = 0.0ht#; % dummy
-		fi;
-		save convexity, excentricity;
-		convexity# = direction_sign# * u_convexity#;
-		excentricity# = direction_sign# * u_excentricity#;
-
-		% y shift offset
-		save yoffs;
-		if up_shift:
-			yoffs# = 0.08ht#;
-		elseif down_shift:
-			yoffs# = -0.11ht#;
-		else:
-			yoffs# = 0.00ht#;
-		fi
-
-		define_pixels(convexity, excentricity, yoffs, ht, wd);
-		pickup pencircle scaled linethickness;
-
-		path p;
-		save height, yoffs_bt;
-		define_pixels (height, yoffs_bt);
-		height# = 0.47ht#;
-		yoffs_bt# = yoffs# - 0.5*height# - 0.25*convexity#;
-		xpart z1a = xpart z1b;
-		xpart z2a = xpart z2b;
-		xpart z3a = xpart z3b;
-		ypart z1a + height = ypart z1b;
-		ypart z2a + height = ypart z2b;
-		ypart z3a + height = ypart z3b;
-
-		save box_top, box_bt;
-
-		if auctum:
-			z1a = (0.00wd + linethickness/2, yoffs_bt);
-			z2a = (0.21wd, yoffs_bt + 1.0*convexity);
-			z3a = (0.42wd - linethickness/2,
-			       yoffs_bt + 1.0*excentricity);
-			box_top# = height# + yoffs_bt# +
-				max(0, 1.0*convexity#, 1.0*excentricity#);
-			box_bt# = yoffs_bt# +
-				min(0, 1.0*convexity#, 1.0*excentricity#);
-			p = z1a .. {right}z2a .. {direction}z3a --
-			    z3b{-direction} .. z2b{left} .. z1b -- cycle;
-		elseif excentric:
-			z1a = (0.00wd + linethickness/2,
-			       yoffs_bt - 1.0*convexity);
-			z2a = (0.08wd, yoffs_bt + 1.4*convexity);
-			z3a = (0.42wd - linethickness/2,
-			       yoffs_bt - 1.0*convexity);
-			box_top# = height# + yoffs_bt# +
-				max(-1.0*convexity#, 1.4*convexity#, 0);
-			box_bt# = yoffs_bt# +
-				min(-1.0*convexity#, 1.4*convexity#, 0);
-			p = z1a{direction} .. z2a{right} .. z3a --
-			    z3b .. {left}z2b .. {-direction}z1b -- cycle;
-		else:
-			z1a = (0.00wd + linethickness/2, yoffs_bt);
-			z2a = (0.21wd, yoffs_bt + 1.0*convexity);
-			z3a = (0.42wd - linethickness/2, yoffs_bt);
-			box_top# = height# + yoffs_bt# +
-				max(0, 1.0*convexity#);
-			box_bt# = yoffs_bt# +
-				min(0, 1.0*convexity#);
-			p = z1a .. z2a .. z3a --
-			    z3b .. z2b .. z1b -- cycle;
-		fi;
-
-		if cavum:
-			draw p;
-		else:
-			filldraw p;
-		fi;
-
-		pickup pencircle scaled 0.6linethickness;
-
-		save stem_bt;
-
-		if left_stem:
-			z5=(0.00wd + 0.6linethickness/2, yoffs);
-			z6=(0.00wd + 0.6linethickness/2, yoffs - 1.1ht);
-			draw z5 -- z6;
-			stem_bt# = yoffs# - 1.1ht#;
-		elseif right_stem:
-			z5=(0.42wd - 0.6linethickness/2, yoffs);
-			z6=(0.42wd - 0.6linethickness/2, yoffs - 1.5ht);
-			draw z5 -- z6;
-			stem_bt# = yoffs# - 1.5ht#;
-		else:
-			stem_bt# = 0;
-		fi;
-
-		set_char_box(0.00wd#, 0.42wd#,
-			     max(0, -box_bt#, -stem_bt#) + linethickness#/2,
-			     max(0, box_top#) + linethickness#/2);
-
-		if linea:
-			save linea_width, linea_height;
-			linea_width# = 0.6 linethickness#;
-			linea_height# = 0.7 ht#;
-			define_pixels (linea_width, linea_height);
-			draw_block ((-0.10wd - linea_width/2,
-				     -linea_height/2),
-				    (-0.10wd + linea_width/2,
-				     +linea_height/2));
-			draw_block ((+0.52wd - linea_width/2,
-				     -linea_height/2),
-				    (+0.52wd + linea_width/2,
-				     +linea_height/2));
-			set_char_box(0,
-				     0.62wd# + linea_width#,
-				     linea_height#/2,
-				     linea_height#/2);
-			currentpicture := currentpicture
-				shifted (0.10wd + linea_width/2, 0);
-		fi;
-	fet_endchar;
-enddef;
-
-% parameterized punctum inclinatum
-def inclinatum_char(expr verbose_name, internal_name, ly_name,
-		    small, stropha, auctum) =
-
-	fet_beginchar(verbose_name, internal_name, ly_name)
-		save ht, alpha;
-		alpha# = 35;
-		if small:
-			ht# = 0.50 noteheight#;
-		else:
-			ht# = 0.80 noteheight#;
-		fi;
-
-		draw_diamond_head (ht#, 0, 0, alpha#, false);
-
-		if stropha:
-			pickup pencircle
-				xscaled (0.25*head_height)
-				yscaled (0.55*head_height)
-				rotated alpha#;
-			save za, off_angle; pair za;
-			off_angle := 15;
-			za = (0, -0.25*head_height)
-				rotated -(alpha# + off_angle)
-				shifted (0.48 head_width, -0.02 head_width);
-			undraw za;
-		fi;
-
-		if auctum:
-			pickup pencircle scaled linethickness;
-			save za, zb, zc;
-			pair za, zb, zc;
-			za = (0, -0.5 head_height + linethickness);
-			zb = 0.6 (za + zc);
-			zc = za + (0.52 head_width, 0);
-			draw za{(0,-1) rotated alpha#} .. {right}zb{right} ..
-			     {(0,1) rotated -alpha#}zc;
-		fi;
-	fet_endchar;
-enddef;
-
-% punctum
-punctum_char("Ed. Vat. punctum", "vaticana_punctum", "vatpunctumhead",
-	     false, false, false, false, false,
-	     false, false, false, false, false, 1.0);
-
-% punctum cavum (for OpusTeX compatibility)
-punctum_char("Ed. Vat. punctum cavum", "vaticana_punctum_cavum",
-	     "vatpunctumcavumhead",
-	     false, false, false, true, false,
-	     false, false, false, false, false, 1.0);
-
-% linea punctum (for OpusTeX compatibility)
-punctum_char("Ed. Vat. linea punctum", "vaticana_linea_punctum",
-	     "vatlineapunctumhead",
-	     false, false, true, false, false,
-	     false, false, false, false, false, 1.0);
-
-% linea punctum cavum (for OpusTeX compatibility)
-punctum_char("Ed. Vat. linea punctum cavum", "vaticana_linea_punctum_cavum",
-	     "vatlineapunctumcavumhead",
-	     false, false, true, true, false,
-	     false, false, false, false, false, 1.0);
-
-% punctum inclinatum
-inclinatum_char("Ed. Vat. inclinatum", "vaticana_inclinatum",
-		"vatinclinatumhead",
-		false, false, false);
-
-% pes lower punctum
-punctum_char("Ed. Vat. pes lower punctum", "vaticana_lpes", "vatlpeshead",
-	     false, false, false, false, true,
-	     false, true, false, false, false, 1.0);
-
-% pes lower punctum
-punctum_char("Ed. Vat. pes var lower punctum", "vaticana_vlpes", "vatvlpeshead",
-	     false, false, false, false, true,
-	     false, true, false, false, true, 1.0);
-
-% pes upper punctum
-punctum_char("Ed. Vat. pes upper punctum", "vaticana_upes", "vatupeshead",
-	     false, false, false, false, true,
-	     false, false, false, false, false, 1.0);
-
-% pes upper punctum (shifted variation)
-%
-% This note head is used instead of the regular pes upper punctum to
-% avoid collision with the lower punctum note of the pes when the upper
-% punctum sits directly on top of the lower punctum.
-%
-punctum_char("Ed. Vat. var pes upper punctum", "vaticana_vupes",
-	     "vatvupeshead",
-	     false, false, false, false, true,
-	     false, false, false, true, false, 1.0);
-
-% small punctum as used in epiphonus
-punctum_char("Ed. Vat. plica", "vaticana_plica", "vatplicahead",
-	     false, false, false, false, false,
-	     false, false, false, false, false, 0.6);
-
-% excentric punctum as used in epiphonus
-punctum_char("Ed. Vat. epiphonus", "vaticana_epiphonus", "vatepiphonushead",
-	     false, false, false, false, false,
-	     false, true, true, false, false, 1.0);
-
-% excentric punctum as used in epiphonus (shifted variation)
-%
-% This note head is used instead of the regular epiphonus punctum to
-% avoid collision with the plica head when the plica sits directly on
-% top of the lower head.
-%
-punctum_char("Ed. Vat. var epiphonus", "vaticana_vepiphonus", "vatvepiphonushead",
-	     false, false, false, false, false,
-	     false, true, true, false, true, 1.0);
-
-% small punctum as used in cephalicus
-punctum_char("Ed. Vat. rev. plica", "vaticana_reverse_plica", "vatrplicahead",
-	     false, false, false, false, false,
-	     false, true, false, false, false, 0.6);
-
-% excentric punctum as used in cephalicus; without left stem
-punctum_char("Ed. Vat. cephalicus", "vaticana_inner_cephalicus",
-	     "vatinnercephalicushead",
-	     false, false, false, false, false,
-	     false, false, true, false, false, 1.0);
-
-% excentric punctum as used in cephalicus; with left stem
-punctum_char("Ed. Vat. cephalicus", "vaticana_cephalicus",
-	     "vatcephalicushead",
-	     true, false, false, false, false,
-	     false, false, true, false, false, 1.0);
-
-% quilisma
-fet_beginchar("Ed. Vat. quilisma", "vaticana_quilisma", "vatquilismahead")
-	save b_h,a_w;
-	a_b:=1.54; % b_h*a_b/a_w = wd/ht
-	b_h:=0.85;
-	a_w:=1.09;
-
-	save a, beta, ht, wd;
-	ht# = noteheight#;
-	2beta# = ht#*b_h;
-	a# = beta#*a_b;
-	wd# = 2a# / a_w;
-	set_char_box(0, 0.42wd#, 0.28 ht#, 0.36 ht#);
-	black_notehead_width# := wd#;
-
-	define_pixels(ht, wd);
-	pickup pencircle xscaled linethickness yscaled 0.44ht;
-	lft x1 = 0.00wd; bot y1 = -0.28ht;
-	x2 = 0.11wd;     y2 = -0.14ht;
-	x3 = 0.12wd;     y3 = +0.03ht;
-	x4 = 0.25wd;     y4 = -0.09ht;
-	x5 = 0.26wd;     y5 = +0.08ht;
-	x6 = 0.40wd;     y6 = -0.04ht;
-	rt x7 = 0.42wd;  top y7 = +0.36ht;
-	draw z1 .. z2 -- z3 .. z4 -- z5 .. z6 -- z7;
-fet_endchar;
-
-% solesmes punctum inclinatum parvum
-inclinatum_char("Solesmes punctum inclinatum parvum", "solesmes_incl_parvum",
-		"solinclparvumhead",
-		true, false, false);
-
-% solesmes punctum auctum ascendens
-punctum_char("Solesmes punctum auctum ascendens", "solesmes_auct_asc",
-	     "solauctaschead",
-	     false, false, false, false, false,
-	     true, true, false, false, false, 1.0);
-
-% solesmes punctum auctum descendens
-punctum_char("Solesmes punctum auctum descendens", "solesmes_auct_desc",
-	     "solauctdeschead",
-	     false, false, false, false, false,
-	     true, false, false, false, false, 1.0);
-
-% solesmes punctum inclinatum auctum
-inclinatum_char("Solesmes punctum incl. auctum", "solesmes_incl_auctum",
-		"solpunctuminclinatumauctumhead",
-		false, false, true);
-
-% solesmes stropha
-inclinatum_char("Solesmes stropha", "solesmes_stropha",
-		"solstrophahead",
-		false, true, false);
-
-% solesmes stropha aucta
-inclinatum_char("Solesmes stropha aucta", "solesmes_stropha_aucta",
-		"solstrophaauctahead",
-		false, true, true);
-
-% solesmes oriscus
-fet_beginchar("Solesmes oriscus", "solesmes_oriscus",
-	"soloriscushead")
-	save b_h, a_w;
-	a_b := 1.54; % b_h*a_b/a_w = wd/ht
-	b_h := 0.85;
-	a_w := 1.09;
-
-	save a, beta, ht, wd;
-	ht# = noteheight#;
-	2beta# = ht# * b_h;
-	a# = beta# * a_b;
-	wd# = 2a# / a_w;
-	black_notehead_width# := wd#;
-
-	save convexity;
-	convexity# = +0.05ht#;
-
-	define_pixels(ht, wd, convexity);
-	pickup pencircle xscaled blot_diameter yscaled 0.50ht;
-	lft x1 = 0.00wd; y1 = -convexity;
-	x2 = 0.16wd;     y2 = +convexity;
-	x3 = 0.33wd;     y3 = -convexity;
-	rt x4 = 0.50wd;  y4 = +convexity;
-	draw z1 .. z2 .. z3 .. z4;
-	set_char_box(0.00wd#, 0.50wd#,
-		     0.25ht# + convexity#, 0.25ht# + convexity#);
-fet_endchar;
-
-%%%%%%%%
-%
-%
-%
-% EDITIO MEDICAEA
-%
-%
-%
-
-% inclinatum
-fet_beginchar("Ed. Med. inclinatum", "medicaea_inclinatum",
-	"medinclinatumhead")
-	draw_diamond_head (1.2staff_space#, 0, 0, 35, false);
-fet_endchar;
-
-% parametrized punctum
-def punctum_char (expr verbose_name, internal_name, ly_name,
-	left_up_stem, left_down_stem) =
-
-	fet_beginchar(verbose_name, internal_name, ly_name)
-
-		save a, beta, ht, wd;
-		ht# = 2 staff_space#;
-		wd# = ht#;
-		black_notehead_width# := wd#;
-
-		define_pixels(ht, wd);
-		pickup pencircle
-			xscaled blot_diameter
-			yscaled 0.50ht;
-		z1 = (0.00wd + blot_diameter/2, 0);
-		z2 = (0.4wd - blot_diameter/2, 0);
-		draw z1 .. z2;
-
-		pickup pencircle
-			xscaled linethickness
-			yscaled blot_diameter;
-
-		if left_down_stem:
-			z4=(0.00wd + linethickness/2, blot_diameter/2);
-			z5=(0.00wd + linethickness/2, - 1.25ht);
-			draw z4 .. z5;
-			set_char_box(0.0, 0.4wd#, 1.25ht#, 0.25ht#);
-		elseif left_up_stem:
-			z4=(0.00wd + linethickness/2, blot_diameter/2);
-			z5=(0.00wd + linethickness/2, + 1.25ht);
-			draw z4 .. z5;
-			set_char_box(0.0, 0.4wd#, 0.25ht#, 1.25ht#);
-		else:
-			set_char_box(0.0, 0.4wd#, 0.25ht#, 0.25ht#);
-		fi;
-
-	fet_endchar;
-enddef;
-
-% punctum
-punctum_char("Ed. Med. punctum", "medicaea_punctum", "medpunctumhead",
-	false, false);
-
-% left up-stemmed punctum
-punctum_char("Ed. Med. reverse virga", "medicaea_rvirga", "medrvirgahead",
-	true, false);
-
-% virga (i.e. left down-stemmed punctum)
-punctum_char("Ed. Med. virga", "medicaea_virga", "medvirgahead",
-	false, true);
-
-%%%%%%%%
-%
-%
-%
-% HUFNAGEL
-%
-%
-%
-
-% punctum
-% parametrized punctum
-def punctum_char (expr verbose_name, internal_name, ly_name,
-	down_stem) =
-	fet_beginchar(verbose_name, internal_name, ly_name)
-		save alpha;
-		alpha# = 55;
-		draw_diamond_head (staff_space#, 0, 0, alpha#, false);
-		if down_stem:
-			pickup pencircle
-				xscaled blot_diameter
-				yscaled (0.7*staff_space)
-				rotated -alpha#;
-			save za, zb; pair za, zb;
-			za = (head_width/2, 0);
-			bot zb = (head_width/2, -1.5staff_space);
-			draw za -- zb;
-			set_char_box (0, head_width#,
-				      1.5staff_space#, head_height#/2);
-		fi;
-	fet_endchar;
-enddef;
-
-% punctum
-punctum_char("Hufnagel punctum", "hufnagel_punctum", "hufpunctumhead", false)
-
-% virga
-punctum_char("Hufnagel virga", "hufnagel_virga", "hufvirgahead", true)
-
-% pes lower punctum
-fet_beginchar("Hufnagel pes lower punctum", "hufnagel_lpes", "huflpeshead")
-	save width, height, alpha;
-	width# = 2*staff_space#;
-	height# = 0.7*staff_space#;
-	alpha# = 35;
-
-	set_char_box(0, width#, height#/2, height#/2);
-
-	pickup pencircle scaled linethickness;
-	define_pixels(width, height);
-
-	rt x3 = -lft x1 = width/2;
-	y2 = y3 = height/2;
-	y1 = y4 = -height/2;
-	tand(alpha#) * (y2 - y1) = x2 - x1 = x3 - x4;
-
-	filldraw z1 -- z2 -- z3 -- z4 -- cycle;
-
-	currentpicture := currentpicture shifted (width/2, 0);
-fet_endchar;
-
-fet_endgroup ("noteheads")
diff --git a/mf/parmesan-rests.mf b/mf/parmesan-rests.mf
deleted file mode 100644
index 314e39b9ad..0000000000
--- a/mf/parmesan-rests.mf
+++ /dev/null
@@ -1,245 +0,0 @@
-% -%-Fundamental-%- -*-Metafont-*-
-% parmesan-rests.mf -- implement ancient rests
-% 
-% source file of LilyPond's pretty-but-neat music font
-% 
-% (c) 2001--2004 Juergen Reuter <reuter@ipd.uka.de>
-% 
-% Neo-mensural rests originally by
-% Christian Mondrup and Mats Bengtsson
-% 
-
-fet_begingroup("rests")
-
-
-%%%%%%%%
-%
-%
-%
-% NEO-MENSURAL NOTATION
-%
-%
-%
-
-% Neo-mensural longa and breve are identical with default longa and breve.
-
-neomens_block_rest_x# = 2/5 staff_space#;
-neomens_block_rest_y# = 1/1 staff_space#;
-neomens_half_block_rest_y# = 5/8 staff_space#;
-
-define_pixels(neomens_block_rest_x,
-	      neomens_block_rest_y, neomens_half_block_rest_y);
-
-def neomens_half_block_rest =
-	draw_block ((0,0), (neomens_block_rest_x, neomens_half_block_rest_y));
-	enddef;
-
-fet_beginchar("Neo-mensural maxima rest", "-3neo_mensural", "neomensmaximarest");
-	set_char_box(0, 3 neomens_block_rest_x#,
-		     neomens_block_rest_y#, neomens_block_rest_y#);
-	draw_block ((0,-neomens_block_rest_y),
-		     (neomens_block_rest_x, neomens_block_rest_y));
-	addto currentpicture also currentpicture shifted (2 neomens_block_rest_x, 0);
-fet_endchar;
-
-fet_beginchar("Neo-mensural longa rest", "-2neo_mensural", "neomenslongarest");
-	set_char_box(0, neomens_block_rest_x#,
-		     neomens_block_rest_y#, neomens_block_rest_y#);
-	draw_block ((0,-neomens_block_rest_y),
-		    (neomens_block_rest_x, neomens_block_rest_y));
-fet_endchar;
-
-fet_beginchar("Neo-mensural breve rest", "-1neo_mensural", "neomensbreverest");
-	set_char_box(0, neomens_block_rest_x#,
-		     0, neomens_block_rest_y#);
-	draw_block ((0,0), (neomens_block_rest_x, neomens_block_rest_y));
-fet_endchar;
-
-fet_beginchar("Neo-mensural whole rest", "0neo_mensural", "neomenssemibrevisrest");
-	set_char_box(0, neomens_block_rest_x#,
-		     neomens_half_block_rest_y#,  0);
-	neomens_half_block_rest;
-	currentpicture :=
-		currentpicture shifted (0,- neomens_half_block_rest_y);
-fet_endchar;
-
-fet_beginchar("Neo-mensural half rest", "1neo_mensural", "neomensminimahalfrest");
-	set_char_box(0, neomens_block_rest_x#,
-		     0, neomens_half_block_rest_y#);
-	neomens_half_block_rest;
-fet_endchar;
-
-neomensrestsize# = 0.8 staff_space#;
-
-fet_beginchar("Neo-mensural 4th rest","2neo_mensural","neomenssemiminimarest")
-	set_char_box(0,neomensrestsize#,0,neomensrestsize#);
-        pickup pencircle scaled 2 stafflinethickness;
-	lft x1 = 0;
-	bot y1 = 0;
-	lft x2 = 0;
-	top y2 = h;
-	rt x3 = w;
-	bot y3 = h/2;
-	draw z1 .. z2;
-	draw z2 .. z3;
-fet_endchar
-
-fet_beginchar("Neo-mensural 8th rest","3neo_mensural","neomensfusarest")
-	set_char_box(0,neomensrestsize#,0,neomensrestsize#);
-        pickup pencircle scaled 2 stafflinethickness;
-	rt x1 = w;
-	bot y1 = 0;
-	rt x2 = w;
-	top y2 = h;
-	lft x3 = 0;
-	bot y3 = h/2;
-	draw z1 .. z2;
-	draw z2 .. z3;
-fet_endchar
-
-fet_beginchar("Neo-mensural 16th rest","4neo_mensural","neomenssemifusarest")
-	set_char_box(0,neomensrestsize#,0,staff_space#);
-        pickup pencircle scaled 2 stafflinethickness;
-	rt x1 = w;
-	bot y1 = 0;
-	rt x2 = w;
-	top y2 = h;
-
-	draw z1 .. z2;
-
-        pickup pencircle scaled 2 stafflinethickness;
-	rt x3 = w;
-	top y3 = h;
-	lft x4 = 0;
-	bot y4 = h/2;
-	rt x5 = w;
-	top y5 = 5/8h;
-	lft x6 = 0;
-	bot y6 = h/8;
-
-	draw z3 .. z4;
-	draw z5 .. z6;
-fet_endchar
-
-
-%%%%%%%%
-%
-%
-%
-% MENSURAL NOTATION
-%
-%
-%
-
-pen_width# = 0.3 staff_space#;
-pen_height# = 0;
-pen_rotation = 30;
-slight_pen_rotation = 15;
-
-mens_block_rest_y# = 1/1 staff_space#;
-mens_half_block_rest_y# = 5/8 staff_space#;
-
-define_pixels(mens_block_rest_y, mens_half_block_rest_y,
-	      pen_width, pen_height);
-
-fet_beginchar("Mensural maxima rest", "-3mensural", "mensmaximarest");
-	set_char_box(0, pen_width#,
-		     mens_block_rest_y#, 2mens_block_rest_y#);
-	pickup pencircle
-		xscaled pen_width
-		yscaled pen_height
-		rotated slight_pen_rotation;
-	draw (w/2, -mens_block_rest_y) -- (w/2, 2 mens_block_rest_y);
-fet_endchar;
-
-fet_beginchar("Mensural longa rest", "-2mensural", "menslongarest");
-	set_char_box(0, pen_width#,
-		     mens_block_rest_y#, mens_block_rest_y#);
-	pickup pencircle
-		xscaled pen_width
-		yscaled pen_height
-		rotated slight_pen_rotation;
-	draw (w/2, -mens_block_rest_y) -- (w/2, mens_block_rest_y);
-fet_endchar;
-
-fet_beginchar("Mensural breve rest", "-1mensural", "mensbreverest");
-	set_char_box(0, pen_width#,
-		     0, mens_block_rest_y#);
-	pickup pencircle
-		xscaled pen_width
-		yscaled pen_height
-		rotated slight_pen_rotation;
-	draw (w/2, 0) -- (w/2, mens_block_rest_y);
-fet_endchar;
-
-fet_beginchar("Mensural whole rest", "0mensural", "menssemibrevisrest");
-	set_char_box(0, pen_width#,
-		     mens_half_block_rest_y#, 0);
-	pickup pencircle
-		xscaled pen_width
-		yscaled pen_height
-		rotated slight_pen_rotation;
-	draw (w/2, 0) -- (w/2, -mens_half_block_rest_y);
-fet_endchar;
-
-fet_beginchar("Mensural half rest", "1mensural", "mensminimahalfrest");
-	set_char_box(0, pen_width#,
-		     0, mens_half_block_rest_y#);
-	pickup pencircle
-		xscaled pen_width
-		yscaled pen_height
-		rotated slight_pen_rotation;
-	draw (w/2, 0) -- (w/2, mens_half_block_rest_y);
-fet_endchar;
-
-mensrestsize# = .8staff_space#;
-
-fet_beginchar("Mensural 4th rest","2mensural","menssemiminimarest")
-	set_char_box(0,mensrestsize#,0,mensrestsize#);
-	pickup pencircle
-		xscaled pen_width
-		yscaled pen_height
-		rotated pen_rotation;
-	lft x1 =      0;     y1 = 0;
-	lft x2 =      0; top y2 = 5/8 h;
-	rt  x3 =  1/5 w; bot y3 = 6/8 h;
-	rt  x4 =      w; bot y4 = 4/8 h;
-	draw z1 -- z2 -- z3 -- z4;
-fet_endchar
-
-fet_beginchar("Mensural 8th rest","3mensural","mensfusarest")
-	set_char_box(0,mensrestsize#,0,mensrestsize#);
-	pickup pencircle
-		xscaled pen_width
-		yscaled pen_height
-		rotated pen_rotation;
-	rt  x1 =      w;     y1 = 0;
-	rt  x2 =      w; top y2 = 5/8 h;
-	lft x3 =  1/5 w; bot y3 = 6/8 h;
-	lft x4 =      0; bot y4 = 4/8 h;
-	draw z1 -- z2 -- z3 -- z4;
-fet_endchar
-
-%
-% FIXME: So far, I have never seen a semifusa rest printed.  Hence,
-% the shape of this font character is currently pure invention.  --jr
-%
-fet_beginchar("Mensural 16th rest","4mensural","menssemifusarest")
-	set_char_box(0,mensrestsize#,0,staff_space#);
-	pickup pencircle
-		xscaled pen_width
-		yscaled pen_height
-		rotated pen_rotation;
-
-	rt  x1 =      w;     y1 = 0;
-	rt  x2 =      w; top y2 = 5.5/8 h;
-	lft x3 =  1/5 w; bot y3 = 6.5/8 h;
-	lft x4 =      0; bot y4 = 4.5/8 h;
-	rt  x5 =      w; top y5 = 2.5/8 h;
-	lft x6 =  1/5 w; bot y6 = 3.5/8 h;
-	lft x7 =      0; bot y7 = 1.5/8 h;
-	draw z1 -- z2 -- z3 -- z4;
-	draw z5 -- z6 -- z7;
-fet_endchar
-
-fet_endgroup ("rests")
diff --git a/mf/parmesan-scripts.mf b/mf/parmesan-scripts.mf
deleted file mode 100644
index 8bc65723d9..0000000000
--- a/mf/parmesan-scripts.mf
+++ /dev/null
@@ -1,138 +0,0 @@
-% -*-Fundamental-*-
-% parmesan-scripts.mf -- implement ancient script symbols
-% 
-% source file of LilyPond's pretty-but-neat music font
-% 
-% (c) 2002--2004 Juergen Reuter <reuter@ipd.uka.de>
-% 
-
-fet_begingroup ("scripts")
-
-fet_beginchar("ictus", "ictus", "ictus")
-	save ht, wd;
-	ht# = .35 staff_space#;
-	wd# = linethickness#;
-	define_pixels(wd, ht);
-	pickup pencircle
-		xscaled wd
-		yscaled blot_diameter;
-	set_char_box(wd#/2, wd#/2, ht#/2, ht#/2);
-	x1 = 0; top y1 = ht/2;
-	x2 = 0; bot y2 = -ht/2;
-	draw z1 -- z2;
-fet_endchar;
-
-
-def draw_accentus =
-	save thick, thin, ht, wd;
-	thin# = 1 linethickness#;
-	thick# = 1.2 linethickness#;
-	ht# = .35 staff_space#;
-	wd# = .25 staff_space#;
-	define_pixels(wd, ht, thin, thick);
-	z1 = z2 = (-wd/2 + thin/2, -ht/2 + thin/2);
-	z3 = z4 = (wd/2 - thick/2, ht/2 - thick/2);
-	penpos1(thin, angle(z1-z3));
-	penpos2(thin, angle(z1-z3)+90);
-	penpos3(thick, angle(z3-z1)+90);
-	penpos4(thick, angle(z3-z1));
-	fill z1r .. z2r -- z3l .. z4r .. z3r -- z2l .. cycle;
-	set_char_box(wd#/2, wd#/2, ht#/2, ht#/2);
-enddef;
-
-fet_beginchar("accentus up", "uaccentus", "uaccentus")
-	draw_accentus;
-fet_endchar;
-
-fet_beginchar("accentus down", "daccentus", "daccentus")
-	draw_accentus;
-	y_mirror_char;
-fet_endchar;
-
-
-def draw_half_ellipse(expr ellips_width, ellips_height) =
-	save width, height, thin, thick;
-	width# = ellips_width;
-	height# = ellips_height;
-	define_pixels(width, height);
-
-	thin = thick = 0.6 linethickness;
-	penpos1(thick, 0);
-	penpos2(thin, -90);
-	z1r = (width/2, 0);
-	z2r = (0, -height/2);
-	penlabels(1,2);
-	penstroke z1e{down} .. {left}z2e;
-	addto currentpicture also currentpicture xscaled -1;
-enddef;
-
-fet_beginchar("half circle", "usemicirculus", "usemicirculus")
-	draw_half_ellipse(5/16 staff_space#, 5/16 staff_space#);
-	currentpicture := currentpicture yscaled -1;
-	set_char_box(width#/2, width#/2, 0, height#/2);
-fet_endchar;
-
-
-fet_beginchar("half circle", "dsemicirculus", "dsemicirculus")
-	draw_half_ellipse(5/16 staff_space#, 5/16 staff_space#);
-	set_char_box(width#/2, width#/2, height#/2, 0);
-fet_endchar;
-
-
-fet_beginchar("circle", "circulus", "circulus")
-	draw_half_ellipse(5/16 staff_space#, 5/16 staff_space#);
-	set_char_box(width#/2, width#/2, height#/2, height#/2);
-	addto currentpicture also currentpicture yscaled -1;
-fet_endchar;
-
-
-fet_beginchar("augmentum", "augmentum", "augmentum")
-	save diameter;
-	diameter# = 0.25 staff_space#;
-	define_pixels(diameter);
-	pickup pencircle scaled diameter;
-	draw (0,0);
-	set_char_box(diameter#/2, diameter#/2, diameter#/2, diameter#/2);
-fet_endchar;
-
-
-def draw_signum_congruentiae =
-	save za, zb, zc, zd, ze, zf, zg, zh;
-	pair za, zb, zc, zd, ze, zf, zg, zh;
-
-	set_char_box(0.50 staff_space# + 1.5 linethickness#,
-		     0.50 staff_space# + 1.5 linethickness#,
-		     2.5 linethickness#,
-		     2.00 staff_space# + 3.5 linethickness#);
-
-	pickup pencircle
-		xscaled 1.0 linethickness
-		yscaled 5.0 linethickness
-		rotated -35;
-	za = (+0.50staff_space, +2.00staff_space);
-	zb = (+0.00staff_space, +2.00staff_space);
-	zc = (-0.50staff_space, +1.50staff_space);
-	zd = (-0.25staff_space, +1.00staff_space);
-	ze = (+0.10staff_space, +0.80staff_space);
-	zf = (+0.00staff_space, +0.00staff_space);
-	draw za{-1,+1} .. zb .. zc .. zd .. ze .. zf;
-
-	pickup pencircle scaled 3.0 linethickness;
-	zg = (-0.5staff_space, +0.0staff_space);
-	zh = (+0.5staff_space, +0.0staff_space);
-	drawdot zg;
-	drawdot zh;
-enddef;
-
-fet_beginchar("signum congruentiae up",
-	      "usignumcongruentiae", "usignumcongruentiae")
-	draw_signum_congruentiae;
-fet_endchar;
-
-fet_beginchar("signum congruentiae down",
-	      "dsignumcongruentiae", "dsignumcongruentiae")
-	draw_signum_congruentiae;
-	xy_mirror_char;
-fet_endchar;
-
-fet_endgroup ("scripts")
diff --git a/mf/parmesan-timesig.mf b/mf/parmesan-timesig.mf
deleted file mode 100644
index cade6d47f1..0000000000
--- a/mf/parmesan-timesig.mf
+++ /dev/null
@@ -1,233 +0,0 @@
-% -*-Fundamental-*-
-% parmesan-timesig.mf -- implement ancient time signatures
-% 
-% source file of LilyPond's pretty-but-neat music font
-% 
-% (c) 1998--2004 Mats Bengtsson <matsb@s3.kth.se>,
-%		 Christian Mondrup <scancm@biobase.dk>
-% (c) 2002--2004 Juergen Reuter <reuter@ipd.uka.de>
-% 
-
-fet_begingroup ("timesig")
-
-path threequartercircle;
-threequartercircle = halfcircle & quartercircle rotated 180;
-
-save Cdiameter, Cthickness, Chairpin;
-Cdiameter# := 3/2 staff_space#;
-Cthickness# := 2 linethickness#;
-Chairpin# := 0.5 linethickness#;
-define_pixels(Cdiameter, Cthickness, Chairpin);
-
-%%%%%%%%
-%
-%
-%
-% MENSURAL NOTATION
-%
-%
-%
-
-def draw_nail (expr bottom_left, top_right) =
-	save round;
-	round = floor min(blot_diameter,
-			  xpart (top_right-bottom_left),
-			  ypart (top_right-bottom_left));
-
-	pickup pencircle scaled round;
-
-	begingroup;
-		save x,y;
-		z2+(round/2,round/2) = top_right + (Cthickness/2, 0);
-		z4-(round/2,round/2) = bottom_left;
-		y3 = y2;
-		y4 = y1;
-		x2 = x1 + Cthickness/2;
-		x2 - x1 = x4 - x3;
-		x5 = x1;
-		x6 = x4;
-		y5 = y6 = y2 - 2Cthickness;
-
-		pickup pencircle scaled round;
-		fill bot z1 .. rt z1 --- rt z5 .. rt z2 .. top z2 ---
-		     top z3 .. lft z3 .. lft z6 --- lft z4 .. bot z4 ---
-		     cycle;
-        endgroup;
-
-enddef;
-
-def mens_timesig (expr verbose_name, internal_name, ly_name,
-			full_circle, reverse_circle, slashed, dotted) =
-
-	fet_beginchar(verbose_name, internal_name, ly_name)
-		if slashed:
-			set_char_box(0,
-				     Cdiameter# + Cthickness#,
-				     .75 (Cdiameter# + Cthickness#),
-				     .75 (Cdiameter# + Cthickness#));
-			if (full_circle or dotted):
-				draw_nail((-Cthickness/2, -d), (Cthickness/2, h));
-			else:
-				draw_nail((-Cthickness, -d), (0, h));
-			fi;
-		else:
-			set_char_box(0,
-				     Cdiameter# + Cthickness#,
-				     .5 (Cdiameter# + Cthickness#),
-				     .5 (Cdiameter# + Cthickness#));
-		fi;
-		pickup pencircle xscaled Cthickness yscaled Chairpin rotated 0;
-		if full_circle:
-			draw fullcircle scaled Cdiameter;
-		elseif reverse_circle:
-			draw threequartercircle rotated 225 scaled Cdiameter;
-		else:
-			draw threequartercircle rotated 45 scaled Cdiameter;
-		fi;
-		if dotted:
-			pickup pencircle scaled 4 linethickness;
-			draw (0,0);
-		fi;
-		currentpicture := currentpicture shifted 0.5(Cdiameter + Cthickness, 0);
-	fet_endchar;
-enddef;
-
-%% tempus imperfectum cum prolatione imperfecta
-mens_timesig ("Mensural 4/4 meter", "mensural4/4", "mensuralfourfourmeter",
-		false, false, false, false);
-
-%% tempus imperfectum cum prolatione imperfecta proportio dupla
-mens_timesig ("Mensural 2/2 meter", "mensural2/2", "mensuralallabreve",
-		false, false, true, false);
-
-%% tempus perfectum cum prolatione imperfecta
-mens_timesig ("Mensural 3/2 meter", "mensural3/2", "mensuralthreetwometer",
-		true, false, false, false);
-
-%% tempus imperfectum cum prolatione perfecta
-mens_timesig ("Mensural 6/4 meter", "mensural6/4", "mensuralsixfourmeter",
-		false, false, false, true);
-
-%% tempus perfectum cum prolatione perfecta
-mens_timesig ("Mensural 9/4 meter", "mensural9/4", "mensuralninefourmeter",
-		true, false, false, true);
-
-%% tempus perfectum cum prolatione imperfecta proportio dupla
-mens_timesig ("Mensural 3/4 meter", "mensural3/4", "mensuralthreefourmeter",
-		true, false, true, false);
-
-%% tempus imperfectum cum prolatione perfecta proportio dupla
-mens_timesig ("Mensural 6/8 meter", "mensural6/8", "mensuralsixeightmeter",
-		false, false, true, true);
-
-%% tempus perfectum cum prolatione perfecta proportio dupla
-mens_timesig ("Mensural 9/8 meter", "mensural9/8", "mensuralnineeight",
-		true, false, true, true);
-	
-%% tempus imperfectum cum prolatione imperfecta diminutio simplex
-mens_timesig ("Mensural 4/8 meter", "mensural4/8", "mensuralfoureightmeter",
-		false, true, false, false);
-
-%% tempus imperfectum cum prolatione perfecta diminutio simplex
-mens_timesig ("Mensural 6/8 meter", "mensural6/8alt", "mensuralsixeightmeteralt",
-		false, true, false, true);
-
-%% tempus imperfectum cum prolatione imperfecta diminutio duplex
-mens_timesig ("Mensural 2/4 meter", "mensural2/4", "mensuraltwofourmeter",
-		false, true, true, false);
-
-%%%%%%%%
-%
-%
-%
-% NEO-MENSURAL NOTATION
-%
-%
-%
-
-save neo_Cdiameter, neo_Cthickness;
-neo_Cdiameter# := 3/2 staff_space#;
-neo_Cthickness# := 2 linethickness#;
-define_pixels(neo_Cdiameter, neo_Cthickness);
-
-def neo_mens_timesig (expr verbose_name, internal_name, ly_name,
-			full_circle, reverse_circle, slashed, dotted) =
-
-	fet_beginchar(verbose_name, internal_name, ly_name)
-		if slashed:
-			set_char_box(0,
-				     neo_Cdiameter# + neo_Cthickness#,
-				     .5 (neo_Cdiameter# + neo_Cthickness#),
-				     .5 (neo_Cdiameter# + neo_Cthickness#));
-			if (full_circle or dotted):
-				draw_block((-neo_Cthickness/2, -d), (neo_Cthickness/2, h));
-			else:
-				draw_block((-neo_Cthickness, -d), (0, h));
-			fi;
-		else:
-			set_char_box(0,
-				     neo_Cdiameter# + neo_Cthickness#,
-				     .5 (neo_Cdiameter# + neo_Cthickness#),
-				     .5 (neo_Cdiameter# + neo_Cthickness#));
-		fi;
-		pickup pencircle scaled neo_Cthickness;
-		if full_circle:
-			draw fullcircle scaled neo_Cdiameter;
-		elseif reverse_circle:
-			draw threequartercircle rotated 225 scaled neo_Cdiameter;
-		else:
-			draw threequartercircle rotated 45 scaled neo_Cdiameter;
-		fi;
-		if dotted:
-			pickup pencircle scaled 4 linethickness;
-			draw (0,0);
-		fi;
-		currentpicture := currentpicture shifted 0.5(neo_Cdiameter + neo_Cthickness, 0);
-	fet_endchar;
-enddef;
-
-%% tempus imperfectum cum prolatione imperfecta
-neo_mens_timesig ("Mensural 4/4 meter", "neo_mensural4/4", "neomensuralfourfourmeter",
-			false, false, false, false);
-
-%% tempus imperfectum cum prolatione imperfecta proportio dupla
-neo_mens_timesig ("Mensural 2/2 meter", "neo_mensural2/2", "neomensuralallabreve",
-			false, false, true, false);
-
-%% tempus perfectum cum prolatione imperfecta
-neo_mens_timesig ("Mensural 3/2 meter", "neo_mensural3/2", "neomensuralthreetwometer",
-			true, false, false, false);
-
-%% tempus imperfectum cum prolatione perfecta
-neo_mens_timesig ("Mensural 6/4 meter", "neo_mensural6/4", "neomensuralsixfourmeter",
-			false, false, false, true);
-
-%% tempus perfectum cum prolatione perfecta
-neo_mens_timesig ("Mensural 9/4 meter", "neo_mensural9/4", "neomensuralninefourmeter",
-			true, false, false, true);
-
-%% tempus perfectum cum prolatione imperfecta proportio dupla
-neo_mens_timesig ("Mensural 3/4 meter", "neo_mensural3/4", "neomensuralthreefourmeter",
-			true, false, true, false);
-
-%% tempus imperfectum cum prolatione perfecta proportio dupla
-neo_mens_timesig ("Mensural 6/8 meter", "neo_mensural6/8", "neomensuralsixeightmeter",
-			false, false, true, true);
-
-%% tempus perfectum cum prolatione perfecta proportio dupla
-neo_mens_timesig ("Mensural 9/8 meter", "neo_mensural9/8", "neomensuralnineeight",
-			true, false, true, true);
-	
-%% tempus imperfectum cum prolatione imperfecta diminutio simplex
-neo_mens_timesig ("Mensural 4/8 meter", "neo_mensural4/8", "neomensuralfoureightmeter",
-			false, true, false, false);
-
-%% tempus imperfectum cum prolatione perfecta diminutio simplex
-neo_mens_timesig ("Mensural 6/8 meter", "neo_mensural6/8alt", "neomensuralsixeightmeteralt",
-			false, true, false, true);
-
-%% tempus imperfectum cum prolatione imperfecta diminutio duplex
-neo_mens_timesig ("Mensural 2/4 meter", "neo_mensural2/4", "neomensuraltwofourmeter",
-			false, true, true, false);
-
-fet_endgroup ("timesig")
diff --git a/mf/parmesan11.mf b/mf/parmesan11.mf
deleted file mode 100644
index d0877b022d..0000000000
--- a/mf/parmesan11.mf
+++ /dev/null
@@ -1,16 +0,0 @@
-% parmesan11.mf
-% part of LilyPond's pretty-but-neat music font
-
-staffsize#:=11.22pt#;
-
-input feta-autometric;
-fet_beginfont("parmesan", 11);
-
-test := 0;
-
-input parmesan-generic;
-
-fet_endfont("parmesan");
-
-end.
-
diff --git a/mf/parmesan13.mf b/mf/parmesan13.mf
deleted file mode 100644
index 06878f2388..0000000000
--- a/mf/parmesan13.mf
+++ /dev/null
@@ -1,16 +0,0 @@
-% parmesan13.mf
-% part of LilyPond's pretty-but-neat music font
-
-staffsize#:=12.60pt#;
-
-input feta-autometric;
-fet_beginfont("parmesan", 13);
-
-test := 0;
-
-input parmesan-generic;
-
-fet_endfont("parmesan");
-
-end.
-
diff --git a/mf/parmesan14.mf b/mf/parmesan14.mf
deleted file mode 100644
index 2e78a737d2..0000000000
--- a/mf/parmesan14.mf
+++ /dev/null
@@ -1,16 +0,0 @@
-% parmesan13.mf
-% part of LilyPond's pretty-but-neat music font
-
-staffsize#:=14.14pt#;
-
-input feta-autometric;
-fet_beginfont("parmesan", 14);
-
-test := 0;
-
-input parmesan-generic;
-
-fet_endfont("parmesan");
-
-end.
-
diff --git a/mf/parmesan16.mf b/mf/parmesan16.mf
deleted file mode 100644
index 0b6f322022..0000000000
--- a/mf/parmesan16.mf
+++ /dev/null
@@ -1,16 +0,0 @@
-% parmesan16.mf
-% part of LilyPond's pretty-but-neat music font
-
-staffsize#:=15.87pt#;
-
-input feta-autometric;
-fet_beginfont("parmesan", 16);
-
-test := 0;
-
-input parmesan-generic;
-
-fet_endfont("parmesan");
-
-end.
-
diff --git a/mf/parmesan18.mf b/mf/parmesan18.mf
deleted file mode 100644
index dc87d6eb72..0000000000
--- a/mf/parmesan18.mf
+++ /dev/null
@@ -1,16 +0,0 @@
-% parmesan13.mf
-% part of LilyPond's pretty-but-neat music font
-
-staffsize#:=17.82pt#;
-
-input feta-autometric;
-fet_beginfont("parmesan", 18);
-
-test := 0;
-
-input parmesan-generic;
-
-fet_endfont("parmesan");
-
-end.
-
diff --git a/mf/parmesan20.mf b/mf/parmesan20.mf
deleted file mode 100644
index 8cda6b2a3a..0000000000
--- a/mf/parmesan20.mf
+++ /dev/null
@@ -1,16 +0,0 @@
-% parmesan20.mf
-% part of LilyPond's pretty-but-neat music font
-
-staffsize#:=20pt#;
-
-input feta-autometric;
-fet_beginfont("parmesan", 20);
-
-test := 0;
-
-input parmesan-generic;
-
-fet_endfont("parmesan");
-
-end.
-
diff --git a/mf/parmesan23.mf b/mf/parmesan23.mf
deleted file mode 100644
index 4ab3732714..0000000000
--- a/mf/parmesan23.mf
+++ /dev/null
@@ -1,16 +0,0 @@
-% parmesan23.mf
-% part of LilyPond's pretty-but-neat music font
-
-staffsize#:=22.45pt#;
-
-input feta-autometric;
-fet_beginfont("parmesan", 23);
-
-test := 0;
-
-input parmesan-generic;
-
-fet_endfont("parmesan");
-
-end.
-
diff --git a/mf/parmesan26.mf b/mf/parmesan26.mf
deleted file mode 100644
index 3b86b2232d..0000000000
--- a/mf/parmesan26.mf
+++ /dev/null
@@ -1,16 +0,0 @@
-% parmesan26.mf
-% part of LilyPond's pretty-but-neat music font
-
-staffsize#:=25.20pt#;
-
-input feta-autometric;
-fet_beginfont("parmesan", 26);
-
-test := 0;
-
-input parmesan-generic;
-
-fet_endfont("parmesan");
-
-end.
-
diff --git a/po/GNUmakefile b/po/GNUmakefile
deleted file mode 100644
index 0977351160..0000000000
--- a/po/GNUmakefile
+++ /dev/null
@@ -1,33 +0,0 @@
-# title	   makefile for po
-# file	   po/Makefile 
-
-depth = ..
-
-NAME = lilypond
-MODULE_NAME = po
-
-POT_FILES = $(wildcard *.pot)
-PO_FILES = $(wildcard *.po)
-MO_FILES = $(addprefix $(outdir)/, $(PO_FILES:.po=.mo))
-HELP_CATALOGS = $(PO_FILES:%.po=%)
-CATALOGS = $(HELP_CATALOGS:lilypond=) 
-EXTRA_DIST_FILES = TODO $(PO_FILES) $(POT_FILES)
-STEPMAKE_TEMPLATES=podir
-
-include $(depth)/make/stepmake.make 
-
-default: $(MO_FILES)
-
-local-install: $(MO_FILES)
-	for i in $(CATALOGS); do \
-	  $(INSTALL) -d $(localedir)/$$i/LC_MESSAGES; \
-	  $(INSTALL) -m 644 $(outdir)/$$i.mo \
-	  $(localedir)/$$i/LC_MESSAGES/$(package).mo; \
-	done
-
-local-uninstall:
-	for i in $(CATALOGS); do \
-	  rm -f $(localedir)/$$i/LC_MESSAGES/$(package).mo; \
-	  rmdir $(localedir)/$$i/LC_MESSAGES || true; \
-	done
-
diff --git a/po/TODO b/po/TODO
deleted file mode 100644
index 3bbe154732..0000000000
--- a/po/TODO
+++ /dev/null
@@ -1,31 +0,0 @@
-TODO
-
-FIX OR STANDARDISE TARGETS
-
-* at toplevel, do:
-
-    make po
-    make -C po po-update  (or do `make po-update' at toplevel)
-
-* if there are no errors (a list of changes may be displayed, that's ok), do
-
-    cp po/out/*.po po
-
-* and edit your favorite po/LANG.po.  Especially, look for `,fuzzy' entries,
-  empty entries.  At the bottom of the file you may find a list of obsolete
-  translations.
-
-* because i never install LilyPond, I (check-out buildscripts/set-lily.sh)
-  made these links:
-
-    ln -s $LILYPOND_SOURCEDIR/po/out/nl.mo 
-        $PREFIX/usr/share/locale/nl/LC_MESSAGES/lilypond.mo
-    ln -s $LILYPOND_SOURCEDIR/po/out/it.mo 
-        $PREFIX/usr/share/locale/it/LC_MESSAGES/lilypond.mo
-
-  $PREFIX is the --prefix you passed to configure.
-
-  then simply type, e.g.
-
-      LANG=nl lilypond -h
-
diff --git a/po/cs.po b/po/cs.po
deleted file mode 100644
index c2ed7e4eb1..0000000000
--- a/po/cs.po
+++ /dev/null
@@ -1,2472 +0,0 @@
-# Czech translation of GNU LilyPond
-# Copyright (C) 2002 Free Software Foundation, Inc.
-# Tomas Kopecek <xkopec14@stud.fit.vutbr.cz>, 2002.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: lilypond 1.6.0\n"
-"POT-Creation-Date: 2003-07-18 14:45+0200\n"
-"PO-Revision-Date: 2002-09-28 10:27+0200\n"
-"Last-Translator: Tomá¹ Kopeèek <xkopec14@stud.fit.vutbr.cz>\n"
-"Language-Team: Czech <cz@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=iso-8859-2\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#. this is where special info is often stored
-#. ###############################################################
-#. lilylib.py -- options and stuff
-#.
-#. source file of the GNU LilyPond music typesetter
-#.
-#. (c)  1998--2003  Han-Wen Nienhuys <hanwen@cs.uu.nl>
-#. Jan Nieuwenhuizen <janneke@gnu.org>
-#. ##  subst:\(^\|[^._a-z]\)\(abspath\|identify\|warranty\|progress\|warning\|error\|exit\|getopt_args\|option_help_str\|options_help_str\|help\|setup_temp\|read_pipe\|system\|cleanup_temp\|strip_extension\|cp_to_dir\|mkdir_p\|init\) *(
-#. ##  replace:\1ly.\2 (
-#. ## subst: \(help_summary\|keep_temp_dir_p\|option_definitions\|original_dir\|program_name\|pseudo_filter_p\|temp_dir\|verbose_p\)
-#. ###############################################################
-#. Users of python modules should include this snippet
-#. and customize variables below.
-#. We'll suffer this path init stuff as long as we don't install our
-#. python packages in <prefix>/lib/pythonx.y (and don't kludge around
-#. it as we do with teTeX on Red Hat Linux: set some environment var
-#. (PYTHONPATH) in profile)
-#. If set, LILYPONDPREFIX must take prevalence
-#. if datadir is not set, we're doing a build and LILYPONDPREFIX
-#. Customize these
-#. lilylib globals
-#: lilylib.py:60
-msgid "lilylib module"
-msgstr ""
-
-#: lilylib.py:63 lilypond-book.py:131 lilypond.py:128 midi2ly.py:100
-#: mup2ly.py:75 main.cc:111
-msgid "print this help"
-msgstr "tato nápovìda"
-
-#. ###############################################################
-#. Handle bug in Python 1.6-2.1
-#.
-#. there are recursion limits for some patterns in Python 1.6 til 2.1.
-#. fix this by importing pre instead. Fix by Mats.
-#. Attempt to fix problems with limited stack size set by Python!
-#. Sets unlimited stack size. Note that the resource module only
-#. is available on UNIX.
-#: lilylib.py:114 midi2ly.py:136 mup2ly.py:130 main.cc:188 main.cc:200
-#, c-format, python-format
-msgid "Copyright (c) %s by"
-msgstr "Copyright (c) %s by"
-
-#: lilylib.py:114
-msgid " 1998--2003"
-msgstr ""
-
-#: lilylib.py:118
-#, fuzzy
-msgid "Distributed under terms of the GNU General Public License."
-msgstr ""
-"Distribuováno ve znìní licence GNU General Public License. Program je "
-"nabízen BEZ jakékoliv ZÁRUKY"
-
-#: lilylib.py:120
-msgid "It comes with NO WARRANTY."
-msgstr ""
-
-#: lilylib.py:127 midi2ly.py:150 mup2ly.py:144 input.cc:88
-msgid "warning: "
-msgstr "varování: "
-
-#. lots of midi files use plain text for lyric events
-#. FIXME: read from stdin when files[0] = '-'
-#: lilylib.py:130 midi2ly.py:165 midi2ly.py:1018 midi2ly.py:1083 mup2ly.py:147
-#: mup2ly.py:161 input.cc:93
-msgid "error: "
-msgstr "chyba: "
-
-#: lilylib.py:134
-#, fuzzy, python-format
-msgid "Exiting (%d)..."
-msgstr "Konèím ... "
-
-#: lilylib.py:194 midi2ly.py:224 mup2ly.py:220
-#, python-format
-msgid "Usage: %s [OPTIONS]... FILE"
-msgstr "Pou¾ití: %s [PØEPÍNAÈ]... SOUBOR"
-
-#: lilylib.py:198 midi2ly.py:228 mup2ly.py:224 main.cc:166
-msgid "Options:"
-msgstr "Pøepínaèe:"
-
-#: lilylib.py:202 midi2ly.py:232 mup2ly.py:228 main.cc:172
-#, c-format, python-format
-msgid "Report bugs to %s."
-msgstr ""
-"Chyby v programu oznamujte na adrese %s (pouze anglicky),\n"
-"pøipomínky k pøekladu zasílejte na <cs@li.org> (èesky)."
-
-#: lilylib.py:228
-#, python-format
-msgid "Opening pipe `%s'"
-msgstr ""
-
-#. successful pipe close returns 'None'
-#: lilylib.py:240
-#, python-format
-msgid "`%s' failed (%d)"
-msgstr ""
-
-#: lilylib.py:242 lilylib.py:289 lilypond-book.py:231 lilypond.py:512
-msgid "The error log is as follows:"
-msgstr "Hlá¹ení chyby je takovéto:"
-
-#: lilylib.py:262 midi2ly.py:260 mup2ly.py:256
-#, python-format
-msgid "Invoking `%s'"
-msgstr "Vyvolávám `%s'"
-
-#: lilylib.py:264
-#, python-format
-msgid "Running %s..."
-msgstr "Bì¾í %s..."
-
-#: lilylib.py:282
-#, python-format
-msgid "`%s' failed (%s)"
-msgstr ""
-
-#: lilylib.py:285 midi2ly.py:266 mup2ly.py:264
-msgid "(ignored)"
-msgstr "(ignorováno)"
-
-#: lilylib.py:299 midi2ly.py:276 mup2ly.py:274
-#, python-format
-msgid "Cleaning %s..."
-msgstr "Odstraòuji %s..."
-
-#. Duh.  Python style portable: cp *.EXT OUTDIR
-#. system ('cp *.%s %s' % (ext, outdir), 1)
-#. Python < 1.5.2 compatibility
-#.
-#. On most platforms, this is equivalent to
-#. `normpath(join(os.getcwd()), PATH)'.  *Added in Python version 1.5.2*
-#. tex needs lots of memory, more than it gets by default on Debian
-#. TODO: * prevent multiple addition.
-#. * clean TEXINPUTS, MFINPUTS, TFMFONTS,
-#. as these take prevalence over $TEXMF
-#. and thus may break tex run?
-#. $TEXMF is special, previous value is already taken care of
-#. # -sOutputFile does not work with bbox?
-#. # todo:
-#. # have better algorithm for deciding when to crop page,
-#. # and when to show full page
-#: lilylib.py:458
-msgid "Removing output file"
-msgstr ""
-
-#. !@PYTHON@
-#. once upon a rainy monday afternoon.
-#.
-#. ...
-#.
-#. (not finished.)
-#. ABC standard v1.6:  http://www.gre.ac.uk/~c.walshaw/abc2mtex/abc.txt
-#.
-#. Enhancements  (Roy R. Rankin)
-#.
-#. Header section moved to top of lilypond file
-#. handle treble, treble-8, alto, and bass clef
-#. Handle voices (V: headers) with clef and part names, multiple voices
-#. Handle w: lyrics with multiple verses
-#. Handle key mode names for minor, major, phrygian, ionian, locrian, aeolian,
-#. mixolydian, lydian, dorian
-#. Handle part names from V: header
-#. Tuplets handling fixed up
-#. Lines starting with |: not discarded as header lines
-#. Multiple T: and C: header entries handled
-#. Accidental maintained until next bar check
-#. Silent rests supported
-#. articulations fermata, upbow, downbow, ltoe, accent, tenuto supported
-#. Chord strings([-^]"string") can contain a '#'
-#. Header fields enclosed by [] in notes string processed
-#. W: words output after tune as abc2ps does it (they failed before)
-#. Enhancements (Laura Conrad)
-#.
-#. Barring now preserved between ABC and lilypond
-#. the default placement for text in abc is above the staff.
-#. %%LY now supported.
-#. \breve and \longa supported.
-#. M:none doesn't crash lily.
-#. Limitations
-#.
-#. Multiple tunes in single file not supported
-#. Blank T: header lines should write score and open a new score
-#. Not all header fields supported
-#. ABC line breaks are ignored
-#. Block comments generate error and are ignored
-#. Postscript commands are ignored
-#. lyrics not resynchronized by line breaks (lyrics must fully match notes)
-#. %%LY slyrics can't be directly before a w: line.
-#. ???
-#. TODO:
-#.
-#. Convert to new chord styles.
-#.
-#. UNDEF -> None
-#.
-#. uGUHGUHGHGUGH
-#. UGH
-#. treble8 is used by abctab2ps; -8va is used by barfly,
-#. and by my patch to abc2ps. If there's ever a standard
-#. about this we'll support that.
-#. find keywork
-#. assume that Q takes the form "Q:1/4=120"
-#. There are other possibilities, but they are deprecated
-#. outf.write ("\t\t\\consists Staff_margin_engraver\n")
-#. pitch manipulation. Tuples are (name, alteration).
-#. 0 is (central) C. Alteration -1 is a flat, Alteration +1 is a sharp
-#. pitch in semitones.
-#. abc to lilypond key mode names
-#. semitone shifts for key mode names
-#. latex does not like naked #'s
-#. latex does not like naked "'s
-#. break lyrics to words and put "'s around words containing numbers and '"'s
-#. escape "
-#. _ causes probs inside ""
-#. _ to ' _ '
-#. split words with -
-#. unless \-
-#. ~ to space('_')
-#. * to to space
-#. latex does not like naked #'s
-#. put numbers and " and ( into quoted string
-#. insure space between lines
-#. title
-#. strip trailing blanks
-#. Meter
-#. KEY
-#. seperate clef info
-#. there may or may not be a space
-#. between the key letter and the mode
-#. ugh.
-#. ugh.
-#. Notes
-#. Origin
-#. Reference Number
-#. Area
-#. History
-#. Book
-#. Composer
-#. Default note length
-#. Voice
-#. Words
-#. vocals
-#. tempo
-#. we use in this order specified accidental, active accidental for bar,
-#. active accidental for key
-#. (num /  den)  / defaultlen < 1/base
-#. return (str, num,den,dots)
-#. ignore slide
-#. ignore roll
-#. s7m2 input doesnt care about spaces
-#.
-#. remember accidental for rest of bar
-#.
-#. get accidental set in this bar or UNDEF if not set
-#. WAT IS ABC EEN ONTZETTENDE PROGRAMMEERPOEP  !
-#. failed; not a note!
-#. escape '#'s
-#.
-#. |] thin-thick double bar line
-#. || thin-thin double bar line
-#. [| thick-thin double bar line
-#. :| left repeat
-#. |: right repeat
-#. :: left-right repeat
-#. |1 volta 1
-#. |2 volta 2
-#. first try the longer one
-#. bracket escape
-#. the nobarlines option is necessary for an abc to lilypond translator for
-#. exactly the same reason abc2midi needs it: abc requires the user to enter
-#. the note that will be printed, and MIDI and lilypond expect entry of the
-#. pitch that will be played.
-#.
-#. In standard 19th century musical notation, the algorithm for translating
-#. between printed note and pitch involves using the barlines to determine
-#. the scope of the accidentals.
-#.
-#. Since ABC is frequently used for music in styles that do not use this
-#. convention, such as most music written before 1700, or ethnic music in
-#. non-western scales, it is necessary to be able to tell a translator that
-#. the barlines should not affect its interpretation of the pitch.
-#. write other kinds of appending  if we ever need them.
-#. add comments to current voice
-#. Try nibbling characters off until the line doesn't change.
-#. dump_global (outf)
-#. !@PYTHON@
-#.
-#. convert-ly.py -- Update old LilyPond input files (fix name?)
-#.
-#. source file of the GNU LilyPond music typesetter
-#.
-#. (c)  1998--2003  Han-Wen Nienhuys <hanwen@cs.uu.nl>
-#. Jan Nieuwenhuizen <janneke@gnu.org>
-#. TODO
-#. use -f and -t for -s output
-#. NEWS
-#. 0.2
-#. - rewrite in python
-#. Did we ever have \mudela-version?  I doubt it.
-#. lilypond_version_re_str = '\\\\version *\"(.*)\"'
-#. ###########################
-#. need new a namespace
-#. raise FatalConversionError()
-#. need new a namespace
-#. harmful to current .lys
-#. str = re.sub ('\\\\key([^;]+);', '\\\\accidentals \\1;', str)
-#. raise FatalConversionError()
-#. raise FatalConversionError()
-#. raise FatalConversionError()
-#. TODO: lots of other syntax change should be done here as well
-#. Ugh, but meaning of \stemup changed too
-#. maybe we should do \stemup -> \stemUp\slurUp\tieUp ?
-#. I don't know exactly when these happened...
-#. ugh, we loose context setting here...
-#. (lacks capitalisation slur -> Slur)
-#. # dynamic..
-#. TODO: add lots of these
-#. ugh
-#. old fix
-#. Make sure groups of more than one ; have space before
-#. them, so that non of them gets removed by next rule
-#. Only remove ; that are not after spaces, # or ;
-#. Otherwise  we interfere with Scheme comments,
-#. which is badbadbad.
-#. 40 ?
-#. ###############################
-#. END OF CONVERSIONS
-#. ###############################
-#. !@PYTHON@
-#. info mostly taken from looking at files. See also
-#. http://lilypond.org/wiki/?EnigmaTransportFormat
-#. This supports
-#.
-#. * notes
-#. * rests
-#. * ties
-#. * slurs
-#. * lyrics
-#. * articulation
-#. * grace notes
-#. * tuplets
-#.
-#. todo:
-#. * slur/stem directions
-#. * voices (2nd half of frame?)
-#. * more intelligent lyrics
-#. * beams (better use autobeam?)
-#. * more robust: try entertainer.etf (freenote)
-#. * dynamics
-#. * empty measures (eg. twopt03.etf from freenote)
-#.
-#. uGUHGUHGHGUGH
-#. notename 0 == central C
-#. represent pitches as (notename, alteration), relative to C-major scale
-#. a fifth up
-#. should cache this.
-#. flag1 isn't all that interesting.
-#. 3: '>',
-#. 18: '\arpeggio' ,
-#. do grace notes.
-#. ugh.
-#. we don't attempt voltas since they fail easily.
-#. and g.repeat_bar == '|:' or g.repeat_bar == ':|:' or g.bracket:
-#. 4 layers.
-#. let's not do this: this really confuses when eE happens to be before  a ^text.
-#. if last_tag and last_indices:
-#. etf_file_dict[last_tag][last_indices].append (l)
-#. # do it
-#. staff-spec
-#. should use \addlyrics ?
-#. !@PYTHON@
-#. vim: set noexpandtab:
-#. This is was the idea for handling of comments:
-#. Multiline comments, @ignore .. @end ignore is scanned for
-#. in read_doc_file, and the chunks are marked as 'ignore', so
-#. lilypond-book will not touch them any more. The content of the
-#. chunks are written to the output file. Also 'include' and 'input'
-#. regex has to check if they are commented out.
-#.
-#. Then it is scanned for 'lilypond', 'lilypond-file' and 'lilypond-block'.
-#. These three regex's has to check if they are on a commented line,
-#. % for latex, @c for texinfo.
-#.
-#. Then lines that are commented out with % (latex) and @c (Texinfo)
-#. are put into chunks marked 'ignore'. This cannot be done before
-#. searching for the lilypond-blocks because % is also the comment character
-#. for lilypond.
-#.
-#. The the rest of the rexeces are searched for. They don't have to test
-#. if they are on a commented out line.
-#. ###############################################################
-#. Users of python modules should include this snippet
-#. and customize variables below.
-#. We'll suffer this path init stuff as long as we don't install our
-#. python packages in <prefix>/lib/pythonx.y (and don't kludge around
-#. it as we do with teTeX on Red Hat Linux: set some environment var
-#. (PYTHONPATH) in profile)
-#. If set, LILYPONDPREFIX must take prevalence
-#. if datadir is not set, we're doing a build and LILYPONDPREFIX
-#. Customize these
-#. if __name__ == '__main__':
-#. lilylib globals
-#. temp_dir = os.path.join (original_dir,  '%s.dir' % program_name)
-#. urg
-#. # FIXME
-#. # do -P or -p by default?
-#. #help_summary = _ ("Run LilyPond using LaTeX for titling")
-#: lilypond-book.py:120
-msgid "Process LilyPond snippets in hybrid html, LaTeX or texinfo document"
-msgstr ""
-
-#. another bug in option parser: --output=foe is taken as an abbreviation
-#. for --output-format
-#: lilypond-book.py:125 main.cc:110
-msgid "EXT"
-msgstr "PØÍP"
-
-#: lilypond-book.py:125
-msgid "use output format EXT (texi [default], texi-html, latex, html)"
-msgstr ""
-
-#: lilypond-book.py:126 lilypond-book.py:127 lilypond-book.py:129
-#: lilypond-book.py:130
-#, fuzzy
-msgid "DIM"
-msgstr "ADRESÁØ"
-
-#: lilypond-book.py:126
-msgid "default fontsize for music.  DIM is assumed to be in points"
-msgstr ""
-
-#: lilypond-book.py:127
-msgid "deprecated, use --default-music-fontsize"
-msgstr ""
-
-#: lilypond-book.py:128
-msgid "OPT"
-msgstr ""
-
-#: lilypond-book.py:128
-msgid "pass OPT quoted to the lilypond command line"
-msgstr ""
-
-#: lilypond-book.py:129
-msgid "force fontsize for all inline lilypond. DIM is assumed be to in points"
-msgstr ""
-
-#: lilypond-book.py:130
-msgid "deprecated, use --force-music-fontsize"
-msgstr ""
-
-#: lilypond-book.py:132 lilypond.py:130 main.cc:113 main.cc:118
-msgid "DIR"
-msgstr "ADRESÁØ"
-
-#: lilypond-book.py:132
-msgid "include path"
-msgstr ""
-
-#: lilypond-book.py:133
-#, fuzzy
-msgid "write dependencies"
-msgstr "pøidává ADRESÁØ do závislostí"
-
-#: lilypond-book.py:134
-msgid "PREF"
-msgstr ""
-
-#: lilypond-book.py:134
-#, fuzzy
-msgid "prepend PREF before each -M dependency"
-msgstr "pøidává ADRESÁØ do závislostí"
-
-#: lilypond-book.py:135
-#, fuzzy
-msgid "don't run lilypond"
-msgstr "nespou¹tí LilyPond"
-
-#: lilypond-book.py:136
-msgid "don't generate pictures"
-msgstr ""
-
-#: lilypond-book.py:137
-msgid "strip all lilypond blocks from output"
-msgstr ""
-
-#: lilypond-book.py:138 lilypond-book.py:139 lilypond.py:135 lilypond.py:136
-#: midi2ly.py:102 main.cc:114 main.cc:117
-msgid "FILE"
-msgstr "SOUBOR"
-
-#: lilypond-book.py:138
-#, fuzzy
-msgid "filename main output file"
-msgstr "LaTeX selhal u výstupního souboru."
-
-#: lilypond-book.py:139
-msgid "where to place generated files"
-msgstr ""
-
-#: lilypond-book.py:140 lilypond.py:137
-msgid "RES"
-msgstr ""
-
-#: lilypond-book.py:141 lilypond.py:138
-msgid "set the resolution of the preview to RES"
-msgstr "nastavuje rozli¹ení náhledu na RES"
-
-#: lilypond-book.py:142 lilypond.py:148 midi2ly.py:105 mup2ly.py:78 main.cc:126
-msgid "be verbose"
-msgstr "vypisuje více informací"
-
-#: lilypond-book.py:143
-#, fuzzy
-msgid "print version information"
-msgstr "vypisuje èíslo verze"
-
-#: lilypond-book.py:144 lilypond.py:150 midi2ly.py:107 mup2ly.py:80 main.cc:127
-msgid "show warranty and copyright"
-msgstr "vypisuje záruku a copyright"
-
-#. format specific strings, ie. regex-es for input, and % strings for output
-#. global variables
-#. lilypond_binary = 'valgrind --suppressions=/home/hanwen/usr/src/guile-1.6.supp  --num-callers=10 /home/hanwen/usr/src/lilypond/lily/out/lilypond'
-#. only use installed binary  when we're installed too.
-#. only use installed binary  when we're installed too.
-#. ###############################################################
-#. Dimension handling for LaTeX.
-#.
-#. Ugh.  (La)TeX writes progress and error messages on stdout
-#. Redirect to stderr
-#: lilypond-book.py:230
-#, fuzzy
-msgid "LaTeX failed."
-msgstr "Spu¹tìní LaTeXu selhalo"
-
-#. URG see lilypond
-#. Convert numeric values, with or without specific dimension, to floats.
-#. Keep other strings
-#. ###############################################################
-#. How to output various structures.
-#. # maybe <hr> ?
-#. Verbatim text is always finished with \n.  FIXME: For HTML,
-#. this newline should be removed.
-#. Verbatim text is always finished with \n.  FIXME: For HTML,
-#. this newline should be removed.
-#. # Ugh we need to differentiate on origin:
-#. # lilypond-block origin wants an extra <p>, but
-#. # inline music doesn't.
-#. # possibly other center options?
-#. verbatim text is always finished with \n
-#. verbatim text is always finished with \n
-#. verbatim text is always finished with \n
-#. verbatim text is always finished with \n
-#. do some tweaking: @ is needed in some ps stuff.
-#.
-#. ugh, the <p> below breaks inline images...
-#. clumsy workaround for python 2.2 pre bug.
-#. ###############################################################
-#. Recognize special sequences in the input
-#. Warning: This uses extended regular expressions.  Tread with care.
-#.
-#. legenda
-#.
-#. (?P<name>regex) -- assign result of REGEX to NAME
-#. *? -- match non-greedily.
-#. (?m) -- multiline regex: make ^ and $ match at each line
-#. (?s) -- make the dot match all characters including newline
-#. why do we have distinction between @mbinclude and @include?
-#. # we'd like to catch and reraise a more
-#. # detailed error, but alas, the exceptions
-#. # changed across the 1.5/2.1 boundary.
-#. ughUGH not original options
-#. First we want to scan the \documentclass line
-#. it should be the first non-comment line.
-#. The only thing we really need to know about the \documentclass line
-#. is if there are one or two columns to begin with.
-#. Then we add everything before \begin{document} to
-#. paperguru.m_document_preamble so that we can later write this header
-#. to a temporary file in find_latex_dims() to find textwidth.
-#. this is not bulletproof..., it checks the first 10 chunks
-#. newchunks.extend (func (m))
-#. python 1.5 compatible:
-#. we have to check for verbatim before doing include,
-#. because we don't want to include files that are mentioned
-#. inside a verbatim environment
-#. ugh fix input
-#. # Hmm, we should hash only lilypond source, and skip the
-#. # %options are ...
-#. # comment line
-#. # todo: include path, but strip
-#. # first part of the path.
-#. format == 'html'
-#. ugh rename
-#. Count sections/chapters.
-#. # TODO: do something like
-#. # this for texinfo/latex as well ?
-#. ugh
-#. fixme: be sys-independent.
-#.
-#. Ugh, fixing up dependencies for .tex generation
-#.
-#. Ugh.  (La)TeX writes progress and error messages on stdout
-#. Redirect to stderr
-#. # There used to be code to write .tex dependencies, but
-#. # that is silly: lilypond-book has its own dependency scheme
-#. # to ensure that all lily-XXX.tex files are there
-#. # TODO: put file name in front of texidoc.
-#. #
-#. # what's this? Docme --hwn
-#. #
-#. #docme: why global?
-#. Do It.
-#. should chmod -w
-#: lilypond-book.py:1557 lilypond.py:673 midi2ly.py:1018
-#, python-format
-msgid "getopt says: `%s'"
-msgstr "getopt øíká: `%s'"
-
-#. HACK
-#. status = os.system ('lilypond -w')
-#: lilypond-book.py:1630 lilypond.py:777
-#, fuzzy
-msgid "no files specified on command line"
-msgstr "na pøíkazové øádce nebyly zadány ¾ádné soubory"
-
-#.
-#. Petr, ik zou willen dat ik iets zinvoller deed,
-#. maar wat ik kan ik doen, het verandert toch niets?
-#. --hwn 20/aug/99
-#. !@PYTHON@
-#.
-#. lilypond.py -- Run LilyPond, add titles to bare score, generate printable
-#. document
-#. Invokes: lilypond, latex (or pdflatex), dvips, ps2pdf, gs
-#.
-#. source file of the GNU LilyPond music typesetter
-#.
-#. (c)  1998--2003  Han-Wen Nienhuys <hanwen@cs.uu.nl>
-#. Jan Nieuwenhuizen <janneke@gnu.org>
-#. This is the third incarnation of lilypond.
-#.
-#. Earlier incarnations of lilypond were written by
-#. Jeffrey B. Reed<daboys@austin.rr.com> (Python version)
-#. Jan Arne Fagertun <Jan.A.Fagertun@@energy.sintef.no> (Bourne shell script)
-#.
-#. Note: gettext work best if we use ' for docstrings and "
-#. for gettextable strings.
-#. --> DO NOT USE ''' for docstrings.
-#. ###############################################################
-#. Users of python modules should include this snippet
-#. and customize variables below.
-#. We'll suffer this path init stuff as long as we don't install our
-#. python packages in <prefix>/lib/pythonx.y (and don't kludge around
-#. it as we do with teTeX on Red Hat Linux: set some environment var
-#. (PYTHONPATH) in profile)
-#. If set, LILYPONDPREFIX must take prevalence
-#. if datadir is not set, we're doing a build and LILYPONDPREFIX
-#. Customize these
-#. if __name__ == '__main__':
-#. lilylib globals
-#. # FIXME
-#. # do -P or -p by default?
-#. #help_summary = _ ("Run LilyPond using LaTeX for titling")
-#: lilypond.py:121
-msgid "Run LilyPond, add titles, generate printable document."
-msgstr ""
-
-#: lilypond.py:127 main.cc:115
-msgid "write Makefile dependencies for every input file"
-msgstr "zapisuje závislosti Makefile pro v¹echny vstupní soubory "
-
-#: lilypond.py:129
-msgid "print even more output"
-msgstr ""
-
-#: lilypond.py:130
-msgid "add DIR to LilyPond's search path"
-msgstr "pøidává ADRESÁØ do vyhledávací cesty LilyPondu"
-
-#: lilypond.py:132
-#, fuzzy, python-format
-msgid "keep all output, output to directory %s.dir"
-msgstr "ponechává ve¹keré výstupy, výstupní adresáø pojmenuje %s.dir"
-
-#: lilypond.py:133
-msgid "don't run LilyPond"
-msgstr "nespou¹tí LilyPond"
-
-#: lilypond.py:134 main.cc:116
-msgid "produce MIDI output only"
-msgstr "vytváøí pouze MIDI výstup"
-
-#: lilypond.py:135 midi2ly.py:102
-msgid "write output to FILE"
-msgstr "zapisuje výstup do SOUBORu"
-
-#: lilypond.py:136
-msgid "find pfa fonts used in FILE"
-msgstr "vyhledává pfa fonty pou¾ívané v SOUBORu"
-
-#: lilypond.py:139
-msgid "generate PostScript output"
-msgstr "vytváøí PostScriptový výstup"
-
-#: lilypond.py:140
-msgid "generate PNG page images"
-msgstr ""
-
-#: lilypond.py:141
-#, fuzzy
-msgid "generate PS.GZ"
-msgstr "vytváøí PDF výstup"
-
-#: lilypond.py:142
-#, fuzzy
-msgid "generate PDF output"
-msgstr "vytváøí PDF výstup"
-
-#: lilypond.py:143
-msgid "use pdflatex to generate a PDF output"
-msgstr "pou¾ije pdflatex pro vygenerování PDF výstupu"
-
-#. FIXME: preview, picture; to indicate creation of a PNG?
-#: lilypond.py:145
-msgid "make a picture of the first system"
-msgstr "vytvoøí obrázek prvního systému"
-
-#: lilypond.py:146
-msgid "make HTML file with links to all output"
-msgstr ""
-
-#: lilypond.py:147
-msgid "KEY=VAL"
-msgstr "KLÍÈ=HODN"
-
-#: lilypond.py:147
-msgid "change global setting KEY to VAL"
-msgstr "zmìní globální nastavení KLÍÈe na HODN"
-
-#: lilypond.py:149 midi2ly.py:106 mup2ly.py:79 main.cc:125
-msgid "print version number"
-msgstr "vypisuje èíslo verze"
-
-#. other globals
-#. Pdftex support
-#. # yuk.
-#. lilypond_binary = 'valgrind --suppressions=%(home)s/usr/src/guile-1.6.supp --num-callers=10 %(home)s/usr/src/lilypond/lily/out/lilypond '% { 'home' : '/home/hanwen' }
-#. only use installed binary  when we're installed too.
-#. init to empty; values here take precedence over values in the file
-#. # TODO: change name.
-#. for geometry v3
-#. Output formats that lilypond should create
-#. what a name.
-#. ly.warning (_ ("invalid value: %s") % `val`)
-#. ly.warning (_ ("invalid value: %s") % `val`)
-#: lilypond.py:232
-#, fuzzy, python-format
-msgid "no such setting: `%s'"
-msgstr "takové nastavení neexistuje: `%s'"
-
-#. 2 == user interrupt.
-#: lilypond.py:274
-#, python-format
-msgid "LilyPond crashed (signal %d)."
-msgstr "LilyPond havaroval (signal %d)"
-
-#: lilypond.py:275
-msgid "Please submit a bug report to bug-lilypond@gnu.org"
-msgstr "Prosím, za¹lete hlá¹ení o chybì na adresu bug-lilypond@gnu.org"
-
-#: lilypond.py:281
-#, fuzzy, python-format
-msgid "LilyPond failed on input file %s (exit status %d)"
-msgstr "LilyPond selhal u vstupního souboru (návratová hodnota %d)."
-
-#: lilypond.py:284
-#, fuzzy, python-format
-msgid "LilyPond failed on an input file (exit status %d)"
-msgstr "LilyPond selhal u vstupního souboru (návratová hodnota %d)."
-
-#: lilypond.py:285
-#, fuzzy
-msgid "Continuing..."
-msgstr "Bì¾í %s..."
-
-#. urg
-#: lilypond.py:296
-#, python-format
-msgid "Analyzing %s..."
-msgstr "Analyzuji %s..."
-
-#. search only the first 10k
-#: lilypond.py:354
-#, fuzzy, python-format
-msgid "no LilyPond output found for `%s'"
-msgstr "nebyl nalezen výstup LilyPondu pro `%s'"
-
-#. The final \n seems important here. It ensures that the footers and taglines end up on the right page.
-#. TODO: should set textheight (enlarge) depending on papersize.
-#: lilypond.py:397
-#, fuzzy, python-format
-msgid "invalid value: `%s'"
-msgstr "neplatná hodnota: `%s'"
-
-#. set sane geometry width (a4-width) for linewidth = -1.
-#. who the hell is 597 ?
-#. Ugh.  (La)TeX writes progress and error messages on stdout
-#. Redirect to stderr
-#: lilypond.py:511
-msgid "LaTeX failed on the output file."
-msgstr "LaTeX selhal u výstupního souboru."
-
-#. make a preview by rendering only the 1st line
-#. of each score
-#: lilypond.py:568
-msgid ""
-"Trying create PDF, but no PFA fonts found.\n"
-"Using bitmap fonts instead. This will look bad."
-msgstr ""
-
-#. ugh. Different targets?
-#. Added as functionality to lilypond, because lilypond may well need to do this
-#. in future too.
-#. no ps header?
-#: lilypond.py:615
-#, python-format
-msgid "not a PostScript file: `%s'"
-msgstr "`%s' není PostScriptovým souborem"
-
-#. todo
-#: lilypond.py:660
-#, fuzzy, python-format
-msgid "Writing HTML menu `%s'"
-msgstr "Zapisuji `%s'..."
-
-#. signal programming error
-#. Don't convert input files to abspath, rather prepend '.' to include
-#. path.
-#. As a neat trick, add directory part of first input file
-#. to include path.  That way you can do without the clumsy -I in:
-#. lilypond -I foe/bar/baz foo/bar/baz/baz.ly
-#: lilypond.py:769
-msgid "pseudo filter"
-msgstr "pseudofiltr"
-
-#: lilypond.py:772
-msgid "pseudo filter only for single input file"
-msgstr "pseudofiltr pouze pro jeden vstupní soubor"
-
-#. Ugh, maybe make a setup () function
-#. hmmm. Wish I'd 've written comments when I wrote this.
-#. now it looks complicated.
-#: lilypond.py:806
-#, python-format
-msgid "filename should not contain spaces: `%s'"
-msgstr "jméno souboru by nemìlo obsahovat mezery: `%s'"
-
-#. to be sure, add tmpdir *in front* of inclusion path.
-#. os.environ['TEXINPUTS'] =  tmpdir + ':' + os.environ['TEXINPUTS']
-#. We catch all exceptions, because we need to do stuff at exit:
-#. * copy any successfully generated stuff from tempdir and
-#. notify user of that
-#. * cleanout tempdir
-#. ## ARGH. This also catches python programming errors.
-#. ## this should only catch lilypond nonzero exit  status
-#. ## --hwn
-#. TODO: friendly message about LilyPond setup/failing?
-#.
-#: lilypond.py:845
-msgid "Running LilyPond failed. Rerun with --verbose for a trace."
-msgstr ""
-
-#. Our LilyPond pseudo filter always outputs to 'lelie'
-#. have subsequent stages and use 'lelie' output.
-#. unless: add --tex, or --latex?
-#. TODO: friendly message about TeX/LaTeX setup,
-#. trying to run tex/latex by hand
-#: lilypond.py:886
-msgid "Failed to make PS file. Rerun with --verbose for a trace."
-msgstr ""
-
-#. unless: add --tex, or --latex?
-#. TODO: friendly message about TeX/LaTeX setup,
-#. trying to run tex/latex by hand
-#: lilypond.py:916
-msgid "Running LaTeX falied. Rerun with --verbose for a trace."
-msgstr ""
-
-#. add DEP to targets?
-#: lilypond.py:926 input-file-results.cc:68
-#, c-format, python-format
-msgid "dependencies output to `%s'..."
-msgstr "závislosti se zapisují do `%s'..."
-
-#: lilypond.py:937
-#, fuzzy, python-format
-msgid "%s output to <stdout>..."
-msgstr "výstup %s se zapisuje do `%s'..."
-
-#: lilypond.py:942 lilypond.py:968 includable-lexer.cc:57
-#: input-file-results.cc:191 input-file-results.cc:197 lily-guile.cc:86
-#, c-format, python-format
-msgid "can't find file: `%s'"
-msgstr "nelze nalézt soubor: `%s'"
-
-#. Hmm, if this were a function, we could call it the except: clauses
-#: lilypond.py:965
-#, fuzzy, python-format
-msgid "%s output to %s..."
-msgstr "výstup %s se zapisuje do `%s'..."
-
-#. !@PYTHON@
-#.
-#. midi2ly.py -- LilyPond midi import script
-#.
-#. source file of the GNU LilyPond music typesetter
-#.
-#. (c)  1998--2003  Han-Wen Nienhuys <hanwen@cs.uu.nl>
-#. Jan Nieuwenhuizen <janneke@gnu.org>
-#. ###############################################################
-#. Users of python modules should include this snippet.
-#.
-#. This soon to be removed for: import lilypond.lilylib as ly
-#. ###############################################################
-#. ###############################################################
-#. ############### CONSTANTS
-#. ###############################################################
-#. temp_dir = os.path.join (original_dir,  '%s.dir' % program_name)
-#. original_dir = os.getcwd ()
-#. keep_temp_dir_p = 0
-#: midi2ly.py:94
-msgid "Convert MIDI to LilyPond source."
-msgstr "Pøevádí MIDI na zdrojový text pro LilyPond."
-
-#: midi2ly.py:97
-msgid "print absolute pitches"
-msgstr "vypisuje absolutní vý¹ky"
-
-#: midi2ly.py:98 midi2ly.py:103
-msgid "DUR"
-msgstr "DÉLKA"
-
-#: midi2ly.py:98
-msgid "quantise note durations on DUR"
-msgstr "zarovnává délky not na násobky DÉLKY"
-
-#: midi2ly.py:99
-msgid "print explicit durations"
-msgstr "vypí¹e explicitní délky"
-
-#: midi2ly.py:101
-msgid "ALT[:MINOR]"
-msgstr "ZMÌNA[:MOLL]"
-
-#: midi2ly.py:101
-msgid "set key: ALT=+sharps|-flats; MINOR=1"
-msgstr "nastaví stupnici: ZMÌNA=+køí¾ky|-béèka; MOLL=1"
-
-#: midi2ly.py:103
-msgid "quantise note starts on DUR"
-msgstr "zarovnaná nota zaèíná na DÉLCE"
-
-#: midi2ly.py:104
-msgid "DUR*NUM/DEN"
-msgstr "DÉLKA*ÈÍSLO/DÌLITEL"
-
-#: midi2ly.py:104
-msgid "allow tuplet durations DUR*NUM/DEN"
-msgstr "povolí triolové (kvartolové, ...) délky DÉLKA*ÈÍSLO/DÌLITEL"
-
-#: midi2ly.py:108
-msgid "treat every text as a lyric"
-msgstr "zpracuje ka¾dý text jako slova písnì"
-
-#: midi2ly.py:136 mup2ly.py:130
-msgid " 2001--2003"
-msgstr ""
-
-#: midi2ly.py:141 mup2ly.py:135
-#, fuzzy
-msgid ""
-"\n"
-"Distributed under terms of the GNU General Public License. It comes with\n"
-"NO WARRANTY."
-msgstr ""
-"Distribuováno ve znìní licence GNU General Public License. Program je "
-"nabízen BEZ jakékoliv ZÁRUKY"
-
-#: midi2ly.py:166 mup2ly.py:162
-msgid "Exiting ... "
-msgstr "Konèím ... "
-
-#: midi2ly.py:264 mup2ly.py:261
-#, python-format
-msgid "command exited with value %d"
-msgstr "pøíkaz skonèil s návratovou hodnotou %d"
-
-#. ###############################################################
-#. END Library
-#. ###############################################################
-#. hmm
-#. major scale: do-do
-#. minor scale: la-la  (= + 5) '''
-#. By tradition, all scales now consist of a sequence
-#. of 7 notes each with a distinct name, from amongst
-#. a b c d e f g.  But, minor scales have a wide
-#. second interval at the top - the 'leading note' is
-#. sharped. (Why? it just works that way! Anything
-#. else doesn't sound as good and isn't as flexible at
-#. saying things. In medieval times, scales only had 6
-#. notes to avoid this problem - the hexachords.)
-#. So, the d minor scale is d e f g a b-flat c-sharp d
-#. - using d-flat for the leading note would skip the
-#. name c and duplicate the name d.  Why isn't c-sharp
-#. put in the key signature? Tradition. (It's also
-#. supposedly based on the Pythagorean theory of the
-#. cycle of fifths, but that really only applies to
-#. major scales...)  Anyway, g minor is g a b-flat c d
-#. e-flat f-sharp g, and all the other flat minor keys
-#. end up with a natural leading note. And there you
-#. have it.
-#. John Sankey <bf250@freenet.carleton.ca>
-#.
-#. Let's also do a-minor: a b c d e f gis a
-#.
-#. --jcn
-#. as -> gis
-#. des -> cis
-#. ges -> fis
-#. g -> fisis
-#. d -> cisis
-#. a -> gisis
-#. b -> ces
-#. e -> fes
-#. f -> eis
-#. c -> bis
-#. # FIXME: compile fix --jcn
-#. TODO: move space
-#. fis cis gis dis ais eis bis
-#. bes es as des ges ces fes
-#. urg, we should be sure that we're in a lyrics staff
-#. all include ALL_NOTES_OFF
-#. ugh, must set key while parsing
-#. because Note init uses key
-#. Better do Note.calc () at dump time?
-#. last_lyric.clocks = t - last_time
-#. hmm
-#. urg, this will barf at meter changes
-#. urg LilyPond doesn't start at c4, but
-#. remembers from previous tracks!
-#. reference_note = Note (clocks_per_4, 4*12, 0)
-#. must be in \notes mode for parsing \skip
-#: midi2ly.py:1002
-#, python-format
-msgid "%s output to `%s'..."
-msgstr "výstup %s se zapisuje do `%s'..."
-
-#: midi2ly.py:1033
-msgid "Example:"
-msgstr "Pøíklad:"
-
-#: midi2ly.py:1083
-msgid "no files specified on command line."
-msgstr "na pøíkazové øádce nebyly zadány ¾ádné soubory."
-
-#. !@PYTHON@
-#. mup2ly.py -- mup input converter
-#.
-#. source file of the GNU LilyPond music typesetter
-#.
-#. (c) 2001
-#. if set, LILYPONDPREFIX must take prevalence
-#. if datadir is not set, we're doing a build and LILYPONDPREFIX
-#: mup2ly.py:70
-msgid "Convert mup to LilyPond source."
-msgstr "Pøevede soubor mup na zdrojový text LilyPondu."
-
-#: mup2ly.py:73
-msgid "debug"
-msgstr "debug"
-
-#: mup2ly.py:74
-msgid "define macro NAME [optional expansion EXP]"
-msgstr "definuje makro JMÉNO [volitelná pøípona PØÍP]"
-
-#: mup2ly.py:77
-msgid "only pre-process"
-msgstr "pouze pøedzpracuje (pre-process)"
-
-#. Duh.  Python style portable: cp *.EXT OUTDIR
-#. system ('cp *.%s %s' % (ext, outdir), 1)
-#. Python < 1.5.2 compatibility
-#.
-#. On most platforms, this is equivalent to
-#. `normpath(join(os.getcwd()), PATH)'.  *Added in Python version 1.5.2*
-#. if set, LILYPONDPREFIX must take prevalence
-#. if datadir is not set, we're doing a build and LILYPONDPREFIX
-#. ###############################################################
-#. END Library
-#.
-#. PMX cut and paste
-#.
-#. if not self.entries:
-#. #return '\n'
-#. #ugh ugh
-#. return '\n%s = {}\n\n' % self.idstring ()
-#. ugh
-#. def set_clef (self, letter):
-#. clstr = clef_table[letter]
-#. self.voices[0].add_nonchord (Clef (clstr))
-#. urg
-#. maybe use import copy?
-#. for i in self.pitches:
-#. ch.pitches.append (i)
-#. for i in self.scripts:
-#. ch.scripts.append (i)
-#. http://www.arkkra.com/doc/uguide/contexts.html
-#. #self.current_staffs = []
-#. duh
-#. FIXME: 1?
-#. FIXME: does key play any role in this?
-#. ch = self.current_voices[0].last_chord ()
-#. ch.basic_duration = self.current_voices[0].last_chord ().basic_duration
-#. ugh
-#. ch = self.current_voices[0].last_chord ()
-#. `;' is not a separator, chords end with ';'
-#. mup resets default duration and pitch each bar
-#. ugh: these (and lots more) should also be parsed in
-#. context staff.  we should have a class Staff_properties
-#. and parse/set all those.
-#. shortcut: set to official mup maximum (duh)
-#. self.set_staffs (40)
-#: mup2ly.py:1076
-#, python-format
-msgid "no such context: %s"
-msgstr "neexistující kontext: %s"
-
-#. hmm
-#. dig this: mup allows ifdefs inside macro bodies
-#. don't do nested multi-line defines
-#. duh: mup is strictly line-based, except for `define',
-#. which is `@' terminated and may span several lines
-#. don't define new macros in unactive areas
-#. To support nested multi-line define's
-#. process_function and macro_name, macro_body
-#. should become lists (stacks)
-#. The mup manual is undetermined on this
-#. and I haven't seen examples doing it.
-#.
-#. don't do nested multi-line define's
-#. writes to stdout for help2man
-#. don't call
-#. identify ()
-#. sys.stdout.flush ()
-#. handy emacs testing
-#. if not files:
-#. files = ['template.mup']
-#: mup2ly.py:1300
-#, python-format
-msgid "Processing `%s'..."
-msgstr "Zpracovávám `%s'..."
-
-#: mup2ly.py:1319
-#, python-format
-msgid "Writing `%s'..."
-msgstr "Zapisuji `%s'..."
-
-#: getopt-long.cc:146
-#, c-format
-msgid "option `%s' requires an argument"
-msgstr "volba `%s' vy¾aduje argument"
-
-#: getopt-long.cc:150
-#, c-format
-msgid "option `%s' doesn't allow an argument"
-msgstr "volba `%s' nemá argumenty"
-
-#: getopt-long.cc:154
-#, c-format
-msgid "unrecognized option: `%s'"
-msgstr "neznámá volba: `%s'"
-
-#: getopt-long.cc:161
-#, c-format
-msgid "invalid argument `%s' to option `%s'"
-msgstr "neplatný argument `%s' pro volbu `%s'"
-
-#: warn.cc:25
-#, fuzzy, c-format
-msgid "warning: %s\n"
-msgstr "varování: %s\n"
-
-#: warn.cc:31
-#, fuzzy, c-format
-msgid "error: %s\n"
-msgstr "chyba: %s\n"
-
-#: warn.cc:44
-#, fuzzy, c-format
-msgid "programming error: %s (Continuing; cross thumbs)\n"
-msgstr "chyba programrátora: %s (Pokraèuji: dr¾te mi palce)\n"
-
-#: accidental.cc:202 key-signature-interface.cc:137
-#, c-format
-msgid "accidental `%s' not found"
-msgstr "Posuvka `%s' nebyla nalezena"
-
-#: accidental-engraver.cc:171 new-accidental-engraver.cc:238
-#, fuzzy, c-format
-msgid "Accidental typesetting list must begin with context-name: %s"
-msgstr "Sazba posuvek musí zaèínat jménem kontextu: %s"
-
-#: accidental-engraver.cc:196 new-accidental-engraver.cc:263
-#, fuzzy, c-format
-msgid "unknown accidental typesetting: %s. Ignored"
-msgstr "neznámá sazba posuvek: %s. Ignorováno"
-
-#: accidental-engraver.cc:212 new-accidental-engraver.cc:279
-#, c-format
-msgid "Symbol is not a parent context: %s. Ignored"
-msgstr "Symbol není otcovským kontextem: %s. Ignorováno"
-
-#: accidental-engraver.cc:215 new-accidental-engraver.cc:282
-#, fuzzy, c-format
-msgid "Accidental typesetting must be pair or context-name: %s"
-msgstr "Sazba posuvek musí být pár nebo jméno kontextu: %s"
-
-#: afm.cc:66
-#, c-format
-msgid "can't find character number: %d"
-msgstr "nelze nalézt znak èíslo: %d"
-
-#: afm.cc:81
-#, c-format
-msgid "can't find character called: `%s'"
-msgstr "nelze nalézt znak nazvaný: `%s'"
-
-#: afm.cc:142
-#, c-format
-msgid "Error parsing AFM file: `%s'"
-msgstr "Chyba pøi zpracování AFM souboru: `%s'"
-
-#: all-font-metrics.cc:95
-#, c-format
-msgid "checksum mismatch for font file: `%s'"
-msgstr "Chyba kontrolního souètu pro soubor fontu: `%s'"
-
-#: all-font-metrics.cc:97
-#, c-format
-msgid "does not match: `%s'"
-msgstr "nesouhlasí: `%s'"
-
-#: all-font-metrics.cc:102
-msgid ""
-" Rebuild all .afm files, and remove all .pk and .tfm files.  Rerun with -V "
-"to show font paths."
-msgstr ""
-" Znovu sestavte v¹echny .afm soubory a odstraòte v¹echny .pk a .tfm soubory. "
-"Spus»te znovu s parametrem -V k výpisu cest k souborùm fontù."
-
-#: all-font-metrics.cc:103
-msgid ""
-"A script for removing font-files is delivered with the source-code,\n"
-"in buildscripts/clean-fonts.sh"
-msgstr ""
-
-#: all-font-metrics.cc:169
-#, c-format
-msgid "can't find font: `%s'"
-msgstr "nelze nalézt font: `%s'"
-
-#: all-font-metrics.cc:170
-msgid "Loading default font"
-msgstr "Nahrávám implicitní font"
-
-#: all-font-metrics.cc:185
-#, c-format
-msgid "can't find default font: `%s'"
-msgstr "nelze nalézt implicitní font: `%s'"
-
-#: all-font-metrics.cc:186 includable-lexer.cc:59 input-file-results.cc:192
-#, c-format
-msgid "(search path: `%s')"
-msgstr "(vyhledávací cesta: `%s')"
-
-#: all-font-metrics.cc:187
-msgid "Giving up"
-msgstr "Vzdávám"
-
-#: auto-change-iterator.cc:43 change-iterator.cc:60
-#: part-combine-music-iterator.cc:120
-msgid "Can't switch translators, I'm there already"
-msgstr "Nelze pøepnout pøekladaèe. Ji¾ jsem tam."
-
-#: bar-check-iterator.cc:51
-#, c-format
-msgid "barcheck failed at: %s"
-msgstr "kontrola taktových èar selhala na: %s"
-
-#: beam.cc:146
-msgid "beam has less than two visible stems"
-msgstr "trámec má ménì ne¾ dvì viditelné no¾ky"
-
-#: beam.cc:151
-msgid "Beam has less than two stems. Removing beam."
-msgstr "Trámec má ménì ne¾ dvì no¾ky. Odstraòuji jej."
-
-#: beam.cc:976
-msgid ""
-"Not sure that we can find a nice beam slope (no viable initial configuration "
-"found)."
-msgstr ""
-"Nejsem si jistý, ¾e pùjde nalézt pìkný sklon trámce (nebyla nalezena ¾ádná "
-"¾ivotaschopná konfigurace)."
-
-#: beam-engraver.cc:176
-msgid "already have a beam"
-msgstr "trámec ji¾ existuje"
-
-#: beam-engraver.cc:259
-msgid "unterminated beam"
-msgstr "neukonèený trámec"
-
-#: beam-engraver.cc:292 chord-tremolo-engraver.cc:197
-msgid "stem must have Rhythmic structure"
-msgstr "no¾ka musí mít strukturu Rhythmic"
-
-#: beam-engraver.cc:306
-msgid "stem doesn't fit in beam"
-msgstr "no¾ka se nevejde pod trámec"
-
-#: beam-engraver.cc:307
-msgid "beam was started here"
-msgstr "trámec byl zaèat zde"
-
-#: break-align-interface.cc:173
-#, fuzzy, c-format
-msgid "No spacing entry from %s to `%s'"
-msgstr "Není záznam pro rozestup %s a `%s'"
-
-#: change-iterator.cc:22
-#, c-format
-msgid "can't change `%s' to `%s'"
-msgstr "nelze zmìnit `%s' na `%s'"
-
-#.
-#. We could change the current translator's id, but that would make
-#. errors hard to catch
-#.
-#. last->translator_id_string_  = get_change ()->change_to_id_string_;
-#.
-#: change-iterator.cc:79
-msgid "I'm one myself"
-msgstr "Jsem pouze jediný"
-
-#: change-iterator.cc:82
-msgid "none of these in my family"
-msgstr "¾ádný z tìchto neznám"
-
-#: chord-tremolo-engraver.cc:98
-#, c-format
-msgid "Chord tremolo with %d elements. Must have two elements."
-msgstr ""
-
-#: chord-tremolo-engraver.cc:157
-msgid "unterminated chord tremolo"
-msgstr "neukonèené akordové tremolo"
-
-#: chord-tremolo-iterator.cc:69
-msgid "no one to print a tremolos"
-msgstr "není nikdo, kdo by tiskl tremola"
-
-#: clef.cc:64
-#, c-format
-msgid "clef `%s' not found"
-msgstr "klíè `%s' nebyl nalezen"
-
-#: cluster.cc:131
-#, fuzzy, c-format
-msgid "unknown cluster style `%s'"
-msgstr "neznámý pøekladaè: `%s':"
-
-#: coherent-ligature-engraver.cc:84
-#, c-format
-msgid "gotcha: ptr=%ul"
-msgstr ""
-
-#: coherent-ligature-engraver.cc:96
-#, c-format
-msgid "distance=%f"
-msgstr ""
-
-#: coherent-ligature-engraver.cc:139
-#, c-format
-msgid "Coherent_ligature_engraver: setting `spacing-increment = 0.01': ptr=%ul"
-msgstr ""
-
-#: custos.cc:92
-#, c-format
-msgid "custos `%s' not found"
-msgstr "kustod `%s' nebyl nalezen"
-
-#: dimensions.cc:13
-msgid "NaN"
-msgstr "NaN"
-
-#: dynamic-engraver.cc:204 span-dynamic-performer.cc:82
-msgid "can't find start of (de)crescendo"
-msgstr "nelze nalézt zaèátek (de)crescenda"
-
-#: dynamic-engraver.cc:216
-msgid "already have a crescendo"
-msgstr "ji¾ má crescendo"
-
-#: dynamic-engraver.cc:217
-msgid "already have a decrescendo"
-msgstr "ji¾ má decrescendo"
-
-#: dynamic-engraver.cc:220
-#, fuzzy
-msgid "Cresc started here"
-msgstr "Crescendo zaèalo zde"
-
-#: dynamic-engraver.cc:323
-msgid "unterminated (de)crescendo"
-msgstr "neukonèené (de)crescendo"
-
-#: event.cc:49
-#, fuzzy, c-format
-msgid "Transposition by %s makes alteration larger than two"
-msgstr "Transpozice o %s vytváøí více posuvek ne¾ dvì"
-
-#: event-chord-iterator.cc:76 output-property-music-iterator.cc:27
-#, fuzzy, c-format
-msgid "Junking event: `%s'"
-msgstr "Matoucí po¾adavek: `%s'"
-
-#: extender-engraver.cc:94
-msgid "unterminated extender"
-msgstr "neukonené prodlou¾ení"
-
-#: extender-engraver.cc:106
-#, fuzzy
-msgid "Nothing to connect extender to on the left.  Ignoring extender event."
-msgstr ""
-"Prodlou¾ení není vlevo k èemu pøipojit. Ignoruji po¾adavek na prodlou¾ení"
-
-#: folded-repeat-iterator.cc:88
-msgid "no one to print a repeat brace"
-msgstr "není nikdo, kdo by tiskl repetièní svorku"
-
-#: font-interface.cc:239
-msgid "couldn't find any font satisfying "
-msgstr "nelze nalézt ¾ádný vhodný font"
-
-#: glissando-engraver.cc:100
-#, fuzzy
-msgid "Unterminated glissando."
-msgstr "neukonèená ligatura"
-
-#: gourlay-breaking.cc:188
-#, c-format
-msgid "Optimal demerits: %f"
-msgstr "Optimální penalty: %f"
-
-#: gourlay-breaking.cc:193
-msgid "No feasible line breaking found"
-msgstr "Nebylo nalezeno vhodné místo pro øádkový zlom"
-
-#: gregorian-ligature-engraver.cc:59
-#, fuzzy, c-format
-msgid "\\%s ignored"
-msgstr "(ignorováno)"
-
-#: gregorian-ligature-engraver.cc:64
-#, c-format
-msgid "implied \\%s added"
-msgstr ""
-
-#.
-#. Todo: do something sensible. The grob-pq-engraver is not water
-#. tight, and stuff like tupletSpannerDuration confuses it.
-#.
-#: grob-pq-engraver.cc:130
-#, c-format
-msgid ""
-"Skipped something?\n"
-"Grob %s ended before I expected it to end."
-msgstr ""
-"Nìco je pøeskoèeno?\n"
-"Grob %s skonèil døíve, ne¾ bylo oèekáváno."
-
-#: hairpin.cc:98
-#, fuzzy
-msgid "decrescendo too small"
-msgstr "Text_spanner je pøíli¹ malý"
-
-#: hairpin.cc:99
-#, fuzzy
-msgid "crescendo too small"
-msgstr "Text_spanner je pøíli¹ malý"
-
-#: horizontal-bracket-engraver.cc:64
-msgid "Don't have that many brackets."
-msgstr ""
-
-#: horizontal-bracket-engraver.cc:73
-#, fuzzy
-msgid "Conflicting note group events."
-msgstr "Nalezeny konfliktní tóniny."
-
-#: hyphen-engraver.cc:87
-msgid "unterminated hyphen"
-msgstr "neukonèený spojovník"
-
-#: hyphen-engraver.cc:99
-#, fuzzy
-msgid "Nothing to connect hyphen to on the left.  Ignoring hyphen event."
-msgstr "Vlevo není k èemu pøipojit spojovník. Ignoruji po¾adavek na spojovník."
-
-#: input.cc:99
-msgid "non fatal error: "
-msgstr "nepøíli¹ záva¾ná chyba: "
-
-#: input.cc:107 source-file.cc:146 source-file.cc:239
-msgid "position unknown"
-msgstr "neznámá pozice"
-
-#: input-file-results.cc:72 source-file.cc:54 streams.cc:38
-#, c-format
-msgid "can't open file: `%s'"
-msgstr "nelze otevøít soubor: `%s'"
-
-#: input-file-results.cc:132
-msgid "Score contains errors; will not process it"
-msgstr "Partitura obsahuje chyby; nebude zpracována"
-
-#: input-file-results.cc:172
-#, c-format
-msgid "Now processing: `%s'"
-msgstr "Nyní zpracovávám: `%s'"
-
-#: key-performer.cc:96
-msgid "FIXME: key change merge"
-msgstr "FIXME: slouèení zmìn tóniny"
-
-#: kpath.cc:76
-#, c-format
-msgid "Kpathsea couldn't find TFM file `%s'"
-msgstr "Kpathsea nemù¾e nalézt TFM soubor `%s'"
-
-#: ligature-engraver.cc:159
-#, fuzzy
-msgid "can't find start of ligature"
-msgstr "nelze nalézt zaèátek ligatury"
-
-#: ligature-engraver.cc:165
-msgid "no right bound"
-msgstr "chybí pravá hranice"
-
-#: ligature-engraver.cc:191
-#, fuzzy
-msgid "already have a ligature"
-msgstr "ligatura ji¾ existuje"
-
-#: ligature-engraver.cc:207
-msgid "no left bound"
-msgstr "chybí levá hranice"
-
-#: ligature-engraver.cc:258
-#, fuzzy
-msgid "unterminated ligature"
-msgstr "neukonèená ligatura"
-
-#: ligature-engraver.cc:282
-msgid "ligature may not contain rest; ignoring rest"
-msgstr "ligatura by nemìla obsahovat pomlku; ignoruji pomlku"
-
-#: ligature-engraver.cc:283
-#, fuzzy
-msgid "ligature was started here"
-msgstr "ligatura byla zaèata zde"
-
-#: lily-guile.cc:88
-#, c-format
-msgid "(load path: `%s')"
-msgstr "(nahrávací cesta: `%s')"
-
-#: lily-guile.cc:576
-#, fuzzy, c-format
-msgid "Can't find property type-check for `%s' (%s)."
-msgstr "Nelze nalézt kontrolu typu vlastnosti pro `%s' (%s)."
-
-#: lily-guile.cc:579
-msgid "Perhaps you made a typing error?"
-msgstr "Mo¾ná se stal pøeklep?"
-
-#: lily-guile.cc:585
-msgid "Doing assignment anyway."
-msgstr "Pøesto pøiøazuji."
-
-#: lily-guile.cc:599
-#, c-format
-msgid "Type check for `%s' failed; value `%s' must be of type `%s'"
-msgstr "Kontrola typu `%s' selhala; hodnota `%s' musí být typu `%s'"
-
-#: lookup.cc:173
-msgid "round filled box horizontal extent smaller than blot; decreasing blot"
-msgstr ""
-"¹íøka boxu se zaokrouhlenými rohy je men¹í ne¾ prùmìr zaokrouhlení; sni¾uji "
-"zaokrouhlení"
-
-#: lookup.cc:178
-msgid "round filled box vertical extent smaller than blot; decreasing blot"
-msgstr ""
-"vý¹ka boxu se zaokrouhlenými rohy je men¹í ne¾ prùmìr zaokrouhlení; sni¾uji "
-"zaokrouhlení"
-
-#: lyric-phrasing-engraver.cc:311
-msgid "lyrics found without any matching notehead"
-msgstr "nalezen text bez odpovídající notové hlavièky"
-
-#: lyric-phrasing-engraver.cc:317
-msgid "Huh? Melismatic note found to have associated lyrics."
-msgstr "Joj! Prodlu¾ovací nota má pøiøazen text."
-
-#: main.cc:106
-msgid "EXPR"
-msgstr "VÝRAZ"
-
-#: main.cc:107
-msgid "set options, use -e '(ly-option-usage)' for help"
-msgstr "nastaví volby, pou¾ijte -e '(ly-option-usage)' pro nápovìdu"
-
-#: main.cc:110
-msgid "use output format EXT"
-msgstr "pou¾ije výstupní formát PØÍP"
-
-#: main.cc:112
-msgid "FIELD"
-msgstr "POLE"
-
-#: main.cc:112
-msgid "write header field to BASENAME.FIELD"
-msgstr "zapísuje pole hlavièky do BASENAME.POLE"
-
-#: main.cc:113
-msgid "add DIR to search path"
-msgstr "pøidává ADRESÁØ do vyhledávací cesty"
-
-#: main.cc:114
-msgid "use FILE as init file"
-msgstr "pou¾ívá SOUBOR jako inicializaèní soubor"
-
-#: main.cc:118
-msgid "prepend DIR to dependencies"
-msgstr "pøidává ADRESÁØ do závislostí"
-
-#.
-#. should audit again.
-#.
-#: main.cc:123
-msgid "inhibit file output naming and exporting"
-msgstr "zakazuje pojmenovávání a export souborù"
-
-#. No version number or newline here. It confuses help2man.
-#: main.cc:155
-#, c-format
-msgid "Usage: %s [OPTIONS]... FILE..."
-msgstr "Pou¾ití: %s [PØEPÍNAÈ]... SOUBOR..."
-
-#: main.cc:157
-msgid "Typeset music and or play MIDI from FILE."
-msgstr "Sází hudbu a/nebo pøehrává MIDI ze SOUBORu."
-
-#: main.cc:160
-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 je program pro sazbu hudby. Vytváøí krásnou archovou hudbu\n"
-"za pou¾ití vysokoúrovòového popisovacího souboru jako vstupu.\n"
-"LilyPond je souèástí projektu GNU.\n"
-
-#: main.cc:182
-#, c-format
-msgid ""
-"This is free software.  It is covered by the GNU General Public License,\n"
-"and you are welcome to change it and/or distribute copies of it under\n"
-"certain conditions.  Invoke as `%s --warranty' for more information.\n"
-msgstr ""
-"Toto je svobodný software. Je chránìn GNU General Public License \n"
-"a vy jste vítáni k jeho zmìnì a (nebo) ¹íøení jeho kopií za dodr¾ení\n"
-"urèitých podmínek. Pro více informací spus»te program takto: `%s --"
-"warranty'.\n"
-
-#: main.cc:198
-msgid "GNU LilyPond -- The music typesetter"
-msgstr "GNU LilyPond -- Sazeè hudby"
-
-#: main.cc:206
-#, fuzzy
-msgid ""
-"    This program is free software; you can redistribute it and/or\n"
-"modify it under the terms of the GNU General Public License version 2\n"
-"as published by the Free Software Foundation.\n"
-"\n"
-"    This program is distributed in the hope that it will be useful,\n"
-"but WITHOUT ANY WARRANTY; without even the implied warranty of\n"
-"MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU\n"
-"General Public License for more details.\n"
-"\n"
-"    You should have received a copy (refer to the file COPYING) of the\n"
-"GNU General Public License along with this program; if not, write to\n"
-"the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA "
-"02111-1307,\n"
-"USA.\n"
-msgstr ""
-"    Tento program je svobodný software; mù¾ete jej distribuovat a (nebo)\n"
-"modifikovat za dodr¾ení podmínek daných GNU General Public License verze 2\n"
-"jak je zveøejnìna nadací Free Software Foundation.\n"
-"    Tento program je distribuován v nadìji, ¾e bude u¾iteèný,\n"
-"nicménì BEZ JAKÉKOLIV ZÁRUKY nebo VHODNOSTI PRO URÈITÉ POU®ITÍ.Ohlednì "
-"dal¹ích detailù ètìte GNU General Public License\n"
-"\n"
-"    S tímto programem byste mìli obdr¾et kopii (viz soubor COPYING)\n"
-"GNU General Public License. Pokud se tak nestalo, napi¹te Free Software\n"
-"Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139. USA\n"
-
-#: mensural-ligature.cc:153
-#, fuzzy, c-format
-msgid "Mensural_ligature:thickness undefined on flexa %d; assuming 1.4"
-msgstr ""
-"Mensural_ligature: tlou¹»ka není definována pro flexu %d; pøedpokládám 1.4"
-
-#: mensural-ligature.cc:169
-#, fuzzy, c-format
-msgid "Mensural_ligature:delta-pitch undefined on flexa %d; assuming 0"
-msgstr ""
-"Mensural_ligature: rozdíl tónù (delta-pitch) není definována pro flexu %d; "
-"pøedpokládám 0"
-
-#: mensural-ligature.cc:182
-#, fuzzy, c-format
-msgid "Mensural_ligature:flexa-width undefined on flexa %d; assuming 2.0"
-msgstr ""
-"Mensural_ligature: ¹íøka flexy (flexa-width) není definována pro flexu %d; "
-"pøedpokládám 2.0"
-
-#: mensural-ligature.cc:215
-#, fuzzy
-msgid "Mensural_ligature:unexpected case fall-through"
-msgstr "Mensural_ligature: neznámý pøípad"
-
-#: mensural-ligature.cc:225
-#, fuzzy
-msgid "Mensural_ligature: (join_left == 0)"
-msgstr "Mensural_ligature: (join_left == 0)"
-
-#: mensural-ligature-engraver.cc:248 mensural-ligature-engraver.cc:397
-msgid "unexpected case fall-through"
-msgstr "neznámý pøípad"
-
-#: mensural-ligature-engraver.cc:259
-msgid "ligature with less than 2 heads -> skipping"
-msgstr "ligatura s ménì ne¾ dvìma hlavièkami -> vynechávám"
-
-#: mensural-ligature-engraver.cc:279
-msgid "can not determine pitch of ligature primitive -> skipping"
-msgstr "nelze urèit vý¹ku poèátku ligatury -> vynechávám"
-
-#: mensural-ligature-engraver.cc:302
-msgid "prime interval within ligature -> skipping"
-msgstr "interval ligatury je prima -> vynechávám"
-
-#: mensural-ligature-engraver.cc:312
-msgid "mensural ligature: duration none of L, B, S -> skipping"
-msgstr "menzurální ligatura: délka není ani jedna z L, B, S -> vynechávám"
-
-#: midi-item.cc:148
-#, c-format
-msgid "no such instrument: `%s'"
-msgstr "takový nástroj neexistuje: `%s'"
-
-#: midi-item.cc:238
-msgid "silly duration"
-msgstr "podivná délka"
-
-#: midi-item.cc:251
-msgid "silly pitch"
-msgstr "podivná vý¹ka"
-
-#: music-output-def.cc:111
-#, c-format
-msgid "can't find `%s' context"
-msgstr "nelze nalézt kontext `%s'"
-
-#: my-lily-lexer.cc:169
-#, c-format
-msgid "Identifier name is a keyword: `%s'"
-msgstr "Název identifikátoru je klíèové slovo: `%s'"
-
-#: my-lily-lexer.cc:191
-#, c-format
-msgid "error at EOF: %s"
-msgstr "chyba na konci souboru: %s"
-
-#: my-lily-parser.cc:44
-msgid "Parsing..."
-msgstr "Analyzuji..."
-
-#: my-lily-parser.cc:54
-msgid "Braces don't match"
-msgstr "Poèet závorek nesouhlasí"
-
-#.
-#. music for the softenon children?
-#.
-#: new-fingering-engraver.cc:143
-msgid "music for the martians."
-msgstr ""
-
-#: new-tie-engraver.cc:166 tie-engraver.cc:217
-msgid "lonely tie"
-msgstr "osamocená ligatura"
-
-#: note-collision.cc:340
-msgid "Too many clashing notecolumns.  Ignoring them."
-msgstr "Pøíli¹ mnoho kolizí notových sloupcù. Ignoruji je."
-
-#: note-head.cc:127
-#, c-format
-msgid "note head `%s' not found"
-msgstr "notová hlavièka `%s' nebyla nalezena"
-
-#: paper-def.cc:96
-#, c-format
-msgid "paper output to `%s'..."
-msgstr "tiskový výstup do `%s'..."
-
-#: paper-score.cc:78
-#, fuzzy, c-format
-msgid "Element count %d (spanners %d) "
-msgstr "Poèet prvkù je %d (pøeklenutí %d) "
-
-#: paper-score.cc:83
-#, fuzzy
-msgid "Preprocessing graphical objects..."
-msgstr "Pøedzpracovávám prvky..."
-
-#: paper-score.cc:116
-msgid "Outputting Score, defined at: "
-msgstr "Vypisuji partituru, definovanou v: "
-
-#: parse-scm.cc:79
-msgid "GUILE signaled an error for the expression begining here"
-msgstr "GUILE hlásí chybu ve výrazu, který zaèíná zde"
-
-#.
-#. We could change the current translator's id, but that would make
-#. errors hard to catch
-#.
-#. last->translator_id_string_  = get_change ()->change_to_id_string_;
-#.
-#: part-combine-music-iterator.cc:139
-#, c-format
-msgid "I'm one myself: `%s'"
-msgstr "Jsem pouze jediný"
-
-#: part-combine-music-iterator.cc:142
-#, c-format
-msgid "none of these in my family: `%s'"
-msgstr "¾ádný z tìchto neznám"
-
-#: percent-repeat-engraver.cc:109
-msgid "Don't know how to handle a percent repeat of this length."
-msgstr "Nevím, jak zpracovat procentové opakování této délky."
-
-#: percent-repeat-engraver.cc:163
-#, fuzzy
-msgid "unterminated percent repeat"
-msgstr "neuzavøená pedálová závorka"
-
-#: percent-repeat-iterator.cc:65
-msgid "no one to print a percent"
-msgstr "není nikdo, kdo by tiskl procento"
-
-#: performance.cc:51
-msgid "Track ... "
-msgstr "Stopa ... "
-
-#: performance.cc:83
-msgid "Creator: "
-msgstr "Vytvoøil: "
-
-#: performance.cc:103
-msgid "at "
-msgstr "v "
-
-#: performance.cc:114
-#, c-format
-msgid "from musical definition: %s"
-msgstr "z hudební definice: %s"
-
-#: performance.cc:169
-#, c-format
-msgid "MIDI output to `%s'..."
-msgstr "MIDI výstup do `%s'..."
-
-#: phrasing-slur-engraver.cc:123
-msgid "unterminated phrasing slur"
-msgstr "neukonèené frázovací legato"
-
-#: phrasing-slur-engraver.cc:141
-msgid "can't find start of phrasing slur"
-msgstr "nelze nalézt zaèátek frázovacího legata"
-
-#: piano-pedal-engraver.cc:235 piano-pedal-engraver.cc:250
-#: piano-pedal-engraver.cc:305 piano-pedal-performer.cc:82
-#, c-format
-msgid "can't find start of piano pedal: `%s'"
-msgstr "nelze nalézt zaèátek pedálu piana: `%s'"
-
-#: piano-pedal-engraver.cc:410
-#, fuzzy
-msgid "unterminated pedal bracket"
-msgstr "neuzavøená pedálová závorka"
-
-#: property-iterator.cc:97
-#, c-format
-msgid "Not a grob name, `%s'."
-msgstr "Není jménem grobu, `%s'."
-
-#: rest.cc:139
-#, c-format
-msgid "rest `%s' not found, "
-msgstr "pomlka `%s' nebyla nalezena, "
-
-#: rest-collision.cc:199
-msgid "too many colliding rests"
-msgstr "pøíli¹ mnoho kolidujících pomlk"
-
-#: scm-option.cc:45
-msgid "lilypond -e EXPR means:"
-msgstr "lilypond -e VÝRAZ znamená:"
-
-#: scm-option.cc:47
-msgid "  Evalute the Scheme EXPR before parsing any .ly files."
-msgstr "  Vyhodnotí VÝRAZ Scheme pøed zpracováním v¹ech souborù .ly."
-
-#: scm-option.cc:49
-msgid ""
-"  Multiple -e options may be given, they will be evaluated sequentially."
-msgstr "  Voleb -e mù¾e být zadáno více, budou vyhodnoceny postupnì."
-
-#: scm-option.cc:51
-msgid ""
-"  The function ly-set-option allows for access to some internal variables."
-msgstr "  Funkce ly-set-option dovoluje nastavovat nìkteré interní promìnné."
-
-#: scm-option.cc:53
-msgid "Usage: lilypond -e \"(ly-set-option SYMBOL VAL)\""
-msgstr "Pou¾ití: lilypond -e \"(ly-set-option SYMBOL HODN)\""
-
-#: scm-option.cc:55
-msgid "Where SYMBOL VAL pair is any of:"
-msgstr "Kde je dvojice SYMBOL HODN jedna z:"
-
-#: scm-option.cc:128
-msgid "Unknown internal option!"
-msgstr "Neznámá interní volba!"
-
-#: score.cc:85
-msgid "Interpreting music..."
-msgstr "Interpretuji hudbu..."
-
-#: score.cc:97
-msgid "Need music in a score"
-msgstr "V partituøe je tøeba hudby"
-
-#. should we? hampers debugging.
-#: score.cc:111
-msgid "Errors found/*, not processing score*/"
-msgstr "Nalezeny chyby/*, nezpracovávám partituru*/"
-
-#: score.cc:118
-#, c-format
-msgid "elapsed time: %.2f seconds"
-msgstr "uplynulý èas: %.2f sekund"
-
-#: score-engraver.cc:99
-#, fuzzy, c-format
-msgid "can't find `%s'"
-msgstr "nelze nalézt `%s'"
-
-#: score-engraver.cc:100
-msgid "Fonts have not been installed properly.  Aborting"
-msgstr "Písma nebyla správnì nainstalována. Konèím"
-
-#: score-engraver.cc:205
-#, c-format
-msgid "unbound spanner `%s'"
-msgstr "nepøichycené pøeklenutí `%s'"
-
-#: script-engraver.cc:90
-#, c-format
-msgid "Don't know how to interpret articulation `%s'"
-msgstr "Nevím, jak interpretovat artikulaèní znaménko `%s'"
-
-#. this shouldn't happen, but let's continue anyway.
-#: separation-item.cc:53 separation-item.cc:101
-msgid "Separation_item:  I've been drinking too much"
-msgstr "Separation_item: Moc jsem pil"
-
-#: simple-spacer.cc:248
-#, c-format
-msgid "No spring between column %d and next one"
-msgstr "Chybí pru¾ný výplnìk mezi sloupcem %d a následujícím"
-
-#: slur-engraver.cc:141
-msgid "unterminated slur"
-msgstr "neukonèená ligatura"
-
-#. How to shut up this warning, when Voice_devnull_engraver has
-#. eaten start event?
-#: slur-engraver.cc:159
-msgid "can't find start of slur"
-msgstr "nelze nalézt zaèátek ligatury"
-
-#: source-file.cc:67
-#, c-format
-msgid "Huh?  Got %d, expected %d characters"
-msgstr "Joj! Obdr¾eno %d, oèekáváno %d znakù"
-
-#: spacing-spanner.cc:379
-#, c-format
-msgid "Global shortest duration is %s\n"
-msgstr "Celkovì nejkrat¹í délka je %s\n"
-
-#: spring-smob.cc:32
-#, c-format
-msgid "#<spring smob d= %f>"
-msgstr "#<spring smob d= %f>"
-
-#: staff-symbol.cc:61
-msgid "staff symbol: indentation yields beyond end of line"
-msgstr "Symbol osnovy: odsazení vyná¹í za konec øádku"
-
-#: stem.cc:118
-msgid "Weird stem size; check for narrow beams"
-msgstr "Podivná velikost no¾ky; zkontrolujte úzké trámce"
-
-#: stem.cc:611
-#, c-format
-msgid "flag `%s' not found"
-msgstr "praporek `%s' nebyl nalezen"
-
-#: stem.cc:624
-#, c-format
-msgid "flag stroke `%s' not found"
-msgstr "symbol praporku `%s' nebyl nalezen"
-
-#: stem-engraver.cc:96
-msgid "tremolo duration is too long"
-msgstr "délka tremola je pøíli¹ velká"
-
-#: stem-engraver.cc:124
-#, c-format
-msgid "Adding note head to incompatible stem (type = %d)"
-msgstr "Pøidávám hlavièku k nekompatibilní no¾ce (typ = %d)"
-
-#: stem-engraver.cc:125
-msgid "Don't you want polyphonic voices instead?"
-msgstr ""
-
-#: streams.cc:34
-#, c-format
-msgid "can't create directory: `%s'"
-msgstr "nelze vytvoøit adresáø: `%s'"
-
-#: streams.cc:48
-msgid "Error syncing file (disk full?)"
-msgstr "Chyba pøi synchronizaci souboru (disk je plný?)"
-
-#: system.cc:125
-#, c-format
-msgid "Element count %d."
-msgstr "Poèet prvkù je %d."
-
-#: system.cc:372
-#, fuzzy, c-format
-msgid "Grob count %d "
-msgstr "Poèet grobù je %d "
-
-#: system.cc:386
-#, fuzzy
-msgid "Calculating line breaks..."
-msgstr "Poèítám pozice sloupcù..."
-
-#: text-spanner-engraver.cc:81
-msgid "can't find start of text spanner"
-msgstr "nelze nalézt zaèátek textového pøeklenutí"
-
-#: text-spanner-engraver.cc:95
-msgid "already have a text spanner"
-msgstr "ji¾ obsahuje textové pøeklenutí"
-
-#: text-spanner-engraver.cc:164
-msgid "unterminated text spanner"
-msgstr "neukonèené textové pøeklenutí"
-
-#: tfm.cc:83
-#, c-format
-msgid "can't find ascii character: %d"
-msgstr "nelze nalézt ascii znak: %d"
-
-#. Not using ngettext's plural feature here, as this message is
-#. more of a programming error.
-#: tfm-reader.cc:108
-#, c-format
-msgid "TFM header of `%s' has only %u word (s)"
-msgstr "TFM hlavièka `%s' má pouze %u slov"
-
-#: tfm-reader.cc:142
-#, c-format
-msgid "%s: TFM file has %u parameters, which is more than the %u I can handle"
-msgstr ""
-"%s: TFM soubor má %u parametrù, co¾ je více ne¾ %u, které lze obslou¾it"
-
-#: tie-performer.cc:159
-msgid "No ties were created!"
-msgstr "Nebyly vyvoøeny ¾ádné ligatury!"
-
-#: time-scaled-music-iterator.cc:25
-msgid "no one to print a tuplet start bracket"
-msgstr "není kdo by vytiskl otevírací závorku pro triolu (kvartolu, ...)"
-
-#. If there is no such symbol, we default to the numbered style.
-#. (Here really with a warning!)
-#: time-signature.cc:87
-#, c-format
-msgid "time signature symbol `%s' not found; reverting to numbered style"
-msgstr ""
-"symbol pro znaèení taktu `%s' nebyl nalezen; mìním na znaèení èíslicemi"
-
-#.
-#. Todo: should make typecheck?
-#.
-#. OTOH, Tristan Keuris writes 8/20 in his Intermezzi.
-#.
-#: time-signature-engraver.cc:57
-#, c-format
-msgid "Found strange time signature %d/%d."
-msgstr ""
-
-#: translator-ctors.cc:53
-#, c-format
-msgid "unknown translator: `%s'"
-msgstr "neznámý pøekladaè: `%s':"
-
-#: translator-def.cc:105
-msgid "Program has no such type"
-msgstr "Program nemá takový typ"
-
-#: translator-def.cc:111
-#, c-format
-msgid "Already contains: `%s'"
-msgstr "Ji¾ obsahuje: `%s'"
-
-#: translator-def.cc:112
-#, c-format
-msgid "Not adding translator: `%s'"
-msgstr "Nepøidávám pøekladaè: `%s'"
-
-#: translator-def.cc:229
-#, c-format
-msgid "can't find: `%s'"
-msgstr "nelze nalézt: `%s'"
-
-#: translator-group.cc:158
-#, c-format
-msgid "can't find or create `%s' called `%s'"
-msgstr "nelze nalézt nebo vytvoøit `%s' nazvaný `%s'"
-
-#: translator-group.cc:230
-#, c-format
-msgid "can't find or create: `%s'"
-msgstr "nelze nalézt nebo vytvoøit: `%s'"
-
-#: vaticana-ligature.cc:49
-#, fuzzy
-msgid "ascending vaticana style flexa"
-msgstr "vzestupný porrectus ve stylu vaticana "
-
-#: vaticana-ligature.cc:219
-#, fuzzy
-msgid "Vaticana_ligature:thickness undefined; assuming 1.4"
-msgstr ""
-"Mensural_ligature: tlou¹»ka není definována pro flexu %d; pøedpokládám 1.4"
-
-#: vaticana-ligature.cc:233
-#, fuzzy
-msgid "Vaticana_ligature:x-offset undefined; assuming 0.0"
-msgstr ""
-"Mensural_ligature: ¹íøka flexy (flexa-width) není definována pro flexu %d; "
-"pøedpokládám 2.0"
-
-#: vaticana-ligature.cc:258
-#, fuzzy
-msgid "Vaticana_ligature: (delta_pitch == 0)"
-msgstr "Mensural_ligature: (join_left == 0)"
-
-#: vaticana-ligature.cc:271
-msgid "Vaticana_ligature:delta-pitch -> ignoring join"
-msgstr ""
-
-#: vaticana-ligature-engraver.cc:477
-#, c-format
-msgid "Vaticana_ligature_engraver: setting `spacing-increment = %f': ptr=%ul"
-msgstr ""
-
-#: volta-engraver.cc:112
-msgid "No volta spanner to end"
-msgstr "zde není repetice k ukonèení"
-
-#: volta-engraver.cc:123
-msgid "Already have a volta spanner.  Stopping that one prematurely."
-msgstr "Ji¾ má repetici. Pøedèasnì ji ukonèuji."
-
-#: volta-engraver.cc:127
-msgid "Also have a stopped spanner.  Giving up."
-msgstr "Také má právì ukonèenou repetici. Vzdávám."
-
-#: parser.yy:480
-#, fuzzy
-msgid "Identifier should have alphabetic characters only"
-msgstr "Identifikátor by mìl obsahovat pouze písmena"
-
-#: parser.yy:779
-msgid "More alternatives than repeats.  Junking excess alternatives."
-msgstr "Více alternativ ne¾ opakování. Zahazuji nadbyteèné alternativy."
-
-#: parser.yy:861 parser.yy:868
-msgid "pplycontext takes function argument"
-msgstr ""
-
-#: parser.yy:877
-msgid "Second argument must be a symbol"
-msgstr "Druhý argument musí být symbol"
-
-#: parser.yy:882
-#, fuzzy
-msgid "First argument must be a procedure taking one argument"
-msgstr "První argument musí být procedura s jedním parametrem"
-
-#: parser.yy:1009
-msgid "pply takes function argument"
-msgstr ""
-
-#: parser.yy:1501
-msgid "Expecting string as script definition"
-msgstr "Oèekáván øetìzec jako definice skriptu"
-
-#: parser.yy:1598
-msgid "Expecting musical-pitch value"
-msgstr "Oèekávána hodnota musical-pitch"
-
-#: parser.yy:1609
-msgid "Must have duration object"
-msgstr "Musí mít objekt délka"
-
-#: parser.yy:1618 parser.yy:1626
-msgid "Have to be in Lyric mode for lyrics"
-msgstr "Pro zápis textu musíte být v módu Lyric"
-
-#: parser.yy:1798 parser.yy:1853
-#, c-format
-msgid "not a duration: %d"
-msgstr "není délkou: %d"
-
-#: parser.yy:1949
-msgid "Have to be in Note mode for notes"
-msgstr "Pro zápis not musíte být v módu Note"
-
-#: parser.yy:2032
-msgid "Have to be in Chord mode for chords"
-msgstr "Pro zápis akordù musíte být v módu Chord"
-
-#: parser.yy:2171
-msgid "need integer number arg"
-msgstr "argument musí být celé èíslo"
-
-#: parser.yy:2316
-msgid "Suspect duration found following this beam"
-msgstr "Byla oèekávána délka následující za tímto trámcem"
-
-#: lexer.ll:186
-msgid "EOF found inside a comment"
-msgstr "uvnitø poznámky nalezen konec souboru"
-
-#: lexer.ll:200
-msgid "\\maininput disallowed outside init files"
-msgstr "\\maininput není povolen mimo inicializaèní soubory"
-
-#: lexer.ll:224
-#, c-format
-msgid "wrong or undefined identifier: `%s'"
-msgstr "¹patný nebo nedefinovaný identifikátor: `%s'"
-
-#. backup rule
-#: lexer.ll:233
-msgid "Missing end quote"
-msgstr "Chybìjící koncová uvozovka"
-
-#. backup rule
-#: lexer.ll:255 lexer.ll:259
-msgid "white expected"
-msgstr "oèekávána mezera (whitespace)"
-
-#: lexer.ll:268
-msgid "Can't evaluate Scheme in safe mode"
-msgstr "Nelze vvyhodnotit Scheme v bezpeèném módu"
-
-#: lexer.ll:397 lexer.ll:487
-#, fuzzy
-msgid "Brace found at end of lyric.  Did you forget a space?"
-msgstr "Na konci textu byla nalezena závorka. Zapomnìl jste na mezeru?"
-
-#: lexer.ll:574
-#, c-format
-msgid "invalid character: `%c'"
-msgstr "neplatný znak: `%c'"
-
-#: lexer.ll:651
-#, c-format
-msgid "unknown escaped string: `\\%s'"
-msgstr "neznámá escape sekvence: `\\%s'"
-
-#: lexer.ll:742
-#, fuzzy, c-format
-msgid "Incorrect lilypond version: %s (%s, %s)"
-msgstr "Nesprávná verze lilypondu: %s (%s, %s)"
-
-#: lexer.ll:743
-#, fuzzy
-msgid "Consider updating the input with the convert-ly script"
-msgstr "Zva¾te konverzi zdrojového textu pomocí skriptu convert-ly"
-
-#~ msgid "This is the error log:\n"
-#~ msgstr "Toto je záznam chyb:\n"
-
-#~ msgid "Run LilyPond using LaTeX for titling"
-#~ msgstr "Spou¹tí LilyPond a vypomáhá si LaTeXem pro titulky"
-
-#~ msgid "Trying to salvage the rest."
-#~ msgstr "Pokou¹ím se zachránit zbytek."
-
-#~ msgid "Fetch and rebuild from latest source package"
-#~ msgstr "Stáhuje a znovu sestavuje z nejnovìj¹ích zdrojových textù"
-
-#~ msgid "unpack and build in DIR [%s]"
-#~ msgstr "rozbaluje a sestavuje v ADRESÁØi [%s]"
-
-#~ msgid "execute COMMAND, subtitute:"
-#~ msgstr "vykonává PØÍKAZ, nahraï:"
-
-#~ msgid "%b: build root"
-#~ msgstr "%b: sestav koøenový adresáø"
-
-#~ msgid "%n: package name"
-#~ msgstr "%n: jméno balíèku"
-
-#~ msgid "%r: release directory"
-#~ msgstr "%r: adresáø pro výstupní verzi"
-
-#~ msgid "%t: tarball"
-#~ msgstr "%t: tarball (tar.gz)"
-
-#~ msgid "%v: package version"
-#~ msgstr "%v: verze balíèku"
-
-#~ msgid "keep all output, and name the directory %s"
-#~ msgstr "ponechá v¹echny výstupy a pojmenuje adresáø %s"
-
-#~ msgid "upon failure notify EMAIL[,EMAIL]"
-#~ msgstr "pøi chybì informujte EMAIL[,EMAIL]"
-
-#~ msgid "remove previous build"
-#~ msgstr "odstraní soubory z pøedchozího sestavení"
-
-#~ msgid "fetch and build URL [%s]"
-#~ msgstr "stáhne a sestaví URL [%s]"
-
-#~ msgid "Listing `%s'..."
-#~ msgstr "Prohledávám `%s'..."
-
-#~ msgid "latest is: %s"
-#~ msgstr "nejnovìj¹í je: %s"
-
-#~ msgid "relax, %s is up to date"
-#~ msgstr "uvolnìte se, %s je aktuální"
-
-#~ msgid "Fetching `%s'..."
-#~ msgstr "Stahuje se `%s'..."
-
-#~ msgid "Building `%s'..."
-#~ msgstr "Sestavuje se `%s'..."
-
-#~ msgid "invalid subtraction: not part of chord: %s"
-#~ msgstr "neplatný odeèet: není souèástí akordu: %s"
-
-#~ msgid "invalid inversion pitch: not part of chord: %s"
-#~ msgstr "neplatný inverzní tón: není souèástí akordu: %s"
-
-#~ msgid "This was the other key definition."
-#~ msgstr "Toto byla jiná definice tóniny."
-
-#~ msgid ", at "
-#~ msgstr ", v "
-
-#~ msgid "Pitch arguments out of range"
-#~ msgstr "Vý¹kové argumenty jsou mimo rozsah"
-
-#~ msgid "(left_head == 0)"
-#~ msgstr "(left_head == 0)"
-
-#~ msgid "undefined left_head"
-#~ msgstr "nedefinované left_head"
-
-#~ msgid "(right_head == 0)"
-#~ msgstr "(right_head == 0)"
-
-#~ msgid "undefined right_head"
-#~ msgstr "nedefinované right_head"
-
-#~ msgid "junking lonely porrectus"
-#~ msgstr "matoucí osamocený porrectus"
-
-#~ msgid "porrectus style undefined; using mensural"
-#~ msgstr "syyl porrectu není definován; pou¾ívám mensural"
-
-#, fuzzy
-#~ msgid "Putting slur over rest."
-#~ msgstr "Dávám ligaturu pøes pomlku."
-
-#~ msgid "Slur over rest?"
-#~ msgstr "Ligaturu pøes pomlku?"
-
-#~ msgid "Can't specify direction for this request"
-#~ msgstr "Nelze urèit smìr pro tento po¾adavek"
diff --git a/po/da.po b/po/da.po
deleted file mode 100644
index 0d4b1791f2..0000000000
--- a/po/da.po
+++ /dev/null
@@ -1,2663 +0,0 @@
-# Danish translation of lilypond
-# Copyright (C) 2001 Free Software Foundation, Inc.
-# Keld Simonsen <keld@dkuug.dk>, 2001-2002.
-# Reviewed 2001-09-28 Rune Zedeler <rz@daimi.au.dk>
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: lilypond 1.6.0\n"
-"POT-Creation-Date: 2003-07-18 14:45+0200\n"
-"PO-Revision-Date: 2002-09-07 21:00+0200\n"
-"Last-Translator: Keld Simonsen <keld@dkuug.dk>\n"
-"Language-Team: Danish <dansk@klid.dk>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=iso-8859-1\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#. this is where special info is often stored
-#. ###############################################################
-#. lilylib.py -- options and stuff
-#.
-#. source file of the GNU LilyPond music typesetter
-#.
-#. (c)  1998--2003  Han-Wen Nienhuys <hanwen@cs.uu.nl>
-#. Jan Nieuwenhuizen <janneke@gnu.org>
-#. ##  subst:\(^\|[^._a-z]\)\(abspath\|identify\|warranty\|progress\|warning\|error\|exit\|getopt_args\|option_help_str\|options_help_str\|help\|setup_temp\|read_pipe\|system\|cleanup_temp\|strip_extension\|cp_to_dir\|mkdir_p\|init\) *(
-#. ##  replace:\1ly.\2 (
-#. ## subst: \(help_summary\|keep_temp_dir_p\|option_definitions\|original_dir\|program_name\|pseudo_filter_p\|temp_dir\|verbose_p\)
-#. ###############################################################
-#. Users of python modules should include this snippet
-#. and customize variables below.
-#. We'll suffer this path init stuff as long as we don't install our
-#. python packages in <prefix>/lib/pythonx.y (and don't kludge around
-#. it as we do with teTeX on Red Hat Linux: set some environment var
-#. (PYTHONPATH) in profile)
-#. If set, LILYPONDPREFIX must take prevalence
-#. if datadir is not set, we're doing a build and LILYPONDPREFIX
-#. Customize these
-#. lilylib globals
-#: lilylib.py:60
-msgid "lilylib module"
-msgstr ""
-
-# forklaring af flag -h
-#: lilylib.py:63 lilypond-book.py:131 lilypond.py:128 midi2ly.py:100
-#: mup2ly.py:75 main.cc:111
-msgid "print this help"
-msgstr "denne hjælp"
-
-#. ###############################################################
-#. Handle bug in Python 1.6-2.1
-#.
-#. there are recursion limits for some patterns in Python 1.6 til 2.1.
-#. fix this by importing pre instead. Fix by Mats.
-#. Attempt to fix problems with limited stack size set by Python!
-#. Sets unlimited stack size. Note that the resource module only
-#. is available on UNIX.
-#: lilylib.py:114 midi2ly.py:136 mup2ly.py:130 main.cc:188 main.cc:200
-#, c-format, python-format
-msgid "Copyright (c) %s by"
-msgstr "Copyright © %s af"
-
-#: lilylib.py:114
-msgid " 1998--2003"
-msgstr ""
-
-#: lilylib.py:118
-msgid "Distributed under terms of the GNU General Public License."
-msgstr ""
-
-#: lilylib.py:120
-msgid "It comes with NO WARRANTY."
-msgstr ""
-
-#: lilylib.py:127 midi2ly.py:150 mup2ly.py:144 input.cc:88
-msgid "warning: "
-msgstr "advarsel: "
-
-#. lots of midi files use plain text for lyric events
-#. FIXME: read from stdin when files[0] = '-'
-#: lilylib.py:130 midi2ly.py:165 midi2ly.py:1018 midi2ly.py:1083 mup2ly.py:147
-#: mup2ly.py:161 input.cc:93
-msgid "error: "
-msgstr "fejl: "
-
-#: lilylib.py:134
-#, fuzzy, python-format
-msgid "Exiting (%d)..."
-msgstr "Afslutter... "
-
-#: lilylib.py:194 midi2ly.py:224 mup2ly.py:220
-#, python-format
-msgid "Usage: %s [OPTIONS]... FILE"
-msgstr "Brug: %s [FLAG]... FIL"
-
-#: lilylib.py:198 midi2ly.py:228 mup2ly.py:224 main.cc:166
-msgid "Options:"
-msgstr "Flag:"
-
-#: lilylib.py:202 midi2ly.py:232 mup2ly.py:228 main.cc:172
-#, c-format, python-format
-msgid "Report bugs to %s."
-msgstr ""
-"Rapportér programfejl til %s\n."
-"Rapportér fejl i oversættelsen til <dansk@klid.dk>."
-
-#: lilylib.py:228
-#, fuzzy, python-format
-msgid "Opening pipe `%s'"
-msgstr "Renser \"%s\"..."
-
-#. successful pipe close returns 'None'
-#: lilylib.py:240
-#, python-format
-msgid "`%s' failed (%d)"
-msgstr ""
-
-#: lilylib.py:242 lilylib.py:289 lilypond-book.py:231 lilypond.py:512
-msgid "The error log is as follows:"
-msgstr ""
-
-#: lilylib.py:262 midi2ly.py:260 mup2ly.py:256
-#, python-format
-msgid "Invoking `%s'"
-msgstr "Starter \"%s\""
-
-#: lilylib.py:264
-#, python-format
-msgid "Running %s..."
-msgstr "Kør %s..."
-
-#: lilylib.py:282
-#, python-format
-msgid "`%s' failed (%s)"
-msgstr ""
-
-#: lilylib.py:285 midi2ly.py:266 mup2ly.py:264
-msgid "(ignored)"
-msgstr "(ignoreret)"
-
-# hær er det spørg om rensning af en temporærkatalog
-#: lilylib.py:299 midi2ly.py:276 mup2ly.py:274
-#, python-format
-msgid "Cleaning %s..."
-msgstr "Renser %s..."
-
-#. Duh.  Python style portable: cp *.EXT OUTDIR
-#. system ('cp *.%s %s' % (ext, outdir), 1)
-#. Python < 1.5.2 compatibility
-#.
-#. On most platforms, this is equivalent to
-#. `normpath(join(os.getcwd()), PATH)'.  *Added in Python version 1.5.2*
-#. tex needs lots of memory, more than it gets by default on Debian
-#. TODO: * prevent multiple addition.
-#. * clean TEXINPUTS, MFINPUTS, TFMFONTS,
-#. as these take prevalence over $TEXMF
-#. and thus may break tex run?
-#. $TEXMF is special, previous value is already taken care of
-#. # -sOutputFile does not work with bbox?
-#. # todo:
-#. # have better algorithm for deciding when to crop page,
-#. # and when to show full page
-#: lilylib.py:458
-msgid "Removing output file"
-msgstr ""
-
-#. !@PYTHON@
-#. once upon a rainy monday afternoon.
-#.
-#. ...
-#.
-#. (not finished.)
-#. ABC standard v1.6:  http://www.gre.ac.uk/~c.walshaw/abc2mtex/abc.txt
-#.
-#. Enhancements  (Roy R. Rankin)
-#.
-#. Header section moved to top of lilypond file
-#. handle treble, treble-8, alto, and bass clef
-#. Handle voices (V: headers) with clef and part names, multiple voices
-#. Handle w: lyrics with multiple verses
-#. Handle key mode names for minor, major, phrygian, ionian, locrian, aeolian,
-#. mixolydian, lydian, dorian
-#. Handle part names from V: header
-#. Tuplets handling fixed up
-#. Lines starting with |: not discarded as header lines
-#. Multiple T: and C: header entries handled
-#. Accidental maintained until next bar check
-#. Silent rests supported
-#. articulations fermata, upbow, downbow, ltoe, accent, tenuto supported
-#. Chord strings([-^]"string") can contain a '#'
-#. Header fields enclosed by [] in notes string processed
-#. W: words output after tune as abc2ps does it (they failed before)
-#. Enhancements (Laura Conrad)
-#.
-#. Barring now preserved between ABC and lilypond
-#. the default placement for text in abc is above the staff.
-#. %%LY now supported.
-#. \breve and \longa supported.
-#. M:none doesn't crash lily.
-#. Limitations
-#.
-#. Multiple tunes in single file not supported
-#. Blank T: header lines should write score and open a new score
-#. Not all header fields supported
-#. ABC line breaks are ignored
-#. Block comments generate error and are ignored
-#. Postscript commands are ignored
-#. lyrics not resynchronized by line breaks (lyrics must fully match notes)
-#. %%LY slyrics can't be directly before a w: line.
-#. ???
-#. TODO:
-#.
-#. Convert to new chord styles.
-#.
-#. UNDEF -> None
-#.
-#. uGUHGUHGHGUGH
-#. UGH
-#. treble8 is used by abctab2ps; -8va is used by barfly,
-#. and by my patch to abc2ps. If there's ever a standard
-#. about this we'll support that.
-#. find keywork
-#. assume that Q takes the form "Q:1/4=120"
-#. There are other possibilities, but they are deprecated
-#. outf.write ("\t\t\\consists Staff_margin_engraver\n")
-#. pitch manipulation. Tuples are (name, alteration).
-#. 0 is (central) C. Alteration -1 is a flat, Alteration +1 is a sharp
-#. pitch in semitones.
-#. abc to lilypond key mode names
-#. semitone shifts for key mode names
-#. latex does not like naked #'s
-#. latex does not like naked "'s
-#. break lyrics to words and put "'s around words containing numbers and '"'s
-#. escape "
-#. _ causes probs inside ""
-#. _ to ' _ '
-#. split words with -
-#. unless \-
-#. ~ to space('_')
-#. * to to space
-#. latex does not like naked #'s
-#. put numbers and " and ( into quoted string
-#. insure space between lines
-#. title
-#. strip trailing blanks
-#. Meter
-#. KEY
-#. seperate clef info
-#. there may or may not be a space
-#. between the key letter and the mode
-#. ugh.
-#. ugh.
-#. Notes
-#. Origin
-#. Reference Number
-#. Area
-#. History
-#. Book
-#. Composer
-#. Default note length
-#. Voice
-#. Words
-#. vocals
-#. tempo
-#. we use in this order specified accidental, active accidental for bar,
-#. active accidental for key
-#. (num /  den)  / defaultlen < 1/base
-#. return (str, num,den,dots)
-#. ignore slide
-#. ignore roll
-#. s7m2 input doesnt care about spaces
-#.
-#. remember accidental for rest of bar
-#.
-#. get accidental set in this bar or UNDEF if not set
-#. WAT IS ABC EEN ONTZETTENDE PROGRAMMEERPOEP  !
-#. failed; not a note!
-#. escape '#'s
-#.
-#. |] thin-thick double bar line
-#. || thin-thin double bar line
-#. [| thick-thin double bar line
-#. :| left repeat
-#. |: right repeat
-#. :: left-right repeat
-#. |1 volta 1
-#. |2 volta 2
-#. first try the longer one
-#. bracket escape
-#. the nobarlines option is necessary for an abc to lilypond translator for
-#. exactly the same reason abc2midi needs it: abc requires the user to enter
-#. the note that will be printed, and MIDI and lilypond expect entry of the
-#. pitch that will be played.
-#.
-#. In standard 19th century musical notation, the algorithm for translating
-#. between printed note and pitch involves using the barlines to determine
-#. the scope of the accidentals.
-#.
-#. Since ABC is frequently used for music in styles that do not use this
-#. convention, such as most music written before 1700, or ethnic music in
-#. non-western scales, it is necessary to be able to tell a translator that
-#. the barlines should not affect its interpretation of the pitch.
-#. write other kinds of appending  if we ever need them.
-#. add comments to current voice
-#. Try nibbling characters off until the line doesn't change.
-#. dump_global (outf)
-#. !@PYTHON@
-#.
-#. convert-ly.py -- Update old LilyPond input files (fix name?)
-#.
-#. source file of the GNU LilyPond music typesetter
-#.
-#. (c)  1998--2003  Han-Wen Nienhuys <hanwen@cs.uu.nl>
-#. Jan Nieuwenhuizen <janneke@gnu.org>
-#. TODO
-#. use -f and -t for -s output
-#. NEWS
-#. 0.2
-#. - rewrite in python
-#. Did we ever have \mudela-version?  I doubt it.
-#. lilypond_version_re_str = '\\\\version *\"(.*)\"'
-#. ###########################
-#. need new a namespace
-#. raise FatalConversionError()
-#. need new a namespace
-#. harmful to current .lys
-#. str = re.sub ('\\\\key([^;]+);', '\\\\accidentals \\1;', str)
-#. raise FatalConversionError()
-#. raise FatalConversionError()
-#. raise FatalConversionError()
-#. TODO: lots of other syntax change should be done here as well
-#. Ugh, but meaning of \stemup changed too
-#. maybe we should do \stemup -> \stemUp\slurUp\tieUp ?
-#. I don't know exactly when these happened...
-#. ugh, we loose context setting here...
-#. (lacks capitalisation slur -> Slur)
-#. # dynamic..
-#. TODO: add lots of these
-#. ugh
-#. old fix
-#. Make sure groups of more than one ; have space before
-#. them, so that non of them gets removed by next rule
-#. Only remove ; that are not after spaces, # or ;
-#. Otherwise  we interfere with Scheme comments,
-#. which is badbadbad.
-#. 40 ?
-#. ###############################
-#. END OF CONVERSIONS
-#. ###############################
-#. !@PYTHON@
-#. info mostly taken from looking at files. See also
-#. http://lilypond.org/wiki/?EnigmaTransportFormat
-#. This supports
-#.
-#. * notes
-#. * rests
-#. * ties
-#. * slurs
-#. * lyrics
-#. * articulation
-#. * grace notes
-#. * tuplets
-#.
-#. todo:
-#. * slur/stem directions
-#. * voices (2nd half of frame?)
-#. * more intelligent lyrics
-#. * beams (better use autobeam?)
-#. * more robust: try entertainer.etf (freenote)
-#. * dynamics
-#. * empty measures (eg. twopt03.etf from freenote)
-#.
-#. uGUHGUHGHGUGH
-#. notename 0 == central C
-#. represent pitches as (notename, alteration), relative to C-major scale
-#. a fifth up
-#. should cache this.
-#. flag1 isn't all that interesting.
-#. 3: '>',
-#. 18: '\arpeggio' ,
-#. do grace notes.
-#. ugh.
-#. we don't attempt voltas since they fail easily.
-#. and g.repeat_bar == '|:' or g.repeat_bar == ':|:' or g.bracket:
-#. 4 layers.
-#. let's not do this: this really confuses when eE happens to be before  a ^text.
-#. if last_tag and last_indices:
-#. etf_file_dict[last_tag][last_indices].append (l)
-#. # do it
-#. staff-spec
-#. should use \addlyrics ?
-#. !@PYTHON@
-#. vim: set noexpandtab:
-#. This is was the idea for handling of comments:
-#. Multiline comments, @ignore .. @end ignore is scanned for
-#. in read_doc_file, and the chunks are marked as 'ignore', so
-#. lilypond-book will not touch them any more. The content of the
-#. chunks are written to the output file. Also 'include' and 'input'
-#. regex has to check if they are commented out.
-#.
-#. Then it is scanned for 'lilypond', 'lilypond-file' and 'lilypond-block'.
-#. These three regex's has to check if they are on a commented line,
-#. % for latex, @c for texinfo.
-#.
-#. Then lines that are commented out with % (latex) and @c (Texinfo)
-#. are put into chunks marked 'ignore'. This cannot be done before
-#. searching for the lilypond-blocks because % is also the comment character
-#. for lilypond.
-#.
-#. The the rest of the rexeces are searched for. They don't have to test
-#. if they are on a commented out line.
-#. ###############################################################
-#. Users of python modules should include this snippet
-#. and customize variables below.
-#. We'll suffer this path init stuff as long as we don't install our
-#. python packages in <prefix>/lib/pythonx.y (and don't kludge around
-#. it as we do with teTeX on Red Hat Linux: set some environment var
-#. (PYTHONPATH) in profile)
-#. If set, LILYPONDPREFIX must take prevalence
-#. if datadir is not set, we're doing a build and LILYPONDPREFIX
-#. Customize these
-#. if __name__ == '__main__':
-#. lilylib globals
-#. temp_dir = os.path.join (original_dir,  '%s.dir' % program_name)
-#. urg
-#. # FIXME
-#. # do -P or -p by default?
-#. #help_summary = _ ("Run LilyPond using LaTeX for titling")
-#: lilypond-book.py:120
-msgid "Process LilyPond snippets in hybrid html, LaTeX or texinfo document"
-msgstr ""
-
-#. another bug in option parser: --output=foe is taken as an abbreviation
-#. for --output-format
-#: lilypond-book.py:125 main.cc:110
-msgid "EXT"
-msgstr "FMT"
-
-#: lilypond-book.py:125
-msgid "use output format EXT (texi [default], texi-html, latex, html)"
-msgstr ""
-
-#: lilypond-book.py:126 lilypond-book.py:127 lilypond-book.py:129
-#: lilypond-book.py:130
-#, fuzzy
-msgid "DIM"
-msgstr "KATALOG"
-
-#: lilypond-book.py:126
-msgid "default fontsize for music.  DIM is assumed to be in points"
-msgstr ""
-
-#: lilypond-book.py:127
-msgid "deprecated, use --default-music-fontsize"
-msgstr ""
-
-#: lilypond-book.py:128
-msgid "OPT"
-msgstr ""
-
-#: lilypond-book.py:128
-msgid "pass OPT quoted to the lilypond command line"
-msgstr ""
-
-#: lilypond-book.py:129
-msgid "force fontsize for all inline lilypond. DIM is assumed be to in points"
-msgstr ""
-
-#: lilypond-book.py:130
-msgid "deprecated, use --force-music-fontsize"
-msgstr ""
-
-#: lilypond-book.py:132 lilypond.py:130 main.cc:113 main.cc:118
-msgid "DIR"
-msgstr "KATALOG"
-
-#: lilypond-book.py:132
-msgid "include path"
-msgstr ""
-
-#: lilypond-book.py:133
-#, fuzzy
-msgid "write dependencies"
-msgstr "tilføj KATALOG efter afhængigheder"
-
-#: lilypond-book.py:134
-msgid "PREF"
-msgstr ""
-
-#: lilypond-book.py:134
-#, fuzzy
-msgid "prepend PREF before each -M dependency"
-msgstr "tilføj KATALOG efter afhængigheder"
-
-#: lilypond-book.py:135
-#, fuzzy
-msgid "don't run lilypond"
-msgstr "kør ikke LilyPond"
-
-#: lilypond-book.py:136
-msgid "don't generate pictures"
-msgstr ""
-
-#: lilypond-book.py:137
-msgid "strip all lilypond blocks from output"
-msgstr ""
-
-#: lilypond-book.py:138 lilypond-book.py:139 lilypond.py:135 lilypond.py:136
-#: midi2ly.py:102 main.cc:114 main.cc:117
-msgid "FILE"
-msgstr "FIL"
-
-#: lilypond-book.py:138
-msgid "filename main output file"
-msgstr ""
-
-#: lilypond-book.py:139
-msgid "where to place generated files"
-msgstr ""
-
-#: lilypond-book.py:140 lilypond.py:137
-msgid "RES"
-msgstr ""
-
-#: lilypond-book.py:141 lilypond.py:138
-msgid "set the resolution of the preview to RES"
-msgstr ""
-
-# Førklaring til --verbose (borde være længre)
-#: lilypond-book.py:142 lilypond.py:148 midi2ly.py:105 mup2ly.py:78 main.cc:126
-msgid "be verbose"
-msgstr "vær udførlig"
-
-#: lilypond-book.py:143
-#, fuzzy
-msgid "print version information"
-msgstr "vis versionsnummer"
-
-#: lilypond-book.py:144 lilypond.py:150 midi2ly.py:107 mup2ly.py:80 main.cc:127
-msgid "show warranty and copyright"
-msgstr "vis garanti og copyright"
-
-#. format specific strings, ie. regex-es for input, and % strings for output
-#. global variables
-#. lilypond_binary = 'valgrind --suppressions=/home/hanwen/usr/src/guile-1.6.supp  --num-callers=10 /home/hanwen/usr/src/lilypond/lily/out/lilypond'
-#. only use installed binary  when we're installed too.
-#. only use installed binary  when we're installed too.
-#. ###############################################################
-#. Dimension handling for LaTeX.
-#.
-#. Ugh.  (La)TeX writes progress and error messages on stdout
-#. Redirect to stderr
-#: lilypond-book.py:230
-msgid "LaTeX failed."
-msgstr ""
-
-#. URG see lilypond
-#. Convert numeric values, with or without specific dimension, to floats.
-#. Keep other strings
-#. ###############################################################
-#. How to output various structures.
-#. # maybe <hr> ?
-#. Verbatim text is always finished with \n.  FIXME: For HTML,
-#. this newline should be removed.
-#. Verbatim text is always finished with \n.  FIXME: For HTML,
-#. this newline should be removed.
-#. # Ugh we need to differentiate on origin:
-#. # lilypond-block origin wants an extra <p>, but
-#. # inline music doesn't.
-#. # possibly other center options?
-#. verbatim text is always finished with \n
-#. verbatim text is always finished with \n
-#. verbatim text is always finished with \n
-#. verbatim text is always finished with \n
-#. do some tweaking: @ is needed in some ps stuff.
-#.
-#. ugh, the <p> below breaks inline images...
-#. clumsy workaround for python 2.2 pre bug.
-#. ###############################################################
-#. Recognize special sequences in the input
-#. Warning: This uses extended regular expressions.  Tread with care.
-#.
-#. legenda
-#.
-#. (?P<name>regex) -- assign result of REGEX to NAME
-#. *? -- match non-greedily.
-#. (?m) -- multiline regex: make ^ and $ match at each line
-#. (?s) -- make the dot match all characters including newline
-#. why do we have distinction between @mbinclude and @include?
-#. # we'd like to catch and reraise a more
-#. # detailed error, but alas, the exceptions
-#. # changed across the 1.5/2.1 boundary.
-#. ughUGH not original options
-#. First we want to scan the \documentclass line
-#. it should be the first non-comment line.
-#. The only thing we really need to know about the \documentclass line
-#. is if there are one or two columns to begin with.
-#. Then we add everything before \begin{document} to
-#. paperguru.m_document_preamble so that we can later write this header
-#. to a temporary file in find_latex_dims() to find textwidth.
-#. this is not bulletproof..., it checks the first 10 chunks
-#. newchunks.extend (func (m))
-#. python 1.5 compatible:
-#. we have to check for verbatim before doing include,
-#. because we don't want to include files that are mentioned
-#. inside a verbatim environment
-#. ugh fix input
-#. # Hmm, we should hash only lilypond source, and skip the
-#. # %options are ...
-#. # comment line
-#. # todo: include path, but strip
-#. # first part of the path.
-#. format == 'html'
-#. ugh rename
-#. Count sections/chapters.
-#. # TODO: do something like
-#. # this for texinfo/latex as well ?
-#. ugh
-#. fixme: be sys-independent.
-#.
-#. Ugh, fixing up dependencies for .tex generation
-#.
-#. Ugh.  (La)TeX writes progress and error messages on stdout
-#. Redirect to stderr
-#. # There used to be code to write .tex dependencies, but
-#. # that is silly: lilypond-book has its own dependency scheme
-#. # to ensure that all lily-XXX.tex files are there
-#. # TODO: put file name in front of texidoc.
-#. #
-#. # what's this? Docme --hwn
-#. #
-#. #docme: why global?
-#. Do It.
-#. should chmod -w
-#: lilypond-book.py:1557 lilypond.py:673 midi2ly.py:1018
-#, python-format
-msgid "getopt says: `%s'"
-msgstr "getopt siger: '%s'"
-
-#. HACK
-#. status = os.system ('lilypond -w')
-#: lilypond-book.py:1630 lilypond.py:777
-msgid "no files specified on command line"
-msgstr "ingen filer angivne på kommandolinjen."
-
-#.
-#. Petr, ik zou willen dat ik iets zinvoller deed,
-#. maar wat ik kan ik doen, het verandert toch niets?
-#. --hwn 20/aug/99
-#. !@PYTHON@
-#.
-#. lilypond.py -- Run LilyPond, add titles to bare score, generate printable
-#. document
-#. Invokes: lilypond, latex (or pdflatex), dvips, ps2pdf, gs
-#.
-#. source file of the GNU LilyPond music typesetter
-#.
-#. (c)  1998--2003  Han-Wen Nienhuys <hanwen@cs.uu.nl>
-#. Jan Nieuwenhuizen <janneke@gnu.org>
-#. This is the third incarnation of lilypond.
-#.
-#. Earlier incarnations of lilypond were written by
-#. Jeffrey B. Reed<daboys@austin.rr.com> (Python version)
-#. Jan Arne Fagertun <Jan.A.Fagertun@@energy.sintef.no> (Bourne shell script)
-#.
-#. Note: gettext work best if we use ' for docstrings and "
-#. for gettextable strings.
-#. --> DO NOT USE ''' for docstrings.
-#. ###############################################################
-#. Users of python modules should include this snippet
-#. and customize variables below.
-#. We'll suffer this path init stuff as long as we don't install our
-#. python packages in <prefix>/lib/pythonx.y (and don't kludge around
-#. it as we do with teTeX on Red Hat Linux: set some environment var
-#. (PYTHONPATH) in profile)
-#. If set, LILYPONDPREFIX must take prevalence
-#. if datadir is not set, we're doing a build and LILYPONDPREFIX
-#. Customize these
-#. if __name__ == '__main__':
-#. lilylib globals
-#. # FIXME
-#. # do -P or -p by default?
-#. #help_summary = _ ("Run LilyPond using LaTeX for titling")
-#: lilypond.py:121
-msgid "Run LilyPond, add titles, generate printable document."
-msgstr ""
-
-#: lilypond.py:127 main.cc:115
-msgid "write Makefile dependencies for every input file"
-msgstr "skriv Makefile-afhængigheder for hver inddatafil"
-
-#: lilypond.py:129
-msgid "print even more output"
-msgstr ""
-
-#: lilypond.py:130
-msgid "add DIR to LilyPond's search path"
-msgstr "tilføj KATALOG til LilyPonds søgesti"
-
-# %s er programmets navn
-#: lilypond.py:132
-#, python-format
-msgid "keep all output, output to directory %s.dir"
-msgstr "behold al uddata, udskrivo i kataloget %s.dir"
-
-#: lilypond.py:133
-msgid "don't run LilyPond"
-msgstr "kør ikke LilyPond"
-
-#: lilypond.py:134 main.cc:116
-msgid "produce MIDI output only"
-msgstr "lav kun MIDI-uddata"
-
-#: lilypond.py:135 midi2ly.py:102
-msgid "write output to FILE"
-msgstr "skriv uddata til FIL"
-
-#: lilypond.py:136
-msgid "find pfa fonts used in FILE"
-msgstr "find pfa-skrifttyper brugt i FIL"
-
-#: lilypond.py:139
-msgid "generate PostScript output"
-msgstr "lav PostScript-uddata"
-
-#: lilypond.py:140
-msgid "generate PNG page images"
-msgstr ""
-
-#: lilypond.py:141
-#, fuzzy
-msgid "generate PS.GZ"
-msgstr "lav PDF-uddata"
-
-#: lilypond.py:142
-msgid "generate PDF output"
-msgstr "lav PDF-uddata"
-
-#: lilypond.py:143
-msgid "use pdflatex to generate a PDF output"
-msgstr ""
-
-#. FIXME: preview, picture; to indicate creation of a PNG?
-#: lilypond.py:145
-msgid "make a picture of the first system"
-msgstr ""
-
-#: lilypond.py:146
-msgid "make HTML file with links to all output"
-msgstr ""
-
-#: lilypond.py:147
-msgid "KEY=VAL"
-msgstr "NØGLE=VÆRDI"
-
-#: lilypond.py:147
-msgid "change global setting KEY to VAL"
-msgstr "ændr global indstilling NØGLE til VÆRDI"
-
-#: lilypond.py:149 midi2ly.py:106 mup2ly.py:79 main.cc:125
-msgid "print version number"
-msgstr "vis versionsnummer"
-
-#. other globals
-#. Pdftex support
-#. # yuk.
-#. lilypond_binary = 'valgrind --suppressions=%(home)s/usr/src/guile-1.6.supp --num-callers=10 %(home)s/usr/src/lilypond/lily/out/lilypond '% { 'home' : '/home/hanwen' }
-#. only use installed binary  when we're installed too.
-#. init to empty; values here take precedence over values in the file
-#. # TODO: change name.
-#. for geometry v3
-#. Output formats that lilypond should create
-#. what a name.
-#. ly.warning (_ ("invalid value: %s") % `val`)
-#. ly.warning (_ ("invalid value: %s") % `val`)
-#: lilypond.py:232
-#, python-format
-msgid "no such setting: `%s'"
-msgstr "indstillingen findes ikke: '%s'"
-
-#. 2 == user interrupt.
-#: lilypond.py:274
-#, python-format
-msgid "LilyPond crashed (signal %d)."
-msgstr "LilyPond gik ned (signal %d)."
-
-#: lilypond.py:275
-msgid "Please submit a bug report to bug-lilypond@gnu.org"
-msgstr ""
-
-#: lilypond.py:281
-#, python-format
-msgid "LilyPond failed on input file %s (exit status %d)"
-msgstr ""
-
-#: lilypond.py:284
-#, python-format
-msgid "LilyPond failed on an input file (exit status %d)"
-msgstr ""
-
-#: lilypond.py:285
-#, fuzzy
-msgid "Continuing..."
-msgstr "Kør %s..."
-
-#. urg
-#: lilypond.py:296
-#, python-format
-msgid "Analyzing %s..."
-msgstr "Analyserer %s..."
-
-#. search only the first 10k
-#: lilypond.py:354
-#, python-format
-msgid "no LilyPond output found for `%s'"
-msgstr "ingen lilyponduddata fundet for '%s'"
-
-#. The final \n seems important here. It ensures that the footers and taglines end up on the right page.
-#. TODO: should set textheight (enlarge) depending on papersize.
-#: lilypond.py:397
-#, python-format
-msgid "invalid value: `%s'"
-msgstr "ugyldig værdi: '%s'"
-
-#. set sane geometry width (a4-width) for linewidth = -1.
-#. who the hell is 597 ?
-#. Ugh.  (La)TeX writes progress and error messages on stdout
-#. Redirect to stderr
-#: lilypond.py:511
-msgid "LaTeX failed on the output file."
-msgstr ""
-
-#. make a preview by rendering only the 1st line
-#. of each score
-#: lilypond.py:568
-msgid ""
-"Trying create PDF, but no PFA fonts found.\n"
-"Using bitmap fonts instead. This will look bad."
-msgstr ""
-
-#. ugh. Different targets?
-#. Added as functionality to lilypond, because lilypond may well need to do this
-#. in future too.
-#. no ps header?
-#: lilypond.py:615
-#, python-format
-msgid "not a PostScript file: `%s'"
-msgstr "ikke en PostScript fil: '%s'"
-
-#. todo
-#: lilypond.py:660
-#, fuzzy, python-format
-msgid "Writing HTML menu `%s'"
-msgstr "Skriver \"%s\"..."
-
-#. signal programming error
-#. Don't convert input files to abspath, rather prepend '.' to include
-#. path.
-#. As a neat trick, add directory part of first input file
-#. to include path.  That way you can do without the clumsy -I in:
-#. lilypond -I foe/bar/baz foo/bar/baz/baz.ly
-#: lilypond.py:769
-msgid "pseudo filter"
-msgstr ""
-
-#: lilypond.py:772
-msgid "pseudo filter only for single input file"
-msgstr ""
-
-#. Ugh, maybe make a setup () function
-#. hmmm. Wish I'd 've written comments when I wrote this.
-#. now it looks complicated.
-#: lilypond.py:806
-#, python-format
-msgid "filename should not contain spaces: `%s'"
-msgstr "filnavn bør ikke indeholde mellemrum: '%s'"
-
-#. to be sure, add tmpdir *in front* of inclusion path.
-#. os.environ['TEXINPUTS'] =  tmpdir + ':' + os.environ['TEXINPUTS']
-#. We catch all exceptions, because we need to do stuff at exit:
-#. * copy any successfully generated stuff from tempdir and
-#. notify user of that
-#. * cleanout tempdir
-#. ## ARGH. This also catches python programming errors.
-#. ## this should only catch lilypond nonzero exit  status
-#. ## --hwn
-#. TODO: friendly message about LilyPond setup/failing?
-#.
-#: lilypond.py:845
-msgid "Running LilyPond failed. Rerun with --verbose for a trace."
-msgstr ""
-
-#. Our LilyPond pseudo filter always outputs to 'lelie'
-#. have subsequent stages and use 'lelie' output.
-#. unless: add --tex, or --latex?
-#. TODO: friendly message about TeX/LaTeX setup,
-#. trying to run tex/latex by hand
-#: lilypond.py:886
-msgid "Failed to make PS file. Rerun with --verbose for a trace."
-msgstr ""
-
-#. unless: add --tex, or --latex?
-#. TODO: friendly message about TeX/LaTeX setup,
-#. trying to run tex/latex by hand
-#: lilypond.py:916
-msgid "Running LaTeX falied. Rerun with --verbose for a trace."
-msgstr ""
-
-# hær er det spørg om skrivning til en fil
-#. add DEP to targets?
-#: lilypond.py:926 input-file-results.cc:68
-#, c-format, python-format
-msgid "dependencies output to `%s'..."
-msgstr "afhængigheder udskrevet til \"%s\"..."
-
-# hær er det spørg om skrivning til en fil (første parametern er t.ex
-# DVI, LATEX, MIDI, TEX)
-#: lilypond.py:937
-#, fuzzy, python-format
-msgid "%s output to <stdout>..."
-msgstr "%s udskrevet til \"%s\"..."
-
-#: lilypond.py:942 lilypond.py:968 includable-lexer.cc:57
-#: input-file-results.cc:191 input-file-results.cc:197 lily-guile.cc:86
-#, c-format, python-format
-msgid "can't find file: `%s'"
-msgstr "kan ikke finde fil: \"%s\""
-
-# hær er det spørg om skrivning til en fil (første parametern er t.ex
-# DVI, LATEX, MIDI, TEX)
-#. Hmm, if this were a function, we could call it the except: clauses
-#: lilypond.py:965
-#, fuzzy, python-format
-msgid "%s output to %s..."
-msgstr "%s udskrevet til \"%s\"..."
-
-#. !@PYTHON@
-#.
-#. midi2ly.py -- LilyPond midi import script
-#.
-#. source file of the GNU LilyPond music typesetter
-#.
-#. (c)  1998--2003  Han-Wen Nienhuys <hanwen@cs.uu.nl>
-#. Jan Nieuwenhuizen <janneke@gnu.org>
-#. ###############################################################
-#. Users of python modules should include this snippet.
-#.
-#. This soon to be removed for: import lilypond.lilylib as ly
-#. ###############################################################
-#. ###############################################################
-#. ############### CONSTANTS
-#. ###############################################################
-#. temp_dir = os.path.join (original_dir,  '%s.dir' % program_name)
-#. original_dir = os.getcwd ()
-#. keep_temp_dir_p = 0
-#: midi2ly.py:94
-msgid "Convert MIDI to LilyPond source."
-msgstr "Konvertér MIDI til LilyPond-klide."
-
-#: midi2ly.py:97
-msgid "print absolute pitches"
-msgstr ""
-
-#: midi2ly.py:98 midi2ly.py:103
-msgid "DUR"
-msgstr "LÆNGDE"
-
-#: midi2ly.py:98
-msgid "quantise note durations on DUR"
-msgstr ""
-
-#: midi2ly.py:99
-msgid "print explicit durations"
-msgstr "udskriv eksplicitte længder"
-
-#: midi2ly.py:101
-msgid "ALT[:MINOR]"
-msgstr ""
-
-#: midi2ly.py:101
-#, fuzzy
-msgid "set key: ALT=+sharps|-flats; MINOR=1"
-msgstr "sæt toneart: TONE +forhøjelser/-sænkninger; :1 mol"
-
-#: midi2ly.py:103
-msgid "quantise note starts on DUR"
-msgstr ""
-
-#: midi2ly.py:104
-msgid "DUR*NUM/DEN"
-msgstr ""
-
-#: midi2ly.py:104
-msgid "allow tuplet durations DUR*NUM/DEN"
-msgstr ""
-
-#: midi2ly.py:108
-msgid "treat every text as a lyric"
-msgstr ""
-
-#: midi2ly.py:136 mup2ly.py:130
-msgid " 2001--2003"
-msgstr ""
-
-#: midi2ly.py:141 mup2ly.py:135
-msgid ""
-"\n"
-"Distributed under terms of the GNU General Public License. It comes with\n"
-"NO WARRANTY."
-msgstr ""
-
-#: midi2ly.py:166 mup2ly.py:162
-msgid "Exiting ... "
-msgstr "Afslutter... "
-
-#: midi2ly.py:264 mup2ly.py:261
-#, python-format
-msgid "command exited with value %d"
-msgstr "kommandoen afsluttede med værdi %d"
-
-# hær er det spørg om skrivning til en fil (første parametern er t.ex
-# DVI, LATEX, MIDI, TEX)
-#. ###############################################################
-#. END Library
-#. ###############################################################
-#. hmm
-#. major scale: do-do
-#. minor scale: la-la  (= + 5) '''
-#. By tradition, all scales now consist of a sequence
-#. of 7 notes each with a distinct name, from amongst
-#. a b c d e f g.  But, minor scales have a wide
-#. second interval at the top - the 'leading note' is
-#. sharped. (Why? it just works that way! Anything
-#. else doesn't sound as good and isn't as flexible at
-#. saying things. In medieval times, scales only had 6
-#. notes to avoid this problem - the hexachords.)
-#. So, the d minor scale is d e f g a b-flat c-sharp d
-#. - using d-flat for the leading note would skip the
-#. name c and duplicate the name d.  Why isn't c-sharp
-#. put in the key signature? Tradition. (It's also
-#. supposedly based on the Pythagorean theory of the
-#. cycle of fifths, but that really only applies to
-#. major scales...)  Anyway, g minor is g a b-flat c d
-#. e-flat f-sharp g, and all the other flat minor keys
-#. end up with a natural leading note. And there you
-#. have it.
-#. John Sankey <bf250@freenet.carleton.ca>
-#.
-#. Let's also do a-minor: a b c d e f gis a
-#.
-#. --jcn
-#. as -> gis
-#. des -> cis
-#. ges -> fis
-#. g -> fisis
-#. d -> cisis
-#. a -> gisis
-#. b -> ces
-#. e -> fes
-#. f -> eis
-#. c -> bis
-#. # FIXME: compile fix --jcn
-#. TODO: move space
-#. fis cis gis dis ais eis bis
-#. bes es as des ges ces fes
-#. urg, we should be sure that we're in a lyrics staff
-#. all include ALL_NOTES_OFF
-#. ugh, must set key while parsing
-#. because Note init uses key
-#. Better do Note.calc () at dump time?
-#. last_lyric.clocks = t - last_time
-#. hmm
-#. urg, this will barf at meter changes
-#. urg LilyPond doesn't start at c4, but
-#. remembers from previous tracks!
-#. reference_note = Note (clocks_per_4, 4*12, 0)
-#. must be in \notes mode for parsing \skip
-#: midi2ly.py:1002
-#, python-format
-msgid "%s output to `%s'..."
-msgstr "%s udskrevet til \"%s\"..."
-
-#: midi2ly.py:1033
-msgid "Example:"
-msgstr "Eksempel:"
-
-#: midi2ly.py:1083
-msgid "no files specified on command line."
-msgstr "ingen filer angivne på kommandolinjen."
-
-#. !@PYTHON@
-#. mup2ly.py -- mup input converter
-#.
-#. source file of the GNU LilyPond music typesetter
-#.
-#. (c) 2001
-#. if set, LILYPONDPREFIX must take prevalence
-#. if datadir is not set, we're doing a build and LILYPONDPREFIX
-#: mup2ly.py:70
-msgid "Convert mup to LilyPond source."
-msgstr "Konvertér mup til LilyPond-kilde."
-
-#: mup2ly.py:73
-msgid "debug"
-msgstr "fejlsøgningsuddata"
-
-#: mup2ly.py:74
-msgid "define macro NAME [optional expansion EXP]"
-msgstr "definér makro NAVN [valfri makroudvidelse EXP]"
-
-#: mup2ly.py:77
-msgid "only pre-process"
-msgstr "kun forbehandling"
-
-#. Duh.  Python style portable: cp *.EXT OUTDIR
-#. system ('cp *.%s %s' % (ext, outdir), 1)
-#. Python < 1.5.2 compatibility
-#.
-#. On most platforms, this is equivalent to
-#. `normpath(join(os.getcwd()), PATH)'.  *Added in Python version 1.5.2*
-#. if set, LILYPONDPREFIX must take prevalence
-#. if datadir is not set, we're doing a build and LILYPONDPREFIX
-#. ###############################################################
-#. END Library
-#.
-#. PMX cut and paste
-#.
-#. if not self.entries:
-#. #return '\n'
-#. #ugh ugh
-#. return '\n%s = {}\n\n' % self.idstring ()
-#. ugh
-#. def set_clef (self, letter):
-#. clstr = clef_table[letter]
-#. self.voices[0].add_nonchord (Clef (clstr))
-#. urg
-#. maybe use import copy?
-#. for i in self.pitches:
-#. ch.pitches.append (i)
-#. for i in self.scripts:
-#. ch.scripts.append (i)
-#. http://www.arkkra.com/doc/uguide/contexts.html
-#. #self.current_staffs = []
-#. duh
-#. FIXME: 1?
-#. FIXME: does key play any role in this?
-#. ch = self.current_voices[0].last_chord ()
-#. ch.basic_duration = self.current_voices[0].last_chord ().basic_duration
-#. ugh
-#. ch = self.current_voices[0].last_chord ()
-#. `;' is not a separator, chords end with ';'
-#. mup resets default duration and pitch each bar
-#. ugh: these (and lots more) should also be parsed in
-#. context staff.  we should have a class Staff_properties
-#. and parse/set all those.
-#. shortcut: set to official mup maximum (duh)
-#. self.set_staffs (40)
-#: mup2ly.py:1076
-#, python-format
-msgid "no such context: %s"
-msgstr "omgivelse findes ikke: %s"
-
-#. hmm
-#. dig this: mup allows ifdefs inside macro bodies
-#. don't do nested multi-line defines
-#. duh: mup is strictly line-based, except for `define',
-#. which is `@' terminated and may span several lines
-#. don't define new macros in unactive areas
-#. To support nested multi-line define's
-#. process_function and macro_name, macro_body
-#. should become lists (stacks)
-#. The mup manual is undetermined on this
-#. and I haven't seen examples doing it.
-#.
-#. don't do nested multi-line define's
-#. writes to stdout for help2man
-#. don't call
-#. identify ()
-#. sys.stdout.flush ()
-#. handy emacs testing
-#. if not files:
-#. files = ['template.mup']
-#: mup2ly.py:1300
-#, python-format
-msgid "Processing `%s'..."
-msgstr "Behandler \"%s\"..."
-
-#: mup2ly.py:1319
-#, python-format
-msgid "Writing `%s'..."
-msgstr "Skriver \"%s\"..."
-
-#: getopt-long.cc:146
-#, c-format
-msgid "option `%s' requires an argument"
-msgstr "flag \"%s\" kræver et argument"
-
-#: getopt-long.cc:150
-#, c-format
-msgid "option `%s' doesn't allow an argument"
-msgstr "flag.gan \"%s\" tillader intet argument"
-
-#: getopt-long.cc:154
-#, c-format
-msgid "unrecognized option: `%s'"
-msgstr "ukendt flag: \"%s\""
-
-#: getopt-long.cc:161
-#, c-format
-msgid "invalid argument `%s' to option `%s'"
-msgstr "ugyldigt argument \"%s\" til flag \"%s\""
-
-#: warn.cc:25
-#, c-format
-msgid "warning: %s\n"
-msgstr "advarsel: %s\n"
-
-#: warn.cc:31
-#, c-format
-msgid "error: %s\n"
-msgstr "fejl: %s\n"
-
-#: warn.cc:44
-#, c-format
-msgid "programming error: %s (Continuing; cross thumbs)\n"
-msgstr "programfejl: %s (Fortsætter, kryds fingrene)\n"
-
-#: accidental.cc:202 key-signature-interface.cc:137
-#, c-format
-msgid "accidental `%s' not found"
-msgstr ""
-
-#: accidental-engraver.cc:171 new-accidental-engraver.cc:238
-#, c-format
-msgid "Accidental typesetting list must begin with context-name: %s"
-msgstr ""
-
-#: accidental-engraver.cc:196 new-accidental-engraver.cc:263
-#, c-format
-msgid "unknown accidental typesetting: %s. Ignored"
-msgstr ""
-
-#: accidental-engraver.cc:212 new-accidental-engraver.cc:279
-#, c-format
-msgid "Symbol is not a parent context: %s. Ignored"
-msgstr ""
-
-#: accidental-engraver.cc:215 new-accidental-engraver.cc:282
-#, c-format
-msgid "Accidental typesetting must be pair or context-name: %s"
-msgstr ""
-
-#: afm.cc:66
-#, c-format
-msgid "can't find character number: %d"
-msgstr "kan ikke finde tegnnummer: %d"
-
-#: afm.cc:81
-#, c-format
-msgid "can't find character called: `%s'"
-msgstr "kan ikke finde tegn som hedder: \"%s\""
-
-#: afm.cc:142
-#, c-format
-msgid "Error parsing AFM file: `%s'"
-msgstr "Fejl ved tolkning af AFM-fil: \"%s\""
-
-#: all-font-metrics.cc:95
-#, c-format
-msgid "checksum mismatch for font file: `%s'"
-msgstr "fejlagtig checksum for skrifttypefil: \"%s\""
-
-#: all-font-metrics.cc:97
-#, c-format
-msgid "does not match: `%s'"
-msgstr "matcher ikke: \"%s\""
-
-#: all-font-metrics.cc:102
-msgid ""
-" Rebuild all .afm files, and remove all .pk and .tfm files.  Rerun with -V "
-"to show font paths."
-msgstr ""
-" Genopbyg alle .afm-filer, og fjern alle .pk- og .tfm-filer. Kør igen med -V "
-"for at vise skrifttypesøgestier."
-
-#: all-font-metrics.cc:103
-msgid ""
-"A script for removing font-files is delivered with the source-code,\n"
-"in buildscripts/clean-fonts.sh"
-msgstr ""
-
-#: all-font-metrics.cc:169
-#, c-format
-msgid "can't find font: `%s'"
-msgstr "kan ikke finde skrifttype: \"%s\""
-
-#: all-font-metrics.cc:170
-msgid "Loading default font"
-msgstr "Indlæser standardskrifttype"
-
-#: all-font-metrics.cc:185
-#, c-format
-msgid "can't find default font: `%s'"
-msgstr "kan ikke finde standardskrifttype: \"%s\""
-
-#: all-font-metrics.cc:186 includable-lexer.cc:59 input-file-results.cc:192
-#, c-format
-msgid "(search path: `%s')"
-msgstr "(søgesti: \"%s\")"
-
-#: all-font-metrics.cc:187
-msgid "Giving up"
-msgstr "Giver op"
-
-#: auto-change-iterator.cc:43 change-iterator.cc:60
-#: part-combine-music-iterator.cc:120
-msgid "Can't switch translators, I'm there already"
-msgstr "Kan ikke skifte oversætter, jeg er her allerede"
-
-#: bar-check-iterator.cc:51
-#, c-format
-msgid "barcheck failed at: %s"
-msgstr "taktkontrol mislykkedes ved: %s"
-
-#: beam.cc:146
-msgid "beam has less than two visible stems"
-msgstr "bjælke har mindre end to synlige nodehalse"
-
-#: beam.cc:151
-msgid "Beam has less than two stems. Removing beam."
-msgstr "Bjælke har mindre end to nodehalse. Fjerner bjælke."
-
-#: beam.cc:976
-msgid ""
-"Not sure that we can find a nice beam slope (no viable initial configuration "
-"found)."
-msgstr ""
-"Ikke sikker på at vi kan finde en pæn hældning på bjælken (ingen brugelig "
-"initiel konfiguration fundet)."
-
-#: beam-engraver.cc:176
-msgid "already have a beam"
-msgstr "har allerede en bjælke"
-
-#: beam-engraver.cc:259
-msgid "unterminated beam"
-msgstr "uafsluttet bjælke"
-
-#: beam-engraver.cc:292 chord-tremolo-engraver.cc:197
-msgid "stem must have Rhythmic structure"
-msgstr "nodehals skal have en rytmisk struktur"
-
-#: beam-engraver.cc:306
-msgid "stem doesn't fit in beam"
-msgstr "nodehalsen passer ikke i bjælke"
-
-#: beam-engraver.cc:307
-msgid "beam was started here"
-msgstr "bjælken startede her"
-
-#: break-align-interface.cc:173
-#, c-format
-msgid "No spacing entry from %s to `%s'"
-msgstr "Ingen mellemrums-indgang fra %s til `%s'"
-
-#: change-iterator.cc:22
-#, c-format
-msgid "can't change `%s' to `%s'"
-msgstr "kan ikke ændre \"%s\" til \"%s\""
-
-#.
-#. We could change the current translator's id, but that would make
-#. errors hard to catch
-#.
-#. last->translator_id_string_  = get_change ()->change_to_id_string_;
-#.
-#: change-iterator.cc:79
-msgid "I'm one myself"
-msgstr "Jeg er selv én"
-
-#: change-iterator.cc:82
-msgid "none of these in my family"
-msgstr "ingen af disse i min familie"
-
-#: chord-tremolo-engraver.cc:98
-#, c-format
-msgid "Chord tremolo with %d elements. Must have two elements."
-msgstr ""
-
-#: chord-tremolo-engraver.cc:157
-msgid "unterminated chord tremolo"
-msgstr "ikke-afsluttet akkordtremolo"
-
-#: chord-tremolo-iterator.cc:69
-msgid "no one to print a tremolos"
-msgstr "der er ingen som kan skrive en tremolo"
-
-#: clef.cc:64
-#, c-format
-msgid "clef `%s' not found"
-msgstr ""
-
-#: cluster.cc:131
-#, fuzzy, c-format
-msgid "unknown cluster style `%s'"
-msgstr "ukendt oversætter: \"%s\""
-
-#: coherent-ligature-engraver.cc:84
-#, c-format
-msgid "gotcha: ptr=%ul"
-msgstr ""
-
-#: coherent-ligature-engraver.cc:96
-#, c-format
-msgid "distance=%f"
-msgstr ""
-
-#: coherent-ligature-engraver.cc:139
-#, c-format
-msgid "Coherent_ligature_engraver: setting `spacing-increment = 0.01': ptr=%ul"
-msgstr ""
-
-#: custos.cc:92
-#, c-format
-msgid "custos `%s' not found"
-msgstr ""
-
-#: dimensions.cc:13
-msgid "NaN"
-msgstr "-"
-
-#: dynamic-engraver.cc:204 span-dynamic-performer.cc:82
-msgid "can't find start of (de)crescendo"
-msgstr "kan ikke finde starten på crescendo/diminuendo"
-
-#: dynamic-engraver.cc:216
-msgid "already have a crescendo"
-msgstr "har allerede et crescendo"
-
-#: dynamic-engraver.cc:217
-msgid "already have a decrescendo"
-msgstr "har allerede et diminuendo"
-
-#: dynamic-engraver.cc:220
-msgid "Cresc started here"
-msgstr "Cresc startede her"
-
-#: dynamic-engraver.cc:323
-msgid "unterminated (de)crescendo"
-msgstr "uafsluttet crescendo/diminuendo"
-
-#: event.cc:49
-#, fuzzy, c-format
-msgid "Transposition by %s makes alteration larger than two"
-msgstr "Transponering med %s medfører løst fortegn større end to"
-
-#: event-chord-iterator.cc:76 output-property-music-iterator.cc:27
-#, fuzzy, c-format
-msgid "Junking event: `%s'"
-msgstr "Stryger forespørgslen: \"%s\""
-
-#: extender-engraver.cc:94
-msgid "unterminated extender"
-msgstr "uafsluttet udvider"
-
-#: extender-engraver.cc:106
-#, fuzzy
-msgid "Nothing to connect extender to on the left.  Ignoring extender event."
-msgstr ""
-"Der er ingenting at forbinde udvideren mod til venstre. Ignorerer ønsket om "
-"udvider"
-
-#: folded-repeat-iterator.cc:88
-msgid "no one to print a repeat brace"
-msgstr "der er ingen som kan skrive et gentagelsestegn"
-
-#: font-interface.cc:239
-msgid "couldn't find any font satisfying "
-msgstr "kunne ikke finde nogen skrifttype som opfylder "
-
-#: glissando-engraver.cc:100
-#, fuzzy
-msgid "Unterminated glissando."
-msgstr "uafsluttet legatobue"
-
-#: gourlay-breaking.cc:188
-#, c-format
-msgid "Optimal demerits: %f"
-msgstr ""
-
-#: gourlay-breaking.cc:193
-msgid "No feasible line breaking found"
-msgstr "Ingen mulig linjebrydning fandtes"
-
-#: gregorian-ligature-engraver.cc:59
-#, fuzzy, c-format
-msgid "\\%s ignored"
-msgstr "(ignoreret)"
-
-#: gregorian-ligature-engraver.cc:64
-#, c-format
-msgid "implied \\%s added"
-msgstr ""
-
-#.
-#. Todo: do something sensible. The grob-pq-engraver is not water
-#. tight, and stuff like tupletSpannerDuration confuses it.
-#.
-#: grob-pq-engraver.cc:130
-#, c-format
-msgid ""
-"Skipped something?\n"
-"Grob %s ended before I expected it to end."
-msgstr ""
-
-#: hairpin.cc:98
-msgid "decrescendo too small"
-msgstr "diminuendo for lille"
-
-#: hairpin.cc:99
-msgid "crescendo too small"
-msgstr "crescendo for lille"
-
-#: horizontal-bracket-engraver.cc:64
-msgid "Don't have that many brackets."
-msgstr ""
-
-#: horizontal-bracket-engraver.cc:73
-#, fuzzy
-msgid "Conflicting note group events."
-msgstr "Konfliktende tonartssignaturer fundet."
-
-#: hyphen-engraver.cc:87
-msgid "unterminated hyphen"
-msgstr "uafsluttet bindestreg"
-
-#: hyphen-engraver.cc:99
-#, fuzzy
-msgid "Nothing to connect hyphen to on the left.  Ignoring hyphen event."
-msgstr ""
-"Der er ingenting at forbinde bindestregen med til venstre. Ignorerer "
-"bindestregsforespørgslen."
-
-#: input.cc:99
-msgid "non fatal error: "
-msgstr "ikke-fatal fejl: "
-
-#: input.cc:107 source-file.cc:146 source-file.cc:239
-msgid "position unknown"
-msgstr "ukendt position"
-
-#: input-file-results.cc:72 source-file.cc:54 streams.cc:38
-#, c-format
-msgid "can't open file: `%s'"
-msgstr "kan ikke åbne fil: \"%s\""
-
-#: input-file-results.cc:132
-msgid "Score contains errors; will not process it"
-msgstr "Partitur indholder fejl; vil ikke behandle det"
-
-#: input-file-results.cc:172
-#, c-format
-msgid "Now processing: `%s'"
-msgstr "Behandler nu: \"%s\""
-
-#: key-performer.cc:96
-msgid "FIXME: key change merge"
-msgstr "FIX: tonartsskiftsfletning"
-
-#: kpath.cc:76
-#, c-format
-msgid "Kpathsea couldn't find TFM file `%s'"
-msgstr "Kpathsea kunne ikke finde TMF-fil: \"%s\""
-
-#: ligature-engraver.cc:159
-#, fuzzy
-msgid "can't find start of ligature"
-msgstr "kan ikke finde start på legatobue"
-
-#: ligature-engraver.cc:165
-msgid "no right bound"
-msgstr "Ingen højrekant"
-
-#: ligature-engraver.cc:191
-#, fuzzy
-msgid "already have a ligature"
-msgstr "har allerede en bjælke"
-
-#: ligature-engraver.cc:207
-msgid "no left bound"
-msgstr "Ingen venstrekant"
-
-#: ligature-engraver.cc:258
-#, fuzzy
-msgid "unterminated ligature"
-msgstr "uafsluttet legatobue"
-
-#: ligature-engraver.cc:282
-msgid "ligature may not contain rest; ignoring rest"
-msgstr ""
-
-#: ligature-engraver.cc:283
-#, fuzzy
-msgid "ligature was started here"
-msgstr "bjælken startede her"
-
-#: lily-guile.cc:88
-#, c-format
-msgid "(load path: `%s')"
-msgstr "(indlæsningssøgesti: \"%s\")"
-
-#: lily-guile.cc:576
-#, c-format
-msgid "Can't find property type-check for `%s' (%s)."
-msgstr "Kan ikke finde typetjek for egenskab af '%s' (%s)."
-
-#: lily-guile.cc:579
-msgid "Perhaps you made a typing error?"
-msgstr "Måske lavede du en tastefejl?"
-
-#: lily-guile.cc:585
-msgid "Doing assignment anyway."
-msgstr "Laver tildeling aligevel."
-
-#: lily-guile.cc:599
-#, c-format
-msgid "Type check for `%s' failed; value `%s' must be of type `%s'"
-msgstr ""
-"Typekontrol for \"%s\" mislykkedes; værdi \"%s\" skal have typen \"%s\""
-
-#: lookup.cc:173
-msgid "round filled box horizontal extent smaller than blot; decreasing blot"
-msgstr ""
-
-#: lookup.cc:178
-msgid "round filled box vertical extent smaller than blot; decreasing blot"
-msgstr ""
-
-#: lyric-phrasing-engraver.cc:311
-msgid "lyrics found without any matching notehead"
-msgstr "tekst fundet uden noget tilhørende nodehoved"
-
-#: lyric-phrasing-engraver.cc:317
-msgid "Huh? Melismatic note found to have associated lyrics."
-msgstr "Øh? Melismatisk node har tilhørende tekst."
-
-#: main.cc:106
-msgid "EXPR"
-msgstr "UDTR"
-
-#: main.cc:107
-msgid "set options, use -e '(ly-option-usage)' for help"
-msgstr "sæt alternativer, brug -e '(ly-option-usage)' for hjælp"
-
-#: main.cc:110
-#, fuzzy
-msgid "use output format EXT"
-msgstr "brug uddataformat FMT (scm, ps, tex eller as)"
-
-#: main.cc:112
-msgid "FIELD"
-msgstr "FELT"
-
-#: main.cc:112
-msgid "write header field to BASENAME.FIELD"
-msgstr "skriv rubrikfelt til BASENAVN.FELT"
-
-#: main.cc:113
-msgid "add DIR to search path"
-msgstr "tilføj KATALOG til søgestien"
-
-#: main.cc:114
-msgid "use FILE as init file"
-msgstr "brug FIL som init-fil"
-
-#: main.cc:118
-msgid "prepend DIR to dependencies"
-msgstr "tilføj KATALOG efter afhængigheder"
-
-#.
-#. should audit again.
-#.
-#: main.cc:123
-msgid "inhibit file output naming and exporting"
-msgstr "hindr navngivning af filuddata og eksportering"
-
-#. No version number or newline here. It confuses help2man.
-#: main.cc:155
-#, c-format
-msgid "Usage: %s [OPTIONS]... FILE..."
-msgstr "Brug: %s [FLAG]... FIL..."
-
-#: main.cc:157
-msgid "Typeset music and or play MIDI from FILE."
-msgstr "Typesæt musik og/eller afspil MIDI fra FIL."
-
-#: main.cc:160
-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 er en musiktypesætter. Den producerer smukke noder fra en\n"
-"højniveaubeskrivning af musikken i en fil. LilyPond er en del af\n"
-"GNU-projektet.\n"
-
-#: main.cc:182
-#, c-format
-msgid ""
-"This is free software.  It is covered by the GNU General Public License,\n"
-"and you are welcome to change it and/or distribute copies of it under\n"
-"certain conditions.  Invoke as `%s --warranty' for more information.\n"
-msgstr ""
-"Dette er frit programmel. Det dækkes af \"GNU General Public License\",\n"
-"og du må ændre og/eller distribuere kopier af det under visse\n"
-"betingelser. Kør \"%s --warranty\" for mere information.\n"
-
-#: main.cc:198
-msgid "GNU LilyPond -- The music typesetter"
-msgstr "GNU LilyPond -- Musiktypesætteren"
-
-#: main.cc:206
-#, fuzzy
-msgid ""
-"    This program is free software; you can redistribute it and/or\n"
-"modify it under the terms of the GNU General Public License version 2\n"
-"as published by the Free Software Foundation.\n"
-"\n"
-"    This program is distributed in the hope that it will be useful,\n"
-"but WITHOUT ANY WARRANTY; without even the implied warranty of\n"
-"MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU\n"
-"General Public License for more details.\n"
-"\n"
-"    You should have received a copy (refer to the file COPYING) of the\n"
-"GNU General Public License along with this program; if not, write to\n"
-"the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA "
-"02111-1307,\n"
-"USA.\n"
-msgstr ""
-"Dette program er frit programmel. Du kan distribuere det og/eller\n"
-"ændre det under betingelserne i GNU General Public License version 2,\n"
-"udgivet af Free Software Foundation.\n"
-"\n"
-"Dette program distribueres i håb om at det vil være nyttigt, men\n"
-"UDEN NOGEN SOM HELST GARANTI, endog uden underforstået garanti om\n"
-"SALGBARHED eller EGNETHED FOR NOGET SPECIELT FORMÅL. Se GNU General\n"
-"Public License for yderligere information.\n"
-"\n"
-"Du bør have fået en kopi af GNU General Public License sammen med\n"
-"dette program. Hvis ikke, skriv til Free Software Foundation, Inc., 59\n"
-"Temple Place - Suite 330, Boston, MA 02111-1307, USA.\n"
-
-#: mensural-ligature.cc:153
-#, c-format
-msgid "Mensural_ligature:thickness undefined on flexa %d; assuming 1.4"
-msgstr ""
-
-#: mensural-ligature.cc:169
-#, c-format
-msgid "Mensural_ligature:delta-pitch undefined on flexa %d; assuming 0"
-msgstr ""
-
-#: mensural-ligature.cc:182
-#, c-format
-msgid "Mensural_ligature:flexa-width undefined on flexa %d; assuming 2.0"
-msgstr ""
-
-#: mensural-ligature.cc:215
-msgid "Mensural_ligature:unexpected case fall-through"
-msgstr ""
-
-#: mensural-ligature.cc:225
-msgid "Mensural_ligature: (join_left == 0)"
-msgstr ""
-
-#: mensural-ligature-engraver.cc:248 mensural-ligature-engraver.cc:397
-msgid "unexpected case fall-through"
-msgstr ""
-
-#: mensural-ligature-engraver.cc:259
-msgid "ligature with less than 2 heads -> skipping"
-msgstr ""
-
-#: mensural-ligature-engraver.cc:279
-msgid "can not determine pitch of ligature primitive -> skipping"
-msgstr ""
-
-#: mensural-ligature-engraver.cc:302
-msgid "prime interval within ligature -> skipping"
-msgstr ""
-
-#: mensural-ligature-engraver.cc:312
-msgid "mensural ligature: duration none of L, B, S -> skipping"
-msgstr ""
-
-#: midi-item.cc:148
-#, c-format
-msgid "no such instrument: `%s'"
-msgstr "instrumentet findes ikke: \"%s\""
-
-#: midi-item.cc:238
-msgid "silly duration"
-msgstr "tåbelig længde"
-
-#: midi-item.cc:251
-msgid "silly pitch"
-msgstr "tåbelig tone"
-
-#: music-output-def.cc:111
-#, c-format
-msgid "can't find `%s' context"
-msgstr "kan ikke finde omgivelsen \"%s\""
-
-#: my-lily-lexer.cc:169
-#, c-format
-msgid "Identifier name is a keyword: `%s'"
-msgstr "Identificerernavn er et nøgleord: \"%s\""
-
-#: my-lily-lexer.cc:191
-#, c-format
-msgid "error at EOF: %s"
-msgstr "fejl ved filslutning: %s"
-
-#: my-lily-parser.cc:44
-msgid "Parsing..."
-msgstr "Tolker..."
-
-#: my-lily-parser.cc:54
-msgid "Braces don't match"
-msgstr "Klammer passer ikke"
-
-#.
-#. music for the softenon children?
-#.
-#: new-fingering-engraver.cc:143
-msgid "music for the martians."
-msgstr ""
-
-#: new-tie-engraver.cc:166 tie-engraver.cc:217
-msgid "lonely tie"
-msgstr "ensom bindebue"
-
-#: note-collision.cc:340
-msgid "Too many clashing notecolumns.  Ignoring them."
-msgstr "For mange overlappende nodekolonner. Ignorerer dem."
-
-#: note-head.cc:127
-#, c-format
-msgid "note head `%s' not found"
-msgstr ""
-
-#: paper-def.cc:96
-#, c-format
-msgid "paper output to `%s'..."
-msgstr "papirsuddata til \"%s\"..."
-
-#: paper-score.cc:78
-#, c-format
-msgid "Element count %d (spanners %d) "
-msgstr ""
-
-#: paper-score.cc:83
-#, fuzzy
-msgid "Preprocessing graphical objects..."
-msgstr "Forbehandler element..."
-
-#: paper-score.cc:116
-msgid "Outputting Score, defined at: "
-msgstr "Udskriver partitur, defineret ved: "
-
-#: parse-scm.cc:79
-msgid "GUILE signaled an error for the expression begining here"
-msgstr "GUILE signalerede en fejl for udtrykket, der begynder her"
-
-#.
-#. We could change the current translator's id, but that would make
-#. errors hard to catch
-#.
-#. last->translator_id_string_  = get_change ()->change_to_id_string_;
-#.
-#: part-combine-music-iterator.cc:139
-#, c-format
-msgid "I'm one myself: `%s'"
-msgstr "Jeg er selv én: \"%s\""
-
-#: part-combine-music-iterator.cc:142
-#, c-format
-msgid "none of these in my family: `%s'"
-msgstr "ingen af disse i min familie: \"%s\""
-
-#: percent-repeat-engraver.cc:109
-msgid "Don't know how to handle a percent repeat of this length."
-msgstr ""
-"Véd ikke hvordan en procenttegnsgentagelse (percent) af denne længde skal "
-"håndteres."
-
-#: percent-repeat-engraver.cc:163
-#, fuzzy
-msgid "unterminated percent repeat"
-msgstr "uafsluttet udvider"
-
-#: percent-repeat-iterator.cc:65
-msgid "no one to print a percent"
-msgstr "der er ingen som kan skrive et procent-tegn"
-
-#: performance.cc:51
-msgid "Track ... "
-msgstr "Spor... "
-
-#: performance.cc:83
-msgid "Creator: "
-msgstr "Skaber: "
-
-#: performance.cc:103
-msgid "at "
-msgstr "ved "
-
-#: performance.cc:114
-#, c-format
-msgid "from musical definition: %s"
-msgstr "fra musikdefinition: %s"
-
-#: performance.cc:169
-#, c-format
-msgid "MIDI output to `%s'..."
-msgstr "MIDI-uddata til \"%s\"..."
-
-#: phrasing-slur-engraver.cc:123
-msgid "unterminated phrasing slur"
-msgstr "uafsluttet fraseringsbue"
-
-#: phrasing-slur-engraver.cc:141
-msgid "can't find start of phrasing slur"
-msgstr "kan ikke finde start på fraseringsbue"
-
-#: piano-pedal-engraver.cc:235 piano-pedal-engraver.cc:250
-#: piano-pedal-engraver.cc:305 piano-pedal-performer.cc:82
-#, c-format
-msgid "can't find start of piano pedal: `%s'"
-msgstr "kan ikke finde start på pianopedal: \"%s\""
-
-#: piano-pedal-engraver.cc:410
-msgid "unterminated pedal bracket"
-msgstr ""
-
-#: property-iterator.cc:97
-#, c-format
-msgid "Not a grob name, `%s'."
-msgstr ""
-
-#: rest.cc:139
-#, fuzzy, c-format
-msgid "rest `%s' not found, "
-msgstr "Symbol ikke fundet, "
-
-#: rest-collision.cc:199
-msgid "too many colliding rests"
-msgstr "for mange kolliderende pauser"
-
-#: scm-option.cc:45
-msgid "lilypond -e EXPR means:"
-msgstr ""
-
-#: scm-option.cc:47
-msgid "  Evalute the Scheme EXPR before parsing any .ly files."
-msgstr ""
-
-#: scm-option.cc:49
-msgid ""
-"  Multiple -e options may be given, they will be evaluated sequentially."
-msgstr ""
-
-#: scm-option.cc:51
-msgid ""
-"  The function ly-set-option allows for access to some internal variables."
-msgstr ""
-
-#: scm-option.cc:53
-msgid "Usage: lilypond -e \"(ly-set-option SYMBOL VAL)\""
-msgstr ""
-
-#: scm-option.cc:55
-msgid "Where SYMBOL VAL pair is any of:"
-msgstr ""
-
-#: scm-option.cc:128
-msgid "Unknown internal option!"
-msgstr ""
-
-#: score.cc:85
-msgid "Interpreting music..."
-msgstr "Tolker musik..."
-
-#: score.cc:97
-msgid "Need music in a score"
-msgstr "Behøver musik i partitur"
-
-#. should we? hampers debugging.
-#: score.cc:111
-msgid "Errors found/*, not processing score*/"
-msgstr "Fejl fundne/*, behandler ikke partitur*/"
-
-#: score.cc:118
-#, c-format
-msgid "elapsed time: %.2f seconds"
-msgstr "tidsforbrug: %.2f sekunder"
-
-#: score-engraver.cc:99
-#, c-format
-msgid "can't find `%s'"
-msgstr "kan ikke finde: '%s'"
-
-#: score-engraver.cc:100
-msgid "Fonts have not been installed properly.  Aborting"
-msgstr ""
-
-#: score-engraver.cc:205
-#, c-format
-msgid "unbound spanner `%s'"
-msgstr "ubunden bro \"%s\""
-
-#: script-engraver.cc:90
-#, c-format
-msgid "Don't know how to interpret articulation `%s'"
-msgstr "Kan ikke tolke artikulering \"%s\""
-
-#. this shouldn't happen, but let's continue anyway.
-#: separation-item.cc:53 separation-item.cc:101
-msgid "Separation_item:  I've been drinking too much"
-msgstr "Separation_item: Jeg har drukket for meget"
-
-#: simple-spacer.cc:248
-#, c-format
-msgid "No spring between column %d and next one"
-msgstr ""
-
-#: slur-engraver.cc:141
-msgid "unterminated slur"
-msgstr "uafsluttet legatobue"
-
-#. How to shut up this warning, when Voice_devnull_engraver has
-#. eaten start event?
-#: slur-engraver.cc:159
-msgid "can't find start of slur"
-msgstr "kan ikke finde start på legatobue"
-
-#: source-file.cc:67
-#, c-format
-msgid "Huh?  Got %d, expected %d characters"
-msgstr "Øh? Fik %d, forventede %d tegn"
-
-#: spacing-spanner.cc:379
-#, c-format
-msgid "Global shortest duration is %s\n"
-msgstr ""
-
-#: spring-smob.cc:32
-#, c-format
-msgid "#<spring smob d= %f>"
-msgstr ""
-
-#: staff-symbol.cc:61
-msgid "staff symbol: indentation yields beyond end of line"
-msgstr ""
-
-#: stem.cc:118
-msgid "Weird stem size; check for narrow beams"
-msgstr "Mærkelig nodehalsstørrelse; tjek for smalle bjælker"
-
-#: stem.cc:611
-#, c-format
-msgid "flag `%s' not found"
-msgstr ""
-
-#: stem.cc:624
-#, c-format
-msgid "flag stroke `%s' not found"
-msgstr ""
-
-#: stem-engraver.cc:96
-msgid "tremolo duration is too long"
-msgstr ""
-
-#: stem-engraver.cc:124
-#, c-format
-msgid "Adding note head to incompatible stem (type = %d)"
-msgstr "Tilføjer nodehoved til inkompatibel nodehals (type = %d)"
-
-#: stem-engraver.cc:125
-msgid "Don't you want polyphonic voices instead?"
-msgstr ""
-
-#: streams.cc:34
-#, c-format
-msgid "can't create directory: `%s'"
-msgstr "kan ikke oprette katalog: \"%s\""
-
-#: streams.cc:48
-msgid "Error syncing file (disk full?)"
-msgstr "Fejl ved synkning af fil (disken fuld?)"
-
-#: system.cc:125
-#, c-format
-msgid "Element count %d."
-msgstr "Elementantal %d."
-
-#: system.cc:372
-#, fuzzy, c-format
-msgid "Grob count %d "
-msgstr "Elementantal %d "
-
-#: system.cc:386
-#, fuzzy
-msgid "Calculating line breaks..."
-msgstr "Beregner kolonnepositioner..."
-
-#: text-spanner-engraver.cc:81
-msgid "can't find start of text spanner"
-msgstr "kan ikke finde start på tekstbro"
-
-#: text-spanner-engraver.cc:95
-msgid "already have a text spanner"
-msgstr "har allerede en tekstbro"
-
-#: text-spanner-engraver.cc:164
-msgid "unterminated text spanner"
-msgstr "uafsluttet tekstbro"
-
-#: tfm.cc:83
-#, c-format
-msgid "can't find ascii character: %d"
-msgstr "kan ikke finde ASCII-tegn: %d"
-
-#. Not using ngettext's plural feature here, as this message is
-#. more of a programming error.
-#: tfm-reader.cc:108
-#, c-format
-msgid "TFM header of `%s' has only %u word (s)"
-msgstr "TFM-rubrik i \"%s\" har kun %u ord"
-
-#: tfm-reader.cc:142
-#, c-format
-msgid "%s: TFM file has %u parameters, which is more than the %u I can handle"
-msgstr ""
-"%s: TFM-fil har %u parametre, hvilket er mere end de %u jeg kan håndtere"
-
-#: tie-performer.cc:159
-msgid "No ties were created!"
-msgstr "Ingen bindebuer blev lavet!"
-
-#: time-scaled-music-iterator.cc:25
-msgid "no one to print a tuplet start bracket"
-msgstr "der findes ingen som kan skrive en startklamme for tuppel"
-
-#. If there is no such symbol, we default to the numbered style.
-#. (Here really with a warning!)
-#: time-signature.cc:87
-#, c-format
-msgid "time signature symbol `%s' not found; reverting to numbered style"
-msgstr ""
-
-#.
-#. Todo: should make typecheck?
-#.
-#. OTOH, Tristan Keuris writes 8/20 in his Intermezzi.
-#.
-#: time-signature-engraver.cc:57
-#, c-format
-msgid "Found strange time signature %d/%d."
-msgstr ""
-
-#: translator-ctors.cc:53
-#, c-format
-msgid "unknown translator: `%s'"
-msgstr "ukendt oversætter: \"%s\""
-
-#: translator-def.cc:105
-msgid "Program has no such type"
-msgstr "Programmet har ingen sådan type"
-
-#: translator-def.cc:111
-#, c-format
-msgid "Already contains: `%s'"
-msgstr "Indholder allerede: \"%s\""
-
-#: translator-def.cc:112
-#, c-format
-msgid "Not adding translator: `%s'"
-msgstr "Tilføjer ikke oversætter: \"%s\""
-
-#: translator-def.cc:229
-#, c-format
-msgid "can't find: `%s'"
-msgstr "kan ikke finde: \"%s\""
-
-#: translator-group.cc:158
-#, c-format
-msgid "can't find or create `%s' called `%s'"
-msgstr "kan ikke finde eller oprette \"%s\" kaldet \"%s\""
-
-#: translator-group.cc:230
-#, c-format
-msgid "can't find or create: `%s'"
-msgstr "kan ikke finde eller oprette: \"%s\""
-
-#: vaticana-ligature.cc:49
-msgid "ascending vaticana style flexa"
-msgstr ""
-
-#: vaticana-ligature.cc:219
-msgid "Vaticana_ligature:thickness undefined; assuming 1.4"
-msgstr ""
-
-#: vaticana-ligature.cc:233
-msgid "Vaticana_ligature:x-offset undefined; assuming 0.0"
-msgstr ""
-
-#: vaticana-ligature.cc:258
-msgid "Vaticana_ligature: (delta_pitch == 0)"
-msgstr ""
-
-#: vaticana-ligature.cc:271
-msgid "Vaticana_ligature:delta-pitch -> ignoring join"
-msgstr ""
-
-#: vaticana-ligature-engraver.cc:477
-#, c-format
-msgid "Vaticana_ligature_engraver: setting `spacing-increment = %f': ptr=%ul"
-msgstr ""
-
-#: volta-engraver.cc:112
-msgid "No volta spanner to end"
-msgstr "Ingen volte-bro at afslutte"
-
-#: volta-engraver.cc:123
-msgid "Already have a volta spanner.  Stopping that one prematurely."
-msgstr "Har allerede en volte-bro. Stopper denne for tidligt."
-
-#: volta-engraver.cc:127
-msgid "Also have a stopped spanner.  Giving up."
-msgstr "Har også en stoppet bro. Giver op."
-
-#: parser.yy:480
-#, fuzzy
-msgid "Identifier should have alphabetic characters only"
-msgstr "Identificerer må kun indeholde alfabetiske tegn"
-
-#: parser.yy:779
-msgid "More alternatives than repeats.  Junking excess alternatives."
-msgstr ""
-"Flere alternativer end gentagelser. Stryger tiloversblevne alternativer."
-
-#: parser.yy:861 parser.yy:868
-msgid "pplycontext takes function argument"
-msgstr ""
-
-#: parser.yy:877
-msgid "Second argument must be a symbol"
-msgstr "Andet argument skal være et symbol"
-
-#: parser.yy:882
-#, fuzzy
-msgid "First argument must be a procedure taking one argument"
-msgstr "Første argument skal være en procedure som tager 1 argument"
-
-#: parser.yy:1009
-msgid "pply takes function argument"
-msgstr ""
-
-#: parser.yy:1501
-msgid "Expecting string as script definition"
-msgstr "Forventer streng som skriptdefinition"
-
-#: parser.yy:1598
-msgid "Expecting musical-pitch value"
-msgstr "Forventer nodeværdi"
-
-#: parser.yy:1609
-msgid "Must have duration object"
-msgstr "Skal have tidslængdeobjekt"
-
-#: parser.yy:1618 parser.yy:1626
-msgid "Have to be in Lyric mode for lyrics"
-msgstr "Skal være i teksttilstand (Lyric mode) for tekst"
-
-#: parser.yy:1798 parser.yy:1853
-#, c-format
-msgid "not a duration: %d"
-msgstr "ikke en tidslængde: %d"
-
-#: parser.yy:1949
-msgid "Have to be in Note mode for notes"
-msgstr "Skal være i nodetilstand (Note mode) for noder"
-
-#: parser.yy:2032
-msgid "Have to be in Chord mode for chords"
-msgstr "Skal være i akkordtilstand (Chord mode) for akkord"
-
-#: parser.yy:2171
-msgid "need integer number arg"
-msgstr "behøver heltalsargument"
-
-#: parser.yy:2316
-msgid "Suspect duration found following this beam"
-msgstr ""
-
-#: lexer.ll:186
-msgid "EOF found inside a comment"
-msgstr "filslutning fundet inden i en kommentar"
-
-#: lexer.ll:200
-msgid "\\maininput disallowed outside init files"
-msgstr "\\maininput forbudt udenfor init-filer"
-
-#: lexer.ll:224
-#, c-format
-msgid "wrong or undefined identifier: `%s'"
-msgstr "fejlagtig eller udefineret identificerer: \"%s\""
-
-#. backup rule
-#: lexer.ll:233
-msgid "Missing end quote"
-msgstr "Mangler slutcitationstegn"
-
-#. backup rule
-#: lexer.ll:255 lexer.ll:259
-msgid "white expected"
-msgstr "forventede mellemrum"
-
-#: lexer.ll:268
-msgid "Can't evaluate Scheme in safe mode"
-msgstr "Kan ikke evaluere Scheme i sikker tilstand"
-
-#: lexer.ll:397 lexer.ll:487
-#, fuzzy
-msgid "Brace found at end of lyric.  Did you forget a space?"
-msgstr "Krølleparentes fundet i slutning af tekst. Glemte du et mellemrum?"
-
-#: lexer.ll:574
-#, c-format
-msgid "invalid character: `%c'"
-msgstr "ugyldigt tegn: \"%c\""
-
-#: lexer.ll:651
-#, c-format
-msgid "unknown escaped string: `\\%s'"
-msgstr "ukendt \"escaped\" streng: \"\\%s\""
-
-#: lexer.ll:742
-#, fuzzy, c-format
-msgid "Incorrect lilypond version: %s (%s, %s)"
-msgstr "fejlagtig lilypond-version: %s (%s, %s)"
-
-#: lexer.ll:743
-#, fuzzy
-msgid "Consider updating the input with the convert-ly script"
-msgstr "Overvej at konvertere inddata med skriptet \"convert-ly\""
-
-#~ msgid "Fetch and rebuild from latest source package"
-#~ msgstr "Hent og byg om fra seneste kildekodepakke"
-
-#~ msgid "unpack and build in DIR [%s]"
-#~ msgstr "udpak og byg i DIR [%s]"
-
-#~ msgid "execute COMMAND, subtitute:"
-#~ msgstr "kør COMMAND, erstat:"
-
-#~ msgid "%b: build root"
-#~ msgstr "%b: rod for opbygning"
-
-#~ msgid "%n: package name"
-#~ msgstr "%n: pakkenavn"
-
-#~ msgid "%r: release directory"
-#~ msgstr "%r: katalog for programudgivelse"
-
-#~ msgid "%t: tarball"
-#~ msgstr "%t: tarball"
-
-#~ msgid "%v: package version"
-#~ msgstr "%v: pakkeversion"
-
-#~ msgid "keep all output, and name the directory %s"
-#~ msgstr "behold al uddata, og døb kataloget til %s"
-
-#~ msgid "upon failure notify EMAIL[,EMAIL]"
-#~ msgstr "ved fejl, underret EMAIL[,EMAIL]"
-
-#~ msgid "remove previous build"
-#~ msgstr "fjern foregående bygning"
-
-#~ msgid "fetch and build URL [%s]"
-#~ msgstr "hent og byg URL [%s]"
-
-#~ msgid "Listing `%s'..."
-#~ msgstr "Lister \"%s\"..."
-
-#~ msgid "latest is: %s"
-#~ msgstr "seneste er: %s"
-
-#~ msgid "relax, %s is up to date"
-#~ msgstr "slap af, %s er seneste version"
-
-#~ msgid "Fetching `%s'..."
-#~ msgstr "Henter \"%s\"..."
-
-#~ msgid "Building `%s'..."
-#~ msgstr "Bygger \"%s\"..."
-
-#~ msgid "invalid subtraction: not part of chord: %s"
-#~ msgstr "ugyldig subtraktion: ikke del af akkord: %s"
-
-# "pitch" hær skal alltså være en ton i et akkord
-#~ msgid "invalid inversion pitch: not part of chord: %s"
-#~ msgstr "ugyldig tone for inversion: ikke del af en akkord: %s"
-
-#~ msgid "This was the other key definition."
-#~ msgstr "Dette var den anden tonartsdefinition."
-
-#~ msgid ", at "
-#~ msgstr ", ved "
-
-#~ msgid "Pitch arguments out of range"
-#~ msgstr "Toneargument udenfor intervallet"
-
-#~ msgid "Putting slur over rest."
-#~ msgstr "Sætter legatobue over pause."
-
-#~ msgid "Slur over rest?"
-#~ msgstr "Legatobue over pause?"
-
-#~ msgid "Text_spanner too small"
-#~ msgstr "Tekst_bro for lille"
-
-#~ msgid "Can't specify direction for this request"
-#~ msgstr "Kan ikke angive retning for denne forespørgsel"
-
-#~ msgid "Generate .dvi with LaTeX for LilyPond"
-#~ msgstr "Generér .dvi med LaTeX for LilyPond"
-
-# %s er progravnavnet (mup2ly)
-#~ msgid "%s is far from completed.  Not all constructs are recognised."
-#~ msgstr "%s er langt fra færdig, og kan ikke genkende alle konstruktioner."
-
-#~ msgid "EOF in a string"
-#~ msgstr "EOF i en streng"
-
-# det handlar om mmap hær
-#~ msgid "can't map file"
-#~ msgstr "kan ikke lave \"mmap\" på filen"
-
-#~ msgid "<stdin>"
-#~ msgstr "<stdin>"
-
-#~ msgid "programming error: "
-#~ msgstr "programmeringsfejl: "
-
-#~ msgid "can't find start of beam"
-#~ msgstr "kan ikke finde start på bjælke"
-
-#~ msgid "weird beam vertical offset"
-#~ msgstr "underlig lodret afstand for bjælke"
-
-#~ msgid "unknown spacing pair `%s', `%s'"
-#~ msgstr "ukendt afstandspar \"%s\", \"%s\""
-
-#~ msgid "no Grace context available"
-#~ msgstr "ingen forslagsnodeomgivelse (Grace) tilgængelig"
-
-#~ msgid "Unattached grace notes.  Attaching to last musical column."
-#~ msgstr "Ikke-fæstede forslagsnoder. Fæster ved sidste musikkolonne."
-
-#~ msgid "evalute EXPR as Scheme after .scm init is read"
-#~ msgstr "evaluér UDTR som Scheme efter .scm-init er læst"
-
-#~ msgid "This binary was compiled with the following options:"
-#~ msgstr "Dette program blev oversat med følgende flag:"
-
-#~ msgid "ly_get_mus_property (): Not a Music"
-#~ msgstr "ly_get_mus_property (): Ikke en \"Music\""
-
-#~ msgid "ly_set_mus_property (): Not a symbol"
-#~ msgstr "ly_set_mus_property (): ikke et symbol"
-
-#~ msgid "ly_set_mus_property ():  not of type Music"
-#~ msgstr "ly_set_mus_property (): ikke af typen \"Music\""
-
-#~ msgid "ly_make_music (): Not a string"
-#~ msgstr "ly_make_music (): Ikke en streng"
-
-#~ msgid "ly_music_name (): Not a music expression"
-#~ msgstr "ly_music_name (): Ikke et musikudtryk"
-
-#~ msgid "writing header field `%s' to `%s'..."
-#~ msgstr "skriver rubrikfelt \"%s\" til \"%s\"..."
-
-#~ msgid ""
-#~ "`%s' is deprecated.  Use\n"
-#~ " \\property %s.%s \\override #'%s = #%s"
-#~ msgstr ""
-#~ "\"%s\" er forældet. Brug\n"
-#~ " \\property %s.%s \\override #'%s = #%s"
-
-#~ msgid "Wrong type for property: %s, type: %s, value found: %s, type: %s"
-#~ msgstr "Forkert type for egenskab: %s, type: %s, værdi fundet: %s, type: %s"
-
-#~ msgid "too many notes for rest collision"
-#~ msgstr "for mange noder for pausesammenstød"
-
-#~ msgid "Scheme options:"
-#~ msgstr "Scheme-flag:"
-
-#~ msgid ""
-#~ "Can't find property type-check for `%s'.  Perhaps you made a typing "
-#~ "error? Doing assignment anyway."
-#~ msgstr ""
-#~ "Kan ikke finde egenskabstypekontrol for \"%s\". Måske har du lavet en "
-#~ "tastefejl? Laver tildeling alligevel."
-
-#~ msgid "ly-get-trans-property: expecting a Translator_group argument"
-#~ msgstr "ly-get-trans-property: forventede et Translator_group-argument"
-
-#~ msgid "Expecting %d arguments"
-#~ msgstr "Forventer %d argumenter"
-
-#~ msgid "Oldest supported input version: %s"
-#~ msgstr "Ældste inddataversion som understøttes: %s"
-
-#~ msgid "#32 in quarter: %d"
-#~ msgstr "#32 i fjerdedel: %d"
-
-#~ msgid "LY output to `%s'..."
-#~ msgstr "LY-uddata til \"%s\"..."
-
-#~ msgid "track %d:"
-#~ msgstr "spor %d:"
-
-#~ msgid "Processing..."
-#~ msgstr "Behandler..."
-
-#~ msgid "Creating voices..."
-#~ msgstr "Laver stemmer..."
-
-#~ msgid "track "
-#~ msgstr "spor "
-
-#~ msgid "NOT Filtering tempo..."
-#~ msgstr "Filtrerer IKKE tempo..."
-
-#~ msgid "NOT Quantifying columns..."
-#~ msgstr "Kvantificerer IKKE kolonner..."
-
-#~ msgid "Quantifying columns..."
-#~ msgstr "Kvantificerer kolonner..."
-
-#~ msgid "Settling columns..."
-#~ msgstr "Bestemmer kolonner..."
-
-#~ msgid "% MIDI copyright:"
-#~ msgstr "% MIDI-copyright:"
-
-#~ msgid "% MIDI instrument:"
-#~ msgstr "% MIDI-instrument:"
-
-#~ msgid "lily indent level: %d"
-#~ msgstr "indenteringsniveau for lily: %d"
-
-# Kanske man ikke skal oversætta, men når får de tage bort _() i stællet for
-# at skrive en fånig kommentar
-#~ msgid "% Creator: "
-#~ msgstr "% Kreatør: "
-
-#~ msgid "% Automatically generated"
-#~ msgstr "% Automatgenereret"
-
-#~ msgid "% from input file: "
-#~ msgstr "% fra inddatafil: "
-
-#~ msgid "write exact durations, e.g.: a4*385/384"
-#~ msgstr "skriv eksakte tidslængder, fx: a4*385/384"
-
-#~ msgid "enable debugging output"
-#~ msgstr "aktivér fejlsøgningsuddata"
-
-#~ msgid "don't output tuplets, double dots or rests, smallest is 32"
-#~ msgstr "udskriv ikke tupler, dobbeltpunktninger eller pauser, mindste er 32"
-
-#~ msgid "set FILE as default output"
-#~ msgstr "sæt FIL som standarduddata"
-
-#~ msgid "don't output tuplets"
-#~ msgstr "udskriv ikke tupler"
-
-#~ msgid "be quiet"
-#~ msgstr "vær stille"
-
-#~ msgid "don't output rests or skips"
-#~ msgstr "udskriv ikke pauser eller hop"
-
-#~ msgid "set smallest duration"
-#~ msgstr "indstil mindste længde"
-
-#~ msgid "don't timestamp the output"
-#~ msgstr "tidsstempl ikke uddata"
-
-#~ msgid "assume no double dotted notes"
-#~ msgstr "antag ingen dobbeltpunktede noder"
-
-#~ msgid "Usage: %s [OPTIONS]... [FILE]"
-#~ msgstr "Brug: %s [FLAG]... [FIL]"
-
-#~ msgid "Translate MIDI-file to lilypond"
-#~ msgstr "Oversæt MIDI-fil til lilypond"
-
-#~ msgid "no_double_dots: %d\n"
-#~ msgstr "no_double_dots: %d\n"
-
-#~ msgid "no_rests: %d\n"
-#~ msgstr "no_rests: %d\n"
-
-#~ msgid "no_quantify_b_s: %d\n"
-#~ msgstr "no_quantify_b_s: %d\n"
-
-#~ msgid "no_smaller_than: %d (1/%d)\n"
-#~ msgstr "no_smaller_than: %d (1/%d)\n"
-
-#~ msgid "no_tuplets: %d\n"
-#~ msgstr "no_tuplets: %d\n"
-
-#~ msgid "zero length string encountered"
-#~ msgstr "streng med længde nul mødtes"
-
-#~ msgid "MIDI header expected"
-#~ msgstr "forventede MIDI-rubrik"
-
-#~ msgid "invalid header length"
-#~ msgstr "ugyldig rubriklængde"
-
-#~ msgid "invalid MIDI format"
-#~ msgstr "ugyldigt MIDI-format"
-
-#~ msgid "invalid number of tracks"
-#~ msgstr "ugyldigt antal spor"
-
-#~ msgid "can't handle non-metrical time"
-#~ msgstr "kan ikke håndtere ikke-metrisk tid"
-
-#~ msgid "Junking note-end event: channel = %d, pitch = %d"
-#~ msgstr "Stryger nodeslutshændelse: kanal = %d, tone = %d"
-
-#~ msgid "invalid running status"
-#~ msgstr "ugyldig kørselstatus"
-
-#~ msgid "unimplemented MIDI meta-event"
-#~ msgstr "uimplementeret MIDI-metahændelse"
-
-#~ msgid "invalid MIDI event"
-#~ msgstr "ugyldig MIDI-hændelse"
-
-#~ msgid "MIDI track expected"
-#~ msgstr "forventede MIDI-spor"
-
-#~ msgid "invalid track length"
-#~ msgstr "ugyldig sporlængde"
diff --git a/po/de.po b/po/de.po
deleted file mode 100644
index 45e68d4f5c..0000000000
--- a/po/de.po
+++ /dev/null
@@ -1,2414 +0,0 @@
-# German Translation of lilypond.
-# Copyright (C) 2003 Han-Wen Nienhuys, Jan Nieuwenhuizen
-# This file is distributed under the same license as the lilypond package.
-# Roland Stigge <stigge@antcom.de>, 2003.
-# (ersetzt die Übersetzung von 1999 von Erwin Dieterich <bamse@gmx.de>)
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: lilypond 1.7.26\n"
-"POT-Creation-Date: 2003-07-18 14:45+0200\n"
-"PO-Revision-Date: 2003-07-21 14:15+0200\n"
-"Last-Translator: Roland Stigge <stigge@antcom.de>\n"
-"Language-Team: German <de@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=ISO-8859-1\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#. this is where special info is often stored
-#. ###############################################################
-#. lilylib.py -- options and stuff
-#.
-#. source file of the GNU LilyPond music typesetter
-#.
-#. (c)  1998--2003  Han-Wen Nienhuys <hanwen@cs.uu.nl>
-#. Jan Nieuwenhuizen <janneke@gnu.org>
-#. ##  subst:\(^\|[^._a-z]\)\(abspath\|identify\|warranty\|progress\|warning\|error\|exit\|getopt_args\|option_help_str\|options_help_str\|help\|setup_temp\|read_pipe\|system\|cleanup_temp\|strip_extension\|cp_to_dir\|mkdir_p\|init\) *(
-#. ##  replace:\1ly.\2 (
-#. ## subst: \(help_summary\|keep_temp_dir_p\|option_definitions\|original_dir\|program_name\|pseudo_filter_p\|temp_dir\|verbose_p\)
-#. ###############################################################
-#. Users of python modules should include this snippet
-#. and customize variables below.
-#. We'll suffer this path init stuff as long as we don't install our
-#. python packages in <prefix>/lib/pythonx.y (and don't kludge around
-#. it as we do with teTeX on Red Hat Linux: set some environment var
-#. (PYTHONPATH) in profile)
-#. If set, LILYPONDPREFIX must take prevalence
-#. if datadir is not set, we're doing a build and LILYPONDPREFIX
-#. Customize these
-#. lilylib globals
-#: lilylib.py:60
-msgid "lilylib module"
-msgstr "Modul lilylib"
-
-#: lilylib.py:63 lilypond-book.py:131 lilypond.py:128 midi2ly.py:100
-#: mup2ly.py:75 main.cc:111
-msgid "print this help"
-msgstr "diese Hilfe"
-
-#. ###############################################################
-#. Handle bug in Python 1.6-2.1
-#.
-#. there are recursion limits for some patterns in Python 1.6 til 2.1.
-#. fix this by importing pre instead. Fix by Mats.
-#. Attempt to fix problems with limited stack size set by Python!
-#. Sets unlimited stack size. Note that the resource module only
-#. is available on UNIX.
-#: lilylib.py:114 midi2ly.py:136 mup2ly.py:130 main.cc:188 main.cc:200
-#, c-format, python-format
-msgid "Copyright (c) %s by"
-msgstr "Copyright (c) %s bei"
-
-#: lilylib.py:114
-msgid " 1998--2003"
-msgstr "1998--2003"
-
-#: lilylib.py:118
-msgid "Distributed under terms of the GNU General Public License."
-msgstr "Vertrieben unter den Bedingungen der GNU General Public License."
-
-#: lilylib.py:120
-msgid "It comes with NO WARRANTY."
-msgstr "Es wird OHNE GARANTIE ausgeliefert."
-
-#: lilylib.py:127 midi2ly.py:150 mup2ly.py:144 input.cc:88
-msgid "warning: "
-msgstr "Warnung: "
-
-#. lots of midi files use plain text for lyric events
-#. FIXME: read from stdin when files[0] = '-'
-#: lilylib.py:130 midi2ly.py:165 midi2ly.py:1018 midi2ly.py:1083 mup2ly.py:147
-#: mup2ly.py:161 input.cc:93
-msgid "error: "
-msgstr "Fehler: "
-
-#: lilylib.py:134
-#, python-format
-msgid "Exiting (%d)..."
-msgstr "Beende (%d)..."
-
-#: lilylib.py:194 midi2ly.py:224 mup2ly.py:220
-#, python-format
-msgid "Usage: %s [OPTIONS]... FILE"
-msgstr "Aufruf: %s [OPTIONS]... DATEI"
-
-#: lilylib.py:198 midi2ly.py:228 mup2ly.py:224 main.cc:166
-msgid "Options:"
-msgstr "Optionen:"
-
-#: lilylib.py:202 midi2ly.py:232 mup2ly.py:228 main.cc:172
-#, c-format, python-format
-msgid "Report bugs to %s."
-msgstr "Melden Sie Fehler an %s."
-
-#: lilylib.py:228
-#, python-format
-msgid "Opening pipe `%s'"
-msgstr "Öffne Pipe `%s'"
-
-#. successful pipe close returns 'None'
-#: lilylib.py:240
-#, python-format
-msgid "`%s' failed (%d)"
-msgstr "`%s' gescheitert (%d)"
-
-#: lilylib.py:242 lilylib.py:289 lilypond-book.py:231 lilypond.py:512
-msgid "The error log is as follows:"
-msgstr "Das Fehlerprotokoll lautet wie folgt:"
-
-#: lilylib.py:262 midi2ly.py:260 mup2ly.py:256
-#, python-format
-msgid "Invoking `%s'"
-msgstr "Rufe `%s' auf"
-
-#: lilylib.py:264
-#, python-format
-msgid "Running %s..."
-msgstr "Starte %s..."
-
-#: lilylib.py:282
-#, python-format
-msgid "`%s' failed (%s)"
-msgstr "`%s' gescheitert (%s)"
-
-#: lilylib.py:285 midi2ly.py:266 mup2ly.py:264
-msgid "(ignored)"
-msgstr "(ignoriert)"
-
-#: lilylib.py:299 midi2ly.py:276 mup2ly.py:274
-#, python-format
-msgid "Cleaning %s..."
-msgstr "Räume %s auf..."
-
-#. Duh.  Python style portable: cp *.EXT OUTDIR
-#. system ('cp *.%s %s' % (ext, outdir), 1)
-#. Python < 1.5.2 compatibility
-#.
-#. On most platforms, this is equivalent to
-#. `normpath(join(os.getcwd()), PATH)'.  *Added in Python version 1.5.2*
-#. tex needs lots of memory, more than it gets by default on Debian
-#. TODO: * prevent multiple addition.
-#. * clean TEXINPUTS, MFINPUTS, TFMFONTS,
-#. as these take prevalence over $TEXMF
-#. and thus may break tex run?
-#. $TEXMF is special, previous value is already taken care of
-#. # -sOutputFile does not work with bbox?
-#. # todo:
-#. # have better algorithm for deciding when to crop page,
-#. # and when to show full page
-#: lilylib.py:458
-msgid "Removing output file"
-msgstr "Lösche Ausgabedatei"
-
-#. !@PYTHON@
-#. once upon a rainy monday afternoon.
-#.
-#. ...
-#.
-#. (not finished.)
-#. ABC standard v1.6:  http://www.gre.ac.uk/~c.walshaw/abc2mtex/abc.txt
-#.
-#. Enhancements  (Roy R. Rankin)
-#.
-#. Header section moved to top of lilypond file
-#. handle treble, treble-8, alto, and bass clef
-#. Handle voices (V: headers) with clef and part names, multiple voices
-#. Handle w: lyrics with multiple verses
-#. Handle key mode names for minor, major, phrygian, ionian, locrian, aeolian,
-#. mixolydian, lydian, dorian
-#. Handle part names from V: header
-#. Tuplets handling fixed up
-#. Lines starting with |: not discarded as header lines
-#. Multiple T: and C: header entries handled
-#. Accidental maintained until next bar check
-#. Silent rests supported
-#. articulations fermata, upbow, downbow, ltoe, accent, tenuto supported
-#. Chord strings([-^]"string") can contain a '#'
-#. Header fields enclosed by [] in notes string processed
-#. W: words output after tune as abc2ps does it (they failed before)
-#. Enhancements (Laura Conrad)
-#.
-#. Barring now preserved between ABC and lilypond
-#. the default placement for text in abc is above the staff.
-#. %%LY now supported.
-#. \breve and \longa supported.
-#. M:none doesn't crash lily.
-#. Limitations
-#.
-#. Multiple tunes in single file not supported
-#. Blank T: header lines should write score and open a new score
-#. Not all header fields supported
-#. ABC line breaks are ignored
-#. Block comments generate error and are ignored
-#. Postscript commands are ignored
-#. lyrics not resynchronized by line breaks (lyrics must fully match notes)
-#. %%LY slyrics can't be directly before a w: line.
-#. ???
-#. TODO:
-#.
-#. Convert to new chord styles.
-#.
-#. UNDEF -> None
-#.
-#. uGUHGUHGHGUGH
-#. UGH
-#. treble8 is used by abctab2ps; -8va is used by barfly,
-#. and by my patch to abc2ps. If there's ever a standard
-#. about this we'll support that.
-#. find keywork
-#. assume that Q takes the form "Q:1/4=120"
-#. There are other possibilities, but they are deprecated
-#. outf.write ("\t\t\\consists Staff_margin_engraver\n")
-#. pitch manipulation. Tuples are (name, alteration).
-#. 0 is (central) C. Alteration -1 is a flat, Alteration +1 is a sharp
-#. pitch in semitones.
-#. abc to lilypond key mode names
-#. semitone shifts for key mode names
-#. latex does not like naked #'s
-#. latex does not like naked "'s
-#. break lyrics to words and put "'s around words containing numbers and '"'s
-#. escape "
-#. _ causes probs inside ""
-#. _ to ' _ '
-#. split words with -
-#. unless \-
-#. ~ to space('_')
-#. * to to space
-#. latex does not like naked #'s
-#. put numbers and " and ( into quoted string
-#. insure space between lines
-#. title
-#. strip trailing blanks
-#. Meter
-#. KEY
-#. seperate clef info
-#. there may or may not be a space
-#. between the key letter and the mode
-#. ugh.
-#. ugh.
-#. Notes
-#. Origin
-#. Reference Number
-#. Area
-#. History
-#. Book
-#. Composer
-#. Default note length
-#. Voice
-#. Words
-#. vocals
-#. tempo
-#. we use in this order specified accidental, active accidental for bar,
-#. active accidental for key
-#. (num /  den)  / defaultlen < 1/base
-#. return (str, num,den,dots)
-#. ignore slide
-#. ignore roll
-#. s7m2 input doesnt care about spaces
-#.
-#. remember accidental for rest of bar
-#.
-#. get accidental set in this bar or UNDEF if not set
-#. WAT IS ABC EEN ONTZETTENDE PROGRAMMEERPOEP  !
-#. failed; not a note!
-#. escape '#'s
-#.
-#. |] thin-thick double bar line
-#. || thin-thin double bar line
-#. [| thick-thin double bar line
-#. :| left repeat
-#. |: right repeat
-#. :: left-right repeat
-#. |1 volta 1
-#. |2 volta 2
-#. first try the longer one
-#. bracket escape
-#. the nobarlines option is necessary for an abc to lilypond translator for
-#. exactly the same reason abc2midi needs it: abc requires the user to enter
-#. the note that will be printed, and MIDI and lilypond expect entry of the
-#. pitch that will be played.
-#.
-#. In standard 19th century musical notation, the algorithm for translating
-#. between printed note and pitch involves using the barlines to determine
-#. the scope of the accidentals.
-#.
-#. Since ABC is frequently used for music in styles that do not use this
-#. convention, such as most music written before 1700, or ethnic music in
-#. non-western scales, it is necessary to be able to tell a translator that
-#. the barlines should not affect its interpretation of the pitch.
-#. write other kinds of appending  if we ever need them.
-#. add comments to current voice
-#. Try nibbling characters off until the line doesn't change.
-#. dump_global (outf)
-#. !@PYTHON@
-#.
-#. convert-ly.py -- Update old LilyPond input files (fix name?)
-#.
-#. source file of the GNU LilyPond music typesetter
-#.
-#. (c)  1998--2003  Han-Wen Nienhuys <hanwen@cs.uu.nl>
-#. Jan Nieuwenhuizen <janneke@gnu.org>
-#. TODO
-#. use -f and -t for -s output
-#. NEWS
-#. 0.2
-#. - rewrite in python
-#. Did we ever have \mudela-version?  I doubt it.
-#. lilypond_version_re_str = '\\\\version *\"(.*)\"'
-#. ###########################
-#. need new a namespace
-#. raise FatalConversionError()
-#. need new a namespace
-#. harmful to current .lys
-#. str = re.sub ('\\\\key([^;]+);', '\\\\accidentals \\1;', str)
-#. raise FatalConversionError()
-#. raise FatalConversionError()
-#. raise FatalConversionError()
-#. TODO: lots of other syntax change should be done here as well
-#. Ugh, but meaning of \stemup changed too
-#. maybe we should do \stemup -> \stemUp\slurUp\tieUp ?
-#. I don't know exactly when these happened...
-#. ugh, we loose context setting here...
-#. (lacks capitalisation slur -> Slur)
-#. # dynamic..
-#. TODO: add lots of these
-#. ugh
-#. old fix
-#. Make sure groups of more than one ; have space before
-#. them, so that non of them gets removed by next rule
-#. Only remove ; that are not after spaces, # or ;
-#. Otherwise  we interfere with Scheme comments,
-#. which is badbadbad.
-#. 40 ?
-#. ###############################
-#. END OF CONVERSIONS
-#. ###############################
-#. !@PYTHON@
-#. info mostly taken from looking at files. See also
-#. http://lilypond.org/wiki/?EnigmaTransportFormat
-#. This supports
-#.
-#. * notes
-#. * rests
-#. * ties
-#. * slurs
-#. * lyrics
-#. * articulation
-#. * grace notes
-#. * tuplets
-#.
-#. todo:
-#. * slur/stem directions
-#. * voices (2nd half of frame?)
-#. * more intelligent lyrics
-#. * beams (better use autobeam?)
-#. * more robust: try entertainer.etf (freenote)
-#. * dynamics
-#. * empty measures (eg. twopt03.etf from freenote)
-#.
-#. uGUHGUHGHGUGH
-#. notename 0 == central C
-#. represent pitches as (notename, alteration), relative to C-major scale
-#. a fifth up
-#. should cache this.
-#. flag1 isn't all that interesting.
-#. 3: '>',
-#. 18: '\arpeggio' ,
-#. do grace notes.
-#. ugh.
-#. we don't attempt voltas since they fail easily.
-#. and g.repeat_bar == '|:' or g.repeat_bar == ':|:' or g.bracket:
-#. 4 layers.
-#. let's not do this: this really confuses when eE happens to be before  a ^text.
-#. if last_tag and last_indices:
-#. etf_file_dict[last_tag][last_indices].append (l)
-#. # do it
-#. staff-spec
-#. should use \addlyrics ?
-#. !@PYTHON@
-#. vim: set noexpandtab:
-#. This is was the idea for handling of comments:
-#. Multiline comments, @ignore .. @end ignore is scanned for
-#. in read_doc_file, and the chunks are marked as 'ignore', so
-#. lilypond-book will not touch them any more. The content of the
-#. chunks are written to the output file. Also 'include' and 'input'
-#. regex has to check if they are commented out.
-#.
-#. Then it is scanned for 'lilypond', 'lilypond-file' and 'lilypond-block'.
-#. These three regex's has to check if they are on a commented line,
-#. % for latex, @c for texinfo.
-#.
-#. Then lines that are commented out with % (latex) and @c (Texinfo)
-#. are put into chunks marked 'ignore'. This cannot be done before
-#. searching for the lilypond-blocks because % is also the comment character
-#. for lilypond.
-#.
-#. The the rest of the rexeces are searched for. They don't have to test
-#. if they are on a commented out line.
-#. ###############################################################
-#. Users of python modules should include this snippet
-#. and customize variables below.
-#. We'll suffer this path init stuff as long as we don't install our
-#. python packages in <prefix>/lib/pythonx.y (and don't kludge around
-#. it as we do with teTeX on Red Hat Linux: set some environment var
-#. (PYTHONPATH) in profile)
-#. If set, LILYPONDPREFIX must take prevalence
-#. if datadir is not set, we're doing a build and LILYPONDPREFIX
-#. Customize these
-#. if __name__ == '__main__':
-#. lilylib globals
-#. temp_dir = os.path.join (original_dir,  '%s.dir' % program_name)
-#. urg
-#. # FIXME
-#. # do -P or -p by default?
-#. #help_summary = _ ("Run LilyPond using LaTeX for titling")
-#: lilypond-book.py:120
-msgid "Process LilyPond snippets in hybrid html, LaTeX or texinfo document"
-msgstr "LilyPond-Teile in Mischdateien (HTML, LaTeX oder texinfo) verarbeiten"
-
-#. another bug in option parser: --output=foe is taken as an abbreviation
-#. for --output-format
-#: lilypond-book.py:125 main.cc:110
-msgid "EXT"
-msgstr "ERW"
-
-#: lilypond-book.py:125
-msgid "use output format EXT (texi [default], texi-html, latex, html)"
-msgstr "Ausgabeformat ERW (texi [Vorgabe], texi-html, latex, html) verwenden"
-
-#: lilypond-book.py:126 lilypond-book.py:127 lilypond-book.py:129
-#: lilypond-book.py:130
-msgid "DIM"
-msgstr "GROE"
-
-#: lilypond-book.py:126
-msgid "default fontsize for music.  DIM is assumed to be in points"
-msgstr "Schriftgrößenvorgabe für Musik. Einheit für GROE: Punkte"
-
-#: lilypond-book.py:127
-msgid "deprecated, use --default-music-fontsize"
-msgstr "veraltet, verwenden Sie --default-music-fontsize"
-
-#: lilypond-book.py:128
-msgid "OPT"
-msgstr "OPT"
-
-#: lilypond-book.py:128
-msgid "pass OPT quoted to the lilypond command line"
-msgstr "OPT \"zitiert\" an die LilyPond-Kommandozeile übergeben"
-
-#: lilypond-book.py:129
-msgid "force fontsize for all inline lilypond. DIM is assumed be to in points"
-msgstr "Schriftgröße für eingebettetes LilyPond erzwingen. Einheit für GROE: Punkte"
-
-#: lilypond-book.py:130
-msgid "deprecated, use --force-music-fontsize"
-msgstr "veraltet, verwenden Sie --force-music-fontsize"
-
-#: lilypond-book.py:132 lilypond.py:130 main.cc:113 main.cc:118
-msgid "DIR"
-msgstr "VERZ"
-
-#: lilypond-book.py:132
-msgid "include path"
-msgstr "Pfad einbeziehen"
-
-#: lilypond-book.py:133
-msgid "write dependencies"
-msgstr "Schreib-Abhängigkeiten"
-
-#: lilypond-book.py:134
-msgid "PREF"
-msgstr "PRÄF"
-
-#: lilypond-book.py:134
-msgid "prepend PREF before each -M dependency"
-msgstr "stelle PRÄF den -M Abhängigkeiten voran"
-
-#: lilypond-book.py:135
-msgid "don't run lilypond"
-msgstr "LilyPond nicht aufrufen"
-
-#: lilypond-book.py:136
-msgid "don't generate pictures"
-msgstr "keine Bilder generieren"
-
-#: lilypond-book.py:137
-msgid "strip all lilypond blocks from output"
-msgstr "alle LilyPond-Blöcke aus der Ausgabe entfernen"
-
-#: lilypond-book.py:138 lilypond-book.py:139 lilypond.py:135 lilypond.py:136
-#: midi2ly.py:102 main.cc:114 main.cc:117
-msgid "FILE"
-msgstr "DATEI"
-
-#: lilypond-book.py:138
-msgid "filename main output file"
-msgstr "Dateiname für Hauptausgabedatei"
-
-#: lilypond-book.py:139
-msgid "where to place generated files"
-msgstr "Ziel der generierten Dateien"
-
-#: lilypond-book.py:140 lilypond.py:137
-msgid "RES"
-msgstr "AUFL"
-
-#: lilypond-book.py:141 lilypond.py:138
-msgid "set the resolution of the preview to RES"
-msgstr "Auflösung der Vorschau auf AUFL setzen"
-
-#: lilypond-book.py:142 lilypond.py:148 midi2ly.py:105 mup2ly.py:78 main.cc:126
-msgid "be verbose"
-msgstr "wortreich"
-
-#: lilypond-book.py:143
-msgid "print version information"
-msgstr "Versionsinformation ausgeben"
-
-#: lilypond-book.py:144 lilypond.py:150 midi2ly.py:107 mup2ly.py:80 main.cc:127
-msgid "show warranty and copyright"
-msgstr "Gewährleistung und Copyright zeigen"
-
-#. format specific strings, ie. regex-es for input, and % strings for output
-#. global variables
-#. lilypond_binary = 'valgrind --suppressions=/home/hanwen/usr/src/guile-1.6.supp  --num-callers=10 /home/hanwen/usr/src/lilypond/lily/out/lilypond'
-#. only use installed binary  when we're installed too.
-#. only use installed binary  when we're installed too.
-#. ###############################################################
-#. Dimension handling for LaTeX.
-#.
-#. Ugh.  (La)TeX writes progress and error messages on stdout
-#. Redirect to stderr
-#: lilypond-book.py:230
-msgid "LaTeX failed."
-msgstr "LaTeX scheiterte."
-
-#. URG see lilypond
-#. Convert numeric values, with or without specific dimension, to floats.
-#. Keep other strings
-#. ###############################################################
-#. How to output various structures.
-#. # maybe <hr> ?
-#. Verbatim text is always finished with \n.  FIXME: For HTML,
-#. this newline should be removed.
-#. Verbatim text is always finished with \n.  FIXME: For HTML,
-#. this newline should be removed.
-#. # Ugh we need to differentiate on origin:
-#. # lilypond-block origin wants an extra <p>, but
-#. # inline music doesn't.
-#. # possibly other center options?
-#. verbatim text is always finished with \n
-#. verbatim text is always finished with \n
-#. verbatim text is always finished with \n
-#. verbatim text is always finished with \n
-#. do some tweaking: @ is needed in some ps stuff.
-#.
-#. ugh, the <p> below breaks inline images...
-#. clumsy workaround for python 2.2 pre bug.
-#. ###############################################################
-#. Recognize special sequences in the input
-#. Warning: This uses extended regular expressions.  Tread with care.
-#.
-#. legenda
-#.
-#. (?P<name>regex) -- assign result of REGEX to NAME
-#. *? -- match non-greedily.
-#. (?m) -- multiline regex: make ^ and $ match at each line
-#. (?s) -- make the dot match all characters including newline
-#. why do we have distinction between @mbinclude and @include?
-#. # we'd like to catch and reraise a more
-#. # detailed error, but alas, the exceptions
-#. # changed across the 1.5/2.1 boundary.
-#. ughUGH not original options
-#. First we want to scan the \documentclass line
-#. it should be the first non-comment line.
-#. The only thing we really need to know about the \documentclass line
-#. is if there are one or two columns to begin with.
-#. Then we add everything before \begin{document} to
-#. paperguru.m_document_preamble so that we can later write this header
-#. to a temporary file in find_latex_dims() to find textwidth.
-#. this is not bulletproof..., it checks the first 10 chunks
-#. newchunks.extend (func (m))
-#. python 1.5 compatible:
-#. we have to check for verbatim before doing include,
-#. because we don't want to include files that are mentioned
-#. inside a verbatim environment
-#. ugh fix input
-#. # Hmm, we should hash only lilypond source, and skip the
-#. # %options are ...
-#. # comment line
-#. # todo: include path, but strip
-#. # first part of the path.
-#. format == 'html'
-#. ugh rename
-#. Count sections/chapters.
-#. # TODO: do something like
-#. # this for texinfo/latex as well ?
-#. ugh
-#. fixme: be sys-independent.
-#.
-#. Ugh, fixing up dependencies for .tex generation
-#.
-#. Ugh.  (La)TeX writes progress and error messages on stdout
-#. Redirect to stderr
-#. # There used to be code to write .tex dependencies, but
-#. # that is silly: lilypond-book has its own dependency scheme
-#. # to ensure that all lily-XXX.tex files are there
-#. # TODO: put file name in front of texidoc.
-#. #
-#. # what's this? Docme --hwn
-#. #
-#. #docme: why global?
-#. Do It.
-#. should chmod -w
-#: lilypond-book.py:1557 lilypond.py:673 midi2ly.py:1018
-#, python-format
-msgid "getopt says: `%s'"
-msgstr "getopt sagt: `%s'"
-
-#. HACK
-#. status = os.system ('lilypond -w')
-#: lilypond-book.py:1630 lilypond.py:777
-msgid "no files specified on command line"
-msgstr "Keine Dateien auf der Kommandozeile angegeben"
-
-#.
-#. Petr, ik zou willen dat ik iets zinvoller deed,
-#. maar wat ik kan ik doen, het verandert toch niets?
-#. --hwn 20/aug/99
-#. !@PYTHON@
-#.
-#. lilypond.py -- Run LilyPond, add titles to bare score, generate printable
-#. document
-#. Invokes: lilypond, latex (or pdflatex), dvips, ps2pdf, gs
-#.
-#. source file of the GNU LilyPond music typesetter
-#.
-#. (c)  1998--2003  Han-Wen Nienhuys <hanwen@cs.uu.nl>
-#. Jan Nieuwenhuizen <janneke@gnu.org>
-#. This is the third incarnation of lilypond.
-#.
-#. Earlier incarnations of lilypond were written by
-#. Jeffrey B. Reed<daboys@austin.rr.com> (Python version)
-#. Jan Arne Fagertun <Jan.A.Fagertun@@energy.sintef.no> (Bourne shell script)
-#.
-#. Note: gettext work best if we use ' for docstrings and "
-#. for gettextable strings.
-#. --> DO NOT USE ''' for docstrings.
-#. ###############################################################
-#. Users of python modules should include this snippet
-#. and customize variables below.
-#. We'll suffer this path init stuff as long as we don't install our
-#. python packages in <prefix>/lib/pythonx.y (and don't kludge around
-#. it as we do with teTeX on Red Hat Linux: set some environment var
-#. (PYTHONPATH) in profile)
-#. If set, LILYPONDPREFIX must take prevalence
-#. if datadir is not set, we're doing a build and LILYPONDPREFIX
-#. Customize these
-#. if __name__ == '__main__':
-#. lilylib globals
-#. # FIXME
-#. # do -P or -p by default?
-#. #help_summary = _ ("Run LilyPond using LaTeX for titling")
-#: lilypond.py:121
-msgid "Run LilyPond, add titles, generate printable document."
-msgstr "LilyPond aufrufen, Titel hinzufügen, druckbares Dokument erzeugen."
-
-#: lilypond.py:127 main.cc:115
-msgid "write Makefile dependencies for every input file"
-msgstr "Makefile-Abhängigkeiten für jede Eingabedatei schreiben"
-
-#: lilypond.py:129
-msgid "print even more output"
-msgstr "noch mehr Ausgabe erzeugen"
-
-#: lilypond.py:130
-msgid "add DIR to LilyPond's search path"
-msgstr "VERZ zu LilyPond's Suchpfad hinzufügen"
-
-#: lilypond.py:132
-#, python-format
-msgid "keep all output, output to directory %s.dir"
-msgstr "Alle Ausgaben aufbewahren, ins Verzeichnis %s.dir ausgeben"
-
-#: lilypond.py:133
-msgid "don't run LilyPond"
-msgstr "LilyPond nicht aufrufen"
-
-#: lilypond.py:134 main.cc:116
-msgid "produce MIDI output only"
-msgstr "nur MIDI-Ausgabe erzeugen"
-
-#: lilypond.py:136
-msgid "find pfa fonts used in FILE"
-msgstr "PFA-Schriftarten, welche in DATEI verwendet werden, finden"
-
-#: lilypond.py:139
-msgid "generate PostScript output"
-msgstr "PostScript-Ausgabe erzeugen"
-
-#: lilypond.py:140
-msgid "generate PNG page images"
-msgstr "PNG Dateien für Seiten erzeugen"
-
-#: lilypond.py:141
-msgid "generate PS.GZ"
-msgstr "ps.gz-Ausgabe erzeugen"
-
-#: lilypond.py:142
-msgid "generate PDF output"
-msgstr "PDF-Ausgabe erzeugen"
-
-#: lilypond.py:143
-msgid "use pdflatex to generate a PDF output"
-msgstr "pdflatex verwenden, um PDF-Ausgabe zu erzeugen"
-
-#. FIXME: preview, picture; to indicate creation of a PNG?
-#: lilypond.py:145
-msgid "make a picture of the first system"
-msgstr "ein Bild des ersten Systems erzeugen"
-
-#: lilypond.py:146
-msgid "make HTML file with links to all output"
-msgstr "HTML-Datei mit Querverweisen in die gesamte Ausgabe erzeugen"
-
-#: lilypond.py:147
-msgid "KEY=VAL"
-msgstr "KEY=VAL"
-
-#: lilypond.py:147
-msgid "change global setting KEY to VAL"
-msgstr "globale Einstellung von KEY auf VAL setzen"
-
-#: lilypond.py:149 midi2ly.py:106 mup2ly.py:79 main.cc:125
-msgid "print version number"
-msgstr "Versionsnummer ausgeben"
-
-#. other globals
-#. Pdftex support
-#. # yuk.
-#. lilypond_binary = 'valgrind --suppressions=%(home)s/usr/src/guile-1.6.supp --num-callers=10 %(home)s/usr/src/lilypond/lily/out/lilypond '% { 'home' : '/home/hanwen' }
-#. only use installed binary  when we're installed too.
-#. init to empty; values here take precedence over values in the file
-#. # TODO: change name.
-#. for geometry v3
-#. Output formats that lilypond should create
-#. what a name.
-#. ly.warning (_ ("invalid value: %s") % `val`)
-#. ly.warning (_ ("invalid value: %s") % `val`)
-#: lilypond.py:232
-#, python-format
-msgid "no such setting: `%s'"
-msgstr "keine solche Einstellung: `%s'"
-
-#. 2 == user interrupt.
-#: lilypond.py:274
-#, python-format
-msgid "LilyPond crashed (signal %d)."
-msgstr "LilyPond abgestürzt (Signal %d)."
-
-#: lilypond.py:275
-msgid "Please submit a bug report to bug-lilypond@gnu.org"
-msgstr "Bitte senden Sie einen Fehlerbericht an bug-lilypond@gnu.org"
-
-#: lilypond.py:281
-#, python-format
-msgid "LilyPond failed on input file %s (exit status %d)"
-msgstr "LilyPond scheiterte an der Eingabedatei %s (Rückgabewert %d)."
-
-#: lilypond.py:284
-#, python-format
-msgid "LilyPond failed on an input file (exit status %d)"
-msgstr "LilyPond scheiterte an der Eingabedatei (Rückgabewert %d)."
-
-#: lilypond.py:285
-msgid "Continuing..."
-msgstr "Setze fort..."
-
-#. urg
-#: lilypond.py:296
-#, python-format
-msgid "Analyzing %s..."
-msgstr "Analysiere %s..."
-
-#. search only the first 10k
-#: lilypond.py:354
-#, python-format
-msgid "no LilyPond output found for `%s'"
-msgstr "keine LilyPond-Ausgabe für `%s' gefunden"
-
-#. The final \n seems important here. It ensures that the footers and taglines end up on the right page.
-#. TODO: should set textheight (enlarge) depending on papersize.
-#: lilypond.py:397
-#, python-format
-msgid "invalid value: `%s'"
-msgstr "ungültiger Wert: `%s'"
-
-#. set sane geometry width (a4-width) for linewidth = -1.
-#. who the hell is 597 ?
-#. Ugh.  (La)TeX writes progress and error messages on stdout
-#. Redirect to stderr
-#: lilypond.py:511
-msgid "LaTeX failed on the output file."
-msgstr "LaTeX scheiterte an der Ausgabedatei"
-
-#. make a preview by rendering only the 1st line
-#. of each score
-#: lilypond.py:568
-msgid ""
-"Trying create PDF, but no PFA fonts found.\n"
-"Using bitmap fonts instead. This will look bad."
-msgstr ""
-"Versuche PDF zu erzeugen, finde jedoch keine PFA-Schriftarten.\n"
-"Verwende stattdessen Bitmap-Schriftarten. Das wird übel aussehen."
-
-#. ugh. Different targets?
-#. Added as functionality to lilypond, because lilypond may well need to do this
-#. in future too.
-#. no ps header?
-#: lilypond.py:615
-#, python-format
-msgid "not a PostScript file: `%s'"
-msgstr "Keine PostScript-Datei: `%s'"
-
-#. todo
-#: lilypond.py:660
-#, python-format
-msgid "Writing HTML menu `%s'"
-msgstr "Schreibe HTML-Menü `%s'..."
-
-#. signal programming error
-#. Don't convert input files to abspath, rather prepend '.' to include
-#. path.
-#. As a neat trick, add directory part of first input file
-#. to include path.  That way you can do without the clumsy -I in:
-#. lilypond -I foe/bar/baz foo/bar/baz/baz.ly
-#: lilypond.py:769
-msgid "pseudo filter"
-msgstr "Pseudo-Filter"
-
-#: lilypond.py:772
-msgid "pseudo filter only for single input file"
-msgstr "Pseudo-Filter nur für einzelne Eingabedatei"
-
-#. Ugh, maybe make a setup () function
-#. hmmm. Wish I'd 've written comments when I wrote this.
-#. now it looks complicated.
-#: lilypond.py:806
-#, python-format
-msgid "filename should not contain spaces: `%s'"
-msgstr "Dateiname sollte keine Leerzeichen enthalten: `%s'"
-
-#. to be sure, add tmpdir *in front* of inclusion path.
-#. os.environ['TEXINPUTS'] =  tmpdir + ':' + os.environ['TEXINPUTS']
-#. We catch all exceptions, because we need to do stuff at exit:
-#. * copy any successfully generated stuff from tempdir and
-#. notify user of that
-#. * cleanout tempdir
-#. ## ARGH. This also catches python programming errors.
-#. ## this should only catch lilypond nonzero exit  status
-#. ## --hwn
-#. TODO: friendly message about LilyPond setup/failing?
-#.
-#: lilypond.py:845
-msgid "Running LilyPond failed. Rerun with --verbose for a trace."
-msgstr "LilyPond-Aufruf gescheitert. Versuchen Sie es erneut mit --verbose für ein Protokoll."
-
-#. Our LilyPond pseudo filter always outputs to 'lelie'
-#. have subsequent stages and use 'lelie' output.
-#. unless: add --tex, or --latex?
-#. TODO: friendly message about TeX/LaTeX setup,
-#. trying to run tex/latex by hand
-#: lilypond.py:886
-msgid "Failed to make PS file. Rerun with --verbose for a trace."
-msgstr "Erzeugung der PS-Datei gescheitert. Versuchen Sie es erneut mit --verbose für ein Protokoll."
-
-#. unless: add --tex, or --latex?
-#. TODO: friendly message about TeX/LaTeX setup,
-#. trying to run tex/latex by hand
-#: lilypond.py:916
-msgid "Running LaTeX falied. Rerun with --verbose for a trace."
-msgstr "LaTeX-Aufruf gescheitert. Versuchen Sie es erneut mit --verbose für ein Protokoll."
-
-#. add DEP to targets?
-#: lilypond.py:926 input-file-results.cc:68
-#, c-format, python-format
-msgid "dependencies output to `%s'..."
-msgstr "Abhängigkeiten-Ausgabe nach `%s'..."
-
-#: lilypond.py:937
-#, python-format
-msgid "%s output to <stdout>..."
-msgstr "Ausgabe von %s nach <stdout>..."
-
-#: lilypond.py:942 lilypond.py:968 includable-lexer.cc:57
-#: input-file-results.cc:191 input-file-results.cc:197 lily-guile.cc:86
-#, c-format, python-format
-msgid "can't find file: `%s'"
-msgstr "Kann Datei nicht finden: `%s'"
-
-#. Hmm, if this were a function, we could call it the except: clauses
-#: lilypond.py:965
-#, python-format
-msgid "%s output to %s..."
-msgstr "Ausgabe von %s nach %s..."
-
-#. !@PYTHON@
-#.
-#. midi2ly.py -- LilyPond midi import script
-#.
-#. source file of the GNU LilyPond music typesetter
-#.
-#. (c)  1998--2003  Han-Wen Nienhuys <hanwen@cs.uu.nl>
-#. Jan Nieuwenhuizen <janneke@gnu.org>
-#. ###############################################################
-#. Users of python modules should include this snippet.
-#.
-#. This soon to be removed for: import lilypond.lilylib as ly
-#. ###############################################################
-#. ###############################################################
-#. ############### CONSTANTS
-#. ###############################################################
-#. temp_dir = os.path.join (original_dir,  '%s.dir' % program_name)
-#. original_dir = os.getcwd ()
-#. keep_temp_dir_p = 0
-#: midi2ly.py:94
-msgid "Convert MIDI to LilyPond source."
-msgstr "MIDI nach LilyPond-Quelltext konvertieren."
-
-#: midi2ly.py:97
-msgid "print absolute pitches"
-msgstr "Absolute Tonhöhen ausgeben"
-
-#: midi2ly.py:98 midi2ly.py:103
-msgid "DUR"
-msgstr "DAUER"
-
-#: midi2ly.py:98
-msgid "quantise note durations on DUR"
-msgstr "Notenlängen auf DAUER quantisieren"
-
-#: midi2ly.py:99
-msgid "print explicit durations"
-msgstr "Explizite Notenlängen ausgeben"
-
-#: midi2ly.py:101
-msgid "ALT[:MINOR]"
-msgstr "VORZ[:MOLL]"
-
-#: midi2ly.py:101
-msgid "set key: ALT=+sharps|-flats; MINOR=1"
-msgstr "Tonart setzen: VORZ=+Kreuze|-B's; MOLL=1"
-
-#: midi2ly.py:103
-msgid "quantise note starts on DUR"
-msgstr "Notenanfänge auf DAUER quantisieren"
-
-#: midi2ly.py:104
-msgid "DUR*NUM/DEN"
-msgstr "DAUER*ZÄHLER/NENNER"
-
-# tuplet = Wertaufteilung nach: Peter Giger: Die Kunst des Rhythmus, Seite 25
-#: midi2ly.py:104
-msgid "allow tuplet durations DUR*NUM/DEN"
-msgstr "Wertaufteilungsdauern DAUER*ZÄHLER/NENNER erlauben"
-
-#: midi2ly.py:108
-msgid "treat every text as a lyric"
-msgstr "Jeden Text als Liedtext behandeln"
-
-#: midi2ly.py:136 mup2ly.py:130
-msgid " 2001--2003"
-msgstr " 2001--2003"
-
-#: midi2ly.py:141 mup2ly.py:135
-msgid ""
-"\n"
-"Distributed under terms of the GNU General Public License. It comes with\n"
-"NO WARRANTY."
-msgstr ""
-"\n"
-"Vertrieben unter den Bedingungen der GNU General Public License\n"
-"und ohne GEWÄHRLEISTUNG."
-
-#: midi2ly.py:166 mup2ly.py:162
-msgid "Exiting ... "
-msgstr "Beenden ... "
-
-#: midi2ly.py:264 mup2ly.py:261
-#, python-format
-msgid "command exited with value %d"
-msgstr "Kommando mit Rückgabewert %d beendet"
-
-#. ###############################################################
-#. END Library
-#. ###############################################################
-#. hmm
-#. major scale: do-do
-#. minor scale: la-la  (= + 5) '''
-#. By tradition, all scales now consist of a sequence
-#. of 7 notes each with a distinct name, from amongst
-#. a b c d e f g.  But, minor scales have a wide
-#. second interval at the top - the 'leading note' is
-#. sharped. (Why? it just works that way! Anything
-#. else doesn't sound as good and isn't as flexible at
-#. saying things. In medieval times, scales only had 6
-#. notes to avoid this problem - the hexachords.)
-#. So, the d minor scale is d e f g a b-flat c-sharp d
-#. - using d-flat for the leading note would skip the
-#. name c and duplicate the name d.  Why isn't c-sharp
-#. put in the key signature? Tradition. (It's also
-#. supposedly based on the Pythagorean theory of the
-#. cycle of fifths, but that really only applies to
-#. major scales...)  Anyway, g minor is g a b-flat c d
-#. e-flat f-sharp g, and all the other flat minor keys
-#. end up with a natural leading note. And there you
-#. have it.
-#. John Sankey <bf250@freenet.carleton.ca>
-#.
-#. Let's also do a-minor: a b c d e f gis a
-#.
-#. --jcn
-#. as -> gis
-#. des -> cis
-#. ges -> fis
-#. g -> fisis
-#. d -> cisis
-#. a -> gisis
-#. b -> ces
-#. e -> fes
-#. f -> eis
-#. c -> bis
-#. # FIXME: compile fix --jcn
-#. TODO: move space
-#. fis cis gis dis ais eis bis
-#. bes es as des ges ces fes
-#. urg, we should be sure that we're in a lyrics staff
-#. all include ALL_NOTES_OFF
-#. ugh, must set key while parsing
-#. because Note init uses key
-#. Better do Note.calc () at dump time?
-#. last_lyric.clocks = t - last_time
-#. hmm
-#. urg, this will barf at meter changes
-#. urg LilyPond doesn't start at c4, but
-#. remembers from previous tracks!
-#. reference_note = Note (clocks_per_4, 4*12, 0)
-#. must be in \notes mode for parsing \skip
-#: midi2ly.py:1002
-#, python-format
-msgid "%s output to `%s'..."
-msgstr "%s nach `%s' ausgeben..."
-
-#: midi2ly.py:1033
-msgid "Example:"
-msgstr "Beispiel:"
-
-#: midi2ly.py:1083
-msgid "no files specified on command line."
-msgstr "Keine Dateien auf der Kommandozeile angegeben."
-
-#. !@PYTHON@
-#. mup2ly.py -- mup input converter
-#.
-#. source file of the GNU LilyPond music typesetter
-#.
-#. (c) 2001
-#. if set, LILYPONDPREFIX must take prevalence
-#. if datadir is not set, we're doing a build and LILYPONDPREFIX
-#: mup2ly.py:70
-msgid "Convert mup to LilyPond source."
-msgstr "mup nach LilyPond-Quelltext konvertieren."
-
-#: mup2ly.py:73
-msgid "debug"
-msgstr "austesten"
-
-#: mup2ly.py:74
-msgid "define macro NAME [optional expansion EXP]"
-msgstr "Makro NAME [optionale Erweiterung EXP] definieren"
-
-#: mup2ly.py:76 main.cc:117
-msgid "write output to FILE"
-msgstr "Ausgabe in DATEI schreiben"
-
-#: mup2ly.py:77
-msgid "only pre-process"
-msgstr "nur vorverarbeiten"
-
-#. Duh.  Python style portable: cp *.EXT OUTDIR
-#. system ('cp *.%s %s' % (ext, outdir), 1)
-#. Python < 1.5.2 compatibility
-#.
-#. On most platforms, this is equivalent to
-#. `normpath(join(os.getcwd()), PATH)'.  *Added in Python version 1.5.2*
-#. if set, LILYPONDPREFIX must take prevalence
-#. if datadir is not set, we're doing a build and LILYPONDPREFIX
-#. ###############################################################
-#. END Library
-#.
-#. PMX cut and paste
-#.
-#. if not self.entries:
-#. #return '\n'
-#. #ugh ugh
-#. return '\n%s = {}\n\n' % self.idstring ()
-#. ugh
-#. def set_clef (self, letter):
-#. clstr = clef_table[letter]
-#. self.voices[0].add_nonchord (Clef (clstr))
-#. urg
-#. maybe use import copy?
-#. for i in self.pitches:
-#. ch.pitches.append (i)
-#. for i in self.scripts:
-#. ch.scripts.append (i)
-#. http://www.arkkra.com/doc/uguide/contexts.html
-#. #self.current_staffs = []
-#. duh
-#. FIXME: 1?
-#. FIXME: does key play any role in this?
-#. ch = self.current_voices[0].last_chord ()
-#. ch.basic_duration = self.current_voices[0].last_chord ().basic_duration
-#. ugh
-#. ch = self.current_voices[0].last_chord ()
-#. `;' is not a separator, chords end with ';'
-#. mup resets default duration and pitch each bar
-#. ugh: these (and lots more) should also be parsed in
-#. context staff.  we should have a class Staff_properties
-#. and parse/set all those.
-#. shortcut: set to official mup maximum (duh)
-#. self.set_staffs (40)
-#: mup2ly.py:1076
-#, python-format
-msgid "no such context: %s"
-msgstr "kein solcher Kontext: %s"
-
-#. hmm
-#. dig this: mup allows ifdefs inside macro bodies
-#. don't do nested multi-line defines
-#. duh: mup is strictly line-based, except for `define',
-#. which is `@' terminated and may span several lines
-#. don't define new macros in unactive areas
-#. To support nested multi-line define's
-#. process_function and macro_name, macro_body
-#. should become lists (stacks)
-#. The mup manual is undetermined on this
-#. and I haven't seen examples doing it.
-#.
-#. don't do nested multi-line define's
-#. writes to stdout for help2man
-#. don't call
-#. identify ()
-#. sys.stdout.flush ()
-#. handy emacs testing
-#. if not files:
-#. files = ['template.mup']
-#: mup2ly.py:1300
-#, python-format
-msgid "Processing `%s'..."
-msgstr "Verarbeite `%s'..."
-
-#: mup2ly.py:1319
-#, python-format
-msgid "Writing `%s'..."
-msgstr "Schreibe `%s'..."
-
-#: getopt-long.cc:146
-#, c-format
-msgid "option `%s' requires an argument"
-msgstr "Option `%s' benötigt ein Argument"
-
-#: getopt-long.cc:150
-#, c-format
-msgid "option `%s' doesn't allow an argument"
-msgstr "Option `%s' erlaubt kein Argument"
-
-#: getopt-long.cc:154
-#, c-format
-msgid "unrecognized option: `%s'"
-msgstr "unerkannte Option: `%s'"
-
-#: getopt-long.cc:161
-#, c-format
-msgid "invalid argument `%s' to option `%s'"
-msgstr "ungültiges Argument `%s' für Option `%s'"
-
-#: warn.cc:25
-#, c-format
-msgid "warning: %s\n"
-msgstr "Warnung: %s\n"
-
-#: warn.cc:31
-#, c-format
-msgid "error: %s\n"
-msgstr "Fehler: %s\n"
-
-#: warn.cc:44
-#, c-format
-msgid "programming error: %s (Continuing; cross thumbs)\n"
-msgstr "Programmierfehler: %s (setze fort; kreuze die Finger)\n"
-
-#: accidental.cc:202 key-signature-interface.cc:137
-#, c-format
-msgid "accidental `%s' not found"
-msgstr "Vorzeichen `%s' nicht gefunden"
-
-#: accidental-engraver.cc:171 new-accidental-engraver.cc:238
-#, c-format
-msgid "Accidental typesetting list must begin with context-name: %s"
-msgstr "Vorzeichensatzliste muss mit Kontextnamen beginnen: %s"
-
-#: accidental-engraver.cc:196 new-accidental-engraver.cc:263
-#, c-format
-msgid "unknown accidental typesetting: %s. Ignored"
-msgstr "Unbekanntes Vorzeichen: %s. Ignoriert"
-
-#: accidental-engraver.cc:212 new-accidental-engraver.cc:279
-#, c-format
-msgid "Symbol is not a parent context: %s. Ignored"
-msgstr "Symbol ist kein Elternkontext: %s. Ignoriert"
-
-#: accidental-engraver.cc:215 new-accidental-engraver.cc:282
-#, c-format
-msgid "Accidental typesetting must be pair or context-name: %s"
-msgstr "Vorzeichensatz paarweise oder mit Kontextname erwartet: %s"
-
-#: afm.cc:66
-#, c-format
-msgid "can't find character number: %d"
-msgstr "Kann Zeichennummer nicht finden: %d"
-
-#: afm.cc:81
-#, c-format
-msgid "can't find character called: `%s'"
-msgstr "Kann Zeichen nicht finden: `%s'"
-
-#: afm.cc:142
-#, c-format
-msgid "Error parsing AFM file: `%s'"
-msgstr "Fehler beim Analysieren der AFM-Datei: `%s'"
-
-#: all-font-metrics.cc:95
-#, c-format
-msgid "checksum mismatch for font file: `%s'"
-msgstr "Prüfsummenfehler für Schriftartdatei: `%s'"
-
-#: all-font-metrics.cc:97
-#, c-format
-msgid "does not match: `%s'"
-msgstr "Passt nicht: `%s'"
-
-#: all-font-metrics.cc:102
-msgid " Rebuild all .afm files, and remove all .pk and .tfm files.  Rerun with -V to show font paths."
-msgstr " Bauen Sie alle .afm-Dateien neu, und löschen Sie alle .pk- und .tfm-Dateien. Starten sie erneut mit -V um die Schriftartverzeichnisse zu zeigen."
-
-#: all-font-metrics.cc:103
-msgid ""
-"A script for removing font-files is delivered with the source-code,\n"
-"in buildscripts/clean-fonts.sh"
-msgstr ""
-"Mit buildscripts/clean-fonts.sh wird beim Quellcode ein Skript mitgeliefert,\n"
-"womit Schriftartdateien gelöscht werden können"
-
-#: all-font-metrics.cc:169
-#, c-format
-msgid "can't find font: `%s'"
-msgstr "Kann Schriftart nicht finden: `%s'"
-
-#: all-font-metrics.cc:170
-msgid "Loading default font"
-msgstr "Lade Standardschriftart"
-
-#: all-font-metrics.cc:185
-#, c-format
-msgid "can't find default font: `%s'"
-msgstr "Kann Standardschriftart nicht finden: `%s'"
-
-#: all-font-metrics.cc:186 includable-lexer.cc:59 input-file-results.cc:192
-#, c-format
-msgid "(search path: `%s')"
-msgstr "(Suchpfad: `%s')"
-
-#: all-font-metrics.cc:187
-msgid "Giving up"
-msgstr "Gebe auf"
-
-#: auto-change-iterator.cc:43 change-iterator.cc:60
-#: part-combine-music-iterator.cc:120
-msgid "Can't switch translators, I'm there already"
-msgstr "Kann Übersetzer nicht ändern, ist bereits geschehen"
-
-#: bar-check-iterator.cc:51
-#, c-format
-msgid "barcheck failed at: %s"
-msgstr "Taktüberprüfung gescheitert bei: `%s'"
-
-#: beam.cc:146
-msgid "beam has less than two visible stems"
-msgstr "Balken hat weniger als zwei sichtbare Notenhälse"
-
-#: beam.cc:151
-msgid "Beam has less than two stems. Removing beam."
-msgstr "Balken hat weniger als zwei Notenhälse. Entferne Notenhals."
-
-#: beam.cc:976
-msgid "Not sure that we can find a nice beam slope (no viable initial configuration found)."
-msgstr "Kann wahrscheinlich keine optimale Balkenneigung ermitteln (keine funktionsfähige Anfangskonfiguration gefunden)"
-
-#: beam-engraver.cc:176
-msgid "already have a beam"
-msgstr "habe bereits einen Balken"
-
-#: beam-engraver.cc:259
-msgid "unterminated beam"
-msgstr "unbegrenzter Balken"
-
-#: beam-engraver.cc:292 chord-tremolo-engraver.cc:197
-msgid "stem must have Rhythmic structure"
-msgstr "Notenhals muss rhythmische Struktur aufweisen"
-
-#: beam-engraver.cc:306
-msgid "stem doesn't fit in beam"
-msgstr "Notenhals passt nicht zum Balken"
-
-#: beam-engraver.cc:307
-msgid "beam was started here"
-msgstr "Balken wurde hier begonnen"
-
-#: break-align-interface.cc:173
-#, c-format
-msgid "No spacing entry from %s to `%s'"
-msgstr "Kein Leerraumeintrag von %s nach `%s'"
-
-#: change-iterator.cc:22
-#, c-format
-msgid "can't change `%s' to `%s'"
-msgstr "kann nicht `%s' nach `%s' ändern"
-
-#.
-#. We could change the current translator's id, but that would make
-#. errors hard to catch
-#.
-#. last->translator_id_string_  = get_change ()->change_to_id_string_;
-#.
-#: change-iterator.cc:79
-msgid "I'm one myself"
-msgstr "Ich bin selbst einer"
-
-#: change-iterator.cc:82
-msgid "none of these in my family"
-msgstr "keiner davon befindet sich in meiner Familie"
-
-#: chord-tremolo-engraver.cc:98
-#, c-format
-msgid "Chord tremolo with %d elements. Must have two elements."
-msgstr "Akkordtremolo mit %d Elementen. Benötigt zwei Elemente."
-
-#: chord-tremolo-engraver.cc:157
-msgid "unterminated chord tremolo"
-msgstr "unbegrenztes Akkord-Tremolo"
-
-#: chord-tremolo-iterator.cc:69
-msgid "no one to print a tremolos"
-msgstr "niemand vorhanden für Tremoloausgabe"
-
-#: clef.cc:64
-#, c-format
-msgid "clef `%s' not found"
-msgstr "Schlüssel `%s' not found"
-
-#: cluster.cc:131
-#, c-format
-msgid "unknown cluster style `%s'"
-msgstr "unbekannter Gruppierungsstil: `%s'"
-
-#: coherent-ligature-engraver.cc:84
-#, c-format
-msgid "gotcha: ptr=%ul"
-msgstr "erwischt: ptr=%ul"
-
-#: coherent-ligature-engraver.cc:96
-#, c-format
-msgid "distance=%f"
-msgstr "Abstand=%f"
-
-#: coherent-ligature-engraver.cc:139
-#, c-format
-msgid "Coherent_ligature_engraver: setting `spacing-increment = 0.01': ptr=%ul"
-msgstr "Coherent_ligature_engraver: setze `spacing-increment = 0.01': ptr=%ul"
-
-#: custos.cc:92
-#, c-format
-msgid "custos `%s' not found"
-msgstr "custos `%s' nicht gefunden"
-
-#: dimensions.cc:13
-msgid "NaN"
-msgstr "NaN"
-
-#: dynamic-engraver.cc:204 span-dynamic-performer.cc:82
-msgid "can't find start of (de)crescendo"
-msgstr "kann den Anfang des (De-) Crescendos nicht finden"
-
-#: dynamic-engraver.cc:216
-msgid "already have a crescendo"
-msgstr "habe bereits ein Crescendo"
-
-#: dynamic-engraver.cc:217
-msgid "already have a decrescendo"
-msgstr "habe bereits ein Decrescendo"
-
-#: dynamic-engraver.cc:220
-msgid "Cresc started here"
-msgstr "Crescendo begann hier"
-
-#: dynamic-engraver.cc:323
-msgid "unterminated (de)crescendo"
-msgstr "unbegrenztes (De-) Crescendo"
-
-#: event.cc:49
-#, c-format
-msgid "Transposition by %s makes alteration larger than two"
-msgstr "Transponieren um %s erzeugt Vorzeichen größer zwei"
-
-#: event-chord-iterator.cc:76 output-property-music-iterator.cc:27
-#, c-format
-msgid "Junking event: `%s'"
-msgstr "Ignoriere Anforderung: `%s'"
-
-#: extender-engraver.cc:94
-msgid "unterminated extender"
-msgstr "unbegrenzte Erweiterung"
-
-#: extender-engraver.cc:106
-msgid "Nothing to connect extender to on the left.  Ignoring extender event."
-msgstr "Nichts vorhanden, um die Erweiterung nach links zu verbinden. Ignoriere Erweiterungsanforderung."
-
-#: folded-repeat-iterator.cc:88
-msgid "no one to print a repeat brace"
-msgstr "niemand zur Erzeugung einer Wiederholung"
-
-#: font-interface.cc:239
-msgid "couldn't find any font satisfying "
-msgstr "konnte keine passende Schriftart finden für "
-
-#: glissando-engraver.cc:100
-msgid "Unterminated glissando."
-msgstr "unbegrenztes Glissando."
-
-#: gourlay-breaking.cc:188
-#, c-format
-msgid "Optimal demerits: %f"
-msgstr "Optimale Bewertung: %f"
-
-#: gourlay-breaking.cc:193
-msgid "No feasible line breaking found"
-msgstr "Keine praktikablen Zeilenumbrüche gefunden"
-
-#: gregorian-ligature-engraver.cc:59
-#, c-format
-msgid "\\%s ignored"
-msgstr "\\%s ignoriert"
-
-#: gregorian-ligature-engraver.cc:64
-#, c-format
-msgid "implied \\%s added"
-msgstr "implizites \\%s hinzugefügt"
-
-#.
-#. Todo: do something sensible. The grob-pq-engraver is not water
-#. tight, and stuff like tupletSpannerDuration confuses it.
-#.
-#: grob-pq-engraver.cc:130
-#, c-format
-msgid ""
-"Skipped something?\n"
-"Grob %s ended before I expected it to end."
-msgstr ""
-"Etwas übersehen?\n"
-"Grob %s endet bevor dies erwartet wurde."
-
-#: hairpin.cc:98
-msgid "decrescendo too small"
-msgstr "Decrescendo zu kurz"
-
-#: hairpin.cc:99
-msgid "crescendo too small"
-msgstr "Crescendo zu kurz"
-
-#: horizontal-bracket-engraver.cc:64
-msgid "Don't have that many brackets."
-msgstr "Habe nicht so viele Klammern."
-
-#: horizontal-bracket-engraver.cc:73
-msgid "Conflicting note group events."
-msgstr "Notengruppen im Konflikt gefunden."
-
-#: hyphen-engraver.cc:87
-msgid "unterminated hyphen"
-msgstr "unbegrenzter Bindestrich"
-
-#: hyphen-engraver.cc:99
-msgid "Nothing to connect hyphen to on the left.  Ignoring hyphen event."
-msgstr "Nichts vorhanden, um den Bindestrich nach links zu verbinden. Ignoriere Bindestrichanforderung."
-
-#: input.cc:99
-msgid "non fatal error: "
-msgstr "nicht-schwerwiegender Fehler: "
-
-#: input.cc:107 source-file.cc:146 source-file.cc:239
-msgid "position unknown"
-msgstr "Position unbekannt"
-
-#: input-file-results.cc:72 source-file.cc:54 streams.cc:38
-#, c-format
-msgid "can't open file: `%s'"
-msgstr "Kann Datei nicht öffnen: `%s'"
-
-#: input-file-results.cc:132
-msgid "Score contains errors; will not process it"
-msgstr "Noten enthalten Fehler; keine weitere Verarbeitung"
-
-#: input-file-results.cc:172
-#, c-format
-msgid "Now processing: `%s'"
-msgstr "Bearbeite: `%s'"
-
-#: key-performer.cc:96
-msgid "FIXME: key change merge"
-msgstr "FIXME: Mischen der Tonartänderungen"
-
-#: kpath.cc:76
-#, c-format
-msgid "Kpathsea couldn't find TFM file `%s'"
-msgstr "Kpathsea konnte TFM-Datei `%s' nicht finden"
-
-#: ligature-engraver.cc:159
-msgid "can't find start of ligature"
-msgstr "kann den Anfang der Bindung nicht finden"
-
-#: ligature-engraver.cc:165
-msgid "no right bound"
-msgstr "keine rechte Begrenzung"
-
-#: ligature-engraver.cc:191
-msgid "already have a ligature"
-msgstr "habe bereits eine Bindung"
-
-#: ligature-engraver.cc:207
-msgid "no left bound"
-msgstr "keine linke Begrenzung"
-
-#: ligature-engraver.cc:258
-msgid "unterminated ligature"
-msgstr "unbegrenzte Bindung"
-
-#: ligature-engraver.cc:282
-msgid "ligature may not contain rest; ignoring rest"
-msgstr "Bindung darf keine Pause enthalten; ignoriere Pause"
-
-#: ligature-engraver.cc:283
-msgid "ligature was started here"
-msgstr "Bindung wurde hier begonnen"
-
-#: lily-guile.cc:88
-#, c-format
-msgid "(load path: `%s')"
-msgstr "(lade Pfad: `%s')"
-
-#: lily-guile.cc:576
-#, c-format
-msgid "Can't find property type-check for `%s' (%s)."
-msgstr "Kann keine Eigenschafts-Typprüfung für `%s' (%s) finden."
-
-#: lily-guile.cc:579
-msgid "Perhaps you made a typing error?"
-msgstr "Ist Ihnen vielleicht einen Tippfehler unterlaufen?"
-
-#: lily-guile.cc:585
-msgid "Doing assignment anyway."
-msgstr "Führe Zuweisung trotzdem durch."
-
-#: lily-guile.cc:599
-#, c-format
-msgid "Type check for `%s' failed; value `%s' must be of type `%s'"
-msgstr "Typprüfung für `%s' gescheitert; Wert `%s' muss vom Typ `%s' sein"
-
-#: lookup.cc:173
-msgid "round filled box horizontal extent smaller than blot; decreasing blot"
-msgstr "Breite des abgerundeten Kastens kleiner als Kreisdurchmesser; verkleinere Kreis"
-
-#: lookup.cc:178
-msgid "round filled box vertical extent smaller than blot; decreasing blot"
-msgstr "Höhe des abgerundeten Kastens kleiner als Kreisdurchmesser; verkleinere Kreis"
-
-#: lyric-phrasing-engraver.cc:311
-msgid "lyrics found without any matching notehead"
-msgstr "Liedtext ohne passenden Notenkopf gefunden"
-
-#: lyric-phrasing-engraver.cc:317
-msgid "Huh? Melismatic note found to have associated lyrics."
-msgstr "Hä? Melismatische Note ohne assoziierten Liedtext gefunden."
-
-#: main.cc:106
-msgid "EXPR"
-msgstr "AUSD"
-
-#: main.cc:107
-msgid "set options, use -e '(ly-option-usage)' for help"
-msgstr "Optionen setzen, benutzen Sie -e '(ly-option-usage)' für Hilfe"
-
-#: main.cc:110
-msgid "use output format EXT"
-msgstr "Ausgabeformat EXT benutzen"
-
-#: main.cc:112
-msgid "FIELD"
-msgstr "FELD"
-
-#: main.cc:112
-msgid "write header field to BASENAME.FIELD"
-msgstr "Header-Feld in BASISNAME.FELD schreiben"
-
-#: main.cc:113
-msgid "add DIR to search path"
-msgstr "VERZ zum Suchpfad hinzufügen"
-
-#: main.cc:114
-msgid "use FILE as init file"
-msgstr "benutze DATEI als Anfangsdatei"
-
-#: main.cc:118
-msgid "prepend DIR to dependencies"
-msgstr "stelle VERZ den Abhängigkeiten voran"
-
-#.
-#. should audit again.
-#.
-#: main.cc:123
-msgid "inhibit file output naming and exporting"
-msgstr "verhindere Dateiausgabe-Benennung und -Export"
-
-#. No version number or newline here. It confuses help2man.
-#: main.cc:155
-#, c-format
-msgid "Usage: %s [OPTIONS]... FILE..."
-msgstr "Aufruf: %s [OPTIONS]... DATEI..."
-
-#: main.cc:157
-msgid "Typeset music and or play MIDI from FILE."
-msgstr "Musiksatz und/oder MIDI-Aufführung aus DATEI."
-
-#: main.cc:160
-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 ist ein Musiksatzprogramm. Es erzeugt ansprechende Notenblätter\n"
-"mit Hilfe einer Hochsprachen-Beschreibungsdatei als Eingabe. LilyPond\n"
-"ist ein Teil des GNU-Projektes.\n"
-
-#: main.cc:182
-#, c-format
-msgid ""
-"This is free software.  It is covered by the GNU General Public License,\n"
-"and you are welcome to change it and/or distribute copies of it under\n"
-"certain conditions.  Invoke as `%s --warranty' for more information.\n"
-msgstr ""
-"Dies ist freie Software. Sie wird von der GNU General Public License\n"
-"geschützt, und Sie können sie gerne ändern und/oder Kopien unter den\n"
-"gleichen Bedingungen weitergeben. Rufen Sie `%s --warranty' für weitere\n"
-"Informationen auf.\n"
-
-#: main.cc:198
-msgid "GNU LilyPond -- The music typesetter"
-msgstr "GNU LilyPond -- Das Musiksatzprogramm"
-
-#: main.cc:206
-msgid ""
-"    This program is free software; you can redistribute it and/or\n"
-"modify it under the terms of the GNU General Public License version 2\n"
-"as published by the Free Software Foundation.\n"
-"\n"
-"    This program is distributed in the hope that it will be useful,\n"
-"but WITHOUT ANY WARRANTY; without even the implied warranty of\n"
-"MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU\n"
-"General Public License for more details.\n"
-"\n"
-"    You should have received a copy (refer to the file COPYING) of the\n"
-"GNU General Public License along with this program; if not, write to\n"
-"the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,\n"
-"USA.\n"
-msgstr ""
-"    Dieses Programm ist Freie Software; Sie können es unter den\n"
-"Bedingungen der GNU General Public License Version 2, wie von der\n"
-"Free Software Foundation veröffentlicht, weitergeben und/oder modifizieren.\n"
-"\n"
-"    Dieses Programm wird in der Hoffnung, dass es nützlich sein wird,\n"
-"herausgegeben. Es wird jedoch KEINE GARANTIE übernommen. Selbst die\n"
-"implizite Garantie der MARKTGÄNGIGKEIT oder TAUGLICHKEIT FÜR EINEN\n"
-"BESTIMMTEN ZWECK kann nicht gewährleistet werden. Siehe GNU General Public\n"
-"License für weitere Details.\n"
-"\n"
-"    Sie sollten eine Kopie (siehe Datei COPYING) der GNU General Public\n"
-"License zusammen mit diesem Programm erhalten haben. Falls nicht, schreiben\n"
-"Sie bitte an die Free Software Foundation, Inc., 59 Temple Place - Suite 330,\n"
-"Boston, MA 02111-1307, USA.\n"
-
-#: mensural-ligature.cc:153
-#, c-format
-msgid "Mensural_ligature:thickness undefined on flexa %d; assuming 1.4"
-msgstr "Mensural_ligature: Dicke undefiniert bei flexa %d; nehme 1.4 an"
-
-#: mensural-ligature.cc:169
-#, c-format
-msgid "Mensural_ligature:delta-pitch undefined on flexa %d; assuming 0"
-msgstr "Mensural_ligature: delta-pitch undefiniert bei flexa %d; nehme 0 an"
-
-#: mensural-ligature.cc:182
-#, c-format
-msgid "Mensural_ligature:flexa-width undefined on flexa %d; assuming 2.0"
-msgstr "Mensural_ligature: flexa-width undefiniert bei flexa %d; nehme 2.0 an"
-
-#: mensural-ligature.cc:215
-msgid "Mensural_ligature:unexpected case fall-through"
-msgstr "Mensural_ligature: Unbehandelter case-Zweig"
-
-#: mensural-ligature.cc:225
-msgid "Mensural_ligature: (join_left == 0)"
-msgstr "Mensural_ligature: (join_left == 0)"
-
-#: mensural-ligature-engraver.cc:248 mensural-ligature-engraver.cc:397
-msgid "unexpected case fall-through"
-msgstr "unbehandelter case-Zweig"
-
-#: mensural-ligature-engraver.cc:259
-msgid "ligature with less than 2 heads -> skipping"
-msgstr "Bindung mit weniger als 2 Notenköpfen -> überspringen"
-
-#: mensural-ligature-engraver.cc:279
-msgid "can not determine pitch of ligature primitive -> skipping"
-msgstr "kann Tonhöhe der Bindung nicht ermitteln -> überspringen"
-
-#: mensural-ligature-engraver.cc:302
-msgid "prime interval within ligature -> skipping"
-msgstr "Halbtonsprung unter Bindung -> überspringen"
-
-#: mensural-ligature-engraver.cc:312
-msgid "mensural ligature: duration none of L, B, S -> skipping"
-msgstr "Mensural_ligature: Dauer weder L, B noch S -> überspringen"
-
-#: midi-item.cc:148
-#, c-format
-msgid "no such instrument: `%s'"
-msgstr "kein solches Instrument: `%s'"
-
-#: midi-item.cc:238
-msgid "silly duration"
-msgstr "sinnlose Dauer"
-
-#: midi-item.cc:251
-msgid "silly pitch"
-msgstr "sinnlose Tonhöhe"
-
-#: music-output-def.cc:111
-#, c-format
-msgid "can't find `%s' context"
-msgstr "kann Kontext `%s' nicht finden"
-
-#: my-lily-lexer.cc:169
-#, c-format
-msgid "Identifier name is a keyword: `%s'"
-msgstr "Bezeichnername ist ein Schlüsselwort: `%s'"
-
-#: my-lily-lexer.cc:191
-#, c-format
-msgid "error at EOF: %s"
-msgstr "Fehler am Dateiende (EOF): %s"
-
-#: my-lily-parser.cc:44
-msgid "Parsing..."
-msgstr "Analysiere..."
-
-#: my-lily-parser.cc:54
-msgid "Braces don't match"
-msgstr "Klammern passen nicht zueinander"
-
-#.
-#. music for the softenon children?
-#.
-#: new-fingering-engraver.cc:143
-msgid "music for the martians."
-msgstr "Musik für Marsmenschen."
-
-#: new-tie-engraver.cc:166 tie-engraver.cc:217
-msgid "lonely tie"
-msgstr "einsamer Bindebogen"
-
-#: note-collision.cc:340
-msgid "Too many clashing notecolumns.  Ignoring them."
-msgstr "Zu viele kollidierende Notenspalten. Ignoriere diese."
-
-#: note-head.cc:127
-#, c-format
-msgid "note head `%s' not found"
-msgstr "Notenkopf `%s' nicht gefunden"
-
-#: paper-def.cc:96
-#, c-format
-msgid "paper output to `%s'..."
-msgstr "Papierausgabe in `%s'..."
-
-#: paper-score.cc:78
-#, c-format
-msgid "Element count %d (spanners %d) "
-msgstr "Elementanzahl: %d (Klammern: %d)"
-
-#: paper-score.cc:83
-msgid "Preprocessing graphical objects..."
-msgstr "Vorverarbeitung der grafischen Elemente..."
-
-#: paper-score.cc:116
-msgid "Outputting Score, defined at: "
-msgstr "Notenausgabe, definiert bei: "
-
-#: parse-scm.cc:79
-msgid "GUILE signaled an error for the expression begining here"
-msgstr "GUILE signalisierte einen Fehler für den hier beginnenden Ausdruck"
-
-#.
-#. We could change the current translator's id, but that would make
-#. errors hard to catch
-#.
-#. last->translator_id_string_  = get_change ()->change_to_id_string_;
-#.
-#: part-combine-music-iterator.cc:139
-#, c-format
-msgid "I'm one myself: `%s'"
-msgstr "Ich bin selbst einer: '%s'"
-
-#: part-combine-music-iterator.cc:142
-#, c-format
-msgid "none of these in my family: `%s'"
-msgstr "Keiner davon befindet sich in meiner Familie: `%s'"
-
-#: percent-repeat-engraver.cc:109
-msgid "Don't know how to handle a percent repeat of this length."
-msgstr "Kenne kein Verfahren, eine Prozent-Wiederholung dieser Länge zu behandeln"
-
-#: percent-repeat-engraver.cc:163
-msgid "unterminated percent repeat"
-msgstr "unbegrenzte Prozentwiederholung"
-
-#: percent-repeat-iterator.cc:65
-msgid "no one to print a percent"
-msgstr "nichts bekannt, ein Prozent auszugeben"
-
-#: performance.cc:51
-msgid "Track ... "
-msgstr "Spur ... "
-
-#: performance.cc:83
-msgid "Creator: "
-msgstr "Erzeuger: "
-
-#: performance.cc:103
-msgid "at "
-msgstr ", "
-
-#: performance.cc:114
-#, c-format
-msgid "from musical definition: %s"
-msgstr "von der musikalischen Vorgabe: %s"
-
-#: performance.cc:169
-#, c-format
-msgid "MIDI output to `%s'..."
-msgstr "MIDI-Ausgabe nach `%s'..."
-
-#: phrasing-slur-engraver.cc:123
-msgid "unterminated phrasing slur"
-msgstr "nicht beendeter Phrasierungsbogen"
-
-#: phrasing-slur-engraver.cc:141
-msgid "can't find start of phrasing slur"
-msgstr "kann Anfang des Phrasierungsbogens nicht finden"
-
-#: piano-pedal-engraver.cc:235 piano-pedal-engraver.cc:250
-#: piano-pedal-engraver.cc:305 piano-pedal-performer.cc:82
-#, c-format
-msgid "can't find start of piano pedal: `%s'"
-msgstr "kann keinen Anfang für Pedal finden: `%s'"
-
-#: piano-pedal-engraver.cc:410
-msgid "unterminated pedal bracket"
-msgstr "unbegrenzte Pedalklammer"
-
-#: property-iterator.cc:97
-#, c-format
-msgid "Not a grob name, `%s'."
-msgstr "Kein Name für grafische Objekte (grob): `%s'."
-
-#: rest.cc:139
-#, c-format
-msgid "rest `%s' not found, "
-msgstr "Pause `%s' nicht gefunden, "
-
-#: rest-collision.cc:199
-msgid "too many colliding rests"
-msgstr "zu viele kollidierende Pausen"
-
-#: scm-option.cc:45
-msgid "lilypond -e EXPR means:"
-msgstr "lilypond -e AUSD bedeutet:"
-
-#: scm-option.cc:47
-msgid "  Evalute the Scheme EXPR before parsing any .ly files."
-msgstr "  Werte das Schema AUSD vor der Analyse aller .ly-Dateien aus"
-
-#: scm-option.cc:49
-msgid "  Multiple -e options may be given, they will be evaluated sequentially."
-msgstr "  Mehrere -e Optionen dürfen angegeben werden, sie werden sequentiell ausgewertet"
-
-#: scm-option.cc:51
-msgid "  The function ly-set-option allows for access to some internal variables."
-msgstr "  Die Funktion ly-set-option erlaubt Zugriff auf interne Variablen"
-
-#: scm-option.cc:53
-msgid "Usage: lilypond -e \"(ly-set-option SYMBOL VAL)\""
-msgstr "Aufruf: lilypond -e \"(ly-set-option SYMBOL WERT)\""
-
-#: scm-option.cc:55
-msgid "Where SYMBOL VAL pair is any of:"
-msgstr "Wobei das (SYMBOL,WERT)-Paar folgendermaßen definiert ist:"
-
-#: scm-option.cc:128
-msgid "Unknown internal option!"
-msgstr "Unbekannte interne Option!"
-
-#: score.cc:85
-msgid "Interpreting music..."
-msgstr "Interpretiere Musik..."
-
-#: score.cc:97
-msgid "Need music in a score"
-msgstr "Benötige Musik in der Partitur"
-
-#. should we? hampers debugging.
-#: score.cc:111
-msgid "Errors found/*, not processing score*/"
-msgstr "Fehler gefunden/*, verarbeite die Noten nicht*/"
-
-#: score.cc:118
-#, c-format
-msgid "elapsed time: %.2f seconds"
-msgstr "verstrichene Zeit: %.2f Sekunden"
-
-#: score-engraver.cc:99
-#, c-format
-msgid "can't find `%s'"
-msgstr "kann `%s' nicht finden"
-
-#: score-engraver.cc:100
-msgid "Fonts have not been installed properly.  Aborting"
-msgstr "Schriftarten wurden nicht ordnungsgemäß installiert. Abbruch"
-
-#: score-engraver.cc:205
-#, c-format
-msgid "unbound spanner `%s'"
-msgstr "ungebundene Klammer `%s'"
-
-#: script-engraver.cc:90
-#, c-format
-msgid "Don't know how to interpret articulation `%s'"
-msgstr "Unbekannte Artikulation: `%s'"
-
-#. this shouldn't happen, but let's continue anyway.
-#: separation-item.cc:53 separation-item.cc:101
-msgid "Separation_item:  I've been drinking too much"
-msgstr "Separation_item:  Habe zu viel getrunken"
-
-#: simple-spacer.cc:248
-#, c-format
-msgid "No spring between column %d and next one"
-msgstr "Kein (dynamischer) Abstand zwischen Spalte %d und Nachfolger"
-
-#: slur-engraver.cc:141
-msgid "unterminated slur"
-msgstr "unbegrenzter Bogen"
-
-#. How to shut up this warning, when Voice_devnull_engraver has
-#. eaten start event?
-#: slur-engraver.cc:159
-msgid "can't find start of slur"
-msgstr "kann den Anfang des Bogens nicht finden"
-
-#: source-file.cc:67
-#, c-format
-msgid "Huh?  Got %d, expected %d characters"
-msgstr "Hä? %d Zeichen erhalten, %d erwartet"
-
-#: spacing-spanner.cc:379
-#, c-format
-msgid "Global shortest duration is %s\n"
-msgstr "Kleinste globale Zeiteinheit ist %s\n"
-
-#: spring-smob.cc:32
-#, c-format
-msgid "#<spring smob d= %f>"
-msgstr "#<spring smob d= %f>"
-
-#: staff-symbol.cc:61
-msgid "staff symbol: indentation yields beyond end of line"
-msgstr "Staff_symbol: Einrückung reicht über das Zeilenende hinaus"
-
-#: stem.cc:118
-msgid "Weird stem size; check for narrow beams"
-msgstr "Eigenartige Notenhalslänge; überprüfen Sie auf enge Balken"
-
-#: stem.cc:611
-#, c-format
-msgid "flag `%s' not found"
-msgstr "Fähnchen `%s' nicht gefunden"
-
-#: stem.cc:624
-#, c-format
-msgid "flag stroke `%s' not found"
-msgstr "Fähnchenstrich `%s' nicht gefunden"
-
-#: stem-engraver.cc:96
-msgid "tremolo duration is too long"
-msgstr "Tremolodauer ist zu lang"
-
-#: stem-engraver.cc:124
-#, c-format
-msgid "Adding note head to incompatible stem (type = %d)"
-msgstr "Füge Notenkopf zu inkompatiblem Hals (Typ = %d) hinzu"
-
-#: stem-engraver.cc:125
-msgid "Don't you want polyphonic voices instead?"
-msgstr "Wollen Sie nicht stattdessen Mehrstimmigkeit?"
-
-#: streams.cc:34
-#, c-format
-msgid "can't create directory: `%s'"
-msgstr "Kann Verzeichnis nicht erstellen: `%s'"
-
-#: streams.cc:48
-msgid "Error syncing file (disk full?)"
-msgstr "Fehler bei Dateisynchronisation (Platte voll?)"
-
-#: system.cc:125
-#, c-format
-msgid "Element count %d."
-msgstr "Elementanzahl: %d."
-
-#: system.cc:372
-#, c-format
-msgid "Grob count %d "
-msgstr "Anzahl der grafischen Objekte (grob): %d "
-
-#: system.cc:386
-msgid "Calculating line breaks..."
-msgstr "Berechne Zeilenumbrüche..."
-
-#: text-spanner-engraver.cc:81
-msgid "can't find start of text spanner"
-msgstr "kann den Anfang der Textklammer nicht finden"
-
-#: text-spanner-engraver.cc:95
-msgid "already have a text spanner"
-msgstr "habe bereits eine Textklammer"
-
-#: text-spanner-engraver.cc:164
-msgid "unterminated text spanner"
-msgstr "unbegrenzte Textklammer"
-
-#: tfm.cc:83
-#, c-format
-msgid "can't find ascii character: %d"
-msgstr "kann folgendes ASCII-Zeichen nicht finden: %d"
-
-#. Not using ngettext's plural feature here, as this message is
-#. more of a programming error.
-#: tfm-reader.cc:108
-#, c-format
-msgid "TFM header of `%s' has only %u word (s)"
-msgstr "TFM Header von `%s' hat nur %u Wort(e)"
-
-#: tfm-reader.cc:142
-#, c-format
-msgid "%s: TFM file has %u parameters, which is more than the %u I can handle"
-msgstr "%s: TFM-Datei hat %u Parameter - mehr als die Maximalzahl %u"
-
-#: tie-performer.cc:159
-msgid "No ties were created!"
-msgstr "Es wurden keine Bindebögen erzeugt!"
-
-#: time-scaled-music-iterator.cc:25
-msgid "no one to print a tuplet start bracket"
-msgstr "niemand für die Ausgabe einer öffnenden Wertaufteilungsklammer vorhanden"
-
-#. If there is no such symbol, we default to the numbered style.
-#. (Here really with a warning!)
-#: time-signature.cc:87
-#, c-format
-msgid "time signature symbol `%s' not found; reverting to numbered style"
-msgstr "Taktart `%s' nicht gefunden; kehre zum nummerierten Stil zurück"
-
-#.
-#. Todo: should make typecheck?
-#.
-#. OTOH, Tristan Keuris writes 8/20 in his Intermezzi.
-#.
-#: time-signature-engraver.cc:57
-#, c-format
-msgid "Found strange time signature %d/%d."
-msgstr "Seltsame Taktart gefunden: %d/%d."
-
-#: translator-ctors.cc:53
-#, c-format
-msgid "unknown translator: `%s'"
-msgstr "unbekannter Übersetzer: `%s'"
-
-#: translator-def.cc:105
-msgid "Program has no such type"
-msgstr "Das Programm hat keinen solchen Typen"
-
-#: translator-def.cc:111
-#, c-format
-msgid "Already contains: `%s'"
-msgstr "Bereits enthalten: `%s'"
-
-#: translator-def.cc:112
-#, c-format
-msgid "Not adding translator: `%s'"
-msgstr "Füge Übersetzer `%s' nicht hinzu"
-
-#: translator-def.cc:229
-#, c-format
-msgid "can't find: `%s'"
-msgstr "kann `%s' nicht finden"
-
-#: translator-group.cc:158
-#, c-format
-msgid "can't find or create `%s' called `%s'"
-msgstr "kann `%s' (`%s' genannt) weder finden noch erzeugen"
-
-#: translator-group.cc:230
-#, c-format
-msgid "can't find or create: `%s'"
-msgstr "Kann `%s' weder finden noch erzeugen"
-
-#: vaticana-ligature.cc:49
-msgid "ascending vaticana style flexa"
-msgstr "aufsteigender Vaticana-Stil flexa"
-
-#: vaticana-ligature.cc:219
-msgid "Vaticana_ligature:thickness undefined; assuming 1.4"
-msgstr "Vaticana_ligature: Dicke undefiniert; nehme 1.4 an"
-
-#: vaticana-ligature.cc:233
-msgid "Vaticana_ligature:x-offset undefined; assuming 0.0"
-msgstr "Vaticana_ligature: x-offset undefiniert; nehme 0.0 an"
-
-#: vaticana-ligature.cc:258
-msgid "Vaticana_ligature: (delta_pitch == 0)"
-msgstr "Vaticana_ligature: (delta_pitch == 0)"
-
-#: vaticana-ligature.cc:271
-msgid "Vaticana_ligature:delta-pitch -> ignoring join"
-msgstr "Vaticana_ligature:delta-pitch -> ignoriere Kombination"
-
-#: vaticana-ligature-engraver.cc:477
-#, c-format
-msgid "Vaticana_ligature_engraver: setting `spacing-increment = %f': ptr=%ul"
-msgstr "Vaticana_ligature_engraver: setze `spacing-increment = %f': ptr=%ul"
-
-#: volta-engraver.cc:112
-msgid "No volta spanner to end"
-msgstr "Kein Wiederholungskasten zu beenden"
-
-#: volta-engraver.cc:123
-msgid "Already have a volta spanner.  Stopping that one prematurely."
-msgstr "Habe bereits einen Wiederholungskasten. Beende diesen frühzeitig."
-
-#: volta-engraver.cc:127
-msgid "Also have a stopped spanner.  Giving up."
-msgstr "Habe auch einen beendeten Kasten. Gebe auf."
-
-#: parser.yy:480
-msgid "Identifier should have alphabetic characters only"
-msgstr "Ein Bezeichner sollte nur aus alphabetischen Zeichen bestehen"
-
-#: parser.yy:779
-msgid "More alternatives than repeats.  Junking excess alternatives."
-msgstr "Mehr Alternativen als Wiederholungen. Verwerfe überschüssige Alternativen."
-
-#: parser.yy:861 parser.yy:868
-msgid "pplycontext takes function argument"
-msgstr "pplycontext benötigt Funktionsargument"
-
-#: parser.yy:877
-msgid "Second argument must be a symbol"
-msgstr "Das zweite Argument muss ein Symbol sein"
-
-#: parser.yy:882
-msgid "First argument must be a procedure taking one argument"
-msgstr "Das erste Argument muss eine Prozedur sein, welche ein Argument erwartet"
-
-#: parser.yy:1009
-msgid "pply takes function argument"
-msgstr "pply benötigt Funktionsargument"
-
-#: parser.yy:1501
-msgid "Expecting string as script definition"
-msgstr "Erwarte String als Skriptdefinition"
-
-#: parser.yy:1598
-msgid "Expecting musical-pitch value"
-msgstr "Erwarte musikalischen Tonhöhenwert"
-
-#: parser.yy:1609
-msgid "Must have duration object"
-msgstr "Brauche Dauer-Objekt"
-
-#: parser.yy:1618 parser.yy:1626
-msgid "Have to be in Lyric mode for lyrics"
-msgstr "Muss in Liedtextmodus sein um Liedtext setzen zu können"
-
-#: parser.yy:1798 parser.yy:1853
-#, c-format
-msgid "not a duration: %d"
-msgstr "keine gültige Dauer: %d"
-
-#: parser.yy:1949
-msgid "Have to be in Note mode for notes"
-msgstr "Muss im Notenmodus sein um Noten setzen zu können"
-
-#: parser.yy:2032
-msgid "Have to be in Chord mode for chords"
-msgstr "Muss im Akkordmodus sein um Akkorde setzen zu können"
-
-#: parser.yy:2171
-msgid "need integer number arg"
-msgstr "benötige ein Ganzzahlargument"
-
-#: parser.yy:2316
-msgid "Suspect duration found following this beam"
-msgstr "Fehlerverdächtige Dauer nach diesem Balken gefunden"
-
-#: lexer.ll:186
-msgid "EOF found inside a comment"
-msgstr "EOF innerhalb eines Kommentares gefunden"
-
-#: lexer.ll:200
-msgid "\\maininput disallowed outside init files"
-msgstr "\\maininput ist außerhalb von Init-Dateien nicht erlaubt"
-
-#: lexer.ll:224
-#, c-format
-msgid "wrong or undefined identifier: `%s'"
-msgstr "falscher oder ungültiger Bezeichner: `%s'"
-
-#. backup rule
-#: lexer.ll:233
-msgid "Missing end quote"
-msgstr "Fehlendes schließendes Anführungszeichen"
-
-#. backup rule
-#: lexer.ll:255 lexer.ll:259
-msgid "white expected"
-msgstr "weiß erwartet"
-
-#: lexer.ll:268
-msgid "Can't evaluate Scheme in safe mode"
-msgstr "Kann Schema nicht im Sicherheitsmodus auswerten"
-
-#: lexer.ll:397 lexer.ll:487
-msgid "Brace found at end of lyric.  Did you forget a space?"
-msgstr "Klammer am Ende von Liedtext gefunden. Haben Sie ein Leerzeichen vergessen?"
-
-#: lexer.ll:574
-#, c-format
-msgid "invalid character: `%c'"
-msgstr "Ungültiges Zeichen: `%c'"
-
-#: lexer.ll:651
-#, c-format
-msgid "unknown escaped string: `\\%s'"
-msgstr "Ungültige Fluchtsequenz: `\\%s'"
-
-#: lexer.ll:742
-#, c-format
-msgid "Incorrect lilypond version: %s (%s, %s)"
-msgstr "Falsche lilypond Version: %s (%s, %s)"
-
-#: lexer.ll:743
-msgid "Consider updating the input with the convert-ly script"
-msgstr "Erwägen Sie die Aktualisierung der Eingabe mit dem Skript convert-ly"
-
-#~ msgid "Run LilyPond using LaTeX for titling"
-#~ msgstr "LilyPond zum Kacheln mit LaTeX aufrufen"
-
-#~ msgid "Fetch and rebuild from latest source package"
-#~ msgstr "Hole neuestes Quelltextpaket und baue neu"
-
-#~ msgid "unpack and build in DIR [%s]"
-#~ msgstr "Auspacken und bauen in VERZ [%s]"
-
-#~ msgid "execute COMMAND, subtitute:"
-#~ msgstr "KOMMANDO ausführen, ersetzen:"
-
-#~ msgid "%b: build root"
-#~ msgstr "%b: Arbeitsverzeichnis"
-
-#~ msgid "%n: package name"
-#~ msgstr "%n: Paketname"
-
-#~ msgid "%r: release directory"
-#~ msgstr "%r: Ausgabeverzeichnis"
-
-#~ msgid "%t: tarball"
-#~ msgstr "%t: Tarball"
-
-#~ msgid "%v: package version"
-#~ msgstr "%v: Paketversion"
-
-#~ msgid "keep all output, and name the directory %s"
-#~ msgstr "alle Ausgaben aufbewahren, und das Verzeichnis %s nennen"
-
-#~ msgid "upon failure notify EMAIL[,EMAIL]"
-#~ msgstr "Bei Misserfolg EMAIL[,EMAIL] benachrichtgen"
-
-#~ msgid "remove previous build"
-#~ msgstr "Vorheriges Kompilat löschen"
-
-#~ msgid "fetch and build URL [%s]"
-#~ msgstr "Hole und baue URL [%s]"
-
-#~ msgid "Listing `%s'..."
-#~ msgstr "Liste `%s' auf..."
-
-#~ msgid "latest is: %s"
-#~ msgstr "Neuestes ist: %s"
-
-#~ msgid "relax, %s is up to date"
-#~ msgstr "Seien Sie unbesorgt, %s ist auf dem neuesten Stand"
-
-#~ msgid "Fetching `%s'..."
-#~ msgstr "Hole `%s'..."
-
-#~ msgid "Building `%s'..."
-#~ msgstr "Baue `%s'..."
-
-#~ msgid "invalid subtraction: not part of chord: %s"
-#~ msgstr "ungültige Subtraktion: nicht Teil des Akkordes: %s"
-
-#~ msgid "invalid inversion pitch: not part of chord: %s"
-#~ msgstr "ungültige Umkehrungstonhöhe: nicht Teil des Akkordes: %s"
-
-#~ msgid "This was the other key definition."
-#~ msgstr "Das war die andere Tonartdefinition"
-
-#~ msgid ", at "
-#~ msgstr ", bei "
-
-#~ msgid "Pitch arguments out of range"
-#~ msgstr "Tonhöhenargumente außerhalb des Wertebereiches"
-
-#~ msgid "(left_head == 0)"
-#~ msgstr "(left_head == 0)"
-
-#~ msgid "undefined left_head"
-#~ msgstr "undefinierter left_head"
-
-#~ msgid "(right_head == 0)"
-#~ msgstr "(right_head == 0)"
-
-#~ msgid "undefined right_head"
-#~ msgstr "undefinierter right_head"
-
-#~ msgid "junking lonely porrectus"
-#~ msgstr "ignoriere einsamen Porrectus"
-
-#~ msgid "porrectus style undefined; using mensural"
-#~ msgstr "Porrectus-Stil undefiniert; verwende Mensuralnotation"
-
-#~ msgid "stack size cur %d, max %d\n"
-#~ msgstr "Kellergröße: %d, maximal %d\n"
-
-#~ msgid "Putting slur over rest."
-#~ msgstr "Platziere Bogen über der Pause."
-
-#~ msgid "Slur over rest?"
-#~ msgstr "Bogen über der Pause?"
-
-#~ msgid "Text_spanner too small"
-#~ msgstr "Textklammer zu klein"
-
-#~ msgid "Can't specify direction for this request"
-#~ msgstr "Kann keine Richtung für diese Anforderung angeben"
diff --git a/po/es.po b/po/es.po
deleted file mode 100644
index 2fa9efd8c0..0000000000
--- a/po/es.po
+++ /dev/null
@@ -1,2517 +0,0 @@
-# Spanish translation of GNU LilyPond - http://lilypond.org
-# Copyright (C) 2002 Free Software Foundation, Inc.
-# Quique <quique@sindominio.net>, 2002.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: lilypond 1.4.13\n"
-"POT-Creation-Date: 2003-07-18 14:45+0200\n"
-"PO-Revision-Date: 2002-06-28 15:46CET\n"
-"Last-Translator: Quique <quique@sindominio.net>\n"
-"Language-Team: Spanish <es@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=ISO-8859-1\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#. this is where special info is often stored
-#. ###############################################################
-#. lilylib.py -- options and stuff
-#.
-#. source file of the GNU LilyPond music typesetter
-#.
-#. (c)  1998--2003  Han-Wen Nienhuys <hanwen@cs.uu.nl>
-#. Jan Nieuwenhuizen <janneke@gnu.org>
-#. ##  subst:\(^\|[^._a-z]\)\(abspath\|identify\|warranty\|progress\|warning\|error\|exit\|getopt_args\|option_help_str\|options_help_str\|help\|setup_temp\|read_pipe\|system\|cleanup_temp\|strip_extension\|cp_to_dir\|mkdir_p\|init\) *(
-#. ##  replace:\1ly.\2 (
-#. ## subst: \(help_summary\|keep_temp_dir_p\|option_definitions\|original_dir\|program_name\|pseudo_filter_p\|temp_dir\|verbose_p\)
-#. ###############################################################
-#. Users of python modules should include this snippet
-#. and customize variables below.
-#. We'll suffer this path init stuff as long as we don't install our
-#. python packages in <prefix>/lib/pythonx.y (and don't kludge around
-#. it as we do with teTeX on Red Hat Linux: set some environment var
-#. (PYTHONPATH) in profile)
-#. If set, LILYPONDPREFIX must take prevalence
-#. if datadir is not set, we're doing a build and LILYPONDPREFIX
-#. Customize these
-#. lilylib globals
-#: lilylib.py:60
-msgid "lilylib module"
-msgstr ""
-
-#: lilylib.py:63 lilypond-book.py:131 lilypond.py:128 midi2ly.py:100
-#: mup2ly.py:75 main.cc:111
-msgid "print this help"
-msgstr "esta ayuda"
-
-#. ###############################################################
-#. Handle bug in Python 1.6-2.1
-#.
-#. there are recursion limits for some patterns in Python 1.6 til 2.1.
-#. fix this by importing pre instead. Fix by Mats.
-#. Attempt to fix problems with limited stack size set by Python!
-#. Sets unlimited stack size. Note that the resource module only
-#. is available on UNIX.
-#: lilylib.py:114 midi2ly.py:136 mup2ly.py:130 main.cc:188 main.cc:200
-#, c-format, python-format
-msgid "Copyright (c) %s by"
-msgstr "Copyright (c) %s "
-
-#: lilylib.py:114
-msgid " 1998--2003"
-msgstr ""
-
-#: lilylib.py:118
-msgid "Distributed under terms of the GNU General Public License."
-msgstr ""
-
-#: lilylib.py:120
-msgid "It comes with NO WARRANTY."
-msgstr ""
-
-#: lilylib.py:127 midi2ly.py:150 mup2ly.py:144 input.cc:88
-msgid "warning: "
-msgstr "advertencia: "
-
-#. lots of midi files use plain text for lyric events
-#. FIXME: read from stdin when files[0] = '-'
-#: lilylib.py:130 midi2ly.py:165 midi2ly.py:1018 midi2ly.py:1083 mup2ly.py:147
-#: mup2ly.py:161 input.cc:93
-msgid "error: "
-msgstr "error: "
-
-#: lilylib.py:134
-#, fuzzy, python-format
-msgid "Exiting (%d)..."
-msgstr "Saliendo..."
-
-#: lilylib.py:194 midi2ly.py:224 mup2ly.py:220
-#, python-format
-msgid "Usage: %s [OPTIONS]... FILE"
-msgstr "Sintaxis: %s [OPTIONS]... FICHERO"
-
-#: lilylib.py:198 midi2ly.py:228 mup2ly.py:224 main.cc:166
-msgid "Options:"
-msgstr "Opciones: "
-
-#: lilylib.py:202 midi2ly.py:232 mup2ly.py:228 main.cc:172
-#, c-format, python-format
-msgid "Report bugs to %s."
-msgstr "Informar de gazapos a %s."
-
-#: lilylib.py:228
-#, fuzzy, python-format
-msgid "Opening pipe `%s'"
-msgstr "Limpiando `%s'..."
-
-#. successful pipe close returns 'None'
-#: lilylib.py:240
-#, python-format
-msgid "`%s' failed (%d)"
-msgstr ""
-
-#: lilylib.py:242 lilylib.py:289 lilypond-book.py:231 lilypond.py:512
-msgid "The error log is as follows:"
-msgstr ""
-
-#: lilylib.py:262 midi2ly.py:260 mup2ly.py:256
-#, python-format
-msgid "Invoking `%s'"
-msgstr "Invocando `%s'"
-
-#: lilylib.py:264
-#, python-format
-msgid "Running %s..."
-msgstr "Ejecutando %s..."
-
-#: lilylib.py:282
-#, python-format
-msgid "`%s' failed (%s)"
-msgstr ""
-
-#: lilylib.py:285 midi2ly.py:266 mup2ly.py:264
-msgid "(ignored)"
-msgstr "(ignorado)"
-
-#: lilylib.py:299 midi2ly.py:276 mup2ly.py:274
-#, python-format
-msgid "Cleaning %s..."
-msgstr "Limpiando %s..."
-
-#. Duh.  Python style portable: cp *.EXT OUTDIR
-#. system ('cp *.%s %s' % (ext, outdir), 1)
-#. Python < 1.5.2 compatibility
-#.
-#. On most platforms, this is equivalent to
-#. `normpath(join(os.getcwd()), PATH)'.  *Added in Python version 1.5.2*
-#. tex needs lots of memory, more than it gets by default on Debian
-#. TODO: * prevent multiple addition.
-#. * clean TEXINPUTS, MFINPUTS, TFMFONTS,
-#. as these take prevalence over $TEXMF
-#. and thus may break tex run?
-#. $TEXMF is special, previous value is already taken care of
-#. # -sOutputFile does not work with bbox?
-#. # todo:
-#. # have better algorithm for deciding when to crop page,
-#. # and when to show full page
-#: lilylib.py:458
-msgid "Removing output file"
-msgstr ""
-
-#. !@PYTHON@
-#. once upon a rainy monday afternoon.
-#.
-#. ...
-#.
-#. (not finished.)
-#. ABC standard v1.6:  http://www.gre.ac.uk/~c.walshaw/abc2mtex/abc.txt
-#.
-#. Enhancements  (Roy R. Rankin)
-#.
-#. Header section moved to top of lilypond file
-#. handle treble, treble-8, alto, and bass clef
-#. Handle voices (V: headers) with clef and part names, multiple voices
-#. Handle w: lyrics with multiple verses
-#. Handle key mode names for minor, major, phrygian, ionian, locrian, aeolian,
-#. mixolydian, lydian, dorian
-#. Handle part names from V: header
-#. Tuplets handling fixed up
-#. Lines starting with |: not discarded as header lines
-#. Multiple T: and C: header entries handled
-#. Accidental maintained until next bar check
-#. Silent rests supported
-#. articulations fermata, upbow, downbow, ltoe, accent, tenuto supported
-#. Chord strings([-^]"string") can contain a '#'
-#. Header fields enclosed by [] in notes string processed
-#. W: words output after tune as abc2ps does it (they failed before)
-#. Enhancements (Laura Conrad)
-#.
-#. Barring now preserved between ABC and lilypond
-#. the default placement for text in abc is above the staff.
-#. %%LY now supported.
-#. \breve and \longa supported.
-#. M:none doesn't crash lily.
-#. Limitations
-#.
-#. Multiple tunes in single file not supported
-#. Blank T: header lines should write score and open a new score
-#. Not all header fields supported
-#. ABC line breaks are ignored
-#. Block comments generate error and are ignored
-#. Postscript commands are ignored
-#. lyrics not resynchronized by line breaks (lyrics must fully match notes)
-#. %%LY slyrics can't be directly before a w: line.
-#. ???
-#. TODO:
-#.
-#. Convert to new chord styles.
-#.
-#. UNDEF -> None
-#.
-#. uGUHGUHGHGUGH
-#. UGH
-#. treble8 is used by abctab2ps; -8va is used by barfly,
-#. and by my patch to abc2ps. If there's ever a standard
-#. about this we'll support that.
-#. find keywork
-#. assume that Q takes the form "Q:1/4=120"
-#. There are other possibilities, but they are deprecated
-#. outf.write ("\t\t\\consists Staff_margin_engraver\n")
-#. pitch manipulation. Tuples are (name, alteration).
-#. 0 is (central) C. Alteration -1 is a flat, Alteration +1 is a sharp
-#. pitch in semitones.
-#. abc to lilypond key mode names
-#. semitone shifts for key mode names
-#. latex does not like naked #'s
-#. latex does not like naked "'s
-#. break lyrics to words and put "'s around words containing numbers and '"'s
-#. escape "
-#. _ causes probs inside ""
-#. _ to ' _ '
-#. split words with -
-#. unless \-
-#. ~ to space('_')
-#. * to to space
-#. latex does not like naked #'s
-#. put numbers and " and ( into quoted string
-#. insure space between lines
-#. title
-#. strip trailing blanks
-#. Meter
-#. KEY
-#. seperate clef info
-#. there may or may not be a space
-#. between the key letter and the mode
-#. ugh.
-#. ugh.
-#. Notes
-#. Origin
-#. Reference Number
-#. Area
-#. History
-#. Book
-#. Composer
-#. Default note length
-#. Voice
-#. Words
-#. vocals
-#. tempo
-#. we use in this order specified accidental, active accidental for bar,
-#. active accidental for key
-#. (num /  den)  / defaultlen < 1/base
-#. return (str, num,den,dots)
-#. ignore slide
-#. ignore roll
-#. s7m2 input doesnt care about spaces
-#.
-#. remember accidental for rest of bar
-#.
-#. get accidental set in this bar or UNDEF if not set
-#. WAT IS ABC EEN ONTZETTENDE PROGRAMMEERPOEP  !
-#. failed; not a note!
-#. escape '#'s
-#.
-#. |] thin-thick double bar line
-#. || thin-thin double bar line
-#. [| thick-thin double bar line
-#. :| left repeat
-#. |: right repeat
-#. :: left-right repeat
-#. |1 volta 1
-#. |2 volta 2
-#. first try the longer one
-#. bracket escape
-#. the nobarlines option is necessary for an abc to lilypond translator for
-#. exactly the same reason abc2midi needs it: abc requires the user to enter
-#. the note that will be printed, and MIDI and lilypond expect entry of the
-#. pitch that will be played.
-#.
-#. In standard 19th century musical notation, the algorithm for translating
-#. between printed note and pitch involves using the barlines to determine
-#. the scope of the accidentals.
-#.
-#. Since ABC is frequently used for music in styles that do not use this
-#. convention, such as most music written before 1700, or ethnic music in
-#. non-western scales, it is necessary to be able to tell a translator that
-#. the barlines should not affect its interpretation of the pitch.
-#. write other kinds of appending  if we ever need them.
-#. add comments to current voice
-#. Try nibbling characters off until the line doesn't change.
-#. dump_global (outf)
-#. !@PYTHON@
-#.
-#. convert-ly.py -- Update old LilyPond input files (fix name?)
-#.
-#. source file of the GNU LilyPond music typesetter
-#.
-#. (c)  1998--2003  Han-Wen Nienhuys <hanwen@cs.uu.nl>
-#. Jan Nieuwenhuizen <janneke@gnu.org>
-#. TODO
-#. use -f and -t for -s output
-#. NEWS
-#. 0.2
-#. - rewrite in python
-#. Did we ever have \mudela-version?  I doubt it.
-#. lilypond_version_re_str = '\\\\version *\"(.*)\"'
-#. ###########################
-#. need new a namespace
-#. raise FatalConversionError()
-#. need new a namespace
-#. harmful to current .lys
-#. str = re.sub ('\\\\key([^;]+);', '\\\\accidentals \\1;', str)
-#. raise FatalConversionError()
-#. raise FatalConversionError()
-#. raise FatalConversionError()
-#. TODO: lots of other syntax change should be done here as well
-#. Ugh, but meaning of \stemup changed too
-#. maybe we should do \stemup -> \stemUp\slurUp\tieUp ?
-#. I don't know exactly when these happened...
-#. ugh, we loose context setting here...
-#. (lacks capitalisation slur -> Slur)
-#. # dynamic..
-#. TODO: add lots of these
-#. ugh
-#. old fix
-#. Make sure groups of more than one ; have space before
-#. them, so that non of them gets removed by next rule
-#. Only remove ; that are not after spaces, # or ;
-#. Otherwise  we interfere with Scheme comments,
-#. which is badbadbad.
-#. 40 ?
-#. ###############################
-#. END OF CONVERSIONS
-#. ###############################
-#. !@PYTHON@
-#. info mostly taken from looking at files. See also
-#. http://lilypond.org/wiki/?EnigmaTransportFormat
-#. This supports
-#.
-#. * notes
-#. * rests
-#. * ties
-#. * slurs
-#. * lyrics
-#. * articulation
-#. * grace notes
-#. * tuplets
-#.
-#. todo:
-#. * slur/stem directions
-#. * voices (2nd half of frame?)
-#. * more intelligent lyrics
-#. * beams (better use autobeam?)
-#. * more robust: try entertainer.etf (freenote)
-#. * dynamics
-#. * empty measures (eg. twopt03.etf from freenote)
-#.
-#. uGUHGUHGHGUGH
-#. notename 0 == central C
-#. represent pitches as (notename, alteration), relative to C-major scale
-#. a fifth up
-#. should cache this.
-#. flag1 isn't all that interesting.
-#. 3: '>',
-#. 18: '\arpeggio' ,
-#. do grace notes.
-#. ugh.
-#. we don't attempt voltas since they fail easily.
-#. and g.repeat_bar == '|:' or g.repeat_bar == ':|:' or g.bracket:
-#. 4 layers.
-#. let's not do this: this really confuses when eE happens to be before  a ^text.
-#. if last_tag and last_indices:
-#. etf_file_dict[last_tag][last_indices].append (l)
-#. # do it
-#. staff-spec
-#. should use \addlyrics ?
-#. !@PYTHON@
-#. vim: set noexpandtab:
-#. This is was the idea for handling of comments:
-#. Multiline comments, @ignore .. @end ignore is scanned for
-#. in read_doc_file, and the chunks are marked as 'ignore', so
-#. lilypond-book will not touch them any more. The content of the
-#. chunks are written to the output file. Also 'include' and 'input'
-#. regex has to check if they are commented out.
-#.
-#. Then it is scanned for 'lilypond', 'lilypond-file' and 'lilypond-block'.
-#. These three regex's has to check if they are on a commented line,
-#. % for latex, @c for texinfo.
-#.
-#. Then lines that are commented out with % (latex) and @c (Texinfo)
-#. are put into chunks marked 'ignore'. This cannot be done before
-#. searching for the lilypond-blocks because % is also the comment character
-#. for lilypond.
-#.
-#. The the rest of the rexeces are searched for. They don't have to test
-#. if they are on a commented out line.
-#. ###############################################################
-#. Users of python modules should include this snippet
-#. and customize variables below.
-#. We'll suffer this path init stuff as long as we don't install our
-#. python packages in <prefix>/lib/pythonx.y (and don't kludge around
-#. it as we do with teTeX on Red Hat Linux: set some environment var
-#. (PYTHONPATH) in profile)
-#. If set, LILYPONDPREFIX must take prevalence
-#. if datadir is not set, we're doing a build and LILYPONDPREFIX
-#. Customize these
-#. if __name__ == '__main__':
-#. lilylib globals
-#. temp_dir = os.path.join (original_dir,  '%s.dir' % program_name)
-#. urg
-#. # FIXME
-#. # do -P or -p by default?
-#. #help_summary = _ ("Run LilyPond using LaTeX for titling")
-#: lilypond-book.py:120
-msgid "Process LilyPond snippets in hybrid html, LaTeX or texinfo document"
-msgstr ""
-
-#. another bug in option parser: --output=foe is taken as an abbreviation
-#. for --output-format
-#: lilypond-book.py:125 main.cc:110
-msgid "EXT"
-msgstr "EXT"
-
-#: lilypond-book.py:125
-#, fuzzy
-msgid "use output format EXT (texi [default], texi-html, latex, html)"
-msgstr "utilizar el formato de salida EXT (scm, ps, tex o as) "
-
-#: lilypond-book.py:126 lilypond-book.py:127 lilypond-book.py:129
-#: lilypond-book.py:130
-#, fuzzy
-msgid "DIM"
-msgstr "DIR"
-
-#: lilypond-book.py:126
-msgid "default fontsize for music.  DIM is assumed to be in points"
-msgstr ""
-
-#: lilypond-book.py:127
-msgid "deprecated, use --default-music-fontsize"
-msgstr ""
-
-#: lilypond-book.py:128
-msgid "OPT"
-msgstr ""
-
-#: lilypond-book.py:128
-msgid "pass OPT quoted to the lilypond command line"
-msgstr ""
-
-#: lilypond-book.py:129
-msgid "force fontsize for all inline lilypond. DIM is assumed be to in points"
-msgstr ""
-
-#: lilypond-book.py:130
-msgid "deprecated, use --force-music-fontsize"
-msgstr ""
-
-#: lilypond-book.py:132 lilypond.py:130 main.cc:113 main.cc:118
-msgid "DIR"
-msgstr "DIR"
-
-#: lilypond-book.py:132
-msgid "include path"
-msgstr ""
-
-#: lilypond-book.py:133
-#, fuzzy
-msgid "write dependencies"
-msgstr "añadir el prefijo DIR a las dependencias"
-
-#: lilypond-book.py:134
-msgid "PREF"
-msgstr ""
-
-#: lilypond-book.py:134
-#, fuzzy
-msgid "prepend PREF before each -M dependency"
-msgstr "añadir el prefijo DIR a las dependencias"
-
-#: lilypond-book.py:135
-#, fuzzy
-msgid "don't run lilypond"
-msgstr "no ejecutar LilyPond"
-
-#: lilypond-book.py:136
-msgid "don't generate pictures"
-msgstr ""
-
-#: lilypond-book.py:137
-msgid "strip all lilypond blocks from output"
-msgstr ""
-
-#: lilypond-book.py:138 lilypond-book.py:139 lilypond.py:135 lilypond.py:136
-#: midi2ly.py:102 main.cc:114 main.cc:117
-msgid "FILE"
-msgstr "FICHERO"
-
-#: lilypond-book.py:138
-msgid "filename main output file"
-msgstr ""
-
-#: lilypond-book.py:139
-msgid "where to place generated files"
-msgstr ""
-
-#: lilypond-book.py:140 lilypond.py:137
-msgid "RES"
-msgstr ""
-
-#: lilypond-book.py:141 lilypond.py:138
-msgid "set the resolution of the preview to RES"
-msgstr ""
-
-#: lilypond-book.py:142 lilypond.py:148 midi2ly.py:105 mup2ly.py:78 main.cc:126
-msgid "be verbose"
-msgstr "ser prolijo"
-
-
-#: lilypond-book.py:143
-#, fuzzy
-msgid "print version information"
-msgstr "mostrar número de versión"
-
-#: lilypond-book.py:144 lilypond.py:150 midi2ly.py:107 mup2ly.py:80 main.cc:127
-msgid "show warranty and copyright"
-msgstr "mostrar los avisos de garantía y de copyright"
-
-#. format specific strings, ie. regex-es for input, and % strings for output
-#. global variables
-#. lilypond_binary = 'valgrind --suppressions=/home/hanwen/usr/src/guile-1.6.supp  --num-callers=10 /home/hanwen/usr/src/lilypond/lily/out/lilypond'
-#. only use installed binary  when we're installed too.
-#. only use installed binary  when we're installed too.
-#. ###############################################################
-#. Dimension handling for LaTeX.
-#.
-#. Ugh.  (La)TeX writes progress and error messages on stdout
-#. Redirect to stderr
-#: lilypond-book.py:230
-msgid "LaTeX failed."
-msgstr ""
-
-#. URG see lilypond
-#. Convert numeric values, with or without specific dimension, to floats.
-#. Keep other strings
-#. ###############################################################
-#. How to output various structures.
-#. # maybe <hr> ?
-#. Verbatim text is always finished with \n.  FIXME: For HTML,
-#. this newline should be removed.
-#. Verbatim text is always finished with \n.  FIXME: For HTML,
-#. this newline should be removed.
-#. # Ugh we need to differentiate on origin:
-#. # lilypond-block origin wants an extra <p>, but
-#. # inline music doesn't.
-#. # possibly other center options?
-#. verbatim text is always finished with \n
-#. verbatim text is always finished with \n
-#. verbatim text is always finished with \n
-#. verbatim text is always finished with \n
-#. do some tweaking: @ is needed in some ps stuff.
-#.
-#. ugh, the <p> below breaks inline images...
-#. clumsy workaround for python 2.2 pre bug.
-#. ###############################################################
-#. Recognize special sequences in the input
-#. Warning: This uses extended regular expressions.  Tread with care.
-#.
-#. legenda
-#.
-#. (?P<name>regex) -- assign result of REGEX to NAME
-#. *? -- match non-greedily.
-#. (?m) -- multiline regex: make ^ and $ match at each line
-#. (?s) -- make the dot match all characters including newline
-#. why do we have distinction between @mbinclude and @include?
-#. # we'd like to catch and reraise a more
-#. # detailed error, but alas, the exceptions
-#. # changed across the 1.5/2.1 boundary.
-#. ughUGH not original options
-#. First we want to scan the \documentclass line
-#. it should be the first non-comment line.
-#. The only thing we really need to know about the \documentclass line
-#. is if there are one or two columns to begin with.
-#. Then we add everything before \begin{document} to
-#. paperguru.m_document_preamble so that we can later write this header
-#. to a temporary file in find_latex_dims() to find textwidth.
-#. this is not bulletproof..., it checks the first 10 chunks
-#. newchunks.extend (func (m))
-#. python 1.5 compatible:
-#. we have to check for verbatim before doing include,
-#. because we don't want to include files that are mentioned
-#. inside a verbatim environment
-#. ugh fix input
-#. # Hmm, we should hash only lilypond source, and skip the
-#. # %options are ...
-#. # comment line
-#. # todo: include path, but strip
-#. # first part of the path.
-#. format == 'html'
-#. ugh rename
-#. Count sections/chapters.
-#. # TODO: do something like
-#. # this for texinfo/latex as well ?
-#. ugh
-#. fixme: be sys-independent.
-#.
-#. Ugh, fixing up dependencies for .tex generation
-#.
-#. Ugh.  (La)TeX writes progress and error messages on stdout
-#. Redirect to stderr
-#. # There used to be code to write .tex dependencies, but
-#. # that is silly: lilypond-book has its own dependency scheme
-#. # to ensure that all lily-XXX.tex files are there
-#. # TODO: put file name in front of texidoc.
-#. #
-#. # what's this? Docme --hwn
-#. #
-#. #docme: why global?
-#. Do It.
-#. should chmod -w
-#: lilypond-book.py:1557 lilypond.py:673 midi2ly.py:1018
-#, python-format
-msgid "getopt says: `%s'"
-msgstr "getopt() dice: `%s'"
-
-#. HACK
-#. status = os.system ('lilypond -w')
-#: lilypond-book.py:1630 lilypond.py:777
-#, fuzzy
-msgid "no files specified on command line"
-msgstr "no se ha especificado ningún fichero en la línea de órdenes."
-
-#.
-#. Petr, ik zou willen dat ik iets zinvoller deed,
-#. maar wat ik kan ik doen, het verandert toch niets?
-#. --hwn 20/aug/99
-#. !@PYTHON@
-#.
-#. lilypond.py -- Run LilyPond, add titles to bare score, generate printable
-#. document
-#. Invokes: lilypond, latex (or pdflatex), dvips, ps2pdf, gs
-#.
-#. source file of the GNU LilyPond music typesetter
-#.
-#. (c)  1998--2003  Han-Wen Nienhuys <hanwen@cs.uu.nl>
-#. Jan Nieuwenhuizen <janneke@gnu.org>
-#. This is the third incarnation of lilypond.
-#.
-#. Earlier incarnations of lilypond were written by
-#. Jeffrey B. Reed<daboys@austin.rr.com> (Python version)
-#. Jan Arne Fagertun <Jan.A.Fagertun@@energy.sintef.no> (Bourne shell script)
-#.
-#. Note: gettext work best if we use ' for docstrings and "
-#. for gettextable strings.
-#. --> DO NOT USE ''' for docstrings.
-#. ###############################################################
-#. Users of python modules should include this snippet
-#. and customize variables below.
-#. We'll suffer this path init stuff as long as we don't install our
-#. python packages in <prefix>/lib/pythonx.y (and don't kludge around
-#. it as we do with teTeX on Red Hat Linux: set some environment var
-#. (PYTHONPATH) in profile)
-#. If set, LILYPONDPREFIX must take prevalence
-#. if datadir is not set, we're doing a build and LILYPONDPREFIX
-#. Customize these
-#. if __name__ == '__main__':
-#. lilylib globals
-#. # FIXME
-#. # do -P or -p by default?
-#. #help_summary = _ ("Run LilyPond using LaTeX for titling")
-#: lilypond.py:121
-msgid "Run LilyPond, add titles, generate printable document."
-msgstr ""
-
-#: lilypond.py:127 main.cc:115
-msgid "write Makefile dependencies for every input file"
-msgstr "crear las dependencias para Makefile de cada fichero de entrada"
-
-#: lilypond.py:129
-msgid "print even more output"
-msgstr ""
-
-#: lilypond.py:130
-msgid "add DIR to LilyPond's search path"
-msgstr "añadir DIR a la ruta de búsqueda de LilyPond"
-
-#: lilypond.py:132
-#, fuzzy, python-format
-msgid "keep all output, output to directory %s.dir"
-msgstr "conservar todas las salidas, y nombrar el directorio %s.dir"
-
-#: lilypond.py:133
-msgid "don't run LilyPond"
-msgstr "no ejecutar LilyPond"
-
-#: lilypond.py:134 main.cc:116
-msgid "produce MIDI output only"
-msgstr "producir solamente una salida MIDI"
-
-#: lilypond.py:135 midi2ly.py:102
-msgid "write output to FILE"
-msgstr "escribir la salida en el FICHERO"
-
-#: lilypond.py:136
-msgid "find pfa fonts used in FILE"
-msgstr "buscar las fuentes pfa utilizadas en FICHERO"
-
-#: lilypond.py:139
-msgid "generate PostScript output"
-msgstr "generar una salida PostScript"
-
-#: lilypond.py:140
-msgid "generate PNG page images"
-msgstr ""
-
-#: lilypond.py:141
-#, fuzzy
-msgid "generate PS.GZ"
-msgstr "generar una salida PostScript"
-
-#: lilypond.py:142
-#, fuzzy
-msgid "generate PDF output"
-msgstr "generar una salida PostScript"
-
-#: lilypond.py:143
-msgid "use pdflatex to generate a PDF output"
-msgstr ""
-
-#. FIXME: preview, picture; to indicate creation of a PNG?
-#: lilypond.py:145
-msgid "make a picture of the first system"
-msgstr ""
-
-#: lilypond.py:146
-msgid "make HTML file with links to all output"
-msgstr ""
-
-#: lilypond.py:147
-msgid "KEY=VAL"
-msgstr "CLAVE=VALOR"
-
-#: lilypond.py:147
-msgid "change global setting KEY to VAL"
-msgstr "cambiar el parámetro global CLAVE a VALOR"
-
-#: lilypond.py:149 midi2ly.py:106 mup2ly.py:79 main.cc:125
-msgid "print version number"
-msgstr "mostrar número de versión"
-
-#. other globals
-#. Pdftex support
-#. # yuk.
-#. lilypond_binary = 'valgrind --suppressions=%(home)s/usr/src/guile-1.6.supp --num-callers=10 %(home)s/usr/src/lilypond/lily/out/lilypond '% { 'home' : '/home/hanwen' }
-#. only use installed binary  when we're installed too.
-#. init to empty; values here take precedence over values in the file
-#. # TODO: change name.
-#. for geometry v3
-#. Output formats that lilypond should create
-#. what a name.
-#. ly.warning (_ ("invalid value: %s") % `val`)
-#. ly.warning (_ ("invalid value: %s") % `val`)
-#: lilypond.py:232
-#, fuzzy, python-format
-msgid "no such setting: `%s'"
-msgstr "no existe tal parámetro: %s"
-
-#. 2 == user interrupt.
-#: lilypond.py:274
-#, python-format
-msgid "LilyPond crashed (signal %d)."
-msgstr ""
-
-#: lilypond.py:275
-msgid "Please submit a bug report to bug-lilypond@gnu.org"
-msgstr ""
-
-#: lilypond.py:281
-#, python-format
-msgid "LilyPond failed on input file %s (exit status %d)"
-msgstr ""
-
-#: lilypond.py:284
-#, python-format
-msgid "LilyPond failed on an input file (exit status %d)"
-msgstr ""
-
-#: lilypond.py:285
-#, fuzzy
-msgid "Continuing..."
-msgstr "Ejecutando %s..."
-
-#. urg
-#: lilypond.py:296
-#, python-format
-msgid "Analyzing %s..."
-msgstr "Analizando %s..."
-
-#. search only the first 10k
-#: lilypond.py:354
-#, fuzzy, python-format
-msgid "no LilyPond output found for `%s'"
-msgstr "no se ha encontrado ninguna salida de lilypond para %s"
-
-#. The final \n seems important here. It ensures that the footers and taglines end up on the right page.
-#. TODO: should set textheight (enlarge) depending on papersize.
-#: lilypond.py:397
-#, fuzzy, python-format
-msgid "invalid value: `%s'"
-msgstr "valor no válido: %s"
-
-#. set sane geometry width (a4-width) for linewidth = -1.
-#. who the hell is 597 ?
-#. Ugh.  (La)TeX writes progress and error messages on stdout
-#. Redirect to stderr
-#: lilypond.py:511
-msgid "LaTeX failed on the output file."
-msgstr ""
-
-#. make a preview by rendering only the 1st line
-#. of each score
-#: lilypond.py:568
-msgid ""
-"Trying create PDF, but no PFA fonts found.\n"
-"Using bitmap fonts instead. This will look bad."
-msgstr ""
-
-#. ugh. Different targets?
-#. Added as functionality to lilypond, because lilypond may well need to do this
-#. in future too.
-#. no ps header?
-#: lilypond.py:615
-#, python-format
-msgid "not a PostScript file: `%s'"
-msgstr "no es un fichero PostScript: `%s'"
-
-#. todo
-#: lilypond.py:660
-#, fuzzy, python-format
-msgid "Writing HTML menu `%s'"
-msgstr "Escribiendo `%s'..."
-
-#. signal programming error
-#. Don't convert input files to abspath, rather prepend '.' to include
-#. path.
-#. As a neat trick, add directory part of first input file
-#. to include path.  That way you can do without the clumsy -I in:
-#. lilypond -I foe/bar/baz foo/bar/baz/baz.ly
-#: lilypond.py:769
-msgid "pseudo filter"
-msgstr ""
-
-#: lilypond.py:772
-msgid "pseudo filter only for single input file"
-msgstr ""
-
-#. Ugh, maybe make a setup () function
-#. hmmm. Wish I'd 've written comments when I wrote this.
-#. now it looks complicated.
-#: lilypond.py:806
-#, python-format
-msgid "filename should not contain spaces: `%s'"
-msgstr "el nombre del fichero no debería contener espacios: `%s'"
-
-#. to be sure, add tmpdir *in front* of inclusion path.
-#. os.environ['TEXINPUTS'] =  tmpdir + ':' + os.environ['TEXINPUTS']
-#. We catch all exceptions, because we need to do stuff at exit:
-#. * copy any successfully generated stuff from tempdir and
-#. notify user of that
-#. * cleanout tempdir
-#. ## ARGH. This also catches python programming errors.
-#. ## this should only catch lilypond nonzero exit  status
-#. ## --hwn
-#. TODO: friendly message about LilyPond setup/failing?
-#.
-#: lilypond.py:845
-msgid "Running LilyPond failed. Rerun with --verbose for a trace."
-msgstr ""
-
-#. Our LilyPond pseudo filter always outputs to 'lelie'
-#. have subsequent stages and use 'lelie' output.
-#. unless: add --tex, or --latex?
-#. TODO: friendly message about TeX/LaTeX setup,
-#. trying to run tex/latex by hand
-#: lilypond.py:886
-msgid "Failed to make PS file. Rerun with --verbose for a trace."
-msgstr ""
-
-#. unless: add --tex, or --latex?
-#. TODO: friendly message about TeX/LaTeX setup,
-#. trying to run tex/latex by hand
-#: lilypond.py:916
-msgid "Running LaTeX falied. Rerun with --verbose for a trace."
-msgstr ""
-
-#. add DEP to targets?
-#: lilypond.py:926 input-file-results.cc:68
-#, c-format, python-format
-msgid "dependencies output to `%s'..."
-msgstr "dependencias producidas en `%s'..."
-
-#: lilypond.py:937
-#, fuzzy, python-format
-msgid "%s output to <stdout>..."
-msgstr "%s producidos en `%s'..."
-
-#: lilypond.py:942 lilypond.py:968 includable-lexer.cc:57
-#: input-file-results.cc:191 input-file-results.cc:197 lily-guile.cc:86
-#, c-format, python-format
-msgid "can't find file: `%s'"
-msgstr "no puedo encontrar el fichero: `%s'"
-
-#. Hmm, if this were a function, we could call it the except: clauses
-#: lilypond.py:965
-#, fuzzy, python-format
-msgid "%s output to %s..."
-msgstr "%s producidos en `%s'..."
-
-#. !@PYTHON@
-#.
-#. midi2ly.py -- LilyPond midi import script
-#.
-#. source file of the GNU LilyPond music typesetter
-#.
-#. (c)  1998--2003  Han-Wen Nienhuys <hanwen@cs.uu.nl>
-#. Jan Nieuwenhuizen <janneke@gnu.org>
-#. ###############################################################
-#. Users of python modules should include this snippet.
-#.
-#. This soon to be removed for: import lilypond.lilylib as ly
-#. ###############################################################
-#. ###############################################################
-#. ############### CONSTANTS
-#. ###############################################################
-#. temp_dir = os.path.join (original_dir,  '%s.dir' % program_name)
-#. original_dir = os.getcwd ()
-#. keep_temp_dir_p = 0
-#: midi2ly.py:94
-msgid "Convert MIDI to LilyPond source."
-msgstr ""
-
-#: midi2ly.py:97
-msgid "print absolute pitches"
-msgstr ""
-
-#: midi2ly.py:98 midi2ly.py:103
-msgid "DUR"
-msgstr "DUR"
-
-#: midi2ly.py:98
-msgid "quantise note durations on DUR"
-msgstr ""
-
-#: midi2ly.py:99
-msgid "print explicit durations"
-msgstr ""
-
-#: midi2ly.py:101
-#, fuzzy
-msgid "ALT[:MINOR]"
-msgstr "ACC[:MENOR]"
-
-#: midi2ly.py:101
-msgid "set key: ALT=+sharps|-flats; MINOR=1"
-msgstr ""
-
-#: midi2ly.py:103
-msgid "quantise note starts on DUR"
-msgstr ""
-
-#: midi2ly.py:104
-msgid "DUR*NUM/DEN"
-msgstr ""
-
-#: midi2ly.py:104
-msgid "allow tuplet durations DUR*NUM/DEN"
-msgstr ""
-
-#: midi2ly.py:108
-msgid "treat every text as a lyric"
-msgstr ""
-
-#: midi2ly.py:136 mup2ly.py:130
-msgid " 2001--2003"
-msgstr ""
-
-#: midi2ly.py:141 mup2ly.py:135
-msgid ""
-"\n"
-"Distributed under terms of the GNU General Public License. It comes with\n"
-"NO WARRANTY."
-msgstr ""
-
-#: midi2ly.py:166 mup2ly.py:162
-msgid "Exiting ... "
-msgstr "Saliendo..."
-
-#: midi2ly.py:264 mup2ly.py:261
-#, python-format
-msgid "command exited with value %d"
-msgstr "fin de la orden con valor %d"
-
-#. ###############################################################
-#. END Library
-#. ###############################################################
-#. hmm
-#. major scale: do-do
-#. minor scale: la-la  (= + 5) '''
-#. By tradition, all scales now consist of a sequence
-#. of 7 notes each with a distinct name, from amongst
-#. a b c d e f g.  But, minor scales have a wide
-#. second interval at the top - the 'leading note' is
-#. sharped. (Why? it just works that way! Anything
-#. else doesn't sound as good and isn't as flexible at
-#. saying things. In medieval times, scales only had 6
-#. notes to avoid this problem - the hexachords.)
-#. So, the d minor scale is d e f g a b-flat c-sharp d
-#. - using d-flat for the leading note would skip the
-#. name c and duplicate the name d.  Why isn't c-sharp
-#. put in the key signature? Tradition. (It's also
-#. supposedly based on the Pythagorean theory of the
-#. cycle of fifths, but that really only applies to
-#. major scales...)  Anyway, g minor is g a b-flat c d
-#. e-flat f-sharp g, and all the other flat minor keys
-#. end up with a natural leading note. And there you
-#. have it.
-#. John Sankey <bf250@freenet.carleton.ca>
-#.
-#. Let's also do a-minor: a b c d e f gis a
-#.
-#. --jcn
-#. as -> gis
-#. des -> cis
-#. ges -> fis
-#. g -> fisis
-#. d -> cisis
-#. a -> gisis
-#. b -> ces
-#. e -> fes
-#. f -> eis
-#. c -> bis
-#. # FIXME: compile fix --jcn
-#. TODO: move space
-#. fis cis gis dis ais eis bis
-#. bes es as des ges ces fes
-#. urg, we should be sure that we're in a lyrics staff
-#. all include ALL_NOTES_OFF
-#. ugh, must set key while parsing
-#. because Note init uses key
-#. Better do Note.calc () at dump time?
-#. last_lyric.clocks = t - last_time
-#. hmm
-#. urg, this will barf at meter changes
-#. urg LilyPond doesn't start at c4, but
-#. remembers from previous tracks!
-#. reference_note = Note (clocks_per_4, 4*12, 0)
-#. must be in \notes mode for parsing \skip
-#: midi2ly.py:1002
-#, python-format
-msgid "%s output to `%s'..."
-msgstr "%s producidos en `%s'..."
-
-#: midi2ly.py:1033
-msgid "Example:"
-msgstr ""
-
-#: midi2ly.py:1083
-msgid "no files specified on command line."
-msgstr "no se ha especificado ningún fichero en la línea de órdenes."
-
-#. !@PYTHON@
-#. mup2ly.py -- mup input converter
-#.
-#. source file of the GNU LilyPond music typesetter
-#.
-#. (c) 2001
-#. if set, LILYPONDPREFIX must take prevalence
-#. if datadir is not set, we're doing a build and LILYPONDPREFIX
-#: mup2ly.py:70
-#, fuzzy
-msgid "Convert mup to LilyPond source."
-msgstr "Convertir mup a ly."
-
-#: mup2ly.py:73
-msgid "debug"
-msgstr "depurar"
-
-#: mup2ly.py:74
-msgid "define macro NAME [optional expansion EXP]"
-msgstr "define la macro NOMBRE [EXPRESIÓN de expansión opcional]"
-
-#: mup2ly.py:77
-msgid "only pre-process"
-msgstr "solamente preprocesar"
-
-#. Duh.  Python style portable: cp *.EXT OUTDIR
-#. system ('cp *.%s %s' % (ext, outdir), 1)
-#. Python < 1.5.2 compatibility
-#.
-#. On most platforms, this is equivalent to
-#. `normpath(join(os.getcwd()), PATH)'.  *Added in Python version 1.5.2*
-#. if set, LILYPONDPREFIX must take prevalence
-#. if datadir is not set, we're doing a build and LILYPONDPREFIX
-#. ###############################################################
-#. END Library
-#.
-#. PMX cut and paste
-#.
-#. if not self.entries:
-#. #return '\n'
-#. #ugh ugh
-#. return '\n%s = {}\n\n' % self.idstring ()
-#. ugh
-#. def set_clef (self, letter):
-#. clstr = clef_table[letter]
-#. self.voices[0].add_nonchord (Clef (clstr))
-#. urg
-#. maybe use import copy?
-#. for i in self.pitches:
-#. ch.pitches.append (i)
-#. for i in self.scripts:
-#. ch.scripts.append (i)
-#. http://www.arkkra.com/doc/uguide/contexts.html
-#. #self.current_staffs = []
-#. duh
-#. FIXME: 1?
-#. FIXME: does key play any role in this?
-#. ch = self.current_voices[0].last_chord ()
-#. ch.basic_duration = self.current_voices[0].last_chord ().basic_duration
-#. ugh
-#. ch = self.current_voices[0].last_chord ()
-#. `;' is not a separator, chords end with ';'
-#. mup resets default duration and pitch each bar
-#. ugh: these (and lots more) should also be parsed in
-#. context staff.  we should have a class Staff_properties
-#. and parse/set all those.
-#. shortcut: set to official mup maximum (duh)
-#. self.set_staffs (40)
-#: mup2ly.py:1076
-#, python-format
-msgid "no such context: %s"
-msgstr "no hay tal contexto: %s"
-
-#. hmm
-#. dig this: mup allows ifdefs inside macro bodies
-#. don't do nested multi-line defines
-#. duh: mup is strictly line-based, except for `define',
-#. which is `@' terminated and may span several lines
-#. don't define new macros in unactive areas
-#. To support nested multi-line define's
-#. process_function and macro_name, macro_body
-#. should become lists (stacks)
-#. The mup manual is undetermined on this
-#. and I haven't seen examples doing it.
-#.
-#. don't do nested multi-line define's
-#. writes to stdout for help2man
-#. don't call
-#. identify ()
-#. sys.stdout.flush ()
-#. handy emacs testing
-#. if not files:
-#. files = ['template.mup']
-#: mup2ly.py:1300
-#, python-format
-msgid "Processing `%s'..."
-msgstr "Procesando `%s'..."
-
-#: mup2ly.py:1319
-#, python-format
-msgid "Writing `%s'..."
-msgstr "Escribiendo `%s'..."
-
-#: getopt-long.cc:146
-#, c-format
-msgid "option `%s' requires an argument"
-msgstr "la opción `%s' requiere un argumento"
-
-#: getopt-long.cc:150
-#, c-format
-msgid "option `%s' doesn't allow an argument"
-msgstr "la opción `%s' no permite argumentos"
-
-#: getopt-long.cc:154
-#, c-format
-msgid "unrecognized option: `%s'"
-msgstr "opción no reconocida: `%s'"
-
-#: getopt-long.cc:161
-#, c-format
-msgid "invalid argument `%s' to option `%s'"
-msgstr "argúmento no válido `%s' para la opción `%s'"
-
-#: warn.cc:25
-#, fuzzy, c-format
-msgid "warning: %s\n"
-msgstr "advertencia: "
-
-#: warn.cc:31
-#, fuzzy, c-format
-msgid "error: %s\n"
-msgstr "error: "
-
-#: warn.cc:44
-#, fuzzy, c-format
-msgid "programming error: %s (Continuing; cross thumbs)\n"
-msgstr " (Continuando; cruza los dedos)"
-
-#: accidental.cc:202 key-signature-interface.cc:137
-#, c-format
-msgid "accidental `%s' not found"
-msgstr ""
-
-#: accidental-engraver.cc:171 new-accidental-engraver.cc:238
-#, c-format
-msgid "Accidental typesetting list must begin with context-name: %s"
-msgstr ""
-
-#: accidental-engraver.cc:196 new-accidental-engraver.cc:263
-#, c-format
-msgid "unknown accidental typesetting: %s. Ignored"
-msgstr ""
-
-#: accidental-engraver.cc:212 new-accidental-engraver.cc:279
-#, c-format
-msgid "Symbol is not a parent context: %s. Ignored"
-msgstr ""
-
-#: accidental-engraver.cc:215 new-accidental-engraver.cc:282
-#, c-format
-msgid "Accidental typesetting must be pair or context-name: %s"
-msgstr ""
-
-#: afm.cc:66
-#, c-format
-msgid "can't find character number: %d"
-msgstr "no puedo encontrar el carácter número: %d"
-
-#: afm.cc:81
-#, c-format
-msgid "can't find character called: `%s'"
-msgstr "no puedo encontrar el carácter llamado: `%s'"
-
-#: afm.cc:142
-#, c-format
-msgid "Error parsing AFM file: `%s'"
-msgstr "Error de análisis sintáctico del fichero AFM: `%s'"
-
-#: all-font-metrics.cc:95
-#, c-format
-msgid "checksum mismatch for font file: `%s'"
-msgstr "suma de control no acorde para el fichero de fuentes: `%s'"
-
-#: all-font-metrics.cc:97
-#, c-format
-msgid "does not match: `%s'"
-msgstr "no concuerda: `%s'"
-
-#: all-font-metrics.cc:102
-msgid ""
-" Rebuild all .afm files, and remove all .pk and .tfm files.  Rerun with -V "
-"to show font paths."
-msgstr ""
-"Reconstruir todos los ficheros .afm, y borrar todos los ficheros .pk y .tfm. "
-"Re-ejecutar con la opción -V para mostrar las rutas de las fuentes."
-
-#: all-font-metrics.cc:103
-msgid ""
-"A script for removing font-files is delivered with the source-code,\n"
-"in buildscripts/clean-fonts.sh"
-msgstr ""
-
-#: all-font-metrics.cc:169
-#, c-format
-msgid "can't find font: `%s'"
-msgstr "no encuentro la fuente: `%s'"
-
-#: all-font-metrics.cc:170
-msgid "Loading default font"
-msgstr "Cargando la fuente por defecto"
-
-#: all-font-metrics.cc:185
-#, c-format
-msgid "can't find default font: `%s'"
-msgstr "no puedo encontrar la fuente por defecto: `%s'"
-
-#: all-font-metrics.cc:186 includable-lexer.cc:59 input-file-results.cc:192
-#, c-format
-msgid "(search path: `%s')"
-msgstr "(ruta de búsqueda: `%s')"
-
-#: all-font-metrics.cc:187
-msgid "Giving up"
-msgstr "Abandonando"
-
-#: auto-change-iterator.cc:43 change-iterator.cc:60
-#: part-combine-music-iterator.cc:120
-msgid "Can't switch translators, I'm there already"
-msgstr "No puedo pasar de un traductor al otro, ya estoy allí"
-
-#: bar-check-iterator.cc:51
-#, c-format
-msgid "barcheck failed at: %s"
-msgstr ""
-
-#: beam.cc:146
-msgid "beam has less than two visible stems"
-msgstr ""
-
-#: beam.cc:151
-msgid "Beam has less than two stems. Removing beam."
-msgstr ""
-
-#: beam.cc:976
-msgid ""
-"Not sure that we can find a nice beam slope (no viable initial configuration "
-"found)."
-msgstr ""
-
-#: beam-engraver.cc:176
-msgid "already have a beam"
-msgstr ""
-
-#: beam-engraver.cc:259
-msgid "unterminated beam"
-msgstr ""
-
-#: beam-engraver.cc:292 chord-tremolo-engraver.cc:197
-msgid "stem must have Rhythmic structure"
-msgstr ""
-
-#: beam-engraver.cc:306
-msgid "stem doesn't fit in beam"
-msgstr ""
-
-#: beam-engraver.cc:307
-msgid "beam was started here"
-msgstr ""
-
-#: break-align-interface.cc:173
-#, fuzzy, c-format
-msgid "No spacing entry from %s to `%s'"
-msgstr "No se añade el traductor: `%s'"
-
-#: change-iterator.cc:22
-#, c-format
-msgid "can't change `%s' to `%s'"
-msgstr "no puedo cambiar de `%s' a `%s'"
-
-#.
-#. We could change the current translator's id, but that would make
-#. errors hard to catch
-#.
-#. last->translator_id_string_  = get_change ()->change_to_id_string_;
-#.
-#: change-iterator.cc:79
-msgid "I'm one myself"
-msgstr "Yo mismo soy uno"
-
-#: change-iterator.cc:82
-msgid "none of these in my family"
-msgstr "ninguno de éstos en mi familia"
-
-#: chord-tremolo-engraver.cc:98
-#, c-format
-msgid "Chord tremolo with %d elements. Must have two elements."
-msgstr ""
-
-#: chord-tremolo-engraver.cc:157
-msgid "unterminated chord tremolo"
-msgstr "acorde de trémolo sin terminar"
-
-#: chord-tremolo-iterator.cc:69
-msgid "no one to print a tremolos"
-msgstr "ninguno para la impresión de trémolos"
-
-#: clef.cc:64
-#, c-format
-msgid "clef `%s' not found"
-msgstr ""
-
-#: cluster.cc:131
-#, fuzzy, c-format
-msgid "unknown cluster style `%s'"
-msgstr "traductor desconocido: `%s'"
-
-#: coherent-ligature-engraver.cc:84
-#, c-format
-msgid "gotcha: ptr=%ul"
-msgstr ""
-
-#: coherent-ligature-engraver.cc:96
-#, c-format
-msgid "distance=%f"
-msgstr ""
-
-#: coherent-ligature-engraver.cc:139
-#, c-format
-msgid "Coherent_ligature_engraver: setting `spacing-increment = 0.01': ptr=%ul"
-msgstr ""
-
-#: custos.cc:92
-#, c-format
-msgid "custos `%s' not found"
-msgstr ""
-
-#: dimensions.cc:13
-msgid "NaN"
-msgstr "NaN"
-
-#: dynamic-engraver.cc:204 span-dynamic-performer.cc:82
-msgid "can't find start of (de)crescendo"
-msgstr "no puedo encontrar el principio del (de)crescendo"
-
-#: dynamic-engraver.cc:216
-msgid "already have a crescendo"
-msgstr "ya tengo un crescendo"
-
-#: dynamic-engraver.cc:217
-msgid "already have a decrescendo"
-msgstr "ya tengo un decrescendo"
-
-#: dynamic-engraver.cc:220
-msgid "Cresc started here"
-msgstr ""
-
-#: dynamic-engraver.cc:323
-msgid "unterminated (de)crescendo"
-msgstr "(de)crescendo sin terminar"
-
-#: event.cc:49
-#, c-format
-msgid "Transposition by %s makes alteration larger than two"
-msgstr ""
-
-#: event-chord-iterator.cc:76 output-property-music-iterator.cc:27
-#, fuzzy, c-format
-msgid "Junking event: `%s'"
-msgstr "Invocando `%s'"
-
-#: extender-engraver.cc:94
-msgid "unterminated extender"
-msgstr "prolongación sin terminar"
-
-#: extender-engraver.cc:106
-#, fuzzy
-msgid "Nothing to connect extender to on the left.  Ignoring extender event."
-msgstr ""
-"Nada a la izquierda a lo que conectar la prologación. Ignorando la petición "
-"de prolongación."
-
-#: folded-repeat-iterator.cc:88
-msgid "no one to print a repeat brace"
-msgstr "ninguno para la impresión de llaves repetidas"
-
-#: font-interface.cc:239
-msgid "couldn't find any font satisfying "
-msgstr "no he podido encontrar ninguna fuente satisfactoria "
-
-#: glissando-engraver.cc:100
-#, fuzzy
-msgid "Unterminated glissando."
-msgstr "prolongación sin terminar"
-
-#: gourlay-breaking.cc:188
-#, c-format
-msgid "Optimal demerits: %f"
-msgstr ""
-
-#: gourlay-breaking.cc:193
-msgid "No feasible line breaking found"
-msgstr "No se ha encontrado ninguna ruptura de línea factible"
-
-#: gregorian-ligature-engraver.cc:59
-#, fuzzy, c-format
-msgid "\\%s ignored"
-msgstr "(ignorado)"
-
-#: gregorian-ligature-engraver.cc:64
-#, c-format
-msgid "implied \\%s added"
-msgstr ""
-
-#.
-#. Todo: do something sensible. The grob-pq-engraver is not water
-#. tight, and stuff like tupletSpannerDuration confuses it.
-#.
-#: grob-pq-engraver.cc:130
-#, c-format
-msgid ""
-"Skipped something?\n"
-"Grob %s ended before I expected it to end."
-msgstr ""
-
-#: hairpin.cc:98
-msgid "decrescendo too small"
-msgstr "decrescendo demasiado pequeño"
-
-#: hairpin.cc:99
-msgid "crescendo too small"
-msgstr "crescendo demasiado pequeño"
-
-#: horizontal-bracket-engraver.cc:64
-msgid "Don't have that many brackets."
-msgstr ""
-
-#: horizontal-bracket-engraver.cc:73
-msgid "Conflicting note group events."
-msgstr ""
-
-#: hyphen-engraver.cc:87
-msgid "unterminated hyphen"
-msgstr ""
-
-#: hyphen-engraver.cc:99
-#, fuzzy
-msgid "Nothing to connect hyphen to on the left.  Ignoring hyphen event."
-msgstr ""
-"Nada a la izquierda a lo que conectar la prologación. Ignorando la petición "
-"de prolongación."
-
-#: input.cc:99
-msgid "non fatal error: "
-msgstr "error no fatal: "
-
-#: input.cc:107 source-file.cc:146 source-file.cc:239
-msgid "position unknown"
-msgstr "posición desconocida"
-
-#: input-file-results.cc:72 source-file.cc:54 streams.cc:38
-#, c-format
-msgid "can't open file: `%s'"
-msgstr "no se puede abrir el fichero: `%s'"
-
-#: input-file-results.cc:132
-msgid "Score contains errors; will not process it"
-msgstr "La partitura contiene errores; no será procesada."
-
-#: input-file-results.cc:172
-#, c-format
-msgid "Now processing: `%s'"
-msgstr "Ahora en proceso: `%s'"
-
-#: key-performer.cc:96
-msgid "FIXME: key change merge"
-msgstr ""
-
-#: kpath.cc:76
-#, fuzzy, c-format
-msgid "Kpathsea couldn't find TFM file `%s'"
-msgstr "no puedo encontrar el fichero: `%s'"
-
-#: ligature-engraver.cc:159
-#, fuzzy
-msgid "can't find start of ligature"
-msgstr "no puedo encontrar el principio del (de)crescendo"
-
-#: ligature-engraver.cc:165
-msgid "no right bound"
-msgstr ""
-
-#: ligature-engraver.cc:191
-#, fuzzy
-msgid "already have a ligature"
-msgstr "ya tengo un crescendo"
-
-#: ligature-engraver.cc:207
-msgid "no left bound"
-msgstr ""
-
-#: ligature-engraver.cc:258
-#, fuzzy
-msgid "unterminated ligature"
-msgstr "prolongación sin terminar"
-
-#: ligature-engraver.cc:282
-msgid "ligature may not contain rest; ignoring rest"
-msgstr ""
-
-#: ligature-engraver.cc:283
-msgid "ligature was started here"
-msgstr ""
-
-#: lily-guile.cc:88
-#, c-format
-msgid "(load path: `%s')"
-msgstr "(ruta de carga: `%s')"
-
-#: lily-guile.cc:576
-#, c-format
-msgid "Can't find property type-check for `%s' (%s)."
-msgstr ""
-
-#: lily-guile.cc:579
-msgid "Perhaps you made a typing error?"
-msgstr ""
-
-#: lily-guile.cc:585
-msgid "Doing assignment anyway."
-msgstr ""
-
-#: lily-guile.cc:599
-#, c-format
-msgid "Type check for `%s' failed; value `%s' must be of type `%s'"
-msgstr ""
-
-#: lookup.cc:173
-msgid "round filled box horizontal extent smaller than blot; decreasing blot"
-msgstr ""
-
-#: lookup.cc:178
-msgid "round filled box vertical extent smaller than blot; decreasing blot"
-msgstr ""
-
-#: lyric-phrasing-engraver.cc:311
-msgid "lyrics found without any matching notehead"
-msgstr ""
-
-#: lyric-phrasing-engraver.cc:317
-msgid "Huh? Melismatic note found to have associated lyrics."
-msgstr ""
-
-#: main.cc:106
-msgid "EXPR"
-msgstr "EXPR"
-
-#: main.cc:107
-msgid "set options, use -e '(ly-option-usage)' for help"
-msgstr ""
-
-#: main.cc:110
-msgid "use output format EXT"
-msgstr ""
-
-#: main.cc:112
-msgid "FIELD"
-msgstr "CAMPO"
-
-#: main.cc:112
-msgid "write header field to BASENAME.FIELD"
-msgstr "escribir campo de cabecera a BASENAME.FIELD"
-
-#: main.cc:113
-msgid "add DIR to search path"
-msgstr "añadir DIR a la ruta de búsqueda"
-
-#: main.cc:114
-msgid "use FILE as init file"
-msgstr "usar FICHERO como fichero de inicialización"
-
-#: main.cc:118
-msgid "prepend DIR to dependencies"
-msgstr "añadir el prefijo DIR a las dependencias"
-
-#.
-#. should audit again.
-#.
-#: main.cc:123
-msgid "inhibit file output naming and exporting"
-msgstr "inhibir la denominación del fichero de salida y la exportación"
-
-#. No version number or newline here. It confuses help2man.
-#: main.cc:155
-#, c-format
-msgid "Usage: %s [OPTIONS]... FILE..."
-msgstr "Sintaxis: %s [OPCIÓN]... FICHERO..."
-
-#: main.cc:157
-msgid "Typeset music and or play MIDI from FILE."
-msgstr ""
-
-#: main.cc:160
-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 ""
-
-#: main.cc:182
-#, c-format
-msgid ""
-"This is free software.  It is covered by the GNU General Public License,\n"
-"and you are welcome to change it and/or distribute copies of it under\n"
-"certain conditions.  Invoke as `%s --warranty' for more information.\n"
-msgstr ""
-"Este software es libre. Está protegido por la Licencia Pública\n"
-"General de GNU, y quedas invitado a modificarlo y/o distribuir copias de\n"
-"él bajo ciertas condiciones. Invócalo como `%s --warranty' para más\n"
-"información.\n"
-
-#: main.cc:198
-msgid "GNU LilyPond -- The music typesetter"
-msgstr ""
-
-#: main.cc:206
-msgid ""
-"    This program is free software; you can redistribute it and/or\n"
-"modify it under the terms of the GNU General Public License version 2\n"
-"as published by the Free Software Foundation.\n"
-"\n"
-"    This program is distributed in the hope that it will be useful,\n"
-"but WITHOUT ANY WARRANTY; without even the implied warranty of\n"
-"MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU\n"
-"General Public License for more details.\n"
-"\n"
-"    You should have received a copy (refer to the file COPYING) of the\n"
-"GNU General Public License along with this program; if not, write to\n"
-"the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA "
-"02111-1307,\n"
-"USA.\n"
-msgstr ""
-
-#: mensural-ligature.cc:153
-#, c-format
-msgid "Mensural_ligature:thickness undefined on flexa %d; assuming 1.4"
-msgstr ""
-
-#: mensural-ligature.cc:169
-#, c-format
-msgid "Mensural_ligature:delta-pitch undefined on flexa %d; assuming 0"
-msgstr ""
-
-#: mensural-ligature.cc:182
-#, c-format
-msgid "Mensural_ligature:flexa-width undefined on flexa %d; assuming 2.0"
-msgstr ""
-
-#: mensural-ligature.cc:215
-msgid "Mensural_ligature:unexpected case fall-through"
-msgstr ""
-
-#: mensural-ligature.cc:225
-msgid "Mensural_ligature: (join_left == 0)"
-msgstr ""
-
-#: mensural-ligature-engraver.cc:248 mensural-ligature-engraver.cc:397
-msgid "unexpected case fall-through"
-msgstr ""
-
-#: mensural-ligature-engraver.cc:259
-msgid "ligature with less than 2 heads -> skipping"
-msgstr ""
-
-#: mensural-ligature-engraver.cc:279
-msgid "can not determine pitch of ligature primitive -> skipping"
-msgstr ""
-
-#: mensural-ligature-engraver.cc:302
-msgid "prime interval within ligature -> skipping"
-msgstr ""
-
-#: mensural-ligature-engraver.cc:312
-msgid "mensural ligature: duration none of L, B, S -> skipping"
-msgstr ""
-
-#: midi-item.cc:148
-#, c-format
-msgid "no such instrument: `%s'"
-msgstr "no hay este instrumento: `%s'"
-
-#: midi-item.cc:238
-msgid "silly duration"
-msgstr "duración ridícula"
-
-#: midi-item.cc:251
-msgid "silly pitch"
-msgstr ""
-
-#: music-output-def.cc:111
-#, c-format
-msgid "can't find `%s' context"
-msgstr "no se puede encontrar el contexto de `%s'"
-
-#: my-lily-lexer.cc:169
-#, c-format
-msgid "Identifier name is a keyword: `%s'"
-msgstr "El nombre del identificativo es una palabra clave: `%s'"
-
-#: my-lily-lexer.cc:191
-#, c-format
-msgid "error at EOF: %s"
-msgstr "error al final del fichero (EOF): %s"
-
-#: my-lily-parser.cc:44
-msgid "Parsing..."
-msgstr "Analizando..."
-
-#: my-lily-parser.cc:54
-msgid "Braces don't match"
-msgstr ""
-
-#.
-#. music for the softenon children?
-#.
-#: new-fingering-engraver.cc:143
-msgid "music for the martians."
-msgstr ""
-
-#: new-tie-engraver.cc:166 tie-engraver.cc:217
-msgid "lonely tie"
-msgstr ""
-
-#: note-collision.cc:340
-msgid "Too many clashing notecolumns.  Ignoring them."
-msgstr "Demasiadas columnas de notas que chocan entre sí. Se las ignora."
-
-#: note-head.cc:127
-#, c-format
-msgid "note head `%s' not found"
-msgstr ""
-
-#: paper-def.cc:96
-#, c-format
-msgid "paper output to `%s'..."
-msgstr ""
-
-#: paper-score.cc:78
-#, fuzzy, c-format
-msgid "Element count %d (spanners %d) "
-msgstr "Elementos contados %d"
-
-#: paper-score.cc:83
-#, fuzzy
-msgid "Preprocessing graphical objects..."
-msgstr "Preprocesando elementos..."
-
-#: paper-score.cc:116
-msgid "Outputting Score, defined at: "
-msgstr ""
-
-#: parse-scm.cc:79
-msgid "GUILE signaled an error for the expression begining here"
-msgstr ""
-
-#.
-#. We could change the current translator's id, but that would make
-#. errors hard to catch
-#.
-#. last->translator_id_string_  = get_change ()->change_to_id_string_;
-#.
-#: part-combine-music-iterator.cc:139
-#, c-format
-msgid "I'm one myself: `%s'"
-msgstr "Yo mismo soy uno: `%s'"
-
-#: part-combine-music-iterator.cc:142
-#, c-format
-msgid "none of these in my family: `%s'"
-msgstr ""
-
-#: percent-repeat-engraver.cc:109
-msgid "Don't know how to handle a percent repeat of this length."
-msgstr ""
-
-#: percent-repeat-engraver.cc:163
-#, fuzzy
-msgid "unterminated percent repeat"
-msgstr "prolongación sin terminar"
-
-#: percent-repeat-iterator.cc:65
-msgid "no one to print a percent"
-msgstr ""
-
-#: performance.cc:51
-msgid "Track ... "
-msgstr "Pista ... "
-
-#: performance.cc:83
-msgid "Creator: "
-msgstr "Creador: "
-
-#: performance.cc:103
-#, fuzzy
-msgid "at "
-msgstr ", en "
-
-#: performance.cc:114
-#, c-format
-msgid "from musical definition: %s"
-msgstr "a partir de la definición musical: %s"
-
-#: performance.cc:169
-#, c-format
-msgid "MIDI output to `%s'..."
-msgstr "Salida MIDI a `%s'..."
-
-#: phrasing-slur-engraver.cc:123
-msgid "unterminated phrasing slur"
-msgstr ""
-
-#: phrasing-slur-engraver.cc:141
-msgid "can't find start of phrasing slur"
-msgstr ""
-
-#: piano-pedal-engraver.cc:235 piano-pedal-engraver.cc:250
-#: piano-pedal-engraver.cc:305 piano-pedal-performer.cc:82
-#, c-format
-msgid "can't find start of piano pedal: `%s'"
-msgstr ""
-
-#: piano-pedal-engraver.cc:410
-#, fuzzy
-msgid "unterminated pedal bracket"
-msgstr "prolongación sin terminar"
-
-#: property-iterator.cc:97
-#, c-format
-msgid "Not a grob name, `%s'."
-msgstr ""
-
-#: rest.cc:139
-#, c-format
-msgid "rest `%s' not found, "
-msgstr ""
-
-#: rest-collision.cc:199
-msgid "too many colliding rests"
-msgstr ""
-
-#: scm-option.cc:45
-msgid "lilypond -e EXPR means:"
-msgstr ""
-
-#: scm-option.cc:47
-msgid "  Evalute the Scheme EXPR before parsing any .ly files."
-msgstr ""
-
-#: scm-option.cc:49
-msgid ""
-"  Multiple -e options may be given, they will be evaluated sequentially."
-msgstr ""
-
-#: scm-option.cc:51
-msgid ""
-"  The function ly-set-option allows for access to some internal variables."
-msgstr ""
-
-#: scm-option.cc:53
-msgid "Usage: lilypond -e \"(ly-set-option SYMBOL VAL)\""
-msgstr ""
-
-#: scm-option.cc:55
-msgid "Where SYMBOL VAL pair is any of:"
-msgstr ""
-
-#: scm-option.cc:128
-msgid "Unknown internal option!"
-msgstr ""
-
-#: score.cc:85
-msgid "Interpreting music..."
-msgstr "Interpretación de la música..."
-
-#: score.cc:97
-msgid "Need music in a score"
-msgstr ""
-
-#. should we? hampers debugging.
-#: score.cc:111
-msgid "Errors found/*, not processing score*/"
-msgstr ""
-"Erreurs trouvées/*, pas de traitement de la feuille de musique*/ Se han "
-"encontrado errores/*, no se procesa la partitura*/"
-
-#: score.cc:118
-#, c-format
-msgid "elapsed time: %.2f seconds"
-msgstr ""
-
-#: score-engraver.cc:99
-#, fuzzy, c-format
-msgid "can't find `%s'"
-msgstr "no se puede encontrar: `%s'"
-
-#: score-engraver.cc:100
-msgid "Fonts have not been installed properly.  Aborting"
-msgstr ""
-
-#: score-engraver.cc:205
-#, c-format
-msgid "unbound spanner `%s'"
-msgstr ""
-
-#: script-engraver.cc:90
-#, c-format
-msgid "Don't know how to interpret articulation `%s'"
-msgstr "No se sabe como interpretar la articulación `%s'"
-
-#. this shouldn't happen, but let's continue anyway.
-#: separation-item.cc:53 separation-item.cc:101
-msgid "Separation_item:  I've been drinking too much"
-msgstr "Separation_item: He bebido demasiado"
-
-#: simple-spacer.cc:248
-#, c-format
-msgid "No spring between column %d and next one"
-msgstr ""
-
-#: slur-engraver.cc:141
-msgid "unterminated slur"
-msgstr ""
-
-#. How to shut up this warning, when Voice_devnull_engraver has
-#. eaten start event?
-#: slur-engraver.cc:159
-msgid "can't find start of slur"
-msgstr ""
-
-#: source-file.cc:67
-#, c-format
-msgid "Huh?  Got %d, expected %d characters"
-msgstr "¿Eh? Se han obtenido %d caracteres, cuando se esperaban %d"
-
-#: spacing-spanner.cc:379
-#, c-format
-msgid "Global shortest duration is %s\n"
-msgstr ""
-
-#: spring-smob.cc:32
-#, c-format
-msgid "#<spring smob d= %f>"
-msgstr ""
-
-#: staff-symbol.cc:61
-msgid "staff symbol: indentation yields beyond end of line"
-msgstr ""
-
-#: stem.cc:118
-msgid "Weird stem size; check for narrow beams"
-msgstr ""
-
-#: stem.cc:611
-#, c-format
-msgid "flag `%s' not found"
-msgstr ""
-
-#: stem.cc:624
-#, c-format
-msgid "flag stroke `%s' not found"
-msgstr ""
-
-#: stem-engraver.cc:96
-msgid "tremolo duration is too long"
-msgstr ""
-
-#: stem-engraver.cc:124
-#, c-format
-msgid "Adding note head to incompatible stem (type = %d)"
-msgstr ""
-
-#: stem-engraver.cc:125
-msgid "Don't you want polyphonic voices instead?"
-msgstr ""
-
-#: streams.cc:34
-#, c-format
-msgid "can't create directory: `%s'"
-msgstr "no se puede crear el directorio: `%s'"
-
-#: streams.cc:48
-msgid "Error syncing file (disk full?)"
-msgstr ""
-
-#: system.cc:125
-#, c-format
-msgid "Element count %d."
-msgstr "Elementos contados %d."
-
-#: system.cc:372
-#, fuzzy, c-format
-msgid "Grob count %d "
-msgstr "Elementos contados %d"
-
-#: system.cc:386
-#, fuzzy
-msgid "Calculating line breaks..."
-msgstr "Calculando las posiciones de las columnas"
-
-#: text-spanner-engraver.cc:81
-msgid "can't find start of text spanner"
-msgstr ""
-
-#: text-spanner-engraver.cc:95
-msgid "already have a text spanner"
-msgstr ""
-
-#: text-spanner-engraver.cc:164
-msgid "unterminated text spanner"
-msgstr ""
-
-#: tfm.cc:83
-#, c-format
-msgid "can't find ascii character: %d"
-msgstr ""
-
-#. Not using ngettext's plural feature here, as this message is
-#. more of a programming error.
-#: tfm-reader.cc:108
-#, c-format
-msgid "TFM header of `%s' has only %u word (s)"
-msgstr ""
-
-#: tfm-reader.cc:142
-#, c-format
-msgid "%s: TFM file has %u parameters, which is more than the %u I can handle"
-msgstr ""
-
-#: tie-performer.cc:159
-msgid "No ties were created!"
-msgstr ""
-
-#: time-scaled-music-iterator.cc:25
-msgid "no one to print a tuplet start bracket"
-msgstr ""
-
-#. If there is no such symbol, we default to the numbered style.
-#. (Here really with a warning!)
-#: time-signature.cc:87
-#, c-format
-msgid "time signature symbol `%s' not found; reverting to numbered style"
-msgstr ""
-
-#.
-#. Todo: should make typecheck?
-#.
-#. OTOH, Tristan Keuris writes 8/20 in his Intermezzi.
-#.
-#: time-signature-engraver.cc:57
-#, c-format
-msgid "Found strange time signature %d/%d."
-msgstr ""
-
-#: translator-ctors.cc:53
-#, c-format
-msgid "unknown translator: `%s'"
-msgstr "traductor desconocido: `%s'"
-
-#: translator-def.cc:105
-msgid "Program has no such type"
-msgstr "El programa no tiene este tipo"
-
-#: translator-def.cc:111
-#, c-format
-msgid "Already contains: `%s'"
-msgstr "Ya contiene: `%s'"
-
-#: translator-def.cc:112
-#, c-format
-msgid "Not adding translator: `%s'"
-msgstr "No se añade el traductor: `%s'"
-
-#: translator-def.cc:229
-#, c-format
-msgid "can't find: `%s'"
-msgstr "no se puede encontrar: `%s'"
-
-#: translator-group.cc:158
-#, c-format
-msgid "can't find or create `%s' called `%s'"
-msgstr "no se puede encontrar o crear `%s' llamado `%s'"
-
-#: translator-group.cc:230
-#, c-format
-msgid "can't find or create: `%s'"
-msgstr "no se puede encontrar o crear: `%s'"
-
-#: vaticana-ligature.cc:49
-msgid "ascending vaticana style flexa"
-msgstr ""
-
-#: vaticana-ligature.cc:219
-msgid "Vaticana_ligature:thickness undefined; assuming 1.4"
-msgstr ""
-
-#: vaticana-ligature.cc:233
-msgid "Vaticana_ligature:x-offset undefined; assuming 0.0"
-msgstr ""
-
-#: vaticana-ligature.cc:258
-msgid "Vaticana_ligature: (delta_pitch == 0)"
-msgstr ""
-
-#: vaticana-ligature.cc:271
-msgid "Vaticana_ligature:delta-pitch -> ignoring join"
-msgstr ""
-
-#: vaticana-ligature-engraver.cc:477
-#, c-format
-msgid "Vaticana_ligature_engraver: setting `spacing-increment = %f': ptr=%ul"
-msgstr ""
-
-#: volta-engraver.cc:112
-msgid "No volta spanner to end"
-msgstr ""
-
-#: volta-engraver.cc:123
-msgid "Already have a volta spanner.  Stopping that one prematurely."
-msgstr ""
-
-#: volta-engraver.cc:127
-msgid "Also have a stopped spanner.  Giving up."
-msgstr ""
-
-#: parser.yy:480
-#, fuzzy
-msgid "Identifier should have alphabetic characters only"
-msgstr "El identificativo debería contener solamente caracteres alfabéticos"
-
-#: parser.yy:779
-msgid "More alternatives than repeats.  Junking excess alternatives."
-msgstr ""
-
-#: parser.yy:861 parser.yy:868
-msgid "pplycontext takes function argument"
-msgstr ""
-
-#: parser.yy:877
-msgid "Second argument must be a symbol"
-msgstr "El segundo argumento debe ser un símbolo"
-
-#: parser.yy:882
-msgid "First argument must be a procedure taking one argument"
-msgstr ""
-
-#: parser.yy:1009
-msgid "pply takes function argument"
-msgstr ""
-
-#: parser.yy:1501
-msgid "Expecting string as script definition"
-msgstr ""
-
-#: parser.yy:1598
-msgid "Expecting musical-pitch value"
-msgstr ""
-
-#: parser.yy:1609
-msgid "Must have duration object"
-msgstr ""
-
-#: parser.yy:1618 parser.yy:1626
-msgid "Have to be in Lyric mode for lyrics"
-msgstr ""
-
-#: parser.yy:1798 parser.yy:1853
-#, c-format
-msgid "not a duration: %d"
-msgstr "no es una duración: %d"
-
-#: parser.yy:1949
-msgid "Have to be in Note mode for notes"
-msgstr ""
-
-#: parser.yy:2032
-msgid "Have to be in Chord mode for chords"
-msgstr ""
-
-#: parser.yy:2171
-msgid "need integer number arg"
-msgstr ""
-
-#: parser.yy:2316
-msgid "Suspect duration found following this beam"
-msgstr ""
-
-#: lexer.ll:186
-msgid "EOF found inside a comment"
-msgstr ""
-
-#: lexer.ll:200
-msgid "\\maininput disallowed outside init files"
-msgstr ""
-
-#: lexer.ll:224
-#, c-format
-msgid "wrong or undefined identifier: `%s'"
-msgstr "identificativo equivocado o no definido: `%s'"
-
-#. backup rule
-#: lexer.ll:233
-msgid "Missing end quote"
-msgstr ""
-
-#. backup rule
-#: lexer.ll:255 lexer.ll:259
-msgid "white expected"
-msgstr ""
-
-#: lexer.ll:268
-msgid "Can't evaluate Scheme in safe mode"
-msgstr ""
-
-#: lexer.ll:397 lexer.ll:487
-msgid "Brace found at end of lyric.  Did you forget a space?"
-msgstr ""
-
-#: lexer.ll:574
-#, c-format
-msgid "invalid character: `%c'"
-msgstr "carácter no válido: `%c'"
-
-#: lexer.ll:651
-#, c-format
-msgid "unknown escaped string: `\\%s'"
-msgstr ""
-
-#: lexer.ll:742
-#, fuzzy, c-format
-msgid "Incorrect lilypond version: %s (%s, %s)"
-msgstr "versión de lilypond incorrecta: %s (%s, %s)"
-
-#: lexer.ll:743
-#, fuzzy
-msgid "Consider updating the input with the convert-ly script"
-msgstr ""
-"Considere la conversión de la entrada con ayuda del guión (script) convert-ly"
-
-#~ msgid "Fetch and rebuild from latest source package"
-#~ msgstr "Obtener y reconstruir a partir del último paquete fuente"
-
-#~ msgid "unpack and build in DIR [%s]"
-#~ msgstr "desempaquetar y construir en DIR [%s]"
-
-#~ msgid "execute COMMAND, subtitute:"
-#~ msgstr "ejecutar la órden de sustitución:"
-
-#~ msgid "%b: build root"
-#~ msgstr "%b: construir la raíz"
-
-#~ msgid "%n: package name"
-#~ msgstr "%n: nombre del paquete"
-
-#~ msgid "%r: release directory"
-#~ msgstr "%r: directorio de publicación"
-
-#~ msgid "%t: tarball"
-#~ msgstr "%t: tarball"
-
-#~ msgid "%v: package version"
-#~ msgstr "%v: versión del paquete"
-
-#~ msgid "keep all output, and name the directory %s"
-#~ msgstr "conservar todas las salidas, y nombrar el directorio %s"
-
-#~ msgid "upon failure notify EMAIL[,EMAIL]"
-#~ msgstr "en caso de fallo avisar por EMAIL[,EMAIL]"
-
-#~ msgid "remove previous build"
-#~ msgstr "eliminar la construcción anterior"
-
-#~ msgid "fetch and build URL [%s]"
-#~ msgstr "obtener y construir el URL [%s]"
-
-#~ msgid "Listing `%s'..."
-#~ msgstr "Listando `%s'..."
-
-#~ msgid "latest is: %s"
-#~ msgstr "el último es: %s"
-
-#~ msgid "relax, %s is up to date"
-#~ msgstr "calma, %s está al día"
-
-#~ msgid "Fetching `%s'..."
-#~ msgstr "Obteniendo `%s'..."
-
-#~ msgid "Building `%s'..."
-#~ msgstr "Construyendo `%s'..."
-
-#~ msgid "invalid subtraction: not part of chord: %s"
-#~ msgstr "sustracción no válida: no forma parte del acorde: %s"
-
-#~ msgid "invalid inversion pitch: not part of chord: %s"
-#~ msgstr "inversión de tonos no válida: no forma parte del acorde: %s"
-
-#~ msgid ", at "
-#~ msgstr ", en "
-
-#, fuzzy
-#~ msgid "undefined left_head"
-#~ msgstr "prolongación sin terminar"
-
-#~ msgid "Generate .dvi with LaTeX for LilyPond"
-#~ msgstr "Generar un fichero .dvi con la ayuda de LaTeX para LilyPond"
-
-#~ msgid "can't map file"
-#~ msgstr "no es posible producir el fichero map"
-
-#~ msgid "This binary was compiled with the following options:"
-#~ msgstr "Este binario fue compilado con las siguientes opciones:"
-
-#~ msgid "%s is far from completed.  Not all constructs are recognised."
-#~ msgstr ""
-#~ "%s está lejos de estar completo. No se han reconocido todas las "
-#~ "construcciones."
-
-#~ msgid "EOF in a string"
-#~ msgstr "Fin de fichero (EOF) en una cadena"
-
-#~ msgid "<stdin>"
-#~ msgstr "<stdin>"
-
-#~ msgid "programming error: "
-#~ msgstr "error de programación: "
-
-#~ msgid "unknown spacing pair `%s', `%s'"
-#~ msgstr "par de espacimiento desconocido `%s', `%s'"
-
-#~ msgid "writing header field `%s' to `%s'..."
-#~ msgstr "escribiendo el campo de cabecera `%s' a `%s'"
-
-#~ msgid "track %d:"
-#~ msgstr "pista %d:"
-
-#~ msgid "Processing..."
-#~ msgstr "Procesando..."
-
-#~ msgid "Creating voices..."
-#~ msgstr "Creando voces..."
-
-#~ msgid "track "
-#~ msgstr "pista "
-
-#~ msgid "% MIDI copyright:"
-#~ msgstr "% Copyright MIDI:"
-
-#~ msgid "% MIDI instrument:"
-#~ msgstr "% Instrumento MIDI:"
-
-#~ msgid "% Creator: "
-#~ msgstr "% Creador: "
-
-#~ msgid "% Automatically generated"
-#~ msgstr "% Generado automáticamente"
-
-#~ msgid "% from input file: "
-#~ msgstr "% a partir del fichero de entrada: "
-
-#~ msgid "set FILE as default output"
-#~ msgstr "establecer FICHERO como salida por defecto"
-
-#~ msgid "be quiet"
-#~ msgstr "trabajar en silencio"
-
-#~ msgid "don't output rests or skips"
-#~ msgstr "no producir pausas o saltos"
-
-#~ msgid "set smallest duration"
-#~ msgstr "definir la duración más pequeña"
-
-#~ msgid "don't timestamp the output"
-#~ msgstr "no datar la salida"
-
-#~ msgid "assume no double dotted notes"
-#~ msgstr "no asumir notas doblemente puntuadas"
-
-#~ msgid "Usage: %s [OPTION]... [FILE]"
-#~ msgstr "Sintaxis: %s [OPCIÓN]... [FICHERO]"
-
-#~ msgid "Translate MIDI-file to lilypond"
-#~ msgstr "Traducir un fichero MIDI a lilypond"
-
-#~ msgid "no_double_dots: %d\n"
-#~ msgstr "no_double_dots: %d\n"
-
-#~ msgid "no_rests: %d\n"
-#~ msgstr "no_rests: %d\n"
-
-#~ msgid "no_quantify_b_s: %d\n"
-#~ msgstr "no_quantify_b_s: %d\n"
-
-#~ msgid "no_smaller_than: %d (1/%d)\n"
-#~ msgstr "no_smaller_than: %d (1/%d)\n"
-
-#~ msgid "no_tuplets: %d\n"
-#~ msgstr "no_tuplets: %d\n"
-
-#~ msgid "zero length string encountered"
-#~ msgstr "encontrada cadena de longitud cero"
-
-#~ msgid "MIDI header expected"
-#~ msgstr "Esperado encabezado de formato MIDI"
-
-#~ msgid "invalid header length"
-#~ msgstr "longitud del encabezado no válida"
-
-#~ msgid "invalid MIDI format"
-#~ msgstr "formato MIDI no válido"
-
-#~ msgid "invalid number of tracks"
-#~ msgstr "número de pistas no válido"
-
-#~ msgid "can't handle non-metrical time"
-#~ msgstr "no se pueden manejar tiempos no métricos"
-
-#~ msgid "invalid running status"
-#~ msgstr "estado de ejecución no válido"
-
-#~ msgid "unimplemented MIDI meta-event"
-#~ msgstr "meta-evento MIDI no implementado"
-
-#~ msgid "invalid MIDI event"
-#~ msgstr "evento MIDI no válido"
-
-#~ msgid "MIDI track expected"
-#~ msgstr "Esperada pista MIDI"
-
-#~ msgid "invalid track length"
-#~ msgstr "longitud de pista no válida"
diff --git a/po/fi.po b/po/fi.po
deleted file mode 100644
index db9804d767..0000000000
--- a/po/fi.po
+++ /dev/null
@@ -1,2414 +0,0 @@
-# Finnish Translation of lilypond.
-# Copyright (C) 2003 Han-Wen Nienhuys, Jan Nieuwenhuizen
-# This file is distributed under the same license as the lilypond package.
-# FIRST AUTHOR: Heikki Junes <hjunes@cc.hut.fi>, 2003.
-# (ersetzt die Übersetzung von 1999 von Erwin Dieterich <bamse@gmx.de>)
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: lilypond 1.7.27\n"
-"POT-Creation-Date: 2003-07-23 0:40+0300\n"
-"PO-Revision-Date: 2003-07-23 13:37+0300\n"
-"Last-Translator: Heikki Junes <hjunes@cc.hut.fi>\n"
-"Language-Team: Finnish <fi@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=ISO-8859-1\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#. this is where special info is often stored
-#. ###############################################################
-#. lilylib.py -- options and stuff
-#.
-#. source file of the GNU LilyPond music typesetter
-#.
-#. (c)  1998--2003  Han-Wen Nienhuys <hanwen@cs.uu.nl>
-#. Jan Nieuwenhuizen <janneke@gnu.org>
-#. ##  subst:\(^\|[^._a-z]\)\(abspath\|identify\|warranty\|progress\|warning\|error\|exit\|getopt_args\|option_help_str\|options_help_str\|help\|setup_temp\|read_pipe\|system\|cleanup_temp\|strip_extension\|cp_to_dir\|mkdir_p\|init\) *(
-#. ##  replace:\1ly.\2 (
-#. ## subst: \(help_summary\|keep_temp_dir_p\|option_definitions\|original_dir\|program_name\|pseudo_filter_p\|temp_dir\|verbose_p\)
-#. ###############################################################
-#. Users of python modules should include this snippet
-#. and customize variables below.
-#. We'll suffer this path init stuff as long as we don't install our
-#. python packages in <prefix>/lib/pythonx.y (and don't kludge around
-#. it as we do with teTeX on Red Hat Linux: set some environment var
-#. (PYTHONPATH) in profile)
-#. If set, LILYPONDPREFIX must take prevalence
-#. if datadir is not set, we're doing a build and LILYPONDPREFIX
-#. Customize these
-#. lilylib globals
-#: lilylib.py:60
-msgid "lilylib module"
-msgstr "lilylib moduuli"
-
-#: lilylib.py:63 lilypond-book.py:131 lilypond.py:128 midi2ly.py:100
-#: mup2ly.py:75 main.cc:111
-msgid "print this help"
-msgstr "näytä tämä opastus"
-
-#. ###############################################################
-#. Handle bug in Python 1.6-2.1
-#.
-#. there are recursion limits for some patterns in Python 1.6 til 2.1.
-#. fix this by importing pre instead. Fix by Mats.
-#. Attempt to fix problems with limited stack size set by Python!
-#. Sets unlimited stack size. Note that the resource module only
-#. is available on UNIX.
-#: lilylib.py:114 midi2ly.py:136 mup2ly.py:130 main.cc:188 main.cc:200
-#, c-format, python-format
-msgid "Copyright (c) %s by"
-msgstr "Copyright (c) %s by"
-
-#: lilylib.py:114
-msgid " 1998--2003"
-msgstr "1998--2003"
-
-#: lilylib.py:118
-msgid "Distributed under terms of the GNU General Public License."
-msgstr "Levitettävissä ehdoilla GNU General Public License."
-
-#: lilylib.py:120
-msgid "It comes with NO WARRANTY."
-msgstr "Se toimitetaan ILMAN TAKUUTA."
-
-#: lilylib.py:127 midi2ly.py:150 mup2ly.py:144 input.cc:88
-msgid "warning: "
-msgstr "varoitus: "
-
-#. lots of midi files use plain text for lyric events
-#. FIXME: read from stdin when files[0] = '-'
-#: lilylib.py:130 midi2ly.py:165 midi2ly.py:1018 midi2ly.py:1083 mup2ly.py:147
-#: mup2ly.py:161 input.cc:93
-msgid "error: "
-msgstr "virhe: "
-
-#: lilylib.py:134
-#, python-format
-msgid "Exiting (%d)..."
-msgstr "Lopetetaan (%d)..."
-
-#: lilylib.py:194 midi2ly.py:224 mup2ly.py:220
-#, python-format
-msgid "Usage: %s [OPTIONS]... FILE"
-msgstr "Käyttö: %s [OPTIOT]... TIEDOSTO"
-
-#: lilylib.py:198 midi2ly.py:228 mup2ly.py:224 main.cc:166
-msgid "Options:"
-msgstr "Optiot:"
-
-#: lilylib.py:202 midi2ly.py:232 mup2ly.py:228 main.cc:172
-#, c-format, python-format
-msgid "Report bugs to %s."
-msgstr "Raportoi virheet osoitteeseen %s."
-
-#: lilylib.py:228
-#, python-format
-msgid "Opening pipe `%s'"
-msgstr "Avataan putki `%s'"
-
-#. successful pipe close returns 'None'
-#: lilylib.py:240
-#, python-format
-msgid "`%s' failed (%d)"
-msgstr "`%s' epäonnistui (%d)"
-
-#: lilylib.py:242 lilylib.py:289 lilypond-book.py:231 lilypond.py:512
-msgid "The error log is as follows:"
-msgstr "Virheloki on seuraava:"
-
-#: lilylib.py:262 midi2ly.py:260 mup2ly.py:256
-#, python-format
-msgid "Invoking `%s'"
-msgstr "Kutsutaan `%s'"
-
-#: lilylib.py:264
-#, python-format
-msgid "Running %s..."
-msgstr "Ajetaan %s..."
-
-#: lilylib.py:282
-#, python-format
-msgid "`%s' failed (%s)"
-msgstr "`%s' epäonnistui (%s)"
-
-#: lilylib.py:285 midi2ly.py:266 mup2ly.py:264
-msgid "(ignored)"
-msgstr "(sivuutetaan)"
-
-#: lilylib.py:299 midi2ly.py:276 mup2ly.py:274
-#, python-format
-msgid "Cleaning %s..."
-msgstr "Siivotaan pois %s..."
-
-#. Duh.  Python style portable: cp *.EXT OUTDIR
-#. system ('cp *.%s %s' % (ext, outdir), 1)
-#. Python < 1.5.2 compatibility
-#.
-#. On most platforms, this is equivalent to
-#. `normpath(join(os.getcwd()), PATH)'.  *Added in Python version 1.5.2*
-#. tex needs lots of memory, more than it gets by default on Debian
-#. TODO: * prevent multiple addition.
-#. * clean TEXINPUTS, MFINPUTS, TFMFONTS,
-#. as these take prevalence over $TEXMF
-#. and thus may break tex run?
-#. $TEXMF is special, previous value is already taken care of
-#. # -sOutputFile does not work with bbox?
-#. # todo:
-#. # have better algorithm for deciding when to crop page,
-#. # and when to show full page
-#: lilylib.py:458
-msgid "Removing output file"
-msgstr "Poistetaan tulostustiedosto"
-
-#. !@PYTHON@
-#. once upon a rainy monday afternoon.
-#.
-#. ...
-#.
-#. (not finished.)
-#. ABC standard v1.6:  http://www.gre.ac.uk/~c.walshaw/abc2mtex/abc.txt
-#.
-#. Enhancements  (Roy R. Rankin)
-#.
-#. Header section moved to top of lilypond file
-#. handle treble, treble-8, alto, and bass clef
-#. Handle voices (V: headers) with clef and part names, multiple voices
-#. Handle w: lyrics with multiple verses
-#. Handle key mode names for minor, major, phrygian, ionian, locrian, aeolian,
-#. mixolydian, lydian, dorian
-#. Handle part names from V: header
-#. Tuplets handling fixed up
-#. Lines starting with |: not discarded as header lines
-#. Multiple T: and C: header entries handled
-#. Accidental maintained until next bar check
-#. Silent rests supported
-#. articulations fermata, upbow, downbow, ltoe, accent, tenuto supported
-#. Chord strings([-^]"string") can contain a '#'
-#. Header fields enclosed by [] in notes string processed
-#. W: words output after tune as abc2ps does it (they failed before)
-#. Enhancements (Laura Conrad)
-#.
-#. Barring now preserved between ABC and lilypond
-#. the default placement for text in abc is above the staff.
-#. %%LY now supported.
-#. \breve and \longa supported.
-#. M:none doesn't crash lily.
-#. Limitations
-#.
-#. Multiple tunes in single file not supported
-#. Blank T: header lines should write score and open a new score
-#. Not all header fields supported
-#. ABC line breaks are ignored
-#. Block comments generate error and are ignored
-#. Postscript commands are ignored
-#. lyrics not resynchronized by line breaks (lyrics must fully match notes)
-#. %%LY slyrics can't be directly before a w: line.
-#. ???
-#. TODO:
-#.
-#. Convert to new chord styles.
-#.
-#. UNDEF -> None
-#.
-#. uGUHGUHGHGUGH
-#. UGH
-#. treble8 is used by abctab2ps; -8va is used by barfly,
-#. and by my patch to abc2ps. If there's ever a standard
-#. about this we'll support that.
-#. find keywork
-#. assume that Q takes the form "Q:1/4=120"
-#. There are other possibilities, but they are deprecated
-#. outf.write ("\t\t\\consists Staff_margin_engraver\n")
-#. pitch manipulation. Tuples are (name, alteration).
-#. 0 is (central) C. Alteration -1 is a flat, Alteration +1 is a sharp
-#. pitch in semitones.
-#. abc to lilypond key mode names
-#. semitone shifts for key mode names
-#. latex does not like naked #'s
-#. latex does not like naked "'s
-#. break lyrics to words and put "'s around words containing numbers and '"'s
-#. escape "
-#. _ causes probs inside ""
-#. _ to ' _ '
-#. split words with -
-#. unless \-
-#. ~ to space('_')
-#. * to to space
-#. latex does not like naked #'s
-#. put numbers and " and ( into quoted string
-#. insure space between lines
-#. title
-#. strip trailing blanks
-#. Meter
-#. KEY
-#. seperate clef info
-#. there may or may not be a space
-#. between the key letter and the mode
-#. ugh.
-#. ugh.
-#. Notes
-#. Origin
-#. Reference Number
-#. Area
-#. History
-#. Book
-#. Composer
-#. Default note length
-#. Voice
-#. Words
-#. vocals
-#. tempo
-#. we use in this order specified accidental, active accidental for bar,
-#. active accidental for key
-#. (num /  den)  / defaultlen < 1/base
-#. return (str, num,den,dots)
-#. ignore slide
-#. ignore roll
-#. s7m2 input doesnt care about spaces
-#.
-#. remember accidental for rest of bar
-#.
-#. get accidental set in this bar or UNDEF if not set
-#. WAT IS ABC EEN ONTZETTENDE PROGRAMMEERPOEP  !
-#. failed; not a note!
-#. escape '#'s
-#.
-#. |] thin-thick double bar line
-#. || thin-thin double bar line
-#. [| thick-thin double bar line
-#. :| left repeat
-#. |: right repeat
-#. :: left-right repeat
-#. |1 volta 1
-#. |2 volta 2
-#. first try the longer one
-#. bracket escape
-#. the nobarlines option is necessary for an abc to lilypond translator for
-#. exactly the same reason abc2midi needs it: abc requires the user to enter
-#. the note that will be printed, and MIDI and lilypond expect entry of the
-#. pitch that will be played.
-#.
-#. In standard 19th century musical notation, the algorithm for translating
-#. between printed note and pitch involves using the barlines to determine
-#. the scope of the accidentals.
-#.
-#. Since ABC is frequently used for music in styles that do not use this
-#. convention, such as most music written before 1700, or ethnic music in
-#. non-western scales, it is necessary to be able to tell a translator that
-#. the barlines should not affect its interpretation of the pitch.
-#. write other kinds of appending  if we ever need them.
-#. add comments to current voice
-#. Try nibbling characters off until the line doesn't change.
-#. dump_global (outf)
-#. !@PYTHON@
-#.
-#. convert-ly.py -- Update old LilyPond input files (fix name?)
-#.
-#. source file of the GNU LilyPond music typesetter
-#.
-#. (c)  1998--2003  Han-Wen Nienhuys <hanwen@cs.uu.nl>
-#. Jan Nieuwenhuizen <janneke@gnu.org>
-#. TODO
-#. use -f and -t for -s output
-#. NEWS
-#. 0.2
-#. - rewrite in python
-#. Did we ever have \mudela-version?  I doubt it.
-#. lilypond_version_re_str = '\\\\version *\"(.*)\"'
-#. ###########################
-#. need new a namespace
-#. raise FatalConversionError()
-#. need new a namespace
-#. harmful to current .lys
-#. str = re.sub ('\\\\key([^;]+);', '\\\\accidentals \\1;', str)
-#. raise FatalConversionError()
-#. raise FatalConversionError()
-#. raise FatalConversionError()
-#. TODO: lots of other syntax change should be done here as well
-#. Ugh, but meaning of \stemup changed too
-#. maybe we should do \stemup -> \stemUp\slurUp\tieUp ?
-#. I don't know exactly when these happened...
-#. ugh, we loose context setting here...
-#. (lacks capitalisation slur -> Slur)
-#. # dynamic..
-#. TODO: add lots of these
-#. ugh
-#. old fix
-#. Make sure groups of more than one ; have space before
-#. them, so that non of them gets removed by next rule
-#. Only remove ; that are not after spaces, # or ;
-#. Otherwise  we interfere with Scheme comments,
-#. which is badbadbad.
-#. 40 ?
-#. ###############################
-#. END OF CONVERSIONS
-#. ###############################
-#. !@PYTHON@
-#. info mostly taken from looking at files. See also
-#. http://lilypond.org/wiki/?EnigmaTransportFormat
-#. This supports
-#.
-#. * notes
-#. * rests
-#. * ties
-#. * slurs
-#. * lyrics
-#. * articulation
-#. * grace notes
-#. * tuplets
-#.
-#. todo:
-#. * slur/stem directions
-#. * voices (2nd half of frame?)
-#. * more intelligent lyrics
-#. * beams (better use autobeam?)
-#. * more robust: try entertainer.etf (freenote)
-#. * dynamics
-#. * empty measures (eg. twopt03.etf from freenote)
-#.
-#. uGUHGUHGHGUGH
-#. notename 0 == central C
-#. represent pitches as (notename, alteration), relative to C-major scale
-#. a fifth up
-#. should cache this.
-#. flag1 isn't all that interesting.
-#. 3: '>',
-#. 18: '\arpeggio' ,
-#. do grace notes.
-#. ugh.
-#. we don't attempt voltas since they fail easily.
-#. and g.repeat_bar == '|:' or g.repeat_bar == ':|:' or g.bracket:
-#. 4 layers.
-#. let's not do this: this really confuses when eE happens to be before  a ^text.
-#. if last_tag and last_indices:
-#. etf_file_dict[last_tag][last_indices].append (l)
-#. # do it
-#. staff-spec
-#. should use \addlyrics ?
-#. !@PYTHON@
-#. vim: set noexpandtab:
-#. This is was the idea for handling of comments:
-#. Multiline comments, @ignore .. @end ignore is scanned for
-#. in read_doc_file, and the chunks are marked as 'ignore', so
-#. lilypond-book will not touch them any more. The content of the
-#. chunks are written to the output file. Also 'include' and 'input'
-#. regex has to check if they are commented out.
-#.
-#. Then it is scanned for 'lilypond', 'lilypond-file' and 'lilypond-block'.
-#. These three regex's has to check if they are on a commented line,
-#. % for latex, @c for texinfo.
-#.
-#. Then lines that are commented out with % (latex) and @c (Texinfo)
-#. are put into chunks marked 'ignore'. This cannot be done before
-#. searching for the lilypond-blocks because % is also the comment character
-#. for lilypond.
-#.
-#. The the rest of the rexeces are searched for. They don't have to test
-#. if they are on a commented out line.
-#. ###############################################################
-#. Users of python modules should include this snippet
-#. and customize variables below.
-#. We'll suffer this path init stuff as long as we don't install our
-#. python packages in <prefix>/lib/pythonx.y (and don't kludge around
-#. it as we do with teTeX on Red Hat Linux: set some environment var
-#. (PYTHONPATH) in profile)
-#. If set, LILYPONDPREFIX must take prevalence
-#. if datadir is not set, we're doing a build and LILYPONDPREFIX
-#. Customize these
-#. if __name__ == '__main__':
-#. lilylib globals
-#. temp_dir = os.path.join (original_dir,  '%s.dir' % program_name)
-#. urg
-#. # FIXME
-#. # do -P or -p by default?
-#. #help_summary = _ ("Run LilyPond using LaTeX for titling")
-#: lilypond-book.py:120
-msgid "Process LilyPond snippets in hybrid html, LaTeX or texinfo document"
-msgstr "Prossoi LilyPond-osioita sekarakenteisessa html, LaTeX tai texinfo -dokumentissa"
-
-#. another bug in option parser: --output=foe is taken as an abbreviation
-#. for --output-format
-#: lilypond-book.py:125 main.cc:110
-msgid "EXT"
-msgstr "EXT"
-
-#: lilypond-book.py:125
-msgid "use output format EXT (texi [default], texi-html, latex, html)"
-msgstr "tulostusmuotona käytetään formaattia EXT (texi [oletus], texi-html, latex, html)"
-
-#: lilypond-book.py:126 lilypond-book.py:127 lilypond-book.py:129
-#: lilypond-book.py:130
-msgid "DIM"
-msgstr "DIM"
-
-#: lilypond-book.py:126
-msgid "default fontsize for music.  DIM is assumed to be in points"
-msgstr "oletusfonttikoko musiikille.  DIM ilmoitetaan pisteinä"
-
-#: lilypond-book.py:127
-msgid "deprecated, use --default-music-fontsize"
-msgstr "vanhentunut, käytä --default-music-fontsize"
-
-#: lilypond-book.py:128
-msgid "OPT"
-msgstr "OPT"
-
-#: lilypond-book.py:128
-msgid "pass OPT quoted to the lilypond command line"
-msgstr "syötä OPT lainausmerkeissä lilypond-komentoriville"
-
-#: lilypond-book.py:129
-msgid "force fontsize for all inline lilypond. DIM is assumed be to in points"
-msgstr "pakota fonttikoko kullekin LilyPond-osiolle. DIM oletetaan olevan pisteinä"
-
-#: lilypond-book.py:130
-msgid "deprecated, use --force-music-fontsize"
-msgstr "vanhentunut, käytä --force-music-fontsize"
-
-#: lilypond-book.py:132 lilypond.py:130 main.cc:113 main.cc:118
-msgid "DIR"
-msgstr "DIR"
-
-#: lilypond-book.py:132
-msgid "include path"
-msgstr "sisällytä polku"
-
-#: lilypond-book.py:133
-msgid "write dependencies"
-msgstr "kirjoita riippuvuudet"
-
-#: lilypond-book.py:134
-msgid "PREF"
-msgstr "PREF"
-
-#: lilypond-book.py:134
-msgid "prepend PREF before each -M dependency"
-msgstr "laita PREF kunkin -M riippuvuuden eteen"
-
-#: lilypond-book.py:135
-msgid "don't run lilypond"
-msgstr "jätä suorittamatta lilypond"
-
-#: lilypond-book.py:136
-msgid "don't generate pictures"
-msgstr "jätä tuottamatta kuvat"
-
-#: lilypond-book.py:137
-msgid "strip all lilypond blocks from output"
-msgstr "riisu kaikki lilypond -osiot tulostuksesta"
-
-#: lilypond-book.py:138 lilypond-book.py:139 lilypond.py:135 lilypond.py:136
-#: midi2ly.py:102 main.cc:114 main.cc:117
-msgid "FILE"
-msgstr "TIEDOSTO"
-
-#: lilypond-book.py:138
-msgid "filename main output file"
-msgstr "tiedostonimi päätulostustiedostolle"
-
-#: lilypond-book.py:139
-msgid "where to place generated files"
-msgstr "tuotettujen tiedostojen sijoituspaikka"
-
-#: lilypond-book.py:140 lilypond.py:137
-msgid "RES"
-msgstr "RES"
-
-#: lilypond-book.py:141 lilypond.py:138
-msgid "set the resolution of the preview to RES"
-msgstr "aseta esikatselulle tarkkuus RES"
-
-#: lilypond-book.py:142 lilypond.py:148 midi2ly.py:105 mup2ly.py:78 main.cc:126
-msgid "be verbose"
-msgstr "ole runsassanainen"
-
-#: lilypond-book.py:143
-msgid "print version information"
-msgstr "tulosta versioinformaatio"
-
-#: lilypond-book.py:144 lilypond.py:150 midi2ly.py:107 mup2ly.py:80 main.cc:127
-msgid "show warranty and copyright"
-msgstr "näytä takuu ja copyright"
-
-#. format specific strings, ie. regex-es for input, and % strings for output
-#. global variables
-#. lilypond_binary = 'valgrind --suppressions=/home/hanwen/usr/src/guile-1.6.supp  --num-callers=10 /home/hanwen/usr/src/lilypond/lily/out/lilypond'
-#. only use installed binary  when we're installed too.
-#. only use installed binary  when we're installed too.
-#. ###############################################################
-#. Dimension handling for LaTeX.
-#.
-#. Ugh.  (La)TeX writes progress and error messages on stdout
-#. Redirect to stderr
-#: lilypond-book.py:230
-msgid "LaTeX failed."
-msgstr "LaTeX epäonnistui."
-
-#. URG see lilypond
-#. Convert numeric values, with or without specific dimension, to floats.
-#. Keep other strings
-#. ###############################################################
-#. How to output various structures.
-#. # maybe <hr> ?
-#. Verbatim text is always finished with \n.  FIXME: For HTML,
-#. this newline should be removed.
-#. Verbatim text is always finished with \n.  FIXME: For HTML,
-#. this newline should be removed.
-#. # Ugh we need to differentiate on origin:
-#. # lilypond-block origin wants an extra <p>, but
-#. # inline music doesn't.
-#. # possibly other center options?
-#. verbatim text is always finished with \n
-#. verbatim text is always finished with \n
-#. verbatim text is always finished with \n
-#. verbatim text is always finished with \n
-#. do some tweaking: @ is needed in some ps stuff.
-#.
-#. ugh, the <p> below breaks inline images...
-#. clumsy workaround for python 2.2 pre bug.
-#. ###############################################################
-#. Recognize special sequences in the input
-#. Warning: This uses extended regular expressions.  Tread with care.
-#.
-#. legenda
-#.
-#. (?P<name>regex) -- assign result of REGEX to NAME
-#. *? -- match non-greedily.
-#. (?m) -- multiline regex: make ^ and $ match at each line
-#. (?s) -- make the dot match all characters including newline
-#. why do we have distinction between @mbinclude and @include?
-#. # we'd like to catch and reraise a more
-#. # detailed error, but alas, the exceptions
-#. # changed across the 1.5/2.1 boundary.
-#. ughUGH not original options
-#. First we want to scan the \documentclass line
-#. it should be the first non-comment line.
-#. The only thing we really need to know about the \documentclass line
-#. is if there are one or two columns to begin with.
-#. Then we add everything before \begin{document} to
-#. paperguru.m_document_preamble so that we can later write this header
-#. to a temporary file in find_latex_dims() to find textwidth.
-#. this is not bulletproof..., it checks the first 10 chunks
-#. newchunks.extend (func (m))
-#. python 1.5 compatible:
-#. we have to check for verbatim before doing include,
-#. because we don't want to include files that are mentioned
-#. inside a verbatim environment
-#. ugh fix input
-#. # Hmm, we should hash only lilypond source, and skip the
-#. # %options are ...
-#. # comment line
-#. # todo: include path, but strip
-#. # first part of the path.
-#. format == 'html'
-#. ugh rename
-#. Count sections/chapters.
-#. # TODO: do something like
-#. # this for texinfo/latex as well ?
-#. ugh
-#. fixme: be sys-independent.
-#.
-#. Ugh, fixing up dependencies for .tex generation
-#.
-#. Ugh.  (La)TeX writes progress and error messages on stdout
-#. Redirect to stderr
-#. # There used to be code to write .tex dependencies, but
-#. # that is silly: lilypond-book has its own dependency scheme
-#. # to ensure that all lily-XXX.tex files are there
-#. # TODO: put file name in front of texidoc.
-#. #
-#. # what's this? Docme --hwn
-#. #
-#. #docme: why global?
-#. Do It.
-#. should chmod -w
-#: lilypond-book.py:1557 lilypond.py:673 midi2ly.py:1018
-#, python-format
-msgid "getopt says: `%s'"
-msgstr "getopt sanoo: `%s'"
-
-#. HACK
-#. status = os.system ('lilypond -w')
-#: lilypond-book.py:1630 lilypond.py:777
-msgid "no files specified on command line"
-msgstr "tiedostoja ei määritelty komentorivillä"
-
-#.
-#. Petr, ik zou willen dat ik iets zinvoller deed,
-#. maar wat ik kan ik doen, het verandert toch niets?
-#. --hwn 20/aug/99
-#. !@PYTHON@
-#.
-#. lilypond.py -- Run LilyPond, add titles to bare score, generate printable
-#. document
-#. Invokes: lilypond, latex (or pdflatex), dvips, ps2pdf, gs
-#.
-#. source file of the GNU LilyPond music typesetter
-#.
-#. (c)  1998--2003  Han-Wen Nienhuys <hanwen@cs.uu.nl>
-#. Jan Nieuwenhuizen <janneke@gnu.org>
-#. This is the third incarnation of lilypond.
-#.
-#. Earlier incarnations of lilypond were written by
-#. Jeffrey B. Reed<daboys@austin.rr.com> (Python version)
-#. Jan Arne Fagertun <Jan.A.Fagertun@@energy.sintef.no> (Bourne shell script)
-#.
-#. Note: gettext work best if we use ' for docstrings and "
-#. for gettextable strings.
-#. --> DO NOT USE ''' for docstrings.
-#. ###############################################################
-#. Users of python modules should include this snippet
-#. and customize variables below.
-#. We'll suffer this path init stuff as long as we don't install our
-#. python packages in <prefix>/lib/pythonx.y (and don't kludge around
-#. it as we do with teTeX on Red Hat Linux: set some environment var
-#. (PYTHONPATH) in profile)
-#. If set, LILYPONDPREFIX must take prevalence
-#. if datadir is not set, we're doing a build and LILYPONDPREFIX
-#. Customize these
-#. if __name__ == '__main__':
-#. lilylib globals
-#. # FIXME
-#. # do -P or -p by default?
-#. #help_summary = _ ("Run LilyPond using LaTeX for titling")
-#: lilypond.py:121
-msgid "Run LilyPond, add titles, generate printable document."
-msgstr "Aja LilyPond, lisää otsikot, tuota tulostettava dokumentti."
-
-#: lilypond.py:127 main.cc:115
-msgid "write Makefile dependencies for every input file"
-msgstr "kirjoita Makefile -riippuvuudet kullekin tulostustiedostolle"
-
-#: lilypond.py:129
-msgid "print even more output"
-msgstr "kirjoita vieläpä enemmän tulostetta"
-
-#: lilypond.py:130
-msgid "add DIR to LilyPond's search path"
-msgstr "lisää DIR LilyPondin hakupolkuun"
-
-#: lilypond.py:132
-#, python-format
-msgid "keep all output, output to directory %s.dir"
-msgstr "säilytä kaikki tulosteet, kirjoita hakemistoon %s.dir"
-
-#: lilypond.py:133
-msgid "don't run LilyPond"
-msgstr "jätä ajamatta LilyPond"
-
-#: lilypond.py:134 main.cc:116
-msgid "produce MIDI output only"
-msgstr "tuota vain MIDI -tuloste"
-
-#: lilypond.py:135 midi2ly.py:102
-msgid "write output to FILE"
-msgstr "tulosta tiedostoon TIEDOSTO"
-
-#: lilypond.py:136
-msgid "find pfa fonts used in FILE"
-msgstr "etsi pfa fontit joita käytettiin tiedostossa TIEDOSTO"
-
-#: lilypond.py:139
-msgid "generate PostScript output"
-msgstr "tuota PostScript -tuloste"
-
-#: lilypond.py:140
-msgid "generate PNG page images"
-msgstr "tuota PNG -kuvat sivuista"
-
-#: lilypond.py:141
-msgid "generate PS.GZ"
-msgstr "tuota PS.GZ"
-
-#: lilypond.py:142
-msgid "generate PDF output"
-msgstr "tuota PDF -tuloste"
-
-# käytä pdflatex:ia tuottaaksesi PDF -tulosteen
-#: lilypond.py:143
-msgid "use pdflatex to generate a PDF output"
-msgstr "käytä pdflatex:ia tuottaaksesi PDF -tulosteen"
-
-#. FIXME: preview, picture; to indicate creation of a PNG?
-#: lilypond.py:145
-msgid "make a picture of the first system"
-msgstr "tee kuva ensimmäisestä kokonaisuudesta"
-
-#: lilypond.py:146
-msgid "make HTML file with links to all output"
-msgstr "tee HTML -tiedosto johon on linkitetty kaikki tulosteet"
-
-#: lilypond.py:147
-msgid "KEY=VAL"
-msgstr "KEY=VAL"
-
-#: lilypond.py:147
-msgid "change global setting KEY to VAL"
-msgstr "vaihda globaali asetus KEY arvoksi VAL"
-
-#: lilypond.py:149 midi2ly.py:106 mup2ly.py:79 main.cc:125
-msgid "print version number"
-msgstr "tulosta versionumero"
-
-#. other globals
-#. Pdftex support
-#. # yuk.
-#. lilypond_binary = 'valgrind --suppressions=%(home)s/usr/src/guile-1.6.supp --num-callers=10 %(home)s/usr/src/lilypond/lily/out/lilypond '% { 'home' : '/home/hanwen' }
-#. only use installed binary  when we're installed too.
-#. init to empty; values here take precedence over values in the file
-#. # TODO: change name.
-#. for geometry v3
-#. Output formats that lilypond should create
-#. what a name.
-#. ly.warning (_ ("invalid value: %s") % `val`)
-#. ly.warning (_ ("invalid value: %s") % `val`)
-#: lilypond.py:232
-#, python-format
-msgid "no such setting: `%s'"
-msgstr "asetusta ei löydy: `%s'"
-
-#. 2 == user interrupt.
-#: lilypond.py:274
-#, python-format
-msgid "LilyPond crashed (signal %d)."
-msgstr "LilyPond kaatui (signaali %d)."
-
-#: lilypond.py:275
-msgid "Please submit a bug report to bug-lilypond@gnu.org"
-msgstr "Ole hyvä ja lähetä virheraportti osoitteeseen bug-lilypond@gnu.org"
-
-#: lilypond.py:281
-#, python-format
-msgid "LilyPond failed on input file %s (exit status %d)"
-msgstr "LilyPond epäonnistui syöttötiedoston %s kohdalla (lopetustila %d)."
-
-#: lilypond.py:284
-#, python-format
-msgid "LilyPond failed on an input file (exit status %d)"
-msgstr "LilyPond epäonnistui syöttötiedoston kohdalla (lopetustila %d)."
-
-#: lilypond.py:285
-msgid "Continuing..."
-msgstr "Jatketaan..."
-
-#. urg
-#: lilypond.py:296
-#, python-format
-msgid "Analyzing %s..."
-msgstr "Analysoidaan %s..."
-
-#. search only the first 10k
-#: lilypond.py:354
-#, python-format
-msgid "no LilyPond output found for `%s'"
-msgstr "`%s' jäi ilman LilyPond -tulostetta"
-
-#. The final \n seems important here. It ensures that the footers and taglines end up on the right page.
-#. TODO: should set textheight (enlarge) depending on papersize.
-#: lilypond.py:397
-#, python-format
-msgid "invalid value: `%s'"
-msgstr "epäkelpo arvo: `%s'"
-
-#. set sane geometry width (a4-width) for linewidth = -1.
-#. who the hell is 597 ?
-#. Ugh.  (La)TeX writes progress and error messages on stdout
-#. Redirect to stderr
-#: lilypond.py:511
-msgid "LaTeX failed on the output file."
-msgstr "LaTeX epäonnistui tulostustiedossa."
-
-#. make a preview by rendering only the 1st line
-#. of each score
-#: lilypond.py:568
-msgid ""
-"Trying create PDF, but no PFA fonts found.\n"
-"Using bitmap fonts instead. This will look bad."
-msgstr ""
-"Yritetään tuottaa PDF, mutta PFA fontteja ei löytynyt.\n"
-"Käytetään bittikarttafonttejan niiden sijasta. Tulos ei näytä hyvältä."
-
-#. ugh. Different targets?
-#. Added as functionality to lilypond, because lilypond may well need to do this
-#. in future too.
-#. no ps header?
-#: lilypond.py:615
-#, python-format
-msgid "not a PostScript file: `%s'"
-msgstr "ei ole PostScript-tiedosto: `%s'"
-
-#. todo
-#: lilypond.py:660
-#, python-format
-msgid "Writing HTML menu `%s'"
-msgstr "Kirjoitetan HTML-valikko `%s'..."
-
-#. signal programming error
-#. Don't convert input files to abspath, rather prepend '.' to include
-#. path.
-#. As a neat trick, add directory part of first input file
-#. to include path.  That way you can do without the clumsy -I in:
-#. lilypond -I foe/bar/baz foo/bar/baz/baz.ly
-#: lilypond.py:769
-msgid "pseudo filter"
-msgstr "valefiltteri"
-
-#: lilypond.py:772
-msgid "pseudo filter only for single input file"
-msgstr "valefiltteroi ain yksi tulostetiedosto"
-
-#. Ugh, maybe make a setup () function
-#. hmmm. Wish I'd 've written comments when I wrote this.
-#. now it looks complicated.
-#: lilypond.py:806
-#, python-format
-msgid "filename should not contain spaces: `%s'"
-msgstr "tiedostoniemessä ei saa olla välilyöntejä: `%s'"
-
-#. to be sure, add tmpdir *in front* of inclusion path.
-#. os.environ['TEXINPUTS'] =  tmpdir + ':' + os.environ['TEXINPUTS']
-#. We catch all exceptions, because we need to do stuff at exit:
-#. * copy any successfully generated stuff from tempdir and
-#. notify user of that
-#. * cleanout tempdir
-#. ## ARGH. This also catches python programming errors.
-#. ## this should only catch lilypond nonzero exit  status
-#. ## --hwn
-#. TODO: friendly message about LilyPond setup/failing?
-#.
-#: lilypond.py:845
-msgid "Running LilyPond failed. Rerun with --verbose for a trace."
-msgstr "LilyPond -ajo epäonnistui. Aja uudelleen lisäten --verbose jäljitystä varten."
-
-#. Our LilyPond pseudo filter always outputs to 'lelie'
-#. have subsequent stages and use 'lelie' output.
-#. unless: add --tex, or --latex?
-#. TODO: friendly message about TeX/LaTeX setup,
-#. trying to run tex/latex by hand
-#: lilypond.py:886
-msgid "Failed to make PS file. Rerun with --verbose for a trace."
-msgstr "Epäonnistui PS -tiedoston tuottamisessa. Aja uudelleen lisäten --verbose jäljitystä varten."
-
-#. unless: add --tex, or --latex?
-#. TODO: friendly message about TeX/LaTeX setup,
-#. trying to run tex/latex by hand
-#: lilypond.py:916
-msgid "Running LaTeX falied. Rerun with --verbose for a trace."
-msgstr "LaTeX -ajo epäonnistui. Aja uudelleen lisäten --verbose jäljitystä varten."
-
-#. add DEP to targets?
-#: lilypond.py:926 input-file-results.cc:68
-#, c-format, python-format
-msgid "dependencies output to `%s'..."
-msgstr "riippuvuuksien tulosteet paikkaan `%s'"
-
-#: lilypond.py:937
-#, python-format
-msgid "%s output to <stdout>..."
-msgstr "%s -tuloste paikkaan <stdout>..."
-
-#: lilypond.py:942 lilypond.py:968 includable-lexer.cc:57
-#: input-file-results.cc:191 input-file-results.cc:197 lily-guile.cc:86
-#, c-format, python-format
-msgid "can't find file: `%s'"
-msgstr "tiedostoa ei löydy: `%s'"
-
-#. Hmm, if this were a function, we could call it the except: clauses
-#: lilypond.py:965
-#, python-format
-msgid "%s output to %s..."
-msgstr "%s -tuloste paikkaan %s..."
-
-#. !@PYTHON@
-#.
-#. midi2ly.py -- LilyPond midi import script
-#.
-#. source file of the GNU LilyPond music typesetter
-#.
-#. (c)  1998--2003  Han-Wen Nienhuys <hanwen@cs.uu.nl>
-#. Jan Nieuwenhuizen <janneke@gnu.org>
-#. ###############################################################
-#. Users of python modules should include this snippet.
-#.
-#. This soon to be removed for: import lilypond.lilylib as ly
-#. ###############################################################
-#. ###############################################################
-#. ############### CONSTANTS
-#. ###############################################################
-#. temp_dir = os.path.join (original_dir,  '%s.dir' % program_name)
-#. original_dir = os.getcwd ()
-#. keep_temp_dir_p = 0
-#: midi2ly.py:94
-msgid "Convert MIDI to LilyPond source."
-msgstr "Muunna MIDI LilyPond -muotoon."
-
-#: midi2ly.py:97
-msgid "print absolute pitches"
-msgstr "tulosta tarkat äänenkorkeudet"
-
-#: midi2ly.py:98 midi2ly.py:103
-msgid "DUR"
-msgstr "PIT"
-
-#: midi2ly.py:98
-msgid "quantise note durations on DUR"
-msgstr "kvantisoi nuottipituuden PIT perusteella"
-
-# tulosta yksikäsitteiset nuottipituudet
-#: midi2ly.py:99
-msgid "print explicit durations"
-msgstr "tulosta yksikäsitteiset nuottipituudet"
-
-#: midi2ly.py:101
-msgid "ALT[:MINOR]"
-msgstr "ETUMERKIT[:MOLLI]"
-
-#: midi2ly.py:101
-msgid "set key: ALT=+sharps|-flats; MINOR=1"
-msgstr "aseta sävellaji: ETUMERKIT=+ylennykset|-alennukset; MOLLI=1"
-
-#: midi2ly.py:103
-msgid "quantise note starts on DUR"
-msgstr "nuottien kvantisointi alkukohtana PIT"
-
-#: midi2ly.py:104
-msgid "DUR*NUM/DEN"
-msgstr "PIT*OSOITTAJA/NIMITTÄJÄ"
-
-# tuplet = Wertaufteilung nach: Peter Giger: Die Kunst des Rhythmus, Seite 25
-#: midi2ly.py:104
-msgid "allow tuplet durations DUR*NUM/DEN"
-msgstr "salli tupletti -pituudet PIT*OSOITTAJA/NIMITTÄJÄ"
-
-#: midi2ly.py:108
-msgid "treat every text as a lyric"
-msgstr "käsittele kaikki tekstit lyriikkana"
-
-#: midi2ly.py:136 mup2ly.py:130
-msgid " 2001--2003"
-msgstr " 2001--2003"
-
-#: midi2ly.py:141 mup2ly.py:135
-msgid ""
-"\n"
-"Distributed under terms of the GNU General Public License. It comes with\n"
-"NO WARRANTY."
-msgstr ""
-"\n"
-"Levitetään ehdolla GNU General Public License\n"
-"ja ilman TAKUUTA."
-
-#: midi2ly.py:166 mup2ly.py:162
-msgid "Exiting ... "
-msgstr "Lopettaa ... "
-
-#: midi2ly.py:264 mup2ly.py:261
-#, python-format
-msgid "command exited with value %d"
-msgstr "komento lopetettiin tilassa %d"
-
-#. ###############################################################
-#. END Library
-#. ###############################################################
-#. hmm
-#. major scale: do-do
-#. minor scale: la-la  (= + 5) '''
-#. By tradition, all scales now consist of a sequence
-#. of 7 notes each with a distinct name, from amongst
-#. a b c d e f g.  But, minor scales have a wide
-#. second interval at the top - the 'leading note' is
-#. sharped. (Why? it just works that way! Anything
-#. else doesn't sound as good and isn't as flexible at
-#. saying things. In medieval times, scales only had 6
-#. notes to avoid this problem - the hexachords.)
-#. So, the d minor scale is d e f g a b-flat c-sharp d
-#. - using d-flat for the leading note would skip the
-#. name c and duplicate the name d.  Why isn't c-sharp
-#. put in the key signature? Tradition. (It's also
-#. supposedly based on the Pythagorean theory of the
-#. cycle of fifths, but that really only applies to
-#. major scales...)  Anyway, g minor is g a b-flat c d
-#. e-flat f-sharp g, and all the other flat minor keys
-#. end up with a natural leading note. And there you
-#. have it.
-#. John Sankey <bf250@freenet.carleton.ca>
-#.
-#. Let's also do a-minor: a b c d e f gis a
-#.
-#. --jcn
-#. as -> gis
-#. des -> cis
-#. ges -> fis
-#. g -> fisis
-#. d -> cisis
-#. a -> gisis
-#. b -> ces
-#. e -> fes
-#. f -> eis
-#. c -> bis
-#. # FIXME: compile fix --jcn
-#. TODO: move space
-#. fis cis gis dis ais eis bis
-#. bes es as des ges ces fes
-#. urg, we should be sure that we're in a lyrics staff
-#. all include ALL_NOTES_OFF
-#. ugh, must set key while parsing
-#. because Note init uses key
-#. Better do Note.calc () at dump time?
-#. last_lyric.clocks = t - last_time
-#. hmm
-#. urg, this will barf at meter changes
-#. urg LilyPond doesn't start at c4, but
-#. remembers from previous tracks!
-#. reference_note = Note (clocks_per_4, 4*12, 0)
-#. must be in \notes mode for parsing \skip
-#: midi2ly.py:1002
-#, python-format
-msgid "%s output to `%s'..."
-msgstr "%s -tuloste paikkaan `%s'..."
-
-#: midi2ly.py:1033
-msgid "Example:"
-msgstr "Esimerkki:"
-
-#: midi2ly.py:1083
-msgid "no files specified on command line."
-msgstr "tiedostoja ei annettu komentorivillä."
-
-#. !@PYTHON@
-#. mup2ly.py -- mup input converter
-#.
-#. source file of the GNU LilyPond music typesetter
-#.
-#. (c) 2001
-#. if set, LILYPONDPREFIX must take prevalence
-#. if datadir is not set, we're doing a build and LILYPONDPREFIX
-#: mup2ly.py:70
-msgid "Convert mup to LilyPond source."
-msgstr "Muunna mup LilyPond-muotoon."
-
-#: mup2ly.py:73
-msgid "debug"
-msgstr "testaa"
-
-#: mup2ly.py:74
-msgid "define macro NAME [optional expansion EXP]"
-msgstr "määrittele makro NAME [vaihtoehtoinen laajennus EXP]"
-
-#: mup2ly.py:77
-msgid "only pre-process"
-msgstr "vain esiprosessointi"
-
-#. Duh.  Python style portable: cp *.EXT OUTDIR
-#. system ('cp *.%s %s' % (ext, outdir), 1)
-#. Python < 1.5.2 compatibility
-#.
-#. On most platforms, this is equivalent to
-#. `normpath(join(os.getcwd()), PATH)'.  *Added in Python version 1.5.2*
-#. if set, LILYPONDPREFIX must take prevalence
-#. if datadir is not set, we're doing a build and LILYPONDPREFIX
-#. ###############################################################
-#. END Library
-#.
-#. PMX cut and paste
-#.
-#. if not self.entries:
-#. #return '\n'
-#. #ugh ugh
-#. return '\n%s = {}\n\n' % self.idstring ()
-#. ugh
-#. def set_clef (self, letter):
-#. clstr = clef_table[letter]
-#. self.voices[0].add_nonchord (Clef (clstr))
-#. urg
-#. maybe use import copy?
-#. for i in self.pitches:
-#. ch.pitches.append (i)
-#. for i in self.scripts:
-#. ch.scripts.append (i)
-#. http://www.arkkra.com/doc/uguide/contexts.html
-#. #self.current_staffs = []
-#. duh
-#. FIXME: 1?
-#. FIXME: does key play any role in this?
-#. ch = self.current_voices[0].last_chord ()
-#. ch.basic_duration = self.current_voices[0].last_chord ().basic_duration
-#. ugh
-#. ch = self.current_voices[0].last_chord ()
-#. `;' is not a separator, chords end with ';'
-#. mup resets default duration and pitch each bar
-#. ugh: these (and lots more) should also be parsed in
-#. context staff.  we should have a class Staff_properties
-#. and parse/set all those.
-#. shortcut: set to official mup maximum (duh)
-#. self.set_staffs (40)
-#: mup2ly.py:1076
-#, python-format
-msgid "no such context: %s"
-msgstr "kontekstia ei ole: %s"
-
-#. hmm
-#. dig this: mup allows ifdefs inside macro bodies
-#. don't do nested multi-line defines
-#. duh: mup is strictly line-based, except for `define',
-#. which is `@' terminated and may span several lines
-#. don't define new macros in unactive areas
-#. To support nested multi-line define's
-#. process_function and macro_name, macro_body
-#. should become lists (stacks)
-#. The mup manual is undetermined on this
-#. and I haven't seen examples doing it.
-#.
-#. don't do nested multi-line define's
-#. writes to stdout for help2man
-#. don't call
-#. identify ()
-#. sys.stdout.flush ()
-#. handy emacs testing
-#. if not files:
-#. files = ['template.mup']
-#: mup2ly.py:1300
-#, python-format
-msgid "Processing `%s'..."
-msgstr "Prosessoidaan `%s'..."
-
-#: mup2ly.py:1319
-#, python-format
-msgid "Writing `%s'..."
-msgstr "Kirjoitetaan `%s'..."
-
-#: getopt-long.cc:146
-#, c-format
-msgid "option `%s' requires an argument"
-msgstr "optio `%s' vaatii argumentin"
-
-#: getopt-long.cc:150
-#, c-format
-msgid "option `%s' doesn't allow an argument"
-msgstr "optio `%s' ei salli argumenttia"
-
-#: getopt-long.cc:154
-#, c-format
-msgid "unrecognized option: `%s'"
-msgstr "tunnistamaton optio: `%s'"
-
-#: getopt-long.cc:161
-#, c-format
-msgid "invalid argument `%s' to option `%s'"
-msgstr "epäkelpo argumentti `%s' optiolle `%s'"
-
-#: warn.cc:25
-#, c-format
-msgid "warning: %s\n"
-msgstr "varoitus: %s\n"
-
-#: warn.cc:31
-#, c-format
-msgid "error: %s\n"
-msgstr "virhe: %s\n"
-
-#: warn.cc:44
-#, c-format
-msgid "programming error: %s (Continuing; cross thumbs)\n"
-msgstr "ohjelmointivirhe: %s (jatketaan; risti kädet)\n"
-
-#: accidental.cc:202 key-signature-interface.cc:137
-#, c-format
-msgid "accidental `%s' not found"
-msgstr "korotusmerkkiä `%s' ei löydy"
-
-#: accidental-engraver.cc:171 new-accidental-engraver.cc:238
-#, c-format
-msgid "Accidental typesetting list must begin with context-name: %s"
-msgstr "Korotusmerkkien ladontalista täytyy alkaa konteksti-nimellä: %s"
-
-#: accidental-engraver.cc:196 new-accidental-engraver.cc:263
-#, c-format
-msgid "unknown accidental typesetting: %s. Ignored"
-msgstr "tuntematan kortusmerkkien ladonta: %s. Sivuutetaan"
-
-#: accidental-engraver.cc:212 new-accidental-engraver.cc:279
-#, c-format
-msgid "Symbol is not a parent context: %s. Ignored"
-msgstr "Symboli ei ole yläkonteksti: %s. Sivuutetaan"
-
-#: accidental-engraver.cc:215 new-accidental-engraver.cc:282
-#, c-format
-msgid "Accidental typesetting must be pair or context-name: %s"
-msgstr "Korotusmerkkien ladonta täytyy olla pari tai konteksti-nimi: %s"
-
-#: afm.cc:66
-#, c-format
-msgid "can't find character number: %d"
-msgstr "ei löytynyt merkkiä: %d"
-
-#: afm.cc:81
-#, c-format
-msgid "can't find character called: `%s'"
-msgstr "ei löytynyt merkkiä nimeltä: `%s'"
-
-#: afm.cc:142
-#, c-format
-msgid "Error parsing AFM file: `%s'"
-msgstr "Virhe jäsennettäessä AFM-tiedostoa: `%s'"
-
-#: all-font-metrics.cc:95
-#, c-format
-msgid "checksum mismatch for font file: `%s'"
-msgstr "virhesumma ei täsmää fonttitiedostolle: `%s'"
-
-#: all-font-metrics.cc:97
-#, c-format
-msgid "does not match: `%s'"
-msgstr "ei täsmää: `%s'"
-
-#: all-font-metrics.cc:102
-msgid " Rebuild all .afm files, and remove all .pk and .tfm files.  Rerun with -V to show font paths."
-msgstr " Uudista kaikki .afm -tiedosto, ja poista kaikki .pk ja .tfm -tiedostot.  Aja uudelleen lisäten -V nähdäksesi fonttipolut."
-
-#: all-font-metrics.cc:103
-msgid ""
-"A script for removing font-files is delivered with the source-code,\n"
-"in buildscripts/clean-fonts.sh"
-msgstr ""
-"Skripti fonttitiedostojen poistamista varten toimitetaan lähde-koodin mukaan,\n"
-"tiedostossa buildscripts/clean-fonts.sh"
-
-#: all-font-metrics.cc:169
-#, c-format
-msgid "can't find font: `%s'"
-msgstr "ei löytynyt fonttia: `%s'"
-
-#: all-font-metrics.cc:170
-msgid "Loading default font"
-msgstr "Ladataan oletusfontti"
-
-#: all-font-metrics.cc:185
-#, c-format
-msgid "can't find default font: `%s'"
-msgstr "ei löytynyt oletusfonttia: `%s'"
-
-#: all-font-metrics.cc:186 includable-lexer.cc:59 input-file-results.cc:192
-#, c-format
-msgid "(search path: `%s')"
-msgstr "(hakupolku: `%s')"
-
-#: all-font-metrics.cc:187
-msgid "Giving up"
-msgstr "Luovutetaan"
-
-#: auto-change-iterator.cc:43 change-iterator.cc:60
-#: part-combine-music-iterator.cc:120
-msgid "Can't switch translators, I'm there already"
-msgstr "Ei voitu muuttaa kääntää, on jo valittuna"
-
-#: bar-check-iterator.cc:51
-#, c-format
-msgid "barcheck failed at: %s"
-msgstr "tahtiviivan tarkistus epäonnistui kohdassa: %s"
-
-#: beam.cc:146
-msgid "beam has less than two visible stems"
-msgstr "palkissa on vähemmän kuin kaksi pystyviivaa"
-
-#: beam.cc:151
-msgid "Beam has less than two stems. Removing beam."
-msgstr "Palkissa on vähemmän kuin kaksi pystyviivaa. Poistetaan palkki."
-
-#: beam.cc:976
-msgid "Not sure that we can find a nice beam slope (no viable initial configuration found)."
-msgstr "Ei ole varma löydetäänko sopivaa palkin kaltevuutta (ei löytynyt toimivaa alkuasetusta)"
-
-#: beam-engraver.cc:176
-msgid "already have a beam"
-msgstr "palkki löytyi jo"
-
-#: beam-engraver.cc:259
-msgid "unterminated beam"
-msgstr "päättymätön palkki"
-
-#: beam-engraver.cc:292 chord-tremolo-engraver.cc:197
-msgid "stem must have Rhythmic structure"
-msgstr "varrella on oltava Rhytmic -rakenne"
-
-#: beam-engraver.cc:306
-msgid "stem doesn't fit in beam"
-msgstr "varsi ei sovi palkkiin"
-
-#: beam-engraver.cc:307
-msgid "beam was started here"
-msgstr "palkki aloitettiin täältä"
-
-#: break-align-interface.cc:173
-#, c-format
-msgid "No spacing entry from %s to `%s'"
-msgstr "Ei välistyksen syöttöä paikasta %s paikkaan `%s'"
-
-#: change-iterator.cc:22
-#, c-format
-msgid "can't change `%s' to `%s'"
-msgstr "ei voitu vaihtaa `%s' tilalle `%s'"
-
-#.
-#. We could change the current translator's id, but that would make
-#. errors hard to catch
-#.
-#. last->translator_id_string_  = get_change ()->change_to_id_string_;
-#.
-#: change-iterator.cc:79
-msgid "I'm one myself"
-msgstr "Olen yksinäni"
-
-#: change-iterator.cc:82
-msgid "none of these in my family"
-msgstr "ei yksikään näistä perheessäni"
-
-#: chord-tremolo-engraver.cc:98
-#, c-format
-msgid "Chord tremolo with %d elements. Must have two elements."
-msgstr "Sointutremolo %d:lla elementillä. Täytyy olla kaksi elementtiä."
-
-#: chord-tremolo-engraver.cc:157
-msgid "unterminated chord tremolo"
-msgstr "päättymätön sointutremolo"
-
-#: chord-tremolo-iterator.cc:69
-msgid "no one to print a tremolos"
-msgstr "ei ketään joka voisi tulostaan tremolon"
-
-#: clef.cc:64
-#, c-format
-msgid "clef `%s' not found"
-msgstr "avainta `%s' ei löydy"
-
-#: cluster.cc:131
-#, c-format
-msgid "unknown cluster style `%s'"
-msgstr "tuntematon klusterityyli: `%s'"
-
-#: coherent-ligature-engraver.cc:84
-#, c-format
-msgid "gotcha: ptr=%ul"
-msgstr "löytyi: ptr=%ul"
-
-#: coherent-ligature-engraver.cc:96
-#, c-format
-msgid "distance=%f"
-msgstr "etäisyys=%f"
-
-#: coherent-ligature-engraver.cc:139
-#, c-format
-msgid "Coherent_ligature_engraver: setting `spacing-increment = 0.01': ptr=%ul"
-msgstr "Coherent_ligature_engraver: asetetaan `spacing-increment = 0.01': ptr=%ul"
-
-#: custos.cc:92
-#, c-format
-msgid "custos `%s' not found"
-msgstr "custos `%s' ei löytynyt"
-
-#: dimensions.cc:13
-msgid "NaN"
-msgstr "NaN"
-
-#: dynamic-engraver.cc:204 span-dynamic-performer.cc:82
-msgid "can't find start of (de)crescendo"
-msgstr "ei löytynyt alkua (de)crescendolle"
-
-#: dynamic-engraver.cc:216
-msgid "already have a crescendo"
-msgstr "crescendo jo käytössä"
-
-#: dynamic-engraver.cc:217
-msgid "already have a decrescendo"
-msgstr "decresendo jo käytössä"
-
-#: dynamic-engraver.cc:220
-msgid "Cresc started here"
-msgstr "Cresc aloitettiin tästä"
-
-#: dynamic-engraver.cc:323
-msgid "unterminated (de)crescendo"
-msgstr "päätymätön (de)crescendo"
-
-#: event.cc:49
-#, c-format
-msgid "Transposition by %s makes alteration larger than two"
-msgstr "Transponointi %s tekee muutokset suuremmaksi kuin kaksi"
-
-#: event-chord-iterator.cc:76 output-property-music-iterator.cc:27
-#, c-format
-msgid "Junking event: `%s'"
-msgstr "Hylätään tapahtuma: `%s'"
-
-#: extender-engraver.cc:94
-msgid "unterminated extender"
-msgstr "päättymätön pidennys"
-
-#: extender-engraver.cc:106
-msgid "Nothing to connect extender to on the left.  Ignoring extender event."
-msgstr "Pidennystä ei voitu liittää vasemmalle.  Hylätään pidennystapahtuma.\""
-
-#: folded-repeat-iterator.cc:88
-msgid "no one to print a repeat brace"
-msgstr "kukaan ei voinut tulostaa toistoa"
-
-#: font-interface.cc:239
-msgid "couldn't find any font satisfying "
-msgstr "mikään fontti ei tuottanut toivottua tulosta"
-
-#: glissando-engraver.cc:100
-msgid "Unterminated glissando."
-msgstr "Päättymätön glissando."
-
-#: gourlay-breaking.cc:188
-#, c-format
-msgid "Optimal demerits: %f"
-msgstr "Optimaalinen heikennys: %f"
-
-#: gourlay-breaking.cc:193
-msgid "No feasible line breaking found"
-msgstr "Ei löytynyt sopivaa viivan katkaisukohtaa"
-
-#: gregorian-ligature-engraver.cc:59
-#, c-format
-msgid "\\%s ignored"
-msgstr "\\%s sivuutettiin"
-
-#: gregorian-ligature-engraver.cc:64
-#, c-format
-msgid "implied \\%s added"
-msgstr "lisättiin vihjattu \\%s"
-
-#.
-#. Todo: do something sensible. The grob-pq-engraver is not water
-#. tight, and stuff like tupletSpannerDuration confuses it.
-#.
-#: grob-pq-engraver.cc:130
-#, c-format
-msgid ""
-"Skipped something?\n"
-"Grob %s ended before I expected it to end."
-msgstr ""
-"Jotain ohitettiin?\n"
-"Piirto %s loppui ennen kuin sen oletettiin loppuvan."
-
-#: hairpin.cc:98
-msgid "decrescendo too small"
-msgstr "liian lyhyt decrescendo"
-
-#: hairpin.cc:99
-msgid "crescendo too small"
-msgstr "liian lyhyt crescendo"
-
-#: horizontal-bracket-engraver.cc:64
-msgid "Don't have that many brackets."
-msgstr "Ei ole käytössä niin monia sulkeita."
-
-#: horizontal-bracket-engraver.cc:73
-msgid "Conflicting note group events."
-msgstr "Ristiriitainen nuottiryhmä -tapaus."
-
-#: hyphen-engraver.cc:87
-msgid "unterminated hyphen"
-msgstr "päättymätön tavuviiva"
-
-#: hyphen-engraver.cc:99
-msgid "Nothing to connect hyphen to on the left.  Ignoring hyphen event."
-msgstr "Mitään ei voitu liittää tavuviivan vasemmalle puolelle.  Sivutetaan tavutus."
-
-#: input.cc:99
-msgid "non fatal error: "
-msgstr "ei-keskeyttävä virhe:"
-
-#: input.cc:107 source-file.cc:146 source-file.cc:239
-msgid "position unknown"
-msgstr "sijainti tuntematon:"
-
-#: input-file-results.cc:72 source-file.cc:54 streams.cc:38
-#, c-format
-msgid "can't open file: `%s'"
-msgstr "tiedostoa ei voitu avata: `%s'"
-
-#: input-file-results.cc:132
-msgid "Score contains errors; will not process it"
-msgstr "Viivastossa on virheitä; sitä ei prosessoida"
-
-#: input-file-results.cc:172
-#, c-format
-msgid "Now processing: `%s'"
-msgstr "Prosessoidaan: `%s'"
-
-#: key-performer.cc:96
-msgid "FIXME: key change merge"
-msgstr "KORJATTAVA: sävellajin vaihdon sulautuma"
-
-#: kpath.cc:76
-#, c-format
-msgid "Kpathsea couldn't find TFM file `%s'"
-msgstr "Kpathsea ei löytänyt TFM-tiedostoa `%s'"
-
-#: ligature-engraver.cc:159
-msgid "can't find start of ligature"
-msgstr "ei löytynyt alkua ligature:lle"
-
-#: ligature-engraver.cc:165
-msgid "no right bound"
-msgstr "ei oikeata reunaa"
-
-#: ligature-engraver.cc:191
-msgid "already have a ligature"
-msgstr "ligature löytyi jo"
-
-#: ligature-engraver.cc:207
-msgid "no left bound"
-msgstr "ei vasenta reunaa"
-
-#: ligature-engraver.cc:258
-msgid "unterminated ligature"
-msgstr "päättymätön ligature"
-
-#: ligature-engraver.cc:282
-msgid "ligature may not contain rest; ignoring rest"
-msgstr "ligature ei voi sisältää taukoa; sivuutetaan tauko"
-
-#: ligature-engraver.cc:283
-msgid "ligature was started here"
-msgstr "ligature alkoi tästä"
-
-#: lily-guile.cc:88
-#, c-format
-msgid "(load path: `%s')"
-msgstr "(hakupolku: `%s')"
-
-#: lily-guile.cc:576
-#, c-format
-msgid "Can't find property type-check for `%s' (%s)."
-msgstr "Ei löytynyt tyyppitarkistusta ominaisuudelle `%s' (%s)."
-
-#: lily-guile.cc:579
-msgid "Perhaps you made a typing error?"
-msgstr "Tekinet näppäilyvirheen?"
-
-#: lily-guile.cc:585
-msgid "Doing assignment anyway."
-msgstr "Tehdään tehtävä joka tapauksessa."
-
-#: lily-guile.cc:599
-#, c-format
-msgid "Type check for `%s' failed; value `%s' must be of type `%s'"
-msgstr "Tyypin `%s' tarkistus epäonnistui; arvon `%s' on oltava tyyppiä `%s'"
-
-#: lookup.cc:173
-msgid "round filled box horizontal extent smaller than blot; decreasing blot"
-msgstr "pyöristetyn, täytetyn laatikon horisontaali laajuus on pilkkua pienempi; pienennetään pilkkua"
-
-#: lookup.cc:178
-msgid "round filled box vertical extent smaller than blot; decreasing blot"
-msgstr "pyöristetyn, täytetyn laatikon vertikaali laajuus on pilkkua pienempi; pienennetään pilkku"
-
-#: lyric-phrasing-engraver.cc:311
-msgid "lyrics found without any matching notehead"
-msgstr "lyriikkaa löytyi ilman vastaavaa nuotinpäätä"
-
-#: lyric-phrasing-engraver.cc:317
-msgid "Huh? Melismatic note found to have associated lyrics."
-msgstr "Täh? Melismoitu nuotti ilman siihen liittyvään lyriikkaa."
-
-#: main.cc:106
-msgid "EXPR"
-msgstr "EXPR"
-
-#: main.cc:107
-msgid "set options, use -e '(ly-option-usage)' for help"
-msgstr "aseta optiot, käytä -e '(ly-option-usage)' saadaksesi opastusta"
-
-#: main.cc:110
-msgid "use output format EXT"
-msgstr "käytä tulostemuotoa EXT"
-
-#: main.cc:112
-msgid "FIELD"
-msgstr "KENTTÄ"
-
-#: main.cc:112
-msgid "write header field to BASENAME.FIELD"
-msgstr "kirjoita otsakekenttä paikkaan PERUSNIMI.KENTTÄ"
-
-#: main.cc:113
-msgid "add DIR to search path"
-msgstr "lisää DIR hakupolkuun"
-
-#: main.cc:114
-msgid "use FILE as init file"
-msgstr "käytetään TIEDOSTO alustustiedostona"
-
-#: main.cc:118
-msgid "prepend DIR to dependencies"
-msgstr "lisää DIR riippuvuuksien alkuun"
-
-#.
-#. should audit again.
-#.
-#: main.cc:123
-msgid "inhibit file output naming and exporting"
-msgstr "estä tiedostotulosteen nimeäminen ja siirtotiedostoon kirjoittaminen"
-
-#. No version number or newline here. It confuses help2man.
-#: main.cc:155
-#, c-format
-msgid "Usage: %s [OPTIONS]... FILE..."
-msgstr "Käyttö: %s [OPTIOT]... TIEDOSTO..."
-
-#: main.cc:157
-msgid "Typeset music and or play MIDI from FILE."
-msgstr "Lado musiikki ja tai soita MIDI tiedostosta TIEDOSTO."
-
-#: main.cc:160
-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 on musiikin ladontaohjelma. Se tuottaa kaunista nuottikuvaa\n"
-"käyttäen korkean tason kuvauskieltä syötteenä.  LilyPond on osa\n"
-"GNU Projektia.\n"
-
-#: main.cc:182
-#, c-format
-msgid ""
-"This is free software.  It is covered by the GNU General Public License,\n"
-"and you are welcome to change it and/or distribute copies of it under\n"
-"certain conditions.  Invoke as `%s --warranty' for more information.\n"
-msgstr ""
-"Tämä on ilmaisohjelmisto. Siihen sovelletaan GNU General Public License,\n"
-"ja olet tervetullut muuttamaan sitä ja/tai levittämään siitä kopioita\n"
-"tietyillä ehdoilla. Suorita `%s --warranty' saadaksesi lisäinformaatiota.\n"
-
-#: main.cc:198
-msgid "GNU LilyPond -- The music typesetter"
-msgstr "GNU LilyPond -- Musiikin ladontaohjelma"
-
-#: main.cc:206
-msgid ""
-"    This program is free software; you can redistribute it and/or\n"
-"modify it under the terms of the GNU General Public License version 2\n"
-"as published by the Free Software Foundation.\n"
-"\n"
-"    This program is distributed in the hope that it will be useful,\n"
-"but WITHOUT ANY WARRANTY; without even the implied warranty of\n"
-"MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU\n"
-"General Public License for more details.\n"
-"\n"
-"    You should have received a copy (refer to the file COPYING) of the\n"
-"GNU General Public License along with this program; if not, write to\n"
-"the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,\n"
-"USA.\n"
-msgstr ""
-"    Tämä ohjelma on vapaata lähdekoodia; voit levittää sitä ja/tai\n"
-"muokata sitä lisenssin GNU General Public License versio 2 ehdoilla, \n"
-"kuten Free Software Foundation on sen julkaissut.\n"
-"\n"
-"    Ohjelmaa levitetään siinä toivossa että se on hyödyllinen, mutta\n"
-"ILMAN MITÄÄN TAKUUTA; ilman että edes annettaisiin ymmärtää takeista\n"
-"KAUPAKSIKÄYVYYDESTÄ tai SOPIVUUDESTA TIETTYYN TARKOITUKSEEN.  Lisätietoja\n"
-"voit katsoa lisenssistä GNU General Public Licence.\n"
-"\n"
-"    Saat kopion (katso tiedosto COPYING) lisenssistä GNU General Public\n"
-"License ohjelman mukana; jos et saanut; kirjoita osoitteeseen\n"
-"Free Software Foundation, Inc., 59 Temple Place - Suite 330,\n"
-"Boston, MA 02111-1307, USA.\n"
-
-#: mensural-ligature.cc:153
-#, c-format
-msgid "Mensural_ligature:thickness undefined on flexa %d; assuming 1.4"
-msgstr "Mensural_ligature: paksuus määrittämättä kohdassa flexa %d; oletetaan 1.4"
-
-#: mensural-ligature.cc:169
-#, c-format
-msgid "Mensural_ligature:delta-pitch undefined on flexa %d; assuming 0"
-msgstr "Mensural_ligature: delta-pitch määrittämättä kohdassa flexa %d; oletetaan 0"
-
-#: mensural-ligature.cc:182
-#, c-format
-msgid "Mensural_ligature:flexa-width undefined on flexa %d; assuming 2.0"
-msgstr "Mensural_ligature: flexa-width määrittämättä kohdassa flexa %d; oletetaan 2.0\""
-
-#: mensural-ligature.cc:215
-msgid "Mensural_ligature:unexpected case fall-through"
-msgstr "Mensural_ligature: odottamaton tapauksen raukeaminen"
-
-#: mensural-ligature.cc:225
-msgid "Mensural_ligature: (join_left == 0)"
-msgstr "Mensural_ligature: (join_left == 0)"
-
-#: mensural-ligature-engraver.cc:248 mensural-ligature-engraver.cc:397
-msgid "unexpected case fall-through"
-msgstr "odottamaton tapauksen raukeaminen"
-
-#: mensural-ligature-engraver.cc:259
-msgid "ligature with less than 2 heads -> skipping"
-msgstr "ligatuuri vähemmällä kuin 2:lla nuottipäällä -> ohitetaan"
-
-#: mensural-ligature-engraver.cc:279
-msgid "can not determine pitch of ligature primitive -> skipping"
-msgstr "ei voitu määrittää nuottikorkeutta ligatuurin osalle -> ohitetaan"
-
-#: mensural-ligature-engraver.cc:302
-msgid "prime interval within ligature -> skipping"
-msgstr "priimi-intervalli ligatuurissa -> ohitetaan"
-
-#: mensural-ligature-engraver.cc:312
-msgid "mensural ligature: duration none of L, B, S -> skipping"
-msgstr "mensuraaliligatuuri: kesto ei ollut L, B tai S -> ohitetaan"
-
-#: midi-item.cc:148
-#, c-format
-msgid "no such instrument: `%s'"
-msgstr "ei löytynyt instrumenttia: `%s'"
-
-#: midi-item.cc:238
-msgid "silly duration"
-msgstr "sekava kesto"
-
-#: midi-item.cc:251
-msgid "silly pitch"
-msgstr "sekava äänenkorkeus"
-
-#: music-output-def.cc:111
-#, c-format
-msgid "can't find `%s' context"
-msgstr "ei löytynyt kontekstia `%s'"
-
-#: my-lily-lexer.cc:169
-#, c-format
-msgid "Identifier name is a keyword: `%s'"
-msgstr "Tunnistenimi on avainsana: `%s'"
-
-#: my-lily-lexer.cc:191
-#, c-format
-msgid "error at EOF: %s"
-msgstr "virhe tiedoston lopussa (EOF): %s"
-
-#: my-lily-parser.cc:44
-msgid "Parsing..."
-msgstr "Jäsennetään..."
-
-#: my-lily-parser.cc:54
-msgid "Braces don't match"
-msgstr "Aaltosulkumerkit eivät täsmää"
-
-#.
-#. music for the softenon children?
-#.
-#: new-fingering-engraver.cc:143
-msgid "music for the martians."
-msgstr "musiikkia marsilaisille"
-
-#: new-tie-engraver.cc:166 tie-engraver.cc:217
-msgid "lonely tie"
-msgstr "yksinäinen sidos"
-
-#: note-collision.cc:340
-msgid "Too many clashing notecolumns.  Ignoring them."
-msgstr "Liian monta törmäävää nuottisaraketta.  Sivuutetaan ne."
-
-#: note-head.cc:127
-#, c-format
-msgid "note head `%s' not found"
-msgstr "nuottipäätä `%s' ei löytynyt"
-
-#: paper-def.cc:96
-#, c-format
-msgid "paper output to `%s'..."
-msgstr "paperituloste paikkaan `%s'..."
-
-#: paper-score.cc:78
-#, c-format
-msgid "Element count %d (spanners %d) "
-msgstr "Elementtien määrä: %d (ladokkeita: %d)"
-
-#: paper-score.cc:83
-msgid "Preprocessing graphical objects..."
-msgstr "Esiprosessoidaan graafisia kohteita..."
-
-#: paper-score.cc:116
-msgid "Outputting Score, defined at: "
-msgstr "Tulostetaan viivasto, määrittelypaikasta: "
-
-#: parse-scm.cc:79
-msgid "GUILE signaled an error for the expression begining here"
-msgstr "GUILE aitoi virheen lausekkeelle, joka alkoi täältä"
-
-#.
-#. We could change the current translator's id, but that would make
-#. errors hard to catch
-#.
-#. last->translator_id_string_  = get_change ()->change_to_id_string_;
-#.
-#: part-combine-music-iterator.cc:139
-#, c-format
-msgid "I'm one myself: `%s'"
-msgstr "Olen yksikseni: '%s'"
-
-#: part-combine-music-iterator.cc:142
-#, c-format
-msgid "none of these in my family: `%s'"
-msgstr "yksikään näistä ei ole perheestäni: `%s'"
-
-#: percent-repeat-engraver.cc:109
-msgid "Don't know how to handle a percent repeat of this length."
-msgstr "Ei tiedetä kuinka kohdella tämän mittaista prosenttitoistoa."
-
-#: percent-repeat-engraver.cc:163
-msgid "unterminated percent repeat"
-msgstr "päättymätön prosenttitoisto"
-
-#: percent-repeat-iterator.cc:65
-msgid "no one to print a percent"
-msgstr "kukaan ei voinut tulostaa prosenttia"
-
-#: performance.cc:51
-msgid "Track ... "
-msgstr "Jälki ... "
-
-#: performance.cc:83
-msgid "Creator: "
-msgstr "Tekijä: "
-
-#: performance.cc:103
-msgid "at "
-msgstr "kohdassa "
-
-#: performance.cc:114
-#, c-format
-msgid "from musical definition: %s"
-msgstr "musiikkimäärityksestä: %s"
-
-#: performance.cc:169
-#, c-format
-msgid "MIDI output to `%s'..."
-msgstr "MIDI-tuloste paikkaan `%s'..."
-
-#: phrasing-slur-engraver.cc:123
-msgid "unterminated phrasing slur"
-msgstr "päättymätön fraasikaari"
-
-#: phrasing-slur-engraver.cc:141
-msgid "can't find start of phrasing slur"
-msgstr "ei voitu löytää alkua fraasikaarelle"
-
-#: piano-pedal-engraver.cc:235 piano-pedal-engraver.cc:250
-#: piano-pedal-engraver.cc:305 piano-pedal-performer.cc:82
-#, c-format
-msgid "can't find start of piano pedal: `%s'"
-msgstr "ei voitu löytää alkua pianopedaalille: `%s'"
-
-#: piano-pedal-engraver.cc:410
-msgid "unterminated pedal bracket"
-msgstr "päättymätön pedaalisulkumerkki"
-
-#: property-iterator.cc:97
-#, c-format
-msgid "Not a grob name, `%s'."
-msgstr "Ei ollut nimi graafiselle objektille (grob): `%s'."
-
-#: rest.cc:139
-#, c-format
-msgid "rest `%s' not found, "
-msgstr "taukoa `%s' ei löytynyt, "
-
-#: rest-collision.cc:199
-msgid "too many colliding rests"
-msgstr "liian monta törmäävää taukoa"
-
-#: scm-option.cc:45
-msgid "lilypond -e EXPR means:"
-msgstr "lilypond -e EXPR tarkoittaa:"
-
-#: scm-option.cc:47
-msgid "  Evalute the Scheme EXPR before parsing any .ly files."
-msgstr "  Evaluoidaan skeema EXPR ennen kuin jäsennetään yhtäkään .ly -tiedostoista."
-
-#: scm-option.cc:49
-msgid "  Multiple -e options may be given, they will be evaluated sequentially."
-msgstr "  Useita -e optioita voidaan antaa, ne evaluoidaan peräkkäisinä"
-
-#: scm-option.cc:51
-msgid "  The function ly-set-option allows for access to some internal variables."
-msgstr "  Funktio ly-set-option sallii pääsyn joihinkin sisäisiin muuttujiin"
-
-#: scm-option.cc:53
-msgid "Usage: lilypond -e \"(ly-set-option SYMBOL VAL)\""
-msgstr "Käyttö: lilypond -e \"(ly-set-option SYMBOLI ARVO)\""
-
-#: scm-option.cc:55
-msgid "Where SYMBOL VAL pair is any of:"
-msgstr "Missä (SYMBOLI,ARVO)-pari on jokin näistä:"
-
-#: scm-option.cc:128
-msgid "Unknown internal option!"
-msgstr "Tuntematon sisäinen optio!"
-
-#: score.cc:85
-msgid "Interpreting music..."
-msgstr "Tulkitaan musiikkia..."
-
-#: score.cc:97
-msgid "Need music in a score"
-msgstr "Laita musiikkia viivastolle"
-
-#. should we? hampers debugging.
-#: score.cc:111
-msgid "Errors found/*, not processing score*/"
-msgstr "Virheitä löytyi/*, ei prosessoida viivastoa*/"
-
-#: score.cc:118
-#, c-format
-msgid "elapsed time: %.2f seconds"
-msgstr "kulunut aika: %.2f sekuntia"
-
-#: score-engraver.cc:99
-#, c-format
-msgid "can't find `%s'"
-msgstr "`%s' jäi löytymättä"
-
-#: score-engraver.cc:100
-msgid "Fonts have not been installed properly.  Aborting"
-msgstr "Fontteja ei oltu asennettu kunnolla. Keskeytetään"
-
-#: score-engraver.cc:205
-#, c-format
-msgid "unbound spanner `%s'"
-msgstr "sitomaton ladoke `%s'"
-
-#: script-engraver.cc:90
-#, c-format
-msgid "Don't know how to interpret articulation `%s'"
-msgstr "Ei tiedetä kuinka tulkita artikulaatio: `%s'"
-
-#. this shouldn't happen, but let's continue anyway.
-#: separation-item.cc:53 separation-item.cc:101
-msgid "Separation_item:  I've been drinking too much"
-msgstr "Separation_item:  Olen juonut liikaa"
-
-#: simple-spacer.cc:248
-#, c-format
-msgid "No spring between column %d and next one"
-msgstr "Ei jousta sarakkeen %d ja sitä seuraavan välillä"
-
-#: slur-engraver.cc:141
-msgid "unterminated slur"
-msgstr "päättymätön kaari"
-
-#. How to shut up this warning, when Voice_devnull_engraver has
-#. eaten start event?
-#: slur-engraver.cc:159
-msgid "can't find start of slur"
-msgstr "ei löytynyt alkua kaarelle"
-
-#: source-file.cc:67
-#, c-format
-msgid "Huh?  Got %d, expected %d characters"
-msgstr "Täh?  Saatiin %d merkkiä, oletetun %d asemesta"
-
-#: spacing-spanner.cc:379
-#, c-format
-msgid "Global shortest duration is %s\n"
-msgstr "Globaali lyhin kesto on %s\n"
-
-#: spring-smob.cc:32
-#, c-format
-msgid "#<spring smob d= %f>"
-msgstr "#<spring smob d= %f>"
-
-#: staff-symbol.cc:61
-msgid "staff symbol: indentation yields beyond end of line"
-msgstr "viivastosymboli: sisennys vie rivin lopun taakse"
-
-#: stem.cc:118
-msgid "Weird stem size; check for narrow beams"
-msgstr "Outo varren koko; koeta lyhyempiä palkkeja"
-
-#: stem.cc:611
-#, c-format
-msgid "flag `%s' not found"
-msgstr "lippua `%s' ei löydetty"
-
-#: stem.cc:624
-#, c-format
-msgid "flag stroke `%s' not found"
-msgstr "lipun piirtoa `%s' ei löytynyt"
-
-#: stem-engraver.cc:96
-msgid "tremolo duration is too long"
-msgstr "tremolon kesto on liian pitkä"
-
-#: stem-engraver.cc:124
-#, c-format
-msgid "Adding note head to incompatible stem (type = %d)"
-msgstr "Lisätään nuottipää sopimattomaan varteen (tyyppi = %d)"
-
-#: stem-engraver.cc:125
-msgid "Don't you want polyphonic voices instead?"
-msgstr "Etkö haluaisi polyfonisia äänisiä sen sijaan?"
-
-#: streams.cc:34
-#, c-format
-msgid "can't create directory: `%s'"
-msgstr "ei voitu tehdä hakemistoa: `%s'"
-
-#: streams.cc:48
-msgid "Error syncing file (disk full?)"
-msgstr "Virhe synkronisoitaessa tiedostoa (onko levy täysi?)"
-
-#: system.cc:125
-#, c-format
-msgid "Element count %d."
-msgstr "Elementtien määrä: %d."
-
-#: system.cc:372
-#, c-format
-msgid "Grob count %d "
-msgstr "Graafisien objektien (grob) määrä: %d "
-
-#: system.cc:386
-msgid "Calculating line breaks..."
-msgstr "Lasketaan rivinvaihtoja..."
-
-#: text-spanner-engraver.cc:81
-msgid "can't find start of text spanner"
-msgstr "ei löydetty alkua tekstiladokkeelle"
-
-#: text-spanner-engraver.cc:95
-msgid "already have a text spanner"
-msgstr "tekstiladoke löytyi jo"
-
-#: text-spanner-engraver.cc:164
-msgid "unterminated text spanner"
-msgstr "päättymätön tekstiladoke"
-
-#: tfm.cc:83
-#, c-format
-msgid "can't find ascii character: %d"
-msgstr "ei löydetty ASCII-merkkiä: %d"
-
-#. Not using ngettext's plural feature here, as this message is
-#. more of a programming error.
-#: tfm-reader.cc:108
-#, c-format
-msgid "TFM header of `%s' has only %u word (s)"
-msgstr "TFM-otsakkeessa `%s' on vain %u sana(a)"
-
-#: tfm-reader.cc:142
-#, c-format
-msgid "%s: TFM file has %u parameters, which is more than the %u I can handle"
-msgstr "%s: TFM-tiedostossa on %u parametria, mikä on enemmän kuin maksimimäärä %u"
-
-#: tie-performer.cc:159
-msgid "No ties were created!"
-msgstr "Sidoksia ei tehty!"
-
-#: time-scaled-music-iterator.cc:25
-msgid "no one to print a tuplet start bracket"
-msgstr "ketään ei löytynyt tulostamaan tupletin alkusulkua"
-
-#. If there is no such symbol, we default to the numbered style.
-#. (Here really with a warning!)
-#: time-signature.cc:87
-#, c-format
-msgid "time signature symbol `%s' not found; reverting to numbered style"
-msgstr "aikamerkintäsymbolia `%s' ei löytynyt; vaihdetaan numeroituun tyyliin"
-
-#.
-#. Todo: should make typecheck?
-#.
-#. OTOH, Tristan Keuris writes 8/20 in his Intermezzi.
-#.
-#: time-signature-engraver.cc:57
-#, c-format
-msgid "Found strange time signature %d/%d."
-msgstr "Löydettiin outo aikamerkintä: %d/%d."
-
-#: translator-ctors.cc:53
-#, c-format
-msgid "unknown translator: `%s'"
-msgstr "tuntematon tulkitsija: `%s'"
-
-#: translator-def.cc:105
-msgid "Program has no such type"
-msgstr "Ohjelmalla ei ole sellaista tyyppiä"
-
-#: translator-def.cc:111
-#, c-format
-msgid "Already contains: `%s'"
-msgstr "Sisällytettiin jo: `%s'"
-
-#: translator-def.cc:112
-#, c-format
-msgid "Not adding translator: `%s'"
-msgstr "Ei lisätty tulkitsijaa: `%s'"
-
-#: translator-def.cc:229
-#, c-format
-msgid "can't find: `%s'"
-msgstr "ei löytynyt `%s'"
-
-#: translator-group.cc:158
-#, c-format
-msgid "can't find or create `%s' called `%s'"
-msgstr "ei löydetty tai ei luotu `%s' nimeltä `%s'"
-
-#: translator-group.cc:230
-#, c-format
-msgid "can't find or create: `%s'"
-msgstr "ei löydetty tai ei luotu: `%s'"
-
-#: vaticana-ligature.cc:49
-msgid "ascending vaticana style flexa"
-msgstr "laskeva vaticana-tyylinen flexa"
-
-#: vaticana-ligature.cc:219
-msgid "Vaticana_ligature:thickness undefined; assuming 1.4"
-msgstr "Vaticana_ligature: määrittämätön paksuus; oletetaan 1.4"
-
-#: vaticana-ligature.cc:233
-msgid "Vaticana_ligature:x-offset undefined; assuming 0.0"
-msgstr "Vaticana_ligature: x-offset määrittämätön; oletetaan 0.0"
-
-#: vaticana-ligature.cc:258
-msgid "Vaticana_ligature: (delta_pitch == 0)"
-msgstr "Vaticana_ligature: (delta_pitch == 0)"
-
-#: vaticana-ligature.cc:271
-msgid "Vaticana_ligature:delta-pitch -> ignoring join"
-msgstr "Vaticana_ligature:delta-pitch -> sivuutetaan sidos"
-
-#: vaticana-ligature-engraver.cc:477
-#, c-format
-msgid "Vaticana_ligature_engraver: setting `spacing-increment = %f': ptr=%ul"
-msgstr "Vaticana_ligature_engraver: asetetaan `spacing-increment = %f': ptr=%ul"
-
-#: volta-engraver.cc:112
-msgid "No volta spanner to end"
-msgstr "Ei päätettävää volta-ladoketta"
-
-#: volta-engraver.cc:123
-msgid "Already have a volta spanner.  Stopping that one prematurely."
-msgstr "Löytyi ja volta-ladoke.  Lopetetaan se ennenaikaisesti."
-
-#: volta-engraver.cc:127
-msgid "Also have a stopped spanner.  Giving up."
-msgstr "Löytyi myös lopetettu ladoke.  Luovutetaan."
-
-#: parser.yy:480
-msgid "Identifier should have alphabetic characters only"
-msgstr "Tunnisteessa saa olla vain aakkosellisia merkkejä"
-
-#: parser.yy:779
-msgid "More alternatives than repeats.  Junking excess alternatives."
-msgstr "Enemmän vaihtoehtoja kuin kertauksia.  Heitetään pois liialliset vaihtoehdot."
-
-#: parser.yy:861 parser.yy:868
-msgid "\\applycontext takes function argument"
-msgstr "\\applycontext vaati funktioargumentin"
-
-#: parser.yy:877
-msgid "Second argument must be a symbol"
-msgstr "Toisen argumentin on oltava symboli"
-
-#: parser.yy:882
-msgid "First argument must be a procedure taking one argument"
-msgstr "Ensimmäisen argumentin on oltava aliohjelma, joka sa yhden argumentin"
-
-#: parser.yy:1009
-msgid "\\apply takes function argument"
-msgstr "\\apply vaatii funktioargumentin"
-
-#: parser.yy:1501
-msgid "Expecting string as script definition"
-msgstr "Oletetaan merkkijonon olevan skriptimäärittely"
-
-#: parser.yy:1598
-msgid "Expecting musical-pitch value"
-msgstr "Oletetaan musiikillinen nuottikorkeusarvo"
-
-#: parser.yy:1609
-msgid "Must have duration object"
-msgstr "Täytyy olla kesto-objekti"
-
-#: parser.yy:1618 parser.yy:1626
-msgid "Have to be in Lyric mode for lyrics"
-msgstr "Täytyy olla Lyrics -moodissa lyriikkaa varten"
-
-#: parser.yy:1798 parser.yy:1853
-#, c-format
-msgid "not a duration: %d"
-msgstr "ei ole kesto: %d"
-
-#: parser.yy:1949
-msgid "Have to be in Note mode for notes"
-msgstr "Täytyy olla Note -moodissa nuotteja varten"
-
-#: parser.yy:2032
-msgid "Have to be in Chord mode for chords"
-msgstr "Täytyy olla Chord -moodissa sointuja varten"
-
-#: parser.yy:2171
-msgid "need integer number arg"
-msgstr "tarvitaan kokonaislukuargumentti"
-
-#: parser.yy:2316
-msgid "Suspect duration found following this beam"
-msgstr "Epäilty kesto löytyi palkin jälkeen"
-
-#: lexer.ll:186
-msgid "EOF found inside a comment"
-msgstr "EOF löytyi kommentin sisältä"
-
-#: lexer.ll:200
-msgid "\\maininput disallowed outside init files"
-msgstr "\\maininput ei ole sallittu init-alustustiedoston ulkopuolella"
-
-#: lexer.ll:224
-#, c-format
-msgid "wrong or undefined identifier: `%s'"
-msgstr "väärä tai määrittämätön tunniste: `%s'"
-
-#. backup rule
-#: lexer.ll:233
-msgid "Missing end quote"
-msgstr "Puuttuva loppulainausmerkki"
-
-#. backup rule
-#: lexer.ll:255 lexer.ll:259
-msgid "white expected"
-msgstr "oletettiin välilyönti"
-
-#: lexer.ll:268
-msgid "Can't evaluate Scheme in safe mode"
-msgstr "Scheme ei evaluoitunut turvamoodissa"
-
-#: lexer.ll:397 lexer.ll:487
-msgid "Brace found at end of lyric.  Did you forget a space?"
-msgstr "Sulkumerkki löytyi lyriikan lopussa. Unohditko välilyönnin?"
-
-#: lexer.ll:574
-#, c-format
-msgid "invalid character: `%c'"
-msgstr "epäkelpo merkki: `%c'"
-
-#: lexer.ll:651
-#, c-format
-msgid "unknown escaped string: `\\%s'"
-msgstr "tuntematon koodinvaihtomerkillinen merkkijono: `\\\\%s'"
-
-#: lexer.ll:742
-#, c-format
-msgid "Incorrect lilypond version: %s (%s, %s)"
-msgstr "Epäkelpo lilypond versio: %s (%s, %s)"
-
-#: lexer.ll:743
-msgid "Consider updating the input with the convert-ly script"
-msgstr "Harkitse syötteen päivittämistä convert-ly scriptillä"
-
-#~ msgid "Run LilyPond using LaTeX for titling"
-#~ msgstr "Aja LilyPond käyttäen LaTeX:ia otsikoimiseen"
-
-#~ msgid "Fetch and rebuild from latest source package"
-#~ msgstr "Hae ja käännä uudelleen viimeisestä lähdekoodipakkauksesta"
-
-#~ msgid "unpack and build in DIR [%s]"
-#~ msgstr "pura paketti ja käännä hakemistiin DIR [%s]"
-
-#~ msgid "execute COMMAND, subtitute:"
-#~ msgstr "suorita KOMENTO, korvaa:"
-
-#~ msgid "%b: build root"
-#~ msgstr "%b: laatimisen juuri"
-
-#~ msgid "%n: package name"
-#~ msgstr "%n: paketin nimi"
-
-#~ msgid "%r: release directory"
-#~ msgstr "%r: julkaisuhakemisto"
-
-#~ msgid "%t: tarball"
-#~ msgstr "%t: tar-paketti"
-
-#~ msgid "%v: package version"
-#~ msgstr "%v: paketin versio"
-
-#~ msgid "keep all output, and name the directory %s"
-#~ msgstr "säilytä kaikki tulosteet ja nimeä tiedosto %s"
-
-#~ msgid "upon failure notify EMAIL[,EMAIL]"
-#~ msgstr "virheen sattuessa ilmoita osoitteeseen EMAIL[,EMAIL]"
-
-#~ msgid "remove previous build"
-#~ msgstr "poista aiempi laadinta"
-
-#~ msgid "fetch and build URL [%s]"
-#~ msgstr "nouda ja laadi URL [%s]"
-
-#~ msgid "Listing `%s'..."
-#~ msgstr "Listataan `%s'..."
-
-#~ msgid "latest is: %s"
-#~ msgstr "viimeisin on: %s"
-
-#~ msgid "relax, %s is up to date"
-#~ msgstr "rentoudu, %s on päivitetty"
-
-#~ msgid "Fetching `%s'..."
-#~ msgstr "Noudetaan `%s'..."
-
-#~ msgid "Building `%s'..."
-#~ msgstr "Rakennetaan `%s'..."
-
-#~ msgid "invalid subtraction: not part of chord: %s"
-#~ msgstr "epäkelpo korvaus: ei ole soinnun osa: %s"
-
-#~ msgid "invalid inversion pitch: not part of chord: %s"
-#~ msgstr "epäkelpo käänteinen äänenkorkeus: ei ole sounnun osa: %s"
-
-#~ msgid "This was the other key definition."
-#~ msgstr "Tämä oli toinen sävellajin määritys."
-
-#~ msgid ", at "
-#~ msgstr ", kohdassa "
-
-#~ msgid "Pitch arguments out of range"
-#~ msgstr "Äänenkorkeusargumentti vaihteluvälin ulkopuolella"
-
-#~ msgid "(left_head == 0)"
-#~ msgstr "(left_head == 0)"
-
-#~ msgid "undefined left_head"
-#~ msgstr "määrittämätön left_head"
-
-#~ msgid "(right_head == 0)"
-#~ msgstr "(right_head == 0)"
-
-#~ msgid "undefined right_head"
-#~ msgstr "määrittämätön right_head"
-
-#~ msgid "junking lonely porrectus"
-#~ msgstr "heitetään pois yksinäinen Porrectus"
-
-#~ msgid "porrectus style undefined; using mensural"
-#~ msgstr "porrectus-tyyli määrittämätön; käytetään mensuraalia"
-
-#~ msgid "stack size cur %d, max %d\n"
-#~ msgstr "nyk pinokoko: %d, maximi %d\n"
-
-#~ msgid "Putting slur over rest."
-#~ msgstr "Laitetaan kaari tauon päälle."
-
-#~ msgid "Slur over rest?"
-#~ msgstr "Kaari tauon päällä?"
-
-#~ msgid "Text_spanner too small"
-#~ msgstr "Tekstiladoke on liian pieni"
-
-#~ msgid "Can't specify direction for this request"
-#~ msgstr "Ei voitu määritelllä suuntaa tälle pyynnölle"
diff --git a/po/fr.po b/po/fr.po
deleted file mode 100644
index 6d311a0e81..0000000000
--- a/po/fr.po
+++ /dev/null
@@ -1,2626 +0,0 @@
-# Messages français pour lilypond.
-# Copyright © 2001 Free Software Foundation, Inc.
-# Michel Robitaille <robitail@IRO.UMontreal.CA>, traducteur depuis/since 1996.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: lilypond 1.7.26\n"
-"POT-Creation-Date: 2003-07-18 14:45+0200\n"
-"PO-Revision-Date: 2003-07-24 08:00-0500\n"
-"Last-Translator: Michel Robitaille <robitail@IRO.UMontreal.CA>\n"
-"Language-Team: French <traduc@traduc.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=ISO-8859-1\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#. this is where special info is often stored
-#. ###############################################################
-#. lilylib.py -- options and stuff
-#.
-#. source file of the GNU LilyPond music typesetter
-#.
-#. (c)  1998--2003  Han-Wen Nienhuys <hanwen@cs.uu.nl>
-#. Jan Nieuwenhuizen <janneke@gnu.org>
-#. ##  subst:\(^\|[^._a-z]\)\(abspath\|identify\|warranty\|progress\|warning\|error\|exit\|getopt_args\|option_help_str\|options_help_str\|help\|setup_temp\|read_pipe\|system\|cleanup_temp\|strip_extension\|cp_to_dir\|mkdir_p\|init\) *(
-#. ##  replace:\1ly.\2 (
-#. ## subst: \(help_summary\|keep_temp_dir_p\|option_definitions\|original_dir\|program_name\|pseudo_filter_p\|temp_dir\|verbose_p\)
-#. ###############################################################
-#. Users of python modules should include this snippet
-#. and customize variables below.
-#. We'll suffer this path init stuff as long as we don't install our
-#. python packages in <prefix>/lib/pythonx.y (and don't kludge around
-#. it as we do with teTeX on Red Hat Linux: set some environment var
-#. (PYTHONPATH) in profile)
-#. If set, LILYPONDPREFIX must take prevalence
-#. if datadir is not set, we're doing a build and LILYPONDPREFIX
-#. Customize these
-#. lilylib globals
-#: lilylib.py:60
-msgid "lilylib module"
-msgstr "module lilylib"
-
-#: lilylib.py:63 lilypond-book.py:131 lilypond.py:128 midi2ly.py:100
-#: mup2ly.py:75 main.cc:111
-msgid "print this help"
-msgstr "cette aide"
-
-#. ###############################################################
-#. Handle bug in Python 1.6-2.1
-#.
-#. there are recursion limits for some patterns in Python 1.6 til 2.1.
-#. fix this by importing pre instead. Fix by Mats.
-#. Attempt to fix problems with limited stack size set by Python!
-#. Sets unlimited stack size. Note that the resource module only
-#. is available on UNIX.
-#: lilylib.py:114 midi2ly.py:136 mup2ly.py:130 main.cc:188 main.cc:200
-#, c-format, python-format
-msgid "Copyright (c) %s by"
-msgstr "Copyright (c) %s écrit par"
-
-#: lilylib.py:114
-msgid " 1998--2003"
-msgstr " 1998--2003"
-
-#: lilylib.py:118
-msgid "Distributed under terms of the GNU General Public License."
-msgstr "Distribué selon les termes de la GNU General Public License."
-
-#: lilylib.py:120
-msgid "It comes with NO WARRANTY."
-msgstr "Le logiciel est distribué SANS GARANTIE."
-
-#: lilylib.py:127 midi2ly.py:150 mup2ly.py:144 input.cc:88
-msgid "warning: "
-msgstr "AVERTISSEMENT: "
-
-#. lots of midi files use plain text for lyric events
-#. FIXME: read from stdin when files[0] = '-'
-#: lilylib.py:130 midi2ly.py:165 midi2ly.py:1018 midi2ly.py:1083 mup2ly.py:147
-#: mup2ly.py:161 input.cc:93
-msgid "error: "
-msgstr "Erreur: "
-
-#: lilylib.py:134
-#, python-format
-msgid "Exiting (%d)..."
-msgstr "Fin d'exécution (%d)... "
-
-#: lilylib.py:194 midi2ly.py:224 mup2ly.py:220
-#, python-format
-msgid "Usage: %s [OPTIONS]... FILE"
-msgstr "Usage: %s [OPTIONS]... FICHIER"
-
-#: lilylib.py:198 midi2ly.py:228 mup2ly.py:224 main.cc:166
-msgid "Options:"
-msgstr "Options:"
-
-#: lilylib.py:202 midi2ly.py:232 mup2ly.py:228 main.cc:172
-#, c-format, python-format
-msgid "Report bugs to %s."
-msgstr "Rapporter toutes anomalies à %s."
-
-#: lilylib.py:228
-#, python-format
-msgid "Opening pipe `%s'"
-msgstr "Ouverture du pipe `%s'"
-
-#. successful pipe close returns 'None'
-#: lilylib.py:240
-#, python-format
-msgid "`%s' failed (%d)"
-msgstr "`%s' échec (%d)"
-
-#: lilylib.py:242 lilylib.py:289 lilypond-book.py:231 lilypond.py:512
-msgid "The error log is as follows:"
-msgstr "Le journal d'erreurs est comme suit:"
-
-#: lilylib.py:262 midi2ly.py:260 mup2ly.py:256
-#, python-format
-msgid "Invoking `%s'"
-msgstr "Invocation de « %s »"
-
-#: lilylib.py:264
-#, python-format
-msgid "Running %s..."
-msgstr "Exécution de %s..."
-
-#: lilylib.py:282
-#, python-format
-msgid "`%s' failed (%s)"
-msgstr "`%s' a échoué (%s)"
-
-#: lilylib.py:285 midi2ly.py:266 mup2ly.py:264
-msgid "(ignored)"
-msgstr "(ignoré)"
-
-#: lilylib.py:299 midi2ly.py:276 mup2ly.py:274
-#, python-format
-msgid "Cleaning %s..."
-msgstr "Nettoyage de %s..."
-
-#. Duh.  Python style portable: cp *.EXT OUTDIR
-#. system ('cp *.%s %s' % (ext, outdir), 1)
-#. Python < 1.5.2 compatibility
-#.
-#. On most platforms, this is equivalent to
-#. `normpath(join(os.getcwd()), PATH)'.  *Added in Python version 1.5.2*
-#. tex needs lots of memory, more than it gets by default on Debian
-#. TODO: * prevent multiple addition.
-#. * clean TEXINPUTS, MFINPUTS, TFMFONTS,
-#. as these take prevalence over $TEXMF
-#. and thus may break tex run?
-#. $TEXMF is special, previous value is already taken care of
-#. # -sOutputFile does not work with bbox?
-#. # todo:
-#. # have better algorithm for deciding when to crop page,
-#. # and when to show full page
-#: lilylib.py:458
-msgid "Removing output file"
-msgstr "Destruction du fichier de sortie"
-
-#. !@PYTHON@
-#. once upon a rainy monday afternoon.
-#.
-#. ...
-#.
-#. (not finished.)
-#. ABC standard v1.6:  http://www.gre.ac.uk/~c.walshaw/abc2mtex/abc.txt
-#.
-#. Enhancements  (Roy R. Rankin)
-#.
-#. Header section moved to top of lilypond file
-#. handle treble, treble-8, alto, and bass clef
-#. Handle voices (V: headers) with clef and part names, multiple voices
-#. Handle w: lyrics with multiple verses
-#. Handle key mode names for minor, major, phrygian, ionian, locrian, aeolian,
-#. mixolydian, lydian, dorian
-#. Handle part names from V: header
-#. Tuplets handling fixed up
-#. Lines starting with |: not discarded as header lines
-#. Multiple T: and C: header entries handled
-#. Accidental maintained until next bar check
-#. Silent rests supported
-#. articulations fermata, upbow, downbow, ltoe, accent, tenuto supported
-#. Chord strings([-^]"string") can contain a '#'
-#. Header fields enclosed by [] in notes string processed
-#. W: words output after tune as abc2ps does it (they failed before)
-#. Enhancements (Laura Conrad)
-#.
-#. Barring now preserved between ABC and lilypond
-#. the default placement for text in abc is above the staff.
-#. %%LY now supported.
-#. \breve and \longa supported.
-#. M:none doesn't crash lily.
-#. Limitations
-#.
-#. Multiple tunes in single file not supported
-#. Blank T: header lines should write score and open a new score
-#. Not all header fields supported
-#. ABC line breaks are ignored
-#. Block comments generate error and are ignored
-#. Postscript commands are ignored
-#. lyrics not resynchronized by line breaks (lyrics must fully match notes)
-#. %%LY slyrics can't be directly before a w: line.
-#. ???
-#. TODO:
-#.
-#. Convert to new chord styles.
-#.
-#. UNDEF -> None
-#.
-#. uGUHGUHGHGUGH
-#. UGH
-#. treble8 is used by abctab2ps; -8va is used by barfly,
-#. and by my patch to abc2ps. If there's ever a standard
-#. about this we'll support that.
-#. find keywork
-#. assume that Q takes the form "Q:1/4=120"
-#. There are other possibilities, but they are deprecated
-#. outf.write ("\t\t\\consists Staff_margin_engraver\n")
-#. pitch manipulation. Tuples are (name, alteration).
-#. 0 is (central) C. Alteration -1 is a flat, Alteration +1 is a sharp
-#. pitch in semitones.
-#. abc to lilypond key mode names
-#. semitone shifts for key mode names
-#. latex does not like naked #'s
-#. latex does not like naked "'s
-#. break lyrics to words and put "'s around words containing numbers and '"'s
-#. escape "
-#. _ causes probs inside ""
-#. _ to ' _ '
-#. split words with -
-#. unless \-
-#. ~ to space('_')
-#. * to to space
-#. latex does not like naked #'s
-#. put numbers and " and ( into quoted string
-#. insure space between lines
-#. title
-#. strip trailing blanks
-#. Meter
-#. KEY
-#. seperate clef info
-#. there may or may not be a space
-#. between the key letter and the mode
-#. ugh.
-#. ugh.
-#. Notes
-#. Origin
-#. Reference Number
-#. Area
-#. History
-#. Book
-#. Composer
-#. Default note length
-#. Voice
-#. Words
-#. vocals
-#. tempo
-#. we use in this order specified accidental, active accidental for bar,
-#. active accidental for key
-#. (num /  den)  / defaultlen < 1/base
-#. return (str, num,den,dots)
-#. ignore slide
-#. ignore roll
-#. s7m2 input doesnt care about spaces
-#.
-#. remember accidental for rest of bar
-#.
-#. get accidental set in this bar or UNDEF if not set
-#. WAT IS ABC EEN ONTZETTENDE PROGRAMMEERPOEP  !
-#. failed; not a note!
-#. escape '#'s
-#.
-#. |] thin-thick double bar line
-#. || thin-thin double bar line
-#. [| thick-thin double bar line
-#. :| left repeat
-#. |: right repeat
-#. :: left-right repeat
-#. |1 volta 1
-#. |2 volta 2
-#. first try the longer one
-#. bracket escape
-#. the nobarlines option is necessary for an abc to lilypond translator for
-#. exactly the same reason abc2midi needs it: abc requires the user to enter
-#. the note that will be printed, and MIDI and lilypond expect entry of the
-#. pitch that will be played.
-#.
-#. In standard 19th century musical notation, the algorithm for translating
-#. between printed note and pitch involves using the barlines to determine
-#. the scope of the accidentals.
-#.
-#. Since ABC is frequently used for music in styles that do not use this
-#. convention, such as most music written before 1700, or ethnic music in
-#. non-western scales, it is necessary to be able to tell a translator that
-#. the barlines should not affect its interpretation of the pitch.
-#. write other kinds of appending  if we ever need them.
-#. add comments to current voice
-#. Try nibbling characters off until the line doesn't change.
-#. dump_global (outf)
-#. !@PYTHON@
-#.
-#. convert-ly.py -- Update old LilyPond input files (fix name?)
-#.
-#. source file of the GNU LilyPond music typesetter
-#.
-#. (c)  1998--2003  Han-Wen Nienhuys <hanwen@cs.uu.nl>
-#. Jan Nieuwenhuizen <janneke@gnu.org>
-#. TODO
-#. use -f and -t for -s output
-#. NEWS
-#. 0.2
-#. - rewrite in python
-#. Did we ever have \mudela-version?  I doubt it.
-#. lilypond_version_re_str = '\\\\version *\"(.*)\"'
-#. ###########################
-#. need new a namespace
-#. raise FatalConversionError()
-#. need new a namespace
-#. harmful to current .lys
-#. str = re.sub ('\\\\key([^;]+);', '\\\\accidentals \\1;', str)
-#. raise FatalConversionError()
-#. raise FatalConversionError()
-#. raise FatalConversionError()
-#. TODO: lots of other syntax change should be done here as well
-#. Ugh, but meaning of \stemup changed too
-#. maybe we should do \stemup -> \stemUp\slurUp\tieUp ?
-#. I don't know exactly when these happened...
-#. ugh, we loose context setting here...
-#. (lacks capitalisation slur -> Slur)
-#. # dynamic..
-#. TODO: add lots of these
-#. ugh
-#. old fix
-#. Make sure groups of more than one ; have space before
-#. them, so that non of them gets removed by next rule
-#. Only remove ; that are not after spaces, # or ;
-#. Otherwise  we interfere with Scheme comments,
-#. which is badbadbad.
-#. 40 ?
-#. ###############################
-#. END OF CONVERSIONS
-#. ###############################
-#. !@PYTHON@
-#. info mostly taken from looking at files. See also
-#. http://lilypond.org/wiki/?EnigmaTransportFormat
-#. This supports
-#.
-#. * notes
-#. * rests
-#. * ties
-#. * slurs
-#. * lyrics
-#. * articulation
-#. * grace notes
-#. * tuplets
-#.
-#. todo:
-#. * slur/stem directions
-#. * voices (2nd half of frame?)
-#. * more intelligent lyrics
-#. * beams (better use autobeam?)
-#. * more robust: try entertainer.etf (freenote)
-#. * dynamics
-#. * empty measures (eg. twopt03.etf from freenote)
-#.
-#. uGUHGUHGHGUGH
-#. notename 0 == central C
-#. represent pitches as (notename, alteration), relative to C-major scale
-#. a fifth up
-#. should cache this.
-#. flag1 isn't all that interesting.
-#. 3: '>',
-#. 18: '\arpeggio' ,
-#. do grace notes.
-#. ugh.
-#. we don't attempt voltas since they fail easily.
-#. and g.repeat_bar == '|:' or g.repeat_bar == ':|:' or g.bracket:
-#. 4 layers.
-#. let's not do this: this really confuses when eE happens to be before  a ^text.
-#. if last_tag and last_indices:
-#. etf_file_dict[last_tag][last_indices].append (l)
-#. # do it
-#. staff-spec
-#. should use \addlyrics ?
-#. !@PYTHON@
-#. vim: set noexpandtab:
-#. This is was the idea for handling of comments:
-#. Multiline comments, @ignore .. @end ignore is scanned for
-#. in read_doc_file, and the chunks are marked as 'ignore', so
-#. lilypond-book will not touch them any more. The content of the
-#. chunks are written to the output file. Also 'include' and 'input'
-#. regex has to check if they are commented out.
-#.
-#. Then it is scanned for 'lilypond', 'lilypond-file' and 'lilypond-block'.
-#. These three regex's has to check if they are on a commented line,
-#. % for latex, @c for texinfo.
-#.
-#. Then lines that are commented out with % (latex) and @c (Texinfo)
-#. are put into chunks marked 'ignore'. This cannot be done before
-#. searching for the lilypond-blocks because % is also the comment character
-#. for lilypond.
-#.
-#. The the rest of the rexeces are searched for. They don't have to test
-#. if they are on a commented out line.
-#. ###############################################################
-#. Users of python modules should include this snippet
-#. and customize variables below.
-#. We'll suffer this path init stuff as long as we don't install our
-#. python packages in <prefix>/lib/pythonx.y (and don't kludge around
-#. it as we do with teTeX on Red Hat Linux: set some environment var
-#. (PYTHONPATH) in profile)
-#. If set, LILYPONDPREFIX must take prevalence
-#. if datadir is not set, we're doing a build and LILYPONDPREFIX
-#. Customize these
-#. if __name__ == '__main__':
-#. lilylib globals
-#. temp_dir = os.path.join (original_dir,  '%s.dir' % program_name)
-#. urg
-#. # FIXME
-#. # do -P or -p by default?
-#. #help_summary = _ ("Run LilyPond using LaTeX for titling")
-#: lilypond-book.py:120
-msgid "Process LilyPond snippets in hybrid html, LaTeX or texinfo document"
-msgstr "Traiter les fragments dans un document hybride en html, LaTeX ou texinfo"
-
-#. another bug in option parser: --output=foe is taken as an abbreviation
-#. for --output-format
-#: lilypond-book.py:125 main.cc:110
-msgid "EXT"
-msgstr "EXT"
-
-#: lilypond-book.py:125
-msgid "use output format EXT (texi [default], texi-html, latex, html)"
-msgstr "utiliser le format de sortie EXT (texi (par défaut), texi-html, latex, html)"
-
-#: lilypond-book.py:126 lilypond-book.py:127 lilypond-book.py:129
-#: lilypond-book.py:130
-msgid "DIM"
-msgstr "DIM"
-
-#: lilypond-book.py:126
-msgid "default fontsize for music.  DIM is assumed to be in points"
-msgstr "taille de la fonte par défaut pour music. DIM est assumé être en points"
-
-#: lilypond-book.py:127
-msgid "deprecated, use --default-music-fontsize"
-msgstr "déprécié, utiliser --default-music-fontsize"
-
-#: lilypond-book.py:128
-msgid "OPT"
-msgstr "OPT"
-
-#: lilypond-book.py:128
-msgid "pass OPT quoted to the lilypond command line"
-msgstr "passer OPT entre guillemets à la ligne de commande à lilypond"
-
-#: lilypond-book.py:129
-msgid "force fontsize for all inline lilypond. DIM is assumed be to in points"
-msgstr "forcer la taille de fonte pour les entrées à lilypong. DIM est assumé être en points"
-
-#: lilypond-book.py:130
-msgid "deprecated, use --force-music-fontsize"
-msgstr "déprécié, utilise --force-music-fontsize"
-
-#: lilypond-book.py:132 lilypond.py:130 main.cc:113 main.cc:118
-msgid "DIR"
-msgstr "RÉP"
-
-#: lilypond-book.py:132
-msgid "include path"
-msgstr "inclure le chemin (path)"
-
-#: lilypond-book.py:133
-msgid "write dependencies"
-msgstr "écrire les dépendances"
-
-#: lilypond-book.py:134
-msgid "PREF"
-msgstr "PRÉF"
-
-#: lilypond-book.py:134
-msgid "prepend PREF before each -M dependency"
-msgstr "ajouter les PRÉFérence en préfixe pour chaque dépendance -M"
-
-#: lilypond-book.py:135
-msgid "don't run lilypond"
-msgstr "ne pas exécuter lilypond"
-
-#: lilypond-book.py:136
-msgid "don't generate pictures"
-msgstr "ne pas générer de photos"
-
-#: lilypond-book.py:137
-msgid "strip all lilypond blocks from output"
-msgstr "éliminer chaque bloc lilypond de la sortie"
-
-#: lilypond-book.py:138 lilypond-book.py:139 lilypond.py:135 lilypond.py:136
-#: midi2ly.py:102 main.cc:114 main.cc:117
-msgid "FILE"
-msgstr "FICHIER"
-
-#: lilypond-book.py:138
-msgid "filename main output file"
-msgstr "nom du fichier principal de sortie"
-
-#: lilypond-book.py:139
-msgid "where to place generated files"
-msgstr "où seront placés les fichiers générés"
-
-#: lilypond-book.py:140 lilypond.py:137
-msgid "RES"
-msgstr "RES"
-
-#: lilypond-book.py:141 lilypond.py:138
-msgid "set the resolution of the preview to RES"
-msgstr "utiliser la RÉSOLUTION pour la prévisualitation"
-
-#: lilypond-book.py:142 lilypond.py:148 midi2ly.py:105 mup2ly.py:78 main.cc:126
-msgid "be verbose"
-msgstr "passer en mode explicatif"
-
-#: lilypond-book.py:143
-msgid "print version information"
-msgstr "afficher les informations de version"
-
-#: lilypond-book.py:144 lilypond.py:150 midi2ly.py:107 mup2ly.py:80 main.cc:127
-msgid "show warranty and copyright"
-msgstr "afficher la notice de garantie et du droit d'auteur"
-
-#. format specific strings, ie. regex-es for input, and % strings for output
-#. global variables
-#. lilypond_binary = 'valgrind --suppressions=/home/hanwen/usr/src/guile-1.6.supp  --num-callers=10 /home/hanwen/usr/src/lilypond/lily/out/lilypond'
-#. only use installed binary  when we're installed too.
-#. only use installed binary  when we're installed too.
-#. ###############################################################
-#. Dimension handling for LaTeX.
-#.
-#. Ugh.  (La)TeX writes progress and error messages on stdout
-#. Redirect to stderr
-#: lilypond-book.py:230
-msgid "LaTeX failed."
-msgstr "Échec de LaTeX"
-
-#. URG see lilypond
-#. Convert numeric values, with or without specific dimension, to floats.
-#. Keep other strings
-#. ###############################################################
-#. How to output various structures.
-#. # maybe <hr> ?
-#. Verbatim text is always finished with \n.  FIXME: For HTML,
-#. this newline should be removed.
-#. Verbatim text is always finished with \n.  FIXME: For HTML,
-#. this newline should be removed.
-#. # Ugh we need to differentiate on origin:
-#. # lilypond-block origin wants an extra <p>, but
-#. # inline music doesn't.
-#. # possibly other center options?
-#. verbatim text is always finished with \n
-#. verbatim text is always finished with \n
-#. verbatim text is always finished with \n
-#. verbatim text is always finished with \n
-#. do some tweaking: @ is needed in some ps stuff.
-#.
-#. ugh, the <p> below breaks inline images...
-#. clumsy workaround for python 2.2 pre bug.
-#. ###############################################################
-#. Recognize special sequences in the input
-#. Warning: This uses extended regular expressions.  Tread with care.
-#.
-#. legenda
-#.
-#. (?P<name>regex) -- assign result of REGEX to NAME
-#. *? -- match non-greedily.
-#. (?m) -- multiline regex: make ^ and $ match at each line
-#. (?s) -- make the dot match all characters including newline
-#. why do we have distinction between @mbinclude and @include?
-#. # we'd like to catch and reraise a more
-#. # detailed error, but alas, the exceptions
-#. # changed across the 1.5/2.1 boundary.
-#. ughUGH not original options
-#. First we want to scan the \documentclass line
-#. it should be the first non-comment line.
-#. The only thing we really need to know about the \documentclass line
-#. is if there are one or two columns to begin with.
-#. Then we add everything before \begin{document} to
-#. paperguru.m_document_preamble so that we can later write this header
-#. to a temporary file in find_latex_dims() to find textwidth.
-#. this is not bulletproof..., it checks the first 10 chunks
-#. newchunks.extend (func (m))
-#. python 1.5 compatible:
-#. we have to check for verbatim before doing include,
-#. because we don't want to include files that are mentioned
-#. inside a verbatim environment
-#. ugh fix input
-#. # Hmm, we should hash only lilypond source, and skip the
-#. # %options are ...
-#. # comment line
-#. # todo: include path, but strip
-#. # first part of the path.
-#. format == 'html'
-#. ugh rename
-#. Count sections/chapters.
-#. # TODO: do something like
-#. # this for texinfo/latex as well ?
-#. ugh
-#. fixme: be sys-independent.
-#.
-#. Ugh, fixing up dependencies for .tex generation
-#.
-#. Ugh.  (La)TeX writes progress and error messages on stdout
-#. Redirect to stderr
-#. # There used to be code to write .tex dependencies, but
-#. # that is silly: lilypond-book has its own dependency scheme
-#. # to ensure that all lily-XXX.tex files are there
-#. # TODO: put file name in front of texidoc.
-#. #
-#. # what's this? Docme --hwn
-#. #
-#. #docme: why global?
-#. Do It.
-#. should chmod -w
-#: lilypond-book.py:1557 lilypond.py:673 midi2ly.py:1018
-#, python-format
-msgid "getopt says: `%s'"
-msgstr "getopt() indique: « %s »"
-
-#. HACK
-#. status = os.system ('lilypond -w')
-#: lilypond-book.py:1630 lilypond.py:777
-msgid "no files specified on command line"
-msgstr "aucun fichier spéficié sur la ligne de commande"
-
-#.
-#. Petr, ik zou willen dat ik iets zinvoller deed,
-#. maar wat ik kan ik doen, het verandert toch niets?
-#. --hwn 20/aug/99
-#. !@PYTHON@
-#.
-#. lilypond.py -- Run LilyPond, add titles to bare score, generate printable
-#. document
-#. Invokes: lilypond, latex (or pdflatex), dvips, ps2pdf, gs
-#.
-#. source file of the GNU LilyPond music typesetter
-#.
-#. (c)  1998--2003  Han-Wen Nienhuys <hanwen@cs.uu.nl>
-#. Jan Nieuwenhuizen <janneke@gnu.org>
-#. This is the third incarnation of lilypond.
-#.
-#. Earlier incarnations of lilypond were written by
-#. Jeffrey B. Reed<daboys@austin.rr.com> (Python version)
-#. Jan Arne Fagertun <Jan.A.Fagertun@@energy.sintef.no> (Bourne shell script)
-#.
-#. Note: gettext work best if we use ' for docstrings and "
-#. for gettextable strings.
-#. --> DO NOT USE ''' for docstrings.
-#. ###############################################################
-#. Users of python modules should include this snippet
-#. and customize variables below.
-#. We'll suffer this path init stuff as long as we don't install our
-#. python packages in <prefix>/lib/pythonx.y (and don't kludge around
-#. it as we do with teTeX on Red Hat Linux: set some environment var
-#. (PYTHONPATH) in profile)
-#. If set, LILYPONDPREFIX must take prevalence
-#. if datadir is not set, we're doing a build and LILYPONDPREFIX
-#. Customize these
-#. if __name__ == '__main__':
-#. lilylib globals
-#. # FIXME
-#. # do -P or -p by default?
-#. #help_summary = _ ("Run LilyPond using LaTeX for titling")
-#: lilypond.py:121
-msgid "Run LilyPond, add titles, generate printable document."
-msgstr "Exéctuer LilyPond, ajouter les titres et générer les documents imprimables."
-
-#: lilypond.py:127 main.cc:115
-msgid "write Makefile dependencies for every input file"
-msgstr "produire les dépendances pour Makefile concernant chaque fichier d'entrée"
-
-#: lilypond.py:129
-msgid "print even more output"
-msgstr "afficher encore plus de sortie"
-
-#: lilypond.py:130
-msgid "add DIR to LilyPond's search path"
-msgstr "ajouter le RÉPERTOIRE au chemin de recherche de LilyPond"
-
-#: lilypond.py:132
-#, python-format
-msgid "keep all output, output to directory %s.dir"
-msgstr "conserver toutes les sorties dans le répertoire %s.dir"
-
-#: lilypond.py:133
-msgid "don't run LilyPond"
-msgstr "ne pas exécuter LilyPond"
-
-#: lilypond.py:134 main.cc:116
-msgid "produce MIDI output only"
-msgstr "produire une sortie MIDI seulement"
-
-#: lilypond.py:135 midi2ly.py:102
-msgid "write output to FILE"
-msgstr "produire la sortie dans le FICHIER"
-
-#: lilypond.py:136
-msgid "find pfa fonts used in FILE"
-msgstr "repérer les fontes pfa utilisées dans le FICHIER"
-
-#: lilypond.py:139
-msgid "generate PostScript output"
-msgstr "générer une sortie PostScript"
-
-#: lilypond.py:140
-msgid "generate PNG page images"
-msgstr "générer les pages images PNG"
-
-#: lilypond.py:141
-msgid "generate PS.GZ"
-msgstr "générer PS.GZ"
-
-#: lilypond.py:142
-msgid "generate PDF output"
-msgstr "générer une sortie PDF"
-
-#: lilypond.py:143
-msgid "use pdflatex to generate a PDF output"
-msgstr "utiliser pdflatex pour générer la sortie PDF"
-
-#. FIXME: preview, picture; to indicate creation of a PNG?
-#: lilypond.py:145
-msgid "make a picture of the first system"
-msgstr "produire une image de ce premier système"
-
-#: lilypond.py:146
-msgid "make HTML file with links to all output"
-msgstr "générer les fichier HTML avec des liens sur toutes les sorties"
-
-#: lilypond.py:147
-msgid "KEY=VAL"
-msgstr "CLÉ=VALEUR"
-
-#: lilypond.py:147
-msgid "change global setting KEY to VAL"
-msgstr "modifier le paramètre global de la CLÉ à VALEUR"
-
-#: lilypond.py:149 midi2ly.py:106 mup2ly.py:79 main.cc:125
-msgid "print version number"
-msgstr "afficher le numéro de version"
-
-#. other globals
-#. Pdftex support
-#. # yuk.
-#. lilypond_binary = 'valgrind --suppressions=%(home)s/usr/src/guile-1.6.supp --num-callers=10 %(home)s/usr/src/lilypond/lily/out/lilypond '% { 'home' : '/home/hanwen' }
-#. only use installed binary  when we're installed too.
-#. init to empty; values here take precedence over values in the file
-#. # TODO: change name.
-#. for geometry v3
-#. Output formats that lilypond should create
-#. what a name.
-#. ly.warning (_ ("invalid value: %s") % `val`)
-#. ly.warning (_ ("invalid value: %s") % `val`)
-#: lilypond.py:232
-#, python-format
-msgid "no such setting: `%s'"
-msgstr "pas de telle configuration: « %s »"
-
-#. 2 == user interrupt.
-#: lilypond.py:274
-#, python-format
-msgid "LilyPond crashed (signal %d)."
-msgstr "LilyPond a planté (signal %d)."
-
-#: lilypond.py:275
-msgid "Please submit a bug report to bug-lilypond@gnu.org"
-msgstr "SVP soumettre un rapport d'anomalies à bug-lilypond@gnu.org"
-
-#: lilypond.py:281
-#, python-format
-msgid "LilyPond failed on input file %s (exit status %d)"
-msgstr "Échec de lilypond sur le fichier d'entrée %s (statut d'exécution %d)."
-
-#: lilypond.py:284
-#, python-format
-msgid "LilyPond failed on an input file (exit status %d)"
-msgstr "Échec de lilypond sur le fichier d'entrée (statut d'exécution %d)."
-
-#: lilypond.py:285
-msgid "Continuing..."
-msgstr "Poursuite..."
-
-#. urg
-#: lilypond.py:296
-#, python-format
-msgid "Analyzing %s..."
-msgstr "Analyse de %s..."
-
-#. search only the first 10k
-#: lilypond.py:354
-#, python-format
-msgid "no LilyPond output found for `%s'"
-msgstr "aucune sortie de LilyPond n'a été trouvée pour « %s »"
-
-#. The final \n seems important here. It ensures that the footers and taglines end up on the right page.
-#. TODO: should set textheight (enlarge) depending on papersize.
-#: lilypond.py:397
-#, python-format
-msgid "invalid value: `%s'"
-msgstr "valeur invalide: « %s »"
-
-#. set sane geometry width (a4-width) for linewidth = -1.
-#. who the hell is 597 ?
-#. Ugh.  (La)TeX writes progress and error messages on stdout
-#. Redirect to stderr
-#: lilypond.py:511
-msgid "LaTeX failed on the output file."
-msgstr "Échec de LaTex sur le fichier de sortie."
-
-#. make a preview by rendering only the 1st line
-#. of each score
-#: lilypond.py:568
-msgid ""
-"Trying create PDF, but no PFA fonts found.\n"
-"Using bitmap fonts instead. This will look bad."
-msgstr ""
-"Tentative de création du PDF mais aucune fonte PFA repérée.\n"
-"Utilisation des fontes bitmap à la place. L'apparence sera moins bonne."
-
-#. ugh. Different targets?
-#. Added as functionality to lilypond, because lilypond may well need to do this
-#. in future too.
-#. no ps header?
-#: lilypond.py:615
-#, python-format
-msgid "not a PostScript file: `%s'"
-msgstr "n'est pas un fichier PostScript: « %s »"
-
-#. todo
-#: lilypond.py:660
-#, python-format
-msgid "Writing HTML menu `%s'"
-msgstr "Écriture du menu HTML « %s »"
-
-#. signal programming error
-#. Don't convert input files to abspath, rather prepend '.' to include
-#. path.
-#. As a neat trick, add directory part of first input file
-#. to include path.  That way you can do without the clumsy -I in:
-#. lilypond -I foe/bar/baz foo/bar/baz/baz.ly
-#: lilypond.py:769
-msgid "pseudo filter"
-msgstr "pseudo filtre"
-
-#: lilypond.py:772
-msgid "pseudo filter only for single input file"
-msgstr "pseudo filtre seulement pour le seul fichier d'entrée"
-
-#. Ugh, maybe make a setup () function
-#. hmmm. Wish I'd 've written comments when I wrote this.
-#. now it looks complicated.
-#: lilypond.py:806
-#, python-format
-msgid "filename should not contain spaces: `%s'"
-msgstr "le nom de fichier ne peut contenir des espaces: « %s »"
-
-#. to be sure, add tmpdir *in front* of inclusion path.
-#. os.environ['TEXINPUTS'] =  tmpdir + ':' + os.environ['TEXINPUTS']
-#. We catch all exceptions, because we need to do stuff at exit:
-#. * copy any successfully generated stuff from tempdir and
-#. notify user of that
-#. * cleanout tempdir
-#. ## ARGH. This also catches python programming errors.
-#. ## this should only catch lilypond nonzero exit  status
-#. ## --hwn
-#. TODO: friendly message about LilyPond setup/failing?
-#.
-#: lilypond.py:845
-msgid "Running LilyPond failed. Rerun with --verbose for a trace."
-msgstr "Échec d'exécution de LilyPond. Réxécuter avec --verbose pour obtenir une trace."
-
-#. Our LilyPond pseudo filter always outputs to 'lelie'
-#. have subsequent stages and use 'lelie' output.
-#. unless: add --tex, or --latex?
-#. TODO: friendly message about TeX/LaTeX setup,
-#. trying to run tex/latex by hand
-#: lilypond.py:886
-msgid "Failed to make PS file. Rerun with --verbose for a trace."
-msgstr "Échec de génération du fichier PS. Réexécuter avec --verbose pour obtenir une trace."
-
-#. unless: add --tex, or --latex?
-#. TODO: friendly message about TeX/LaTeX setup,
-#. trying to run tex/latex by hand
-#: lilypond.py:916
-msgid "Running LaTeX falied. Rerun with --verbose for a trace."
-msgstr "Échec de LaTeX. Réexécuter avec --verbose pour obtenir une trace."
-
-#. add DEP to targets?
-#: lilypond.py:926 input-file-results.cc:68
-#, c-format, python-format
-msgid "dependencies output to `%s'..."
-msgstr "dépendances produites dans « %s »"
-
-#: lilypond.py:937
-#, python-format
-msgid "%s output to <stdout>..."
-msgstr "%s sortie vers <stdout>»..."
-
-#: lilypond.py:942 lilypond.py:968 includable-lexer.cc:57
-#: input-file-results.cc:191 input-file-results.cc:197 lily-guile.cc:86
-#, c-format, python-format
-msgid "can't find file: `%s'"
-msgstr "ne peut repérer le fichier: « %s »"
-
-#. Hmm, if this were a function, we could call it the except: clauses
-#: lilypond.py:965
-#, python-format
-msgid "%s output to %s..."
-msgstr "%s sortie vers  %s..."
-
-#. !@PYTHON@
-#.
-#. midi2ly.py -- LilyPond midi import script
-#.
-#. source file of the GNU LilyPond music typesetter
-#.
-#. (c)  1998--2003  Han-Wen Nienhuys <hanwen@cs.uu.nl>
-#. Jan Nieuwenhuizen <janneke@gnu.org>
-#. ###############################################################
-#. Users of python modules should include this snippet.
-#.
-#. This soon to be removed for: import lilypond.lilylib as ly
-#. ###############################################################
-#. ###############################################################
-#. ############### CONSTANTS
-#. ###############################################################
-#. temp_dir = os.path.join (original_dir,  '%s.dir' % program_name)
-#. original_dir = os.getcwd ()
-#. keep_temp_dir_p = 0
-#: midi2ly.py:94
-msgid "Convert MIDI to LilyPond source."
-msgstr "Convertir de MIDI en source LilyPond."
-
-#: midi2ly.py:97
-msgid "print absolute pitches"
-msgstr "afficher des tons absolus"
-
-#: midi2ly.py:98 midi2ly.py:103
-msgid "DUR"
-msgstr "DUR"
-
-#: midi2ly.py:98
-msgid "quantise note durations on DUR"
-msgstr "quantifier la durée de la note sur DUR"
-
-#: midi2ly.py:99
-msgid "print explicit durations"
-msgstr "afficher les durées explicites"
-
-#: midi2ly.py:101
-msgid "ALT[:MINOR]"
-msgstr "ALT[:MINEUR]"
-
-#: midi2ly.py:101
-msgid "set key: ALT=+sharps|-flats; MINOR=1"
-msgstr "définir la clef: ALT=+dièse|-bémol; MINEUR=1"
-
-#: midi2ly.py:103
-msgid "quantise note starts on DUR"
-msgstr "quantifier le début de la note sur DUR"
-
-#: midi2ly.py:104
-msgid "DUR*NUM/DEN"
-msgstr "DUR*NUM/DEN"
-
-#: midi2ly.py:104
-msgid "allow tuplet durations DUR*NUM/DEN"
-msgstr "permettre un tuplet de durées DUR*NUM/DEN"
-
-#: midi2ly.py:108
-msgid "treat every text as a lyric"
-msgstr "traiter chaque texte comme des paroles"
-
-#: midi2ly.py:136 mup2ly.py:130
-msgid " 2001--2003"
-msgstr " 2001--2003"
-
-#: midi2ly.py:141 mup2ly.py:135
-msgid ""
-"\n"
-"Distributed under terms of the GNU General Public License. It comes with\n"
-"NO WARRANTY."
-msgstr ""
-"\n"
-"Distribué selon les termes de la GNU General Public License.  Le logiciel est fourni sans GARANTIE."
-
-#: midi2ly.py:166 mup2ly.py:162
-msgid "Exiting ... "
-msgstr "Fin d'exécution... "
-
-#: midi2ly.py:264 mup2ly.py:261
-#, python-format
-msgid "command exited with value %d"
-msgstr "fin de la commande avec l'état %d"
-
-#. ###############################################################
-#. END Library
-#. ###############################################################
-#. hmm
-#. major scale: do-do
-#. minor scale: la-la  (= + 5) '''
-#. By tradition, all scales now consist of a sequence
-#. of 7 notes each with a distinct name, from amongst
-#. a b c d e f g.  But, minor scales have a wide
-#. second interval at the top - the 'leading note' is
-#. sharped. (Why? it just works that way! Anything
-#. else doesn't sound as good and isn't as flexible at
-#. saying things. In medieval times, scales only had 6
-#. notes to avoid this problem - the hexachords.)
-#. So, the d minor scale is d e f g a b-flat c-sharp d
-#. - using d-flat for the leading note would skip the
-#. name c and duplicate the name d.  Why isn't c-sharp
-#. put in the key signature? Tradition. (It's also
-#. supposedly based on the Pythagorean theory of the
-#. cycle of fifths, but that really only applies to
-#. major scales...)  Anyway, g minor is g a b-flat c d
-#. e-flat f-sharp g, and all the other flat minor keys
-#. end up with a natural leading note. And there you
-#. have it.
-#. John Sankey <bf250@freenet.carleton.ca>
-#.
-#. Let's also do a-minor: a b c d e f gis a
-#.
-#. --jcn
-#. as -> gis
-#. des -> cis
-#. ges -> fis
-#. g -> fisis
-#. d -> cisis
-#. a -> gisis
-#. b -> ces
-#. e -> fes
-#. f -> eis
-#. c -> bis
-#. # FIXME: compile fix --jcn
-#. TODO: move space
-#. fis cis gis dis ais eis bis
-#. bes es as des ges ces fes
-#. urg, we should be sure that we're in a lyrics staff
-#. all include ALL_NOTES_OFF
-#. ugh, must set key while parsing
-#. because Note init uses key
-#. Better do Note.calc () at dump time?
-#. last_lyric.clocks = t - last_time
-#. hmm
-#. urg, this will barf at meter changes
-#. urg LilyPond doesn't start at c4, but
-#. remembers from previous tracks!
-#. reference_note = Note (clocks_per_4, 4*12, 0)
-#. must be in \notes mode for parsing \skip
-#: midi2ly.py:1002
-#, python-format
-msgid "%s output to `%s'..."
-msgstr "%s produites dans « %s »..."
-
-#: midi2ly.py:1033
-msgid "Example:"
-msgstr "Exemple:"
-
-#: midi2ly.py:1083
-msgid "no files specified on command line."
-msgstr "aucun fichier spéficié sur la ligne de commande."
-
-#. !@PYTHON@
-#. mup2ly.py -- mup input converter
-#.
-#. source file of the GNU LilyPond music typesetter
-#.
-#. (c) 2001
-#. if set, LILYPONDPREFIX must take prevalence
-#. if datadir is not set, we're doing a build and LILYPONDPREFIX
-#: mup2ly.py:70
-msgid "Convert mup to LilyPond source."
-msgstr "Conversion de mup en source LilyPond."
-
-#: mup2ly.py:73
-msgid "debug"
-msgstr "débug"
-
-#: mup2ly.py:74
-msgid "define macro NAME [optional expansion EXP]"
-msgstr "définit la macro NOM [EXPRESSION contient les options étendues]"
-
-#: mup2ly.py:77
-msgid "only pre-process"
-msgstr "pré-traitement seulement"
-
-#. Duh.  Python style portable: cp *.EXT OUTDIR
-#. system ('cp *.%s %s' % (ext, outdir), 1)
-#. Python < 1.5.2 compatibility
-#.
-#. On most platforms, this is equivalent to
-#. `normpath(join(os.getcwd()), PATH)'.  *Added in Python version 1.5.2*
-#. if set, LILYPONDPREFIX must take prevalence
-#. if datadir is not set, we're doing a build and LILYPONDPREFIX
-#. ###############################################################
-#. END Library
-#.
-#. PMX cut and paste
-#.
-#. if not self.entries:
-#. #return '\n'
-#. #ugh ugh
-#. return '\n%s = {}\n\n' % self.idstring ()
-#. ugh
-#. def set_clef (self, letter):
-#. clstr = clef_table[letter]
-#. self.voices[0].add_nonchord (Clef (clstr))
-#. urg
-#. maybe use import copy?
-#. for i in self.pitches:
-#. ch.pitches.append (i)
-#. for i in self.scripts:
-#. ch.scripts.append (i)
-#. http://www.arkkra.com/doc/uguide/contexts.html
-#. #self.current_staffs = []
-#. duh
-#. FIXME: 1?
-#. FIXME: does key play any role in this?
-#. ch = self.current_voices[0].last_chord ()
-#. ch.basic_duration = self.current_voices[0].last_chord ().basic_duration
-#. ugh
-#. ch = self.current_voices[0].last_chord ()
-#. `;' is not a separator, chords end with ';'
-#. mup resets default duration and pitch each bar
-#. ugh: these (and lots more) should also be parsed in
-#. context staff.  we should have a class Staff_properties
-#. and parse/set all those.
-#. shortcut: set to official mup maximum (duh)
-#. self.set_staffs (40)
-#: mup2ly.py:1076
-#, python-format
-msgid "no such context: %s"
-msgstr "pas de tel contexte: %s"
-
-#. hmm
-#. dig this: mup allows ifdefs inside macro bodies
-#. don't do nested multi-line defines
-#. duh: mup is strictly line-based, except for `define',
-#. which is `@' terminated and may span several lines
-#. don't define new macros in unactive areas
-#. To support nested multi-line define's
-#. process_function and macro_name, macro_body
-#. should become lists (stacks)
-#. The mup manual is undetermined on this
-#. and I haven't seen examples doing it.
-#.
-#. don't do nested multi-line define's
-#. writes to stdout for help2man
-#. don't call
-#. identify ()
-#. sys.stdout.flush ()
-#. handy emacs testing
-#. if not files:
-#. files = ['template.mup']
-#: mup2ly.py:1300
-#, python-format
-msgid "Processing `%s'..."
-msgstr "Traitement de « %s »..."
-
-#: mup2ly.py:1319
-#, python-format
-msgid "Writing `%s'..."
-msgstr "Écriture de « %s »..."
-
-#: getopt-long.cc:146
-#, c-format
-msgid "option `%s' requires an argument"
-msgstr "L'option « %s » requiert un argument"
-
-#: getopt-long.cc:150
-#, c-format
-msgid "option `%s' doesn't allow an argument"
-msgstr "L'option « %s » ne requiert pas d'argument"
-
-#: getopt-long.cc:154
-#, c-format
-msgid "unrecognized option: `%s'"
-msgstr "option non reconnue: « %s »"
-
-#: getopt-long.cc:161
-#, c-format
-msgid "invalid argument `%s' to option `%s'"
-msgstr "argument invalide « %s » pour l'option « %s »"
-
-#: warn.cc:25
-#, c-format
-msgid "warning: %s\n"
-msgstr "AVERTISSEMENT: %s\n"
-
-#: warn.cc:31
-#, c-format
-msgid "error: %s\n"
-msgstr "Erreur: %s\n"
-
-#: warn.cc:44
-#, c-format
-msgid "programming error: %s (Continuing; cross thumbs)\n"
-msgstr "Erreur de programmation: %s (Poursuite; croisons les doigts)\n"
-
-#: accidental.cc:202 key-signature-interface.cc:137
-#, c-format
-msgid "accidental `%s' not found"
-msgstr "accidentel `%s' non repéré"
-
-#: accidental-engraver.cc:171 new-accidental-engraver.cc:238
-#, c-format
-msgid "Accidental typesetting list must begin with context-name: %s"
-msgstr "Liste de mise en page accidentelle doit débuter avec un nom de contexte: %s"
-
-#: accidental-engraver.cc:196 new-accidental-engraver.cc:263
-#, c-format
-msgid "unknown accidental typesetting: %s. Ignored"
-msgstr "mise en page accidentelle inconnue: %s. Ignorée"
-
-#: accidental-engraver.cc:212 new-accidental-engraver.cc:279
-#, c-format
-msgid "Symbol is not a parent context: %s. Ignored"
-msgstr "Symbole n'est pas un contexte parent: %s. Ignoré"
-
-#: accidental-engraver.cc:215 new-accidental-engraver.cc:282
-#, c-format
-msgid "Accidental typesetting must be pair or context-name: %s"
-msgstr "Mise en page accidentelle doit être pair ou un nom de contexte: %s"
-
-#: afm.cc:66
-#, c-format
-msgid "can't find character number: %d"
-msgstr "ne peut repérer le nombre de caractères: %d"
-
-#: afm.cc:81
-#, c-format
-msgid "can't find character called: `%s'"
-msgstr "ne peut repérer le caractère portant le nom: « %s »"
-
-#: afm.cc:142
-#, c-format
-msgid "Error parsing AFM file: `%s'"
-msgstr "Erreur d'analyse syntaxique du fichier AFM: « %s »"
-
-#: all-font-metrics.cc:95
-#, c-format
-msgid "checksum mismatch for font file: `%s'"
-msgstr "somme de contrôle ne concorde pas pour le fichier de fontes: « %s »"
-
-#: all-font-metrics.cc:97
-#, c-format
-msgid "does not match: `%s'"
-msgstr "ne concorde pas: « %s »"
-
-#: all-font-metrics.cc:102
-msgid " Rebuild all .afm files, and remove all .pk and .tfm files.  Rerun with -V to show font paths."
-msgstr " Reconstruire tous les fichiers .afm et enlever tous les fichiers .pk et .tfm. Ré-exécuter avec l'option -V pour afficher les chemins vers les fontes"
-
-#: all-font-metrics.cc:103
-msgid ""
-"A script for removing font-files is delivered with the source-code,\n"
-"in buildscripts/clean-fonts.sh"
-msgstr ""
-"Un script pour enlever les fichiers de fontes est livré avec le code source,\n"
-"dans buildscripts/clean-fonts.sh"
-
-#: all-font-metrics.cc:169
-#, c-format
-msgid "can't find font: `%s'"
-msgstr "ne peut repérer la fonte: « %s »"
-
-#: all-font-metrics.cc:170
-msgid "Loading default font"
-msgstr "Chargement de la fonte par défaut"
-
-#: all-font-metrics.cc:185
-#, c-format
-msgid "can't find default font: `%s'"
-msgstr "ne peut reprérer la fonte par défaut: « %s »"
-
-#: all-font-metrics.cc:186 includable-lexer.cc:59 input-file-results.cc:192
-#, c-format
-msgid "(search path: `%s')"
-msgstr "(chemin de recherche: « %s »)"
-
-#: all-font-metrics.cc:187
-msgid "Giving up"
-msgstr "Abandon"
-
-#: auto-change-iterator.cc:43 change-iterator.cc:60
-#: part-combine-music-iterator.cc:120
-msgid "Can't switch translators, I'm there already"
-msgstr "Ne peut commuter d'un traducteur à l'autre, je suis là déjà"
-
-#: bar-check-iterator.cc:51
-#, c-format
-msgid "barcheck failed at: %s"
-msgstr "échec du barcheck à: %s"
-
-#: beam.cc:146
-msgid "beam has less than two visible stems"
-msgstr "faisceau a moins que deux queues visibles"
-
-#: beam.cc:151
-msgid "Beam has less than two stems. Removing beam."
-msgstr "faisceau a moins de deux queues. Retrait du faisceau."
-
-#: beam.cc:976
-msgid "Not sure that we can find a nice beam slope (no viable initial configuration found)."
-msgstr "Pas certain que l'on puisse repérer un joli pente dans le faisceau (configuration initiale viable non repérée)"
-
-#: beam-engraver.cc:176
-msgid "already have a beam"
-msgstr "faisceau déjà présent"
-
-#: beam-engraver.cc:259
-msgid "unterminated beam"
-msgstr "faisceau non terminé"
-
-#: beam-engraver.cc:292 chord-tremolo-engraver.cc:197
-msgid "stem must have Rhythmic structure"
-msgstr "la queue doit avoir une structure rythmiique"
-
-#: beam-engraver.cc:306
-msgid "stem doesn't fit in beam"
-msgstr "la queue ne s'insère pas dans le faisceau"
-
-#: beam-engraver.cc:307
-msgid "beam was started here"
-msgstr "faisceau a débuté ici"
-
-#: break-align-interface.cc:173
-#, c-format
-msgid "No spacing entry from %s to `%s'"
-msgstr "Pas d'espacement des entrées à partir de %s à « %s »"
-
-#: change-iterator.cc:22
-#, c-format
-msgid "can't change `%s' to `%s'"
-msgstr "ne peut changer de « %s » à « %s »"
-
-#.
-#. We could change the current translator's id, but that would make
-#. errors hard to catch
-#.
-#. last->translator_id_string_  = get_change ()->change_to_id_string_;
-#.
-#: change-iterator.cc:79
-msgid "I'm one myself"
-msgstr "J'en suis un moi-même"
-
-#: change-iterator.cc:82
-msgid "none of these in my family"
-msgstr "aucun de ceux-ci dans ma famille"
-
-#: chord-tremolo-engraver.cc:98
-#, c-format
-msgid "Chord tremolo with %d elements. Must have two elements."
-msgstr "Accord de tremolo avec %d éléments. Doit avoir 2 éléments."
-
-#: chord-tremolo-engraver.cc:157
-msgid "unterminated chord tremolo"
-msgstr "accord de tremolo non terminé"
-
-#: chord-tremolo-iterator.cc:69
-msgid "no one to print a tremolos"
-msgstr "aucun pour l'impression de tremolos"
-
-#: clef.cc:64
-#, c-format
-msgid "clef `%s' not found"
-msgstr "clé `%s' non repéré"
-
-#: cluster.cc:131
-#, c-format
-msgid "unknown cluster style `%s'"
-msgstr "style de groupement inconnu « %s »"
-
-#: coherent-ligature-engraver.cc:84
-#, c-format
-msgid "gotcha: ptr=%ul"
-msgstr "obtenu: ptr=%ul"
-
-#: coherent-ligature-engraver.cc:96
-#, c-format
-msgid "distance=%f"
-msgstr "distance=%f"
-
-#: coherent-ligature-engraver.cc:139
-#, c-format
-msgid "Coherent_ligature_engraver: setting `spacing-increment = 0.01': ptr=%ul"
-msgstr "Coherent_ligature_engraver: fixé `spacing-increment = 0.01': ptr=%ul"
-
-#: custos.cc:92
-#, c-format
-msgid "custos `%s' not found"
-msgstr "custos `%s' non repéré"
-
-#: dimensions.cc:13
-msgid "NaN"
-msgstr "NaN"
-
-#: dynamic-engraver.cc:204 span-dynamic-performer.cc:82
-msgid "can't find start of (de)crescendo"
-msgstr "ne peut repérer le début du (de)crescendo"
-
-#: dynamic-engraver.cc:216
-msgid "already have a crescendo"
-msgstr "crescendo déjà présent"
-
-#: dynamic-engraver.cc:217
-msgid "already have a decrescendo"
-msgstr "decrescendo déjà présent"
-
-#: dynamic-engraver.cc:220
-msgid "Cresc started here"
-msgstr "Crescendo a débuté ici"
-
-#: dynamic-engraver.cc:323
-msgid "unterminated (de)crescendo"
-msgstr "(de)crescendo n'est pas terminé"
-
-#: event.cc:49
-#, c-format
-msgid "Transposition by %s makes alteration larger than two"
-msgstr "Transposition faite par %s crée des altérations plus grande que deux"
-
-#: event-chord-iterator.cc:76 output-property-music-iterator.cc:27
-#, c-format
-msgid "Junking event: `%s'"
-msgstr "Événement rebut: « %s »"
-
-#: extender-engraver.cc:94
-msgid "unterminated extender"
-msgstr "prolongation non terminée"
-
-#: extender-engraver.cc:106
-msgid "Nothing to connect extender to on the left.  Ignoring extender event."
-msgstr "Rien à relier à la prolongation sur la gauche. Requête de prolongation ignorée."
-
-#: folded-repeat-iterator.cc:88
-msgid "no one to print a repeat brace"
-msgstr "aucun pour l'impression d'accolades répétées"
-
-#: font-interface.cc:239
-msgid "couldn't find any font satisfying "
-msgstr "ne peut repérer aucune fonte satisfaisante"
-
-#: glissando-engraver.cc:100
-msgid "Unterminated glissando."
-msgstr "glissando non terminée"
-
-#: gourlay-breaking.cc:188
-#, c-format
-msgid "Optimal demerits: %f"
-msgstr "Démérites optionnels: %f"
-
-#: gourlay-breaking.cc:193
-msgid "No feasible line breaking found"
-msgstr "Aucun morcèlement de ligne faisable repéré"
-
-#: gregorian-ligature-engraver.cc:59
-#, c-format
-msgid "\\%s ignored"
-msgstr "\\%s ignoré"
-
-#: gregorian-ligature-engraver.cc:64
-#, c-format
-msgid "implied \\%s added"
-msgstr "\\%s implicite ajouté"
-
-#.
-#. Todo: do something sensible. The grob-pq-engraver is not water
-#. tight, and stuff like tupletSpannerDuration confuses it.
-#.
-#: grob-pq-engraver.cc:130
-#, c-format
-msgid ""
-"Skipped something?\n"
-"Grob %s ended before I expected it to end."
-msgstr ""
-"Quelque chose a été escamoté?\n"
-"%s terminé avant la fin attendue."
-
-#: hairpin.cc:98
-msgid "decrescendo too small"
-msgstr "decrescendo trop petit"
-
-#: hairpin.cc:99
-msgid "crescendo too small"
-msgstr "crescendo trop petit"
-
-#: horizontal-bracket-engraver.cc:64
-msgid "Don't have that many brackets."
-msgstr "N'a pas autant de crochets."
-
-#: horizontal-bracket-engraver.cc:73
-msgid "Conflicting note group events."
-msgstr "Événements de groupe de notes conflictuels."
-
-#: hyphen-engraver.cc:87
-msgid "unterminated hyphen"
-msgstr "trait d'union non terminé"
-
-#: hyphen-engraver.cc:99
-msgid "Nothing to connect hyphen to on the left.  Ignoring hyphen event."
-msgstr "Rien à connecter au trait d'union sur la gauche. Requête de trait d'union ignoré"
-
-#: input.cc:99
-msgid "non fatal error: "
-msgstr "pas une erreur fatale: "
-
-#: input.cc:107 source-file.cc:146 source-file.cc:239
-msgid "position unknown"
-msgstr "position inconnue"
-
-#: input-file-results.cc:72 source-file.cc:54 streams.cc:38
-#, c-format
-msgid "can't open file: `%s'"
-msgstr "ne peut ouvrir le fichier: « %s »"
-
-#: input-file-results.cc:132
-msgid "Score contains errors; will not process it"
-msgstr "La feuille de musique contient des erreurs; elle ne sera pas traitée"
-
-#: input-file-results.cc:172
-#, c-format
-msgid "Now processing: `%s'"
-msgstr "Maintenant en traitement: « %s »"
-
-#: key-performer.cc:96
-msgid "FIXME: key change merge"
-msgstr "FIXME: changement de fusion de clés"
-
-#: kpath.cc:76
-#, c-format
-msgid "Kpathsea couldn't find TFM file `%s'"
-msgstr "Kpathsea ne peut repérer le fichier TFM: « %s »"
-
-#: ligature-engraver.cc:159
-msgid "can't find start of ligature"
-msgstr "ne peut repérer le début d'une ligature"
-
-#: ligature-engraver.cc:165
-msgid "no right bound"
-msgstr "pas de borne à droite"
-
-#: ligature-engraver.cc:191
-msgid "already have a ligature"
-msgstr "a déjà une ligature"
-
-#: ligature-engraver.cc:207
-msgid "no left bound"
-msgstr "pas de borne à gauche"
-
-#: ligature-engraver.cc:258
-msgid "unterminated ligature"
-msgstr "ligature non terminée"
-
-#: ligature-engraver.cc:282
-msgid "ligature may not contain rest; ignoring rest"
-msgstr "ligature ne peut contenir une pause; pause ignorée"
-
-#: ligature-engraver.cc:283
-msgid "ligature was started here"
-msgstr "ligature a débuté ici"
-
-#: lily-guile.cc:88
-#, c-format
-msgid "(load path: `%s')"
-msgstr "(chemin de chargement: « %s »)"
-
-#: lily-guile.cc:576
-#, c-format
-msgid "Can't find property type-check for `%s' (%s)."
-msgstr "Ne peut repérer la propriété de vérification de type pour « %s » (%s)."
-
-#: lily-guile.cc:579
-msgid "Perhaps you made a typing error?"
-msgstr "Peut-être avez-vous commis une erreur?"
-
-#: lily-guile.cc:585
-msgid "Doing assignment anyway."
-msgstr "Affectation faite malgré tout."
-
-#: lily-guile.cc:599
-#, c-format
-msgid "Type check for `%s' failed; value `%s' must be of type `%s'"
-msgstr "Vérification de type pour « %s » a échoué; la valeur « %s » doit être de type « %s »"
-
-#: lookup.cc:173
-msgid "round filled box horizontal extent smaller than blot; decreasing blot"
-msgstr "largeur horizontale de la boîte plus petite que le diamètre du coin; réduction du diamètre du coin"
-
-#: lookup.cc:178
-msgid "round filled box vertical extent smaller than blot; decreasing blot"
-msgstr "hauteur verticale de la boîte plus petite que le diamètre du coin; réduction du diamètre du coin"
-
-#: lyric-phrasing-engraver.cc:311
-msgid "lyrics found without any matching notehead"
-msgstr "paroles trouvées sans aucune concordance avec une note de tête"
-
-#: lyric-phrasing-engraver.cc:317
-msgid "Huh? Melismatic note found to have associated lyrics."
-msgstr "Euh? Note mélismatique repéré associé à des paroles"
-
-#: main.cc:106
-msgid "EXPR"
-msgstr "EXPR"
-
-#: main.cc:107
-msgid "set options, use -e '(ly-option-usage)' for help"
-msgstr "options d'initialisation: utiliser -e '(ly-option-usage)' pour de l'aide"
-
-#: main.cc:110
-msgid "use output format EXT"
-msgstr "utiliser le format de sortie EXT"
-
-#: main.cc:112
-msgid "FIELD"
-msgstr "CHAMP"
-
-#: main.cc:112
-msgid "write header field to BASENAME.FIELD"
-msgstr "écrire un champ d'en-tête dans BASENAME.FIELD"
-
-#: main.cc:113
-msgid "add DIR to search path"
-msgstr "ajouter le RÉPERTOIRE au chemin de recherche"
-
-#: main.cc:114
-msgid "use FILE as init file"
-msgstr "utiliser le FICHIER comme fichier d'initialisation"
-
-#: main.cc:118
-msgid "prepend DIR to dependencies"
-msgstr "ajouter en préfixe le RÉPERTOIRE aux dépendances"
-
-#.
-#. should audit again.
-#.
-#: main.cc:123
-msgid "inhibit file output naming and exporting"
-msgstr "inhiber la dénomination de nom de fichier et l'exportation"
-
-#. No version number or newline here. It confuses help2man.
-#: main.cc:155
-#, c-format
-msgid "Usage: %s [OPTION]... FILE..."
-msgstr "Usage: %s [OPTION]... FICHIER..."
-
-#: main.cc:157
-msgid "Typeset music and or play MIDI from FILE."
-msgstr "Composer la musique et/ou jouer en format MIDI à partir du FICHIER."
-
-#: main.cc:160
-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 est un logiciel de composition de musique. Il produit de jolies feuilles\n"
-"de musique en utilisant un fichier de description de haut niveau à l'entrée.\n"
-"LilyPond fait parti du projet GNU.\n"
-
-#: main.cc:182
-#, c-format
-msgid ""
-"This is free software.  It is covered by the GNU General Public License,\n"
-"and you are welcome to change it and/or distribute copies of it under\n"
-"certain conditions.  Invoke as `%s --warranty' for more information.\n"
-msgstr ""
-"Ce logiciel est libre. Il est couvert par la licence GNU General Public License,\n"
-"et vous êtes libre de le modifier et/ou distribuer sous certaines conditions\n"
-"Invoquer commme suit « %s --warranty » pour plus de détails.\n"
-
-#: main.cc:198
-msgid "GNU LilyPond -- The music typesetter"
-msgstr "GNU LilyPond -- Le logiciel de composition de musique"
-
-#: main.cc:206
-msgid ""
-"    This program is free software; you can redistribute it and/or\n"
-"modify it under the terms of the GNU General Public License version 2\n"
-"as published by the Free Software Foundation.\n"
-"\n"
-"    This program is distributed in the hope that it will be useful,\n"
-"but WITHOUT ANY WARRANTY; without even the implied warranty of\n"
-"MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU\n"
-"General Public License for more details.\n"
-"\n"
-"    You should have received a copy (refer to the file COPYING) of the\n"
-"GNU General Public License along with this program; if not, write to\n"
-"the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,\n"
-"USA.\n"
-msgstr ""
-"    Ce logiciel est libre; vous pouvez le redistribuer et/ou le modifier\n"
-"sous les termes de la licence GNU General Public License version 2\n"
-"tel que publié par la Free Software Foundation.\n"
-"\n"
-"    Ce logiciel est distribué dans l'espoir qu'il soit utile\n"
-"mais sans AUCUNE GARANTIE;  sans aucune garantie implicites\n"
-"COMMERCIALES ou pour RÉPONDRE À UN BESOIN PARTICULIER.. Consulter\n"
-"la license GNU General Public License pour plus de détails.\n"
-"\n"
-"    Vous devriez avoir reçu une copie (consulter le fichier COPYING) de la\n"
-"license GNU General Public License accompagnant ce logiciel; si absente écrire à\n"
-"la Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,\n"
-"USA.\n"
-
-#: mensural-ligature.cc:153
-#, c-format
-msgid "Mensural_ligature:thickness undefined on flexa %d; assuming 1.4"
-msgstr "Mensural_ligature: épaisseur indéfinie sur flexa %d; 1.4 est assumé"
-
-#: mensural-ligature.cc:169
-#, c-format
-msgid "Mensural_ligature:delta-pitch undefined on flexa %d; assuming 0"
-msgstr "Mensural_ligature: croissance du ton (delta-pitch) indéfinie sur flexa %d; 0 est assumé"
-
-#: mensural-ligature.cc:182
-#, c-format
-msgid "Mensural_ligature:flexa-width undefined on flexa %d; assuming 2.0"
-msgstr "Mensural_ligature: largeur de flexa (flxe-width) indéfinie sur flexa %d; 2.0 est assumé"
-
-#: mensural-ligature.cc:215
-msgid "Mensural_ligature:unexpected case fall-through"
-msgstr "Mensural_ligature: cas inattendu sans interception"
-
-#: mensural-ligature.cc:225
-msgid "Mensural_ligature: (join_left == 0)"
-msgstr "Mensural_liguture: (joint_left == 0)"
-
-#: mensural-ligature-engraver.cc:248 mensural-ligature-engraver.cc:397
-msgid "unexpected case fall-through"
-msgstr "cas inattendu non intercepté"
-
-#: mensural-ligature-engraver.cc:259
-msgid "ligature with less than 2 heads -> skipping"
-msgstr "ligature avec moins que 2 tête -> escamoté"
-
-#: mensural-ligature-engraver.cc:279
-msgid "can not determine pitch of ligature primitive -> skipping"
-msgstr "ne peut déterminer le ton de la primitive de la ligature -> escamoté"
-
-#: mensural-ligature-engraver.cc:302
-msgid "prime interval within ligature -> skipping"
-msgstr "premier interval dans la ligature -> escamoté"
-
-#: mensural-ligature-engraver.cc:312
-msgid "mensural ligature: duration none of L, B, S -> skipping"
-msgstr "Mensural_ligature: aucune durée parmie L, B, S -> escomatée"
-
-#: midi-item.cc:148
-#, c-format
-msgid "no such instrument: `%s'"
-msgstr "pas un tel instrument: « %s »"
-
-#: midi-item.cc:238
-msgid "silly duration"
-msgstr "durée ridicule"
-
-#: midi-item.cc:251
-msgid "silly pitch"
-msgstr "ton bizarre"
-
-#: music-output-def.cc:111
-#, c-format
-msgid "can't find `%s' context"
-msgstr "ne peut repérer le contexte « %s »"
-
-#: my-lily-lexer.cc:169
-#, c-format
-msgid "Identifier name is a keyword: `%s'"
-msgstr "Le nom de l'identificateur est un mot clé: « %s »"
-
-#: my-lily-lexer.cc:191
-#, c-format
-msgid "error at EOF: %s"
-msgstr "erreur à la fin du fichier (EOF): %s"
-
-#: my-lily-parser.cc:44
-msgid "Parsing..."
-msgstr "Analyse..."
-
-#: my-lily-parser.cc:54
-msgid "Braces don't match"
-msgstr "Accolades non pairées"
-
-#.
-#. music for the softenon children?
-#.
-#: new-fingering-engraver.cc:143
-msgid "music for the martians."
-msgstr "musique pour les martiens."
-
-#: new-tie-engraver.cc:166 tie-engraver.cc:217
-msgid "lonely tie"
-msgstr "lien isolé"
-
-#: note-collision.cc:340
-msgid "Too many clashing notecolumns.  Ignoring them."
-msgstr "Trop de note-colonnes qui se heurtent. On les ignore."
-
-#: note-head.cc:127
-#, c-format
-msgid "note head `%s' not found"
-msgstr "tête de note `%s' non repérée"
-
-#: paper-def.cc:96
-#, c-format
-msgid "paper output to `%s'..."
-msgstr "sortie sur papier vers « %s »..."
-
-#: paper-score.cc:78
-#, c-format
-msgid "Element count %d (spanners %d) "
-msgstr "Éléments dénombrés %d (spanners %d) "
-
-#: paper-score.cc:83
-msgid "Preprocessing graphical objects..."
-msgstr "Pré-traitement des éléments graphiques..."
-
-#: paper-score.cc:116
-msgid "Outputting Score, defined at: "
-msgstr "Production d'une feuille de musique, définie à: "
-
-#: parse-scm.cc:79
-msgid "GUILE signaled an error for the expression begining here"
-msgstr "GUILE a signalé une erreur pour l'expression débutant ici"
-
-#.
-#. We could change the current translator's id, but that would make
-#. errors hard to catch
-#.
-#. last->translator_id_string_  = get_change ()->change_to_id_string_;
-#.
-#: part-combine-music-iterator.cc:139
-#, c-format
-msgid "I'm one myself: `%s'"
-msgstr "J'en sui sun moi-même: « %s »"
-
-#: part-combine-music-iterator.cc:142
-#, c-format
-msgid "none of these in my family: `%s'"
-msgstr "aucun de ceux-ci dans ma famille: « %s »"
-
-#: percent-repeat-engraver.cc:109
-msgid "Don't know how to handle a percent repeat of this length."
-msgstr "Ne sait comment traiter la répétition de pourcent de cette longueur."
-
-#: percent-repeat-engraver.cc:163
-msgid "unterminated percent repeat"
-msgstr "pourcentage de répétition non terminé"
-
-#: percent-repeat-iterator.cc:65
-msgid "no one to print a percent"
-msgstr "aucun pour l'impression de pourcent"
-
-#: performance.cc:51
-msgid "Track ... "
-msgstr "Piste ... "
-
-#: performance.cc:83
-msgid "Creator: "
-msgstr "Créateur: "
-
-#: performance.cc:103
-msgid "at "
-msgstr "à "
-
-#: performance.cc:114
-#, c-format
-msgid "from musical definition: %s"
-msgstr "à partir de la définition musicale: %s"
-
-#: performance.cc:169
-#, c-format
-msgid "MIDI output to `%s'..."
-msgstr "Sortie MIDI vers « %s »..."
-
-#: phrasing-slur-engraver.cc:123
-msgid "unterminated phrasing slur"
-msgstr "phrase de liaison non terminée"
-
-#: phrasing-slur-engraver.cc:141
-msgid "can't find start of phrasing slur"
-msgstr "ne peut repérer le début d'une phrase de liaison"
-
-#: piano-pedal-engraver.cc:235 piano-pedal-engraver.cc:250
-#: piano-pedal-engraver.cc:305 piano-pedal-performer.cc:82
-#, c-format
-msgid "can't find start of piano pedal: `%s'"
-msgstr "ne peut repérer le début de la pédale de piano: « %s »"
-
-#: piano-pedal-engraver.cc:410
-msgid "unterminated pedal bracket"
-msgstr "accolades des pédales non complétées"
-
-#: property-iterator.cc:97
-#, c-format
-msgid "Not a grob name, `%s'."
-msgstr "N'est pas un nom de type grob, « %s »"
-
-#: rest.cc:139
-#, c-format
-msgid "rest `%s' not found, "
-msgstr "symbole `%s' non repéré, "
-
-#: rest-collision.cc:199
-msgid "too many colliding rests"
-msgstr "trop de pauses en collision"
-
-#: scm-option.cc:45
-msgid "lilypond -e EXPR means:"
-msgstr "lilypond -e EXPRESSION signifie:"
-
-#: scm-option.cc:47
-msgid "  Evalute the Scheme EXPR before parsing any .ly files."
-msgstr "Evaluer l'EXPRESSION Scheme avant d'analyser les fichiers .ly"
-
-#: scm-option.cc:49
-msgid "  Multiple -e options may be given, they will be evaluated sequentially."
-msgstr "Les options multiples -e peuvent être fournis, elles seront évaluées séquentiellement."
-
-#: scm-option.cc:51
-msgid "  The function ly-set-option allows for access to some internal variables."
-msgstr "L'option de la fonction ly-set-option permet l'accès à quelques variables internes."
-
-#: scm-option.cc:53
-msgid "Usage: lilypond -e \"(ly-set-option SYMBOL VAL)\""
-msgstr "Usage: lilypond -e \"(ly-set-option SYMBOLE VALEUR)\""
-
-#: scm-option.cc:55
-msgid "Where SYMBOL VAL pair is any of:"
-msgstr "Où la paire SYMBOLE VALEUR peut prendre les options suivantes:"
-
-#: scm-option.cc:128
-msgid "Unknown internal option!"
-msgstr "Option interne inconnue!"
-
-#: score.cc:85
-msgid "Interpreting music..."
-msgstr "Interprétation de la musique..."
-
-#: score.cc:97
-msgid "Need music in a score"
-msgstr "Musique manquante pour produire la feuille de musique"
-
-#. should we? hampers debugging.
-#: score.cc:111
-msgid "Errors found/*, not processing score*/"
-msgstr "Erreurs trouvées/*, pas de traitement de la feuille de musique*/"
-
-#: score.cc:118
-#, c-format
-msgid "elapsed time: %.2f seconds"
-msgstr "temps écoulé: %.2f seconds"
-
-#: score-engraver.cc:99
-#, c-format
-msgid "can't find `%s'"
-msgstr "ne peut trouver « %s »"
-
-#: score-engraver.cc:100
-msgid "Fonts have not been installed properly.  Aborting"
-msgstr "Les fontes n'ont pas été installées correctement. Abandon"
-
-#: score-engraver.cc:205
-#, c-format
-msgid "unbound spanner `%s'"
-msgstr "clef sans borne « %s »"
-
-#: script-engraver.cc:90
-#, c-format
-msgid "Don't know how to interpret articulation `%s'"
-msgstr "Ne sait comment interpréter l'articulation « %s »"
-
-#. this shouldn't happen, but let's continue anyway.
-#: separation-item.cc:53 separation-item.cc:101
-msgid "Separation_item:  I've been drinking too much"
-msgstr "Separation_item:  cela ne devrait pas se produire mais..."
-
-#: simple-spacer.cc:248
-#, c-format
-msgid "No spring between column %d and next one"
-msgstr "Pas de tension entre la colonne %d et la suivante"
-
-#: slur-engraver.cc:141
-msgid "unterminated slur"
-msgstr "liaison non terminée"
-
-#. How to shut up this warning, when Voice_devnull_engraver has
-#. eaten start event?
-#: slur-engraver.cc:159
-msgid "can't find start of slur"
-msgstr "ne peut repérer le début d'une liaison"
-
-#: source-file.cc:67
-#, c-format
-msgid "Huh?  Got %d, expected %d characters"
-msgstr "Euh?  Obtenu %d caractères, on s'attendait à %d"
-
-#: spacing-spanner.cc:379
-#, c-format
-msgid "Global shortest duration is %s\n"
-msgstr "La plus petite durée globale est %s\n"
-
-#: spring-smob.cc:32
-#, c-format
-msgid "#<spring smob d= %f>"
-msgstr "#<spring smob d= %f>"
-
-#: staff-symbol.cc:61
-msgid "staff symbol: indentation yields beyond end of line"
-msgstr "symbole staff: l'indentation a cédé avant la fin de la ligne"
-
-#: stem.cc:118
-msgid "Weird stem size; check for narrow beams"
-msgstr "Taille bizarre de hampe de not; vérifier pour des faisceaux étroits"
-
-#: stem.cc:611
-#, c-format
-msgid "flag `%s' not found"
-msgstr "fanion `%s' non repéré"
-
-#: stem.cc:624
-#, c-format
-msgid "flag stroke `%s' not found"
-msgstr "force du fanion `%s' non repéré"
-
-#: stem-engraver.cc:96
-msgid "tremolo duration is too long"
-msgstr "durée du tremolo est trop longue"
-
-#: stem-engraver.cc:124
-#, c-format
-msgid "Adding note head to incompatible stem (type = %d)"
-msgstr "Ajout d'une note de tête à une hampe incompatible (type = %d)"
-
-#: stem-engraver.cc:125
-msgid "Don't you want polyphonic voices instead?"
-msgstr "Ne désirez-vous pas de voix polyphoniques à la place?"
-
-#: streams.cc:34
-#, c-format
-msgid "can't create directory: `%s'"
-msgstr "ne peut créer le répertoire: « %s »"
-
-#: streams.cc:48
-msgid "Error syncing file (disk full?)"
-msgstr "Erreur de synchronisation du fichier (disque plein?)"
-
-#: system.cc:125
-#, c-format
-msgid "Element count %d."
-msgstr "Éléments dénombrés %d."
-
-#: system.cc:372
-#, c-format
-msgid "Grob count %d "
-msgstr "Éléments de type grob dénombrés %d."
-
-#: system.cc:386
-msgid "Calculating line breaks..."
-msgstr "Calcul des bris de lignes..."
-
-#: text-spanner-engraver.cc:81
-msgid "can't find start of text spanner"
-msgstr "ne peut repérer le début du texte de clef"
-
-#: text-spanner-engraver.cc:95
-msgid "already have a text spanner"
-msgstr "a déjà un texte de clef"
-
-#: text-spanner-engraver.cc:164
-msgid "unterminated text spanner"
-msgstr "texte de clef non terminé"
-
-#: tfm.cc:83
-#, c-format
-msgid "can't find ascii character: %d"
-msgstr "ne peut repérer le caractère ascii: %d"
-
-#. Not using ngettext's plural feature here, as this message is
-#. more of a programming error.
-#: tfm-reader.cc:108
-#, c-format
-msgid "TFM header of `%s' has only %u word (s)"
-msgstr "L'en-tête TFM de « %s » n'a seulement que %u mot(s)"
-
-#: tfm-reader.cc:142
-#, c-format
-msgid "%s: TFM file has %u parameters, which is more than the %u I can handle"
-msgstr "%s: le fichier TFM a %u paramètres qui sont plus que %u pouvant être traités"
-
-#: tie-performer.cc:159
-msgid "No ties were created!"
-msgstr "Aucun lien n'a été créé!"
-
-#: time-scaled-music-iterator.cc:25
-msgid "no one to print a tuplet start bracket"
-msgstr "aucun pour l'impression d'un tuplet d'accolades de départ"
-
-#. If there is no such symbol, we default to the numbered style.
-#. (Here really with a warning!)
-#: time-signature.cc:87
-#, c-format
-msgid "time signature symbol `%s' not found; reverting to numbered style"
-msgstr "symbole de la signature du temps `%s' non repéré; retour à un style numéroté"
-
-#.
-#. Todo: should make typecheck?
-#.
-#. OTOH, Tristan Keuris writes 8/20 in his Intermezzi.
-#.
-#: time-signature-engraver.cc:57
-#, c-format
-msgid "Found strange time signature %d/%d."
-msgstr "Repérage d'étranges signature de temps %d/%d."
-
-#: translator-ctors.cc:53
-#, c-format
-msgid "unknown translator: `%s'"
-msgstr "traducteur inconnu: « %s »"
-
-#: translator-def.cc:105
-msgid "Program has no such type"
-msgstr "Programme ne peut traiter un tel type"
-
-#: translator-def.cc:111
-#, c-format
-msgid "Already contains: `%s'"
-msgstr "Contient déjà: « %s »"
-
-#: translator-def.cc:112
-#, c-format
-msgid "Not adding translator: `%s'"
-msgstr "Le traducteur n'est pas ajouté: « %s »"
-
-#: translator-def.cc:229
-#, c-format
-msgid "can't find: `%s'"
-msgstr "ne peut trouver: « %s »"
-
-#: translator-group.cc:158
-#, c-format
-msgid "can't find or create `%s' called `%s'"
-msgstr "ne peut trouver ou créer « %s » qui a appelé « %s »"
-
-#: translator-group.cc:230
-#, c-format
-msgid "can't find or create: `%s'"
-msgstr "ne peut toruver ou créer: « %s »"
-
-#: vaticana-ligature.cc:49
-msgid "ascending vaticana style flexa"
-msgstr "vaticana ascendant de style flexa"
-
-#: vaticana-ligature.cc:219
-msgid "Vaticana_ligature:thickness undefined; assuming 1.4"
-msgstr "Vaticana_ligature: épaisseur indéfinie; 1.4 est assumé"
-
-#: vaticana-ligature.cc:233
-msgid "Vaticana_ligature:x-offset undefined; assuming 0.0"
-msgstr "Vaticana_ligature: décalage en X indéfinie; 0.0 est assumé"
-
-#: vaticana-ligature.cc:258
-msgid "Vaticana_ligature: (delta_pitch == 0)"
-msgstr "Vaticana_liguture: (delta_pitch == 0)"
-
-#: vaticana-ligature.cc:271
-msgid "Vaticana_ligature:delta-pitch -> ignoring join"
-msgstr "Vaticana_ligature:delta-pitch -> joint ignoré"
-
-#: vaticana-ligature-engraver.cc:477
-#, c-format
-msgid "Vaticana_ligature_engraver: setting `spacing-increment = %f': ptr=%ul"
-msgstr "Vaticana_ligature_engraver: fixé `spacing-increment = %f': ptr=%ul"
-
-#: volta-engraver.cc:112
-msgid "No volta spanner to end"
-msgstr "Aucune clef volta pour terminer"
-
-#: volta-engraver.cc:123
-msgid "Already have a volta spanner.  Stopping that one prematurely."
-msgstr "A déjà une clef volta. Arrêt de celle-ci prématurément."
-
-#: volta-engraver.cc:127
-msgid "Also have a stopped spanner.  Giving up."
-msgstr "A aussi une clef arrêtée. Abandon."
-
-#: parser.yy:480
-msgid "Identifier should have alphabetic characters only"
-msgstr "L'identificateur doit contenir des caractères alphabétiques seulement"
-
-#: parser.yy:779
-msgid "More alternatives than repeats.  Junking excess alternatives."
-msgstr "Plus d'alternatives que de répétitions. Rebuts dépasse la limite des alternatives."
-
-#: parser.yy:861 parser.yy:868
-msgid "pplycontext takes function argument"
-msgstr "pplycontext nécessite un argument de fonction"
-
-#: parser.yy:877
-msgid "Second argument must be a symbol"
-msgstr "Le second argument doit être un symbole"
-
-#: parser.yy:882
-msgid "First argument must be a procedure taking one argument"
-msgstr "Le premier argument doit être une procédure n'acceptant qu'un argument"
-
-#: parser.yy:1009
-msgid "pply takes function argument"
-msgstr "pply nécessite un argument de fonction"
-
-#: parser.yy:1501
-msgid "Expecting string as script definition"
-msgstr "Chaîne attendue comme définition de script"
-
-#: parser.yy:1598
-msgid "Expecting musical-pitch value"
-msgstr "Valeur du ton musical attendu"
-
-#: parser.yy:1609
-msgid "Must have duration object"
-msgstr "Doit avoir une durée pour l'objet"
-
-#: parser.yy:1618 parser.yy:1626
-msgid "Have to be in Lyric mode for lyrics"
-msgstr "Doit être en mode Lyric pour les paroles"
-
-#: parser.yy:1798 parser.yy:1853
-#, c-format
-msgid "not a duration: %d"
-msgstr "n'est pas une durée: %d"
-
-#: parser.yy:1949
-msgid "Have to be in Note mode for notes"
-msgstr "Doit être en mode Note pour les notes"
-
-#: parser.yy:2032
-msgid "Have to be in Chord mode for chords"
-msgstr "Doit être en mode Chord pour les choeurs"
-
-#: parser.yy:2171
-msgid "need integer number arg"
-msgstr "A besoin d'un nombre entier pour l'argument"
-
-#: parser.yy:2316
-msgid "Suspect duration found following this beam"
-msgstr "Durée suspecte repéré après ce faisceau"
-
-#: lexer.ll:186
-msgid "EOF found inside a comment"
-msgstr "Fin de fichier (EOF) à l'intérieur du commentaire"
-
-#: lexer.ll:200
-msgid "\\maininput disallowed outside init files"
-msgstr "\\maininput désactivé en dehord des fichiers init"
-
-#: lexer.ll:224
-#, c-format
-msgid "wrong or undefined identifier: `%s'"
-msgstr "identificateur erroné ou non défini: « %s »"
-
-#. backup rule
-#: lexer.ll:233
-msgid "Missing end quote"
-msgstr "Caractère de fin de citation manquant"
-
-#. backup rule
-#: lexer.ll:255 lexer.ll:259
-msgid "white expected"
-msgstr "blanche attendue"
-
-#: lexer.ll:268
-msgid "Can't evaluate Scheme in safe mode"
-msgstr "Ne peut évaluer le Schème de façon sûre"
-
-#: lexer.ll:397 lexer.ll:487
-msgid "Brace found at end of lyric.  Did you forget a space?"
-msgstr "Accolade repérée à la fin des paroles. Avez-vous oublié un espace?"
-
-#: lexer.ll:574
-#, c-format
-msgid "invalid character: `%c'"
-msgstr "caractère invalide: « %c »"
-
-#: lexer.ll:651
-#, c-format
-msgid "unknown escaped string: `\\%s'"
-msgstr "chaîne d'échappement inconnue: « \\%s »"
-
-#: lexer.ll:742
-#, c-format
-msgid "Incorrect lilypond version: %s (%s, %s)"
-msgstr "Version de lilypond incorrecte: %s (%s, %s)"
-
-#: lexer.ll:743
-msgid "Consider updating the input with the convert-ly script"
-msgstr "Considérer la mise à jour de l'entrée à l'aide du script convert-ly"
-
-#~ msgid "Run LilyPond using LaTeX for titling"
-#~ msgstr "Exécuter LilyPond en utilisant LaTeX pour le « titling »"
-
-#~ msgid "Fetch and rebuild from latest source package"
-#~ msgstr "Repérer et reconstruire depuis les sources du dernier package"
-
-#~ msgid "unpack and build in DIR [%s]"
-#~ msgstr "dépaqueter et construire dans le RÉPERTOIRE [%s]"
-
-#~ msgid "execute COMMAND, subtitute:"
-#~ msgstr "exécuter la COMMANDE de substitution:"
-
-#~ msgid "%b: build root"
-#~ msgstr "%b: construit la racine"
-
-#~ msgid "%n: package name"
-#~ msgstr "%n: nom du package"
-
-#~ msgid "%r: release directory"
-#~ msgstr "%r: répertoire de production de version"
-
-#~ msgid "%t: tarball"
-#~ msgstr "%t: tarball"
-
-#~ msgid "%v: package version"
-#~ msgstr "%v: version du package"
-
-#~ msgid "keep all output, and name the directory %s"
-#~ msgstr "conserver toutes les sorties et nommer le répertoire %s"
-
-#~ msgid "upon failure notify EMAIL[,EMAIL]"
-#~ msgstr "lors d'un échec aviser par EMAIL[,EMAIL]"
-
-#~ msgid "remove previous build"
-#~ msgstr "enlever la construction précédente"
-
-#~ msgid "fetch and build URL [%s]"
-#~ msgstr "rechercher et construire le URL [%s]"
-
-#~ msgid "Listing `%s'..."
-#~ msgstr "Listage de « %s »..."
-
-#~ msgid "latest is: %s"
-#~ msgstr "le plus à jour est: %s"
-
-#~ msgid "relax, %s is up to date"
-#~ msgstr "relaxer, %s est à jour"
-
-#~ msgid "Fetching `%s'..."
-#~ msgstr "Recherche de « %s »..."
-
-#~ msgid "Building `%s'..."
-#~ msgstr "Construction de « %s »..."
-
-#~ msgid "invalid subtraction: not part of chord: %s"
-#~ msgstr "soustraction invalide: ne fait pas partie de l'accord: %s"
-
-#~ msgid "invalid inversion pitch: not part of chord: %s"
-#~ msgstr "inversion de tons invalide: ne fait pas parti de l'accord: %s"
-
-#~ msgid "This was the other key definition."
-#~ msgstr "C'était l'autre définition de clé"
-
-#~ msgid ", at "
-#~ msgstr ", à "
-
-#~ msgid "Pitch arguments out of range"
-#~ msgstr "Arguments des tons hors gamme"
-
-#~ msgid "(left_head == 0)"
-#~ msgstr "(left_head == 0)"
-
-#~ msgid "undefined left_head"
-#~ msgstr "left_head indéfini"
-
-#~ msgid "(right_head == 0)"
-#~ msgstr "(right_head == 0)"
-
-#~ msgid "undefined right_head"
-#~ msgstr "right_head indéfini"
-
-#~ msgid "junking lonely porrectus"
-#~ msgstr "porrectus rebut isolé"
-
-#~ msgid "porrectus style undefined; using mensural"
-#~ msgstr "style porrectus indéfini; utilisation du mensural"
-
-#~ msgid "stack size cur %d, max %d\n"
-#~ msgstr "taille de la pile courante %d, max %d\n"
-
-#~ msgid "Putting slur over rest."
-#~ msgstr "Mise en place d'un liaison par-dessus une pause."
-
-#~ msgid "Slur over rest?"
-#~ msgstr "Liaison par-dessus une pause?"
-
-#~ msgid "Text_spanner too small"
-#~ msgstr "Text_spanner trop petit"
-
-#~ msgid "Can't specify direction for this request"
-#~ msgstr "Ne peut spécifier une direction pour cette requête"
-
-#~ msgid "Generate .dvi with LaTeX for LilyPond"
-#~ msgstr "Générer un fichier .dvi à l'aide de LaTeX pour LilyPond"
-
-#~ msgid " % logstr))"
-#~ msgstr " % logstr))"
-
-#~ msgid "can't map file"
-#~ msgstr "ne peut produire le fichier map"
-
-#~ msgid "This binary was compiled with the following options:"
-#~ msgstr "Ce binaire a été compilé avec les options suivantes:"
-
-#~ msgid "Expecting %d arguments"
-#~ msgstr "%d arguments attendus"
-
-#~ msgid "%s is far from completed.  Not all constructs are recognised."
-#~ msgstr "%s est loin d'être complet. Tous les construits n'ont pas été reconnus."
-
-#~ msgid "EOF in a string"
-#~ msgstr "Fin de fichier (EOF) dans la chaîne"
-
-#~ msgid "<stdin>"
-#~ msgstr "<stdin>"
-
-#~ msgid "programming error: "
-#~ msgstr "erreur de programmation: "
-
-#~ msgid "can't find start of beam"
-#~ msgstr "ne peut repérer le début du faisceau"
-
-#~ msgid "weird beam vertical offset"
-#~ msgstr "décalage bizarre vertical de faisceau"
-
-#~ msgid "unknown spacing pair `%s', `%s'"
-#~ msgstr "paire d'espacements inconnue « %s », « %s »"
-
-#~ msgid "no Grace context available"
-#~ msgstr "Aucun contexte disponible pour la note d'ornement"
-
-#~ msgid "Unattached grace notes.  Attaching to last musical column."
-#~ msgstr "Notes d'ornement non attachées. On les rattache à la dernière colonne musicale."
-
-#~ msgid "evalute EXPR as Scheme after .scm init is read"
-#~ msgstr "évaluer EXPR comme un Schème après la lecture de initialisation .scm"
-
-#~ msgid "ly_get_mus_property (): Not a Music"
-#~ msgstr "ly_get_mus_property (): n'est pas de la musique"
-
-#~ msgid "ly_set_mus_property (): Not a symbol"
-#~ msgstr "ly_set_mus_property (): n'est pas un symbole"
-
-#~ msgid "ly_set_mus_property ():  not of type Music"
-#~ msgstr "ly_set_mus_property ():  n'est pas un type de musique"
-
-#~ msgid "ly_make_music (): Not a string"
-#~ msgstr "ly_make_music (): n'est pas une chaîne"
-
-#~ msgid "ly_music_name (): Not a music expression"
-#~ msgstr "ly_music_name (): n'est pas une expression musicale"
-
-#~ msgid "writing header field `%s' to `%s'..."
-#~ msgstr "écriture du champ d'en-tête « %s » dans « %s »..."
-
-#~ msgid ""
-#~ "`%s' is deprecated.  Use\n"
-#~ " \\property %s.%s \\override #'%s = #%s"
-#~ msgstr ""
-#~ "« %s » est déprécié.  Utiliser\n"
-#~ " \\propriété %s.%s \\pour écraser #'%s = #%s"
-
-#~ msgid "Wrong type for property: %s, type: %s, value found: %s, type: %s"
-#~ msgstr "Type erroné pour la propriété: %s, type: %s, valeur trouvée: %s, type: %s"
-
-#~ msgid "too many notes for rest collision"
-#~ msgstr "trop de notes pour la pause en collision"
-
-#~ msgid "Scheme options:"
-#~ msgstr "Option de schèmes:"
-
-#~ msgid "ly-get-trans-property: expecting a Translator_group argument"
-#~ msgstr "ly-get-trans-property: s'attendait à un argument de type Translator_group"
-
-#~ msgid "Oldest supported input version: %s"
-#~ msgstr "Version supportant les plus vieux formats: %s"
-
-#~ msgid "#32 in quarter: %d"
-#~ msgstr "#32 dans le quart: %d"
-
-#~ msgid "LY output to `%s'..."
-#~ msgstr "LY produit la sortie vers « %s »..."
-
-#~ msgid "track %d:"
-#~ msgstr "piste %d:"
-
-#~ msgid "Processing..."
-#~ msgstr "Traitement..."
-
-#~ msgid "Creating voices..."
-#~ msgstr "Création des voix..."
-
-#~ msgid "track "
-#~ msgstr "piste "
-
-#~ msgid "NOT Filtering tempo..."
-#~ msgstr "Pas de filtrage du tempo..."
-
-#~ msgid "NOT Quantifying columns..."
-#~ msgstr "Pas de quantification des colonnes..."
-
-#~ msgid "Quantifying columns..."
-#~ msgstr "Quantification des colonnes..."
-
-#~ msgid "Settling columns..."
-#~ msgstr "Initialisation des colonnes"
-
-#~ msgid "% MIDI copyright:"
-#~ msgstr "% MIDI copyright:"
-
-#~ msgid "% MIDI instrument:"
-#~ msgstr "% MIDI instrument:"
-
-#~ msgid "lily indent level: %d"
-#~ msgstr "niveau d'indentation de lily: %d"
-
-#~ msgid "% Creator: "
-#~ msgstr "% Créateur: "
-
-#~ msgid "% Automatically generated"
-#~ msgstr "% Automatiquement généré"
-
-# msgstr "% à partir du fichier d'entrée: "
-#~ msgid "% from input file: "
-#~ msgstr "% à partir du fichier d'entrée: "
-
-#~ msgid "write exact durations, e.g.: a4*385/384"
-#~ msgstr "écrire les durées exactes i.e.: a4*385/384"
-
-#~ msgid "enable debugging output"
-#~ msgstr "autoriser la mise au point de sortie"
-
-#~ msgid "don't output tuplets, double dots or rests, smallest is 32"
-#~ msgstr "ne pas produire les tuplets, les doubles pointées ou les pauses, plus petits que 32"
-
-#~ msgid "set FILE as default output"
-#~ msgstr "définir le FICHIER comme étant la sortie par défaut"
-
-#~ msgid "be quiet"
-#~ msgstr "travailler en silence"
-
-#~ msgid "don't output rests or skips"
-#~ msgstr "ne pas produire les pauses ou les sauts"
-
-#~ msgid "set smallest duration"
-#~ msgstr "définir la plus petite durée"
-
-#~ msgid "don't timestamp the output"
-#~ msgstr "ne pas dater la sortie"
-
-#~ msgid "assume no double dotted notes"
-#~ msgstr "assumer aucune note double pointée"
-
-#~ msgid "Usage: %s [OPTION]... [FILE]"
-#~ msgstr "Usage: %s [OPTION]... [FICHIER]"
-
-#~ msgid "Translate MIDI-file to lilypond"
-#~ msgstr "Traduire un fichier en format MIDI au format lilypond"
-
-#~ msgid "no_double_dots: %d\n"
-#~ msgstr "no_double_dots: %d\n"
-
-#~ msgid "no_rests: %d\n"
-#~ msgstr "no_rests: %d\n"
-
-#~ msgid "no_quantify_b_s: %d\n"
-#~ msgstr "no_quantify_b_s: %d\n"
-
-#~ msgid "no_smaller_than: %d (1/%d)\n"
-#~ msgstr "no_smaller_than: %d (1/%d)\n"
-
-#~ msgid "no_tuplets: %d\n"
-#~ msgstr "no_tuplets: %d\n"
-
-#~ msgid "zero length string encountered"
-#~ msgstr "chaîne de longueur zéro rencontrée"
-
-#~ msgid "MIDI header expected"
-#~ msgstr "En-tête de format MIDI attendue"
-
-#~ msgid "invalid header length"
-#~ msgstr "longueur invalide d'en-tête"
-
-#~ msgid "invalid MIDI format"
-#~ msgstr "format MIDI invalide"
-
-#~ msgid "invalid number of tracks"
-#~ msgstr "nombre invalide de pistes"
-
-#~ msgid "can't handle non-metrical time"
-#~ msgstr "ne peut traiter des temps non métriques"
-
-#~ msgid "Junking note-end event: channel = %d, pitch = %d"
-#~ msgstr "Mise au rebut d'un événement de fin de note: canal = %d, ton = %d"
-
-#~ msgid "invalid running status"
-#~ msgstr "état d'exécution invalide"
-
-#~ msgid "unimplemented MIDI meta-event"
-#~ msgstr "méta-événement MIDI non implanté"
-
-#~ msgid "invalid MIDI event"
-#~ msgstr "événement MIDI invalide"
-
-#~ msgid "MIDI track expected"
-#~ msgstr "piste MIDI attendue"
-
-#~ msgid "invalid track length"
-#~ msgstr "longueur de piste invalide"
diff --git a/po/it.po b/po/it.po
deleted file mode 100644
index 9f95fab2b1..0000000000
--- a/po/it.po
+++ /dev/null
@@ -1,2838 +0,0 @@
-# it.po -- GNU LilyPond's italian language file
-# Tineke de Munnik <jantien@xs4all.nl>, 1998.
-# Modified by Maurizio Umberto Puxeddu <umbpux@tin.it>, Feb1999
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"POT-Creation-Date: 2003-07-18 14:45+0200\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"
-
-#. this is where special info is often stored
-#. ###############################################################
-#. lilylib.py -- options and stuff
-#.
-#. source file of the GNU LilyPond music typesetter
-#.
-#. (c)  1998--2003  Han-Wen Nienhuys <hanwen@cs.uu.nl>
-#. Jan Nieuwenhuizen <janneke@gnu.org>
-#. ##  subst:\(^\|[^._a-z]\)\(abspath\|identify\|warranty\|progress\|warning\|error\|exit\|getopt_args\|option_help_str\|options_help_str\|help\|setup_temp\|read_pipe\|system\|cleanup_temp\|strip_extension\|cp_to_dir\|mkdir_p\|init\) *(
-#. ##  replace:\1ly.\2 (
-#. ## subst: \(help_summary\|keep_temp_dir_p\|option_definitions\|original_dir\|program_name\|pseudo_filter_p\|temp_dir\|verbose_p\)
-#. ###############################################################
-#. Users of python modules should include this snippet
-#. and customize variables below.
-#. We'll suffer this path init stuff as long as we don't install our
-#. python packages in <prefix>/lib/pythonx.y (and don't kludge around
-#. it as we do with teTeX on Red Hat Linux: set some environment var
-#. (PYTHONPATH) in profile)
-#. If set, LILYPONDPREFIX must take prevalence
-#. if datadir is not set, we're doing a build and LILYPONDPREFIX
-#. Customize these
-#. lilylib globals
-#: lilylib.py:60
-msgid "lilylib module"
-msgstr ""
-
-#: lilylib.py:63 lilypond-book.py:131 lilypond.py:128 midi2ly.py:100
-#: mup2ly.py:75 main.cc:111
-msgid "print this help"
-msgstr ""
-
-#. ###############################################################
-#. Handle bug in Python 1.6-2.1
-#.
-#. there are recursion limits for some patterns in Python 1.6 til 2.1.
-#. fix this by importing pre instead. Fix by Mats.
-#. Attempt to fix problems with limited stack size set by Python!
-#. Sets unlimited stack size. Note that the resource module only
-#. is available on UNIX.
-#: lilylib.py:114 midi2ly.py:136 mup2ly.py:130 main.cc:188 main.cc:200
-#, c-format, python-format
-msgid "Copyright (c) %s by"
-msgstr "Copyright (c) %s di"
-
-#: lilylib.py:114
-msgid " 1998--2003"
-msgstr ""
-
-#: lilylib.py:118
-msgid "Distributed under terms of the GNU General Public License."
-msgstr ""
-
-#: lilylib.py:120
-msgid "It comes with NO WARRANTY."
-msgstr ""
-
-#: lilylib.py:127 midi2ly.py:150 mup2ly.py:144 input.cc:88
-msgid "warning: "
-msgstr "attenzione: "
-
-#. lots of midi files use plain text for lyric events
-#. FIXME: read from stdin when files[0] = '-'
-#: lilylib.py:130 midi2ly.py:165 midi2ly.py:1018 midi2ly.py:1083 mup2ly.py:147
-#: mup2ly.py:161 input.cc:93
-msgid "error: "
-msgstr "errore: "
-
-#: lilylib.py:134
-#, fuzzy, python-format
-msgid "Exiting (%d)..."
-msgstr "Genero le voci..."
-
-#: lilylib.py:194 midi2ly.py:224 mup2ly.py:220
-#, fuzzy, python-format
-msgid "Usage: %s [OPTIONS]... FILE"
-msgstr "Uso: %s [OPZIONE]... [FILE]"
-
-#: lilylib.py:198 midi2ly.py:228 mup2ly.py:224 main.cc:166
-msgid "Options:"
-msgstr "Opzioni: "
-
-#: lilylib.py:202 midi2ly.py:232 mup2ly.py:228 main.cc:172
-#, c-format, python-format
-msgid "Report bugs to %s."
-msgstr ""
-
-#: lilylib.py:228
-#, fuzzy, python-format
-msgid "Opening pipe `%s'"
-msgstr "Genero le voci..."
-
-#. successful pipe close returns 'None'
-#: lilylib.py:240
-#, python-format
-msgid "`%s' failed (%d)"
-msgstr ""
-
-#: lilylib.py:242 lilylib.py:289 lilypond-book.py:231 lilypond.py:512
-msgid "The error log is as follows:"
-msgstr ""
-
-#: lilylib.py:262 midi2ly.py:260 mup2ly.py:256
-#, python-format
-msgid "Invoking `%s'"
-msgstr ""
-
-#: lilylib.py:264
-#, fuzzy, python-format
-msgid "Running %s..."
-msgstr "Genero le voci..."
-
-#: lilylib.py:282
-#, python-format
-msgid "`%s' failed (%s)"
-msgstr ""
-
-#: lilylib.py:285 midi2ly.py:266 mup2ly.py:264
-msgid "(ignored)"
-msgstr ""
-
-#: lilylib.py:299 midi2ly.py:276 mup2ly.py:274
-#, fuzzy, python-format
-msgid "Cleaning %s..."
-msgstr "Genero le voci..."
-
-#. Duh.  Python style portable: cp *.EXT OUTDIR
-#. system ('cp *.%s %s' % (ext, outdir), 1)
-#. Python < 1.5.2 compatibility
-#.
-#. On most platforms, this is equivalent to
-#. `normpath(join(os.getcwd()), PATH)'.  *Added in Python version 1.5.2*
-#. tex needs lots of memory, more than it gets by default on Debian
-#. TODO: * prevent multiple addition.
-#. * clean TEXINPUTS, MFINPUTS, TFMFONTS,
-#. as these take prevalence over $TEXMF
-#. and thus may break tex run?
-#. $TEXMF is special, previous value is already taken care of
-#. # -sOutputFile does not work with bbox?
-#. # todo:
-#. # have better algorithm for deciding when to crop page,
-#. # and when to show full page
-#: lilylib.py:458
-msgid "Removing output file"
-msgstr ""
-
-#. !@PYTHON@
-#. once upon a rainy monday afternoon.
-#.
-#. ...
-#.
-#. (not finished.)
-#. ABC standard v1.6:  http://www.gre.ac.uk/~c.walshaw/abc2mtex/abc.txt
-#.
-#. Enhancements  (Roy R. Rankin)
-#.
-#. Header section moved to top of lilypond file
-#. handle treble, treble-8, alto, and bass clef
-#. Handle voices (V: headers) with clef and part names, multiple voices
-#. Handle w: lyrics with multiple verses
-#. Handle key mode names for minor, major, phrygian, ionian, locrian, aeolian,
-#. mixolydian, lydian, dorian
-#. Handle part names from V: header
-#. Tuplets handling fixed up
-#. Lines starting with |: not discarded as header lines
-#. Multiple T: and C: header entries handled
-#. Accidental maintained until next bar check
-#. Silent rests supported
-#. articulations fermata, upbow, downbow, ltoe, accent, tenuto supported
-#. Chord strings([-^]"string") can contain a '#'
-#. Header fields enclosed by [] in notes string processed
-#. W: words output after tune as abc2ps does it (they failed before)
-#. Enhancements (Laura Conrad)
-#.
-#. Barring now preserved between ABC and lilypond
-#. the default placement for text in abc is above the staff.
-#. %%LY now supported.
-#. \breve and \longa supported.
-#. M:none doesn't crash lily.
-#. Limitations
-#.
-#. Multiple tunes in single file not supported
-#. Blank T: header lines should write score and open a new score
-#. Not all header fields supported
-#. ABC line breaks are ignored
-#. Block comments generate error and are ignored
-#. Postscript commands are ignored
-#. lyrics not resynchronized by line breaks (lyrics must fully match notes)
-#. %%LY slyrics can't be directly before a w: line.
-#. ???
-#. TODO:
-#.
-#. Convert to new chord styles.
-#.
-#. UNDEF -> None
-#.
-#. uGUHGUHGHGUGH
-#. UGH
-#. treble8 is used by abctab2ps; -8va is used by barfly,
-#. and by my patch to abc2ps. If there's ever a standard
-#. about this we'll support that.
-#. find keywork
-#. assume that Q takes the form "Q:1/4=120"
-#. There are other possibilities, but they are deprecated
-#. outf.write ("\t\t\\consists Staff_margin_engraver\n")
-#. pitch manipulation. Tuples are (name, alteration).
-#. 0 is (central) C. Alteration -1 is a flat, Alteration +1 is a sharp
-#. pitch in semitones.
-#. abc to lilypond key mode names
-#. semitone shifts for key mode names
-#. latex does not like naked #'s
-#. latex does not like naked "'s
-#. break lyrics to words and put "'s around words containing numbers and '"'s
-#. escape "
-#. _ causes probs inside ""
-#. _ to ' _ '
-#. split words with -
-#. unless \-
-#. ~ to space('_')
-#. * to to space
-#. latex does not like naked #'s
-#. put numbers and " and ( into quoted string
-#. insure space between lines
-#. title
-#. strip trailing blanks
-#. Meter
-#. KEY
-#. seperate clef info
-#. there may or may not be a space
-#. between the key letter and the mode
-#. ugh.
-#. ugh.
-#. Notes
-#. Origin
-#. Reference Number
-#. Area
-#. History
-#. Book
-#. Composer
-#. Default note length
-#. Voice
-#. Words
-#. vocals
-#. tempo
-#. we use in this order specified accidental, active accidental for bar,
-#. active accidental for key
-#. (num /  den)  / defaultlen < 1/base
-#. return (str, num,den,dots)
-#. ignore slide
-#. ignore roll
-#. s7m2 input doesnt care about spaces
-#.
-#. remember accidental for rest of bar
-#.
-#. get accidental set in this bar or UNDEF if not set
-#. WAT IS ABC EEN ONTZETTENDE PROGRAMMEERPOEP  !
-#. failed; not a note!
-#. escape '#'s
-#.
-#. |] thin-thick double bar line
-#. || thin-thin double bar line
-#. [| thick-thin double bar line
-#. :| left repeat
-#. |: right repeat
-#. :: left-right repeat
-#. |1 volta 1
-#. |2 volta 2
-#. first try the longer one
-#. bracket escape
-#. the nobarlines option is necessary for an abc to lilypond translator for
-#. exactly the same reason abc2midi needs it: abc requires the user to enter
-#. the note that will be printed, and MIDI and lilypond expect entry of the
-#. pitch that will be played.
-#.
-#. In standard 19th century musical notation, the algorithm for translating
-#. between printed note and pitch involves using the barlines to determine
-#. the scope of the accidentals.
-#.
-#. Since ABC is frequently used for music in styles that do not use this
-#. convention, such as most music written before 1700, or ethnic music in
-#. non-western scales, it is necessary to be able to tell a translator that
-#. the barlines should not affect its interpretation of the pitch.
-#. write other kinds of appending  if we ever need them.
-#. add comments to current voice
-#. Try nibbling characters off until the line doesn't change.
-#. dump_global (outf)
-#. !@PYTHON@
-#.
-#. convert-ly.py -- Update old LilyPond input files (fix name?)
-#.
-#. source file of the GNU LilyPond music typesetter
-#.
-#. (c)  1998--2003  Han-Wen Nienhuys <hanwen@cs.uu.nl>
-#. Jan Nieuwenhuizen <janneke@gnu.org>
-#. TODO
-#. use -f and -t for -s output
-#. NEWS
-#. 0.2
-#. - rewrite in python
-#. Did we ever have \mudela-version?  I doubt it.
-#. lilypond_version_re_str = '\\\\version *\"(.*)\"'
-#. ###########################
-#. need new a namespace
-#. raise FatalConversionError()
-#. need new a namespace
-#. harmful to current .lys
-#. str = re.sub ('\\\\key([^;]+);', '\\\\accidentals \\1;', str)
-#. raise FatalConversionError()
-#. raise FatalConversionError()
-#. raise FatalConversionError()
-#. TODO: lots of other syntax change should be done here as well
-#. Ugh, but meaning of \stemup changed too
-#. maybe we should do \stemup -> \stemUp\slurUp\tieUp ?
-#. I don't know exactly when these happened...
-#. ugh, we loose context setting here...
-#. (lacks capitalisation slur -> Slur)
-#. # dynamic..
-#. TODO: add lots of these
-#. ugh
-#. old fix
-#. Make sure groups of more than one ; have space before
-#. them, so that non of them gets removed by next rule
-#. Only remove ; that are not after spaces, # or ;
-#. Otherwise  we interfere with Scheme comments,
-#. which is badbadbad.
-#. 40 ?
-#. ###############################
-#. END OF CONVERSIONS
-#. ###############################
-#. !@PYTHON@
-#. info mostly taken from looking at files. See also
-#. http://lilypond.org/wiki/?EnigmaTransportFormat
-#. This supports
-#.
-#. * notes
-#. * rests
-#. * ties
-#. * slurs
-#. * lyrics
-#. * articulation
-#. * grace notes
-#. * tuplets
-#.
-#. todo:
-#. * slur/stem directions
-#. * voices (2nd half of frame?)
-#. * more intelligent lyrics
-#. * beams (better use autobeam?)
-#. * more robust: try entertainer.etf (freenote)
-#. * dynamics
-#. * empty measures (eg. twopt03.etf from freenote)
-#.
-#. uGUHGUHGHGUGH
-#. notename 0 == central C
-#. represent pitches as (notename, alteration), relative to C-major scale
-#. a fifth up
-#. should cache this.
-#. flag1 isn't all that interesting.
-#. 3: '>',
-#. 18: '\arpeggio' ,
-#. do grace notes.
-#. ugh.
-#. we don't attempt voltas since they fail easily.
-#. and g.repeat_bar == '|:' or g.repeat_bar == ':|:' or g.bracket:
-#. 4 layers.
-#. let's not do this: this really confuses when eE happens to be before  a ^text.
-#. if last_tag and last_indices:
-#. etf_file_dict[last_tag][last_indices].append (l)
-#. # do it
-#. staff-spec
-#. should use \addlyrics ?
-#. !@PYTHON@
-#. vim: set noexpandtab:
-#. This is was the idea for handling of comments:
-#. Multiline comments, @ignore .. @end ignore is scanned for
-#. in read_doc_file, and the chunks are marked as 'ignore', so
-#. lilypond-book will not touch them any more. The content of the
-#. chunks are written to the output file. Also 'include' and 'input'
-#. regex has to check if they are commented out.
-#.
-#. Then it is scanned for 'lilypond', 'lilypond-file' and 'lilypond-block'.
-#. These three regex's has to check if they are on a commented line,
-#. % for latex, @c for texinfo.
-#.
-#. Then lines that are commented out with % (latex) and @c (Texinfo)
-#. are put into chunks marked 'ignore'. This cannot be done before
-#. searching for the lilypond-blocks because % is also the comment character
-#. for lilypond.
-#.
-#. The the rest of the rexeces are searched for. They don't have to test
-#. if they are on a commented out line.
-#. ###############################################################
-#. Users of python modules should include this snippet
-#. and customize variables below.
-#. We'll suffer this path init stuff as long as we don't install our
-#. python packages in <prefix>/lib/pythonx.y (and don't kludge around
-#. it as we do with teTeX on Red Hat Linux: set some environment var
-#. (PYTHONPATH) in profile)
-#. If set, LILYPONDPREFIX must take prevalence
-#. if datadir is not set, we're doing a build and LILYPONDPREFIX
-#. Customize these
-#. if __name__ == '__main__':
-#. lilylib globals
-#. temp_dir = os.path.join (original_dir,  '%s.dir' % program_name)
-#. urg
-#. # FIXME
-#. # do -P or -p by default?
-#. #help_summary = _ ("Run LilyPond using LaTeX for titling")
-#: lilypond-book.py:120
-msgid "Process LilyPond snippets in hybrid html, LaTeX or texinfo document"
-msgstr ""
-
-#. another bug in option parser: --output=foe is taken as an abbreviation
-#. for --output-format
-#: lilypond-book.py:125 main.cc:110
-msgid "EXT"
-msgstr ""
-
-#: lilypond-book.py:125
-msgid "use output format EXT (texi [default], texi-html, latex, html)"
-msgstr ""
-
-#: lilypond-book.py:126 lilypond-book.py:127 lilypond-book.py:129
-#: lilypond-book.py:130
-msgid "DIM"
-msgstr ""
-
-#: lilypond-book.py:126
-msgid "default fontsize for music.  DIM is assumed to be in points"
-msgstr ""
-
-#: lilypond-book.py:127
-msgid "deprecated, use --default-music-fontsize"
-msgstr ""
-
-#: lilypond-book.py:128
-msgid "OPT"
-msgstr ""
-
-#: lilypond-book.py:128
-msgid "pass OPT quoted to the lilypond command line"
-msgstr ""
-
-#: lilypond-book.py:129
-msgid "force fontsize for all inline lilypond. DIM is assumed be to in points"
-msgstr ""
-
-#: lilypond-book.py:130
-msgid "deprecated, use --force-music-fontsize"
-msgstr ""
-
-#: lilypond-book.py:132 lilypond.py:130 main.cc:113 main.cc:118
-msgid "DIR"
-msgstr ""
-
-#: lilypond-book.py:132
-msgid "include path"
-msgstr ""
-
-#: lilypond-book.py:133
-#, fuzzy
-msgid "write dependencies"
-msgstr "aspettavo uno spazio bianco"
-
-#: lilypond-book.py:134
-msgid "PREF"
-msgstr ""
-
-#: lilypond-book.py:134
-msgid "prepend PREF before each -M dependency"
-msgstr ""
-
-#: lilypond-book.py:135
-msgid "don't run lilypond"
-msgstr ""
-
-#: lilypond-book.py:136
-msgid "don't generate pictures"
-msgstr ""
-
-#: lilypond-book.py:137
-msgid "strip all lilypond blocks from output"
-msgstr ""
-
-#: lilypond-book.py:138 lilypond-book.py:139 lilypond.py:135 lilypond.py:136
-#: midi2ly.py:102 main.cc:114 main.cc:117
-msgid "FILE"
-msgstr ""
-
-#: lilypond-book.py:138
-#, fuzzy
-msgid "filename main output file"
-msgstr "  -D, --debug            abilita l'output di debugging\n"
-
-#: lilypond-book.py:139
-msgid "where to place generated files"
-msgstr ""
-
-#: lilypond-book.py:140 lilypond.py:137
-msgid "RES"
-msgstr ""
-
-#: lilypond-book.py:141 lilypond.py:138
-msgid "set the resolution of the preview to RES"
-msgstr ""
-
-#: lilypond-book.py:142 lilypond.py:148 midi2ly.py:105 mup2ly.py:78 main.cc:126
-msgid "be verbose"
-msgstr ""
-
-#: lilypond-book.py:143
-msgid "print version information"
-msgstr ""
-
-#: lilypond-book.py:144 lilypond.py:150 midi2ly.py:107 mup2ly.py:80 main.cc:127
-#, fuzzy
-msgid "show warranty and copyright"
-msgstr "  -w, --warranty         mostra la garanzia e il copyright\n"
-
-#. format specific strings, ie. regex-es for input, and % strings for output
-#. global variables
-#. lilypond_binary = 'valgrind --suppressions=/home/hanwen/usr/src/guile-1.6.supp  --num-callers=10 /home/hanwen/usr/src/lilypond/lily/out/lilypond'
-#. only use installed binary  when we're installed too.
-#. only use installed binary  when we're installed too.
-#. ###############################################################
-#. Dimension handling for LaTeX.
-#.
-#. Ugh.  (La)TeX writes progress and error messages on stdout
-#. Redirect to stderr
-#: lilypond-book.py:230
-msgid "LaTeX failed."
-msgstr ""
-
-#. URG see lilypond
-#. Convert numeric values, with or without specific dimension, to floats.
-#. Keep other strings
-#. ###############################################################
-#. How to output various structures.
-#. # maybe <hr> ?
-#. Verbatim text is always finished with \n.  FIXME: For HTML,
-#. this newline should be removed.
-#. Verbatim text is always finished with \n.  FIXME: For HTML,
-#. this newline should be removed.
-#. # Ugh we need to differentiate on origin:
-#. # lilypond-block origin wants an extra <p>, but
-#. # inline music doesn't.
-#. # possibly other center options?
-#. verbatim text is always finished with \n
-#. verbatim text is always finished with \n
-#. verbatim text is always finished with \n
-#. verbatim text is always finished with \n
-#. do some tweaking: @ is needed in some ps stuff.
-#.
-#. ugh, the <p> below breaks inline images...
-#. clumsy workaround for python 2.2 pre bug.
-#. ###############################################################
-#. Recognize special sequences in the input
-#. Warning: This uses extended regular expressions.  Tread with care.
-#.
-#. legenda
-#.
-#. (?P<name>regex) -- assign result of REGEX to NAME
-#. *? -- match non-greedily.
-#. (?m) -- multiline regex: make ^ and $ match at each line
-#. (?s) -- make the dot match all characters including newline
-#. why do we have distinction between @mbinclude and @include?
-#. # we'd like to catch and reraise a more
-#. # detailed error, but alas, the exceptions
-#. # changed across the 1.5/2.1 boundary.
-#. ughUGH not original options
-#. First we want to scan the \documentclass line
-#. it should be the first non-comment line.
-#. The only thing we really need to know about the \documentclass line
-#. is if there are one or two columns to begin with.
-#. Then we add everything before \begin{document} to
-#. paperguru.m_document_preamble so that we can later write this header
-#. to a temporary file in find_latex_dims() to find textwidth.
-#. this is not bulletproof..., it checks the first 10 chunks
-#. newchunks.extend (func (m))
-#. python 1.5 compatible:
-#. we have to check for verbatim before doing include,
-#. because we don't want to include files that are mentioned
-#. inside a verbatim environment
-#. ugh fix input
-#. # Hmm, we should hash only lilypond source, and skip the
-#. # %options are ...
-#. # comment line
-#. # todo: include path, but strip
-#. # first part of the path.
-#. format == 'html'
-#. ugh rename
-#. Count sections/chapters.
-#. # TODO: do something like
-#. # this for texinfo/latex as well ?
-#. ugh
-#. fixme: be sys-independent.
-#.
-#. Ugh, fixing up dependencies for .tex generation
-#.
-#. Ugh.  (La)TeX writes progress and error messages on stdout
-#. Redirect to stderr
-#. # There used to be code to write .tex dependencies, but
-#. # that is silly: lilypond-book has its own dependency scheme
-#. # to ensure that all lily-XXX.tex files are there
-#. # TODO: put file name in front of texidoc.
-#. #
-#. # what's this? Docme --hwn
-#. #
-#. #docme: why global?
-#. Do It.
-#. should chmod -w
-#: lilypond-book.py:1557 lilypond.py:673 midi2ly.py:1018
-#, python-format
-msgid "getopt says: `%s'"
-msgstr ""
-
-#. HACK
-#. status = os.system ('lilypond -w')
-#: lilypond-book.py:1630 lilypond.py:777
-msgid "no files specified on command line"
-msgstr ""
-
-#.
-#. Petr, ik zou willen dat ik iets zinvoller deed,
-#. maar wat ik kan ik doen, het verandert toch niets?
-#. --hwn 20/aug/99
-#. !@PYTHON@
-#.
-#. lilypond.py -- Run LilyPond, add titles to bare score, generate printable
-#. document
-#. Invokes: lilypond, latex (or pdflatex), dvips, ps2pdf, gs
-#.
-#. source file of the GNU LilyPond music typesetter
-#.
-#. (c)  1998--2003  Han-Wen Nienhuys <hanwen@cs.uu.nl>
-#. Jan Nieuwenhuizen <janneke@gnu.org>
-#. This is the third incarnation of lilypond.
-#.
-#. Earlier incarnations of lilypond were written by
-#. Jeffrey B. Reed<daboys@austin.rr.com> (Python version)
-#. Jan Arne Fagertun <Jan.A.Fagertun@@energy.sintef.no> (Bourne shell script)
-#.
-#. Note: gettext work best if we use ' for docstrings and "
-#. for gettextable strings.
-#. --> DO NOT USE ''' for docstrings.
-#. ###############################################################
-#. Users of python modules should include this snippet
-#. and customize variables below.
-#. We'll suffer this path init stuff as long as we don't install our
-#. python packages in <prefix>/lib/pythonx.y (and don't kludge around
-#. it as we do with teTeX on Red Hat Linux: set some environment var
-#. (PYTHONPATH) in profile)
-#. If set, LILYPONDPREFIX must take prevalence
-#. if datadir is not set, we're doing a build and LILYPONDPREFIX
-#. Customize these
-#. if __name__ == '__main__':
-#. lilylib globals
-#. # FIXME
-#. # do -P or -p by default?
-#. #help_summary = _ ("Run LilyPond using LaTeX for titling")
-#: lilypond.py:121
-msgid "Run LilyPond, add titles, generate printable document."
-msgstr ""
-
-#: lilypond.py:127 main.cc:115
-#, fuzzy
-msgid "write Makefile dependencies for every input file"
-msgstr ""
-"  -d, --dependencies     scrive le dependenze del Makefile per ogni file di "
-"input\n"
-
-#: lilypond.py:129
-msgid "print even more output"
-msgstr ""
-
-#: lilypond.py:130
-#, fuzzy
-msgid "add DIR to LilyPond's search path"
-msgstr "  -I, --include=DIR      aggiunge DIR ai path di ricerca\n"
-
-#: lilypond.py:132
-#, python-format
-msgid "keep all output, output to directory %s.dir"
-msgstr ""
-
-#: lilypond.py:133
-msgid "don't run LilyPond"
-msgstr ""
-
-#: lilypond.py:134 main.cc:116
-#, fuzzy
-msgid "produce MIDI output only"
-msgstr "  -M, --no-paper         produce solo output midi\n"
-
-#: lilypond.py:135 midi2ly.py:102
-msgid "write output to FILE"
-msgstr ""
-
-#: lilypond.py:136
-msgid "find pfa fonts used in FILE"
-msgstr ""
-
-#: lilypond.py:139
-#, fuzzy
-msgid "generate PostScript output"
-msgstr "vincoli degenerati"
-
-#: lilypond.py:140
-msgid "generate PNG page images"
-msgstr ""
-
-#: lilypond.py:141
-#, fuzzy
-msgid "generate PS.GZ"
-msgstr "vincoli degenerati"
-
-#: lilypond.py:142
-#, fuzzy
-msgid "generate PDF output"
-msgstr "vincoli degenerati"
-
-#: lilypond.py:143
-msgid "use pdflatex to generate a PDF output"
-msgstr ""
-
-#. FIXME: preview, picture; to indicate creation of a PNG?
-#: lilypond.py:145
-msgid "make a picture of the first system"
-msgstr ""
-
-#: lilypond.py:146
-msgid "make HTML file with links to all output"
-msgstr ""
-
-#: lilypond.py:147
-msgid "KEY=VAL"
-msgstr ""
-
-#: lilypond.py:147
-msgid "change global setting KEY to VAL"
-msgstr ""
-
-#: lilypond.py:149 midi2ly.py:106 mup2ly.py:79 main.cc:125
-msgid "print version number"
-msgstr ""
-
-#. other globals
-#. Pdftex support
-#. # yuk.
-#. lilypond_binary = 'valgrind --suppressions=%(home)s/usr/src/guile-1.6.supp --num-callers=10 %(home)s/usr/src/lilypond/lily/out/lilypond '% { 'home' : '/home/hanwen' }
-#. only use installed binary  when we're installed too.
-#. init to empty; values here take precedence over values in the file
-#. # TODO: change name.
-#. for geometry v3
-#. Output formats that lilypond should create
-#. what a name.
-#. ly.warning (_ ("invalid value: %s") % `val`)
-#. ly.warning (_ ("invalid value: %s") % `val`)
-#: lilypond.py:232
-#, fuzzy, python-format
-msgid "no such setting: `%s'"
-msgstr "% strumento:"
-
-#. 2 == user interrupt.
-#: lilypond.py:274
-#, python-format
-msgid "LilyPond crashed (signal %d)."
-msgstr ""
-
-#: lilypond.py:275
-msgid "Please submit a bug report to bug-lilypond@gnu.org"
-msgstr ""
-
-#: lilypond.py:281
-#, python-format
-msgid "LilyPond failed on input file %s (exit status %d)"
-msgstr ""
-
-#: lilypond.py:284
-#, python-format
-msgid "LilyPond failed on an input file (exit status %d)"
-msgstr ""
-
-#: lilypond.py:285
-#, fuzzy
-msgid "Continuing..."
-msgstr "Genero le voci..."
-
-#. urg
-#: lilypond.py:296
-#, fuzzy, python-format
-msgid "Analyzing %s..."
-msgstr "Genero le voci..."
-
-#. search only the first 10k
-#: lilypond.py:354
-#, fuzzy, python-format
-msgid "no LilyPond output found for `%s'"
-msgstr "Output di Lily in %s..."
-
-#. The final \n seems important here. It ensures that the footers and taglines end up on the right page.
-#. TODO: should set textheight (enlarge) depending on papersize.
-#: lilypond.py:397
-#, fuzzy, python-format
-msgid "invalid value: `%s'"
-msgstr "carattere illegale: `%c'"
-
-#. set sane geometry width (a4-width) for linewidth = -1.
-#. who the hell is 597 ?
-#. Ugh.  (La)TeX writes progress and error messages on stdout
-#. Redirect to stderr
-#: lilypond.py:511
-msgid "LaTeX failed on the output file."
-msgstr ""
-
-#. make a preview by rendering only the 1st line
-#. of each score
-#: lilypond.py:568
-msgid ""
-"Trying create PDF, but no PFA fonts found.\n"
-"Using bitmap fonts instead. This will look bad."
-msgstr ""
-
-#. ugh. Different targets?
-#. Added as functionality to lilypond, because lilypond may well need to do this
-#. in future too.
-#. no ps header?
-#: lilypond.py:615
-#, fuzzy, python-format
-msgid "not a PostScript file: `%s'"
-msgstr "non posso aprire il file: `%s'"
-
-#. todo
-#: lilypond.py:660
-#, fuzzy, python-format
-msgid "Writing HTML menu `%s'"
-msgstr "Genero le voci..."
-
-#. signal programming error
-#. Don't convert input files to abspath, rather prepend '.' to include
-#. path.
-#. As a neat trick, add directory part of first input file
-#. to include path.  That way you can do without the clumsy -I in:
-#. lilypond -I foe/bar/baz foo/bar/baz/baz.ly
-#: lilypond.py:769
-msgid "pseudo filter"
-msgstr ""
-
-#: lilypond.py:772
-msgid "pseudo filter only for single input file"
-msgstr ""
-
-#. Ugh, maybe make a setup () function
-#. hmmm. Wish I'd 've written comments when I wrote this.
-#. now it looks complicated.
-#: lilypond.py:806
-#, python-format
-msgid "filename should not contain spaces: `%s'"
-msgstr ""
-
-#. to be sure, add tmpdir *in front* of inclusion path.
-#. os.environ['TEXINPUTS'] =  tmpdir + ':' + os.environ['TEXINPUTS']
-#. We catch all exceptions, because we need to do stuff at exit:
-#. * copy any successfully generated stuff from tempdir and
-#. notify user of that
-#. * cleanout tempdir
-#. ## ARGH. This also catches python programming errors.
-#. ## this should only catch lilypond nonzero exit  status
-#. ## --hwn
-#. TODO: friendly message about LilyPond setup/failing?
-#.
-#: lilypond.py:845
-msgid "Running LilyPond failed. Rerun with --verbose for a trace."
-msgstr ""
-
-#. Our LilyPond pseudo filter always outputs to 'lelie'
-#. have subsequent stages and use 'lelie' output.
-#. unless: add --tex, or --latex?
-#. TODO: friendly message about TeX/LaTeX setup,
-#. trying to run tex/latex by hand
-#: lilypond.py:886
-msgid "Failed to make PS file. Rerun with --verbose for a trace."
-msgstr ""
-
-#. unless: add --tex, or --latex?
-#. TODO: friendly message about TeX/LaTeX setup,
-#. trying to run tex/latex by hand
-#: lilypond.py:916
-msgid "Running LaTeX falied. Rerun with --verbose for a trace."
-msgstr ""
-
-#. add DEP to targets?
-#: lilypond.py:926 input-file-results.cc:68
-#, fuzzy, c-format, python-format
-msgid "dependencies output to `%s'..."
-msgstr "L'output stampato è inviato a %s..."
-
-#: lilypond.py:937
-#, fuzzy, python-format
-msgid "%s output to <stdout>..."
-msgstr "L'output MIDI è inviato a %s..."
-
-#: lilypond.py:942 lilypond.py:968 includable-lexer.cc:57
-#: input-file-results.cc:191 input-file-results.cc:197 lily-guile.cc:86
-#, c-format, python-format
-msgid "can't find file: `%s'"
-msgstr "non trovo il file: `%s'"
-
-#. Hmm, if this were a function, we could call it the except: clauses
-#: lilypond.py:965
-#, fuzzy, python-format
-msgid "%s output to %s..."
-msgstr "L'output MIDI è inviato a %s..."
-
-#. !@PYTHON@
-#.
-#. midi2ly.py -- LilyPond midi import script
-#.
-#. source file of the GNU LilyPond music typesetter
-#.
-#. (c)  1998--2003  Han-Wen Nienhuys <hanwen@cs.uu.nl>
-#. Jan Nieuwenhuizen <janneke@gnu.org>
-#. ###############################################################
-#. Users of python modules should include this snippet.
-#.
-#. This soon to be removed for: import lilypond.lilylib as ly
-#. ###############################################################
-#. ###############################################################
-#. ############### CONSTANTS
-#. ###############################################################
-#. temp_dir = os.path.join (original_dir,  '%s.dir' % program_name)
-#. original_dir = os.getcwd ()
-#. keep_temp_dir_p = 0
-#: midi2ly.py:94
-msgid "Convert MIDI to LilyPond source."
-msgstr ""
-
-#: midi2ly.py:97
-msgid "print absolute pitches"
-msgstr ""
-
-#: midi2ly.py:98 midi2ly.py:103
-msgid "DUR"
-msgstr ""
-
-#: midi2ly.py:98
-msgid "quantise note durations on DUR"
-msgstr ""
-
-#: midi2ly.py:99
-msgid "print explicit durations"
-msgstr ""
-
-#: midi2ly.py:101
-msgid "ALT[:MINOR]"
-msgstr ""
-
-#: midi2ly.py:101
-#, fuzzy
-msgid "set key: ALT=+sharps|-flats; MINOR=1"
-msgstr ""
-" -k, --key=ACC[:MINOR]  imposta l'armatura: ACC +diesis/-bemolli; :1 minore\n"
-
-#: midi2ly.py:103
-msgid "quantise note starts on DUR"
-msgstr ""
-
-#: midi2ly.py:104
-msgid "DUR*NUM/DEN"
-msgstr ""
-
-#: midi2ly.py:104
-msgid "allow tuplet durations DUR*NUM/DEN"
-msgstr ""
-
-#: midi2ly.py:108
-msgid "treat every text as a lyric"
-msgstr ""
-
-#: midi2ly.py:136 mup2ly.py:130
-msgid " 2001--2003"
-msgstr ""
-
-#: midi2ly.py:141 mup2ly.py:135
-msgid ""
-"\n"
-"Distributed under terms of the GNU General Public License. It comes with\n"
-"NO WARRANTY."
-msgstr ""
-
-#: midi2ly.py:166 mup2ly.py:162
-msgid "Exiting ... "
-msgstr ""
-
-#: midi2ly.py:264 mup2ly.py:261
-#, python-format
-msgid "command exited with value %d"
-msgstr ""
-
-#. ###############################################################
-#. END Library
-#. ###############################################################
-#. hmm
-#. major scale: do-do
-#. minor scale: la-la  (= + 5) '''
-#. By tradition, all scales now consist of a sequence
-#. of 7 notes each with a distinct name, from amongst
-#. a b c d e f g.  But, minor scales have a wide
-#. second interval at the top - the 'leading note' is
-#. sharped. (Why? it just works that way! Anything
-#. else doesn't sound as good and isn't as flexible at
-#. saying things. In medieval times, scales only had 6
-#. notes to avoid this problem - the hexachords.)
-#. So, the d minor scale is d e f g a b-flat c-sharp d
-#. - using d-flat for the leading note would skip the
-#. name c and duplicate the name d.  Why isn't c-sharp
-#. put in the key signature? Tradition. (It's also
-#. supposedly based on the Pythagorean theory of the
-#. cycle of fifths, but that really only applies to
-#. major scales...)  Anyway, g minor is g a b-flat c d
-#. e-flat f-sharp g, and all the other flat minor keys
-#. end up with a natural leading note. And there you
-#. have it.
-#. John Sankey <bf250@freenet.carleton.ca>
-#.
-#. Let's also do a-minor: a b c d e f gis a
-#.
-#. --jcn
-#. as -> gis
-#. des -> cis
-#. ges -> fis
-#. g -> fisis
-#. d -> cisis
-#. a -> gisis
-#. b -> ces
-#. e -> fes
-#. f -> eis
-#. c -> bis
-#. # FIXME: compile fix --jcn
-#. TODO: move space
-#. fis cis gis dis ais eis bis
-#. bes es as des ges ces fes
-#. urg, we should be sure that we're in a lyrics staff
-#. all include ALL_NOTES_OFF
-#. ugh, must set key while parsing
-#. because Note init uses key
-#. Better do Note.calc () at dump time?
-#. last_lyric.clocks = t - last_time
-#. hmm
-#. urg, this will barf at meter changes
-#. urg LilyPond doesn't start at c4, but
-#. remembers from previous tracks!
-#. reference_note = Note (clocks_per_4, 4*12, 0)
-#. must be in \notes mode for parsing \skip
-#: midi2ly.py:1002
-#, fuzzy, python-format
-msgid "%s output to `%s'..."
-msgstr "L'output MIDI è inviato a %s..."
-
-#: midi2ly.py:1033
-msgid "Example:"
-msgstr ""
-
-#: midi2ly.py:1083
-msgid "no files specified on command line."
-msgstr ""
-
-#. !@PYTHON@
-#. mup2ly.py -- mup input converter
-#.
-#. source file of the GNU LilyPond music typesetter
-#.
-#. (c) 2001
-#. if set, LILYPONDPREFIX must take prevalence
-#. if datadir is not set, we're doing a build and LILYPONDPREFIX
-#: mup2ly.py:70
-msgid "Convert mup to LilyPond source."
-msgstr ""
-
-#: mup2ly.py:73
-msgid "debug"
-msgstr ""
-
-#: mup2ly.py:74
-msgid "define macro NAME [optional expansion EXP]"
-msgstr ""
-
-#: mup2ly.py:77
-msgid "only pre-process"
-msgstr ""
-
-#. Duh.  Python style portable: cp *.EXT OUTDIR
-#. system ('cp *.%s %s' % (ext, outdir), 1)
-#. Python < 1.5.2 compatibility
-#.
-#. On most platforms, this is equivalent to
-#. `normpath(join(os.getcwd()), PATH)'.  *Added in Python version 1.5.2*
-#. if set, LILYPONDPREFIX must take prevalence
-#. if datadir is not set, we're doing a build and LILYPONDPREFIX
-#. ###############################################################
-#. END Library
-#.
-#. PMX cut and paste
-#.
-#. if not self.entries:
-#. #return '\n'
-#. #ugh ugh
-#. return '\n%s = {}\n\n' % self.idstring ()
-#. ugh
-#. def set_clef (self, letter):
-#. clstr = clef_table[letter]
-#. self.voices[0].add_nonchord (Clef (clstr))
-#. urg
-#. maybe use import copy?
-#. for i in self.pitches:
-#. ch.pitches.append (i)
-#. for i in self.scripts:
-#. ch.scripts.append (i)
-#. http://www.arkkra.com/doc/uguide/contexts.html
-#. #self.current_staffs = []
-#. duh
-#. FIXME: 1?
-#. FIXME: does key play any role in this?
-#. ch = self.current_voices[0].last_chord ()
-#. ch.basic_duration = self.current_voices[0].last_chord ().basic_duration
-#. ugh
-#. ch = self.current_voices[0].last_chord ()
-#. `;' is not a separator, chords end with ';'
-#. mup resets default duration and pitch each bar
-#. ugh: these (and lots more) should also be parsed in
-#. context staff.  we should have a class Staff_properties
-#. and parse/set all those.
-#. shortcut: set to official mup maximum (duh)
-#. self.set_staffs (40)
-#: mup2ly.py:1076
-#, fuzzy, python-format
-msgid "no such context: %s"
-msgstr "% strumento:"
-
-#. hmm
-#. dig this: mup allows ifdefs inside macro bodies
-#. don't do nested multi-line defines
-#. duh: mup is strictly line-based, except for `define',
-#. which is `@' terminated and may span several lines
-#. don't define new macros in unactive areas
-#. To support nested multi-line define's
-#. process_function and macro_name, macro_body
-#. should become lists (stacks)
-#. The mup manual is undetermined on this
-#. and I haven't seen examples doing it.
-#.
-#. don't do nested multi-line define's
-#. writes to stdout for help2man
-#. don't call
-#. identify ()
-#. sys.stdout.flush ()
-#. handy emacs testing
-#. if not files:
-#. files = ['template.mup']
-#: mup2ly.py:1300
-#, fuzzy, python-format
-msgid "Processing `%s'..."
-msgstr "Elaboro..."
-
-#: mup2ly.py:1319
-#, fuzzy, python-format
-msgid "Writing `%s'..."
-msgstr "Genero le voci..."
-
-#: getopt-long.cc:146
-#, c-format
-msgid "option `%s' requires an argument"
-msgstr "l'opzione `%s' richiede un argomento"
-
-#: getopt-long.cc:150
-#, c-format
-msgid "option `%s' doesn't allow an argument"
-msgstr "opzione `%s' non accetta argomenti"
-
-#: getopt-long.cc:154
-#, c-format
-msgid "unrecognized option: `%s'"
-msgstr "opzione non riconosciuta: `%s'"
-
-#: getopt-long.cc:161
-#, c-format
-msgid "invalid argument `%s' to option `%s'"
-msgstr "argomento `%s' non valido per l'opzione `%s'"
-
-#: warn.cc:25
-#, fuzzy, c-format
-msgid "warning: %s\n"
-msgstr "attenzione: "
-
-#: warn.cc:31
-#, fuzzy, c-format
-msgid "error: %s\n"
-msgstr "errore: "
-
-#: warn.cc:44
-#, c-format
-msgid "programming error: %s (Continuing; cross thumbs)\n"
-msgstr ""
-
-#: accidental.cc:202 key-signature-interface.cc:137
-#, c-format
-msgid "accidental `%s' not found"
-msgstr ""
-
-#: accidental-engraver.cc:171 new-accidental-engraver.cc:238
-#, c-format
-msgid "Accidental typesetting list must begin with context-name: %s"
-msgstr ""
-
-#: accidental-engraver.cc:196 new-accidental-engraver.cc:263
-#, fuzzy, c-format
-msgid "unknown accidental typesetting: %s. Ignored"
-msgstr "stringa di escape sconosciuta: `\\%s'"
-
-#: accidental-engraver.cc:212 new-accidental-engraver.cc:279
-#, c-format
-msgid "Symbol is not a parent context: %s. Ignored"
-msgstr ""
-
-#: accidental-engraver.cc:215 new-accidental-engraver.cc:282
-#, c-format
-msgid "Accidental typesetting must be pair or context-name: %s"
-msgstr ""
-
-#: afm.cc:66
-#, fuzzy, c-format
-msgid "can't find character number: %d"
-msgstr "non riesco a trovare il carattere `%s'"
-
-#: afm.cc:81
-#, fuzzy, c-format
-msgid "can't find character called: `%s'"
-msgstr "non riesco a trovare il carattere `%s'"
-
-#: afm.cc:142
-#, c-format
-msgid "Error parsing AFM file: `%s'"
-msgstr ""
-
-#: all-font-metrics.cc:95
-#, c-format
-msgid "checksum mismatch for font file: `%s'"
-msgstr ""
-
-#: all-font-metrics.cc:97
-#, c-format
-msgid "does not match: `%s'"
-msgstr ""
-
-#: all-font-metrics.cc:102
-msgid ""
-" Rebuild all .afm files, and remove all .pk and .tfm files.  Rerun with -V "
-"to show font paths."
-msgstr ""
-
-#: all-font-metrics.cc:103
-msgid ""
-"A script for removing font-files is delivered with the source-code,\n"
-"in buildscripts/clean-fonts.sh"
-msgstr ""
-
-#: all-font-metrics.cc:169
-#, fuzzy, c-format
-msgid "can't find font: `%s'"
-msgstr "non trovo il file: `%s'"
-
-#: all-font-metrics.cc:170
-msgid "Loading default font"
-msgstr ""
-
-#: all-font-metrics.cc:185
-#, fuzzy, c-format
-msgid "can't find default font: `%s'"
-msgstr "non trovo il file: `%s'"
-
-#: all-font-metrics.cc:186 includable-lexer.cc:59 input-file-results.cc:192
-#, fuzzy, c-format
-msgid "(search path: `%s')"
-msgstr "(Il path di caricamento è `%s'"
-
-#: all-font-metrics.cc:187
-msgid "Giving up"
-msgstr ""
-
-#: auto-change-iterator.cc:43 change-iterator.cc:60
-#: part-combine-music-iterator.cc:120
-msgid "Can't switch translators, I'm there already"
-msgstr ""
-
-#: bar-check-iterator.cc:51
-#, fuzzy, c-format
-msgid "barcheck failed at: %s"
-msgstr "controllo del battute fallito: %s"
-
-#: beam.cc:146
-#, fuzzy
-msgid "beam has less than two visible stems"
-msgstr "beam con meno di due gambi"
-
-#: beam.cc:151
-#, fuzzy
-msgid "Beam has less than two stems. Removing beam."
-msgstr "beam con meno di due gambi"
-
-#: beam.cc:976
-msgid ""
-"Not sure that we can find a nice beam slope (no viable initial configuration "
-"found)."
-msgstr ""
-
-#: beam-engraver.cc:176
-msgid "already have a beam"
-msgstr ""
-
-#: beam-engraver.cc:259
-#, fuzzy
-msgid "unterminated beam"
-msgstr "beam non terminato"
-
-#: beam-engraver.cc:292 chord-tremolo-engraver.cc:197
-#, fuzzy
-msgid "stem must have Rhythmic structure"
-msgstr "I gambi devono avere una struttura ritmica."
-
-#: beam-engraver.cc:306
-msgid "stem doesn't fit in beam"
-msgstr "il gambo non rientra nel beam"
-
-#: beam-engraver.cc:307
-msgid "beam was started here"
-msgstr ""
-
-#: break-align-interface.cc:173
-#, fuzzy, c-format
-msgid "No spacing entry from %s to `%s'"
-msgstr "traduttore sconosciuto `%s'"
-
-#: change-iterator.cc:22
-#, c-format
-msgid "can't change `%s' to `%s'"
-msgstr "non posso cambiare `%s' in `%s'"
-
-#.
-#. We could change the current translator's id, but that would make
-#. errors hard to catch
-#.
-#. last->translator_id_string_  = get_change ()->change_to_id_string_;
-#.
-#: change-iterator.cc:79
-msgid "I'm one myself"
-msgstr ""
-
-#: change-iterator.cc:82
-msgid "none of these in my family"
-msgstr ""
-
-#: chord-tremolo-engraver.cc:98
-#, c-format
-msgid "Chord tremolo with %d elements. Must have two elements."
-msgstr ""
-
-#: chord-tremolo-engraver.cc:157
-#, fuzzy
-msgid "unterminated chord tremolo"
-msgstr "beam non terminato"
-
-#: chord-tremolo-iterator.cc:69
-msgid "no one to print a tremolos"
-msgstr ""
-
-#: clef.cc:64
-#, c-format
-msgid "clef `%s' not found"
-msgstr ""
-
-#: cluster.cc:131
-#, fuzzy, c-format
-msgid "unknown cluster style `%s'"
-msgstr "tipo di chiave sconosciuto"
-
-#: coherent-ligature-engraver.cc:84
-#, c-format
-msgid "gotcha: ptr=%ul"
-msgstr ""
-
-#: coherent-ligature-engraver.cc:96
-#, c-format
-msgid "distance=%f"
-msgstr ""
-
-#: coherent-ligature-engraver.cc:139
-#, c-format
-msgid "Coherent_ligature_engraver: setting `spacing-increment = 0.01': ptr=%ul"
-msgstr ""
-
-#: custos.cc:92
-#, c-format
-msgid "custos `%s' not found"
-msgstr ""
-
-#: dimensions.cc:13
-msgid "NaN"
-msgstr ""
-
-#: dynamic-engraver.cc:204 span-dynamic-performer.cc:82
-#, fuzzy
-msgid "can't find start of (de)crescendo"
-msgstr "non trovo un (de)crescendo fino alla fine"
-
-#: dynamic-engraver.cc:216
-#, fuzzy
-msgid "already have a crescendo"
-msgstr "crescendo non terminato"
-
-#: dynamic-engraver.cc:217
-#, fuzzy
-msgid "already have a decrescendo"
-msgstr "crescendo non terminato"
-
-#: dynamic-engraver.cc:220
-msgid "Cresc started here"
-msgstr ""
-
-#: dynamic-engraver.cc:323
-#, fuzzy
-msgid "unterminated (de)crescendo"
-msgstr "crescendo non terminato"
-
-#: event.cc:49
-#, fuzzy, c-format
-msgid "Transposition by %s makes alteration larger than two"
-msgstr "la trasposizine di %s rende le alterazioni più che doppie"
-
-#: event-chord-iterator.cc:76 output-property-music-iterator.cc:27
-#, fuzzy, c-format
-msgid "Junking event: `%s'"
-msgstr "Cosa? Non è una richiesta: `%s'"
-
-#: extender-engraver.cc:94
-msgid "unterminated extender"
-msgstr "extender non terminato"
-
-#: extender-engraver.cc:106
-msgid "Nothing to connect extender to on the left.  Ignoring extender event."
-msgstr ""
-
-#: folded-repeat-iterator.cc:88
-msgid "no one to print a repeat brace"
-msgstr ""
-
-#: font-interface.cc:239
-msgid "couldn't find any font satisfying "
-msgstr ""
-
-#: glissando-engraver.cc:100
-#, fuzzy
-msgid "Unterminated glissando."
-msgstr "slur non terminato"
-
-#: gourlay-breaking.cc:188
-#, c-format
-msgid "Optimal demerits: %f"
-msgstr ""
-
-#: gourlay-breaking.cc:193
-msgid "No feasible line breaking found"
-msgstr ""
-
-#: gregorian-ligature-engraver.cc:59
-#, c-format
-msgid "\\%s ignored"
-msgstr ""
-
-#: gregorian-ligature-engraver.cc:64
-#, c-format
-msgid "implied \\%s added"
-msgstr ""
-
-#.
-#. Todo: do something sensible. The grob-pq-engraver is not water
-#. tight, and stuff like tupletSpannerDuration confuses it.
-#.
-#: grob-pq-engraver.cc:130
-#, c-format
-msgid ""
-"Skipped something?\n"
-"Grob %s ended before I expected it to end."
-msgstr ""
-
-#: hairpin.cc:98
-msgid "decrescendo too small"
-msgstr ""
-
-#: hairpin.cc:99
-#, fuzzy
-msgid "crescendo too small"
-msgstr "troppo piccolo"
-
-#: horizontal-bracket-engraver.cc:64
-msgid "Don't have that many brackets."
-msgstr ""
-
-#: horizontal-bracket-engraver.cc:73
-#, fuzzy
-msgid "Conflicting note group events."
-msgstr "richieste di timing in conflitto"
-
-#: hyphen-engraver.cc:87
-#, fuzzy
-msgid "unterminated hyphen"
-msgstr "beam non terminato"
-
-#: hyphen-engraver.cc:99
-msgid "Nothing to connect hyphen to on the left.  Ignoring hyphen event."
-msgstr ""
-
-#: input.cc:99
-#, fuzzy
-msgid "non fatal error: "
-msgstr "Errore non fatale: "
-
-#: input.cc:107 source-file.cc:146 source-file.cc:239
-msgid "position unknown"
-msgstr "posizione sconosciuta"
-
-#: input-file-results.cc:72 source-file.cc:54 streams.cc:38
-#, c-format
-msgid "can't open file: `%s'"
-msgstr "non posso aprire il file: `%s'"
-
-#: input-file-results.cc:132
-#, fuzzy
-msgid "Score contains errors; will not process it"
-msgstr "lo spartito contiene errori; non lo elaborerò"
-
-#: input-file-results.cc:172
-#, fuzzy, c-format
-msgid "Now processing: `%s'"
-msgstr "stringa di escape sconosciuta: `\\%s'"
-
-#: key-performer.cc:96
-msgid "FIXME: key change merge"
-msgstr ""
-
-#: kpath.cc:76
-#, fuzzy, c-format
-msgid "Kpathsea couldn't find TFM file `%s'"
-msgstr "non trovo il file: `%s'"
-
-#: ligature-engraver.cc:159
-#, fuzzy
-msgid "can't find start of ligature"
-msgstr "non trovo le estremità di %s"
-
-#: ligature-engraver.cc:165
-msgid "no right bound"
-msgstr ""
-
-#: ligature-engraver.cc:191
-#, fuzzy
-msgid "already have a ligature"
-msgstr "crescendo non terminato"
-
-#: ligature-engraver.cc:207
-msgid "no left bound"
-msgstr ""
-
-#: ligature-engraver.cc:258
-#, fuzzy
-msgid "unterminated ligature"
-msgstr "slur non terminato"
-
-#: ligature-engraver.cc:282
-msgid "ligature may not contain rest; ignoring rest"
-msgstr ""
-
-#: ligature-engraver.cc:283
-#, fuzzy
-msgid "ligature was started here"
-msgstr "un cambio di tempo non è ammesso in questo punto"
-
-#: lily-guile.cc:88
-#, fuzzy, c-format
-msgid "(load path: `%s')"
-msgstr "(Il path di caricamento è `%s'"
-
-#: lily-guile.cc:576
-#, c-format
-msgid "Can't find property type-check for `%s' (%s)."
-msgstr ""
-
-#: lily-guile.cc:579
-msgid "Perhaps you made a typing error?"
-msgstr ""
-
-#: lily-guile.cc:585
-msgid "Doing assignment anyway."
-msgstr ""
-
-#: lily-guile.cc:599
-#, c-format
-msgid "Type check for `%s' failed; value `%s' must be of type `%s'"
-msgstr ""
-
-#: lookup.cc:173
-msgid "round filled box horizontal extent smaller than blot; decreasing blot"
-msgstr ""
-
-#: lookup.cc:178
-msgid "round filled box vertical extent smaller than blot; decreasing blot"
-msgstr ""
-
-#: lyric-phrasing-engraver.cc:311
-msgid "lyrics found without any matching notehead"
-msgstr ""
-
-#: lyric-phrasing-engraver.cc:317
-msgid "Huh? Melismatic note found to have associated lyrics."
-msgstr ""
-
-#: main.cc:106
-msgid "EXPR"
-msgstr ""
-
-#: main.cc:107
-msgid "set options, use -e '(ly-option-usage)' for help"
-msgstr ""
-
-#: main.cc:110
-msgid "use output format EXT"
-msgstr ""
-
-#: main.cc:112
-msgid "FIELD"
-msgstr ""
-
-#: main.cc:112
-msgid "write header field to BASENAME.FIELD"
-msgstr ""
-
-#: main.cc:113
-#, fuzzy
-msgid "add DIR to search path"
-msgstr "  -I, --include=DIR      aggiunge DIR ai path di ricerca\n"
-
-#: main.cc:114
-#, fuzzy
-msgid "use FILE as init file"
-msgstr "  -i, --init=NOMEFILE    usa NOMEFILE come file iniziale\n"
-
-#: main.cc:118
-msgid "prepend DIR to dependencies"
-msgstr ""
-
-#.
-#. should audit again.
-#.
-#: main.cc:123
-#, 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"
-
-#. No version number or newline here. It confuses help2man.
-#: main.cc:155
-#, fuzzy, c-format
-msgid "Usage: %s [OPTIONS]... FILE..."
-msgstr "Uso: %s [OPZIONE]... [FILE]..."
-
-#: main.cc:157
-#, fuzzy
-msgid "Typeset music and or play MIDI from FILE."
-msgstr "Stampa partitura oppure suona una song MIDI da FILE o <stdin>."
-
-#: main.cc:160
-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 ""
-
-#: main.cc:182
-#, c-format
-msgid ""
-"This is free software.  It is covered by the GNU General Public License,\n"
-"and you are welcome to change it and/or distribute copies of it under\n"
-"certain conditions.  Invoke as `%s --warranty' for more information.\n"
-msgstr ""
-
-#: main.cc:198
-#, fuzzy
-msgid "GNU LilyPond -- The music typesetter"
-msgstr "GNU LilyPond -- Il tipografo musicale del progetto GNU"
-
-#: main.cc:206
-#, fuzzy
-msgid ""
-"    This program is free software; you can redistribute it and/or\n"
-"modify it under the terms of the GNU General Public License version 2\n"
-"as published by the Free Software Foundation.\n"
-"\n"
-"    This program is distributed in the hope that it will be useful,\n"
-"but WITHOUT ANY WARRANTY; without even the implied warranty of\n"
-"MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU\n"
-"General Public License for more details.\n"
-"\n"
-"    You should have received a copy (refer to the file COPYING) of the\n"
-"GNU General Public License along with this program; if not, write to\n"
-"the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA "
-"02111-1307,\n"
-"USA.\n"
-msgstr ""
-"    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"
-"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"
-"USA.\n"
-
-#: mensural-ligature.cc:153
-#, c-format
-msgid "Mensural_ligature:thickness undefined on flexa %d; assuming 1.4"
-msgstr ""
-
-#: mensural-ligature.cc:169
-#, c-format
-msgid "Mensural_ligature:delta-pitch undefined on flexa %d; assuming 0"
-msgstr ""
-
-#: mensural-ligature.cc:182
-#, c-format
-msgid "Mensural_ligature:flexa-width undefined on flexa %d; assuming 2.0"
-msgstr ""
-
-#: mensural-ligature.cc:215
-msgid "Mensural_ligature:unexpected case fall-through"
-msgstr ""
-
-#: mensural-ligature.cc:225
-msgid "Mensural_ligature: (join_left == 0)"
-msgstr ""
-
-#: mensural-ligature-engraver.cc:248 mensural-ligature-engraver.cc:397
-msgid "unexpected case fall-through"
-msgstr ""
-
-#: mensural-ligature-engraver.cc:259
-msgid "ligature with less than 2 heads -> skipping"
-msgstr ""
-
-#: mensural-ligature-engraver.cc:279
-msgid "can not determine pitch of ligature primitive -> skipping"
-msgstr ""
-
-#: mensural-ligature-engraver.cc:302
-msgid "prime interval within ligature -> skipping"
-msgstr ""
-
-#: mensural-ligature-engraver.cc:312
-msgid "mensural ligature: duration none of L, B, S -> skipping"
-msgstr ""
-
-#: midi-item.cc:148
-#, fuzzy, c-format
-msgid "no such instrument: `%s'"
-msgstr "% strumento:"
-
-#: midi-item.cc:238
-msgid "silly duration"
-msgstr "indicazione durata priva di senso"
-
-#: midi-item.cc:251
-msgid "silly pitch"
-msgstr "indicazione altezza priva di senso"
-
-#: music-output-def.cc:111
-#, fuzzy, c-format
-msgid "can't find `%s' context"
-msgstr "non trovo `%s'"
-
-#: my-lily-lexer.cc:169
-#, fuzzy, c-format
-msgid "Identifier name is a keyword: `%s'"
-msgstr "Il nome dell'identificatore è una parola chiave (`%s')"
-
-#: my-lily-lexer.cc:191
-#, c-format
-msgid "error at EOF: %s"
-msgstr "errore alla fine del file: %s"
-
-#: my-lily-parser.cc:44
-msgid "Parsing..."
-msgstr "Analisi..."
-
-#: my-lily-parser.cc:54
-#, fuzzy
-msgid "Braces don't match"
-msgstr "le bretelle no si accoppiano"
-
-#.
-#. music for the softenon children?
-#.
-#: new-fingering-engraver.cc:143
-msgid "music for the martians."
-msgstr ""
-
-#: new-tie-engraver.cc:166 tie-engraver.cc:217
-msgid "lonely tie"
-msgstr ""
-
-#: note-collision.cc:340
-#, fuzzy
-msgid "Too many clashing notecolumns.  Ignoring them."
-msgstr "Troppe collisioni tra colonne di note. Le ignoro."
-
-#: note-head.cc:127
-#, c-format
-msgid "note head `%s' not found"
-msgstr ""
-
-#: paper-def.cc:96
-#, fuzzy, c-format
-msgid "paper output to `%s'..."
-msgstr "L'output stampato è inviato a %s..."
-
-#: paper-score.cc:78
-#, c-format
-msgid "Element count %d (spanners %d) "
-msgstr ""
-
-#: paper-score.cc:83
-#, fuzzy
-msgid "Preprocessing graphical objects..."
-msgstr "Pre-elaborazione..."
-
-#: paper-score.cc:116
-#, fuzzy
-msgid "Outputting Score, defined at: "
-msgstr "emetto lo Score, definito a: "
-
-#: parse-scm.cc:79
-msgid "GUILE signaled an error for the expression begining here"
-msgstr ""
-
-#.
-#. We could change the current translator's id, but that would make
-#. errors hard to catch
-#.
-#. last->translator_id_string_  = get_change ()->change_to_id_string_;
-#.
-#: part-combine-music-iterator.cc:139
-#, c-format
-msgid "I'm one myself: `%s'"
-msgstr ""
-
-#: part-combine-music-iterator.cc:142
-#, c-format
-msgid "none of these in my family: `%s'"
-msgstr ""
-
-#: percent-repeat-engraver.cc:109
-#, fuzzy
-msgid "Don't know how to handle a percent repeat of this length."
-msgstr "non so manipolare tasti vuoti"
-
-#: percent-repeat-engraver.cc:163
-#, fuzzy
-msgid "unterminated percent repeat"
-msgstr "beam non terminato"
-
-#: percent-repeat-iterator.cc:65
-msgid "no one to print a percent"
-msgstr ""
-
-#: performance.cc:51
-#, fuzzy
-msgid "Track ... "
-msgstr "traccia "
-
-#: performance.cc:83
-msgid "Creator: "
-msgstr "Autore: "
-
-#: performance.cc:103
-#, fuzzy
-msgid "at "
-msgstr ", a "
-
-#: performance.cc:114
-#, c-format
-msgid "from musical definition: %s"
-msgstr "della definizione musicale: %s"
-
-#: performance.cc:169
-#, c-format
-msgid "MIDI output to `%s'..."
-msgstr "L'output MIDI è inviato a %s..."
-
-#: phrasing-slur-engraver.cc:123
-#, fuzzy
-msgid "unterminated phrasing slur"
-msgstr "slur non terminato"
-
-#: phrasing-slur-engraver.cc:141
-#, fuzzy
-msgid "can't find start of phrasing slur"
-msgstr "non trovo le estremità di %s"
-
-#: piano-pedal-engraver.cc:235 piano-pedal-engraver.cc:250
-#: piano-pedal-engraver.cc:305 piano-pedal-performer.cc:82
-#, fuzzy, c-format
-msgid "can't find start of piano pedal: `%s'"
-msgstr "non risco a trovare una ruling note a %s"
-
-#: piano-pedal-engraver.cc:410
-#, fuzzy
-msgid "unterminated pedal bracket"
-msgstr "beam non terminato"
-
-#: property-iterator.cc:97
-#, c-format
-msgid "Not a grob name, `%s'."
-msgstr ""
-
-#: rest.cc:139
-#, c-format
-msgid "rest `%s' not found, "
-msgstr ""
-
-#: rest-collision.cc:199
-#, fuzzy
-msgid "too many colliding rests"
-msgstr "Troppi crescendi"
-
-#: scm-option.cc:45
-msgid "lilypond -e EXPR means:"
-msgstr ""
-
-#: scm-option.cc:47
-msgid "  Evalute the Scheme EXPR before parsing any .ly files."
-msgstr ""
-
-#: scm-option.cc:49
-msgid ""
-"  Multiple -e options may be given, they will be evaluated sequentially."
-msgstr ""
-
-#: scm-option.cc:51
-msgid ""
-"  The function ly-set-option allows for access to some internal variables."
-msgstr ""
-
-#: scm-option.cc:53
-msgid "Usage: lilypond -e \"(ly-set-option SYMBOL VAL)\""
-msgstr ""
-
-#: scm-option.cc:55
-msgid "Where SYMBOL VAL pair is any of:"
-msgstr ""
-
-#: scm-option.cc:128
-msgid "Unknown internal option!"
-msgstr ""
-
-#: score.cc:85
-msgid "Interpreting music..."
-msgstr "Interpretazione della musica..."
-
-#: score.cc:97
-#, fuzzy
-msgid "Need music in a score"
-msgstr "ho bisogno di musica nello spartito"
-
-#. should we? hampers debugging.
-#: score.cc:111
-#, fuzzy
-msgid "Errors found/*, not processing score*/"
-msgstr "ho trovato un errore, /*non sto elaborando lo spartito*/"
-
-#: score.cc:118
-#, fuzzy, c-format
-msgid "elapsed time: %.2f seconds"
-msgstr "durata: %.2f secondi"
-
-#: score-engraver.cc:99
-#, fuzzy, c-format
-msgid "can't find `%s'"
-msgstr "non trovo `%s'"
-
-#: score-engraver.cc:100
-msgid "Fonts have not been installed properly.  Aborting"
-msgstr ""
-
-#: score-engraver.cc:205
-#, fuzzy, c-format
-msgid "unbound spanner `%s'"
-msgstr "Spanner non legato `%s'"
-
-#: script-engraver.cc:90
-#, c-format
-msgid "Don't know how to interpret articulation `%s'"
-msgstr ""
-
-#. this shouldn't happen, but let's continue anyway.
-#: separation-item.cc:53 separation-item.cc:101
-msgid "Separation_item:  I've been drinking too much"
-msgstr ""
-
-#: simple-spacer.cc:248
-#, c-format
-msgid "No spring between column %d and next one"
-msgstr ""
-
-#: slur-engraver.cc:141
-msgid "unterminated slur"
-msgstr "slur non terminato"
-
-#. How to shut up this warning, when Voice_devnull_engraver has
-#. eaten start event?
-#: slur-engraver.cc:159
-#, fuzzy
-msgid "can't find start of slur"
-msgstr "non trovo le estremità di %s"
-
-#: source-file.cc:67
-#, fuzzy, c-format
-msgid "Huh?  Got %d, expected %d characters"
-msgstr "Come? Ho trovato %d caratteri al posto di %d"
-
-#: spacing-spanner.cc:379
-#, c-format
-msgid "Global shortest duration is %s\n"
-msgstr ""
-
-#: spring-smob.cc:32
-#, c-format
-msgid "#<spring smob d= %f>"
-msgstr ""
-
-#: staff-symbol.cc:61
-msgid "staff symbol: indentation yields beyond end of line"
-msgstr ""
-
-#: stem.cc:118
-#, fuzzy
-msgid "Weird stem size; check for narrow beams"
-msgstr "dimensione del gambo poco ortodossa; check for narrow beams"
-
-#: stem.cc:611
-#, c-format
-msgid "flag `%s' not found"
-msgstr ""
-
-#: stem.cc:624
-#, c-format
-msgid "flag stroke `%s' not found"
-msgstr ""
-
-#: stem-engraver.cc:96
-msgid "tremolo duration is too long"
-msgstr ""
-
-#: stem-engraver.cc:124
-#, c-format
-msgid "Adding note head to incompatible stem (type = %d)"
-msgstr ""
-
-#: stem-engraver.cc:125
-msgid "Don't you want polyphonic voices instead?"
-msgstr ""
-
-#: streams.cc:34
-#, fuzzy, c-format
-msgid "can't create directory: `%s'"
-msgstr "non trovo e non posso creare `%s'"
-
-#: streams.cc:48
-#, fuzzy
-msgid "Error syncing file (disk full?)"
-msgstr "errore nel sincronizzare il file (disco pieno?)"
-
-#: system.cc:125
-#, c-format
-msgid "Element count %d."
-msgstr ""
-
-#: system.cc:372
-#, c-format
-msgid "Grob count %d "
-msgstr ""
-
-#: system.cc:386
-#, fuzzy
-msgid "Calculating line breaks..."
-msgstr "Calcolo delle posizioni della colonne..."
-
-#: text-spanner-engraver.cc:81
-#, fuzzy
-msgid "can't find start of text spanner"
-msgstr "non trovo le estremità di %s"
-
-#: text-spanner-engraver.cc:95
-#, fuzzy
-msgid "already have a text spanner"
-msgstr "crescendo non terminato"
-
-#: text-spanner-engraver.cc:164
-#, fuzzy
-msgid "unterminated text spanner"
-msgstr "extender non terminato"
-
-#: tfm.cc:83
-#, fuzzy, c-format
-msgid "can't find ascii character: %d"
-msgstr "non riesco a trovare il carattere `%s'"
-
-#. Not using ngettext's plural feature here, as this message is
-#. more of a programming error.
-#: tfm-reader.cc:108
-#, c-format
-msgid "TFM header of `%s' has only %u word (s)"
-msgstr ""
-
-#: tfm-reader.cc:142
-#, c-format
-msgid "%s: TFM file has %u parameters, which is more than the %u I can handle"
-msgstr ""
-
-#: tie-performer.cc:159
-msgid "No ties were created!"
-msgstr ""
-
-#: time-scaled-music-iterator.cc:25
-msgid "no one to print a tuplet start bracket"
-msgstr ""
-
-#. If there is no such symbol, we default to the numbered style.
-#. (Here really with a warning!)
-#: time-signature.cc:87
-#, c-format
-msgid "time signature symbol `%s' not found; reverting to numbered style"
-msgstr ""
-
-#.
-#. Todo: should make typecheck?
-#.
-#. OTOH, Tristan Keuris writes 8/20 in his Intermezzi.
-#.
-#: time-signature-engraver.cc:57
-#, c-format
-msgid "Found strange time signature %d/%d."
-msgstr ""
-
-#: translator-ctors.cc:53
-#, fuzzy, c-format
-msgid "unknown translator: `%s'"
-msgstr "traduttore sconosciuto `%s'"
-
-#: translator-def.cc:105
-msgid "Program has no such type"
-msgstr ""
-
-#: translator-def.cc:111
-#, c-format
-msgid "Already contains: `%s'"
-msgstr ""
-
-#: translator-def.cc:112
-#, fuzzy, c-format
-msgid "Not adding translator: `%s'"
-msgstr "traduttore sconosciuto `%s'"
-
-#: translator-def.cc:229
-#, fuzzy, c-format
-msgid "can't find: `%s'"
-msgstr "non trovo `%s'"
-
-#: translator-group.cc:158
-#, c-format
-msgid "can't find or create `%s' called `%s'"
-msgstr "non trovo e non posso creare '%s' chiamato '%s'"
-
-#: translator-group.cc:230
-#, fuzzy, c-format
-msgid "can't find or create: `%s'"
-msgstr "non trovo e non posso creare `%s'"
-
-#: vaticana-ligature.cc:49
-msgid "ascending vaticana style flexa"
-msgstr ""
-
-#: vaticana-ligature.cc:219
-msgid "Vaticana_ligature:thickness undefined; assuming 1.4"
-msgstr ""
-
-#: vaticana-ligature.cc:233
-msgid "Vaticana_ligature:x-offset undefined; assuming 0.0"
-msgstr ""
-
-#: vaticana-ligature.cc:258
-msgid "Vaticana_ligature: (delta_pitch == 0)"
-msgstr ""
-
-#: vaticana-ligature.cc:271
-msgid "Vaticana_ligature:delta-pitch -> ignoring join"
-msgstr ""
-
-#: vaticana-ligature-engraver.cc:477
-#, c-format
-msgid "Vaticana_ligature_engraver: setting `spacing-increment = %f': ptr=%ul"
-msgstr ""
-
-#: volta-engraver.cc:112
-msgid "No volta spanner to end"
-msgstr ""
-
-#: volta-engraver.cc:123
-msgid "Already have a volta spanner.  Stopping that one prematurely."
-msgstr ""
-
-#: volta-engraver.cc:127
-msgid "Also have a stopped spanner.  Giving up."
-msgstr ""
-
-#: parser.yy:480
-msgid "Identifier should have alphabetic characters only"
-msgstr ""
-
-#: parser.yy:779
-msgid "More alternatives than repeats.  Junking excess alternatives."
-msgstr ""
-
-#: parser.yy:861 parser.yy:868
-msgid "pplycontext takes function argument"
-msgstr ""
-
-#: parser.yy:877
-msgid "Second argument must be a symbol"
-msgstr ""
-
-#: parser.yy:882
-msgid "First argument must be a procedure taking one argument"
-msgstr ""
-
-#: parser.yy:1009
-msgid "pply takes function argument"
-msgstr ""
-
-#: parser.yy:1501
-msgid "Expecting string as script definition"
-msgstr ""
-
-#: parser.yy:1598
-msgid "Expecting musical-pitch value"
-msgstr ""
-
-#: parser.yy:1609
-#, fuzzy
-msgid "Must have duration object"
-msgstr "indicazione durata priva di senso"
-
-#: parser.yy:1618 parser.yy:1626
-#, fuzzy
-msgid "Have to be in Lyric mode for lyrics"
-msgstr "bisogna essere in Lyric mode per i testi"
-
-#: parser.yy:1798 parser.yy:1853
-#, c-format
-msgid "not a duration: %d"
-msgstr "non è una durata: %d"
-
-#: parser.yy:1949
-#, fuzzy
-msgid "Have to be in Note mode for notes"
-msgstr "bisogna essere in Note mode per le note"
-
-#: parser.yy:2032
-#, fuzzy
-msgid "Have to be in Chord mode for chords"
-msgstr "bisogna essere in Chord mode per gli accordi"
-
-#: parser.yy:2171
-msgid "need integer number arg"
-msgstr ""
-
-#: parser.yy:2316
-msgid "Suspect duration found following this beam"
-msgstr ""
-
-#: lexer.ll:186
-msgid "EOF found inside a comment"
-msgstr "ho trovato un EOF in un commento"
-
-#: lexer.ll:200
-msgid "\\maininput disallowed outside init files"
-msgstr ""
-
-#: lexer.ll:224
-#, fuzzy, c-format
-msgid "wrong or undefined identifier: `%s'"
-msgstr "indentificatore non definito: `%s'"
-
-#. backup rule
-#: lexer.ll:233
-#, fuzzy
-msgid "Missing end quote"
-msgstr "apice finale mancante"
-
-#. backup rule
-#: lexer.ll:255 lexer.ll:259
-msgid "white expected"
-msgstr "aspettavo uno spazio bianco"
-
-#: lexer.ll:268
-msgid "Can't evaluate Scheme in safe mode"
-msgstr ""
-
-#: lexer.ll:397 lexer.ll:487
-msgid "Brace found at end of lyric.  Did you forget a space?"
-msgstr ""
-
-#: lexer.ll:574
-#, fuzzy, c-format
-msgid "invalid character: `%c'"
-msgstr "carattere illegale: `%c'"
-
-#: lexer.ll:651
-#, c-format
-msgid "unknown escaped string: `\\%s'"
-msgstr "stringa di escape sconosciuta: `\\%s'"
-
-#: lexer.ll:742
-#, fuzzy, c-format
-msgid "Incorrect lilypond version: %s (%s, %s)"
-msgstr "versione di mudela errata: %s (%s, %s)"
-
-#: lexer.ll:743
-msgid "Consider updating the input with the convert-ly script"
-msgstr ""
-
-#, fuzzy
-#~ msgid "%r: release directory"
-#~ msgstr "non trovo e non posso creare `%s'"
-
-#, fuzzy
-#~ msgid "Listing `%s'..."
-#~ msgstr "Genero le voci..."
-
-#, fuzzy
-#~ msgid "Fetching `%s'..."
-#~ msgstr "Genero le voci..."
-
-#, fuzzy
-#~ msgid "Building `%s'..."
-#~ msgstr "Genero le voci..."
-
-#~ msgid ", at "
-#~ msgstr ", a "
-
-#, fuzzy
-#~ msgid "Putting slur over rest."
-#~ msgstr "Metto uno slur sulla pausa."
-
-#, fuzzy
-#~ msgid "Slur over rest?"
-#~ msgstr "Metto uno slur sulla pausa."
-
-#~ msgid "can't map file"
-#~ msgstr "non posso mappare il documento"
-
-#, fuzzy
-#~ msgid "This binary was compiled with the following options:"
-#~ msgstr "GNU LilyPond è stata compilata con le seguenti impostazioni:"
-
-#~ msgid "EOF in a string"
-#~ msgstr "EOF in una corda"
-
-#, fuzzy
-#~ msgid "can't find start of beam"
-#~ msgstr "non trovo le estremità di %s"
-
-#, 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à"
-
-#, fuzzy
-#~ msgid "Scheme options:"
-#~ msgstr "Opzioni: "
-
-#, fuzzy
-#~ msgid "writing header field `%s' to `%s'..."
-#~ msgstr "scrivo il file delle dipendenze: `%s'..."
-
-#~ msgid "#32 in quarter: %d"
-#~ msgstr "#32 in un quarto: %d"
-
-#, fuzzy
-#~ msgid "LY output to `%s'..."
-#~ msgstr "L'output MIDI è inviato a %s..."
-
-#, fuzzy
-#~ msgid "track %d:"
-#~ msgstr "traccia "
-
-#~ msgid "Processing..."
-#~ msgstr "Elaboro..."
-
-#~ msgid "Creating voices..."
-#~ msgstr "Genero le voci..."
-
-#~ msgid "track "
-#~ msgstr "traccia "
-
-#~ msgid "NOT Filtering tempo..."
-#~ msgstr "NON filtro il tempo..."
-
-#~ msgid "NOT Quantifying columns..."
-#~ msgstr "NON quantifico le colonne..."
-
-#~ msgid "Quantifying columns..."
-#~ msgstr "Quantifico le colonne..."
-
-#~ msgid "Settling columns..."
-#~ msgstr "Sistemo le colonne..."
-
-#, fuzzy
-#~ msgid "% MIDI instrument:"
-#~ msgstr "% strumento:"
-
-#~ msgid "lily indent level: %d"
-#~ msgstr "livello di indentazione di lili: %d"
-
-#~ msgid "% Creator: "
-#~ msgstr "% Autore: "
-
-#~ msgid "% Automatically generated"
-#~ msgstr "% Generato automaticamente"
-
-#~ msgid "% from input file: "
-#~ msgstr "% dal file di input: "
-
-#, fuzzy
-#~ msgid "write exact durations, e.g.: a4*385/384"
-#~ msgstr "  -b, --no-quantify      scrive durate esatte,  p.es.: a4*385/384\n"
-
-#, fuzzy
-#~ msgid "enable debugging output"
-#~ msgstr "  -D, --debug            abilita l'output di debugging\n"
-
-#, fuzzy
-#~ msgid "don't 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"
-
-#, fuzzy
-#~ msgid "set FILE as default output"
-#~ msgstr "  -o, --output=FILE      set FILE come output di default\n"
-
-#, fuzzy
-#~ msgid "set smallest duration"
-#~ msgstr "indicazione durata priva di senso"
-
-#, fuzzy
-#~ msgid "don't timestamp the output"
-#~ 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"
-
-#~ msgid "Usage: %s [OPTIONS]... [FILE]"
-#~ msgstr "Uso: %s [OPZIONE]... [FILE]"
-
-#, fuzzy
-#~ msgid "Translate MIDI-file to lilypond"
-#~ msgstr "Traduce un file midi in mudela"
-
-#~ msgid "zero length string encountered"
-#~ msgstr "ho incostrato una striga di lunghezza nulla"
-
-#~ msgid "MIDI header expected"
-#~ msgstr "mi aspettavo un header MIDI"
-
-#, fuzzy
-#~ msgid "invalid header length"
-#~ msgstr "Lunghezza dell'header non valida"
-
-#, fuzzy
-#~ msgid "invalid MIDI format"
-#~ msgstr "evento MIDI non valido"
-
-#, fuzzy
-#~ msgid "invalid number of tracks"
-#~ msgstr "Numero di tracce non valido"
-
-#, fuzzy
-#~ msgid "can't handle non-metrical time"
-#~ msgstr "tempo non metrico"
-
-#~ msgid "invalid running status"
-#~ msgstr "stato di eseguzione non valido"
-
-#~ msgid "unimplemented MIDI meta-event"
-#~ msgstr "meta-evento MIDI non implementato"
-
-#~ msgid "invalid MIDI event"
-#~ msgstr "evento MIDI non valido"
-
-#~ msgid "MIDI track expected"
-#~ msgstr "mi spettavo una traccia MIDI"
-
-#~ msgid "invalid track length"
-#~ msgstr "lunghezza della traccia non valida"
-
-#, fuzzy
-#~ msgid "no Grace context available"
-#~ 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à"
-
-#, fuzzy
-#~ msgid "not enough fields in Dstream init"
-#~ msgstr "Non ci sono sufficienti campi in Dstream init."
-
-#, fuzzy
-#~ msgid "floating point exception"
-#~ msgstr "Eccezione di virgola mobile"
-
-#, fuzzy
-#~ msgid "can't set mem-checking!"
-#~ msgstr "non posso settare mem-checking"
-
-#, fuzzy
-#~ msgid "Dependency file left in `%s'"
-#~ msgstr "scrivo il file delle dipendenze: `%s'..."
-
-#, fuzzy
-#~ msgid "Usage: lilypond [OPTIONS]... FILE\n"
-#~ msgstr "Uso: %s [OPZIONE]... [FILE]"
-
-#~ msgid "unconventional key: flats: %d, sharps: %d"
-#~ msgstr "armatura non convenzionale: %d bemolli e %d diesis"
-
-#, fuzzy
-#~ msgid "wrong identifier type, expected: `%s'"
-#~ msgstr "Tipo di identificatore sbagliato: "
-
-#, fuzzy
-#~ msgid "show all changes in relative syntax"
-#~ msgstr ""
-#~ "  -Q, --find-old-relative mostra tutti i cambiamenti nella sintassi "
-#~ "relativa\n"
-
-#, fuzzy
-#~ msgid "switch on experimental features"
-#~ msgstr "  -t, --test             usa le caratteristiche sperimentali\n"
-
-#~ msgid "Automatically generated"
-#~ msgstr "Generato automaticamente"
-
-#, fuzzy
-#~ msgid "Wrong type for property"
-#~ msgstr "Tipo sbagliato per il valore di una proprietà"
-
-#, fuzzy
-#~ msgid "Huh?  Not a Request: `%s'"
-#~ msgstr "Cosa? Non è una richiesta: `%s'"
-
-#~ msgid "can't find both ends of %s"
-#~ msgstr "non trovo le estremità di %s"
-
-#, fuzzy
-#~ msgid "lost in time:"
-#~ msgstr "mi sono persa nel tempo"
-
-#~ msgid "Need a translator group for a context"
-#~ msgstr "Ho bisogno di un gruppo di traduzione per un contesto"
-
-#, fuzzy
-#~ msgid "No key name, assuming `C'"
-#~ msgstr "Nessuna armatura di chiave: assumo Do'"
-
-#, fuzzy
-#~ msgid "out of tune:"
-#~ msgstr "stonato"
-
-#, fuzzy
-#~ msgid "ignore mudela version"
-#~ msgstr "versione di mudela errata: %s (%s, %s)"
-
-#~ msgid "unknown paper variable: `%s'"
-#~ msgstr "variabile paper sconosciuta: `%s'"
-
-#~ msgid "not a real variable"
-#~ msgstr "non è una vera variabile"
-
-#~ msgid "no toplevel translator"
-#~ msgstr "non c'è un traduttore di livello massimo"
-
-#, 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."
-
-#~ msgid "0 lines"
-#~ msgstr "0 linee"
-
-#~ msgid "1 line (of %.0f columns)"
-#~ msgstr "1 linea (da %.0f colonne)"
-
-#~ msgid "%d lines (with an average of %.1f columns)"
-#~ msgstr "%d linee (con una media di %.f colonne)"
-
-#~ 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"
-
-#~ msgid "Too many crescendi here"
-#~ msgstr "Troppi crescendi"
-
-#~ msgid "%s expected"
-#~ msgstr "aspettavo %s"
-
-#~ msgid "Can not find file `%s'"
-#~ msgstr "Non trovo il file `%s'"
-
-#~ msgid "can't find"
-#~ msgstr "non trovo"
-
-#~ msgid "Can't find Score context"
-#~ msgstr "Non trovo il contesto dello Score"
-
-#~ msgid "redeclaration of `\\%s'"
-#~ msgstr "doppia dichiarazione di `\\%s'"
-
-#~ msgid "Can't solve this casting problem exactly; revert to 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"
-
-#~ msgid "I'm too fat; call Oprah"
-#~ msgstr "Son troppo grassa; chiama Oprah"
-
-#~ msgid "solution doesn't satisfy constraints"
-#~ msgstr "la soluzione non soddisfa i vincoli"
-
-#~ msgid "partial measure must be non-negative"
-#~ msgstr "la misura parziale deve essere non-negativa"
-
-#~ msgid "partial measure too large"
-#~ msgstr "misura parziale troppo grande"
-
-#~ msgid "Will ignore \\relative for transposed music"
-#~ msgstr "Ignorerò \\relative per la musica trasposta "
-
-#~ msgid "ugh, this measure is too long"
-#~ msgstr "ops, questa misura è troppo lunga"
-
-#~ msgid "I don't 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"
-
-#~ msgid "can't abbreviate"
-#~ msgstr "non posso abbreviare"
-
-#, fuzzy
-#~ msgid "can't abbreviate tuplet"
-#~ msgstr "non posso abbreviare"
-
-#~ msgid "Invalid midi format"
-#~ msgstr "Formato midi non valido"
-
-#~ msgid "can't handle %s"
-#~ msgstr "non posso maneggiare %s"
-
-#~ msgid "Parsing...\n"
-#~ msgstr "Interpreto...\n"
-
-#, fuzzy
-#~ msgid "don't timestamp the output "
-#~ msgstr ""
-#~ "  -T, --no-timestamps    non inserisce marcatori temporali nell'output\n"
-
-#~ msgid "  -a, --about            about LilyPond\n"
-#~ msgstr "  -a, --about            cos'è LilyPond\n"
-
-#~ msgid "  -h, --help             this help\n"
-#~ msgstr "  -h, --help             questo help\n"
-
-#~ msgid "  -f, --output-format=X  use output format X\n"
-#~ 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"
-
-#~ 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"
-
-#~ msgid "  -D, --debug            enable debugging output\n"
-#~ msgstr "  -D, --debug            abilita l'output di debugging\n"
-
-#, fuzzy
-#~ msgid "  -p, --no-tuplets       assume no tuplets\n"
-#~ msgstr "  -p, --no-plets         assume che non ci siano gruppetti\n"
-
-#~ 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 "  -v, --verbose          be verbose\n"
-#~ msgstr "  -v, --verbose          sii loquace\n"
-
-#, fuzzy
-#~ msgid "Midi2ly, translate midi to mudela"
-#~ msgstr "Mi2mu, tradice midi in mudela"
-
-#~ msgid "of"
-#~ msgstr "di"
-
-#~ msgid "please fix me"
-#~ msgstr "correggimi, per favore"
-
-#~ msgid "stem at %s doesn't fit in beam"
-#~ 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."
-
-#~ msgid "\\relative mode changed here, old value: "
-#~ 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"
-
-#~ msgid "script needs stem direction"
-#~ msgstr "lo script ha bisogno di una direzione per il gambo"
-
-#~ 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 "have to be in Note mode for @chords"
-#~ msgstr "bisogna essere in Note mode per i @chords"
-
-#~ msgid ""
-#~ "LilyPond is the GNU Project music typesetter.  This program can print\n"
-#~ "beautiful sheet music from a music definition file.  It can also play\n"
-#~ "mechanical performances to a MIDI file.  Features include multiple\n"
-#~ "staffs, meters, clefs, keys, lyrics, versatile input language, cadenzas,\n"
-#~ "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"
-#~ "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"
diff --git a/po/ja.po b/po/ja.po
deleted file mode 100644
index 6f1ea52446..0000000000
--- a/po/ja.po
+++ /dev/null
@@ -1,2848 +0,0 @@
-# Japanese message for lilypond 1.2.17
-# 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"
-"POT-Creation-Date: 2003-07-18 14:45+0200\n"
-"PO-Revision-Date: 2000-03-29 20:50+0900\n"
-"Last-Translator: Daisuke Yamashita <yamad@mb.infoweb.ne.jp>\n"
-"Language-Team: Japanese <ja@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=EUC-JP\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#. this is where special info is often stored
-#. ###############################################################
-#. lilylib.py -- options and stuff
-#.
-#. source file of the GNU LilyPond music typesetter
-#.
-#. (c)  1998--2003  Han-Wen Nienhuys <hanwen@cs.uu.nl>
-#. Jan Nieuwenhuizen <janneke@gnu.org>
-#. ##  subst:\(^\|[^._a-z]\)\(abspath\|identify\|warranty\|progress\|warning\|error\|exit\|getopt_args\|option_help_str\|options_help_str\|help\|setup_temp\|read_pipe\|system\|cleanup_temp\|strip_extension\|cp_to_dir\|mkdir_p\|init\) *(
-#. ##  replace:\1ly.\2 (
-#. ## subst: \(help_summary\|keep_temp_dir_p\|option_definitions\|original_dir\|program_name\|pseudo_filter_p\|temp_dir\|verbose_p\)
-#. ###############################################################
-#. Users of python modules should include this snippet
-#. and customize variables below.
-#. We'll suffer this path init stuff as long as we don't install our
-#. python packages in <prefix>/lib/pythonx.y (and don't kludge around
-#. it as we do with teTeX on Red Hat Linux: set some environment var
-#. (PYTHONPATH) in profile)
-#. If set, LILYPONDPREFIX must take prevalence
-#. if datadir is not set, we're doing a build and LILYPONDPREFIX
-#. Customize these
-#. lilylib globals
-#: lilylib.py:60
-msgid "lilylib module"
-msgstr ""
-
-#: lilylib.py:63 lilypond-book.py:131 lilypond.py:128 midi2ly.py:100
-#: mup2ly.py:75 main.cc:111
-msgid "print this help"
-msgstr "¤³¤Î¥Ø¥ë¥×"
-
-#. ###############################################################
-#. Handle bug in Python 1.6-2.1
-#.
-#. there are recursion limits for some patterns in Python 1.6 til 2.1.
-#. fix this by importing pre instead. Fix by Mats.
-#. Attempt to fix problems with limited stack size set by Python!
-#. Sets unlimited stack size. Note that the resource module only
-#. is available on UNIX.
-#: lilylib.py:114 midi2ly.py:136 mup2ly.py:130 main.cc:188 main.cc:200
-#, c-format, python-format
-msgid "Copyright (c) %s by"
-msgstr "Copyright (c) %s by"
-
-#: lilylib.py:114
-msgid " 1998--2003"
-msgstr ""
-
-#: lilylib.py:118
-msgid "Distributed under terms of the GNU General Public License."
-msgstr ""
-
-#: lilylib.py:120
-msgid "It comes with NO WARRANTY."
-msgstr ""
-
-#: lilylib.py:127 midi2ly.py:150 mup2ly.py:144 input.cc:88
-msgid "warning: "
-msgstr "·Ù¹ð: "
-
-#. lots of midi files use plain text for lyric events
-#. FIXME: read from stdin when files[0] = '-'
-#: lilylib.py:130 midi2ly.py:165 midi2ly.py:1018 midi2ly.py:1083 mup2ly.py:147
-#: mup2ly.py:161 input.cc:93
-msgid "error: "
-msgstr "¥¨¥é¡¼: "
-
-#: lilylib.py:134
-#, fuzzy, python-format
-msgid "Exiting (%d)..."
-msgstr "¹Ô ..."
-
-#: lilylib.py:194 midi2ly.py:224 mup2ly.py:220
-#, fuzzy, python-format
-msgid "Usage: %s [OPTIONS]... FILE"
-msgstr "»È¤¤Êý: %s [¥ª¥×¥·¥ç¥ó]... [¥Õ¥¡¥¤¥ë]"
-
-#: lilylib.py:198 midi2ly.py:228 mup2ly.py:224 main.cc:166
-msgid "Options:"
-msgstr "¥ª¥×¥·¥ç¥ó:"
-
-#: lilylib.py:202 midi2ly.py:232 mup2ly.py:228 main.cc:172
-#, c-format, python-format
-msgid "Report bugs to %s."
-msgstr "¥Ð¥°¥ì¥Ý¡¼¥È¤Ï %s ¤Ø."
-
-#: lilylib.py:228
-#, fuzzy, python-format
-msgid "Opening pipe `%s'"
-msgstr "Í×µá¤ò¼Î¤Æ¤Þ¤¹: `%s'"
-
-#. successful pipe close returns 'None'
-#: lilylib.py:240
-#, python-format
-msgid "`%s' failed (%d)"
-msgstr ""
-
-#: lilylib.py:242 lilylib.py:289 lilypond-book.py:231 lilypond.py:512
-msgid "The error log is as follows:"
-msgstr ""
-
-#: lilylib.py:262 midi2ly.py:260 mup2ly.py:256
-#, fuzzy, python-format
-msgid "Invoking `%s'"
-msgstr "Í×µá¤ò¼Î¤Æ¤Þ¤¹: `%s'"
-
-#: lilylib.py:264
-#, fuzzy, python-format
-msgid "Running %s..."
-msgstr "Í×µá¤ò¼Î¤Æ¤Þ¤¹: `%s'"
-
-#: lilylib.py:282
-#, python-format
-msgid "`%s' failed (%s)"
-msgstr ""
-
-#: lilylib.py:285 midi2ly.py:266 mup2ly.py:264
-msgid "(ignored)"
-msgstr ""
-
-#: lilylib.py:299 midi2ly.py:276 mup2ly.py:274
-#, fuzzy, python-format
-msgid "Cleaning %s..."
-msgstr "Í×µá¤ò¼Î¤Æ¤Þ¤¹: `%s'"
-
-#. Duh.  Python style portable: cp *.EXT OUTDIR
-#. system ('cp *.%s %s' % (ext, outdir), 1)
-#. Python < 1.5.2 compatibility
-#.
-#. On most platforms, this is equivalent to
-#. `normpath(join(os.getcwd()), PATH)'.  *Added in Python version 1.5.2*
-#. tex needs lots of memory, more than it gets by default on Debian
-#. TODO: * prevent multiple addition.
-#. * clean TEXINPUTS, MFINPUTS, TFMFONTS,
-#. as these take prevalence over $TEXMF
-#. and thus may break tex run?
-#. $TEXMF is special, previous value is already taken care of
-#. # -sOutputFile does not work with bbox?
-#. # todo:
-#. # have better algorithm for deciding when to crop page,
-#. # and when to show full page
-#: lilylib.py:458
-msgid "Removing output file"
-msgstr ""
-
-#. !@PYTHON@
-#. once upon a rainy monday afternoon.
-#.
-#. ...
-#.
-#. (not finished.)
-#. ABC standard v1.6:  http://www.gre.ac.uk/~c.walshaw/abc2mtex/abc.txt
-#.
-#. Enhancements  (Roy R. Rankin)
-#.
-#. Header section moved to top of lilypond file
-#. handle treble, treble-8, alto, and bass clef
-#. Handle voices (V: headers) with clef and part names, multiple voices
-#. Handle w: lyrics with multiple verses
-#. Handle key mode names for minor, major, phrygian, ionian, locrian, aeolian,
-#. mixolydian, lydian, dorian
-#. Handle part names from V: header
-#. Tuplets handling fixed up
-#. Lines starting with |: not discarded as header lines
-#. Multiple T: and C: header entries handled
-#. Accidental maintained until next bar check
-#. Silent rests supported
-#. articulations fermata, upbow, downbow, ltoe, accent, tenuto supported
-#. Chord strings([-^]"string") can contain a '#'
-#. Header fields enclosed by [] in notes string processed
-#. W: words output after tune as abc2ps does it (they failed before)
-#. Enhancements (Laura Conrad)
-#.
-#. Barring now preserved between ABC and lilypond
-#. the default placement for text in abc is above the staff.
-#. %%LY now supported.
-#. \breve and \longa supported.
-#. M:none doesn't crash lily.
-#. Limitations
-#.
-#. Multiple tunes in single file not supported
-#. Blank T: header lines should write score and open a new score
-#. Not all header fields supported
-#. ABC line breaks are ignored
-#. Block comments generate error and are ignored
-#. Postscript commands are ignored
-#. lyrics not resynchronized by line breaks (lyrics must fully match notes)
-#. %%LY slyrics can't be directly before a w: line.
-#. ???
-#. TODO:
-#.
-#. Convert to new chord styles.
-#.
-#. UNDEF -> None
-#.
-#. uGUHGUHGHGUGH
-#. UGH
-#. treble8 is used by abctab2ps; -8va is used by barfly,
-#. and by my patch to abc2ps. If there's ever a standard
-#. about this we'll support that.
-#. find keywork
-#. assume that Q takes the form "Q:1/4=120"
-#. There are other possibilities, but they are deprecated
-#. outf.write ("\t\t\\consists Staff_margin_engraver\n")
-#. pitch manipulation. Tuples are (name, alteration).
-#. 0 is (central) C. Alteration -1 is a flat, Alteration +1 is a sharp
-#. pitch in semitones.
-#. abc to lilypond key mode names
-#. semitone shifts for key mode names
-#. latex does not like naked #'s
-#. latex does not like naked "'s
-#. break lyrics to words and put "'s around words containing numbers and '"'s
-#. escape "
-#. _ causes probs inside ""
-#. _ to ' _ '
-#. split words with -
-#. unless \-
-#. ~ to space('_')
-#. * to to space
-#. latex does not like naked #'s
-#. put numbers and " and ( into quoted string
-#. insure space between lines
-#. title
-#. strip trailing blanks
-#. Meter
-#. KEY
-#. seperate clef info
-#. there may or may not be a space
-#. between the key letter and the mode
-#. ugh.
-#. ugh.
-#. Notes
-#. Origin
-#. Reference Number
-#. Area
-#. History
-#. Book
-#. Composer
-#. Default note length
-#. Voice
-#. Words
-#. vocals
-#. tempo
-#. we use in this order specified accidental, active accidental for bar,
-#. active accidental for key
-#. (num /  den)  / defaultlen < 1/base
-#. return (str, num,den,dots)
-#. ignore slide
-#. ignore roll
-#. s7m2 input doesnt care about spaces
-#.
-#. remember accidental for rest of bar
-#.
-#. get accidental set in this bar or UNDEF if not set
-#. WAT IS ABC EEN ONTZETTENDE PROGRAMMEERPOEP  !
-#. failed; not a note!
-#. escape '#'s
-#.
-#. |] thin-thick double bar line
-#. || thin-thin double bar line
-#. [| thick-thin double bar line
-#. :| left repeat
-#. |: right repeat
-#. :: left-right repeat
-#. |1 volta 1
-#. |2 volta 2
-#. first try the longer one
-#. bracket escape
-#. the nobarlines option is necessary for an abc to lilypond translator for
-#. exactly the same reason abc2midi needs it: abc requires the user to enter
-#. the note that will be printed, and MIDI and lilypond expect entry of the
-#. pitch that will be played.
-#.
-#. In standard 19th century musical notation, the algorithm for translating
-#. between printed note and pitch involves using the barlines to determine
-#. the scope of the accidentals.
-#.
-#. Since ABC is frequently used for music in styles that do not use this
-#. convention, such as most music written before 1700, or ethnic music in
-#. non-western scales, it is necessary to be able to tell a translator that
-#. the barlines should not affect its interpretation of the pitch.
-#. write other kinds of appending  if we ever need them.
-#. add comments to current voice
-#. Try nibbling characters off until the line doesn't change.
-#. dump_global (outf)
-#. !@PYTHON@
-#.
-#. convert-ly.py -- Update old LilyPond input files (fix name?)
-#.
-#. source file of the GNU LilyPond music typesetter
-#.
-#. (c)  1998--2003  Han-Wen Nienhuys <hanwen@cs.uu.nl>
-#. Jan Nieuwenhuizen <janneke@gnu.org>
-#. TODO
-#. use -f and -t for -s output
-#. NEWS
-#. 0.2
-#. - rewrite in python
-#. Did we ever have \mudela-version?  I doubt it.
-#. lilypond_version_re_str = '\\\\version *\"(.*)\"'
-#. ###########################
-#. need new a namespace
-#. raise FatalConversionError()
-#. need new a namespace
-#. harmful to current .lys
-#. str = re.sub ('\\\\key([^;]+);', '\\\\accidentals \\1;', str)
-#. raise FatalConversionError()
-#. raise FatalConversionError()
-#. raise FatalConversionError()
-#. TODO: lots of other syntax change should be done here as well
-#. Ugh, but meaning of \stemup changed too
-#. maybe we should do \stemup -> \stemUp\slurUp\tieUp ?
-#. I don't know exactly when these happened...
-#. ugh, we loose context setting here...
-#. (lacks capitalisation slur -> Slur)
-#. # dynamic..
-#. TODO: add lots of these
-#. ugh
-#. old fix
-#. Make sure groups of more than one ; have space before
-#. them, so that non of them gets removed by next rule
-#. Only remove ; that are not after spaces, # or ;
-#. Otherwise  we interfere with Scheme comments,
-#. which is badbadbad.
-#. 40 ?
-#. ###############################
-#. END OF CONVERSIONS
-#. ###############################
-#. !@PYTHON@
-#. info mostly taken from looking at files. See also
-#. http://lilypond.org/wiki/?EnigmaTransportFormat
-#. This supports
-#.
-#. * notes
-#. * rests
-#. * ties
-#. * slurs
-#. * lyrics
-#. * articulation
-#. * grace notes
-#. * tuplets
-#.
-#. todo:
-#. * slur/stem directions
-#. * voices (2nd half of frame?)
-#. * more intelligent lyrics
-#. * beams (better use autobeam?)
-#. * more robust: try entertainer.etf (freenote)
-#. * dynamics
-#. * empty measures (eg. twopt03.etf from freenote)
-#.
-#. uGUHGUHGHGUGH
-#. notename 0 == central C
-#. represent pitches as (notename, alteration), relative to C-major scale
-#. a fifth up
-#. should cache this.
-#. flag1 isn't all that interesting.
-#. 3: '>',
-#. 18: '\arpeggio' ,
-#. do grace notes.
-#. ugh.
-#. we don't attempt voltas since they fail easily.
-#. and g.repeat_bar == '|:' or g.repeat_bar == ':|:' or g.bracket:
-#. 4 layers.
-#. let's not do this: this really confuses when eE happens to be before  a ^text.
-#. if last_tag and last_indices:
-#. etf_file_dict[last_tag][last_indices].append (l)
-#. # do it
-#. staff-spec
-#. should use \addlyrics ?
-#. !@PYTHON@
-#. vim: set noexpandtab:
-#. This is was the idea for handling of comments:
-#. Multiline comments, @ignore .. @end ignore is scanned for
-#. in read_doc_file, and the chunks are marked as 'ignore', so
-#. lilypond-book will not touch them any more. The content of the
-#. chunks are written to the output file. Also 'include' and 'input'
-#. regex has to check if they are commented out.
-#.
-#. Then it is scanned for 'lilypond', 'lilypond-file' and 'lilypond-block'.
-#. These three regex's has to check if they are on a commented line,
-#. % for latex, @c for texinfo.
-#.
-#. Then lines that are commented out with % (latex) and @c (Texinfo)
-#. are put into chunks marked 'ignore'. This cannot be done before
-#. searching for the lilypond-blocks because % is also the comment character
-#. for lilypond.
-#.
-#. The the rest of the rexeces are searched for. They don't have to test
-#. if they are on a commented out line.
-#. ###############################################################
-#. Users of python modules should include this snippet
-#. and customize variables below.
-#. We'll suffer this path init stuff as long as we don't install our
-#. python packages in <prefix>/lib/pythonx.y (and don't kludge around
-#. it as we do with teTeX on Red Hat Linux: set some environment var
-#. (PYTHONPATH) in profile)
-#. If set, LILYPONDPREFIX must take prevalence
-#. if datadir is not set, we're doing a build and LILYPONDPREFIX
-#. Customize these
-#. if __name__ == '__main__':
-#. lilylib globals
-#. temp_dir = os.path.join (original_dir,  '%s.dir' % program_name)
-#. urg
-#. # FIXME
-#. # do -P or -p by default?
-#. #help_summary = _ ("Run LilyPond using LaTeX for titling")
-#: lilypond-book.py:120
-msgid "Process LilyPond snippets in hybrid html, LaTeX or texinfo document"
-msgstr ""
-
-#. another bug in option parser: --output=foe is taken as an abbreviation
-#. for --output-format
-#: lilypond-book.py:125 main.cc:110
-msgid "EXT"
-msgstr "EXT"
-
-#: lilypond-book.py:125
-#, fuzzy
-msgid "use output format EXT (texi [default], texi-html, latex, html)"
-msgstr "½ÐÎÏ¥Õ¥©¡¼¥Þ¥Ã¥È EXT ¤ò»È¤¦"
-
-#: lilypond-book.py:126 lilypond-book.py:127 lilypond-book.py:129
-#: lilypond-book.py:130
-#, fuzzy
-msgid "DIM"
-msgstr "DIR"
-
-#: lilypond-book.py:126
-msgid "default fontsize for music.  DIM is assumed to be in points"
-msgstr ""
-
-#: lilypond-book.py:127
-msgid "deprecated, use --default-music-fontsize"
-msgstr ""
-
-#: lilypond-book.py:128
-msgid "OPT"
-msgstr ""
-
-#: lilypond-book.py:128
-msgid "pass OPT quoted to the lilypond command line"
-msgstr ""
-
-#: lilypond-book.py:129
-msgid "force fontsize for all inline lilypond. DIM is assumed be to in points"
-msgstr ""
-
-#: lilypond-book.py:130
-msgid "deprecated, use --force-music-fontsize"
-msgstr ""
-
-#: lilypond-book.py:132 lilypond.py:130 main.cc:113 main.cc:118
-msgid "DIR"
-msgstr "DIR"
-
-#: lilypond-book.py:132
-msgid "include path"
-msgstr ""
-
-#: lilypond-book.py:133
-#, fuzzy
-msgid "write dependencies"
-msgstr "¶õÇò¤¬É¬ÍפǤ¹"
-
-#: lilypond-book.py:134
-msgid "PREF"
-msgstr ""
-
-#: lilypond-book.py:134
-msgid "prepend PREF before each -M dependency"
-msgstr ""
-
-#: lilypond-book.py:135
-msgid "don't run lilypond"
-msgstr ""
-
-#: lilypond-book.py:136
-msgid "don't generate pictures"
-msgstr ""
-
-#: lilypond-book.py:137
-msgid "strip all lilypond blocks from output"
-msgstr ""
-
-#: lilypond-book.py:138 lilypond-book.py:139 lilypond.py:135 lilypond.py:136
-#: midi2ly.py:102 main.cc:114 main.cc:117
-msgid "FILE"
-msgstr "FILE"
-
-#: lilypond-book.py:138
-msgid "filename main output file"
-msgstr ""
-
-#: lilypond-book.py:139
-msgid "where to place generated files"
-msgstr ""
-
-#: lilypond-book.py:140 lilypond.py:137
-msgid "RES"
-msgstr ""
-
-#: lilypond-book.py:141 lilypond.py:138
-msgid "set the resolution of the preview to RES"
-msgstr ""
-
-#: lilypond-book.py:142 lilypond.py:148 midi2ly.py:105 mup2ly.py:78 main.cc:126
-#, fuzzy
-msgid "be verbose"
-msgstr "¾ÜºÙ¤Ê¾ðÊó¤òɽ¼¨¤·¤Þ¤¹"
-
-#: lilypond-book.py:143
-#, fuzzy
-msgid "print version information"
-msgstr "¥Ð¡¼¥¸¥ç¥óÈÖ¹æ¤òɽ¼¨"
-
-#: lilypond-book.py:144 lilypond.py:150 midi2ly.py:107 mup2ly.py:80 main.cc:127
-msgid "show warranty and copyright"
-msgstr "ÊݾڤÈÃøºî¸¢¤Ë¤Ä¤¤¤ÆÉ½¼¨¤¹¤ë"
-
-#. format specific strings, ie. regex-es for input, and % strings for output
-#. global variables
-#. lilypond_binary = 'valgrind --suppressions=/home/hanwen/usr/src/guile-1.6.supp  --num-callers=10 /home/hanwen/usr/src/lilypond/lily/out/lilypond'
-#. only use installed binary  when we're installed too.
-#. only use installed binary  when we're installed too.
-#. ###############################################################
-#. Dimension handling for LaTeX.
-#.
-#. Ugh.  (La)TeX writes progress and error messages on stdout
-#. Redirect to stderr
-#: lilypond-book.py:230
-msgid "LaTeX failed."
-msgstr ""
-
-#. URG see lilypond
-#. Convert numeric values, with or without specific dimension, to floats.
-#. Keep other strings
-#. ###############################################################
-#. How to output various structures.
-#. # maybe <hr> ?
-#. Verbatim text is always finished with \n.  FIXME: For HTML,
-#. this newline should be removed.
-#. Verbatim text is always finished with \n.  FIXME: For HTML,
-#. this newline should be removed.
-#. # Ugh we need to differentiate on origin:
-#. # lilypond-block origin wants an extra <p>, but
-#. # inline music doesn't.
-#. # possibly other center options?
-#. verbatim text is always finished with \n
-#. verbatim text is always finished with \n
-#. verbatim text is always finished with \n
-#. verbatim text is always finished with \n
-#. do some tweaking: @ is needed in some ps stuff.
-#.
-#. ugh, the <p> below breaks inline images...
-#. clumsy workaround for python 2.2 pre bug.
-#. ###############################################################
-#. Recognize special sequences in the input
-#. Warning: This uses extended regular expressions.  Tread with care.
-#.
-#. legenda
-#.
-#. (?P<name>regex) -- assign result of REGEX to NAME
-#. *? -- match non-greedily.
-#. (?m) -- multiline regex: make ^ and $ match at each line
-#. (?s) -- make the dot match all characters including newline
-#. why do we have distinction between @mbinclude and @include?
-#. # we'd like to catch and reraise a more
-#. # detailed error, but alas, the exceptions
-#. # changed across the 1.5/2.1 boundary.
-#. ughUGH not original options
-#. First we want to scan the \documentclass line
-#. it should be the first non-comment line.
-#. The only thing we really need to know about the \documentclass line
-#. is if there are one or two columns to begin with.
-#. Then we add everything before \begin{document} to
-#. paperguru.m_document_preamble so that we can later write this header
-#. to a temporary file in find_latex_dims() to find textwidth.
-#. this is not bulletproof..., it checks the first 10 chunks
-#. newchunks.extend (func (m))
-#. python 1.5 compatible:
-#. we have to check for verbatim before doing include,
-#. because we don't want to include files that are mentioned
-#. inside a verbatim environment
-#. ugh fix input
-#. # Hmm, we should hash only lilypond source, and skip the
-#. # %options are ...
-#. # comment line
-#. # todo: include path, but strip
-#. # first part of the path.
-#. format == 'html'
-#. ugh rename
-#. Count sections/chapters.
-#. # TODO: do something like
-#. # this for texinfo/latex as well ?
-#. ugh
-#. fixme: be sys-independent.
-#.
-#. Ugh, fixing up dependencies for .tex generation
-#.
-#. Ugh.  (La)TeX writes progress and error messages on stdout
-#. Redirect to stderr
-#. # There used to be code to write .tex dependencies, but
-#. # that is silly: lilypond-book has its own dependency scheme
-#. # to ensure that all lily-XXX.tex files are there
-#. # TODO: put file name in front of texidoc.
-#. #
-#. # what's this? Docme --hwn
-#. #
-#. #docme: why global?
-#. Do It.
-#. should chmod -w
-#: lilypond-book.py:1557 lilypond.py:673 midi2ly.py:1018
-#, python-format
-msgid "getopt says: `%s'"
-msgstr ""
-
-#. HACK
-#. status = os.system ('lilypond -w')
-#: lilypond-book.py:1630 lilypond.py:777
-msgid "no files specified on command line"
-msgstr ""
-
-#.
-#. Petr, ik zou willen dat ik iets zinvoller deed,
-#. maar wat ik kan ik doen, het verandert toch niets?
-#. --hwn 20/aug/99
-#. !@PYTHON@
-#.
-#. lilypond.py -- Run LilyPond, add titles to bare score, generate printable
-#. document
-#. Invokes: lilypond, latex (or pdflatex), dvips, ps2pdf, gs
-#.
-#. source file of the GNU LilyPond music typesetter
-#.
-#. (c)  1998--2003  Han-Wen Nienhuys <hanwen@cs.uu.nl>
-#. Jan Nieuwenhuizen <janneke@gnu.org>
-#. This is the third incarnation of lilypond.
-#.
-#. Earlier incarnations of lilypond were written by
-#. Jeffrey B. Reed<daboys@austin.rr.com> (Python version)
-#. Jan Arne Fagertun <Jan.A.Fagertun@@energy.sintef.no> (Bourne shell script)
-#.
-#. Note: gettext work best if we use ' for docstrings and "
-#. for gettextable strings.
-#. --> DO NOT USE ''' for docstrings.
-#. ###############################################################
-#. Users of python modules should include this snippet
-#. and customize variables below.
-#. We'll suffer this path init stuff as long as we don't install our
-#. python packages in <prefix>/lib/pythonx.y (and don't kludge around
-#. it as we do with teTeX on Red Hat Linux: set some environment var
-#. (PYTHONPATH) in profile)
-#. If set, LILYPONDPREFIX must take prevalence
-#. if datadir is not set, we're doing a build and LILYPONDPREFIX
-#. Customize these
-#. if __name__ == '__main__':
-#. lilylib globals
-#. # FIXME
-#. # do -P or -p by default?
-#. #help_summary = _ ("Run LilyPond using LaTeX for titling")
-#: lilypond.py:121
-msgid "Run LilyPond, add titles, generate printable document."
-msgstr ""
-
-#: lilypond.py:127 main.cc:115
-msgid "write Makefile dependencies for every input file"
-msgstr "Á´¤Æ¤ÎÆþÎÏ¥Õ¥¡¥¤¥ë¤Î Makefile °Í¸´Ø·¸¤ò½ñ¤­¹þ¤à"
-
-#: lilypond.py:129
-msgid "print even more output"
-msgstr ""
-
-#: lilypond.py:130
-#, fuzzy
-msgid "add DIR to LilyPond's search path"
-msgstr "DIR ¤ò¸¡º÷¥Ñ¥¹¤ËÄɲÃ"
-
-#: lilypond.py:132
-#, python-format
-msgid "keep all output, output to directory %s.dir"
-msgstr ""
-
-#: lilypond.py:133
-msgid "don't run LilyPond"
-msgstr ""
-
-#: lilypond.py:134 main.cc:116
-msgid "produce MIDI output only"
-msgstr "MIDI ½ÐÎϤÎÀ¸À®¤Î¤ß"
-
-#: lilypond.py:135 midi2ly.py:102
-#, fuzzy
-msgid "write output to FILE"
-msgstr "BASENAME[-x].³ÈÄ¥»Ò ¤Ø½ÐÎϤò½ñ¤­¹þ¤à"
-
-#: lilypond.py:136
-msgid "find pfa fonts used in FILE"
-msgstr ""
-
-#: lilypond.py:139
-#, fuzzy
-msgid "generate PostScript output"
-msgstr "À©¸Â¤ò´ËÏÂ"
-
-#: lilypond.py:140
-msgid "generate PNG page images"
-msgstr ""
-
-#: lilypond.py:141
-#, fuzzy
-msgid "generate PS.GZ"
-msgstr "À©¸Â¤ò´ËÏÂ"
-
-#: lilypond.py:142
-#, fuzzy
-msgid "generate PDF output"
-msgstr "À©¸Â¤ò´ËÏÂ"
-
-#: lilypond.py:143
-msgid "use pdflatex to generate a PDF output"
-msgstr ""
-
-#. FIXME: preview, picture; to indicate creation of a PNG?
-#: lilypond.py:145
-msgid "make a picture of the first system"
-msgstr ""
-
-#: lilypond.py:146
-msgid "make HTML file with links to all output"
-msgstr ""
-
-#: lilypond.py:147
-msgid "KEY=VAL"
-msgstr ""
-
-#: lilypond.py:147
-msgid "change global setting KEY to VAL"
-msgstr ""
-
-#: lilypond.py:149 midi2ly.py:106 mup2ly.py:79 main.cc:125
-msgid "print version number"
-msgstr "¥Ð¡¼¥¸¥ç¥óÈÖ¹æ¤òɽ¼¨"
-
-#. other globals
-#. Pdftex support
-#. # yuk.
-#. lilypond_binary = 'valgrind --suppressions=%(home)s/usr/src/guile-1.6.supp --num-callers=10 %(home)s/usr/src/lilypond/lily/out/lilypond '% { 'home' : '/home/hanwen' }
-#. only use installed binary  when we're installed too.
-#. init to empty; values here take precedence over values in the file
-#. # TODO: change name.
-#. for geometry v3
-#. Output formats that lilypond should create
-#. what a name.
-#. ly.warning (_ ("invalid value: %s") % `val`)
-#. ly.warning (_ ("invalid value: %s") % `val`)
-#: lilypond.py:232
-#, fuzzy, python-format
-msgid "no such setting: `%s'"
-msgstr "¤½¤ÎÍͤʳڴï¤Ï¤¢¤ê¤Þ¤»¤ó: `%s'"
-
-#. 2 == user interrupt.
-#: lilypond.py:274
-#, python-format
-msgid "LilyPond crashed (signal %d)."
-msgstr ""
-
-#: lilypond.py:275
-msgid "Please submit a bug report to bug-lilypond@gnu.org"
-msgstr ""
-
-#: lilypond.py:281
-#, python-format
-msgid "LilyPond failed on input file %s (exit status %d)"
-msgstr ""
-
-#: lilypond.py:284
-#, python-format
-msgid "LilyPond failed on an input file (exit status %d)"
-msgstr ""
-
-#: lilypond.py:285
-#, fuzzy
-msgid "Continuing..."
-msgstr "Í×µá¤ò¼Î¤Æ¤Þ¤¹: `%s'"
-
-#. urg
-#: lilypond.py:296
-#, fuzzy, python-format
-msgid "Analyzing %s..."
-msgstr "Í×µá¤ò¼Î¤Æ¤Þ¤¹: `%s'"
-
-#. search only the first 10k
-#: lilypond.py:354
-#, fuzzy, python-format
-msgid "no LilyPond output found for `%s'"
-msgstr "Lily ¤Ï %s ¤Ë½ÐÎϤ·¤Þ¤¹..."
-
-#. The final \n seems important here. It ensures that the footers and taglines end up on the right page.
-#. TODO: should set textheight (enlarge) depending on papersize.
-#: lilypond.py:397
-#, fuzzy, python-format
-msgid "invalid value: `%s'"
-msgstr "̵¸ú¤Êʸ»ú: `%c'"
-
-#. set sane geometry width (a4-width) for linewidth = -1.
-#. who the hell is 597 ?
-#. Ugh.  (La)TeX writes progress and error messages on stdout
-#. Redirect to stderr
-#: lilypond.py:511
-msgid "LaTeX failed on the output file."
-msgstr ""
-
-#. make a preview by rendering only the 1st line
-#. of each score
-#: lilypond.py:568
-msgid ""
-"Trying create PDF, but no PFA fonts found.\n"
-"Using bitmap fonts instead. This will look bad."
-msgstr ""
-
-#. ugh. Different targets?
-#. Added as functionality to lilypond, because lilypond may well need to do this
-#. in future too.
-#. no ps header?
-#: lilypond.py:615
-#, fuzzy, python-format
-msgid "not a PostScript file: `%s'"
-msgstr "¥Õ¥¡¥¤¥ë¤ò³«¤±¤Þ¤»¤ó: `%s'"
-
-#. todo
-#: lilypond.py:660
-#, fuzzy, python-format
-msgid "Writing HTML menu `%s'"
-msgstr "¹Ô ..."
-
-#. signal programming error
-#. Don't convert input files to abspath, rather prepend '.' to include
-#. path.
-#. As a neat trick, add directory part of first input file
-#. to include path.  That way you can do without the clumsy -I in:
-#. lilypond -I foe/bar/baz foo/bar/baz/baz.ly
-#: lilypond.py:769
-msgid "pseudo filter"
-msgstr ""
-
-#: lilypond.py:772
-msgid "pseudo filter only for single input file"
-msgstr ""
-
-#. Ugh, maybe make a setup () function
-#. hmmm. Wish I'd 've written comments when I wrote this.
-#. now it looks complicated.
-#: lilypond.py:806
-#, fuzzy, python-format
-msgid "filename should not contain spaces: `%s'"
-msgstr "´û¤Ë´Þ¤ó¤Ç¤¤¤Þ¤¹: `%s'"
-
-#. to be sure, add tmpdir *in front* of inclusion path.
-#. os.environ['TEXINPUTS'] =  tmpdir + ':' + os.environ['TEXINPUTS']
-#. We catch all exceptions, because we need to do stuff at exit:
-#. * copy any successfully generated stuff from tempdir and
-#. notify user of that
-#. * cleanout tempdir
-#. ## ARGH. This also catches python programming errors.
-#. ## this should only catch lilypond nonzero exit  status
-#. ## --hwn
-#. TODO: friendly message about LilyPond setup/failing?
-#.
-#: lilypond.py:845
-msgid "Running LilyPond failed. Rerun with --verbose for a trace."
-msgstr ""
-
-#. Our LilyPond pseudo filter always outputs to 'lelie'
-#. have subsequent stages and use 'lelie' output.
-#. unless: add --tex, or --latex?
-#. TODO: friendly message about TeX/LaTeX setup,
-#. trying to run tex/latex by hand
-#: lilypond.py:886
-msgid "Failed to make PS file. Rerun with --verbose for a trace."
-msgstr ""
-
-#. unless: add --tex, or --latex?
-#. TODO: friendly message about TeX/LaTeX setup,
-#. trying to run tex/latex by hand
-#: lilypond.py:916
-msgid "Running LaTeX falied. Rerun with --verbose for a trace."
-msgstr ""
-
-#. add DEP to targets?
-#: lilypond.py:926 input-file-results.cc:68
-#, fuzzy, c-format, python-format
-msgid "dependencies output to `%s'..."
-msgstr "%s ¤Ø paper ½ÐÎÏ..."
-
-#: lilypond.py:937
-#, fuzzy, python-format
-msgid "%s output to <stdout>..."
-msgstr "%s ¤Ø¤Î MIDI ½ÐÎÏ"
-
-#: lilypond.py:942 lilypond.py:968 includable-lexer.cc:57
-#: input-file-results.cc:191 input-file-results.cc:197 lily-guile.cc:86
-#, fuzzy, c-format, python-format
-msgid "can't find file: `%s'"
-msgstr "¥Õ¥¡¥¤¥ë¤¬¸«¤Ä¤«¤ê¤Þ¤»¤ó: `%s'"
-
-#. Hmm, if this were a function, we could call it the except: clauses
-#: lilypond.py:965
-#, fuzzy, python-format
-msgid "%s output to %s..."
-msgstr "%s ¤Ø¤Î MIDI ½ÐÎÏ"
-
-#. !@PYTHON@
-#.
-#. midi2ly.py -- LilyPond midi import script
-#.
-#. source file of the GNU LilyPond music typesetter
-#.
-#. (c)  1998--2003  Han-Wen Nienhuys <hanwen@cs.uu.nl>
-#. Jan Nieuwenhuizen <janneke@gnu.org>
-#. ###############################################################
-#. Users of python modules should include this snippet.
-#.
-#. This soon to be removed for: import lilypond.lilylib as ly
-#. ###############################################################
-#. ###############################################################
-#. ############### CONSTANTS
-#. ###############################################################
-#. temp_dir = os.path.join (original_dir,  '%s.dir' % program_name)
-#. original_dir = os.getcwd ()
-#. keep_temp_dir_p = 0
-#: midi2ly.py:94
-msgid "Convert MIDI to LilyPond source."
-msgstr ""
-
-#: midi2ly.py:97
-msgid "print absolute pitches"
-msgstr ""
-
-#: midi2ly.py:98 midi2ly.py:103
-msgid "DUR"
-msgstr "DUR"
-
-#: midi2ly.py:98
-msgid "quantise note durations on DUR"
-msgstr ""
-
-#: midi2ly.py:99
-msgid "print explicit durations"
-msgstr ""
-
-#: midi2ly.py:101
-#, fuzzy
-msgid "ALT[:MINOR]"
-msgstr "ACC[:MINOR]"
-
-#: midi2ly.py:101
-#, fuzzy
-msgid "set key: ALT=+sharps|-flats; MINOR=1"
-msgstr "Ä´¤òÀßÄê: ACC +¥·¥ã¡¼¥×/-¥Õ¥é¥Ã¥È :1 ûĴ"
-
-#: midi2ly.py:103
-msgid "quantise note starts on DUR"
-msgstr ""
-
-#: midi2ly.py:104
-msgid "DUR*NUM/DEN"
-msgstr ""
-
-#: midi2ly.py:104
-msgid "allow tuplet durations DUR*NUM/DEN"
-msgstr ""
-
-#: midi2ly.py:108
-msgid "treat every text as a lyric"
-msgstr ""
-
-#: midi2ly.py:136 mup2ly.py:130
-msgid " 2001--2003"
-msgstr ""
-
-#: midi2ly.py:141 mup2ly.py:135
-msgid ""
-"\n"
-"Distributed under terms of the GNU General Public License. It comes with\n"
-"NO WARRANTY."
-msgstr ""
-
-#: midi2ly.py:166 mup2ly.py:162
-#, fuzzy
-msgid "Exiting ... "
-msgstr "¹Ô ..."
-
-#: midi2ly.py:264 mup2ly.py:261
-#, python-format
-msgid "command exited with value %d"
-msgstr ""
-
-#. ###############################################################
-#. END Library
-#. ###############################################################
-#. hmm
-#. major scale: do-do
-#. minor scale: la-la  (= + 5) '''
-#. By tradition, all scales now consist of a sequence
-#. of 7 notes each with a distinct name, from amongst
-#. a b c d e f g.  But, minor scales have a wide
-#. second interval at the top - the 'leading note' is
-#. sharped. (Why? it just works that way! Anything
-#. else doesn't sound as good and isn't as flexible at
-#. saying things. In medieval times, scales only had 6
-#. notes to avoid this problem - the hexachords.)
-#. So, the d minor scale is d e f g a b-flat c-sharp d
-#. - using d-flat for the leading note would skip the
-#. name c and duplicate the name d.  Why isn't c-sharp
-#. put in the key signature? Tradition. (It's also
-#. supposedly based on the Pythagorean theory of the
-#. cycle of fifths, but that really only applies to
-#. major scales...)  Anyway, g minor is g a b-flat c d
-#. e-flat f-sharp g, and all the other flat minor keys
-#. end up with a natural leading note. And there you
-#. have it.
-#. John Sankey <bf250@freenet.carleton.ca>
-#.
-#. Let's also do a-minor: a b c d e f gis a
-#.
-#. --jcn
-#. as -> gis
-#. des -> cis
-#. ges -> fis
-#. g -> fisis
-#. d -> cisis
-#. a -> gisis
-#. b -> ces
-#. e -> fes
-#. f -> eis
-#. c -> bis
-#. # FIXME: compile fix --jcn
-#. TODO: move space
-#. fis cis gis dis ais eis bis
-#. bes es as des ges ces fes
-#. urg, we should be sure that we're in a lyrics staff
-#. all include ALL_NOTES_OFF
-#. ugh, must set key while parsing
-#. because Note init uses key
-#. Better do Note.calc () at dump time?
-#. last_lyric.clocks = t - last_time
-#. hmm
-#. urg, this will barf at meter changes
-#. urg LilyPond doesn't start at c4, but
-#. remembers from previous tracks!
-#. reference_note = Note (clocks_per_4, 4*12, 0)
-#. must be in \notes mode for parsing \skip
-#: midi2ly.py:1002
-#, fuzzy, python-format
-msgid "%s output to `%s'..."
-msgstr "%s ¤Ø¤Î MIDI ½ÐÎÏ"
-
-#: midi2ly.py:1033
-msgid "Example:"
-msgstr ""
-
-#: midi2ly.py:1083
-msgid "no files specified on command line."
-msgstr ""
-
-#. !@PYTHON@
-#. mup2ly.py -- mup input converter
-#.
-#. source file of the GNU LilyPond music typesetter
-#.
-#. (c) 2001
-#. if set, LILYPONDPREFIX must take prevalence
-#. if datadir is not set, we're doing a build and LILYPONDPREFIX
-#: mup2ly.py:70
-msgid "Convert mup to LilyPond source."
-msgstr ""
-
-#: mup2ly.py:73
-msgid "debug"
-msgstr ""
-
-#: mup2ly.py:74
-msgid "define macro NAME [optional expansion EXP]"
-msgstr ""
-
-#: mup2ly.py:77
-msgid "only pre-process"
-msgstr ""
-
-#. Duh.  Python style portable: cp *.EXT OUTDIR
-#. system ('cp *.%s %s' % (ext, outdir), 1)
-#. Python < 1.5.2 compatibility
-#.
-#. On most platforms, this is equivalent to
-#. `normpath(join(os.getcwd()), PATH)'.  *Added in Python version 1.5.2*
-#. if set, LILYPONDPREFIX must take prevalence
-#. if datadir is not set, we're doing a build and LILYPONDPREFIX
-#. ###############################################################
-#. END Library
-#.
-#. PMX cut and paste
-#.
-#. if not self.entries:
-#. #return '\n'
-#. #ugh ugh
-#. return '\n%s = {}\n\n' % self.idstring ()
-#. ugh
-#. def set_clef (self, letter):
-#. clstr = clef_table[letter]
-#. self.voices[0].add_nonchord (Clef (clstr))
-#. urg
-#. maybe use import copy?
-#. for i in self.pitches:
-#. ch.pitches.append (i)
-#. for i in self.scripts:
-#. ch.scripts.append (i)
-#. http://www.arkkra.com/doc/uguide/contexts.html
-#. #self.current_staffs = []
-#. duh
-#. FIXME: 1?
-#. FIXME: does key play any role in this?
-#. ch = self.current_voices[0].last_chord ()
-#. ch.basic_duration = self.current_voices[0].last_chord ().basic_duration
-#. ugh
-#. ch = self.current_voices[0].last_chord ()
-#. `;' is not a separator, chords end with ';'
-#. mup resets default duration and pitch each bar
-#. ugh: these (and lots more) should also be parsed in
-#. context staff.  we should have a class Staff_properties
-#. and parse/set all those.
-#. shortcut: set to official mup maximum (duh)
-#. self.set_staffs (40)
-#: mup2ly.py:1076
-#, fuzzy, python-format
-msgid "no such context: %s"
-msgstr "¤½¤ÎÍͤʳڴï¤Ï¤¢¤ê¤Þ¤»¤ó: `%s'"
-
-#. hmm
-#. dig this: mup allows ifdefs inside macro bodies
-#. don't do nested multi-line defines
-#. duh: mup is strictly line-based, except for `define',
-#. which is `@' terminated and may span several lines
-#. don't define new macros in unactive areas
-#. To support nested multi-line define's
-#. process_function and macro_name, macro_body
-#. should become lists (stacks)
-#. The mup manual is undetermined on this
-#. and I haven't seen examples doing it.
-#.
-#. don't do nested multi-line define's
-#. writes to stdout for help2man
-#. don't call
-#. identify ()
-#. sys.stdout.flush ()
-#. handy emacs testing
-#. if not files:
-#. files = ['template.mup']
-#: mup2ly.py:1300
-#, fuzzy, python-format
-msgid "Processing `%s'..."
-msgstr "½èÍýÃæ..."
-
-#: mup2ly.py:1319
-#, fuzzy, python-format
-msgid "Writing `%s'..."
-msgstr "¹Ô ..."
-
-#: getopt-long.cc:146
-#, fuzzy, c-format
-msgid "option `%s' requires an argument"
-msgstr "¥ª¥×¥·¥ç¥ó `%s' ¤Ë¤Ï°ú¿ô¤¬É¬ÍפǤ¹"
-
-#: getopt-long.cc:150
-#, fuzzy, c-format
-msgid "option `%s' doesn't allow an argument"
-msgstr "¥ª¥×¥·¥ç¥ó `%s' ¤Ï°ú¿ô¤òµö²Ä¤·¤Þ¤»¤ó"
-
-#: getopt-long.cc:154
-#, c-format
-msgid "unrecognized option: `%s'"
-msgstr "ǧ¼±¤Ç¤­¤Ê¤¤¥ª¥×¥·¥ç¥ó: `%s'"
-
-#: getopt-long.cc:161
-#, c-format
-msgid "invalid argument `%s' to option `%s'"
-msgstr "¥ª¥×¥·¥ç¥ó `%2$s' ¤ËÂФ¹¤ë̵¸ú¤Ê°ú¿ô `%1$s'"
-
-#: warn.cc:25
-#, fuzzy, c-format
-msgid "warning: %s\n"
-msgstr "·Ù¹ð: "
-
-#: warn.cc:31
-#, fuzzy, c-format
-msgid "error: %s\n"
-msgstr "¥¨¥é¡¼: "
-
-#: warn.cc:44
-#, fuzzy, c-format
-msgid "programming error: %s (Continuing; cross thumbs)\n"
-msgstr " (³¤±¤Þ¤¹ -- cross thumbs)"
-
-#: accidental.cc:202 key-signature-interface.cc:137
-#, c-format
-msgid "accidental `%s' not found"
-msgstr ""
-
-#: accidental-engraver.cc:171 new-accidental-engraver.cc:238
-#, c-format
-msgid "Accidental typesetting list must begin with context-name: %s"
-msgstr ""
-
-#: accidental-engraver.cc:196 new-accidental-engraver.cc:263
-#, fuzzy, c-format
-msgid "unknown accidental typesetting: %s. Ignored"
-msgstr "̤ÃΤΥ¨¥¹¥±¡¼¥×ʸ»úÎó: `\\%s'"
-
-#: accidental-engraver.cc:212 new-accidental-engraver.cc:279
-#, c-format
-msgid "Symbol is not a parent context: %s. Ignored"
-msgstr ""
-
-#: accidental-engraver.cc:215 new-accidental-engraver.cc:282
-#, c-format
-msgid "Accidental typesetting must be pair or context-name: %s"
-msgstr ""
-
-#: afm.cc:66
-#, fuzzy, c-format
-msgid "can't find character number: %d"
-msgstr "ʸ»úÈֹ椬¸«¤Ä¤«¤ê¤Þ¤»¤ó: %d"
-
-#: afm.cc:81
-#, fuzzy, c-format
-msgid "can't find character called: `%s'"
-msgstr "¸Æ¤Ó½Ð¤µ¤ì¤¿Ê¸»ú¤¬¸«¤Ä¤«¤ê¤Þ¤»¤ó: `%s'"
-
-#: afm.cc:142
-#, c-format
-msgid "Error parsing AFM file: `%s'"
-msgstr ""
-
-#: all-font-metrics.cc:95
-#, c-format
-msgid "checksum mismatch for font file: `%s'"
-msgstr ""
-
-#: all-font-metrics.cc:97
-#, c-format
-msgid "does not match: `%s'"
-msgstr ""
-
-#: all-font-metrics.cc:102
-msgid ""
-" Rebuild all .afm files, and remove all .pk and .tfm files.  Rerun with -V "
-"to show font paths."
-msgstr ""
-
-#: all-font-metrics.cc:103
-msgid ""
-"A script for removing font-files is delivered with the source-code,\n"
-"in buildscripts/clean-fonts.sh"
-msgstr ""
-
-#: all-font-metrics.cc:169
-#, fuzzy, c-format
-msgid "can't find font: `%s'"
-msgstr "¥Õ¥©¥ó¥È¤¬¸«¤Ä¤«¤ê¤Þ¤»¤ó: `%s'"
-
-#: all-font-metrics.cc:170
-msgid "Loading default font"
-msgstr "¥Ç¥Õ¥©¥ë¥È¥Õ¥©¥ó¥È¤ò¥í¡¼¥É¤·¤Þ¤¹"
-
-#: all-font-metrics.cc:185
-#, fuzzy, c-format
-msgid "can't find default font: `%s'"
-msgstr "¥Ç¥Õ¥©¥ë¥È¥Õ¥©¥ó¥È¤¬¸«¤Ä¤«¤ê¤Þ¤»¤ó: `%s'"
-
-#: all-font-metrics.cc:186 includable-lexer.cc:59 input-file-results.cc:192
-#, c-format
-msgid "(search path: `%s')"
-msgstr "(¸¡º÷¥Ñ¥¹: `%s')"
-
-#: all-font-metrics.cc:187
-msgid "Giving up"
-msgstr "Äü¤á¤Þ¤·¤¿"
-
-#: auto-change-iterator.cc:43 change-iterator.cc:60
-#: part-combine-music-iterator.cc:120
-msgid "Can't switch translators, I'm there already"
-msgstr "¥È¥é¥ó¥¹¥ì¡¼¥¿¤òÀÚ¤êÂØ¤¨¤é¤ì¤Þ¤»¤ó¡£´û¤Ë¤½¤¦¤Ê¤Ã¤Æ¤¤¤Þ¤¹"
-
-#: bar-check-iterator.cc:51
-#, c-format
-msgid "barcheck failed at: %s"
-msgstr "¾®Àá¥Á¥§¥Ã¥¯¤¬¼ºÇÔ: %s"
-
-#: beam.cc:146
-#, fuzzy
-msgid "beam has less than two visible stems"
-msgstr "³Ã¤¬Æó¤Ä̤Ëþ¤ÎÉäÈø¤È¤È¤â¤Ë»È¤ï¤ì¤Þ¤·¤¿"
-
-#: beam.cc:151
-#, fuzzy
-msgid "Beam has less than two stems. Removing beam."
-msgstr "³Ã¤¬Æó¤Ä̤Ëþ¤ÎÉäÈø¤È¤È¤â¤Ë»È¤ï¤ì¤Þ¤·¤¿"
-
-#: beam.cc:976
-msgid ""
-"Not sure that we can find a nice beam slope (no viable initial configuration "
-"found)."
-msgstr ""
-
-#: beam-engraver.cc:176
-#, fuzzy
-msgid "already have a beam"
-msgstr "´û¤Ë³Ã¤¬¤¢¤ê¤Þ¤¹"
-
-#: beam-engraver.cc:259
-#, fuzzy
-msgid "unterminated beam"
-msgstr "½ªÃ¼¤Î¤Ê¤¤¥Ï¥¤¥Õ¥ó"
-
-#: beam-engraver.cc:292 chord-tremolo-engraver.cc:197
-#, fuzzy
-msgid "stem must have Rhythmic structure"
-msgstr "ÉäÈø¤Ï¥ê¥º¥à¹½Â¤¤ò»ý¤¿¤Í¤Ð¤Ê¤ê¤Þ¤»¤ó"
-
-#: beam-engraver.cc:306
-#, fuzzy
-msgid "stem doesn't fit in beam"
-msgstr "ÉäÈø¤¬³Ã¤ÎÃæ¤Ë¤ª¤µ¤Þ¤ê¤Þ¤»¤ó"
-
-#: beam-engraver.cc:307
-#, fuzzy
-msgid "beam was started here"
-msgstr "³Ã¤Ï¤³¤³¤«¤é³«»Ï¤µ¤ì¤Þ¤·¤¿"
-
-#: break-align-interface.cc:173
-#, fuzzy, c-format
-msgid "No spacing entry from %s to `%s'"
-msgstr "Ƚ¤é¤Ê¤¤¥È¥é¥ó¥¹¥ì¡¼¥¿: `%s'"
-
-#: change-iterator.cc:22
-#, fuzzy, c-format
-msgid "can't change `%s' to `%s'"
-msgstr "`%s' ¤«¤é `%s' ¤ËÊѹ¹¤Ç¤­¤Þ¤»¤ó"
-
-#.
-#. We could change the current translator's id, but that would make
-#. errors hard to catch
-#.
-#. last->translator_id_string_  = get_change ()->change_to_id_string_;
-#.
-#: change-iterator.cc:79
-msgid "I'm one myself"
-msgstr "¥È¥é¥ó¥¹¥ì¡¼¥¿¤½¤Î¤â¤Î¤Ç¤¹"
-
-#: change-iterator.cc:82
-msgid "none of these in my family"
-msgstr "¥Õ¥¡¥ß¥ê¤ÎÃæ¤Ë¤¢¤ê¤Þ¤»¤ó"
-
-#: chord-tremolo-engraver.cc:98
-#, c-format
-msgid "Chord tremolo with %d elements. Must have two elements."
-msgstr ""
-
-#: chord-tremolo-engraver.cc:157
-#, fuzzy
-msgid "unterminated chord tremolo"
-msgstr "½ªÃ¼¤Î¤Ê¤¤¥Ï¥¤¥Õ¥ó"
-
-#: chord-tremolo-iterator.cc:69
-#, fuzzy
-msgid "no one to print a tremolos"
-msgstr "È¿Éüµ­¹æ¤òɽ¼¨¤¹¤ë¤â¤Î¤¬¤¢¤ê¤Þ¤»¤ó"
-
-#: clef.cc:64
-#, c-format
-msgid "clef `%s' not found"
-msgstr ""
-
-#: cluster.cc:131
-#, fuzzy, c-format
-msgid "unknown cluster style `%s'"
-msgstr "ÉÔÌÀ¤Ê²»Éôµ­¹æ(Clef)"
-
-#: coherent-ligature-engraver.cc:84
-#, c-format
-msgid "gotcha: ptr=%ul"
-msgstr ""
-
-#: coherent-ligature-engraver.cc:96
-#, c-format
-msgid "distance=%f"
-msgstr ""
-
-#: coherent-ligature-engraver.cc:139
-#, c-format
-msgid "Coherent_ligature_engraver: setting `spacing-increment = 0.01': ptr=%ul"
-msgstr ""
-
-#: custos.cc:92
-#, c-format
-msgid "custos `%s' not found"
-msgstr ""
-
-#: dimensions.cc:13
-msgid "NaN"
-msgstr "NaN"
-
-#: dynamic-engraver.cc:204 span-dynamic-performer.cc:82
-#, fuzzy
-msgid "can't find start of (de)crescendo"
-msgstr "ËöÈø¤Ø¤Î(¥Ç)¥¯¥ì¥Ã¥·¥§¥ó¥É¤¬¸«¤Ä¤«¤ê¤Þ¤»¤ó"
-
-#: dynamic-engraver.cc:216
-#, fuzzy
-msgid "already have a crescendo"
-msgstr "´û¤Ë³Ã¤¬¤¢¤ê¤Þ¤¹"
-
-#: dynamic-engraver.cc:217
-#, fuzzy
-msgid "already have a decrescendo"
-msgstr "´û¤Ë³Ã¤¬¤¢¤ê¤Þ¤¹"
-
-#: dynamic-engraver.cc:220
-#, fuzzy
-msgid "Cresc started here"
-msgstr "³Ã¤Ï¤³¤³¤«¤é³«»Ï¤µ¤ì¤Þ¤·¤¿"
-
-#: dynamic-engraver.cc:323
-#, fuzzy
-msgid "unterminated (de)crescendo"
-msgstr "½ªÎ»¤·¤Æ¤¤¤Ê¤¤¥¯¥ì¥Ã¥·¥§¥ó¥É"
-
-#: event.cc:49
-#, fuzzy, c-format
-msgid "Transposition by %s makes alteration larger than two"
-msgstr "%s ¤ÎÊÑÄ´¤Ë¤è¤Ã¤Æ¡¢Æó¤Ä¤òͤ¨¤ëÇÉÀ¸²»¤¬ºî¤é¤ì¤Þ¤·¤¿"
-
-#: event-chord-iterator.cc:76 output-property-music-iterator.cc:27
-#, fuzzy, c-format
-msgid "Junking event: `%s'"
-msgstr "Í×µá¤ò¼Î¤Æ¤Þ¤¹: `%s'"
-
-#: extender-engraver.cc:94
-msgid "unterminated extender"
-msgstr "½ªÃ¼¤Î¤Ê¤¤¥¨¥¯¥¹¥Æ¥ó¥À"
-
-#: extender-engraver.cc:106
-#, fuzzy
-msgid "Nothing to connect extender to on the left.  Ignoring extender event."
-msgstr "¥¨¥¯¥¹¥Æ¥ó¥À¤¬º¸Â¦¤Ë¤Ä¤Ê¤¬¤ê¤Þ¤»¤ó¡£¥¨¥¯¥¹¥Æ¥ó¥ÀÍ×µá¤ò̵»ë¤·¤Þ¤¹¡£"
-
-#: folded-repeat-iterator.cc:88
-msgid "no one to print a repeat brace"
-msgstr "È¿Éüµ­¹æ¤òɽ¼¨¤¹¤ë¤â¤Î¤¬¤¢¤ê¤Þ¤»¤ó"
-
-#: font-interface.cc:239
-msgid "couldn't find any font satisfying "
-msgstr ""
-
-#: glissando-engraver.cc:100
-#, fuzzy
-msgid "Unterminated glissando."
-msgstr "½ªÃ¼¤µ¤ì¤Æ¤¤¤Ê¤¤¥¹¥é¡¼"
-
-#: gourlay-breaking.cc:188
-#, c-format
-msgid "Optimal demerits: %f"
-msgstr ""
-
-#: gourlay-breaking.cc:193
-msgid "No feasible line breaking found"
-msgstr ""
-
-#: gregorian-ligature-engraver.cc:59
-#, c-format
-msgid "\\%s ignored"
-msgstr ""
-
-#: gregorian-ligature-engraver.cc:64
-#, c-format
-msgid "implied \\%s added"
-msgstr ""
-
-#.
-#. Todo: do something sensible. The grob-pq-engraver is not water
-#. tight, and stuff like tupletSpannerDuration confuses it.
-#.
-#: grob-pq-engraver.cc:130
-#, c-format
-msgid ""
-"Skipped something?\n"
-"Grob %s ended before I expected it to end."
-msgstr ""
-
-#: hairpin.cc:98
-msgid "decrescendo too small"
-msgstr ""
-
-#: hairpin.cc:99
-#, fuzzy
-msgid "crescendo too small"
-msgstr "¥¯¥ì¥Ã¥·¥§¥ó¥É"
-
-#: horizontal-bracket-engraver.cc:64
-#, fuzzy
-msgid "Don't have that many brackets."
-msgstr "¤½¤ó¤Ê¤ËÂô»³¤Î¥ª¥¯¥¿¡¼¥Ö (%s) ¤ò»È¤ï¤Ê¤¤¤Ç¤¯¤À¤µ¤¤"
-
-#: horizontal-bracket-engraver.cc:73
-#, fuzzy
-msgid "Conflicting note group events."
-msgstr "Çï»Ò¤ÎÍ׵᤬¶¥¹ç¤·¤Þ¤¹"
-
-#: hyphen-engraver.cc:87
-msgid "unterminated hyphen"
-msgstr "½ªÃ¼¤Î¤Ê¤¤¥Ï¥¤¥Õ¥ó"
-
-#: hyphen-engraver.cc:99
-#, fuzzy
-msgid "Nothing to connect hyphen to on the left.  Ignoring hyphen event."
-msgstr "º¸Â¦¤Ë·Ò¤²¤ë¥Ï¥¤¥Õ¥ó¤¬¤¢¤ê¤Þ¤»¤ó¡£¥Ï¥¤¥Õ¥ó¤ÎÍ×µá¤ò̵»ë¤·¤Þ¤¹"
-
-#: input.cc:99
-#, fuzzy
-msgid "non fatal error: "
-msgstr "³¹Ô²Äǽ¤Ê¥¨¥é¡¼: "
-
-#: input.cc:107 source-file.cc:146 source-file.cc:239
-msgid "position unknown"
-msgstr "°ÌÃÖ¤¬È½¤ê¤Þ¤»¤ó"
-
-#: input-file-results.cc:72 source-file.cc:54 streams.cc:38
-#, fuzzy, c-format
-msgid "can't open file: `%s'"
-msgstr "¥Õ¥¡¥¤¥ë¤ò³«¤±¤Þ¤»¤ó: `%s'"
-
-#: input-file-results.cc:132
-msgid "Score contains errors; will not process it"
-msgstr "³ÚÉè¤Ë¥¨¥é¡¼¤¬´Þ¤Þ¤ì¤Æ¤¤¤Þ¤¹ -- ½èÍý¤·¤Þ¤»¤ó"
-
-#: input-file-results.cc:172
-#, fuzzy, c-format
-msgid "Now processing: `%s'"
-msgstr "̤ÃΤΥ¨¥¹¥±¡¼¥×ʸ»úÎó: `\\%s'"
-
-#: key-performer.cc:96
-msgid "FIXME: key change merge"
-msgstr "FIXME: ¥­¡¼Êѹ¹¤Î¥Þ¡¼¥¸"
-
-#: kpath.cc:76
-#, fuzzy, c-format
-msgid "Kpathsea couldn't find TFM file `%s'"
-msgstr "¥Õ¥¡¥¤¥ë¤¬¸«¤Ä¤«¤ê¤Þ¤»¤ó: `%s'"
-
-#: ligature-engraver.cc:159
-#, fuzzy
-msgid "can't find start of ligature"
-msgstr "ËöÈø¤Ø¤Î(¥Ç)¥¯¥ì¥Ã¥·¥§¥ó¥É¤¬¸«¤Ä¤«¤ê¤Þ¤»¤ó"
-
-#: ligature-engraver.cc:165
-msgid "no right bound"
-msgstr ""
-
-#: ligature-engraver.cc:191
-#, fuzzy
-msgid "already have a ligature"
-msgstr "´û¤Ë³Ã¤¬¤¢¤ê¤Þ¤¹"
-
-#: ligature-engraver.cc:207
-msgid "no left bound"
-msgstr ""
-
-#: ligature-engraver.cc:258
-#, fuzzy
-msgid "unterminated ligature"
-msgstr "½ªÃ¼¤µ¤ì¤Æ¤¤¤Ê¤¤¥¹¥é¡¼"
-
-#: ligature-engraver.cc:282
-msgid "ligature may not contain rest; ignoring rest"
-msgstr ""
-
-#: ligature-engraver.cc:283
-#, fuzzy
-msgid "ligature was started here"
-msgstr "³Ã¤Ï¤³¤³¤«¤é³«»Ï¤µ¤ì¤Þ¤·¤¿"
-
-#: lily-guile.cc:88
-#, c-format
-msgid "(load path: `%s')"
-msgstr "(ÆÉ¹þ¥Ñ¥¹: `%s')"
-
-#: lily-guile.cc:576
-#, c-format
-msgid "Can't find property type-check for `%s' (%s)."
-msgstr ""
-
-#: lily-guile.cc:579
-msgid "Perhaps you made a typing error?"
-msgstr ""
-
-#: lily-guile.cc:585
-msgid "Doing assignment anyway."
-msgstr ""
-
-#: lily-guile.cc:599
-#, c-format
-msgid "Type check for `%s' failed; value `%s' must be of type `%s'"
-msgstr ""
-
-#: lookup.cc:173
-msgid "round filled box horizontal extent smaller than blot; decreasing blot"
-msgstr ""
-
-#: lookup.cc:178
-msgid "round filled box vertical extent smaller than blot; decreasing blot"
-msgstr ""
-
-#: lyric-phrasing-engraver.cc:311
-msgid "lyrics found without any matching notehead"
-msgstr ""
-
-#: lyric-phrasing-engraver.cc:317
-msgid "Huh? Melismatic note found to have associated lyrics."
-msgstr ""
-
-#: main.cc:106
-msgid "EXPR"
-msgstr ""
-
-#: main.cc:107
-msgid "set options, use -e '(ly-option-usage)' for help"
-msgstr ""
-
-#: main.cc:110
-msgid "use output format EXT"
-msgstr ""
-
-#: main.cc:112
-#, fuzzy
-msgid "FIELD"
-msgstr "FILE"
-
-#: main.cc:112
-msgid "write header field to BASENAME.FIELD"
-msgstr ""
-
-#: main.cc:113
-msgid "add DIR to search path"
-msgstr "DIR ¤ò¸¡º÷¥Ñ¥¹¤ËÄɲÃ"
-
-#: main.cc:114
-msgid "use FILE as init file"
-msgstr "FILE ¤ò½é´ü²½¥Õ¥¡¥¤¥ë¤È¤·¤Æ»ÈÍÑ"
-
-#: main.cc:118
-msgid "prepend DIR to dependencies"
-msgstr ""
-
-#.
-#. should audit again.
-#.
-#: main.cc:123
-msgid "inhibit file output naming and exporting"
-msgstr "̾Á°ÉÕ¤±¤È¥¨¥¯¥¹¥Ý¡¼¥È¤Î½ÐÎÏ¥Õ¥¡¥¤¥ë¤òÍÞÀ©¤¹¤ë"
-
-#. No version number or newline here. It confuses help2man.
-#: main.cc:155
-#, fuzzy, c-format
-msgid "Usage: %s [OPTIONS]... FILE..."
-msgstr "»È¤¤Êý: %s [¥ª¥×¥·¥ç¥ó]... [¥Õ¥¡¥¤¥ë]..."
-
-#: main.cc:157
-msgid "Typeset music and or play MIDI from FILE."
-msgstr "¥Õ¥¡¥¤¥ë¤Î³Ú¶Ê¤òÁÈÈǤ·¤¿¤ê¡¢MIDI ±éÁÕ¤·¤¿¤ê¤¹¤ë."
-
-#: main.cc:160
-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"
-
-#: main.cc:182
-#, c-format
-msgid ""
-"This is free software.  It is covered by the GNU General Public License,\n"
-"and you are welcome to change it and/or distribute copies of it under\n"
-"certain conditions.  Invoke as `%s --warranty' for more information.\n"
-msgstr ""
-"This is free software.  It is covered by the GNU General Public License,\n"
-"and you are welcome to change it and/or distribute copies of it under\n"
-"certain conditions.  Invoke as `%s --warranty' for more information.\n"
-"\n"
-"-- »²¹ÍÌõ\n"
-"¤³¤ì¤Ï¥Õ¥ê¡¼¥½¥Õ¥È¥¦¥§¥¢¤Ç¤¹¡£GNU °ìÈ̸øÍ­»ÈÍѵöÂú½ñ¤Ë´ð¤Å¤­¡¢Æ±°ì¾ò·ï¤Ç\n"
-"¤³¤ì¤ò²þÊѤ·¤¿¤ê¡¢Ê£À½¤òÇÛÉÛ¤·¤¿¤ê¤¹¤ë»ö¤Ï´¿·Þ¤µ¤ì¤Þ¤¹¡£\n"
-"`--warranty' ¥ª¥×¥·¥ç¥óÉÕ¤­¤Çµ¯Æ°¤¹¤ë¤È¡¢¤è¤ê¾ÜºÙ¤Ê¾ðÊ󤬯À¤é¤ì¤Þ¤¹¡£\n"
-
-#: main.cc:198
-#, fuzzy
-msgid "GNU LilyPond -- The music typesetter"
-msgstr "GNU LilyPond -- The GNU Project music typesetter"
-
-#: main.cc:206
-#, fuzzy
-msgid ""
-"    This program is free software; you can redistribute it and/or\n"
-"modify it under the terms of the GNU General Public License version 2\n"
-"as published by the Free Software Foundation.\n"
-"\n"
-"    This program is distributed in the hope that it will be useful,\n"
-"but WITHOUT ANY WARRANTY; without even the implied warranty of\n"
-"MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU\n"
-"General Public License for more details.\n"
-"\n"
-"    You should have received a copy (refer to the file COPYING) of the\n"
-"GNU General Public License along with this program; if not, write to\n"
-"the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA "
-"02111-1307,\n"
-"USA.\n"
-msgstr ""
-"    This program is free software; you can redistribute it and/or\n"
-"modify it under the terms of the GNU General Public License version 2\n"
-"as published by the Free Software Foundation.\n"
-"\n"
-"    This program is distributed in the hope that it will be useful,\n"
-"but WITHOUT ANY WARRANTY; without even the implied warranty of\n"
-"MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU\n"
-"General Public License for more details.\n"
-"\n"
-"    You should have received a copy (refer to the file COPYING) of the\n"
-"GNU General Public License along with this program; if not, write to\n"
-"the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139,\n"
-"USA.\n"
-"\n"
-"-- »²¹ÍÌõ\n"
-" ¤³¤Î¥×¥í¥°¥é¥à¤Ï¡¢¥Õ¥ê¡¼¥½¥Õ¥È¥¦¥§¥¢¤Ç¤¹¡£¤¢¤Ê¤¿¤Ï Free Software "
-"Foundation\n"
-"¤¬¸øÉ½¤·¤¿ GNU °ìÈ̸øÍ­»ÈÍѵöÂú¤Î¥Ð¡¼¥¸¥ç¥ó 2 ¤Î¾ò¹à¤Ë´ð¤Å¤¤¤Æ¡¢¤³¤Î¥×¥í¥°"
-"¥é\n"
-"¥à¤òºÆÈÒÉÛ¤Þ¤¿¤ÏÊѹ¹¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£\n"
-"\n"
-"¤³¤Î¥×¥í¥°¥é¥à¤ÏÍ­ÍѤȤϻפ¤¤Þ¤¹¤¬¡¢ÈÒÉÛ¤ËÅö¤¿¤Ã¤Æ¤Ï¡¢»Ô¾ìÀ­µÚ¤ÓÆÃÄêÌÜŪŬ"
-"¹ç\n"
-"À­¤Ë¤Ä¤¤¤Æ¤Î°ÅÌÛ¤ÎÊݾڤâ´Þ¤á¤Æ¡¢¤¤¤«¤Ê¤ëÊݾڤâ¹Ô¤Ê¤¤¤Þ¤»¤ó¡£¾ÜºÙ¤Ë¤Ä¤¤¤Æ"
-"¤Ï¡¢\n"
-"GNU °ìÈ̸øÍ­»ÈÍѵöÂú½ñ¤ò¤ªÆÉ¤ß²¼¤µ¤¤¡£\n"
-"\n"
-"¤¢¤Ê¤¿¤Ï¡¢¤³¤Î¥×¥í¥°¥é¥à¤È°ì½ï¤Ë GNU °ìÈ̸øÍ­»ÈÍѵöÂú½ñ¤ò¼õ¤±¼è¤Ã¤Æ¤¤¤ë¤Ï¤º\n"
-"¤Ç¤¹(COPYING ¥Õ¥¡¥¤¥ë¤ò»²¾È)¡£¤½¤¦¤Ç¤Ê¤¤¾ì¹ç¤Ï¡¢Free Software Foundation,\n"
-"Inc., 675 Mass Ave, Cambridge, MA 02139, USA ¤Ë¼ê»æ¤ò½ñ¤¤¤Æ¤¯¤À¤µ¤¤¡£\n"
-
-#: mensural-ligature.cc:153
-#, c-format
-msgid "Mensural_ligature:thickness undefined on flexa %d; assuming 1.4"
-msgstr ""
-
-#: mensural-ligature.cc:169
-#, c-format
-msgid "Mensural_ligature:delta-pitch undefined on flexa %d; assuming 0"
-msgstr ""
-
-#: mensural-ligature.cc:182
-#, c-format
-msgid "Mensural_ligature:flexa-width undefined on flexa %d; assuming 2.0"
-msgstr ""
-
-#: mensural-ligature.cc:215
-msgid "Mensural_ligature:unexpected case fall-through"
-msgstr ""
-
-#: mensural-ligature.cc:225
-msgid "Mensural_ligature: (join_left == 0)"
-msgstr ""
-
-#: mensural-ligature-engraver.cc:248 mensural-ligature-engraver.cc:397
-msgid "unexpected case fall-through"
-msgstr ""
-
-#: mensural-ligature-engraver.cc:259
-msgid "ligature with less than 2 heads -> skipping"
-msgstr ""
-
-#: mensural-ligature-engraver.cc:279
-msgid "can not determine pitch of ligature primitive -> skipping"
-msgstr ""
-
-#: mensural-ligature-engraver.cc:302
-msgid "prime interval within ligature -> skipping"
-msgstr ""
-
-#: mensural-ligature-engraver.cc:312
-msgid "mensural ligature: duration none of L, B, S -> skipping"
-msgstr ""
-
-#: midi-item.cc:148
-#, c-format
-msgid "no such instrument: `%s'"
-msgstr "¤½¤ÎÍͤʳڴï¤Ï¤¢¤ê¤Þ¤»¤ó: `%s'"
-
-#: midi-item.cc:238
-msgid "silly duration"
-msgstr "Çϼ¯¤²¤¿²»Ä¹"
-
-#: midi-item.cc:251
-msgid "silly pitch"
-msgstr "Çϼ¯¤²¤¿¥Ô¥Ã¥Á"
-
-#: music-output-def.cc:111
-#, fuzzy, c-format
-msgid "can't find `%s' context"
-msgstr "`%s' ¥³¥ó¥Æ¥­¥¹¥È¤¬¸«¤Ä¤«¤ê¤Þ¤»¤ó"
-
-#: my-lily-lexer.cc:169
-#, c-format
-msgid "Identifier name is a keyword: `%s'"
-msgstr "¼±ÊÌ»Ò̾¤Ï¥­¡¼¥ï¡¼¥É¤Ç¤¹: `%s'"
-
-#: my-lily-lexer.cc:191
-#, c-format
-msgid "error at EOF: %s"
-msgstr "EOF ¤Î¤È¤³¤í¤Ç¥¨¥é¡¼: %s"
-
-#: my-lily-parser.cc:44
-msgid "Parsing..."
-msgstr "¹½Ê¸²òÀÏÃæ..."
-
-#: my-lily-parser.cc:54
-msgid "Braces don't match"
-msgstr "¥Ö¥ì¡¼¥¹¤¬°ìÃפ·¤Þ¤»¤ó"
-
-#.
-#. music for the softenon children?
-#.
-#: new-fingering-engraver.cc:143
-msgid "music for the martians."
-msgstr ""
-
-#: new-tie-engraver.cc:166 tie-engraver.cc:217
-msgid "lonely tie"
-msgstr "°ì¤Ä¤À¤±¤Î¥¿¥¤"
-
-#: note-collision.cc:340
-msgid "Too many clashing notecolumns.  Ignoring them."
-msgstr "Äà¤ê¹ç¤ï¤Ê¤¤²»É䤬¿¤¹¤®¤Þ¤¹¡£¤½¤ì¤é¤ò̵»ë¤·¤Þ¤¹¡£"
-
-#: note-head.cc:127
-#, c-format
-msgid "note head `%s' not found"
-msgstr ""
-
-#: paper-def.cc:96
-#, c-format
-msgid "paper output to `%s'..."
-msgstr "%s ¤Ø paper ½ÐÎÏ..."
-
-#: paper-score.cc:78
-#, c-format
-msgid "Element count %d (spanners %d) "
-msgstr ""
-
-#: paper-score.cc:83
-#, fuzzy
-msgid "Preprocessing graphical objects..."
-msgstr "Í×ÁǤòÁ°½èÍýÃæ..."
-
-#: paper-score.cc:116
-msgid "Outputting Score, defined at: "
-msgstr "ÉèÌ̤ò½ÐÎϤ·¤Þ¤¹¡£¤³¤³¤ÇÄêµÁ: "
-
-#: parse-scm.cc:79
-msgid "GUILE signaled an error for the expression begining here"
-msgstr ""
-
-#.
-#. We could change the current translator's id, but that would make
-#. errors hard to catch
-#.
-#. last->translator_id_string_  = get_change ()->change_to_id_string_;
-#.
-#: part-combine-music-iterator.cc:139
-#, fuzzy, c-format
-msgid "I'm one myself: `%s'"
-msgstr "¥È¥é¥ó¥¹¥ì¡¼¥¿¤½¤Î¤â¤Î¤Ç¤¹"
-
-#: part-combine-music-iterator.cc:142
-#, fuzzy, c-format
-msgid "none of these in my family: `%s'"
-msgstr "¥Õ¥¡¥ß¥ê¤ÎÃæ¤Ë¤¢¤ê¤Þ¤»¤ó"
-
-#: percent-repeat-engraver.cc:109
-#, fuzzy
-msgid "Don't know how to handle a percent repeat of this length."
-msgstr "¶õ¤Î¥­¡¼¤Î°·¤¤Êý¤¬È½¤ê¤Þ¤»¤ó"
-
-#: percent-repeat-engraver.cc:163
-#, fuzzy
-msgid "unterminated percent repeat"
-msgstr "½ªÃ¼¤Î¤Ê¤¤¥Ï¥¤¥Õ¥ó"
-
-#: percent-repeat-iterator.cc:65
-#, fuzzy
-msgid "no one to print a percent"
-msgstr "È¿Éüµ­¹æ¤òɽ¼¨¤¹¤ë¤â¤Î¤¬¤¢¤ê¤Þ¤»¤ó"
-
-#: performance.cc:51
-msgid "Track ... "
-msgstr "¥È¥é¥Ã¥¯ ..."
-
-#: performance.cc:83
-msgid "Creator: "
-msgstr "ºî¶Ê¼Ô: "
-
-#: performance.cc:103
-#, fuzzy
-msgid "at "
-msgstr ", at "
-
-#: performance.cc:114
-#, c-format
-msgid "from musical definition: %s"
-msgstr "²»³ÚŪÄêµÁ¤è¤ê: %s"
-
-#: performance.cc:169
-#, c-format
-msgid "MIDI output to `%s'..."
-msgstr "%s ¤Ø¤Î MIDI ½ÐÎÏ"
-
-#: phrasing-slur-engraver.cc:123
-#, fuzzy
-msgid "unterminated phrasing slur"
-msgstr "½ªÃ¼¤µ¤ì¤Æ¤¤¤Ê¤¤¥¹¥é¡¼"
-
-#: phrasing-slur-engraver.cc:141
-#, fuzzy
-msgid "can't find start of phrasing slur"
-msgstr "ËöÈø¤Ø¤Î(¥Ç)¥¯¥ì¥Ã¥·¥§¥ó¥É¤¬¸«¤Ä¤«¤ê¤Þ¤»¤ó"
-
-#: piano-pedal-engraver.cc:235 piano-pedal-engraver.cc:250
-#: piano-pedal-engraver.cc:305 piano-pedal-performer.cc:82
-#, fuzzy, c-format
-msgid "can't find start of piano pedal: `%s'"
-msgstr "¸Æ¤Ó½Ð¤µ¤ì¤¿Ê¸»ú¤¬¸«¤Ä¤«¤ê¤Þ¤»¤ó: `%s'"
-
-#: piano-pedal-engraver.cc:410
-#, fuzzy
-msgid "unterminated pedal bracket"
-msgstr "½ªÃ¼¤Î¤Ê¤¤¥Ï¥¤¥Õ¥ó"
-
-#: property-iterator.cc:97
-#, c-format
-msgid "Not a grob name, `%s'."
-msgstr ""
-
-#: rest.cc:139
-#, c-format
-msgid "rest `%s' not found, "
-msgstr ""
-
-#: rest-collision.cc:199
-msgid "too many colliding rests"
-msgstr "µÙÉä¤Î¾×ÆÍ¤¬Â¿¤¹¤®¤Þ¤¹"
-
-#: scm-option.cc:45
-msgid "lilypond -e EXPR means:"
-msgstr ""
-
-#: scm-option.cc:47
-msgid "  Evalute the Scheme EXPR before parsing any .ly files."
-msgstr ""
-
-#: scm-option.cc:49
-msgid ""
-"  Multiple -e options may be given, they will be evaluated sequentially."
-msgstr ""
-
-#: scm-option.cc:51
-msgid ""
-"  The function ly-set-option allows for access to some internal variables."
-msgstr ""
-
-#: scm-option.cc:53
-msgid "Usage: lilypond -e \"(ly-set-option SYMBOL VAL)\""
-msgstr ""
-
-#: scm-option.cc:55
-msgid "Where SYMBOL VAL pair is any of:"
-msgstr ""
-
-#: scm-option.cc:128
-msgid "Unknown internal option!"
-msgstr ""
-
-#: score.cc:85
-msgid "Interpreting music..."
-msgstr "³Ú¶Ê¤Î²ò¼áÃæ..."
-
-#: score.cc:97
-msgid "Need music in a score"
-msgstr "³ÚÉè¤Ë¤Ï³Ú¶Ê¤¬É¬ÍפǤ¹"
-
-#. should we? hampers debugging.
-#: score.cc:111
-msgid "Errors found/*, not processing score*/"
-msgstr "¥¨¥é¡¼¤òȯ¸«/*, ³ÚÉè¤ò½èÍý¤·¤Þ¤»¤ó*/"
-
-#: score.cc:118
-#, c-format
-msgid "elapsed time: %.2f seconds"
-msgstr "·Ð²á»þ´Ö: %.2f ÉÃ"
-
-#: score-engraver.cc:99
-#, fuzzy, c-format
-msgid "can't find `%s'"
-msgstr "¸«¤Ä¤«¤ê¤Þ¤»¤ó: `%s'"
-
-#: score-engraver.cc:100
-msgid "Fonts have not been installed properly.  Aborting"
-msgstr ""
-
-#: score-engraver.cc:205
-#, c-format
-msgid "unbound spanner `%s'"
-msgstr "ÊĤ¸¤Æ¤¤¤Ê¤¤¥¹¥Ñ¥Ê `%s'"
-
-#: script-engraver.cc:90
-#, c-format
-msgid "Don't know how to interpret articulation `%s'"
-msgstr "²»Àá `%s' ¤Î²ò¼áÊýË¡¤¬È½¤ê¤Þ¤»¤ó"
-
-#. this shouldn't happen, but let's continue anyway.
-#: separation-item.cc:53 separation-item.cc:101
-#, fuzzy
-msgid "Separation_item:  I've been drinking too much"
-msgstr "Single_malt_grouping_item:  °û¤ß¤¹¤®¤Á¤ã¤Ã¤¿"
-
-#: simple-spacer.cc:248
-#, c-format
-msgid "No spring between column %d and next one"
-msgstr ""
-
-#: slur-engraver.cc:141
-msgid "unterminated slur"
-msgstr "½ªÃ¼¤µ¤ì¤Æ¤¤¤Ê¤¤¥¹¥é¡¼"
-
-#. How to shut up this warning, when Voice_devnull_engraver has
-#. eaten start event?
-#: slur-engraver.cc:159
-#, fuzzy
-msgid "can't find start of slur"
-msgstr "ËöÈø¤Ø¤Î(¥Ç)¥¯¥ì¥Ã¥·¥§¥ó¥É¤¬¸«¤Ä¤«¤ê¤Þ¤»¤ó"
-
-#: source-file.cc:67
-#, c-format
-msgid "Huh?  Got %d, expected %d characters"
-msgstr "¤Ï¡© %2$d ʸ»ú¤¢¤ë¤Ï¤º¤Ê¤Î¤Ë %1$d ʸ»ú¤·¤«¤Ê¤¤"
-
-#: spacing-spanner.cc:379
-#, c-format
-msgid "Global shortest duration is %s\n"
-msgstr ""
-
-#: spring-smob.cc:32
-#, c-format
-msgid "#<spring smob d= %f>"
-msgstr ""
-
-#: staff-symbol.cc:61
-msgid "staff symbol: indentation yields beyond end of line"
-msgstr ""
-
-#: stem.cc:118
-msgid "Weird stem size; check for narrow beams"
-msgstr "ÊѤÊÉäÈø¤Î¥µ¥¤¥º -- ºÙ¤¤³Ã¤Î¥Á¥§¥Ã¥¯¤ò¤·¤Æ²¼¤µ¤¤"
-
-#: stem.cc:611
-#, c-format
-msgid "flag `%s' not found"
-msgstr ""
-
-#: stem.cc:624
-#, c-format
-msgid "flag stroke `%s' not found"
-msgstr ""
-
-#: stem-engraver.cc:96
-msgid "tremolo duration is too long"
-msgstr ""
-
-#: stem-engraver.cc:124
-#, c-format
-msgid "Adding note head to incompatible stem (type = %d)"
-msgstr "Ì·½â¤·¤¿ÉäÈø¤ØÉ䯬¤òÄɲä·¤Þ¤¹ (¥¿¥¤¥× = %d)"
-
-#: stem-engraver.cc:125
-msgid "Don't you want polyphonic voices instead?"
-msgstr ""
-
-#: streams.cc:34
-#, fuzzy, c-format
-msgid "can't create directory: `%s'"
-msgstr "¸«¤Ä¤«¤é¤Ê¤¤¤«ºî¤ì¤Þ¤»¤ó: `%s'"
-
-#: streams.cc:48
-msgid "Error syncing file (disk full?)"
-msgstr "¥Õ¥¡¥¤¥ë¤ÎƱĴ¥¨¥é¡¼ (¥Ç¥£¥¹¥¯¤¬°ìÇÕ?)"
-
-#: system.cc:125
-#, c-format
-msgid "Element count %d."
-msgstr ""
-
-#: system.cc:372
-#, c-format
-msgid "Grob count %d "
-msgstr ""
-
-#: system.cc:386
-#, fuzzy
-msgid "Calculating line breaks..."
-msgstr "¥«¥é¥à°ÌÃÖ¤ò·×»»Ãæ..."
-
-#: text-spanner-engraver.cc:81
-#, fuzzy
-msgid "can't find start of text spanner"
-msgstr "ËöÈø¤Ø¤Î(¥Ç)¥¯¥ì¥Ã¥·¥§¥ó¥É¤¬¸«¤Ä¤«¤ê¤Þ¤»¤ó"
-
-#: text-spanner-engraver.cc:95
-#, fuzzy
-msgid "already have a text spanner"
-msgstr "´û¤Ë³Ã¤¬¤¢¤ê¤Þ¤¹"
-
-#: text-spanner-engraver.cc:164
-#, fuzzy
-msgid "unterminated text spanner"
-msgstr "½ªÃ¼¤Î¤Ê¤¤¥¨¥¯¥¹¥Æ¥ó¥À"
-
-#: tfm.cc:83
-#, fuzzy, c-format
-msgid "can't find ascii character: %d"
-msgstr "ascii ʸ»ú¤¬¸«¤Ä¤«¤ê¤Þ¤»¤ó: `%d'"
-
-#. Not using ngettext's plural feature here, as this message is
-#. more of a programming error.
-#: tfm-reader.cc:108
-#, fuzzy, c-format
-msgid "TFM header of `%s' has only %u word (s)"
-msgstr "`%s' ¤Î TFM ¥Ø¥Ã¥À¤Ë %u ¸ì¤·¤«¤¢¤ê¤Þ¤»¤ó"
-
-#: tfm-reader.cc:142
-#, c-format
-msgid "%s: TFM file has %u parameters, which is more than the %u I can handle"
-msgstr "%s: TFM ¥Õ¥¡¥¤¥ë¤Ï %u ¸Ä¤Î¥Ñ¥é¥á¥¿¤¬¤¢¤ê¤Þ¤¹¤¬¡¢%u °Ê¾å¤Ï°·¤¨¤Þ¤»¤ó"
-
-#: tie-performer.cc:159
-msgid "No ties were created!"
-msgstr "ºî¤é¤ì¤¿¥¿¥¤¤¬¤¢¤ê¤Þ¤»¤ó!"
-
-#: time-scaled-music-iterator.cc:25
-msgid "no one to print a tuplet start bracket"
-msgstr "¥¿¥×¥ì¥Ã¥È³«»Ï¥Ö¥é¥±¥Ã¥È¤òɽ¼¨¤¹¤ë¤â¤Î¤¬¤¢¤ê¤Þ¤»¤ó"
-
-#. If there is no such symbol, we default to the numbered style.
-#. (Here really with a warning!)
-#: time-signature.cc:87
-#, c-format
-msgid "time signature symbol `%s' not found; reverting to numbered style"
-msgstr ""
-
-#.
-#. Todo: should make typecheck?
-#.
-#. OTOH, Tristan Keuris writes 8/20 in his Intermezzi.
-#.
-#: time-signature-engraver.cc:57
-#, c-format
-msgid "Found strange time signature %d/%d."
-msgstr ""
-
-#: translator-ctors.cc:53
-#, c-format
-msgid "unknown translator: `%s'"
-msgstr "Ƚ¤é¤Ê¤¤¥È¥é¥ó¥¹¥ì¡¼¥¿: `%s'"
-
-#: translator-def.cc:105
-msgid "Program has no such type"
-msgstr "¥×¥í¥°¥é¥à¤Ë¤Ï¤½¤ÎÍͤʥ¿¥¤¥×¤¬¤¢¤ê¤Þ¤»¤ó"
-
-#: translator-def.cc:111
-#, c-format
-msgid "Already contains: `%s'"
-msgstr "´û¤Ë´Þ¤ó¤Ç¤¤¤Þ¤¹: `%s'"
-
-#: translator-def.cc:112
-#, fuzzy, c-format
-msgid "Not adding translator: `%s'"
-msgstr "Ƚ¤é¤Ê¤¤¥È¥é¥ó¥¹¥ì¡¼¥¿: `%s'"
-
-#: translator-def.cc:229
-#, fuzzy, c-format
-msgid "can't find: `%s'"
-msgstr "¸«¤Ä¤«¤ê¤Þ¤»¤ó: `%s'"
-
-#: translator-group.cc:158
-#, fuzzy, c-format
-msgid "can't find or create `%s' called `%s'"
-msgstr "`%2$s' ¤Ë¸Æ¤Ð¤ì¤¿ `%1$s' ¤¬¸«¤Ä¤«¤é¤Ê¤¤¤«ºî¤ì¤Þ¤»¤ó"
-
-#: translator-group.cc:230
-#, fuzzy, c-format
-msgid "can't find or create: `%s'"
-msgstr "¸«¤Ä¤«¤é¤Ê¤¤¤«ºî¤ì¤Þ¤»¤ó: `%s'"
-
-#: vaticana-ligature.cc:49
-msgid "ascending vaticana style flexa"
-msgstr ""
-
-#: vaticana-ligature.cc:219
-msgid "Vaticana_ligature:thickness undefined; assuming 1.4"
-msgstr ""
-
-#: vaticana-ligature.cc:233
-msgid "Vaticana_ligature:x-offset undefined; assuming 0.0"
-msgstr ""
-
-#: vaticana-ligature.cc:258
-msgid "Vaticana_ligature: (delta_pitch == 0)"
-msgstr ""
-
-#: vaticana-ligature.cc:271
-msgid "Vaticana_ligature:delta-pitch -> ignoring join"
-msgstr ""
-
-#: vaticana-ligature-engraver.cc:477
-#, c-format
-msgid "Vaticana_ligature_engraver: setting `spacing-increment = %f': ptr=%ul"
-msgstr ""
-
-#: volta-engraver.cc:112
-msgid "No volta spanner to end"
-msgstr ""
-
-#: volta-engraver.cc:123
-msgid "Already have a volta spanner.  Stopping that one prematurely."
-msgstr ""
-
-#: volta-engraver.cc:127
-msgid "Also have a stopped spanner.  Giving up."
-msgstr ""
-
-#: parser.yy:480
-msgid "Identifier should have alphabetic characters only"
-msgstr ""
-
-#: parser.yy:779
-msgid "More alternatives than repeats.  Junking excess alternatives."
-msgstr "·«¤êÊÖ¤·¤è¤ê¤âÁªÂò»è¤¬Â¿¤¤¡£Ä¶²áʬ¤ò¼Î¤Æ¤Þ¤¹¡£"
-
-#: parser.yy:861 parser.yy:868
-msgid "pplycontext takes function argument"
-msgstr ""
-
-#: parser.yy:877
-msgid "Second argument must be a symbol"
-msgstr ""
-
-#: parser.yy:882
-msgid "First argument must be a procedure taking one argument"
-msgstr ""
-
-#: parser.yy:1009
-msgid "pply takes function argument"
-msgstr ""
-
-#: parser.yy:1501
-msgid "Expecting string as script definition"
-msgstr ""
-
-#: parser.yy:1598
-msgid "Expecting musical-pitch value"
-msgstr ""
-
-#: parser.yy:1609
-#, fuzzy
-msgid "Must have duration object"
-msgstr "²»Ä¹¤òºÇ¾®¤ËÀßÄꤷ¤Þ¤¹"
-
-#: parser.yy:1618 parser.yy:1626
-msgid "Have to be in Lyric mode for lyrics"
-msgstr "²Î»ì¤Ï Lyric ¥â¡¼¥ÉÆâ¤Ë½ñ¤¤¤Æ¤¯¤À¤µ¤¤"
-
-#: parser.yy:1798 parser.yy:1853
-#, c-format
-msgid "not a duration: %d"
-msgstr "²»Ä¹¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó: %d"
-
-#: parser.yy:1949
-msgid "Have to be in Note mode for notes"
-msgstr "²»Éä¤Ï Note ¥â¡¼¥ÉÆâ¤Ë½ñ¤¤¤Æ¤¯¤À¤µ¤¤"
-
-#: parser.yy:2032
-msgid "Have to be in Chord mode for chords"
-msgstr "¥³¡¼¥É¤Ï Chord ¥â¡¼¥ÉÆâ¤Ë½ñ¤¤¤Æ¤¯¤À¤µ¤¤"
-
-#: parser.yy:2171
-msgid "need integer number arg"
-msgstr ""
-
-#: parser.yy:2316
-msgid "Suspect duration found following this beam"
-msgstr ""
-
-#: lexer.ll:186
-msgid "EOF found inside a comment"
-msgstr "¥³¥á¥ó¥ÈÆâ¤Ë EOF ¤¬¸«¤Ä¤«¤ê¤Þ¤·¤¿"
-
-#: lexer.ll:200
-msgid "\\maininput disallowed outside init files"
-msgstr "½é´ü²½¥Õ¥¡¥¤¥ë¤Î³°¤Ç¤Ï \\maininput ¤òµ­½Ò¤Ç¤­¤Þ¤»¤ó"
-
-#: lexer.ll:224
-#, fuzzy, c-format
-msgid "wrong or undefined identifier: `%s'"
-msgstr "̤ÄêµÁ¤Î¼±ÊÌ»Ò: `%s'"
-
-#. backup rule
-#: lexer.ll:233
-msgid "Missing end quote"
-msgstr "½ªÎ»¥¯¥ª¡¼¥È¤¬¤¢¤ê¤Þ¤»¤ó"
-
-#. backup rule
-#: lexer.ll:255 lexer.ll:259
-msgid "white expected"
-msgstr "¶õÇò¤¬É¬ÍפǤ¹"
-
-#: lexer.ll:268
-msgid "Can't evaluate Scheme in safe mode"
-msgstr "°ÂÁ´¥â¡¼¥É¤Ç¤Ï Scheme ¤Îɾ²Á¤ò¤Ç¤­¤Þ¤»¤ó"
-
-#: lexer.ll:397 lexer.ll:487
-msgid "Brace found at end of lyric.  Did you forget a space?"
-msgstr ""
-
-#: lexer.ll:574
-#, c-format
-msgid "invalid character: `%c'"
-msgstr "̵¸ú¤Êʸ»ú: `%c'"
-
-#: lexer.ll:651
-#, c-format
-msgid "unknown escaped string: `\\%s'"
-msgstr "̤ÃΤΥ¨¥¹¥±¡¼¥×ʸ»úÎó: `\\%s'"
-
-#: lexer.ll:742
-#, fuzzy, c-format
-msgid "Incorrect lilypond version: %s (%s, %s)"
-msgstr "´Ö°ã¤Ã¤¿ mudela ¥Ð¡¼¥¸¥ç¥ó: %s (%s, %s)"
-
-#: lexer.ll:743
-msgid "Consider updating the input with the convert-ly script"
-msgstr ""
-
-#, fuzzy
-#~ msgid "%r: release directory"
-#~ msgstr "¸«¤Ä¤«¤é¤Ê¤¤¤«ºî¤ì¤Þ¤»¤ó: `%s'"
-
-#, fuzzy
-#~ msgid "Listing `%s'..."
-#~ msgstr "¹Ô ..."
-
-#, fuzzy
-#~ msgid "Fetching `%s'..."
-#~ msgstr "Í×µá¤ò¼Î¤Æ¤Þ¤¹: `%s'"
-
-#, fuzzy
-#~ msgid "Building `%s'..."
-#~ msgstr "Í×µá¤ò¼Î¤Æ¤Þ¤¹: `%s'"
-
-#~ msgid "invalid subtraction: not part of chord: %s"
-#~ msgstr "̵¸ú¤Ê°ú¤­»»: ¥³¡¼¥É¤Î°ìÉô¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó: %s"
-
-#~ msgid "invalid inversion pitch: not part of chord: %s"
-#~ msgstr "̵¸ú¤Êž²ó¥Ô¥Ã¥Á: ¥³¡¼¥É¤Î°ìÉô¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó: %s"
-
-#~ msgid ", at "
-#~ msgstr ", at "
-
-#, fuzzy
-#~ msgid "Putting slur over rest."
-#~ msgstr "µÙÉä¤ò¤Þ¤¿¤¤¤À¥¹¥é¡¼¤¬¤¢¤ê¤Þ¤¹¡£Ìµ»ë¤·¤Þ¤¹¡£"
-
-#~ msgid "Slur over rest?"
-#~ msgstr "¥¹¥é¡¼¤¬µÙÉä¤ò¤Þ¤¿¤¤¤Ç¤¤¤ë?"
-
-#~ msgid "Can't specify direction for this request"
-#~ msgstr "¤³¤ÎÍ×µá¤ËÂФ¹¤ëÊý¸þ¤ò»ØÄꤹ¤ë¤³¤È¤Ï¤Ç¤­¤Þ¤»¤ó"
-
-#, fuzzy
-#~ msgid "can't map file"
-#~ msgstr "¥Õ¥¡¥¤¥ë¤ò¥Þ¥Ã¥×¤Ç¤­¤Þ¤»¤ó"
-
-#~ msgid "This binary was compiled with the following options:"
-#~ msgstr "¤³¤Î¥Ð¥¤¥Ê¥ê¤Ï°Ê²¼¤Î¥ª¥×¥·¥ç¥óÉÕ¤­¤Ç¥³¥ó¥Ñ¥¤¥ë¤µ¤ì¤Þ¤·¤¿"
-
-#~ msgid "EOF in a string"
-#~ msgstr "ʸ»úÎóÃæ¤Ë EOF ¤¬¤¢¤ê¤Þ¤¹"
-
-#~ msgid "<stdin>"
-#~ msgstr "<stdin>"
-
-#~ msgid "programming error: "
-#~ msgstr "¥×¥í¥°¥é¥à¾å¤Î¥¨¥é¡¼: "
-
-#~ msgid "weird beam vertical offset"
-#~ msgstr "¿âľÊý¸þ¤Î°ÌÃ֤Ȥ·¤Æ¤ª¤«¤·¤Ê³Ã"
-
-#, fuzzy
-#~ msgid "unknown spacing pair `%s', `%s'"
-#~ msgstr "Ƚ¤é¤Ê¤¤¥È¥é¥ó¥¹¥ì¡¼¥¿: `%s'"
-
-#, fuzzy
-#~ msgid "Wrong type for property: %s, type: %s, value found: %s, type: %s"
-#~ msgstr "°À­ÃͤؤΥ¿¥¤¥×¤¬´Ö°ã¤Ã¤Æ¤¤¤Þ¤¹"
-
-#~ msgid "too many notes for rest collision"
-#~ msgstr "µÙÉä¤Î¾×ÆÍ¤ËÂФ·¤Æ²»É䤬¿¤¹¤®¤Þ¤¹"
-
-#, fuzzy
-#~ msgid "Scheme options:"
-#~ msgstr "¥ª¥×¥·¥ç¥ó:"
-
-#~ msgid "Oldest supported input version: %s"
-#~ msgstr "°ìÈָŤ¤ÆþÎϲÄǽ¥Ð¡¼¥¸¥ç¥ó: %s"
-
-#, fuzzy
-#~ msgid "writing header field `%s' to `%s'..."
-#~ msgstr "°Í¸´Ø·¸¥Õ¥¡¥¤¥ë¤Î½ñ¤­¹þ¤ß: `%s'..."
-
-#~ msgid "#32 in quarter: %d"
-#~ msgstr "»Íʬ¤ÎÃæ¤Ë #32: %d"
-
-#, fuzzy
-#~ msgid "LY output to `%s'..."
-#~ msgstr "%s ¤Ø¤Î MIDI ½ÐÎÏ"
-
-#~ msgid "track %d:"
-#~ msgstr "¥È¥é¥Ã¥¯ %d:"
-
-#~ msgid "Processing..."
-#~ msgstr "½èÍýÃæ..."
-
-#~ msgid "Creating voices..."
-#~ msgstr "²»À¼¤òºîÀ®Ãæ..."
-
-#~ msgid "track "
-#~ msgstr "¥È¥é¥Ã¥¯ "
-
-#~ msgid "NOT Filtering tempo..."
-#~ msgstr "¥Æ¥ó¥Ý¤Î¥Õ¥£¥ë¥¿¤ò¤·¤Þ¤»¤ó..."
-
-#~ msgid "NOT Quantifying columns..."
-#~ msgstr "¥«¥é¥à¤ÎŤµ¤òÎ̤ê¤Þ¤»¤ó..."
-
-#~ msgid "Quantifying columns..."
-#~ msgstr "¥«¥é¥à¤ÎŤµ¤òÎ̤ê¤Þ¤¹..."
-
-#~ msgid "Settling columns..."
-#~ msgstr "¥«¥é¥à¤ò·èÄꤷ¤Þ¤¹..."
-
-#~ msgid "% MIDI copyright:"
-#~ msgstr "% MIDI copyright:"
-
-#~ msgid "% MIDI instrument:"
-#~ msgstr "% MIDI instrument:"
-
-#~ msgid "lily indent level: %d"
-#~ msgstr "lily indent level: %d"
-
-#~ msgid "% Creator: "
-#~ msgstr "%s Creator: "
-
-#~ msgid "% Automatically generated"
-#~ msgstr "% Automatically generated"
-
-#~ msgid "% from input file: "
-#~ msgstr "% from input file: "
-
-#~ msgid "write exact durations, e.g.: a4*385/384"
-#~ msgstr "Àµ³Î¤Ê²»Ä¹¤ò½ñ¤¤¤Æ¤¯¤À¤µ¤¤¡£Îã: a4*385/384"
-
-#~ msgid "enable debugging output"
-#~ msgstr "¥Ç¥Ð¥Ã¥°½ÐÎϤòÍ­¸ú"
-
-#, fuzzy
-#~ msgid "don't output tuplets, double dots or rests, smallest is 32"
-#~ msgstr "ÉäÅÀ¤äÊ£ÉäÅÀ¤ò¤Ê¤¯¤¹¤è¤¦»î¤ß¤Þ¤¹¡¢ºÇ¾®¤Ï 32"
-
-#~ msgid "set FILE as default output"
-#~ msgstr "¥Ç¥Õ¥©¥ë¥È½ÐÎϤȤ·¤Æ FILE ¤òÀßÄꤹ¤ë"
-
-#~ msgid "be quiet"
-#~ msgstr "ÀŤ«¤Ë¤·¤Þ¤¹"
-
-#~ msgid "set smallest duration"
-#~ msgstr "²»Ä¹¤òºÇ¾®¤ËÀßÄꤷ¤Þ¤¹"
-
-#~ msgid "don't 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"
-#~ msgstr "MIDI ¥Õ¥¡¥¤¥ë¤ò mudela ¤ËÊÑ´¹¤·¤Þ¤¹"
-
-#~ msgid "zero length string encountered"
-#~ msgstr "Ťµ¥¼¥í¤Îʸ»úÎ󤬸½¤ï¤ì¤Þ¤·¤¿"
-
-#~ msgid "MIDI header expected"
-#~ msgstr "MIDI ¥Ø¥Ã¥À¤¬¤¢¤ê¤Þ¤»¤ó"
-
-#~ msgid "invalid header length"
-#~ msgstr "̵¸ú¤Ê¥Ø¥Ã¥ÀŤǤ¹"
-
-#~ msgid "invalid MIDI format"
-#~ msgstr "̵¸ú¤Ê MIDI ¥Õ¥©¡¼¥Þ¥Ã¥È"
-
-#~ msgid "invalid number of tracks"
-#~ msgstr "̵¸ú¤Ê¥È¥é¥Ã¥¯¿ô"
-
-#, fuzzy
-#~ msgid "can't handle non-metrical time"
-#~ msgstr "±¤Î§¤Ë¤Ê¤é¤Ê¤¤Çï»Ò¤Ï°·¤¨¤Þ¤»¤ó"
-
-#~ msgid "Junking note-end event: channel = %d, pitch = %d"
-#~ msgstr "²»É佪ü¥¤¥Ù¥ó¥È¤ò¼Î¤Æ¤Þ¤¹: channel = %d, pitch = %d"
-
-#~ msgid "invalid running status"
-#~ msgstr "̵¸ú¤Êưºî¾õÂÖ"
-
-#~ msgid "unimplemented MIDI meta-event"
-#~ msgstr "̤¼ÂÁõ¤Î MIDI ¥á¥¿¥¤¥Ù¥ó¥È"
-
-#~ msgid "invalid MIDI event"
-#~ msgstr "̵¸ú¤Ê MIDI ¥¤¥Ù¥ó¥È"
-
-#~ msgid "MIDI track expected"
-#~ msgstr "MIDI ¥È¥é¥Ã¥¯¤¬É¬ÍפǤ¹"
-
-#~ 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 "can't 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 "¼«Æ°À¸À®¤µ¤ì¤¿"
-
-#, fuzzy
-#~ msgid "Wrong type for property"
-#~ msgstr "°À­ÃͤؤΥ¿¥¤¥×¤¬´Ö°ã¤Ã¤Æ¤¤¤Þ¤¹"
-
-#~ msgid "too small"
-#~ msgstr "¾®¤µ¤¹¤®¤Þ¤¹"
-
-#~ msgid "Aborting"
-#~ msgstr "½ªÎ»¤·¤Þ¤¹"
-
-#~ msgid "Non-matching braces in text `%s', adding braces"
-#~ msgstr ""
-#~ "¥Æ¥­¥¹¥È `%s' Ãæ¤Ë°ìÃפ¹¤ë¥Ö¥ì¡¼¥¹¤¬¤¢¤ê¤Þ¤»¤ó¡£¥Ö¥ì¡¼¥¹¤òÄɲä·¤Þ¤¹"
-
-#~ msgid "Huh?  Not a Request: `%s'"
-#~ msgstr "¤Ï? Í×µá¤Ç¤Ï¤Ê¤¤: `%s'"
-
-#~ msgid "Must stop before this music ends"
-#~ msgstr "¤³¤Î³Ú¶Ê¤Î½ª¤ï¤ê¤Þ¤Ç¤Ë»ß¤á¤Ê¤±¤ì¤Ð¤Ê¤ê¤Þ¤»¤ó"
-
-#~ msgid "no one to print a volta bracket"
-#~ msgstr "volta ¥Ö¥é¥±¥Ã¥È¤òɽ¼¨¤¹¤ë¤â¤Î¤¬¤¢¤ê¤Þ¤»¤ó"
-
-#~ msgid "Interpretation context with empty type"
-#~ msgstr "¶õ¥¿¥¤¥×¤Î²ò¼á¥³¥ó¥Æ¥­¥¹¥È"
-
-#~ msgid "No bar engraver found.  Ignoring repeats."
-#~ msgstr "¾®À᤬¸«¤Ä¤«¤ê¤Þ¤»¤ó¡£È¿Éü¤ò̵»ë¤·¤Þ¤¹¡£"
-
-#, fuzzy
-#~ msgid "can't find both ends of %s"
-#~ msgstr "%s ¤Îξü¤¬¸«¤Ä¤«¤ê¤Þ¤»¤ó"
-
-#~ msgid "slur"
-#~ msgstr "¥¹¥é¡¼"
-
-#~ msgid "lost in time:"
-#~ msgstr "Çï»Ò¤Ë̤¤¤Þ¤·¤¿:"
-
-#~ msgid "Need a translator group for a context"
-#~ msgstr "¥³¥ó¥Æ¥­¥¹¥È¤Ë¤Ï¥È¥é¥ó¥¹¥ì¡¼¥¿¥°¥ë¡¼¥×¤¬É¬ÍפǤ¹"
-
-#~ msgid "Debug output disabled.  Compiled with NPRINT."
-#~ msgstr ""
-#~ "¥Ç¥Ð¥Ã¥°½ÐÎϤ¬Ìµ¸ú¤Ë¤µ¤ì¤Æ¤¤¤Þ¤¹¡£NPRINT ¤Ä¤­¤Ç¥³¥ó¥Ñ¥¤¥ë¤µ¤ì¤Þ¤·¤¿¡£"
-
-#~ msgid "programming warning: "
-#~ msgstr "¥×¥í¥°¥é¥à¾å¤Î·Ù¹ð: "
-
-#~ msgid "(search path: `%s)'"
-#~ msgstr "(¸¡º÷¥Ñ¥¹: `%s')"
-
-#~ msgid "no beam to end"
-#~ msgstr "ËöÈø¤Ø¤Î³Ã¤¬¤¢¤ê¤Þ¤»¤ó"
-
-#~ msgid "unfinished beam"
-#~ msgstr "½ªÎ»¤µ¤ì¤Æ¤¤¤Ê¤¤³Ã"
-
-#~ msgid "0 lines"
-#~ msgstr "0 ¹Ô"
-
-#~ msgid "1 line (of %.0f columns)"
-#~ msgstr "1 ¹Ô (%.0f ¥«¥é¥à)"
-
-#~ msgid "%d lines (with an average of %.1f columns)"
-#~ msgstr "%d ¹Ô (Ê¿¶Ñ %.1f ¥«¥é¥à)"
-
-#~ msgid "Score does not have any columns"
-#~ msgstr "ÉèÌ̤˥«¥é¥à¤¬¤¢¤ê¤Þ¤»¤ó"
-
-#~ msgid "approximated %s"
-#~ msgstr "¤ª¤ª¤è¤½ %s"
-
-#~ msgid "calculated %s exactly"
-#~ msgstr "Àµ³Î¤Ë·×»»¤µ¤ì¤¿ %s"
-
-#~ msgid "elapsed time %.2f seconds"
-#~ msgstr "%.2f É÷вá"
-
-#~ msgid "no tremolo beam to end"
-#~ msgstr "ËöÈø¤Ø¤Î¥È¥ì¥â¥íµ­¹æ¤¬¤¢¤ê¤Þ¤»¤ó"
-
-#~ msgid "Already have a tremolo beam"
-#~ msgstr "¤¹¤Ç¤Ë¥È¥ì¥â¥íµ­¹æ¤¬¤¢¤ê¤Þ¤¹"
-
-#~ msgid "unfinished tremolo beam"
-#~ msgstr "½ª¤ï¤Ã¤Æ¤¤¤Ê¤¤¥È¥ì¥â¥íµ­¹æ"
-
-#~ msgid "Got a dynamic already.  Continuing dazed and confused."
-#~ msgstr "´û¤ËưŪ¤Ë¤Ê¤Ã¤Æ¤¤¤Þ¤¹¡£º®Í𤷤¿¤Þ¤Þ³¤±¤Þ¤¹¡£"
-
-#~ msgid "Too many crescendi here"
-#~ msgstr "¤³¤³¤Î¥¯¥ì¥Ã¥·¥§¥ó¥É¤¬Â¿¤¹¤®¤Þ¤¹"
-
-#~ msgid "Ineq_constrained_qp::solve (): Constraint off by %f"
-#~ msgstr "Ineq_constrained_qp::solve (): À©¸Â¤ò %f ¤Ç²ò½ü"
-
-#~ 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 "overdone 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 "unknown paper variable: `%s'"
-#~ msgstr "paper ÊÑ¿ô¤ÎÃͤ¬È½¤ê¤Þ¤»¤ó: `%s'"
-
-#~ msgid "not a real variable"
-#~ msgstr "Ãͤ¬¼Â¿ô¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó"
-
-#~ msgid "improbable offset for object type: `%s'"
-#~ msgstr "¥ª¥Ö¥¸¥§¥¯¥È·¿¤Ë¤È¤Ã¤Æ¤¢¤ê¤½¤¦¤Ë¤Ê¤¤¥ª¥Õ¥»¥Ã¥È: `%s'"
-
-#~ msgid "Can't solve this casting problem exactly; reverting to Word_wrap"
-#~ msgstr "Àµ³Î¤Ë¥­¥ã¥¹¥È¤ò²ò·è¤Ç¤­¤Þ¤»¤ó -- Word_wrap ¤ËÉüµ¢¤·¤Þ¤¹"
-
-#~ msgid "%s elements"
-#~ msgstr "%s ¸Ä¤ÎÍ×ÁÇ"
-
-#~ msgid "no toplevel translator"
-#~ 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 "ÈϰϻØÄê»Ò¤¬Éé¤ÎŤµ¤Ç¤¹"
-
-#~ msgid "I'm too fat; call Oprah"
-#~ msgstr "ÂÀ¤¹¤®¤Þ¤¹ -- Oprah ¤ò¸Æ¤ó¤Ç"
-
-#~ msgid "Solution doesn't satisfy constraints"
-#~ msgstr "¤½¤Î²ò·è¤ÏÀ©¸Â¤òËþ¤¿¤·¤Þ¤»¤ó"
-
-#~ msgid "Improbable distance: %f point, setting to 10 mm"
-#~ msgstr "¤¢¤ê¤½¤¦¤Ë¤Ê¤¤µ÷Î¥: %f ¥Ý¥¤¥ó¥È, 10 mm ¤ËÀßÄꤷ¤Þ¤¹"
-
-#~ msgid "Negative distance, setting to 10 mm"
-#~ msgstr "Éé¤ÎÃͤȤʤëµ÷Î¥, 10 mm ¤ËÀßÄꤷ¤Þ¤¹"
-
-#~ msgid "stem direction set already!"
-#~ msgstr "ÉäÈø¤ÎÊý¸þ¤Ï´û¤Ë¥»¥Ã¥È¤µ¤ì¤Æ¤¤¤Þ¤¹!"
-
-#~ msgid "unequal number of note heads for tie"
-#~ msgstr "¥¿¥¤¤ËÂбþ¤¹¤ëÉ䯬¤Î¿ô¤¬¶ÑÅù¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó"
-
-#~ msgid "cadenza"
-#~ msgstr "cadenza"
-
-#~ msgid "Partial measure must be non-negative"
-#~ msgstr "¾®ÀáÉô¤ÏÈóÉé¤Ç¤Ê¤¯¤Æ¤Ï¤Ê¤ê¤Þ¤»¤ó"
-
-#~ msgid "partial measure too large"
-#~ msgstr "¾®ÀáÉô¤¬Â礭¤¹¤®¤Þ¤¹"
-
-#~ msgid "time signature change not allowed here"
-#~ msgstr "¤³¤³¤Ç¤ÏÇï»Òµ­¹æ¤òÊѹ¹¤Ç¤­¤Þ¤»¤ó"
-
-#~ msgid "Will ignore \\relative for transposed music"
-#~ msgstr "žĴ¤µ¤ì¤¿³Ú¶Ê¤Ï \\relative ¤ò̵»ë¤·¤Þ¤¹"
-
-#~ msgid "Ugh, this measure is too long, breakpoint: %d"
-#~ msgstr "¤¦¤°¤Ã¡¢¤³¤Î¾®Àá¤ÏŤ¹¤®¤Þ¤¹¡£¤­¤ë¾ì½ê: %d"
-
-#~ msgid "Generating stupido solution"
-#~ msgstr "Çϼ¯¤²¤¿²ò·è¤òÀ¸À®Ãæ"
-
-#~ msgid "I don't fit; put me on Montignac"
-#~ msgstr "¾å¼ê¤¯¤Ï¤Þ¤ê¤Þ¤»¤ó -- Montignac ¤Î¤È¤³¤í¤ËÃÖ¤¤¤Æ¤¯¤À¤µ¤¤"
-
-#~ msgid "More than one music block"
-#~ msgstr "Ê£¿ô¤Î³Ú¶Ê¥Ö¥í¥Ã¥¯"
-
-#~ msgid "Need even number of args for shape array"
-#~ msgstr "shape ÇÛÎó¤Ø¤Î°ú¿ô¤Ï¶ö¿ô¤Ç¤Ê¤±¤ì¤Ð¤Ê¤ê¤Þ¤»¤ó"
-
-#~ msgid "Can't abbreviate"
-#~ msgstr "¾Êά¤Ç¤­¤Þ¤»¤ó"
-
-#~ msgid "Can't abbreviate tuplet"
-#~ msgstr "¥¿¥×¥ì¥Ã¥È¤ò¾Êά¤Ç¤­¤Þ¤»¤ó"
-
-#~ msgid "assume no tuplets"
-#~ msgstr "ÉäÅÀ¤ò̵¤¯¤¹¤è¤¦»î¤ß¤Þ¤¹"
diff --git a/po/lilypond.pot b/po/lilypond.pot
deleted file mode 100644
index f72effa0a7..0000000000
--- a/po/lilypond.pot
+++ /dev/null
@@ -1,2292 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
-# This file is distributed under the same license as the PACKAGE package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
-"POT-Creation-Date: 2003-07-18 14:45+0200\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"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=CHARSET\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#. this is where special info is often stored
-#. ###############################################################
-#. lilylib.py -- options and stuff
-#.
-#. source file of the GNU LilyPond music typesetter
-#.
-#. (c)  1998--2003  Han-Wen Nienhuys <hanwen@cs.uu.nl>
-#. Jan Nieuwenhuizen <janneke@gnu.org>
-#. ##  subst:\(^\|[^._a-z]\)\(abspath\|identify\|warranty\|progress\|warning\|error\|exit\|getopt_args\|option_help_str\|options_help_str\|help\|setup_temp\|read_pipe\|system\|cleanup_temp\|strip_extension\|cp_to_dir\|mkdir_p\|init\) *(
-#. ##  replace:\1ly.\2 (
-#. ## subst: \(help_summary\|keep_temp_dir_p\|option_definitions\|original_dir\|program_name\|pseudo_filter_p\|temp_dir\|verbose_p\)
-#. ###############################################################
-#. Users of python modules should include this snippet
-#. and customize variables below.
-#. We'll suffer this path init stuff as long as we don't install our
-#. python packages in <prefix>/lib/pythonx.y (and don't kludge around
-#. it as we do with teTeX on Red Hat Linux: set some environment var
-#. (PYTHONPATH) in profile)
-#. If set, LILYPONDPREFIX must take prevalence
-#. if datadir is not set, we're doing a build and LILYPONDPREFIX
-#. Customize these
-#. lilylib globals
-#: lilylib.py:60
-msgid "lilylib module"
-msgstr ""
-
-#: lilylib.py:63 lilypond-book.py:131 lilypond.py:128 midi2ly.py:100
-#: mup2ly.py:75 main.cc:111
-msgid "print this help"
-msgstr ""
-
-#. ###############################################################
-#. Handle bug in Python 1.6-2.1
-#.
-#. there are recursion limits for some patterns in Python 1.6 til 2.1.
-#. fix this by importing pre instead. Fix by Mats.
-#. Attempt to fix problems with limited stack size set by Python!
-#. Sets unlimited stack size. Note that the resource module only
-#. is available on UNIX.
-#: lilylib.py:114 midi2ly.py:136 mup2ly.py:130 main.cc:188 main.cc:200
-#, c-format, python-format
-msgid "Copyright (c) %s by"
-msgstr ""
-
-#: lilylib.py:114
-msgid " 1998--2003"
-msgstr ""
-
-#: lilylib.py:118
-msgid "Distributed under terms of the GNU General Public License."
-msgstr ""
-
-#: lilylib.py:120
-msgid "It comes with NO WARRANTY."
-msgstr ""
-
-#: lilylib.py:127 midi2ly.py:150 mup2ly.py:144 input.cc:88
-msgid "warning: "
-msgstr ""
-
-#. lots of midi files use plain text for lyric events
-#. FIXME: read from stdin when files[0] = '-'
-#: lilylib.py:130 midi2ly.py:165 midi2ly.py:1018 midi2ly.py:1083 mup2ly.py:147
-#: mup2ly.py:161 input.cc:93
-msgid "error: "
-msgstr ""
-
-#: lilylib.py:134
-#, python-format
-msgid "Exiting (%d)..."
-msgstr ""
-
-#: lilylib.py:194 midi2ly.py:224 mup2ly.py:220
-#, python-format
-msgid "Usage: %s [OPTIONS]... FILE"
-msgstr ""
-
-#: lilylib.py:198 midi2ly.py:228 mup2ly.py:224 main.cc:166
-msgid "Options:"
-msgstr ""
-
-#: lilylib.py:202 midi2ly.py:232 mup2ly.py:228 main.cc:172
-#, c-format, python-format
-msgid "Report bugs to %s."
-msgstr ""
-
-#: lilylib.py:228
-#, python-format
-msgid "Opening pipe `%s'"
-msgstr ""
-
-#. successful pipe close returns 'None'
-#: lilylib.py:240
-#, python-format
-msgid "`%s' failed (%d)"
-msgstr ""
-
-#: lilylib.py:242 lilylib.py:289 lilypond-book.py:231 lilypond.py:512
-msgid "The error log is as follows:"
-msgstr ""
-
-#: lilylib.py:262 midi2ly.py:260 mup2ly.py:256
-#, python-format
-msgid "Invoking `%s'"
-msgstr ""
-
-#: lilylib.py:264
-#, python-format
-msgid "Running %s..."
-msgstr ""
-
-#: lilylib.py:282
-#, python-format
-msgid "`%s' failed (%s)"
-msgstr ""
-
-#: lilylib.py:285 midi2ly.py:266 mup2ly.py:264
-msgid "(ignored)"
-msgstr ""
-
-#: lilylib.py:299 midi2ly.py:276 mup2ly.py:274
-#, python-format
-msgid "Cleaning %s..."
-msgstr ""
-
-#. Duh.  Python style portable: cp *.EXT OUTDIR
-#. system ('cp *.%s %s' % (ext, outdir), 1)
-#. Python < 1.5.2 compatibility
-#.
-#. On most platforms, this is equivalent to
-#. `normpath(join(os.getcwd()), PATH)'.  *Added in Python version 1.5.2*
-#. tex needs lots of memory, more than it gets by default on Debian
-#. TODO: * prevent multiple addition.
-#. * clean TEXINPUTS, MFINPUTS, TFMFONTS,
-#. as these take prevalence over $TEXMF
-#. and thus may break tex run?
-#. $TEXMF is special, previous value is already taken care of
-#. # -sOutputFile does not work with bbox?
-#. # todo:
-#. # have better algorithm for deciding when to crop page,
-#. # and when to show full page
-#: lilylib.py:458
-msgid "Removing output file"
-msgstr ""
-
-#. !@PYTHON@
-#. once upon a rainy monday afternoon.
-#.
-#. ...
-#.
-#. (not finished.)
-#. ABC standard v1.6:  http://www.gre.ac.uk/~c.walshaw/abc2mtex/abc.txt
-#.
-#. Enhancements  (Roy R. Rankin)
-#.
-#. Header section moved to top of lilypond file
-#. handle treble, treble-8, alto, and bass clef
-#. Handle voices (V: headers) with clef and part names, multiple voices
-#. Handle w: lyrics with multiple verses
-#. Handle key mode names for minor, major, phrygian, ionian, locrian, aeolian,
-#. mixolydian, lydian, dorian
-#. Handle part names from V: header
-#. Tuplets handling fixed up
-#. Lines starting with |: not discarded as header lines
-#. Multiple T: and C: header entries handled
-#. Accidental maintained until next bar check
-#. Silent rests supported
-#. articulations fermata, upbow, downbow, ltoe, accent, tenuto supported
-#. Chord strings([-^]"string") can contain a '#'
-#. Header fields enclosed by [] in notes string processed
-#. W: words output after tune as abc2ps does it (they failed before)
-#. Enhancements (Laura Conrad)
-#.
-#. Barring now preserved between ABC and lilypond
-#. the default placement for text in abc is above the staff.
-#. %%LY now supported.
-#. \breve and \longa supported.
-#. M:none doesn't crash lily.
-#. Limitations
-#.
-#. Multiple tunes in single file not supported
-#. Blank T: header lines should write score and open a new score
-#. Not all header fields supported
-#. ABC line breaks are ignored
-#. Block comments generate error and are ignored
-#. Postscript commands are ignored
-#. lyrics not resynchronized by line breaks (lyrics must fully match notes)
-#. %%LY slyrics can't be directly before a w: line.
-#. ???
-#. TODO:
-#.
-#. Convert to new chord styles.
-#.
-#. UNDEF -> None
-#.
-#. uGUHGUHGHGUGH
-#. UGH
-#. treble8 is used by abctab2ps; -8va is used by barfly,
-#. and by my patch to abc2ps. If there's ever a standard
-#. about this we'll support that.
-#. find keywork
-#. assume that Q takes the form "Q:1/4=120"
-#. There are other possibilities, but they are deprecated
-#. outf.write ("\t\t\\consists Staff_margin_engraver\n")
-#. pitch manipulation. Tuples are (name, alteration).
-#. 0 is (central) C. Alteration -1 is a flat, Alteration +1 is a sharp
-#. pitch in semitones.
-#. abc to lilypond key mode names
-#. semitone shifts for key mode names
-#. latex does not like naked #'s
-#. latex does not like naked "'s
-#. break lyrics to words and put "'s around words containing numbers and '"'s
-#. escape "
-#. _ causes probs inside ""
-#. _ to ' _ '
-#. split words with -
-#. unless \-
-#. ~ to space('_')
-#. * to to space
-#. latex does not like naked #'s
-#. put numbers and " and ( into quoted string
-#. insure space between lines
-#. title
-#. strip trailing blanks
-#. Meter
-#. KEY
-#. seperate clef info
-#. there may or may not be a space
-#. between the key letter and the mode
-#. ugh.
-#. ugh.
-#. Notes
-#. Origin
-#. Reference Number
-#. Area
-#. History
-#. Book
-#. Composer
-#. Default note length
-#. Voice
-#. Words
-#. vocals
-#. tempo
-#. we use in this order specified accidental, active accidental for bar,
-#. active accidental for key
-#. (num /  den)  / defaultlen < 1/base
-#. return (str, num,den,dots)
-#. ignore slide
-#. ignore roll
-#. s7m2 input doesnt care about spaces
-#.
-#. remember accidental for rest of bar
-#.
-#. get accidental set in this bar or UNDEF if not set
-#. WAT IS ABC EEN ONTZETTENDE PROGRAMMEERPOEP  !
-#. failed; not a note!
-#. escape '#'s
-#.
-#. |] thin-thick double bar line
-#. || thin-thin double bar line
-#. [| thick-thin double bar line
-#. :| left repeat
-#. |: right repeat
-#. :: left-right repeat
-#. |1 volta 1
-#. |2 volta 2
-#. first try the longer one
-#. bracket escape
-#. the nobarlines option is necessary for an abc to lilypond translator for
-#. exactly the same reason abc2midi needs it: abc requires the user to enter
-#. the note that will be printed, and MIDI and lilypond expect entry of the
-#. pitch that will be played.
-#.
-#. In standard 19th century musical notation, the algorithm for translating
-#. between printed note and pitch involves using the barlines to determine
-#. the scope of the accidentals.
-#.
-#. Since ABC is frequently used for music in styles that do not use this
-#. convention, such as most music written before 1700, or ethnic music in
-#. non-western scales, it is necessary to be able to tell a translator that
-#. the barlines should not affect its interpretation of the pitch.
-#. write other kinds of appending  if we ever need them.
-#. add comments to current voice
-#. Try nibbling characters off until the line doesn't change.
-#. dump_global (outf)
-#. !@PYTHON@
-#.
-#. convert-ly.py -- Update old LilyPond input files (fix name?)
-#.
-#. source file of the GNU LilyPond music typesetter
-#.
-#. (c)  1998--2003  Han-Wen Nienhuys <hanwen@cs.uu.nl>
-#. Jan Nieuwenhuizen <janneke@gnu.org>
-#. TODO
-#. use -f and -t for -s output
-#. NEWS
-#. 0.2
-#. - rewrite in python
-#. Did we ever have \mudela-version?  I doubt it.
-#. lilypond_version_re_str = '\\\\version *\"(.*)\"'
-#. ###########################
-#. need new a namespace
-#. raise FatalConversionError()
-#. need new a namespace
-#. harmful to current .lys
-#. str = re.sub ('\\\\key([^;]+);', '\\\\accidentals \\1;', str)
-#. raise FatalConversionError()
-#. raise FatalConversionError()
-#. raise FatalConversionError()
-#. TODO: lots of other syntax change should be done here as well
-#. Ugh, but meaning of \stemup changed too
-#. maybe we should do \stemup -> \stemUp\slurUp\tieUp ?
-#. I don't know exactly when these happened...
-#. ugh, we loose context setting here...
-#. (lacks capitalisation slur -> Slur)
-#. # dynamic..
-#. TODO: add lots of these
-#. ugh
-#. old fix
-#. Make sure groups of more than one ; have space before
-#. them, so that non of them gets removed by next rule
-#. Only remove ; that are not after spaces, # or ;
-#. Otherwise  we interfere with Scheme comments,
-#. which is badbadbad.
-#. 40 ?
-#. ###############################
-#. END OF CONVERSIONS
-#. ###############################
-#. !@PYTHON@
-#. info mostly taken from looking at files. See also
-#. http://lilypond.org/wiki/?EnigmaTransportFormat
-#. This supports
-#.
-#. * notes
-#. * rests
-#. * ties
-#. * slurs
-#. * lyrics
-#. * articulation
-#. * grace notes
-#. * tuplets
-#.
-#. todo:
-#. * slur/stem directions
-#. * voices (2nd half of frame?)
-#. * more intelligent lyrics
-#. * beams (better use autobeam?)
-#. * more robust: try entertainer.etf (freenote)
-#. * dynamics
-#. * empty measures (eg. twopt03.etf from freenote)
-#.
-#. uGUHGUHGHGUGH
-#. notename 0 == central C
-#. represent pitches as (notename, alteration), relative to C-major scale
-#. a fifth up
-#. should cache this.
-#. flag1 isn't all that interesting.
-#. 3: '>',
-#. 18: '\arpeggio' ,
-#. do grace notes.
-#. ugh.
-#. we don't attempt voltas since they fail easily.
-#. and g.repeat_bar == '|:' or g.repeat_bar == ':|:' or g.bracket:
-#. 4 layers.
-#. let's not do this: this really confuses when eE happens to be before  a ^text.
-#. if last_tag and last_indices:
-#. etf_file_dict[last_tag][last_indices].append (l)
-#. # do it
-#. staff-spec
-#. should use \addlyrics ?
-#. !@PYTHON@
-#. vim: set noexpandtab:
-#. This is was the idea for handling of comments:
-#. Multiline comments, @ignore .. @end ignore is scanned for
-#. in read_doc_file, and the chunks are marked as 'ignore', so
-#. lilypond-book will not touch them any more. The content of the
-#. chunks are written to the output file. Also 'include' and 'input'
-#. regex has to check if they are commented out.
-#.
-#. Then it is scanned for 'lilypond', 'lilypond-file' and 'lilypond-block'.
-#. These three regex's has to check if they are on a commented line,
-#. % for latex, @c for texinfo.
-#.
-#. Then lines that are commented out with % (latex) and @c (Texinfo)
-#. are put into chunks marked 'ignore'. This cannot be done before
-#. searching for the lilypond-blocks because % is also the comment character
-#. for lilypond.
-#.
-#. The the rest of the rexeces are searched for. They don't have to test
-#. if they are on a commented out line.
-#. ###############################################################
-#. Users of python modules should include this snippet
-#. and customize variables below.
-#. We'll suffer this path init stuff as long as we don't install our
-#. python packages in <prefix>/lib/pythonx.y (and don't kludge around
-#. it as we do with teTeX on Red Hat Linux: set some environment var
-#. (PYTHONPATH) in profile)
-#. If set, LILYPONDPREFIX must take prevalence
-#. if datadir is not set, we're doing a build and LILYPONDPREFIX
-#. Customize these
-#. if __name__ == '__main__':
-#. lilylib globals
-#. temp_dir = os.path.join (original_dir,  '%s.dir' % program_name)
-#. urg
-#. # FIXME
-#. # do -P or -p by default?
-#. #help_summary = _ ("Run LilyPond using LaTeX for titling")
-#: lilypond-book.py:120
-msgid "Process LilyPond snippets in hybrid html, LaTeX or texinfo document"
-msgstr ""
-
-#. another bug in option parser: --output=foe is taken as an abbreviation
-#. for --output-format
-#: lilypond-book.py:125 main.cc:110
-msgid "EXT"
-msgstr ""
-
-#: lilypond-book.py:125
-msgid "use output format EXT (texi [default], texi-html, latex, html)"
-msgstr ""
-
-#: lilypond-book.py:126 lilypond-book.py:127 lilypond-book.py:129
-#: lilypond-book.py:130
-msgid "DIM"
-msgstr ""
-
-#: lilypond-book.py:126
-msgid "default fontsize for music.  DIM is assumed to be in points"
-msgstr ""
-
-#: lilypond-book.py:127
-msgid "deprecated, use --default-music-fontsize"
-msgstr ""
-
-#: lilypond-book.py:128
-msgid "OPT"
-msgstr ""
-
-#: lilypond-book.py:128
-msgid "pass OPT quoted to the lilypond command line"
-msgstr ""
-
-#: lilypond-book.py:129
-msgid "force fontsize for all inline lilypond. DIM is assumed be to in points"
-msgstr ""
-
-#: lilypond-book.py:130
-msgid "deprecated, use --force-music-fontsize"
-msgstr ""
-
-#: lilypond-book.py:132 lilypond.py:130 main.cc:113 main.cc:118
-msgid "DIR"
-msgstr ""
-
-#: lilypond-book.py:132
-msgid "include path"
-msgstr ""
-
-#: lilypond-book.py:133
-msgid "write dependencies"
-msgstr ""
-
-#: lilypond-book.py:134
-msgid "PREF"
-msgstr ""
-
-#: lilypond-book.py:134
-msgid "prepend PREF before each -M dependency"
-msgstr ""
-
-#: lilypond-book.py:135
-msgid "don't run lilypond"
-msgstr ""
-
-#: lilypond-book.py:136
-msgid "don't generate pictures"
-msgstr ""
-
-#: lilypond-book.py:137
-msgid "strip all lilypond blocks from output"
-msgstr ""
-
-#: lilypond-book.py:138 lilypond-book.py:139 lilypond.py:135 lilypond.py:136
-#: midi2ly.py:102 main.cc:114 main.cc:117
-msgid "FILE"
-msgstr ""
-
-#: lilypond-book.py:138
-msgid "filename main output file"
-msgstr ""
-
-#: lilypond-book.py:139
-msgid "where to place generated files"
-msgstr ""
-
-#: lilypond-book.py:140 lilypond.py:137
-msgid "RES"
-msgstr ""
-
-#: lilypond-book.py:141 lilypond.py:138
-msgid "set the resolution of the preview to RES"
-msgstr ""
-
-#: lilypond-book.py:142 lilypond.py:148 midi2ly.py:105 mup2ly.py:78 main.cc:126
-msgid "be verbose"
-msgstr ""
-
-#: lilypond-book.py:143
-msgid "print version information"
-msgstr ""
-
-#: lilypond-book.py:144 lilypond.py:150 midi2ly.py:107 mup2ly.py:80 main.cc:127
-msgid "show warranty and copyright"
-msgstr ""
-
-#. format specific strings, ie. regex-es for input, and % strings for output
-#. global variables
-#. lilypond_binary = 'valgrind --suppressions=/home/hanwen/usr/src/guile-1.6.supp  --num-callers=10 /home/hanwen/usr/src/lilypond/lily/out/lilypond'
-#. only use installed binary  when we're installed too.
-#. only use installed binary  when we're installed too.
-#. ###############################################################
-#. Dimension handling for LaTeX.
-#.
-#. Ugh.  (La)TeX writes progress and error messages on stdout
-#. Redirect to stderr
-#: lilypond-book.py:230
-msgid "LaTeX failed."
-msgstr ""
-
-#. URG see lilypond
-#. Convert numeric values, with or without specific dimension, to floats.
-#. Keep other strings
-#. ###############################################################
-#. How to output various structures.
-#. # maybe <hr> ?
-#. Verbatim text is always finished with \n.  FIXME: For HTML,
-#. this newline should be removed.
-#. Verbatim text is always finished with \n.  FIXME: For HTML,
-#. this newline should be removed.
-#. # Ugh we need to differentiate on origin:
-#. # lilypond-block origin wants an extra <p>, but
-#. # inline music doesn't.
-#. # possibly other center options?
-#. verbatim text is always finished with \n
-#. verbatim text is always finished with \n
-#. verbatim text is always finished with \n
-#. verbatim text is always finished with \n
-#. do some tweaking: @ is needed in some ps stuff.
-#.
-#. ugh, the <p> below breaks inline images...
-#. clumsy workaround for python 2.2 pre bug.
-#. ###############################################################
-#. Recognize special sequences in the input
-#. Warning: This uses extended regular expressions.  Tread with care.
-#.
-#. legenda
-#.
-#. (?P<name>regex) -- assign result of REGEX to NAME
-#. *? -- match non-greedily.
-#. (?m) -- multiline regex: make ^ and $ match at each line
-#. (?s) -- make the dot match all characters including newline
-#. why do we have distinction between @mbinclude and @include?
-#. # we'd like to catch and reraise a more
-#. # detailed error, but alas, the exceptions
-#. # changed across the 1.5/2.1 boundary.
-#. ughUGH not original options
-#. First we want to scan the \documentclass line
-#. it should be the first non-comment line.
-#. The only thing we really need to know about the \documentclass line
-#. is if there are one or two columns to begin with.
-#. Then we add everything before \begin{document} to
-#. paperguru.m_document_preamble so that we can later write this header
-#. to a temporary file in find_latex_dims() to find textwidth.
-#. this is not bulletproof..., it checks the first 10 chunks
-#. newchunks.extend (func (m))
-#. python 1.5 compatible:
-#. we have to check for verbatim before doing include,
-#. because we don't want to include files that are mentioned
-#. inside a verbatim environment
-#. ugh fix input
-#. # Hmm, we should hash only lilypond source, and skip the
-#. # %options are ...
-#. # comment line
-#. # todo: include path, but strip
-#. # first part of the path.
-#. format == 'html'
-#. ugh rename
-#. Count sections/chapters.
-#. # TODO: do something like
-#. # this for texinfo/latex as well ?
-#. ugh
-#. fixme: be sys-independent.
-#.
-#. Ugh, fixing up dependencies for .tex generation
-#.
-#. Ugh.  (La)TeX writes progress and error messages on stdout
-#. Redirect to stderr
-#. # There used to be code to write .tex dependencies, but
-#. # that is silly: lilypond-book has its own dependency scheme
-#. # to ensure that all lily-XXX.tex files are there
-#. # TODO: put file name in front of texidoc.
-#. #
-#. # what's this? Docme --hwn
-#. #
-#. #docme: why global?
-#. Do It.
-#. should chmod -w
-#: lilypond-book.py:1557 lilypond.py:673 midi2ly.py:1018
-#, python-format
-msgid "getopt says: `%s'"
-msgstr ""
-
-#. HACK
-#. status = os.system ('lilypond -w')
-#: lilypond-book.py:1630 lilypond.py:777
-msgid "no files specified on command line"
-msgstr ""
-
-#.
-#. Petr, ik zou willen dat ik iets zinvoller deed,
-#. maar wat ik kan ik doen, het verandert toch niets?
-#. --hwn 20/aug/99
-#. !@PYTHON@
-#.
-#. lilypond.py -- Run LilyPond, add titles to bare score, generate printable
-#. document
-#. Invokes: lilypond, latex (or pdflatex), dvips, ps2pdf, gs
-#.
-#. source file of the GNU LilyPond music typesetter
-#.
-#. (c)  1998--2003  Han-Wen Nienhuys <hanwen@cs.uu.nl>
-#. Jan Nieuwenhuizen <janneke@gnu.org>
-#. This is the third incarnation of lilypond.
-#.
-#. Earlier incarnations of lilypond were written by
-#. Jeffrey B. Reed<daboys@austin.rr.com> (Python version)
-#. Jan Arne Fagertun <Jan.A.Fagertun@@energy.sintef.no> (Bourne shell script)
-#.
-#. Note: gettext work best if we use ' for docstrings and "
-#. for gettextable strings.
-#. --> DO NOT USE ''' for docstrings.
-#. ###############################################################
-#. Users of python modules should include this snippet
-#. and customize variables below.
-#. We'll suffer this path init stuff as long as we don't install our
-#. python packages in <prefix>/lib/pythonx.y (and don't kludge around
-#. it as we do with teTeX on Red Hat Linux: set some environment var
-#. (PYTHONPATH) in profile)
-#. If set, LILYPONDPREFIX must take prevalence
-#. if datadir is not set, we're doing a build and LILYPONDPREFIX
-#. Customize these
-#. if __name__ == '__main__':
-#. lilylib globals
-#. # FIXME
-#. # do -P or -p by default?
-#. #help_summary = _ ("Run LilyPond using LaTeX for titling")
-#: lilypond.py:121
-msgid "Run LilyPond, add titles, generate printable document."
-msgstr ""
-
-#: lilypond.py:127 main.cc:115
-msgid "write Makefile dependencies for every input file"
-msgstr ""
-
-#: lilypond.py:129
-msgid "print even more output"
-msgstr ""
-
-#: lilypond.py:130
-msgid "add DIR to LilyPond's search path"
-msgstr ""
-
-#: lilypond.py:132
-#, python-format
-msgid "keep all output, output to directory %s.dir"
-msgstr ""
-
-#: lilypond.py:133
-msgid "don't run LilyPond"
-msgstr ""
-
-#: lilypond.py:134 main.cc:116
-msgid "produce MIDI output only"
-msgstr ""
-
-#: lilypond.py:135 midi2ly.py:102
-msgid "write output to FILE"
-msgstr ""
-
-#: lilypond.py:136
-msgid "find pfa fonts used in FILE"
-msgstr ""
-
-#: lilypond.py:139
-msgid "generate PostScript output"
-msgstr ""
-
-#: lilypond.py:140
-msgid "generate PNG page images"
-msgstr ""
-
-#: lilypond.py:141
-msgid "generate PS.GZ"
-msgstr ""
-
-#: lilypond.py:142
-msgid "generate PDF output"
-msgstr ""
-
-#: lilypond.py:143
-msgid "use pdflatex to generate a PDF output"
-msgstr ""
-
-#. FIXME: preview, picture; to indicate creation of a PNG?
-#: lilypond.py:145
-msgid "make a picture of the first system"
-msgstr ""
-
-#: lilypond.py:146
-msgid "make HTML file with links to all output"
-msgstr ""
-
-#: lilypond.py:147
-msgid "KEY=VAL"
-msgstr ""
-
-#: lilypond.py:147
-msgid "change global setting KEY to VAL"
-msgstr ""
-
-#: lilypond.py:149 midi2ly.py:106 mup2ly.py:79 main.cc:125
-msgid "print version number"
-msgstr ""
-
-#. other globals
-#. Pdftex support
-#. # yuk.
-#. lilypond_binary = 'valgrind --suppressions=%(home)s/usr/src/guile-1.6.supp --num-callers=10 %(home)s/usr/src/lilypond/lily/out/lilypond '% { 'home' : '/home/hanwen' }
-#. only use installed binary  when we're installed too.
-#. init to empty; values here take precedence over values in the file
-#. # TODO: change name.
-#. for geometry v3
-#. Output formats that lilypond should create
-#. what a name.
-#. ly.warning (_ ("invalid value: %s") % `val`)
-#. ly.warning (_ ("invalid value: %s") % `val`)
-#: lilypond.py:232
-#, python-format
-msgid "no such setting: `%s'"
-msgstr ""
-
-#. 2 == user interrupt.
-#: lilypond.py:274
-#, python-format
-msgid "LilyPond crashed (signal %d)."
-msgstr ""
-
-#: lilypond.py:275
-msgid "Please submit a bug report to bug-lilypond@gnu.org"
-msgstr ""
-
-#: lilypond.py:281
-#, python-format
-msgid "LilyPond failed on input file %s (exit status %d)"
-msgstr ""
-
-#: lilypond.py:284
-#, python-format
-msgid "LilyPond failed on an input file (exit status %d)"
-msgstr ""
-
-#: lilypond.py:285
-msgid "Continuing..."
-msgstr ""
-
-#. urg
-#: lilypond.py:296
-#, python-format
-msgid "Analyzing %s..."
-msgstr ""
-
-#. search only the first 10k
-#: lilypond.py:354
-#, python-format
-msgid "no LilyPond output found for `%s'"
-msgstr ""
-
-#. The final \n seems important here. It ensures that the footers and taglines end up on the right page.
-#. TODO: should set textheight (enlarge) depending on papersize.
-#: lilypond.py:397
-#, python-format
-msgid "invalid value: `%s'"
-msgstr ""
-
-#. set sane geometry width (a4-width) for linewidth = -1.
-#. who the hell is 597 ?
-#. Ugh.  (La)TeX writes progress and error messages on stdout
-#. Redirect to stderr
-#: lilypond.py:511
-msgid "LaTeX failed on the output file."
-msgstr ""
-
-#. make a preview by rendering only the 1st line
-#. of each score
-#: lilypond.py:568
-msgid ""
-"Trying create PDF, but no PFA fonts found.\n"
-"Using bitmap fonts instead. This will look bad."
-msgstr ""
-
-#. ugh. Different targets?
-#. Added as functionality to lilypond, because lilypond may well need to do this
-#. in future too.
-#. no ps header?
-#: lilypond.py:615
-#, python-format
-msgid "not a PostScript file: `%s'"
-msgstr ""
-
-#. todo
-#: lilypond.py:660
-#, python-format
-msgid "Writing HTML menu `%s'"
-msgstr ""
-
-#. signal programming error
-#. Don't convert input files to abspath, rather prepend '.' to include
-#. path.
-#. As a neat trick, add directory part of first input file
-#. to include path.  That way you can do without the clumsy -I in:
-#. lilypond -I foe/bar/baz foo/bar/baz/baz.ly
-#: lilypond.py:769
-msgid "pseudo filter"
-msgstr ""
-
-#: lilypond.py:772
-msgid "pseudo filter only for single input file"
-msgstr ""
-
-#. Ugh, maybe make a setup () function
-#. hmmm. Wish I'd 've written comments when I wrote this.
-#. now it looks complicated.
-#: lilypond.py:806
-#, python-format
-msgid "filename should not contain spaces: `%s'"
-msgstr ""
-
-#. to be sure, add tmpdir *in front* of inclusion path.
-#. os.environ['TEXINPUTS'] =  tmpdir + ':' + os.environ['TEXINPUTS']
-#. We catch all exceptions, because we need to do stuff at exit:
-#. * copy any successfully generated stuff from tempdir and
-#. notify user of that
-#. * cleanout tempdir
-#. ## ARGH. This also catches python programming errors.
-#. ## this should only catch lilypond nonzero exit  status
-#. ## --hwn
-#. TODO: friendly message about LilyPond setup/failing?
-#.
-#: lilypond.py:845
-msgid "Running LilyPond failed. Rerun with --verbose for a trace."
-msgstr ""
-
-#. Our LilyPond pseudo filter always outputs to 'lelie'
-#. have subsequent stages and use 'lelie' output.
-#. unless: add --tex, or --latex?
-#. TODO: friendly message about TeX/LaTeX setup,
-#. trying to run tex/latex by hand
-#: lilypond.py:886
-msgid "Failed to make PS file. Rerun with --verbose for a trace."
-msgstr ""
-
-#. unless: add --tex, or --latex?
-#. TODO: friendly message about TeX/LaTeX setup,
-#. trying to run tex/latex by hand
-#: lilypond.py:916
-msgid "Running LaTeX falied. Rerun with --verbose for a trace."
-msgstr ""
-
-#. add DEP to targets?
-#: lilypond.py:926 input-file-results.cc:68
-#, c-format, python-format
-msgid "dependencies output to `%s'..."
-msgstr ""
-
-#: lilypond.py:937
-#, python-format
-msgid "%s output to <stdout>..."
-msgstr ""
-
-#: lilypond.py:942 lilypond.py:968 includable-lexer.cc:57
-#: input-file-results.cc:191 input-file-results.cc:197 lily-guile.cc:86
-#, c-format, python-format
-msgid "can't find file: `%s'"
-msgstr ""
-
-#. Hmm, if this were a function, we could call it the except: clauses
-#: lilypond.py:965
-#, python-format
-msgid "%s output to %s..."
-msgstr ""
-
-#. !@PYTHON@
-#.
-#. midi2ly.py -- LilyPond midi import script
-#.
-#. source file of the GNU LilyPond music typesetter
-#.
-#. (c)  1998--2003  Han-Wen Nienhuys <hanwen@cs.uu.nl>
-#. Jan Nieuwenhuizen <janneke@gnu.org>
-#. ###############################################################
-#. Users of python modules should include this snippet.
-#.
-#. This soon to be removed for: import lilypond.lilylib as ly
-#. ###############################################################
-#. ###############################################################
-#. ############### CONSTANTS
-#. ###############################################################
-#. temp_dir = os.path.join (original_dir,  '%s.dir' % program_name)
-#. original_dir = os.getcwd ()
-#. keep_temp_dir_p = 0
-#: midi2ly.py:94
-msgid "Convert MIDI to LilyPond source."
-msgstr ""
-
-#: midi2ly.py:97
-msgid "print absolute pitches"
-msgstr ""
-
-#: midi2ly.py:98 midi2ly.py:103
-msgid "DUR"
-msgstr ""
-
-#: midi2ly.py:98
-msgid "quantise note durations on DUR"
-msgstr ""
-
-#: midi2ly.py:99
-msgid "print explicit durations"
-msgstr ""
-
-#: midi2ly.py:101
-msgid "ALT[:MINOR]"
-msgstr ""
-
-#: midi2ly.py:101
-msgid "set key: ALT=+sharps|-flats; MINOR=1"
-msgstr ""
-
-#: midi2ly.py:103
-msgid "quantise note starts on DUR"
-msgstr ""
-
-#: midi2ly.py:104
-msgid "DUR*NUM/DEN"
-msgstr ""
-
-#: midi2ly.py:104
-msgid "allow tuplet durations DUR*NUM/DEN"
-msgstr ""
-
-#: midi2ly.py:108
-msgid "treat every text as a lyric"
-msgstr ""
-
-#: midi2ly.py:136 mup2ly.py:130
-msgid " 2001--2003"
-msgstr ""
-
-#: midi2ly.py:141 mup2ly.py:135
-msgid ""
-"\n"
-"Distributed under terms of the GNU General Public License. It comes with\n"
-"NO WARRANTY."
-msgstr ""
-
-#: midi2ly.py:166 mup2ly.py:162
-msgid "Exiting ... "
-msgstr ""
-
-#: midi2ly.py:264 mup2ly.py:261
-#, python-format
-msgid "command exited with value %d"
-msgstr ""
-
-#. ###############################################################
-#. END Library
-#. ###############################################################
-#. hmm
-#. major scale: do-do
-#. minor scale: la-la  (= + 5) '''
-#. By tradition, all scales now consist of a sequence
-#. of 7 notes each with a distinct name, from amongst
-#. a b c d e f g.  But, minor scales have a wide
-#. second interval at the top - the 'leading note' is
-#. sharped. (Why? it just works that way! Anything
-#. else doesn't sound as good and isn't as flexible at
-#. saying things. In medieval times, scales only had 6
-#. notes to avoid this problem - the hexachords.)
-#. So, the d minor scale is d e f g a b-flat c-sharp d
-#. - using d-flat for the leading note would skip the
-#. name c and duplicate the name d.  Why isn't c-sharp
-#. put in the key signature? Tradition. (It's also
-#. supposedly based on the Pythagorean theory of the
-#. cycle of fifths, but that really only applies to
-#. major scales...)  Anyway, g minor is g a b-flat c d
-#. e-flat f-sharp g, and all the other flat minor keys
-#. end up with a natural leading note. And there you
-#. have it.
-#. John Sankey <bf250@freenet.carleton.ca>
-#.
-#. Let's also do a-minor: a b c d e f gis a
-#.
-#. --jcn
-#. as -> gis
-#. des -> cis
-#. ges -> fis
-#. g -> fisis
-#. d -> cisis
-#. a -> gisis
-#. b -> ces
-#. e -> fes
-#. f -> eis
-#. c -> bis
-#. # FIXME: compile fix --jcn
-#. TODO: move space
-#. fis cis gis dis ais eis bis
-#. bes es as des ges ces fes
-#. urg, we should be sure that we're in a lyrics staff
-#. all include ALL_NOTES_OFF
-#. ugh, must set key while parsing
-#. because Note init uses key
-#. Better do Note.calc () at dump time?
-#. last_lyric.clocks = t - last_time
-#. hmm
-#. urg, this will barf at meter changes
-#. urg LilyPond doesn't start at c4, but
-#. remembers from previous tracks!
-#. reference_note = Note (clocks_per_4, 4*12, 0)
-#. must be in \notes mode for parsing \skip
-#: midi2ly.py:1002
-#, python-format
-msgid "%s output to `%s'..."
-msgstr ""
-
-#: midi2ly.py:1033
-msgid "Example:"
-msgstr ""
-
-#: midi2ly.py:1083
-msgid "no files specified on command line."
-msgstr ""
-
-#. !@PYTHON@
-#. mup2ly.py -- mup input converter
-#.
-#. source file of the GNU LilyPond music typesetter
-#.
-#. (c) 2001
-#. if set, LILYPONDPREFIX must take prevalence
-#. if datadir is not set, we're doing a build and LILYPONDPREFIX
-#: mup2ly.py:70
-msgid "Convert mup to LilyPond source."
-msgstr ""
-
-#: mup2ly.py:73
-msgid "debug"
-msgstr ""
-
-#: mup2ly.py:74
-msgid "define macro NAME [optional expansion EXP]"
-msgstr ""
-
-#: mup2ly.py:76 main.cc:117
-msgid "write output to FILE"
-msgstr ""
-
-#: mup2ly.py:77
-msgid "only pre-process"
-msgstr ""
-
-#. Duh.  Python style portable: cp *.EXT OUTDIR
-#. system ('cp *.%s %s' % (ext, outdir), 1)
-#. Python < 1.5.2 compatibility
-#.
-#. On most platforms, this is equivalent to
-#. `normpath(join(os.getcwd()), PATH)'.  *Added in Python version 1.5.2*
-#. if set, LILYPONDPREFIX must take prevalence
-#. if datadir is not set, we're doing a build and LILYPONDPREFIX
-#. ###############################################################
-#. END Library
-#.
-#. PMX cut and paste
-#.
-#. if not self.entries:
-#. #return '\n'
-#. #ugh ugh
-#. return '\n%s = {}\n\n' % self.idstring ()
-#. ugh
-#. def set_clef (self, letter):
-#. clstr = clef_table[letter]
-#. self.voices[0].add_nonchord (Clef (clstr))
-#. urg
-#. maybe use import copy?
-#. for i in self.pitches:
-#. ch.pitches.append (i)
-#. for i in self.scripts:
-#. ch.scripts.append (i)
-#. http://www.arkkra.com/doc/uguide/contexts.html
-#. #self.current_staffs = []
-#. duh
-#. FIXME: 1?
-#. FIXME: does key play any role in this?
-#. ch = self.current_voices[0].last_chord ()
-#. ch.basic_duration = self.current_voices[0].last_chord ().basic_duration
-#. ugh
-#. ch = self.current_voices[0].last_chord ()
-#. `;' is not a separator, chords end with ';'
-#. mup resets default duration and pitch each bar
-#. ugh: these (and lots more) should also be parsed in
-#. context staff.  we should have a class Staff_properties
-#. and parse/set all those.
-#. shortcut: set to official mup maximum (duh)
-#. self.set_staffs (40)
-#: mup2ly.py:1076
-#, python-format
-msgid "no such context: %s"
-msgstr ""
-
-#. hmm
-#. dig this: mup allows ifdefs inside macro bodies
-#. don't do nested multi-line defines
-#. duh: mup is strictly line-based, except for `define',
-#. which is `@' terminated and may span several lines
-#. don't define new macros in unactive areas
-#. To support nested multi-line define's
-#. process_function and macro_name, macro_body
-#. should become lists (stacks)
-#. The mup manual is undetermined on this
-#. and I haven't seen examples doing it.
-#.
-#. don't do nested multi-line define's
-#. writes to stdout for help2man
-#. don't call
-#. identify ()
-#. sys.stdout.flush ()
-#. handy emacs testing
-#. if not files:
-#. files = ['template.mup']
-#: mup2ly.py:1300
-#, python-format
-msgid "Processing `%s'..."
-msgstr ""
-
-#: mup2ly.py:1319
-#, python-format
-msgid "Writing `%s'..."
-msgstr ""
-
-#: getopt-long.cc:146
-#, c-format
-msgid "option `%s' requires an argument"
-msgstr ""
-
-#: getopt-long.cc:150
-#, c-format
-msgid "option `%s' doesn't allow an argument"
-msgstr ""
-
-#: getopt-long.cc:154
-#, c-format
-msgid "unrecognized option: `%s'"
-msgstr ""
-
-#: getopt-long.cc:161
-#, c-format
-msgid "invalid argument `%s' to option `%s'"
-msgstr ""
-
-#: warn.cc:25
-#, c-format
-msgid "warning: %s\n"
-msgstr ""
-
-#: warn.cc:31
-#, c-format
-msgid "error: %s\n"
-msgstr ""
-
-#: warn.cc:44
-#, c-format
-msgid "programming error: %s (Continuing; cross thumbs)\n"
-msgstr ""
-
-#: accidental.cc:202 key-signature-interface.cc:137
-#, c-format
-msgid "accidental `%s' not found"
-msgstr ""
-
-#: accidental-engraver.cc:171 new-accidental-engraver.cc:238
-#, c-format
-msgid "Accidental typesetting list must begin with context-name: %s"
-msgstr ""
-
-#: accidental-engraver.cc:196 new-accidental-engraver.cc:263
-#, c-format
-msgid "unknown accidental typesetting: %s. Ignored"
-msgstr ""
-
-#: accidental-engraver.cc:212 new-accidental-engraver.cc:279
-#, c-format
-msgid "Symbol is not a parent context: %s. Ignored"
-msgstr ""
-
-#: accidental-engraver.cc:215 new-accidental-engraver.cc:282
-#, c-format
-msgid "Accidental typesetting must be pair or context-name: %s"
-msgstr ""
-
-#: afm.cc:66
-#, c-format
-msgid "can't find character number: %d"
-msgstr ""
-
-#: afm.cc:81
-#, c-format
-msgid "can't find character called: `%s'"
-msgstr ""
-
-#: afm.cc:142
-#, c-format
-msgid "Error parsing AFM file: `%s'"
-msgstr ""
-
-#: all-font-metrics.cc:95
-#, c-format
-msgid "checksum mismatch for font file: `%s'"
-msgstr ""
-
-#: all-font-metrics.cc:97
-#, c-format
-msgid "does not match: `%s'"
-msgstr ""
-
-#: all-font-metrics.cc:102
-msgid ""
-" Rebuild all .afm files, and remove all .pk and .tfm files.  Rerun with -V "
-"to show font paths."
-msgstr ""
-
-#: all-font-metrics.cc:103
-msgid ""
-"A script for removing font-files is delivered with the source-code,\n"
-"in buildscripts/clean-fonts.sh"
-msgstr ""
-
-#: all-font-metrics.cc:169
-#, c-format
-msgid "can't find font: `%s'"
-msgstr ""
-
-#: all-font-metrics.cc:170
-msgid "Loading default font"
-msgstr ""
-
-#: all-font-metrics.cc:185
-#, c-format
-msgid "can't find default font: `%s'"
-msgstr ""
-
-#: all-font-metrics.cc:186 includable-lexer.cc:59 input-file-results.cc:192
-#, c-format
-msgid "(search path: `%s')"
-msgstr ""
-
-#: all-font-metrics.cc:187
-msgid "Giving up"
-msgstr ""
-
-#: auto-change-iterator.cc:43 change-iterator.cc:60
-#: part-combine-music-iterator.cc:120
-msgid "Can't switch translators, I'm there already"
-msgstr ""
-
-#: bar-check-iterator.cc:51
-#, c-format
-msgid "barcheck failed at: %s"
-msgstr ""
-
-#: beam.cc:146
-msgid "beam has less than two visible stems"
-msgstr ""
-
-#: beam.cc:151
-msgid "Beam has less than two stems. Removing beam."
-msgstr ""
-
-#: beam.cc:976
-msgid ""
-"Not sure that we can find a nice beam slope (no viable initial configuration "
-"found)."
-msgstr ""
-
-#: beam-engraver.cc:176
-msgid "already have a beam"
-msgstr ""
-
-#: beam-engraver.cc:259
-msgid "unterminated beam"
-msgstr ""
-
-#: beam-engraver.cc:292 chord-tremolo-engraver.cc:197
-msgid "stem must have Rhythmic structure"
-msgstr ""
-
-#: beam-engraver.cc:306
-msgid "stem doesn't fit in beam"
-msgstr ""
-
-#: beam-engraver.cc:307
-msgid "beam was started here"
-msgstr ""
-
-#: break-align-interface.cc:173
-#, c-format
-msgid "No spacing entry from %s to `%s'"
-msgstr ""
-
-#: change-iterator.cc:22
-#, c-format
-msgid "can't change `%s' to `%s'"
-msgstr ""
-
-#.
-#. We could change the current translator's id, but that would make
-#. errors hard to catch
-#.
-#. last->translator_id_string_  = get_change ()->change_to_id_string_;
-#.
-#: change-iterator.cc:79
-msgid "I'm one myself"
-msgstr ""
-
-#: change-iterator.cc:82
-msgid "none of these in my family"
-msgstr ""
-
-#: chord-tremolo-engraver.cc:98
-#, c-format
-msgid "Chord tremolo with %d elements. Must have two elements."
-msgstr ""
-
-#: chord-tremolo-engraver.cc:157
-msgid "unterminated chord tremolo"
-msgstr ""
-
-#: chord-tremolo-iterator.cc:69
-msgid "no one to print a tremolos"
-msgstr ""
-
-#: clef.cc:64
-#, c-format
-msgid "clef `%s' not found"
-msgstr ""
-
-#: cluster.cc:131
-#, c-format
-msgid "unknown cluster style `%s'"
-msgstr ""
-
-#: coherent-ligature-engraver.cc:84
-#, c-format
-msgid "gotcha: ptr=%ul"
-msgstr ""
-
-#: coherent-ligature-engraver.cc:96
-#, c-format
-msgid "distance=%f"
-msgstr ""
-
-#: coherent-ligature-engraver.cc:139
-#, c-format
-msgid "Coherent_ligature_engraver: setting `spacing-increment = 0.01': ptr=%ul"
-msgstr ""
-
-#: custos.cc:92
-#, c-format
-msgid "custos `%s' not found"
-msgstr ""
-
-#: dimensions.cc:13
-msgid "NaN"
-msgstr ""
-
-#: dynamic-engraver.cc:204 span-dynamic-performer.cc:82
-msgid "can't find start of (de)crescendo"
-msgstr ""
-
-#: dynamic-engraver.cc:216
-msgid "already have a crescendo"
-msgstr ""
-
-#: dynamic-engraver.cc:217
-msgid "already have a decrescendo"
-msgstr ""
-
-#: dynamic-engraver.cc:220
-msgid "Cresc started here"
-msgstr ""
-
-#: dynamic-engraver.cc:323
-msgid "unterminated (de)crescendo"
-msgstr ""
-
-#: event.cc:49
-#, c-format
-msgid "Transposition by %s makes alteration larger than two"
-msgstr ""
-
-#: event-chord-iterator.cc:76 output-property-music-iterator.cc:27
-#, c-format
-msgid "Junking event: `%s'"
-msgstr ""
-
-#: extender-engraver.cc:94
-msgid "unterminated extender"
-msgstr ""
-
-#: extender-engraver.cc:106
-msgid "Nothing to connect extender to on the left.  Ignoring extender event."
-msgstr ""
-
-#: folded-repeat-iterator.cc:88
-msgid "no one to print a repeat brace"
-msgstr ""
-
-#: font-interface.cc:239
-msgid "couldn't find any font satisfying "
-msgstr ""
-
-#: glissando-engraver.cc:100
-msgid "Unterminated glissando."
-msgstr ""
-
-#: gourlay-breaking.cc:188
-#, c-format
-msgid "Optimal demerits: %f"
-msgstr ""
-
-#: gourlay-breaking.cc:193
-msgid "No feasible line breaking found"
-msgstr ""
-
-#: gregorian-ligature-engraver.cc:59
-#, c-format
-msgid "\\%s ignored"
-msgstr ""
-
-#: gregorian-ligature-engraver.cc:64
-#, c-format
-msgid "implied \\%s added"
-msgstr ""
-
-#.
-#. Todo: do something sensible. The grob-pq-engraver is not water
-#. tight, and stuff like tupletSpannerDuration confuses it.
-#.
-#: grob-pq-engraver.cc:130
-#, c-format
-msgid ""
-"Skipped something?\n"
-"Grob %s ended before I expected it to end."
-msgstr ""
-
-#: hairpin.cc:98
-msgid "decrescendo too small"
-msgstr ""
-
-#: hairpin.cc:99
-msgid "crescendo too small"
-msgstr ""
-
-#: horizontal-bracket-engraver.cc:64
-msgid "Don't have that many brackets."
-msgstr ""
-
-#: horizontal-bracket-engraver.cc:73
-msgid "Conflicting note group events."
-msgstr ""
-
-#: hyphen-engraver.cc:87
-msgid "unterminated hyphen"
-msgstr ""
-
-#: hyphen-engraver.cc:99
-msgid "Nothing to connect hyphen to on the left.  Ignoring hyphen event."
-msgstr ""
-
-#: input.cc:99
-msgid "non fatal error: "
-msgstr ""
-
-#: input.cc:107 source-file.cc:146 source-file.cc:239
-msgid "position unknown"
-msgstr ""
-
-#: input-file-results.cc:72 source-file.cc:54 streams.cc:38
-#, c-format
-msgid "can't open file: `%s'"
-msgstr ""
-
-#: input-file-results.cc:132
-msgid "Score contains errors; will not process it"
-msgstr ""
-
-#: input-file-results.cc:172
-#, c-format
-msgid "Now processing: `%s'"
-msgstr ""
-
-#: key-performer.cc:96
-msgid "FIXME: key change merge"
-msgstr ""
-
-#: kpath.cc:76
-#, c-format
-msgid "Kpathsea couldn't find TFM file `%s'"
-msgstr ""
-
-#: ligature-engraver.cc:159
-msgid "can't find start of ligature"
-msgstr ""
-
-#: ligature-engraver.cc:165
-msgid "no right bound"
-msgstr ""
-
-#: ligature-engraver.cc:191
-msgid "already have a ligature"
-msgstr ""
-
-#: ligature-engraver.cc:207
-msgid "no left bound"
-msgstr ""
-
-#: ligature-engraver.cc:258
-msgid "unterminated ligature"
-msgstr ""
-
-#: ligature-engraver.cc:282
-msgid "ligature may not contain rest; ignoring rest"
-msgstr ""
-
-#: ligature-engraver.cc:283
-msgid "ligature was started here"
-msgstr ""
-
-#: lily-guile.cc:88
-#, c-format
-msgid "(load path: `%s')"
-msgstr ""
-
-#: lily-guile.cc:576
-#, c-format
-msgid "Can't find property type-check for `%s' (%s)."
-msgstr ""
-
-#: lily-guile.cc:579
-msgid "Perhaps you made a typing error?"
-msgstr ""
-
-#: lily-guile.cc:585
-msgid "Doing assignment anyway."
-msgstr ""
-
-#: lily-guile.cc:599
-#, c-format
-msgid "Type check for `%s' failed; value `%s' must be of type `%s'"
-msgstr ""
-
-#: lookup.cc:173
-msgid "round filled box horizontal extent smaller than blot; decreasing blot"
-msgstr ""
-
-#: lookup.cc:178
-msgid "round filled box vertical extent smaller than blot; decreasing blot"
-msgstr ""
-
-#: lyric-phrasing-engraver.cc:311
-msgid "lyrics found without any matching notehead"
-msgstr ""
-
-#: lyric-phrasing-engraver.cc:317
-msgid "Huh? Melismatic note found to have associated lyrics."
-msgstr ""
-
-#: main.cc:106
-msgid "EXPR"
-msgstr ""
-
-#: main.cc:107
-msgid "set options, use -e '(ly-option-usage)' for help"
-msgstr ""
-
-#: main.cc:110
-msgid "use output format EXT"
-msgstr ""
-
-#: main.cc:112
-msgid "FIELD"
-msgstr ""
-
-#: main.cc:112
-msgid "write header field to BASENAME.FIELD"
-msgstr ""
-
-#: main.cc:113
-msgid "add DIR to search path"
-msgstr ""
-
-#: main.cc:114
-msgid "use FILE as init file"
-msgstr ""
-
-#: main.cc:118
-msgid "prepend DIR to dependencies"
-msgstr ""
-
-#.
-#. should audit again.
-#.
-#: main.cc:123
-msgid "inhibit file output naming and exporting"
-msgstr ""
-
-#. No version number or newline here. It confuses help2man.
-#: main.cc:155
-#, c-format
-msgid "Usage: %s [OPTIONS]... FILE..."
-msgstr ""
-
-#: main.cc:157
-msgid "Typeset music and or play MIDI from FILE."
-msgstr ""
-
-#: main.cc:160
-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 ""
-
-#: main.cc:182
-#, c-format
-msgid ""
-"This is free software.  It is covered by the GNU General Public License,\n"
-"and you are welcome to change it and/or distribute copies of it under\n"
-"certain conditions.  Invoke as `%s --warranty' for more information.\n"
-msgstr ""
-
-#: main.cc:198
-msgid "GNU LilyPond -- The music typesetter"
-msgstr ""
-
-#: main.cc:206
-msgid ""
-"    This program is free software; you can redistribute it and/or\n"
-"modify it under the terms of the GNU General Public License version 2\n"
-"as published by the Free Software Foundation.\n"
-"\n"
-"    This program is distributed in the hope that it will be useful,\n"
-"but WITHOUT ANY WARRANTY; without even the implied warranty of\n"
-"MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU\n"
-"General Public License for more details.\n"
-"\n"
-"    You should have received a copy (refer to the file COPYING) of the\n"
-"GNU General Public License along with this program; if not, write to\n"
-"the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA "
-"02111-1307,\n"
-"USA.\n"
-msgstr ""
-
-#: mensural-ligature.cc:153
-#, c-format
-msgid "Mensural_ligature:thickness undefined on flexa %d; assuming 1.4"
-msgstr ""
-
-#: mensural-ligature.cc:169
-#, c-format
-msgid "Mensural_ligature:delta-pitch undefined on flexa %d; assuming 0"
-msgstr ""
-
-#: mensural-ligature.cc:182
-#, c-format
-msgid "Mensural_ligature:flexa-width undefined on flexa %d; assuming 2.0"
-msgstr ""
-
-#: mensural-ligature.cc:215
-msgid "Mensural_ligature:unexpected case fall-through"
-msgstr ""
-
-#: mensural-ligature.cc:225
-msgid "Mensural_ligature: (join_left == 0)"
-msgstr ""
-
-#: mensural-ligature-engraver.cc:248 mensural-ligature-engraver.cc:397
-msgid "unexpected case fall-through"
-msgstr ""
-
-#: mensural-ligature-engraver.cc:259
-msgid "ligature with less than 2 heads -> skipping"
-msgstr ""
-
-#: mensural-ligature-engraver.cc:279
-msgid "can not determine pitch of ligature primitive -> skipping"
-msgstr ""
-
-#: mensural-ligature-engraver.cc:302
-msgid "prime interval within ligature -> skipping"
-msgstr ""
-
-#: mensural-ligature-engraver.cc:312
-msgid "mensural ligature: duration none of L, B, S -> skipping"
-msgstr ""
-
-#: midi-item.cc:148
-#, c-format
-msgid "no such instrument: `%s'"
-msgstr ""
-
-#: midi-item.cc:238
-msgid "silly duration"
-msgstr ""
-
-#: midi-item.cc:251
-msgid "silly pitch"
-msgstr ""
-
-#: music-output-def.cc:111
-#, c-format
-msgid "can't find `%s' context"
-msgstr ""
-
-#: my-lily-lexer.cc:169
-#, c-format
-msgid "Identifier name is a keyword: `%s'"
-msgstr ""
-
-#: my-lily-lexer.cc:191
-#, c-format
-msgid "error at EOF: %s"
-msgstr ""
-
-#: my-lily-parser.cc:44
-msgid "Parsing..."
-msgstr ""
-
-#: my-lily-parser.cc:54
-msgid "Braces don't match"
-msgstr ""
-
-#.
-#. music for the softenon children?
-#.
-#: new-fingering-engraver.cc:143
-msgid "music for the martians."
-msgstr ""
-
-#: new-tie-engraver.cc:166 tie-engraver.cc:217
-msgid "lonely tie"
-msgstr ""
-
-#: note-collision.cc:340
-msgid "Too many clashing notecolumns.  Ignoring them."
-msgstr ""
-
-#: note-head.cc:127
-#, c-format
-msgid "note head `%s' not found"
-msgstr ""
-
-#: paper-def.cc:96
-#, c-format
-msgid "paper output to `%s'..."
-msgstr ""
-
-#: paper-score.cc:78
-#, c-format
-msgid "Element count %d (spanners %d) "
-msgstr ""
-
-#: paper-score.cc:83
-msgid "Preprocessing graphical objects..."
-msgstr ""
-
-#: paper-score.cc:116
-msgid "Outputting Score, defined at: "
-msgstr ""
-
-#: parse-scm.cc:79
-msgid "GUILE signaled an error for the expression begining here"
-msgstr ""
-
-#.
-#. We could change the current translator's id, but that would make
-#. errors hard to catch
-#.
-#. last->translator_id_string_  = get_change ()->change_to_id_string_;
-#.
-#: part-combine-music-iterator.cc:139
-#, c-format
-msgid "I'm one myself: `%s'"
-msgstr ""
-
-#: part-combine-music-iterator.cc:142
-#, c-format
-msgid "none of these in my family: `%s'"
-msgstr ""
-
-#: percent-repeat-engraver.cc:109
-msgid "Don't know how to handle a percent repeat of this length."
-msgstr ""
-
-#: percent-repeat-engraver.cc:163
-msgid "unterminated percent repeat"
-msgstr ""
-
-#: percent-repeat-iterator.cc:65
-msgid "no one to print a percent"
-msgstr ""
-
-#: performance.cc:51
-msgid "Track ... "
-msgstr ""
-
-#: performance.cc:83
-msgid "Creator: "
-msgstr ""
-
-#: performance.cc:103
-msgid "at "
-msgstr ""
-
-#: performance.cc:114
-#, c-format
-msgid "from musical definition: %s"
-msgstr ""
-
-#: performance.cc:169
-#, c-format
-msgid "MIDI output to `%s'..."
-msgstr ""
-
-#: phrasing-slur-engraver.cc:123
-msgid "unterminated phrasing slur"
-msgstr ""
-
-#: phrasing-slur-engraver.cc:141
-msgid "can't find start of phrasing slur"
-msgstr ""
-
-#: piano-pedal-engraver.cc:235 piano-pedal-engraver.cc:250
-#: piano-pedal-engraver.cc:305 piano-pedal-performer.cc:82
-#, c-format
-msgid "can't find start of piano pedal: `%s'"
-msgstr ""
-
-#: piano-pedal-engraver.cc:410
-msgid "unterminated pedal bracket"
-msgstr ""
-
-#: property-iterator.cc:97
-#, c-format
-msgid "Not a grob name, `%s'."
-msgstr ""
-
-#: rest.cc:139
-#, c-format
-msgid "rest `%s' not found, "
-msgstr ""
-
-#: rest-collision.cc:199
-msgid "too many colliding rests"
-msgstr ""
-
-#: scm-option.cc:45
-msgid "lilypond -e EXPR means:"
-msgstr ""
-
-#: scm-option.cc:47
-msgid "  Evalute the Scheme EXPR before parsing any .ly files."
-msgstr ""
-
-#: scm-option.cc:49
-msgid ""
-"  Multiple -e options may be given, they will be evaluated sequentially."
-msgstr ""
-
-#: scm-option.cc:51
-msgid ""
-"  The function ly-set-option allows for access to some internal variables."
-msgstr ""
-
-#: scm-option.cc:53
-msgid "Usage: lilypond -e \"(ly-set-option SYMBOL VAL)\""
-msgstr ""
-
-#: scm-option.cc:55
-msgid "Where SYMBOL VAL pair is any of:"
-msgstr ""
-
-#: scm-option.cc:128
-msgid "Unknown internal option!"
-msgstr ""
-
-#: score.cc:85
-msgid "Interpreting music..."
-msgstr ""
-
-#: score.cc:97
-msgid "Need music in a score"
-msgstr ""
-
-#. should we? hampers debugging.
-#: score.cc:111
-msgid "Errors found/*, not processing score*/"
-msgstr ""
-
-#: score.cc:118
-#, c-format
-msgid "elapsed time: %.2f seconds"
-msgstr ""
-
-#: score-engraver.cc:99
-#, c-format
-msgid "can't find `%s'"
-msgstr ""
-
-#: score-engraver.cc:100
-msgid "Fonts have not been installed properly.  Aborting"
-msgstr ""
-
-#: score-engraver.cc:205
-#, c-format
-msgid "unbound spanner `%s'"
-msgstr ""
-
-#: script-engraver.cc:90
-#, c-format
-msgid "Don't know how to interpret articulation `%s'"
-msgstr ""
-
-#. this shouldn't happen, but let's continue anyway.
-#: separation-item.cc:53 separation-item.cc:101
-msgid "Separation_item:  I've been drinking too much"
-msgstr ""
-
-#: simple-spacer.cc:248
-#, c-format
-msgid "No spring between column %d and next one"
-msgstr ""
-
-#: slur-engraver.cc:141
-msgid "unterminated slur"
-msgstr ""
-
-#. How to shut up this warning, when Voice_devnull_engraver has
-#. eaten start event?
-#: slur-engraver.cc:159
-msgid "can't find start of slur"
-msgstr ""
-
-#: source-file.cc:67
-#, c-format
-msgid "Huh?  Got %d, expected %d characters"
-msgstr ""
-
-#: spacing-spanner.cc:379
-#, c-format
-msgid "Global shortest duration is %s\n"
-msgstr ""
-
-#: spring-smob.cc:32
-#, c-format
-msgid "#<spring smob d= %f>"
-msgstr ""
-
-#: staff-symbol.cc:61
-msgid "staff symbol: indentation yields beyond end of line"
-msgstr ""
-
-#: stem.cc:118
-msgid "Weird stem size; check for narrow beams"
-msgstr ""
-
-#: stem.cc:611
-#, c-format
-msgid "flag `%s' not found"
-msgstr ""
-
-#: stem.cc:624
-#, c-format
-msgid "flag stroke `%s' not found"
-msgstr ""
-
-#: stem-engraver.cc:96
-msgid "tremolo duration is too long"
-msgstr ""
-
-#: stem-engraver.cc:124
-#, c-format
-msgid "Adding note head to incompatible stem (type = %d)"
-msgstr ""
-
-#: stem-engraver.cc:125
-msgid "Don't you want polyphonic voices instead?"
-msgstr ""
-
-#: streams.cc:34
-#, c-format
-msgid "can't create directory: `%s'"
-msgstr ""
-
-#: streams.cc:48
-msgid "Error syncing file (disk full?)"
-msgstr ""
-
-#: system.cc:125
-#, c-format
-msgid "Element count %d."
-msgstr ""
-
-#: system.cc:372
-#, c-format
-msgid "Grob count %d "
-msgstr ""
-
-#: system.cc:386
-msgid "Calculating line breaks..."
-msgstr ""
-
-#: text-spanner-engraver.cc:81
-msgid "can't find start of text spanner"
-msgstr ""
-
-#: text-spanner-engraver.cc:95
-msgid "already have a text spanner"
-msgstr ""
-
-#: text-spanner-engraver.cc:164
-msgid "unterminated text spanner"
-msgstr ""
-
-#: tfm.cc:83
-#, c-format
-msgid "can't find ascii character: %d"
-msgstr ""
-
-#. Not using ngettext's plural feature here, as this message is
-#. more of a programming error.
-#: tfm-reader.cc:108
-#, c-format
-msgid "TFM header of `%s' has only %u word (s)"
-msgstr ""
-
-#: tfm-reader.cc:142
-#, c-format
-msgid "%s: TFM file has %u parameters, which is more than the %u I can handle"
-msgstr ""
-
-#: tie-performer.cc:159
-msgid "No ties were created!"
-msgstr ""
-
-#: time-scaled-music-iterator.cc:25
-msgid "no one to print a tuplet start bracket"
-msgstr ""
-
-#. If there is no such symbol, we default to the numbered style.
-#. (Here really with a warning!)
-#: time-signature.cc:87
-#, c-format
-msgid "time signature symbol `%s' not found; reverting to numbered style"
-msgstr ""
-
-#.
-#. Todo: should make typecheck?
-#.
-#. OTOH, Tristan Keuris writes 8/20 in his Intermezzi.
-#.
-#: time-signature-engraver.cc:57
-#, c-format
-msgid "Found strange time signature %d/%d."
-msgstr ""
-
-#: translator-ctors.cc:53
-#, c-format
-msgid "unknown translator: `%s'"
-msgstr ""
-
-#: translator-def.cc:105
-msgid "Program has no such type"
-msgstr ""
-
-#: translator-def.cc:111
-#, c-format
-msgid "Already contains: `%s'"
-msgstr ""
-
-#: translator-def.cc:112
-#, c-format
-msgid "Not adding translator: `%s'"
-msgstr ""
-
-#: translator-def.cc:229
-#, c-format
-msgid "can't find: `%s'"
-msgstr ""
-
-#: translator-group.cc:158
-#, c-format
-msgid "can't find or create `%s' called `%s'"
-msgstr ""
-
-#: translator-group.cc:230
-#, c-format
-msgid "can't find or create: `%s'"
-msgstr ""
-
-#: vaticana-ligature.cc:49
-msgid "ascending vaticana style flexa"
-msgstr ""
-
-#: vaticana-ligature.cc:219
-msgid "Vaticana_ligature:thickness undefined; assuming 1.4"
-msgstr ""
-
-#: vaticana-ligature.cc:233
-msgid "Vaticana_ligature:x-offset undefined; assuming 0.0"
-msgstr ""
-
-#: vaticana-ligature.cc:258
-msgid "Vaticana_ligature: (delta_pitch == 0)"
-msgstr ""
-
-#: vaticana-ligature.cc:271
-msgid "Vaticana_ligature:delta-pitch -> ignoring join"
-msgstr ""
-
-#: vaticana-ligature-engraver.cc:477
-#, c-format
-msgid "Vaticana_ligature_engraver: setting `spacing-increment = %f': ptr=%ul"
-msgstr ""
-
-#: volta-engraver.cc:112
-msgid "No volta spanner to end"
-msgstr ""
-
-#: volta-engraver.cc:123
-msgid "Already have a volta spanner.  Stopping that one prematurely."
-msgstr ""
-
-#: volta-engraver.cc:127
-msgid "Also have a stopped spanner.  Giving up."
-msgstr ""
-
-#: parser.yy:480
-msgid "Identifier should have alphabetic characters only"
-msgstr ""
-
-#: parser.yy:779
-msgid "More alternatives than repeats.  Junking excess alternatives."
-msgstr ""
-
-#: parser.yy:861 parser.yy:868
-msgid "pplycontext takes function argument"
-msgstr ""
-
-#: parser.yy:877
-msgid "Second argument must be a symbol"
-msgstr ""
-
-#: parser.yy:882
-msgid "First argument must be a procedure taking one argument"
-msgstr ""
-
-#: parser.yy:1009
-msgid "pply takes function argument"
-msgstr ""
-
-#: parser.yy:1501
-msgid "Expecting string as script definition"
-msgstr ""
-
-#: parser.yy:1598
-msgid "Expecting musical-pitch value"
-msgstr ""
-
-#: parser.yy:1609
-msgid "Must have duration object"
-msgstr ""
-
-#: parser.yy:1618 parser.yy:1626
-msgid "Have to be in Lyric mode for lyrics"
-msgstr ""
-
-#: parser.yy:1798 parser.yy:1853
-#, c-format
-msgid "not a duration: %d"
-msgstr ""
-
-#: parser.yy:1949
-msgid "Have to be in Note mode for notes"
-msgstr ""
-
-#: parser.yy:2032
-msgid "Have to be in Chord mode for chords"
-msgstr ""
-
-#: parser.yy:2171
-msgid "need integer number arg"
-msgstr ""
-
-#: parser.yy:2316
-msgid "Suspect duration found following this beam"
-msgstr ""
-
-#: lexer.ll:186
-msgid "EOF found inside a comment"
-msgstr ""
-
-#: lexer.ll:200
-msgid "\\maininput disallowed outside init files"
-msgstr ""
-
-#: lexer.ll:224
-#, c-format
-msgid "wrong or undefined identifier: `%s'"
-msgstr ""
-
-#. backup rule
-#: lexer.ll:233
-msgid "Missing end quote"
-msgstr ""
-
-#. backup rule
-#: lexer.ll:255 lexer.ll:259
-msgid "white expected"
-msgstr ""
-
-#: lexer.ll:268
-msgid "Can't evaluate Scheme in safe mode"
-msgstr ""
-
-#: lexer.ll:397 lexer.ll:487
-msgid "Brace found at end of lyric.  Did you forget a space?"
-msgstr ""
-
-#: lexer.ll:574
-#, c-format
-msgid "invalid character: `%c'"
-msgstr ""
-
-#: lexer.ll:651
-#, c-format
-msgid "unknown escaped string: `\\%s'"
-msgstr ""
-
-#: lexer.ll:742
-#, c-format
-msgid "Incorrect lilypond version: %s (%s, %s)"
-msgstr ""
-
-#: lexer.ll:743
-msgid "Consider updating the input with the convert-ly script"
-msgstr ""
diff --git a/po/nl.po b/po/nl.po
deleted file mode 100644
index 065d8a9300..0000000000
--- a/po/nl.po
+++ /dev/null
@@ -1,2655 +0,0 @@
-# nl.po -- GNU LilyPond's dutch language file
-# Copyright (C) 1998, 1999, 2000, 2001 Jan Nieuwenhuizen <janneke@gnu.org>, Han-Wen Nienhuys <hanwen@cs.uu.nl>.
-# Jan Nieuwenhuizen <janneke@gnu.org>, 1998.
-# Han-Wen Nienhuys <hanwen@cs.uu.nl>, 1998.
-#
-# Don't change the format of the first three lines,
-# the TP robot wants them like this (I hope).
-# Of course, Han-Wen <hanwen@cs.uu.nl> also was FIRST AUTHOR.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: lilypond 1.4.6\n"
-"POT-Creation-Date: 2003-07-18 14:45+0200\n"
-"PO-Revision-Date: 2001-09-09 17:34+0200\n"
-"Last-Translator: Jan Nieuwenhuizen <janneke@gnu.org>\n"
-"Language-Team: Dutch <nl@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=ISO-8859-1\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Date: 2001-05-09 23:29+0200\n"
-"From:  <janneke@gnu.org>\n"
-"Xgettext-Options: --c++ --default-domain=lilypond --join --output-dir=../po "
-"--add-comments --keyword=_\n"
-"Files: bow.cc int.cc\n"
-
-#. this is where special info is often stored
-#. ###############################################################
-#. lilylib.py -- options and stuff
-#.
-#. source file of the GNU LilyPond music typesetter
-#.
-#. (c)  1998--2003  Han-Wen Nienhuys <hanwen@cs.uu.nl>
-#. Jan Nieuwenhuizen <janneke@gnu.org>
-#. ##  subst:\(^\|[^._a-z]\)\(abspath\|identify\|warranty\|progress\|warning\|error\|exit\|getopt_args\|option_help_str\|options_help_str\|help\|setup_temp\|read_pipe\|system\|cleanup_temp\|strip_extension\|cp_to_dir\|mkdir_p\|init\) *(
-#. ##  replace:\1ly.\2 (
-#. ## subst: \(help_summary\|keep_temp_dir_p\|option_definitions\|original_dir\|program_name\|pseudo_filter_p\|temp_dir\|verbose_p\)
-#. ###############################################################
-#. Users of python modules should include this snippet
-#. and customize variables below.
-#. We'll suffer this path init stuff as long as we don't install our
-#. python packages in <prefix>/lib/pythonx.y (and don't kludge around
-#. it as we do with teTeX on Red Hat Linux: set some environment var
-#. (PYTHONPATH) in profile)
-#. If set, LILYPONDPREFIX must take prevalence
-#. if datadir is not set, we're doing a build and LILYPONDPREFIX
-#. Customize these
-#. lilylib globals
-#: lilylib.py:60
-msgid "lilylib module"
-msgstr ""
-
-#: lilylib.py:63 lilypond-book.py:131 lilypond.py:128 midi2ly.py:100
-#: mup2ly.py:75 main.cc:111
-msgid "print this help"
-msgstr "deze hulp"
-
-#. ###############################################################
-#. Handle bug in Python 1.6-2.1
-#.
-#. there are recursion limits for some patterns in Python 1.6 til 2.1.
-#. fix this by importing pre instead. Fix by Mats.
-#. Attempt to fix problems with limited stack size set by Python!
-#. Sets unlimited stack size. Note that the resource module only
-#. is available on UNIX.
-#: lilylib.py:114 midi2ly.py:136 mup2ly.py:130 main.cc:188 main.cc:200
-#, c-format, python-format
-msgid "Copyright (c) %s by"
-msgstr "Copyright (c) %s "
-
-#: lilylib.py:114
-msgid " 1998--2003"
-msgstr ""
-
-#: lilylib.py:118
-msgid "Distributed under terms of the GNU General Public License."
-msgstr ""
-
-#: lilylib.py:120
-msgid "It comes with NO WARRANTY."
-msgstr ""
-
-#: lilylib.py:127 midi2ly.py:150 mup2ly.py:144 input.cc:88
-msgid "warning: "
-msgstr "waarschuwing: "
-
-#. lots of midi files use plain text for lyric events
-#. FIXME: read from stdin when files[0] = '-'
-#: lilylib.py:130 midi2ly.py:165 midi2ly.py:1018 midi2ly.py:1083 mup2ly.py:147
-#: mup2ly.py:161 input.cc:93
-msgid "error: "
-msgstr "fout: "
-
-#: lilylib.py:134
-#, fuzzy, python-format
-msgid "Exiting (%d)..."
-msgstr "Beëidigen ..."
-
-#: lilylib.py:194 midi2ly.py:224 mup2ly.py:220
-#, python-format
-msgid "Usage: %s [OPTIONS]... FILE"
-msgstr "Gebruik: %s [OPTIE]... BESTAND"
-
-#: lilylib.py:198 midi2ly.py:228 mup2ly.py:224 main.cc:166
-msgid "Options:"
-msgstr "Opties:"
-
-#: lilylib.py:202 midi2ly.py:232 mup2ly.py:228 main.cc:172
-#, c-format, python-format
-msgid "Report bugs to %s."
-msgstr ""
-"Meld luizen in het programma aan %s;\n"
-"meld onjuistheden in de vertaling aan <janneke@gnu.org> of <hanwen@cs.uu.nl>"
-
-#: lilylib.py:228
-#, fuzzy, python-format
-msgid "Opening pipe `%s'"
-msgstr "Schoonmaken van `%s'..."
-
-#. successful pipe close returns 'None'
-#: lilylib.py:240
-#, python-format
-msgid "`%s' failed (%d)"
-msgstr ""
-
-#: lilylib.py:242 lilylib.py:289 lilypond-book.py:231 lilypond.py:512
-msgid "The error log is as follows:"
-msgstr ""
-
-#: lilylib.py:262 midi2ly.py:260 mup2ly.py:256
-#, python-format
-msgid "Invoking `%s'"
-msgstr "Uitvoeren `%s'"
-
-#: lilylib.py:264
-#, python-format
-msgid "Running %s..."
-msgstr "Uitvoeren %s..."
-
-#: lilylib.py:282
-#, python-format
-msgid "`%s' failed (%s)"
-msgstr ""
-
-#: lilylib.py:285 midi2ly.py:266 mup2ly.py:264
-msgid "(ignored)"
-msgstr "(genegeerd)"
-
-#: lilylib.py:299 midi2ly.py:276 mup2ly.py:274
-#, python-format
-msgid "Cleaning %s..."
-msgstr "Schoonmaken %s..."
-
-#. Duh.  Python style portable: cp *.EXT OUTDIR
-#. system ('cp *.%s %s' % (ext, outdir), 1)
-#. Python < 1.5.2 compatibility
-#.
-#. On most platforms, this is equivalent to
-#. `normpath(join(os.getcwd()), PATH)'.  *Added in Python version 1.5.2*
-#. tex needs lots of memory, more than it gets by default on Debian
-#. TODO: * prevent multiple addition.
-#. * clean TEXINPUTS, MFINPUTS, TFMFONTS,
-#. as these take prevalence over $TEXMF
-#. and thus may break tex run?
-#. $TEXMF is special, previous value is already taken care of
-#. # -sOutputFile does not work with bbox?
-#. # todo:
-#. # have better algorithm for deciding when to crop page,
-#. # and when to show full page
-#: lilylib.py:458
-msgid "Removing output file"
-msgstr ""
-
-#. !@PYTHON@
-#. once upon a rainy monday afternoon.
-#.
-#. ...
-#.
-#. (not finished.)
-#. ABC standard v1.6:  http://www.gre.ac.uk/~c.walshaw/abc2mtex/abc.txt
-#.
-#. Enhancements  (Roy R. Rankin)
-#.
-#. Header section moved to top of lilypond file
-#. handle treble, treble-8, alto, and bass clef
-#. Handle voices (V: headers) with clef and part names, multiple voices
-#. Handle w: lyrics with multiple verses
-#. Handle key mode names for minor, major, phrygian, ionian, locrian, aeolian,
-#. mixolydian, lydian, dorian
-#. Handle part names from V: header
-#. Tuplets handling fixed up
-#. Lines starting with |: not discarded as header lines
-#. Multiple T: and C: header entries handled
-#. Accidental maintained until next bar check
-#. Silent rests supported
-#. articulations fermata, upbow, downbow, ltoe, accent, tenuto supported
-#. Chord strings([-^]"string") can contain a '#'
-#. Header fields enclosed by [] in notes string processed
-#. W: words output after tune as abc2ps does it (they failed before)
-#. Enhancements (Laura Conrad)
-#.
-#. Barring now preserved between ABC and lilypond
-#. the default placement for text in abc is above the staff.
-#. %%LY now supported.
-#. \breve and \longa supported.
-#. M:none doesn't crash lily.
-#. Limitations
-#.
-#. Multiple tunes in single file not supported
-#. Blank T: header lines should write score and open a new score
-#. Not all header fields supported
-#. ABC line breaks are ignored
-#. Block comments generate error and are ignored
-#. Postscript commands are ignored
-#. lyrics not resynchronized by line breaks (lyrics must fully match notes)
-#. %%LY slyrics can't be directly before a w: line.
-#. ???
-#. TODO:
-#.
-#. Convert to new chord styles.
-#.
-#. UNDEF -> None
-#.
-#. uGUHGUHGHGUGH
-#. UGH
-#. treble8 is used by abctab2ps; -8va is used by barfly,
-#. and by my patch to abc2ps. If there's ever a standard
-#. about this we'll support that.
-#. find keywork
-#. assume that Q takes the form "Q:1/4=120"
-#. There are other possibilities, but they are deprecated
-#. outf.write ("\t\t\\consists Staff_margin_engraver\n")
-#. pitch manipulation. Tuples are (name, alteration).
-#. 0 is (central) C. Alteration -1 is a flat, Alteration +1 is a sharp
-#. pitch in semitones.
-#. abc to lilypond key mode names
-#. semitone shifts for key mode names
-#. latex does not like naked #'s
-#. latex does not like naked "'s
-#. break lyrics to words and put "'s around words containing numbers and '"'s
-#. escape "
-#. _ causes probs inside ""
-#. _ to ' _ '
-#. split words with -
-#. unless \-
-#. ~ to space('_')
-#. * to to space
-#. latex does not like naked #'s
-#. put numbers and " and ( into quoted string
-#. insure space between lines
-#. title
-#. strip trailing blanks
-#. Meter
-#. KEY
-#. seperate clef info
-#. there may or may not be a space
-#. between the key letter and the mode
-#. ugh.
-#. ugh.
-#. Notes
-#. Origin
-#. Reference Number
-#. Area
-#. History
-#. Book
-#. Composer
-#. Default note length
-#. Voice
-#. Words
-#. vocals
-#. tempo
-#. we use in this order specified accidental, active accidental for bar,
-#. active accidental for key
-#. (num /  den)  / defaultlen < 1/base
-#. return (str, num,den,dots)
-#. ignore slide
-#. ignore roll
-#. s7m2 input doesnt care about spaces
-#.
-#. remember accidental for rest of bar
-#.
-#. get accidental set in this bar or UNDEF if not set
-#. WAT IS ABC EEN ONTZETTENDE PROGRAMMEERPOEP  !
-#. failed; not a note!
-#. escape '#'s
-#.
-#. |] thin-thick double bar line
-#. || thin-thin double bar line
-#. [| thick-thin double bar line
-#. :| left repeat
-#. |: right repeat
-#. :: left-right repeat
-#. |1 volta 1
-#. |2 volta 2
-#. first try the longer one
-#. bracket escape
-#. the nobarlines option is necessary for an abc to lilypond translator for
-#. exactly the same reason abc2midi needs it: abc requires the user to enter
-#. the note that will be printed, and MIDI and lilypond expect entry of the
-#. pitch that will be played.
-#.
-#. In standard 19th century musical notation, the algorithm for translating
-#. between printed note and pitch involves using the barlines to determine
-#. the scope of the accidentals.
-#.
-#. Since ABC is frequently used for music in styles that do not use this
-#. convention, such as most music written before 1700, or ethnic music in
-#. non-western scales, it is necessary to be able to tell a translator that
-#. the barlines should not affect its interpretation of the pitch.
-#. write other kinds of appending  if we ever need them.
-#. add comments to current voice
-#. Try nibbling characters off until the line doesn't change.
-#. dump_global (outf)
-#. !@PYTHON@
-#.
-#. convert-ly.py -- Update old LilyPond input files (fix name?)
-#.
-#. source file of the GNU LilyPond music typesetter
-#.
-#. (c)  1998--2003  Han-Wen Nienhuys <hanwen@cs.uu.nl>
-#. Jan Nieuwenhuizen <janneke@gnu.org>
-#. TODO
-#. use -f and -t for -s output
-#. NEWS
-#. 0.2
-#. - rewrite in python
-#. Did we ever have \mudela-version?  I doubt it.
-#. lilypond_version_re_str = '\\\\version *\"(.*)\"'
-#. ###########################
-#. need new a namespace
-#. raise FatalConversionError()
-#. need new a namespace
-#. harmful to current .lys
-#. str = re.sub ('\\\\key([^;]+);', '\\\\accidentals \\1;', str)
-#. raise FatalConversionError()
-#. raise FatalConversionError()
-#. raise FatalConversionError()
-#. TODO: lots of other syntax change should be done here as well
-#. Ugh, but meaning of \stemup changed too
-#. maybe we should do \stemup -> \stemUp\slurUp\tieUp ?
-#. I don't know exactly when these happened...
-#. ugh, we loose context setting here...
-#. (lacks capitalisation slur -> Slur)
-#. # dynamic..
-#. TODO: add lots of these
-#. ugh
-#. old fix
-#. Make sure groups of more than one ; have space before
-#. them, so that non of them gets removed by next rule
-#. Only remove ; that are not after spaces, # or ;
-#. Otherwise  we interfere with Scheme comments,
-#. which is badbadbad.
-#. 40 ?
-#. ###############################
-#. END OF CONVERSIONS
-#. ###############################
-#. !@PYTHON@
-#. info mostly taken from looking at files. See also
-#. http://lilypond.org/wiki/?EnigmaTransportFormat
-#. This supports
-#.
-#. * notes
-#. * rests
-#. * ties
-#. * slurs
-#. * lyrics
-#. * articulation
-#. * grace notes
-#. * tuplets
-#.
-#. todo:
-#. * slur/stem directions
-#. * voices (2nd half of frame?)
-#. * more intelligent lyrics
-#. * beams (better use autobeam?)
-#. * more robust: try entertainer.etf (freenote)
-#. * dynamics
-#. * empty measures (eg. twopt03.etf from freenote)
-#.
-#. uGUHGUHGHGUGH
-#. notename 0 == central C
-#. represent pitches as (notename, alteration), relative to C-major scale
-#. a fifth up
-#. should cache this.
-#. flag1 isn't all that interesting.
-#. 3: '>',
-#. 18: '\arpeggio' ,
-#. do grace notes.
-#. ugh.
-#. we don't attempt voltas since they fail easily.
-#. and g.repeat_bar == '|:' or g.repeat_bar == ':|:' or g.bracket:
-#. 4 layers.
-#. let's not do this: this really confuses when eE happens to be before  a ^text.
-#. if last_tag and last_indices:
-#. etf_file_dict[last_tag][last_indices].append (l)
-#. # do it
-#. staff-spec
-#. should use \addlyrics ?
-#. !@PYTHON@
-#. vim: set noexpandtab:
-#. This is was the idea for handling of comments:
-#. Multiline comments, @ignore .. @end ignore is scanned for
-#. in read_doc_file, and the chunks are marked as 'ignore', so
-#. lilypond-book will not touch them any more. The content of the
-#. chunks are written to the output file. Also 'include' and 'input'
-#. regex has to check if they are commented out.
-#.
-#. Then it is scanned for 'lilypond', 'lilypond-file' and 'lilypond-block'.
-#. These three regex's has to check if they are on a commented line,
-#. % for latex, @c for texinfo.
-#.
-#. Then lines that are commented out with % (latex) and @c (Texinfo)
-#. are put into chunks marked 'ignore'. This cannot be done before
-#. searching for the lilypond-blocks because % is also the comment character
-#. for lilypond.
-#.
-#. The the rest of the rexeces are searched for. They don't have to test
-#. if they are on a commented out line.
-#. ###############################################################
-#. Users of python modules should include this snippet
-#. and customize variables below.
-#. We'll suffer this path init stuff as long as we don't install our
-#. python packages in <prefix>/lib/pythonx.y (and don't kludge around
-#. it as we do with teTeX on Red Hat Linux: set some environment var
-#. (PYTHONPATH) in profile)
-#. If set, LILYPONDPREFIX must take prevalence
-#. if datadir is not set, we're doing a build and LILYPONDPREFIX
-#. Customize these
-#. if __name__ == '__main__':
-#. lilylib globals
-#. temp_dir = os.path.join (original_dir,  '%s.dir' % program_name)
-#. urg
-#. # FIXME
-#. # do -P or -p by default?
-#. #help_summary = _ ("Run LilyPond using LaTeX for titling")
-#: lilypond-book.py:120
-msgid "Process LilyPond snippets in hybrid html, LaTeX or texinfo document"
-msgstr ""
-
-#. another bug in option parser: --output=foe is taken as an abbreviation
-#. for --output-format
-#: lilypond-book.py:125 main.cc:110
-msgid "EXT"
-msgstr "EXT"
-
-#: lilypond-book.py:125
-#, fuzzy
-msgid "use output format EXT (texi [default], texi-html, latex, html)"
-msgstr "gebruik uitvoer formaat EXT (scm, ps, tex of as)"
-
-#: lilypond-book.py:126 lilypond-book.py:127 lilypond-book.py:129
-#: lilypond-book.py:130
-#, fuzzy
-msgid "DIM"
-msgstr "DIR"
-
-#: lilypond-book.py:126
-msgid "default fontsize for music.  DIM is assumed to be in points"
-msgstr ""
-
-#: lilypond-book.py:127
-msgid "deprecated, use --default-music-fontsize"
-msgstr ""
-
-#: lilypond-book.py:128
-msgid "OPT"
-msgstr ""
-
-#: lilypond-book.py:128
-msgid "pass OPT quoted to the lilypond command line"
-msgstr ""
-
-#: lilypond-book.py:129
-msgid "force fontsize for all inline lilypond. DIM is assumed be to in points"
-msgstr ""
-
-#: lilypond-book.py:130
-msgid "deprecated, use --force-music-fontsize"
-msgstr ""
-
-#: lilypond-book.py:132 lilypond.py:130 main.cc:113 main.cc:118
-msgid "DIR"
-msgstr "DIR"
-
-#: lilypond-book.py:132
-msgid "include path"
-msgstr ""
-
-#: lilypond-book.py:133
-#, fuzzy
-msgid "write dependencies"
-msgstr "voeg DIR voor aan afhankelijkheden"
-
-#: lilypond-book.py:134
-msgid "PREF"
-msgstr ""
-
-#: lilypond-book.py:134
-#, fuzzy
-msgid "prepend PREF before each -M dependency"
-msgstr "voeg DIR voor aan afhankelijkheden"
-
-#: lilypond-book.py:135
-#, fuzzy
-msgid "don't run lilypond"
-msgstr "draai LilyPond niet"
-
-#: lilypond-book.py:136
-msgid "don't generate pictures"
-msgstr ""
-
-#: lilypond-book.py:137
-msgid "strip all lilypond blocks from output"
-msgstr ""
-
-#: lilypond-book.py:138 lilypond-book.py:139 lilypond.py:135 lilypond.py:136
-#: midi2ly.py:102 main.cc:114 main.cc:117
-msgid "FILE"
-msgstr "BESTAND"
-
-#: lilypond-book.py:138
-msgid "filename main output file"
-msgstr ""
-
-#: lilypond-book.py:139
-msgid "where to place generated files"
-msgstr ""
-
-#: lilypond-book.py:140 lilypond.py:137
-msgid "RES"
-msgstr ""
-
-#: lilypond-book.py:141 lilypond.py:138
-msgid "set the resolution of the preview to RES"
-msgstr ""
-
-#: lilypond-book.py:142 lilypond.py:148 midi2ly.py:105 mup2ly.py:78 main.cc:126
-msgid "be verbose"
-msgstr "wees breedsprakig"
-
-#: lilypond-book.py:143
-#, fuzzy
-msgid "print version information"
-msgstr "druk versienummer af"
-
-#: lilypond-book.py:144 lilypond.py:150 midi2ly.py:107 mup2ly.py:80 main.cc:127
-msgid "show warranty and copyright"
-msgstr "toon garantie en auteursrechten"
-
-#. format specific strings, ie. regex-es for input, and % strings for output
-#. global variables
-#. lilypond_binary = 'valgrind --suppressions=/home/hanwen/usr/src/guile-1.6.supp  --num-callers=10 /home/hanwen/usr/src/lilypond/lily/out/lilypond'
-#. only use installed binary  when we're installed too.
-#. only use installed binary  when we're installed too.
-#. ###############################################################
-#. Dimension handling for LaTeX.
-#.
-#. Ugh.  (La)TeX writes progress and error messages on stdout
-#. Redirect to stderr
-#: lilypond-book.py:230
-msgid "LaTeX failed."
-msgstr ""
-
-#. URG see lilypond
-#. Convert numeric values, with or without specific dimension, to floats.
-#. Keep other strings
-#. ###############################################################
-#. How to output various structures.
-#. # maybe <hr> ?
-#. Verbatim text is always finished with \n.  FIXME: For HTML,
-#. this newline should be removed.
-#. Verbatim text is always finished with \n.  FIXME: For HTML,
-#. this newline should be removed.
-#. # Ugh we need to differentiate on origin:
-#. # lilypond-block origin wants an extra <p>, but
-#. # inline music doesn't.
-#. # possibly other center options?
-#. verbatim text is always finished with \n
-#. verbatim text is always finished with \n
-#. verbatim text is always finished with \n
-#. verbatim text is always finished with \n
-#. do some tweaking: @ is needed in some ps stuff.
-#.
-#. ugh, the <p> below breaks inline images...
-#. clumsy workaround for python 2.2 pre bug.
-#. ###############################################################
-#. Recognize special sequences in the input
-#. Warning: This uses extended regular expressions.  Tread with care.
-#.
-#. legenda
-#.
-#. (?P<name>regex) -- assign result of REGEX to NAME
-#. *? -- match non-greedily.
-#. (?m) -- multiline regex: make ^ and $ match at each line
-#. (?s) -- make the dot match all characters including newline
-#. why do we have distinction between @mbinclude and @include?
-#. # we'd like to catch and reraise a more
-#. # detailed error, but alas, the exceptions
-#. # changed across the 1.5/2.1 boundary.
-#. ughUGH not original options
-#. First we want to scan the \documentclass line
-#. it should be the first non-comment line.
-#. The only thing we really need to know about the \documentclass line
-#. is if there are one or two columns to begin with.
-#. Then we add everything before \begin{document} to
-#. paperguru.m_document_preamble so that we can later write this header
-#. to a temporary file in find_latex_dims() to find textwidth.
-#. this is not bulletproof..., it checks the first 10 chunks
-#. newchunks.extend (func (m))
-#. python 1.5 compatible:
-#. we have to check for verbatim before doing include,
-#. because we don't want to include files that are mentioned
-#. inside a verbatim environment
-#. ugh fix input
-#. # Hmm, we should hash only lilypond source, and skip the
-#. # %options are ...
-#. # comment line
-#. # todo: include path, but strip
-#. # first part of the path.
-#. format == 'html'
-#. ugh rename
-#. Count sections/chapters.
-#. # TODO: do something like
-#. # this for texinfo/latex as well ?
-#. ugh
-#. fixme: be sys-independent.
-#.
-#. Ugh, fixing up dependencies for .tex generation
-#.
-#. Ugh.  (La)TeX writes progress and error messages on stdout
-#. Redirect to stderr
-#. # There used to be code to write .tex dependencies, but
-#. # that is silly: lilypond-book has its own dependency scheme
-#. # to ensure that all lily-XXX.tex files are there
-#. # TODO: put file name in front of texidoc.
-#. #
-#. # what's this? Docme --hwn
-#. #
-#. #docme: why global?
-#. Do It.
-#. should chmod -w
-#: lilypond-book.py:1557 lilypond.py:673 midi2ly.py:1018
-#, python-format
-msgid "getopt says: `%s'"
-msgstr "getopt zegt: `%s'"
-
-#. HACK
-#. status = os.system ('lilypond -w')
-#: lilypond-book.py:1630 lilypond.py:777
-#, fuzzy
-msgid "no files specified on command line"
-msgstr "geen bestanden gespecificeerd op de commandoregel."
-
-#.
-#. Petr, ik zou willen dat ik iets zinvoller deed,
-#. maar wat ik kan ik doen, het verandert toch niets?
-#. --hwn 20/aug/99
-#. !@PYTHON@
-#.
-#. lilypond.py -- Run LilyPond, add titles to bare score, generate printable
-#. document
-#. Invokes: lilypond, latex (or pdflatex), dvips, ps2pdf, gs
-#.
-#. source file of the GNU LilyPond music typesetter
-#.
-#. (c)  1998--2003  Han-Wen Nienhuys <hanwen@cs.uu.nl>
-#. Jan Nieuwenhuizen <janneke@gnu.org>
-#. This is the third incarnation of lilypond.
-#.
-#. Earlier incarnations of lilypond were written by
-#. Jeffrey B. Reed<daboys@austin.rr.com> (Python version)
-#. Jan Arne Fagertun <Jan.A.Fagertun@@energy.sintef.no> (Bourne shell script)
-#.
-#. Note: gettext work best if we use ' for docstrings and "
-#. for gettextable strings.
-#. --> DO NOT USE ''' for docstrings.
-#. ###############################################################
-#. Users of python modules should include this snippet
-#. and customize variables below.
-#. We'll suffer this path init stuff as long as we don't install our
-#. python packages in <prefix>/lib/pythonx.y (and don't kludge around
-#. it as we do with teTeX on Red Hat Linux: set some environment var
-#. (PYTHONPATH) in profile)
-#. If set, LILYPONDPREFIX must take prevalence
-#. if datadir is not set, we're doing a build and LILYPONDPREFIX
-#. Customize these
-#. if __name__ == '__main__':
-#. lilylib globals
-#. # FIXME
-#. # do -P or -p by default?
-#. #help_summary = _ ("Run LilyPond using LaTeX for titling")
-#: lilypond.py:121
-msgid "Run LilyPond, add titles, generate printable document."
-msgstr ""
-
-#: lilypond.py:127 main.cc:115
-msgid "write Makefile dependencies for every input file"
-msgstr "schrijf Makefile afhankelijkheden voor elk invoerbestand"
-
-#: lilypond.py:129
-msgid "print even more output"
-msgstr ""
-
-#: lilypond.py:130
-msgid "add DIR to LilyPond's search path"
-msgstr "voeg DIR toe aan LilyPonds zoekpad"
-
-#: lilypond.py:132
-#, fuzzy, python-format
-msgid "keep all output, output to directory %s.dir"
-msgstr "bewaar alle uitvoer, en noem de directory %s.dir"
-
-#: lilypond.py:133
-msgid "don't run LilyPond"
-msgstr "draai LilyPond niet"
-
-#: lilypond.py:134 main.cc:116
-msgid "produce MIDI output only"
-msgstr "produceer alleen MIDI uitvoer"
-
-#: lilypond.py:135 midi2ly.py:102
-msgid "write output to FILE"
-msgstr "schrijf uitvoer naar BESTAND"
-
-#: lilypond.py:136
-msgid "find pfa fonts used in FILE"
-msgstr "zoek pfa fonts gebruikt in BESTAND"
-
-#: lilypond.py:139
-msgid "generate PostScript output"
-msgstr "genereer PostScipt uitvoer"
-
-#: lilypond.py:140
-msgid "generate PNG page images"
-msgstr ""
-
-#: lilypond.py:141
-#, fuzzy
-msgid "generate PS.GZ"
-msgstr "genereer PostScipt uitvoer"
-
-#: lilypond.py:142
-#, fuzzy
-msgid "generate PDF output"
-msgstr "genereer PostScipt uitvoer"
-
-#: lilypond.py:143
-msgid "use pdflatex to generate a PDF output"
-msgstr ""
-
-#. FIXME: preview, picture; to indicate creation of a PNG?
-#: lilypond.py:145
-msgid "make a picture of the first system"
-msgstr ""
-
-#: lilypond.py:146
-msgid "make HTML file with links to all output"
-msgstr ""
-
-#: lilypond.py:147
-msgid "KEY=VAL"
-msgstr "SEUTEL=WAARDE"
-
-#: lilypond.py:147
-msgid "change global setting KEY to VAL"
-msgstr "verander globale instelling SLEUTEL in WAARDE"
-
-#: lilypond.py:149 midi2ly.py:106 mup2ly.py:79 main.cc:125
-msgid "print version number"
-msgstr "druk versienummer af"
-
-#. other globals
-#. Pdftex support
-#. # yuk.
-#. lilypond_binary = 'valgrind --suppressions=%(home)s/usr/src/guile-1.6.supp --num-callers=10 %(home)s/usr/src/lilypond/lily/out/lilypond '% { 'home' : '/home/hanwen' }
-#. only use installed binary  when we're installed too.
-#. init to empty; values here take precedence over values in the file
-#. # TODO: change name.
-#. for geometry v3
-#. Output formats that lilypond should create
-#. what a name.
-#. ly.warning (_ ("invalid value: %s") % `val`)
-#. ly.warning (_ ("invalid value: %s") % `val`)
-#: lilypond.py:232
-#, fuzzy, python-format
-msgid "no such setting: `%s'"
-msgstr "geen dergelijke instelling: %s"
-
-#. 2 == user interrupt.
-#: lilypond.py:274
-#, python-format
-msgid "LilyPond crashed (signal %d)."
-msgstr ""
-
-#: lilypond.py:275
-msgid "Please submit a bug report to bug-lilypond@gnu.org"
-msgstr ""
-
-#: lilypond.py:281
-#, python-format
-msgid "LilyPond failed on input file %s (exit status %d)"
-msgstr ""
-
-#: lilypond.py:284
-#, python-format
-msgid "LilyPond failed on an input file (exit status %d)"
-msgstr ""
-
-#: lilypond.py:285
-#, fuzzy
-msgid "Continuing..."
-msgstr "Uitvoeren %s..."
-
-#. urg
-#: lilypond.py:296
-#, python-format
-msgid "Analyzing %s..."
-msgstr "Analyseer %s..."
-
-#. search only the first 10k
-#: lilypond.py:354
-#, fuzzy, python-format
-msgid "no LilyPond output found for `%s'"
-msgstr "geen lilypond uitvoer gevonden voor %s"
-
-#. The final \n seems important here. It ensures that the footers and taglines end up on the right page.
-#. TODO: should set textheight (enlarge) depending on papersize.
-#: lilypond.py:397
-#, fuzzy, python-format
-msgid "invalid value: `%s'"
-msgstr "ongeldige waarde: %s"
-
-#. set sane geometry width (a4-width) for linewidth = -1.
-#. who the hell is 597 ?
-#. Ugh.  (La)TeX writes progress and error messages on stdout
-#. Redirect to stderr
-#: lilypond.py:511
-msgid "LaTeX failed on the output file."
-msgstr ""
-
-#. make a preview by rendering only the 1st line
-#. of each score
-#: lilypond.py:568
-msgid ""
-"Trying create PDF, but no PFA fonts found.\n"
-"Using bitmap fonts instead. This will look bad."
-msgstr ""
-
-#. ugh. Different targets?
-#. Added as functionality to lilypond, because lilypond may well need to do this
-#. in future too.
-#. no ps header?
-#: lilypond.py:615
-#, python-format
-msgid "not a PostScript file: `%s'"
-msgstr "geen PostScript bestand: `%s'"
-
-#. todo
-#: lilypond.py:660
-#, fuzzy, python-format
-msgid "Writing HTML menu `%s'"
-msgstr "Schrijven van `%s'..."
-
-#. signal programming error
-#. Don't convert input files to abspath, rather prepend '.' to include
-#. path.
-#. As a neat trick, add directory part of first input file
-#. to include path.  That way you can do without the clumsy -I in:
-#. lilypond -I foe/bar/baz foo/bar/baz/baz.ly
-#: lilypond.py:769
-msgid "pseudo filter"
-msgstr ""
-
-#: lilypond.py:772
-msgid "pseudo filter only for single input file"
-msgstr ""
-
-#. Ugh, maybe make a setup () function
-#. hmmm. Wish I'd 've written comments when I wrote this.
-#. now it looks complicated.
-#: lilypond.py:806
-#, fuzzy, python-format
-msgid "filename should not contain spaces: `%s'"
-msgstr "Bevat reeds: `%s'"
-
-#. to be sure, add tmpdir *in front* of inclusion path.
-#. os.environ['TEXINPUTS'] =  tmpdir + ':' + os.environ['TEXINPUTS']
-#. We catch all exceptions, because we need to do stuff at exit:
-#. * copy any successfully generated stuff from tempdir and
-#. notify user of that
-#. * cleanout tempdir
-#. ## ARGH. This also catches python programming errors.
-#. ## this should only catch lilypond nonzero exit  status
-#. ## --hwn
-#. TODO: friendly message about LilyPond setup/failing?
-#.
-#: lilypond.py:845
-msgid "Running LilyPond failed. Rerun with --verbose for a trace."
-msgstr ""
-
-#. Our LilyPond pseudo filter always outputs to 'lelie'
-#. have subsequent stages and use 'lelie' output.
-#. unless: add --tex, or --latex?
-#. TODO: friendly message about TeX/LaTeX setup,
-#. trying to run tex/latex by hand
-#: lilypond.py:886
-msgid "Failed to make PS file. Rerun with --verbose for a trace."
-msgstr ""
-
-#. unless: add --tex, or --latex?
-#. TODO: friendly message about TeX/LaTeX setup,
-#. trying to run tex/latex by hand
-#: lilypond.py:916
-msgid "Running LaTeX falied. Rerun with --verbose for a trace."
-msgstr ""
-
-#. add DEP to targets?
-#: lilypond.py:926 input-file-results.cc:68
-#, c-format, python-format
-msgid "dependencies output to `%s'..."
-msgstr "afhankelijkheden uitvoer naar `%s'..."
-
-#: lilypond.py:937
-#, fuzzy, python-format
-msgid "%s output to <stdout>..."
-msgstr "%s uitvoer naar `%s'..."
-
-#: lilypond.py:942 lilypond.py:968 includable-lexer.cc:57
-#: input-file-results.cc:191 input-file-results.cc:197 lily-guile.cc:86
-#, c-format, python-format
-msgid "can't find file: `%s'"
-msgstr "kan bestand niet vinden: `%s'"
-
-#. Hmm, if this were a function, we could call it the except: clauses
-#: lilypond.py:965
-#, fuzzy, python-format
-msgid "%s output to %s..."
-msgstr "%s uitvoer naar `%s'..."
-
-#. !@PYTHON@
-#.
-#. midi2ly.py -- LilyPond midi import script
-#.
-#. source file of the GNU LilyPond music typesetter
-#.
-#. (c)  1998--2003  Han-Wen Nienhuys <hanwen@cs.uu.nl>
-#. Jan Nieuwenhuizen <janneke@gnu.org>
-#. ###############################################################
-#. Users of python modules should include this snippet.
-#.
-#. This soon to be removed for: import lilypond.lilylib as ly
-#. ###############################################################
-#. ###############################################################
-#. ############### CONSTANTS
-#. ###############################################################
-#. temp_dir = os.path.join (original_dir,  '%s.dir' % program_name)
-#. original_dir = os.getcwd ()
-#. keep_temp_dir_p = 0
-#: midi2ly.py:94
-msgid "Convert MIDI to LilyPond source."
-msgstr ""
-
-#: midi2ly.py:97
-msgid "print absolute pitches"
-msgstr ""
-
-#: midi2ly.py:98 midi2ly.py:103
-msgid "DUR"
-msgstr "DUUR"
-
-#: midi2ly.py:98
-msgid "quantise note durations on DUR"
-msgstr ""
-
-#: midi2ly.py:99
-msgid "print explicit durations"
-msgstr ""
-
-#: midi2ly.py:101
-#, fuzzy
-msgid "ALT[:MINOR]"
-msgstr "ACC[:MINEUR]"
-
-#: midi2ly.py:101
-#, fuzzy
-msgid "set key: ALT=+sharps|-flats; MINOR=1"
-msgstr "zet toonsoort: ACC +kruizen/-mollen; :1 mineur"
-
-#: midi2ly.py:103
-msgid "quantise note starts on DUR"
-msgstr ""
-
-#: midi2ly.py:104
-msgid "DUR*NUM/DEN"
-msgstr ""
-
-#: midi2ly.py:104
-msgid "allow tuplet durations DUR*NUM/DEN"
-msgstr ""
-
-#: midi2ly.py:108
-msgid "treat every text as a lyric"
-msgstr ""
-
-#: midi2ly.py:136 mup2ly.py:130
-msgid " 2001--2003"
-msgstr ""
-
-#: midi2ly.py:141 mup2ly.py:135
-msgid ""
-"\n"
-"Distributed under terms of the GNU General Public License. It comes with\n"
-"NO WARRANTY."
-msgstr ""
-
-#: midi2ly.py:166 mup2ly.py:162
-msgid "Exiting ... "
-msgstr "Beëidigen ..."
-
-#: midi2ly.py:264 mup2ly.py:261
-#, python-format
-msgid "command exited with value %d"
-msgstr "opdracht eindigde met waarde %d"
-
-#. ###############################################################
-#. END Library
-#. ###############################################################
-#. hmm
-#. major scale: do-do
-#. minor scale: la-la  (= + 5) '''
-#. By tradition, all scales now consist of a sequence
-#. of 7 notes each with a distinct name, from amongst
-#. a b c d e f g.  But, minor scales have a wide
-#. second interval at the top - the 'leading note' is
-#. sharped. (Why? it just works that way! Anything
-#. else doesn't sound as good and isn't as flexible at
-#. saying things. In medieval times, scales only had 6
-#. notes to avoid this problem - the hexachords.)
-#. So, the d minor scale is d e f g a b-flat c-sharp d
-#. - using d-flat for the leading note would skip the
-#. name c and duplicate the name d.  Why isn't c-sharp
-#. put in the key signature? Tradition. (It's also
-#. supposedly based on the Pythagorean theory of the
-#. cycle of fifths, but that really only applies to
-#. major scales...)  Anyway, g minor is g a b-flat c d
-#. e-flat f-sharp g, and all the other flat minor keys
-#. end up with a natural leading note. And there you
-#. have it.
-#. John Sankey <bf250@freenet.carleton.ca>
-#.
-#. Let's also do a-minor: a b c d e f gis a
-#.
-#. --jcn
-#. as -> gis
-#. des -> cis
-#. ges -> fis
-#. g -> fisis
-#. d -> cisis
-#. a -> gisis
-#. b -> ces
-#. e -> fes
-#. f -> eis
-#. c -> bis
-#. # FIXME: compile fix --jcn
-#. TODO: move space
-#. fis cis gis dis ais eis bis
-#. bes es as des ges ces fes
-#. urg, we should be sure that we're in a lyrics staff
-#. all include ALL_NOTES_OFF
-#. ugh, must set key while parsing
-#. because Note init uses key
-#. Better do Note.calc () at dump time?
-#. last_lyric.clocks = t - last_time
-#. hmm
-#. urg, this will barf at meter changes
-#. urg LilyPond doesn't start at c4, but
-#. remembers from previous tracks!
-#. reference_note = Note (clocks_per_4, 4*12, 0)
-#. must be in \notes mode for parsing \skip
-#: midi2ly.py:1002
-#, python-format
-msgid "%s output to `%s'..."
-msgstr "%s uitvoer naar `%s'..."
-
-#: midi2ly.py:1033
-msgid "Example:"
-msgstr ""
-
-#: midi2ly.py:1083
-msgid "no files specified on command line."
-msgstr "geen bestanden gespecificeerd op de commandoregel."
-
-#. !@PYTHON@
-#. mup2ly.py -- mup input converter
-#.
-#. source file of the GNU LilyPond music typesetter
-#.
-#. (c) 2001
-#. if set, LILYPONDPREFIX must take prevalence
-#. if datadir is not set, we're doing a build and LILYPONDPREFIX
-#: mup2ly.py:70
-#, fuzzy
-msgid "Convert mup to LilyPond source."
-msgstr "Converteer mup naar ly."
-
-#: mup2ly.py:73
-msgid "debug"
-msgstr "debug"
-
-#: mup2ly.py:74
-msgid "define macro NAME [optional expansion EXP]"
-msgstr "definieer macro NAAM [optionele expansie EXP]"
-
-#: mup2ly.py:77
-msgid "only pre-process"
-msgstr "alleen pre-processen"
-
-#. Duh.  Python style portable: cp *.EXT OUTDIR
-#. system ('cp *.%s %s' % (ext, outdir), 1)
-#. Python < 1.5.2 compatibility
-#.
-#. On most platforms, this is equivalent to
-#. `normpath(join(os.getcwd()), PATH)'.  *Added in Python version 1.5.2*
-#. if set, LILYPONDPREFIX must take prevalence
-#. if datadir is not set, we're doing a build and LILYPONDPREFIX
-#. ###############################################################
-#. END Library
-#.
-#. PMX cut and paste
-#.
-#. if not self.entries:
-#. #return '\n'
-#. #ugh ugh
-#. return '\n%s = {}\n\n' % self.idstring ()
-#. ugh
-#. def set_clef (self, letter):
-#. clstr = clef_table[letter]
-#. self.voices[0].add_nonchord (Clef (clstr))
-#. urg
-#. maybe use import copy?
-#. for i in self.pitches:
-#. ch.pitches.append (i)
-#. for i in self.scripts:
-#. ch.scripts.append (i)
-#. http://www.arkkra.com/doc/uguide/contexts.html
-#. #self.current_staffs = []
-#. duh
-#. FIXME: 1?
-#. FIXME: does key play any role in this?
-#. ch = self.current_voices[0].last_chord ()
-#. ch.basic_duration = self.current_voices[0].last_chord ().basic_duration
-#. ugh
-#. ch = self.current_voices[0].last_chord ()
-#. `;' is not a separator, chords end with ';'
-#. mup resets default duration and pitch each bar
-#. ugh: these (and lots more) should also be parsed in
-#. context staff.  we should have a class Staff_properties
-#. and parse/set all those.
-#. shortcut: set to official mup maximum (duh)
-#. self.set_staffs (40)
-#: mup2ly.py:1076
-#, python-format
-msgid "no such context: %s"
-msgstr "geen context als: `%s'"
-
-#. hmm
-#. dig this: mup allows ifdefs inside macro bodies
-#. don't do nested multi-line defines
-#. duh: mup is strictly line-based, except for `define',
-#. which is `@' terminated and may span several lines
-#. don't define new macros in unactive areas
-#. To support nested multi-line define's
-#. process_function and macro_name, macro_body
-#. should become lists (stacks)
-#. The mup manual is undetermined on this
-#. and I haven't seen examples doing it.
-#.
-#. don't do nested multi-line define's
-#. writes to stdout for help2man
-#. don't call
-#. identify ()
-#. sys.stdout.flush ()
-#. handy emacs testing
-#. if not files:
-#. files = ['template.mup']
-#: mup2ly.py:1300
-#, python-format
-msgid "Processing `%s'..."
-msgstr "Verwerken van `%s'..."
-
-#: mup2ly.py:1319
-#, python-format
-msgid "Writing `%s'..."
-msgstr "Schrijven van `%s'..."
-
-#: getopt-long.cc:146
-#, c-format
-msgid "option `%s' requires an argument"
-msgstr "optie `%s' vereist een argument"
-
-#: getopt-long.cc:150
-#, c-format
-msgid "option `%s' doesn't allow an argument"
-msgstr "optie `%s' staat geen argument toe"
-
-#: getopt-long.cc:154
-#, c-format
-msgid "unrecognized option: `%s'"
-msgstr "onbekende optie: `%s'"
-
-#: getopt-long.cc:161
-#, c-format
-msgid "invalid argument `%s' to option `%s'"
-msgstr "onjuist argument: `%s' voor optie `%s'"
-
-#: warn.cc:25
-#, fuzzy, c-format
-msgid "warning: %s\n"
-msgstr "waarschuwing: "
-
-#: warn.cc:31
-#, fuzzy, c-format
-msgid "error: %s\n"
-msgstr "fout: "
-
-#: warn.cc:44
-#, fuzzy, c-format
-msgid "programming error: %s (Continuing; cross thumbs)\n"
-msgstr " (Ga verder; duim maar)"
-
-#: accidental.cc:202 key-signature-interface.cc:137
-#, c-format
-msgid "accidental `%s' not found"
-msgstr ""
-
-#: accidental-engraver.cc:171 new-accidental-engraver.cc:238
-#, c-format
-msgid "Accidental typesetting list must begin with context-name: %s"
-msgstr ""
-
-#: accidental-engraver.cc:196 new-accidental-engraver.cc:263
-#, fuzzy, c-format
-msgid "unknown accidental typesetting: %s. Ignored"
-msgstr "onbekende ontsnapte string: `\\%s'"
-
-#: accidental-engraver.cc:212 new-accidental-engraver.cc:279
-#, c-format
-msgid "Symbol is not a parent context: %s. Ignored"
-msgstr ""
-
-#: accidental-engraver.cc:215 new-accidental-engraver.cc:282
-#, c-format
-msgid "Accidental typesetting must be pair or context-name: %s"
-msgstr ""
-
-#: afm.cc:66
-#, c-format
-msgid "can't find character number: %d"
-msgstr "kan teken niet vinden met nummer: %d"
-
-#: afm.cc:81
-#, c-format
-msgid "can't find character called: `%s'"
-msgstr "kan teken niet vinden genaamd: `%s'"
-
-#: afm.cc:142
-#, c-format
-msgid "Error parsing AFM file: `%s'"
-msgstr "Fout bij ontleden AFM-bestand: `%s'"
-
-#: all-font-metrics.cc:95
-#, c-format
-msgid "checksum mismatch for font file: `%s'"
-msgstr "checksum fout voor fontbestand: `%s'"
-
-#: all-font-metrics.cc:97
-#, c-format
-msgid "does not match: `%s'"
-msgstr "komt niet overeen met: `%s'"
-
-#: all-font-metrics.cc:102
-msgid ""
-" Rebuild all .afm files, and remove all .pk and .tfm files.  Rerun with -V "
-"to show font paths."
-msgstr ""
-"Bouw alle .afm bestanden opnieuw en verwijder alle .pk en .tfm bestanden.  "
-"Voer nog eens uit met -V om font paden te tonen."
-
-#: all-font-metrics.cc:103
-msgid ""
-"A script for removing font-files is delivered with the source-code,\n"
-"in buildscripts/clean-fonts.sh"
-msgstr ""
-
-#: all-font-metrics.cc:169
-#, c-format
-msgid "can't find font: `%s'"
-msgstr "kan font niet vinden: `%s'"
-
-#: all-font-metrics.cc:170
-msgid "Loading default font"
-msgstr "Laad verstek font"
-
-#: all-font-metrics.cc:185
-#, c-format
-msgid "can't find default font: `%s'"
-msgstr "kan verstekfont niet vinden: `%s'"
-
-#: all-font-metrics.cc:186 includable-lexer.cc:59 input-file-results.cc:192
-#, c-format
-msgid "(search path: `%s')"
-msgstr "(zoekpad: `%s')"
-
-#: all-font-metrics.cc:187
-msgid "Giving up"
-msgstr "Geef op"
-
-#: auto-change-iterator.cc:43 change-iterator.cc:60
-#: part-combine-music-iterator.cc:120
-msgid "Can't switch translators, I'm there already"
-msgstr "Kan niet wisselen van vertaler, ben al hier"
-
-#: bar-check-iterator.cc:51
-#, c-format
-msgid "barcheck failed at: %s"
-msgstr "maatstreep controle gefaald op: %s"
-
-#: beam.cc:146
-#, fuzzy
-msgid "beam has less than two visible stems"
-msgstr "waardestreep heeft minder dan twee stokken"
-
-#: beam.cc:151
-#, fuzzy
-msgid "Beam has less than two stems. Removing beam."
-msgstr "waardestreep heeft minder dan twee stokken"
-
-#: beam.cc:976
-msgid ""
-"Not sure that we can find a nice beam slope (no viable initial configuration "
-"found)."
-msgstr ""
-
-#: beam-engraver.cc:176
-msgid "already have a beam"
-msgstr "heb al een waardestreep"
-
-#: beam-engraver.cc:259
-msgid "unterminated beam"
-msgstr "onbeëindigde waardestreep"
-
-#: beam-engraver.cc:292 chord-tremolo-engraver.cc:197
-msgid "stem must have Rhythmic structure"
-msgstr "stok moet Ritmische structuur hebben"
-
-#: beam-engraver.cc:306
-msgid "stem doesn't fit in beam"
-msgstr "stok past niet in waardestreep"
-
-#: beam-engraver.cc:307
-msgid "beam was started here"
-msgstr "waardestreep werd hier gestart"
-
-#: break-align-interface.cc:173
-#, fuzzy, c-format
-msgid "No spacing entry from %s to `%s'"
-msgstr "Voeg translator niet toe: `%s'"
-
-#: change-iterator.cc:22
-#, c-format
-msgid "can't change `%s' to `%s'"
-msgstr "kan `%s' niet in `%s' veranderen"
-
-#.
-#. We could change the current translator's id, but that would make
-#. errors hard to catch
-#.
-#. last->translator_id_string_  = get_change ()->change_to_id_string_;
-#.
-#: change-iterator.cc:79
-msgid "I'm one myself"
-msgstr "Ben er zelf een"
-
-#: change-iterator.cc:82
-msgid "none of these in my family"
-msgstr "geen van deze in mijn gezin"
-
-#: chord-tremolo-engraver.cc:98
-#, c-format
-msgid "Chord tremolo with %d elements. Must have two elements."
-msgstr ""
-
-#: chord-tremolo-engraver.cc:157
-msgid "unterminated chord tremolo"
-msgstr "onbeëindigd akkoordtremolo"
-
-#: chord-tremolo-iterator.cc:69
-msgid "no one to print a tremolos"
-msgstr "niemand om tremolos af te drukken"
-
-#: clef.cc:64
-#, c-format
-msgid "clef `%s' not found"
-msgstr ""
-
-#: cluster.cc:131
-#, fuzzy, c-format
-msgid "unknown cluster style `%s'"
-msgstr "onbekende translator: `%s'"
-
-#: coherent-ligature-engraver.cc:84
-#, c-format
-msgid "gotcha: ptr=%ul"
-msgstr ""
-
-#: coherent-ligature-engraver.cc:96
-#, c-format
-msgid "distance=%f"
-msgstr ""
-
-#: coherent-ligature-engraver.cc:139
-#, c-format
-msgid "Coherent_ligature_engraver: setting `spacing-increment = 0.01': ptr=%ul"
-msgstr ""
-
-#: custos.cc:92
-#, c-format
-msgid "custos `%s' not found"
-msgstr ""
-
-#: dimensions.cc:13
-msgid "NaN"
-msgstr "NaN"
-
-#: dynamic-engraver.cc:204 span-dynamic-performer.cc:82
-msgid "can't find start of (de)crescendo"
-msgstr "kan start van (de)crescendo niet vinden"
-
-#: dynamic-engraver.cc:216
-msgid "already have a crescendo"
-msgstr "heb al een crescendo"
-
-#: dynamic-engraver.cc:217
-msgid "already have a decrescendo"
-msgstr "heb al een decrescendo"
-
-#: dynamic-engraver.cc:220
-#, fuzzy
-msgid "Cresc started here"
-msgstr "waardestreep werd hier gestart"
-
-#: dynamic-engraver.cc:323
-msgid "unterminated (de)crescendo"
-msgstr "onbeëindigd (de)crescendo"
-
-#: event.cc:49
-#, fuzzy, c-format
-msgid "Transposition by %s makes alteration larger than two"
-msgstr "Transponering van %s geeft tripel kruizen/mollen"
-
-#: event-chord-iterator.cc:76 output-property-music-iterator.cc:27
-#, fuzzy, c-format
-msgid "Junking event: `%s'"
-msgstr "Schroot verzoek: `%s'"
-
-#: extender-engraver.cc:94
-msgid "unterminated extender"
-msgstr "onbeëindigde extender"
-
-#: extender-engraver.cc:106
-#, fuzzy
-msgid "Nothing to connect extender to on the left.  Ignoring extender event."
-msgstr ""
-"Niets om extender aan linkerkant aan vast te maken.  Negeer extender verzoek."
-
-#: folded-repeat-iterator.cc:88
-msgid "no one to print a repeat brace"
-msgstr "niemand om een herhalings haak af te drukken"
-
-#: font-interface.cc:239
-msgid "couldn't find any font satisfying "
-msgstr "kon geen enkel font vinden dat voldoet aan "
-
-#: glissando-engraver.cc:100
-#, fuzzy
-msgid "Unterminated glissando."
-msgstr "onbeëindigde bindingsboog"
-
-#: gourlay-breaking.cc:188
-#, c-format
-msgid "Optimal demerits: %f"
-msgstr ""
-
-#: gourlay-breaking.cc:193
-msgid "No feasible line breaking found"
-msgstr "Geen doenbare regelafbreuk gevonden"
-
-#: gregorian-ligature-engraver.cc:59
-#, fuzzy, c-format
-msgid "\\%s ignored"
-msgstr "(genegeerd)"
-
-#: gregorian-ligature-engraver.cc:64
-#, c-format
-msgid "implied \\%s added"
-msgstr ""
-
-#.
-#. Todo: do something sensible. The grob-pq-engraver is not water
-#. tight, and stuff like tupletSpannerDuration confuses it.
-#.
-#: grob-pq-engraver.cc:130
-#, c-format
-msgid ""
-"Skipped something?\n"
-"Grob %s ended before I expected it to end."
-msgstr ""
-
-#: hairpin.cc:98
-msgid "decrescendo too small"
-msgstr "decrescendo te klein"
-
-#: hairpin.cc:99
-msgid "crescendo too small"
-msgstr "crescendo te klein"
-
-#: horizontal-bracket-engraver.cc:64
-msgid "Don't have that many brackets."
-msgstr ""
-
-#: horizontal-bracket-engraver.cc:73
-#, fuzzy
-msgid "Conflicting note group events."
-msgstr "Tegenstrijdige toonsoorten gevonden."
-
-#: hyphen-engraver.cc:87
-msgid "unterminated hyphen"
-msgstr "onafgesloten waardestreep"
-
-#: hyphen-engraver.cc:99
-#, fuzzy
-msgid "Nothing to connect hyphen to on the left.  Ignoring hyphen event."
-msgstr ""
-"Niets om streepje aan linkerkant aan vast te maken.  Negeer streepje verzoek."
-
-#: input.cc:99
-msgid "non fatal error: "
-msgstr "niet noodlottige fout: "
-
-#: input.cc:107 source-file.cc:146 source-file.cc:239
-msgid "position unknown"
-msgstr "positie onbekend"
-
-#: input-file-results.cc:72 source-file.cc:54 streams.cc:38
-#, c-format
-msgid "can't open file: `%s'"
-msgstr "kan bestand niet openen: `%s'"
-
-#: input-file-results.cc:132
-msgid "Score contains errors; will not process it"
-msgstr "Partituur bevat fouten; zal hem niet verwerken"
-
-#: input-file-results.cc:172
-#, c-format
-msgid "Now processing: `%s'"
-msgstr "Nu wordt verwerkt: `%s'"
-
-#: key-performer.cc:96
-msgid "FIXME: key change merge"
-msgstr "MAAKME: toonsoort sleutel samenvoeging"
-
-#: kpath.cc:76
-#, fuzzy, c-format
-msgid "Kpathsea couldn't find TFM file `%s'"
-msgstr "kan bestand niet vinden: `%s'"
-
-#: ligature-engraver.cc:159
-#, fuzzy
-msgid "can't find start of ligature"
-msgstr "kan start van bindingsboog niet vinden"
-
-#: ligature-engraver.cc:165
-msgid "no right bound"
-msgstr ""
-
-#: ligature-engraver.cc:191
-#, fuzzy
-msgid "already have a ligature"
-msgstr "heb al een waardestreep"
-
-#: ligature-engraver.cc:207
-msgid "no left bound"
-msgstr ""
-
-#: ligature-engraver.cc:258
-#, fuzzy
-msgid "unterminated ligature"
-msgstr "onbeëindigde bindingsboog"
-
-#: ligature-engraver.cc:282
-msgid "ligature may not contain rest; ignoring rest"
-msgstr ""
-
-#: ligature-engraver.cc:283
-#, fuzzy
-msgid "ligature was started here"
-msgstr "waardestreep werd hier gestart"
-
-#: lily-guile.cc:88
-#, c-format
-msgid "(load path: `%s')"
-msgstr "(zoekpad: `%s')"
-
-#: lily-guile.cc:576
-#, fuzzy, c-format
-msgid "Can't find property type-check for `%s' (%s)."
-msgstr ""
-"Kan geen type-controle vinden voor property `%s'.  Misschien een tikfout?"
-
-#: lily-guile.cc:579
-msgid "Perhaps you made a typing error?"
-msgstr ""
-
-#: lily-guile.cc:585
-msgid "Doing assignment anyway."
-msgstr ""
-
-#: lily-guile.cc:599
-#, c-format
-msgid "Type check for `%s' failed; value `%s' must be of type `%s'"
-msgstr "Type contole gefaald voor `%s'; waarde `%s' moet type hebben: `%s'"
-
-#: lookup.cc:173
-msgid "round filled box horizontal extent smaller than blot; decreasing blot"
-msgstr ""
-
-#: lookup.cc:178
-msgid "round filled box vertical extent smaller than blot; decreasing blot"
-msgstr ""
-
-#: lyric-phrasing-engraver.cc:311
-msgid "lyrics found without any matching notehead"
-msgstr "liedteksten gevonden zonder bijbehorend nootbolletje"
-
-#: lyric-phrasing-engraver.cc:317
-msgid "Huh? Melismatic note found to have associated lyrics."
-msgstr "Huh?  Melismatische noot blijkt bijbehorende liedtekst te hebben."
-
-#: main.cc:106
-msgid "EXPR"
-msgstr "EXPR"
-
-#: main.cc:107
-msgid "set options, use -e '(ly-option-usage)' for help"
-msgstr ""
-
-#: main.cc:110
-msgid "use output format EXT"
-msgstr ""
-
-#: main.cc:112
-msgid "FIELD"
-msgstr "VELD"
-
-#: main.cc:112
-msgid "write header field to BASENAME.FIELD"
-msgstr "schrijf kop veld naar BASISNAAM.VELD"
-
-#: main.cc:113
-msgid "add DIR to search path"
-msgstr "voeg DIR toe aan zoekpad"
-
-#: main.cc:114
-msgid "use FILE as init file"
-msgstr "gebruik BESTAND als initialisatiebestand"
-
-#: main.cc:118
-msgid "prepend DIR to dependencies"
-msgstr "voeg DIR voor aan afhankelijkheden"
-
-#.
-#. should audit again.
-#.
-#: main.cc:123
-msgid "inhibit file output naming and exporting"
-msgstr "verbied naamgeving van uitvoerbestand en exportering"
-
-#. No version number or newline here. It confuses help2man.
-#: main.cc:155
-#, c-format
-msgid "Usage: %s [OPTIONS]... FILE..."
-msgstr "Gebruik: %s [OPTIE]... BESTAND..."
-
-#: main.cc:157
-msgid "Typeset music and or play MIDI from FILE."
-msgstr "Zet muziek en of speel MIDI van BESTAND."
-
-#: main.cc:160
-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 is een muziekzetter.  Zij maakt prachtige bladmuziek\n"
-"uitgaande van een hoog niveau beschrijving bestand.  LilyPond \n"
-"maakt deel uit van het GNU Project.\n"
-
-#: main.cc:182
-#, c-format
-msgid ""
-"This is free software.  It is covered by the GNU General Public License,\n"
-"and you are welcome to change it and/or distribute copies of it under\n"
-"certain conditions.  Invoke as `%s --warranty' for more information.\n"
-msgstr ""
-"Dit is vrije programmatuur.  Het valt onder de GNU Algemene Openbare\n"
-"Licentie, en u wordt uitgenodigd het te veranderen en/of te verspreiden\n"
-"onder bepaalde voorwaarden.  Roep aan als `%s --warranty' voor meer\n"
-"informatie.\n"
-
-#: main.cc:198
-msgid "GNU LilyPond -- The music typesetter"
-msgstr "GNU LilyPond -- De Muziekzetter"
-
-#: main.cc:206
-#, fuzzy
-msgid ""
-"    This program is free software; you can redistribute it and/or\n"
-"modify it under the terms of the GNU General Public License version 2\n"
-"as published by the Free Software Foundation.\n"
-"\n"
-"    This program is distributed in the hope that it will be useful,\n"
-"but WITHOUT ANY WARRANTY; without even the implied warranty of\n"
-"MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU\n"
-"General Public License for more details.\n"
-"\n"
-"    You should have received a copy (refer to the file COPYING) of the\n"
-"GNU General Public License along with this program; if not, write to\n"
-"the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA "
-"02111-1307,\n"
-"USA.\n"
-msgstr ""
-"    Dit programma is vrije programmatuur; u kunt het verspreiden en/of\n"
-"veranderen onder de voorwaarden van de GNU Algemene Openbare Licentie\n"
-"versie 2, zoals gepubliceerd door de Free Software Foundation.\n"
-"\n"
-"    Dit programma wordt verspreid in de hoop dat het nuttig zal zijn,\n"
-"maar ZONDER ENIGE GARANTIE; zelfs zonder impliciete garantie voor\n"
-"UITBATING of als zijnde GESCHIKT VOOR EEN BEPAALD DOEL.  Zie de GNU\n"
-"Algemene Openbare Licentie voor details.\n"
-"\n"
-"    Als het goed is, heeft u bij dit programma een exemplaar (zie het\n"
-"bestand COPYING) ontvangen van de GNU Algemene Openbare Licentie;\n"
-"zoniet, schrijf dan naar de Free Software Foundation, Inc.,\n"
-"675 Mass Ave, Cambridge, MA 02139, USA.\n"
-
-#: mensural-ligature.cc:153
-#, c-format
-msgid "Mensural_ligature:thickness undefined on flexa %d; assuming 1.4"
-msgstr ""
-
-#: mensural-ligature.cc:169
-#, c-format
-msgid "Mensural_ligature:delta-pitch undefined on flexa %d; assuming 0"
-msgstr ""
-
-#: mensural-ligature.cc:182
-#, c-format
-msgid "Mensural_ligature:flexa-width undefined on flexa %d; assuming 2.0"
-msgstr ""
-
-#: mensural-ligature.cc:215
-msgid "Mensural_ligature:unexpected case fall-through"
-msgstr ""
-
-#: mensural-ligature.cc:225
-msgid "Mensural_ligature: (join_left == 0)"
-msgstr ""
-
-#: mensural-ligature-engraver.cc:248 mensural-ligature-engraver.cc:397
-msgid "unexpected case fall-through"
-msgstr ""
-
-#: mensural-ligature-engraver.cc:259
-msgid "ligature with less than 2 heads -> skipping"
-msgstr ""
-
-#: mensural-ligature-engraver.cc:279
-msgid "can not determine pitch of ligature primitive -> skipping"
-msgstr ""
-
-#: mensural-ligature-engraver.cc:302
-msgid "prime interval within ligature -> skipping"
-msgstr ""
-
-#: mensural-ligature-engraver.cc:312
-msgid "mensural ligature: duration none of L, B, S -> skipping"
-msgstr ""
-
-#: midi-item.cc:148
-#, c-format
-msgid "no such instrument: `%s'"
-msgstr "geen dergelijk instrument: `%s'"
-
-#: midi-item.cc:238
-msgid "silly duration"
-msgstr "rare duur"
-
-#: midi-item.cc:251
-msgid "silly pitch"
-msgstr "rare toonhoogte"
-
-#: music-output-def.cc:111
-#, c-format
-msgid "can't find `%s' context"
-msgstr "kan `%s' context niet vinden"
-
-#: my-lily-lexer.cc:169
-#, c-format
-msgid "Identifier name is a keyword: `%s'"
-msgstr "Identifier naam is een sleutelwoord: `%s'"
-
-#: my-lily-lexer.cc:191
-#, c-format
-msgid "error at EOF: %s"
-msgstr "fout bij EOF: %s"
-
-#: my-lily-parser.cc:44
-msgid "Parsing..."
-msgstr "Ontleden..."
-
-#: my-lily-parser.cc:54
-msgid "Braces don't match"
-msgstr "Haakjes paren niet"
-
-#.
-#. music for the softenon children?
-#.
-#: new-fingering-engraver.cc:143
-msgid "music for the martians."
-msgstr ""
-
-#: new-tie-engraver.cc:166 tie-engraver.cc:217
-msgid "lonely tie"
-msgstr "eenzame overbinding"
-
-#: note-collision.cc:340
-msgid "Too many clashing notecolumns.  Ignoring them."
-msgstr "Te veel botsende nootkolommen.  Negeer ze."
-
-#: note-head.cc:127
-#, c-format
-msgid "note head `%s' not found"
-msgstr ""
-
-#: paper-def.cc:96
-#, c-format
-msgid "paper output to `%s'..."
-msgstr "papier uitvoer naar %s..."
-
-#: paper-score.cc:78
-#, fuzzy, c-format
-msgid "Element count %d (spanners %d) "
-msgstr "Aantal elementen: %d."
-
-#: paper-score.cc:83
-#, fuzzy
-msgid "Preprocessing graphical objects..."
-msgstr "Voorbewerken van elementen..."
-
-#: paper-score.cc:116
-msgid "Outputting Score, defined at: "
-msgstr "Uitvoer van Score, gedefinieerd op: "
-
-#: parse-scm.cc:79
-msgid "GUILE signaled an error for the expression begining here"
-msgstr ""
-
-#.
-#. We could change the current translator's id, but that would make
-#. errors hard to catch
-#.
-#. last->translator_id_string_  = get_change ()->change_to_id_string_;
-#.
-#: part-combine-music-iterator.cc:139
-#, c-format
-msgid "I'm one myself: `%s'"
-msgstr "Ben er zelf een: `%s'"
-
-#: part-combine-music-iterator.cc:142
-#, c-format
-msgid "none of these in my family: `%s'"
-msgstr "geen van deze in mijn gezin: `%s'"
-
-#: percent-repeat-engraver.cc:109
-msgid "Don't know how to handle a percent repeat of this length."
-msgstr "Weet niet hoe procent herhaling van deze lengte af te handelen."
-
-#: percent-repeat-engraver.cc:163
-#, fuzzy
-msgid "unterminated percent repeat"
-msgstr "onbeëindigde waardestreep"
-
-#: percent-repeat-iterator.cc:65
-msgid "no one to print a percent"
-msgstr "niemand om een procent herhaling af te drukken"
-
-#: performance.cc:51
-msgid "Track ... "
-msgstr "Spoor ... "
-
-#: performance.cc:83
-msgid "Creator: "
-msgstr "Schepper: "
-
-#: performance.cc:103
-#, fuzzy
-msgid "at "
-msgstr ", bij "
-
-#: performance.cc:114
-#, c-format
-msgid "from musical definition: %s"
-msgstr "van muzikale definitie: %s"
-
-#: performance.cc:169
-#, c-format
-msgid "MIDI output to `%s'..."
-msgstr "MIDI uitvoer naar %s..."
-
-#: phrasing-slur-engraver.cc:123
-msgid "unterminated phrasing slur"
-msgstr "onbeëindigde fraseringsboog"
-
-#: phrasing-slur-engraver.cc:141
-msgid "can't find start of phrasing slur"
-msgstr "kan start van fraseringsboog niet vinden"
-
-#: piano-pedal-engraver.cc:235 piano-pedal-engraver.cc:250
-#: piano-pedal-engraver.cc:305 piano-pedal-performer.cc:82
-#, c-format
-msgid "can't find start of piano pedal: `%s'"
-msgstr "kan start van piano pedaal niet vinden: `%s'"
-
-#: piano-pedal-engraver.cc:410
-#, fuzzy
-msgid "unterminated pedal bracket"
-msgstr "onbeëindigde waardestreep"
-
-#: property-iterator.cc:97
-#, c-format
-msgid "Not a grob name, `%s'."
-msgstr ""
-
-#: rest.cc:139
-#, c-format
-msgid "rest `%s' not found, "
-msgstr ""
-
-#: rest-collision.cc:199
-msgid "too many colliding rests"
-msgstr "te veel botsende rusten"
-
-#: scm-option.cc:45
-msgid "lilypond -e EXPR means:"
-msgstr ""
-
-#: scm-option.cc:47
-msgid "  Evalute the Scheme EXPR before parsing any .ly files."
-msgstr ""
-
-#: scm-option.cc:49
-msgid ""
-"  Multiple -e options may be given, they will be evaluated sequentially."
-msgstr ""
-
-#: scm-option.cc:51
-msgid ""
-"  The function ly-set-option allows for access to some internal variables."
-msgstr ""
-
-#: scm-option.cc:53
-msgid "Usage: lilypond -e \"(ly-set-option SYMBOL VAL)\""
-msgstr ""
-
-#: scm-option.cc:55
-msgid "Where SYMBOL VAL pair is any of:"
-msgstr ""
-
-#: scm-option.cc:128
-msgid "Unknown internal option!"
-msgstr ""
-
-#: score.cc:85
-msgid "Interpreting music..."
-msgstr "Vertolken van muziek..."
-
-#: score.cc:97
-msgid "Need music in a score"
-msgstr "Heb muziek nodig in een partituur"
-
-#. should we? hampers debugging.
-#: score.cc:111
-msgid "Errors found/*, not processing score*/"
-msgstr "Fouten gevonden, /*verwerk partituur niet */"
-
-#: score.cc:118
-#, c-format
-msgid "elapsed time: %.2f seconds"
-msgstr "duur: %.2f seconden"
-
-#: score-engraver.cc:99
-#, fuzzy, c-format
-msgid "can't find `%s'"
-msgstr "kan niet vinden: `%s'"
-
-#: score-engraver.cc:100
-msgid "Fonts have not been installed properly.  Aborting"
-msgstr ""
-
-#: score-engraver.cc:205
-#, c-format
-msgid "unbound spanner `%s'"
-msgstr "ongebonden spanner `%s'"
-
-#: script-engraver.cc:90
-#, c-format
-msgid "Don't know how to interpret articulation `%s'"
-msgstr "Weet niet hoe articulatie te vertolken `%s'"
-
-#. this shouldn't happen, but let's continue anyway.
-#: separation-item.cc:53 separation-item.cc:101
-msgid "Separation_item:  I've been drinking too much"
-msgstr "Separation_item:  Ik heb te veel gedronken"
-
-#: simple-spacer.cc:248
-#, c-format
-msgid "No spring between column %d and next one"
-msgstr ""
-
-#: slur-engraver.cc:141
-msgid "unterminated slur"
-msgstr "onbeëindigde bindingsboog"
-
-#. How to shut up this warning, when Voice_devnull_engraver has
-#. eaten start event?
-#: slur-engraver.cc:159
-msgid "can't find start of slur"
-msgstr "kan start van bindingsboog niet vinden"
-
-#: source-file.cc:67
-#, c-format
-msgid "Huh?  Got %d, expected %d characters"
-msgstr "Huh?  Kreeg %d, verwachtte %d tekens"
-
-#: spacing-spanner.cc:379
-#, c-format
-msgid "Global shortest duration is %s\n"
-msgstr ""
-
-#: spring-smob.cc:32
-#, c-format
-msgid "#<spring smob d= %f>"
-msgstr ""
-
-#: staff-symbol.cc:61
-msgid "staff symbol: indentation yields beyond end of line"
-msgstr ""
-
-#: stem.cc:118
-msgid "Weird stem size; check for narrow beams"
-msgstr "Vreemde stoklengte; controleer op krappe waardestrepen"
-
-#: stem.cc:611
-#, c-format
-msgid "flag `%s' not found"
-msgstr ""
-
-#: stem.cc:624
-#, c-format
-msgid "flag stroke `%s' not found"
-msgstr ""
-
-#: stem-engraver.cc:96
-msgid "tremolo duration is too long"
-msgstr ""
-
-#: stem-engraver.cc:124
-#, c-format
-msgid "Adding note head to incompatible stem (type = %d)"
-msgstr "Voeg noot bolletje toe aan onverenigbare stok (type = %d)"
-
-#: stem-engraver.cc:125
-msgid "Don't you want polyphonic voices instead?"
-msgstr ""
-
-#: streams.cc:34
-#, c-format
-msgid "can't create directory: `%s'"
-msgstr "kan directory niet scheppen: `%s'"
-
-#: streams.cc:48
-msgid "Error syncing file (disk full?)"
-msgstr "Fout bij synchroniseren van bestand (schijf vol?)"
-
-#: system.cc:125
-#, c-format
-msgid "Element count %d."
-msgstr "Aantal elementen: %d."
-
-#: system.cc:372
-#, fuzzy, c-format
-msgid "Grob count %d "
-msgstr "Aantal elementen: %d."
-
-#: system.cc:386
-#, fuzzy
-msgid "Calculating line breaks..."
-msgstr "Berekenen van kolomposities..."
-
-#: text-spanner-engraver.cc:81
-msgid "can't find start of text spanner"
-msgstr "kan start van tekst spanner niet vinden"
-
-#: text-spanner-engraver.cc:95
-msgid "already have a text spanner"
-msgstr "heb al een tekst spanner"
-
-#: text-spanner-engraver.cc:164
-msgid "unterminated text spanner"
-msgstr "onbeëindigde tekst spanner"
-
-#: tfm.cc:83
-#, c-format
-msgid "can't find ascii character: %d"
-msgstr "kan ascii teken niet vinden: %d"
-
-#. Not using ngettext's plural feature here, as this message is
-#. more of a programming error.
-#: tfm-reader.cc:108
-#, c-format
-msgid "TFM header of `%s' has only %u word (s)"
-msgstr "TFM kop van `%s' heeft slechts %u woord(en)"
-
-#: tfm-reader.cc:142
-#, c-format
-msgid "%s: TFM file has %u parameters, which is more than the %u I can handle"
-msgstr ""
-"%s: TFM bestand heeft %u parameters, wat meer is dan de %u die ik aan kan"
-
-#: tie-performer.cc:159
-msgid "No ties were created!"
-msgstr "Geen overbindingen geschapen!"
-
-#: time-scaled-music-iterator.cc:25
-msgid "no one to print a tuplet start bracket"
-msgstr "niemand om een x-ool start haak af te drukken"
-
-#. If there is no such symbol, we default to the numbered style.
-#. (Here really with a warning!)
-#: time-signature.cc:87
-#, c-format
-msgid "time signature symbol `%s' not found; reverting to numbered style"
-msgstr ""
-
-#.
-#. Todo: should make typecheck?
-#.
-#. OTOH, Tristan Keuris writes 8/20 in his Intermezzi.
-#.
-#: time-signature-engraver.cc:57
-#, c-format
-msgid "Found strange time signature %d/%d."
-msgstr ""
-
-#: translator-ctors.cc:53
-#, c-format
-msgid "unknown translator: `%s'"
-msgstr "onbekende translator: `%s'"
-
-#: translator-def.cc:105
-msgid "Program has no such type"
-msgstr "Programma heeft geen dergelijk type"
-
-#: translator-def.cc:111
-#, c-format
-msgid "Already contains: `%s'"
-msgstr "Bevat reeds: `%s'"
-
-#: translator-def.cc:112
-#, c-format
-msgid "Not adding translator: `%s'"
-msgstr "Voeg translator niet toe: `%s'"
-
-#: translator-def.cc:229
-#, c-format
-msgid "can't find: `%s'"
-msgstr "kan niet vinden: `%s'"
-
-#: translator-group.cc:158
-#, c-format
-msgid "can't find or create `%s' called `%s'"
-msgstr "kan niet vinden of scheppen `%s' genaamd `%s'"
-
-#: translator-group.cc:230
-#, c-format
-msgid "can't find or create: `%s'"
-msgstr "kan niet vinden of scheppen: `%s'"
-
-#: vaticana-ligature.cc:49
-msgid "ascending vaticana style flexa"
-msgstr ""
-
-#: vaticana-ligature.cc:219
-msgid "Vaticana_ligature:thickness undefined; assuming 1.4"
-msgstr ""
-
-#: vaticana-ligature.cc:233
-msgid "Vaticana_ligature:x-offset undefined; assuming 0.0"
-msgstr ""
-
-#: vaticana-ligature.cc:258
-msgid "Vaticana_ligature: (delta_pitch == 0)"
-msgstr ""
-
-#: vaticana-ligature.cc:271
-msgid "Vaticana_ligature:delta-pitch -> ignoring join"
-msgstr ""
-
-#: vaticana-ligature-engraver.cc:477
-#, c-format
-msgid "Vaticana_ligature_engraver: setting `spacing-increment = %f': ptr=%ul"
-msgstr ""
-
-#: volta-engraver.cc:112
-msgid "No volta spanner to end"
-msgstr "Geen volta spanner te beëindigen"
-
-#: volta-engraver.cc:123
-msgid "Already have a volta spanner.  Stopping that one prematurely."
-msgstr "Heb al een volta spanner.  Stop die nu voortijdig."
-
-#: volta-engraver.cc:127
-msgid "Also have a stopped spanner.  Giving up."
-msgstr "Heb ook al een gestopte spanner.   Geef op."
-
-#: parser.yy:480
-#, fuzzy
-msgid "Identifier should have alphabetic characters only"
-msgstr "Identifier zou alleen alfabetische tekens moeten hebben"
-
-#: parser.yy:779
-msgid "More alternatives than repeats.  Junking excess alternatives."
-msgstr ""
-"Meer alternatieven dan herhalingen.  Schroot overvloedige alternatieven."
-
-#: parser.yy:861 parser.yy:868
-msgid "pplycontext takes function argument"
-msgstr ""
-
-#: parser.yy:877
-msgid "Second argument must be a symbol"
-msgstr "Tweede argument moet een symbool zijn"
-
-#: parser.yy:882
-#, fuzzy
-msgid "First argument must be a procedure taking one argument"
-msgstr "Eerste argument moet een procedure zijn met 1 argument"
-
-#: parser.yy:1009
-msgid "pply takes function argument"
-msgstr ""
-
-#: parser.yy:1501
-msgid "Expecting string as script definition"
-msgstr "Verwacht string voor script definitie"
-
-#: parser.yy:1598
-msgid "Expecting musical-pitch value"
-msgstr "Verwacht musical-pitch waarde"
-
-#: parser.yy:1609
-msgid "Must have duration object"
-msgstr "Moet duur object hebben"
-
-#: parser.yy:1618 parser.yy:1626
-msgid "Have to be in Lyric mode for lyrics"
-msgstr "Moet in Lyric modus zijn voor liedteksten"
-
-#: parser.yy:1798 parser.yy:1853
-#, c-format
-msgid "not a duration: %d"
-msgstr "geen duur: %d"
-
-#: parser.yy:1949
-msgid "Have to be in Note mode for notes"
-msgstr "Moet in Note modus zijn voor noten"
-
-#: parser.yy:2032
-msgid "Have to be in Chord mode for chords"
-msgstr "Moet in Chord modus zijn voor accoorden"
-
-#: parser.yy:2171
-msgid "need integer number arg"
-msgstr "heb integer getal arg nogig"
-
-#: parser.yy:2316
-msgid "Suspect duration found following this beam"
-msgstr ""
-
-#: lexer.ll:186
-msgid "EOF found inside a comment"
-msgstr "EOF gevonden in een kommentaar"
-
-#: lexer.ll:200
-msgid "\\maininput disallowed outside init files"
-msgstr "\\maininput niet toegestaan buiten init bestanden"
-
-#: lexer.ll:224
-#, c-format
-msgid "wrong or undefined identifier: `%s'"
-msgstr "verkeerde of ongedefiniëerde identifier: `%s'"
-
-#. backup rule
-#: lexer.ll:233
-msgid "Missing end quote"
-msgstr "Aanhalingsteken sluiten mist"
-
-#. backup rule
-#: lexer.ll:255 lexer.ll:259
-msgid "white expected"
-msgstr "wit verwacht"
-
-#: lexer.ll:268
-msgid "Can't evaluate Scheme in safe mode"
-msgstr "Kan Scheme niet evalueren in veilige modus"
-
-#: lexer.ll:397 lexer.ll:487
-#, fuzzy
-msgid "Brace found at end of lyric.  Did you forget a space?"
-msgstr "Accolade gevonden aan het eind van liedtektst.  Een spatie vergeten?"
-
-#: lexer.ll:574
-#, c-format
-msgid "invalid character: `%c'"
-msgstr "ongeldig teken: `%c'"
-
-#: lexer.ll:651
-#, c-format
-msgid "unknown escaped string: `\\%s'"
-msgstr "onbekende ontsnapte string: `\\%s'"
-
-#: lexer.ll:742
-#, fuzzy, c-format
-msgid "Incorrect lilypond version: %s (%s, %s)"
-msgstr "verkeerde lilypond versie: %s (%s, %s)"
-
-#: lexer.ll:743
-#, fuzzy
-msgid "Consider updating the input with the convert-ly script"
-msgstr "Overweeg de invoer te converteren met het convert-ly script"
-
-#~ msgid "Fetch and rebuild from latest source package"
-#~ msgstr "Grijp en herbouw van meest recente source pakket"
-
-#~ msgid "unpack and build in DIR [%s]"
-#~ msgstr "pak uit en bouw in DIR [%s]"
-
-#~ msgid "execute COMMAND, subtitute:"
-#~ msgstr "voer COMMAND uit, substitueer:"
-
-#~ msgid "%b: build root"
-#~ msgstr "%b: bouw-root"
-
-#~ msgid "%n: package name"
-#~ msgstr "%n: pakketnaam"
-
-#~ msgid "%r: release directory"
-#~ msgstr "%r: uitgave directory"
-
-#~ msgid "%t: tarball"
-#~ msgstr "%t: tar-bal"
-
-#~ msgid "%v: package version"
-#~ msgstr "%v: pakketversie"
-
-#~ msgid "keep all output, and name the directory %s"
-#~ msgstr "bewaar alle uitvoer, en noem de directory %s"
-
-#~ msgid "upon failure notify EMAIL[,EMAIL]"
-#~ msgstr "bij fout bericht EMAIL[,EMAIL]"
-
-#~ msgid "remove previous build"
-#~ msgstr "verwijder vorige bouw"
-
-#~ msgid "fetch and build URL [%s]"
-#~ msgstr "grijp en bouw URL [%s]"
-
-#~ msgid "Listing `%s'..."
-#~ msgstr "Lijst van `%s'"
-
-#~ msgid "latest is: %s"
-#~ msgstr "meest recente is: %s"
-
-#~ msgid "relax, %s is up to date"
-#~ msgstr "ontspan, %s is bij de tijd"
-
-#~ msgid "Fetching `%s'..."
-#~ msgstr "Grijpen van `%s'..."
-
-#~ msgid "Building `%s'..."
-#~ msgstr "Bouwen van `%s'..."
-
-#~ msgid "invalid subtraction: not part of chord: %s"
-#~ msgstr "ongeldige aftrek: maakt geen deel uit van accoord: %s"
-
-#~ msgid "invalid inversion pitch: not part of chord: %s"
-#~ msgstr "ongeldige inversie toon: geen onderdeel van accoord: %s"
-
-#~ msgid "This was the other key definition."
-#~ msgstr "Dit was de andere toonsoort definitie."
-
-#~ msgid ", at "
-#~ msgstr ", bij "
-
-#~ msgid "Pitch arguments out of range"
-#~ msgstr "Toonhoogte argumenten buiten schaal"
-
-#, fuzzy
-#~ msgid "Putting slur over rest."
-#~ msgstr "Zet bindingsboog over rust.  Negeer."
-
-#~ msgid "Slur over rest?"
-#~ msgstr "Boogje over rust?"
-
-#~ msgid "Text_spanner too small"
-#~ msgstr "Text_spanner te klein"
-
-#~ msgid "Can't specify direction for this request"
-#~ msgstr "Kan richting voor dit verzoek niet specificeren"
-
-#~ msgid "Generate .dvi with LaTeX for LilyPond"
-#~ msgstr "Genereer .dvi met LaTeX voor LilyPond"
-
-#~ msgid "can't map file"
-#~ msgstr "kan bestand niet inkaarten"
-
-#~ msgid "This binary was compiled with the following options:"
-#~ msgstr "Dit programma is gecompileerd met de volgende instellingen:"
-
-#~ msgid "Expecting %d arguments"
-#~ msgstr "Verwacht %d argumenten"
-
-#~ msgid "EOF in a string"
-#~ msgstr "EOF in een string"
-
-#~ msgid "<stdin>"
-#~ msgstr "<stdin>"
-
-#~ msgid "programming error: "
-#~ msgstr "programmeerfout: "
-
-#~ msgid "can't find start of beam"
-#~ msgstr "kan start van waardestreep niet vinden"
-
-#~ msgid "weird beam vertical offset"
-#~ msgstr "rare verticale waardestreep verplaatsing"
-
-#~ msgid "unknown spacing pair `%s', `%s'"
-#~ msgstr "onbekend ruimte paar `%s', `%s'"
-
-#~ msgid "evalute EXPR as Scheme after .scm init is read"
-#~ msgstr "evalueer EXPR als Scheme nadat .scm init is gelezen"
-
-#~ msgid "ly_get_mus_property (): Not a Music"
-#~ msgstr "ly_get_mus_property (): Geen Muziek"
-
-#~ msgid "ly_set_mus_property (): Not a symbol"
-#~ msgstr "ly_set_mus_property (): Geen symbool"
-
-#~ msgid "ly_set_mus_property ():  not of type Music"
-#~ msgstr "ly_set_mus_property ():  niet van type Muziek"
-
-#~ msgid "ly_make_music (): Not a string"
-#~ msgstr "ly_make_music (): Geen string"
-
-#~ msgid "ly_music_name (): Not a music expression"
-#~ msgstr "ly_make_music (): Geen muziek expressie"
-
-#~ msgid ""
-#~ "`%s' is deprecated.  Use\n"
-#~ " \\property %s.%s \\override #'%s = #%s"
-#~ msgstr ""
-#~ "`%s' is verouderd.  Gebruik\n"
-#~ " \\property %s.%s \\override #'%s = #%s"
-
-#~ msgid "Wrong type for property: %s, type: %s, value found: %s, type: %s"
-#~ msgstr "Verkeerd type voor property: %s, type: %s, gevonden: %s, type: %s"
-
-#~ msgid "too many notes for rest collision"
-#~ msgstr "te veel noten voor bosting met rusten"
-
-#~ msgid "Scheme options:"
-#~ msgstr "Scheme opties:"
-
-#~ msgid "ly-get-trans-property: expecting a Translator_group argument"
-#~ msgstr "ly-get-trans-property: verwacht een Translator_group argument"
-
-#~ msgid "Oldest supported input version: %s"
-#~ msgstr "Oudst ondersteunde invoerversie: %s"
-
-#~ msgid "%s is far from completed.  Not all constructs are recognised."
-#~ msgstr "%s is nog lang niet af.  Niet alle constructies worden herkend."
-
-#~ msgid "writing header field `%s' to `%s'..."
-#~ msgstr "Schijven van kop veld %s naar bestand %s..."
-
-#~ msgid "#32 in quarter: %d"
-#~ msgstr "#32 in kwart: %d"
-
-#~ msgid "LY output to `%s'..."
-#~ msgstr "LY uitvoer naar `%s'..."
-
-#~ msgid "track %d:"
-#~ msgstr "spoor %d:"
-
-#~ msgid "Processing..."
-#~ msgstr "Verwerken..."
-
-#~ msgid "Creating voices..."
-#~ msgstr "Scheppen van stemmen..."
-
-#~ msgid "track "
-#~ msgstr "spoor "
-
-#~ msgid "NOT Filtering tempo..."
-#~ msgstr "NIET Filteren van tempo..."
-
-#~ msgid "NOT Quantifying columns..."
-#~ msgstr "NIET Kwantificeren van kolommen..."
-
-#~ msgid "Quantifying columns..."
-#~ msgstr "Kwantificeren van kolommen..."
-
-#~ msgid "Settling columns..."
-#~ msgstr "Zetten van kolommen..."
-
-#~ msgid "% MIDI copyright:"
-#~ msgstr "% MIDI copyright:"
-
-#~ msgid "% MIDI instrument:"
-#~ msgstr "% MIDI instrument:"
-
-#~ msgid "lily indent level: %d"
-#~ msgstr "lelie inspring diepte: %d"
-
-#~ msgid "% Creator: "
-#~ msgstr "% Schepper: "
-
-#~ msgid "% Automatically generated"
-#~ msgstr "% Automatisch gegenereerd"
-
-#~ msgid "% from input file: "
-#~ msgstr "% van invoerbestand: "
-
-#~ msgid "write exact durations, e.g.: a4*385/384"
-#~ msgstr "schrijf exacte duren, bijv.: a4*385/384"
-
-#~ msgid "enable debugging output"
-#~ msgstr "maak ontluis uitvoer mogelijk"
-
-#~ msgid "don't output tuplets, double dots or rests, smallest is 32"
-#~ msgstr "maak geen n-olen of dubbel gepunkteerd, kortste is 32"
-
-#~ msgid "set FILE as default output"
-#~ msgstr "zet BESTAND als verstek uitvoer"
-
-#~ msgid "don't output tuplets"
-#~ msgstr "maak geen n-olen"
-
-#~ msgid "be quiet"
-#~ msgstr "wees stil"
-
-#~ msgid "don't output rests or skips"
-#~ msgstr "maak geen rusten of skips"
-
-#~ msgid "set smallest duration"
-#~ msgstr "zet kortste duur"
-
-#~ msgid "don't timestamp the output"
-#~ msgstr "geen tijdsstempel in de uitvoer"
-
-#~ msgid "assume no double dotted notes"
-#~ msgstr "ga niet uit van dubbel gepunteerde noten"
-
-#~ msgid "Usage: %s [OPTIONS]... [FILE]"
-#~ msgstr "Gebruik: %s [OPTIE]... [BESTAND]"
-
-#~ msgid "Translate MIDI-file to lilypond"
-#~ msgstr "Vertaal MIDI-bestand naar lilypond"
-
-#~ msgid "no_double_dots: %d\n"
-#~ msgstr "no_double_dots: %d\n"
-
-#~ msgid "no_rests: %d\n"
-#~ msgstr "no_rests: %d\n"
-
-#~ msgid "no_quantify_b_s: %d\n"
-#~ msgstr "no_quantify_b_s: %d\n"
-
-#~ msgid "no_smaller_than: %d (1/%d)\n"
-#~ msgstr "no_smaller_than: %d (1/%d)\n"
-
-#~ msgid "no_tuplets: %d\n"
-#~ msgstr "no_tuplets: %d\n"
-
-#~ msgid "zero length string encountered"
-#~ msgstr "string van lengte nul tegengekomen"
-
-#~ msgid "MIDI header expected"
-#~ msgstr "MIDI kop verwacht"
-
-#~ msgid "invalid header length"
-#~ msgstr "ongeldige koplengte"
-
-#~ msgid "invalid MIDI format"
-#~ msgstr "ongeldig MIDI formaat"
-
-#~ msgid "invalid number of tracks"
-#~ msgstr "ongeldig aantal sporen"
-
-#~ msgid "can't handle non-metrical time"
-#~ msgstr "kan niet-metrische tijd niet aan"
-
-#~ msgid "Junking note-end event: channel = %d, pitch = %d"
-#~ msgstr "Schroot noot-eind gebeurtenis: kanaal = %d, toonhoogte = %d"
-
-#~ msgid "invalid running status"
-#~ msgstr "ongeldige lopende status"
-
-#~ msgid "unimplemented MIDI meta-event"
-#~ msgstr "MIDI meta-gebeurtenis niet geïmplementeerd"
-
-#~ msgid "invalid MIDI event"
-#~ msgstr "ongeldige MIDI gebeurtenis"
-
-#~ msgid "MIDI track expected"
-#~ msgstr "MIDI spoor verwacht"
-
-#~ msgid "invalid track length"
-#~ msgstr "ongeldige spoorlengte"
-
-#~ msgid "no Grace context available"
-#~ msgstr "geen Grace context voor handen"
-
-#~ msgid "Unattached grace notes.  Attaching to last musical column."
-#~ msgstr "Losse grace noten.  Maak ze vast aan vorige muziekale kolom."
diff --git a/po/ru.po b/po/ru.po
deleted file mode 100644
index 1535541f50..0000000000
--- a/po/ru.po
+++ /dev/null
@@ -1,2607 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) YEAR Free Software Foundation, Inc.
-# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
-"POT-Creation-Date: 2003-07-18 14:45+0200\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: August S.Sigov <august@infran.ru>\n"
-"Language-Team: Russian <ru@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=koi8-r\n"
-"Content-Transfer-Encoding: ENCODING\n"
-
-#. this is where special info is often stored
-#. ###############################################################
-#. lilylib.py -- options and stuff
-#.
-#. source file of the GNU LilyPond music typesetter
-#.
-#. (c)  1998--2003  Han-Wen Nienhuys <hanwen@cs.uu.nl>
-#. Jan Nieuwenhuizen <janneke@gnu.org>
-#. ##  subst:\(^\|[^._a-z]\)\(abspath\|identify\|warranty\|progress\|warning\|error\|exit\|getopt_args\|option_help_str\|options_help_str\|help\|setup_temp\|read_pipe\|system\|cleanup_temp\|strip_extension\|cp_to_dir\|mkdir_p\|init\) *(
-#. ##  replace:\1ly.\2 (
-#. ## subst: \(help_summary\|keep_temp_dir_p\|option_definitions\|original_dir\|program_name\|pseudo_filter_p\|temp_dir\|verbose_p\)
-#. ###############################################################
-#. Users of python modules should include this snippet
-#. and customize variables below.
-#. We'll suffer this path init stuff as long as we don't install our
-#. python packages in <prefix>/lib/pythonx.y (and don't kludge around
-#. it as we do with teTeX on Red Hat Linux: set some environment var
-#. (PYTHONPATH) in profile)
-#. If set, LILYPONDPREFIX must take prevalence
-#. if datadir is not set, we're doing a build and LILYPONDPREFIX
-#. Customize these
-#. lilylib globals
-#: lilylib.py:60
-msgid "lilylib module"
-msgstr ""
-
-#: lilylib.py:63 lilypond-book.py:131 lilypond.py:128 midi2ly.py:100
-#: mup2ly.py:75 main.cc:111
-msgid "print this help"
-msgstr "ÜÔÁ ÓÐÒÁ×ËÁ"
-
-#. ###############################################################
-#. Handle bug in Python 1.6-2.1
-#.
-#. there are recursion limits for some patterns in Python 1.6 til 2.1.
-#. fix this by importing pre instead. Fix by Mats.
-#. Attempt to fix problems with limited stack size set by Python!
-#. Sets unlimited stack size. Note that the resource module only
-#. is available on UNIX.
-#: lilylib.py:114 midi2ly.py:136 mup2ly.py:130 main.cc:188 main.cc:200
-#, c-format, python-format
-msgid "Copyright (c) %s by"
-msgstr "÷ÓÅ ÐÒÁ×Á ÚÁÝÉÝÅÎÙ (c) %s by"
-
-#: lilylib.py:114
-msgid " 1998--2003"
-msgstr ""
-
-#: lilylib.py:118
-msgid "Distributed under terms of the GNU General Public License."
-msgstr ""
-
-#: lilylib.py:120
-msgid "It comes with NO WARRANTY."
-msgstr ""
-
-#: lilylib.py:127 midi2ly.py:150 mup2ly.py:144 input.cc:88
-msgid "warning: "
-msgstr "ÐÒÅÄÕÐÒÅÖÄÁÀ: "
-
-#. lots of midi files use plain text for lyric events
-#. FIXME: read from stdin when files[0] = '-'
-#: lilylib.py:130 midi2ly.py:165 midi2ly.py:1018 midi2ly.py:1083 mup2ly.py:147
-#: mup2ly.py:161 input.cc:93
-msgid "error: "
-msgstr "ÏÛÉÂËÁ: "
-
-#: lilylib.py:134
-#, fuzzy, python-format
-msgid "Exiting (%d)..."
-msgstr "÷ÙÂÒÁÓÙ×ÁÀ ÍÕÚÙËÕ: `%s'"
-
-#: lilylib.py:194 midi2ly.py:224 mup2ly.py:220
-#, fuzzy, python-format
-msgid "Usage: %s [OPTIONS]... FILE"
-msgstr "éÓÐÏÌØÚÏ×ÁÎÉÅ: %s [ïðãéñ]... [æáêì]"
-
-#: lilylib.py:198 midi2ly.py:228 mup2ly.py:224 main.cc:166
-msgid "Options:"
-msgstr "ïÐÃÉÉ:"
-
-#: lilylib.py:202 midi2ly.py:232 mup2ly.py:228 main.cc:172
-#, c-format, python-format
-msgid "Report bugs to %s."
-msgstr "óÏÏÂÝÁÊÔÅ ÏÂ ÏÛÉÂËÁÈ ÐÏ %s."
-
-#: lilylib.py:228
-#, fuzzy, python-format
-msgid "Opening pipe `%s'"
-msgstr "÷ÙÂÒÁÓÙ×ÁÀ ÍÕÚÙËÕ: `%s'"
-
-#. successful pipe close returns 'None'
-#: lilylib.py:240
-#, python-format
-msgid "`%s' failed (%d)"
-msgstr ""
-
-#: lilylib.py:242 lilylib.py:289 lilypond-book.py:231 lilypond.py:512
-msgid "The error log is as follows:"
-msgstr ""
-
-#: lilylib.py:262 midi2ly.py:260 mup2ly.py:256
-#, fuzzy, python-format
-msgid "Invoking `%s'"
-msgstr "÷ÙÂÒÁÓÙ×ÁÀ ÍÕÚÙËÕ: `%s'"
-
-#: lilylib.py:264
-#, fuzzy, python-format
-msgid "Running %s..."
-msgstr "÷ÙÂÒÁÓÙ×ÁÀ ÍÕÚÙËÕ: `%s'"
-
-#: lilylib.py:282
-#, python-format
-msgid "`%s' failed (%s)"
-msgstr ""
-
-#: lilylib.py:285 midi2ly.py:266 mup2ly.py:264
-msgid "(ignored)"
-msgstr ""
-
-#: lilylib.py:299 midi2ly.py:276 mup2ly.py:274
-#, fuzzy, python-format
-msgid "Cleaning %s..."
-msgstr "÷ÙÂÒÁÓÙ×ÁÀ ÍÕÚÙËÕ: `%s'"
-
-#. Duh.  Python style portable: cp *.EXT OUTDIR
-#. system ('cp *.%s %s' % (ext, outdir), 1)
-#. Python < 1.5.2 compatibility
-#.
-#. On most platforms, this is equivalent to
-#. `normpath(join(os.getcwd()), PATH)'.  *Added in Python version 1.5.2*
-#. tex needs lots of memory, more than it gets by default on Debian
-#. TODO: * prevent multiple addition.
-#. * clean TEXINPUTS, MFINPUTS, TFMFONTS,
-#. as these take prevalence over $TEXMF
-#. and thus may break tex run?
-#. $TEXMF is special, previous value is already taken care of
-#. # -sOutputFile does not work with bbox?
-#. # todo:
-#. # have better algorithm for deciding when to crop page,
-#. # and when to show full page
-#: lilylib.py:458
-msgid "Removing output file"
-msgstr ""
-
-#. !@PYTHON@
-#. once upon a rainy monday afternoon.
-#.
-#. ...
-#.
-#. (not finished.)
-#. ABC standard v1.6:  http://www.gre.ac.uk/~c.walshaw/abc2mtex/abc.txt
-#.
-#. Enhancements  (Roy R. Rankin)
-#.
-#. Header section moved to top of lilypond file
-#. handle treble, treble-8, alto, and bass clef
-#. Handle voices (V: headers) with clef and part names, multiple voices
-#. Handle w: lyrics with multiple verses
-#. Handle key mode names for minor, major, phrygian, ionian, locrian, aeolian,
-#. mixolydian, lydian, dorian
-#. Handle part names from V: header
-#. Tuplets handling fixed up
-#. Lines starting with |: not discarded as header lines
-#. Multiple T: and C: header entries handled
-#. Accidental maintained until next bar check
-#. Silent rests supported
-#. articulations fermata, upbow, downbow, ltoe, accent, tenuto supported
-#. Chord strings([-^]"string") can contain a '#'
-#. Header fields enclosed by [] in notes string processed
-#. W: words output after tune as abc2ps does it (they failed before)
-#. Enhancements (Laura Conrad)
-#.
-#. Barring now preserved between ABC and lilypond
-#. the default placement for text in abc is above the staff.
-#. %%LY now supported.
-#. \breve and \longa supported.
-#. M:none doesn't crash lily.
-#. Limitations
-#.
-#. Multiple tunes in single file not supported
-#. Blank T: header lines should write score and open a new score
-#. Not all header fields supported
-#. ABC line breaks are ignored
-#. Block comments generate error and are ignored
-#. Postscript commands are ignored
-#. lyrics not resynchronized by line breaks (lyrics must fully match notes)
-#. %%LY slyrics can't be directly before a w: line.
-#. ???
-#. TODO:
-#.
-#. Convert to new chord styles.
-#.
-#. UNDEF -> None
-#.
-#. uGUHGUHGHGUGH
-#. UGH
-#. treble8 is used by abctab2ps; -8va is used by barfly,
-#. and by my patch to abc2ps. If there's ever a standard
-#. about this we'll support that.
-#. find keywork
-#. assume that Q takes the form "Q:1/4=120"
-#. There are other possibilities, but they are deprecated
-#. outf.write ("\t\t\\consists Staff_margin_engraver\n")
-#. pitch manipulation. Tuples are (name, alteration).
-#. 0 is (central) C. Alteration -1 is a flat, Alteration +1 is a sharp
-#. pitch in semitones.
-#. abc to lilypond key mode names
-#. semitone shifts for key mode names
-#. latex does not like naked #'s
-#. latex does not like naked "'s
-#. break lyrics to words and put "'s around words containing numbers and '"'s
-#. escape "
-#. _ causes probs inside ""
-#. _ to ' _ '
-#. split words with -
-#. unless \-
-#. ~ to space('_')
-#. * to to space
-#. latex does not like naked #'s
-#. put numbers and " and ( into quoted string
-#. insure space between lines
-#. title
-#. strip trailing blanks
-#. Meter
-#. KEY
-#. seperate clef info
-#. there may or may not be a space
-#. between the key letter and the mode
-#. ugh.
-#. ugh.
-#. Notes
-#. Origin
-#. Reference Number
-#. Area
-#. History
-#. Book
-#. Composer
-#. Default note length
-#. Voice
-#. Words
-#. vocals
-#. tempo
-#. we use in this order specified accidental, active accidental for bar,
-#. active accidental for key
-#. (num /  den)  / defaultlen < 1/base
-#. return (str, num,den,dots)
-#. ignore slide
-#. ignore roll
-#. s7m2 input doesnt care about spaces
-#.
-#. remember accidental for rest of bar
-#.
-#. get accidental set in this bar or UNDEF if not set
-#. WAT IS ABC EEN ONTZETTENDE PROGRAMMEERPOEP  !
-#. failed; not a note!
-#. escape '#'s
-#.
-#. |] thin-thick double bar line
-#. || thin-thin double bar line
-#. [| thick-thin double bar line
-#. :| left repeat
-#. |: right repeat
-#. :: left-right repeat
-#. |1 volta 1
-#. |2 volta 2
-#. first try the longer one
-#. bracket escape
-#. the nobarlines option is necessary for an abc to lilypond translator for
-#. exactly the same reason abc2midi needs it: abc requires the user to enter
-#. the note that will be printed, and MIDI and lilypond expect entry of the
-#. pitch that will be played.
-#.
-#. In standard 19th century musical notation, the algorithm for translating
-#. between printed note and pitch involves using the barlines to determine
-#. the scope of the accidentals.
-#.
-#. Since ABC is frequently used for music in styles that do not use this
-#. convention, such as most music written before 1700, or ethnic music in
-#. non-western scales, it is necessary to be able to tell a translator that
-#. the barlines should not affect its interpretation of the pitch.
-#. write other kinds of appending  if we ever need them.
-#. add comments to current voice
-#. Try nibbling characters off until the line doesn't change.
-#. dump_global (outf)
-#. !@PYTHON@
-#.
-#. convert-ly.py -- Update old LilyPond input files (fix name?)
-#.
-#. source file of the GNU LilyPond music typesetter
-#.
-#. (c)  1998--2003  Han-Wen Nienhuys <hanwen@cs.uu.nl>
-#. Jan Nieuwenhuizen <janneke@gnu.org>
-#. TODO
-#. use -f and -t for -s output
-#. NEWS
-#. 0.2
-#. - rewrite in python
-#. Did we ever have \mudela-version?  I doubt it.
-#. lilypond_version_re_str = '\\\\version *\"(.*)\"'
-#. ###########################
-#. need new a namespace
-#. raise FatalConversionError()
-#. need new a namespace
-#. harmful to current .lys
-#. str = re.sub ('\\\\key([^;]+);', '\\\\accidentals \\1;', str)
-#. raise FatalConversionError()
-#. raise FatalConversionError()
-#. raise FatalConversionError()
-#. TODO: lots of other syntax change should be done here as well
-#. Ugh, but meaning of \stemup changed too
-#. maybe we should do \stemup -> \stemUp\slurUp\tieUp ?
-#. I don't know exactly when these happened...
-#. ugh, we loose context setting here...
-#. (lacks capitalisation slur -> Slur)
-#. # dynamic..
-#. TODO: add lots of these
-#. ugh
-#. old fix
-#. Make sure groups of more than one ; have space before
-#. them, so that non of them gets removed by next rule
-#. Only remove ; that are not after spaces, # or ;
-#. Otherwise  we interfere with Scheme comments,
-#. which is badbadbad.
-#. 40 ?
-#. ###############################
-#. END OF CONVERSIONS
-#. ###############################
-#. !@PYTHON@
-#. info mostly taken from looking at files. See also
-#. http://lilypond.org/wiki/?EnigmaTransportFormat
-#. This supports
-#.
-#. * notes
-#. * rests
-#. * ties
-#. * slurs
-#. * lyrics
-#. * articulation
-#. * grace notes
-#. * tuplets
-#.
-#. todo:
-#. * slur/stem directions
-#. * voices (2nd half of frame?)
-#. * more intelligent lyrics
-#. * beams (better use autobeam?)
-#. * more robust: try entertainer.etf (freenote)
-#. * dynamics
-#. * empty measures (eg. twopt03.etf from freenote)
-#.
-#. uGUHGUHGHGUGH
-#. notename 0 == central C
-#. represent pitches as (notename, alteration), relative to C-major scale
-#. a fifth up
-#. should cache this.
-#. flag1 isn't all that interesting.
-#. 3: '>',
-#. 18: '\arpeggio' ,
-#. do grace notes.
-#. ugh.
-#. we don't attempt voltas since they fail easily.
-#. and g.repeat_bar == '|:' or g.repeat_bar == ':|:' or g.bracket:
-#. 4 layers.
-#. let's not do this: this really confuses when eE happens to be before  a ^text.
-#. if last_tag and last_indices:
-#. etf_file_dict[last_tag][last_indices].append (l)
-#. # do it
-#. staff-spec
-#. should use \addlyrics ?
-#. !@PYTHON@
-#. vim: set noexpandtab:
-#. This is was the idea for handling of comments:
-#. Multiline comments, @ignore .. @end ignore is scanned for
-#. in read_doc_file, and the chunks are marked as 'ignore', so
-#. lilypond-book will not touch them any more. The content of the
-#. chunks are written to the output file. Also 'include' and 'input'
-#. regex has to check if they are commented out.
-#.
-#. Then it is scanned for 'lilypond', 'lilypond-file' and 'lilypond-block'.
-#. These three regex's has to check if they are on a commented line,
-#. % for latex, @c for texinfo.
-#.
-#. Then lines that are commented out with % (latex) and @c (Texinfo)
-#. are put into chunks marked 'ignore'. This cannot be done before
-#. searching for the lilypond-blocks because % is also the comment character
-#. for lilypond.
-#.
-#. The the rest of the rexeces are searched for. They don't have to test
-#. if they are on a commented out line.
-#. ###############################################################
-#. Users of python modules should include this snippet
-#. and customize variables below.
-#. We'll suffer this path init stuff as long as we don't install our
-#. python packages in <prefix>/lib/pythonx.y (and don't kludge around
-#. it as we do with teTeX on Red Hat Linux: set some environment var
-#. (PYTHONPATH) in profile)
-#. If set, LILYPONDPREFIX must take prevalence
-#. if datadir is not set, we're doing a build and LILYPONDPREFIX
-#. Customize these
-#. if __name__ == '__main__':
-#. lilylib globals
-#. temp_dir = os.path.join (original_dir,  '%s.dir' % program_name)
-#. urg
-#. # FIXME
-#. # do -P or -p by default?
-#. #help_summary = _ ("Run LilyPond using LaTeX for titling")
-#: lilypond-book.py:120
-msgid "Process LilyPond snippets in hybrid html, LaTeX or texinfo document"
-msgstr ""
-
-#. another bug in option parser: --output=foe is taken as an abbreviation
-#. for --output-format
-#: lilypond-book.py:125 main.cc:110
-msgid "EXT"
-msgstr "òáóû"
-
-#: lilypond-book.py:125
-#, fuzzy
-msgid "use output format EXT (texi [default], texi-html, latex, html)"
-msgstr "ÉÓÐÏÌØÚÏ×ÁÔØ ×ÙÈÏÄÎÏÊ ÆÏÒÍÁÔ òáóû"
-
-#: lilypond-book.py:126 lilypond-book.py:127 lilypond-book.py:129
-#: lilypond-book.py:130
-#, fuzzy
-msgid "DIM"
-msgstr "ëáô"
-
-#: lilypond-book.py:126
-msgid "default fontsize for music.  DIM is assumed to be in points"
-msgstr ""
-
-#: lilypond-book.py:127
-msgid "deprecated, use --default-music-fontsize"
-msgstr ""
-
-#: lilypond-book.py:128
-msgid "OPT"
-msgstr ""
-
-#: lilypond-book.py:128
-msgid "pass OPT quoted to the lilypond command line"
-msgstr ""
-
-#: lilypond-book.py:129
-msgid "force fontsize for all inline lilypond. DIM is assumed be to in points"
-msgstr ""
-
-#: lilypond-book.py:130
-msgid "deprecated, use --force-music-fontsize"
-msgstr ""
-
-#: lilypond-book.py:132 lilypond.py:130 main.cc:113 main.cc:118
-msgid "DIR"
-msgstr "ëáô"
-
-#: lilypond-book.py:132
-msgid "include path"
-msgstr ""
-
-#: lilypond-book.py:133
-#, fuzzy
-msgid "write dependencies"
-msgstr "× ÔÏ ×ÒÅÍÑ ËÁË ÏÖÉÄÁÌÏÓØ"
-
-#: lilypond-book.py:134
-msgid "PREF"
-msgstr ""
-
-#: lilypond-book.py:134
-msgid "prepend PREF before each -M dependency"
-msgstr ""
-
-#: lilypond-book.py:135
-msgid "don't run lilypond"
-msgstr ""
-
-#: lilypond-book.py:136
-msgid "don't generate pictures"
-msgstr ""
-
-#: lilypond-book.py:137
-msgid "strip all lilypond blocks from output"
-msgstr ""
-
-#: lilypond-book.py:138 lilypond-book.py:139 lilypond.py:135 lilypond.py:136
-#: midi2ly.py:102 main.cc:114 main.cc:117
-msgid "FILE"
-msgstr "æáêì"
-
-#: lilypond-book.py:138
-msgid "filename main output file"
-msgstr ""
-
-#: lilypond-book.py:139
-msgid "where to place generated files"
-msgstr ""
-
-#: lilypond-book.py:140 lilypond.py:137
-msgid "RES"
-msgstr ""
-
-#: lilypond-book.py:141 lilypond.py:138
-msgid "set the resolution of the preview to RES"
-msgstr ""
-
-#: lilypond-book.py:142 lilypond.py:148 midi2ly.py:105 mup2ly.py:78 main.cc:126
-#, fuzzy
-msgid "be verbose"
-msgstr "ÂÙÔØ ÂÏÌÔÌÉ×ÙÍ"
-
-#: lilypond-book.py:143
-#, fuzzy
-msgid "print version information"
-msgstr "×Ù×ÏÄÉÔØ ÎÏÍÅÒ ×ÅÒÓÉÉ"
-
-#: lilypond-book.py:144 lilypond.py:150 midi2ly.py:107 mup2ly.py:80 main.cc:127
-msgid "show warranty and copyright"
-msgstr "ÐÏËÁÚÁÔØ ÇÁÒÁÎÔÉÀ É copyright"
-
-#. format specific strings, ie. regex-es for input, and % strings for output
-#. global variables
-#. lilypond_binary = 'valgrind --suppressions=/home/hanwen/usr/src/guile-1.6.supp  --num-callers=10 /home/hanwen/usr/src/lilypond/lily/out/lilypond'
-#. only use installed binary  when we're installed too.
-#. only use installed binary  when we're installed too.
-#. ###############################################################
-#. Dimension handling for LaTeX.
-#.
-#. Ugh.  (La)TeX writes progress and error messages on stdout
-#. Redirect to stderr
-#: lilypond-book.py:230
-msgid "LaTeX failed."
-msgstr ""
-
-#. URG see lilypond
-#. Convert numeric values, with or without specific dimension, to floats.
-#. Keep other strings
-#. ###############################################################
-#. How to output various structures.
-#. # maybe <hr> ?
-#. Verbatim text is always finished with \n.  FIXME: For HTML,
-#. this newline should be removed.
-#. Verbatim text is always finished with \n.  FIXME: For HTML,
-#. this newline should be removed.
-#. # Ugh we need to differentiate on origin:
-#. # lilypond-block origin wants an extra <p>, but
-#. # inline music doesn't.
-#. # possibly other center options?
-#. verbatim text is always finished with \n
-#. verbatim text is always finished with \n
-#. verbatim text is always finished with \n
-#. verbatim text is always finished with \n
-#. do some tweaking: @ is needed in some ps stuff.
-#.
-#. ugh, the <p> below breaks inline images...
-#. clumsy workaround for python 2.2 pre bug.
-#. ###############################################################
-#. Recognize special sequences in the input
-#. Warning: This uses extended regular expressions.  Tread with care.
-#.
-#. legenda
-#.
-#. (?P<name>regex) -- assign result of REGEX to NAME
-#. *? -- match non-greedily.
-#. (?m) -- multiline regex: make ^ and $ match at each line
-#. (?s) -- make the dot match all characters including newline
-#. why do we have distinction between @mbinclude and @include?
-#. # we'd like to catch and reraise a more
-#. # detailed error, but alas, the exceptions
-#. # changed across the 1.5/2.1 boundary.
-#. ughUGH not original options
-#. First we want to scan the \documentclass line
-#. it should be the first non-comment line.
-#. The only thing we really need to know about the \documentclass line
-#. is if there are one or two columns to begin with.
-#. Then we add everything before \begin{document} to
-#. paperguru.m_document_preamble so that we can later write this header
-#. to a temporary file in find_latex_dims() to find textwidth.
-#. this is not bulletproof..., it checks the first 10 chunks
-#. newchunks.extend (func (m))
-#. python 1.5 compatible:
-#. we have to check for verbatim before doing include,
-#. because we don't want to include files that are mentioned
-#. inside a verbatim environment
-#. ugh fix input
-#. # Hmm, we should hash only lilypond source, and skip the
-#. # %options are ...
-#. # comment line
-#. # todo: include path, but strip
-#. # first part of the path.
-#. format == 'html'
-#. ugh rename
-#. Count sections/chapters.
-#. # TODO: do something like
-#. # this for texinfo/latex as well ?
-#. ugh
-#. fixme: be sys-independent.
-#.
-#. Ugh, fixing up dependencies for .tex generation
-#.
-#. Ugh.  (La)TeX writes progress and error messages on stdout
-#. Redirect to stderr
-#. # There used to be code to write .tex dependencies, but
-#. # that is silly: lilypond-book has its own dependency scheme
-#. # to ensure that all lily-XXX.tex files are there
-#. # TODO: put file name in front of texidoc.
-#. #
-#. # what's this? Docme --hwn
-#. #
-#. #docme: why global?
-#. Do It.
-#. should chmod -w
-#: lilypond-book.py:1557 lilypond.py:673 midi2ly.py:1018
-#, python-format
-msgid "getopt says: `%s'"
-msgstr ""
-
-#. HACK
-#. status = os.system ('lilypond -w')
-#: lilypond-book.py:1630 lilypond.py:777
-msgid "no files specified on command line"
-msgstr ""
-
-#.
-#. Petr, ik zou willen dat ik iets zinvoller deed,
-#. maar wat ik kan ik doen, het verandert toch niets?
-#. --hwn 20/aug/99
-#. !@PYTHON@
-#.
-#. lilypond.py -- Run LilyPond, add titles to bare score, generate printable
-#. document
-#. Invokes: lilypond, latex (or pdflatex), dvips, ps2pdf, gs
-#.
-#. source file of the GNU LilyPond music typesetter
-#.
-#. (c)  1998--2003  Han-Wen Nienhuys <hanwen@cs.uu.nl>
-#. Jan Nieuwenhuizen <janneke@gnu.org>
-#. This is the third incarnation of lilypond.
-#.
-#. Earlier incarnations of lilypond were written by
-#. Jeffrey B. Reed<daboys@austin.rr.com> (Python version)
-#. Jan Arne Fagertun <Jan.A.Fagertun@@energy.sintef.no> (Bourne shell script)
-#.
-#. Note: gettext work best if we use ' for docstrings and "
-#. for gettextable strings.
-#. --> DO NOT USE ''' for docstrings.
-#. ###############################################################
-#. Users of python modules should include this snippet
-#. and customize variables below.
-#. We'll suffer this path init stuff as long as we don't install our
-#. python packages in <prefix>/lib/pythonx.y (and don't kludge around
-#. it as we do with teTeX on Red Hat Linux: set some environment var
-#. (PYTHONPATH) in profile)
-#. If set, LILYPONDPREFIX must take prevalence
-#. if datadir is not set, we're doing a build and LILYPONDPREFIX
-#. Customize these
-#. if __name__ == '__main__':
-#. lilylib globals
-#. # FIXME
-#. # do -P or -p by default?
-#. #help_summary = _ ("Run LilyPond using LaTeX for titling")
-#: lilypond.py:121
-msgid "Run LilyPond, add titles, generate printable document."
-msgstr ""
-
-#: lilypond.py:127 main.cc:115
-msgid "write Makefile dependencies for every input file"
-msgstr "ÚÁÐÉÓÙ×ÁÔØ ÚÁ×ÉÓÉÍÏÓÔÉ Makefile ÄÌÑ ËÁÖÄÏÇÏ ×ÈÏÄÎÏÇÏ ÆÁÊÌÁ"
-
-#: lilypond.py:129
-msgid "print even more output"
-msgstr ""
-
-#: lilypond.py:130
-#, fuzzy
-msgid "add DIR to LilyPond's search path"
-msgstr "ÄÏÂÁ×ÉÔØ ëáô Ë ÐÕÔÉ ÐÏÉÓËÁ"
-
-#: lilypond.py:132
-#, python-format
-msgid "keep all output, output to directory %s.dir"
-msgstr ""
-
-#: lilypond.py:133
-msgid "don't run LilyPond"
-msgstr ""
-
-#: lilypond.py:134 main.cc:116
-msgid "produce MIDI output only"
-msgstr "ÐÒÏÉÚ×ÏÄÉÔØ ×Ù×ÏÄ ÔÏÌØËÏ MIDI"
-
-#: lilypond.py:135 midi2ly.py:102
-#, fuzzy
-msgid "write output to FILE"
-msgstr "ÚÁÐÉÓÙ×ÁÔØ ×Ù×ÏÄ × ïóîï÷á[-x].ÒÁÓÛÉÒÅÎÉÅ"
-
-#: lilypond.py:136
-msgid "find pfa fonts used in FILE"
-msgstr ""
-
-#: lilypond.py:139
-msgid "generate PostScript output"
-msgstr ""
-
-#: lilypond.py:140
-msgid "generate PNG page images"
-msgstr ""
-
-#: lilypond.py:141
-msgid "generate PS.GZ"
-msgstr ""
-
-#: lilypond.py:142
-msgid "generate PDF output"
-msgstr ""
-
-#: lilypond.py:143
-msgid "use pdflatex to generate a PDF output"
-msgstr ""
-
-#. FIXME: preview, picture; to indicate creation of a PNG?
-#: lilypond.py:145
-msgid "make a picture of the first system"
-msgstr ""
-
-#: lilypond.py:146
-msgid "make HTML file with links to all output"
-msgstr ""
-
-#: lilypond.py:147
-msgid "KEY=VAL"
-msgstr ""
-
-#: lilypond.py:147
-msgid "change global setting KEY to VAL"
-msgstr ""
-
-#: lilypond.py:149 midi2ly.py:106 mup2ly.py:79 main.cc:125
-msgid "print version number"
-msgstr "×Ù×ÏÄÉÔØ ÎÏÍÅÒ ×ÅÒÓÉÉ"
-
-#. other globals
-#. Pdftex support
-#. # yuk.
-#. lilypond_binary = 'valgrind --suppressions=%(home)s/usr/src/guile-1.6.supp --num-callers=10 %(home)s/usr/src/lilypond/lily/out/lilypond '% { 'home' : '/home/hanwen' }
-#. only use installed binary  when we're installed too.
-#. init to empty; values here take precedence over values in the file
-#. # TODO: change name.
-#. for geometry v3
-#. Output formats that lilypond should create
-#. what a name.
-#. ly.warning (_ ("invalid value: %s") % `val`)
-#. ly.warning (_ ("invalid value: %s") % `val`)
-#: lilypond.py:232
-#, fuzzy, python-format
-msgid "no such setting: `%s'"
-msgstr "ÎÅÔ ÔÁËÏÇÏ ÉÎÓÔÒÕÍÅÎÔÁ: `%s'"
-
-#. 2 == user interrupt.
-#: lilypond.py:274
-#, python-format
-msgid "LilyPond crashed (signal %d)."
-msgstr ""
-
-#: lilypond.py:275
-msgid "Please submit a bug report to bug-lilypond@gnu.org"
-msgstr ""
-
-#: lilypond.py:281
-#, python-format
-msgid "LilyPond failed on input file %s (exit status %d)"
-msgstr ""
-
-#: lilypond.py:284
-#, python-format
-msgid "LilyPond failed on an input file (exit status %d)"
-msgstr ""
-
-#: lilypond.py:285
-#, fuzzy
-msgid "Continuing..."
-msgstr "÷ÙÂÒÁÓÙ×ÁÀ ÍÕÚÙËÕ: `%s'"
-
-#. urg
-#: lilypond.py:296
-#, fuzzy, python-format
-msgid "Analyzing %s..."
-msgstr "÷ÙÂÒÁÓÙ×ÁÀ ÍÕÚÙËÕ: `%s'"
-
-#. search only the first 10k
-#: lilypond.py:354
-#, fuzzy, python-format
-msgid "no LilyPond output found for `%s'"
-msgstr "Lily ×ÙÈÏÄ × %s..."
-
-#. The final \n seems important here. It ensures that the footers and taglines end up on the right page.
-#. TODO: should set textheight (enlarge) depending on papersize.
-#: lilypond.py:397
-#, fuzzy, python-format
-msgid "invalid value: `%s'"
-msgstr "ÎÅ×ÅÒÎÙÊ ÓÉÍ×ÏÌ: `%c'"
-
-#. set sane geometry width (a4-width) for linewidth = -1.
-#. who the hell is 597 ?
-#. Ugh.  (La)TeX writes progress and error messages on stdout
-#. Redirect to stderr
-#: lilypond.py:511
-msgid "LaTeX failed on the output file."
-msgstr ""
-
-#. make a preview by rendering only the 1st line
-#. of each score
-#: lilypond.py:568
-msgid ""
-"Trying create PDF, but no PFA fonts found.\n"
-"Using bitmap fonts instead. This will look bad."
-msgstr ""
-
-#. ugh. Different targets?
-#. Added as functionality to lilypond, because lilypond may well need to do this
-#. in future too.
-#. no ps header?
-#: lilypond.py:615
-#, fuzzy, python-format
-msgid "not a PostScript file: `%s'"
-msgstr "ÎÅ ÍÏÇÕ ÏÔËÒÙÔØ ÆÁÊÌ: `%s'"
-
-#. todo
-#: lilypond.py:660
-#, fuzzy, python-format
-msgid "Writing HTML menu `%s'"
-msgstr "÷ÙÂÒÁÓÙ×ÁÀ ÍÕÚÙËÕ: `%s'"
-
-#. signal programming error
-#. Don't convert input files to abspath, rather prepend '.' to include
-#. path.
-#. As a neat trick, add directory part of first input file
-#. to include path.  That way you can do without the clumsy -I in:
-#. lilypond -I foe/bar/baz foo/bar/baz/baz.ly
-#: lilypond.py:769
-msgid "pseudo filter"
-msgstr ""
-
-#: lilypond.py:772
-msgid "pseudo filter only for single input file"
-msgstr ""
-
-#. Ugh, maybe make a setup () function
-#. hmmm. Wish I'd 've written comments when I wrote this.
-#. now it looks complicated.
-#: lilypond.py:806
-#, fuzzy, python-format
-msgid "filename should not contain spaces: `%s'"
-msgstr "õÖÅ ÓÏÄÅÒÖÉÔ: `%s'"
-
-#. to be sure, add tmpdir *in front* of inclusion path.
-#. os.environ['TEXINPUTS'] =  tmpdir + ':' + os.environ['TEXINPUTS']
-#. We catch all exceptions, because we need to do stuff at exit:
-#. * copy any successfully generated stuff from tempdir and
-#. notify user of that
-#. * cleanout tempdir
-#. ## ARGH. This also catches python programming errors.
-#. ## this should only catch lilypond nonzero exit  status
-#. ## --hwn
-#. TODO: friendly message about LilyPond setup/failing?
-#.
-#: lilypond.py:845
-msgid "Running LilyPond failed. Rerun with --verbose for a trace."
-msgstr ""
-
-#. Our LilyPond pseudo filter always outputs to 'lelie'
-#. have subsequent stages and use 'lelie' output.
-#. unless: add --tex, or --latex?
-#. TODO: friendly message about TeX/LaTeX setup,
-#. trying to run tex/latex by hand
-#: lilypond.py:886
-msgid "Failed to make PS file. Rerun with --verbose for a trace."
-msgstr ""
-
-#. unless: add --tex, or --latex?
-#. TODO: friendly message about TeX/LaTeX setup,
-#. trying to run tex/latex by hand
-#: lilypond.py:916
-msgid "Running LaTeX falied. Rerun with --verbose for a trace."
-msgstr ""
-
-#. add DEP to targets?
-#: lilypond.py:926 input-file-results.cc:68
-#, fuzzy, c-format, python-format
-msgid "dependencies output to `%s'..."
-msgstr "\"ÂÕÍÁÖÎÙÊ\" ×Ù×ÏÄ × %s..."
-
-#: lilypond.py:937
-#, fuzzy, python-format
-msgid "%s output to <stdout>..."
-msgstr "×Ù×ÏÄ MIDI × %s..."
-
-#: lilypond.py:942 lilypond.py:968 includable-lexer.cc:57
-#: input-file-results.cc:191 input-file-results.cc:197 lily-guile.cc:86
-#, c-format, python-format
-msgid "can't find file: `%s'"
-msgstr "ÎÅ ÍÏÇÕ ÎÁÊÔÉ ÆÁÊÌ: `%s'"
-
-#. Hmm, if this were a function, we could call it the except: clauses
-#: lilypond.py:965
-#, fuzzy, python-format
-msgid "%s output to %s..."
-msgstr "×Ù×ÏÄ MIDI × %s..."
-
-#. !@PYTHON@
-#.
-#. midi2ly.py -- LilyPond midi import script
-#.
-#. source file of the GNU LilyPond music typesetter
-#.
-#. (c)  1998--2003  Han-Wen Nienhuys <hanwen@cs.uu.nl>
-#. Jan Nieuwenhuizen <janneke@gnu.org>
-#. ###############################################################
-#. Users of python modules should include this snippet.
-#.
-#. This soon to be removed for: import lilypond.lilylib as ly
-#. ###############################################################
-#. ###############################################################
-#. ############### CONSTANTS
-#. ###############################################################
-#. temp_dir = os.path.join (original_dir,  '%s.dir' % program_name)
-#. original_dir = os.getcwd ()
-#. keep_temp_dir_p = 0
-#: midi2ly.py:94
-msgid "Convert MIDI to LilyPond source."
-msgstr ""
-
-#: midi2ly.py:97
-msgid "print absolute pitches"
-msgstr ""
-
-#: midi2ly.py:98 midi2ly.py:103
-msgid "DUR"
-msgstr "íáöïò"
-
-#: midi2ly.py:98
-msgid "quantise note durations on DUR"
-msgstr ""
-
-#: midi2ly.py:99
-msgid "print explicit durations"
-msgstr ""
-
-#: midi2ly.py:101
-msgid "ALT[:MINOR]"
-msgstr ""
-
-#: midi2ly.py:101
-msgid "set key: ALT=+sharps|-flats; MINOR=1"
-msgstr ""
-
-#: midi2ly.py:103
-msgid "quantise note starts on DUR"
-msgstr ""
-
-#: midi2ly.py:104
-msgid "DUR*NUM/DEN"
-msgstr ""
-
-#: midi2ly.py:104
-msgid "allow tuplet durations DUR*NUM/DEN"
-msgstr ""
-
-#: midi2ly.py:108
-msgid "treat every text as a lyric"
-msgstr ""
-
-#: midi2ly.py:136 mup2ly.py:130
-msgid " 2001--2003"
-msgstr ""
-
-#: midi2ly.py:141 mup2ly.py:135
-msgid ""
-"\n"
-"Distributed under terms of the GNU General Public License. It comes with\n"
-"NO WARRANTY."
-msgstr ""
-
-#: midi2ly.py:166 mup2ly.py:162
-msgid "Exiting ... "
-msgstr ""
-
-#: midi2ly.py:264 mup2ly.py:261
-#, python-format
-msgid "command exited with value %d"
-msgstr ""
-
-#. ###############################################################
-#. END Library
-#. ###############################################################
-#. hmm
-#. major scale: do-do
-#. minor scale: la-la  (= + 5) '''
-#. By tradition, all scales now consist of a sequence
-#. of 7 notes each with a distinct name, from amongst
-#. a b c d e f g.  But, minor scales have a wide
-#. second interval at the top - the 'leading note' is
-#. sharped. (Why? it just works that way! Anything
-#. else doesn't sound as good and isn't as flexible at
-#. saying things. In medieval times, scales only had 6
-#. notes to avoid this problem - the hexachords.)
-#. So, the d minor scale is d e f g a b-flat c-sharp d
-#. - using d-flat for the leading note would skip the
-#. name c and duplicate the name d.  Why isn't c-sharp
-#. put in the key signature? Tradition. (It's also
-#. supposedly based on the Pythagorean theory of the
-#. cycle of fifths, but that really only applies to
-#. major scales...)  Anyway, g minor is g a b-flat c d
-#. e-flat f-sharp g, and all the other flat minor keys
-#. end up with a natural leading note. And there you
-#. have it.
-#. John Sankey <bf250@freenet.carleton.ca>
-#.
-#. Let's also do a-minor: a b c d e f gis a
-#.
-#. --jcn
-#. as -> gis
-#. des -> cis
-#. ges -> fis
-#. g -> fisis
-#. d -> cisis
-#. a -> gisis
-#. b -> ces
-#. e -> fes
-#. f -> eis
-#. c -> bis
-#. # FIXME: compile fix --jcn
-#. TODO: move space
-#. fis cis gis dis ais eis bis
-#. bes es as des ges ces fes
-#. urg, we should be sure that we're in a lyrics staff
-#. all include ALL_NOTES_OFF
-#. ugh, must set key while parsing
-#. because Note init uses key
-#. Better do Note.calc () at dump time?
-#. last_lyric.clocks = t - last_time
-#. hmm
-#. urg, this will barf at meter changes
-#. urg LilyPond doesn't start at c4, but
-#. remembers from previous tracks!
-#. reference_note = Note (clocks_per_4, 4*12, 0)
-#. must be in \notes mode for parsing \skip
-#: midi2ly.py:1002
-#, fuzzy, python-format
-msgid "%s output to `%s'..."
-msgstr "×Ù×ÏÄ MIDI × %s..."
-
-#: midi2ly.py:1033
-msgid "Example:"
-msgstr ""
-
-#: midi2ly.py:1083
-msgid "no files specified on command line."
-msgstr ""
-
-#. !@PYTHON@
-#. mup2ly.py -- mup input converter
-#.
-#. source file of the GNU LilyPond music typesetter
-#.
-#. (c) 2001
-#. if set, LILYPONDPREFIX must take prevalence
-#. if datadir is not set, we're doing a build and LILYPONDPREFIX
-#: mup2ly.py:70
-msgid "Convert mup to LilyPond source."
-msgstr ""
-
-#: mup2ly.py:73
-msgid "debug"
-msgstr ""
-
-#: mup2ly.py:74
-msgid "define macro NAME [optional expansion EXP]"
-msgstr ""
-
-#: mup2ly.py:77
-msgid "only pre-process"
-msgstr ""
-
-#. Duh.  Python style portable: cp *.EXT OUTDIR
-#. system ('cp *.%s %s' % (ext, outdir), 1)
-#. Python < 1.5.2 compatibility
-#.
-#. On most platforms, this is equivalent to
-#. `normpath(join(os.getcwd()), PATH)'.  *Added in Python version 1.5.2*
-#. if set, LILYPONDPREFIX must take prevalence
-#. if datadir is not set, we're doing a build and LILYPONDPREFIX
-#. ###############################################################
-#. END Library
-#.
-#. PMX cut and paste
-#.
-#. if not self.entries:
-#. #return '\n'
-#. #ugh ugh
-#. return '\n%s = {}\n\n' % self.idstring ()
-#. ugh
-#. def set_clef (self, letter):
-#. clstr = clef_table[letter]
-#. self.voices[0].add_nonchord (Clef (clstr))
-#. urg
-#. maybe use import copy?
-#. for i in self.pitches:
-#. ch.pitches.append (i)
-#. for i in self.scripts:
-#. ch.scripts.append (i)
-#. http://www.arkkra.com/doc/uguide/contexts.html
-#. #self.current_staffs = []
-#. duh
-#. FIXME: 1?
-#. FIXME: does key play any role in this?
-#. ch = self.current_voices[0].last_chord ()
-#. ch.basic_duration = self.current_voices[0].last_chord ().basic_duration
-#. ugh
-#. ch = self.current_voices[0].last_chord ()
-#. `;' is not a separator, chords end with ';'
-#. mup resets default duration and pitch each bar
-#. ugh: these (and lots more) should also be parsed in
-#. context staff.  we should have a class Staff_properties
-#. and parse/set all those.
-#. shortcut: set to official mup maximum (duh)
-#. self.set_staffs (40)
-#: mup2ly.py:1076
-#, fuzzy, python-format
-msgid "no such context: %s"
-msgstr "ÎÅÔ ÔÁËÏÇÏ ÉÎÓÔÒÕÍÅÎÔÁ: `%s'"
-
-#. hmm
-#. dig this: mup allows ifdefs inside macro bodies
-#. don't do nested multi-line defines
-#. duh: mup is strictly line-based, except for `define',
-#. which is `@' terminated and may span several lines
-#. don't define new macros in unactive areas
-#. To support nested multi-line define's
-#. process_function and macro_name, macro_body
-#. should become lists (stacks)
-#. The mup manual is undetermined on this
-#. and I haven't seen examples doing it.
-#.
-#. don't do nested multi-line define's
-#. writes to stdout for help2man
-#. don't call
-#. identify ()
-#. sys.stdout.flush ()
-#. handy emacs testing
-#. if not files:
-#. files = ['template.mup']
-#: mup2ly.py:1300
-#, fuzzy, python-format
-msgid "Processing `%s'..."
-msgstr "ïÂÒÁÂÁÔÙ×ÁÀ..."
-
-#: mup2ly.py:1319
-#, fuzzy, python-format
-msgid "Writing `%s'..."
-msgstr "÷ÙÂÒÁÓÙ×ÁÀ ÍÕÚÙËÕ: `%s'"
-
-#: getopt-long.cc:146
-#, c-format
-msgid "option `%s' requires an argument"
-msgstr "ÏÐÃÉÑ `%s' ÔÒÅÂÕÅÔ ÁÒÇÕÍÅÎÔ"
-
-#: getopt-long.cc:150
-#, c-format
-msgid "option `%s' doesn't allow an argument"
-msgstr "ÏÐÃÉÑ `%s' ÎÅ ÄÏÐÕÓËÁÅÔ ÉÓÐÏÌØÚÏ×ÁÎÉÅ ÁÒÇÕÍÅÎÔÁ"
-
-#: getopt-long.cc:154
-#, c-format
-msgid "unrecognized option: `%s'"
-msgstr "ÎÅÉÚ×ÅÓÔÎÁÑ ÏÐÃÉÑ: `%s'"
-
-#: getopt-long.cc:161
-#, c-format
-msgid "invalid argument `%s' to option `%s'"
-msgstr "ÎÅ×ÅÒÎÙÊ ÁÒÇÕÍÅÎÔ `%s' ÄÌÑ ÏÐÃÉÉ `%s'"
-
-#: warn.cc:25
-#, fuzzy, c-format
-msgid "warning: %s\n"
-msgstr "ÐÒÅÄÕÐÒÅÖÄÁÀ: "
-
-#: warn.cc:31
-#, fuzzy, c-format
-msgid "error: %s\n"
-msgstr "ÏÛÉÂËÁ: "
-
-#: warn.cc:44
-#, fuzzy, c-format
-msgid "programming error: %s (Continuing; cross thumbs)\n"
-msgstr " (ðÒÏÄÏÌÖÁÀ; ÓËÒÅÓÔÉÔÅ ÐÁÌØÃÙ)"
-
-#: accidental.cc:202 key-signature-interface.cc:137
-#, c-format
-msgid "accidental `%s' not found"
-msgstr ""
-
-#: accidental-engraver.cc:171 new-accidental-engraver.cc:238
-#, c-format
-msgid "Accidental typesetting list must begin with context-name: %s"
-msgstr ""
-
-#: accidental-engraver.cc:196 new-accidental-engraver.cc:263
-#, fuzzy, c-format
-msgid "unknown accidental typesetting: %s. Ignored"
-msgstr "ÎÅÉÚ×ÅÓÔÎÁÑ escape-ÐÏÓÌÅÄÏ×ÁÔÅÌØÎÏÓÔØ: `\\%s'"
-
-#: accidental-engraver.cc:212 new-accidental-engraver.cc:279
-#, c-format
-msgid "Symbol is not a parent context: %s. Ignored"
-msgstr ""
-
-#: accidental-engraver.cc:215 new-accidental-engraver.cc:282
-#, c-format
-msgid "Accidental typesetting must be pair or context-name: %s"
-msgstr ""
-
-#: afm.cc:66
-#, c-format
-msgid "can't find character number: %d"
-msgstr "ÎÅ ÍÏÇÕ ÎÁÊÔÉ ÓÉÍ×ÏÌ Ó ÎÏÍÅÒÏÍ: %d"
-
-#: afm.cc:81
-#, c-format
-msgid "can't find character called: `%s'"
-msgstr "ÎÅ ÍÏÇÕ ÎÁÊÔÉ ÓÉÍ×ÏÌ ÐÏÄ ÎÁÚ×ÁÎÉÅÍ: `%s'"
-
-#: afm.cc:142
-#, fuzzy, c-format
-msgid "Error parsing AFM file: `%s'"
-msgstr "ïÛÉÂËÁ ÐÒÉ ÁÎÁÌÉÚÅ ÆÁÊÌÁ AFM"
-
-#: all-font-metrics.cc:95
-#, c-format
-msgid "checksum mismatch for font file: `%s'"
-msgstr ""
-
-#: all-font-metrics.cc:97
-#, c-format
-msgid "does not match: `%s'"
-msgstr ""
-
-#: all-font-metrics.cc:102
-msgid ""
-" Rebuild all .afm files, and remove all .pk and .tfm files.  Rerun with -V "
-"to show font paths."
-msgstr ""
-
-#: all-font-metrics.cc:103
-msgid ""
-"A script for removing font-files is delivered with the source-code,\n"
-"in buildscripts/clean-fonts.sh"
-msgstr ""
-
-#: all-font-metrics.cc:169
-#, c-format
-msgid "can't find font: `%s'"
-msgstr "ÎÅ ÍÏÇÕ ÎÁÊÔÉ ÛÒÉÆÔ: `%s'"
-
-#: all-font-metrics.cc:170
-msgid "Loading default font"
-msgstr "úÁÇÒÕÖÁÀ ÛÒÉÆÔ ÐÏ ÕÍÏÌÞÁÎÉÀ"
-
-#: all-font-metrics.cc:185
-#, c-format
-msgid "can't find default font: `%s'"
-msgstr "ÎÅ ÍÏÇÕ ÎÁÊÔÉ ÛÒÉÆÔ ÐÏ ÕÍÏÌÞÁÎÉÀ: `%s'"
-
-#: all-font-metrics.cc:186 includable-lexer.cc:59 input-file-results.cc:192
-#, c-format
-msgid "(search path: `%s')"
-msgstr "(ÐÕÔØ ÐÏÉÓËÁ: `%s')"
-
-#: all-font-metrics.cc:187
-msgid "Giving up"
-msgstr "óÄÁÀÓØ"
-
-#: auto-change-iterator.cc:43 change-iterator.cc:60
-#: part-combine-music-iterator.cc:120
-msgid "Can't switch translators, I'm there already"
-msgstr "îÅ ÍÏÇÕ ÐÅÒÅËÌÀÞÉÔØ ÐÅÒÅ×ÏÄÞÉËÏ×, Ñ ÕÖÅ ÔÁÍ"
-
-#: bar-check-iterator.cc:51
-#, c-format
-msgid "barcheck failed at: %s"
-msgstr ""
-
-#: beam.cc:146
-#, fuzzy
-msgid "beam has less than two visible stems"
-msgstr "ÇÒÕÐÐÉÒÏ×ËÁ ÍÅÎÅÅ Ä×ÕÈ ÛÔÉÌÅÊ"
-
-#: beam.cc:151
-#, fuzzy
-msgid "Beam has less than two stems. Removing beam."
-msgstr "ÇÒÕÐÐÉÒÏ×ËÁ ÍÅÎÅÅ Ä×ÕÈ ÛÔÉÌÅÊ"
-
-#: beam.cc:976
-msgid ""
-"Not sure that we can find a nice beam slope (no viable initial configuration "
-"found)."
-msgstr ""
-
-#: beam-engraver.cc:176
-msgid "already have a beam"
-msgstr "ÕÖÅ ÉÍÅÅÍ ÇÒÕÐÐÕ ÛÔÉÌÅÊ"
-
-#: beam-engraver.cc:259
-msgid "unterminated beam"
-msgstr "ÎÅÚÁËÏÎÞÅÎÎÁÑ ÇÒÕÐÐÉÒÏ×ËÁ ÛÔÉÌÅÊ"
-
-#: beam-engraver.cc:292 chord-tremolo-engraver.cc:197
-msgid "stem must have Rhythmic structure"
-msgstr "ÛÔÉÌØ ÄÏÌÖÅÎ ÉÍÅÔØ ÒÉÔÍÏ×ÕÀ ÓÔÒÕËÔÕÒÕ"
-
-#: beam-engraver.cc:306
-msgid "stem doesn't fit in beam"
-msgstr "ÛÔÉÌØ ÎÅ ×ÌÅÚÁÅÔ × ÇÒÕÐÐÉÒÏ×ËÕ"
-
-#: beam-engraver.cc:307
-msgid "beam was started here"
-msgstr "ÇÒÕÐÐÉÒÏ×ËÁ ÎÁÞÉÎÁÌÁÓØ ÚÄÅÓØ"
-
-#: break-align-interface.cc:173
-#, fuzzy, c-format
-msgid "No spacing entry from %s to `%s'"
-msgstr "ÎÅÉÚ×ÅÓÔÎÁÑ ÐÅÒÅÍÅÎÎÁÑ ÂÕÍÁÇÉ: `%s'"
-
-#: change-iterator.cc:22
-#, c-format
-msgid "can't change `%s' to `%s'"
-msgstr "ÎÅ ÍÏÇÕ ÓÍÅÎÉÔØ `%s' ÎÁ `%s'"
-
-#.
-#. We could change the current translator's id, but that would make
-#. errors hard to catch
-#.
-#. last->translator_id_string_  = get_change ()->change_to_id_string_;
-#.
-#: change-iterator.cc:79
-msgid "I'm one myself"
-msgstr "ñ ÅÄÉÎÓÔ×ÅÎÎÙÊ"
-
-#: change-iterator.cc:82
-msgid "none of these in my family"
-msgstr "ÏÎÉ ÍÎÅ ÎÅ ÒÏÄÓÔ×ÅÎÎÉËÉ"
-
-#: chord-tremolo-engraver.cc:98
-#, c-format
-msgid "Chord tremolo with %d elements. Must have two elements."
-msgstr ""
-
-#: chord-tremolo-engraver.cc:157
-msgid "unterminated chord tremolo"
-msgstr "ÎÅÚÁËÏÎÞÅÎÎÏÅ ÔÒÅÍÏÌÏ ÁËËÏÒÄÁ"
-
-#: chord-tremolo-iterator.cc:69
-#, fuzzy
-msgid "no one to print a tremolos"
-msgstr "ÎÅËÏÍÕ ÒÉÓÏ×ÁÔØ ÓËÏÂÕ ÐÏ×ÔÏÒÁ"
-
-#: clef.cc:64
-#, c-format
-msgid "clef `%s' not found"
-msgstr ""
-
-#: cluster.cc:131
-#, fuzzy, c-format
-msgid "unknown cluster style `%s'"
-msgstr "ÎÅÉÚ×ÅÓÔÎÙÊ ÔÉÐ ËÌÀÞÁ"
-
-#: coherent-ligature-engraver.cc:84
-#, c-format
-msgid "gotcha: ptr=%ul"
-msgstr ""
-
-#: coherent-ligature-engraver.cc:96
-#, c-format
-msgid "distance=%f"
-msgstr ""
-
-#: coherent-ligature-engraver.cc:139
-#, c-format
-msgid "Coherent_ligature_engraver: setting `spacing-increment = 0.01': ptr=%ul"
-msgstr ""
-
-#: custos.cc:92
-#, c-format
-msgid "custos `%s' not found"
-msgstr ""
-
-#: dimensions.cc:13
-msgid "NaN"
-msgstr "NaN"
-
-#: dynamic-engraver.cc:204 span-dynamic-performer.cc:82
-msgid "can't find start of (de)crescendo"
-msgstr "ÎÅ ÍÏÇÕ ÎÁÊÔÉ ÎÁÞÁÌÏ (ÄÅ)ËÒÅÝÅÎÄÏ"
-
-#: dynamic-engraver.cc:216
-msgid "already have a crescendo"
-msgstr "ËÒÅÝÅÎÄÏ ÕÖÅ ÅÓÔØ"
-
-#: dynamic-engraver.cc:217
-msgid "already have a decrescendo"
-msgstr "ÄÅËÒÅÝÅÎÄÏ ÕÖÅ ÅÓÔØ"
-
-#: dynamic-engraver.cc:220
-#, fuzzy
-msgid "Cresc started here"
-msgstr "ÇÒÕÐÐÉÒÏ×ËÁ ÎÁÞÉÎÁÌÁÓØ ÚÄÅÓØ"
-
-#: dynamic-engraver.cc:323
-msgid "unterminated (de)crescendo"
-msgstr "ÎÅÚÁËÏÎÞÅÎÎÏÅ (ÄÅ)ËÒÅÝÅÎÄÏ"
-
-#: event.cc:49
-#, c-format
-msgid "Transposition by %s makes alteration larger than two"
-msgstr ""
-
-#: event-chord-iterator.cc:76 output-property-music-iterator.cc:27
-#, fuzzy, c-format
-msgid "Junking event: `%s'"
-msgstr "÷ÙÂÒÁÓÙ×ÁÀ ÚÁÐÒÏÓ: `%s'"
-
-#: extender-engraver.cc:94
-msgid "unterminated extender"
-msgstr "ÎÅÚÁ×ÅÒÛÅÎÎÙÊ ÒÁÓÛÉÒÉÔÅÌØ"
-
-#: extender-engraver.cc:106
-#, fuzzy
-msgid "Nothing to connect extender to on the left.  Ignoring extender event."
-msgstr "îÅËÕÄÁ ÐÒÉÓÏÅÄÉÎÉÔØ ÒÁÓÛÉÒÉÔÅÌØ ÓÌÅ×Á. éÇÎÏÒÉÒÕÀ ÚÁÐÒÏÓ ÒÁÓÛÉÒÉÔÅÌÑ."
-
-#: folded-repeat-iterator.cc:88
-msgid "no one to print a repeat brace"
-msgstr "ÎÅËÏÍÕ ÒÉÓÏ×ÁÔØ ÓËÏÂÕ ÐÏ×ÔÏÒÁ"
-
-#: font-interface.cc:239
-msgid "couldn't find any font satisfying "
-msgstr ""
-
-#: glissando-engraver.cc:100
-#, fuzzy
-msgid "Unterminated glissando."
-msgstr "ÎÅÚÁ×ÅÒÛÅÎÎÁÑ ÌÉÇÁ"
-
-#: gourlay-breaking.cc:188
-#, c-format
-msgid "Optimal demerits: %f"
-msgstr ""
-
-#: gourlay-breaking.cc:193
-msgid "No feasible line breaking found"
-msgstr "îÅ ÎÁÊÄÅÎÏ ÕÄÏ×ÌÅÔ×ÏÒÉÔÅÌØÎÏÇÏ ÒÁÚÒÙ×Á ÓÔÒÏËÉ"
-
-#: gregorian-ligature-engraver.cc:59
-#, c-format
-msgid "\\%s ignored"
-msgstr ""
-
-#: gregorian-ligature-engraver.cc:64
-#, c-format
-msgid "implied \\%s added"
-msgstr ""
-
-#.
-#. Todo: do something sensible. The grob-pq-engraver is not water
-#. tight, and stuff like tupletSpannerDuration confuses it.
-#.
-#: grob-pq-engraver.cc:130
-#, c-format
-msgid ""
-"Skipped something?\n"
-"Grob %s ended before I expected it to end."
-msgstr ""
-
-#: hairpin.cc:98
-msgid "decrescendo too small"
-msgstr ""
-
-#: hairpin.cc:99
-#, fuzzy
-msgid "crescendo too small"
-msgstr "ËÒÅÝÅÎÄÏ"
-
-#: horizontal-bracket-engraver.cc:64
-#, fuzzy
-msgid "Don't have that many brackets."
-msgstr "îÅÔ ÔÁËÏÇÏ ËÏÌÉÞÅÓÔ×Á ÏËÔÁ× (%s)"
-
-#: horizontal-bracket-engraver.cc:73
-msgid "Conflicting note group events."
-msgstr ""
-
-#: hyphen-engraver.cc:87
-msgid "unterminated hyphen"
-msgstr "ÐÅÒÅÎÏÓ ÂÅÚ ÏËÏÎÞÁÎÉÑ"
-
-#: hyphen-engraver.cc:99
-#, fuzzy
-msgid "Nothing to connect hyphen to on the left.  Ignoring hyphen event."
-msgstr "îÅ Ë ÞÅÍÕ ÐÒÉÓÏÅÄÉÎÉÔØ ÐÅÒÅÎÏÓ ÓÌÅ×Á. éÇÎÏÒÉÒÕÀ ÚÁÐÒÏÓ ÐÅÒÅÎÏÓÁ."
-
-#: input.cc:99
-msgid "non fatal error: "
-msgstr "ÎÅ ÓÍÅÒÔÅÌØÎÁÑ ÏÛÉÂËÁ: "
-
-#: input.cc:107 source-file.cc:146 source-file.cc:239
-msgid "position unknown"
-msgstr "ÐÏÌÏÖÅÎÉÅ ÎÅÉÚ×ÅÓÔÎÏ"
-
-#: input-file-results.cc:72 source-file.cc:54 streams.cc:38
-#, c-format
-msgid "can't open file: `%s'"
-msgstr "ÎÅ ÍÏÇÕ ÏÔËÒÙÔØ ÆÁÊÌ: `%s'"
-
-#: input-file-results.cc:132
-msgid "Score contains errors; will not process it"
-msgstr ""
-
-#: input-file-results.cc:172
-#, fuzzy, c-format
-msgid "Now processing: `%s'"
-msgstr "ÎÅÉÚ×ÅÓÔÎÁÑ escape-ÐÏÓÌÅÄÏ×ÁÔÅÌØÎÏÓÔØ: `\\%s'"
-
-#: key-performer.cc:96
-msgid "FIXME: key change merge"
-msgstr "éóðòá÷øíåîñ: ÓÌÉÑÎÉÅ ÓÍÅÎÙ ËÌÀÞÁ"
-
-#: kpath.cc:76
-#, fuzzy, c-format
-msgid "Kpathsea couldn't find TFM file `%s'"
-msgstr "ÎÅ ÍÏÇÕ ÎÁÊÔÉ ÆÁÊÌ: `%s'"
-
-#: ligature-engraver.cc:159
-#, fuzzy
-msgid "can't find start of ligature"
-msgstr "ÞÔÏ-ÔÏ ÎÅ ÎÁÊÄÕ ÎÁÞÁÌÏ ÇÒÕÐÐÉÒÏ×ËÉ ÛÔÉÌÅÊ"
-
-#: ligature-engraver.cc:165
-msgid "no right bound"
-msgstr ""
-
-#: ligature-engraver.cc:191
-#, fuzzy
-msgid "already have a ligature"
-msgstr "ÕÖÅ ÉÍÅÅÍ ÇÒÕÐÐÕ ÛÔÉÌÅÊ"
-
-#: ligature-engraver.cc:207
-msgid "no left bound"
-msgstr ""
-
-#: ligature-engraver.cc:258
-#, fuzzy
-msgid "unterminated ligature"
-msgstr "ÎÅÚÁ×ÅÒÛÅÎÎÁÑ ÌÉÇÁ"
-
-#: ligature-engraver.cc:282
-msgid "ligature may not contain rest; ignoring rest"
-msgstr ""
-
-#: ligature-engraver.cc:283
-#, fuzzy
-msgid "ligature was started here"
-msgstr "ÇÒÕÐÐÉÒÏ×ËÁ ÎÁÞÉÎÁÌÁÓØ ÚÄÅÓØ"
-
-#: lily-guile.cc:88
-#, c-format
-msgid "(load path: `%s')"
-msgstr "(ÐÕÔØ ÚÁÇÒÕÚËÉ: `%s')"
-
-#: lily-guile.cc:576
-#, c-format
-msgid "Can't find property type-check for `%s' (%s)."
-msgstr ""
-
-#: lily-guile.cc:579
-msgid "Perhaps you made a typing error?"
-msgstr ""
-
-#: lily-guile.cc:585
-msgid "Doing assignment anyway."
-msgstr ""
-
-#: lily-guile.cc:599
-#, c-format
-msgid "Type check for `%s' failed; value `%s' must be of type `%s'"
-msgstr ""
-
-#: lookup.cc:173
-msgid "round filled box horizontal extent smaller than blot; decreasing blot"
-msgstr ""
-
-#: lookup.cc:178
-msgid "round filled box vertical extent smaller than blot; decreasing blot"
-msgstr ""
-
-#: lyric-phrasing-engraver.cc:311
-msgid "lyrics found without any matching notehead"
-msgstr ""
-
-#: lyric-phrasing-engraver.cc:317
-msgid "Huh? Melismatic note found to have associated lyrics."
-msgstr ""
-
-#: main.cc:106
-msgid "EXPR"
-msgstr ""
-
-#: main.cc:107
-msgid "set options, use -e '(ly-option-usage)' for help"
-msgstr ""
-
-#: main.cc:110
-msgid "use output format EXT"
-msgstr ""
-
-#: main.cc:112
-#, fuzzy
-msgid "FIELD"
-msgstr "æáêì"
-
-#: main.cc:112
-msgid "write header field to BASENAME.FIELD"
-msgstr ""
-
-#: main.cc:113
-msgid "add DIR to search path"
-msgstr "ÄÏÂÁ×ÉÔØ ëáô Ë ÐÕÔÉ ÐÏÉÓËÁ"
-
-#: main.cc:114
-msgid "use FILE as init file"
-msgstr "ÉÓÐÏÌØÚÏ×ÁÔØ æáêì ËÁË ÆÁÊÌ ÉÎÉÃÉÁÌÉÚÁÃÉÉ"
-
-#: main.cc:118
-msgid "prepend DIR to dependencies"
-msgstr ""
-
-#.
-#. should audit again.
-#.
-#: main.cc:123
-msgid "inhibit file output naming and exporting"
-msgstr "ÓËÒÙÔØ ÉÍÅÎÏ×ÁÎÉÅ É ÜËÓÐÏÒÔ ×Ù×ÏÄÁ × ÆÁÊÌ"
-
-#. No version number or newline here. It confuses help2man.
-#: main.cc:155
-#, fuzzy, c-format
-msgid "Usage: %s [OPTIONS]... FILE..."
-msgstr "éÓÐÏÌØÚÏ×ÁÎÉÅ: %s [ïðãéñ]... [æáêì]..."
-
-#: main.cc:157
-msgid "Typeset music and or play MIDI from FILE."
-msgstr "îÁÂÉÒÁÔØ ÍÕÚÙËÕ É/ÉÌÉ ÐÒÏÉÇÒÙ×ÁÔØ MIDI ÉÚ æáêìÁ."
-
-#: main.cc:160
-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\n"
-"Ñ×ÌÑÅÔÓÑ ÞÁÓÔØÀ ðÒÏÅËÔÁ GNU.\n"
-
-#: main.cc:182
-#, c-format
-msgid ""
-"This is free software.  It is covered by the GNU General Public License,\n"
-"and you are welcome to change it and/or distribute copies of it under\n"
-"certain conditions.  Invoke as `%s --warranty' for more information.\n"
-msgstr ""
-"üÔÏ Ó×ÏÂÏÄÎÏÅ ÐÒÏÇÒÁÍÍÎÏÅ ÏÂÅÓÐÅÞÅÎÉÅ. ïÎÏ ÏÈÒÁÎÑÅÔÓÑ ïÂÝÅÊ ïÔËÒÙÔÏÊ\n"
-"ìÉÃÅÎÚÉÅÊ GNU, É ÷Ù ÍÏÖÅÔÅ ÉÚÍÅÎÑÔØ ÅÇÏ É/ÉÌÉ ÒÁÓÐÒÏÓÔÒÁÎÑÔØ ÅÇÏ ËÏÐÉÉ\n"
-"ÐÒÉ ÓÏÂÌÀÄÅÎÉÉ ÎÅËÏÔÏÒÙÈ ÕÓÌÏ×ÉÊ. ÷ÙÚÙ×ÁÊÔÅ ËÁË `%s --warranty' ÄÌÑ\n"
-"ÐÏÌÕÞÅÎÉÑ ÄÏÐÏÌÎÉÔÅÌØÎÏÊ ÉÎÆÏÒÍÁÃÉÉ.\n"
-
-#: main.cc:198
-#, fuzzy
-msgid "GNU LilyPond -- The music typesetter"
-msgstr "GNU LilyPond -- îÁÂÏÒÝÉË ÍÕÚÙËÉ ðÒÏÅËÔÁ GNU"
-
-#: main.cc:206
-msgid ""
-"    This program is free software; you can redistribute it and/or\n"
-"modify it under the terms of the GNU General Public License version 2\n"
-"as published by the Free Software Foundation.\n"
-"\n"
-"    This program is distributed in the hope that it will be useful,\n"
-"but WITHOUT ANY WARRANTY; without even the implied warranty of\n"
-"MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU\n"
-"General Public License for more details.\n"
-"\n"
-"    You should have received a copy (refer to the file COPYING) of the\n"
-"GNU General Public License along with this program; if not, write to\n"
-"the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA "
-"02111-1307,\n"
-"USA.\n"
-msgstr ""
-
-#: mensural-ligature.cc:153
-#, c-format
-msgid "Mensural_ligature:thickness undefined on flexa %d; assuming 1.4"
-msgstr ""
-
-#: mensural-ligature.cc:169
-#, c-format
-msgid "Mensural_ligature:delta-pitch undefined on flexa %d; assuming 0"
-msgstr ""
-
-#: mensural-ligature.cc:182
-#, c-format
-msgid "Mensural_ligature:flexa-width undefined on flexa %d; assuming 2.0"
-msgstr ""
-
-#: mensural-ligature.cc:215
-msgid "Mensural_ligature:unexpected case fall-through"
-msgstr ""
-
-#: mensural-ligature.cc:225
-msgid "Mensural_ligature: (join_left == 0)"
-msgstr ""
-
-#: mensural-ligature-engraver.cc:248 mensural-ligature-engraver.cc:397
-msgid "unexpected case fall-through"
-msgstr ""
-
-#: mensural-ligature-engraver.cc:259
-msgid "ligature with less than 2 heads -> skipping"
-msgstr ""
-
-#: mensural-ligature-engraver.cc:279
-msgid "can not determine pitch of ligature primitive -> skipping"
-msgstr ""
-
-#: mensural-ligature-engraver.cc:302
-msgid "prime interval within ligature -> skipping"
-msgstr ""
-
-#: mensural-ligature-engraver.cc:312
-msgid "mensural ligature: duration none of L, B, S -> skipping"
-msgstr ""
-
-#: midi-item.cc:148
-#, c-format
-msgid "no such instrument: `%s'"
-msgstr "ÎÅÔ ÔÁËÏÇÏ ÉÎÓÔÒÕÍÅÎÔÁ: `%s'"
-
-#: midi-item.cc:238
-msgid "silly duration"
-msgstr "ÇÌÕÐÁÑ ÐÒÏÄÏÌÖÉÔÅÌØÎÏÓÔØ"
-
-#: midi-item.cc:251
-msgid "silly pitch"
-msgstr "ÇÌÕÐÙÊ ÔÏÎ"
-
-#: music-output-def.cc:111
-#, c-format
-msgid "can't find `%s' context"
-msgstr "ÎÅ ÍÏÇÕ ÎÁÊÔÉ ËÏÎÔÅËÓÔ `%s'"
-
-#: my-lily-lexer.cc:169
-#, c-format
-msgid "Identifier name is a keyword: `%s'"
-msgstr "éÍÑ ËÏÍÁÎÄÙ Ñ×ÌÑÅÔÓÑ ËÌÀÞÅ×ÙÍ ÓÌÏ×ÏÍ: `%s'"
-
-#: my-lily-lexer.cc:191
-#, c-format
-msgid "error at EOF: %s"
-msgstr "ÏÛÍÂËÁ × ËÏÎÃÅ ÆÁÊÌÁ: %s"
-
-#: my-lily-parser.cc:44
-msgid "Parsing..."
-msgstr "òÁÚÂÉÒÁÀ..."
-
-#: my-lily-parser.cc:54
-msgid "Braces don't match"
-msgstr "æÉÇÕÒÎÙÅ ÓËÏÂËÉ ÎÅ ÓÏ×ÐÁÄÁÀÔ"
-
-#.
-#. music for the softenon children?
-#.
-#: new-fingering-engraver.cc:143
-msgid "music for the martians."
-msgstr ""
-
-#: new-tie-engraver.cc:166 tie-engraver.cc:217
-msgid "lonely tie"
-msgstr ""
-
-#: note-collision.cc:340
-msgid "Too many clashing notecolumns.  Ignoring them."
-msgstr "óÌÉÛËÏÍ ÍÎÏÇÏ ÐÅÒÅÓÅËÁÀÝÉÈÓÑ ÓÔÏÌÂÃÏ× ÎÏÔ. éÇÎÏÒÉÒÕÀ."
-
-#: note-head.cc:127
-#, c-format
-msgid "note head `%s' not found"
-msgstr ""
-
-#: paper-def.cc:96
-#, c-format
-msgid "paper output to `%s'..."
-msgstr "\"ÂÕÍÁÖÎÙÊ\" ×Ù×ÏÄ × %s..."
-
-#: paper-score.cc:78
-#, c-format
-msgid "Element count %d (spanners %d) "
-msgstr ""
-
-#: paper-score.cc:83
-#, fuzzy
-msgid "Preprocessing graphical objects..."
-msgstr "ðÒÅÄ×ÁÒÉÔÅÌØÎÏ ÏÂÒÁÂÁÔÙ×ÁÀ ÜÌÅÍÅÎÔÙ..."
-
-#: paper-score.cc:116
-msgid "Outputting Score, defined at: "
-msgstr ""
-
-#: parse-scm.cc:79
-msgid "GUILE signaled an error for the expression begining here"
-msgstr ""
-
-#.
-#. We could change the current translator's id, but that would make
-#. errors hard to catch
-#.
-#. last->translator_id_string_  = get_change ()->change_to_id_string_;
-#.
-#: part-combine-music-iterator.cc:139
-#, fuzzy, c-format
-msgid "I'm one myself: `%s'"
-msgstr "ñ ÅÄÉÎÓÔ×ÅÎÎÙÊ"
-
-#: part-combine-music-iterator.cc:142
-#, fuzzy, c-format
-msgid "none of these in my family: `%s'"
-msgstr "ÏÎÉ ÍÎÅ ÎÅ ÒÏÄÓÔ×ÅÎÎÉËÉ"
-
-#: percent-repeat-engraver.cc:109
-#, fuzzy
-msgid "Don't know how to handle a percent repeat of this length."
-msgstr "îÅ ÚÎÁÀ, ÞÔÏ ÄÅÌÁÔØ Ó ÐÕÓÔÙÍÉ ËÌÀÞÁÍÉ"
-
-#: percent-repeat-engraver.cc:163
-#, fuzzy
-msgid "unterminated percent repeat"
-msgstr "ÎÅÚÁËÏÎÞÅÎÎÁÑ ÇÒÕÐÐÉÒÏ×ËÁ ÛÔÉÌÅÊ"
-
-#: percent-repeat-iterator.cc:65
-#, fuzzy
-msgid "no one to print a percent"
-msgstr "ÎÅËÏÍÕ ÒÉÓÏ×ÁÔØ ÓËÏÂÕ ÐÏ×ÔÏÒÁ"
-
-#: performance.cc:51
-msgid "Track ... "
-msgstr "äÏÒÏÖËÁ ..."
-
-#: performance.cc:83
-msgid "Creator: "
-msgstr "óÏÚÄÁÔÅÌØ: "
-
-#: performance.cc:103
-#, fuzzy
-msgid "at "
-msgstr ", ×"
-
-#: performance.cc:114
-#, c-format
-msgid "from musical definition: %s"
-msgstr "ÉÚ ÍÕÚÙËÁÌØÎÏÊ ÎÏÔÁÃÉÉ %s"
-
-#: performance.cc:169
-#, c-format
-msgid "MIDI output to `%s'..."
-msgstr "×Ù×ÏÄ MIDI × %s..."
-
-#: phrasing-slur-engraver.cc:123
-#, fuzzy
-msgid "unterminated phrasing slur"
-msgstr "ÎÅÚÁ×ÅÒÛÅÎÎÁÑ ÌÉÇÁ"
-
-#: phrasing-slur-engraver.cc:141
-#, fuzzy
-msgid "can't find start of phrasing slur"
-msgstr "ÞÔÏ-ÔÏ ÎÅ ÎÁÊÄÕ ÎÁÞÁÌÏ ÇÒÕÐÐÉÒÏ×ËÉ ÛÔÉÌÅÊ"
-
-#: piano-pedal-engraver.cc:235 piano-pedal-engraver.cc:250
-#: piano-pedal-engraver.cc:305 piano-pedal-performer.cc:82
-#, fuzzy, c-format
-msgid "can't find start of piano pedal: `%s'"
-msgstr "ÞÔÏ-ÔÏ ÎÅ ÎÁÊÄÕ ÎÁÞÁÌÏ ÇÒÕÐÐÉÒÏ×ËÉ ÛÔÉÌÅÊ"
-
-#: piano-pedal-engraver.cc:410
-#, fuzzy
-msgid "unterminated pedal bracket"
-msgstr "ÎÅÚÁËÏÎÞÅÎÎÁÑ ÇÒÕÐÐÉÒÏ×ËÁ ÛÔÉÌÅÊ"
-
-#: property-iterator.cc:97
-#, c-format
-msgid "Not a grob name, `%s'."
-msgstr ""
-
-#: rest.cc:139
-#, c-format
-msgid "rest `%s' not found, "
-msgstr ""
-
-#: rest-collision.cc:199
-msgid "too many colliding rests"
-msgstr "ÓÌÉÛËÏÍ ÍÎÏÇÏ ÎÁÌÅÚÁÀÝÉÈ ÐÁÕÚ"
-
-#: scm-option.cc:45
-msgid "lilypond -e EXPR means:"
-msgstr ""
-
-#: scm-option.cc:47
-msgid "  Evalute the Scheme EXPR before parsing any .ly files."
-msgstr ""
-
-#: scm-option.cc:49
-msgid ""
-"  Multiple -e options may be given, they will be evaluated sequentially."
-msgstr ""
-
-#: scm-option.cc:51
-msgid ""
-"  The function ly-set-option allows for access to some internal variables."
-msgstr ""
-
-#: scm-option.cc:53
-msgid "Usage: lilypond -e \"(ly-set-option SYMBOL VAL)\""
-msgstr ""
-
-#: scm-option.cc:55
-msgid "Where SYMBOL VAL pair is any of:"
-msgstr ""
-
-#: scm-option.cc:128
-msgid "Unknown internal option!"
-msgstr ""
-
-#: score.cc:85
-msgid "Interpreting music..."
-msgstr "éÎÔÅÒÐÒÅÔÉÒÕÀ ÍÕÚÙËÕ..."
-
-#: score.cc:97
-msgid "Need music in a score"
-msgstr ""
-
-#. should we? hampers debugging.
-#: score.cc:111
-msgid "Errors found/*, not processing score*/"
-msgstr "îÁÊÄÅÎÙ ÏÛÉÂËÉ/*, ÎÅ ÏÂÒÁÂÁÔÙ×ÁÀ ÎÏÔÙ*/"
-
-#: score.cc:118
-#, c-format
-msgid "elapsed time: %.2f seconds"
-msgstr "ÚÁÔÒÁÞÅÎÎÏÅ ×ÒÅÍÑ: %.2f ÓÅËÕÎÄ"
-
-#: score-engraver.cc:99
-#, fuzzy, c-format
-msgid "can't find `%s'"
-msgstr "ÎÅ ÍÏÇÕ ÎÁÊÔÉ: `%s'"
-
-#: score-engraver.cc:100
-msgid "Fonts have not been installed properly.  Aborting"
-msgstr ""
-
-#: score-engraver.cc:205
-#, c-format
-msgid "unbound spanner `%s'"
-msgstr ""
-
-#: script-engraver.cc:90
-#, c-format
-msgid "Don't know how to interpret articulation `%s'"
-msgstr ""
-
-#. this shouldn't happen, but let's continue anyway.
-#: separation-item.cc:53 separation-item.cc:101
-#, fuzzy
-msgid "Separation_item:  I've been drinking too much"
-msgstr "Single_malt_grouping_item: Ñ ÌÉÛËÏÍ ÍÎÏÇÏ ×ÙÐÉÌ"
-
-#: simple-spacer.cc:248
-#, c-format
-msgid "No spring between column %d and next one"
-msgstr ""
-
-#: slur-engraver.cc:141
-msgid "unterminated slur"
-msgstr "ÎÅÚÁ×ÅÒÛÅÎÎÁÑ ÌÉÇÁ"
-
-#. How to shut up this warning, when Voice_devnull_engraver has
-#. eaten start event?
-#: slur-engraver.cc:159
-#, fuzzy
-msgid "can't find start of slur"
-msgstr "ÞÔÏ-ÔÏ ÎÅ ÎÁÊÄÕ ÎÁÞÁÌÏ ÇÒÕÐÐÉÒÏ×ËÉ ÛÔÉÌÅÊ"
-
-#: source-file.cc:67
-#, c-format
-msgid "Huh?  Got %d, expected %d characters"
-msgstr "èÍ... ðÏÌÕÞÉÌ %d, Á ÏÖÉÄÁÌ %d ÚÎÁËÏ×"
-
-#: spacing-spanner.cc:379
-#, c-format
-msgid "Global shortest duration is %s\n"
-msgstr ""
-
-#: spring-smob.cc:32
-#, c-format
-msgid "#<spring smob d= %f>"
-msgstr ""
-
-#: staff-symbol.cc:61
-msgid "staff symbol: indentation yields beyond end of line"
-msgstr ""
-
-#: stem.cc:118
-msgid "Weird stem size; check for narrow beams"
-msgstr ""
-
-#: stem.cc:611
-#, c-format
-msgid "flag `%s' not found"
-msgstr ""
-
-#: stem.cc:624
-#, c-format
-msgid "flag stroke `%s' not found"
-msgstr ""
-
-#: stem-engraver.cc:96
-msgid "tremolo duration is too long"
-msgstr ""
-
-#: stem-engraver.cc:124
-#, c-format
-msgid "Adding note head to incompatible stem (type = %d)"
-msgstr "äÏÂÁ×ÌÑÀ ÎÏÔÕ Ë ÎÅÓÏ×ÍÅÓÔÉÍÏÍÕ ÛÔÉÌÀ (ÔÉÐ = %d)"
-
-#: stem-engraver.cc:125
-msgid "Don't you want polyphonic voices instead?"
-msgstr ""
-
-#: streams.cc:34
-#, fuzzy, c-format
-msgid "can't create directory: `%s'"
-msgstr "ÎÅ ÍÏÇÕ ÎÁÊÔÉ ÉÌÉ ÓÏÚÄÁÔØ: `%s'"
-
-#: streams.cc:48
-msgid "Error syncing file (disk full?)"
-msgstr "ïÛÉÂËÁ ÓÉÎÈÒÏÎÉÚÁÃÉÉ ÆÁÊÌÁ (ÄÉÓË ÐÅÒÅÐÏÌÎÅÎ?)"
-
-#: system.cc:125
-#, c-format
-msgid "Element count %d."
-msgstr ""
-
-#: system.cc:372
-#, c-format
-msgid "Grob count %d "
-msgstr ""
-
-#: system.cc:386
-#, fuzzy
-msgid "Calculating line breaks..."
-msgstr "÷ÙÞÉÓÌÑÀ ÐÏÚÉÃÉÉ ÓÔÏÌÂÃÏ×"
-
-#: text-spanner-engraver.cc:81
-#, fuzzy
-msgid "can't find start of text spanner"
-msgstr "ÞÔÏ-ÔÏ ÎÅ ÎÁÊÄÕ ÎÁÞÁÌÏ ÇÒÕÐÐÉÒÏ×ËÉ ÛÔÉÌÅÊ"
-
-#: text-spanner-engraver.cc:95
-#, fuzzy
-msgid "already have a text spanner"
-msgstr "ÕÖÅ ÉÍÅÅÍ ÇÒÕÐÐÕ ÛÔÉÌÅÊ"
-
-#: text-spanner-engraver.cc:164
-#, fuzzy
-msgid "unterminated text spanner"
-msgstr "ÎÅÚÁ×ÅÒÛÅÎÎÙÊ ÒÁÓÛÉÒÉÔÅÌØ"
-
-#: tfm.cc:83
-#, fuzzy, c-format
-msgid "can't find ascii character: %d"
-msgstr "ÎÅ ÍÏÇÕ ÎÁÊÔÉ ÓÉÍ×ÏÌ ASCII: `%d'"
-
-#. Not using ngettext's plural feature here, as this message is
-#. more of a programming error.
-#: tfm-reader.cc:108
-#, c-format
-msgid "TFM header of `%s' has only %u word (s)"
-msgstr ""
-
-#: tfm-reader.cc:142
-#, c-format
-msgid "%s: TFM file has %u parameters, which is more than the %u I can handle"
-msgstr ""
-
-#: tie-performer.cc:159
-msgid "No ties were created!"
-msgstr ""
-
-#: time-scaled-music-iterator.cc:25
-msgid "no one to print a tuplet start bracket"
-msgstr ""
-
-#. If there is no such symbol, we default to the numbered style.
-#. (Here really with a warning!)
-#: time-signature.cc:87
-#, c-format
-msgid "time signature symbol `%s' not found; reverting to numbered style"
-msgstr ""
-
-#.
-#. Todo: should make typecheck?
-#.
-#. OTOH, Tristan Keuris writes 8/20 in his Intermezzi.
-#.
-#: time-signature-engraver.cc:57
-#, c-format
-msgid "Found strange time signature %d/%d."
-msgstr ""
-
-#: translator-ctors.cc:53
-#, c-format
-msgid "unknown translator: `%s'"
-msgstr ""
-
-#: translator-def.cc:105
-msgid "Program has no such type"
-msgstr ""
-
-#: translator-def.cc:111
-#, c-format
-msgid "Already contains: `%s'"
-msgstr "õÖÅ ÓÏÄÅÒÖÉÔ: `%s'"
-
-#: translator-def.cc:112
-#, c-format
-msgid "Not adding translator: `%s'"
-msgstr ""
-
-#: translator-def.cc:229
-#, c-format
-msgid "can't find: `%s'"
-msgstr "ÎÅ ÍÏÇÕ ÎÁÊÔÉ: `%s'"
-
-#: translator-group.cc:158
-#, c-format
-msgid "can't find or create `%s' called `%s'"
-msgstr ""
-
-#: translator-group.cc:230
-#, c-format
-msgid "can't find or create: `%s'"
-msgstr "ÎÅ ÍÏÇÕ ÎÁÊÔÉ ÉÌÉ ÓÏÚÄÁÔØ: `%s'"
-
-#: vaticana-ligature.cc:49
-msgid "ascending vaticana style flexa"
-msgstr ""
-
-#: vaticana-ligature.cc:219
-msgid "Vaticana_ligature:thickness undefined; assuming 1.4"
-msgstr ""
-
-#: vaticana-ligature.cc:233
-msgid "Vaticana_ligature:x-offset undefined; assuming 0.0"
-msgstr ""
-
-#: vaticana-ligature.cc:258
-msgid "Vaticana_ligature: (delta_pitch == 0)"
-msgstr ""
-
-#: vaticana-ligature.cc:271
-msgid "Vaticana_ligature:delta-pitch -> ignoring join"
-msgstr ""
-
-#: vaticana-ligature-engraver.cc:477
-#, c-format
-msgid "Vaticana_ligature_engraver: setting `spacing-increment = %f': ptr=%ul"
-msgstr ""
-
-#: volta-engraver.cc:112
-msgid "No volta spanner to end"
-msgstr ""
-
-#: volta-engraver.cc:123
-msgid "Already have a volta spanner.  Stopping that one prematurely."
-msgstr ""
-
-#: volta-engraver.cc:127
-msgid "Also have a stopped spanner.  Giving up."
-msgstr ""
-
-#: parser.yy:480
-msgid "Identifier should have alphabetic characters only"
-msgstr ""
-
-#: parser.yy:779
-msgid "More alternatives than repeats.  Junking excess alternatives."
-msgstr ""
-
-#: parser.yy:861 parser.yy:868
-msgid "pplycontext takes function argument"
-msgstr ""
-
-#: parser.yy:877
-msgid "Second argument must be a symbol"
-msgstr "÷ÔÏÒÏÊ ÁÒÇÕÍÅÎÔ ÄÏÌÖÅÎ ÂÙÔØ ÓÉÍ×ÏÌÏÍ"
-
-#: parser.yy:882
-msgid "First argument must be a procedure taking one argument"
-msgstr ""
-
-#: parser.yy:1009
-msgid "pply takes function argument"
-msgstr ""
-
-#: parser.yy:1501
-msgid "Expecting string as script definition"
-msgstr ""
-
-#: parser.yy:1598
-msgid "Expecting musical-pitch value"
-msgstr ""
-
-#: parser.yy:1609
-#, fuzzy
-msgid "Must have duration object"
-msgstr "ÕÓÔÁÎÏ×ÉÔØ ÎÁÉÍÅÎØÛÕÀ ÐÒÏÄÏÌÖÉÔÅÌØÎÏÓÔØ"
-
-#: parser.yy:1618 parser.yy:1626
-msgid "Have to be in Lyric mode for lyrics"
-msgstr "äÏÌÖÅÎ ÂÙÔØ × ìÉÒÉÞÅÓËÏÍ ÒÅÖÉÍÅ ÄÌÑ ÌÉÒÉËÉ"
-
-#: parser.yy:1798 parser.yy:1853
-#, c-format
-msgid "not a duration: %d"
-msgstr "ÎÅ ÐÒÏÄÏÌÖÉÔÅÌØÎÏÓÔØ: %d"
-
-#: parser.yy:1949
-msgid "Have to be in Note mode for notes"
-msgstr "äÏÌÖÅÎ ÂÙÔØ × îÏÔÎÏÍ ÒÅÖÉÍÅ ÄÌÑ ÎÏÔ"
-
-#: parser.yy:2032
-msgid "Have to be in Chord mode for chords"
-msgstr "äÏÌÖÅÎ ÂÙÔØ × áËËÏÒÄÎÏÍ ÒÅÖÉÍÅ ÄÌÑ ÁËËÏÒÄÏ×"
-
-#: parser.yy:2171
-msgid "need integer number arg"
-msgstr ""
-
-#: parser.yy:2316
-msgid "Suspect duration found following this beam"
-msgstr ""
-
-#: lexer.ll:186
-msgid "EOF found inside a comment"
-msgstr "ëÏÎÅà ÆÁÊÌÁ ×ÎÕÔÒÉ ËÏÍÍÅÎÔÁÒÉÑ"
-
-#: lexer.ll:200
-msgid "\\maininput disallowed outside init files"
-msgstr ""
-
-#: lexer.ll:224
-#, fuzzy, c-format
-msgid "wrong or undefined identifier: `%s'"
-msgstr "ÎÅÉÚ×ÅÓÔÎÁÑ ÍÅÔËÁ/ËÏÍÁÎÄÁ: `%s'"
-
-#. backup rule
-#: lexer.ll:233
-msgid "Missing end quote"
-msgstr "ïÔÓÕÔÓ×ÕÅÔ ÚÁËÌÀÞÉÔÅÌØÎÁÑ ËÁ×ÙÞËÁ"
-
-#. backup rule
-#: lexer.ll:255 lexer.ll:259
-msgid "white expected"
-msgstr "× ÔÏ ×ÒÅÍÑ ËÁË ÏÖÉÄÁÌÏÓØ"
-
-#: lexer.ll:268
-msgid "Can't evaluate Scheme in safe mode"
-msgstr "îÅ ÍÏÇÕ ×ÙÐÏÌÎÑÔØ ËÏÄ ÓÈÅÍÙ × ÂÅÚÏÐÁÓÎÏÍ ÒÅÖÉÍÅ"
-
-#: lexer.ll:397 lexer.ll:487
-msgid "Brace found at end of lyric.  Did you forget a space?"
-msgstr ""
-
-#: lexer.ll:574
-#, c-format
-msgid "invalid character: `%c'"
-msgstr "ÎÅ×ÅÒÎÙÊ ÓÉÍ×ÏÌ: `%c'"
-
-#: lexer.ll:651
-#, c-format
-msgid "unknown escaped string: `\\%s'"
-msgstr "ÎÅÉÚ×ÅÓÔÎÁÑ escape-ÐÏÓÌÅÄÏ×ÁÔÅÌØÎÏÓÔØ: `\\%s'"
-
-#: lexer.ll:742
-#, fuzzy, c-format
-msgid "Incorrect lilypond version: %s (%s, %s)"
-msgstr "ÎÅ×ÅÒÎÁÑ ×ÅÒÓÉÑ mudela: %s (%s, %s)"
-
-#: lexer.ll:743
-msgid "Consider updating the input with the convert-ly script"
-msgstr ""
-
-#, fuzzy
-#~ msgid "%r: release directory"
-#~ msgstr "ÎÅ ÍÏÇÕ ÎÁÊÔÉ ÉÌÉ ÓÏÚÄÁÔØ: `%s'"
-
-#, fuzzy
-#~ msgid "Listing `%s'..."
-#~ msgstr "÷ÙÂÒÁÓÙ×ÁÀ ÍÕÚÙËÕ: `%s'"
-
-#, fuzzy
-#~ msgid "Fetching `%s'..."
-#~ msgstr "÷ÙÂÒÁÓÙ×ÁÀ ÍÕÚÙËÕ: `%s'"
-
-#, fuzzy
-#~ msgid "Building `%s'..."
-#~ msgstr "÷ÙÂÒÁÓÙ×ÁÀ ÍÕÚÙËÕ: `%s'"
-
-#~ msgid "invalid subtraction: not part of chord: %s"
-#~ msgstr "ÎÅ×ÅÒÎÏÅ ×ÙÞÉÔÁÎÉÅ: ÎÅ ÞÁÓÔØ ÁËËÏÒÄÁ: %s"
-
-#~ msgid ", at "
-#~ msgstr ", ×"
-
-#, fuzzy
-#~ msgid "Putting slur over rest."
-#~ msgstr "ìÉÇÁ ÎÁÄ ÐÁÕÚÏÊ. éÇÎÏÒÉÒÕÀ."
-
-#~ msgid "Slur over rest?"
-#~ msgstr "ìÉÇÁ ÎÁÄ ÐÁÕÚÏÊ?"
-
-#~ msgid "Can't specify direction for this request"
-#~ msgstr "îÅ ÍÏÇÕ ÕËÁÚÁÔØ ÎÁÐÒÁ×ÌÅÎÉÅ ÄÌÑ ÜÔÏÇÏ ÚÁÐÒÏÓÁ"
-
-#~ msgid "can't map file"
-#~ msgstr "ÎÅ ÍÏÇÕ ÏÔÏÂÒÁÚÉÔØ ÆÁÊÌ × ÐÁÍÑÔØ"
-
-#~ msgid "This binary was compiled with the following options:"
-#~ msgstr "üÔÏÔ ÉÓÐÏÌÎÑÅÍÙÊ ÆÁÊÌ ÂÙÌ ÓÏÂÒÁÎ ÓÏ ÓÌÅÄÕÀÝÉÍÉ ÏÐÃÉÑÍÉ:"
-
-#~ msgid "EOF in a string"
-#~ msgstr "EOF × ÓÔÒÏËÅ"
-
-#~ msgid "<stdin>"
-#~ msgstr "<ÓÔÁÎÄÁÒÔÎÙÊ ××ÏÄ>"
-
-#~ msgid "programming error: "
-#~ msgstr "ÏÛÉÂËÁ ÐÒÏÇÒÁÍÍÉÒÏ×ÁÎÉÑ: "
-
-#~ msgid "can't find start of beam"
-#~ msgstr "ÞÔÏ-ÔÏ ÎÅ ÎÁÊÄÕ ÎÁÞÁÌÏ ÇÒÕÐÐÉÒÏ×ËÉ ÛÔÉÌÅÊ"
-
-#~ msgid "weird beam vertical offset"
-#~ msgstr "ÄÉËÏÅ ×ÅÒÔÉËÁÌØÎÏÅ ÓÍÅÝÅÎÉÅ ÇÒÕÐÐÉÒÏ×ËÉ ÛÔÉÌÅÊ"
-
-#, fuzzy
-#~ msgid "Scheme options:"
-#~ msgstr "ïÐÃÉÉ:"
-
-#, fuzzy
-#~ msgid "writing header field `%s' to `%s'..."
-#~ msgstr "úÁÐÉÓÙ×ÁÀ ÆÁÊÌ ÚÁ×ÉÓÉÍÏÓÔÅÊ: `%s'..."
-
-#~ msgid "#32 in quarter: %d"
-#~ msgstr "#32 × ÞÅÔ×ÅÒÔÎÏÊ: %d"
-
-#, fuzzy
-#~ msgid "LY output to `%s'..."
-#~ msgstr "×Ù×ÏÄ MIDI × %s..."
-
-#~ msgid "track %d:"
-#~ msgstr "ÄÏÒÏÖËÁ %d:"
-
-#~ msgid "Processing..."
-#~ msgstr "ïÂÒÁÂÁÔÙ×ÁÀ..."
-
-#~ msgid "Creating voices..."
-#~ msgstr "óÏÚÄÁÀ ÇÏÌÏÓÁ..."
-
-#~ msgid "track "
-#~ msgstr "ÄÏÒÏÖËÁ"
-
-#~ msgid "% MIDI copyright:"
-#~ msgstr "% MIDI copyright:"
-
-#~ msgid "% MIDI instrument:"
-#~ msgstr "% MIDI ÉÎÓÔÒÕÍÅÎÔ:"
-
-#~ msgid "lily indent level: %d"
-#~ msgstr "ÕÒÏ×ÅÎØ ÏÔÓÔÕÐÏ× lily: %d"
-
-#~ msgid "% Creator: "
-#~ msgstr "% óÏÚÄÁÔÅÌØ: "
-
-#~ msgid "% Automatically generated"
-#~ msgstr "% á×ÔÏÍÁÔÉÞÅÓËÉ ÓÇÅÎÅÒÉÒÏ×ÁÎÏ"
-
-#~ msgid "% from input file: "
-#~ msgstr "% ÉÚ ×ÈÏÄÎÏÇÏ ÆÁÊÌÁ: "
-
-#~ msgid "enable debugging output"
-#~ msgstr "×ËÌÀÞÉÔØ ×Ù×ÏÄ ÏÔÌÁÄÏÞÎÏÊ ÉÎÆÏÒÍÁÃÉÉ"
-
-#~ msgid "set FILE as default output"
-#~ msgstr "ÕÓÔÁÎÏ×ÉÔØ æáêì ÄÌÑ ×Ù×ÏÄÁ ÐÏ ÕÍÏÌÞÁÎÉÀ"
-
-#~ msgid "don't output tuplets"
-#~ msgstr "ÎÅ ×Ù×ÏÄÉÔØ ÓËÏÂÙ ÔÒÉÏÌÅÊ"
-
-#~ msgid "be quiet"
-#~ msgstr "ÂÙÔØ ÍÏÌÞÁÌÉ×ÙÍ"
-
-#, fuzzy
-#~ msgid "don't output rests or skips"
-#~ msgstr "ÎÅ ×Ù×ÏÄÉÔØ ÓËÏÂÙ ÔÒÉÏÌÅÊ"
-
-#~ msgid "set smallest duration"
-#~ msgstr "ÕÓÔÁÎÏ×ÉÔØ ÎÁÉÍÅÎØÛÕÀ ÐÒÏÄÏÌÖÉÔÅÌØÎÏÓÔØ"
-
-#~ msgid "don't timestamp the output"
-#~ msgstr "ÎÅ ÏÔÍÅÞÁÔØ ÄÁÔÕ É ×ÒÅÍÑ ×Ù×ÏÄÁ"
-
-#~ msgid "Usage: %s [OPTIONS]... [FILE]"
-#~ msgstr "éÓÐÏÌØÚÏ×ÁÎÉÅ: %s [ïðãéñ]... [æáêì]"
-
-#, fuzzy
-#~ msgid "Translate MIDI-file to lilypond"
-#~ msgstr "ôÒÁÎÓÌÉÒÏ×ÁÔØ MIDI-ÆÁÊÌ × mudela"
-
-#~ msgid "zero length string encountered"
-#~ msgstr "×ÓÔÒÅÔÉÌÁÓØ ÓÔÒÏËÁ ÎÕÌÅ×ÏÊ ÄÌÉÎÙ"
-
-#~ msgid "MIDI header expected"
-#~ msgstr "ÏÖÉÄÁÌÓÑ ÚÁÇÏÌÏ×ÏË MIDI"
-
-#~ msgid "invalid header length"
-#~ msgstr "ÎÅ×ÅÒÎÁÑ ÄÌÉÎÁ ÚÁÇÏÌÏ×ËÁ"
-
-#~ msgid "invalid MIDI format"
-#~ msgstr "ÎÅ×ÅÒÎÙÊ ÆÏÒÍÁÔ MIDI"
-
-#~ msgid "invalid number of tracks"
-#~ msgstr "ÎÅ×ÅÒÎÏÅ ÞÉÓÌÏ ÄÏÒÏÖÅË"
-
-#~ msgid "invalid running status"
-#~ msgstr "ÎÅ×ÅÒÎÙÊ ÓÔÁÔÕÓ ×ÙÐÏÌÎÅÎÉÑ"
-
-#~ msgid "unimplemented MIDI meta-event"
-#~ msgstr "ÎÅÐÏÄÄÅÒÖÉ×ÁÅÍÏÅ ÍÅÔÁ-ÓÏÂÙÔÉÅ MIDI"
-
-#~ msgid "invalid MIDI event"
-#~ msgstr "ÎÅ×ÅÒÎÏÅ ÓÏÂÙÔÉÅ MIDI"
-
-#~ msgid "MIDI track expected"
-#~ msgstr "ÏÖÉÄÁÌÁÓØ MIDI ÄÏÒÏÖËÁ"
-
-#~ 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'"
-
-#, fuzzy
-#~ msgid "NAME"
-#~ msgstr "ïóîï÷á"
-
-#, fuzzy
-#~ msgid "write output to NAME"
-#~ msgstr "ÚÁÐÉÓÙ×ÁÔØ ×Ù×ÏÄ × ïóîï÷á[-x].ÒÁÓÛÉÒÅÎÉÅ"
-
-#, fuzzy
-#~ msgid "write ouput to NAME"
-#~ msgstr "ÚÁÐÉÓÙ×ÁÔØ ×Ù×ÏÄ × ïóîï÷á[-x].ÒÁÓÛÉÒÅÎÉÅ"
-
-#~ msgid "not enough fields in Dstream init"
-#~ msgstr "ÎÅ ÄÏÓÔÁÔÏÞÎÏ ÐÏÌÅÊ × Dstream init"
-
-#~ msgid "floating point exception"
-#~ msgstr "ÉÓËÌÀÞÅÎÉÅ ÁÒÉÆÍÅÔÉËÉ Ó ÐÌÁ×ÁÀÝÅÊ ÚÁÐÑÔÏÊ"
-
-#~ msgid "can't 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: ÍÅÖÄÕÓÔÒÏÞÎÙÅ ÌÉÇÉ ÍÏÇÕÔ ÂÙÔØ "
-#~ "ÎÅ×ÅÒÎÙÍÉ"
-
-#~ 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 "Wrong type for property"
-#~ msgstr "îÅ×ÅÒÎÙÊ ÔÉÐ ÄÌÑ Ó×ÏÊÓÔ×Á"
-
-#~ msgid "too small"
-#~ msgstr "ÓÌÉÛËÏÍ ÍÁÌÏ"
-
-#~ msgid "Aborting"
-#~ msgstr "óÏ×ÅÒÛÁÀ ÈÁÒÁËÉÒÉ"
-
-#~ msgid "Non-matching braces in text `%s', adding braces"
-#~ msgstr "æÉÇÕÒÎÙÅ ÓËÏÂËÉ × ÔÅËÓÔÅ `%s' ÎÅ ÓÏ×ÐÁÄÁÀÔ, ÄÏÂÁ×ÌÑÀ ÓËÏÂËÉ"
-
-#~ msgid "Huh?  Not a Request: `%s'"
-#~ msgstr "á? îå úÁÐÒÏÓ: `%s'"
-
-#~ msgid "can't find both ends of %s"
-#~ msgstr "ÎÅ ÍÏÇÕ ÎÁÊÔÉ ÏÂÁ ËÏÎÃÁ Õ %s"
-
-#~ msgid "slur"
-#~ msgstr "ÌÉÇÁ"
-
-#~ msgid "No key name, assuming `C'"
-#~ msgstr "îÅÔ ÎÁÚ×ÁÎÉÑ ËÌÀÞÁ, ÐÏÄÒÁÚÕÍÅ×ÁÀ `C'"
-
-#~ msgid "out of tune:"
-#~ msgstr "×ÎÅ ÔÏÎÁÌØÎÏÓÔÉ:"
-
-#~ msgid "ignore mudela version"
-#~ msgstr "ÉÇÎÏÒÉÒÏ×ÁÔØ ×ÅÒÓÉÀ mudela"
-
-#~ msgid "unknown paper variable: `%s'"
-#~ msgstr "ÎÅÉÚ×ÅÓÔÎÁÑ ÐÅÒÅÍÅÎÎÁÑ ÂÕÍÁÇÉ: `%s'"
-
-#~ msgid "not a real variable"
-#~ msgstr "ÎÅ ÎÁÓÔÏÑÝÁÑ ÐÅÒÅÍÅÎÎÁÑ"
-
-#~ msgid "score does not have any columns"
-#~ msgstr "ÆÒÁÇÍÅÎÔ ÎÅ ÓÏÄÅÒÖÉÔ ÓÔÏÌÂÃÏ×"
-
-#~ msgid "can't find start of chord tremolo"
-#~ msgstr "ÎÅ ÎÁÊÄÕ ÎÁÞÁÌÏ ÔÒÅÍÏÌÏ ÁËËÏÒÄÁ"
-
-#~ msgid "already have a chord tremolo"
-#~ msgstr "ÕÖÅ ÉÍÅÅÍ ÔÒÅÍÏÌÏ ÁËËÏÒÄÁ"
-
-#~ msgid "redeclaration of `\\%s'"
-#~ msgstr "ÐÅÒÅÏÐÒÅÄÅÌÅÎÉÅ `\\%s'"
-
-#~ msgid "More than one music block"
-#~ msgstr "âÏÌÅÅ ÏÄÎÏÇÏ ÍÕÚÙËÁÌØÎÏÇÏ ÂÌÏËÁ"
-
-#~ msgid "can't put stem tremolo on tuplet"
-#~ msgstr "ÎÅ ÍÏÇÕ ÐÏÍÅÓÔÉÔØ ÛÔÉÌÅ×ÏÅ ÔÒÅÍÏÌÏ ÎÁ ÇÒÕÐÐÉÒÏ×ËÕ"
diff --git a/po/sv.po b/po/sv.po
deleted file mode 100644
index ddfb4ea873..0000000000
--- a/po/sv.po
+++ /dev/null
@@ -1,2623 +0,0 @@
-# Swedish translation of lilypond
-# Copyright (C) 2001, 2002 Free Software Foundation, Inc.
-# Martin Norbäck <d95mback@dtek.chalmers.se>, 2001, 2002, 2003.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: lilypond 1.7.26\n"
-"POT-Creation-Date: 2003-07-18 14:45+0200\n"
-"PO-Revision-Date: 2003-08-23 13:30+0200\n"
-"Last-Translator: Martin Norbäck <d95mback@dtek.chalmers.se>\n"
-"Language-Team: Swedish <sv@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=iso-8859-1\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#. this is where special info is often stored
-#. ###############################################################
-#. lilylib.py -- options and stuff
-#.
-#. source file of the GNU LilyPond music typesetter
-#.
-#. (c)  1998--2003  Han-Wen Nienhuys <hanwen@cs.uu.nl>
-#. Jan Nieuwenhuizen <janneke@gnu.org>
-#. ##  subst:\(^\|[^._a-z]\)\(abspath\|identify\|warranty\|progress\|warning\|error\|exit\|getopt_args\|option_help_str\|options_help_str\|help\|setup_temp\|read_pipe\|system\|cleanup_temp\|strip_extension\|cp_to_dir\|mkdir_p\|init\) *(
-#. ##  replace:\1ly.\2 (
-#. ## subst: \(help_summary\|keep_temp_dir_p\|option_definitions\|original_dir\|program_name\|pseudo_filter_p\|temp_dir\|verbose_p\)
-#. ###############################################################
-#. Users of python modules should include this snippet
-#. and customize variables below.
-#. We'll suffer this path init stuff as long as we don't install our
-#. python packages in <prefix>/lib/pythonx.y (and don't kludge around
-#. it as we do with teTeX on Red Hat Linux: set some environment var
-#. (PYTHONPATH) in profile)
-#. If set, LILYPONDPREFIX must take prevalence
-#. if datadir is not set, we're doing a build and LILYPONDPREFIX
-#. Customize these
-#. lilylib globals
-#: lilylib.py:60
-msgid "lilylib module"
-msgstr "lilylib-modul"
-
-# förklaring av flaggan -h
-#: lilylib.py:63 lilypond-book.py:131 lilypond.py:128 midi2ly.py:100
-#: mup2ly.py:75 main.cc:111
-msgid "this help"
-msgstr "denna hjälp"
-
-#. ###############################################################
-#. Handle bug in Python 1.6-2.1
-#.
-#. there are recursion limits for some patterns in Python 1.6 til 2.1.
-#. fix this by importing pre instead. Fix by Mats.
-#. Attempt to fix problems with limited stack size set by Python!
-#. Sets unlimited stack size. Note that the resource module only
-#. is available on UNIX.
-#: lilylib.py:114 midi2ly.py:136 mup2ly.py:130 main.cc:188 main.cc:200
-#, c-format, python-format
-msgid "Copyright (c) %s by"
-msgstr "Copyright © %s av"
-
-#: lilylib.py:114
-msgid " 1998--2003"
-msgstr " 1998-2003"
-
-#: lilylib.py:118
-msgid "Distributed under terms of the GNU General Public License."
-msgstr "Distribueras under GNU General Public License."
-
-#: lilylib.py:120
-msgid "It comes with NO WARRANTY."
-msgstr "INGEN GARANTI ges för programmet."
-
-#: lilylib.py:127 midi2ly.py:150 mup2ly.py:144 input.cc:88
-msgid "warning: "
-msgstr "varning: "
-
-#. lots of midi files use plain text for lyric events
-#. FIXME: read from stdin when files[0] = '-'
-#: lilylib.py:130 midi2ly.py:165 midi2ly.py:1018 midi2ly.py:1083 mup2ly.py:147
-#: mup2ly.py:161 input.cc:93
-msgid "error: "
-msgstr "fel: "
-
-#: lilylib.py:134
-#, python-format
-msgid "Exiting (%d)..."
-msgstr "Avslutar (%d)... "
-
-#: lilylib.py:194 midi2ly.py:224 mup2ly.py:220
-#, python-format
-msgid "Usage: %s [OPTION]... FILE"
-msgstr "Användning: %s [FLAGGA]... FIL"
-
-#: lilylib.py:198 midi2ly.py:228 mup2ly.py:224 main.cc:166
-msgid "Options:"
-msgstr "Flaggor:"
-
-#: lilylib.py:202 midi2ly.py:232 mup2ly.py:228 main.cc:172
-#, c-format, python-format
-msgid "Report bugs to %s"
-msgstr ""
-"Rapportera programfel till %s\n"
-"Rapportera fel i översättningen till <sv@li.org>"
-
-#: lilylib.py:228
-#, python-format
-msgid "Opening pipe `%s'"
-msgstr "Öppnar rör \"%s\"..."
-
-#. successful pipe close returns 'None'
-#: lilylib.py:240
-#, python-format
-msgid "`%s' failed (%d)"
-msgstr "\"%s\" misslyckades (%d)"
-
-#: lilylib.py:242 lilylib.py:289 lilypond-book.py:231 lilypond.py:512
-msgid "The error log is as follows:"
-msgstr "Felloggen är följande:"
-
-#: lilylib.py:262 midi2ly.py:260 mup2ly.py:256
-#, python-format
-msgid "Invoking `%s'"
-msgstr "Startar \"%s\""
-
-#: lilylib.py:264
-#, python-format
-msgid "Running %s..."
-msgstr "Kör %s..."
-
-#: lilylib.py:282
-#, python-format
-msgid "`%s' failed (%s)"
-msgstr "\"%s\" misslyckades (%s)"
-
-#: lilylib.py:285 midi2ly.py:266 mup2ly.py:264
-msgid "(ignored)"
-msgstr "(ignorerat)"
-
-# här är det fråga om rensning av en temporärkatalog
-#: lilylib.py:299 midi2ly.py:276 mup2ly.py:274
-#, python-format
-msgid "Cleaning %s..."
-msgstr "Rensar %s..."
-
-#. Duh.  Python style portable: cp *.EXT OUTDIR
-#. system ('cp *.%s %s' % (ext, outdir), 1)
-#. Python < 1.5.2 compatibility
-#.
-#. On most platforms, this is equivalent to
-#. `normpath(join(os.getcwd()), PATH)'.  *Added in Python version 1.5.2*
-#. tex needs lots of memory, more than it gets by default on Debian
-#. TODO: * prevent multiple addition.
-#. * clean TEXINPUTS, MFINPUTS, TFMFONTS,
-#. as these take prevalence over $TEXMF
-#. and thus may break tex run?
-#. $TEXMF is special, previous value is already taken care of
-#. # -sOutputFile does not work with bbox?
-#. # todo:
-#. # have better algorithm for deciding when to crop page,
-#. # and when to show full page
-#: lilylib.py:458
-msgid "Removing output file"
-msgstr "Tar bort utdatafilen"
-
-#. !@PYTHON@
-#. once upon a rainy monday afternoon.
-#.
-#. ...
-#.
-#. (not finished.)
-#. ABC standard v1.6:  http://www.gre.ac.uk/~c.walshaw/abc2mtex/abc.txt
-#.
-#. Enhancements  (Roy R. Rankin)
-#.
-#. Header section moved to top of lilypond file
-#. handle treble, treble-8, alto, and bass clef
-#. Handle voices (V: headers) with clef and part names, multiple voices
-#. Handle w: lyrics with multiple verses
-#. Handle key mode names for minor, major, phrygian, ionian, locrian, aeolian,
-#. mixolydian, lydian, dorian
-#. Handle part names from V: header
-#. Tuplets handling fixed up
-#. Lines starting with |: not discarded as header lines
-#. Multiple T: and C: header entries handled
-#. Accidental maintained until next bar check
-#. Silent rests supported
-#. articulations fermata, upbow, downbow, ltoe, accent, tenuto supported
-#. Chord strings([-^]"string") can contain a '#'
-#. Header fields enclosed by [] in notes string processed
-#. W: words output after tune as abc2ps does it (they failed before)
-#. Enhancements (Laura Conrad)
-#.
-#. Barring now preserved between ABC and lilypond
-#. the default placement for text in abc is above the staff.
-#. %%LY now supported.
-#. \breve and \longa supported.
-#. M:none doesn't crash lily.
-#. Limitations
-#.
-#. Multiple tunes in single file not supported
-#. Blank T: header lines should write score and open a new score
-#. Not all header fields supported
-#. ABC line breaks are ignored
-#. Block comments generate error and are ignored
-#. Postscript commands are ignored
-#. lyrics not resynchronized by line breaks (lyrics must fully match notes)
-#. %%LY slyrics can't be directly before a w: line.
-#. ???
-#. TODO:
-#.
-#. Convert to new chord styles.
-#.
-#. UNDEF -> None
-#.
-#. uGUHGUHGHGUGH
-#. UGH
-#. treble8 is used by abctab2ps; -8va is used by barfly,
-#. and by my patch to abc2ps. If there's ever a standard
-#. about this we'll support that.
-#. find keywork
-#. assume that Q takes the form "Q:1/4=120"
-#. There are other possibilities, but they are deprecated
-#. outf.write ("\t\t\\consists Staff_margin_engraver\n")
-#. pitch manipulation. Tuples are (name, alteration).
-#. 0 is (central) C. Alteration -1 is a flat, Alteration +1 is a sharp
-#. pitch in semitones.
-#. abc to lilypond key mode names
-#. semitone shifts for key mode names
-#. latex does not like naked #'s
-#. latex does not like naked "'s
-#. break lyrics to words and put "'s around words containing numbers and '"'s
-#. escape "
-#. _ causes probs inside ""
-#. _ to ' _ '
-#. split words with -
-#. unless \-
-#. ~ to space('_')
-#. * to to space
-#. latex does not like naked #'s
-#. put numbers and " and ( into quoted string
-#. insure space between lines
-#. title
-#. strip trailing blanks
-#. Meter
-#. KEY
-#. seperate clef info
-#. there may or may not be a space
-#. between the key letter and the mode
-#. ugh.
-#. ugh.
-#. Notes
-#. Origin
-#. Reference Number
-#. Area
-#. History
-#. Book
-#. Composer
-#. Default note length
-#. Voice
-#. Words
-#. vocals
-#. tempo
-#. we use in this order specified accidental, active accidental for bar,
-#. active accidental for key
-#. (num /  den)  / defaultlen < 1/base
-#. return (str, num,den,dots)
-#. ignore slide
-#. ignore roll
-#. s7m2 input doesnt care about spaces
-#.
-#. remember accidental for rest of bar
-#.
-#. get accidental set in this bar or UNDEF if not set
-#. WAT IS ABC EEN ONTZETTENDE PROGRAMMEERPOEP  !
-#. failed; not a note!
-#. escape '#'s
-#.
-#. |] thin-thick double bar line
-#. || thin-thin double bar line
-#. [| thick-thin double bar line
-#. :| left repeat
-#. |: right repeat
-#. :: left-right repeat
-#. |1 volta 1
-#. |2 volta 2
-#. first try the longer one
-#. bracket escape
-#. the nobarlines option is necessary for an abc to lilypond translator for
-#. exactly the same reason abc2midi needs it: abc requires the user to enter
-#. the note that will be printed, and MIDI and lilypond expect entry of the
-#. pitch that will be played.
-#.
-#. In standard 19th century musical notation, the algorithm for translating
-#. between printed note and pitch involves using the barlines to determine
-#. the scope of the accidentals.
-#.
-#. Since ABC is frequently used for music in styles that do not use this
-#. convention, such as most music written before 1700, or ethnic music in
-#. non-western scales, it is necessary to be able to tell a translator that
-#. the barlines should not affect its interpretation of the pitch.
-#. write other kinds of appending  if we ever need them.
-#. add comments to current voice
-#. Try nibbling characters off until the line doesn't change.
-#. dump_global (outf)
-#. !@PYTHON@
-#.
-#. convert-ly.py -- Update old LilyPond input files (fix name?)
-#.
-#. source file of the GNU LilyPond music typesetter
-#.
-#. (c)  1998--2003  Han-Wen Nienhuys <hanwen@cs.uu.nl>
-#. Jan Nieuwenhuizen <janneke@gnu.org>
-#. TODO
-#. use -f and -t for -s output
-#. NEWS
-#. 0.2
-#. - rewrite in python
-#. Did we ever have \mudela-version?  I doubt it.
-#. lilypond_version_re_str = '\\\\version *\"(.*)\"'
-#. ###########################
-#. need new a namespace
-#. raise FatalConversionError()
-#. need new a namespace
-#. harmful to current .lys
-#. str = re.sub ('\\\\key([^;]+);', '\\\\accidentals \\1;', str)
-#. raise FatalConversionError()
-#. raise FatalConversionError()
-#. raise FatalConversionError()
-#. TODO: lots of other syntax change should be done here as well
-#. Ugh, but meaning of \stemup changed too
-#. maybe we should do \stemup -> \stemUp\slurUp\tieUp ?
-#. I don't know exactly when these happened...
-#. ugh, we loose context setting here...
-#. (lacks capitalisation slur -> Slur)
-#. # dynamic..
-#. TODO: add lots of these
-#. ugh
-#. old fix
-#. Make sure groups of more than one ; have space before
-#. them, so that non of them gets removed by next rule
-#. Only remove ; that are not after spaces, # or ;
-#. Otherwise  we interfere with Scheme comments,
-#. which is badbadbad.
-#. 40 ?
-#. ###############################
-#. END OF CONVERSIONS
-#. ###############################
-#. !@PYTHON@
-#. info mostly taken from looking at files. See also
-#. http://lilypond.org/wiki/?EnigmaTransportFormat
-#. This supports
-#.
-#. * notes
-#. * rests
-#. * ties
-#. * slurs
-#. * lyrics
-#. * articulation
-#. * grace notes
-#. * tuplets
-#.
-#. todo:
-#. * slur/stem directions
-#. * voices (2nd half of frame?)
-#. * more intelligent lyrics
-#. * beams (better use autobeam?)
-#. * more robust: try entertainer.etf (freenote)
-#. * dynamics
-#. * empty measures (eg. twopt03.etf from freenote)
-#.
-#. uGUHGUHGHGUGH
-#. notename 0 == central C
-#. represent pitches as (notename, alteration), relative to C-major scale
-#. a fifth up
-#. should cache this.
-#. flag1 isn't all that interesting.
-#. 3: '>',
-#. 18: '\arpeggio' ,
-#. do grace notes.
-#. ugh.
-#. we don't attempt voltas since they fail easily.
-#. and g.repeat_bar == '|:' or g.repeat_bar == ':|:' or g.bracket:
-#. 4 layers.
-#. let's not do this: this really confuses when eE happens to be before  a ^text.
-#. if last_tag and last_indices:
-#. etf_file_dict[last_tag][last_indices].append (l)
-#. # do it
-#. staff-spec
-#. should use \addlyrics ?
-#. !@PYTHON@
-#. vim: set noexpandtab:
-#. This is was the idea for handling of comments:
-#. Multiline comments, @ignore .. @end ignore is scanned for
-#. in read_doc_file, and the chunks are marked as 'ignore', so
-#. lilypond-book will not touch them any more. The content of the
-#. chunks are written to the output file. Also 'include' and 'input'
-#. regex has to check if they are commented out.
-#.
-#. Then it is scanned for 'lilypond', 'lilypond-file' and 'lilypond-block'.
-#. These three regex's has to check if they are on a commented line,
-#. % for latex, @c for texinfo.
-#.
-#. Then lines that are commented out with % (latex) and @c (Texinfo)
-#. are put into chunks marked 'ignore'. This cannot be done before
-#. searching for the lilypond-blocks because % is also the comment character
-#. for lilypond.
-#.
-#. The the rest of the rexeces are searched for. They don't have to test
-#. if they are on a commented out line.
-#. ###############################################################
-#. Users of python modules should include this snippet
-#. and customize variables below.
-#. We'll suffer this path init stuff as long as we don't install our
-#. python packages in <prefix>/lib/pythonx.y (and don't kludge around
-#. it as we do with teTeX on Red Hat Linux: set some environment var
-#. (PYTHONPATH) in profile)
-#. If set, LILYPONDPREFIX must take prevalence
-#. if datadir is not set, we're doing a build and LILYPONDPREFIX
-#. Customize these
-#. if __name__ == '__main__':
-#. lilylib globals
-#. temp_dir = os.path.join (original_dir,  '%s.dir' % program_name)
-#. urg
-#. # FIXME
-#. # do -P or -p by default?
-#. #help_summary = _ ("Run LilyPond using LaTeX for titling")
-#: lilypond-book.py:120
-msgid "Process LilyPond snippets in hybrid html, LaTeX or texinfo document"
-msgstr "Bearbeta LilyPond-stycken i ett hybriddokument i html, LaTex eller texinfo"
-
-#. another bug in option parser: --output=foe is taken as an abbreviation
-#. for --output-format
-#: lilypond-book.py:125 main.cc:110
-msgid "EXT"
-msgstr "FMT"
-
-#: lilypond-book.py:125
-msgid "use output format EXT (texi [default], texi-html, latex, html)"
-msgstr "använd utdataformat FMT (texi [standard], texi-html, latex, html)"
-
-#: lilypond-book.py:126 lilypond-book.py:127 lilypond-book.py:129
-#: lilypond-book.py:130
-msgid "DIM"
-msgstr "DIM"
-
-#: lilypond-book.py:126
-msgid "default fontsize for music.  DIM is assumed to be in points"
-msgstr "standardtypsnittsstorlek för musik. DIM anges i punkter"
-
-#: lilypond-book.py:127
-msgid "deprecated, use --default-music-fontsize"
-msgstr "föråldrad, använd --default-music-fontsize"
-
-#: lilypond-book.py:128
-msgid "OPT"
-msgstr "OPT"
-
-#: lilypond-book.py:128
-msgid "pass OPT quoted to the lilypond command line"
-msgstr "skicka OPT till lilyponds kommandorad"
-
-#: lilypond-book.py:129
-msgid "force fontsize for all inline lilypond. DIM is assumed be to in points"
-msgstr "tvinga typsnittsstorlek för all inbäddad lilypond. DIM anger i punkter"
-
-#: lilypond-book.py:130
-msgid "deprecated, use --force-music-fontsize"
-msgstr "föråldrad, använd --force-music-fontsize"
-
-#: lilypond-book.py:132 lilypond.py:130 main.cc:113 main.cc:118
-msgid "DIR"
-msgstr "KATALOG"
-
-#: lilypond-book.py:132
-msgid "include path"
-msgstr "sökväg för inkluderade filer"
-
-#: lilypond-book.py:133
-msgid "write dependencies"
-msgstr "skriv beroenden"
-
-#: lilypond-book.py:134
-msgid "PREF"
-msgstr "PREF"
-
-#: lilypond-book.py:134
-msgid "prepend PREF before each -M dependency"
-msgstr "lägg till PREF före varje beroende angett med -M"
-
-#: lilypond-book.py:135
-msgid "don't run lilypond"
-msgstr "kör inte lilypond"
-
-#: lilypond-book.py:136
-msgid "don't generate pictures"
-msgstr "skapa inte bilder"
-
-#: lilypond-book.py:137
-msgid "strip all lilypond blocks from output"
-msgstr "ta bort alla lilypond-block från utdata"
-
-#: lilypond-book.py:138 lilypond-book.py:139 lilypond.py:135 lilypond.py:136
-#: midi2ly.py:102 main.cc:114 main.cc:117
-msgid "FILE"
-msgstr "FIL"
-
-#: lilypond-book.py:138
-msgid "filename main output file"
-msgstr "filnamn på huvudutdatafilen"
-
-#: lilypond-book.py:139
-msgid "where to place generated files"
-msgstr "var genererade filer ska läggas"
-
-#: lilypond-book.py:140 lilypond.py:137
-msgid "RES"
-msgstr "RES"
-
-#: lilypond-book.py:141 lilypond.py:138
-msgid "set the resolution of the preview to RES"
-msgstr "sätt resolutionen för förhandsgranskningen till RES"
-
-# Förklaring till --verbose (borde vara längre)
-#: lilypond-book.py:142 lilypond.py:148 midi2ly.py:105 mup2ly.py:78 main.cc:126
-msgid "verbose"
-msgstr "utförlig utdata"
-
-#: lilypond-book.py:143
-msgid "print version information"
-msgstr "visa versionsinformation"
-
-#: lilypond-book.py:144 lilypond.py:150 midi2ly.py:107 mup2ly.py:80 main.cc:127
-msgid "show warranty and copyright"
-msgstr "visa garanti och copyright"
-
-#. format specific strings, ie. regex-es for input, and % strings for output
-#. global variables
-#. lilypond_binary = 'valgrind --suppressions=/home/hanwen/usr/src/guile-1.6.supp  --num-callers=10 /home/hanwen/usr/src/lilypond/lily/out/lilypond'
-#. only use installed binary  when we're installed too.
-#. only use installed binary  when we're installed too.
-#. ###############################################################
-#. Dimension handling for LaTeX.
-#.
-#. Ugh.  (La)TeX writes progress and error messages on stdout
-#. Redirect to stderr
-#: lilypond-book.py:230
-msgid "LaTeX failed."
-msgstr "LaTeX misslyckades."
-
-#. URG see lilypond
-#. Convert numeric values, with or without specific dimension, to floats.
-#. Keep other strings
-#. ###############################################################
-#. How to output various structures.
-#. # maybe <hr> ?
-#. Verbatim text is always finished with \n.  FIXME: For HTML,
-#. this newline should be removed.
-#. Verbatim text is always finished with \n.  FIXME: For HTML,
-#. this newline should be removed.
-#. # Ugh we need to differentiate on origin:
-#. # lilypond-block origin wants an extra <p>, but
-#. # inline music doesn't.
-#. # possibly other center options?
-#. verbatim text is always finished with \n
-#. verbatim text is always finished with \n
-#. verbatim text is always finished with \n
-#. verbatim text is always finished with \n
-#. do some tweaking: @ is needed in some ps stuff.
-#.
-#. ugh, the <p> below breaks inline images...
-#. clumsy workaround for python 2.2 pre bug.
-#. ###############################################################
-#. Recognize special sequences in the input
-#. Warning: This uses extended regular expressions.  Tread with care.
-#.
-#. legenda
-#.
-#. (?P<name>regex) -- assign result of REGEX to NAME
-#. *? -- match non-greedily.
-#. (?m) -- multiline regex: make ^ and $ match at each line
-#. (?s) -- make the dot match all characters including newline
-#. why do we have distinction between @mbinclude and @include?
-#. # we'd like to catch and reraise a more
-#. # detailed error, but alas, the exceptions
-#. # changed across the 1.5/2.1 boundary.
-#. ughUGH not original options
-#. First we want to scan the \documentclass line
-#. it should be the first non-comment line.
-#. The only thing we really need to know about the \documentclass line
-#. is if there are one or two columns to begin with.
-#. Then we add everything before \begin{document} to
-#. paperguru.m_document_preamble so that we can later write this header
-#. to a temporary file in find_latex_dims() to find textwidth.
-#. this is not bulletproof..., it checks the first 10 chunks
-#. newchunks.extend (func (m))
-#. python 1.5 compatible:
-#. we have to check for verbatim before doing include,
-#. because we don't want to include files that are mentioned
-#. inside a verbatim environment
-#. ugh fix input
-#. # Hmm, we should hash only lilypond source, and skip the
-#. # %options are ...
-#. # comment line
-#. # todo: include path, but strip
-#. # first part of the path.
-#. format == 'html'
-#. ugh rename
-#. Count sections/chapters.
-#. # TODO: do something like
-#. # this for texinfo/latex as well ?
-#. ugh
-#. fixme: be sys-independent.
-#.
-#. Ugh, fixing up dependencies for .tex generation
-#.
-#. Ugh.  (La)TeX writes progress and error messages on stdout
-#. Redirect to stderr
-#. # There used to be code to write .tex dependencies, but
-#. # that is silly: lilypond-book has its own dependency scheme
-#. # to ensure that all lily-XXX.tex files are there
-#. # TODO: put file name in front of texidoc.
-#. #
-#. # what's this? Docme --hwn
-#. #
-#. #docme: why global?
-#. Do It.
-#. should chmod -w
-#: lilypond-book.py:1557 lilypond.py:673 midi2ly.py:1018
-#, python-format
-msgid "getopt says: `%s'"
-msgstr "getopt säger: \"%s\""
-
-#. HACK
-#. status = os.system ('lilypond -w')
-#: lilypond-book.py:1630 lilypond.py:777
-msgid "no files specified on command line"
-msgstr "inga filer angivna på kommandoraden"
-
-#.
-#. Petr, ik zou willen dat ik iets zinvoller deed,
-#. maar wat ik kan ik doen, het verandert toch niets?
-#. --hwn 20/aug/99
-#. !@PYTHON@
-#.
-#. lilypond.py -- Run LilyPond, add titles to bare score, generate printable
-#. document
-#. Invokes: lilypond, latex (or pdflatex), dvips, ps2pdf, gs
-#.
-#. source file of the GNU LilyPond music typesetter
-#.
-#. (c)  1998--2003  Han-Wen Nienhuys <hanwen@cs.uu.nl>
-#. Jan Nieuwenhuizen <janneke@gnu.org>
-#. This is the third incarnation of lilypond.
-#.
-#. Earlier incarnations of lilypond were written by
-#. Jeffrey B. Reed<daboys@austin.rr.com> (Python version)
-#. Jan Arne Fagertun <Jan.A.Fagertun@@energy.sintef.no> (Bourne shell script)
-#.
-#. Note: gettext work best if we use ' for docstrings and "
-#. for gettextable strings.
-#. --> DO NOT USE ''' for docstrings.
-#. ###############################################################
-#. Users of python modules should include this snippet
-#. and customize variables below.
-#. We'll suffer this path init stuff as long as we don't install our
-#. python packages in <prefix>/lib/pythonx.y (and don't kludge around
-#. it as we do with teTeX on Red Hat Linux: set some environment var
-#. (PYTHONPATH) in profile)
-#. If set, LILYPONDPREFIX must take prevalence
-#. if datadir is not set, we're doing a build and LILYPONDPREFIX
-#. Customize these
-#. if __name__ == '__main__':
-#. lilylib globals
-#. # FIXME
-#. # do -P or -p by default?
-#. #help_summary = _ ("Run LilyPond using LaTeX for titling")
-#: lilypond.py:121
-msgid "Run LilyPond, add titles, generate printable document"
-msgstr "Kör LilyPond, lägg till titlar, skapa utskrivbart dokument"
-
-#: lilypond.py:127 main.cc:115
-msgid "write Makefile dependencies for every input file"
-msgstr "skriv Makefile-beroenden för varje indatafil"
-
-#: lilypond.py:129
-msgid "print even more output"
-msgstr "skriv ännu mer utdata"
-
-#: lilypond.py:130
-msgid "add DIR to LilyPond's search path"
-msgstr "lägg till KATALOG till LilyPonds sökväg"
-
-# %s är programmets namn
-#: lilypond.py:132
-#, python-format
-msgid "keep all output, output to directory %s.dir"
-msgstr "behåll all utdata, utdata till katalogen %s.dir"
-
-#: lilypond.py:133
-msgid "don't run LilyPond"
-msgstr "kör inte LilyPond"
-
-#: lilypond.py:134 main.cc:116
-msgid "produce MIDI output only"
-msgstr "skapa enbart MIDI-utdata"
-
-#: lilypond.py:135 midi2ly.py:102
-msgid "write ouput to FILE"
-msgstr "skriv utdata till FIL"
-
-#: lilypond.py:136
-msgid "find pfa fonts used in FILE"
-msgstr "hitta pfa-typsnitt som används i FIL"
-
-#: lilypond.py:139
-msgid "generate PostScript output"
-msgstr "skapa PostScript-utdata"
-
-#: lilypond.py:140
-msgid "generate PNG page images"
-msgstr "skapa PNG-sidbilder"
-
-#: lilypond.py:141
-msgid "generate PS.GZ"
-msgstr "skapa PS.GZ"
-
-#: lilypond.py:142
-msgid "generate PDF output"
-msgstr "skapa PDF-utdata"
-
-#: lilypond.py:143
-msgid "use pdflatex to generate a PDF output"
-msgstr "använd pdflatex för att generera PDF-utdata"
-
-#. FIXME: preview, picture; to indicate creation of a PNG?
-#: lilypond.py:145
-msgid "make a picture of the first system"
-msgstr "skapa en bild av det första systemet"
-
-#: lilypond.py:146
-msgid "make HTML file with links to all output"
-msgstr "skapa en HTML-fil som länkar till all utdata"
-
-#: lilypond.py:147
-msgid "KEY=VAL"
-msgstr "NYCKEL=VÄRDE"
-
-#: lilypond.py:147
-msgid "change global setting KEY to VAL"
-msgstr "ändra global inställning NYCKEL till VÄRDE"
-
-#: lilypond.py:149 midi2ly.py:106 mup2ly.py:79 main.cc:125
-msgid "print version number"
-msgstr "visa versionsnummer"
-
-#. other globals
-#. Pdftex support
-#. # yuk.
-#. lilypond_binary = 'valgrind --suppressions=%(home)s/usr/src/guile-1.6.supp --num-callers=10 %(home)s/usr/src/lilypond/lily/out/lilypond '% { 'home' : '/home/hanwen' }
-#. only use installed binary  when we're installed too.
-#. init to empty; values here take precedence over values in the file
-#. # TODO: change name.
-#. for geometry v3
-#. Output formats that lilypond should create
-#. what a name.
-#. ly.warning (_ ("invalid value: %s") % `val`)
-#. ly.warning (_ ("invalid value: %s") % `val`)
-#: lilypond.py:232
-#, python-format
-msgid "no such setting: `%s'"
-msgstr "inställningen finns inte: \"%s\""
-
-#. 2 == user interrupt.
-#: lilypond.py:274
-#, python-format
-msgid "LilyPond crashed (signal %d)."
-msgstr "LilyPond kraschade (signal %d)."
-
-#: lilypond.py:275
-msgid "Please submit a bug report to bug-lilypond@gnu.org"
-msgstr "Skicka en buggrapport till bug-lilypond@gnu.org"
-
-#: lilypond.py:281
-#, python-format
-msgid "LilyPond failed on input file %s (exit status %d)"
-msgstr "LilyPond misslyckades på indatafilen \"%s\" (slutstatus %d)"
-
-#: lilypond.py:284
-#, python-format
-msgid "LilyPond failed on an input file (exit status %d)"
-msgstr "LilyPond misslyckades på en indatafil (slutstatus %d)"
-
-#: lilypond.py:285
-msgid "Continuing..."
-msgstr "Fortsätter..."
-
-#. urg
-#: lilypond.py:296
-#, python-format
-msgid "Analyzing %s..."
-msgstr "Analyserar %s..."
-
-#. search only the first 10k
-#: lilypond.py:354
-#, python-format
-msgid "no LilyPond output found for `%s'"
-msgstr "ingen LilyPond-utdata funnen för \"%s\""
-
-#. The final \n seems important here. It ensures that the footers and taglines end up on the right page.
-#. TODO: should set textheight (enlarge) depending on papersize.
-#: lilypond.py:397
-#, python-format
-msgid "invalid value: `%s'"
-msgstr "ogiltigt värde: \"%s\""
-
-#. set sane geometry width (a4-width) for linewidth = -1.
-#. who the hell is 597 ?
-#. Ugh.  (La)TeX writes progress and error messages on stdout
-#. Redirect to stderr
-#: lilypond.py:511
-msgid "LaTeX failed on the output file."
-msgstr "LaTeX misslyckades på utdatafilen."
-
-#. make a preview by rendering only the 1st line
-#. of each score
-#: lilypond.py:568
-msgid ""
-"Trying create PDF, but no PFA fonts found.\n"
-"Using bitmap fonts instead. This will look bad."
-msgstr ""
-"Försöker skapa PDF, men inga PFA-typsnitt hittades.\n"
-"Använder punkttypsnitt istället. Det kommer att se dåligt ut."
-
-#. ugh. Different targets?
-#. Added as functionality to lilypond, because lilypond may well need to do this
-#. in future too.
-#. no ps header?
-#: lilypond.py:615
-#, python-format
-msgid "not a PostScript file: `%s'"
-msgstr "inte en PostScript-fil: \"%s\""
-
-#. todo
-#: lilypond.py:660
-#, python-format
-msgid "Writing HTML menu `%s'"
-msgstr "Skriver HTML-meny \"%s\""
-
-#. signal programming error
-#. Don't convert input files to abspath, rather prepend '.' to include
-#. path.
-#. As a neat trick, add directory part of first input file
-#. to include path.  That way you can do without the clumsy -I in:
-#. lilypond -I foe/bar/baz foo/bar/baz/baz.ly
-#: lilypond.py:769
-msgid "pseudo filter"
-msgstr "pseudofilter"
-
-#: lilypond.py:772
-msgid "pseudo filter only for single input file"
-msgstr "pseudofilter bara för enstaka indatafil"
-
-#. Ugh, maybe make a setup () function
-#. hmmm. Wish I'd 've written comments when I wrote this.
-#. now it looks complicated.
-#: lilypond.py:806
-#, python-format
-msgid "filename should not contain spaces: `%s'"
-msgstr "filnamnet får inte innehålla mellanslag: \"%s\""
-
-#. to be sure, add tmpdir *in front* of inclusion path.
-#. os.environ['TEXINPUTS'] =  tmpdir + ':' + os.environ['TEXINPUTS']
-#. We catch all exceptions, because we need to do stuff at exit:
-#. * copy any successfully generated stuff from tempdir and
-#. notify user of that
-#. * cleanout tempdir
-#. ## ARGH. This also catches python programming errors.
-#. ## this should only catch lilypond nonzero exit  status
-#. ## --hwn
-#. TODO: friendly message about LilyPond setup/failing?
-#.
-#: lilypond.py:845
-msgid "Running LilyPond failed. Rerun with --verbose for a trace."
-msgstr "Misslyckades med att köra LilyPond. Kör igen med --verbose för spår."
-
-#. Our LilyPond pseudo filter always outputs to 'lelie'
-#. have subsequent stages and use 'lelie' output.
-#. unless: add --tex, or --latex?
-#. TODO: friendly message about TeX/LaTeX setup,
-#. trying to run tex/latex by hand
-#: lilypond.py:886
-msgid "Failed to make PS file. Rerun with --verbose for a trace."
-msgstr "Misslyckades med att skapa PS-fil. Kör med --verbose för spår."
-
-#. unless: add --tex, or --latex?
-#. TODO: friendly message about TeX/LaTeX setup,
-#. trying to run tex/latex by hand
-#: lilypond.py:916
-msgid "Running LaTeX falied. Rerun with --verbose for a trace."
-msgstr "Misslyckades med att köra LaTeX. Kör med --verbose för spår."
-
-# här är det fråga om skrivning till en fil
-#. add DEP to targets?
-#: lilypond.py:926 input-file-results.cc:68
-#, c-format, python-format
-msgid "dependencies output to `%s'..."
-msgstr "beroenden skrivna till \"%s\"..."
-
-# här är det fråga om skrivning till en fil (första parametern är t.ex
-# DVI, LATEX, MIDI, TEX)
-#: lilypond.py:937
-#, python-format
-msgid "%s output to <stdout>..."
-msgstr "%s skrivet till <stdout>..."
-
-#: lilypond.py:942 lilypond.py:968 includable-lexer.cc:57
-#: input-file-results.cc:191 input-file-results.cc:197 lily-guile.cc:86
-#, c-format, python-format
-msgid "can't find file: `%s'"
-msgstr "kan inte hitta fil: \"%s\""
-
-# här är det fråga om skrivning till en fil (första parametern är t.ex
-# DVI, LATEX, MIDI, TEX)
-#. Hmm, if this were a function, we could call it the except: clauses
-#: lilypond.py:965
-#, python-format
-msgid "%s output to %s..."
-msgstr "%s skrivet till \"%s\"..."
-
-#. !@PYTHON@
-#.
-#. midi2ly.py -- LilyPond midi import script
-#.
-#. source file of the GNU LilyPond music typesetter
-#.
-#. (c)  1998--2003  Han-Wen Nienhuys <hanwen@cs.uu.nl>
-#. Jan Nieuwenhuizen <janneke@gnu.org>
-#. ###############################################################
-#. Users of python modules should include this snippet.
-#.
-#. This soon to be removed for: import lilypond.lilylib as ly
-#. ###############################################################
-#. ###############################################################
-#. ############### CONSTANTS
-#. ###############################################################
-#. temp_dir = os.path.join (original_dir,  '%s.dir' % program_name)
-#. original_dir = os.getcwd ()
-#. keep_temp_dir_p = 0
-#: midi2ly.py:94
-msgid "Convert MIDI to LilyPond source"
-msgstr "Konvertera MIDI till LilyPond"
-
-#: midi2ly.py:97
-msgid "print absolute pitches"
-msgstr "skriv absoluta tonhöjder"
-
-#: midi2ly.py:98 midi2ly.py:103
-msgid "DUR"
-msgstr "LÄNGD"
-
-#: midi2ly.py:98
-msgid "quantise note durations on DUR"
-msgstr "kvantisera notlängder med LÄNGD"
-
-#: midi2ly.py:99
-msgid "print explicit durations"
-msgstr "skriv explicita notlängder"
-
-#: midi2ly.py:101
-msgid "ALT[:MINOR]"
-msgstr "TON[:MOLL]"
-
-#: midi2ly.py:101
-msgid "set key: ALT=+sharps|-flats; MINOR=1"
-msgstr "sätt tonart: TON=+höjningar|-sänkningar; MOLL=1"
-
-#: midi2ly.py:103
-msgid "quantise note starts on DUR"
-msgstr "kvantiser notstarter på LÄNGD"
-
-#: midi2ly.py:104
-msgid "DUR*NUM/DEN"
-msgstr "LÄNGD*TÄL/NÄM"
-
-#: midi2ly.py:104
-msgid "allow tuplet durations DUR*NUM/DEN"
-msgstr "tillåt tupellängder LÄNGD*TÄL/DEN"
-
-#: midi2ly.py:108
-msgid "treat every text as a lyric"
-msgstr "tolka all text som lyrik"
-
-#: midi2ly.py:136 mup2ly.py:130
-msgid " 2001--2003"
-msgstr " 2001-2003"
-
-#: midi2ly.py:141 mup2ly.py:135
-msgid ""
-"\n"
-"Distributed under terms of the GNU General Public License. It comes with\n"
-"NO WARRANTY."
-msgstr ""
-"\n"
-"Distribueras under GNU General Public License.\n"
-"INGEN GARANTI ges för programmet."
-
-#: midi2ly.py:166 mup2ly.py:162
-msgid "Exiting ... "
-msgstr "Avslutar... "
-
-#: midi2ly.py:264 mup2ly.py:261
-#, python-format
-msgid "command exited with value %d"
-msgstr "kommandot avslutade med värde %d"
-
-# här är det fråga om skrivning till en fil (första parametern är t.ex
-# DVI, LATEX, MIDI, TEX)
-#. ###############################################################
-#. END Library
-#. ###############################################################
-#. hmm
-#. major scale: do-do
-#. minor scale: la-la  (= + 5) '''
-#. By tradition, all scales now consist of a sequence
-#. of 7 notes each with a distinct name, from amongst
-#. a b c d e f g.  But, minor scales have a wide
-#. second interval at the top - the 'leading note' is
-#. sharped. (Why? it just works that way! Anything
-#. else doesn't sound as good and isn't as flexible at
-#. saying things. In medieval times, scales only had 6
-#. notes to avoid this problem - the hexachords.)
-#. So, the d minor scale is d e f g a b-flat c-sharp d
-#. - using d-flat for the leading note would skip the
-#. name c and duplicate the name d.  Why isn't c-sharp
-#. put in the key signature? Tradition. (It's also
-#. supposedly based on the Pythagorean theory of the
-#. cycle of fifths, but that really only applies to
-#. major scales...)  Anyway, g minor is g a b-flat c d
-#. e-flat f-sharp g, and all the other flat minor keys
-#. end up with a natural leading note. And there you
-#. have it.
-#. John Sankey <bf250@freenet.carleton.ca>
-#.
-#. Let's also do a-minor: a b c d e f gis a
-#.
-#. --jcn
-#. as -> gis
-#. des -> cis
-#. ges -> fis
-#. g -> fisis
-#. d -> cisis
-#. a -> gisis
-#. b -> ces
-#. e -> fes
-#. f -> eis
-#. c -> bis
-#. # FIXME: compile fix --jcn
-#. TODO: move space
-#. fis cis gis dis ais eis bis
-#. bes es as des ges ces fes
-#. urg, we should be sure that we're in a lyrics staff
-#. all include ALL_NOTES_OFF
-#. ugh, must set key while parsing
-#. because Note init uses key
-#. Better do Note.calc () at dump time?
-#. last_lyric.clocks = t - last_time
-#. hmm
-#. urg, this will barf at meter changes
-#. urg LilyPond doesn't start at c4, but
-#. remembers from previous tracks!
-#. reference_note = Note (clocks_per_4, 4*12, 0)
-#. must be in \notes mode for parsing \skip
-#: midi2ly.py:1002
-#, python-format
-msgid "%s output to `%s'..."
-msgstr "%s skrivet till \"%s\"..."
-
-#: midi2ly.py:1033
-msgid "Example:"
-msgstr "Exempel:"
-
-#: midi2ly.py:1083
-msgid "no files specified on command line."
-msgstr "inga filer angivna på kommandoraden."
-
-#. !@PYTHON@
-#. mup2ly.py -- mup input converter
-#.
-#. source file of the GNU LilyPond music typesetter
-#.
-#. (c) 2001
-#. if set, LILYPONDPREFIX must take prevalence
-#. if datadir is not set, we're doing a build and LILYPONDPREFIX
-#: mup2ly.py:70
-msgid "Convert mup to LilyPond source"
-msgstr "Konvertera mup till LilyPond"
-
-#: mup2ly.py:73
-msgid "debug"
-msgstr "felsökningsutdata"
-
-#: mup2ly.py:74
-msgid "define macro NAME [optional expansion EXP]"
-msgstr "definiera makro NAME [valfri makroersättning EXP]"
-
-#: mup2ly.py:76 main.cc:117
-msgid "write output to FILE"
-msgstr "skriv utdata till FIL"
-
-#: mup2ly.py:77
-msgid "only pre-process"
-msgstr "förbehandla enbart"
-
-#. Duh.  Python style portable: cp *.EXT OUTDIR
-#. system ('cp *.%s %s' % (ext, outdir), 1)
-#. Python < 1.5.2 compatibility
-#.
-#. On most platforms, this is equivalent to
-#. `normpath(join(os.getcwd()), PATH)'.  *Added in Python version 1.5.2*
-#. if set, LILYPONDPREFIX must take prevalence
-#. if datadir is not set, we're doing a build and LILYPONDPREFIX
-#. ###############################################################
-#. END Library
-#.
-#. PMX cut and paste
-#.
-#. if not self.entries:
-#. #return '\n'
-#. #ugh ugh
-#. return '\n%s = {}\n\n' % self.idstring ()
-#. ugh
-#. def set_clef (self, letter):
-#. clstr = clef_table[letter]
-#. self.voices[0].add_nonchord (Clef (clstr))
-#. urg
-#. maybe use import copy?
-#. for i in self.pitches:
-#. ch.pitches.append (i)
-#. for i in self.scripts:
-#. ch.scripts.append (i)
-#. http://www.arkkra.com/doc/uguide/contexts.html
-#. #self.current_staffs = []
-#. duh
-#. FIXME: 1?
-#. FIXME: does key play any role in this?
-#. ch = self.current_voices[0].last_chord ()
-#. ch.basic_duration = self.current_voices[0].last_chord ().basic_duration
-#. ugh
-#. ch = self.current_voices[0].last_chord ()
-#. `;' is not a separator, chords end with ';'
-#. mup resets default duration and pitch each bar
-#. ugh: these (and lots more) should also be parsed in
-#. context staff.  we should have a class Staff_properties
-#. and parse/set all those.
-#. shortcut: set to official mup maximum (duh)
-#. self.set_staffs (40)
-#: mup2ly.py:1076
-#, python-format
-msgid "no such context: %s"
-msgstr "omgivning finns inte: %s"
-
-#. hmm
-#. dig this: mup allows ifdefs inside macro bodies
-#. don't do nested multi-line defines
-#. duh: mup is strictly line-based, except for `define',
-#. which is `@' terminated and may span several lines
-#. don't define new macros in unactive areas
-#. To support nested multi-line define's
-#. process_function and macro_name, macro_body
-#. should become lists (stacks)
-#. The mup manual is undetermined on this
-#. and I haven't seen examples doing it.
-#.
-#. don't do nested multi-line define's
-#. writes to stdout for help2man
-#. don't call
-#. identify ()
-#. sys.stdout.flush ()
-#. handy emacs testing
-#. if not files:
-#. files = ['template.mup']
-#: mup2ly.py:1300
-#, python-format
-msgid "Processing `%s'..."
-msgstr "Behandlar \"%s\"..."
-
-#: mup2ly.py:1319
-#, python-format
-msgid "Writing `%s'..."
-msgstr "Skriver \"%s\"..."
-
-#: getopt-long.cc:146
-#, c-format
-msgid "option `%s' requires an argument"
-msgstr "flaggan \"%s\" kräver ett argument"
-
-#: getopt-long.cc:150
-#, c-format
-msgid "option `%s' doesn't allow an argument"
-msgstr "flaggan \"%s\" tillåter inget argument"
-
-#: getopt-long.cc:154
-#, c-format
-msgid "unrecognized option: `%s'"
-msgstr "okänd flagga: \"%s\""
-
-#: getopt-long.cc:161
-#, c-format
-msgid "invalid argument `%s' to option `%s'"
-msgstr "ogiltigt argument \"%s\" till flaggan \"%s\""
-
-#: warn.cc:25
-#, c-format
-msgid "warning: %s\n"
-msgstr "varning: %s\n"
-
-#: warn.cc:31
-#, c-format
-msgid "error: %s\n"
-msgstr "fel: %s\n"
-
-#: warn.cc:44
-#, c-format
-msgid "programming error: %s (Continuing; cross thumbs)\n"
-msgstr " programmeringsfel: %s (Fortsätter, håll tummarna)\n"
-
-#: accidental.cc:202 key-signature-interface.cc:137
-#, c-format
-msgid "accidental `%s' not found"
-msgstr "höjning/säkning \"%s\" hittades inte"
-
-#: accidental-engraver.cc:171 new-accidental-engraver.cc:238
-#, c-format
-msgid "Accidental typesetting list must begin with context-name: %s"
-msgstr "Lista av höjningar/säkningar måste börja med context-name: %s"
-
-#: accidental-engraver.cc:196 new-accidental-engraver.cc:263
-#, c-format
-msgid "unknown accidental typesetting: %s. Ignored"
-msgstr "okänd typsättning av höjning/sänkning: %s. Ignorered"
-
-#: accidental-engraver.cc:212 new-accidental-engraver.cc:279
-#, c-format
-msgid "Symbol is not a parent context: %s. Ignored"
-msgstr "Symbol är inte en föräldraomgivning: %s. Ignoreread"
-
-#: accidental-engraver.cc:215 new-accidental-engraver.cc:282
-#, c-format
-msgid "Accidental typesetting must be pair or context-name: %s"
-msgstr "Typsättning av höjning/sänkning måste vara par eller context-name: %s"
-
-#: afm.cc:66
-#, c-format
-msgid "can't find character number: %d"
-msgstr "kan inte hitta teckennummer: %d"
-
-#: afm.cc:81
-#, c-format
-msgid "can't find character called: `%s'"
-msgstr "kan inte hitta tecken som heter: \"%s\""
-
-#: afm.cc:142
-#, c-format
-msgid "Error parsing AFM file: `%s'"
-msgstr "Fel vid tolkning av AFM-fil: \"%s\""
-
-#: all-font-metrics.cc:95
-#, c-format
-msgid "checksum mismatch for font file: `%s'"
-msgstr "felaktig checksumma för typsnittsfil: \"%s\""
-
-#: all-font-metrics.cc:97
-#, c-format
-msgid "does not match: `%s'"
-msgstr "matchar inte: \"%s\""
-
-#: all-font-metrics.cc:102
-msgid " Rebuild all .afm files, and remove all .pk and .tfm files.  Rerun with -V to show font paths."
-msgstr " Bygg om alla .afm-filer, och ta bort alla .pk- och .tfm-filer. Kör igen med -V för att visa typsnittssökvägar."
-
-#: all-font-metrics.cc:103
-msgid ""
-"A script for removing font-files is delivered with the source-code,\n"
-"in buildscripts/clean-fonts.sh"
-msgstr ""
-"Ett skript för att ta bort typsnittsfiler levereras med källkoden,\n"
-"i buildscripts/clean-fonts.sh"
-
-#: all-font-metrics.cc:169
-#, c-format
-msgid "can't find font: `%s'"
-msgstr "kan inte hitta typsnitt: \"%s\""
-
-#: all-font-metrics.cc:170
-msgid "Loading default font"
-msgstr "Läser in standardtypsnitt"
-
-#: all-font-metrics.cc:185
-#, c-format
-msgid "can't find default font: `%s'"
-msgstr "kan inte hitta standardtypsnitt: \"%s\""
-
-#: all-font-metrics.cc:186 includable-lexer.cc:59 input-file-results.cc:192
-#, c-format
-msgid "(search path: `%s')"
-msgstr "(sökväg: \"%s\")"
-
-#: all-font-metrics.cc:187
-msgid "Giving up"
-msgstr "Ger upp"
-
-#: auto-change-iterator.cc:43 change-iterator.cc:60
-#: part-combine-music-iterator.cc:120
-msgid "Can't switch translators, I'm there already"
-msgstr "Kan inte byta översättare, jag är redan där"
-
-#: bar-check-iterator.cc:51
-#, c-format
-msgid "barcheck failed at: %s"
-msgstr "taktkontroll misslyckades vid: %s"
-
-#: beam.cc:146
-msgid "beam has less than two visible stems"
-msgstr "balk har mindre än två synliga skaft"
-
-#: beam.cc:151
-msgid "Beam has less than two stems. Removing beam."
-msgstr "Balk har mindre än två skaft. Tar bort balk."
-
-#: beam.cc:976
-msgid "Not sure that we can find a nice beam slope (no viable initial configuration found)."
-msgstr "Inte säker på att vi kan hitta en bra balklutning (ingen passande initialkonfiguration funnen)."
-
-#: beam-engraver.cc:176
-msgid "already have a beam"
-msgstr "har redan en balk"
-
-#: beam-engraver.cc:259
-msgid "unterminated beam"
-msgstr "oavslutad balk"
-
-#: beam-engraver.cc:292 chord-tremolo-engraver.cc:197
-msgid "stem must have Rhythmic structure"
-msgstr "skaft måste ha en rytmisk struktur"
-
-#: beam-engraver.cc:306
-msgid "stem doesn't fit in beam"
-msgstr "skaftet passar inte i balken"
-
-#: beam-engraver.cc:307
-msgid "beam was started here"
-msgstr "balken startade här"
-
-#: break-align-interface.cc:173
-#, c-format
-msgid "No spacing entry from %s to `%s'"
-msgstr "Ingen avståndsdata från %s till \"%s\""
-
-#: change-iterator.cc:22
-#, c-format
-msgid "can't change `%s' to `%s'"
-msgstr "kan inte ändra \"%s\" till \"%s\""
-
-#.
-#. We could change the current translator's id, but that would make
-#. errors hard to catch
-#.
-#. last->translator_id_string_  = get_change ()->change_to_id_string_;
-#.
-#: change-iterator.cc:79
-msgid "I'm one myself"
-msgstr "Jag är en själv"
-
-#: change-iterator.cc:82
-msgid "none of these in my family"
-msgstr "ingen av dessa i min familj"
-
-#: chord-tremolo-engraver.cc:98
-#, c-format
-msgid "Chord tremolo with %d elements. Must have two elements."
-msgstr "Ackordtremolo med %d element. Måste ha två element."
-
-#: chord-tremolo-engraver.cc:157
-msgid "unterminated chord tremolo"
-msgstr "icke avslutat ackordtremolo"
-
-#: chord-tremolo-iterator.cc:69
-msgid "no one to print a tremolos"
-msgstr "det finns ingen som kan skriva tremolon"
-
-#: clef.cc:64
-#, c-format
-msgid "clef `%s' not found"
-msgstr "klav \"%s\" hittades inte"
-
-#: cluster.cc:131
-#, c-format
-msgid "unknown cluster style `%s'"
-msgstr "okänd klusterstil: \"%s\""
-
-#: coherent-ligature-engraver.cc:84
-#, c-format
-msgid "gotcha: ptr=%ul"
-msgstr "fick dig: ptr=%ul"
-
-#: coherent-ligature-engraver.cc:96
-#, c-format
-msgid "distance=%f"
-msgstr "avstånd=%f"
-
-#: coherent-ligature-engraver.cc:139
-#, c-format
-msgid "Coherent_ligature_engraver: setting `spacing-increment = 0.01': ptr=%ul"
-msgstr "Coherent_ligature_engraver: sätter \"spacing-increment = 0.01\": ptr=%ul"
-
-#: custos.cc:92
-#, c-format
-msgid "custos `%s' not found"
-msgstr "custos \"%s\" hittades inte"
-
-#: dimensions.cc:13
-msgid "NaN"
-msgstr "-"
-
-#: dynamic-engraver.cc:204 span-dynamic-performer.cc:82
-msgid "can't find start of (de)crescendo"
-msgstr "kan inte hitta start på crescendo/diminuendo"
-
-#: dynamic-engraver.cc:216
-msgid "already have a crescendo"
-msgstr "har redan ett crescendo"
-
-#: dynamic-engraver.cc:217
-msgid "already have a decrescendo"
-msgstr "har redan ett diminuendo"
-
-#: dynamic-engraver.cc:220
-msgid "Cresc started here"
-msgstr "Cresc startade här"
-
-#: dynamic-engraver.cc:323
-msgid "unterminated (de)crescendo"
-msgstr "oavslutat crescendo/diminuendo"
-
-#: event.cc:49
-#, c-format
-msgid "Transposition by %s makes alteration larger than two"
-msgstr "Transponering med %s gör ändring större än två"
-
-#: event-chord-iterator.cc:76 output-property-music-iterator.cc:27
-#, c-format
-msgid "Junking event: `%s'"
-msgstr "Slänger händelse: \"%s\""
-
-#: extender-engraver.cc:94
-msgid "unterminated extender"
-msgstr "oavslutad utökare"
-
-#: extender-engraver.cc:106
-msgid "Nothing to connect extender to on the left.  Ignoring extender event."
-msgstr "Det finns inget att koppla utökaren mot till vänster. Ignorerar utökarhändelse."
-
-#: folded-repeat-iterator.cc:88
-msgid "no one to print a repeat brace"
-msgstr "det finns ingen som kan skriva ett repristecken"
-
-#: font-interface.cc:239
-msgid "couldn't find any font satisfying "
-msgstr "kunde inte hitta något typsnitt som uppfyller "
-
-#: glissando-engraver.cc:100
-msgid "Unterminated glissando."
-msgstr "Oavslutat glissando."
-
-#: gourlay-breaking.cc:188
-#, c-format
-msgid "Optimal demerits: %f"
-msgstr "Optimal demerit: %f"
-
-#: gourlay-breaking.cc:193
-msgid "No feasible line breaking found"
-msgstr "Ingen lämplig radbrytning hittades"
-
-#: gregorian-ligature-engraver.cc:59
-#, c-format
-msgid "\\%s ignored"
-msgstr "\\%s ignorerat"
-
-#: gregorian-ligature-engraver.cc:64
-#, c-format
-msgid "implied \\%s added"
-msgstr "implicit \\%s tillagt"
-
-#.
-#. Todo: do something sensible. The grob-pq-engraver is not water
-#. tight, and stuff like tupletSpannerDuration confuses it.
-#.
-#: grob-pq-engraver.cc:130
-#, c-format
-msgid ""
-"Skipped something?\n"
-"Grob %s ended before I expected it to end."
-msgstr ""
-"Skippade något?\n"
-"Grob %s slutade innan jag förväntade det."
-
-#: hairpin.cc:98
-msgid "decrescendo too small"
-msgstr "diminuendo för litet"
-
-#: hairpin.cc:99
-msgid "crescendo too small"
-msgstr "crescendo för litet"
-
-#: horizontal-bracket-engraver.cc:64
-msgid "Don't have that many brackets."
-msgstr "Har inte så många klamrar"
-
-#: horizontal-bracket-engraver.cc:73
-msgid "Conflicting note group events."
-msgstr "Motsägande notgrupphändelser."
-
-#: hyphen-engraver.cc:87
-msgid "unterminated hyphen"
-msgstr "oavslutat bindestreck"
-
-#: hyphen-engraver.cc:99
-msgid "Nothing to connect hyphen to on the left.  Ignoring hyphen event."
-msgstr "Det finns inget att koppla bindestrecket mot till vänster.  Ignorerar bindestreckshändelse."
-
-#: input.cc:99
-msgid "non fatal error: "
-msgstr "icke-fatalt fel: "
-
-#: input.cc:107 source-file.cc:146 source-file.cc:239
-msgid "position unknown"
-msgstr "okänd position"
-
-#: input-file-results.cc:72 source-file.cc:54 streams.cc:38
-#, c-format
-msgid "can't open file: `%s'"
-msgstr "kan inte öppna fil: \"%s\""
-
-#: input-file-results.cc:132
-msgid "Score contains errors; will not process it"
-msgstr "Partitur innehåller fel; kommer inte behandla det"
-
-#: input-file-results.cc:172
-#, c-format
-msgid "Now processing: `%s'"
-msgstr "Behandlar nu: \"%s\""
-
-#: key-performer.cc:96
-msgid "FIXME: key change merge"
-msgstr "FIXA: tonartsbytessammanslagning"
-
-#: kpath.cc:76
-#, c-format
-msgid "Kpathsea couldn't find TFM file `%s'"
-msgstr "Kpathsea kan inte hitta TFML-fil \"%s\""
-
-#: ligature-engraver.cc:159
-msgid "can't find start of ligature"
-msgstr "kan inte hitta start på ligatur"
-
-#: ligature-engraver.cc:165
-msgid "no right bound"
-msgstr "ingen högergräns"
-
-#: ligature-engraver.cc:191
-msgid "already have a ligature"
-msgstr "har redan en ligatur"
-
-#: ligature-engraver.cc:207
-msgid "no left bound"
-msgstr "ingen vänstergräns"
-
-#: ligature-engraver.cc:258
-msgid "unterminated ligature"
-msgstr "oavslutad ligatur"
-
-#: ligature-engraver.cc:282
-msgid "ligature may not contain rest; ignoring rest"
-msgstr "ligatur får inte innehålla paus; ignorerar paus"
-
-#: ligature-engraver.cc:283
-msgid "ligature was started here"
-msgstr "ligaturen startade här"
-
-#: lily-guile.cc:88
-#, c-format
-msgid "(load path: `%s')"
-msgstr "(inläsningssökväg: \"%s\""
-
-#: lily-guile.cc:576
-#, c-format
-msgid "Can't find property type-check for `%s' (%s)."
-msgstr "Kan inte hitta egenskapstypkontroll för \"%s\" (%s)"
-
-#: lily-guile.cc:579
-msgid "Perhaps you made a typing error?"
-msgstr "Kanske har du gjort ett skrivfel?"
-
-#: lily-guile.cc:585
-msgid "Doing assignment anyway."
-msgstr "Gör tilldelningen ändå."
-
-#: lily-guile.cc:599
-#, c-format
-msgid "Type check for `%s' failed; value `%s' must be of type `%s'"
-msgstr "Typkontroll för \"%s\" misslyckades. Värde \"%s\" måste ha typen \"%s\""
-
-#: lookup.cc:173
-msgid "round filled box horizontal extent smaller than blot; decreasing blot"
-msgstr "horisontell utbredning för rund fylld box mindre än blot; minskar blot"
-
-#: lookup.cc:178
-msgid "round filled box vertical extent smaller than blot; decreasing blot"
-msgstr "vertikal utbredning för rund fylld box mindre än blot; minskar blot"
-
-#: lyric-phrasing-engraver.cc:311
-msgid "lyrics found without any matching notehead"
-msgstr "sångtext hittad utan något matchande nothuvud"
-
-#: lyric-phrasing-engraver.cc:317
-msgid "Huh? Melismatic note found to have associated lyrics."
-msgstr "Öh? Melismatisk not har tillhörande sångtext."
-
-#: main.cc:106
-msgid "EXPR"
-msgstr "UTTR"
-
-#: main.cc:107
-msgid "set options, use -e '(ly-option-usage)' for help"
-msgstr "sätt inställningar, använd -e '(ly-option-usage)' för hjälp"
-
-#: main.cc:110
-msgid "use output format EXT"
-msgstr "använd utdataformat FMT"
-
-#: main.cc:112
-msgid "FIELD"
-msgstr "FÄLT"
-
-#: main.cc:112
-msgid "write header field to BASENAME.FIELD"
-msgstr "skriv rubrikfält till BASNAMN.FÄLT"
-
-#: main.cc:113
-msgid "add DIR to search path"
-msgstr "lägg till KATALOG till sökvägen"
-
-#: main.cc:114
-msgid "use FILE as init file"
-msgstr "använd FIL som init-fil"
-
-#: main.cc:118
-msgid "prepend DIR to dependencies"
-msgstr "lägg till KATALOG efter beroenden"
-
-#.
-#. should audit again.
-#.
-#: main.cc:123
-msgid "inhibit file output naming and exporting"
-msgstr "hindra namngivning av filutdata och exportering"
-
-#. No version number or newline here. It confuses help2man.
-#: main.cc:155
-#, c-format
-msgid "Usage: %s [OPTION]... FILE..."
-msgstr "Användning: %s [FLAGGA]... FIL..."
-
-#: main.cc:157
-msgid "Typeset music and or play MIDI from FILE"
-msgstr "Typsätt musik och/eller spela MIDI från FIL"
-
-#: main.cc:160
-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 är en musiktypsättare. Den producerar vackra noter från en\n"
-"högnivåbeskrivning av musiken i en fil. LilyPond är en del av\n"
-"GNU-projektet.\n"
-
-#: main.cc:182
-#, c-format
-msgid ""
-"This is free software.  It is covered by the GNU General Public License,\n"
-"and you are welcome to change it and/or distribute copies of it under\n"
-"certain conditions.  Invoke as `%s --warranty' for more information.\n"
-msgstr ""
-"Det här är fri programvara. Den täcks av \"GNU General Public License\",\n"
-"och du får ändra och/eller distribuera kopior av den under vissa\n"
-"villkor. Kör \"%s --warranty\" för mer information.\n"
-
-#: main.cc:198
-msgid "GNU LilyPond -- The music typesetter"
-msgstr "GNU Lilypond -- Musiktypsättaren"
-
-#: main.cc:206
-msgid ""
-"    This program is free software; you can redistribute it and/or\n"
-"modify it under the terms of the GNU General Public License version 2\n"
-"as published by the Free Software Foundation.\n"
-"\n"
-"    This program is distributed in the hope that it will be useful,\n"
-"but WITHOUT ANY WARRANTY; without even the implied warranty of\n"
-"MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU\n"
-"General Public License for more details.\n"
-"\n"
-"    You should have received a copy (refer to the file COPYING) of the\n"
-"GNU General Public License along with this program; if not, write to\n"
-"the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,\n"
-"USA.\n"
-msgstr ""
-"Detta program är fri programvara. Du kan distribuera det och/eller\n"
-"modifiera det under villkoren i GNU General Public License version 2\n"
-"publicerad av Free Software Foundation.\n"
-"\n"
-"Detta program distribueras i hopp om att det ska vara användbart, men\n"
-"UTAN NÅGON SOM HELST GARANTI, även utan underförstådd garanti om\n"
-"SÄLJBARHET eller LÄMPLIGHET FÖR NÅGOT SPECIELLT ÄNDAMÅL. Se GNU General\n"
-"Public License för ytterligare information.\n"
-"\n"
-"Du bör ha fått en kopia av GNU General Public License tillsammans med\n"
-"detta program. Om inte, skriv till Free Software Foundation, Inc.,\n"
-"59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.\n"
-
-#: mensural-ligature.cc:153
-#, c-format
-msgid "Mensural_ligature:thickness undefined on flexa %d; assuming 1.4"
-msgstr "Menural_ligature:thickness odefinierad för flexa %d; antar 1.4"
-
-#: mensural-ligature.cc:169
-#, c-format
-msgid "Mensural_ligature:delta-pitch undefined on flexa %d; assuming 0"
-msgstr "Menural_ligature:delta-pitch odefinierad för flexa %d; antar 0"
-
-#: mensural-ligature.cc:182
-#, c-format
-msgid "Mensural_ligature:flexa-width undefined on flexa %d; assuming 2.0"
-msgstr "Menural_ligature:flexa-width odefinierad för flexa %d; antar 2.0"
-
-#: mensural-ligature.cc:215
-msgid "Mensural_ligature:unexpected case fall-through"
-msgstr "Menural_ligature:föll igenom case oväntat"
-
-#: mensural-ligature.cc:225
-msgid "Mensural_ligature: (join_left == 0)"
-msgstr "Mensural_ligature: (join_left == 0)"
-
-#: mensural-ligature-engraver.cc:248 mensural-ligature-engraver.cc:397
-msgid "unexpected case fall-through"
-msgstr "föll igenom case oväntat"
-
-#: mensural-ligature-engraver.cc:259
-msgid "ligature with less than 2 heads -> skipping"
-msgstr "ligature med mindre än 2 huvuden -> skippar"
-
-#: mensural-ligature-engraver.cc:279
-msgid "can not determine pitch of ligature primitive -> skipping"
-msgstr "kan inte bestämma tonhöjd för ligaturprimitiv -> skippar"
-
-#: mensural-ligature-engraver.cc:302
-msgid "prime interval within ligature -> skipping"
-msgstr "primintervall inom ligatur -> skippar"
-
-#: mensural-ligature-engraver.cc:312
-msgid "mensural ligature: duration none of L, B, S -> skipping"
-msgstr "mensural ligature: längd ingen av L, B, S -> skippar"
-
-#: midi-item.cc:148
-#, c-format
-msgid "no such instrument: `%s'"
-msgstr "instrumentet finns inte: \"%s\""
-
-#: midi-item.cc:238
-msgid "silly duration"
-msgstr "tokig längd"
-
-#: midi-item.cc:251
-msgid "silly pitch"
-msgstr "tokig ton"
-
-#: music-output-def.cc:111
-#, c-format
-msgid "can't find `%s' context"
-msgstr "kan inte hitta omgivningen \"%s\""
-
-#: my-lily-lexer.cc:169
-#, c-format
-msgid "Identifier name is a keyword: `%s'"
-msgstr "Identifierarnamn är ett nyckelord: \"%s\""
-
-#: my-lily-lexer.cc:191
-#, c-format
-msgid "error at EOF: %s"
-msgstr "fel vid filslut: %s"
-
-#: my-lily-parser.cc:44
-msgid "Parsing..."
-msgstr "Tolkar..."
-
-#: my-lily-parser.cc:54
-msgid "Braces don't match"
-msgstr "Krullparenteser matchar inte"
-
-#.
-#. music for the softenon children?
-#.
-#: new-fingering-engraver.cc:143
-msgid "music for the martians."
-msgstr "musik för marsianerna."
-
-#: new-tie-engraver.cc:166 tie-engraver.cc:217
-msgid "lonely tie"
-msgstr "ensam båge"
-
-#: note-collision.cc:340
-msgid "Too many clashing notecolumns.  Ignoring them."
-msgstr "För många krockande notkolumner. Ignorerar dem."
-
-#: note-head.cc:127
-#, c-format
-msgid "note head `%s' not found"
-msgstr "nothuvud \"%s\" ej funnet"
-
-#: paper-def.cc:96
-#, c-format
-msgid "paper output to `%s'..."
-msgstr "pappersutdata till \"%s\"..."
-
-#: paper-score.cc:78
-#, c-format
-msgid "Element count %d (spanners %d) "
-msgstr "Elementantal %d (bryggare %d) "
-
-#: paper-score.cc:83
-msgid "Preprocessing graphical objects..."
-msgstr "Förbehandlar grafiska objekt..."
-
-#: paper-score.cc:116
-msgid "Outputting Score, defined at: "
-msgstr "Matar ut partitur, definierade vid: "
-
-#: parse-scm.cc:79
-msgid "GUILE signaled an error for the expression begining here"
-msgstr "GUILE gave ett fel för uttrycket som börjar här"
-
-#.
-#. We could change the current translator's id, but that would make
-#. errors hard to catch
-#.
-#. last->translator_id_string_  = get_change ()->change_to_id_string_;
-#.
-#: part-combine-music-iterator.cc:139
-#, c-format
-msgid "I'm one myself: `%s'"
-msgstr "Jag är en själv: \"%s\""
-
-#: part-combine-music-iterator.cc:142
-#, c-format
-msgid "none of these in my family: `%s'"
-msgstr "ingen av dessa i min familj: \"%s\""
-
-#: percent-repeat-engraver.cc:109
-msgid "Don't know how to handle a percent repeat of this length."
-msgstr "Vet inte hur en procentrepris av denna längd ska hanteras."
-
-#: percent-repeat-engraver.cc:163
-msgid "unterminated percent repeat"
-msgstr "oavslutad procentrepris"
-
-#: percent-repeat-iterator.cc:65
-msgid "no one to print a percent"
-msgstr "det finns ingen som kan skriva procent"
-
-#: performance.cc:51
-msgid "Track ... "
-msgstr "Spår... "
-
-#: performance.cc:83
-msgid "Creator: "
-msgstr "Skapare: "
-
-#: performance.cc:103
-msgid "at "
-msgstr "vid "
-
-#: performance.cc:114
-#, c-format
-msgid "from musical definition: %s"
-msgstr "från musikdefinition: %s"
-
-#: performance.cc:169
-#, c-format
-msgid "MIDI output to `%s'..."
-msgstr "MIDI-utdata till \"%s\"..."
-
-#: phrasing-slur-engraver.cc:123
-msgid "unterminated phrasing slur"
-msgstr "oavslutad fraseringsbåge"
-
-#: phrasing-slur-engraver.cc:141
-msgid "can't find start of phrasing slur"
-msgstr "kan inte hitta start på fraseringsbåge"
-
-#: piano-pedal-engraver.cc:235 piano-pedal-engraver.cc:250
-#: piano-pedal-engraver.cc:305 piano-pedal-performer.cc:82
-#, c-format
-msgid "can't find start of piano pedal: `%s'"
-msgstr "kan inte hitta start på pianopedal: \"%s\""
-
-#: piano-pedal-engraver.cc:410
-msgid "unterminated pedal bracket"
-msgstr "oavslutad pedalklammer"
-
-#: property-iterator.cc:97
-#, c-format
-msgid "Not a grob name, `%s'."
-msgstr "Inte ett grob-namn, \"%s\"."
-
-#: rest.cc:139
-#, c-format
-msgid "rest `%s' not found, "
-msgstr "paus \"%s\" hittades inte, "
-
-#: rest-collision.cc:199
-msgid "too many colliding rests"
-msgstr "för många krockande pauser"
-
-#: scm-option.cc:45
-msgid "lilypond -e EXPR means:"
-msgstr "lilypond -e UTTR betyder:"
-
-#: scm-option.cc:47
-msgid "  Evalute the Scheme EXPR before parsing any .ly files."
-msgstr "  Evaluera Scheme-uttrycket UTTR innan någon .ly-fil läses in."
-
-#: scm-option.cc:49
-msgid "  Multiple -e options may be given, they will be evaluated sequentially."
-msgstr "  Flera -e kan ges, de kommer att evalueras i tur och ordning."
-
-#: scm-option.cc:51
-msgid "  The function ly-set-option allows for access to some internal variables."
-msgstr "  Funktionen ly-set-option ger åtkomst till några interna variabler."
-
-#: scm-option.cc:53
-msgid "Usage: lilypond -e \"(ly-set-option SYMBOL VAL)\""
-msgstr "Användning: lilpond -e \"(ly-set-option SYMBOL VÄRDE)\""
-
-#: scm-option.cc:55
-msgid "Where SYMBOL VAL pair is any of:"
-msgstr "Där paret SYMBOL VÄRDE är något av:"
-
-#: scm-option.cc:128
-msgid "Unknown internal option!"
-msgstr "Okänd internt alternativ!"
-
-#: score.cc:85
-msgid "Interpreting music..."
-msgstr "Tolkar musik..."
-
-#: score.cc:97
-msgid "Need music in a score"
-msgstr "Behöver musik i partitur"
-
-#. should we? hampers debugging.
-#: score.cc:111
-msgid "Errors found/*, not processing score*/"
-msgstr "Fel funna/*, behandlar inte partitur*/"
-
-#: score.cc:118
-#, c-format
-msgid "elapsed time: %.2f seconds"
-msgstr "tidsåtgång: %.2f sekunder"
-
-#: score-engraver.cc:99
-#, c-format
-msgid "can't find `%s'"
-msgstr "kan inte hitta \"%s\""
-
-#: score-engraver.cc:100
-msgid "Fonts have not been installed properly.  Aborting"
-msgstr "Typsnitten är inte korrekt installerade. Avbryter"
-
-#: score-engraver.cc:205
-#, c-format
-msgid "unbound spanner `%s'"
-msgstr "obunden bryggare \"%s\""
-
-#: script-engraver.cc:90
-#, c-format
-msgid "Don't know how to interpret articulation `%s'"
-msgstr "Kan inte tolka artikulering \"%s\""
-
-#. this shouldn't happen, but let's continue anyway.
-#: separation-item.cc:53 separation-item.cc:101
-msgid "Separation_item:  I've been drinking too much"
-msgstr "Separation_item: Jag har druckit för mycket"
-
-#: simple-spacer.cc:248
-#, c-format
-msgid "No spring between column %d and next one"
-msgstr "Ingen fjäder mellan kolumn %d och nästa"
-
-#: slur-engraver.cc:141
-msgid "unterminated slur"
-msgstr "oavslutad båge"
-
-#. How to shut up this warning, when Voice_devnull_engraver has
-#. eaten start event?
-#: slur-engraver.cc:159
-msgid "can't find start of slur"
-msgstr "kan inte hitta start på båge"
-
-#: source-file.cc:67
-#, c-format
-msgid "Huh?  Got %d, expected %d characters"
-msgstr "Öh? Fick %d, väntade %d tecken"
-
-#: spacing-spanner.cc:379
-#, c-format
-msgid "Global shortest duration is %s\n"
-msgstr "Globalt kortaste längd är %s\n"
-
-#: spring-smob.cc:32
-#, c-format
-msgid "#<spring smob d= %f>"
-msgstr "#<spring smob d= %f>"
-
-#: staff-symbol.cc:61
-msgid "staff symbol: indentation yields beyond end of line"
-msgstr "staff symbol: indentering ger vika innan radslut"
-
-#: stem.cc:118
-msgid "Weird stem size; check for narrow beams"
-msgstr "Konstig skaftstorlek; kolla efter smala balkar"
-
-#: stem.cc:611
-#, c-format
-msgid "flag `%s' not found"
-msgstr "flaggan \"%s\" hittades ej"
-
-#: stem.cc:624
-#, c-format
-msgid "flag stroke `%s' not found"
-msgstr "flaggstrecket \"%s\" hittades inte"
-
-#: stem-engraver.cc:96
-msgid "tremolo duration is too long"
-msgstr "tremololängd är för lång"
-
-#: stem-engraver.cc:124
-#, c-format
-msgid "Adding note head to incompatible stem (type = %d)"
-msgstr "Lägger till nothuvud till inkompatibel båge (typ = %d)"
-
-#: stem-engraver.cc:125
-msgid "Don't you want polyphonic voices instead?"
-msgstr "Vill du ha polyfoniska stämmor istället?"
-
-#: streams.cc:34
-#, c-format
-msgid "can't create directory: `%s'"
-msgstr "kan inte skapa katalog: \"%s\""
-
-#: streams.cc:48
-msgid "Error syncing file (disk full?)"
-msgstr "Fel vid synkning av fil (disken full?)"
-
-#: system.cc:125
-#, c-format
-msgid "Element count %d."
-msgstr "Elementantal %d."
-
-#: system.cc:372
-#, c-format
-msgid "Grob count %d "
-msgstr "Elementantal %d "
-
-#: system.cc:386
-msgid "Calculating line breaks..."
-msgstr "Beräknar radbrytningar..."
-
-#: text-spanner-engraver.cc:81
-msgid "can't find start of text spanner"
-msgstr "kan inte hitta start på textbryggare"
-
-#: text-spanner-engraver.cc:95
-msgid "already have a text spanner"
-msgstr "har redan en textbryggare"
-
-#: text-spanner-engraver.cc:164
-msgid "unterminated text spanner"
-msgstr "oavslutad textbryggare"
-
-#: tfm.cc:83
-#, c-format
-msgid "can't find ascii character: %d"
-msgstr "kan inte hitta ASCII-tecken: %d"
-
-#. Not using ngettext's plural feature here, as this message is
-#. more of a programming error.
-#: tfm-reader.cc:108
-#, c-format
-msgid "TFM header of `%s' has only %u word (s)"
-msgstr "TFM-rubrik i \"%s\" har bara %u ord"
-
-#: tfm-reader.cc:142
-#, c-format
-msgid "%s: TFM file has %u parameters, which is more than the %u I can handle"
-msgstr "%s: TFM-fil har %u parametrar, vilket är mer än de %u jag kan hantera"
-
-#: tie-performer.cc:159
-msgid "No ties were created!"
-msgstr "Inga bågar skapades!"
-
-#: time-scaled-music-iterator.cc:25
-msgid "no one to print a tuplet start bracket"
-msgstr "det finns ingen som kan skriva en starthake för tupel"
-
-#. If there is no such symbol, we default to the numbered style.
-#. (Here really with a warning!)
-#: time-signature.cc:87
-#, c-format
-msgid "time signature symbol `%s' not found; reverting to numbered style"
-msgstr "tidssignatursymbol \"%s\" hittades inte: återgår till numrerad stil"
-
-#.
-#. Todo: should make typecheck?
-#.
-#. OTOH, Tristan Keuris writes 8/20 in his Intermezzi.
-#.
-#: time-signature-engraver.cc:57
-#, c-format
-msgid "Found strange time signature %d/%d."
-msgstr "Hittade underlig tidssignatur %d/%d"
-
-#: translator-ctors.cc:53
-#, c-format
-msgid "unknown translator: `%s'"
-msgstr "okänd översättare: \"%s\""
-
-#: translator-def.cc:105
-msgid "Program has no such type"
-msgstr "Programmet har ingen sådan typ"
-
-#: translator-def.cc:111
-#, c-format
-msgid "Already contains: `%s'"
-msgstr "Innehåller redan: \"%s\""
-
-#: translator-def.cc:112
-#, c-format
-msgid "Not adding translator: `%s'"
-msgstr "Lägger inte till översättare: \"%s\""
-
-#: translator-def.cc:229
-#, c-format
-msgid "can't find: `%s'"
-msgstr "kan inte hitta: \"%s\""
-
-#: translator-group.cc:158
-#, c-format
-msgid "can't find or create `%s' called `%s'"
-msgstr "kan inte hitta eller skapa \"%s\" kallad \"%s\""
-
-#: translator-group.cc:230
-#, c-format
-msgid "can't find or create: `%s'"
-msgstr "kan inte hitta eller skapa: \"%s\""
-
-#: vaticana-ligature.cc:49
-msgid "ascending vaticana style flexa"
-msgstr "ökande vatikan-stil-flexa"
-
-#: vaticana-ligature.cc:219
-msgid "Vaticana_ligature:thickness undefined; assuming 1.4"
-msgstr "Vaticana_ligature:thickness odefinierad; antar 1.4"
-
-#: vaticana-ligature.cc:233
-msgid "Vaticana_ligature:x-offset undefined; assuming 0.0"
-msgstr "Vaticana_ligature:x-offset odefinierad; antar 0.0"
-
-#: vaticana-ligature.cc:258
-msgid "Vaticana_ligature: (delta_pitch == 0)"
-msgstr "Vaticana_ligature: (delta_pitch == 0)"
-
-#: vaticana-ligature.cc:271
-msgid "Vaticana_ligature:delta-pitch -> ignoring join"
-msgstr "Vaticana_ligature:delta_pitch -> ignorerar join"
-
-#: vaticana-ligature-engraver.cc:477
-#, c-format
-msgid "Vaticana_ligature_engraver: setting `spacing-increment = %f': ptr=%ul"
-msgstr "Vaticana_ligature_engraver: sätter `spacing-increment = %f': ptr=%ul"
-
-#: volta-engraver.cc:112
-msgid "No volta spanner to end"
-msgstr "Ingen reprisbryggare till slutet"
-
-#: volta-engraver.cc:123
-msgid "Already have a volta spanner.  Stopping that one prematurely."
-msgstr "Har redan en reprisbryggare. Stoppar den tidigare."
-
-#: volta-engraver.cc:127
-msgid "Also have a stopped spanner.  Giving up."
-msgstr "Har också en stoppad bryggare. Ger upp."
-
-#: parser.yy:480
-msgid "Identifier should have alphabetic characters only"
-msgstr "Identifierare ska bara innehålla alfabetiska tecken"
-
-#: parser.yy:779
-msgid "More alternatives than repeats.  Junking excess alternatives."
-msgstr "Fler alternativ än repriser. Slänger överblivna alternativ."
-
-#: parser.yy:861 parser.yy:868
-msgid "pplycontext takes function argument"
-msgstr ""
-
-#: parser.yy:877
-msgid "Second argument must be a symbol"
-msgstr "Andra argumentet måste vara en symbol"
-
-#: parser.yy:882
-msgid "First argument must be a procedure taking one argument"
-msgstr "Första argumentet måste vara en procedur som tar 1 argument"
-
-#: parser.yy:1009
-msgid "pply takes function argument"
-msgstr ""
-
-#: parser.yy:1501
-msgid "Expecting string as script definition"
-msgstr "Väntade sträng som skriptdefinition"
-
-#: parser.yy:1598
-msgid "Expecting musical-pitch value"
-msgstr "Väntade notvärde"
-
-#: parser.yy:1609
-msgid "Must have duration object"
-msgstr "Måste ha längdobjekt"
-
-#: parser.yy:1618 parser.yy:1626
-msgid "Have to be in Lyric mode for lyrics"
-msgstr "Måste vara i textläge (Lyric mode) för sångtext"
-
-#: parser.yy:1798 parser.yy:1853
-#, c-format
-msgid "not a duration: %d"
-msgstr "inte en längd: %d"
-
-#: parser.yy:1949
-msgid "Have to be in Note mode for notes"
-msgstr "Måste vara i notläge (Note mode) för noter"
-
-#: parser.yy:2032
-msgid "Have to be in Chord mode for chords"
-msgstr "Måste vara i ackordläge (Chord mode) för ackord"
-
-#: parser.yy:2171
-msgid "need integer number arg"
-msgstr "behöver heltalsargument"
-
-#: parser.yy:2316
-msgid "Suspect duration found following this beam"
-msgstr "Misstänkt längd hittad efter denna balk"
-
-#: lexer.ll:186
-msgid "EOF found inside a comment"
-msgstr "filslut hittat inuti en kommentar"
-
-#: lexer.ll:200
-msgid "\\maininput disallowed outside init files"
-msgstr "\\maininput förbjudet utanför init-filer"
-
-#: lexer.ll:224
-#, c-format
-msgid "wrong or undefined identifier: `%s'"
-msgstr "felaktig eller odefinierad identifierare: \"%s\""
-
-#. backup rule
-#: lexer.ll:233
-msgid "Missing end quote"
-msgstr "Saknat slutcitationstecken"
-
-#. backup rule
-#: lexer.ll:255 lexer.ll:259
-msgid "white expected"
-msgstr "väntade tomrum"
-
-#: lexer.ll:268
-msgid "Can't evaluate Scheme in safe mode"
-msgstr "Kan inte evaluera Scheme i säkert läge"
-
-#: lexer.ll:397 lexer.ll:487
-msgid "Brace found at end of lyric.  Did you forget a space?"
-msgstr "Krullparentes funnen i slutet på sångtext. Glömde du ett mellanslag?"
-
-#: lexer.ll:574
-#, c-format
-msgid "invalid character: `%c'"
-msgstr "ogiltigt tecken: \"%c\""
-
-#: lexer.ll:651
-#, c-format
-msgid "unknown escaped string: `\\%s'"
-msgstr "okänd \"escaped\" sträng: \"\\%s\""
-
-#: lexer.ll:742
-#, c-format
-msgid "Incorrect lilypond version: %s (%s, %s)"
-msgstr "Felaktig lilypond-version: %s (%s, %s)"
-
-#: lexer.ll:743
-msgid "Consider updating the input with the convert-ly script"
-msgstr "Fundera på att uppdatera indata med skriptet \"convert-ly\""
-
-#~ msgid "Generate .dvi with LaTeX for LilyPond"
-#~ msgstr "Generera .dvi med LaTeX för LilyPond"
-
-# %s är programnamnet (mup2ly)
-#~ msgid "%s is far from completed.  Not all constructs are recognised."
-#~ msgstr "%s är långt ifrån färdig, och kan inte alla konstruktioner."
-
-#~ msgid "Fetch and rebuild from latest source package"
-#~ msgstr "Hämta och bygg om från senaste källkodspaketet"
-
-#~ msgid "unpack and build in DIR [%s]"
-#~ msgstr "packa upp och bygg i DIR [%s]"
-
-#~ msgid "execute COMMAND, subtitute:"
-#~ msgstr "kör COMMAND, ersätt:"
-
-#~ msgid "%b: build root"
-#~ msgstr "%b: byggrot"
-
-#~ msgid "%n: package name"
-#~ msgstr "%n: paketnamn"
-
-#~ msgid "%r: release directory"
-#~ msgstr "%r: programsläppskatalog"
-
-#~ msgid "%t: tarball"
-#~ msgstr "%t: tarboll"
-
-#~ msgid "%v: package version"
-#~ msgstr "%v: paketversion"
-
-#~ msgid "keep all output, and name the directory %s"
-#~ msgstr "behåll all utdata, och döp katalogen till %s"
-
-#~ msgid "upon failure notify EMAIL[,EMAIL]"
-#~ msgstr "vid fel, meddela EMAIL[,EMAIL]"
-
-#~ msgid "remove previous build"
-#~ msgstr "ta bort föregående bygge"
-
-#~ msgid "fetch and build URL [%s]"
-#~ msgstr "hämta och bygg URL [%s]"
-
-#~ msgid "Listing `%s'..."
-#~ msgstr "Listar \"%s\"..."
-
-#~ msgid "latest is: %s"
-#~ msgstr "senaste är: %s"
-
-#~ msgid "relax, %s is up to date"
-#~ msgstr "lugn, %s är senaste versionen"
-
-#~ msgid "Fetching `%s'..."
-#~ msgstr "Hämtar \"%s\"..."
-
-#~ msgid "Building `%s'..."
-#~ msgstr "Bygger \"%s\"..."
-
-#~ msgid "EOF in a string"
-#~ msgstr "EOF i en sträng"
-
-# det handlar om mmap här
-#~ msgid "can't map file"
-#~ msgstr "kan inte göra \"mmap\" på filen"
-
-#~ msgid "<stdin>"
-#~ msgstr "<stdin>"
-
-#~ msgid "programming error: "
-#~ msgstr "programmeringsfel: "
-
-#~ msgid "can't find start of beam"
-#~ msgstr "kan inte hitta start på balk"
-
-#~ msgid "weird beam vertical offset"
-#~ msgstr "underligt vertikalt avstånd för balk"
-
-#~ msgid "unknown spacing pair `%s', `%s'"
-#~ msgstr "okänt avståndspar \"%s\", \"%s\""
-
-#~ msgid "invalid subtraction: not part of chord: %s"
-#~ msgstr "ogiltig subtraktion: inte del av ackord: %s"
-
-# "pitch" här ska alltså vara en ton i ett ackord
-#~ msgid "invalid inversion pitch: not part of chord: %s"
-#~ msgstr "ogiltig ton för inversion: inte del av ett ackord: %s"
-
-#~ msgid "no Grace context available"
-#~ msgstr "ingen prydnadsomgivning tillgänglig"
-
-#~ msgid "Unattached grace notes.  Attaching to last musical column."
-#~ msgstr "Ej fastsatta prydnadsnoter. Fäster vid sista musikkolumnen."
-
-#~ msgid "This was the other key definition."
-#~ msgstr "Detta var den andra tonartsdefinitionen."
-
-#~ msgid "evalute EXPR as Scheme after .scm init is read"
-#~ msgstr "evaluera UTTR som Scheme efter .scm-init har lästs"
-
-#~ msgid "This binary was compiled with the following options:"
-#~ msgstr "Detta program kompilerades med följande alternativ:"
-
-#~ msgid "ly_get_mus_property (): Not a Music"
-#~ msgstr "ly_get_mus_property (): Inte en \"Music\""
-
-#~ msgid "ly_set_mus_property (): Not a symbol"
-#~ msgstr "ly_set_mus_property (): inte en symbol"
-
-#~ msgid "ly_set_mus_property ():  not of type Music"
-#~ msgstr "ly_set_mus_property (): inte av typen \"Music\""
-
-#~ msgid "ly_make_music (): Not a string"
-#~ msgstr "ly_make_music (): Inte en sträng"
-
-#~ msgid "ly_music_name (): Not a music expression"
-#~ msgstr "ly_music_name (): Inte ett musikuttryck"
-
-#~ msgid "writing header field `%s' to `%s'..."
-#~ msgstr "skriver rubrikfält \"%s\" till \"%s\"..."
-
-#~ msgid "Pitch arguments out of range"
-#~ msgstr "Tonargument utanför intervallet"
-
-#~ msgid ""
-#~ "`%s' is deprecated.  Use\n"
-#~ " \\property %s.%s \\override #'%s = #%s"
-#~ msgstr ""
-#~ "\"%s\" är föråldrat. Använd\n"
-#~ " \\property %s.%s \\override #'%s = #%s"
-
-#~ msgid "Wrong type for property: %s, type: %s, value found: %s, type: %s"
-#~ msgstr "Fel typ för egenskap: %s, typ: %s, värde funnet: %s, typ: %s"
-
-#~ msgid "too many notes for rest collision"
-#~ msgstr "för många toner för pauskrock"
-
-#~ msgid "Scheme options:"
-#~ msgstr "Scheme-alternativ:"
-
-#~ msgid "Putting slur over rest.  Ignoring."
-#~ msgstr "Sätter båge över paus. Ignorerar."
-
-#~ msgid "Slur over rest?"
-#~ msgstr "Båge över paus?"
-
-#~ msgid "Text_spanner too small"
-#~ msgstr "Textbryggare för liten"
-
-#~ msgid "Can't find property type-check for `%s'.  Perhaps you made a typing error? Doing assignment anyway."
-#~ msgstr "Kan inte hitta egenskapstypkontroll för \"%s\". Kanske har du gjort ett typfel? Gör tilldelning i alla fall."
-
-#~ msgid "ly-get-trans-property: expecting a Translator_group argument"
-#~ msgstr "ly-get-trans-property: väntade ett Translator_group-argument"
-
-#~ msgid "Expecting %d arguments"
-#~ msgstr "Väntade %d argument"
-
-#~ msgid "Can't specify direction for this request"
-#~ msgstr "Kan inte ange riktning för denna förfrågan"
-
-#~ msgid "Oldest supported input version: %s"
-#~ msgstr "Äldsta indataversion som stöds: %s"
-
-#~ msgid "#32 in quarter: %d"
-#~ msgstr "#32 i fjärdedel: %d"
-
-#~ msgid "LY output to `%s'..."
-#~ msgstr "LY-utdata till \"%s\"..."
-
-#~ msgid "track %d:"
-#~ msgstr "spår %d:"
-
-#~ msgid "Processing..."
-#~ msgstr "Behandlar..."
-
-#~ msgid "Creating voices..."
-#~ msgstr "Skapar stämmor..."
-
-#~ msgid "track "
-#~ msgstr "spår "
-
-#~ msgid "NOT Filtering tempo..."
-#~ msgstr "Filtrerar INTE tempo..."
-
-#~ msgid "NOT Quantifying columns..."
-#~ msgstr "Kvantifierar INTE kolumner..."
-
-#~ msgid "Quantifying columns..."
-#~ msgstr "Kvantifierar kolumner..."
-
-#~ msgid "Settling columns..."
-#~ msgstr "Bestämmer kolumner..."
-
-#~ msgid "% MIDI copyright:"
-#~ msgstr "% MIDI-copyright:"
-
-#~ msgid "% MIDI instrument:"
-#~ msgstr "% MIDI-instrument:"
-
-#~ msgid "lily indent level: %d"
-#~ msgstr "indenteringsnivå för lily: %d"
-
-# Kanske man inte ska översätta, men då får de ta bort _() i stället för
-# att skriva en fånig kommentar
-#~ msgid "% Creator: "
-#~ msgstr "% Skapare: "
-
-#~ msgid "% Automatically generated"
-#~ msgstr "% Automatgenererad"
-
-#~ msgid "% from input file: "
-#~ msgstr "% från indatafil: "
-
-#~ msgid "write exact durations, e.g.: a4*385/384"
-#~ msgstr "skriv exakta länger, t.ex: a4*385/384"
-
-#~ msgid "enable debugging output"
-#~ msgstr "slå på felsökningsutdata"
-
-#~ msgid "don't output tuplets, double dots or rests, smallest is 32"
-#~ msgstr "mata inte ut tupler, dubbelpunkteringar eller pauser, minsta är 32"
-
-#~ msgid "set FILE as default output"
-#~ msgstr "sätt FIL som standardutdata"
-
-#~ msgid "be quiet"
-#~ msgstr "var tyst"
-
-#~ msgid "don't output rests or skips"
-#~ msgstr "mata inte ut pauser eller hopp"
-
-#~ msgid "set smallest duration"
-#~ msgstr "ställ in minsta längd"
-
-#~ msgid "don't timestamp the output"
-#~ msgstr "tidsstämpla inte utdata"
-
-#~ msgid "be verbose"
-#~ msgstr "var utförlig"
-
-#~ msgid "assume no double dotted notes"
-#~ msgstr "anta inga dubbelpunkterade noter"
-
-#~ msgid "Usage: %s [OPTION]... [FILE]"
-#~ msgstr "Användning: %s [FLAGGA]... [FIL]"
-
-#~ msgid "Translate MIDI-file to lilypond"
-#~ msgstr "Översätt MIDI-fil till lilypond"
-
-#~ msgid "no_double_dots: %d\n"
-#~ msgstr "no_double_dots: %d\n"
-
-#~ msgid "no_rests: %d\n"
-#~ msgstr "no_rests: %d\n"
-
-#~ msgid "no_quantify_b_s: %d\n"
-#~ msgstr "no_quantify_b_s: %d\n"
-
-#~ msgid "no_smaller_than: %d (1/%d)\n"
-#~ msgstr "no_smaller_than: %d (1/%d)\n"
-
-#~ msgid "no_tuplets: %d\n"
-#~ msgstr "no_tuplets: %d\n"
-
-#~ msgid "zero length string encountered"
-#~ msgstr "sträng med längd noll påträffad"
-
-#~ msgid "MIDI header expected"
-#~ msgstr "väntade MIDI-rubrik"
-
-#~ msgid "invalid header length"
-#~ msgstr "felaktig rubriklängd"
-
-#~ msgid "invalid MIDI format"
-#~ msgstr "ogiltigt MIDI-format"
-
-#~ msgid "invalid number of tracks"
-#~ msgstr "ogiltigt antal spår"
-
-#~ msgid "can't handle non-metrical time"
-#~ msgstr "kan inte hantera icke-metrisk tid"
-
-#~ msgid "Junking note-end event: channel = %d, pitch = %d"
-#~ msgstr "Slänger notslutshändelse: kanal = %d, ton = %d"
-
-#~ msgid "invalid running status"
-#~ msgstr "ogiltig körstatus"
-
-#~ msgid "unimplemented MIDI meta-event"
-#~ msgstr "oimplementerad MIDI-metahändelse"
-
-#~ msgid "invalid MIDI event"
-#~ msgstr "ogiltig MIDI-händelse"
-
-#~ msgid "MIDI track expected"
-#~ msgstr "väntade MIDI-spår"
-
-#~ msgid "invalid track length"
-#~ msgstr "ogiltig spårlängd"
diff --git a/ps/GNUmakefile b/ps/GNUmakefile
deleted file mode 100644
index 1ade515613..0000000000
--- a/ps/GNUmakefile
+++ /dev/null
@@ -1,11 +0,0 @@
-depth = ..
-
-PS_FILES = $(wildcard *.ps)
-
-STEPMAKE_TEMPLATES=install
-EXTRA_DIST_FILES = $(PS_FILES) 
-
-INSTALLATION_DIR=$(local_lilypond_datadir)/ps/
-INSTALLATION_FILES=$(PS_FILES)
-
-include $(depth)/make/stepmake.make
diff --git a/ps/lilyponddefs.ps b/ps/lilyponddefs.ps
deleted file mode 100644
index 991dc58caa..0000000000
--- a/ps/lilyponddefs.ps
+++ /dev/null
@@ -1,223 +0,0 @@
-%!PS-Adobe-1.0: lilyponddefs
-%
-% Functions for direct PostScript output
-
-% hmm
-% /setgray { 1 add } bind def
-
-/staff-line-thickness lilypondpaperlinethickness def
-/staff-height lilypondpaperstaffheight def
-/line-width lilypondpaperlinewidth def
-
-% FIXME: why isn't this set (by default) by lily?
-% /text-height lilypondpapertextheight def
-
-/lily-output-units 2.83464  def  %% milimeter
-% /lily-output-units 0.996264  def  %% true points.
-
-/output-scale
-lilypondpaperoutputscale lily-output-units mul 
-def
-
-/set-ps-scale-to-lily-scale
-{
-output-scale output-scale scale
-} bind def
-
-/paper-size { lilypondpaperpapersize } bind def
-
-% FIXME
-% urg, read from paper block
-% fixed base line skip value, for single line staves
-/base-line-skip lilypondpaperlineheight def
-
-/init-paper {
-	gsave
- 	.1 setlinewidth
- 	clippath pathbbox newpath
- 	/vsize exch def
- 	/hsize exch def  pop pop pop
-
-	%FIXME:
-	%vsize text-height sub 2 div /top-margin exch def
-	144 2 div /top-margin exch def
-	hsize line-width sub 2 div /left-margin exch def
-	grestore
-} bind def
-
-/place-box
-{
-	/object exch def
-	gsave
-	%exch translate
-	translate
-	0 0 moveto
-	object
-	grestore
-} bind def
-
-/start-system % height
-{
-	dup base-line-skip gt {
-		/line-height exch def
-	}
-	{
-		pop /line-height base-line-skip def
-	} ifelse
-	line-y top-margin sub base-line-skip lt {
-		showpage
-		/line-y vsize top-margin sub def
-	} if
-	gsave
-	line-x line-y translate
-} bind def
-
-/stop-system
-{ 
-	/the-line exch def
-	the-line
-	stroke
-	grestore
-	line-y line-height output-scale mul sub /line-y exch def
-} bind def
-
-% FIXME: font definitions should come from LilyPond
-%        built-in ps fonts are ugly
-/huge-bold-font {
-	/Palatino-Bold findfont 20.7 scalefont setfont
-} bind def
-
-/Large-bold-font {
-	/Palatino-Bold findfont 17.3 scalefont setfont
-} bind def
-
-/large-bold-font {
-	/Palatino-Bold findfont 14.4 scalefont setfont
-} bind def
-
-/large-font {
-	/Palatino-Roman findfont 14.4 scalefont setfont
-} bind def
-
-/large-smallcaps-font {
-	% urg
-	/Bookman-Light findfont 14.4 scalefont setfont
-} bind def
-
-/normal-font {
-	/Palatino-Roman findfont 12 scalefont setfont
-} bind def
-
-/footnote-font {
-	/Palatino-Roman findfont 10 scalefont setfont
-} bind def
-
-/get-text-dimensions % path .. width height
-{
-	dup true charpath pathbbox
-	newpath
-	line-x line-y moveto
- 	exch 4 -1 roll
-	sub
-	3 1 roll
-	exch sub
-} bind def
-
-/set-centered
-{
-	line-x line-y moveto
-	get-text-dimensions
-	neg line-y add /line-y exch def
-	neg line-width add 2 div 0 rmoveto
-	show
-} bind def
-
-/set-left
-{
-	line-x line-y moveto
-	get-text-dimensions
-	neg line-y add /line-y exch def
-	pop
-	show
-} bind def
-
-/set-right
-{
-	line-x line-y moveto
-	get-text-dimensions
-	neg line-y add /line-y exch def
-	neg line-width add 0 rmoveto
-	show
-} bind def
-
-/make-lilypond-title
-{
-	currentdict /lilyponddedication known {
-		normal-font lilyponddedication set-centered
-		line-y 10 sub /line-y exch def
-	} if
-	currentdict /lilypondtitle known {
-		huge-bold-font lilypondtitle set-centered
-		line-y 5 sub /line-y exch def
-	} if
-	currentdict /lilypondsubtitle known {
-		Large-bold-font lilypondsubtitle set-centered
-		line-y 5 sub /line-y exch def
-	} if
-	currentdict /lilypondsubsubtitle known {
-		large-bold-font lilypondsubsubtitle set-centered
-	} if
-	line-y /mini-page exch def
-	currentdict /lilypondcomposer known {
-		large-smallcaps-font lilypondcomposer set-right
-		line-y 2 sub /line-y exch def
-	} if
-	currentdict /lilypondopus known {
-		normal-font lilypondopus set-right
-		line-y 3 sub /line-y exch def
-	} if
-	currentdict /lilypondarranger known {
-		normal-font lilypondarranger set-right
-		line-y 3 sub /line-y exch def
-	} if
-	currentdict /lilypondpoet known {
-		mini-page /line-y exch def
-		normal-font lilypondpoet set-left
-		line-y 3 sub /line-y exch def
-	} if
-	currentdict /lilypondtexttranslator known {
-		normal-font lilypondtexttranslator set-left
-		line-y 3 sub /line-y exch def
-	} if
-	currentdict /lilypondinstrument known {
-		large-font lilypondinstrument set-centered
-	} if
-	currentdict /lilypondpiece known {
-		large-smallcaps-font lilypondpiece set-left
-	} if
-} bind def
-
-/end-lilypond-output
-{
-	/line-y top-margin def
-	footnote-font lilypondtagline set-left
-	showpage
-} bind def
-
-/turnOnExperimentalFeatures { } bind def
-
-staff-line-thickness setlinewidth
-
-% set postscript paper size
-paper-size
-
-% initialise paper dimensions
-staff-height init-paper
-
-/line-x left-margin output-scale div def
-/line-y vsize top-margin sub def
-
-make-lilypond-title
-
-% see if we're there...
-% 10 setlinewidth 0 0 moveto 400 800 lineto stroke
diff --git a/ps/music-drawing-routines.ps b/ps/music-drawing-routines.ps
deleted file mode 100644
index f3cae4c6a0..0000000000
--- a/ps/music-drawing-routines.ps
+++ /dev/null
@@ -1,378 +0,0 @@
-%!PS-Adobe-1.0: music-drawing-routines.ps
-%
-% Functions for direct and embedded PostScript
-
-
-/blot-diameter { lilypondpaperblotdiameter } bind def
-
-/set_tex_dimen {
-	cvr def     
-} bind def
-
-
-
-/euclidean_length  
-{ 
-	1 copy mul exch 1 copy mul add sqrt 
-} bind def 
-
-% FIXME.  translate to middle of box.
-% Nice rectangle with rounded corners
-/draw_box % breapth width depth height
-{
-	currentdict /testing known {
-		%% real thin lines for testing
-		/blot 0.005 def
-	}{
-		/blot blot-diameter def
-	} ifelse
-
-	0 setlinecap
-	blot setlinewidth
-	1 setlinejoin
-
-	blot 2 div sub /h exch def
-	blot 2 div sub /d exch def
-	blot 2 div sub /w exch def
-	blot 2 div sub /b exch def
-
-	b neg d neg moveto
-	b w add 0 rlineto
-	0 d h add rlineto
-	b w add neg 0 rlineto
-	0 d h add neg rlineto
-
-	currentdict /testing known {
-		%% outline only, for testing:
-		stroke
-	}{
-		closepath gsave stroke grestore fill
-	} ifelse
-} bind def
-
-
-/draw_symmetric_x_triangle % h w th
-{
-    setlinewidth
-    0 0 moveto
-    dup 0 lineto
-    2 div 
-    exch lineto
-    0 0 lineto
-    stroke
-} bind def
-
-/draw_round_box % breapth width depth height blot
-{
-	/blot exch def
-
-	0 setlinecap
-	blot setlinewidth
-	1 setlinejoin
-
-	blot 2 div sub /h exch def
-	blot 2 div sub /d exch def
-	blot 2 div sub /w exch def
-	blot 2 div sub /b exch def
-
-	b neg d neg moveto
-	b w add 0 rlineto
-	0 d h add rlineto
-	b w add neg 0 rlineto
-	0 d h add neg rlineto
-
-	currentdict /testing known {
-		%% outline only, for testing:
-		stroke
-	}{
-		closepath gsave stroke grestore fill
-	} ifelse
-} bind def
-
-% Nice beam with rounded corners
-/draw_beam % slope width thick  blot
-{
-	/blot exch def 
-	blot setlinewidth
-
- 	0 setlinecap
-	1 setlinejoin
-
-	blot sub /t exch def
-	blot sub /w exch def
-	w mul /h exch def
-
-	blot 2 div t 2 div neg moveto
-	w h rlineto
-	0 t rlineto
-	w neg h neg rlineto
-	0 t neg rlineto
-
-	currentdict /testing known {
-		%% outline only, for testing:
-		stroke
-	}{
-		closepath gsave stroke grestore fill
-	} ifelse
-} bind def 
-
-/draw_polygon % x(n) y(n) x(n-1) y(n-1) ... x(1) y(1) n blot
-{
-	/blot exch def
-
-	0 setlinecap
-	blot setlinewidth
-	1 setlinejoin
-
-	/points exch def
-	2 copy
-	moveto
-	1 1 points {pop lineto} for
-	currentdict /testing known {
-		%% outline only, for testing:
-		stroke
-	}{
-		closepath gsave stroke grestore fill
-	} ifelse
-} bind def
-
-/draw_repeat_slash % width slope thick
-{
-	1 setlinecap
-	1 setlinejoin
-
-	/beamthick exch def
-	/slope exch def
-	/width exch def
-	beamthick beamthick slope div euclidean_length
-	  /xwid exch def 
-	0 0 moveto
-	xwid 0  rlineto
-	width slope width mul rlineto
-	xwid neg 0 rlineto
-      %  width neg width angle sin mul neg rlineto
-	closepath fill
-} bind def
-
-
-/draw_ez_ball % ch letter_col ball_col font
-{
-	% font
-	findfont 0.7 scalefont setfont 
-	0.1 setlinewidth
-	0 0 moveto
-	0 setgray
-	0.5 0 0.5 0 360 arc closepath fill stroke
-	% ball_col
-	1 eq {
-		0.01 setlinewidth
-		1 setgray
-		0.5 0 0.4 0 360 arc closepath
-		fill stroke
-	} if 
-	% letter_col
-	setgray
-	% 0.25 is empiric centering. Change to taste
-	0.25 -0.25 moveto
-	% ch
-	show
-} bind def
-
-% Simple, but does it work everywhere?
-% Han-Wen reports that one printer (brand?) at cs.uu.nl chokes on this,
-% reverted for now -- jcn
-%
-% The filled circles are drawn by setting the linewidth
-% to 2*radius and drawing a point.
-/simple_draw_ez_ball % ch letter_col ball_col font
-{
-	% font
-	findfont 0.85 scalefont setfont
-	/origin { 0.45 0 } def
-	0 setgray
-	1.1 setlinewidth
-	origin moveto
-	origin lineto stroke
-	% ball_col
- 	setgray
-	0.9 setlinewidth
-	origin moveto
-	origin lineto stroke
-	% letter_col
-	setgray
-	% 0.25 is empiric centering. Change to taste
-	origin moveto
-	-0.28 -0.30 rmoveto
-	% ch
-	show
-} bind def
-
-% this is for drawing slurs. 
-/draw_bezier_sandwich  % thickness controls 
-{
-    % round ending and round beginning
-    1 setlinejoin 1 setlinecap
-	setlinewidth 
-	moveto 
-	curveto 
-	lineto 
-	curveto
-	closepath
-	gsave 
-	fill 
-	grestore 
-	stroke 
-} bind def 
-
-/draw_dot % x1 y2 R
-{
-%	0 360 arc fill stroke
-	0 360 arc closepath fill stroke
-} bind def
-
-/draw_dashed_line % dash thickness dx dy
-{ 
-	1 setlinecap 
-	1 setlinejoin 
-	setdash 
-	setlinewidth 
-	0 0 moveto
-	lineto
-	stroke 
-} bind def 
-
-/draw_dashed_slur % dash thickness controls
-{ 
-	1 setlinecap 
-	1 setlinejoin 
-	setdash 
-	setlinewidth 
-	8 -2 roll 
-	moveto 
-	curveto 
-	stroke 
-} bind def 
-
-
-% a b c d subvec  ==  a-c b-d
-/subvec {
-  3 2 roll exch sub
-  3 1 roll
-  sub exch
-} bind def
-
-
-% centre? zzwidth zzheight thickness x0 y0 x1 y1
-/draw_zigzag_line {
-  newpath
-  6 dict begin
- 
-  4 2 roll % zzuw zzh th x1 y1 x0 y0
-  2 copy
-  moveto
-  subvec % zzuw zzh th dx dy
-
-  2 copy euclidean_length /l exch def
-  l div /uy exch def
-  l div /ux exch def
-  setlinewidth
-  /zzh exch def
-  l exch div round /n exch def
-  n 0 gt { %if
-      /zzw l n 2 mul div def
-      {
-	  uy zzh mul 2 div ux zzh mul -2 div rmoveto
-      } if
-      1 1 n {
-	  ux zzw mul uy zzh mul sub
-	  uy zzw mul ux zzh mul add
-	  rlineto
-	  ux zzw mul uy zzh mul add
-	  uy zzw mul ux zzh mul sub
-	  rlineto
-      } bind for
-  }{ %else
-      pop
-      ux l mul uy l mul rlineto
-  } ifelse
-  stroke
- end
-} bind def
-
-/bracket_traject 
-{ 
-	/traject_ds exch def 
-	/traject_alpha exch def 
-	traject_ds traject_alpha sin mul add 
-	exch 
-	traject_ds traject_alpha cos mul add 
-	exch 
-} bind def 
-
-
-
-/half_bracket
-{ 
-%6 
-	0 0 
-%5a 
-	bracket_thick arch_height add half_height arch_thick sub arch_width add 
-	arch_angle arch_height -0.15 mul bracket_traject 
-%5b 
-	bracket_thick 0.5 mul half_height 
-	0 arch_height 0.5 mul bracket_traject 
-%5c 
-	0 half_height 
-%4a 
-	bracket_thick half_height arch_thick sub 
-	0 arch_height 0.4 mul bracket_traject 
-%4b 
-	bracket_thick arch_height add half_height arch_thick sub arch_width add 
-	arch_angle arch_height -0.25 mul bracket_traject 
-%4c 
-	bracket_thick arch_height add half_height arch_thick sub arch_width add 
-%3 
-	bracket_thick half_height arch_thick sub 
-%2 
-	bracket_thick 0 
-%1 
-	0 0 
-} bind def 
-
-/draw_half_bracket { 
-	moveto 
-	lineto 
-	lineto 
-	curveto 
-	curveto 
-	lineto 
-	gsave 
-	fill 
-	grestore 
-} bind def 
-
-/draw_bracket % arch_angle arch_width arch_height bracket_height arch_thick bracket_thick
-{ 
-	% urg
-
-	/bracket_thick exch def
-	/arch_thick exch def
-	/bracket_height exch def
-	/arch_height exch def
-	/arch_width exch def
-	/arch_angle exch def
-
-	bracket_height 2 div bracket_thick add /half_height exch def 
-	bracket_thick 0.5 mul setlinewidth
-	1 setlinecap 
-	1 setlinejoin 
-	half_bracket 
-	20 copy 
-	1 -1 scale 
-	draw_half_bracket 
-	stroke 
-	1 -1 scale 
-	draw_half_bracket 
-	stroke 
-} bind def 
-
diff --git a/python/GNUmakefile b/python/GNUmakefile
deleted file mode 100644
index b1a0d05439..0000000000
--- a/python/GNUmakefile
+++ /dev/null
@@ -1,16 +0,0 @@
-depth = ..
-
-STEPMAKE_TEMPLATES=c python-module install-out po
-
-include $(depth)/make/stepmake.make 
-
-INSTALLATION_OUT_SUFFIXES=1
-
-INSTALLATION_OUT_FILES=$(OUT_SO_MODULES)
-INSTALLATION_OUT_DIR=$(local_lilypond_libdir)/python
-
-INSTALLATION_OUT_DIR1=$(local_lilypond_datadir)/python
-INSTALLATION_OUT_FILES1=$(OUT_PY_MODULES) $(OUT_PYC_MODULES)
-
-
-$(outdir)/midi.lo: $(outdir)/config.h
diff --git a/python/lilylib.py b/python/lilylib.py
deleted file mode 100644
index ba339854bc..0000000000
--- a/python/lilylib.py
+++ /dev/null
@@ -1,502 +0,0 @@
-################################################################
-# lilylib.py -- options and stuff
-# 
-# source file of the GNU LilyPond music typesetter
-#
-# (c)  1998--2003  Han-Wen Nienhuys <hanwen@cs.uu.nl>
-#                 Jan Nieuwenhuizen <janneke@gnu.org>
-
-###  subst:\(^\|[^._a-z]\)\(abspath\|identify\|warranty\|progress\|warning\|error\|exit\|getopt_args\|option_help_str\|options_help_str\|help\|setup_temp\|read_pipe\|system\|cleanup_temp\|strip_extension\|cp_to_dir\|mkdir_p\|init\) *(
-###  replace:\1ly.\2 (
-
-### subst: \(help_summary\|keep_temp_dir_p\|option_definitions\|original_dir\|program_name\|pseudo_filter_p\|temp_dir\|verbose_p\)
-
-import __main__
-import shutil
-import string
-import sys
-import tempfile
-import glob
-
-################################################################
-# Users of python modules should include this snippet
-# and customize variables below.
-
-# We'll suffer this path init stuff as long as we don't install our
-# python packages in <prefix>/lib/pythonx.y (and don't kludge around
-# it as we do with teTeX on Red Hat Linux: set some environment var
-# (PYTHONPATH) in profile)
-
-# If set, LILYPONDPREFIX must take prevalence
-# if datadir is not set, we're doing a build and LILYPONDPREFIX
-
-import getopt, os, sys
-datadir = '@local_lilypond_datadir@'
-if not os.path.isdir (datadir):
-	datadir = '@lilypond_datadir@'
-if os.environ.has_key ('LILYPONDPREFIX') :
-	datadir = os.environ['LILYPONDPREFIX']
-	while datadir[-1] == os.sep:
-		datadir= datadir[:-1]
-
-sys.path.insert (0, os.path.join (datadir, 'python'))
-
-
-
-# Customize these
-if __name__ == '__main__':
-	import lilylib as ly
-	global _;_=ly._
-	global re;re = ly.re
-
-	# lilylib globals
-	program_name = 'unset'
-	pseudo_filter_p = 0
-	original_dir = os.getcwd ()
-	temp_dir = os.path.join (original_dir,  '%s.dir' % program_name)
-	keep_temp_dir_p = 0
-	verbose_p = 0
-
-	help_summary = _ ("lilylib module")
-
-	option_definitions = [
-		('', 'h', 'help', _ ("print this help")),
-		]
-
-	from lilylib import *
-################################################################
-
-# Handle bug in Python 1.6-2.1
-#
-# there are recursion limits for some patterns in Python 1.6 til 2.1. 
-# fix this by importing pre instead. Fix by Mats.
-
-if float (sys.version[0:3]) <= 2.1:
-	try:
-		import pre
-		re = pre
-		del pre
-	except ImportError:
-		import re
-else:
-	import re
-	
-# Attempt to fix problems with limited stack size set by Python!
-# Sets unlimited stack size. Note that the resource module only
-# is available on UNIX.
-try:
-       import resource
-       resource.setrlimit (resource.RLIMIT_STACK, (-1, -1))
-except:
-       pass
-
-localedir = '@localedir@'
-try:
-	import gettext
-	gettext.bindtextdomain ('lilypond', localedir)
-	gettext.textdomain ('lilypond')
-	_ = gettext.gettext
-except:
-	def _ (s):
-		return s
-underscore = _
-
-def identify (port):
-	port.write ('%s (GNU LilyPond) %s\n' % (__main__.program_name, __main__.program_version))
-
-def warranty ():
-	identify (sys.stdout)
-	sys.stdout.write ('\n')
-	sys.stdout.write (_ ('Copyright (c) %s by' % ' 1998--2003'))
-	sys.stdout.write ('\n')
-	map (lambda x: sys.stdout.write ('  %s\n' % x), __main__.copyright)
-	sys.stdout.write ('\n')
-	sys.stdout.write (_ ("Distributed under terms of the GNU General Public License."))
-	sys.stdout.write ('\n')
-	sys.stdout.write (_ ("It comes with NO WARRANTY."))
-	sys.stdout.write ('\n')
-
-def progress (s):
-	sys.stderr.write (s)
-
-def warning (s):
-	sys.stderr.write (__main__.program_name + ": " + _ ("warning: ") + s + '\n')
-
-def error (s):
-	sys.stderr.write (__main__.program_name + ": " + _ ("error: ") + s + '\n')
-	
-def exit (i):
-	if __main__.verbose_p:
-		raise _ ('Exiting (%d)...') % i
-	else:
-		sys.exit (1)
-		
-def getopt_args (opts):
-	'''Construct arguments (LONG, SHORT) for getopt from  list of options.'''
-	short = ''
-	long = []
-	for o in opts:
-		if o[1]:
-			short = short + o[1]
-			if o[0]:
-				short = short + ':'
-		if o[2]:
-			l = o[2]
-			if o[0]:
-				l = l + '='
-			long.append (l)
-	return (short, long)
-
-def option_help_str (o):
-	'''Transform one option description (4-tuple ) into neatly formatted string'''
-	sh = '  '	
-	if o[1]:
-		sh = '-%s' % o[1]
-
-	sep = '  '
-	if o[1] and o[2]:
-		sep = ', '
-		
-	long = ''
-	if o[2]:
-		long= '--%s' % o[2]
-
-	arg = ''
-	if o[0]:
-		if o[2]:
-			arg = '='
-		arg = arg + o[0]
-	return '  ' + sh + sep + long + arg
-
-
-def options_help_str (opts):
-	'''Convert a list of options into a neatly formatted string'''
-	w = 0
-	strs =[]
-	helps = []
-
-	for o in opts:
-		s = option_help_str (o)
-		strs.append ((s, o[3]))
-		if len (s) > w:
-			w = len (s)
-
-	str = ''
-	for s in strs:
-		str = str + '%s%s%s\n' % (s[0], ' ' * (w - len(s[0])  + 3), s[1])
-	return str
-
-def help ():
-	ls = [(_ ("Usage: %s [OPTIONS]... FILE") % __main__.program_name),
-	      ('\n\n'),
-	      (__main__.help_summary),
-	      ('\n\n'),
-	      (_ ("Options:")),
-	      ('\n'),
-	      (options_help_str (__main__.option_definitions)),
-	      ('\n\n'),
-	      (_ ("Report bugs to %s.") % 'bug-lilypond@gnu.org'),
-	      ('\n')]
-	map (sys.stdout.write, ls)
-
-def lilypond_version (binary):
-	p = read_pipe ('%s --version ' % binary)
-
-	ls = p.split ('\n')
-	v= '<not found>'
-	for l in ls:
-		m = re.search ('GNU LilyPond ([0-9a-z.]+)', p)
-		if m:
-			v = m.group (1)
-			
-	return v
-	
-def lilypond_version_check (binary, req):
-	if req[0] <> '@' :
-		v = lilypond_version (binary)
-		if v <> req:
-			error (_("Binary %s has version %s, looking for version %s") % \
-			       (binary, v, req))
-			sys.exit (1)
-	
-	
-def setup_temp ():
-	
-	''' Create a temporary directory, and return its name. '''
-	
-	if not __main__.keep_temp_dir_p:
-		__main__.temp_dir = tempfile.mktemp (__main__.program_name)
-	try:
-		os.mkdir (__main__.temp_dir, 0700)
-	except OSError:
-		pass
-
-	return __main__.temp_dir
-
-def command_name (cmd):
-	return re.match ('^[^a-z0-9_-]*([a-z0-9_-]*)', cmd).group (1)
-
-def error_log (name):
-	name = re.sub('[^a-z]','x',name)
-	return tempfile.mktemp ('%s.errorlog' % name)
-
-def read_pipe (cmd, mode = 'r'):
-	
-	
-	redirect = ''
-	error_log_file = ''
-	if __main__.verbose_p:
-		progress (_ ("Opening pipe `%s\'") % cmd)
-	else:
-		error_log_file = error_log (command_name (cmd))
-		redirect = ' 2>%s' % error_log_file
-		
-	pipe = os.popen (cmd + redirect, mode)
-	output = pipe.read ()
-	status = pipe.close ()
-	# successful pipe close returns 'None'
-	if not status:
-		status = 0
-	signal = 0x0f & status
-	exit_status = status >> 8
-
-	if status:
-		error (_ ("`%s\' failed (%d)") % (cmd, exit_status))
-		
-		if not __main__.verbose_p:
-			contents = open (error_log_file).read ()
-			if contents:
-				error (_ ("The error log is as follows:"))
-				sys.stderr.write (contents)
-
-		# Ugh. code dup
-		if error_log_file:
-			os.unlink (error_log_file)
-
-		exit (status)
-		
-	if __main__.verbose_p:
-		progress ('\n')
-
-	if error_log_file:
-		os.unlink (error_log_file)
-		
-	return output
-
-def system (cmd, ignore_error = 0, progress_p = 0):
-	
-	'''System CMD.  If IGNORE_ERROR, do not complain when CMD
-returns non zero.  If PROGRESS_P, always show progress.
-
-RETURN VALUE
-
-Exit status of CMD '''
-
-	name = command_name (cmd)
-	error_log_file = ''
-	
-	if __main__.verbose_p:
-		progress_p = 1
-		progress (_ ("Invoking `%s\'") % cmd)
-	else:
-		progress ( _("Running %s...") % name)
-
-	redirect = ''
-	if not progress_p:
-		error_log_file = error_log (name)
-		redirect = ' 1>/dev/null 2>' + error_log_file
-	elif __main__.pseudo_filter_p:
-		redirect = ' 1>/dev/null'
-
-	status = os.system (cmd + redirect)
-	signal = 0x0f & status
-	exit_status = status >> 8
-	
-	if status:
-		
-		exit_type =  'status %d' % exit_status
-		if signal:
-			exit_type = 'signal %d' % signal 
-		
-		msg = _ ("`%s\' failed (%s)") % (name, exit_type)
-		if ignore_error:
-			if __main__.verbose_p:
-				warning (msg + ' ' + _ ("(ignored)"))
-		else:
-			error (msg)
-			if not progress_p and error_log_file:
-				error (_ ("The error log is as follows:"))
-				sys.stderr.write (error_log_file).read ()
-			if error_log_file:
-				os.unlink (error_log_file)
-			exit (status)
-
-	if error_log_file:
-		os.unlink (error_log_file)
-	progress ('\n')
-	return status
-
-def cleanup_temp ():
-	if not __main__.keep_temp_dir_p:
-		if __main__.verbose_p:
-			progress (_ ("Cleaning %s...") % __main__.temp_dir)
-		shutil.rmtree (__main__.temp_dir)
-		if __main__.verbose_p:
-			progress ('\n')
-
-
-def strip_extension (f, ext):
-	(p, e) = os.path.splitext (f)
-	if e == ext:
-		e = ''
-	return p + e
-
-
-def cp_to_dir (pattern, dir):
-	"Copy files matching re PATTERN from cwd to DIR"
-	
-	# Duh.  Python style portable: cp *.EXT OUTDIR
-	# system ('cp *.%s %s' % (ext, outdir), 1)
-
-	files = filter (lambda x, p=pattern: re.match (p, x), os.listdir ('.'))
-	map (lambda x, d=dir: shutil.copy2 (x, os.path.join (d, x)), files)
-
-
-# Python < 1.5.2 compatibility
-#
-# On most platforms, this is equivalent to
-#`normpath(join(os.getcwd()), PATH)'.  *Added in Python version 1.5.2*
-
-if os.path.__dict__.has_key ('abspath'):
-	abspath = os.path.abspath
-else:
-	def abspath (path):
-		return os.path.normpath (os.path.join (os.getcwd (), path))
-
-if os.__dict__.has_key ('makedirs'):
-	makedirs = os.makedirs
-else:
-	def makedirs (dir, mode=0777):
-		system ('mkdir -p %s' % dir)
-
-
-def mkdir_p (dir, mode=0777):
-	if not os.path.isdir (dir):
-		makedirs (dir, mode)
-
-
-environment = {}
-
-# tex needs lots of memory, more than it gets by default on Debian
-non_path_environment = {
-	'extra_mem_top' : '1000000',
-	'extra_mem_bottom' : '1000000',
-	'pool_size' : '250000',
-}
-
-def setup_environment ():
-	global environment
-
-	kpse = read_pipe ('kpsexpand \$TEXMF')
-	texmf = re.sub ('[ \t\n]+$','', kpse)
-	type1_paths = read_pipe ('kpsewhich -expand-path=\$T1FONTS')
-	
-	environment = {
-		# TODO: * prevent multiple addition.
-		#       * clean TEXINPUTS, MFINPUTS, TFMFONTS,
-		#         as these take prevalence over $TEXMF
-		#         and thus may break tex run?
-		
-		'TEXMF' : "{%s,%s}" % (datadir, texmf) ,
-		'GS_FONTPATH' : type1_paths,
-		'GS_LIB' : datadir + '/ps',
-		}
-	
-	# $TEXMF is special, previous value is already taken care of
-	if os.environ.has_key ('TEXMF'):
-		del os.environ['TEXMF']
- 
-	for key in environment.keys ():
-		val = environment[key]
-		if os.environ.has_key (key):
-			val = os.environ[key] + os.pathsep + val 
-		os.environ[key] = val
-
-	for key in non_path_environment.keys ():
-		val = non_path_environment[key]
-		os.environ[key] = val
-
-def print_environment ():
-	for (k,v) in os.environ.items ():
-		sys.stderr.write ("%s=\"%s\"\n" % (k, v)) 
-
-def get_bbox (filename):
-	bbox = filename + '.bbox'
-	## -sOutputFile does not work with bbox?
-	cmd = 'gs -sDEVICE=bbox -q -dNOPAUSE %s -c quit 2>%s' % \
-	      (filename, bbox)
-	system (cmd, progress_p = 1)
-	box = open (bbox).read ()
-	m = re.match ('^%%BoundingBox: ([0-9]+) ([0-9]+) ([0-9]+) ([0-9]+)',
-		      box)
-	gr = []
-	if m:
-		gr = map (string.atoi, m.groups ())
-	
-	return gr
-
-
-def make_ps_images (ps_name, resolution = 90):
-	## todo:
-	## have better algorithm for deciding when to crop page,
-	## and when to show full page
-	base = re.sub (r'\.e?ps', '', ps_name)
-	
-	header = open (ps_name).read (1024)
-	multi_page = re.search ('\n%%Pages: ', header)
-	cmd = ''
-
-	if multi_page == None:
-		bbox = get_bbox (ps_name)
-		trans_ps = ps_name + '.trans.ps'
-		output_file = re.sub (r'\.e?ps', '.png', ps_name)
-	
-
-		margin = 0
-		fo = open (trans_ps, 'w')
-		fo.write ('%d %d translate\n' % (-bbox[0] + margin,
-						 -bbox[1] + margin))
-		fo.close ()
-
-		x = (2* margin + bbox[2] - bbox[0]) \
-		    * resolution / 72.0
-		y = (2* margin + bbox[3] - bbox[1]) \
-		    * resolution / 72.0
-		if x == 0:
-			x = 1
-		if y == 0:
-			y = 1
-
-		cmd = r'''gs -g%dx%d -sDEVICE=pnggray  -dTextAlphaBits=4 -dGraphicsAlphaBits=4  -q -sOutputFile=%s -r%d -dNOPAUSE %s %s -c quit ''' % \
-		      (x, y, output_file, resolution, trans_ps, ps_name)
-
-		rms = glob.glob (base + '-page*.png')
-		map (os.unlink, rms)
-	else:
-		output_file = re.sub (r'\.e?ps', '-page%d.png', ps_name)
-		rmfile = base + '.png'
-		if os.path.isfile (rmfile):
-			os.unlink (rmfile)
-		
-		cmd = r'''gs -s  -sDEVICE=pnggray  -dTextAlphaBits=4 -dGraphicsAlphaBits=4 -q -sOutputFile=%s -dNOPAUSE -r%d %s -c quit''' % (output_file,
-																      resolution, ps_name)
-	
-	status = system (cmd)
-	signal = 0xf & status
-	exit_status = status >> 8
-
-	
-	if status:
-		os.unlink (png)
-		error (_ ("Removing output file"))
-		exit (1)
diff --git a/python/midi.c b/python/midi.c
deleted file mode 100644
index f815a2ecba..0000000000
--- a/python/midi.c
+++ /dev/null
@@ -1,414 +0,0 @@
-/*
-  midi.c -- implement Python midi parser module
-
-  source file of the GNU LilyPond music typesetter
-
-  (c)  2001--2003 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-            Jan Nieuwenhuizen <janneke@gnu.org>
-
-*/
-
-/*
-
-python
-import midi
-s = open ("s.midi").read ()
-midi.parse_track (s)
-midi.parse (s)
-
-*/
-
-#include "config.h"
-#include <Python.h>
-
-#if 0
-int x = 0;
-int *track = &x;
-#define debug_print(f, args...) fprintf (stderr, "%s:%d: track: %p :" f, __FUNCTION__, __LINE__, *track, ##args)
-#else
-#define debug_print(f, args...)
-#endif
-
-static PyObject *Midi_error;
-static PyObject *Midi_warning;
-
-static PyObject *
-midi_error (char const *func, char *s)
-{
-  char*dest = (char*) malloc (sizeof (char) * (strlen (func) + strlen (s) + 1));
-  strcpy (dest, func);
-  strcat (dest, s);
-  PyErr_SetString (Midi_error, dest);
-  free (dest);
-  
-  return 0;
-}
-
-static PyObject *
-midi_warning (char const *s)
-{
-  PyErr_SetString (Midi_warning, s);
-  return 0;
-}
-
-
-typedef struct message {
-  unsigned char msg;
-  char * description;
-} message_t;
-
-message_t channelVoiceMessages[] = {
-  0x80, "NOTE_OFF",
-  0x90, "NOTE_ON",
-  0xA0, "POLYPHONIC_KEY_PRESSURE",
-  0xB0, "CONTROLLER_CHANGE",
-  0xC0, "PROGRAM_CHANGE",
-  0xD0, "CHANNEL_KEY_PRESSURE",
-  0xE0, "PITCH_BEND",
-  0,0
-};
-
-message_t channelModeMessages[] = {
-  0x78, "ALL_SOUND_OFF",
-  0x79, "RESET_ALL_CONTROLLERS",
-  0x7A, "LOCAL_CONTROL",
-  0x7B, "ALL_NOTES_OFF",
-  0x7C, "OMNI_MODE_OFF",
-  0x7D, "OMNI_MODE_ON",
-  0x7E, "MONO_MODE_ON",
-  0x7F, "POLY_MODE_ON",
-  0,0
-};
-
-message_t metaEvents[] = {
-  0x00, "SEQUENCE_NUMBER",
-  0x01, "TEXT_EVENT",
-  0x02, "COPYRIGHT_NOTICE",
-  0x03, "SEQUENCE_TRACK_NAME",
-  0x04, "INSTRUMENT_NAME",
-  0x05, "LYRIC",
-  0x06, "MARKER",
-  0x07, "CUE_POINT",
-  0x20, "MIDI_CHANNEL_PREFIX",
-  0x21, "MIDI_PORT",
-  0x2F, "END_OF_TRACK",
-  0x51, "SET_TEMPO",
-  0x54, "SMTPE_OFFSET",
-  0x58, "TIME_SIGNATURE",
-  0x59, "KEY_SIGNATURE",
-  0x7F, "SEQUENCER_SPECIFIC_META_EVENT",
-  0xFF, "META_EVENT",
-  0,0
-};
-
-void
-add_constants (PyObject *dict)
-{
-  message_t * p[] = {metaEvents, channelModeMessages, channelVoiceMessages ,0};
-  int i,j;
-  for ( j =0; p[j]; j++)
-    for ( i = 0; p[j][i].description; i++)
-      PyDict_SetItemString (dict, p[j][i].description, Py_BuildValue ("i", p[j][i].msg));
-}
-
-unsigned long int
-get_number (unsigned char ** str, unsigned char * end_str, int length)
-{
-  /* # MIDI uses big-endian for everything */
-  long sum = 0;
-  int i = 0;
-  
-  for (; i < length; i++)
-    sum = (sum << 8) + (unsigned char) (*str)[i];
-
-  *str += length;
-  debug_print ("%d:\n", sum);
-  return sum;
-}
-
-unsigned long int
-get_variable_length_number (unsigned char **str, unsigned char * end_str)
-{
-  long sum = 0;
-  int i = 0;
-  while (*str < end_str)
-    {
-      unsigned char x = **str;
-      (*str) ++;
-      sum = (sum << 7) + (x & 0x7F);
-      if (!(x & 0x80))
-	break;
-    }
-  debug_print ("%d:\n", sum);
-  return sum;
-}
-
-PyObject *
-read_one_byte (unsigned char **track, unsigned char *end, 
-	       unsigned char x)
-{
-  PyObject *pyev = Py_BuildValue ("(i)", x);
-  debug_print ("%x:%s", x, "event\n");
-
-  return pyev;
-}
-
-PyObject *
-read_two_bytes (unsigned char **track, unsigned char *end, 
-		unsigned char x)
-{
-  PyObject *pyev = Py_BuildValue ("(ii)", x, (*track)[0]);
-  *track += 1;
-  debug_print ("%x:%s", x, "event\n");
-  return pyev;
-}
-
-PyObject *
-read_three_bytes (unsigned char **track, unsigned char *end, 
-		  unsigned char x)
-{
-  PyObject *pyev = Py_BuildValue ("(iii)", x, (*track)[0],
-				  (*track)[1]);
-
-  *track += 2;
-  debug_print ("%x:%s", x, "event\n");
-  return pyev;
-}
-
-PyObject *
-read_string (unsigned char **track, unsigned char *end) 
-{
-  unsigned long length = get_variable_length_number (track, end);
-  if (length > end - *track)
-    length = end - *track;
-
-  *track += length;
-  return Py_BuildValue ("s#", ((*track) -length), length);
-}
-
-typedef PyObject* (*Read_midi_event)
-     (unsigned char **track, unsigned char *end, 
-      unsigned char x);
-
-
-static PyObject *
-read_f0_byte (unsigned char **track, unsigned char *end, 
-	      unsigned char x)
-	      
-{
-  debug_print ("%x:%s", x, "event\n");
-  if (x == 0xff)
-    {
-      unsigned char z = (*track)[0 ];
-      *track += 1;
-      debug_print ("%x:%s", z, "f0-event\n");
-
-      return Py_BuildValue ("(iiO)", x, z, read_string (track, end));
-    }
-
-  return Py_BuildValue ("(iO)", x, read_string (track, end));
-}
-
-Read_midi_event read_midi_event [16] =
-{
-  read_one_byte,  //  0
-  read_one_byte,  // 10
-  read_one_byte,  // 20
-  read_one_byte,  // 30
-  read_one_byte,  // 40
-  read_one_byte,  // 50
-  read_one_byte,  // 60 data entry.
-  read_two_bytes, // 70 all notes off
-  read_three_bytes, // 80 note off
-  read_three_bytes, // 90 note on
-  read_three_bytes, // a0 poly aftertouch
-  read_three_bytes, // b0 control
-  read_two_bytes,  // c0 prog change
-  read_two_bytes, // d0 ch aftertouch
-  read_three_bytes, // e0 pitchwheel range 
-  read_f0_byte,   // f0
-};
-
-
-static PyObject *
-read_event (unsigned char **track, unsigned char *end, PyObject *time,
-	    unsigned char *running_status)
-{
-  int rsb_skip = ((**track & 0x80)) ? 1 :0;
-
-  unsigned char x = (rsb_skip) ? (*track)[0]: *running_status;
-
-  PyObject * bare_event = 0;
-  debug_print ("%x:%s", x, "event\n");
-  *running_status = x;
-  *track += rsb_skip;
-  
-  //  printf ("%x %x %d next %x\n", x, (*track)[0], rsb_skip, (*track)[1]);
-  bare_event = (*read_midi_event[x >> 4]) (track, end, x);
-  if (bare_event)
-    return Py_BuildValue ("(OO)", time, bare_event);
-  else
-    return NULL;
-}
-
-static PyObject *
-midi_parse_track (unsigned char **track, unsigned char *track_end)
-{
-  unsigned int time = 0;
-  unsigned char running_status;
-  unsigned long track_len, track_size;
-  PyObject *pytrack = 0;
-
-  debug_print ("%s", "\n");
-  
-  track_size = track_end - *track;
-
-  debug_print ("%s", "\n");
-  if (strcmp (*track, "MTrk"))
-    return midi_error (__FUNCTION__,  ": MTrk expected");
-  
-  *track += 4;
-
-  track_len = get_number (track, *track + 4, 4);
-
-
-  debug_print ("track_len: %u\n", track_len);
-  debug_print ("track_size: %u\n", track_size);
-  debug_print ("track begin: %p\n", track);
-  debug_print ("track end: %p\n", track + track_len);
-  
-  if (track_len > track_size)
-    return midi_error (__FUNCTION__,  ": track size corrupt");
-
-  pytrack = PyList_New (0);
-
-  track_end = *track + track_len;
-
-  {  
-    PyObject *pytime = PyInt_FromLong (0L);
-    while (*track < track_end)
-      {
-	long dt = get_variable_length_number(track, track_end);
-	PyObject *pyev = 0;
-
-	time += dt;
-	if (dt)
-	  pytime = PyInt_FromLong (time);
-
-	pyev = read_event (track, track_end, pytime,
-			   &running_status);
-	if (pyev)
-	  PyList_Append (pytrack, pyev);
-      }
-  }
-  
-  *track = track_end;
-  return pytrack;
-}
-
-
-static PyObject *
-pymidi_parse_track (PyObject *self, PyObject *args)
-{
-  unsigned char *track, *track_end;
-  unsigned long track_size, track_len;
-
-  PyObject * sobj = PyTuple_GetItem (args, 0);
-
-  debug_print ("%s", "\n");
-  if (!PyArg_ParseTuple (args, "s#", &track, &track_size))
-    return 0;
-
-  if (track_size < 0)
-    return midi_error (__FUNCTION__,   ": negative track size");
-
-  track_end = track + track_size;
-  
-  return midi_parse_track (&track, track_end);
-}
-
-static PyObject *
-midi_parse (unsigned char **midi,unsigned  char *midi_end)
-{
-  PyObject *pymidi = 0;
-  unsigned long header_len;
-  unsigned format, tracks;
-  int division;
-  int i;
-  
-  debug_print ("%s", "\n");
-
-  /* Header */
-  header_len = get_number (midi, *midi + 4, 4);
-
-  
-  if (header_len < 6)
-    return midi_error (__FUNCTION__,  ": header too short");
-    
-  format = get_number (midi, *midi + 2, 2);
-  tracks = get_number (midi, *midi + 2, 2);
-
-  if (tracks > 32)
-    return midi_error (__FUNCTION__,  ": too many tracks");
-  
-  division = get_number (midi, *midi + 2, 2) * 4;
-
-
-  if (division < 0)
-    /* return midi_error ("can't handle non-metrical time"); */
-    ;
-  *midi += header_len - 6;
-
-  pymidi = PyList_New (0);
-
-  /* Tracks */
-  for (i = 0; i < tracks; i++)
-    PyList_Append (pymidi, midi_parse_track (midi, midi_end));
-
-  pymidi = Py_BuildValue ("(OO)", Py_BuildValue ("(ii)", format, division),
-			  pymidi);
-  return pymidi;
-}
-
-static PyObject *
-pymidi_parse (PyObject *self, PyObject *args)
-{
-  unsigned char *midi, *midi_end;
-  unsigned long midi_size, midi_len;
-  
-  PyObject *sobj = PyTuple_GetItem (args, 0);
-
-  debug_print ("%s", "\n");
-  if (!PyArg_ParseTuple (args, "s#", &midi, &midi_size))
-    return 0;
-
-  if (strcmp (midi, "MThd"))
-      return midi_error (__FUNCTION__,  ": MThd expected");
-  
-  midi += 4;
-
-  midi_end = midi + midi_size;
-
-  return midi_parse (&midi, midi_end);
-}
-
-
-static PyMethodDef MidiMethods[] = 
-{
-  {"parse",  pymidi_parse, 1},
-  {"parse_track",  pymidi_parse_track, 1},
-  {0, 0}        /* Sentinel */
-};
-
-initmidi ()
-{
-  PyObject *m, *d;
-  m = Py_InitModule ("midi", MidiMethods);
-  d = PyModule_GetDict (m);
-  
-  Midi_error = PyString_FromString ("midi.error");
-  PyDict_SetItemString (d, "error", Midi_error);
-  add_constants (d);
-  Midi_warning = PyString_FromString ("midi.warning");
-  PyDict_SetItemString (d, "warning", Midi_warning);
-}
diff --git a/scm/GNUmakefile b/scm/GNUmakefile
deleted file mode 100644
index 68fe45d7fb..0000000000
--- a/scm/GNUmakefile
+++ /dev/null
@@ -1,11 +0,0 @@
-# scm/Makefile
-
-depth = ..
-
-INSTALLATION_DIR=$(local_lilypond_datadir)/scm/
-INSTALLATION_FILES=$(SCM_FILES)
-
-STEPMAKE_TEMPLATES=install scm
-
-include $(depth)/make/stepmake.make 
-
diff --git a/scm/auto-beam.scm b/scm/auto-beam.scm
deleted file mode 100644
index 7a16470a35..0000000000
--- a/scm/auto-beam.scm
+++ /dev/null
@@ -1,141 +0,0 @@
-;;;
-;;; auto-beam.scm -- Auto-beam-engraver settings
-;;;
-;;; source file of the GNU LilyPond music typesetter
-;;; 
-;;; (c)  2000--2004 Jan Nieuwenhuizen <janneke@gnu.org>
-;;;
-
-;;; specify generic beam begin and end times
-
-;;; format:
-;;;
-;;;   function shortest-duration-in-beam time-signature
-;;;
-;;; where
-;;;
-;;;     function = begin or end
-;;;     shortest-duration-in-beam = numerator denominator; eg: 1 16
-;;;     time-signature = numerator denominator, eg: 4 4
-;;;
-;;; unspecified or wildcard entries for duration or time-signature
-;;; are given by * *
-
-;;; maybe do:  '(end shortest-1 16 time-3 4) ?
-
-;;; in 3 2 time:
-;;;   end beams each 1 2 note
-;;;   end beams with 16th notes each 1 4 note
-;;;   end beams with 32th notes each 1 8 note
-
-(define-public default-auto-beam-settings
-   `(
-     ((end * * 3 2) . ,(ly:make-moment 1 2))
-     ((end 1 16 3 2) . ,(ly:make-moment 1 4))
-     ((end 1 32 3 2) . ,(ly:make-moment 1 8))
-
-     ((begin 1 8 3 4) . ,(ly:make-moment 1 4))
-
-     ((end * * 3 4) . ,(ly:make-moment 3 4))
-     ((begin 1 16 3 4) . ,(ly:make-moment 1 16))
-     ((end 1 16 3 4) . ,(ly:make-moment 1 4))
-     ;;((begin 1 32 3 4) . ,(ly:make-moment 1 8))
-     ((end 1 32 3 4) . ,(ly:make-moment 1 8))
-
-     ((begin 1 16 3 8) . ,(ly:make-moment 1 8))
-     ((end * * 3 8) . ,(ly:make-moment 3 8))
-
-     ;; in common time:
-     ;;   end beams each 1 2 note
-     ;;   end beams with 32th notes each 1 8 note
-     ;;   end beams with 1 8 triplets each 1 4 note
-
-     ((end * * 4 4) . ,(ly:make-moment 1 2))
-     ((end 1 12 4 4) . ,(ly:make-moment 1 4))
-     ((end 1 16 4 4) . ,(ly:make-moment 1 4))
-     ((end 1 32 4 4) . ,(ly:make-moment 1 8))
-
-     ((end * * 2 4) . ,(ly:make-moment 1 4))
-     ((end 1 12 2 4) . ,(ly:make-moment 1 4))
-     ((end 1 16 2 4) . ,(ly:make-moment 1 4))
-     ((end 1 32 2 4) . ,(ly:make-moment 1 8))
-
-     ;; It seems that, because of a bug in the previous auto-beamer,
-     ;; we had the effect of this setting x
-     ;; ((end * * 2 8) . ,(ly:make-moment 2 8))
-
-     ((end * * 4 8) . ,(ly:make-moment 1 4))
-     ((end 1 16 4 8) . ,(ly:make-moment 1 4))
-     ((end 1 32 4 8) . ,(ly:make-moment 1 8))
-
-     ((end * * 4 16) . ,(ly:make-moment 1 8))
-
-     ((end * * 6 8) . ,(ly:make-moment 3 8))
-     ((end 1 16 6 8) . ,(ly:make-moment 3 8))
-     ((end 1 32 6 8) . ,(ly:make-moment 1 8))
-
-     ((end * * 9 8) . ,(ly:make-moment 3 8))
-     ((end 1 16 9 8) . ,(ly:make-moment 3 8))
-     ((end 1 32 9 8) . ,(ly:make-moment 1 8))
-
-     ((end * * 12 8) . ,(ly:make-moment 3 8))
-     ((end 1 16 12 8) . ,(ly:make-moment 3 8))
-     ((end 1 32 12 8) . ,(ly:make-moment 1 8))
-     ))
-
-
-(define (override-property-setting context context-prop setting value)
-  "Like the C++ code that executes \\override, but without type
-checking. "
-
-  (ly:set-context-property! context context-prop
-			   (cons (cons setting value)
-				 (ly:get-context-property context context-prop)
-				 )
-			   )
-  )
-
-(define (revert-property-setting context setting)
-  "Like the C++ code that executes \revert, but without type
-checking. "
-  
-  (define (revert-assoc alist key)
-    "Return ALIST, with KEY removed. ALIST is not modified, instead
-a fresh copy of the  list-head is made."
-    (cond
-     ((null? alist) '())
-     ((equal? (caar alist) key) (cdr alist))
-     (else (cons (car alist) (revert-assoc alist key)))
-     ))
-
-  
-  
-    (ly:set-context-property!
-     context context-prop
-     (revert-assoc (ly:get-context-property context context-prop)
-		   setting))
-  )
-
-(define-public (override-auto-beam-setting setting num den)
-  (ly:export
-   (context-spec-music
-    (make-apply-context (lambda (c)
-			  (override-property-setting
-			   c 'autoBeamSettings
-			   setting (ly:make-moment num den))
-			  ))
-    'Voice)
-  ))
-
-(define-public (revert-auto-beam-setting setting)
-  (ly:export
-   (context-spec-music
-    (make-apply-context (lambda (c)
-			  (revert-property-setting
-			   c 'autoBeamSettings
-			   setting)))
-    
-    'Voice)))
-  
-
-
diff --git a/scm/bass-figure.scm b/scm/bass-figure.scm
deleted file mode 100644
index 9c72b95ed0..0000000000
--- a/scm/bass-figure.scm
+++ /dev/null
@@ -1,65 +0,0 @@
-;;;; figured bass support ...
-
-(ly:add-interface
-'bass-figure-interface
- "A bass figure, including bracket"
- '())
-
-(define  (recursive-split-at pred? l)
-  (if (null? l)
-      '()
-      (let*
-	  ((x (split-at-predicate pred? l)))
-	(set-cdr! x (recursive-split-at pred? (cdr x)))
-	x
-	)))
-
-(define-public (make-bass-figure-markup figures context)
-  
-  (define (no-end-bracket? f1 f2)
-    (eq? (ly:get-mus-property f1 'bracket-stop) '())
-    )
-  (define (no-start-bracket? f1 f2)
-    (eq? (ly:get-mus-property f2 'bracket-start) '())
-    )
-
-  ;; TODO: support slashed numerals here.
-  (define (fig-to-markup fig-music)
-    (let*
-	((align-accs (eq? #t (ly:get-context-property context 'alignBassFigureAccidentals)))
-	 (fig  (ly:get-mus-property fig-music 'figure))
-	 (acc  (ly:get-mus-property fig-music 'alteration))
-	 (acc-markup #f)
-	 (fig-markup
-	  (if (string? fig)
-	      (make-simple-markup fig)
-	      (if align-accs (make-simple-markup " ")
-		  (if (not (eq? acc '()))
-		      (make-simple-markup "")
-		      (make-strut-markup)))
-	      )))
-
-      (if (number? acc)
-	  (make-line-markup (list fig-markup
-				  (alteration->text-accidental-markup acc)))
-	  fig-markup)
-      ))
-  
-  (define (fig-seq-to-markup figs)
-    (let*
-	(
-	 (c (make-dir-column-markup (map fig-to-markup figs)))
-	 )
-      (if (eq? (ly:get-mus-property (car figs) 'bracket-start) #t)
-	  (make-bracket-markup c)
-	  c
-	  )))
-  
-  (let*
-      (
-       (ends (recursive-split-at no-end-bracket? (reverse figures)))
-       (starts (map (lambda (x) (recursive-split-at no-start-bracket? x)) ends))
-       )
-    (make-dir-column-markup (map fig-seq-to-markup (apply append starts)))
-    ))
-
diff --git a/scm/beam.scm b/scm/beam.scm
deleted file mode 100644
index d20458eb53..0000000000
--- a/scm/beam.scm
+++ /dev/null
@@ -1,61 +0,0 @@
-;;;;
-;;;; beam.scm -- Beam scheme stuff
-;;;;
-;;;; source file of the GNU LilyPond music typesetter
-;;;; 
-;;;; (c)  2000--2004 Jan Nieuwenhuizen <janneke@gnu.org>
-;;;;
-
-;;
-;; width in staff space.
-;;
-(define (beam-flag-width-function type)
-  (cond
-   ((eq? type 1) 1.98) 
-   ((eq? type 1) 1.65) ;; FIXME: check what this should be and why
-   (else 1.32)))
-
-;; There are several ways to calculate the direction of a beam
-;;
-;; * majority: number count of up or down notes
-;; * mean    : mean centre distance of all notes
-;; * median  : mean centre distance weighted per note
-;;
-;; [Ross] states that the majority of the notes dictates the
-;; direction (and not the mean of "center distance")
-;;
-;; But is that because it really looks better, or because he wants
-;; to provide some real simple hands-on rules?
-;;     
-;; We have our doubts, so we simply provide all sensible alternatives.
-
-
-;;
-;
-; DOCME: what goes into this func, what comes out.
-
-(define (dir-compare up down)
-  (sign (- up down)))
-
-;; arguments are in the form (up . down)
-(define-public (beam-dir-majority count total)
-  (dir-compare (car count) (cdr count)))
-
-(define-public (beam-dir-majority-median count total)
-  "First try majority. If that doesn't work, try median."
-  (let ((maj (dir-compare (car count) (cdr count))))
-    (if (not (= maj 0))
-	maj
-	(beam-dir-median count total))
-    ))
-
-
-(define-public (beam-dir-mean count total)
-  (dir-compare (car total) (cdr total)))
-
-(define-public (beam-dir-median count total)
-  (if (and (> (car count) 0)
-	   (> (cdr count) 0))
-      (dir-compare (/ (car total) (car count)) (/ (cdr total) (cdr count)))
-      (dir-compare (car count) (cdr count))))
-	    
diff --git a/scm/c++.scm b/scm/c++.scm
deleted file mode 100644
index 1978c52447..0000000000
--- a/scm/c++.scm
+++ /dev/null
@@ -1,61 +0,0 @@
-;;;; c++.scm -- implement Scheme frontends to C++ functions
-;;;;
-;;;;  source file of the GNU LilyPond music typesetter
-;;;; 
-;;;; (c)  1998--2004 Jan Nieuwenhuizen <janneke@gnu.org>
-;;;; Han-Wen Nienhuys <hanwen@cs.uu.nl>
-
-;;; Note: this file can't be used without LilyPond executable
-
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;; type predicates.
-(define-public (number-pair?  x)
-  (and (pair? x)
-       (number? (car x)) (number? (cdr x))))
-(define-public (number-or-grob? x)
-  (or (ly:grob? x) (number? x))
-  )
-
-(define-public (grob-list? x)
-  (list? x))
-
-(define-public (moment-pair?  x)
-  (and (pair? x)
-       (ly:moment? (car x)) (ly:moment? (cdr x))))
-
-(define-public (boolean-or-symbol? x)
-  (or (boolean? x) (symbol? x)))
-
-(define-public (number-or-string? x)
-  (or (number? x) (string? x)))
-
-(define-public (scheme? x) #t)
-
-
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;
-
-
-;; moved list to end of lily.scm: then all type-predicates are
-;; defined.
-(define type-p-name-alist '()) 
-
-(define (match-predicate obj alist)
-  (if (null? alist)
-      "Unknown type"
-      (if (apply (caar alist) obj)
-	  (cdar alist)
-	  (match-predicate obj (cdr alist))
-	  )
-      ))
-
-(define-public (object-type obj)
-  (match-predicate obj type-p-name-alist))
-
-(define-public (type-name  predicate)
-  (let ((entry (assoc predicate type-p-name-alist)))
-    (if (pair? entry) (cdr entry)
-	"unknown"
-	)))
diff --git a/scm/chord-entry.scm b/scm/chord-entry.scm
deleted file mode 100644
index 670ff646eb..0000000000
--- a/scm/chord-entry.scm
+++ /dev/null
@@ -1,319 +0,0 @@
-;;;
-;;; Generate chord names for the parser.
-;;;
-;;;
-
-(define-public (construct-chord root duration modifications)
-
-  " Build a chord on root using modifiers in MODIFICATIONS. NoteEvent
-have duration DURATION..
-
-Notes: natural 11 is left from chord if not explicitly specified.
-
-Entry point for the parser. 
-
-"
-  (let*
-      ((flat-mods (flatten-list modifications))
-       (base-chord (stack-thirds (ly:make-pitch 0 4 0) the-canonical-chord))
-       (complete-chord '())
-       (bass #f)
-       (inversion #f)
-       (lead-mod #f)
-       (explicit-11 #f)
-       (start-additions #t))
-
-    (define (interpret-inversion chord mods)
-      "Read /FOO   part. Side effect: INVERSION is set."
-      
-      (if (and (>  (length mods) 1) (eq? (car mods) 'chord-slash))
-	  (begin
-	    (set! inversion (cadr mods))
-	    (set! mods (cddr mods))))
-      
-      (interpret-bass chord mods))
-      
-    (define (interpret-bass chord mods)
-      "Read /+FOO   part. Side effect: BASS is set."
-      
-      (if (and (>  (length mods) 1) (eq? (car mods) 'chord-bass))
-	  (begin
-	    (set! bass (cadr mods))
-	    (set! mods (cddr mods))))
-
-      (if (pair? mods)
-	  (scm-error  'chord-format "construct-chord" "Spurious garbage following chord: ~A" mods #f) 
-	  )
-      
-      chord
-      )
-      
-    (define (interpret-removals  chord mods)
-      (define (inner-interpret chord mods)
-	(if (and (pair? mods) (ly:pitch? (car mods)))
-	    (inner-interpret
-	     (remove-step (+ 1  (ly:pitch-steps (car mods))) chord)
-	     (cdr mods))
-	    (interpret-inversion chord mods))
-	    )
-	
-      (if (and (pair? mods) (eq? (car mods) 'chord-caret))
-	  (inner-interpret chord (cdr mods))
-	  (interpret-inversion chord mods))
-      
-      )
-    
-    (define (interpret-additions  chord mods)
-      "Interpret additions. TODO: should restrict modifier use?"
-      
-      (cond
-       ((null? mods) chord)
-       ((ly:pitch? (car mods))
-	(if (= (pitch-step (car mods)) 11)
-	    (set! explicit-11 #t))
-	(interpret-additions
-	 (cons (car mods) (remove-step (pitch-step (car mods)) chord))
-	 (cdr mods)))
-       ((procedure? (car mods))
-	(interpret-additions  
-	 ((car mods)  chord)
-	 (cdr mods)))
-       (else (interpret-removals  chord mods))
-      ))
-
-    (define (pitch-octavated-strictly-below p root)
-      "return P, but octavated, so it is below  ROOT"
-      (ly:make-pitch
-       (+
-	(ly:pitch-octave root)
-	(if (> (ly:pitch-notename root)
-		(ly:pitch-notename p))
-	    0 -1))
-       (ly:pitch-notename p)
-       (ly:pitch-alteration p)))
-    
-    (define (process-inversion complete-chord)
-      "Take out inversion from COMPLETE-CHORD, and put it at the bottom.
-Return (INVERSION . REST-OF-CHORD).
-
-Side effect: put original pitch in INVERSION.
-If INVERSION is not in COMPLETE-CHORD, it will be set as a BASS, overriding
-the bass specified.  
-
-"
-      (let*
-	  (
-	   (root (car complete-chord))
-	   (inv? (lambda (y)
-		   (and (= (ly:pitch-notename y)
-			   (ly:pitch-notename inversion))
-			(= (ly:pitch-alteration y)
-			   (ly:pitch-alteration inversion))
-			)))
-		 
-	   (rest-of-chord (remove inv? complete-chord))
-	   (inversion-candidates (filter inv? complete-chord))
-	   (down-inversion (pitch-octavated-strictly-below inversion root))
-	   )
-
-	(if (pair? inversion-candidates)
-	    (set! inversion (car inversion-candidates))
-	    (begin
-	      (set! bass inversion)
-	      (set! inversion #f))
-	    )
-	(if inversion
-	    (cons down-inversion rest-of-chord)
-	    rest-of-chord
-	    )
-      ))
-
-    ;; root is always one octave too low.
-
-    ; something weird happens when this is removed,
-    ; every other chord is octavated. --hwn... hmmm. 
-    (set! root (ly:pitch-transpose root (ly:make-pitch 1 0 0)))
-
-    ;; skip the leading : , we need some of the stuff following it.
-    (if (pair? flat-mods)
-	(if (eq? (car flat-mods)  'chord-colon)
-	    (set! flat-mods (cdr flat-mods))
-	    (set! start-additions #f)
-	))
-
-    ;; remember modifier
-    (if (and (pair? flat-mods) (procedure? (car flat-mods)))
-	(begin
-	  (set! lead-mod (car flat-mods))
-	  (set! flat-mods (cdr flat-mods))
-	  ))
-
-    
-
-    ;; extract first  number if present, and build pitch list.
-    (if (and (pair? flat-mods)
-	     (ly:pitch?  (car flat-mods))
-	     (not (eq? lead-mod sus-modifier))
-	     )
-	
-	(begin
-	  (if (=  (pitch-step (car flat-mods)) 11)
-	      (set! explicit-11 #t))
-	  (set! base-chord
-		(stack-thirds (car flat-mods) the-canonical-chord))
-	  (set! flat-mods (cdr flat-mods))
-	))
-
-    ;; apply modifier
-    (if (procedure? lead-mod)
-	(set! base-chord (lead-mod base-chord)))
-
-
-    (set! complete-chord
-	  (if start-additions
-	   (interpret-additions base-chord flat-mods)
-	   (interpret-removals base-chord flat-mods)
-	   ))
-    
-    (set! complete-chord (map (lambda (x) (ly:pitch-transpose x root))
-			      (sort complete-chord ly:pitch<?)))
-
-    ;; If natural 11 + natural 3 is present, but not given explicitly,
-    ;; we remove the 11.
-    (if (and (not explicit-11)
-	     (get-step 11 complete-chord)
-	     (get-step 3 complete-chord)
-	     (= 0 (ly:pitch-alteration (get-step 11 complete-chord)))
-	     (= 0 (ly:pitch-alteration (get-step 3 complete-chord)))
-	     )
-	(begin
-	  (set! complete-chord (remove-step 11  complete-chord))
-	  )
-	  
-	)
-
-    (if inversion
-	(set! complete-chord (process-inversion complete-chord)))
-    (if bass
-	(set! bass (pitch-octavated-strictly-below bass root)))
-    
-    (if #f
-	(begin
-	  (write-me "\n*******\n" flat-mods)
-	  (write-me "root: " root)
-	  (write-me "base chord: " base-chord)
-	  (write-me "complete  chord: " complete-chord)
-	  (write-me "inversion: " inversion)
-	  (write-me "bass: " bass)))
-
-
-
-    (if inversion
-	(make-chord (cdr complete-chord) bass duration (car complete-chord)
-		    inversion)
-	(make-chord complete-chord bass duration #f #f))
-  ))
-
-
-(define (make-chord pitches bass duration inversion original-inv-pitch)
-  "Make EventChord with notes corresponding to PITCHES, BASS and
-DURATION, and INVERSION."
-  (define (make-note-ev pitch)
-    (let*
-	(
-	 (ev   (make-music-by-name 'NoteEvent))
-	 )
-
-      (ly:set-mus-property! ev 'duration duration)
-      (ly:set-mus-property! ev 'pitch pitch)
-      ev      
-      ))
-  
-  (let*
-      (
-       (nots (map make-note-ev pitches))
-       (bass-note (if bass (make-note-ev bass) #f))
-       (inv-note (if inversion (make-note-ev inversion) #f))
-       )
-
-    
-    (if bass-note
-	(begin
-	  (ly:set-mus-property! bass-note 'bass #t)
-	  (set! nots (cons bass-note nots))))
-    
-    
-    (if inv-note
-	(begin
-	  (ly:set-mus-property! inv-note 'inversion #t)
-	  (ly:set-mus-property! inv-note 'octavation
-				(- (ly:pitch-octave inversion)
-				   (ly:pitch-octave original-inv-pitch))
-				)
-	  (set! nots (cons inv-note nots))))
-    
-    (make-event-chord nots)
-  ))
-
-
-;;;;;;;;;;;;;;;;
-; chord modifiers change the pitch list.
-
-(define (aug-modifier  pitches)
-  (set! pitches  (replace-step (ly:make-pitch 0 4 SHARP) pitches))
-  (replace-step (ly:make-pitch 0 2 0) pitches) 
-  )
-
-(define (minor-modifier  pitches)
-  (replace-step (ly:make-pitch 0 2 FLAT) pitches)
-  )
-
-(define (maj7-modifier  pitches)
-  (set! pitches (remove-step 7 pitches))
-  (cons  (ly:make-pitch 0 6 0) pitches)
-  )
-
-(define (dim-modifier  pitches)
-  (set! pitches (replace-step (ly:make-pitch 0 2 FLAT) pitches))
-  (set! pitches (replace-step (ly:make-pitch 0 4 FLAT) pitches))
-  (set! pitches (replace-step (ly:make-pitch 0 6 DOUBLE-FLAT) pitches))
-  pitches
-  )
-
-(define (sus-modifier  pitches)
-   (remove-step (pitch-step (ly:make-pitch 0 2 0)) pitches)
-  )
-
-(define-public default-chord-modifier-list
-  `((m . ,minor-modifier)
-    (min . ,minor-modifier)
-    (aug . , aug-modifier)
-    (dim . , dim-modifier)
-    (maj . , maj7-modifier)
-    (sus . , sus-modifier)
-    ))
-
-
-;; canonical 13 chord.
-(define the-canonical-chord
-  (map
-   (lambda (n)
-     (define (nca x)
-       (if (= x 7) FLAT 0))
-     (if (>= n 8)
-	 (ly:make-pitch 1 (- n 8) (nca n))
-	 (ly:make-pitch 0 (- n 1) (nca n))))
-   '(1 3 5 7 9 11 13)))
-
-(define (stack-thirds upper-step base)
-  "Stack thirds listed in BASE until we reach UPPER-STEP. Add
-UPPER-STEP separately."
-   (cond
-    ((null? base) '())
-    ((> (ly:pitch-steps upper-step) (ly:pitch-steps (car base)))
-     (cons (car base) (stack-thirds upper-step  (cdr base))))
-    ((<= (ly:pitch-steps upper-step) (ly:pitch-steps (car base)))
-     (list upper-step))
-    (else '())
-    ))
-
diff --git a/scm/chord-generic-names.scm b/scm/chord-generic-names.scm
deleted file mode 100644
index fed4cdff68..0000000000
--- a/scm/chord-generic-names.scm
+++ /dev/null
@@ -1,283 +0,0 @@
-;;;; chord-generic-names.scm -- Compile chord names
-;;;;
-;;;;  source file of the GNU LilyPond music typesetter
-;;;; 
-;;;; (c) 2003 Jan Nieuwenhuizen <janneke@gnu.org>
-
-
-;;;; NOTE: this is experimental code
-;;;; Base and inversion are ignored.
-;;;; Naming of the base chord (steps 1-5) is handled by exceptions only
-;;;; see input/test/chord-names-dpnj.ly
-
-(define (markup-or-empty-markup markup)
-  "Return MARKUP if markup, else empty-markup"
-  (if (markup? markup) markup empty-markup))
-
-(define (conditional-kern-before markup bool amount)
-  "Add AMOUNT of space before MARKUP if BOOL is true."
-  (if bool
-      (make-line-markup
-       (list (make-hspace-markup amount)
-	     markup))
-      markup))
-
-(define-public (banter-chord-names pitches bass inversion context)
-  (ugh-compat-double-plus-new-chord->markup
-   'banter pitches bass inversion context '())
-  )
-
-
-(define-public (jazz-chord-names pitches bass inversion context)
-  (ugh-compat-double-plus-new-chord->markup
-   'jazz pitches bass inversion context '())
-  )
-
-
-(define-public (ugh-compat-double-plus-new-chord->markup
-		style pitches bass inversion context options)
-  "Entry point for New_chord_name_engraver.
-
-FIXME: func, options/context have changed
- See
-double-plus-new-chord-name.scm for the signature of STYLE.  PITCHES,
-BASS and INVERSION are lily pitches.  OPTIONS is an alist-alist (see
-input/test/dpncnt.ly).
- "
-
-  
-  (define (step-nr pitch)
-    (let* ((pitch-nr (+ (* 7 (ly:pitch-octave pitch))
-			(ly:pitch-notename pitch)))
-	   (root-nr (+ (* 7 (ly:pitch-octave (car pitches)))
-			(ly:pitch-notename (car pitches)))))
-      (+ 1 (- pitch-nr root-nr))))
-    
-  (define (next-third pitch)
-    (ly:pitch-transpose pitch
-			(ly:make-pitch 0 2 (if (or (= (step-nr pitch) 3)
-						   (= (step-nr pitch) 5))
-					       FLAT 0))))
-
-  (define (step-alteration pitch)
-    (let* ((diff (ly:pitch-diff (ly:make-pitch 0 0 0) (car pitches)))
-	   (normalized-pitch (ly:pitch-transpose pitch diff))
-	   (alteration (ly:pitch-alteration normalized-pitch)))
-      (if (= (step-nr pitch) 7) (+ alteration SEMI-TONE) alteration)))
-    
-  (define (pitch-unalter pitch)
-    (let ((alteration (step-alteration pitch)))
-      (if (= alteration 0)
-	  pitch
-	  (ly:make-pitch (ly:pitch-octave pitch) (ly:pitch-notename pitch)
-			 (- (ly:pitch-alteration pitch) alteration)))))
-
-  (define (step-even-or-altered? pitch)
-    (let ((nr (step-nr pitch)))
-      (if (!= (modulo nr 2) 0)
-	  (!= (step-alteration pitch) 0)
-	  #t)))
-
-  (define (step->markup-plusminus pitch)
-    (make-line-markup
-     (list
-      (make-simple-markup (number->string (step-nr pitch)))
-      (make-simple-markup
-       (case (step-alteration pitch)
-	 ((DOUBLE-FLAT) "--")
-	 ((FLAT) "-")
-	 ((NATURAL) "")
-	 ((SHARP) "+")
-	 ((DOUBLE-SHARP) "++"))))))
-  
-  (define (step->markup-accidental pitch)
-    (make-line-markup
-     (list (accidental->markup (step-alteration pitch))
-	   (make-simple-markup (number->string (step-nr pitch))))))
-
-  (define (step->markup-ignatzek pitch)
-    (make-line-markup
-     (if (and (= (step-nr pitch) 7)
-	      (= (step-alteration pitch) 1))
-	 (list (ly:get-context-property context 'majorSevenSymbol))
-	 (list (accidental->markup (step-alteration pitch))
-	       (make-simple-markup (number->string (step-nr pitch)))))))
-	 
-  ;; tja, kennok
-  (define (make-sub->markup step->markup)
-    (lambda (pitch)
-      (make-line-markup (list (make-simple-markup "no")
-			      (step->markup pitch)))))
-			 
-  (define (step-based-sub->markup step->markup pitch)
-    (make-line-markup (list (make-simple-markup "no") (step->markup pitch))))
-			 
-  (define (get-full-list pitch)
-    (if (<= (step-nr pitch) (step-nr (last pitches)))
-	(cons pitch (get-full-list (next-third pitch)))
-	'()))
-
-  (define (get-consecutive nr pitches)
-    (if (pair? pitches)
-	(let* ((pitch-nr (step-nr (car pitches)))
-	       (next-nr (if (!= (modulo pitch-nr 2) 0) (+ pitch-nr 2) nr)))
-	  (if (<= pitch-nr nr)
-	      (cons (car pitches) (get-consecutive next-nr (cdr pitches)))
-	      '()))
-	'()))
-
-  (define (full-match exceptions)
-    (if (pair? exceptions)
-	(let* ((e (car exceptions))
-	       (e-pitches (car e)))
-	  (if (equal? e-pitches pitches)
-	      e
-	      (full-match (cdr exceptions))))
-	#f))
-
-  (define (partial-match exceptions)
-    (if (pair? exceptions)
-	(let* ((e (car exceptions))
-	       (e-pitches (car e)))
-	  (if (equal? e-pitches (take pitches (length e-pitches) ))
-	      e
-	      (partial-match (cdr exceptions))))
-	#f))
-
-  (if #f (begin  
-	   (write-me "pitches: " pitches)))
-  (let* ((full-exceptions
-	  (ly:get-context-property context 'chordNameExceptionsFull))
-	 (full-exception (full-match full-exceptions))
-	 (full-markup (if full-exception (cadr full-exception) '()))
-	 (partial-exceptions
-	  (ly:get-context-property context 'chordNameExceptionsPartial))
-	 (partial-exception (partial-match partial-exceptions))
-	 (partial-pitches (if partial-exception (car partial-exception) '()))
-	 (partial-markup-prefix
-	  (if partial-exception (markup-or-empty-markup
-				 (cadr partial-exception)) empty-markup))
-	 (partial-markup-suffix
-	  (if (and partial-exception (pair? (cddr partial-exception)))
-	      (markup-or-empty-markup (caddr partial-exception)) empty-markup))
-	 (root (car pitches))
-	 (full (get-full-list root))
-	 ;; kludge alert: replace partial matched lower part of all with
-	 ;; 'normal' pitches from full
-	 ;; (all pitches)
-	 (all (append (take full (length partial-pitches) )
-		      (drop pitches (length partial-pitches) )))
-	      
-	 (highest (last all))
-	 (missing (list-minus full (map pitch-unalter all)))
-	 (consecutive (get-consecutive 1 all))
-	 (rest (list-minus all consecutive))
-	 (altered (filter step-even-or-altered? all))
-	 (cons-alt (filter step-even-or-altered? consecutive))
-	 (base (list-minus consecutive altered)))
-	 
-
-    (if #f (begin
-	     (write-me "full:" full)
-	      ;; (write-me "partial-pitches:" partial-pitches)
-	      (write-me "full-markup:" full-markup)
-	      (write-me "partial-markup-perfix:" partial-markup-prefix)
-	      (write-me "partial-markup-suffix:" partial-markup-suffix)
-	      (write-me "all:" all)
-	      (write-me "altered:" altered)
-	      (write-me "missing:" missing)
-	      (write-me "consecutive:" consecutive)
-	      (write-me "rest:" rest)
-	      (write-me "base:" base)))
-
-    (case style
-      ((banter)
-       ;;    root
-       ;;    + steps:altered + (highest all -- if not altered)
-       ;;    + subs:missing
-       
-       (let* ((root->markup (assoc-get-default
-			      'root->markup options note-name->markup))
-	      (step->markup (assoc-get-default
-			     'step->markup options step->markup-plusminus))
-	      (sub->markup (assoc-get-default
-			    'sub->markup options
-			    (lambda (x)
-			      (step-based-sub->markup step->markup x))))
-	      (sep (assoc-get-default
-		    'separator options (make-simple-markup "/"))))
-	 
-	 (if
-	  (pair? full-markup)
-	  (make-line-markup (list (root->markup root) full-markup))
-	    
-	  (make-line-markup
-	   (list
-	    (root->markup root)
-	    partial-markup-prefix
-	    (make-normal-size-super-markup
-	     (markup-join
-	      (apply append
-		     (map step->markup
-			  (append altered
-				  (if (and (> (step-nr highest) 5)
-					   (not
-					    (step-even-or-altered? highest)))
-				      (list highest) '())))
-		      (list partial-markup-suffix)
-		     (list (map sub->markup missing)))
-	      sep)))))))
-       
-      
-      ((jazz)
-       ;;    root
-       ;;    + steps:(highest base) + cons-alt
-       ;;    + 'add'
-       ;;    + steps:rest
-       (let* ((root->markup (assoc-get-default
-			      'root->markup options note-name->markup))
-	      (step->markup
-	       (assoc-get-default
-		;; FIXME: ignatzek
-		;;'step->markup options step->markup-accidental))
-		'step->markup options step->markup-ignatzek))
-	      (sep (assoc-get-default
-		    'separator options (make-simple-markup " ")))
-	      (add-prefix (assoc-get-default 'add-prefix options
-					     (make-simple-markup " add"))))
-	 
-	 (if
-	  (pair? full-markup)
-	  (make-line-markup (list (root->markup root) full-markup))
-	  
-	  (make-line-markup
-	   (list
-	    (root->markup root)
-	    partial-markup-prefix
-	    (make-normal-size-super-markup
-	     (make-line-markup
-	      (list
-	       
-	       ;; kludge alert: omit <= 5
-	       ;;(markup-join (map step->markup
-	       ;;			 (cons (last base) cons-alt)) sep)
-	       
-	       ;; This fixes:
-	       ;;  c     C5       -> C
-	       ;;  c:2   C5 2     -> C2
-	       ;;  c:3-  Cm5      -> Cm
-	       ;;  c:6.9 C5 6add9 -> C6 add 9 (add?)
-	       ;;  ch = \chords { c c:2 c:3- c:6.9^7 }
-	       (markup-join (map step->markup
-  				 (let ((tb (last base)))
-  				   (if (> (step-nr tb) 5)
-  				       (cons tb cons-alt)
-  				       cons-alt))) sep)
-	       
-	       (if (pair? rest)
-		   add-prefix
-		   empty-markup)
-	       (markup-join (map step->markup rest) sep)
-	       partial-markup-suffix))))))))
-       
-       (else empty-markup))))
diff --git a/scm/chord-ignatzek-names.scm b/scm/chord-ignatzek-names.scm
deleted file mode 100644
index 6e84f8f0c9..0000000000
--- a/scm/chord-ignatzek-names.scm
+++ /dev/null
@@ -1,319 +0,0 @@
-;;;
-;;; chord-ignatzek-names.scm --  chord name utility functions
-;;;
-;;; source file of the GNU LilyPond music typesetter
-;;; 
-;;; (c)  2000--2004  Han-Wen Nienhuys <hanwen@cs.uu.nl>
-
-
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;
-;; jazz-part 2
-;;
-;; after Klaus Ignatzek,   Die Jazzmethode fuer Klavier 1.
-;; 
-;; The idea is: split chords into
-;;  
-;;  ROOT PREFIXES MAIN-NAME ALTERATIONS SUFFIXES ADDITIONS
-;;
-;; and put that through a layout routine.
-;; 
-;; the split is a procedural process, with lots of set!. 
-;;
-
-
-;; todo: naming is confusing: steps  (0 based) vs. steps (1 based).
-(define (pitch-step p)
-  "Musicological notation for an interval. Eg. C to D is 2."
-  (+ 1 (ly:pitch-steps p)))
-
-(define (get-step x ps)
-  "Does PS have the X step? Return that step if it does."
-  (if (null? ps)
-      #f
-      (if (= (- x 1) (ly:pitch-steps (car ps)))
-	  (car ps) 
-	  (get-step x (cdr ps)))
-      ))
-
-(define (replace-step p ps)
-  "Copy PS, but replace the step of P in PS."
-  (if (null? ps)
-      '()
-      (let*
-	  (
-	   (t (replace-step p (cdr ps)))
-	   )
-
-	(if (= (ly:pitch-steps p) (ly:pitch-steps (car ps)))
-	    (cons p t)
-	    (cons (car ps) t)
-	    ))
-      ))
-
-(define (remove-step x ps)
-  "Copy PS, but leave out the Xth step."
-  (if (null? ps)
-      '()
-      (let*
-	  (
-	   (t (remove-step x (cdr ps)))
-	   )
-
-	(if (= (- x 1) (ly:pitch-steps (car ps)))
-	    t
-	    (cons (car ps) t)
-	    ))
-      ))
-
-
-(define-public (ignatzek-chord-names
-		in-pitches bass inversion
-		context)
-
-  (define (remove-uptil-step x ps)
-    "Copy PS, but leave out everything below the Xth step."
-    (if (null? ps)
-	'()
-	(if (< (ly:pitch-steps (car ps)) (- x 1))
-	    (remove-uptil-step x (cdr ps))
-	    ps)
-	))
-  
-  (define name-root (ly:get-context-property context 'chordRootNamer))
-  (define name-note 
-    (let ((nn (ly:get-context-property context 'chordNoteNamer)))
-      (if (eq? nn '())
-	  ; replacing the next line with name-root gives guile-error...? -rz
-
-	  ;; apparently sequence of defines is equivalent to let, not let* ? -hwn
-	  (ly:get-context-property context 'chordRootNamer)	  
-	  ;; name-root
-	  nn)))
-
-  (define (is-natural-alteration? p)
-    (= (natural-chord-alteration p)  (ly:pitch-alteration p)))
-  
-  
-  (define (ignatzek-format-chord-name
-	   root
-	   prefix-modifiers
-	   main-name
-	   alteration-pitches
-	   addition-pitches
-	   suffix-modifiers
-	   bass-pitch
-	   )
-
-    "Format for the given (lists of) pitches. This is actually more
-work than classifying the pitches."
-    
-    (define (filter-main-name p)
-    "The main name: don't print anything for natural 5 or 3."
-    (if
-     (or (not (ly:pitch? p))
-	 (and (is-natural-alteration? p)
-	  (or (= (pitch-step p) 5)
-	      (= (pitch-step p) 3))))
-     '()
-     (list (name-step p))
-     ))
-
-    (define (glue-word-to-step word x)
-      (make-line-markup 
-       (list
-	(make-simple-markup word)
-	(name-step x)))
-      )
-    
-    (define (suffix-modifier->markup mod)
-      (if (or (= 4 (pitch-step mod))
-	      (= 2 (pitch-step mod)))
-	  (glue-word-to-step "sus" mod)
-	  (glue-word-to-step "huh" mod)
-	  ))
-    
-    (define (prefix-modifier->markup mod)
-      (if (and (= 3 (pitch-step mod))
-	       (= FLAT (ly:pitch-alteration mod)))
-	  (make-simple-markup "m")
-	  (make-simple-markup "huh")
-	  ))
-    
-    (define (filter-alterations alters)
-      "Filter out uninteresting (natural) pitches from ALTERS."
-      
-      (define (altered? p)
-	(not (is-natural-alteration? p)))
-      
-      (if
-       (null? alters)
-       '()
-       (let*
-	   (
-	    (l (filter altered? alters))
-	    (lp (last-pair alters))
-	    )
-
-	 ;; we want the highest also if unaltered
-	 (if (and (not (altered? (car lp)))
-		  (> (pitch-step (car lp)) 5))
-	     (append l (last-pair alters))
-	     l)
-	 )))
-
-    (define (name-step pitch)
-      (define (step-alteration pitch)
-	(- (ly:pitch-alteration pitch)
-	   (natural-chord-alteration pitch)
-	   ))
-
-      (let*
-	  (
-	   (num-markup (make-simple-markup
-			(number->string (pitch-step pitch))))
-	   (args (list num-markup))
-	   (total (if (= (ly:pitch-alteration pitch) 0)
-		      (if (= (pitch-step pitch) 7)
-			  (list (ly:get-context-property context 'majorSevenSymbol))
-			  args)
-		      (cons (accidental->markup (step-alteration pitch)) args)
-		      ))
-	   )
-	
-	(make-line-markup total)))
-
-    (let*
-	(
-	 (sep (ly:get-context-property context 'chordNameSeparator))
-	 (root-markup (name-root root))
-	 (add-markups (map (lambda (x)
-			     (glue-word-to-step "add" x))
-			   addition-pitches))
-	 (filtered-alterations (filter-alterations alteration-pitches))
-	 (alterations (map name-step filtered-alterations))
-	 (suffixes (map suffix-modifier->markup suffix-modifiers))
-	 (prefixes (map prefix-modifier->markup prefix-modifiers))
-	 (main-markups (filter-main-name main-name))
-	 (to-be-raised-stuff (markup-join
-			      (append
-			       main-markups
-			       alterations
-			       suffixes
-			       add-markups) sep))
-	 (base-stuff (if (ly:pitch? bass-pitch)
-			 (list sep (name-note bass-pitch))
-			 '()))
-	 )
-
-      (set! base-stuff
-	    (append
-	     (list root-markup
-		   (markup-join prefixes sep)
-		   (make-super-markup to-be-raised-stuff))
-	     base-stuff))
-      (make-line-markup base-stuff)
-
-       ))
-
-  (define (ignatzek-format-exception
-	   root
-	   exception-markup
-	   bass-pitch)
-
-      (make-line-markup
-       `(
-	,(name-root root)
-	,exception-markup
-	. 
-	,(if (ly:pitch? bass-pitch)
-	    (list (ly:get-context-property context 'chordNameSeparator)
-		  (name-note bass-pitch))
-	   '()))))
-
-  (let*
-      (
-       (root (car in-pitches))
-       (pitches (map (lambda (x) (ly:pitch-diff x root)) (cdr in-pitches)))
-       (exceptions (ly:get-context-property context 'chordNameExceptions))
-       (exception (assoc-get-default pitches exceptions #f))
-       (prefixes '())
-       (suffixes '())
-       (add-steps '())
-       (main-name #f)
-       (bass-note
-	(if (ly:pitch? inversion)
-	    inversion
-	    bass))
-       (alterations '())
-       )
-   
-    (if exception
-     (ignatzek-format-exception  root exception bass-note)
-     
-     (begin				; no exception.
-       
-       ; handle sus4 and sus2 suffix: if there is a 3 together with
-       ; sus2 or sus4, then we explicitly say  add3.
-       (map
-	(lambda (j)
-	  (if (get-step j pitches)
-	      (begin
-		(if (get-step 3 pitches)
-		    (begin
-		      (set! add-steps (cons (get-step 3 pitches) add-steps))
-		      (set! pitches (remove-step 3 pitches))
-		      ))
-		(set! suffixes  (cons (get-step j pitches) suffixes))
-		)
-	      )
-	  ) '(2 4) )
-
-       ;; do minor-3rd modifier.
-       (if (and (get-step 3 pitches)
-		(= (ly:pitch-alteration (get-step 3 pitches)) FLAT))
-	   (set! prefixes (cons (get-step 3 pitches) prefixes)))
-       
-       ;; lazy bum. Should write loop.
-       (cond
-	((get-step 7 pitches) (set! main-name (get-step 7 pitches)))
-	((get-step 6 pitches) (set! main-name (get-step 6 pitches)))
-	((get-step 5 pitches) (set! main-name (get-step 5 pitches)))
-	((get-step 4 pitches) (set! main-name (get-step 4 pitches)))
-	((get-step 3 pitches) (set! main-name (get-step 3 pitches)))
-	)
-       
-       (let*
-	   (
-	    (3-diff? (lambda (x y)
-		       (= (- (pitch-step y) (pitch-step x)) 2)))
-	    (split (split-at-predicate 3-diff? (remove-uptil-step 5 pitches)))
-	    )
-	 (set! alterations (append alterations (car split)))
-	 (set! add-steps (append add-steps (cdr split)))
-	 (set! alterations (delq main-name alterations))
-	 (set! add-steps (delq main-name add-steps))
-
-
-	 ;; chords with natural (5 7 9 11 13) or leading subsequence.
-	 ;; etc. are named by the top pitch, without any further
-	 ;; alterations.
-	 (if (and
-	      (ly:pitch? main-name)
-	      (= 7 (pitch-step main-name))
-	      (is-natural-alteration? main-name)
-	      (pair? (remove-uptil-step 7 alterations))
-	      (reduce (lambda (x y) (and x y)) #t
-		      (map is-natural-alteration? alterations)))
-	     (begin
-	       (set! main-name (last alterations))
-	       (set! alterations '())
-	       ))
-
-	 (ignatzek-format-chord-name root prefixes main-name alterations add-steps suffixes bass-note)
-	 )))
-       ))
-  
-
diff --git a/scm/chord-name.scm b/scm/chord-name.scm
deleted file mode 100644
index 13d187fa1c..0000000000
--- a/scm/chord-name.scm
+++ /dev/null
@@ -1,127 +0,0 @@
-;;;
-;;; chord-name.scm --  chord name utility functions
-;;;
-;;; source file of the GNU LilyPond music typesetter
-;;; 
-;;; (c)  2000--2004 Jan Nieuwenhuizen <janneke@gnu.org>
-;;;
-;;; Han-Wen Nienhuys <hanwen@cs.uu.nl>
-
-(define (natural-chord-alteration p)
-  "Return the natural alteration for step P."
-  (if (= (ly:pitch-steps p) 6)
-      FLAT
-      0))
-
-
-;; 
-;; TODO: make into markup.
-;; 
-(define-public (alteration->text-accidental-markup alteration)
-  (make-smaller-markup
-   (make-raise-markup
-    (if (= alteration FLAT)
-	0.3
-	0.6)
-    (make-musicglyph-markup
-     (string-append "accidentals-" (number->string alteration))))))
-  
-(define (accidental->markup alteration)
-  "Return accidental markup for ALTERATION."
-  (if (= alteration 0)
-      (make-line-markup (list empty-markup))
-      (conditional-kern-before
-       (alteration->text-accidental-markup alteration)
-       (= alteration FLAT) 0.2
-       )))
-
-
-(define-public (note-name->markup pitch)
-  "Return pitch markup for PITCH."
-  (make-line-markup
-   (list
-    (make-simple-markup
-     (vector-ref #("C" "D" "E" "F" "G" "A" "B") (ly:pitch-notename pitch)))
-     (accidental->markup (ly:pitch-alteration pitch)))))
-
-
-(define-public ((chord-name->german-markup B-instead-of-Bb) pitch)
-  "Return pitch markup for PITCH, using german note names.
-   If B-instead-of-Bb is set to #t real german names are returned.
-   Otherwise semi-german names (with Bb and below keeping the british names)
-"
-  (let* ((name (ly:pitch-notename pitch))
-         (alt (ly:pitch-alteration pitch))
-	 (n-a (if (member (cons name alt) `((6 . ,FLAT) (6 . ,DOUBLE-FLAT)))
-		 (cons 7 (+ (if B-instead-of-Bb SEMI-TONE 0) alt))
-		 (cons name alt))))
-    (make-line-markup
-     (list
-      (make-simple-markup
-       (vector-ref #("C" "D" "E" "F" "G" "A" "H" "B") (car n-a)))
-      (make-normal-size-super-markup
-       (accidental->markup (cdr n-a)))))))
-
-
-(define-public (note-name->german-markup  pitch)
-  (let* ((name (ly:pitch-notename pitch))
-	 (alt (ly:pitch-alteration pitch))
-	 (n-a (if (member (cons name alt) `((6 . ,FLAT) (6 . ,DOUBLE-FLAT)))
-		  (cons 7 (+ SEMI-TONE alt))
-		  (cons name alt))))
-    (make-line-markup
-     (list
-      (string-append
-       (list-ref '("c" "d" "e" "f" "g" "a" "h" "b")  (car n-a) )
-       (if (or (equal? (car n-a) 2) (equal? (car n-a) 5))
-	   (list-ref '( "ses"  "s" "" "is" "isis") (+ 2 (/ (cdr n-a) 2) ))
-	   (list-ref '("eses" "es" "" "is" "isis") (+ 2 (/ (cdr n-a) 2) ))
-	   ))))))
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;
-
-;; fixme we should standardize on omit-root (or the other one.)
-;; perhaps the  default should also be reversed --hwn
-(define-public (sequential-music-to-chord-exceptions seq . rest)
-  "Transform sequential music SEQ of type <<c d e>>-\\markup{ foobar }
-to (cons CDE-PITCHES FOOBAR-MARKUP), or to (cons DE-PITCHES
-FOOBAR-MARKUP) if OMIT-ROOT is given and non-false.
-"
-
-  (define (chord-to-exception-entry m)
-    (let* ((elts (ly:get-mus-property m 'elements))
-	   (omit-root (and (pair? rest) (car rest)))
-	   (pitches (map (lambda (x) (ly:get-mus-property x 'pitch))
-			 (filter
-			  (lambda (y) (memq 'note-event
-					    (ly:get-mus-property y 'types)))
-			  elts)))
-	   (sorted (sort pitches ly:pitch<?))
-	   (root (car sorted))
-	   
-	   ;; ugh?
-	   ;;(diff (ly:pitch-diff root (ly:make-pitch -1 0 0)))
-	   ;; FIXME.  This results in #<Pitch c> ...,
-	   ;; but that is what we need because default octave for
-	   ;; \chords has changed to c' too?
-	   (diff (ly:pitch-diff root (ly:make-pitch 0 0 0)))
-	   (normalized (map (lambda (x) (ly:pitch-diff x diff)) sorted))
-	   (texts (map (lambda (x) (ly:get-mus-property x 'text))
-		       (filter
-			(lambda (y) (memq 'text-script-event
-					  (ly:get-mus-property y 'types)))
-			elts)))
-
-	   (text (if (null? texts) #f (if omit-root (car texts) texts))))
-      (cons (if omit-root (cdr normalized) normalized) text)))
-
-  (define (is-req-chord? m)
-    (and
-     (memq 'event-chord (ly:get-mus-property m 'types))
-     (not (equal? ZERO-MOMENT (ly:music-length m)))))
-
-  (let* ((elts (filter is-req-chord? (ly:get-mus-property seq 'elements)))
-	 (alist (map chord-to-exception-entry elts)))
-    (filter (lambda (x) (cdr x)) alist)))
-
diff --git a/scm/clef.scm b/scm/clef.scm
deleted file mode 100644
index d58fd23708..0000000000
--- a/scm/clef.scm
+++ /dev/null
@@ -1,151 +0,0 @@
-
-;; (name . (glyph clef-position octavation))
-;;
-;; -- the name clefOctavation is misleading. The value 7 is 1 octave, not 7 Octaves.
-
-(define supported-clefs '(
-	  ("treble" . ("clefs-G" -2 0))
-	  ("violin" . ("clefs-G" -2 0))
-	  ("G" . ("clefs-G" -2 0))
-	  ("G2" . ("clefs-G" -2 0))
-	  ("french" . ("clefs-G" -4  0))
-	  ("soprano" . ("clefs-C" -4  0))
-	  ("mezzosoprano" . ("clefs-C" -2  0))
-	  ("alto" . ("clefs-C" 0 0))
-	  ("C" . ("clefs-C" 0 0))
-	  ("tenor" . ("clefs-C" 2 0))
-	  ("baritone" . ("clefs-C" 4  0))
-	  ("varbaritone"  . ("clefs-F" 0 0))
-	  ("bass" . ("clefs-F" 2  0))
-	  ("F" . ( "clefs-F" 2 0))
-	  ("subbass" . ("clefs-F" 4 0))
-          ("percussion" . ("clefs-percussion" 0 0))
-          ("tab" . ("clefs-tab" 0 0))
-
-	  ;; should move mensural stuff to separate file? 
-	  ("vaticana_do1" . ("clefs-vaticana_do" -1 0))
-	  ("vaticana_do2" . ("clefs-vaticana_do" 1 0))
-	  ("vaticana_do3" . ("clefs-vaticana_do" 3 0))
-	  ("vaticana_fa1" . ("clefs-vaticana_fa" -1 0))
-	  ("vaticana_fa2" . ("clefs-vaticana_fa" 1 0))
-	  ("medicaea_do1" . ("clefs-medicaea_do" -1 0))
-	  ("medicaea_do2" . ("clefs-medicaea_do" 1 0))
-	  ("medicaea_do3" . ("clefs-medicaea_do" 3 0))
-	  ("medicaea_fa1" . ("clefs-medicaea_fa" -1 0))
-	  ("medicaea_fa2" . ("clefs-medicaea_fa" 1 0))
-	  ("hufnagel_do1" . ("clefs-hufnagel_do" -1 0))
-	  ("hufnagel_do2" . ("clefs-hufnagel_do" 1 0))
-	  ("hufnagel_do3" . ("clefs-hufnagel_do" 3 0))
-	  ("hufnagel_fa1" . ("clefs-hufnagel_fa" -1 0))
-	  ("hufnagel_fa2" . ("clefs-hufnagel_fa" 1 0))
-	  ("hufnagel_do_fa" . ("clefs-hufnagel_do_fa" 4 0))
-	  ("mensural_c1" . ("clefs-mensural_c" -2 0))
-	  ("mensural_c2" . ("clefs-mensural_c" 0 0))
-	  ("mensural_c3" . ("clefs-mensural_c" 2 0))
-	  ("mensural_c4" . ("clefs-mensural_c" 4 0))
-	  ("mensural_f" . ("clefs-mensural_f" 2 0))
-	  ("mensural_g" . ("clefs-mensural_g" -2 0))
-	  ("neo_mensural_c1" . ("clefs-neo_mensural_c" -4 0))
-	  ("neo_mensural_c2" . ("clefs-neo_mensural_c" -2 0))
-	  ("neo_mensural_c3" . ("clefs-neo_mensural_c" 0 0))
-	  ("neo_mensural_c4" . ("clefs-neo_mensural_c" 2 0))
-	  ("petrucci_c1" . ("clefs-petrucci_c1" -4 0))
-	  ("petrucci_c2" . ("clefs-petrucci_c2" -2 0))
-	  ("petrucci_c3" . ("clefs-petrucci_c3" 0 0))
-	  ("petrucci_c4" . ("clefs-petrucci_c4" 2 0))
-	  ("petrucci_c5" . ("clefs-petrucci_c5" 4 0))
-	  ("petrucci_f" . ("clefs-petrucci_f" 2 0))
-	  ("petrucci_g" . ("clefs-petrucci_g" -2 0))
-	)
-)
-
-
-;; "an alist mapping GLYPHNAME to the position of the central C for that symbol"
-(define c0-pitch-alist
-  '(("clefs-G" . -4)
-    ("clefs-C" . 0)
-    ("clefs-F" . 4)
-    ("clefs-percussion" . 0)
-    ("clefs-tab" . 0 )
-    ("clefs-vaticana_do" . 0)
-    ("clefs-vaticana_fa" . 4)
-    ("clefs-medicaea_do" . 0)
-    ("clefs-medicaea_fa" . 4)
-    ("clefs-hufnagel_do" . 0)
-    ("clefs-hufnagel_fa" . 4)
-    ("clefs-hufnagel_do_fa" . 0)
-    ("clefs-mensural_c" . 0)
-    ("clefs-mensural_f" . 4)
-    ("clefs-mensural_g" . -4)
-    ("clefs-neo_mensural_c" . 0)
-    ("clefs-petrucci_c1" . 0)
-    ("clefs-petrucci_c2" . 0)
-    ("clefs-petrucci_c3" . 0)
-    ("clefs-petrucci_c4" . 0)
-    ("clefs-petrucci_c5" . 0)
-    ("clefs-petrucci_f" . 4)
-    ("clefs-petrucci_g" . -4)
-  )
-)
-
-(define-public (make-clef-set clef-name)
-  "Generate the clef setting commands for a clef with name CL."
-  (define (make-prop-set props)
-    (let*
-	(
-	 (m (make-music-by-name 'PropertySet))
-	 )
-
-      (map (lambda (x) (ly:set-mus-property! m (car x) (cdr x))) props)
-      m
-    ))
-    
-  (let ((e '())
-	(c0 0)
-	(oct 0)
-	(match (string-match "^(.*)([_^])([0-9]+)$" clef-name)))
-
-    (if match
-	(begin
-	  (set! clef-name (match:substring match 1))
-	  (set! oct
-		(*
-		 (if (equal? (match:substring match 2) "^")
-		     -1 1)
-		 (- (string->number (match:substring match 3)) 1))
-	  )))
-    
-
-    (set! e  (assoc clef-name supported-clefs))
-    
-    (if (pair? e)
-	(let* 
-	    (
-	     (musics (map make-prop-set  
-	  
-			  `(((symbol . clefGlyph)
-			     (value . ,(cadr e))
-			     )
-			    ((symbol . centralCPosition)
-			     (value . ,(+ oct (caddr e) (cdr  (assoc  (cadr e) c0-pitch-alist))))
-			     )
-			    ((symbol . clefPosition)
-			     (value . ,(caddr e))
-			     )
-			    ((symbol . clefOctavation)
-			     (value . ,(- oct))
-			     )
-			    )))
-	     (seq (make-music-by-name 'SequentialMusic))
-	     (csp (make-music-by-name 'ContextSpeccedMusic))
-	     )
-
-	  (ly:set-mus-property! seq 'elements musics)
-	  (context-spec-music seq 'Staff))
-	(begin
-	  (ly:warn (format "Unknown clef type `~a'
-See scm/lily.scm for supported clefs" clef-name))
-	  (make-music-by-name 'Music)
-	  
-	)
-    )))
diff --git a/scm/define-grob-interfaces.scm b/scm/define-grob-interfaces.scm
deleted file mode 100644
index 4cb87db2b3..0000000000
--- a/scm/define-grob-interfaces.scm
+++ /dev/null
@@ -1,141 +0,0 @@
-;;;; interface-description.scm -- part of generated backend documentation
-;;;;
-;;;;  source file of the GNU LilyPond music typesetter
-;;;; 
-;;;; (c)  1998--2004  Han-Wen Nienhuys <hanwen@cs.uu.nl>
-;;;;                 Jan Nieuwenhuizen <janneke@gnu.org>
-
-
-; should include default value?
-
-
-(ly:add-interface
- 'cluster-beacon-interface
-
- "A place holder for the cluster spanner to determine the vertical
-extents of a cluster spanner at this X position.
-
- "
- '(positions)
- )
-
-(ly:add-interface
- 'dynamic-interface
-   "Any kind of loudness sign"
-   '()
-    )
-
-(ly:add-interface
- 'finger-interface
- "A fingering instruction"
- '()
- )
-
-(ly:add-interface
- 'ligature-interface
- "A ligature"
- '()
- )
-
-(ly:add-interface
- 'ligature-bracket-interface
- "A bracket indicating a ligature in the original edition"
- '(width thickness height ligature-primitive-callback))
-
-(ly:add-interface
- 'lyric-syllable-interface
- "a single piece of lyrics"
- '())
-
-(ly:add-interface
- 'lyric-interface
- "Any object that is related to lyrics."
- '())
-
-(ly:add-interface
- 'mark-interface
- "a rehearsal mark"
- '())
-
-(ly:add-interface
- 'metronome-mark-interface
- "a rehearsal mark"
- '(
-   ))
-
-
-(ly:add-interface
- 'multi-measure-interface
- "Multi measure rest, and friends (mmrest number, mmrest text)."
- '())
-
-
-(ly:add-interface
-'note-name-interface
- "Note name"
- '(style))
-
-(ly:add-interface
- 'only-prebreak-interface
- "Kill this grob after the line breaking process."
- '() )
-
-(ly:add-interface
- 'piano-pedal-interface
- "A piano pedal sign"
- '())
-
-
-(ly:add-interface
- 'rhythmic-grob-interface
- "Any object with a rhythmic basis. Used to determine which grobs 
-are interesting enough to maintain a hara-kiri staff."
- '()
- )
-
-(ly:add-interface
- 'stanza-number-interface
- ""
- '()
- )
-
-;;; todo: this is not typesetting info. Move to interpretation.
-(ly:add-interface
- 'tablature-interface
- "tablature notes"
- '())
-
-
-;; todo: figure out where  to put this doco:
-
-"
-Grob properties form a name space where you can set variables per
-object.  Each object however, may have multiple functions. For
-example, consider a dynamic symbol, such @code{\ff} (fortissimo). It
-is printed above or below the staff, it is a dynamic sign, and it is a
-kind of text.
-
-To reflect this different functions of a grob, procedures and variables
-are grouped into so-called interfaces.  The dynamic text for example
-supports the  following interfaces:
-@table @code 
-@item font-interface
-  The glyph is built from characters from a font, hence the
-@code{font-interface}. For objects supporting @code{font-interface}, you
-can select alternate fonts by setting @code{font-style},
-@code{font-point-size}, etc.
-
-@item dynamic-interface
-  Dynamic interface is not associated with any variable or function in
-particular, but this makes it possible to distinguish this grob from
-other similar grobs (like @code{TextScript}), that have no meaning of
-dynamics.
-
-@item text-interface
-  This interface is for texts that are to be set using special routines
-to stack text into lines, using kerning, etc.
-
-@item general-grob-interface
-  This interface is supported by all grob types.
-@end table
-"
diff --git a/scm/define-grob-properties.scm b/scm/define-grob-properties.scm
deleted file mode 100644
index b2de46e0e9..0000000000
--- a/scm/define-grob-properties.scm
+++ /dev/null
@@ -1,598 +0,0 @@
-;;;; grob-property-description.scm -- part of generated backend documentation
-;;;;
-;;;;  source file of the GNU LilyPond music typesetter
-;;;; 
-;;;; (c)  1998--2004  Han-Wen Nienhuys <hanwen@cs.uu.nl>
-;;;;                 Jan Nieuwenhuizen <janneke@gnu.org>
-
-
-
-(define (define-grob-property symbol type? description)
-  (if (not (equal? (object-property symbol 'backend-doc) #f))
-      (begin
-	(ly:warn (string-append "Redefining " (symbol->string symbol) "\n"))
-	(exit 2)
-      ))
-  
-  (set-object-property! symbol 'backend-type? type?)
-  (set-object-property! symbol 'backend-doc description)
-  symbol
-  )
-
-;; put this in an alist?
-(define
-  all-user-grob-properties
-
-  (map
-   (lambda (x)
-     (apply define-grob-property x))
-
-   `(
-     (X-extent-callback ,procedure? "procedure taking an grob and axis
-argument, returning a number-pair. The return value is the extent of
-the grob. If this value is set to @code{#f}, the object is empty in
-the X direction.")
-
-     (X-offset-callbacks ,list? "list of functions, each taking an grob and
-axis argument. The function determine the position relative to this
-grob's parent. The last one in the list is called first.")
-
-     (Y-extent-callback ,procedure? "see @code{X-extent-callback}.")
-     (Y-offset-callbacks ,list? "see @code{X-offset-callbacks}.")
-
-     (accidentals ,list? "List of alteration numbers.")
-     (add-cauda ,boolean? "does this flexa require an additional cauda on the left ,side?.")
-     (add-join ,boolean? "is this ligature head joined with the next one by a vertical ,line?")
-     (add-stem ,boolean? "is this ligature head a virga and therefore needs an additional stem on the right ,side?")
-     (adjust-if-on-staffline ,boolean? "If this grob is on a staff line, adjust its appearance, so that it better fits into the staff.  E.g., if set true on stem grobs, flares of mensural flags will always be aligned with the staff lines, regardless if the associated note head is printed on a staff line or inbetween.")
-     (after-line-breaking-callback ,procedure? "Procedure taking a grob as argument.
-This procedure is called (using dependency resolution) after line breaking. Return value is ignored.")
-     (align-dir ,ly:dir? "Which side to ,align? -1: left side, 0: around center of width, 1: right side.")
-     (arch-angle ,number? "turning angle of the hook of a system brace" )
-     (arch-height ,ly:dimension? "height of the hook of a system brace.")
-     (arch-thick ,number? "thickness of the hook of system brace.")
-     (arch-width ,ly:dimension? "width of the hook of a system brace.")
-     (arpeggio-direction ,ly:dir? "If set, put an
-arrow on the arpeggio squiggly line.")
-     (ascendens ,boolean? "is this neume of an ,ascending?.")
-     (attachment ,pair? "cons of symbols
-indicating how a slur should be attached at the ends. The format is
-'(LEFT-TYPE . RIGHT-TYPE), where both TYPEs are symbols. The values of
-these symbols may be alongside-stem, stem, head or loose-end.")
-     (attachment-offset ,pair? "cons of offsets,
-'(LEFT-offset . RIGHT-offset).  This offset is added to the
-attachments to prevent ugly slurs.  [fixme: we need more documentation here].
-.")
-     (auctum ,boolean? "is this neume ,augmented?.")
-     (auto-knee-gap ,ly:dimension? "If a gap is found between noteheads
-where a  horizontal beam fits that is larger than this number,  make a kneed beam.")
-     (axes ,list? "list of axis numbers.
-In the case of alignment grobs, this should contain only one number.")
-
-     (balloon-text ,markup? "Text to add to help balloon")
-     (balloon-text-props ,list? "Font properties
-for balloon text.")
-     (balloon-text-offset ,number-pair?
-			  "Where to put text relative to balloon.")
-     (balloon-padding ,ly:dimension? "Text to add to help balloon")
-     (balloon-original-callback ,procedure? "The
-original molecule drawer to draw the balloon around.")
-
-
-     (bar-size ,ly:dimension? "size of a bar line.")
-     (bar-size-procedure ,procedure? "Procedure that computes the size of a bar line.")
-     (base-shortest-duration ,ly:moment?
-			     "Spacing is based on the shortest notes in a piece. Normally, pieces are spaced as if notes at least as short as this are present.")
-     (baseline-skip ,ly:dimension? "Baseline skip to use for multiple lines of text.")
-     (bass ,list? " musical-pitch, optional.")
-     (beam-thickness ,ly:dimension? "thickness, measured in staffspace.")
-     (beam-width ,ly:dimension? "width of the tremolo sign.")
-     (beamed-lengths ,list? "list of stem lengths given beam multiplicity .")
-     (beamed-minimum-free-lengths ,list? "list of normal minimum free stem lengths (chord to beams) given beam multiplicity.")
-     (beamed-extreme-minimum-free-lengths ,list? "list of extreme minimum free stem lengths (chord to beams) given beam multiplicity.")
-
-     (beamed-stem-shorten ,list? "shorten beamed stems in forced direction.")
-     (beaming ,pair?
-	      "Pair of number lists. Each number list
-specifies which beams to make. 0 is the central beam, 1 is the next
-beam toward the note etc. This information is used to determine how to
-connect the beaming patterns from stem to stem inside a beam.")
-
-
-     (beautiful ,number? "number that dictates when a slur should be de-uglyfied.  It correlates with the enclosed area between noteheads and slurs.  A value of 0.1 yields only undisturbed slurs, a value of 5 will tolerate quite high blown slurs.")
-     (before-line-breaking-callback ,procedure? "Procedure taking grob as argument.
-This procedure is called (using dependency resolution) before line breaking, but after generating discretionary items. Return value is ignored.")
-     (between-cols ,pair? "Where to attach a loose column to")
-     (between-system-string ,string? "string
- to dump between two systems. Useful for forcing pagebreaks.")
-     (bracket-thick ,number? "width of a system start bracket. .")
-     (break-align-symbol ,symbol? "the index in the spacing table (symbol) of the to be aligned item.")
-     (break-glyph-function ,procedure? "function taking glyph and break-direction, returning the glyph at a line break.")
-     (breakable ,boolean? "boolean indicating if this is a breakable item (clef, barline, key sig, etc.).")
-     (c0-position ,integer? "integer indicating the position of central C.")
-     (cautionary-style ,symbol? "style  of cautionary accidentals. Choices are 'smaller (one size smaller) or 'parentheses.")
-     (cautionary ,boolean? "is this a cautionary accidentals.?")
-     (cavum ,boolean? "is this neume ,outlined?.")
-
-     (concaveness-gap ,ly:dimension? "A beam is
-considered to be concave if the distance of an inner notehead to the
-line between two outer noteheads is bigger than this gap.")
-     (concaveness-threshold ,number? "A beam is
-considered to be concave is concaveness is bigger than this threshold.
-Concaveness is calculated as the sum of the vertical distances of
-inner noteheads that fall outside the interval of the two outer
-noteheads, to the vertically nearest outer notehead, divided by the
-square of the inner notes involved.")
-     (collapse-height ,ly:dimension? "Minimum height of system start delimiter.  If equal or smaller, the bracket is removed.")
-
-     ;;DOCME
-     (context-info ,integer? "")
-
-     (control-points ,list? "List of 4 offsets (number-pairs) that form control points for the  tie/slur shape.")
-
-     (damping ,integer? "Amount of beam slope damping. 0: no, 1: yes, 100000: horizontal beams .")
-     (dash-period ,number? "the length of one dash + white space. If
-negative, no line is drawn at all.")
-     
-     (dash-fraction ,number? "Size of the dashes, relative to
-dash-period. Should be between 0.0 (no line) and 1.0 (continuous
-line).")
-
-     ;; [FIXME: use dash-period/dash length; see text-spanner]
-     (dashed ,number? " number representing the length of the dashes.")
-     (descendens ,boolean? "is this neume of a descendent ,type?.")
-     
-     (de-uglify-parameters ,list? "list of 3 real constants. They
-define the valid areas for the middle control points. Used in
-de_uglyfy. They are empirical.")
-
-     (neutral-direction ,ly:dir? "Where to go if we're on the neutral
-position of the staff (see also grob-property neutral-position).")
-
-     ;; todo: why is this tunable?
-     (neutral-position ,number? "Position (in half staff spaces) where
-to flip the direction of stems: by default, custodes above this
-position get their stems downwards; custodes below this position get
-their stems upwards.  A value of 0 designates the center of the staff.
-Use property neutral-direction to control the behaviour of stems on
-the neutral position itself.  (Note: currently, neutral-position is
-supported only for custodes; for stems of note heads, neutral-position
-is currently fixed to 0, i.e. the middle of the staff.)")
-     
-     (deminutum ,boolean? "is this neume ,deminished?.")
-     (details ,list? "alist of parameters for detailed grob behavior.")
-     (dir-function ,procedure? "function of type (count total)->direction.  Default value: beam-dir-majority, also available: beam-dir-mean, beam-dir-median.
-
-The ways to calculate the direction of a beam work as follows:
-@table @code
-@item majority
-number count of up or down notes
-@item mean
-mean center distance of all notes
-@item median
-mean centre distance weighted per note
-@end table
-
-")
-     (direction ,ly:dir? "Up or down, left or right?.")
-     (dot-count ,integer? "number of dots.")
-     (duration-log ,integer? "2-log of the notehead duration, i.e. 0=whole note, 1 = half note, etc.")
-     (edge-height ,pair? "a cons that specifies the heights of the vertical edges '(LEFT-height . RIGHT-height).")
-     (bracket-flare ,number-pair? "a pair that specifies how much
-edges of brackets should slant outward.  Value 0.0 means straight
-edges")
-
-     (edge-text ,pair? "a cons that specifies the texts to be set at the edges '(LEFT-text . RIGHT-text).")
-     (expand-limit ,integer? "maximum number of measures expanded in church rests.")
-
-     ;; remove me? 
-     (extra-X-extent ,number-pair? "enlarge in X dimension by this much, measured in staff space.")
-     (extra-Y-extent ,number-pair? "see @code{extra-Y-extent}.")
-
-     
-     (X-extent ,number-pair? "Store extent. internal use only. ")
-     (Y-extent ,number-pair? "Store extent. internal use only. ")
-
-     (extra-offset ,number-pair? "A pair representing an offset. This
-offset is added just before `printing' the grob, so the typesetting
-engine is completely oblivious to it.")
-
-     (extremity-offset-alist ,list? "an alist (attachment stem-dir*dir
-slur-dir*dir) -> offset.  The offset adds to the centre of the
-notehead, or stem.")
-
-     (extremity-rules ,list? "an alist (procedure
-slur dir) -> attachment to determine the attachment (see above).  If
-procedure returns #t, attachment is used.  Otherwise, the next
-procedure is tried.")
-     
-     (flag-style ,symbol?
-		 "a string determining what style of glyph is typeset on a Stem. Valid
-options include undefined and mensural.  Additionally, @code{no-flag}
-switches off the flag.")
-     (stroke-style ,string? "set to \"grace\" to turn stroke through flag on.")
-     (flag-width-function ,procedure? "Procedure that computes the width of a half-beam (a non-connecting beam.).")
-     (flexa-height ,ly:dimension? "height of a flexa shape in a ligature grob in staff_space.")
-     (flexa-width ,ly:dimension? "width of a flexa shape in a ligature grob in staff_space.")
-     (font-family ,symbol? "partial font
-definition: music roman braces dynamic math ...")
-     (font-name ,string? "file name for the font to load.
-Overrides all other font-X qualifiers.")
-     (font-magnification ,number? "Magnification
-  of the font. If undefined, the default is @code{1.0}.")
-
-     (font-size ,number? "font definition: the relative size compared
-the `normal' size.  0 is style-sheet's normal size, -1 is smaller, +1
-is bigger.  Each step of 1 is approximately 12% larger, 6 steps are
-exactly a factor 2 larger. Fractional values are allowed.")
-
-     (font-series ,symbol? "partial font definition: medium, bold.")
-     (font-shape ,symbol? "partial font definition: upright or italic.")
-
-     (force-hshift ,number? "amount of collision_note_width that
-overides automatic collision settings. This is used by
-@ref{note-collision-interface}.")
-
-     (fraction ,number-pair? "fraction of a time signature.")
-     (french-beaming ,boolean? "Use French
-beaming style: stems stop at innermost beams.")
-     (full-size-change ,boolean? "if set, don't make a change clef smaller.")
-
-     (glyph ,string? "a string determining what (style) of glyph is
-typeset. Valid choices depend on the function that is reading this
-property.")
-
-     (glyph-name ,string? "a name of character within font.")
-     (glyph-name-procedure ,procedure? "Return
-name of character within font.")
-
-     (gap ,ly:dimension? "Size of a gap in a variable symbol.")
-     (gap-count ,integer? "Number of gapped beams for tremolo.")
-
-     (grow-direction ,ly:dir? "crescendo or ,decrescendo?.")
-     (hair-thickness ,number? "thickness, measured in linethickness.")
-     (head-pair ,pair? "Pair of grob pointers, pointing to the two heads of the tie.")
-     (height ,ly:dimension? "in staffspace.")
-
-     (height-limit ,ly:dimension? "Maximum slur height: the longer the
-slur, the closer it is to this height.")
-
-     (horizontal-shift ,integer? "integer that identifies ranking of
-note-column for horizontal shifting. This is used by
-@ref{note-collision-interface}.")
-     (ideal-distances ,list? "(OBJ . (DIST . STRENGTH)) pairs.")
-     (inclinatum ,boolean? "is this neume an ,inclinatum?.")
-     (interfaces ,list? "list of symbols indicating the interfaces supported by this object. Is initialized from the @code{meta} field.")
-     (inversion ,list? " musical-pitch, optional.")
-     (join-heads ,boolean? "Whether to join the noteheads of an ambitus grob with a vertical line.")
-     (kern ,ly:dimension? "amount of extra white
-space to add. For barline, space after a thick line.")
-     (knee ,boolean? "Is this beam a ,knee?")
-     (knee-spacing-correction ,number? "optical correction amount for knees. 0: no correction; 1: full correction.")
-     (layer ,number? "The output layer [0..2].  The default is 1.")
-
-     (ledger-line-thickness ,number-pair?
-			    "The thickness of ledger lines: it is the
-sum of 2 numbers.  The car is the factor for linethickness, and the
-cdr for staff space. Both contributions are added.")
-     
-     (left-position ,number? "position of left part of spanner.")
-     (left-padding ,ly:dimension? "space left of accs.")
-
-     (length ,ly:dimension? "Stem length for unbeamed stems, only for user override.")
-     (lengths ,list? "Stem length given
-multiplicity of flag.  The Nth element of the list gives the stem
-length of a note with N flags.
-")
-     (linea ,boolean? "attach vertical lines to this ,neume?.")
-     (line-count ,integer? "Number of staff
-lines.  If you want to override this for staffs individually, you must
-use @code{\\outputproperty}. @code{\\property .. \\override} will not
-work: @code{\\override} is processed after the StaffSymbol is created,
-and will have no effect.
-")
-     (maximum-rest-count ,integer? "kill off rests so we don't more than this number left.")
-     (measure-length ,ly:moment? "Length of a
-measure. Used in some spacing situations.")
-     (measure-count ,integer? "number of measures for a multimeasure rest.")
-
-     (merge-differently-headed ,boolean? "Merge
-noteheads in collisions, even if they have different note heads. The
-smaller of the two heads will be rendered invisible. This used
-polyphonic guitar notation. The value of this setting is used by
-@ref{note-collision-interface} .")
-
-     (merge-differently-dotted ,boolean? " Merge
-noteheads in collisions, even if they have a different number of
-dots. This normal notation for some types of polyphonic music. The
-value of this setting is used by @ref{note-collision-interface} .")
-
-     (meta ,list? "Contains meta information. It is an alist with the
-entries @code{name} and @code{interfaces}.")
-
-     (minimum-distance ,ly:dimension? "Minimum distance between rest and notes or beam.")
-     (minimum-distances ,list? "list of rods (ie. (OBJ . DIST) pairs).")
-     (minimum-X-extent ,number-pair? "minimum size in X dimension, measured in staff space.")
-     (minimum-Y-extent ,number-pair? "see @code{minimum-Y-extent}.")
-     (minimum-length ,ly:dimension? "try to make the
-Grob at least this long.
-
-Also works as a scaling parameter for the length of hyphen. .")
-     (minimum-space ,ly:dimension? "minimum distance that the victim should move (after padding).")
-     (print-function ,procedure? "Function taking grob as argument,
-returning a Molecule object.")
-
-     (molecule ,ly:molecule? "Cached output of the print-function.")
-
-     (new-accidentals ,list? "list of (pitch, accidental) pairs.")
-     (no-spacing-rods ,boolean? "read from grobs: boolean that makes Separation_item ignore this item (MOVE ME TO ITEM).")
-     (no-stem-extend ,boolean? "should stem not be extended to middle staff ,line?.")
-     (non-default ,boolean? "not set because of existence of a ,bar?.")
-     (note-head-style ,string? "name of the font character to be used as note heads in the ambitus grob.")
-     (old-accidentals ,list? "list of (pitch, accidental) pairs.")
-     (oriscus ,boolean? "is this neume an ,oriscus?.")
-
-     (enclose-bounds ,number?
-		     "How much of the bound a spanner  should enclose: +1 = completely, 0 = center, -1 not at all.")
-
-     (padding ,ly:dimension? "add this much extra space between objects that are next to each other.")
-     (penalty ,number? "Penalty for breaking at
-this column. 10000 or more means forbid linebreak, -10000 or less
-means force linebreak.  Other values influence linebreaking decisions
-as a real penalty.")
-
-     (pes-or-flexa ,boolean? "shall this neume be joined with the previous ,head?.")
-
-     (pitch-max ,ly:pitch? "FIXME, JUNKME")
-     (pitch-min ,ly:pitch? "FIXME, JUNKME")
-     
-     (pitches ,list? "list of musical-pitch.")
-     (quilisma ,boolean? "is this neume a ,quilisma?.")
-     (positions ,pair?
-
-		"cons of staff coordinates (@var{left} . @var{right}),
-where both @var{left} and @var{right} are in the staff-space unit of
-the current staff.")
-
-     ;; DOCME
-     (prefix-set ,number? "")
-     (ratio ,number? "Parameter for slur shape. The higher this number, the
-quicker the slur attains it @code{height-limit}.")
-     (remove-first ,boolean?
-		   "Remove the first staff of a orchestral score?")
-     (right-padding ,ly:dimension? "space right of accs.")
-     (right-position ,number? "position of right part of spanner.")
-     (script-priority ,number? "A sorting key that determines in what order a script is within a stack of scripts.")
-
-     ;; TODO: revise typing
-     (self-alignment-X ,number-or-grob? "real number: -1 =
-left aligned, 0 = center, 1 right-aligned in X direction.
-
- Set to an grob pointer, if you want that grob to be the center.
-In this case, the center grob should have this object as a
-reference point.
-
-.")
-     (self-alignment-Y ,number? "like self-alignment-X but for Y axis.")
-
-     ;; DOCME
-     (shorten ,ly:dimension? "the amount of space that a stem should be shortened ")
-     (shorten-pair ,number-pair? "the length on each side to shorten a text-spanner, for example a pedal bracket")
-     (common-shortest-duration ,ly:moment?
-			       "The most common shortest note length.
-This is used in spacing. Making this larger will make the score tighter.")
-     (shortest-duration-space ,ly:dimension? "Start
-with this much space for the shortest duration. This is explessed in @code{spacing-increment} as unit. See also
-@ref{spacing-spanner-interface}.")
-     (shortest-playing-duration ,ly:moment? "duration of the shortest playing in that column.")
-     (shortest-starter-duration ,ly:moment? "duration of the shortest notes that starts exactly in this column.")
-     (side-relative-direction ,ly:dir? "if set: get the direction from a different object, and multiply by this.")
-     (slope ,number? "some kind of slope")
-     (slope-limit ,number? "set slope to zero if slope is running away steeper than this.")
-
-     (space-alist ,list? "Alist of break align
-spacing tuples: format = (SYMBOL . (TYPE . DISTANCE)), where TYPE can be
-minimum-space or extra-space.")
-     (space-function ,procedure? "return interbeam space given Beam grob and multiplicity.")
-
-     (spacing-increment ,number? "Add this much space for a doubled
-duration. Typically, the width of a note head. See also
-@ref{spacing-spanner-interface}.")
-
-     (spacing-procedure ,procedure? "procedure taking grob as
-argument. This is called after before-line-breaking-callback, but
-before the actual line breaking itself.  Return value is ignored.")
-     
-     (stacking-dir ,ly:dir? "stack contents of grobs in which direction ?.")
-     (staff-space ,ly:dimension? "Amount of line leading relative to global staffspace.")
-     (staff-position ,number? "vertical position in staff spaces, counted from the middle line.")
-
-     (staffline-clearance ,ly:dimension? "don't get closer than this to stafflines.")
-
-     (stem-attachment-function ,procedure? "Where
-does the stem attach to the ,notehead? Function takes grob and axis as
-arguments. It returns a (X . Y) pair, specifying location in terms of
-note head bounding box.")
-
-     (stem-end-position ,number? "Where does the stem end (the end is opposite to the support-head.")
-
-     (stem-shorten ,list? "shorten stems in forced directions given flag multiplicity:
-the Nth element of the list gives the amount stem shortening of a note with N flags.
-")
-     ;;[TODO: doco]
-     (stem-spacing-correction ,number? "optical correction amount.   ")
-     (stropha ,boolean? "is this neume a ,stropha?.")
-     (style ,symbol? "a string determining what style of  glyph is typeset. Valid choices depend on the function that is reading this property. .")
-     (text-repeat-if-broken ,boolean?
-			    "Repeat text on broken ,text-spanner?")
-     (text ,markup? "Text markup.  See the
-notation manual for more information.")
-     (thick-thickness ,number? "thickness, measured in linethickness.")
-     (thickness ,number? "thickness, measured in linethickness.")
-     (thin-kern ,number? "space after a hair-line.")
-     (forced-distance ,ly:dimension? "forced distance for an alignment.")
-
-     (threshold ,number-pair? "(cons MIN MAX), where MIN and MAX are dimensions in staffspace.")
-     (transparent ,boolean? "This is almost the
-same as setting print-function to #f, but this retains the
-dimensions of this grob, which means that you can erase grobs
-individually. .")
-     (bracket-visibility ,boolean-or-symbol? " This controls the
-visibility of the tuplet bracket.  Setting it to false will prevent
-printing of the bracket. Setting the property to #'if-no-beam will
-make it print only if there is no beam associated with this tuplet
-bracket.")
-     
-     (number-visibility ,boolean-or-symbol? " Like
-@code{bracket-visibility}, but for the number.")
-
-     ;; FIXME.
-     (break-visibility ,procedure? "a function that takes the break
-direction and returns a cons of booleans containing (TRANSPARENT
-. EMPTY).  The following variables are predefined: @code{all-visible},
-@code{begin-of-line-visible}, @code{end-of-line-visible},
-@code{begin-of-line-invisible}, @code{end-of-line-invisible},
-@code{all-invisible}.
-")
-
-     (virga ,boolean? "is this neume a ,virga?.")
-     (when ,ly:moment? "when does this column ,happen?.")
-     (word-space ,ly:dimension? "space to insert between lyrics or
-words in texts.")
-     (width ,ly:dimension? "width of a grob measured in staff space.")
-     (x-gap ,ly:dimension? "horizontal gap between notehead and tie.")
-     (x-offset ,ly:dimension? "extra horizontal offset for ligature heads.")
-     (y-free ,ly:dimension? "minimal vertical gap between slur and noteheads or stems.")
-     (y-offset ,ly:dimension? "extra vertical offset
-for ties away from the center line.")
-     (zigzag-length ,ly:dimension? "The length of the
-lines of a zigzag - relative to zigzag-width. a value of 1
-gives 60-degree zigzags.")
-     (zigzag-width ,ly:dimension? "the width of one
-zigzag-squiggle, measured in staff space. The width will be adjusted
-so that the line can be constructed from a whole number of squiggles.")
-
-
-     (avoid-note-head ,boolean? "if set, the stem of a chord does not pass through all note head, but start at the last note head. Used by tablature.")
-     (staff-padding ,ly:dimension?
-		    "Maintain this much space to the staff.  It's
-effect is similar to the padding mechanism, but this will keep objects
-above and below the staff in a row more often, when the heights of the
-notes vary.
-")
-
-     (use-breve-rest ,boolean? "boolean that tells multi-measure-rest
-to use a breve rest to represent the duration of 1 measure instead of
-whole rest.  It defaults to false.  It is set to true when the
-duration of a measure is a breve or longer.")
-
-     )))
-
-
-;;;;;;;;;;;;;;;;
-;;   INTERNAL
-
-
-(define (define-internal-grob-property symbol type? description)
-  (define-grob-property symbol type? description)
-  (set-object-property! symbol 'backend-internal #t)
-  symbol
-  )
-
-
-(define all-internal-grob-properties
-  (map
-   (lambda (x)
-     (apply define-internal-grob-property x))
-   
-   `(
-     (accidental-grobs ,list? "Alis with (NOTENAME . GROBLIST) entries")
-     
-     (all-elements ,grob-list? "list of all grobs in this line. Needed for protecting grobs from GC.")
-     (arpeggio ,ly:grob? "pointer to arpeggio object.") 
-     (beam ,ly:grob? "pointer to the beam, if applicable.")
-     (center-element ,ly:grob? "grob which will be at the center of
-the group after aligning (when using
-Align_interface::center_on_element).")
-     (direction-source ,ly:grob? "in case side-relative-direction is
-set, which grob to get the direction from .")
-     (dot ,ly:grob? "reference to Dots object.")
-     (pedal-text ,ly:grob? "Pointer to the text of a mixed-style piano pedal.")
-     (stem ,ly:grob? "pointer to Stem object.")
-     (tremolo-flag ,ly:grob? "The tremolo object on a stem.")
-     (tie ,ly:grob? "")
-     (staff-symbol ,ly:grob? "the staff symbol grob that we're in.")
-     (rest ,ly:grob? "the staff symbol grob that we're in.")
-     (rest-collision ,ly:grob? "rest collision that a rest is in.")
-     (accidental-grob ,ly:grob? "Accidental for this note.")
-     (bars ,grob-list? "list of barline pointers.")
-     (bounded-by-me ,grob-list? "list of spanners that have this
-column as start/begin point. Only columns that have grobs or act as bounds are spaced.")
-     (columns ,grob-list? "list of grobs, typically containing paper-columns.")
-     (conditional-elements ,grob-list? "Internal use only")
-     (dependencies ,grob-list? "list of score-grob pointers that indicate who to compute first for certain global passes.")
-     (elements ,grob-list? "list of grobs, type depending on the Grob where this is set in.")
-     (heads ,grob-list? "List of note heads.")
-     (items-worth-living ,grob-list? "list of interesting items. If empty in a particular system, clear that system.")
-     (note-heads ,grob-list? "List of note head grobs")
-     (side-support-elements ,grob-list? "the support, a list of grobs.")
-     (spacing-wishes ,grob-list? "List of note spacing or staff spacing objects.")
-     (stems ,grob-list? "list of stem objects, corresponding to the notes that the arpeggio has to be before.")
-
-
-     (left-neighbors ,grob-list? " List of
-spacing-wish grobs that are close to the current column.
-
-The closest spacing-wishes determine the actual distances between the
-columns.
-")
-     (right-neighbors ,grob-list? "see left-neighbors")
-     (left-items ,grob-list? "")
-     (right-items ,grob-list? "")
-     (cause ,scheme? "Any kind of causation objects (i.e. music, or perhaps translator) that was the cause for this grob.  ")
-     (font ,ly:font-metric? "Cached font metric object")
-
-     (positioning-done ,boolean?
-		       "Used to signal that a positioning element
-did it's job. This ensures that a positioning is only done once.")
-
-
-     (script-molecule ,pair? "Index code for script -- internal, see script.cc.")
-
-
-     (flag-count ,number? "")
-
-     ;; TODO: use interface for this!
-     (chord-tremolo ,boolean? "if set, this beam is a tremolo. ")
-     (chord ,pair? "?")
-     (begin-of-line-visible ,boolean? "?")
-     (quant-score ,number? "Beam quanting score
--- can be stored for debugging")
-     (least-squares-dy ,number? 
-		       "ideal beam slope, without damping.")
-     (ligature-primitive-callback ,procedure? "callback that brews ligature head.")
-     (stem-info ,pair? "caching of stem parameters")
-     (note-columns ,pair? "list of NoteColumn grobs.")
-
-     (if-text-padding ,number? "padding in case texts are there.")
-     (grace-space-factor ,number? "space grace at this fraction of the increment.")
-     (position-callbacks ,list? "list of
-functions set spanner positions.")
-
-;;; Junk me, replace it by add-join.
-     (join-left ,boolean? "is this ligature head joined with the previous one by a vertical ,line?")
-
-     (join-left-amount ,number? "")
-
-     (delta-pitch ,number? "the interval between this and the next note, or, more precisely, their vertical distance; this is used in ligatures for calculation of the height of vertical joins flexa shapes")
-     (head-width ,ly:dimension? "width of this ligature head")
-
-     ;; [TODO: change this]
-     (primitive ,integer? "Pointer to a ligature primitive, i.e. an item similar to a note head that is part of a ligature. ")
-     
-     )))
-
-(define-public all-backend-properties
-  (append
-   all-internal-grob-properties
-   all-user-grob-properties))
diff --git a/scm/define-grobs.scm b/scm/define-grobs.scm
deleted file mode 100644
index 9060d5c8f6..0000000000
--- a/scm/define-grobs.scm
+++ /dev/null
@@ -1,1316 +0,0 @@
-;;;; grob-description.scm -- part of generated backend documentation
-;;;;
-;;;;  source file of the GNU LilyPond music typesetter
-;;;; 
-;;;; (c)  1998--2004  Han-Wen Nienhuys <hanwen@cs.uu.nl>
-;;;;                 Jan Nieuwenhuizen <janneke@gnu.org>
-
-;;;; distances are given in linethickness (thicknesses) and
-;;;; staffspace (distances)
-
-;;;; WARNING: the meta field should be the last one.
-;;;; WARNING: don't use anonymous functions for initialization. 
-
-;; TODO: junk the meta field in favor of something more compact?
-(define-public all-grob-descriptions
-  `(
-    (Accidental
-     . (
-	(print-function . ,Accidental_interface::print)
-	(font-family . music)
-	(cautionary-style . parentheses)
-	(after-line-breaking-callback . ,Accidental_interface::after_line_breaking)		(meta . ((interfaces . (item-interface accidental-interface font-interface))))
-	))
-    
-    (AccidentalPlacement
-     . (
-	(X-extent-callback . ,Axis_group_interface::group_extent_callback)
-	(left-padding . 0.3)
-
-	;; this is quite small, but it is very ugly to have
-	;; accs closer to the previous note than to the next one.
-	(right-padding . 0.25)
-	(meta . ((interfaces . (item-interface accidental-placement-interface))))
-	))
-
-    (Ambitus
-     . (
-       (breakable . #t)
-       (break-align-symbol . ambitus)
-       (print-function . ,Ambitus::print)
-       (font-family . music)
-       (note-head-style . "noteheads-2")
-       (visibility-lambda . ,begin-of-line-visible)
-       (join-heads . #t)
-       (space-alist . (
-		       (clef . (extra-space . 0.0))
-		       (key-signature . (extra-space . 0.0))
-		       (staff-bar . (extra-space . 0.0))
-		       (time-signature . (extra-space . 0.0)) 
-		       (first-note . (fixed-space . 0.0))
-		       ))
-       (meta . ((interfaces . (ambitus-interface staff-symbol-referencer-interface break-aligned-interface item-interface  font-interface))))
-       ))
-
-    (Arpeggio
-     . (
-	(X-extent-callback . ,Arpeggio::width_callback)
-	(Y-extent-callback . #f)	       
-	(print-function . ,Arpeggio::print)
-	(Y-offset-callbacks . (,Staff_symbol_referencer::callback))
-	(X-offset-callbacks . (,Side_position_interface::aligned_side))
-	(direction . -1)
-	(staff-position . 0.0)
-	(meta . ((interfaces . (arpeggio-interface staff-symbol-referencer-interface side-position-interface item-interface font-interface))))
-	))
-
-    (BarLine
-     . (
-	(break-align-symbol . staff-bar)
-	(glyph . "|")
-	(break-glyph-function . ,default-break-barline)
-	(bar-size-procedure . ,Bar_line::get_staff_bar_size)
-	(print-function . ,Bar_line::print)	   
-	(break-visibility . ,all-visible)
-	(breakable . #t)
-	(before-line-breaking-callback . ,Bar_line::before_line_breaking)
-	(space-alist . (
-			(time-signature . (extra-space . 0.75)) 
-			(custos . (minimum-space . 2.0))
-			(clef .   (minimum-space . 1.0))
-			(key-signature . (extra-space . 1.0))
-			(first-note . (fixed-space . 1.3))
-			(next-note . (semi-fixed-space . 1.3))
-			(right-edge . (extra-space . 0.0))
-			))
-
-	;;
-	;; Ross. page 151 lists other values, we opt for a leaner look
-	;; 
-	(kern . 3.0)
-	(thin-kern . 3.0)
-	(hair-thickness . 1.6)
-	(thick-thickness . 6.0)
-	(meta . ((interfaces . (bar-line-interface item-interface   break-aligned-interface font-interface))))
-	))
-
-    
-    (BarNumber
-     . (
-	(print-function . ,Text_item::print)
-	(breakable . #t)
-	(break-visibility . ,begin-of-line-visible)
-	(padding . 1.0)
-	(direction . 1)
-	(font-family . roman)
-	(font-size . -2)
-	(Y-offset-callbacks . (,Side_position_interface::aligned_side))
-	(X-offset-callbacks . (,Self_alignment_interface::aligned_on_self))
-	(self-alignment-X . 1)
-	(extra-offset . (1.3 . 0))
-	(meta .
-	      ((interfaces . (side-position-interface
-			      text-interface
-			      self-alignment-interface
-			      font-interface item-interface  break-aligned-interface))))
-
-	     ))
-
-    (BassFigure
-     . (
-	(print-function . ,Text_item::print)
-	(Y-offset-callbacks . (,Self_alignment_interface::aligned_on_self))
-	(direction . 1)
-	(font-family . number)
-
-	;; We must do this, other BFs in
-	;; paper16 become too small.
-	(font-size . -4)
-	(font-magnification . 0.8) 
-	(kern . 0.2)
-	(meta . ((interfaces . (text-interface 							rhythmic-grob-interface
-												bass-figure-interface item-interface
-												self-alignment-interface font-interface))))
-	))
-    (Beam
-     . (
-	;; todo: clean this up a bit: the list is getting
-	;; rather long.
-	(print-function . ,Beam::print)
-	(concaveness-gap . 2.0)
-	(concaveness-threshold . 0.08)
-	(gap . 0.8)
-	(positions . (#f . #f))
-	(position-callbacks . (,Beam::least_squares
-			       ,Beam::check_concave
-			       ,Beam::slope_damping
-			       ,Beam::shift_region_to_valid
-			       ,Beam::quanting
-			      ))
-
-	;; TODO: should be in SLT.
-	(thickness . 0.48) ; in staff-space
-	(before-line-breaking-callback . ,Beam::before_line_breaking)
-	(after-line-breaking-callback . ,Beam::after_line_breaking)
-	(neutral-direction . -1)
-	(dir-function . ,beam-dir-majority-median)
-	
-	;; Whe have some unreferenced problems here.
-	;;
-	;; If we shorten beamed stems less than normal stems (1 staffspace),
-	;; or high order less than 8th beams, patterns like
-	;;     c''4 [c''8 c''] c''4 [c''16 c]
-	;; are ugly (different stem lengths).
-	;;
-	;; But if we shorten 16th beams as much as 8th beams, a single
-	;; forced 16th beam looks *very* short.
-
-	;; We choose to shorten 8th beams the same as single stems,
-	;; and high order beams less than 8th beams, so that all
-	;; isolated shortened beams look nice and a bit shortened,
-	;; sadly possibly breaking patterns with high order beams.
-	(beamed-stem-shorten . (1.0 0.5 0.25))
-	
-	(outer-stem-length-limit . 0.2)
-	(slope-limit . 0.2)
-	(flag-width-function . ,beam-flag-width-function)
-	(damping . 1)
-	(auto-knee-gap . 5.5)
-
-	;; only for debugging.
-	(font-family . roman)
-	
-	(space-function . ,Beam::space_function)
-	(meta . ((interfaces . (staff-symbol-referencer-interface beam-interface spanner-interface))))
-	))
-
-    (BreakAlignment
-     . (
-	(breakable . #t)
-	(stacking-dir . 1)
-	(axes . (0))
-	(X-extent-callback . ,Axis_group_interface::group_extent_callback)
-	(meta . ((interfaces . (break-alignment-interface item-interface axis-group-interface)))))
-	)
-
-    (BreakAlignGroup
-     . (
-	(axes  . (0))
-	(X-offset-callbacks . (,Break_align_interface::alignment_callback))
-	(X-extent-callback . ,Axis_group_interface::group_extent_callback)
-	(meta . ((interfaces . (break-aligned-interface item-interface axis-group-interface item-interface ))))
-	))
-
-    (BreathingSign
-     . (
-	(break-align-symbol . breathing-sign)
-	(breakable . #t)
-	(space-alist . (
-			(ambitus . (extra-space . 2.0))
-			(custos . (minimum-space . 1.0))
-			(key-signature . (minimum-space . 1.5))
-			(staff-bar . (minimum-space . 1.5))
-			(clef . (minimum-space . 2.0))
-			(first-note . (fixed-space . 1.0)) ;huh? 
-			(right-edge . (extra-space . 0.1))
-			))
-	(print-function . ,Text_item::print)
-	(text . ,(make-musicglyph-markup "scripts-rcomma"))
-	(Y-offset-callbacks . (,Breathing_sign::offset_callback))
-	(break-visibility . ,begin-of-line-invisible)
-	(meta . ((interfaces . (break-aligned-interface breathing-sign-interface text-interface font-interface item-interface ))))
-	))
-
-    (Clef
-     . (
-	(print-function . ,Clef::print)
-	(before-line-breaking-callback . ,Clef::before_line_breaking)
-	(breakable . #t)
-	(font-family . music)	   
-	(break-align-symbol . clef)
-	(break-visibility . ,begin-of-line-visible)
-	(space-alist . ((ambitus . (extra-space . 2.0))
-			(staff-bar . (extra-space . 0.7))
-			(key-signature . (minimum-space . 4.0))
-			(time-signature . (minimum-space . 4.2))
-			(first-note . (minimum-fixed-space . 5.0))
-			(next-note . (extra-space . 0.5))
-			(right-edge . (extra-space . 0.5))
-			))
-	(Y-offset-callbacks  . (,Staff_symbol_referencer::callback)) 
-	(meta . ((interfaces . (clef-interface staff-symbol-referencer-interface font-interface break-aligned-interface item-interface ))))
-	))
-    
-    (ClusterSpannerBeacon
-     . (
-	(print-function . #f)
-	(meta . ((interfaces . (cluster-beacon-interface item-interface))))
-	))
-    
-    (ClusterSpanner
-     . (
-	(print-function . ,Cluster::print)
-	(spacing-procedure . ,Spanner::set_spacing_rods)		
-	(minimum-length . 0.0)
-	(padding . 0.25)
-	(style . ramp)
-	(meta . ((interfaces . (cluster-interface spanner-interface))))
-	))
-
-    (ChordName
-     . (
-	(print-function . ,Text_item::print)
-	(after-line-breaking-callback . ,Chord_name::after_line_breaking)
-	(word-space . 0.0)
-	(font-family . sans)
-	(font-size . 1.5)
-	(meta . ((interfaces . (font-interface 							rhythmic-grob-interface
-												text-interface chord-name-interface item-interface ))))
-	))
-
-    (Custos
-     . (
-	(break-align-symbol . custos)
-	(breakable . #t)
-	(print-function . ,Custos::print)
-	(break-visibility . ,end-of-line-visible)
-	(style . vaticana)
-	(neutral-position . 0)
-	(neutral-direction . -1)
-	(adjust-if-on-staffline . #t)
-	(Y-offset-callbacks . (,Staff_symbol_referencer::callback))
-	(space-alist . (
-			(first-note . (minimum-fixed-space . 0.0))
-			(right-edge . (extra-space . 0.1))
-			))
-	(meta . ((interfaces
-		  . (custos-interface staff-symbol-referencer-interface
-				      font-interface
-				      break-aligned-interface item-interface ))))
-	))
-
-
-    (DotColumn
-     . (
-	(axes . (0))
-	(direction . ,RIGHT)
-	(X-extent-callback . ,Axis_group_interface::group_extent_callback)
-	(X-offset-callbacks . (,Dot_column::side_position))
-	(meta . ((interfaces . (dot-column-interface axis-group-interface item-interface ))))
-	))
-
-    (Dots
-     . (
-	(print-function . ,Dots::print)
-	(dot-count . 1)
-	(meta . ((interfaces . (font-interface staff-symbol-referencer-interface dots-interface item-interface ))))
-	))
-
-    (DoublePercentRepeat .
-			 (
-			  (print-function . ,Percent_repeat_item_interface::double_percent)
-			  (breakable . #t)
-			  (slope . 1.0)
-			  (font-family . music)
-			  (width . 2.0)
-			  (thickness . 0.48)
-			  (break-align-symbol . staff-bar)
-			  (break-visibility . ,begin-of-line-invisible)
-			  (meta . ((interfaces . (font-interface
-						  break-aligned-interface
-						  percent-repeat-interface item-interface ))))
-			 ))
-
-    (DynamicText
-     . (
-	(Y-offset-callbacks . (,Self_alignment_interface::aligned_on_self))
-	(print-function . ,Text_item::print)
-	(X-offset-callbacks . (,Self_alignment_interface::aligned_on_self
-			       ,Self_alignment_interface::centered_on_parent))
-	(self-alignment-X . 0)
-	(no-spacing-rods . #t)
-	(script-priority . 100)
-	(font-series . bold)
-	(font-family . dynamic)
-	(font-shape . italic)
-	(self-alignment-Y . 0)
-	(meta . ((interfaces . (font-interface text-interface self-alignment-interface  dynamic-interface script-interface item-interface))))
-	))
-
-    (DynamicLineSpanner
-     . (
-	(axes . (1))
-	(Y-extent-callback . ,Axis_group_interface::group_extent_callback)	
-	(Y-offset-callbacks . (,Side_position_interface::aligned_side))
-	(staff-padding . 0.1)
-	(padding . 0.6)
-	(minimum-space . 1.2)
-	(direction . -1)
-	(meta . ((interfaces . (dynamic-interface axis-group-interface side-position-interface spanner-interface))))
-	))
-
-    (LeftEdge
-     . (
-	(break-align-symbol . left-edge)
-	(X-extent-callback . ,Grob::point_dimension_callback)
-	(breakable . #t)
-	(space-alist . (
-			(custos . (extra-space . 0.0))
-			(ambitus . (extra-space . 2.0))
-			(time-signature . (extra-space . 0.0)) 
-			(staff-bar . (extra-space . 0.0))
-			(breathing-sign . (minimum-space  . 0.0))
-			(clef . (extra-space . 0.85))
-			(first-note . (fixed-space . 1.0))
-			(right-edge . (extra-space . 0.0))
-			(key-signature . (extra-space . 0.0))
-			))
-	(meta . ((interfaces . (break-aligned-interface item-interface ))))
-	))
-
-    (Fingering
-     . (
-	(print-function . ,Text_item::print)
-	(padding . 0.6)
-	(staff-padding . 0.6)
-	(self-alignment-X . 0)
-	(self-alignment-Y . 0)
-	(script-priority . 100)
-	(font-family . number)
-	(font-size . -5) 		; don't overlap when next to heads.
-	(font-shape . upright)
-	(meta . ((interfaces . (finger-interface font-interface text-script-interface text-interface side-position-interface self-alignment-interface item-interface ))))
-	))
-
-
-    (RemoveEmptyVerticalGroup
-     . (
-	(Y-offset-callbacks . (,Hara_kiri_group_spanner::force_hara_kiri_callback))
-	(Y-extent-callback . ,Hara_kiri_group_spanner::y_extent)
-	(remove-first . #t)
-	(axes . (1))
-	(meta . ((interfaces . (axis-group-interface hara-kiri-group-interface item-interface  spanner-interface))))
-	))
-
-    (Hairpin
-     . (
-	(print-function . ,Hairpin::print)
-	(thickness . 1.0)
-	(height . 0.6666)
-	(spacing-procedure . ,Spanner::set_spacing_rods)
-	(minimum-length . 2.0)
-	(if-text-padding . 1.0)
-	(dash-length . 4.0)
-	(self-alignment-Y . 0)
-	(Y-offset-callbacks . (,Self_alignment_interface::aligned_on_self))
-	(meta . ((interfaces . (hairpin-interface line-interface self-alignment-interface dynamic-interface spanner-interface))))
-	))
-
-    (HorizontalBracket
-     . (
-	(thickness . 1.0)
-	(print-function . ,Horizontal_bracket::print)
-	(Y-offset-callbacks . (,Side_position_interface::aligned_side))
-	(padding . 0.2)
-	(direction . -1)
-	(meta . ((interfaces . (horizontal-bracket-interface side-position-interface spanner-interface))))
-	))
-    (InstrumentName
-     . (
-	(breakable . #t)
-	(Y-offset-callbacks . (,Self_alignment_interface::aligned_on_self
-			       ,Side_position_interface::aligned_on_support_refpoints))
-	;; This direction is for aligned_on_support_refpoints
-	;; (?) --hwn
-	(direction . 0)
-	(space-alist . (
-			(left-edge . (extra-space . 1.0))
-			))
-
-	(self-alignment-Y . 0)
-	(print-function . ,Text_item::print)		
-	(break-align-symbol . instrument-name)
-	(break-visibility . ,begin-of-line-visible)
-	(baseline-skip . 2)
-	(font-family . roman)
-	(meta . ((interfaces . (font-interface self-alignment-interface side-position-interface text-interface break-aligned-interface item-interface ))))
-	))
-    
-    (VocalName
-     . (
-	(breakable . #t)
-	(Y-offset-callbacks . (,Side_position_interface::aligned_on_support_refpoints))
-	(direction . 0)
-	(space-alist . ((left-edge . (extra-space . 1.0))
-			))
-	(print-function . ,Text_item::print)		
-	(break-align-symbol . clef)
-	(break-visibility . ,begin-of-line-visible)
-	(baseline-skip . 2)
-	(font-family . roman)
-	(meta . ((interfaces . (font-interface
-				self-alignment-interface
-				side-position-interface text-interface
-				break-aligned-interface item-interface ))))
-	))
-
-    (KeySignature
-     . (
-	(print-function . ,Key_signature_interface::print)
-	(space-alist . (
-			(time-signature . (extra-space . 1.25))
-			(staff-bar .  (extra-space . 1.1))
-			(right-edge . (extra-space . 0.5))
-			(first-note . (fixed-space . 2.5))
-			))
-	(Y-offset-callbacks . (,Staff_symbol_referencer::callback))
-	(break-align-symbol . key-signature)
-	(break-visibility . ,begin-of-line-visible)
-	(breakable . #t)
-	(meta . ((interfaces . (key-signature-interface  font-interface  break-aligned-interface item-interface ))))
-	))
-
-    (LigatureBracket
-     . (
-	(ligature-primitive-callback . ,Note_head::print)
-	(direction . 1)
-	(gap . 0.0)
-	(padding . 2.0)
-	(thickness . 1.6)
-	(edge-height . (0.7 . 0.7))
-	(shorten-pair . (-0.2 . -0.2))
-	(before-line-breaking-callback . ,Tuplet_bracket::before_line_breaking)
-	(after-line-breaking-callback . ,Tuplet_bracket::after_line_breaking)
-	(print-function . ,Tuplet_bracket::print)
-	(meta .  ((interfaces . (tuplet-bracket-interface spanner-interface))))
-	))
-
-    (LyricHyphen
-     . (
-	(thickness . 1.3)
-	(height . 0.42)
-	(dash-period . 10.0)
-	(length . 0.66)
-	(spacing-procedure . ,Hyphen_spanner::set_spacing_rods)
-	(print-function . ,Hyphen_spanner::print)
-	(Y-extent-callback . ,Grob::point_dimension_callback)
-	(meta . ((interfaces . (lyric-interface lyric-hyphen-interface
-						spanner-interface))))
-	))
-
-    (LyricExtender
-     . (
-	(print-function . ,Lyric_extender::print)
-	(thickness . 0.8) ; linethickness
-	(minimum-length . 1.5)
-	(Y-extent-callback . ,Grob::point_dimension_callback)
-	(meta . ((interfaces . (lyric-interface
-				lyric-extender-interface spanner-interface))))
-	))
-
-    (LyricText
-     . ((print-function . ,Text_item::print)
-	(X-offset-callbacks . (,Self_alignment_interface::aligned_on_parent))
-	(self-alignment-X . 0)
-	(word-space . 0.6)
-	(font-family . roman)
-	(font-series . bold-narrow)
-	(font-shape . upright)
-	(font-size . 1.0)
-	(meta . ((interfaces . (rhythmic-grob-interface lyric-syllable-interface self-alignment-interface text-interface font-interface item-interface ))))
-	))
-
-    (MensuralLigature
-     . (
-	(thickness . 1.4)
-	(flexa-width . 2.0)
-	(ligature-primitive-callback . ,Mensural_ligature::brew_ligature_primitive)
-	(print-function . ,Mensural_ligature::print)
-	(meta . ((interfaces . (mensural-ligature-interface font-interface))))
-	))
-
-    (RehearsalMark
-     . (
-	(print-function . ,Text_item::print)
-	(X-offset-callbacks . (,Self_alignment_interface::aligned_on_self))
-	(Y-offset-callbacks . (,Side_position_interface::aligned_side))
-	(after-line-breaking-callback . ,shift-right-at-line-begin)
-	(self-alignment-X . 0)
-	(direction . 1)
-	(breakable . #t)
-	(font-size . 2)
-	(font-family . roman)
-	(baseline-skip . 2)
-	(break-visibility . ,end-of-line-invisible)
-	(padding . 0.8)
-	(meta . ((interfaces . (text-interface side-position-interface font-interface mark-interface self-alignment-interface item-interface ))))
-	))
-     (MetronomeMark
-     . (
-	(print-function . ,Text_item::print)
-	(Y-offset-callbacks . (,Side_position_interface::aligned_side))	
-	(direction . 1)
-	(breakable . #t)
-	(font-family . roman)
-	(break-visibility . ,end-of-line-invisible)
-	(padding . 0.8)
-	(meta . ((interfaces . (text-interface side-position-interface font-interface metronome-mark-interface item-interface))))
-	))
-    (MeasureGrouping
-     . (
-	(Y-offset-callbacks . (,Side_position_interface::aligned_side))
-	(print-function . ,Measure_grouping::print)
-	(padding . 2)
-	(direction . 1)
-	(thickness . 1)
-	(height . 2.0)
-	(staff-padding . 3)
-	(meta . ((interfaces . (spanner-interface side-position-interface measure-grouping-interface))))
-	))
-    (MultiMeasureRest
-     . (
-	(spacing-procedure . ,Multi_measure_rest::set_spacing_rods)
-	(print-function . ,Multi_measure_rest::print)
-	(Y-offset-callbacks . (,Staff_symbol_referencer::callback))
-	(staff-position . 0)
-	(expand-limit . 10)
-	(thick-thickness . 6.6)
-	(hair-thickness . 2.0)
-	(padding . 1)
-	(meta . ((interfaces . (multi-measure-rest-interface multi-measure-interface rest-interface font-interface staff-symbol-referencer-interface))))
-	))
-    
-    (MultiMeasureRestNumber
-     . (
-	(print-function . ,Text_item::print)
-	(X-offset-callbacks . (,Self_alignment_interface::aligned_on_self
-			       ,Self_alignment_interface::centered_on_other_axis_parent))
-	(Y-offset-callbacks . (,Side_position_interface::aligned_side))
-	(self-alignment-X . 0)
-	(direction . 1)
-	(padding . 1.3)
-	(staff-padding . 1.3)
-	(font-family . number)
-	(meta . ((interfaces . (side-position-interface multi-measure-interface self-alignment-interface font-interface spanner-interface text-interface))))
-	))
-    (MultiMeasureRestText
-     . (
-	(print-function . ,Text_item::print)
-	(X-offset-callbacks . (,Self_alignment_interface::aligned_on_self
-			       ,Self_alignment_interface::centered_on_other_axis_parent))
-	(Y-offset-callbacks . (,Side_position_interface::aligned_side))
-	(self-alignment-X . 0)
-	(direction . 1)
-	(padding . 1.5)
-	(staff-padding . 1.5)
-	(font-family . roman)
-	(meta . ((interfaces . (side-position-interface multi-measure-interface self-alignment-interface font-interface spanner-interface text-interface))))
-	))
- (NoteCollision
-     . (
-	(axes . (0 1))
-	;; Ugh, should not be hard-coded. 
-	(note-width . 1.321)
-	(X-extent-callback . ,Axis_group_interface::group_extent_callback)
-	(Y-extent-callback . ,Axis_group_interface::group_extent_callback)	
-	(meta . ((interfaces . (note-collision-interface axis-group-interface item-interface ))))
-	))
-
-    (NoteColumn
-     . (
-	(axes . (0 1))
-	(X-extent-callback . ,Axis_group_interface::group_extent_callback)
-	(Y-extent-callback . ,Axis_group_interface::group_extent_callback)	
-	(meta . ((interfaces . (axis-group-interface note-column-interface item-interface ))))
-	))
-
-    (NoteHead
-     . (
-	(style . default)
-	(print-function . ,Note_head::print)
-	(ligature-primitive-callback . ,Note_head::print)
-	(glyph-name-procedure . ,find-notehead-symbol)
-	(X-extent-callback . ,Note_head::extent)
-	(Y-extent-callback . ,Note_head::extent)
-	(Y-offset-callbacks  . (,Staff_symbol_referencer::callback))
-	(stem-attachment-function . ,note-head-style->attachment-coordinates)
-	(meta . ((interfaces . (rhythmic-grob-interface rhythmic-head-interface font-interface note-head-interface staff-symbol-referencer-interface item-interface ))))
-	))
-
-    (Glissando
-     . (
-	(style . line)
-	(gap . 0.5)
-	(zigzag-width . 0.75)
-	(breakable . #t)
-	(X-extent-callback . #f)
-	(Y-extent-callback . #f)			 
-	(after-line-breaking-callback . ,Line_spanner::after_line_breaking)
-	(print-function . ,Line_spanner::print)
-	(meta . ((interfaces . (line-spanner-interface spanner-interface))))
-	))
-
-    (VoiceFollower
-     . (
-	(style . line)
-	(gap . 0.5)
-	(breakable . #t)
-	(X-extent-callback . #f)
-	(Y-extent-callback . #f)			 
-	(print-function . ,Line_spanner::print)
-	(after-line-breaking-callback . ,Line_spanner::after_line_breaking)
-	(meta . ((interfaces . (line-spanner-interface spanner-interface))))
-	))
-
-    (NoteName
-     . (
-	(print-function . ,Text_item::print)
-	(font-family . roman)
-	(meta . ((interfaces . (note-name-interface text-interface font-interface item-interface ))))
-	))
-
-    (OctavateEight
-     . (
-	(self-alignment-X . 0)
-	(break-visibility . ,begin-of-line-visible)
-	(X-offset-callbacks . (,Self_alignment_interface::centered_on_parent ,Self_alignment_interface::aligned_on_self))
-	(Y-offset-callbacks . (,Side_position_interface::aligned_side))
-	(print-function . ,Text_item::print)
-	(font-shape . italic)
-	(padding . 0.4)
-	(staff-padding . 0.2)
-	(font-size . -4)
-	(font-family . roman)
-	(meta . ((interfaces . (text-interface self-alignment-interface side-position-interface font-interface item-interface ))))
-	))
-
-    (PaperColumn
-     . (
-	(axes . (0))
-	(before-line-breaking-callback . ,Paper_column::before_line_breaking)
-	(X-extent-callback . ,Axis_group_interface::group_extent_callback)
-
-;	        (print-function . ,Paper_column::print) (font-name . "cmr8") (Y-extent-callback . #f)
-	(meta . ((interfaces . (paper-column-interface axis-group-interface spaceable-grob-interface item-interface ))))
-	))
-
-    (PhrasingSlur
-     . (
-	(print-function . ,Slur::print)
-	(thickness . 1.2)		
-	(spacing-procedure . ,Spanner::set_spacing_rods)		
-	(minimum-length . 1.5)
-	(after-line-breaking-callback . ,Slur::after_line_breaking)
-	(extremity-rules . ,default-slur-extremity-rules)
-	(extremity-offset-alist . ,default-phrasing-slur-extremity-offset-alist)
-	(de-uglify-parameters . (1.5  0.8  -2.0))
-	(Y-extent-callback . ,Slur::height)
-	(height-limit . 2.0)
-	(ratio . 0.333)
-	(beautiful . 0.5)
-	(y-free . 0.75)
-	(attachment . (#f . #f))
-	(attachment-offset . ((0 . 0) . (0 . 0)))
-	(slope-limit . 0.8)
-	(details . ((force-blowfit . 0.5)
-		    (bezier-pct-c0 . -0.2) (bezier-pct-c3 . 0.000006)
-		    (bezier-pct-out-max . 0.8) (bezier-pct-in-max . 1.2)
-		    (bezier-area-steps . 1.0)))
-	(meta . ((interfaces . (slur-interface spanner-interface))))
-	))
-
-    (NonMusicalPaperColumn
-     . (
-	(axes . (0))
-	(X-extent-callback . ,Axis_group_interface::group_extent_callback)
-	(before-line-breaking-callback . ,Paper_column::before_line_breaking)
-	;; debugging stuff: print column number.
-;	(print-function . ,Paper_column::print) (font-name . "cmr8")	(Y-extent-callback . #f)
-
-
-	(meta .  ((interfaces . (paper-column-interface axis-group-interface spaceable-grob-interface item-interface ))))
-	))
-
-    (PercentRepeat
-     . (
-	(spacing-procedure . ,Multi_measure_rest::set_spacing_rods)
-	(print-function . ,Multi_measure_rest::percent)
-	(slope . 1.0)
-	(thickness . 0.48)
-	(minimum-width . 12.5) ; staffspace
-	(font-family . music)
-	(meta . ((interfaces . (multi-measure-rest-interface  spanner-interface font-interface percent-repeat-interface))))
-	))
-
-    (PianoPedalBracket   ;; an example of a text spanner
-     . (
-	(print-function . ,Piano_pedal_bracket::print)
-	(font-family . roman)
-	(style . line)
-	(if-text-padding . 1.0)
-	(direction . -1)
-	(bracket-flare . (0.5 . 0.5))
-	(edge-height . (1.0 . 1.0))
-	(shorten-pair . (0.0 . 0.0))
-	(thickness .  1.0)
-	(meta . ((interfaces . (line-interface piano-pedal-interface piano-pedal-bracket-interface spanner-interface))))
-	))
-
-    (RepeatSlash
-     . (
-	(print-function . ,Percent_repeat_item_interface::beat_slash)
-	(thickness . 0.48)
-	(slope . 1.7)
-	(meta . ((interfaces . (percent-repeat-interface item-interface ))))
-	))
-    (Rest
-     . (
-	(after-line-breaking-callback . ,Rest::after_line_breaking)
-	(X-extent-callback . ,Rest::extent_callback)
-	(Y-extent-callback . ,Rest::extent_callback)		
-	(print-function . ,Rest::print)
-	(Y-offset-callbacks . (,Staff_symbol_referencer::callback)) 
-	(minimum-distance . 0.25)
-	(meta . (
-		 (interfaces . (font-interface
-				rhythmic-head-interface
-											rhythmic-grob-interface
-
-				staff-symbol-referencer-interface
-				rest-interface item-interface ))
-		))))
-
-    (RestCollision
-     . (
-	(minimum-distance . 0.75)
-	(meta . ((interfaces . (rest-collision-interface item-interface ))))
-	))
-
-    (Script
-     . (
-	;; don't set direction here: it breaks staccato.
-	(print-function . ,Script_interface::print)
-
-	;; This value is sensitive: if too large, staccato dots will move a
-	;; space a away.
-	(padding . 0.25)
-	(staff-padding . 0.25)
-	;; (script-priority . 0) priorities for scripts, see script.scm
-	(X-offset-callbacks . (,Self_alignment_interface::centered_on_parent))
-	(before-line-breaking-callback . ,Script_interface::before_line_breaking)
-	(font-family . music)
-	(meta . ((interfaces . (script-interface side-position-interface font-interface item-interface ))))
-	))
-
-    (ScriptColumn
-     . (
-	(before-line-breaking-callback . ,Script_column::before_line_breaking)
-	(meta . ((interfaces . (script-column-interface item-interface ))))
-	))
-
-    (Slur
-     . (
-	(print-function . ,Slur::print)
-	(thickness . 1.2)		
-	(spacing-procedure . ,Spanner::set_spacing_rods)		
-	(minimum-length . 1.5)
-	(after-line-breaking-callback . ,Slur::after_line_breaking)
-	(extremity-rules . ,default-slur-extremity-rules)
-	(extremity-offset-alist . ,default-slur-extremity-offset-alist)
-	(de-uglify-parameters . (1.5  0.8  -2.0))
-	(Y-extent-callback . ,Slur::height)
-	(height-limit . 2.0)
-	(ratio . 0.333)
-	(beautiful . 0.5)
-	(y-free . 0.75)
-	(attachment . (#f . #f))
-	(attachment-offset . ((0 . 0) . (0 . 0)))
-	(slope-limit . 0.8)
-	(details . ((force-blowfit . 0.5)
-		    (bezier-pct-c0 . -0.2) (bezier-pct-c3 . 0.000006)
-		    (bezier-pct-out-max . 0.8) (bezier-pct-in-max . 1.2)
-		    (bezier-area-steps . 1.0)))
-	(meta . ((interfaces . (slur-interface spanner-interface))))
-	))
-
-    (SpacingSpanner
-     . (
-	(spacing-procedure .  ,Spacing_spanner::set_springs)
-	(grace-space-factor . 0.6)
-	(shortest-duration-space . 2.0)
-	(spacing-increment . 1.2)
-	(base-shortest-duration . ,(ly:make-moment 1 8))
-	(meta . ((interfaces . (spacing-interface spacing-spanner-interface spanner-interface))))
-	))
-
-    (SpanBar
-     . (
-	(break-align-symbol . staff-bar)
-	(bar-size-procedure . ,Span_bar::get_bar_size) 
-	(print-function . ,Span_bar::print)
-	(break-visibility . ,begin-of-line-invisible)
-	(X-extent-callback . ,Span_bar::width_callback)
-	(Y-extent-callback . ())
-	(breakable . #t)
-	(glyph . "|")
-	(before-line-breaking-callback . ,Span_bar::before_line_breaking)
-	;; ugh duplication! 
-
-	;;
-	;; Ross. page 151 lists other values, we opt for a leaner look
-	;; 
-	(kern . 3.0)
-	(thin-kern . 3.0)
-	(hair-thickness . 1.6)
-	(thick-thickness . 6.0)
-	(meta . ((interfaces . (span-bar-interface font-interface
-						   bar-line-interface item-interface ))))
-	))
-
-    (StanzaNumber
-     . ((print-function . ,Text_item::print)		
-	(font-family . roman)
-	(font-series . bold)
-	(padding . 1.0)
-	(X-offset-callbacks . (,Side_position_interface::aligned_side))
-	(direction . ,LEFT) 
-	(meta . ((interfaces . (side-position-interface stanza-number-interface text-interface font-interface item-interface ))))		
-	))
-
-    (StaffSpacing
-     . (
-	(breakable . #t)
-	(stem-spacing-correction . 0.4)
-
-	(meta . ((interfaces . (spacing-interface staff-spacing-interface item-interface ))))
-	))
-    (NoteSpacing
-     . (
-	(stem-spacing-correction . 0.5)
-
-	;; Changed this from 0.75.
-	;; If you ever change this back, please document! --hwn
-	(knee-spacing-correction . 1.0)
-	
-	(meta . ((interfaces . (spacing-interface note-spacing-interface item-interface ))))
-	))
-
-    (StaffSymbol
-     . (
-	(print-function . ,Staff_symbol::print)
-	(line-count . 5)
-	(ledger-line-thickness  . (1.0 . 0.1))
-	(layer . 0)
-	(meta . ((interfaces . (staff-symbol-interface spanner-interface))))
-	))
-
-    (SostenutoPedal
-     . (
-	(print-function . ,Text_item::print)
-	(direction . 1)
-	(X-offset-callbacks . (,Self_alignment_interface::aligned_on_self))
-	(no-spacing-rods . #t)
-	(padding . 0.0) ;; padding relative to SostenutoPedalLineSpanner
-	(font-family . roman)
-	(font-shape . italic)
-	(self-alignment-X . 0)
-	(meta . ((interfaces . (text-interface  self-alignment-interface font-interface item-interface))))
-	))
-
-    (SostenutoPedalLineSpanner 
-     . (
-	(axes . (1))
-	(Y-extent-callback . ,Axis_group_interface::group_extent_callback)	
-	(Y-offset-callbacks . (,Side_position_interface::aligned_side))
-	
-
-	(padding . 1.2)
-	(minimum-space . 1.0)
-	(direction . -1)
-	(meta . ((interfaces . (piano-pedal-interface axis-group-interface side-position-interface  spanner-interface))))
-	))
-	
-    (Stem
-     . (
-
-	;; this list is rather long. Trim --hwn
-	(before-line-breaking-callback . ,Stem::before_line_breaking)
-	(print-function . ,Stem::print)
-	(thickness . 1.3)
-
-	;; 3.5 (or 3 measured from note head) is standar length
-	;; 32nd, 64th flagged stems should be longer
-	(lengths . (3.5 3.5 3.5 4.5 5.0))
-	
-	;; Stems in unnatural (forced) direction should be shortened by
-	;; one staff space, according to [Roush & Gourlay].
-	;; Flagged stems we shorten only half a staff space.
-	(stem-shorten . (1.0 0.5))
-
-	;; default stem direction for note on middle line
-	(neutral-direction . -1)
-
-
-
-	;; FIXME.  3.5 yields too long beams (according to Ross and
-	;; looking at Baerenreiter examples) for a number of common
-	;; boundary cases.  Subtracting half a beam thickness fixes
-	;; this, but the bug may well be somewhere else.
-
-	;; FIXME this should come from 'lengths
-
-;	(beamed-lengths . (3.26 3.26 1.5))
-	(beamed-lengths . (3.5 3.5 3.5 4.5 5.0))
-	
-	;; We use the normal minima as minimum for the ideal lengths,
-	;; and the extreme minima as abolute minimum length.
-	
-	;; The 'normal' minima
-	(beamed-minimum-free-lengths . (1.83 1.5 1.25))
-	
-	;; The 'extreme case' minima
-	(beamed-extreme-minimum-free-lengths . (2.0 1.25))
-
-	(X-offset-callbacks . (,Stem::off_callback))
-	(X-extent-callback . ,Stem::dim_callback)	
-	(Y-extent-callback . ,Stem::height)
-	(Y-offset-callbacks . (,Staff_symbol_referencer::callback))
-	(adjust-if-on-staffline . #t)
-	(font-family . music)	   
-	(meta . ((interfaces . (stem-interface  font-interface item-interface ))))
-	))
-
-    (StemTremolo
-     . (
-	(print-function . ,Stem_tremolo::print)
-	(Y-extent-callback . ,Stem_tremolo::height)
-	(X-extent-callback . #f)
-
-	(beam-width . 1.6) ; staff-space
-	(beam-thickness . 0.48) ; staff-space
-	(meta . ((interfaces . (stem-tremolo-interface item-interface ))))
-	))
-
-    (SeparationItem
-     . (
-	(X-extent-callback . #f)
-	(Y-extent-callback . #f)
-	(meta . ((interfaces . (spacing-interface separation-item-interface item-interface ))))
-	))
-
-    (SeparatingGroupSpanner
-     . (
-	(spacing-procedure . ,Separating_group_spanner::set_spacing_rods)
-	(meta . ((interfaces . (only-prebreak-interface spacing-interface separation-spanner-interface spanner-interface))))
-	))
-
-    (SustainPedal
-     . (
-	(no-spacing-rods . #t)
-	(print-function . ,Sustain_pedal::print)
-	(self-alignment-X . 0)
-	(direction . 1)
-	(padding . 0.0)  ;; padding relative to SustainPedalLineSpanner
-	(X-offset-callbacks . (,Self_alignment_interface::aligned_on_self))
-	(meta . ((interfaces . (piano-pedal-interface text-spanner-interface text-interface self-alignment-interface font-interface item-interface))))
-	))
-
-    (SustainPedalLineSpanner 
-     . (
-	(axes . (1))
-	(Y-extent-callback . ,Axis_group_interface::group_extent_callback)
-	(Y-offset-callbacks . (,Side_position_interface::aligned_side))
-	
-	(padding . 1.2)
-	(staff-padding . 1.2)
-	(minimum-space . 1.0)
-	(direction . -1)
-	(meta . ((interfaces . (piano-pedal-interface axis-group-interface side-position-interface spanner-interface))))
-	))
-
-    (System
-     . (
-	(axes . (0 1))
-	(X-extent-callback . ,Axis_group_interface::group_extent_callback)
-	(Y-extent-callback . ,Axis_group_interface::group_extent_callback)	
-	(meta . ((interfaces . (system-interface axis-group-interface spanner-interface))))
-	))
-
-    (SystemStartBrace
-     . (
-	(glyph . "brace")
-	(print-function . ,System_start_delimiter::print)
-	(collapse-height . 5.0)
-	(font-family . braces)
-	(Y-extent-callback . #f)
-	(meta . ((interfaces . (system-start-delimiter-interface font-interface))))
-	))
-
-    (SystemStartBracket
-     . (
-	(Y-extent-callback . #f)
-	(print-function . ,System_start_delimiter::print)
-	(glyph . "bracket")
-	(arch-height . 1.5)
-	(arch-angle . 50.0)
-	(arch-thick . 0.25)
-	(arch-width . 1.5)
-	(bracket-collapse-height . 1)
-	(thickness . 0.25)
-	(meta . ((interfaces . (system-start-delimiter-interface spanner-interface))))
-	))
-
-    (SystemStartBar
-     . (
-	(Y-extent-callback . #f)
-	(print-function . ,System_start_delimiter::print)
-	(glyph . "bar-line")
-	(thickness . 1.6)
-	(after-line-breaking-callback . ,System_start_delimiter::after_line_breaking)
-	(meta . ((interfaces . (system-start-delimiter-interface spanner-interface))))
-	))
-
-    (TextScript
-     . (
-	(print-function . ,Text_item::print)
-	(no-spacing-rods . #t)
-	(X-offset-callbacks . (,Self_alignment_interface::aligned_on_self))
-	(direction . -1)
-	(padding . 0.5)
-	(staff-padding . 0.5)
-	(script-priority . 200)
-	;; todo: add X self alignment?
-	(baseline-skip . 2)
-	(font-family . roman)
-	(meta . ((interfaces . (text-script-interface text-interface side-position-interface font-interface item-interface ))))
-	))
-    (CombineTextScript
-     . (
-	(print-function . ,Text_item::print)
-	(no-spacing-rods . #t)
-	(Y-offset-callbacks . (,Side_position_interface::aligned_side))
-	(X-offset-callbacks . (,Self_alignment_interface::aligned_on_self))
-	(direction . 1)
-	(extra-offset . (-1 . 0)) 
-	(padding . 0.5)
-	(staff-padding . 0.5)
-	(script-priority . 200)
-	;; todo: add X self alignment?
-	(baseline-skip . 2)
-	(font-family . roman)
-	(font-series . bold)
-	(meta . ((interfaces . (text-script-interface text-interface  side-position-interface font-interface item-interface ))))
-	))
-    (TextSpanner
-     . (
-	(print-function . ,Text_spanner::print)
-	(font-family . roman)
-	(style . dashed-line)
-	(staff-padding . 0.1)
-	
-	;; urg, only for (de)cresc. text spanners
-	(if-text-padding . 1.0)
-	(dash-fraction . 0.2)
-	(dash-period . 3.0)
-	(direction . 1)
-	(meta . ((interfaces . (text-spanner-interface side-position-interface font-interface spanner-interface))))		
-	))
-    
-    (OttavaBracket
-     . (
-	(Y-offset-callbacks . (,Side_position_interface::aligned_side))
-	(print-function . ,Ottava_bracket::print)
-	(font-shape . italic)
-	(font-family . roman)
-	(text-repeat-if-broken . #t)
-	(shorten-pair . (0.0 . -0.6))
-	(staff-padding . 1.0)
-	(padding  . 0.5)
-	(minimum-length . 1.0)
-	(dash-fraction . 0.3)
-	(edge-height . (0 . 1.2))
-	(direction . 1)
-	(meta . ((interfaces . (ottava-bracket-interface
-				line-interface side-position-interface
-				font-interface text-interface spanner-interface))))		
-	))
-    
-    (TabNoteHead
-     . (
-	(font-family . roman)
-	(style . default)
-	(print-function . ,Text_item::print)
-	(Y-offset-callbacks  . (,Staff_symbol_referencer::callback))
-	(extra-offset . (0 . -0.65)) ;; UGH! TODO: Clean this up!
-	(stem-attachment-function . ,tablature-stem-attachment-function)
-	(meta . ((interfaces
-		  . (rhythmic-head-interface
-		     font-interface
-		     note-head-interface staff-symbol-referencer-interface
-		     text-interface item-interface ))))
-	))
-
-
-    (Tie
-     . (
-	(print-function . ,Tie::print)
-	(spacing-procedure . ,Spanner::set_spacing_rods)
-	(staffline-clearance . 0.35)
-	(details . ((ratio . 0.333) (height-limit . 1.0)))
-	(thickness . 1.2)
-	(x-gap . -0.1)
-	(y-offset . 0.6)
-	(minimum-length  . 2.5)
-	(meta . ((interfaces . (tie-interface spanner-interface))))
-	))
-
-    (TieColumn
-     . (
-	(after-line-breaking-callback . ,Tie_column::after_line_breaking)
-	(X-extent-callback . #f)
-	(Y-extent-callback . #f)	
-	(meta . ((interfaces . (tie-column-interface spanner-interface))))
-	))
-
-    (TimeSignature
-     . (
-	(print-function . ,Time_signature::print)
-;	(print-function . ,Text_item::print)	
-	(break-align-symbol . time-signature)
-	(break-visibility . ,all-visible)
-	(space-alist . (
-			(first-note . (fixed-space . 2.0))
-			(right-edge . (extra-space . 0.5))
-			(staff-bar .  (minimum-space . 2.0))
-			))
-	(breakable . #t)
-	(style . C)
-;	(text . (,time-signature-glue-markup)) 
-	(font-family . number)
-	(meta . ((interfaces . (time-signature-interface break-aligned-interface font-interface item-interface ))))
-	))
-
-    (TupletBracket
-     . (
-	(gap . 1.0)
-	(padding . 1.1)
-	(thickness . 1.6)
-	(edge-height . (0.7 . 0.7))
-	(shorten-pair . (-0.2 . -0.2))
-	(before-line-breaking-callback . ,Tuplet_bracket::before_line_breaking)
-	(after-line-breaking-callback . ,Tuplet_bracket::after_line_breaking)
-	(print-function . ,Tuplet_bracket::print)
-	(font-family . roman)
-	(font-shape . italic)
-	(font-series . bold)
-
-	(font-size . -2)
-	(meta .  ((interfaces . (text-interface line-interface tuplet-bracket-interface font-interface spanner-interface))))
-	))
-
-    (UnaCordaPedal
-     . (
-	(print-function . ,Text_item::print)
-	(font-family . roman)
-	(font-shape . italic)
-	(no-spacing-rods . #t)
-	(self-alignment-X . 0)
-	(direction . 1)
-	(padding . 0.0)  ;; padding relative to UnaCordaPedalLineSpanner
-	(X-offset-callbacks . (,Self_alignment_interface::aligned_on_self))
-	(meta . ((interfaces . (text-interface self-alignment-interface font-interface item-interface ))))
-	))
-
-    (UnaCordaPedalLineSpanner 
-     . (
-	(axes . (1))
-	(Y-extent-callback . ,Axis_group_interface::group_extent_callback)	
-	(Y-offset-callbacks . (,Side_position_interface::aligned_side))
-	(padding . 1.2)
-	(staff-padding . 1.2)
-	(minimum-space . 1.0)
-	(direction . -1)
-	(meta . ((interfaces . (piano-pedal-interface axis-group-interface side-position-interface spanner-interface))))
-	))
-
-    (VaticanaLigature
-     . (
-	(thickness . 0.6)
-	(flexa-width . 2.0)
-	(ligature-primitive-callback . ,Vaticana_ligature::brew_ligature_primitive)
-	(print-function . ,Vaticana_ligature::print)
-	(meta . ((interfaces . (vaticana-ligature-interface font-interface))))
-	))
-
-    (VoltaBracket
-     . (
-	(print-function . ,Volta_bracket_interface::print)
-	(direction . 1)
-	(padding . 1)
-	(font-family . number)
-	(Y-offset-callbacks . (,Side_position_interface::aligned_side))
-	(thickness . 1.6)  ;  linethickness
-	(height . 2.0) ; staffspace;
-	(minimum-space . 5)
-	(font-family . number)
-	(font-size . -4)
-	(meta . ((interfaces . (volta-bracket-interface line-interface text-interface side-position-interface font-interface spanner-interface))))
-	))
-    
-    (VerticalAlignment
-     . (
-	(axes . (1))
-	(Y-extent-callback . ,Axis_group_interface::group_extent_callback)
-	(X-extent-callback . ,Axis_group_interface::group_extent_callback)
-	(stacking-dir . -1)
-	(meta . ((interfaces . (align-interface axis-group-interface spanner-interface))))
-	))
-
-    (VerticalAxisGroup
-     . (
-	(axes . (1))
-	(Y-extent-callback . ,Axis_group_interface::group_extent_callback)	
-	(X-extent-callback . ,Axis_group_interface::group_extent_callback)
-	
-	(meta . ((interfaces . (axis-group-interface spanner-interface))))
-	))
-   )
- )
-
-
-
-
-(define (completize-grob-entry x)
-  "transplant assoc key into 'name entry of 'meta of X
-"
-  (let* ((name-sym  (car x))
-	 (grob-entry (cdr x))
-	 (metaentry (cdr (assoc 'meta grob-entry)))
-	 (ifaces-entry
-	  (cdr (assoc 'interfaces metaentry)))
-
-	)
-    (set! metaentry (assoc-set! metaentry 'name name-sym))
-    (set! metaentry (assoc-set! metaentry 'interfaces
-				(cons 'grob-interface ifaces-entry)))
-    (set! grob-entry (assoc-set! grob-entry 'meta metaentry))
-    (cons name-sym grob-entry)))
-
-(set! all-grob-descriptions (map completize-grob-entry all-grob-descriptions))
-
-
-
-					;  (display  (map pair? all-grob-descriptions))
-
-
-;; make sure that \property Foo.Bar =\turnOff doesn't complain
-
-(map (lambda (x)
-					; (display (car x)) (newline)
-
-       (set-object-property! (car x) 'translation-type? list?)
-       (set-object-property! (car x) 'is-grob? #t))
-     all-grob-descriptions)
-
-
-(set! all-grob-descriptions (sort all-grob-descriptions alist<?))
diff --git a/scm/define-music-properties.scm b/scm/define-music-properties.scm
deleted file mode 100644
index a849eb37a6..0000000000
--- a/scm/define-music-properties.scm
+++ /dev/null
@@ -1,112 +0,0 @@
-;;;; music-property-description.scm -- part of generated backend documentation
-;;;;
-;;;;  source file of the GNU LilyPond music typesetter
-;;;; 
-;;;; (c)  1998--2004  Han-Wen Nienhuys <hanwen@cs.uu.nl>
-;;;;                 Jan Nieuwenhuizen <janneke@gnu.org>
-
-
-(define-public all-music-properties '())
-
-(define (music-property-description symbol type? description)
- (if (not (equal? #f (object-property symbol 'music-doc)))
-      (begin
-	(ly:warn (string-append "Redefining " (symbol->string symbol) "\n"))
-	(exit 2)
-      ))
- (set-object-property! symbol 'music-type? type?)
- (set-object-property! symbol 'music-doc description)
- (set! all-music-properties (cons symbol all-music-properties))
- )
-
-
-
-(music-property-description 'iterator-ctor procedure? "Function to construct music-event-iterator object for this Music")
-(music-property-description 'duration ly:duration? "Duration of this note/lyric.")
-(music-property-description 'metronome-count number? "How many beats in a minute?")
-(music-property-description 'span-type string? "What kind of spanner should be created?
-
-TODO: consider making type into symbol") 
-(music-property-description 'absolute-octave integer?
-			    "The absolute octave for a octave check note.")
-(music-property-description 'articulations music-list?
-			    "Articulation events specifically for this note.")
-(music-property-description 'articulation-type string? "key for script definitions alist.
-
-TODO: consider making type into symbol ")
-(music-property-description 'associated-context string? "Name of the Voice context associated with this \\newaddlyrics section")
-(music-property-description 'bass boolean? "Set if this note is a bass note in a chord")
-(music-property-description 'cautionary boolean? "If set, this alteration needs cautionary accidental")
-(music-property-description 'change-to-id string? "name of the context to change to ")
-(music-property-description 'change-to-type symbol? "type of the context to change to.")
-(music-property-description 'compress-procedure procedure? "compress this music expression. Argument 1: the music, arg 2: factor")
-(music-property-description 'context-id string? "name of context")
-(music-property-description 'context-type symbol?  "type of context")
-(music-property-description 'denominator integer? "denominator in a time signature")
-(music-property-description 'digit integer? "digit for fingering")
-(music-property-description 'direction ly:dir? "Print this up or down?")
-(music-property-description 'drum-type symbol? "Which percussion instrument to play this note on.")
-
-(music-property-description 'tags list? "List of symbols that for denoting extra details,
-eg. @code{\\tag #'part ...} could tag a piece of music as only being active in a part.")
-
-
-(music-property-description 'text-type symbol? "Particular type of text script (eg. finger, dynamic).")
-(music-property-description 'tempo-unit ly:duration? "The unit for the metronome count.")
-(music-property-description 'tonic ly:pitch? "Base of the scale")
-(music-property-description 'element ly:music? "The single child of a Music_wrapper music object, or the body of a repeat.")
-(music-property-description 'elements music-list? "A list of elements for sequential of simultaneous music, or the alternatives of repeated music. ")
-(music-property-description 'force-accidental boolean? "If set, a cautionary accidental should always be printed on this note")
-(music-property-description 'grob-property symbol? "The symbol of the grob property to set. ")
-(music-property-description 'grob-value scheme? "The value of the grob property to set")
-(music-property-description 'inversion boolean? "If set, this chord note is inverted.")
-(music-property-description 'label markup? "label of a mark.")
-(music-property-description 'last-pitch ly:pitch? "The last pitch after relativization.")
-(music-property-description 'length procedure? "How to compute the duration of this music")
-(music-property-description 'internal-class-name string? "C++ class to use for this Music object") 
-(music-property-description 'name symbol? "Name of this music object")
-(music-property-description 'numerator integer? "numerator of a time signature")
-(music-property-description 'once boolean? "Apply this operation only during one time step?")
-(music-property-description 'octavation  integer?
-			    "This pitch was octavated by how many octaves?
-For chord inversions, this is negative.")
-(music-property-description 'origin ly:input-location? "where was this piece of music defined?")
-(music-property-description 'penalty number? "Penalty for break hint.")
-(music-property-description 'pitch ly:pitch? "the pitch of this note")
-(music-property-description 'pitch-alist list? "list of pitches jointly forming the scale of a key signature")
-(music-property-description 'pop-first boolean? "Do a revert before we try to do a override on some grob property.")
-(music-property-description 'procedure procedure?
-			    "The function to run with \\applycontext. It must take a single argument, being the context.")
-(music-property-description 'property-operations list?
-			    "Do these operations for instantiating the context.")
-(music-property-description 'predicate procedure? "the predicate of a \\outputproperty")
-(music-property-description 'type symbol? "The type of this music object. Determines iteration in some cases.")
-(music-property-description 'types list? "The types of this music
-object; determines by what engraver this music expression is
-processed.")
-
-(music-property-description 'repeat-count  integer? "do a @code{\repeat} how ofen?")
-(music-property-description 'span-direction ly:dir? "Does this start or stop a spanner?")
-(music-property-description 'split-list list? "splitting moments for part combiner.")
-
-(music-property-description 'start-moment-function procedure? "Function to compute the negative length of
-starting grace notes.")
-(music-property-description 'string-number integer? "The number of the string in a String_number_req")
-(music-property-description 'symbol symbol? "Grob name to perform an override/revert on.")
-(music-property-description 'text markup? "markup expression to be printed")
-;; markup?
-(music-property-description 'tremolo-type integer? "")
-(music-property-description 'value scheme? "Assignment value for a
-translation property")
-(music-property-description 'what symbol? "What to change for auto-change. FIXME, naming")
-(music-property-description 'part-combine-status symbol?
-			    "Change to what kind of state? Options are
-solo1, solo2 and unisono")
-
-(music-property-description 'figure string? "a `figure' (which may be
-a string) for figured bass")
-(music-property-description 'alteration number? "alteration for figured bass")
-(music-property-description 'bracket-start boolean? "start a bracket
-here. TODO: use span requests?")
-(music-property-description 'bracket-stop boolean? "stop a bracket here.")
-
diff --git a/scm/define-music-types.scm b/scm/define-music-types.scm
deleted file mode 100644
index a85ea9bc11..0000000000
--- a/scm/define-music-types.scm
+++ /dev/null
@@ -1,747 +0,0 @@
-
-(define-public music-descriptions
-  `(
-    (AbsoluteDynamicEvent
-     . (
-   (description . "Creates a dynamic mark.  Syntax: @var{note}@code{\\x},
-where x is one of \\ppp, \\pp, \\p, \\mp, \\mf, \\f, \\ff, \\fff.")
-	(internal-class-name . "Event")
-	(types . (general-music event dynamic-event absolute-dynamic-event))
-	))
-    (ApplyContext
-     . (
-	(description . "Call the argument with the current context during interpreting phase")
-	(internal-class-name . "Music")
-	(types . (general-music apply-context))
-	(iterator-ctor . ,Apply_context_iterator::constructor)
-	))
-    (ApplyOutputEvent
-     . (
-	(description . "
-Call the argument with all current grobs during interpreting phase.
-
-SYNTAX
-
-\applyoutput FUNC
-
-arguments to func are 1. the grob, 2. the originating context,
-3. context where FUNC is called.
-
-")
-	(internal-class-name . "Event")
-	(iterator-ctor . ,Output_property_music_iterator::constructor)
-	(types . (general-music layout-instruction))
-	))
-    (ArpeggioEvent 
-     . (
-	(description .  "Make an arpeggio on this note. Syntax:
-@var{note}-@code{\\arpeggio}")
-	(internal-class-name .  "Event")
-	(types . (general-music arpeggio-event event))
-	))
-
-    ;; todo: use articulation-event for slur as well.
-    ;; separate non articulation scripts  
-    (ArticulationEvent
-     . (
-   (description .  "Adds an articulation marking to a note.  Syntax:
-@var{note}@code{X}@code{Y}, where X is a direction (up @code{^}, down
-@code{_}, or LilyPond's choice (no direction specified)), and where Y
-is an articulation (such as @code{-.}, @code{->}, @code{\\tenuto},
-@code{\\downbow}).  See the user manual for details.")
-
-	(internal-class-name . "Event")
-	(types . (general-music event articulation-event script-event))
-	)) 
-    (AutoChangeMusic
-     . (
-	(description .  "Used for making voices that switch between piano staves automatically.")
-
-	(internal-class-name . "Music_wrapper")
-	(iterator-ctor . ,Auto_change_iterator::constructor)
-	(types . (general-music music-wrapper-music auto-change-instruction))
-	))
-    (BarCheck
-     . (
-	(description .
-		     "Check whether this music coincides with the start of the measure.")
-	(internal-class-name . "Music")
-	(types . (general-music bar-check))
-	(iterator-ctor . ,Bar_check_iterator::constructor)
-	))
-    (BassFigureEvent
-     . (
-	(description .  "Print a bass-figure text")
-
-	(internal-class-name . "Event")
-	(types . (general-music event rhythmic-event bass-figure-event))
-	))
-    (BeamEvent
-     . (
-   (description .  "Starts or stops a beam.  Syntax for manual control:
-c8-[ c c-] c8")
-	(internal-class-name . "Event")
-	(types . (general-music event beam-event span-event))
-	))
-    (BreakEvent
-     . (
-   (description .  "Creates a line break.  Syntax: \\break.")
-
-	(internal-class-name . "Event")
-	(types . (general-music break-event event))
-	))
-    (BreathingSignEvent
-     . (
-	(description .  "Creates a `breath mark' or `comma'.  Syntax:
-@var{note}\\breathe.")
-
-	(internal-class-name . "Event")
-	(types . (general-music event breathing-event))
-	)) 
-    (BusyPlayingEvent
-     . (
-	(description .  "Used internally to signal beginning and ending of notes.")
-
-	(internal-class-name . "Event")
-	(types . (general-music event busy-playing-event))
-	))
-    (StartPlayingEvent
-     . (
-	(description .  "Used internally to signal beginning of notes.")
-
-	(internal-class-name . "Event")
-	(types . (general-music event start-playing-event))
-	))
-    
-    (ClusterNoteEvent
-     . (
-	(description .  "A note that is part of a cluster.")
-	(internal-class-name . "Event")
-
-	; not a note-event, to ensure that Note_engraver doesn't eat it. 
-	(types . (general-music cluster-note-event melodic-event rhythmic-event event))
-	))
-    
-    (ContextSpeccedMusic
-     . (
-	(description .  "Interpret the argument music within a specific context.")
-	(iterator-ctor . ,Context_specced_music_iterator::constructor)
-	(internal-class-name . "Music_wrapper")
-	(types . (context-specification general-music music-wrapper-music))
-	))
-    
-    (CrescendoEvent
-     . (
-	(description .  "Begins or ends a crescendo.  Syntax: @var{note}\\cr
-... @var{note}\\rc (you can also use \\<, \\!, \\cresc, and
-\\endcresc.  See the user manual for details.).")
-
-	(internal-class-name . "Event")
-	(types . (general-music dynamic-event crescendo-event event))
-	)) 
-    (DecrescendoEvent
-     . (
-	(description .  "See @ref{CrescendoEvent}.")
-
-	(internal-class-name . "Event")
-	(types . (general-music dynamic-event decrescendo-event event))
-	))
- 
-    (ExtenderEvent
-     . (
-	(description .  "Extend lyrics.")
-
-	(internal-class-name . "Event")
-	(types . (general-music extender-event event))
-	))
-    (FingerEvent
-     . (
-	(description . "Specify what finger to use for this note.")
-	(internal-class-name . "Event")
-	(types . (general-music fingering-event event))
-	))
-    (GlissandoEvent
-     . (
-	(description .  "Start  a glissando on this note.")
-	(internal-class-name . "Event")
-	(types . (general-music glissando-event event))
-	))
-    
-    (GraceMusic
-     . (
-	(description .  "Interpret the argument as grace notes. ")
-
-	(internal-class-name . "Grace_music")
-	(iterator-ctor . ,Grace_iterator::constructor)
-	(types . (grace-music music-wrapper-music general-music))
-	))
-    (NoteGroupingEvent
-     . (
-	(description . "Start or stop grouping brackets.")
-	(internal-class-name . "Event")
-	(types . (general-music event note-grouping-event))
-	))
-    (HarmonicEvent
-     . (
-	(description . "Mark a note as harmonic")
-	(internal-class-name . "Event")
-	(types . (general-music event harmonic-event))
-	))
-    (HyphenEvent
-     . (
-	(description .  "A hyphen between lyric syllables.")
-
-	(internal-class-name . "Event")
-	(types . (general-music hyphen-event event))
-	))
-    
-    (KeyChangeEvent
-     . (
-	(description .  "Change the key signature. Syntax: @code{\\key } @var{name} @var{scale}.")
-
-	(internal-class-name . "Key_change_ev")
-	(types . (general-music key-change-event event))
-	))
-    
-    (LigatureEvent
-     . (
-	(description .  "(docme).")
-
-	(internal-class-name . "Event")
-	(span-type . ligature)
-	(types . (general-music span-event ligature-event event))
-	))
-    
-    (LyricCombineMusic
-     . (
-	(description .  "Align lyrics to the start of notes.
-Syntax @var{\\addlyrics }@var{music} @var{lyrics}.")
-
-	(internal-class-name . "Lyric_combine_music")
-	(types . (general-music lyric-combine-music))
-	(iterator-ctor . ,Lyric_combine_music_iterator::constructor)
-	))
-    
-    (NewLyricCombineMusic
-     . (
-	(description .  "Align lyrics to the start of notes.
-Syntax @var{\\addlyrics }@var{music} @var{lyrics}.")
-	(internal-class-name . "Music")
-	(length . ,(ly:make-moment 0 1))
-	(types . (general-music lyric-combine-music))
-	(iterator-ctor . ,New_lyric_combine_music_iterator::constructor)
-	))
-
-    (LyricEvent
-     . (
-	(description .  "A lyric syllable. Must be entered in lyrics mode, i.e.
-@code{\\lyrics @{ twinkle4 twinkle4 @} } .")
-
-	(internal-class-name . "Event")
-	(types . (general-music rhythmic-event lyric-event event))
-	))
-    (MarkEvent
-     . (
-	(description .  "Insert a rehearsal mark. Syntax: @code{\\mark} @var{marker},
-e.g. @code{\\mark \"A\"}.")
-
-	(internal-class-name . "Event")
-	(types . (general-music mark-event event))
-	))
-    (MelismaPlayingEvent
-     . (
-	(description .  "Used internally to signal melismas")
-	(internal-class-name . "Event")
-	(types . (general-music melisma-playing-event event))
-	))
-    
-    (MultiMeasureRestEvent
-     . (
-	(description . "Rests that may be compressed into Multi rests. Syntax
-@code{R2.*4} for 4 measures in 3/4 time. Note the capital R.")
-	(internal-class-name . "Event")
-	(types . (general-music event rhythmic-event multi-measure-rest-event))
-	))
-    
-    (MultiMeasureTextEvent
-     . (
-	(description . "Texts on mm rests. Syntax
-@code{R-\\markup @{ \\roman \"bla\" @}}. Note the explicit font switch.")
-	(internal-class-name . "Event")
-	(types . (general-music event multi-measure-text-event))
-	))
-
-    (Music
-     . (
-	(description .  "Generic type for music expressions.")
-
-	(internal-class-name . "Music")
-	(types . (general-music)) 
-	))
-    (NoteEvent
-     . (
-	(description .  "A note.")
-
-	(internal-class-name . "Event")
-	(types . (general-music event note-event rhythmic-event melodic-event))
-	))
-    
-    (OverrideProperty
-     . (
-	(description .  "Extend the definition of a graphical object.
-
-SYNTAX
-
-@code{\\propery Foo.Bar \\override} @var{SYMBOL} = @var{VALUE}
-
-")
-
-	(internal-class-name . "Music")
-	(types . (general-music layout-instruction))
-	(iterator-ctor . ,	Push_property_iterator::constructor)
-	))
-    (PartCombineMusic
-     . (
-	(description .  "Combine two parts on a staff, either merged or
-as separate voices.")
-
-	(internal-class-name . "Simultaneous_music")
-	(types . (general-music part-combine-music))
-	(iterator-ctor . ,New_pc_iterator::constructor)
-	))
-    
-    (PhrasingSlurEvent
-     . (
-	(description . "Start or end phrasing slur. Syntax NOTE \\(  and \\) NOTE")
-	(internal-class-name . "Event")
-	(types . (general-music span-event phrasing-slur-event))
-	))
-    
-    (PropertySet
-     . (
-	(description .  "Set a context property.
-
-Syntax: @code{\\property @var{context}.@var{prop} = @var{scheme-val}}.")
-	(internal-class-name . "Music")
-	(types . (layout-instruction general-music))
-	(iterator-ctor . ,Property_iterator::constructor)
-	)
-     )
-    
-    (PropertyUnset
-     . (
-	(description .  "Remove the definition of a context @code{\\property}.")
-
-	(internal-class-name . "Music")
-	(types . (layout-instruction general-music))
-	(iterator-ctor . ,Property_unset_iterator::constructor)
-	)
-     )
-    
-    (PesOrFlexaEvent
-     . (
-	(description .  "Within a ligature, mark the previous and the
-following note to form a pes (if melody goes up) or a flexa (if melody
-goes down).")
-
-	(internal-class-name . "Event")
-	(types . (general-music pes-or-flexa-event event))
-	))
-
-    (RelativeOctaveCheck
-     . ((description . "Check if a pitch is in the correct octave.")
-	(internal-class-name . "Relative_octave_check")
-	(types . (general-music relative-octave-check))
-	))
-    
-    (RepeatedMusic
-     . (
-	(description .  "Repeat music in different ways")
-
-	(type .  repeated-music)
-	(types . (general-music repeated-music))
-	))
-    
-    (Event
-     . (
-	(description .  "Atomic music event.")
-
-	(internal-class-name . "Event")
-	(types . (general-music event))
-	))
-    
-    (RestEvent
-     . (
-	(description .  "A Rest. Syntax @code{r4} for a quarter rest. ")
-
-	(internal-class-name . "Event")
-	(types . (general-music event rhythmic-event rest-event))
-	)) 
-    (SequentialMusic
-     . (
-	(description .  "Music expressions concatenated. Syntax \\sequential @{..@} or simply @{..@} .")
-
-	(internal-class-name . "Sequential_music")
-	(iterator-ctor . ,Sequential_music_iterator::constructor)
-	(types . (general-music sequential-music))
-	))
-    
-    (MultiMeasureRestMusicGroup
-     . (
-	(description .  "Like sequential-music, but specifically intended
-to group start-mmrest, skip, stop-mmrest sequence. Syntax @code{R2.*5} for 5 measures in 3/4 time.")
-	(internal-class-name . "Sequential_music")
-	(iterator-ctor . ,Sequential_music_iterator::constructor)
-	(types . (general-music sequential-music))
-	))
-
-    (SoloOneEvent
-     . (
-	(description . "Print Solo.1")
-	(internal-class-name . "Event")
-	(part-combine-status . solo1)
-	(types . (general-music event part-combine-event))
-	))
-    (SoloTwoEvent
-     . (
-	(description . "Print Solo.2")
-	(internal-class-name . "Event")
-	(part-combine-status . solo2)
-	(types . (general-music event part-combine-event))
-	))
-    (UnisonoEvent
-     . ((description . "Print a2")
-	(internal-class-name .  "Event")
-	(part-combine-status . unisono)
-	(types . (general-music event part-combine-event))))
-    
-    (SimultaneousMusic
-     . (
-	(description .  "Music playing together.
-
-SYNTAX
-
-@code{ \\simultaneous @{ .. @}} or < .. >.")
-
-	(internal-class-name . "Simultaneous_music")
-	(iterator-ctor . ,Simultaneous_music_iterator::constructor)
-	
-	(types . (general-music simultaneous-music))
-	))
-    
-    (SlurEvent
-     . (
-	(description . "Start or end slur. Syntax NOTE(  and )NOTE")
-	(internal-class-name . "Event")
-	(types . (general-music span-event slur-event))
-	))
-
-    (RevertProperty
-     . (
-	(description .  "The opposite of @ref{OverrideProperty}: remove a
-previously added property from a graphical object definition
- ")
-
-	(internal-class-name . "Music")
-	(types . (general-music layout-instruction))
-	(iterator-ctor . ,	Pop_property_iterator::constructor)
-	))
-
-    (OutputPropertySetMusic
-     . (
-	(description .  "Set grob properties in objects
-individually. Syntax @code{\\outputproperty @var{predicate} @var{prop}
-= @var{val}}.")
-
-	(internal-class-name . "Music")
-	(iterator-ctor . ,Output_property_music_iterator::constructor)
-	(types . (general-music layout-instruction))
-	))
-    
-    (TextSpanEvent
-     . (
-	(description . "Start a text spanner like 8va.....|")
-	(internal-class-name . "Event")
-	(types . (general-music span-event text-span-event))
-	))
-    
-    (TranslatorChange
-     . (
-	(description .  "Change staffs in Piano staff. Syntax @code{\\translator Staff = @var{new-id}}.")
-	(internal-class-name . "Music")
-	(iterator-ctor . , Change_iterator::constructor)
-	(types . (general-music translator-change-instruction))
-	))
-    
-    (TimeScaledMusic
-     . (
-	(description .  "Multiply durations, as in tuplets. Syntax @code{\\times @var{fraction} @var{music}}, e.g.
-@code{\\times 2/3 @{ ... @}} for triplets.
- ")
-	(internal-class-name . "Time_scaled_music")
-	(iterator-ctor . ,Time_scaled_music_iterator::constructor)
-	(types . (time-scaled-music music-wrapper-music general-music))
-	))
-    
-    (TransposedMusic
-     . (
-	(description .  "Music that has been transposed.")
-	(internal-class-name . "Transposed_music")
-	(types . (music-wrapper-music general-music transposed-music))
-	))
-
-    (UntransposableMusic
-     . (
-	(description .  "Music that can not be transposed.")
-
-	(internal-class-name . "Untransposable_music")
-	(types . (music-wrapper-music general-music untransposable-music)) 
-	))
-
-    (UnrelativableMusic
-     . (
-	(description .  "Music that can not be converted from relative to absolute notation.
-For example, transposed music.")
-	(internal-class-name . "Un_relativable_music")
-	(types . (music-wrapper-music general-music unrelativable-music))
-	))
-
-    (RelativeOctaveMusic
-     . (
-	(description .  "Music that was entered in relative octave notation.")
-
-	(internal-class-name . "Relative_octave_music")
-	(types . (music-wrapper-music general-music relative-octave-music))
-	))
-    
-    (EventChord
-     . (
-	(description .  "Internally used to group a set of events.")
-	(internal-class-name . "Event_chord")
-	(iterator-ctor . ,Event_chord_iterator::constructor)
-	(types . (general-music event-chord simultaneous-music))
-	)
-     )
-    
-    (ScriptEvent
-     . (
-	(description .  "Add an articulation mark to a note. ")
-
-	(internal-class-name . "Event")
-	(types . (general-music event))
-	))
-
-    (SkipMusic
-     . (
-	(description .  "Filler that takes up duration, does not print anything, and also
-does not create staffs or voices implicitly.
-
-Syntax: @code{\\skip }@var{duration}.")
-	(internal-class-name . "Music")
-	(length . ,ly:music-duration-length)
-	(iterator-ctor . ,Simple_music_iterator::constructor)
-	(types . (general-music event rhythmic-event skip-event))
-	))
-     
-    (SkipEvent
-     . (
-	(description .  "Filler that takes up duration, but does not print anything.
-
-Syntax: @code{s}@var{duration}")
-
-	(internal-class-name . "Event")
-	(types . (general-music event rhythmic-event skip-event))
-	))
-    (SpanEvent
-     . (
-	(description .  "Event for anything that is started at a different time than stopped.")
-
-	(internal-class-name . "Event")
-	(types . (general-music event))
-	))
-    
-    (SustainEvent
-     . (
-	(description . "Depress or release sustain pedal. ")
-	(internal-class-name . "Event")
-	(types . (general-music pedal-event sustain-pedal-event))
-	))
-    
-    (SostenutoEvent
-     . (
-	(description . "Depress or release sostenuto pedal. ")
-	(internal-class-name . "Event")
-	(types . (general-music pedal-event sostenuto-pedal-event))
-	))
-    
-    (UnaCordaEvent
-     . (
-	(description . "Depress or release una-corda pedal.")
-	(internal-class-name . "Event")
-	(types . (general-music pedal-event una-corda-pedal-event))
-	))
-    
-    (StringNumberEvent
-     . (
-	(description .  "Specify on which string to play this note. Syntax: @code{\\@var{number}}.")
-
-	(internal-class-name . "Event")
-	(types . (general-music string-number-event event))
-	)) 
-
-    (MetronomeChangeEvent
-     . (
-	(description .  "Change tempo setting (in beats per minute).")
-	(internal-class-name . "Event")
-	(types . (general-music metronome-change-event tempo-event event))
-	))
-    
-    (TextScriptEvent
-     . (
-	(description .  "")
-	(internal-class-name . "Event")
-	(types . (general-music script-event text-script-event event))
-	)) 
-    (TieEvent
-     . (
-	(description .  "A tie.  Entered as @var{note}-~.")
-	(internal-class-name . "Event")
-	(types . (general-music tie-event event))
-	))
-    (TremoloEvent
-     . (
-	(description . "Un measured tremolo.")
-	(internal-class-name . "Event")
-	(types . (general-music event tremolo-event))
-	))
-    
-    (VoiceSeparator
-     . (
-	(description .  "Separate polyphonic voices in simultaneous music. Syntax: @code{\\\\}")
-
-	(internal-class-name . "Music")
-	(types . (separator general-music))
-	))
-
-    (VoltaRepeatedMusic
-     . (
-	(iterator-ctor . ,Volta_repeat_iterator::constructor)
-	(internal-class-name . "Repeated_music")
-	(description . "")
-	(start-moment-function .  ,Repeated_music::first_start)
-	(length . ,Repeated_music::volta_music_length)
-	(types . (general-music repeated-music volta-repeated-music))
-	))
-    
-    (UnfoldedRepeatedMusic
-     . (
-	(iterator-ctor . ,Unfolded_repeat_iterator::constructor)
-	(description .  "")
-	(start-moment-function .  ,Repeated_music::first_start)
-	(internal-class-name . "Repeated_music")
-	(types . (general-music repeated-music unfolded-repeated-music))
-	(length . ,Repeated_music::unfolded_music_length)
-	))
-    (PercentRepeatedMusic
-     . (
-	(internal-class-name . "Repeated_music")
-	(description .  "Repeats encoded by percents.")
-	(iterator-ctor . ,Percent_repeat_iterator::constructor)
-	(start-moment-function .  ,Repeated_music::first_start)
-	(length . ,Repeated_music::unfolded_music_length)
-	(types . (general-music repeated-music percent-repeated-music))
-	))
-    
-    (TremoloRepeatedMusic
-     . (
-	(iterator-ctor . ,Chord_tremolo_iterator::constructor)
-	(description .  "Repeated notes denoted by tremolo beams.")
-	(internal-class-name . "Repeated_music")
-	(start-moment-function .  ,Repeated_music::first_start)
-
-	;; the length of the repeat is handled by shifting the note logs
-	(length . ,Repeated_music::folded_music_length)
-	(types . (general-music repeated-music tremolo-repeated-music))
-	
-	))
-    
-    (FoldedRepeatedMusic
-     . (
-	(internal-class-name . "Repeated_music")
-	(description .  "Repeats with alternatives placed in parallel. ")
-	(iterator-ctor  . ,Folded_repeat_iterator::constructor)
-	(start-moment-function .  ,Repeated_music::minimum_start)
-	(length . ,Repeated_music::folded_music_length)
-	(types . (general-music repeated-music folded-repeated-music))
-	))
-    ))
-
-(set! music-descriptions
-      (sort music-descriptions alist<?))
-
-(define music-name-to-property-table (make-vector 59 '()))
-
-
-;; init hash table,
-;; transport description to an object property.
-(set!
- music-descriptions
- (map (lambda (x)
-	(set-object-property! (car x)
-			      'music-description
-			      (cdr (assq 'description (cdr x))))
-	(let
-	    ((l (cdr x)))
-	  (set! l (assoc-set! l 'name (car x)))
-	  (set! l (assq-remove!  l 'description))
-	  (hashq-set! music-name-to-property-table (car x) l)
-	  (cons (car x) l)
-	  ))
-      music-descriptions))
-
-
-
-(define-public (make-music-by-name x)
-  (if (not (symbol? x))
-      (error (format "Not a symbol: ~a" x)))
-  (let*
-      (
-       (props (hashq-ref music-name-to-property-table x '()))
-       (name (if (pair? props)
-		 (cdr (assoc 'internal-class-name props))
-		 (error "Can not find music object" x)))
-       )
-
-    (if (eq? props '())
-	(ly:warn (format "Could not find music type `~a'" x)))  
-    (ly:make-bare-music name props)
-    ))
-
-
-
-(define-public (make-repeated-music name)
-  (let*
-      (
-       (handle (assoc
-		name
-		'(("volta" . VoltaRepeatedMusic)
-		  ("unfold" . UnfoldedRepeatedMusic)
-		  ("percent" . PercentRepeatedMusic)
-		  ("tremolo" . TremoloRepeatedMusic)
-		  ("fold" . FoldedRepeatedMusic)
-		  )))
-       (music-name
-	(if (pair? handle)
-	    (cdr handle)
-	    (begin
-	      (ly:warn
-	       (string-append "Unknown repeat type `" name
-			      "'\nSee music-types.scm for supported repeats"))
-	      'VoltaRepeatedMusic)
-	    )
-	)
-       )
-
-    (make-music-by-name music-name)
-    ))
-
diff --git a/scm/define-translator-properties.scm b/scm/define-translator-properties.scm
deleted file mode 100644
index 060d40599f..0000000000
--- a/scm/define-translator-properties.scm
+++ /dev/null
@@ -1,452 +0,0 @@
-;;;; translator-property-description.scm -- part of backend documentation
-;;;;
-;;;;  source file of the GNU LilyPond music typesetter
-;;;; 
-;;;; (c)  1998--2004  Han-Wen Nienhuys <hanwen@cs.uu.nl>
-;;;;                 Jan Nieuwenhuizen <janneke@gnu.org>
-
-
-(define-public all-translation-properties '())
-
-(define (translator-property-description symbol type? description)
- (if (not (equal? #f (object-property symbol 'translation-doc)))
-      (begin
-	(ly:warn (string-append "Redefining " (symbol->string symbol) "\n"))
-	(exit 2)
-      ))
-  
-  (set-object-property! symbol 'translation-type? type?)
-  (set-object-property! symbol 'translation-doc description)
-  (set! all-translation-properties (cons symbol all-translation-properties))
-  symbol
-  )
-
-(define all-user-translation-properties
-  (map
-   (lambda (x)
-     (apply translator-property-description x))
-   `(
-     (aDueText ,string? "text for begin of a due")
-     (alignBassFigureAccidentals ,boolean?
-				 "If true, then the accidentals are aligned in bass figure context.")
-
-     (allowBeamBreak ,boolean? "If true allow line breaks during beams.")
-     (associatedVoice ,string? "Name of the
-Voice that has the melody for this Lyrics.")
-     (autoBeamSettings ,list? "Specifies
-when automatically generated beams should begin and end.
-See the notation manual for more information. ")
-     (autoAccidentals ,list? "List of
-different ways to typeset an accidental. See the notation manual for more information on setting this.")
-     (autoBeaming ,boolean? "If set to true
-then beams are generated automatically.")
-
-     (autoCautionaries ,list? "List similar to
-autoAccidentals, but it controls cautionary accidentals rather than
-normal ones. Both lists are tried, and the one giving the most accidentals
-wins. In case of draw, a normal accidental is typeset.
-")
-     (automaticBars ,boolean? " If set to true then bar lines will not be
-printed automatically; they must be explicitly created with
-@code{\\bar} command.  Unlike the @code{\\cadenza} keyword, measures
-are still counted.  Bar generation will resume according to that count
-if this property is unset.
-")
-
-     (barAlways ,boolean? "If set to true a bar line is drawn after each
-note.")
-
-     (barCheckSynchronize ,boolean? "If true then reset measurePosition
-when finding a barcheck.")
-
-     (barNumberVisibility ,procedure? "Procedure that takes an int and
-returns whether the corresponding bar number should be printed")
-     (bassFigureFormatFunction ,procedure? "DOCME")
-     (beatLength ,ly:moment? "The length of one beat in this time signature.")
-     (beatGrouping ,list?
-		   "List of beatgroups. Eg. in 5/8 time #(list 2 3).")
-
-
-     (breakAlignOrder ,list? "Defines the order in which
-prefatory matter (clefs, key signatures) appears, eg. this puts the
-key signatures after the bar lines:
-
-@example
-	\\property Score.breakAlignOrder = #'(
-	  span-bar
-	  breathing-sign
-	  clef
-	  staff-bar
-	  key
-	  time-signature
-	)
-@end example
-")
-
-     (centralCPosition ,number? "Place of the central C, measured in half
-staffspaces.  Usually determined by looking at clefPosition and
-clefGlyph.")
-
-     (chordNameFunction ,procedure?
-			"The function that converts lists of pitches to chord names.")
-     (chordNoteNamer ,procedure?
-		     "Function that converts from a pitch object to a text markup. Used for single pitches.")
-     (chordRootNamer ,procedure?
-		     "Function that converts from a pitch object to a text markup. Used for chords.")
-     (chordNameExceptions ,list?
-			  "Alist of chord exceptions. Contains (CHORD . MARKUP) entries.")
-     (chordNameExceptionsFull ,list?
-			      "Alist of chord exceptions. Contains (CHORD . (MARKUP)) entries.")
-     (chordNameExceptionsPartial ,list?
-				 "Alist of partial chord exceptions. Contains (CHORD . (PREFIX-MARKUP SUFFIX-MARKUP)) entries.")
-     (chordNameSeparator ,markup?
-			 "The markup object used to separate parts of a chord name.")
-
-     (chordChanges ,boolean? "Only show changes in chords scheme?")
-     (clefGlyph ,string? "Name of the symbol within the music font")
-     (clefOctavation ,integer? "Add
-this much extra octavation. Values of 7 and -7 are common.")
-
-     (clefPosition ,number? "Where should the center of the clef symbol go?
-The unit of this distance is the half staff space, and 0 represents the vertical center.")
-
-     (connectArpeggios ,boolean? " If set, connect all arpeggios that are
-found.  In this way, you can make arpeggios that cross staves. ")
-     (createKeyOnClefChange ,boolean? "Print a key signature whenever the clef is changed.")
-     (crescendoText ,markup? "Text to print at start of non-hairpin crecscendo, ie: @samp{cresc.}")
-     (crescendoSpanner ,symbol? "Type of spanner to be used for crescendi.
-One of: @samp{hairpin}, @samp{line}, @samp{dashed-line},
-@samp{dotted-line}.  If unset, hairpin type is used.")
-     (decrescendoText ,markup? "Text to print at start of non-hairpin decrecscendo, ie: @samp{dim.}")
-
-     (drumPitchTable ,hash-table? "A table mapping percussion
-instruments (symbols) to pitches.")
-
-     (drumStyleTable ,hash-table? "A hash table containing mapping
-drums to layout settings.  Predefined values: @code{drums-style},
-@code{timbales-style}, @code{congas-style}, @code{bongos-style} and
-@code{percussion-style}.
-
-The layout style is a hash table, containing the drum-pitches (eg. the
-symbol @code{hihat}) as key, and a list (@var{notehead-style}
-@var{script} @var{vertical-position}) as values.
- ")
-     (currentBarNumber ,integer? "Contains the current barnumber. This property is incremented at
-every barline.
-")
-     (defaultBarType ,string? "Sets the default type of bar line.
-Available bar types: [FIXME];
-
-This variable is typically read by Timing_engraver at Score level, so
-overriding Staff.defaultBarType will have no effect.
-")
-
-     (decrescendoSpanner ,symbol? "Type of spanner to be used for
-decrescendi.  One of: @samp{hairpin}, @samp{line}, @samp{dashed-line},
-@samp{dotted-line}.  If unset, hairpin type is used.")
-
-     (explicitClefVisibility ,procedure? "visibility-lambda function for clef changes.")
-
-     (explicitKeySignatureVisibility ,procedure? "visibility-lambda
-function for explicit Key changes; \\override of #'break-visibility
-will set the visibility for normal (ie. at the start of the line) key
-signatures.")
-
-     (extraNatural ,boolean? "Whether to typeset an
-extra natural sign before accidentals changing from a non-natural to 
-another non-natural.")
-
-     (extraVerticalExtent ,number-pair?
-			  "extra vertical extent, same format as MinimumVerticalExtent")
-
-
-     (followVoice ,boolean? "if set, note heads are tracked across staff
-switches by a thin line")
-
-     (fontSize ,number?
-	       "The relative size of all grobs in a context. This is
-done using the @code{Font_size_engraver}.")
-
-     (fingeringOrientations ,list?
-			    "List of symbols, containing left, right, up and/or down. This list
-determines where fingerings are put relative to the chord being
-fingered.")
-
-     (forceClef ,boolean? "Show clef symbol, even if it hasn't
-changed. Only active for the first clef after the property is set, not
-for the full staff.")
-
-     (highStringOne ,boolean? "Whether the 1st string is the string with
-highest pitch on the instrument. This used by the automatic string
-selector for tab notation.")
-
-     (ignoreMelismata ,boolean? "Ignore melismata for this @ref{Lyrics}.")
-     (instr ,markup? "see @code{instrument}")
-
-     (instrument ,markup? "The name to print left of a staff.  The
-@code{instrument} property labels the staff in the first system, and
-the @code{instr} property labels following lines.")
-     (instrumentEqualizer ,procedure? "[DOCUMENT-ME]")
-
-     (instrumentSupport ,list? "list of grobs to attach instrument name
-to.")
-     (keyAccidentalOrder ,list? "
-Alist that defines in what order  alterations should be printed.
-The format is (NAME . ALTER), where NAME is from 0 .. 6 and ALTER from  -1, 1.
-")
-
-     (keySignature ,list? "The current key signature. This is an alist
-containing (NAME . ALTER) or ((OCTAVE . NAME) . ALTER).
- where NAME is from 0.. 6 and
-ALTER from -4 (double flat) to 4 (double sharp).
-")
-
-     (majorSevenSymbol ,markup? "How should
-the major7 be formatted in a chord name?")
-     (markFormatter ,procedure? "Procedure
-taking as arguments context and rehearsal mark. It should return the
-formatted mark as a markup object.")
-
-     (measureLength ,ly:moment? "Length of one
-measure in the current time signature last?")
-
-     (measurePosition ,ly:moment? "How much of the current measure
-have we had.  This can be set manually to create incomplete
-measures.")
-
-     (melismaBusyProperties ,list? "List of properties (symbols) to
-determine whether a melisma is playing.  Setting this property will
-influence how lyrics are aligned to notes.  For example, if set to
-@code{#'(melismaBusy beamMelismaBusy)}, only manual melismata and
-manual beams are considered. Possible values include
-@code{melismaBusy}, @code{slurMelismaBusy}, @code{tieMelismaBusy}, and
-@code{beamMelismaBusy}")
-
-
-     (metronomeMarkFormatter ,procedure? "How to produce a metronome
-markup.  Called with 2 arguments, event and context.")
-     (midiInstrument ,string? "Name of the MIDI instrument to use ")
-     (midiMinimumVolume ,number? "[DOCUMENT-ME]")
-     (midiMaximumVolume ,number? "[DOCUMENT-ME]")
-     (minimumFret ,number? "The tablature auto string-selecting mechanism
-selects the highest string with a fret not less than minimumFret")
-     (minimumVerticalExtent ,number-pair? "minimum vertical extent, same
-format as VerticalExtent")
-     (recordEventSequence ,procedure? "Upon termination of this context,
-this function is called with current context and a list of music
-objects.  The list of contains entries with start times, music objects
-and whether they're processed in this context.")
-     (ottavation ,string? "If set, the text for an 8va spanner. Changing
-this implies a new text spanner. ")
-     (pedalSustainStrings ,list? "List of string to print for
-sustain-pedal. Format is (UP UPDOWN DOWN), where each of the three is
-the string to print when this is done with the pedal.")
-     (pedalUnaCordaStrings ,list? "see pedalSustainStrings.")
-     (pedalSostenutoStrings ,list? "see pedalSustainStrings.")
-     (pedalSustainStyle ,symbol? "A symbol that indicates how to print
-sustain pedals: text, bracket or mixed (both).")
-     (pedalUnaCordaStyle ,symbol? "see pedalSustainStyle.")
-     (pedalSostenutoStyle ,symbol? "see pedalSustainStyle.")
-     (rehearsalMark ,integer? "The last rehearsal mark printed.")
-     (repeatCommands ,list? "This property is read to find any command of the form (volta . X), where X is a string or #f")
-
-     (restNumberThreshold ,number?
-			  "If a multimeasure rest takes less
-than this number of measures, no number is printed. ")
-
-     (skipBars ,boolean? "If set to true, then
-skip the empty bars that are produced by multimeasure notes and rests.
-These bars will not appear on the printed output.  If not set (the
-default) multimeasure notes and rests expand into their full length,
-printing the appropriate number of empty bars so that synchronization
-with other voices is preserved.
-
-
-@example
-@@lilypond[fragment,verbatim,center]
-r1 r1*3 R1*3  \\\\property Score.skipBars= ##t r1*3 R1*3
-@@end lilypond
-@end example
-")
-     (skipTypesetting ,boolean?
-		      "When true, all no typesetting is done at
-this moment, causing  the interpretation phase to go a lot faster. This can
-help with debugging large scores.")
-     (soloADue ,boolean? "set Solo/A due texts in the part combiner?")
-     (soloIIText ,string? "text for begin of solo for voice ``two'' when part-combining.")
-     (soloText ,string? "text for begin of solo when part-combining.")
-     (sparseTies ,boolean? "only create one tie per chord.")
-     (squashedPosition ,integer? " Vertical position of
-squashing for Pitch_squash_engraver.")
-
-     (stringOneTopmost ,boolean? "Whether the 1st string is printed on the
-top line of the tablature.")
-
-     (stanza ,markup? "Stanza `number' to print before the start of a
-verse. Use in Lyrics context.")
-
-     (stemLeftBeamCount ,integer? " Specify the number of beams to draw on
-the left side of the next note.  Overrides automatic beaming.  The
-value is only used once, and then it is erased. [JUNKME.]")
-
-     (stemRightBeamCount ,integer? "idem, for the right side. [JUNKME]")
-
-     (stringTunings ,list? "The tablature strings tuning. Must be a list of
-the different semitons pitch of each string (starting by the lower
-one).")
-
-     (subdivideBeams ,boolean? "If set, multiple beams will be subdivided
-at beat positions - by only drawing one beam over the beat.")
-
-     (systemStartDelimiter ,symbol? "Which grob to make for the start of
-the system/staff? Set to @code{SystemStartBrace},
-@code{SystemStartBracket} or @code{SystemStartBar}.")
-
-     (tablatureFormat ,procedure? "Function formatting a tab notehead; it
-takes a string number, a list of string tunings and Pitch object. It
-returns the text as a string.")
-
-     (timeSignatureFraction ,number-pair?
-			    "pair of numbers, signifying the time signature. For example #'(4 . 4)
-is a 4/4 time signature.")
-
-     (timing ,boolean? " Keep administration of measure length, position, bar number, etc?
-Switch off for cadenzas.")
-     (tonic ,ly:pitch?
-	    "The tonic of the current scale")
-     (transposing ,integer? "Transpose the MIDI output.  Set this property to the number of half-steps to transpose by.")
-
-     (tremoloFlags ,integer? "Number of tremolo flags to add if none is specified.")
-
-     (tupletNumberFormatFunction
-      ,procedure?
-      "Function taking a music as input, producing a string. This function
-is called to determine the text to print on a tuplet bracket.")
-
-     (tupletSpannerDuration ,ly:moment? "
-Normally a tuplet bracket is as wide as the
-@code{\\times} expression that gave rise to it. By setting this
-property, you can make brackets last shorter. Example
-
-@example
-@@lilypond[verbatim,fragment]
-context Voice \\times 2/3 @{
-  property Voice.tupletSpannerDuration = #(ly:make-moment 1 4)
-  c-[8 c c-] c-[ c c-]
-@}
-@@end lilypond
-@end example
-.")
-     (verticalAlignmentChildCallback ,procedure? "what callback to add to children of a vertical alignment.
-It determines what alignment procedure is used on the alignment
-itself.  .")
-     (verticalExtent ,number-pair? "hard coded vertical extent.  The format
-is a pair of dimensions, for example, this sets the sizes of a staff
-to 10 (5+5) staffspaces high.
-
-@example
-property Staff.verticalExtent = #'(-5.0 . 5.0)
-@end example
-
-
-This does not work for Voice or any other context  that doesn't form a
-vertical group.")
-
-     (vocalName ,markup? "Name of a vocal line.")
-     (vocNam ,markup? "Name of a vocal line, short version.")
-
-     (voltaOnThisStaff ,boolean?
-		       "Normally, volta brackets are put only on the topmost staff. Setting
-this variable to true, will force a bracket to be on this staff as
-well.")
-
-     (voltaSpannerDuration ,ly:moment? "This specifies the maximum duration
-to use for the brackets printed for @code{\\alternative}.  This can be
-used to shrink the length of brackets in the situation where one
-alternative is very large.")
-
-     (whichBar
-      ,string?
-      "This property is read to determine what type of barline to create.
-
-Example:
-@example
-\\property Staff.whichBar = \"|:\"
-@end example
-
-This will create a start-repeat bar in this staff only.
-Valid values are described in @ref{bar-line-interface}.
-")
-     )))
-
-(define all-internal-translation-properties
-  (map
-   (lambda (x)
-     (set-object-property! (car x) 'internal-translation #t)
-     (apply translator-property-description x)
-
-     )
-
-   `(
-
-     (slurMelismaBusy ,boolean? "Signal if a slur is present.")
-     (originalCentralCPosition
-      ,integer?
-      "Used for temporary overriding central C in octavation brackets. ")
-     (melismaBusy ,boolean? "Signifies
-whether a melisma is active. This can be used to signal melismas on
-top of those automatically detected. ")
-     (graceSettings ,vector?
-		    "Overrides for grace notes. This
-property should be manipulated through the @code{add-grace-property}
-function.")
-     (currentCommandColumn ,ly:grob? "Grob that is X-parent to all current breakable (clef, key signature, etc.) items.")
-     (currentMusicalColumn ,ly:grob? "Grob that is X-parent to all non-breakable items (note heads, lyrics, etc.).")
-     (breakableSeparationItem ,ly:grob?
-			      "The breakable items in this time step, for this staff.")
-
-     (localKeySignature ,list? "the key signature at this point in the
-measure.  The format is the same as for keySignature, but can also contain
-((OCTAVE . NAME) . (ALTER . BARNUMBER)) pairs. It is reset at every
-bar line.
-"  )
-
-     
-     (localKeySignatureChanges ,list? "Experimental.
- [DOCME]")
-
-     (finalizations ,list? "List of expressions to evaluate before proceeding to next time step. Internal variable.")
-     (busyGrobs ,list? "
-a queue of (END-MOMENT . GROB) conses. This is for internal (C++) use only.
-This property contains the grobs which are still busy (eg. noteheads, spanners, etc.)
-")
-     (barCheckLastFail ,ly:moment? "Where in  the measurze did the last barcheck fail?") 
-     (associatedVoiceContext ,ly:context? "The context object of the Voice that has the melody for this Lyrics.")
-     (acceptHashTable ,vector? "Internal
-variable: store table with MusicName to Engraver entries.")
-     (acknowledgeHashTable ,vector?
-			   "Internal variable: store interface to engraver smob table for current
-context.")
-
-     (beamMelismaBusy ,boolean? "Signal if a beam is present.")
-(dynamicAbsoluteVolumeFunction ,procedure? "[DOCUMENT-ME]
-")
-
-(lastKeySignature ,list? "Last key
-signature before a key signature change.")
-
-(scriptDefinitions ,list? "
-Description of scripts. This is used by Script_engraver for typesetting note-super/subscripts. See @file{scm/script.scm} for more information
-")
-(stavesFound ,grob-list? "list of all staff-symbols found.")
-(tieMelismaBusy ,boolean? "Signal whether a tie is present.")
-     )
-   ))
-
-(define all-translation-properties
-  (append all-user-translation-properties
-	  all-internal-translation-properties))
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-
-(define-public default-melisma-properties '(melismaBusy slurMelismaBusy tieMelismaBusy beamMelismaBusy))
diff --git a/scm/document-backend.scm b/scm/document-backend.scm
deleted file mode 100644
index 6ae393c7e5..0000000000
--- a/scm/document-backend.scm
+++ /dev/null
@@ -1,199 +0,0 @@
-;;; backend-documentation-lib.scm -- Functions for backend documentation
-;;;
-;;; source file of the GNU LilyPond music typesetter
-;;; 
-;;; (c)  2000--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-;;; Jan Nieuwenhuizen <janneke@gnu.org>
-
-
-;;; This file generates documentation for the backend of lilypond.
-
-;; alist of property descriptions
-
-;;
-"
-TODO:
-
-
-Grob bla
-
-Created by:
-
-  * preset properties + explanation
-
-Interfaces:
-
-  * properties available.
-
-"
-
-
-(define (interface-doc-string interface grob-description)
-  (let*
-      ((name (car interface))
-       (desc (cadr interface))
-       (props (sort (caddr interface) symbol<?))
-       (docfunc (lambda (pr)
-		  (document-property
-		   pr 'backend grob-description)))
-       (propdocs (map docfunc props)))
-    (string-append
-     desc
-     "\n\n"
-     (description-list->texi propdocs))
-    ))
-
-
-(define iface->grob-table (make-vector 61 '()))
-;; extract ifaces, and put grob into the hash table.
-(map
- (lambda (x)
-   (let*
-       (
-	(metah (assoc 'meta (cdr x)))
-	(meta (cdr metah))
-	(ifaces (cdr (assoc 'interfaces meta)))
-	)
-
-     (map (lambda (iface)
-	    (hashq-set!
-	     iface->grob-table iface
-	     (cons (car x)
-		   (hashq-ref iface->grob-table iface '())
-		   )))
-	  ifaces)
-     ))
- all-grob-descriptions)
-
-;; First level Interface description
-(define (interface-doc interface)
-  (let ((name (symbol->string (car interface))))
-    (make <texi-node>
-      #:name name
-      #:text (string-append
-	      (interface-doc-string (cdr interface) #f)
-	      "\n\n"
-	      "This grob interface is used in the following graphical objects: "
-
-	      (human-listify
-	       (map ref-ify
-		    (map symbol->string
-			 (hashq-ref iface->grob-table (car interface) '() )))))
-
-      )))
-
-(define (grob-doc description)
-  "Given a property alist DESCRIPTION, make a documentation
-node."
-  
-  (let*
-      (
-       (metah (assoc 'meta description))
-       
-       (meta (cdr metah))
-       (name (cdr (assoc 'name meta)))
-       (ifaces (map lookup-interface (cdr (assoc 'interfaces meta))))
-       (ifacedoc (map (lambda (iface)
-			(string-append
-"
-@subsubheading "
-(ref-ify (symbol->string (car iface)))
-
-"\n\n"
-			(interface-doc-string iface description)))
-		      (reverse ifaces)))
-       (engravers (filter
-		   (lambda (x) (engraver-makes-grob? name x)) all-engravers-list))
-       (namestr (symbol->string name))
-       (engraver-names (map symbol->string (map ly:translator-name engravers)))
-       )
-
-    (make <texi-node>
-      #:name namestr
-      #:text
-      (string-append
-       namestr " grobs are created by: "
-       (human-listify (map ref-ify
-			   (map engraver-name engraver-names)))
-       (apply string-append ifacedoc)
-       ))
-    ))
-
-(define (all-grobs-doc)
-  (make <texi-node>
-    #:name "All layout objects"
-    #:desc "Description and defaults for all Grobs"
-    #:children
-    (map (lambda (x) (grob-doc (cdr x)))  all-grob-descriptions)))
-
-(define interface-description-alist
-  (hash-fold
-   (lambda (key val prior)
-     (cons (cons key val)  prior)
-     )
-   '() (ly:all-grob-interfaces)))
-
-(set! interface-description-alist (sort interface-description-alist alist<?))
-
-
-;;;;;;;;;; check for dangling backend properties.
-(define (mark-interface-properties entry)
-  (map (lambda (x) (set-object-property! x  'iface-marked #t)) (caddr (cdr entry)))
-  )
-
-(map mark-interface-properties interface-description-alist)
-
-(define (check-dangling-properties prop)
-  (if (not (object-property prop 'iface-marked))
-      (error  "\ndefine-grob-properties.scm: Can't find interface for property:" prop)))
-
-(map check-dangling-properties all-backend-properties)
-
-;;;;;;;;;;;;;;;;
-
-(define (lookup-interface name)
-  (let*  (
-	  (entry  (hashq-ref (ly:all-grob-interfaces) name #f))
-	  )
-
-    (if (equal? entry #f)
-	(error "Unknown interface" name))
-    
-    entry
-))
-
-(define (all-interfaces-doc)
-  (make <texi-node>
-    #:name "Graphical Object Interfaces"
-    #:desc "Building blocks of graphical objects"
-    #:children
-    (map interface-doc interface-description-alist)
-    ))
-
-(define (all-backend-properties-doc)
-  (let*
-      (
-       (ps (sort (map symbol->string all-backend-properties) string<?))
-       (descs (map (lambda (prop)
-		     (document-property (string->symbol prop) 'backend #f))
-		   ps))
-       (texi (description-list->texi descs))
-       )
-    (make <texi-node>
-      #:name "All backend properties"
-      #:desc "All grob properties in a big list"
-      #:text texi)
-  ))
-
-;(dump-node (grob-doc (cdadr all-grob-descriptions))  (current-output-port) 0 )
-(define (backend-doc-node)
-  (make <texi-node>
-    #:name "Backend"
-    #:desc "Reference for the layout engine"
-    #:children
-    (list
-     (all-grobs-doc)
-     (all-interfaces-doc)
-     (all-backend-properties-doc)
-     )
-  ))
diff --git a/scm/document-functions.scm b/scm/document-functions.scm
deleted file mode 100644
index 19b619b365..0000000000
--- a/scm/document-functions.scm
+++ /dev/null
@@ -1,51 +0,0 @@
-(use-modules
- (ice-9 regex)
- )
-
-(define (dashify-underscores str)
-   (regexp-substitute/global #f "_" str 'pre "-" 'post))
-
-(define (format-c-header c-h)
-  (regexp-substitute/global
-   #f "," 
-   (regexp-substitute/global #f "(SCM|\\)|\\() *" (dashify-underscores c-h)
-			     'pre "" 'post)
-   'pre " " 'post))
-
-(define (document-scheme-function name c-header doc-string)
-  (string-append
-   "@defun " (symbol->string name)  " " (format-c-header c-header) "\n"
-   doc-string
-   "\n@end defun\n\n")
-   )
-
-(define all-scheme-functions
-   (hash-fold
-    (lambda (key val prior)
-      (cons (cons key val)  prior)
-      )
-    '() (ly:get-all-function-documentation)))
-
-(define (all-scheme-functions-doc)
-  (let*
-      (
-
-       (fdocs (map (lambda (x)
-		(document-scheme-function (car x) (cadr x) (cddr x))
-		)
-	      all-scheme-functions)
-	 )
-       (sfdocs (sort fdocs string<?))
-       )
-
-
-    (make <texi-node>
-      #:name "Scheme functions"
-      #:desc "Primitive functions exported by LilyPond"
-      #:text
-      (apply string-append sfdocs)
-	) 
-  ))
-
-
-; (dump-node (all-scheme-functions-doc)  (current-output-port) 0 )
diff --git a/scm/document-markup.scm b/scm/document-markup.scm
deleted file mode 100644
index 7ff76fa3f7..0000000000
--- a/scm/document-markup.scm
+++ /dev/null
@@ -1,51 +0,0 @@
-
-(define (doc-markup-function func)
-  (let*
-      (
-       (doc-str  (procedure-documentation func) )
-       (f-name (symbol->string (procedure-name  func)))
-       (sig (object-property func 'markup-signature))
-       (sig-str (string-join (map type-name sig) " "))
-       )
-    
-    
-       
-  (string-append
-   "\n\n@b{"
-   f-name
-   "}\n\n@findex " f-name "\n"
-   "\n\n@i{Argument types}: " sig-str
-   (if (string? doc-str)
-       (string-append
-	"\n\n@i{Description}: \n\n"
-	doc-str)
-       "")
-   
-   
-  )))
-
-(define (markup-function<? a b)
-  (string<? (symbol->string (procedure-name a)) (symbol->string (procedure-name b))))
-
-(define (markup-doc-node)
-  (make <texi-node>
-    #:name "Markup functions"
-    #:desc "Definitions of the markup functions."
-
-
-    #:text (apply string-append
-		  
-		  "A @code{\\markup} mode command, eg. @code{bold}, is
-coupled with a Scheme function (@code{bold-markup}) implementing the
-formatting.  For use in Scheme, a function @code{make-bold-markup} is
-also defined, which constructs a Markup expression.
-
-This chapter describes all of the @code{...-markup} functions.
-
-"
-
-		  (map doc-markup-function
-		       (sort markup-function-list markup-function<?) ))
-    ))
-
-
diff --git a/scm/document-music.scm b/scm/document-music.scm
deleted file mode 100644
index 97991c8971..0000000000
--- a/scm/document-music.scm
+++ /dev/null
@@ -1,126 +0,0 @@
-
-(define (music-props-doc)
-  (make <texi-node>
-    #:name "Music properties"
-    #:desc "All music properties, including descriptions"
-    #:text
-  (let* (
-	 (ps (sort (map symbol->string all-music-properties) string<?))
-	 (descs (map (lambda (prop)
-		       (property->texi 'music (string->symbol prop)))
-		     ps))
-	 (texi (description-list->texi descs))
-	 )
-    texi)
-  ))
-
-(define music-types->names (make-vector 61 '()))
-(map (lambda (entry)
-       (let*
-	   (
-	    (types (cdr (assoc 'types (cdr entry) )))
-	    )
-	 (map (lambda (type)
-		(hashq-set! music-types->names type
-			    (cons (car entry)
-				  (hashq-ref music-types->names type '())))
-			    
-		) types)
-	 
-	 ))
-  music-descriptions)
-
-
-
-(define (strip-description x)
-    (cons (symbol->string (car x))
-	  ""))
-
-(define (music-type-doc entry)
-  (make <texi-node>
-    #:name  (symbol->string (car entry))
-    #:text 
-    (string-append
-     "\nMusic event type @code{"
-     (symbol->string (car entry))
-     "} is in Music objects of type "
-     (human-listify
-      (sort
-       (map (lambda (x) (ref-ify (symbol->string x)))
-	     (cdr entry)) string<?))
-
-     "\n\nAccepted by: "
-     (human-listify
-      (map ref-ify
-	   (map symbol->string
-		(map ly:translator-name
-		     (filter
-		      (lambda (x) (engraver-accepts-music-type? (car entry) x)) all-engravers-list)))))
-     "\n\n"
-     )))
-
-(define (music-types-doc)
-  (make <texi-node>
-    #:name "Music classes"
-    #:children 
-    (map music-type-doc
-	 (sort
-	  (hash-table->alist music-types->names) alist<?))
-    ))
-
-(define (music-doc-str obj)
-  (let*
-      (
-       (namesym  (car obj))
-       (props (cdr obj))
-       (types (cdr (assoc  'types props)))
-       )
-    
-    (string-append
-     (object-property namesym 'music-description)
-     "\n\nMusic types:\n"
-     (human-listify (map ref-ify (map symbol->string types)))
-     "\n\n"
-     "\n\nAccepted by: "
-     (human-listify
-      (map ref-ify
-	   (map symbol->string (map ly:translator-name
-		(filter
-		 (lambda (x) (engraver-accepts-music-types? types x)) all-engravers-list)))))
-     "\n\nProperties: \n"
-     (description-list->texi
-      (map
-       (lambda (x) (document-property x 'music props))
-       (map car props)))
-     
-     )
-    ))
-
-(define (music-object-doc obj)
-  (make <texi-node>
-    #:name (symbol->string (car obj))
-    #:text (music-doc-str obj)
-    ))
-
-(define (music-expressions-doc)
-  (make <texi-node>
-    #:name "Music expressions"
-    #:desc "Objects that represent music."
-    #:children
-     (map music-object-doc music-descriptions)
-  ))
-  
-(define (music-doc-node)
-  (make <texi-node>
-    #:name "Music definitions"
-    #:desc "Definition of the Input data structures"
-    #:children
-    (list
-     (music-expressions-doc)
-     (music-types-doc)
-     (music-props-doc))
-    ))
-
-  
-  
-
diff --git a/scm/document-translation.scm b/scm/document-translation.scm
deleted file mode 100644
index b37bca9d98..0000000000
--- a/scm/document-translation.scm
+++ /dev/null
@@ -1,309 +0,0 @@
-
-;;; engraver-doumentation-lib.scm -- Functions for engraver documentation
-;;;
-;;; source file of the GNU LilyPond music typesetter
-;;; 
-;;; (c)  2000--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-;;; Jan Nieuwenhuizen <janneke@gnu.org>
-
-
-(define (engraver-makes-grob? name-symbol grav)
-  (memq name-symbol (assoc 'grobs-created (ly:translator-description grav)))
-  )
-
-(define (engraver-accepts-music-type? name-symbol grav)
-  (memq name-symbol (assoc 'events-accepted (ly:translator-description grav)))
-
-  )
-
-(define (engraver-accepts-music-types? types grav)
-  (if (null? types)
-      #f
-      (or
-       (engraver-accepts-music-type? (car types) grav)
-       (engraver-accepts-music-types? (cdr types) grav)))
-  )
-
-(define (engraver-doc-string engraver in-which-contexts)
-  (let* (
-	 (propsr (cdr (assoc 'properties-read (ly:translator-description engraver))))
-	 (propsw (cdr (assoc 'properties-written (ly:translator-description engraver))))
-	 (accepted  (cdr (assoc 'events-accepted (ly:translator-description engraver)))) 
-	 (name-sym  (ly:translator-name engraver))
-	 (name (symbol->string name-sym))
-	 (desc (cdr (assoc 'description (ly:translator-description engraver))))
-	 (grobs (engraver-grobs engraver))
-	 )
-
-    (string-append
-     desc
-     "\n\n"
-     (if (pair? accepted)
-	 (string-append
-	  "Music types accepted:\n\n"
-	  (human-listify
-	   (map (lambda (x)
-		  (string-append
-		   "@ref{"
-		  (symbol->string x)
-		  "}")) accepted)
-	   ))
-	  "")
-     "\n\n"
-     (if (pair? propsr)
-	 (string-append
-	  "Properties (read)"
-	  (description-list->texi
-	   (map (lambda (x) (document-property x 'translation #f)) propsr)))
-	 "")
-     
-     (if (null? propsw)
-	 ""
-	 (string-append
-	 "Properties (write)" 
-	  (description-list->texi
-	   (map (lambda (x) (document-property x 'translation #f)) propsw))))
-     (if  (null? grobs)
-	  ""
-	  (string-append
-	   "This engraver creates the following grobs: \n "
-	   (human-listify (map ref-ify (uniq-list (sort  grobs string<? ))))
-	   ".")
-	  )
-
-     "\n\n"
-
-     (if in-which-contexts
-	 (let* ((paper-alist (My_lily_parser::paper_description))
-		(context-description-alist (map cdr paper-alist))
-		(contexts
-		 (apply append
-			(map (lambda (x)
-			       (let ((context (cdr (assoc 'context-name x)))
-				     (consists (append
-						(list (cdr (assoc 'group-type x)))
-						(cdr (assoc 'consists x))
-						)))
-
-				 (if (member name consists)
-				     (list context)
-				     '())))
-			     context-description-alist))))
-	   (string-append
-	    name " is part of contexts: "
-	    (human-listify (map ref-ify (map symbol->string contexts)))))
-	 ""
-	 ))))
-
-
-
-
-;; First level Engraver description
-(define (engraver-doc grav)
-  (make <texi-node>
-    #:name (symbol->string (ly:translator-name grav))
-    #:text (engraver-doc-string grav #t)
-    ))
-
-;; Second level, part of Context description
-
-(define name->engraver-table (make-vector 61 '()))
-(map
- (lambda (x)
-   (hash-set! name->engraver-table (ly:translator-name x) x))
- (ly:get-all-translators))
-
-(define (find-engraver-by-name name)
-  "NAME is a symbol." 
-  (hash-ref name->engraver-table name #f))
-
-(define (document-engraver-by-name name)
-  "NAME is a symbol."
-  (let*
-      (
-       (eg (find-engraver-by-name name ))
-       )
-
-    (cons (symbol->string name )
-	  (engraver-doc-string eg #f)
-     )
-    ))
-
-(define (document-property-operation op)
-  (let
-      ((tag (car op))
-       (body (cdr op))
-       (sym (cadr op))
-       )
-
-  (cond
-   ((equal?  tag 'push)
-    (string-append
-     "@item "
-     (if (null? (cddr body))
-	 "Revert "
-	 "Set "
-	 )
-     "grob-property @code{"
-     (symbol->string (cadr body))
-     "} in @ref{" (symbol->string sym)
-     "}"
-     (if (not (null? (cddr body)))
-	 (string-append " to @code{" (scm->texi (cadr (cdr body))) "}" )
-	 )
-    "\n"
-     )
-
-    )
-   ((equal? (object-property sym 'is-grob?) #t) "")
-   ((equal? (car op) 'assign)
-    (string-append
-     "@item Set translator property @code{"
-     (symbol->string (car body))
-     "} to @code{"
-     (scm->texi (cadr body))
-     "}\n"
-     )
-     )
-   )
-  ))
-
-
-(define (context-doc context-desc)
-  (let*
-      (
-       (name-sym (cdr (assoc 'context-name context-desc)))
-       (name (symbol->string name-sym))
-       (aliases (map symbol->string (cdr (assoc 'aliases context-desc))))
-       (desc-handle (assoc 'description context-desc))
-       (desc (if (and  (pair? desc-handle) (string? (cdr desc-handle)))
-		 (cdr desc-handle) "(not documented)"))
-       
-       (accepts (cdr (assoc 'accepts context-desc)))
-       (consists (append
-		  (list (cdr (assoc 'group-type context-desc)))
-		  (cdr (assoc 'consists context-desc))
-		  ))
-       (props (cdr (assoc 'property-ops context-desc)))
-       (grobs  (context-grobs context-desc))
-       (grob-refs (map (lambda (x) (ref-ify x)) grobs)) )
-
-    (make <texi-node>
-      #:name name
-      #:text
-      (string-append 
-       desc
-       "\n\n This context is also known as: \n\n"
-       (human-listify aliases)
-       "\n\nThis context creates the following grobs: \n\n"
-       (human-listify (uniq-list (sort grob-refs string<? )))
-       "."
-       (if (pair? props)
-	   (string-append
-	    "\n\nThis context sets the following properties:\n"
-	    "@itemize @bullet\n"
-	    (apply string-append (map document-property-operation props))
-	    "@end itemize\n"
-	    )
-	   ""
-	   )
-       
-       (if (null? accepts)
-	   "\n\nThis context is a `bottom' context; it can not contain other contexts."
-	   (string-append
-	    "\n\nContext "
-	    name " can contain \n"
-	    (human-listify (map ref-ify (map symbol->string accepts)))))
-       
-       "\n\nThis context is built from the following engravers: "
-       (description-list->texi
-	      (map document-engraver-by-name consists))
-       ))))
-
-(define (engraver-grobs  grav)
-  (let* ((eg (if (symbol? grav)
-		 (find-engraver-by-name grav)
-		 grav)))
-
-    (if (eq? eg #f)
-	'()
-	(map symbol->string (cdr (assoc 'grobs-created (ly:translator-description eg)))))
-  ))
-
-(define (context-grobs context-desc)
-  (let* ((consists (append
-		    (list (cdr (assoc 'group-type context-desc)))
-		    (cdr (assoc 'consists context-desc))
-		    ))
-	 (grobs  (apply append
-		  (map engraver-grobs consists))
-	 ))
-    grobs
-    ))
-
-
-
-(define (all-contexts-doc)
-  (let* (
-	 (paper-alist
-	  (sort (My_lily_parser::paper_description)
-		(lambda (x y) (symbol<? (car x) (car y)))))
-	 (names (sort (map symbol->string (map car paper-alist)) string<?))
-	 (contexts (map cdr paper-alist))
-	 )
-
-    (make <texi-node>
-      #:name "Contexts"
-      #:desc "Complete descriptions of all contexts"
-      #:children
-      (map context-doc contexts)
-      )
-    ))
-
-
-(define all-engravers-list  (ly:get-all-translators))
-(set! all-engravers-list
-      (sort all-engravers-list
-	    (lambda (a b) (string<? (symbol->string (ly:translator-name a))
-				    (symbol->string (ly:translator-name b))))))
-
-(define (all-engravers-doc)
-  (make <texi-node>
-    #:name "Engravers"
-    #:desc "All separate engravers"
-    #:children
-    (map engraver-doc all-engravers-list)))
-
-(define (all-translation-properties-doc)
-  
-  (let*
-      (
-       (ps (sort (map symbol->string all-translation-properties) string<?))
-       (sortedsyms (map string->symbol ps))
-       (propdescs
-	(map
-	 (lambda (x) (document-property x 'translation #f))
-	 sortedsyms))
-       (texi (description-list->texi propdescs))
-       )
-
-    (make <texi-node>
-      #:name "Context properties"
-      #:desc "All  context properties"
-      #:text texi)
-    ))
-
-
-;(dump-node (all-contexts-doc) (current-output-port) 0 )
-
-(define (translation-doc-node)
-  (make <texi-node>
-    #:name "Translation"
-    #:desc "From music to layout"
-    #:children
-    (list
-     (all-contexts-doc)
-     (all-engravers-doc)
-     (all-translation-properties-doc)
-     )
-  ))
diff --git a/scm/documentation-generate.scm b/scm/documentation-generate.scm
deleted file mode 100644
index c0c0b13521..0000000000
--- a/scm/documentation-generate.scm
+++ /dev/null
@@ -1,123 +0,0 @@
-;;; generate-documentation.scm -- Generate documentation
-;;;
-;;; source file of the GNU LilyPond music typesetter
-;;; 
-;;; (c)  2000--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-;;; Jan Nieuwenhuizen <janneke@gnu.org>
-
-;;; File entry point for generated documentation
-
-;;; Running LilyPond on this file generates the documentation
-
-(debug-enable 'debug)
-(debug-enable 'backtrace)
-(read-enable 'positions)
-
-;;;;;;;;;;;;;;;;
-;;;;;;;;;;;;;;;; TODO : make modules of these!
-;;;;;;;;;;;;;;;;
-
-(define load-files '("documentation-lib.scm"
-		     "document-functions.scm"
-		     "document-translation.scm"
-		     "document-music.scm"
-		     "document-backend.scm"
-		     "document-markup.scm"
-		     ))
-(map ly:load load-files)
-
-
-;;(define no-copies #t)  ; from 490 to 410K, but doesn't look nice yet
-;;
-;; Also, copies of interfaces use up lots more space, but that's
-;; functional because the default property values of the interfaces
-;; are described...
-(define no-copies #f)
-
-(define file-name "lilypond-internals")
-(define outname (string-append file-name ".texi"))
-(define out-port (open-output-file outname))
-
-(writing-wip outname)
-
-(display
- (string-append
-  "@c -*-texinfo-*-"
-  (texi-file-head "LilyPond program-reference" outname "(lilypond-internals.info)")
-  "
-
-@ifhtml
-@macro usermanref{NAME}
-@uref{../lilypond/\\NAME\\.html,\\NAME\\}
-@cindex \\NAME\\
-@end macro
-@end ifhtml
-
-@ifinfo
-@macro usermanref{NAME}
-@inforef{\\NAME\\,,lilypond}
-@cindex \\NAME\\
-@end macro
-@end ifinfo
-
-@ifhtml
-@macro glossaryref{NAME}
-@uref{../music-glossary/\\NAME\\.html,\\NAME\\}
-@cindex \\NAME\\
-@end macro
-@end ifhtml
-
-@ifinfo
-@macro glossaryref{NAME}
-@inforef{\\NAME\\,,music-glossary}
-@cindex \\NAME\\
-@end macro
-@end ifinfo
-
-
-@ignore
-@omftitle LilyPond internals
-@omfcreator Han-Wen Nienhuys and Jan Nieuwenhuizen
-@omfdescription Programmer's reference of the LilyPond music engraving system
-@omftype user's guide
-@omflanguage English
-@omfcategory Applications|Publishing
-@end ignore
-
-
-") out-port)
-
-(define top-node
-  (make <texi-node>
-    #:name "Top"
-    #:children
-    (list
-     (music-doc-node)
-     (translation-doc-node)
-     (backend-doc-node)
-     (all-scheme-functions-doc)
-     (markup-doc-node)
-     (make <texi-node>
-       #:name "Index"
-       #:text "
-@unnumbered Concept index
-
-@printindex cp
-
-@unnumbered Variable index
-
-@printindex vr
-
-@unnumbered Function index
-
-@printindex fn
-
-\n@bye"
-
-       
-     )
-    )))
-
-
-(dump-node top-node out-port 0)
-(newline (current-error-port))
diff --git a/scm/documentation-lib.scm b/scm/documentation-lib.scm
deleted file mode 100644
index 8dc5edc5ca..0000000000
--- a/scm/documentation-lib.scm
+++ /dev/null
@@ -1,230 +0,0 @@
-;;;
-;;; documentation-lib.scm -- Assorted Functions for generated documentation
-;;;
-;;; source file of the GNU LilyPond music typesetter
-;;; 
-;;; (c)  2000--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-;;; Jan Nieuwenhuizen <janneke@gnu.org>
-
-(use-modules (oop goops)
-	     (srfi srfi-13)
-	     (srfi srfi-1)
-	     )
-
-(define-class <texi-node> ()
-  (children #:init-value '() #:accessor node-children #:init-keyword #:children)
-  (text #:init-value "" #:accessor node-text #:init-keyword #:text)
-  (name #:init-value "" #:accessor node-name #:init-keyword #:name)
-  (description #:init-value "" #:accessor node-desc #:init-keyword #:desc)
-  )
-
-(define (menu-entry x)
-  (cons
-   (node-name x)
-   (node-desc x))
-  )
-
-(define (dump-node node port level)
-  (display
-   (string-append
-    "\n@node "
-    (node-name node)
-    "\n\n"
-    (texi-section-command level) " "
-    (node-name node)
-    "\n\n"
-    (node-text node)
-    "\n\n"
-    (if (pair? (node-children node))
-	(texi-menu
-	 (map (lambda (x) (menu-entry x) )
-	      (node-children node)))
-	 ""))
-   port)
-  (map (lambda (x) (dump-node x port (+ 1 level)))
-        (node-children node))
-  )
-
-(define (processing name)
-  (display (string-append "\nProcessing " name " ... ") (current-error-port)))
-
-(define (self-evaluating? x)
-  (or (number? x) (string? x) (procedure? x) (boolean? x)))
-
-(define (texify x)
-  x)
-
-(define (scm->texi x)
-  (string-append "@code{" (texify (scm->string x)) "}")
-  )
-
-
-;;
-;; don't confuse users with #<procedure .. > syntax. 
-;; 
-(define (scm->string val)
-  (if (and (procedure? val) (symbol? (procedure-name val)))
-      (symbol->string (procedure-name val))
-      (string-append
-       (if (self-evaluating? val) "" "'")
-       (call-with-output-string (lambda (port) (display val port)))
-       )))
-
-
-(define (texi-section-command level)
-  (cdr (assoc level '(
-    ;; Hmm, texinfo doesn't have ``part''
-    (0 . "@top")
-    (1 . "@unnumbered")
-    (2 . "@unnumberedsec")
-    (3 . "@unnumberedsubsec")
-    (4 . "@unnumberedsubsubsec")
-    (5 . "@unnumberedsubsubsec")
-    ))))
-
-(define (one-item->texi label-desc-pair)
-  "Document one (LABEL . DESC); return empty string if LABEL is empty string. 
-"
-  (if (eq? (car label-desc-pair) "")
-      ""
-      (string-append "\n@item " (car label-desc-pair) "\n" (cdr label-desc-pair))
-  ))
-
-
-(define (description-list->texi items-alist)
-  "Document ITEMS-ALIST in a table. entries contain (item-label
-. string-to-use)
-"
-  (string-append
-   "\n@table @asis\n"
-   (apply string-append (map one-item->texi items-alist))
-   "\n@end table\n"))
-
-(define (texi-menu items-alist)
-  "Generate what is between @menu and @end menu."
-  (let
-      (
-       (maxwid (apply max (map (lambda (x) (string-length (car x)))
-			       items-alist)))
-       )
-    
-
-    
-  (string-append
-  "\n@menu"
-  (apply string-append
-	 (map (lambda (x)
-		(string-append
-		(string-pad-right 
-		 (string-append "\n* " (car x) ":: ")
-		 (+ maxwid 8)
-		 )
-		(cdr x))
-		)
-	      items-alist))
-  "\n@end menu\n"
-  ;; Menus don't appear in html, so we make a list ourselves
-  "\n@ignore\n"
-  "\n@ifhtml\n"
-  (description-list->texi (map (lambda (x) (cons (ref-ify (car x)) (cdr x)))
-			 items-alist))
-  "\n@end ifhtml\n"
-  "\n@end ignore\n")))
-
-  
-
-
-(define (texi-file-head name file-name top)
-  (string-append
-   "\\input texinfo @c -*-texinfo-*-"
-   "\n@setfilename " file-name ".info"
-   "\n@settitle " name
-   "\n@dircategory GNU music project"
-   "\n@direntry"
-   ;; prepend GNU for dir, must be unique
-   "\n* GNU " name ": (" file-name ").          " name "."
-   "\n@end direntry"
-   ))
-
-
-(define (context-name name)
-  name)
-
-(define (engraver-name name)
-  name)
-
-(define (grob-name name)
-  (if (symbol? name)
-      (symbol->string name)
-      name))
-
-(define (interface-name name)
-  name)
-
-(define (ref-ify x)
-  "Add ref to X"
-  (string-append "@ref{" x "}"))
-
-(define (human-listify l)
-  "Produce a textual enumeration from L, a list of strings"
-  
-  (cond
-   ((null? l) "none")
-   ((null? (cdr l)) (car l))
-   ((null? (cddr l)) (string-append (car l) " and " (cadr l)))
-   (else (string-append (car l) ", " (human-listify (cdr l))))
-   ))
-
-(define (writing-wip x)
-  (display (string-append "\nWriting " x " ... ") (current-error-port)))
-
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;; property  stuff.
-
-(define (property->texi where sym)
-  "Document SYM for WHERE (which can be translation, backend, music)"
-  (let* ((name (symbol->string sym))
-	 (type?-name (string->symbol
-		      (string-append (symbol->string where) "-type?")))
-	 (doc-name (string->symbol		    
-		    (string-append (symbol->string where) "-doc")))
-	 (type (object-property sym type?-name))
-	 (typename (type-name type))
-	 (desc (object-property sym doc-name)))
-
-    (if (eq? desc #f)
-	(error "No description for property ~S" sym))
-	
-    (cons
-     (string-append "@code{" name "} "
-		    "(" typename ")")
-     desc)
-     
-    ))
-
-(define (document-property-value sym alist)
-  "Extract value for SYM from ALIST, return as texi string"
-  (let* ((handle (assoc sym alist)))
-    (if (eq? handle #f)
-	"(unset)"
-	(scm->texi (cdr handle)))))
-
-(define (backend-property->texi sym)
-  (property->texi 'backend sym))
-
-(define (document-property sym where alist)
-  "Document SYM. If GROB-DESCRIPTION is not #f, it's an alist
-containing default values."
-  (let*
-      ((without (property->texi where sym))
-       (rv
-
-	(cons (car without)
-	      (if (eq? alist #f)
-		  (cdr without)
-		  (string-append
-		   (cdr without)
-		   "\nDefault value: "
-		   (document-property-value sym alist))))))
-    rv))
diff --git a/scm/font.scm b/scm/font.scm
deleted file mode 100644
index 6afc80cfb1..0000000000
--- a/scm/font.scm
+++ /dev/null
@@ -1,124 +0,0 @@
-;;;
-;;; font.scm -- implement Font stuff
-;;;
-;;; source file of the GNU LilyPond music typesetter
-;;; 
-;;; (c)  2000--2004 Jan Nieuwenhuizen <janneke@gnu.org>
-;;;
-
-;; Should separate default sizes
-;; into separate list/alist ?
-
-
-"
-Each entry in this vector has the following format
-
-
- (cons
-  #(QUALIFIERS)
-  (cons DEFAULT-SIZE
-        #(SIZE-FONT-ENTRIES... ) ))
-
-where each SIZE-FONT-ENTRY is
-
-  (cons DESIGN-SIZE FONT-NAME)
-
-or
-
-  (cons DESIGN-SIZE (list FONT-NAME1 FONT-NAME2 .. )) 
-
-"
-
-(define-public (magstep x)
-  (exp (* (/ x 6) (log 2))))
-
-
-(define-public paper20-font-vector
-  '((#(medium upright number) .
-     (10 . #((10.0  . "feta-nummer10"))))
-    (#(medium upright roman) .
-     (10.0 . #((6.0 . "cmr6")
-	       (8.0 . "cmr8") 
-	       (10.0 . "cmr10")
-	       (17.0 . "cmr17")
-	       )))
-    (#(* * music). 
-     (20.0 . #((11.22 . ("feta11" "parmesan11"))
-	       (12.60 . ("feta13" "parmesan13"))
-	       (14.14 . ("feta14" "parmesan14"))
-	       (15.87 . ("feta16" "parmesan16"))
-	       (17.82 . ("feta18" "parmesan18"))
-	       (20.0 . ("feta20" "parmesan20"))
-	       (22.45 . ("feta23" "parmesan23"))
-	       (25.20 . ("feta26" "parmesan26"))
-	       )))
-    (#(medium upright sans) .
-     (10.0  . #((8.0 . "cmss8")
-		(10.0 . "cmss10")
-		(12.0 . "cmss12")
-		(17.0 . "cmss17")
-		)))
-    (#(medium upright typewriter) .
-     (10.0 . #((8.0 .  "cmtt8")
-	       (10.0 . "cmtt10")
-	       (12.0 . "cmtt12")
-	       )))
-    (#(bold italic roman) .
-     (10.0 . #((8.0 . "cmbxti8")
-	       (10.0 . "cmbxti10")
-	       (14.0 . "cmbxti14")
-	       )))
-    (#(medium italic roman) .
-     (10.0 . #((7.0 . "cmti7")
-	       (10.0 . "cmti10")
-	       (12.0 . "cmti12")
-	       )))
-    (#(bold upright roman) .
-     (10.0 . #((6.0 . "cmbx6")
-	       (8.0 . "cmbx8")
-	       (10.0 . "cmbx10")
-	       (12.0 . "cmbx12")
-	       )))
-    (#(bold-narrow upright roman) .
-     (10.0 . #((10.0 . "cmb10")
-	       )))
-    (#(medium caps roman) .
-     (10.0 . #((10.0 . "cmcsc10"))))
-
-    (#(* * dynamic) .
-     (14.0 .  #((6.0 . "feta-din6")
-		(8.0 . "feta-din8")
-		(10.0 . "feta-din10")
-		(12.0 . "feta-din10")
-		(14.0 . "feta-din14")
-		(17.0 . "feta-din17")
-		)))
-    (#(* * math) .
-     (10.0 . #((10.0 . "msam10"))))
-     ))
-
-(define (scale-font-entry entry factor)
-  (cons
-   (car entry)
-   (cons (* (cadr entry) factor)
-	 (cddr entry))))
-
-(define size-independent-fonts
-  '((#(* * braces) .
-     (10 . #((10.0 . ("feta-braces00"
-		      "feta-braces10"
-		      "feta-braces20"
-		      "feta-braces30"
-		      "feta-braces40"
-		      "feta-braces50"
-		      "feta-braces60"
-		      "feta-braces70"
-		      "feta-braces80")))))))
-
-(define-public (scale-font-list factor)
-  (append size-independent-fonts
-	  (map (lambda (y) (scale-font-entry y factor))   paper20-font-vector)
-  ))
-    
-;
-
diff --git a/scm/lily.scm b/scm/lily.scm
deleted file mode 100644
index f678459426..0000000000
--- a/scm/lily.scm
+++ /dev/null
@@ -1,506 +0,0 @@
-;;;; lily.scm -- implement Scheme output routines for TeX and PostScript
-;;;;
-;;;;  source file of the GNU LilyPond music typesetter
-;;;; 
-;;;; (c)  1998--2004 Jan Nieuwenhuizen <janneke@gnu.org>
-;;;; Han-Wen Nienhuys <hanwen@cs.uu.nl>
-
-;;; Library functions
-
-
-(use-modules (ice-9 regex)
-	     (ice-9 safe)
-	     (oop goops)
-	     (srfi srfi-1)  ; lists
-	     (srfi srfi-13)) ; strings
-
-(define-public safe-module (make-safe-module))
-
-(define-public (myd k v) (display k) (display ": ") (display v) (display ", "))
-
-;;; General settings
-;;; debugging evaluator is slower.  This should
-;;; have a more sensible default.
-
-
-(if (ly:get-option 'verbose)
-    (begin
-      (debug-enable 'debug)
-      (debug-enable 'backtrace)
-      (read-enable 'positions) ))
-
-
-(define-public (line-column-location line col file)
-  "Print an input location, including column number ."
-  (string-append (number->string line) ":"
-		 (number->string col) " " file)
-  )
-
-(define-public (line-location line col file)
-  "Print an input location, without column number ."
-  (string-append (number->string line) " " file)
-  )
-
-(define-public point-and-click #f)
-
-(define-public (lilypond-version)
-  (string-join
-   (map (lambda (x) (if (symbol? x)
-			(symbol->string x)
-			(number->string x)))
-		(ly:version))
-   "."))
-
-
-
-;; cpp hack to get useful error message
-(define ifdef "First run this through cpp.")
-(define ifndef "First run this through cpp.")
-
-
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-
-(define-public X 0)
-(define-public Y 1)
-(define-public START -1)
-(define-public STOP 1)
-(define-public LEFT -1)
-(define-public RIGHT 1)
-(define-public UP 1)
-(define-public DOWN -1)
-(define-public CENTER 0)
-
-(define-public DOUBLE-FLAT -4)
-(define-public THREE-Q-FLAT -3)
-(define-public FLAT -2)
-(define-public SEMI-FLAT -1)
-(define-public NATURAL 0)
-(define-public SEMI-SHARP 1)
-(define-public SHARP 2)
-(define-public THREE-Q-SHARP 3)
-(define-public DOUBLE-SHARP 4)
-(define-public SEMI-TONE 2)
-
-(define-public ZERO-MOMENT (ly:make-moment 0 1)) 
-
-(define-public (moment-min a b)
-  (if (ly:moment<? a b) a b))
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;; lily specific variables.
-(define-public default-script-alist '())
-
-(define-public security-paranoia #f)
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;; Unassorted utility functions.
-
-
-;;;;;;;;;;;;;;;;
-; alist
-(define (uniqued-alist  alist acc)
-  (if (null? alist) acc
-      (if (assoc (caar alist) acc)
-	  (uniqued-alist (cdr alist) acc)
-	  (uniqued-alist (cdr alist) (cons (car alist) acc)))))
-
-
-(define (assoc-get key alist)
-  "Return value if KEY in ALIST, else #f."
-  (let ((entry (assoc key alist)))
-    (if entry (cdr entry) #f)))
-  
-(define (assoc-get-default key alist default)
-  "Return value if KEY in ALIST, else DEFAULT."
-  (let ((entry (assoc key alist)))
-    (if entry (cdr entry) default)))
-
-
-(define-public (uniqued-alist  alist acc)
-  (if (null? alist) acc
-      (if (assoc (caar alist) acc)
-	  (uniqued-alist (cdr alist) acc)
-	  (uniqued-alist (cdr alist) (cons (car alist) acc)))))
-
-(define-public (alist<? x y)
-  (string<? (symbol->string (car x))
-	    (symbol->string (car y))))
-
-
-
-(define (chain-assoc x alist-list)
-  (if (null? alist-list)
-      #f
-      (let* ((handle (assoc x (car alist-list))))
-	(if (pair? handle)
-	    handle
-	    (chain-assoc x (cdr alist-list))))))
-
-(define (chain-assoc-get x alist-list default)
-  (if (null? alist-list)
-      default
-      (let* ((handle (assoc x (car alist-list))))
-	(if (pair? handle)
-	    (cdr handle)
-	    (chain-assoc-get x (cdr alist-list) default)))))
-
-
-(define (map-alist-vals func list)
-  "map FUNC over the vals of  LIST, leaving the keys."
-  (if (null?  list)
-      '()
-      (cons (cons  (caar list) (func (cdar list)))
-	    (map-alist-vals func (cdr list)))
-      ))
-
-(define (map-alist-keys func list)
-  "map FUNC over the keys of an alist LIST, leaving the vals. "
-  (if (null?  list)
-      '()
-      (cons (cons (func (caar list)) (cdar list))
-	    (map-alist-keys func (cdr list)))
-      ))
- 
-;;;;;;;;;;;;;;;;
-;; hash
-
-
-
-(if (not (defined? 'hash-table?))	; guile 1.6 compat
-    (begin
-      (define hash-table? vector?)
-
-      (define-public (hash-table->alist t)
-	"Convert table t to list"
-	(apply append
-	       (vector->list t)
-	       )))
-
-    ;; native hashtabs.
-    (begin
-      (define-public (hash-table->alist t)
-
-	(hash-fold (lambda (k v acc) (acons  k v  acc))
-		   '() t)
-	)
-      ))
-
-;; todo: code dup with C++. 
-(define-public (alist->hash-table l)
-  "Convert alist to table"
-  (let
-      ((m (make-hash-table (length l))))
-
-    (map (lambda (k-v)
-	   (hashq-set! m (car k-v) (cdr k-v)))
-	 l)
-
-    m))
-       
-
-
-;;;;;;;;;;;;;;;;
-; list
-
-(define (flatten-list lst)
-  "Unnest LST" 
-  (if (null? lst)
-      '()
-      (if (pair? (car lst))
-	  (append (flatten-list (car lst)) (flatten-list  (cdr lst)))
-	  (cons (car lst) (flatten-list (cdr lst))))
-  ))
-
-(define (list-minus a b)
-  "Return list of elements in A that are not in B."
-  (lset-difference eq? a b))
-
-
-;; TODO: use the srfi-1 partition function.
-(define-public (uniq-list l)
-  
-  "Uniq LIST, assuming that it is sorted"
-  (define (helper acc l) 
-    (if (null? l)
-	acc
-	(if (null? (cdr l))
-	    (cons (car l) acc)
-	    (if (equal? (car l) (cadr l))
-		(helper acc (cdr l))
-		(helper (cons (car l) acc)  (cdr l)))
-	    )))
-  (reverse! (helper '() l) '()))
-
-
-(define (split-at-predicate predicate l)
- "Split L = (a_1 a_2 ... a_k b_1 ... b_k)
-into L1 = (a_1 ... a_k ) and L2 =(b_1 .. b_k) 
-Such that (PREDICATE a_i a_{i+1}) and not (PREDICATE a_k b_1).
-L1 is copied, L2 not.
-
-(split-at-predicate (lambda (x y) (= (- y x) 2))  '(1 3 5 9 11) (cons '() '()))"
-;; "
-
-;; KUT EMACS MODE.
-
-  (define (inner-split predicate l acc)
-  (cond
-   ((null? l) acc)
-   ((null? (cdr l))
-    (set-car! acc (cons (car l) (car acc)))
-    acc)
-   ((predicate (car l) (cadr l))
-    (set-car! acc (cons (car l) (car acc)))
-    (inner-split predicate (cdr l) acc))
-   (else
-    (set-car! acc (cons (car l) (car acc)))
-    (set-cdr! acc (cdr l))
-    acc)
-
-  ))
- (let*
-    ((c (cons '() '()))
-     )
-  (inner-split predicate l  c)
-  (set-car! c (reverse! (car c))) 
-  c)
-)
-
-
-(define-public (split-list l sep?)
-"
-(display (split-list '(a b c / d e f / g) (lambda (x) (equal? x '/))) )
-=>
-((a b c) (d e f) (g))
-
-"
-;; " KUT EMACS.
-
-(define (split-one sep?  l acc)
-  "Split off the first parts before separator and return both parts."
-  (if (null? l)
-      (cons acc '())
-      (if (sep? (car l))
-	  (cons acc (cdr l))
-	  (split-one sep? (cdr l) (cons (car l) acc))
-	  )
-      ))
-
-(if (null? l)
-    '()
-    (let* ((c (split-one sep? l '())))
-      (cons (reverse! (car c) '()) (split-list (cdr c) sep?))
-      )))
-
-
-(define-public (interval-length x)
-  "Length of the number-pair X, when an interval"
-  (max 0 (- (cdr x) (car x)))
-  )
-  
-
-(define (other-axis a)
-  (remainder (+ a 1) 2))
-  
-
-(define-public (interval-widen iv amount)
-   (cons (- (car iv) amount)
-         (+ (cdr iv) amount)))
-
-(define-public (interval-union i1 i2)
-   (cons (min (car i1) (car i2))
-	 (max (cdr i1) (cdr i2))))
-
-
-(define-public (write-me message x)
-  "Return X.  Display MESSAGE and write X.  Handy for debugging, possibly turned off."
-  (display message) (write x) (newline) x)
-;;  x)
-
-(define (index-cell cell dir)
-  (if (equal? dir 1)
-      (cdr cell)
-      (car cell)))
-
-(define (cons-map f x)
-  "map F to contents of X"
-  (cons (f (car x)) (f (cdr x))))
-
-
-(define-public (list-insert-separator lst between)
-  "Create new list, inserting BETWEEN between elements of LIST"
-  (define (conc x y )
-    (if (eq? y #f)
-	(list x)
-	(cons x  (cons between y))
-	))
-  (fold-right conc #f lst))
-
-;;;;;;;;;;;;;;;;
-; other
-(define (sign x)
-  (if (= x 0)
-      0
-      (if (< x 0) -1 1)))
-
-(define-public (symbol<? l r)
-  (string<? (symbol->string l) (symbol->string r)))
-
-(define-public (!= l r)
-  (not (= l r)))
-
-(define-public (ly:load x)
-  (let* (
-	 (fn (%search-load-path x))
-
-	 )
-    (if (ly:get-option 'verbose)
-	(format (current-error-port) "[~A]" fn))
-    (primitive-load fn)))
-
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;  output
-(use-modules (scm output-tex)
-	     (scm output-ps)
-	     (scm output-sketch)
-	     (scm output-sodipodi)
-	     (scm output-pdftex)
-	     )
-
-(define output-alist
-  `(
-    ("tex" . ("TeX output. The default output form." ,tex-output-expression))
-    ("ps" . ("Direct postscript. Requires setting GS_LIB and GS_FONTPATH" ,ps-output-expression))
-    ("scm" . ("Scheme dump: debug scheme molecule expressions" ,write))
-    ("sketch" . ("Bare bones Sketch output." ,sketch-output-expression))
-    ("sodipodi" . ("Bare bones Sodipodi output." ,sodipodi-output-expression))
-    ("pdftex" . ("PDFTeX output. Was last seen nonfunctioning." ,pdftex-output-expression))
-    ))
-
-
-(define (document-format-dumpers)
-  (map
-   (lambda (x)
-     (display (string-append  (pad-string-to 5 (car x)) (cadr x) "\n"))
-     output-alist)
-   ))
-
-(define-public (find-dumper format )
-  (let*
-      ((d (assoc format output-alist)))
-    
-    (if (pair? d)
-	(caddr d)
-	(scm-error "Could not find dumper for format ~s" format))
-    ))
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;; other files.
-
-(map ly:load
-					; load-from-path
-     '("define-music-types.scm"
-       "output-lib.scm"
-       "c++.scm"
-       "chord-ignatzek-names.scm"
-       "chord-entry.scm"
-       "chord-generic-names.scm"
-       "molecule.scm"
-       "new-markup.scm"
-       "bass-figure.scm"
-       "music-functions.scm"
-       "part-combiner.scm"
-       "define-music-properties.scm"
-       "auto-beam.scm"
-       "chord-name.scm"
-       
-       "define-translator-properties.scm"
-       "translation-functions.scm"
-       "script.scm"
-       "midi.scm"
-
-       "beam.scm"
-       "clef.scm"
-       "slur.scm"
-       "font.scm"
-       
-       "define-grob-properties.scm"
-       "define-grobs.scm"
-       "define-grob-interfaces.scm"
-
-       "paper.scm"
-       ))
-
-
-       
-
-
-(set! type-p-name-alist
-  `(
-   (,boolean-or-symbol? . "boolean or symbol")
-   (,boolean? . "boolean")
-   (,char? . "char")
-   (,grob-list? . "list of grobs")
-   (,input-port? . "input port")
-   (,integer? . "integer")
-   (,list? . "list")
-   (,ly:context? . "context")
-   (,ly:dimension? . "dimension, in staff space")
-   (,ly:dir? . "direction")
-   (,ly:duration? . "duration")
-   (,ly:grob? . "grob (GRaphical OBject)")
-   (,ly:input-location? . "input location")
-   (,ly:input-location? . "input location")   
-   (,ly:moment? . "moment")
-   (,ly:music? . "music")
-   (,ly:pitch? . "pitch")
-   (,ly:translator? . "translator")
-   (,markup-list? . "list of markups")
-   (,markup? . "markup")
-   (,music-list? . "list of music")
-   (,number-or-grob? . "number or grob")
-   (,number-or-string? . "number or string")
-   (,number-pair? . "pair of numbers")
-   (,number? . "number")
-   (,output-port? . "output port")   
-   (,pair? . "pair")
-   (,procedure? . "procedure") 
-   (,scheme? . "any type")
-   (,string? . "string")
-   (,symbol? . "symbol")
-   (,vector? . "vector")
-   ))
-
-
-;; debug mem leaks
-
-(define gc-protect-stat-count 0)
-(define-public (dump-gc-protects)
-  (set! gc-protect-stat-count (1+ gc-protect-stat-count) )
-  
-  (display 
-   (map (lambda (y)
-	  (let
-	      ((x (car y))
-	       (c (cdr y)))
-
-	    (string-append
-	     (string-join
-	      (map object->string (list (object-address x) c x))
-	      " ")
-	     "\n")))
-
-	  (sort
-	   (hash-table->alist (ly:protects))
-	   (lambda (a b)
-	     (< (object-address (car a))
-		(object-address (car b)))))
-	  
-	  )
-      (open-file (string-append
-	       "gcstat-" (number->string gc-protect-stat-count)
-	       ".scm"
-	       ) "w")))
-
diff --git a/scm/midi.scm b/scm/midi.scm
deleted file mode 100644
index 5cfbd59541..0000000000
--- a/scm/midi.scm
+++ /dev/null
@@ -1,288 +0,0 @@
-;;; midi.scm -- scm midi variables and functions
-;;;
-;;;  source file of the GNU LilyPond music typesetter
-;;; 
-;;; (c)  2000--2004 Jan Nieuwenhuizen <janneke@gnu.org>
-
-
-
-;;;;;;;;;;;;;;;;;;
-;;; TODO:
-
-;; this is broken: we should not ever export variables from Scheme.
-
-;; define factor of total volume per dynamic marking
-(define-public absolute-volume-alist '())
-(set! absolute-volume-alist
-      (append 
-      '(
-	("sf" . 1.00)
-	("fffff" . 0.95)
-	("ffff" . 0.91)
-	("fff" . 0.81)
-	("ff" . 0.71)
-	("f" . 0.61)
-	("mf" . 0.50)
-	("mp" . 0.40)
-	("p" . 0.30)
-	("pp" . 0.20)
-	("ppp" . 0.10)
-	("pppp" . 0.08)
-	("ppppp" . 0.05)
-	)
-      absolute-volume-alist))
-
-(define-public (default-dynamic-absolute-volume s)
-  (let ((entry (assoc s absolute-volume-alist)))
-    (if entry
-	(cdr entry))))
-
-;; define factors of total volume of minimum and maximum volume
-(define-public instrument-equalizer-alist '())
-(set! instrument-equalizer-alist
-      (append 
-       '(
-	 ("flute" . (0 . 0.7))
-	 ("oboe" . (0 . 0.7))
-	 ("clarinet" . (0 . 0.7))
-	 ("bassoon" . (0 . 0.6))
-	 ("french horn" . (0.1 . 0.7))
-	 ("trumpet" . (0.1 . 0.8))
-	 ("timpani" . (0.2 . 0.9))
-	 ("violin" . (0.2 . 1.0))
-	 ("viola" . (0.1 . 0.7))
-	 ("cello" . (0.2 . 0.8))
-	 ("contrabass" . (0.2 . 0.8))
-	 )
-       instrument-equalizer-alist))
-
-;; (name . program+32768*(channel10 ? 1 : 0) )
-(define instrument-names-alist '())
-(set! instrument-names-alist
-      (append
-       `(
-          ("acoustic grand" . ,(- 1 1))
-	  ("bright acoustic" . ,(- 2 1))
-	  ("electric grand" . ,(- 3 1))
-	  ("honky-tonk" . ,(- 4 1))
-	  ("electric piano 1" . ,(- 5 1))
-	  ("electric piano 2" . ,(- 6 1))
-	  ("harpsichord" . ,(- 7 1))
-	  ("clav" . ,(- 8 1))
-
-	  ; (9-16 chrom percussion)
-	  ("celesta" . ,(- 9 1))
-	  ("glockenspiel" . ,(- 10 1))
-	  ("music box" . ,(- 11 1))
-	  ("vibraphone" . ,(- 12 1))
-	  ("marimba" . ,(- 13 1))
-	  ("xylophone" . ,(- 14 1))
-	  ("tubular bells" . ,(- 15 1))
-	  ("dulcimer" . ,(- 16 1))
-
-	  ; (17-24 organ)
-	  ("drawbar organ" . ,(- 17 1))
-	  ("percussive organ" . ,(- 18 1))
-	  ("rock organ" . ,(- 19 1))
-	  ("church organ" . ,(- 20 1))
-	  ("reed organ" . ,(- 21 1))
-	  ("accordion" . ,(- 22 1))
-	  ("harmonica" . ,(- 23 1))
-	  ("concertina" . ,(- 24 1))
-
-	  ; (25-32 guitar)
-	  ("acoustic guitar (nylon)" . ,(- 25 1))
-	  ("acoustic guitar (steel)" . ,(- 26 1))
-	  ("electric guitar (jazz)" . ,(- 27 1))
-	  ("electric guitar (clean)" . ,(- 28 1))
-	  ("electric guitar (muted)" . ,(- 29 1))
-	  ("overdriven guitar" . ,(- 30 1))
-	  ("distorted guitar" . ,(- 31 1))
-	  ("guitar harmo(dinics" . ,(- 32 1))
-
-	  ; (33-40 bass)
-	  ("acoustic bass" . ,(- 33 1))
-	  ("electric bass (finger)" . ,(- 34 1))
-	  ("electric bass (pick)" . ,(- 35 1))
-	  ("fretless bass" . ,(- 36 1))
-	  ("slap bass 1" . ,(- 37 1))
-	  ("slap bass 2" . ,(- 38 1))
-	  ("synth bass 1" . ,(- 39 1))
-	  ("synth bass 2" . ,(- 40 1))
-
-	  ; (41-48 strings)
-	  ("violin" . ,(- 41 1))
-	  ("viola" . ,(- 42 1))
-	  ("cello" . ,(- 43 1))
-	  ("contrabass" . ,(- 44 1))
-	  ("tremolo strings" . ,(- 45 1))
-	  ("pizzicato strings" . ,(- 46 1))
-	  ("orchestral strings" . ,(- 47 1))
-	  ("timpani" . ,(- 48 1))
-
-	  ; (49-56 ensemble)
-	  ("string ensemble 1" . ,(- 49 1))
-	  ("string ensemble 2" . ,(- 50 1))
-	  ("synthstrings 1" . ,(- 51 1))
-	  ("synthstrings 2" . ,(- 52 1))
-	  ("choir aahs" . ,(- 53 1))
-	  ("voice oohs" . ,(- 54 1))
-	  ("synth voice" . ,(- 55 1))
-	  ("orchestra hit" . ,(- 56 1))
-
-	  ; (57-64 brass)
-	  ("trumpet" . ,(- 57 1))
-	  ("trombone" . ,(- 58 1))
-	  ("tuba" . ,(- 59 1))
-	  ("muted trumpet" . ,(- 60 1))
-	  ("french horn" . ,(- 61 1))
-	  ("brass section" . ,(- 62 1))
-	  ("synthbrass 1" . ,(- 63 1))
-	  ("synthbrass 2" . ,(- 64 1))
-
-	  ; (65-72 reed)
-	  ("soprano sax" . ,(- 65 1))
-	  ("alto sax" . ,(- 66 1))
-	  ("tenor sax" . ,(- 67 1))
-	  ("baritone sax" . ,(- 68 1))
-	  ("oboe" . ,(- 69 1))
-	  ("english horn" . ,(- 70 1))
-	  ("bassoon" . ,(- 71 1))
-	  ("clarinet" . ,(- 72 1))
-
-	  ; (73-80 pipe)
-	  ("piccolo" . ,(- 73 1))
-	  ("flute" . ,(- 74 1))
-	  ("recorder" . ,(- 75 1))
-	  ("pan flute" . ,(- 76 1))
-	  ("blown bottle" . ,(- 77 1))
-	  ("shakuhachi" . ,(- 78 1))
-	  ("whistle" . ,(- 79 1))
-	  ("ocarina" . ,(- 80 1))
-
-	  ; (81-88 synth lead)
-	  ("lead 1 (square)" . ,(- 81 1))
-	  ("lead 2 (sawtooth)" . ,(- 82 1))
-	  ("lead 3 (calliope)" . ,(- 83 1))
-	  ("lead 4 (chiff)" . ,(- 84 1))
-	  ("lead 5 (charang)" . ,(- 85 1))
-	  ("lead 6 (voice)" . ,(- 86 1))
-	  ("lead 7 (fifths)" . ,(- 87 1))
-	  ("lead 8 (bass+lead)" . ,(- 88 1))
-
-	  ; (89-96 synth pad)
-	  ("pad 1 (new age)" . ,(- 89 1))
-	  ("pad 2 (warm)" . ,(- 90 1))
-	  ("pad 3 (polysynth)" . ,(- 91 1))
-	  ("pad 4 (choir)" . ,(- 92 1))
-	  ("pad 5 (bowed)" . ,(- 93 1))
-	  ("pad 6 (metallic)" . ,(- 94 1))
-	  ("pad 7 (halo)" . ,(- 95 1))
-	  ("pad 8 (sweep)" . ,(- 96 1))
-
-	  ; (97-104 synth effects)
-	  ("fx 1 (rain)" . ,(- 97 1))
-	  ("fx 2 (soundtrack)" . ,(- 98 1))
-	  ("fx 3 (crystal)" . ,(- 99 1))
-	  ("fx 4 (atmosphere)" . ,(- 100 1))
-	  ("fx 5 (brightness)" . ,(- 101 1))
-	  ("fx 6 (goblins)" . ,(- 102 1))
-	  ("fx 7 (echoes)" . ,(- 103 1))
-	  ("fx 8 (sci-fi)" . ,(- 104 1))
-
-	  ; (105-112 ethnic)
-	  ("sitar" . ,(- 105 1))
-	  ("banjo" . ,(- 106 1))
-	  ("shamisen" . ,(- 107 1))
-	  ("koto" . ,(- 108 1))
-	  ("kalimba" . ,(- 109 1))
-	  ("bagpipe" . ,(- 110 1))
-	  ("fiddle" . ,(- 111 1))
-	  ("shanai" . ,(- 112 1))
-
-	  ; (113-120 percussive)
-	  ("tinkle bell" . ,(- 113 1))
-	  ("agogo" . ,(- 114 1))
-	  ("steel drums" . ,(- 115 1))
-	  ("woodblock" . ,(- 116 1))
-	  ("taiko drum" . ,(- 117 1))
-	  ("melodic tom" . ,(- 118 1))
-	  ("synth drum" . ,(- 119 1))
-	  ("reverse cymbal" . ,(- 120 1))
-
-	  ; (121-128 sound effects)
-	  ("guitar fret noise" . ,(- 121 1))
-	  ("breath noise" . ,(- 122 1))
-	  ("seashore" . ,(- 123 1))
-	  ("bird tweet" . ,(- 124 1))
-	  ("telephone ring" . ,(- 125 1))
-	  ("helicopter" . ,(- 126 1))
-	  ("applause" . ,(- 127 1))
-	  ("gunshot" . ,(- 128 1))
-
-	  ; (channel 10 drum-kits - subtract 32768 to get program no.)
-	  ("standard kit" .     ,(+ 32768 0))
-	  ("standard drums" .   ,(+ 32768 0))
-	  ("drums" .            ,(+ 32768 0))
-	  ("room kit" .         ,(+ 32768 8))
-	  ("room drums" .       ,(+ 32768 8))
-	  ("power kit" .        ,(+ 32768 16))
-	  ("power drums" .      ,(+ 32768 16))
-	  ("rock drums" .       ,(+ 32768 16))
-	  ("electronic kit" .   ,(+ 32768 24))
-	  ("electronic drums" . ,(+ 32768 24))
-	  ("tr-808 kit" .       ,(+ 32768 25))
-	  ("tr-808 drums" .     ,(+ 32768 25))
-	  ("jazz kit" .         ,(+ 32768 32))
-	  ("jazz drums" .       ,(+ 32768 32))
-	  ("brush kit" .        ,(+ 32768 40))
-	  ("brush drums" .      ,(+ 32768 40))
-	  ("orchestra kit" .    ,(+ 32768 48))
-	  ("orchestra drums" .  ,(+ 32768 48))
-	  ("classical drums" .  ,(+ 32768 48))
-	  ("sfx kit" .          ,(+ 32768 56))
-	  ("sfx drums" .        ,(+ 32768 56))
-	  ("mt-32 kit" .        ,(+ 32768 127))
-	  ("mt-32 drums" .      ,(+ 32768 127))
-	  ("cm-64 kit" .        ,(+ 32768 127))
-	  ("cm-64 drums" .      ,(+ 32768 127))
-	)
-        instrument-names-alist
-      )
-)
-
-
-(define-public (default-instrument-equalizer s)
-  (let ((entry (assoc s instrument-equalizer-alist)))
-    (if entry
-	(cdr entry))))
-
-
-(define-public (percussion? instrument)
-  "
-returns whether the instrument should use midi channel 9
-"
-  (let* ((inst  (symbol->string instrument))
-         (entry (assoc inst instrument-names-alist))
-	)
-     (and entry (>= (cdr entry) 32768))
-  ))
-
-(define-public (midi-program instrument)
-"
-returns the program of the instrument
-"
-  (let* ((inst  (symbol->string instrument))
-         (entry (assoc inst instrument-names-alist))
-	)
-    (if entry (modulo (cdr entry) 32768) #f )
-  )
-)
-
-;; 90 == 90/127 == 0.71 is supposed to be the default value
-;; urg: we should set this at start of track
-(define-public dynamic-default-volume 0.71)
-
-(define-public (accidentals-in-key pitch-list)
-  "Count number of sharps minus number of flats"
-  (apply + (map cdr pitch-list)))
diff --git a/scm/molecule.scm b/scm/molecule.scm
deleted file mode 100644
index 443f6e5c83..0000000000
--- a/scm/molecule.scm
+++ /dev/null
@@ -1,84 +0,0 @@
-
-(define-public (stack-molecules axis dir padding mols)
-  "Stack molecules MOLS in direction AXIS,DIR, using PADDING."
-  (if (null? mols)
-      '()
-      (if (pair? mols)
-	  (ly:molecule-combine-at-edge (car mols) axis dir 
-				       (stack-molecules axis dir padding (cdr mols))
-				       padding
-				       )
-	  )
-  ))
-
-
-(define-public (stack-lines dir padding baseline mols)
-  "Stack vertically with a baseline-skip."
-  (if (null? mols)
-      '()
-      (if (null? (cdr mols))
-	  (car mols)
-	  (ly:molecule-combine-at-edge (car mols) Y dir 
-				       (stack-lines dir padding baseline (cdr mols))
-				       padding baseline
-				       )
-	  )))
-
-(define-public (fontify-text font-metric text)
-  "Set TEXT with font FONT-METRIC, returning a molecule."
-  (let* ((b  (ly:text-dimension font-metric text)))
-    (ly:make-molecule
-     (ly:fontify-atom font-metric `(text ,text)) (car b) (cdr b))
-    ))
-
-(define-public (bracketify-molecule mol axis thick protusion padding)
-  "Add brackets around MOL, producing a new molecule."
-
-  (let* ((ext (ly:molecule-get-extent mol axis))
-	 (lb (ly:bracket axis ext thick (- protusion)))
-	 (rb (ly:bracket axis ext thick protusion)))
-    (set! mol (ly:molecule-combine-at-edge mol (other-axis  axis) 1 lb padding))
-    (set! mol (ly:molecule-combine-at-edge mol (other-axis  axis) -1 rb padding))
-    mol
-  ))
-
-(define-public (make-filled-box-molecule xext yext)
-  "Make a filled box."
-  
-  (ly:make-molecule
-      (list 'filledbox (- (car xext)) (cdr xext)
-                       (- (car yext)) (cdr yext))
-      xext yext)		       
-)
-
-
-(define-public (box-grob-molecule grob)
-  "Make a box of exactly the extents of the grob.  The box precisely
-encloses the contents.
-"
-  (let* ((xext (ly:get-extent grob grob 0))
-	 (yext (ly:get-extent grob grob 1))
-	 (thick 0.1))
-
-    (ly:molecule-add (make-filled-box-molecule xext (cons (- (car yext) thick) (car yext) ))
-		     (make-filled-box-molecule xext (cons  (cdr yext) (+ (cdr yext) thick) ))
-		     (make-filled-box-molecule (cons (cdr xext) (+ (cdr xext) thick)) yext)
-		     (make-filled-box-molecule (cons (- (car xext) thick) (car xext)) yext))))
-
-
-;; TODO merge this and prev function. 
-(define-public (box-molecule mol thick padding)
-  "Add a box around MOL, producing a new molecule."
-  (let* (
-	 (x-ext (interval-widen (ly:molecule-get-extent mol 0) padding))
-	 (y-ext (interval-widen (ly:molecule-get-extent mol 1) padding))
-	 (y-rule (make-filled-box-molecule (cons 0 thick) y-ext))
-	 (x-rule (make-filled-box-molecule (interval-widen x-ext thick)
-					   (cons 0 thick)))
-	 )
-    (set! mol (ly:molecule-combine-at-edge mol X 1 y-rule padding))
-    (set! mol (ly:molecule-combine-at-edge mol X -1 y-rule padding))
-    (set! mol (ly:molecule-combine-at-edge mol Y 1 x-rule 0.0))  
-    (set! mol (ly:molecule-combine-at-edge mol Y -1 x-rule 0.0))
-    
-    mol))
diff --git a/scm/music-functions.scm b/scm/music-functions.scm
deleted file mode 100644
index aa7f5e9343..0000000000
--- a/scm/music-functions.scm
+++ /dev/null
@@ -1,788 +0,0 @@
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-
-(define-public (music-map function music)
-  "Apply @var{function} to @var{music} and all of the music it contains. "
-  (let* ((es (ly:get-mus-property music 'elements))
-         (e (ly:get-mus-property music 'element))
-	 )
-
-    (ly:set-mus-property! music 'elements 
-	(map (lambda (y) (music-map  function y)) es))
-	(if (ly:music? e)
-	    (ly:set-mus-property! music 'element (music-map function  e)))
-	(function music)
-	))
-
-(define-public (music-filter pred? music)
-  "Filter out music expressions that do not satisfy PRED."
-  
-  (define (inner-music-filter pred? music)
-    "Recursive function."
-    (let* ((es (ly:get-mus-property music 'elements))
-	   (e (ly:get-mus-property music 'element))
-	   (as (ly:get-mus-property music 'articulations))
-	   (filtered-as (filter ly:music? (map (lambda (y) (inner-music-filter pred? y)) as)))
-	   (filtered-e (if (ly:music? e)
-			   (inner-music-filter pred? e)
-			   e))
-	   (filtered-es (filter ly:music? (map (lambda (y) (inner-music-filter pred? y)) es)))
-	   )
-
-      (ly:set-mus-property! music 'element filtered-e)
-      (ly:set-mus-property! music 'elements filtered-es)
-      (ly:set-mus-property! music 'articulations filtered-as)
-
-      ;; if filtering emptied the expression, we remove it completely.
-      (if (or (pred? music)
-	      (and (eq? filtered-es '()) (not (ly:music? e))
-		   (or (not (eq? es '()))
-		       (ly:music? e))))
-	  (set! music '()))
-      
-      music))
-
-  (set! music (inner-music-filter pred? music))
-  (if (ly:music? music)
-      music
-      (make-music-by-name 'Music)	;must return music.
-      ))
-
-(define-public (remove-tag tag)
-  (lambda (mus)
-    (music-filter
-     (lambda (m)
-       (let* ((tags (ly:get-mus-property m 'tags))
-	      (res (memq tag tags)))
-       res)) mus)))
-
-(define-public (display-music music)
-  "Display music, not done with music-map for clarity of presentation."
-  (display music)
-  (display ": { ")
-  
-  (let* ((es (ly:get-mus-property music 'elements))
-         (e (ly:get-mus-property music 'element))
-	 )
-
-    (display (ly:get-mutable-properties music))
-
-    (if (pair?  es)
-	(begin (display "\nElements: {\n")
-	       (map display-music es)
-	       (display "}\n")
-	))
-    
-    
-    (if (ly:music? e)
-	(begin
-	  (display "\nChild:")
-	  (display-music e)
-	  )
-	)
-    )
-  (display " }\n")
-  music
-  )
-
-
-
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-
-(define (shift-one-duration-log music shift dot)
-  "  add SHIFT to ly:duration-log and optionally 
-  a dot to any note encountered. This scales the music up by a factor 
-  2^shift * (2 - (1/2)^dot)"
-
-  (let*
-      (
-       (d (ly:get-mus-property music 'duration))
-       )
-    (if (ly:duration? d)
-	(let* (
-	       (cp (ly:duration-factor d))
-	       (nd (ly:make-duration (+ shift (ly:duration-log d))
-				     (+ dot (ly:duration-dot-count d))
-				     (car cp)
-				     (cdr cp)))
-	       
-	       )
-	  (ly:set-mus-property! music 'duration nd)
-	  ))
-    music))
-
-
-
-(define-public (shift-duration-log music shift dot)
-  (music-map (lambda (x) (shift-one-duration-log x shift dot))
-	     music))
-  
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;; clusters.
-
-(define-public (note-to-cluster music)
-  "Replace NoteEvents by ClusterNoteEvents."
-  (if (eq? (ly:get-mus-property music 'name) 'NoteEvent)
-      (let* ((cn (make-music-by-name 'ClusterNoteEvent)))
-
-	     (ly:set-mus-property! cn 'pitch (ly:get-mus-property music 'pitch))
-	     (ly:set-mus-property! cn 'duration (ly:get-mus-property music 'duration))
-	     cn)
-      music))
-
-(define-public (notes-to-clusters music)
-  (music-map note-to-cluster music))
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;; repeats.
-
-(define-public (unfold-repeats music)
-"
-This function replaces all repeats  with unfold repeats. It was 
-written by Rune Zedeler. "
-  (let* ((es (ly:get-mus-property music 'elements))
-         (e (ly:get-mus-property music 'element))
-         (n  (ly:music-name music)))
- 
-    (if (equal? n "Repeated_music")
-        (begin
-	  (if (equal?
-	       (ly:get-mus-property music 'iterator-ctor)
-	       Chord_tremolo_iterator::constructor)
-	      (shift-duration-log music  (ly:intlog2 (ly:get-mus-property music 'repeat-count)) 0)
-	      )
-          (ly:set-mus-property!
-           music 'length Repeated_music::unfolded_music_length)
-	  (ly:set-mus-property!
-	   music 'start-moment-function Repeated_music::first_start)
-          (ly:set-mus-property!
-           music 'iterator-ctor Unfolded_repeat_iterator::constructor)))
-
-    (if (pair? es)
-        (ly:set-mus-property!
-         music 'elements
-         (map unfold-repeats es)))
-
-    (if (ly:music? e)
-        (ly:set-mus-property!
-         music 'element
-         (unfold-repeats e)))
-
-    music))
-
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;; property setting music objs.
-
-(define-public (make-grob-property-set grob gprop val)
-
-  "Make a Music expression that sets GPROP to VAL in GROB. Does a pop first,
-i.e.  this is not an override"
-  
-   (let* ((m (make-music-by-name  'OverrideProperty)))
-     (ly:set-mus-property! m 'symbol grob)
-     (ly:set-mus-property! m 'grob-property gprop)
-     (ly:set-mus-property! m 'grob-value val)
-     (ly:set-mus-property! m 'pop-first #t)
-		
-     m
-   
-   ))
-(define-public (make-grob-property-override grob gprop val)
-
-  "Make a Music expression that sets GPROP to VAL in GROB. Does a pop first,
-i.e.  this is not an override"
-  
-   (let* ((m (make-music-by-name  'OverrideProperty)))
-     (ly:set-mus-property! m 'symbol grob)
-     (ly:set-mus-property! m 'grob-property gprop)
-     (ly:set-mus-property! m 'grob-value val)
-		
-     m
-   
-   ))
-
-
-(define-public (make-grob-property-revert grob gprop)
-  "Revert the grob property GPROP for GROB."
-   (let* ((m (make-music-by-name  'OverrideProperty)))
-     (ly:set-mus-property! m 'symbol grob)
-     (ly:set-mus-property! m 'grob-property gprop)
-		
-     m
-   
-   ))
-
-(define direction-polyphonic-grobs
-   '(Tie Slur Script TextScript Stem Dots DotColumn))
-
-(define-public (make-voice-props-set n)
-  (make-sequential-music
-   (append
-      (map (lambda (x) (make-grob-property-set x 'direction
-					       (if (odd? n) -1 1)))
-	   direction-polyphonic-grobs)
-      (list
-       (make-grob-property-set 'NoteColumn 'horizontal-shift (quotient n 2))
-       (make-grob-property-set 'MultiMeasureRest 'staff-position
-			       (if (odd? n) -4 4)
-			       )
-       
-       )
-   )
-  ))
-
-(define-public (make-voice-props-revert)
-  (make-sequential-music
-   (append
-    (map (lambda (x) (make-grob-property-revert x 'direction))
-	 direction-polyphonic-grobs)
-      
-      (list (make-grob-property-revert 'NoteColumn 'horizontal-shift))
-   ))
-  )
-
-
-(define-public (context-spec-music m context . rest)
-  "Add \\context CONTEXT = foo to M. "
-  
-  (let* ((cm (make-music-by-name 'ContextSpeccedMusic)))
-    (ly:set-mus-property! cm 'element m)
-    (ly:set-mus-property! cm 'context-type context)
-    (if (and  (pair? rest) (string? (car rest)))
-	(ly:set-mus-property! cm 'context-id (car rest))
-    )
-    cm
-  ))
-
-(define-public (make-apply-context func)
-  (let*
-      ((m (make-music-by-name 'ApplyContext)))
-
-    (ly:set-mus-property! m 'procedure func)
-    m
-  ))
-
-(define-public (make-sequential-music elts)
-  (let*  ((m (make-music-by-name 'SequentialMusic)))
-    (ly:set-mus-property! m 'elements elts)
-    m
-  ))
-
-(define-public (make-simultaneous-music elts)
-  (let*  ((m (make-music-by-name 'SimultaneousMusic)))
-    (ly:set-mus-property! m 'elements elts)
-    m
-    ))
-
-(define-public (make-event-chord elts)
-  (let*  ((m (make-music-by-name 'EventChord)))
-    (ly:set-mus-property! m 'elements elts)
-    m
-    ))
-
-
-(define-public (make-skip-music dur)
-  (let*  ((m (make-music-by-name 'SkipMusic)))
-    (ly:set-mus-property! m 'duration dur)
-    m
-  ))
-
-;;;;;;;;;;;;;;;;
-
-;; mmrest
-(define-public (make-multi-measure-rest duration location)
-  (let*
-      (
-       (start (make-music-by-name 'MultiMeasureRestEvent))
-       (ch (make-music-by-name 'BarCheck))
-       (ch2  (make-music-by-name 'BarCheck))
-       (seq (make-music-by-name 'MultiMeasureRestMusicGroup))
-       )
-
-    (map (lambda (x) (ly:set-mus-property! x 'origin location))
-	 (list start ch ch2 seq))
-    (ly:set-mus-property! start 'duration duration)
-    (ly:set-mus-property! seq 'elements
-     (list
-      ch
-      (make-event-chord (list start))
-      ch2
-      ))
-
-    seq
-    ))
-
-(define-public (glue-mm-rest-texts music)
-  "Check if we have R1*4-\\markup { .. }, and if applicable convert to
-a property set for MultiMeasureRestNumber."
-  
-  (define (script-to-mmrest-text script-music)
-    "Extract 'direction and 'text   from SCRIPT-MUSIC, and transform into property sets."
-    
-    (let*
-	(
-	 (text (ly:get-mus-property script-music 'text))
-	 (dir (ly:get-mus-property script-music 'direction))
-	 (p (make-music-by-name 'MultiMeasureTextEvent))
-	 )
-
-      (if (ly:dir? dir)
-	  (ly:set-mus-property! p  'direction dir))
-      (ly:set-mus-property! p 'text text)
-      p
-    ))
-  
-  (if (eq? (ly:get-mus-property music 'name)  'MultiMeasureRestMusicGroup)
-      (let*
-	  (
-	   (text? (lambda (x) (memq 'script-event (ly:get-mus-property x 'types))))
-	   (es (ly:get-mus-property  music 'elements))
-	   (texts (map script-to-mmrest-text  (filter text? es)))
-	   (others (remove text? es))
-	   )
-	(if (pair? texts)
-	    (ly:set-mus-property!
-	     music 'elements
-	     (cons (make-event-chord texts) others)
-	    ))
-      ))
-  music
-  )
-
-
-(define-public (make-property-set sym val)
-  (let*
-      (
-       (m (make-music-by-name 'PropertySet))
-       )
-    (ly:set-mus-property! m 'symbol sym)
-    (ly:set-mus-property! m 'value val)
-    m
-  ))
-
-
-
-(define-public (make-ottava-set octavation)
-  (let*
-      ((m (make-music-by-name 'ApplyContext)))
-    
-  
-  (define (ottava-modify context)
-    "Either reset centralCPosition to the stored original, or remember
-old centralCPosition, add OCTAVATION to centralCPosition, and set
-OTTAVATION to `8va', or whatever appropriate."
-    
-    (if (number? (ly:get-context-property  context 'centralCPosition))
-	
-	(if (= octavation 0)
-	    (let*
-		((where (ly:context-property-where-defined context 'centralCPosition))
-		 (oc0 (ly:get-context-property context 'originalCentralCPosition)))
-
-	      (ly:set-context-property! context 'centralCPosition oc0)
-	      (ly:unset-context-property where 'originalCentralCPosition)
-	      (ly:unset-context-property where 'ottavation))
-
-	    (let*
-		((where (ly:context-property-where-defined context 'centralCPosition))
-		 (c0 (ly:get-context-property context 'centralCPosition))
-		 (new-c0 (+ c0 (* -7 octavation)))
-		 (string (cdr
-			  (assoc octavation '((2 . "15ma")
-					      (1 . "8va")
-					      (0 . #f)
-					      (-1 . "8va bassa")
-					      (-2 . "15ma bassa"))))))
-
-	      (ly:set-context-property! context 'centralCPosition new-c0)
-	      (ly:set-context-property! context 'originalCentralCPosition c0)
-	      (ly:set-context-property! context 'ottavation string)
-	      
-	      ))))
-
-  (ly:set-mus-property! m 'procedure  ottava-modify)
-  (context-spec-music m 'Staff)
-  ))
-
-(define-public (set-octavation ottavation)
-  (ly:export (make-ottava-set ottavation)))
-
-(define-public (make-time-signature-set num den . rest)
-  " Set properties for time signature NUM/DEN.
-Rest can contain a list of beat groupings 
-
-"
-  
-  (let*
-      (
-       (set1 (make-property-set 'timeSignatureFraction (cons num den) ))
-       (beat (ly:make-moment 1 den))
-       (len  (ly:make-moment num den))
-       (set2 (make-property-set 'beatLength beat))
-       (set3 (make-property-set 'measureLength len))
-       (set4 (make-property-set 'beatGrouping (if (pair? rest)
-						  (car rest)
-						  '())))
-       (basic  (list set1 set2 set3 set4)))
-
-    (context-spec-music
-     (make-sequential-music basic) 'Timing)))
-
-(define-public (make-mark-set label)
-  "make the music for the \\mark command."
-  
-  (let*
-      ((set (if (integer? label)
-		(context-spec-music (make-property-set 'rehearsalMark label)
-				    'Score)
-		#f))
-       (ev (make-music-by-name 'MarkEvent))
-       (ch (make-event-chord (list ev)))
-       )
-
-    
-    (if set
-	(make-sequential-music (list set ch))
-	(begin
-	  (ly:set-mus-property! ev 'label label)
-	  ch))))
-    
-
-
-(define-public (set-time-signature num den . rest)
-  (ly:export (apply make-time-signature-set `(,num ,den . ,rest))))
-
-(define-public (make-penalty-music pen)
- (let
-     ((m (make-music-by-name 'BreakEvent)))
-   (ly:set-mus-property! m 'penalty pen)
-   m))
-
-(define-public (make-articulation name)
-  (let* (
-	 (m (make-music-by-name 'ArticulationEvent))
-      )
-      (ly:set-mus-property! m 'articulation-type name)
-      m
-  ))
-
-(define-public (make-lyric-event string duration)
-  (let* ((m (make-music-by-name 'LyricEvent)))
-
-    (ly:set-mus-property! m 'duration duration)
-    (ly:set-mus-property! m 'text string)
-    m))
-
-(define-public (make-span-event type spandir)
-  (let* (
-	 (m (make-music-by-name  type))
-	 )
-    (ly:set-mus-property! m 'span-direction spandir)
-    m
-    ))
-
-(define-public (set-mus-properties! m alist)
-  "Set all of ALIST as properties of M." 
-  (if (pair? alist)
-      (begin
-	(ly:set-mus-property! m (caar alist) (cdar alist))
-	(set-mus-properties! m (cdr alist)))
-  ))
-
-
-
-(define-public (music-separator? m)
-  "Is M a separator?"
-  (let* ((ts (ly:get-mus-property m 'types )))
-    (memq 'separator ts)
-  ))
-
-
-;;; splitting chords into voices.
-(define (voicify-list lst number)
-   "Make a list of Musics.
-
-   voicify-list :: [ [Music ] ] -> number -> [Music]
-   LST is a list music-lists.
-"
-
-   (if (null? lst) '()
-       (cons (context-spec-music
-	      (make-sequential-music
-	       (list
-		(make-voice-props-set number)
-		(make-simultaneous-music (car lst))))
-
-	      'Voice  (number->string number))
-	      (voicify-list (cdr lst) (1+ number))
-       ))
-   )
-
-(define (voicify-chord ch)
-  "Split the parts of a chord into different Voices using separator"
-   (let* ((es (ly:get-mus-property ch 'elements)))
-     
-     (ly:set-mus-property!  ch 'elements
-       (voicify-list (split-list es music-separator?) 0))
-     ch
-   ))
-
-(define (voicify-music m)
-   "Recursively split chords that are separated with \\ "
-   
-   (if (not (ly:music? m))
-       (begin (display m)
-       (error "not music!"))
-       )
-   (let*
-       ((es (ly:get-mus-property m 'elements))
-	(e (ly:get-mus-property m 'element))
-	)
-     (if (pair? es)
-	 (ly:set-mus-property! m 'elements (map voicify-music es)))
-     (if (ly:music? e)
-	 (ly:set-mus-property! m 'element  (voicify-music e)))
-     (if
-      (and (equal? (ly:music-name m) "Simultaneous_music")
-	   (reduce (lambda (x y ) (or x y)) #f (map music-separator? es)))
-      (set! m  (context-spec-music (voicify-chord m)  'Staff))
-      )
-
-     m
-     ))
-
-(define-public (empty-music)
-  (ly:export (make-music-by-name 'Music))
-  )
-;;;
-
-; Make a function that checks score element for being of a specific type. 
-(define-public (make-type-checker symbol)
-  (lambda (elt)
-    ;;(display  symbol)
-    ;;(eq? #t (ly:get-grob-property elt symbol))
-    (not (eq? #f (memq symbol (ly:get-grob-property elt 'interfaces))))))
-
-(define-public ((outputproperty-compatibility func sym val) grob g-context ao-context)
-  (if (func grob)
-      (ly:set-grob-property! grob sym val)))
-
-
-(define-public ((set-output-property grob-name symbol val)  grob grob-c context)
-   "Usage:
-
-\\applyoutput #(set-output-property 'Clef 'extra-offset '(0 . 1))
-
-"
-   
-   (let*
-       ((meta (ly:get-grob-property grob 'meta)))
-
-     (if (equal?  (cdr (assoc 'name meta)) grob-name)
-	 (ly:set-grob-property! grob symbol val)
-	 )))
-
-
-;;
-(define-public (smart-bar-check n)
-  "Make  a bar check that checks for a specific bar number. 
-"
-  (let*
-      (
-       (m (make-music-by-name 'ApplyContext))
-       )
-    
-    (define (checker tr)
-      (let* ((bn (ly:get-context-property tr 'currentBarNumber)))
-	(if (= bn  n)
-	    #t
-	    (error
-	     (format "Bar check failed, we should have reached ~a, instead at ~a\n"
-		     n bn ))
-	    )))
-
-    (ly:set-mus-property! m 'procedure checker)
-    m
-    ))
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;; warn for bare chords at start.
-
-(define (has-request-chord elts)
-  (reduce (lambda (x y) (or x y)) #f (map (lambda (x) (equal? (ly:music-name x)
-							   "Request_chord")) elts)
-  ))
-
-(define (ly:music-message music msg)
-  (let*
-      (
-      (ip (ly:get-mus-property music 'origin))
-      )
-
-    (if (ly:input-location? ip)
-	(ly:input-message ip msg)
-	(ly:warn msg))
-  ))
-  
-(define (check-start-chords music)
-  "Check music expression for a Simultaneous_music containing notes\n(ie. Request_chords), without context specification. Called  from parser."
-  
-     (let*
-       ((es (ly:get-mus-property music 'elements))
-	(e (ly:get-mus-property music 'element))
-	(name (ly:music-name music)) 
-	)
-
-       (cond 
-	 ((equal? name "Context_specced_music") #t)
-	 ((equal? name "Simultaneous_music")
-
-	  (if (has-request-chord es)
-	      (ly:music-message music "Starting score with a chord.\nPlease insert an explicit \\context before chord")
-	      (map check-start-chords es)))
-	 
-	 ((equal? name "Sequential_music")
-	   (if (pair? es)
-	       (check-start-chords (car es))))
-	  (else (if (ly:music? e) (check-start-chords e )))
-       
-       ))
-     music
-     )
-
-
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;
-;; setting stuff for grace context.
-;;
-
-(define (vector-extend v x)
-  "Make a new vector consisting of V, with X added to the end."
-  (let*
-      ((n (vector-length v))
-       (nv (make-vector (+ n 1) '())))
-
-    
-    (vector-move-left! v 0 n nv 0)
-    (vector-set! nv n x)
-    nv))
-
-
-(define (vector-map f v)
-  "Map  F over V. This function returns nothing."
-  (do
-      ((n (vector-length v))
-       (i 0 (+ i 1)))
-      ((>= i n))
-  
-    (f (vector-ref v i))))
-
-(define (vector-reverse-map f v)
-  "Map  F over V, N to 0 order. This function returns nothing."
-  (do
-      ((i (- (vector-length v) 1) (- i 1)))
-      ((< i 0))
-  
-    (f (vector-ref v i))))
-
-;; TODO:  make a remove-grace-property too.
-(define-public (add-grace-property context-name grob sym val)
-  "Set SYM=VAL for GROB in CONTEXT-NAME. "
-  (define (set-prop context)
-    (let*
-	((where (ly:context-property-where-defined context 'graceSettings))
-	 (current (ly:get-context-property where 'graceSettings))
-	 (new-settings (vector-extend current (list context-name grob sym val)))
-	 )
-      (ly:set-context-property! where 'graceSettings new-settings)))
-    
-    (ly:export (context-spec-music (make-apply-context set-prop) 'Voice)))
-
-
-(define-public (set-start-grace-properties context)
-  (define (execute-1 x)
-    (let*
-	((tr (ly:translator-find context (car x))))
-
-      (if (ly:context? tr)
-	  (ly:context-pushpop-property tr (cadr x) (caddr x) (cadddr x))
-	  )))
-  
-  (let*
-      ((props (ly:get-context-property context 'graceSettings)))
-    (if (vector? props)
-	(vector-map execute-1 props))))
-
-(define-public (set-stop-grace-properties context)
-  (define (execute-1 x)
-    (let*
-	((tr (ly:translator-find context (car x))))
-      (if (ly:context? tr)
-	  (ly:context-pushpop-property tr (cadr x) (caddr x))
-	  )))
-  
-  (let*
-      ((props (ly:get-context-property context 'graceSettings)))
-    (if (vector? props)
-	(vector-reverse-map execute-1 props))))
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;; switch it on here, so parsing and init isn't checked (too slow!)
-;;
-;; automatic music transformations.
-
-(define (switch-on-debugging m)
-  (set-debug-cell-accesses! 15000)
-  m)
-
-(define-public toplevel-music-functions
-  (list
-;;   check-start-chords ; ; no longer needed with chord syntax. 
-	voicify-music
-	(lambda (x) (music-map glue-mm-rest-texts x))
-; switch-on-debugging
-	))
-
-
-
-
-;;;;;;;;;;;;;;;;;
-;; lyrics
-
-(define (apply-durations lyric-music durations) 
-  (define (apply-duration music)
-    (if (and (not (equal? (ly:music-length music) ZERO-MOMENT))
-	     (ly:duration?  (ly:get-mus-property music 'duration)))
-	(begin
-	  (ly:set-mus-property! music 'duration (car durations))
-	  (set! durations (cdr durations))
-	  )))
-
-  (music-map apply-duration lyric-music))
-
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;
-
-
-(define-public ((add-balloon-text object-name text off) grob orig-context cur-context)
-   "Usage: see input/regression/balloon.ly "
-  (let*
-   ((meta (ly:get-grob-property grob 'meta))
-    (nm (if (pair? meta) (cdr (assoc 'name meta)) "nonexistant"))
-    (cb (ly:get-grob-property grob 'print-function)))
-    
-   (if (equal? nm object-name)
-    (begin
-     (ly:set-grob-property! grob 'print-function Balloon_interface::print)
-     (ly:set-grob-property! grob 'balloon-original-callback cb)
-     (ly:set-grob-property! grob 'balloon-text text)
-     (ly:set-grob-property! grob 'balloon-text-offset off)
-     (ly:set-grob-property! grob 'balloon-text-props '((font-family . roman)))
-
-     ))))
-
-
diff --git a/scm/new-markup.scm b/scm/new-markup.scm
deleted file mode 100644
index f1c27d6e20..0000000000
--- a/scm/new-markup.scm
+++ /dev/null
@@ -1,812 +0,0 @@
-"
-Internally markup is stored as lists, whose head is a function.
-
-  (FUNCTION ARG1 ARG2 ... )
-
-When the markup is formatted, then FUNCTION is called as follows
-
-  (FUNCTION GROB PROPS ARG1 ARG2 ... ) 
-
-GROB is the current grob, PROPS is a list of alists, and ARG1.. are
-the rest of the arguments.
-
-The function should return a molecule (i.e. a formatted, ready to
-print object).
-
-
-To add a function, use the def-markup-command utility.
-
-  (def-markup-command (mycommand paper prop arg1 ...) (arg1-type? ...)
-    \"my command usage and description\"
-    ...function body...)
-
-The command is now available in markup mode, e.g.
-
-
-  \\markup { .... \\MYCOMMAND #1 argument ... }
-
-" ; "
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;; markup definer utilities
-;;; `def-markup-command' can be used both for built-in markup
-;;; definitions and user defined markups.
-
-(defmacro-public def-markup-command (command-and-args signature . body)
-  "Define a COMMAND-markup function after command-and-args and body,
-register COMMAND-markup and its signature,
-add COMMAND-markup to markup-function-list,
-sets COMMAND-markup markup-signature and markup-keyword object properties,
-define a make-COMMAND-markup function.
-Syntax:
-  (def-markup-command (COMMAND paper props arg1 arg2 ...) (arg1-type? arg2-type? ...)
-    \"documentation string\"
-    ...command body...)
- or:
-  (def-markup-command COMMAND (arg1-type? arg2-type? ...)
-    function)
-"
-  (let* ((command (if (pair? command-and-args) (car command-and-args) command-and-args))
-         (args (if (pair? command-and-args) (cdr command-and-args) '()))
-         (command-name (string->symbol (string-append (symbol->string command) "-markup")))
-         (make-markup-name (string->symbol (string-append "make-" (symbol->string command-name)))))
-    `(begin
-       (define-public ,(if (pair? args)
-                           (cons command-name args)
-                           command-name)
-         ,@body)
-       (set! (markup-command-signature ,command-name) (list ,@signature))
-       (if (not (member ,command-name markup-function-list))
-           (set! markup-function-list (cons ,command-name markup-function-list)))
-       (define-public (,make-markup-name . args)
-         (let ((sig (list ,@signature)))
-           (make-markup ,command-name ,(symbol->string make-markup-name) sig args))))))
-
-(define-public (make-markup markup-function make-name signature args)
-  " Construct a markup object from MARKUP-FUNCTION and ARGS. Typecheck
-against SIGNATURE, reporting MAKE-NAME as the user-invoked function.
-"
-  (let* ((arglen (length args))
-         (siglen (length signature))
-         (error-msg (if (and (> siglen 0) (> arglen 0))
-                        (markup-argument-list-error signature args 1)
-                        #f)))
-    (if (or (not (= arglen siglen)) (< siglen 0) (< arglen 0))
-        (scm-error 'markup-format make-name
-                   "Expect ~A arguments for ~A. Found ~A: ~S"
-                   (list siglen make-name arglen args)
-                   #f))
-    (if error-msg
-        (scm-error 'markup-format make-name
-                   "Invalid argument in position ~A\nExpect: ~A\nFound: ~S."
-                   error-msg #f)
-        (cons markup-function args))))
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;; markup constructors
-;;; lilypond-like syntax for markup construction in scheme.
-
-(use-modules (ice-9 optargs)
-             (ice-9 receive))
-
-(defmacro*-public markup (#:rest body)
-  "The `markup' macro provides a lilypond-like syntax for building markups.
-
- - #:COMMAND is used instead of \\COMMAND
- - #:lines ( ... ) is used instead of { ... }
- - #:center ( ... ) is used instead of \\center < ... >
- - etc.
-
-Example:
-  \\markup { foo
-            \\raise #0.2 \\hbracket \\bold bar
-            \\override #'(baseline-skip . 4)
-            \\bracket \\column < baz bazr bla >
-  }
-         <==>
-  (markup \"foo\"
-          #:raise 0.2 #:hbracket #:bold \"bar\"
-          #:override '(baseline-skip . 4) 
-          #:bracket #:column (\"baz\" \"bazr\" \"bla\"))
-Use `markup*' in a \\notes block."
-  
-  (car (compile-all-markup-expressions `(#:line ,body))))
-
-(defmacro*-public markup* (#:rest body)
-  "Same as `markup', for use in a \\notes block."
-  `(ly:export (markup ,@body)))
-  
-  
-(define (compile-all-markup-expressions expr)
-  "Return a list of canonical markups expressions, eg:
-  (#:COMMAND1 arg11 arg12 #:COMMAND2 arg21 arg22 arg23)
-  ===>
-  ((make-COMMAND1-markup arg11 arg12)
-   (make-COMMAND2-markup arg21 arg22 arg23) ...)"
-  (do ((rest expr rest)
-       (markps '() markps))
-      ((null? rest) (reverse markps))
-    (receive (m r) (compile-markup-expression rest)
-             (set! markps (cons m markps))
-             (set! rest r))))
-
-(define (keyword->make-markup key)
-  "Transform a keyword, eg. #:COMMAND, in a make-COMMAND-markup symbol."
-  (string->symbol (string-append "make-" (symbol->string (keyword->symbol key)) "-markup")))
-
-(define (compile-markup-expression expr)
-  "Return two values: the first complete canonical markup expression found in `expr',
-eg (make-COMMAND-markup arg1 arg2 ...), and the rest expression."
-  (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)))))))
-        ((and (pair? expr)
-              (pair? (car expr))
-              (keyword? (caar expr)))
-         ;; expr === ((#:COMMAND arg1 ...) ...)
-         (receive (m r) (compile-markup-expression (car expr))
-                  (values m (cdr expr))))
-        (else
-         ;; expr === (symbol ...) or ("string" ...) or ((funcall ...) ...)
-         (values (car expr)
-                 (cdr expr)))))
-
-(define (compile-all-markup-args expr)
-  "Transform `expr' into markup arguments"
-  (do ((rest expr rest)
-       (args '() args))
-      ((null? rest) (reverse args))
-    (receive (a r) (compile-markup-arg rest)
-             (set! args (cons a args))
-             (set! rest r))))
-
-(define (compile-markup-arg expr)
-  "Return two values: the desired markup argument, and the rest arguments"
-  (cond ((null? expr)
-         ;; no more args
-         (values '() '()))
-        ((keyword? (car expr))
-         ;; expr === (#:COMMAND ...)
-         ;; ==> build and return the whole markup expression
-         (compile-markup-expression expr))
-        ((and (pair? (car expr))
-              (keyword? (caar expr)))
-         ;; expr === ((#:COMMAND ...) ...)
-         ;; ==> build and return the whole markup expression(s)
-         ;; found in (car expr)
-         (receive (markup-expr rest-expr) (compile-markup-expression (car expr))
-                  (if (null? rest-expr)
-                      (values markup-expr (cdr expr))
-                      (values `(list ,markup-expr ,@(compile-all-markup-args rest-expr))
-                              (cdr expr)))))
-        ((and (pair? (car expr))
-              (pair? (caar expr)))
-         ;; expr === (((foo ...) ...) ...)
-         (values (cons 'list (compile-all-markup-args (car expr))) (cdr expr)))
-        (else (values (car expr) (cdr expr)))))
-
-;;;;;;;;;;;;;;;
-;;; Utilities for storing and accessing markup commands signature
-;;; and keyword.
-;;; Examples:
-;;;
-;;; (set! (markup-command-signature raise-markup) (list number? markup?))
-;;; ==> ((#<primitive-procedure number?> #<procedure markup? (obj)>) . scheme0-markup1)
-;;;
-;;; (markup-command-signature raise-markup)
-;;; ==> (#<primitive-procedure number?> #<procedure markup? (obj)>)
-;;;
-;;; (markup-command-keyword raise-markup) ==> "scheme0-markup1"
-;;; 
-
-(define markup-command-signatures (make-hash-table 50))
-
-(define (markup-command-signature-ref markup-command)
-  "Return markup-command's signature, e.g. (number? markup?).
-markup-command may be a procedure."
-  (let ((sig-key (hashq-ref markup-command-signatures
-                            markup-command)))
-    (if sig-key (car sig-key) #f)))
-
-(define-public (markup-command-keyword markup-command)
-  "Return markup-command's keyword, e.g. \"scheme0markup1\".
-markup-command may be a procedure."
-  (let ((sig-key (hashq-ref markup-command-signatures
-                            markup-command)))
-    (if sig-key (cdr sig-key) #f)))
-
-(define (markup-command-signatureset! markup-command signature)
-  "Set markup-command's signature. markup-command must be a named procedure.
-Also set markup-signature and markup-keyword object properties."
-  (hashq-set! markup-command-signatures
-              markup-command
-              (cons signature (markup-signature-to-keyword signature)))
-  ;; these object properties are still in use somewhere
-  (set-object-property! markup-command 'markup-signature signature)
-  (set-object-property! markup-command 'markup-keyword (markup-signature-to-keyword signature)))
-  
-(define-public markup-command-signature
-  (make-procedure-with-setter markup-command-signature-ref markup-command-signatureset!))
-
-(define (markup-symbol-to-proc markup-sym)
-  "Return the markup command procedure which name is `markup-sym', if any."
-  (hash-fold (lambda (key val prev)
-                            (or prev
-                                (if (eqv? (procedure-name key) markup-sym) key #f)))
-             #f
-             markup-command-signatures))
-
-(define-public markup-function-list '())
-
-(define-public (markup-signature-to-keyword sig)
-  " (A B C) -> a0-b1-c2 "
-  (if (null? sig)
-      'empty
-      (string->symbol (string-join (map
-                                    (let* ((count 0))
-                                      (lambda (func)
-                                        (set! count (+ count 1))
-                                        (string-append
-                                         ;; for reasons I don't get,
-                                         ;; (case func ((markup?) .. )
-                                         ;; doesn't work.
-                                         (cond 
-                                          ((eq? func markup?) "markup")
-                                          ((eq? func markup-list?) "markup-list")
-                                          (else "scheme"))
-                                         (number->string (- count 1)))))
-                                    sig)
-                         "-"))))
-
-(define-public (lookup-markup-command code)
-  (let ((proc (markup-symbol-to-proc (string->symbol (string-append code "-markup")))))
-    (and proc (cons proc (markup-command-keyword proc)))))
-
-;;;;;;;;;;;;;;;;;;;;;;
-;;; markup type predicates
-
-(define (markup-function? x)
-  (not (not (markup-command-signature x))))
-
-(define (markup-list? arg)
-  (define (markup-list-inner? l)
-    (or (null? l)
-        (and (markup? (car l)) (markup-list-inner? (cdr l)))))
-  (and (list? arg) (markup-list-inner? arg)))
-
-(define (markup-argument-list? signature arguments)
-  "Typecheck argument list."
-  (if (and (pair? signature) (pair? arguments))
-      (and ((car signature) (car arguments))
-           (markup-argument-list? (cdr signature) (cdr arguments)))
-      (and (null? signature) (null? arguments))))
-
-
-(define (markup-argument-list-error signature arguments number)
-  "return (ARG-NR TYPE-EXPECTED ARG-FOUND) if an error is detected, or
-#f is no error found.
-"
-  (if (and (pair? signature) (pair? arguments))
-      (if (not ((car signature) (car arguments)))
-          (list number (type-name (car signature)) (car arguments))
-          (markup-argument-list-error (cdr signature) (cdr arguments) (+ 1 number)))
-      #f))
-
-;;
-;; full recursive typecheck.
-;;
-(define (markup-typecheck? arg)
-  (or (string? arg)
-      (and (pair? arg)
-           (markup-function? (car arg))
-           (markup-argument-list? (markup-command-signature (car arg))
-                                  (cdr arg)))))
-
-;; 
-;; typecheck, and throw an error when something amiss.
-;; 
-(define (markup-thrower-typecheck arg)
-  (cond ((string? arg) #t)
-        ((not (pair? arg))
-         (throw 'markup-format "Not a pair" arg))
-        ((not (markup-function? (car arg)))
-         (throw 'markup-format "Not a markup function " (car arg)))
-        ((not (markup-argument-list? (markup-command-signature (car arg))
-                                     (cdr arg)))
-         (throw 'markup-format "Arguments failed  typecheck for " arg)))
-  #t)
-
-;;
-;; good enough if you only  use make-XXX-markup functions.
-;; 
-(define (cheap-markup? x)
-  (or (string? x)
-      (and (pair? x)
-           (markup-function? (car x)))))
-
-;;
-;; replace by markup-thrower-typecheck for more detailed diagnostics.
-;; 
-(define-public markup? cheap-markup?)
-
-;; utility
-
-(define (markup-join markups sep)
-  "Return line-markup of MARKUPS, joining them with markup SEP"
-  (if (pair? markups)
-      (make-line-markup (list-insert-separator markups sep))
-      empty-markup))
-
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;; markup commands
-;; TODO:
-;; each markup function should have a doc string with
-;; syntax, description and example. 
-;;
-
-(define-public brew-new-markup-molecule Text_item::print)
-
-(define-public interpret-markup Text_item::interpret_markup)
-
-(def-markup-command (simple paper props str) (string?)
-  "A simple text-string; @code{\\markup @{ foo @}} is equivalent with
-@code{\\markup @{ \\simple #\"foo\" @}}.
-"
-  (interpret-markup paper props str))
-
-(define-public empty-markup (make-simple-markup ""))
-
-(define-public (stack-molecule-line space molecules)
-  (if (pair? molecules)
-      (if (pair? (cdr molecules))
-          (let* ((tail (stack-molecule-line  space (cdr molecules)))
-                 (head (car molecules))
-                 (xoff (+ space (cdr (ly:molecule-get-extent head X)))))
-            (ly:molecule-add head
-                             (ly:molecule-translate-axis tail xoff X)))
-          (car molecules))
-      '()))
-
-(def-markup-command (line paper props markps) (markup-list?)
-  "A horizontal line of markups. Syntax:
-\\line << MARKUPS >>
-"
-  (stack-molecule-line
-   (cdr (chain-assoc 'word-space props))
-   (map (lambda (m) (interpret-markup paper props m)) markps)))
-
-(def-markup-command (combine paper props m1 m2) (markup? markup?)
-  "Overstrike two markups."
-  (ly:molecule-add
-   (interpret-markup paper props m1)
-   (interpret-markup paper props m2)))
-
-(def-markup-command (finger paper props arg) (markup?)
-  (interpret-markup paper
-                    (cons '((font-size . -4) (font-family . number)) props)
-                    arg))
-
-(define-public (set-property-markup qualifier)
-  (lambda (paper props qualifier-val markp)
-    (interpret-markup paper
-                      (cons (cons `(,qualifier . ,qualifier-val) (car props)) (cdr props))
-                      markp)))
-
-(def-markup-command fontsize (number? markup?)
-  (set-property-markup 'font-size))
-
-(def-markup-command magnify (number? markup?)
-  (set-property-markup 'font-magnification))
-
-(define (font-markup qualifier value)
-  (lambda (paper props markp)
-    (interpret-markup paper
-                      (cons (cons `(,qualifier . ,value) (car props)) (cdr props))
-                      markp)))
-
-(def-markup-command bold (markup?)
-  (font-markup 'font-series 'bold))
-
-(def-markup-command sans (markup?)
-  (font-markup 'font-family 'sans))
-
-(def-markup-command number (markup?)
-  (font-markup 'font-family 'number))
-
-(def-markup-command roman (markup?)
-  (font-markup 'font-family 'roman))
-
-(def-markup-command huge (markup?)
-  (font-markup 'font-size 2))
-
-(def-markup-command large (markup?)
-  (font-markup 'font-size 1))
-
-(def-markup-command normalsize (markup?)
-  (font-markup 'font-size 0))
-
-(def-markup-command small (markup?)
-  (font-markup 'font-size -1))
-
-(def-markup-command tiny (markup?)
-  (font-markup 'font-size -2))
-
-(def-markup-command teeny (markup?)
-  (font-markup 'font-size -3))
-
-(def-markup-command dynamic (markup?)
-  (font-markup 'font-family 'dynamic))
-
-(def-markup-command italic (markup?)
-  (font-markup 'font-shape 'italic))
-
-(def-markup-command typewriter (markup?)
-  (font-markup 'font-family 'typewriter))
-
-(def-markup-command (doublesharp paper props) ()
-  (interpret-markup paper props (markup #:musicglyph "accidentals-4")))
-(def-markup-command (threeqsharp paper props) ()
-  (interpret-markup paper props (markup #:musicglyph "accidentals-3")))
-(def-markup-command (sharp paper props) ()
-  (interpret-markup paper props (markup #:musicglyph "accidentals-2")))
-(def-markup-command (semisharp paper props) ()
-  (interpret-markup paper props (markup #:musicglyph "accidentals-1")))
-(def-markup-command (natural paper props) ()
-  (interpret-markup paper props (markup #:musicglyph "accidentals-0")))
-(def-markup-command (semiflat paper props) ()
-  (interpret-markup paper props (markup #:musicglyph "accidentals--1")))
-(def-markup-command (flat paper props) ()
-  (interpret-markup paper props (markup #:musicglyph "accidentals--2")))
-(def-markup-command (threeqflat paper props) ()
-  (interpret-markup paper props (markup #:musicglyph "accidentals--3")))
-(def-markup-command (doubleflat paper props) ()
-  (interpret-markup paper props (markup #:musicglyph "accidentals--4")))
-
-
-(def-markup-command (column paper props mrkups) (markup-list?)
-  (stack-lines
-   -1 0.0 (cdr (chain-assoc 'baseline-skip props))
-   (map (lambda (m) (interpret-markup paper props m)) mrkups)))
-
-(def-markup-command (dir-column paper props mrkups) (markup-list?)
-  "Make a column of args, going up or down, depending on the setting
-of the #'direction layout property."
-  (let* ((dir (cdr (chain-assoc 'direction props))))
-    (stack-lines
-     (if (number? dir) dir -1)
-     0.0
-     (cdr (chain-assoc 'baseline-skip props))
-     (map (lambda (x) (interpret-markup paper props x)) mrkups))))
-
-(def-markup-command (center paper props mrkups) (markup-list?)
-  (let* ((mols (map (lambda (x) (interpret-markup paper props x)) mrkups))
-         (cmols (map (lambda (x) (ly:molecule-align-to! x X CENTER)) mols)))
-    (stack-lines -1 0.0 (cdr (chain-assoc 'baseline-skip props)) mols)))
-
-(def-markup-command (right-align paper props mrkup) (markup?)
-  (let* ((m (interpret-markup paper props mrkup)))
-    (ly:molecule-align-to! m X RIGHT)
-    m))
-
-(def-markup-command (left-align paper props mrkup) (markup?)
-  (let* ((m (interpret-markup paper props mrkup)))
-    (ly:molecule-align-to! m X LEFT)
-    m))
-
-(def-markup-command (halign paper props dir mrkup) (number? markup?)
-  "Set horizontal alignment. Syntax: halign A MARKUP. A=-1 is LEFT,
-A=1 is right, values in between vary alignment accordingly."
-  (let* ((m (interpret-markup paper props mrkup)))
-    (ly:molecule-align-to! m X dir)
-    m))
-
-(def-markup-command (musicglyph paper props glyph-name) (string?)
-  (ly:find-glyph-by-name
-   (ly:paper-get-font paper (cons '((font-name . ())
-                                    (font-shape . *)
-                                    (font-series . *)
-                                    (font-family . music))
-                                  props))
-   glyph-name))
-
-
-(def-markup-command (lookup paper props glyph-name) (string?)
-  "Lookup a glyph by name."
-  (ly:find-glyph-by-name (ly:paper-get-font paper props)
-                         glyph-name))
-
-(def-markup-command (char paper props num) (integer?)
-  "Syntax: \\char NUMBER. "
-  (ly:get-glyph (ly:paper-get-font paper props) num))
-
-(def-markup-command (raise paper props amount mrkup) (number? markup?)
-  "Syntax: \\raise AMOUNT MARKUP. "
-  (ly:molecule-translate-axis (interpret-markup paper props mrkup)
-                              amount Y))
-
-(def-markup-command (fraction paper props mrkup1 mrkup2) (markup? markup?)
-  "Make a fraction of two markups.
-
-Syntax: \\fraction MARKUP1 MARKUP2."
-  (let* ((m1 (interpret-markup paper props mrkup1))
-         (m2 (interpret-markup paper props mrkup2)))
-    (ly:molecule-align-to! m1 X CENTER)
-    (ly:molecule-align-to! m2 X CENTER)    
-    (let* ((x1 (ly:molecule-get-extent m1 X))
-           (x2 (ly:molecule-get-extent m2 X))
-           (line (ly:round-filled-box (interval-union x1 x2) '(-0.05 . 0.05) 0.0))
-           ;; should stack mols separately, to maintain LINE on baseline
-           (stack (stack-lines -1 0.2 0.6 (list m1 line m2))))
-      (ly:molecule-align-to! stack Y CENTER)
-      (ly:molecule-align-to! stack X LEFT)
-      ;; should have EX dimension
-      ;; empirical anyway
-      (ly:molecule-translate-axis stack 0.75 Y))))
-
-
-;; TODO: better syntax.
-
-(def-markup-command (note-by-number paper props log dot-count dir) (number? number? number?)
-  "Syntax: \\note-by-number #LOG #DOTS #DIR.  By using fractional values
-for DIR, you can obtain longer or shorter stems."
-  (let* ((font (ly:paper-get-font paper (cons '((font-family .  music)) props)))
-         (stemlen (max 3 (- log 1)))
-         (headgl (ly:find-glyph-by-name
-                  font
-                  (string-append "noteheads-" (number->string (min log 2)))))
-         (stemth 0.13)
-         (stemy (* dir stemlen))
-         (attachx (if (> dir 0)
-                      (- (cdr (ly:molecule-get-extent headgl X)) stemth)
-                      0))
-         (attachy (* dir 0.28))
-         (stemgl (and (> log 0)
-                      (ly:round-filled-box
-                       (cons attachx (+ attachx  stemth))
-                       (cons (min stemy attachy)
-                             (max stemy attachy))
-                       (/ stemth 3))))
-         (dot (ly:find-glyph-by-name font "dots-dot"))
-         (dotwid (interval-length (ly:molecule-get-extent dot X)))
-         (dots (and (> dot-count 0)
-                    (apply ly:molecule-add
-                           (map (lambda (x)
-                                  (ly:molecule-translate-axis
-                                   dot  (* (+ 1 (* 2 x)) dotwid) X) )
-                                (iota dot-count 1)))))
-         (flaggl (and (> log 2)
-                      (ly:molecule-translate
-                       (ly:find-glyph-by-name font
-                                              (string-append "flags-"
-                                                             (if (> dir 0) "u" "d")
-                                                             (number->string log)))
-                       (cons (+ attachx (/ stemth 2)) stemy)))))
-    (if flaggl
-        (set! stemgl (ly:molecule-add flaggl stemgl)))
-    (if (ly:molecule? stemgl)
-        (set! stemgl (ly:molecule-add stemgl headgl))
-        (set! stemgl headgl))
-    (if (ly:molecule? dots)
-        (set! stemgl
-              (ly:molecule-add
-               (ly:molecule-translate-axis dots
-                                           (+ (if (and (> dir 0) (> log 2))
-                                                  (* 1.5 dotwid)
-                                                  0)
-                                              ;; huh ? why not necessary?
-                                              ;;(cdr (ly:molecule-get-extent headgl X))
-                                              dotwid)
-                                           X)
-               stemgl)))
-    stemgl))
-
-(use-modules (ice-9 regex))
-
-(define-public log2 
-  (let ((divisor (log 2)))
-    (lambda (z) (inexact->exact (/ (log z) divisor)))))
-
-(define (parse-simple-duration duration-string)
-  "Parse the `duration-string', eg ''4..'' or ''breve.'', and return a (log dots) list."
-  (let ((match (regexp-exec (make-regexp "(breve|longa|maxima|[0-9]+)(\\.*)") duration-string)))
-    (if (and match (string=? duration-string (match:substring match 0)))
-        (let ((len  (match:substring match 1))
-              (dots (match:substring match 2)))
-          (list (cond ((string=? len "breve")  -1)
-                      ((string=? len "longa")  -2)
-                      ((string=? len "maxima") -3)
-                      (else (log2 (string->number len))))
-                (if dots (string-length dots) 0)))
-        (error "This is not a valid duration string:" duration-string))))
-
-(def-markup-command (note paper props duration-string dir) (string? number?)
-  "This produces a note with a stem pointing in @var{dir} direction, with
-the @var{duration} for the note head type and augmentation dots. For
-example, @code{\note #\"4.\" #-0.75} creates a dotted quarter note, with
-a shortened down stem."
-  (let ((parsed (parse-simple-duration duration-string)))
-    (note-by-number-markup paper props (car parsed) (cadr parsed) dir)))
-
-(def-markup-command (normal-size-super paper props mrkup) (markup?)
-  (ly:molecule-translate-axis (interpret-markup
-                               paper
-                               props mrkup)
-                              (* 0.5 (cdr (chain-assoc 'baseline-skip props)))
-                              Y))
-
-(def-markup-command (super paper props mrkup) (markup?)
-  "Syntax: \\super MARKUP. "
-  (ly:molecule-translate-axis
-   (interpret-markup
-    paper
-    (cons `((font-size . ,(- (chain-assoc-get 'font-size props 0) 3))) props)
-    mrkup)
-   (* 0.5 (cdr (chain-assoc 'baseline-skip props)))
-   Y))
-
-(def-markup-command (translate paper props offset mrkup) (number-pair? markup?)
-  "Syntax: \\translate OFFSET MARKUP. "
-  (ly:molecule-translate (interpret-markup  paper props mrkup)
-                         offset))
-
-(def-markup-command (sub paper props mrkup) (markup?)
-  "Syntax: \\sub MARKUP."
-  (ly:molecule-translate-axis
-   (interpret-markup
-    paper
-    (cons `((font-size . ,(- (chain-assoc-get 'font-size props 0) 3))) props)
-    mrkup)
-   (* -0.5 (cdr (chain-assoc 'baseline-skip props)))
-   Y))
-
-(def-markup-command (normal-size-sub paper props mrkup) (markup?)
-  (ly:molecule-translate-axis
-   (interpret-markup paper props mrkup)
-   (* -0.5 (cdr (chain-assoc 'baseline-skip props)))
-   Y))
-
-(def-markup-command (hbracket paper props mrkup) (markup?)
-  "Horizontal brackets around its single argument. Syntax \\hbracket MARKUP."  
-  (let ((th 0.1) ;; todo: take from GROB.
-        (m (interpret-markup paper props mrkup)))
-    (bracketify-molecule m X th (* 2.5 th) th)))
-
-(def-markup-command (bracket paper props mrkup) (markup?)
-  "Vertical brackets around its single argument. Syntax \\bracket MARKUP."  
-  (let ((th 0.1) ;; todo: take from GROB.
-        (m (interpret-markup paper props mrkup)))
-    (bracketify-molecule m Y th (* 2.5 th) th)))
-
-;; todo: fix negative space
-(def-markup-command (hspace paper props amount) (number?)
-  "Syntax: \\hspace NUMBER."
-  (if (> amount 0)
-      (ly:make-molecule "" (cons 0 amount) '(-1 . 1) )
-      (ly:make-molecule "" (cons amount amount) '(-1 . 1))))
-
-(def-markup-command (override paper props new-prop mrkup) (pair? markup?)
-  "Add the first argument in to the property list.  Properties may be
-any sort of property supported by @ref{font-interface} and
-@ref{text-interface}, for example
-
-\\override #'(font-family . married) \"bla\"
-"
-  (interpret-markup paper (cons (list new-prop) props) mrkup))
-
-(def-markup-command (smaller paper props mrkup) (markup?)
-  "Syntax: \\smaller MARKUP"
-  (let* ((fs (chain-assoc-get 'font-size props 0))
-         (entry (cons 'font-size (- fs 1))))
-    (interpret-markup paper (cons (list entry) props) mrkup)))
-
-
-(def-markup-command (bigger paper props mrkup) (markup?)
-  "Syntax: \\bigger MARKUP"
-  (let* ((fs (chain-assoc-get 'font-size props 0))
-         (entry (cons 'font-size (+ fs 1))))
-    (interpret-markup paper (cons (list entry) props) mrkup)))
-
-(def-markup-command larger (markup?)
-  bigger-markup)
-
-(def-markup-command (box paper props mrkup) (markup?)
-  "Syntax: \\box MARKUP"
-  (let ((th 0.1)
-        (pad 0.2)
-        (m (interpret-markup paper props mrkup)))
-    (box-molecule m th pad)))
-
-(def-markup-command (strut paper props) ()
-  "Syntax: \\strut
-
- A box of the same height as the space.
-"
-  (let ((m (Text_item::interpret_markup paper props " ")))
-    (ly:molecule-set-extent! m X '(1000 . -1000))
-    m))
-
-(define number->mark-letter-vector (make-vector 25 #\A))
-
-(do ((i 0 (1+ i))
-     (j 0 (1+ j)))
-    ((>= i 26))
-  (if (= i (- (char->integer #\I) (char->integer #\A)))
-      (set! i (1+ i)))
-  (vector-set! number->mark-letter-vector j
-               (integer->char (+ i (char->integer #\A)))))
-
-(define (number->markletter-string n)
-  "Double letters for big marks."
-  (let*
-      ((l (vector-length number->mark-letter-vector)))
-    
-  (if (>= n l)
-      (string-append (number->markletter-string (1- (quotient n l)))
-                     (number->markletter-string (remainder n l)))
-      (make-string 1 (vector-ref number->mark-letter-vector n)))))
-
-
-(def-markup-command (markletter paper props num) (number?)
-  "Markup letters: skip I and do double letters for big marks.
-Syntax: \\markletter #25"
-  (Text_item::interpret_markup paper props (number->markletter-string num)))
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-
-(if #f
-    (define (typecheck-with-error x)
-      (catch
-       'markup-format
-       (lambda () (markup? x))
-       (lambda (key message arg)
-         (display "\nERROR: markup format error: \n")
-         (display message)
-         (newline)
-         (write arg (current-output-port))))))
-
-;; test make-foo-markup functions
-(if #f
-    (begin
-      (newline)
-      (newline)
-      (display (make-line-markup (list (make-simple-markup "FOO"))))
-      
-      (make-line-markup (make-simple-markup "FOO"))
-      (make-line-markup (make-simple-markup "FOO") (make-simple-markup "foo"))
-      (make-raise-markup "foo" (make-simple-markup "foo"))))
-
-;;
-;; test typecheckers. Not wholly useful, because errors are detected
-;; in other places than they're made.
-;;
-(if #f
-    (begin
-      ;; To get error messages, see above to install the alternate
-      ;; typecheck routine for markup?.
-      (display (typecheck-with-error `(,simple-markup "foobar")))
-      (display (typecheck-with-error `(,simple-markup "foobar")))
-      (display (typecheck-with-error `(,simple-markup 1)))
-      (display
-       (typecheck-with-error `(,line-markup ((,simple-markup "foobar"))
-                                            (,simple-markup 1))))
-      (display
-       (typecheck-with-error `(,line-markup (,simple-markup "foobar")
-                                            (,simple-markup "bla"))))))
diff --git a/scm/output-lib.scm b/scm/output-lib.scm
deleted file mode 100644
index 2809f56707..0000000000
--- a/scm/output-lib.scm
+++ /dev/null
@@ -1,261 +0,0 @@
-;;;; output-lib.scm -- implement Scheme output helper functions
-;;;;
-;;;;  source file of the GNU LilyPond music typesetter
-;;;; 
-;;;; (c)  1998--2004 Jan Nieuwenhuizen <janneke@gnu.org>
-;;;; Han-Wen Nienhuys <hanwen@cs.uu.nl>
-
-; Tablature functions, by Jiba (jiba@tuxfamily.org)
-
-; The TabNoteHead stem attachment function.
-(define (tablature-stem-attachment-function style duration)
-  (cons 0.0 0.5))
-
-; The TabNoteHead molecule callback.
-; Create a text molecule
-(define-public (tablature-print-function grob)
-  (let ((molecule (fontify-text
-                   (ly:get-default-font grob)
-                   (ly:get-grob-property grob 'text)
-                   )))
-    molecule ; return the molecule.
-    ))
-
-; The TabNoteHead tablatureFormat callback.
-; Compute the text grob-property
-(define-public (fret-number-tablature-format string tuning pitch)
-  (number->string
-   (- (ly:pitch-semitones pitch)
-      (list-ref tuning
-                (- string 1) ; remove 1 because list index starts at 0 and guitar string at 1.
-                )
-      ) ) ) 
-
-(define-public (hammer-print-function grob)
-  (let* ((note-collums (ly:get-grob-property grob 'note-columns))
-         (note-column1 (cadr note-collums))
-         (note-column2 (car  note-collums))
-         (note1        (car (ly:get-grob-property note-column1 'note-heads)))
-         (note2        (car (ly:get-grob-property note-column2 'note-heads)))
-	 (text1  (ly:get-grob-property note1 'text))
-	 (text2  (ly:get-grob-property note2 'text))
-         (fret1        (if (string? text1) (string->number text1) 0))
-         (fret2        (if (string? text2) (string->number text2) 0))
-         (letter       (cond
-			((< fret1 fret2) "H")
-			((> fret1 fret2) "P")
-			(else "")))
-                                   
-         )
-    (let ((slur (Slur::print grob))
-          (text (fontify-text (ly:get-default-font grob) letter)))
-    
-      (let ((x (/ (- (cdr (ly:molecule-get-extent slur 0)) 
-                     (/ (cdr (ly:molecule-get-extent text 0)) 2.0)
-                     )
-                  -2.0)))
-      
-        (ly:molecule-set-extent! text 0 (cons x x))
-        (ly:molecule-align-to! text 0 1)
-        )
-
-      (ly:molecule-combine-at-edge slur 1 1 text -0.6)
-      ) ) )
-
-
-
-(define-public guitar-tunings '(4 -1 -5 -10 -15 -20))
-
-; end of tablature functions
-
-
-(define-public (make-molecule-boxer line-thick x-padding y-padding callback)
-   "Makes a routine that adds a box around the grob parsed as argument"
-  (define (molecule-boxer grob)
-  (let*
-   (
-    (mol    (callback grob))
-    (x-ext (interval-widen (ly:molecule-get-extent mol 0) x-padding))
-    (y-ext (interval-widen (ly:molecule-get-extent mol 1) y-padding))
-    (x-rule (make-filled-box-molecule (interval-widen x-ext line-thick)
-                              (cons 0 line-thick)))
-    (y-rule (make-filled-box-molecule (cons 0 line-thick) y-ext))
-    )
-    
-    (set! mol (ly:molecule-combine-at-edge mol 0 1 y-rule x-padding))
-    (set! mol (ly:molecule-combine-at-edge mol 0 -1  y-rule x-padding))
-    (set! mol (ly:molecule-combine-at-edge mol 1 1  x-rule 0))  
-    (set! mol (ly:molecule-combine-at-edge mol 1 -1 x-rule 0))
-    
-    mol
- ))
- molecule-boxer
- )
-
-(define-public (arg->string arg)
-  (cond ((number? arg) (inexact->string arg 10))
-	((string? arg) (string-append "\"" arg "\""))
-	((symbol? arg) (string-append "\"" (symbol->string arg) "\""))))
-
-(define-public (func name . args)
-  (string-append
-   "(" name
-   (if (null? args)
-       ""
-       (apply string-append
-	      (map (lambda (x) (string-append " " (arg->string x))) args)))
-   ")\n"))
-
-;;(define (mm-to-pt x)
-;;  (* (/ 72.27 25.40) x))
-
-;; do nothing in .scm output
-(define-public (comment s) "")
-
-(define-public (numbers->string l)
-  (apply string-append (map ly:number->string l)))
-
-; (define (chop-decimal x) (if (< (abs x) 0.001) 0.0 x))
-
-(define (number->octal-string x)
-  (let* ((n (inexact->exact x))
-         (n64 (quotient n 64))
-         (n8 (quotient (- n (* n64 64)) 8)))
-    (string-append
-     (number->string n64)
-     (number->string n8)
-     (number->string (remainder (- n (+ (* n64 64) (* n8 8))) 8)))))
-
-(define-public (inexact->string x radix)
-  (let ((n (inexact->exact x)))
-    (number->string n radix)))
-
-
-(define-public (number-pair->string c)
-  (string-append (ly:number->string (car c)) " "
-		 (ly:number->string (cdr c)) " "))
-
-(define (font i)
-  (string-append
-   "font"
-   (make-string 1 (integer->char (+ (char->integer #\A) i)))))
-
-(define (scm-scm action-name)
-  1)
-
-
-;; silly, use alist? 
-(define-public (find-notehead-symbol duration style)
-  (case style
-   ((xcircle) "2xcircle")
-   ((harmonic) "0harmonic")
-   ((baroque) 
-    ;; Oops, I actually would not call this "baroque", but, for
-    ;; backwards compatibility to 1.4, this is supposed to take
-    ;; brevis, longa and maxima from the neo-mensural font and all
-    ;; other note heads from the default font.  -- jr
-    (if (< duration 0)
-	(string-append (number->string duration) "neo_mensural")
-	(number->string duration)))
-   ((mensural)
-    (string-append (number->string duration) (symbol->string style)))
-   ((neo_mensural)
-    (string-append (number->string duration) (symbol->string style)))
-   ((default)
-    ;; The default font in mf/feta-bolletjes.mf defines a brevis, but
-    ;; neither a longa nor a maxima.  Hence let us, for the moment,
-    ;; take these from the neo-mensural font.  TODO: mf/feta-bolletjes
-    ;; should define at least a longa for the default font.  The longa
-    ;; should look exactly like the brevis of the default font, but
-    ;; with a stem exactly like that of the quarter note. -- jr
-    (if (< duration -1)
-	(string-append (number->string duration) "neo_mensural")
-	(number->string duration)))
-   (else
-    (if (string-match "vaticana*|hufnagel*|medicaea*" (symbol->string style))
-	(symbol->string style)
-	(string-append (number->string (max 0 duration))
-		       (symbol->string style))))))
-
-
-;; TODO junk completely?
-(define (note-head-style->attachment-coordinates grob axis)
-  "Return pair (X . Y), containing multipliers for the note head
-bounding box, where to attach the stem. e.g.: X==0 means horizontally
-centered, X==1 is at the right, X == -1 is at the left."
-
-   '(1.0 . 0.0))
-
-
-(define-public (string-encode-integer i)
-  (cond
-   ((= i  0) "o")
-   ((< i 0)   (string-append "n" (string-encode-integer (- i))))
-   (else (string-append
-	  (make-string 1 (integer->char (+ 65 (modulo i 26))))
-	  (string-encode-integer (quotient i 26))))))
-
-
-(define-public ((every-nth-bar-number-visible n) barnum) (= 0 (modulo barnum n)))
-
-(define-public ((modulo-bar-number-visible n m) barnum) (and (> barnum 1) (= m (modulo barnum n))))
-
-(define-public ((set-bar-number-visibility n) tr)
-  (let* ((bn (ly:get-context-property tr 'currentBarNumber)))
-   (ly:set-context-property! tr 'barNumberVisibility (modulo-bar-number-visible n (modulo bn n)))))
-
-(define-public (default-bar-number-visibility barnum) (> barnum 1))
-
-;; See documentation of Item::visibility_lambda_
-(define-public (begin-of-line-visible d) (if (= d 1) '(#f . #f) '(#t . #t)))
-(define-public (end-of-line-visible d) (if (= d -1) '(#f . #f) '(#t . #t)))
-(define-public (spanbar-begin-of-line-invisible d) (if (= d -1) '(#t . #t) '(#f . #f)))
-
-(define-public (all-visible d) '(#f . #f))
-(define-public (all-invisible d) '(#t . #t))
-(define-public (begin-of-line-invisible d) (if (= d 1) '(#t . #t) '(#f . #f)))
-(define-public (end-of-line-invisible d) (if (= d -1) '(#t . #t) '(#f . #f)))
-
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;; Bar lines.
-
-;
-; How should a  bar line behave at a break? 
-;
-;; Why prepend `default-' to every scm identifier?
-(define-public (default-break-barline glyph dir)
-   (let ((result (assoc glyph 
-			'((":|:" . (":|" . "|:"))
-			  ("||:" . ("||" . "|:"))
-			  ("|" . ("|" . ()))
-			  ("||:" . ("||" . "|:"))
-			  ("|s" . (() . "|"))
-			  ("|:" . ("|" . "|:"))
-			  ("|." . ("|." . ()))
-
-			  ;; hmm... should we end with a barline here?
-			  (".|" . ("|" . ".|"))
-			  (":|" . (":|" . ()))
-			  ("||" . ("||" . ()))
-			  (".|." . (".|." . ()))
-			  ("" . ("" . ""))
-			  (":" . (":" . ""))
-			  ("empty" . (() . ()))
-			  ("brace" . (() . "brace"))
-			  ("bracket" . (() . "bracket"))  
-			  )
-			)))
-
-     (if (equal? result #f)
-	 (ly:warn (string-append "Unknown bar glyph: `" glyph "'"))
-	 (index-cell (cdr result) dir))
-     ) )
-     
-
-
-(define-public (shift-right-at-line-begin g)
-  "Shift an item to the right, but only at the start of the line."
-  (if (and (ly:item? g)  (equal? (ly:item-break-dir g) RIGHT))
-      (ly:grob-translate-axis! g 3.5 X)
-  ))
diff --git a/scm/output-pdf.scm b/scm/output-pdf.scm
deleted file mode 100644
index 78cbe58677..0000000000
--- a/scm/output-pdf.scm
+++ /dev/null
@@ -1,270 +0,0 @@
-;;; pdf.scm -- implement Scheme output routines for PDF.
-;;;
-;;;  source file of the GNU LilyPond music typesetter
-;;; 
-;;; (c)  2001--2004 Stephen Peters <portnoy@portnoy.org>
-
-
-;currently no font commands; this is a helper for pdftex.scm.
-
-(define-module (scm output-pdf))
-
-
-
-(define this-module (current-module))
-
-(use-modules
- (guile)
- (lily))
-
-
-
-; simple commands to store and update currentpoint.  This makes the
-; other procedures simple rewrites of the PostScript code.
-
-(define currentpoint (cons 0 0))
-(define (showcp) 
-  (string-append (number-pair->string currentpoint) " "))
-(define (moveto x y)
-  (set! currentpoint (cons x y))
-  (string-append (showcp) "m "))
-(define (moveto-pair pair)
-  (moveto (car pair) (cdr pair)))
-(define (rmoveto x y)
-  (moveto (+ x (car currentpoint)) (+ y (cdr currentpoint))))
-(define (lineto x y)
-  (set! currentpoint (cons x y))
-  (string-append (showcp) "l "))
-(define (lineto-pair pair)
-  (lineto (car pair) (cdr pair)))
-(define (rlineto x y)
-  (lineto (+ x (car currentpoint)) (+ y (cdr currentpoint))))
-(define (curveto x1 y1 x2 y2 x y)
-  (set! currentpoint (cons x y))
-  (string-append (ly:number->string x1) (ly:number->string y1)
-		 (ly:number->string x2) (ly:number->string y2)
-		 (ly:number->string x) (ly:number->string y) "c "))
-(define (curveto-pairs pt1 pt2 pt)
-  (curveto (car pt1) (cdr pt1) (car pt2) (cdr pt2) (car pt) (cdr pt)))
-(define (closefill) "h f ")
-(define (closestroke) "S ")
-(define (setlinewidth w) (string-append (ly:number->string w) "w "))
-(define (setgray g) (string-append (ly:number->string g) "g "))
-(define (setlineparams) "1 j 1 J ")
-
-(define (beam width slope thick blot)
-  (let ((ht (* slope width)))
-    (string-append (moveto 0 (- (/ thick 2)))
-		   (rlineto width ht)
-		   (rlineto 0 thick)
-		   (lineto 0 (/ thick 2))
-		   (closefill))))
-
-(define (comment s) 
-  (string-append "% " s "\n"))
-
-(define (brack-traject pair ds alpha)
-  (let ((alpha-rad (* alpha (/ 3.141592654 180))))
-    (cons (+ (car pair) (* (cos alpha-rad) ds))
-	  (+ (cdr pair) (* (sin alpha-rad) ds)))))
-
-(define (bracket arch_angle arch_width arch_height height arch_thick thick)
-  (let* ((halfht (+ (/ height 2) thick))
-	 (farpt (cons (+ thick arch_height) 
-		      (+ (- halfht arch_thick) arch_width)))
-	 (halfbrack 
-	  (string-append (moveto 0 0)
-			 (lineto thick 0)
-			 (lineto thick (- halfht arch_thick))
-			 (curveto-pairs
-			  (brack-traject (cons thick 
-					       (- halfht arch_thick))
-					 (* 0.4 arch_height) 0)
-			  (brack-traject farpt 
-					 (* -0.25 arch_height) 
-					 arch_angle)
-			  farpt)
-			 (curveto-pairs 
-			  (brack-traject farpt
-					 (* -0.15 arch_height)
-					 arch_angle)
-			  (brack-traject (cons (/ thick 2) halfht)
-					 (/ arch_height 2) 0)
-			  (cons 0 halfht))
-			 (lineto 0 0)
-			 (closefill))))
-    (string-append (setlinewidth (/ thick 2))
-		   (setlineparams)
-		   "q 1 0 0 -1 0 0 cm " ; flip coords
-		   halfbrack
-		   "Q " ; grestore
-		   halfbrack)))
-
-(define (char i)
-  (invoke-char " show" i))
-
-
-(define (dashed-slur thick dash l)
-  (string-append (setlineparams)
-		 "[ " (ly:number->string dash) " "
-		 (ly:number->string (* 10 thick)) " ] 0 d "
-		 (setlinewidth thick)
-		 (moveto-pair (car l))
-		 (apply curveto (cdr l))
-		 (closestroke)))
-
-(define (dashed-line thick on off dx dy)
-  (string-append (setlineparams)
-		 "[ " (ly:number->string on) " "
-		 (ly:number->string off) " ] 0 d "
-		 (setlinewidth thick)
-		 (moveto 0 0)
-		 (lineto dx dy)
-		 (closestroke)))
-
-(define (repeat-slash width slope beamthick)
-  (let* ((height (/ beamthick slope))
-	 (xwid (sqrt (+ (* beamthick beamthick) (* height height)))))
-    (string-append (moveto 0 0)
-		   (rlineto xwid 0)
-		   (rlineto width (* slope width))
-		   (rlineto (- xwid) 0)
-		   (closefill))))
-
-(define (end-output) "")
-
-(define (experimental-on) "")
-
-(define (filledbox breadth width depth height) 
-  (string-append (ly:number->string (- breadth))
-		 (ly:number->string (- depth))
-		 (ly:number->string (+ breadth width))
-		 (ly:number->string (+ depth height))
-		 " re f "))
-
-(define (round-filled-box breadth width depth height blotdiam)
-  (let* ((rad (/ blotdiam 2))
- 	 (h (- height rad))
- 	 (d (- depth rad))
- 	 (w (- width rad))
- 	 (b (- breadth rad)))
-    (string-append " 0 J "
- 		   (setlinewidth blotdiam)
- 		   "1 j "
- 		   (moveto (- b) (- d))
- 		   (rlineto (+ b w) 0)
- 		   (rlineto 0 (+ d h))
- 		   (rlineto (- (+ b w)) 0)
- 		   (rlineto 0 (- (+ d h)))
- 		   "b ")))
-
-;; PDF doesn't have the nifty arc operator.  This uses a fast
-;; approximation with two curves.  It bulges out a bit more than a
-;; true circle should along the 45 degree axes, but most users won't
-;; notice.
-(define (dot x y radius)
-  (string-append (moveto (- x radius) y)
- 		 (curveto (- x radius) (+ y (* 1.3333 radius))
- 			  (+ x radius) (+ y (* 1.3333 radius))
- 			  (+ x radius) y)
- 		 (curveto (+ x radius) (- y (* 1.3333 radius))
- 			  (- x radius) (- y (* 1.3333 radius))
- 			  (- x radius) y)
- 		 "f "))
-
-
-(define (round-filled-box breadth width depth height blot) 
-  (filledbox breadth width depth height))
-
-(define (font-def i s) "")
-
-(define (font-switch i) "")
-
-(define (header-end) "")
-
-(define (lily-def key val) "")
-
-(define (header creator generate) "")
-
-(define (invoke-char s i)
-  (string-append 
-   "(\\" (inexact->string i 8) ") " s " " ))
-
-(define (placebox x y s) "")
-
-(define (bezier-sandwich l thick)
-  (string-append (setlinewidth thick)
-		 (moveto-pair (list-ref l 7))
-		 (curveto-pairs (list-ref l 4)
-				(list-ref l 5)
-				(list-ref l 6))
-		 (lineto-pair (list-ref l 3))
-		 (curveto-pairs (list-ref l 0)
-				(list-ref l 1)
-				(list-ref l 2))
-		 "B "
-		 (bezier-ending (list-ref l 3) (list-ref l 0) (list-ref l 5))
-		 (bezier-ending (list-ref l 7) (list-ref l 0) (list-ref l 5))))
-
-(define (bezier-ending z0 z1 z2)
-  (let ((x0 (car z0))
-	(y0 (cdr z0))
-	(x1 (car z1))
-	(y1 (cdr z1))
-	(x2 (car z2))
-	(y2 (cdr z2)))
-    (dot x0 y0 
-	 (/ (sqrt (+ (* (- x1 x2) (- x1 x2)) 
-		     (* (- y1 y2) (- y1 y2)))) 2))))
-
-
-(define (start-system width height) "")
-
-(define (stem breadth width depth height) 
-  (filledbox breadth width depth height))
-
-(define (stop-system) "")
-
-(define (text s) "")
-
-(define (polygon points blotdiameter) "") ;; TODO
-
-(define (draw-line thick fx fy tx ty)
-  (string-append (setlineparams)
-		 (setlinewidth thick)
-		 (moveto fx fy)
-		 (lineto tx ty)
-		 "S "))
-
-(define (unknown) "\n unknown\n")
-
-; Problem here -- we're using /F18 for the font, but we don't know 
-; for sure that that will exist.
-
-(define (ez-ball ch letter-col ball-col)
-  (let ((origin (cons 0.45 0)))
-    (string-append (setgray 0)
-		   (setlinewidth 1.1)
-		   (moveto-pair origin) (lineto-pair origin)
-		   (closestroke)
-		   (setgray ball-col)
-		   (setlinewidth 0.9)
-		   (moveto-pair origin) (lineto-pair origin)
-		   (closestroke)
-		   (setgray letter-col)
-		   (moveto-pair origin)
-		   "BT "
-		   "/F18 0.85 Tf "
-		   "-0.28 -0.30 Td " ; move for text block
-		   "[(" ch ")] TJ ET ")))
-
-(define (define-origin a b c ) "")
-(define (no-origin) "")
-
-(define-public (pdf-output-expression expr port)
-  (display (eval expr this-module) port) )
-
-
-; Local Variables:
-; scheme-program-name: "guile"
-; End:
diff --git a/scm/output-pdftex.scm b/scm/output-pdftex.scm
deleted file mode 100644
index 6f38f6b873..0000000000
--- a/scm/output-pdftex.scm
+++ /dev/null
@@ -1,254 +0,0 @@
-;;; pdftex.scm -- implement Scheme output routines for PDFTeX
-;;;
-;;;  source file of the GNU LilyPond music typesetter
-;;;  modified from the existing tex.scm
-;;; 
-;;; (c)  1998--2004 Jan Nieuwenhuizen <janneke@gnu.org>
-;;; Han-Wen Nienhuys <hanwen@cs.uu.nl>
-;;; Stephen Peters <portnoy@portnoy.org>
-
-
-;; TODO: port this  to the new module framework.
-
-(define-module (scm output-pdftex))
-
-(use-modules (scm output-pdf)
-	     (guile)
-	     (ice-9 regex)
-	     (ice-9 string-fun)
-	     (lily))
-
-(define font-name-alist  '())
-
-(define this-module (current-module))
-(define (unknown) 
-  "%\n\\unknown\n")
-
-
-(define (select-font name-mag-pair)
-  (let*
-      (
-       (c (assoc name-mag-pair font-name-alist))
-       )
-
-    (if (eq? c #f)
-	(begin
-	  (display "FAILED\n")
-	  (display (object-type (car name-mag-pair)))
-	  (display (object-type (caaar font-name-alist)))
-
-	  (ly:warn (string-append
-		    "Programming error: No such font known "
-		    (car name-mag-pair) " "
-		    (ly:number->string (cdr name-mag-pair))
-		    ))
-	  "") ; issue no command
-	(string-append "\\" (cddr c)))
-    
-    
-    ))
-
-(define (beam width slope thick blot)
-  (embedded-pdf (list 'beam  width slope thick blot)))
-
-(define (bracket arch_angle arch_width arch_height height arch_thick thick)
-  (embedded-pdf (list 'bracket  arch_angle arch_width arch_height height arch_thick thick)))
-
-(define (dashed-slur thick dash l)
-  (embedded-pdf (list 'dashed-slur   thick dash l)))
-
-(define (char i)
-  (string-append "\\char" (inexact->string i 10) " "))
-
-(define (dashed-line thick on off dx dy)
-  (embedded-pdf (list 'dashed-line  thick on off dx dy)))
-
-(define (font-load-command name-mag command)
-  (string-append
-   "\\font\\" command "="
-   (car name-mag)
-   " scaled "
-   (ly:number->string (inexact->exact (* 1000  (cdr name-mag))))
-   "\n"))
-
-(define (ez-ball c l b)
-  (embedded-pdf (list 'ez-ball  c  l b)))
-
-(define (header-to-file fn key val)
-  (set! key (symbol->string key))
-  (if (not (equal? "-" fn))
-      (set! fn (string-append fn "." key))
-      )
-  (display
-   (format "writing header field `~a' to `~a'..."
- 	   key
- 	   (if (equal? "-" fn) "<stdout>" fn)
- 	   )
-   (current-error-port))
-  (if (equal? fn "-")
-      (display val)
-      (display val (open-file fn "w"))
-      )
-  (display "\n" (current-error-port))
-  ""
-  )
-
-(define (embedded-pdf expr)
-  (let
-      ((os (open-output-string)))
-    (pdf-output-expression expr os)
-    (string-append "\\embeddedpdf{" (get-output-string os) "}")))
-
-
-(define (comment s)
-  (simple-format #f "% ~a\n" s))
-
-(define (end-output) 
-  (begin
-					; uncomment for some stats about lily memory	  
-					;		(display (gc-stats))
-    (string-append "%\n\\lilypondend\n"
-					; Put GC stats here.
-		   )))
-
-(define (experimental-on)
-  "")
-
-(define (repeat-slash w a t)
-  (embedded-pdf (list 'repeat-slash w a t)))
-(define (fontify name-mag-pair exp)
-  (string-append (select-font name-mag-pair)
-		 exp))
-
-
-(define (tex-encoded-fontswitch name-mag)
-  (let* ((iname-mag (car name-mag))
-	 (ename-mag (cdr name-mag)))
-    (cons iname-mag
-	  (cons ename-mag
-		(string-append  "magfont"
-			  (string-encode-integer
-			   (hashq (car ename-mag) 1000000))
-			  "m"
-			  (string-encode-integer
-			   (inexact->exact (* 1000 (cdr ename-mag)))))))))
-(define (define-fonts internal-external-name-mag-pairs)
-  (set! font-name-alist (map tex-encoded-fontswitch
-			     internal-external-name-mag-pairs))
-  (apply string-append
-	 (map (lambda (x)
-		(font-load-command (car x) (cdr x)))
-	      (map cdr font-name-alist))))
-
-
-(define (font-switch i)
-  (string-append
-   "\\" (font i) "\n"))
-
-(define (font-def i s)
-  (string-append
-   "\\font" (font-switch i) "=" s "\n"))
-
-(define (header-end)
-  (string-append
-   "\\def\\lilyoutputscalefactor{"
-   (number->string (cond
-		    ((equal? (ly:unit) "mm") (/ 72.0  25.4))
-		    ((equal? (ly:unit) "pt") (/ 72.0  72.27))
-		    (else (error "unknown unit" (ly:unit)))
-		    ))
-   "}%\n"
-   "\\ifx\\lilypondstart\\undefined\n"
-   "  \\input lilyponddefs\n"
-   "\\fi\n"
-   "\\outputscale=\\lilypondpaperoutputscale \\lilypondpaperunit\n"
-   "\\lilypondpostscript\n"
-   "\\pdfcompresslevel=0"))
-
-;; Note: this string must match the string in lilypond.py!!!
-(define (header creator generate) 
-  (string-append
-   "% Generated automatically by: " creator generate "\n"))
-
-(define (invoke-char s i)
-  (string-append 
-   "\n\\" s "{" (inexact->string i 10) "}" ))
-
-;;
-;; need to do something to make this really safe.
-;;
-(define (output-tex-string s)
-  (if security-paranoia
-      (regexp-substitute/global #f "\\\\" s 'pre "$\\backslash$" 'post)
-      s))
-
-(define (lily-def key val)
-  (let ((tex-key
-	 (regexp-substitute/global 
-	      #f "_" (output-tex-string key) 'pre "X" 'post))
-	(tex-val (output-tex-string val)))
-    (if (equal? (sans-surrounding-whitespace tex-val) "")
-	(string-append "\\let\\" tex-key "\\undefined\n")
-	(string-append "\\def\\" tex-key "{" tex-val "}%\n"))))
-
-(define (number->dim x)
-  (string-append
-   ;;ugh ly:* in backend needs compatibility func for standalone output
-   (ly:number->string x) " \\outputscale "))
-
-(define (placebox x y s) 
-  (string-append "\\lyitem{"
-		 (ly:number->string y) "}{"
-		 (ly:number->string x) "}{"
-		 s "}%\n"))
-
-(define (bezier-sandwich l thick)
-  (embedded-pdf (list 'bezier-sandwich  `(quote ,l) thick)))
-
-(define (start-system wd ht)
-  (string-append "\\leavevmode\n"
-		 "\\scoreshift = " (number->dim (* ht 0.5)) "\n"
-		 "\\lilypondifundefined{lilypondscoreshift}%\n"
-		 "  {}%\n"
-		 "  {\\advance\\scoreshift by -\\lilypondscoreshift}%\n"
-		 "\\lybox{"
-		 (ly:number->string wd) "}{"
-		 (ly:number->string ht) "}{%\n"))
-
-(define (stop-system) 
-  "}%\n%\n\\interscoreline\n%\n")
-(define (stop-last-system)
-  "}%\n")
-
-(define (filledbox breapth width depth height) 
-  (string-append "\\lyvrule{"
-		 (ly:number->string (- breapth)) "}{"
-		 (ly:number->string (+ breapth width)) "}{"
-		 (ly:number->string depth) "}{"
-		 (ly:number->string height) "}"))
-
-(define (round-filled-box x y width height blotdiam)
-  (embedded-pdf (list 'round-filled-box  x y width height blotdiam)))
-
-(define (text s)
-  (string-append "\\hbox{" (output-tex-string s) "}"))
-
-(define (draw-line thick fx fy tx ty)
-  (embedded-pdf (list 'draw-line thick fx fy tx ty)))
-
-(define (define-origin file line col)
-  (if (procedure? point-and-click)
-      (string-append "\\special{src:\\string:"
-		     (point-and-click line col file)
-		     "}" )
-      "")
-  )
-
-					; no-origin not supported in PDFTeX
-(define (no-origin) "")
-
-
-
-
-(define-public (pdftex-output-expression expr port)
-  (display (eval expr this-module) port) )
diff --git a/scm/output-ps.scm b/scm/output-ps.scm
deleted file mode 100644
index dd9dba0ddb..0000000000
--- a/scm/output-ps.scm
+++ /dev/null
@@ -1,297 +0,0 @@
-;;;; ps.scm -- implement Scheme output routines for PostScript
-;;;;
-;;;;  source file of the GNU LilyPond music typesetter
-;;;; 
-;;;; (c)  1998--2004 Jan Nieuwenhuizen <janneke@gnu.org>
-;;;; Han-Wen Nienhuys <hanwen@cs.uu.nl>
-
-
-(debug-enable 'backtrace)
-
-
-(define-module (scm output-ps))
-(define this-module (current-module))
-
-(use-modules
- (guile)
- (ice-9 regex)
- (lily))
-
-
-
-;;; Lily output interface --- cleanup and docme
-
-;; TODO: fucks up if outputting strings with parentheses.
-
-;; Module entry
-(define-public (ps-output-expression expr port)
-  (display (eval expr this-module) port))
-
-
-;; Global vars
-
-;; alist containing fontname -> fontcommand assoc (both strings)
-(define font-name-alist '())
-
-
-;; Interface functions
-(define (beam width slope thick blot)
-  (string-append
-   (numbers->string (list slope width thick blot)) " draw_beam" ))
-
-;; two beziers
-(define (bezier-sandwich l thick)
-  (string-append 
-   (apply string-append (map number-pair->string l))
-   (ly:number->string thick)
-   " draw_bezier_sandwich "))
-
-(define (bracket arch_angle arch_width arch_height  height arch_thick thick)
-  (string-append
-   (numbers->string
-    (list arch_angle arch_width arch_height height arch_thick thick))
-   " draw_bracket"))
-
-(define (symmetric-x-triangle thick w h)
-  (string-append
-   (numbers->string (list h w thick))
-   " draw_symmetric_x_triangle"))
-
-
-(define (char i)
-  (string-append 
-   "(\\" (inexact->string i 8) ") show " ))
-
-
-(define (comment s)
-  (string-append "% " s "\n"))
-
-
-(define (dashed-line thick on off dx dy)
-  (string-append 
-   (ly:number->string dx)
-   " "
-   (ly:number->string dy)
-   " "
-   (ly:number->string thick)
-   " [ "
-   (ly:number->string on)
-   " "
-   (ly:number->string off)
-   " ] 0 draw_dashed_line"))
-
-;; what the heck is this interface ?
-(define (dashed-slur thick dash l)
-  (string-append 
-   (apply string-append (map number-pair->string l)) 
-   (ly:number->string thick) 
-   " [ "
-   (ly:number->string dash)
-   " "
-   ;;UGH.  10 ?
-   (ly:number->string (* 10 thick))
-   " ] 0 draw_dashed_slur"))
-
-(define lily-traced-cm-fonts
-  (map symbol->string
-       '(cmbx14
-	 cmbx17
-	 cmbxti12
-	 cmbxti14
-	 cmbxti7
-	 cmbxti8
-	 cmcsc12
-	 cmcsc7
-	 cmtt17)))
-  
-(define (define-fonts internal-external-name-mag-pairs)
-  
-  (define (font-load-command name-mag command)
-
-    ;; frobnicate NAME to jibe with external definitions.
-    (define (possibly-capitalize-font-name name)
-      (cond
-       ((and (equal? (substring name 0 2) "cm")
-	     (not (member name lily-traced-cm-fonts)))
-	(string-upcase name))
-       ((equal? (substring name 0 4) "feta")
-	(regexp-substitute/global #f "feta([a-z-]*)([0-9]+)" name 'pre "GNU-LilyPond-feta" 1 "-" 2 'post))
-       (else name)))
-    
-    (string-append
-     "/" command
-     " { /"
-     ;; Ugh, the Bluesky type1 fonts for computer modern use capitalized 
-     ;; postscript font names.
-     (possibly-capitalize-font-name (car name-mag))
-     " findfont "
-     "20 " (ly:number->string (cdr name-mag)) " mul "
-     "output-scale div scalefont setfont } bind def "
-     "\n"))
-
-  (define (ps-encoded-fontswitch name-mag-pair)
-    (let* ((key (car name-mag-pair))
-	   (value (cdr name-mag-pair)))
-      (cons key
-	    (cons value
-		  (string-append "lilyfont"
-				 (car value)
-				 "-"
-				 (number->string (cdr value)))))))
-      
-  (set! font-name-alist (map ps-encoded-fontswitch
-			     internal-external-name-mag-pairs))
-
-  (apply string-append
-	 (map (lambda (x) (font-load-command (car x) (cdr x)))
-	      (map cdr font-name-alist))))
-
-(define (define-origin file line col) "")
-
-(define (dot x y radius)
-  (string-append
-   " "
-   (numbers->string
-    (list x y radius)) " draw_dot"))
-
-(define (zigzag-line centre? zzw zzh thick dx dy)
-  (string-append
-    (if centre? "true" "false")
-    " "
-    (ly:number->string zzw)
-    " "
-    (ly:number->string zzh)
-    " "
-    (ly:number->string thick)
-    " 0 0 "
-    (ly:number->string dx)
-    " "
-    (ly:number->string dy)
-    " draw_zigzag_line "))
-
-(define (draw-line thick x1 y1 x2 y2)
-  (string-append 
-  "	1 setlinecap
-	1 setlinejoin "
-  (ly:number->string thick)
-	" setlinewidth "
-   (ly:number->string x1)
-   " "
-   (ly:number->string y1)
-   " moveto "
-   (ly:number->string x2)
-   " "
-   (ly:number->string y2)
-   " lineto stroke"))
-
-(define (polygon points blotdiameter)
-  (string-append
-   " "
-   (numbers->string points)
-   (ly:number->string (/ (length points) 2))
-   (ly:number->string blotdiameter)
-   " draw_polygon"))
-
-(define (end-output)
-  "\nend-lilypond-output\n")
-
-(define (ez-ball ch letter-col ball-col)
-  (string-append
-   " (" ch ") "
-   (numbers->string (list letter-col ball-col))
-   " /Helvetica-Bold " ;; ugh
-   " draw_ez_ball"))
-
-(define (filledbox breapth width depth height) 
-  (string-append (numbers->string (list breapth width depth height))
-		 " draw_box"))
-
-(define (horizontal-line x1 x2 th)
-  (draw-line th x1  0 x2 0))
-
-(define (fontify name-mag-pair exp)
-
-  (define (select-font name-mag-pair)
-    (let* ((c (assoc name-mag-pair font-name-alist)))
-      (if (eq? c #f)
-	  (begin
-	    (display "FAILED\n")
-	    (display (object-type (car name-mag-pair)))
-	    (display (object-type (caaar font-name-alist)))
-	    (ly:warn (string-append
-		      "Programming error: No such font known "
-		      (car name-mag-pair) " "
-		      (ly:number->string (cdr name-mag-pair))))
-	    
-	    ;; Upon error, issue no command
-	    "")
-	  (string-append " " (cddr c) " "))))
-  
-  (string-append (select-font name-mag-pair) exp))
-
-(define (header creator generate) 
-  (string-append
-   "%!PS-Adobe-3.0\n"
-   "%%Creator: " creator generate "\n"))
-(define (header-end)
-  (string-append
-   ;; URG: now we can't use scm output without Lily
-   (ly:gulp-file "lilyponddefs.ps")
-   " {exch pop //systemdict /run get exec} "
-   (ly:gulp-file "music-drawing-routines.ps")
-   "{ exch pop //systemdict /run get exec } "
-   ;; ps-testing wreaks havoc when used with lilypond-book.
-   ;;  -- is this still true with new modules system?
-;;   (if (defined? 'ps-testing) "\n /testing true def" "")
-  ;   "\n /testing true def"
-   ))
-
-(define (lily-def key val)
-  (let ((prefix "lilypondpaper"))
-    (if (string=?
-	 (substring key 0 (min (string-length prefix) (string-length key)))
-	 prefix)
-	(string-append "/" key " {" val "} bind def\n")
-	(string-append "/" key " (" val ") def\n"))))
-
-(define (no-origin) "")
-  
-(define (placebox x y s) 
-  (string-append 
-   (ly:number->string x) " " (ly:number->string y) " {" s "} place-box\n"))
-
-(define (repeat-slash wid slope thick)
-  (string-append
-   (numbers->string (list wid slope thick))
-   " draw_repeat_slash"))
-
-(define (round-filled-box x y width height blotdiam)
-   (string-append
-    " "
-    (numbers->string
-     (list x y width height blotdiam)) " draw_round_box"))
-
-(define (start-system width height)
-  (string-append
-   "\n" (ly:number->string height)
-   " start-system\n"
-   "{\n"
-   "set-ps-scale-to-lily-scale"))
-
-(define (stem breapth width depth height) 
-  (string-append
-   (numbers->string (list breapth width depth height))
-   " draw_box" ))
-
-(define (stop-last-system)
-  (stop-system))
-
-(define (stop-system)
-  "}\nstop-system\n")
-
-(define (text s)
-  (string-append "(" s ") show "))
-
-(define (unknown) 
-  "\n unknown\n")
-
diff --git a/scm/output-sketch.scm b/scm/output-sketch.scm
deleted file mode 100644
index 94a1383c81..0000000000
--- a/scm/output-sketch.scm
+++ /dev/null
@@ -1,342 +0,0 @@
-
-;;; sketch.scm -- implement Scheme output routines for Sketch
-;;;
-;;;  source file of the GNU LilyPond music typesetter
-;;; 
-;;; (c)  1998--2004 Jan Nieuwenhuizen <janneke@gnu.org>
-;;; Han-Wen Nienhuys <hanwen@cs.uu.nl>
-
-
-;; def dispats (out,x,y,expr):
-;;     (symbol, rest) = expr
-;;     if symbol == 'placebox':
-;; 	(dx,dy,expr) = rest
-;; 	dispats (out, x + dx, y + dy, expr)
-;;         # hier wordt (X+DX) dus eerder gedaan dan dispats van EXPR.
-;;         # er zijn geen "globale" variabelen.
-;;     elif symbol == 'char':
-;;         out.write ('moveto( %f %f); char(%d)' % (x,y,rest))
-
-
-
-
-;;
-;; All functions have the signature 
-;;
-;;  NAME X Y ARGUMENTS-PASSED-BY-LILYPOND
-;;
-
-(define-module (scm output-sketch))
-(debug-enable 'backtrace)
-
-(define this-module (current-module))
-
-(define-public (sketch-output-expression expr port)
-  (display (dispatch expr) port))
-
-(use-modules (ice-9 format) (guile) (lily))
-
-;; hmm
-; (define (dispatch x y expr)
-;  (let ((keyword (car expr))) 
-;    (cond
-; ((eq? keyword 'beam x y width slope thick)
-; ((eq? keyword 'bezier-sandwich x y l thick)
-; ((eq? keyword 'bracket arch_angle arch_width arch_height  height arch_thick thick)
-; ((eq? keyword 'char x y i)
-; ((eq? keyword 'comment s)
-; ((eq? keyword 'dashed-line thick on off dx dy)
-; ((eq? keyword 'dashed-slur thick dash l)
-; ((eq? keyword 'define-origin a b c ) "")
-; ((eq? keyword 'end-output)
-; ((eq? keyword 'experimental-on) "")
-; ((eq? keyword 'ez-ball ch letter-col ball-col)
-; ((eq? keyword 'filledbox x y breapth width depth height)
-; ((eq? keyword 'font-load-command name-mag command)
-; ((eq? keyword 'font-switch i)
-; ((eq? keyword 'header creator generate)
-; ((eq? keyword 'header-end)
-; ((eq? keyword 'invoke-char s i)
-; ((eq? keyword 'lily-def key val)
-; ((eq? keyword 'no-origin) "")
-; ((eq? keyword 'output-scale 1)
-; ((eq? keyword 'placebox)
-;  (dispatch (+ x (cadr expr)) (+ y (caddr expr) (cadddr expr))))
-; ((eq? keyword 'repeat-slash wid slope thick)
-; ((eq? keyword 'round-filled-box x y dx dy w h b)
-; ((eq? keyword 'select-font name-mag-pair)
-; ((eq? keyword 'start-system width height)
-; ((eq? keyword 'stem x y z w) (filledbox x y z w))
-; ((eq? keyword 'stop-last-system)
-; ((eq? keyword 'stop-system)
-; ((eq? keyword 'text x y s)
-; ((eq? keyword 'unknown)
-
-;     )))
-
-
-(define current-y 150)
-
-(define (dispatch expr)
-  (let ((keyword (car expr))) 
-    (cond
-     ((eq? keyword 'placebox)
-      (dispatch-x-y (cadr expr) (+ current-y (caddr expr)) (cadddr expr)))
-     (else
-      (apply (eval keyword this-module) (cdr expr))))))
-
-(define (dispatch-x-y x y expr)
-  (apply (eval (car expr) this-module) (append (list x y) (cdr expr))))
-      
-(define (ascii->string i) (make-string 1 (integer->char i)))
-
-(define (control->list x y c)
-  (list (+ x (car c)) (+ y (cdr c))))
-
-(define (control-flip-y c)
-  (cons (car c) (* -1 (cdr c))))
-
-;;; urg.
-(define (sketch-numbers->string l)
-  (string-append
-   (number->string (car l))
-   (if (null? (cdr l))
-       ""
-       (string-append ","  (sketch-numbers->string (cdr l))))))
-
-;;;\def\scaletounit{ 2.83464566929134 mul }%
-
-;;(define output-scale 2.83464566929134)
-
-(define scale-to-unit
-  (cond
-   ((equal? (ly:unit) "mm") (/ 72.0  25.4))
-   ((equal? (ly:unit) "pt") (/ 72.0  72.27))
-   (else (error "unknown unit" (ly:unit)))
-   ))
-
-(define (mul-scale x) (* scale-to-unit output-scale x))
-
-(define (sketch-filled-rectangle width dy dx height x y)
-  (string-append
-   "fp((0,0,0))\n"
-   "lw(0.1)\n"
-   "r("
-   (sketch-numbers->string (map mul-scale (list width dy dx height x y)))
-   ")\n"))
-
-
-(define (sketch-bezier x y l)
-  (let* ((c0 (car (list-tail l 3)))
-	 (c123 (list-head l 3))
-	 (start (control->list x y c0))
-	 (control (apply append
-			 (map (lambda (c) (control->list x y c)) c123))))
-    (string-append
-     "bs(" (sketch-numbers->string (map mul-scale start)) ",0)\n"
-     "bc(" (sketch-numbers->string (map mul-scale control)) ",2)\n")))
-  
-
-
-(define (sketch-beziers x y l thick)
-  (let* ((first (list-tail l 4))
-	 (second (list-head l 4)))
-    (string-append
-     "fp((0,0,0))\n"
-     "lw(0.1)\n"
-     "b()\n"
-     (sketch-bezier x y first)
-     (sketch-bezier x y second))))
-	 
-
-;; alist containing fontname -> fontcommand assoc (both strings)
-;; old scheme
-;;(define font-alist '(("feta13" . ("feta13" . "13"))
-;;		     ("feta20" . ("feta20" . "20"))))
-(define font-alist '(("feta13" . ("LilyPond-Feta13" . "13"))
-;;		     ("feta20" . ("LilyPond-Feta-20" . "20")
-		     ("feta20" . ("GNU-LilyPond-feta-20" . "20")
-		      )))
-
-;;(define font "")
-(define font (cdar font-alist))
-
-(define font-count 0)
-(define current-font "")
-
-(define (fontify x y name-mag-pair exp)
-  (string-append (select-font name-mag-pair)
-		 (apply (eval (car exp) this-module)
-			(append (list x y) (cdr exp)))))
-;;		 (if (string? exp) exp "")))
-
-(define (define-fonts x) "")
-
-(define (font-def x)
-"")
-
-
-(define (cached-fontname i)
-  "")
-
-
-(define (round-filled-box x y dx dy w h b)
-  (sketch-filled-rectangle w 0 0 h x y))
-
-(define (polygon points blotdiameter) "") ;; TODO
-
-(define (select-font name-mag-pair)
-  ;; name-mag-pair: (quote ("feta20" . 0.569055118110236))"feta20"(quote ("feta20" . 0.569055118110236))
-  (let ((f (assoc (caadr name-mag-pair) font-alist)))
-    (if (pair? f)
-	(set! font (cdr f))
-	(format #t "font not found: ~s\n" (caadr name-mag-pair))))
-  ;;(write font)
-  "")
-
-(define (font-load-command name-mag command)
-  "")
-
-(define (beam x y width slope thick blot)
-  (apply sketch-filled-rectangle
-	 (list width (* slope width) 0 thick x y)))
-
-(define (comment s)
-  (string-append "# " s "\n"))
-
-(define (bracket arch_angle arch_width arch_height  height arch_thick thick)
-  (string-append
-   (numbers->string (list arch_angle arch_width arch_height height arch_thick thick)) " draw_bracket" ))
-
-(define (char x y i)
-  (string-append
-   "fp((0,0,0))\n"
-   "le()\n"
-   "lw(0.1)\n"
-   "Fn('" (car font) "')\n"
-   "Fs(" (cdr font) ")\n"
-   ;; how to get zero-left padding with ``Guile's fprintf'' ?
-   ;;(format #f "txt('\\x~2x',(" i)
-   ;;(format #f "txt('\\x~02x',(" i)
-   ;; ugh: python's '%02x' % i
-   (format #f "&#x~2,'0x;" i)
-   (sketch-numbers->string (map mul-scale (list x y)))
-   "))\n"))
-
-
-;; what the heck is this interface ?
-(define (dashed-slur thick dash l)
-  (string-append 
-   (apply string-append (map number-pair->string l)) 
-   (ly:number->string thick) 
-   " [ "
-   (ly:number->string dash)
-   " "
-   (ly:number->string (* 10 thick))	;UGH.  10 ?
-   " ] 0 draw_dashed_slur"))
-
-(define (dashed-line thick on off dx dy)
-  (string-append 
-   (ly:number->string dx)
-   " "
-   (ly:number->string dy)
-   " "
-   (ly:number->string thick) 
-   " [ "
-   (ly:number->string on)
-   " "
-   (ly:number->string off)
-   " ] 0 draw_dashed_line"))
-
-(define (repeat-slash wid slope thick)
- (string-append (numbers->string (list wid slope thick))
-  " draw_repeat_slash"))
-
-(define (end-output)
-  "guidelayer('Guide Lines',1,0,0,1,(0,0,1))
-grid((0,0,20,20),0,(0,0,1),'Grid')\n")
-
-(define (experimental-on) "")
-
-(define (font-switch i)
-  "")
-
-(define (header-end)
-  "")
-
-(define output-scale 1)
-
-(define (lily-def key val)
-  (if (equal? key "lilypondpaperoutputscale")
-      ;; ugr
-      (set! output-scale (string->number val))
-      )
-  "")
-
-
-(define (header creator generate)
-  (string-append
-   "##Sketch 1 2
-document()
-layout('A4',0)
-layer('Layer 1',1,1,0,0,(0,0,0))
-"))
-
-(define (invoke-char s i)
-  "")
-
-(define (bezier-sandwich x y l thick)
-  (apply
-   sketch-beziers (list x y (primitive-eval l) thick)))
-
-(define (start-system width height)
-  (set! current-y (- current-y height))
-  "G()\n")
-
-;;  r((520.305,0,0,98.0075,51.8863,10.089))
-;;  width, 0, 0, height, x, y
-(define (filledbox x y breapth width depth height)
-  (apply sketch-filled-rectangle
-	 (list
-	  (+ breapth width) 0 0 (+ depth height) (- x breapth) (- y depth))))
-
-(define (stem x y z w) (filledbox x y z w))
-
-
-(define (stop-system)
-    "G_()\n")
-
-;; huh?
-(define (stop-last-system)
-   (stop-system))
-
-(define (text x y s)
-  (string-append
-   "fp((0,0,0))\n"
-   "le()\n"
-   "lw(0.1)\n"
-   "Fn('" (car font) "')\n"
-   "Fs(" (cdr font) ")\n"
-   ;; Hmm
-   "txt('" s "',(" (sketch-numbers->string
-				  (map mul-scale (list x y))) "))\n"))
-
-(define (unknown) 
-  "\n unknown\n")
-
-(define (ez-ball ch letter-col ball-col)
-  (string-append
-   " (" ch ") "
-   (numbers->string (list letter-col ball-col))
-   " /Helvetica-Bold " ;; ugh
-   " draw_ez_ball"))
-
-(define (define-origin a b c ) "")
-(define (no-origin) "")
-
-
-
-;;;;;;;;;;;;;;;;;;;;
-;;;;;;;;;;;;;;;;;;;;
-
- 
diff --git a/scm/output-sodipodi.scm b/scm/output-sodipodi.scm
deleted file mode 100644
index 68a878d5e6..0000000000
--- a/scm/output-sodipodi.scm
+++ /dev/null
@@ -1,375 +0,0 @@
-;;;; sodipodi.scm -- implement Scheme output routines for PostScript
-;;;;
-;;;;  source file of the GNU LilyPond music typesetter
-;;;; 
-;;;; (c)  2002--2004 Jan Nieuwenhuizen <janneke@gnu.org>
-
-;;;; NOTE:
-;;;;
-;;;; * Get mftrace 1.0.12 or newer to create the .pfa fonts:
-;;;;
-;;;;       make -C mf clean
-;;;;       make -C mf pfa
-;;;;
-;;;; * Get sodipodi-0.28 or newer
-;;;;
-;;;; * Link/copy mf/out/private-fonts to ~/.sodipodi/private-fonts 
-
-;;;; http://www.w3.org/TR/SVG11/paths.html
-
-
-(debug-enable 'backtrace)
-
-(define-module (scm output-sodipodi))
-(define this-module (current-module))
-
-(use-modules
- (guile)
- (lily))
-
-;;; Lily output interface --- cleanup and docme
-
-;;; Bare minimum interface for \score { \notes c } }
-;;; should implement:
-;;;
-;;;    xx-output-expression
-;;;    char
-;;;    filledbox
-;;;    placebox
-
-;;; and should intercept: 
-;;;
-;;;    fontify
-;;;    lily-def
-;;;    header-end
-;;;    define-fonts
-;;;    no-origin
-;;;    start-system
-;;;    end-output
-;;;    header
-;;;    comment
-;;;    stop-last-system
-
-;; Module entry
-;;(define-public (sodipodi-output-expression expr port)
-;;  (display (eval expr this-module) port))
-
-(define-public (sodipodi-output-expression expr port)
-  (display (dispatch expr) port))
-
-(define (dispatch expr)
-  (let ((keyword (car expr)))
-    (cond
-     ((eq? keyword 'some-func) "")
-     ;;((eq? keyword 'placebox) (dispatch (cadddr expr)))
-     ;;((eq? keyword 'fontify) (dispatch (caddr expr)))
-     (else
-      (if (module-defined? this-module keyword)
-	  (apply (eval keyword this-module) (cdr expr))
-	  (begin
-	    (display
-	     (string-append "undefined: " (symbol->string keyword) "\n"))
-	    ""))))))
-  
-
-;; Global vars
-
-(define output-scale 1)
-(define system-y 0)
-;; huh?
-(define urg-line-thickness 0)
-(define line-thickness 0.001)
-(define half-lt (/ line-thickness 2))
-
-
-(define scale-to-unit
-  (cond
-   ((equal? (ly:unit) "mm") (/ 72.0  25.4))
-   ((equal? (ly:unit) "pt") (/ 72.0  72.27))
-   (else (error "unknown unit" (ly:unit)))))
-
-;; alist containing fontname -> fontcommand assoc (both strings)
-;;(define font-name-alist '())
-
-;; Helper functions
-
-
-(define (tagify tag string . attribute-alist)
-  (string-append
-   "<" tag
-   (apply string-append (map (lambda (x) (string-append
-					  " "
-					  (symbol->string (car x))
-					  "='"
-					  (cdr x)
-					  "'"))
-			     attribute-alist))
-   ">\n"
-   string "\n</" tag ">\n"))
-
-
-(define (ascii->string i) (make-string 1 (integer->char i)))
-(define (ascii->upm-string i)
-  (let* ((i+1 (+ i 1))
-	 (u1 #xee)
-	 (u2 (+ #x80 (quotient i+1 #x40)))
-	 (u3 (+ #x80 (modulo i+1 #x40))))
-    (apply string-append
-	   (map ascii->string
-		(list u1 u2 u3)))))
-
-(define (control->list c)
-  (list (car c) (cdr c)))
-
-(define (control->string c)
-  (string-append
-   (number->string (car c)) ","
-   ;; loose the -1
-   (number->string (* -1 (cdr c))) " "))
-
-(define (control-flip-y c)
-  (cons (car c) (* -1 (cdr c))))
-
-(define (numbers->string l)
-  (string-append
-   (number->string (car l))
-   (if (null? (cdr l))
-       ""
-       (string-append ","  (numbers->string (cdr l))))))
-
-(define (svg-bezier l close)
-  (let* ((c0 (car (list-tail l 3)))
-	 (c123 (list-head l 3)))
-    (string-append
-     (if (not close) "M " "L ")
-     (control->string c0)
-     "C " (apply string-append (map control->string c123))
-     (if (not close) "" (string-append
-			 "L " (control->string close))))));; " Z")))))
-
-(define xml-header
-"<?xml version='1.0' standalone='no'?>
-<!DOCTYPE svg PUBLIC '-//W3C//DTD SVG 20010904//EN'
-'http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd'
-[
- <!ATTLIST svg
- xmlns:xlink CDATA #FIXED 'http://www.w3.org/1999/xlink'>
-]>
-"
-;;"
-)
-
-(define svg-header
-"<svg
-   id='svg1'
-   sodipodi:version='0.26'
-   xmlns='http://www.w3.org/2000/svg'
-   xmlns:sodipodi='http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd'
-   xmlns:xlink='http://www.w3.org/1999/xlink'
-   width='210mm'
-   height='297mm'
-   sodipodi:docbase='/tmp/'
-   sodipodi:docname='/tmp/x'>
-  <defs
-     id='defs3' />
-  <sodipodi:namedview
-     id='base' />
-  <g transform='translate(10,10) scale (1.0)'>
-  ")
-
-
-
-;; Interface functions
-
-(define (sqr x)
-  (* x x))
-
-;; transform=scale and stroke don't play nice together...
-(define (XXXbeam width slope thick)
-  (let* ((x width)
-	 (y (* slope width))
-	 (z (sqrt (+ (sqr x) (sqr y)))))
-    (tagify "rect" ""
-	    ;; '(style . "fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-opacity:1;stroke-width:0.1;stroke-linejoin:miter;stroke-linecap:butt;")
-	    ;;'(style . "fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-opacity:1;stroke-width:0.000001;stroke-linejoin:miter;stroke-linecap:butt;")
-	    `(style . ,(format "fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-opacity:1;stroke-width:~f;stroke-linejoin:miter;stroke-linecap:butt;" line-thickness))
-	    ;;`(x . ,(number->string half-lt))
-	    `(x . "0")
-	    ;;`(y . ,(number->string (- half-lt (/ thick 2))))
-	    `(y . ,(number->string (- 0 (/ thick 2))))
-	    `(width . ,(number->string width))
-	    `(height . ,(number->string thick))
-	    `(ry . ,(number->string half-lt))
-	    `(transform . ,(format #f "matrix(~f,~f,0,1,0,0) scale (~f,~f)"
-				   (/ x z)
-				   (* -1 (/ y z))
-				   output-scale output-scale)))))
-
-(define (beam width slope thick)
-  (let* ((x width)
-	 (y (* slope width))
-	 (z (sqrt (+ (sqr x) (sqr y)))))
-    (tagify "rect" ""
-	    `(style . ,(format "fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-opacity:1;stroke-width:~f;stroke-linejoin:miter;stroke-linecap:butt;" line-thickness))
-	    `(x . "0")
-	    `(y . ,(number->string (* output-scale (- 0 (/ thick 2)))))
-	    `(width . ,(number->string (* output-scale width)))
-	    `(height . ,(number->string (* output-scale thick)))
-	    `(ry . ,(number->string (* output-scale half-lt)))
-	    `(transform . ,(format #f "matrix(~f,~f,0,1,0,0) scale (~f,~f)"
-				   (/ x z)
-				   (* -1 (/ y z))
-				   1 1)))))
-
-
-(define (bezier-sandwich l thick)
-  (let* (;;(l (eval urg-l this-module))
-	 (first (list-tail l 4))
-	 (first-c0 (car (list-tail first 3)))
-	 (second (list-head l 4)))
-    (tagify "path" ""
-	    `(stroke . "#000000")
-	    `(stroke-width . ,(number->string line-thickness))
-	    `(transform . ,(format #f "scale (~f,~f)"
-				   output-scale output-scale))
-	    `(d . ,(string-append (svg-bezier first #f)
-				  (svg-bezier second first-c0))))))
-  
-(define (char i)
-  (if #t
-      ;;(tagify "tspan" (format #f "&#xe0~2,'0x;" i))
-      (tagify "tspan" (ascii->upm-string i))
-      (begin
-	(format #t "can't display char: ~x\n" i)
-	" ")))
-
-
-(define (comment s)
-  (string-append "<!-- " s " -->\n"))
-
-(define (define-fonts internal-external-name-mag-pairs)
-  (comment (format #f "Fonts used: ~S" internal-external-name-mag-pairs)))
-
-(define (end-output)
-  "</g></svg>")
-
-;;TODO
-;(define (horizontal-line x1 x2 th)
-;  (draw-line th x1  0 x2 0))
-
-(define (filledbox breapth width depth height)
-  (round-filled-box breapth width depth height line-thickness))
-
-(define font-cruft
-  "fill:black;stroke:none;text-anchor:start;writing-mode:lr;font-weight:normal;")
-
-;; FIXME
-(define font-alist
-  `(  
-    ("cmr8" . ,(string-append
-		  font-cruft
-		  "font-family:cmr;font-style:normal;font-size:8;"))
-    ("feta13" . ,(string-append
-		  font-cruft
-		  "font-family:LilyPond-Feta;font-style:-Feta;font-size:13;"))
-    ("feta-nummer10" . ,(string-append
-			 font-cruft
-			 "font-family:LilyPond-feta-nummer;font-style:-feta-nummer;font-size:10;"))
-    ("feta20" . ,(string-append
-		  font-cruft
-		  "font-family:LilyPond-feta;font-style:-feta;font-size:20;"))
-    ("parmesan20" . ,(string-append
-		      font-cruft
-		      "font-family:LilyPond-Parmesan;font-style:-Parmesan;font-size:20;"))))
-
-(define (get-font name-mag-pair)
-  ;; name-mag-pair: (quote ("feta20" . 0.569055118110236))"feta20"(quote ("feta20" . 0.569055118110236))
-  (let ((f (assoc (caadr name-mag-pair) font-alist)))
-    (if (pair? f)
-	(cdr f)
-	(begin
-	  (format #t "font not found: ~s\n" (caadr name-mag-pair))
-	  (cdr (assoc "feta20" font-alist))))))
-
-(define (fontify name-mag-pair expr)
-  (string-append
-   (tagify "text" (dispatch expr) (cons 'style (get-font name-mag-pair)))))
-
-(define (header-end)
-  (comment "header-end"))
-
-(define (header creator generate)
-  (string-append
-   xml-header
-   (comment creator)
-   (comment generate)
-   svg-header))
-  
-
-(define (lily-def key val)
-  (cond
-   ((equal? key "lilypondpaperoutputscale")
-    ;; ugr
-    ;; If we just use transform scale (output-scale),
-    ;; all fonts come out scaled too (ie, much too big)
-    ;; So, we manually scale all other stuff.
-    (set! output-scale (* scale-to-unit (string->number val))))
-   ((equal? key "lilypondpaperlinethickness")
-    (set! urg-line-thickness (* scale-to-unit (string->number val)))))
-  "")
-
-(define (no-origin)
-  "")
-
-
-(define (placebox x y expr)
-  (tagify "g" (dispatch expr)
-	  `(transform .
-		      ,(string-append
-			"translate("
-			;; urg
-			(number->string (* output-scale x))
-			","
-			(number->string (- 0 (* output-scale y)))
-			")"))))
-
-(define (round-filled-box breapth width depth height blot-diameter)
-  (tagify "rect" ""
-	  ;;'(style . "fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-opacity:1;stroke-width:1pt;stroke-linejoin:miter;stroke-linecap:butt;")
-	    `(style . ,(format "fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-opacity:1;stroke-width:~f;stroke-linejoin:miter;stroke-linecap:butt;" line-thickness))
-	  `(x . ,(number->string (* output-scale (- 0 breapth))))
-	  `(y . ,(number->string (* output-scale (- 0 height))))
-	  `(width . ,(number->string (* output-scale (+ breapth width))))
-	  `(height . ,(number->string (* output-scale (+ depth height))))
-	  ;;`(ry . ,(number->string (* output-scale half-lt)))
-	  `(ry . ,(number->string (/ blot-diameter 2)))))
-
-
-  
-;; TODO: use height, set scaling?
-(define (start-system width height)
-  (let ((y system-y))
-    ;;"<g transform='translate(50,-250)'>
-    (set! system-y (+ system-y height))
-    ;;(format #f "<g transform='translate(0,~1,'~f)'>" y)))
-    (string-append
-     "\n"
-     (comment "start-system")
-     (format #f "<g transform='translate(0.0,~f)'>\n" (* output-scale y)))))
-
-(define (stop-system)
-  (string-append
-   "\n"
-   (comment "stop-system")
-   "</g>\n"))
-
-(define stop-last-system stop-system)
-
-(define (text s)
-  ;; to unicode or not?
-  (if #t
-      (tagify "tspan" s)
-      (tagify "tspan"
-	      (apply string-appendb
-		     (map (lambda (x) (ascii->upm-string (char->integer x)))
-			  (string->list s))))))
diff --git a/scm/output-tex.scm b/scm/output-tex.scm
deleted file mode 100644
index 2128cec4fe..0000000000
--- a/scm/output-tex.scm
+++ /dev/null
@@ -1,289 +0,0 @@
-;;; tex.scm -- implement Scheme output routines for TeX
-;;;
-;;;  source file of the GNU LilyPond music typesetter
-;;; 
-;;; (c)  1998--2004 Jan Nieuwenhuizen <janneke@gnu.org>
-;;; Han-Wen Nienhuys <hanwen@cs.uu.nl>
-
-
-(define-module (scm output-tex) )
-; (debug-enable 'backtrace)
-(use-modules (scm output-ps)
-	     (ice-9 regex)
-	     (ice-9 string-fun)
-	     (ice-9 format)
-	     (guile)
-	     (lily)
-	     )
-
-(define this-module (current-module))
-
-;;;;;;;;
-;;;;;;;; DOCUMENT ME!
-;;;;;;;;
-
-(define font-name-alist  '())
-
-(define (tex-encoded-fontswitch name-mag)
-  (let* ((iname-mag (car name-mag))
-	 (ename-mag (cdr name-mag)))
-
-    (cons iname-mag
-	  (cons ename-mag
-		(string-append  "magfont"
-			  (string-encode-integer
-			   (hashq (car ename-mag) 1000000))
-			  "m"
-			  (string-encode-integer
-			   (inexact->exact (round (* 1000 (cdr ename-mag))))))))))
-
-(define (define-fonts internal-external-name-mag-pairs)
-  (set! font-name-alist (map tex-encoded-fontswitch
-			     internal-external-name-mag-pairs))
-  (apply string-append
-	 (map (lambda (x)
-		(font-load-command (car x) (cdr x)))
-	      (map cdr font-name-alist))))
-
-
-
-;; urg, how can exp be #unspecified?  -- in sketch output
-;;
-;; set! returns #<unspecified>  --hwn
-(define (fontify name-mag-pair exp)
-  (string-append (select-font name-mag-pair)
-		 exp))
-
-
-(define (unknown) 
-  "%\n\\unknown\n")
-
-(define (select-font name-mag-pair)
-  (let*
-      (
-       (c (assoc name-mag-pair font-name-alist))
-       )
-
-    (if (eq? c #f)
-	(begin
-	  (ly:warn (string-append
-		    "Programming error: No such font known "
-		    (car name-mag-pair) " "
-		    (ly:number->string (cdr name-mag-pair))))
-	  
-	  (display "FAILED\n" (current-error-port))
-	  (if #f ;(pair? name-mag-pair))
-	      (display (object-type (car name-mag-pair)) (current-error-port))
-	      (write name-mag-pair (current-error-port)))
-	  (if #f ;  (pair? font-name-alist)
-	      (display
-	       (object-type (caaar font-name-alist)) (current-error-port))
-	      (write font-name-alist (current-error-port)))
-
-	  ;; (format #f "\n%FAILED: (select-font ~S)\n" name-mag-pair))
-	  "")
-	
-	(string-append "\\" (cddr c)))))
-
-(define (blank)
-  "")
-
-(define (dot x y radius)
-  (embedded-ps (list 'dot x y radius)))
-
-(define (beam width slope thick blot)
-  (embedded-ps (list 'beam  width slope thick blot)))
-
-(define (bracket arch_angle arch_width arch_height height arch_thick thick)
-  (embedded-ps (list 'bracket  arch_angle arch_width arch_height height arch_thick thick)))
-
-(define (dashed-slur thick dash l)
-  (embedded-ps (list 'dashed-slur thick dash `(quote ,l))))
-
-(define (char i)
-  (string-append "\\char" (inexact->string i 10) " "))
-
-(define (dashed-line thick on off dx dy)
-  (embedded-ps (list 'dashed-line  thick on off dx dy)))
-
-(define (zigzag-line centre? zzw zzh thick dx dy)
-  (embedded-ps (list 'zigzag-line centre? zzw zzh thick dx dy)))
-
-(define (symmetric-x-triangle t w h)
-  (embedded-ps (list 'symmetric-x-triangle t w h)))
-
-(define (font-load-command name-mag command)
-  (string-append
-   "\\font\\" command "="
-   (car name-mag)
-   " scaled "
-   (ly:number->string (inexact->exact (round (* 1000  (cdr name-mag)))))
-   "\n"))
-
-(define (ez-ball c l b)
-  (embedded-ps (list 'ez-ball  c  l b)))
-
-(define (header-to-file fn key val)
-  (set! key (symbol->string key))
-  (if (not (equal? "-" fn))
-      (set! fn (string-append fn "." key))
-      )
-  (display
-   (format "writing header field `~a' to `~a'..."
-	   key
-	   (if (equal? "-" fn) "<stdout>" fn)
-	   )
-   (current-error-port))
-  (if (equal? fn "-")
-      (display val)
-      (display val (open-file fn "w"))
-  )
-  (display "\n" (current-error-port))
-  ""
-  )
-
-(define (embedded-ps expr)
-  (let ((ps-string
-	 (with-output-to-string
-	   (lambda () (ps-output-expression expr (current-output-port))))))
-    (string-append "\\embeddedps{" ps-string "}")))
-  
-(define (comment s)
-  (string-append "% " s "\n"))
-
-(define (end-output) 
-  (begin
-					; uncomment for some stats about lily memory	  
-					;		(display (gc-stats))
-    (string-append
-     "\\lilypondend\n"
-					; Put GC stats here.
-		   )))
-
-(define (experimental-on)
-  "")
-
-(define (repeat-slash w a t)
-  (embedded-ps (list 'repeat-slash  w a t)))
-
-(define (header-end)
-  (string-append
-   "\\def\\scaletounit{ "
-   (number->string (cond
-		     ((equal? (ly:unit) "mm") (/ 72.0  25.4))
-		     ((equal? (ly:unit) "pt") (/ 72.0  72.27))
-		     (else (error "unknown unit" (ly:unit)))
-		     ))
-   " mul }%\n"
-   "\\ifx\\lilypondstart\\undefined\n"
-   "  \\input lilyponddefs\n"
-   "\\fi\n"
-   "\\outputscale = \\lilypondpaperoutputscale\\lilypondpaperunit\n"
-   "\\lilypondstart\n"
-   "\\lilypondspecial\n"
-   "\\lilypondpostscript\n"))
-
-;; Note: this string must match the string in lilypond.py!!!
-(define (header creator generate) 
-  (string-append
-   "% Generated automatically by: " creator generate "\n"))
-
-(define (invoke-char s i)
-  (string-append 
-   "\n\\" s "{" (inexact->string i 10) "}" ))
-
-;;
-;; need to do something to make this really safe.
-;;
-(define-public (output-tex-string s)
-  (if security-paranoia
-      (regexp-substitute/global #f "\\\\" s 'pre "$\\backslash$" 'post)
-      s))
-
-(define (lily-def key val)
-  (let ((tex-key
-	 (regexp-substitute/global
-	      #f "_" (output-tex-string key) 'pre "X" 'post))
-	 
-	(tex-val (output-tex-string val)))
-    (if (equal? (sans-surrounding-whitespace tex-val) "")
-	(string-append "\\let\\" tex-key "\\undefined\n")
-	(string-append "\\def\\" tex-key "{" tex-val "}%\n"))))
-
-(define (number->dim x)
-  (string-append
-   ;;ugh ly:* in backend needs compatibility func for standalone output
-   (ly:number->string x) " \\outputscale "))
-
-(define (placebox x y s) 
-  (string-append "\\lyitem{"
-		 (ly:number->string y) "}{"
-		 (ly:number->string x) "}{"
-		 s "}%\n"))
-
-(define (bezier-sandwich l thick)
-  (embedded-ps (list 'bezier-sandwich  `(quote ,l) thick)))
-
-(define (start-system wd ht)
-  (string-append "\\leavevmode\n"
-		 "\\scoreshift = " (number->dim (* ht 0.5)) "\n"
-		 "\\lilypondifundefined{lilypondscoreshift}%\n"
-		 "  {}%\n"
-		 "  {\\advance\\scoreshift by -\\lilypondscoreshift}%\n"
-		 "\\lybox{"
-		 (ly:number->string wd) "}{"
-		 (ly:number->string ht) "}{%\n"))
-
-(define (stop-system) 
-  "}%\n%\n\\interscoreline\n%\n")
-(define (stop-last-system)
-  "}%\n")
-
-(define (horizontal-line x1 x2 th)
-  (filledbox (- x1)  (- x2 x1) (* .5 th)  (* .5 th )))
-
-(define (filledbox breapth width depth height)
-  (if (and #f (defined? 'ps-testing))
-      (embedded-ps
-       (string-append (numbers->string (list breapth width depth height))
-		      " draw_box" ))
-      (string-append "\\lyvrule{"
-		     (ly:number->string (- breapth)) "}{"
-		     (ly:number->string (+ breapth width)) "}{"
-		     (ly:number->string depth) "}{"
-		     (ly:number->string height) "}")))
-
-(define (round-filled-box x y width height blotdiam)
-  (embedded-ps (list 'round-filled-box  x y width height blotdiam)))
-
-(define (text s)
-  (string-append "\\hbox{" (output-tex-string s) "}"))
-
-(define (tuplet ht gapx dx dy thick dir)
-  (embedded-ps (list 'tuplet  ht gapx dx dy thick dir)))
-
-(define (polygon points blotdiameter)
-  (embedded-ps (list 'polygon `(quote ,points) blotdiameter)))
-
-(define (draw-line thick fx fy tx ty)
-  (embedded-ps (list 'draw-line thick fx fy tx ty)))
-
-;; TODO: this should be a default, which is overriden in PS
-(define (between-system-string string)
-  string
-  )
-(define (define-origin file line col)
-  (if (procedure? point-and-click)
-      (string-append "\\special{src:" ;;; \\string ? 
-		     (point-and-click line col file)
-		     "}" )
-      "")
-  )
-
-;; no-origin not yet supported by Xdvi
-(define (no-origin) "")
-
-(define-public (tex-output-expression expr port)
-  (display (eval expr this-module) port ))
-
-
diff --git a/scm/paper.scm b/scm/paper.scm
deleted file mode 100644
index bb802bb17b..0000000000
--- a/scm/paper.scm
+++ /dev/null
@@ -1,89 +0,0 @@
-					; paper.scm - manipulate the paper block.
-;
-; (C) 2004 Han-Wen Nienhuys
-
-; the  functions are fairly basic here.
-
-
-
-(define-public (paper-set-staff-size sz)
-  "Function to be called inside a \\paper{} block to set the staff size."
-  (let*
-   ((m (current-module))
-    (ss (/ sz 4))
-    (pt (eval 'pt m)) 
-    (mm (eval 'mm m))  )
-   
-    (module-define! m 'fonts (scale-font-list (/  sz (* 20 pt))))
-    (module-define! m 'staffheight sz)
-    (module-define! m 'staff-space ss)
-    (module-define! m 'staffspace ss)
-
-
-    ;; !! synchronize with feta-params.mf
-    (module-define! m 'linethickness (+ (* 0.3 pt) (* 0.04 ss)))
-    (module-define! m 'outputscale ss)
-    (module-define! m 'ledgerlinethickness (+ (* 0.5 pt) (/ ss 10)))
-    (module-define! m 'blotdiameter (* 0.35 pt))
-    (module-define! m 'interscoreline (* 4 mm))
-  ))
-
-(define-public (set-global-staff-size sz)
-  "Set the default staff size, where SZ is thought to be in PT."
-  (let*
-      ((old-mod (current-module))
-       (pap (eval  '$defaultpaper old-mod))
-       (new-paper (ly:output-def-clone pap))
-       (new-scope  (ly:output-def-scope new-paper))
-       )
-    (set-current-module new-scope)
-    (paper-set-staff-size (* sz (eval 'pt new-scope)))
-    (set-current-module old-mod)
-    (module-define! old-mod '$defaultpaper new-paper)
-  ))
-
-
-(define paper-alist
-  '(("a4" . (cons (* 210 mm) (* 297.9 mm)))
-    ("a3" . (cons (* 297.9 mm)  (* 420 mm)))
-    ("legal" . (cons (* 8.5 in)  (* 14.0 in)))
-    ("letter" . (cons (* 8.5 in) (* 11.0 in)))
-    ("tabloid" . (cons (* 11.0 in) (* 17.0 in))))   )
-
-;; todo: take dimension arguments.
-
-
-(define (set-paper-dimensions m w h)
-  "M is a module (ie. paper->scope_ )"
-  
-  (let*
-      ( (mm (eval 'mm m)) )
-
-    (module-define! m 'hsize w)
-    (module-define! m 'vsize h)
-    (module-define! m 'linewidth (- w (* 20 mm)))
-    (module-define! m 'raggedright #f)
-    (module-define! m 'packed #f)
-    (module-define! m 'indent (/ w 14)) ))
-
-
-(define-public (set-paper-size name)
-  (let*
-      ((entry (assoc name paper-alist))
-       (pap (eval '$defaultpaper (current-module)))
-       (new-paper (ly:output-def-clone pap))
-       (m  (ly:output-def-scope new-paper))
-       (mm (eval 'mm m))
-       )
-
-    (if (pair? entry)
-	(begin
-	  (set! entry (eval  (cdr entry) m))
-	  (set-paper-dimensions m (car entry) (cdr entry))
-	  (module-define! m 'papersize name)
-	  (module-define! m 'papersizename name)
-	  (set-paper-dimensions m (car entry) (cdr entry))
-	  (module-define! (current-module) '$defaultpaper new-paper)
-	  )
-	(ly:warning (string-append "Unknown papersize: " name))
-	)))
diff --git a/scm/part-combiner.scm b/scm/part-combiner.scm
deleted file mode 100644
index ea7d77a423..0000000000
--- a/scm/part-combiner.scm
+++ /dev/null
@@ -1,596 +0,0 @@
-;;;; part-combiner.scm -- 
-;;;;
-;;;;  source file of the GNU LilyPond music typesetter
-;;;; 
-;;;; (c)  1998--2004  Han-Wen Nienhuys <hanwen@cs.uu.nl>
-
-;; todo: figure out how to make module,
-;; without breaking nested ly scopes
-
-(define-class <Voice-state> ()
-  (event-list #:init-value '() #:accessor events #:init-keyword #:events)
-  (when-moment #:accessor when #:init-keyword #:when)
-  (split-index #:accessor split-index)
-  (vector-index)
-  (state-vector)
-
-
-  ;;;
-  ; spanner-state is an alist
-  ; of (SYMBOL . RESULT-INDEX), which indicates where
-  ; said spanner was started.
-  (spanner-state #:init-value '() #:accessor span-state) )
-  
-(define-method (write (x <Voice-state> ) file)
-  (display (when x) file)
-  (display " evs = " file)
-  (display (events x) file)
-  (display " active = " file)
-  (display (span-state x) file)
-  (display "\n" file) )
-
-(define-method (note-events (vs <Voice-state>))
-  (define (f? x)
-    (equal? (ly:get-mus-property  x 'name) 'NoteEvent))
-  (filter f? (events vs)))
-
-(define-method (previous-voice-state (vs <Voice-state>))
-  (let* ((i (slot-ref vs 'vector-index))
-	 (v (slot-ref vs 'state-vector)) )
-    (if (< 0 i)
-	(vector-ref v (1- i))
-	#f)
-  ))
-
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-
-(define-class <Split-state> ()
-  (configuration #:init-value '() #:accessor configuration)
-  (when-moment #:accessor when #:init-keyword #:when)
-  (is #:init-keyword #:voice-states #:accessor voice-states)
-  (synced  #:init-keyword #:synced #:init-value  #f #:getter synced?) )
-			     
-
-
-
-(define-method (write (x <Split-state> ) f)
-  (display (when x) f)
-  (display " = " f)
-  (display (configuration x) f)
-  (if (synced? x)
-      (display " synced "))
-  (display "\n" f) )
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-
-
-(define (previous-span-state vs)
-	 (let*
-	     ((p (previous-voice-state vs)))
-
-	   (if p (span-state p)
-	       '())
-	 ))
-
-(define (make-voice-states evl)
-  (let
-      ((vec
-	(list->vector
-	 (map
-	  (lambda (v)
-	    (make <Voice-state>
-	      #:when (car v)
-	      #:events (map car (cdr v))
-	      ))
-	  evl))))
-    
-    (do ( (i 0 (1+ i)) )
-	( (= i (vector-length vec)) vec)
-      (slot-set! (vector-ref vec i) 'vector-index i)
-      (slot-set! (vector-ref vec i) 'state-vector vec)
-    )))
-
-
-(define (make-split-state vs1 vs2)
-  "Merge lists VS1 and VS2, containing Voice-state objects into vector
-of Split-state objects, crosslinking the Split-state vector and
-Voice-state objects
-"
-  
-  (define (helper ss-idx ss-list idx1 idx2)
-    (let*
-	((s1 (if (< idx1 (vector-length vs1)) (vector-ref vs1 idx1) #f))
-	 (s2 (if (< idx2 (vector-length vs2)) (vector-ref vs2 idx2) #f))
-	 (min (cond ((and s1 s2) (moment-min (when s1) (when s2)))
-		    (s1 (when s1))
-		    (s2 (when s2))
-		    (else #f)
-		    ))
-
-	 (inc1 (if (and s1 (equal? min (when s1))) 1 0))
-	 (inc2 (if (and s2 (equal? min (when s2))) 1 0))
-	 (ss-object
-	  (if min
-	      (make <Split-state>
-		#:when min
-		#:voice-states (cons s1 s2)
-		#:synced (= inc1 inc2)
-		) #f)) )
-      (if s1
-	  (set! (split-index s1) ss-idx))
-      (if s2
-	  (set! (split-index s2) ss-idx))
-      
-      (if min
-	  (helper (1+ ss-idx)
-		  (cons ss-object ss-list)
-		  (+ idx1 inc1)
-		  (+ idx2 inc2))
-	  ss-list )
-      ))
-
-    (list->vector
-     (reverse!
-      (helper 0 '() 0  0) '())) )
-      
-
-
-(define (analyse-spanner-states voice-state-vec)
-
-  (define (helper index active)
-    "Analyse EVS at INDEX, given state ACTIVE."
-    
-    (define (analyse-tie-start active ev)
-      (if (equal? (ly:get-mus-property ev 'name) 'TieEvent)
-	  (acons 'tie index active)
-	  active
-	  ))
-    
-    (define (analyse-tie-end active ev)
-      (if (equal? (ly:get-mus-property ev 'name) 'NoteEvent)
-	  (assoc-remove! active 'tie)
-	  active) )
-
-    (define (analyse-absdyn-end active ev)
-      (if (equal? (ly:get-mus-property ev 'name) 'AbsoluteDynamicEvent)
-	  (assoc-remove!
-	   (assoc-remove! active 'cresc)
-	   'decr)
-	  active) )
-    
-    (define (active<? a b)
-      (cond
-       ((symbol<? (car a) (car b)) #t)
-       ((symbol<? (car b) (car b)) #f)
-       (else
-	(< (cdr a) (cdr b)))
-       ))
-    
-    (define (analyse-span-event active ev)
-      (let*
-	  ((name (ly:get-mus-property ev 'name))
-	   (key (cond
-		 ((equal? name 'SlurEvent) 'slur)
-		 ((equal? name 'PhrasingSlurEvent) 'tie)
-		 ((equal? name 'BeamEvent) 'beam)
-		 ((equal? name 'CrescendoEvent) 'cresc)
-		 ((equal? name 'DecrescendoEvent) 'decr)
-		 (else #f)) )
-	   (sp (ly:get-mus-property ev 'span-direction)) )
-
-	(if (and (symbol? key) (ly:dir? sp))
-	    (if (= sp STOP)
-		(assoc-remove! active key)
-		(acons key
-		       (split-index (vector-ref voice-state-vec index))
-		       active))
-	    active)
-	))
-
-    (define (analyse-events active evs)
-      "Run all analyzers on ACTIVE and EVS"
-
-      (define (run-analyzer analyzer active evs)
-	(if (pair? evs)
-	    (run-analyzer analyzer (analyzer active (car evs)) (cdr evs))
-	    active
-	    ))
-      (define (run-analyzers analyzers active evs)
-	(if (pair? analyzers)
-	    (run-analyzers
-	     (cdr analyzers)
-	     (run-analyzer (car analyzers) active evs)
-	     evs)
-	    active
-	))
-
-      
-
-      (sort
-
-       ;; todo: use fold or somesuch.
-       (run-analyzers
-	(list
-	 analyse-absdyn-end
-	 analyse-span-event
-	      
-	 ;; note: tie-start/span comes after tie-end/absdyn.
-	 analyse-tie-end analyse-tie-start)
-
-	 active evs)
-       
-       active<?))
-
-    ;; must copy, since we use assoc-remove!
-    (if (< index (vector-length voice-state-vec))
-	(begin
-	  (set! active (analyse-events active (events (vector-ref voice-state-vec index))))
-	  (set! (span-state (vector-ref voice-state-vec index))
-		(list-copy active))
-
-	  (helper (1+ index) active))) )
-
-
-  (helper 0 '()) )
-
-
-	
-(define noticed '())
-(define part-combine-listener '())
-(define-public (set-part-combine-listener x)
-  (set! part-combine-listener x))
-
-(define-public (notice-the-events-for-pc context lst)
-  (set! noticed (acons (ly:context-id context) lst noticed)))
-
-(define-public (make-part-combine-music music-list)
-  (let*
-     ((m (make-music-by-name 'PartCombineMusic))
-      (m1 (context-spec-music (car music-list) 'Voice "one"))
-      (m2 (context-spec-music (cadr music-list) 'Voice "two"))
-      (props '((denies Thread)
-	       (consists Rest_engraver)
-	       (consists Note_heads_engraver)
-	       )))
-    
-    (ly:set-mus-property! m 'elements (list m1 m2))
-    (ly:set-mus-property! m1 'property-operations props)
-    (ly:set-mus-property! m2 'property-operations props)
-    (ly:run-translator m2 part-combine-listener)
-    (ly:run-translator m1 part-combine-listener)
-    (ly:set-mus-property! m 'split-list
-			 (determine-split-list (reverse! (cdr (assoc "one" noticed)) '())
-					       (reverse! (cdr (assoc "two" noticed)) '())))
-    (set! noticed '())
-    
-    m))
-
-
-    
-    
-
-
-
-(define-public (determine-split-list evl1 evl2)
-  "EVL1 and EVL2 should be ascending"
-
-
-  
-  (let*
-      ((pc-debug #f)
-       (chord-threshold 8)
-       (voice-state-vec1 (make-voice-states evl1))
-       (voice-state-vec2 (make-voice-states evl2))
-       (result (make-split-state voice-state-vec1 voice-state-vec2)) )
-
-
-  (define (analyse-time-step ri)
-    (define (put x . index)
-      "Put the result to X, starting from INDEX backwards.
-
-Only set if not set previously.
-"
-      
-      (let
-	  ((i (if (pair? index) (car index) ri)))
-
-	(if (and (<= 0 i)
-		 (not (symbol? (configuration (vector-ref result i)))))
-	    (begin
-	      (set! (configuration (vector-ref result i)) x)
-	      (put x (1- i))
-	    ))
-	))
-
-    
-    (define (copy-state-from state-vec vs)
-      (define (copy-one-state key-idx)
-	(let*
-	    ((idx (cdr key-idx))
-	     (prev-ss (vector-ref result idx))
-	     (prev (configuration prev-ss)) )
-	  (if (symbol? prev)
-	      (put prev))))
-      
-      (map copy-one-state (span-state vs)) )
-
-    (define (analyse-notes now-state) 
-      (let*
-	  (
-	   (vs1 (car (voice-states now-state)))
-	   (vs2 (cdr (voice-states now-state)))
-	   
-	   (notes1 (note-events vs1))
-	   (durs1 (sort (map (lambda (x) (ly:get-mus-property x 'duration)) notes1) ly:duration<?))
-	   (pitches1 (sort
-		      (map (lambda (x) (ly:get-mus-property x 'pitch)) notes1) ly:pitch<?))
-	   (notes2 (note-events vs2))
-	   (durs2     (sort (map (lambda (x) (ly:get-mus-property x 'duration)) notes2) ly:duration<?))
-	   (pitches2 (sort
-		      (map (lambda (x) (ly:get-mus-property x 'pitch)) notes2) ly:pitch<?)) )
-	
-	(cond
-	 ((> (length notes1) 1) (put 'apart))
-	 ((> (length notes2) 1) (put 'apart))
-	 ((not (= (length notes1) (length notes2)))
-	  (put 'apart))
-	 ((and
-	   (= (length durs1) 1)
-	   (= (length durs2) 1)
-	   (not (equal? (car durs1) (car durs2))))
-
-	  (put 'apart))
-	 (else
-	  (if (and (= (length pitches1) (length pitches2)))
-	      (if (and (pair? pitches1)
-		       (pair? pitches2)
-		       (< chord-threshold (ly:pitch-steps
-					   (ly:pitch-diff (car pitches1) (car pitches2)))))
-		  (put 'apart)
-
-		  ;; copy previous split state from spanner state
-		  (begin
-		    (if (previous-voice-state vs1)
-			(copy-state-from voice-state-vec1
-					 (previous-voice-state vs1)))
-		    (if (previous-voice-state vs2)
-			(copy-state-from voice-state-vec2
-					 (previous-voice-state vs2)))
-		    (if (and (null? (span-state vs1)) (null? (span-state vs2)))
-			(put 'chords))
-		    
-		    ))))
-	 )))
-	 
-
-
-    (if (< ri (vector-length result))
-	(let*
-	    ((now-state (vector-ref result ri))
-	     (vs1 (car (voice-states now-state)))
-	     (vs2 (cdr (voice-states now-state))))
-	  
-	  (cond
-	   ((not vs1) (put 'apart))
-	   ((not vs2) (put 'apart))
-	   (else
-	    (let*
-		(
-		 (active1 (previous-span-state vs1))
-		 (active2 (previous-span-state vs2))
-
-		 (new-active1 (span-state vs1))
-		 (new-active2 (span-state vs2)) )
-	      (if
-	       pc-debug
-	       (display (list (when now-state) ri
-				    active1 "->" new-active1
-				    active2 "->" new-active2
-				    "\n")))
-
-	      
-	      
-	      (if (and (synced? now-state)
-		       (equal? active1 active2)
-		       (equal? new-active1 new-active2))
-
-		  (analyse-notes now-state)
-
-		  ;; active states different:
-		  (put 'apart)
-		  ))
-
-					; go to the next one, if it exists.
-	    (analyse-time-step (1+ ri))
-	    )))))
-    
-  (define (analyse-a2 ri)
-    (if (< ri (vector-length result))
-	(let*
-	    ((now-state (vector-ref result ri))
-	     (vs1 (car (voice-states now-state)))
-	     (vs2 (cdr (voice-states now-state))) )
-	  
-	  (if (and (equal? (configuration now-state) 'chords)
-		   vs1 vs2)
-
-	      (let*
-		  ((notes1 (note-events vs1)) 
-		   (notes2 (note-events vs2)) )
-		(cond
-		 ((and
-		   (= 1 (length notes1))
-		   (= 1 (length notes2))
-		   (equal? (ly:get-mus-property (car notes1) 'pitch)
-			   (ly:get-mus-property (car notes2) 'pitch)))
-
-		  (set! (configuration now-state) 'unisono))
-		 ((and
-		   (= 0 (length notes1))
-		   (= 0 (length notes2)))
-		  (set! (configuration now-state) 'unisilence)))
-
-		))
-	  (analyse-a2 (1+ ri))
-
-	  )))
-	
-   (define (analyse-solo12 ri)
-    
-     (define (previous-config vs)
-       (let*  ((pvs (previous-voice-state vs))
-	       (spi (if pvs (split-index pvs) #f))
-	       (prev-split (if spi (vector-ref result spi) #f)) )
-	 
-	 (if prev-split
-	     (configuration prev-split)
-	     'apart)
-		    
-       ))
-     (define (put-range x a b)
-       (do
-	   ((i a (1+ i)))
-	   ((> i b) b)
-	 (set! (configuration (vector-ref result i)) x)
-	 ))
-     (define (put x)
-       (set! (configuration (vector-ref result ri)) x))
-	    
-     (define (try-solo type start-idx current-idx)
-       (if (< current-idx (vector-length result))
-	   (let*
-	       ((now-state (vector-ref result current-idx))
-		(solo-state ((if (equal? type 'solo1) car cdr) (voice-states now-state)))
-		(silent-state ((if (equal? type 'solo1) cdr car) (voice-states now-state)))
-		(silent-notes (if silent-state (note-events silent-state) '()))
-		(solo-notes (if solo-state (note-events solo-state) '()))
-		(soln (length solo-notes))
-		(siln (length silent-notes)))
-
-	     (cond
-	      ((not (equal? (configuration now-state) 'apart))
-	       current-idx)
-	      ((= soln 0) current-idx)
-	      ((> siln 0) current-idx)
-	      ((null? (span-state solo-state))
-	       (put-range type start-idx current-idx)
-	       current-idx)
-	      (else
-	       (try-solo type start-idx (1+ current-idx)))
-	       
-	      ))
-	   (1- current-idx)))
-	      
-     (define (analyse-moment ri)
-       "Analyse 'apart  starting at RI. Return next index. 
-"
-       
-        (let*
-	   ((now-state (vector-ref result ri))
-	    (vs1 (car (voice-states now-state)))
-	    (vs2 (cdr (voice-states now-state)))
-	    (notes1 (if vs1 (note-events vs1) '()))
-	    (notes2 (if vs2 (note-events vs2) '()))
-	    (n1 (length notes1))
-	    (n2 (length notes2)) )
-
-	  (cond
-	   ((and (= n1 0) (= n2 0))
-	    (put 'apart-silence)
-	    (1+ ri) )
-
-	   ((and (= n2 0)
-		 (equal? (when vs1) (when now-state))
-		 (null? (previous-span-state vs1)))
-	    (try-solo 'solo1 ri ri))
-	   ((and (= n1 0)
-		 (equal? (when vs2) (when now-state))
-		 (null? (previous-span-state vs2)))
-	    (try-solo 'solo2 ri ri))
-	   (else
-	    (1+ ri))
-       )))
-	  
-     (if (< ri (vector-length result))
-	 (if (equal? (configuration (vector-ref result ri)) 'apart)
-	     (analyse-solo12 (analyse-moment ri))
-	     (analyse-solo12 (1+ ri)))) )
-     
-   
-   (analyse-spanner-states voice-state-vec1)
-   (analyse-spanner-states voice-state-vec2)
-
-   (if #f
-       (begin
-	(display voice-state-vec1)
-	(display "***\n")
-	(display voice-state-vec2)
-	(display "***\n")
-	(display result)
-	(display "***\n")
-	))
-     
-   (analyse-time-step 0)
-   (analyse-a2 0)
-;   (display result)
-   (analyse-solo12 0)
-;   (if pc-debug (display result))
-
-   (set! result (map
-		 (lambda (x) (cons (when x) (configuration x)))
-		 (vector->list result)))
-
-   (if pc-debug (display result))
-   result))
-
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;; autochange - fairly related to part combining.
-
-(define-public (make-autochange-music music)
-
-  (define (generate-split-list event-list acc)
-    (if (null? event-list)
-	acc
-	(let*
-	    ((evs (map car (cdar event-list)))
-	     (now (caar event-list))
-	     (notes (filter (lambda (x)
-			      (equal? (ly:get-mus-property  x 'name) 'NoteEvent))
-			      evs))
-	     (pitch (if (pair? notes)
-			(ly:get-mus-property (car notes) 'pitch)
-			#f)) )
-
-	;; tail recursive.
-	(if (and pitch (not (= (ly:pitch-steps pitch) 0)))
-	    (generate-split-list
-	     (cdr event-list)
-	     (cons (cons now (sign (ly:pitch-steps pitch))) acc))
-	    (generate-split-list (cdr event-list) acc)
-	    ))
-	))
-
-  (set! noticed '())
-  
-  (let*
-      ((m (make-music-by-name 'AutoChangeMusic))
-       (context (ly:run-translator music part-combine-listener))
-       (evs (last-pair noticed))
-       (split
-	(reverse!
-	 (generate-split-list (if (pair? evs)
-				  (reverse! (cdar evs) '()) '())
-			      '())
-	 '())
-       ))
-
-    (ly:set-mus-property! m 'element music)
-    (ly:set-mus-property! m 'split-list split)
-    
-    (set! noticed '())
-    m
-  ))
-
-
diff --git a/scm/script.scm b/scm/script.scm
deleted file mode 100644
index d8f1be5e35..0000000000
--- a/scm/script.scm
+++ /dev/null
@@ -1,164 +0,0 @@
-
-(set! default-script-alist
-      (append 
-       '(("thumb" .
-	  (
-	   (script-molecule . (feta . ("thumb"  . "thumb")))
-	   (direction . 1)))
-	 ("accent" .
-	  (
-	   (script-molecule . (feta . ("sforzato" .  "sforzato")))
-	   (side-relative-direction . -1))
-	  )	 
-	 ("marcato" .
-	  (
-	   (script-molecule . (feta . ("dmarcato" . "umarcato")))
-	   (side-relative-direction .  -1)))
-	 ("staccatissimo" .
-	  (
-	   (script-molecule . (feta . ("dstaccatissimo" . "ustaccatissimo")))
-	   (side-relative-direction .  -1)))
-	 
-	 ("portato" .
-	  ((script-molecule . (feta . ("dportato" . "uportato")))
-	   (side-relative-direction . -1)))
-
-	 ("accentus" .
-	  ((script-molecule . (feta . ("uaccentus" . "uaccentus")))
-	   (side-relative-direction .  -1)
-	   (follow-into-staff  . #t)
-	   (priority . -100)
-	   (direction  . 1)))
-	 ("ictus" .
-	  ((script-molecule . (feta . ("ictus" . "ictus")))
-	   (side-relative-direction .  -1)
-	   (follow-into-staff  . #t)
-	   (priority . -100)
-	   (direction  . -1)))
-	 ("semicirculus" .
-	  ((script-molecule . (feta . ("dsemicirculus" . "dsemicirculus")))
-	   (side-relative-direction .  -1)
-	   (follow-into-staff  . #t)
-	   (priority . -100)
-	   (direction  . 1)))
-	 ("circulus" .
-	  ((script-molecule . (feta . ("circulus" . "circulus")))
-	   (side-relative-direction .  -1)
-	   (follow-into-staff  . #t)
-	   (priority . -100)
-	   (direction  . 1)))
-
-	 ("signumcongruentiae" .
-	  ((script-molecule . (feta . ("dsignumcongruentiae" . "usignumcongruentiae")))
-	   (direction .  1)))
-	 ("fermata" .
-	  ((script-molecule . (feta . ("dfermata" . "ufermata")))
-	   (direction .  1)))
-	 ("shortfermata" .
-	  ((script-molecule . (feta . ("dshortfermata" . "ushortfermata")))
-	   (direction .  1)))
-	 ("longfermata" .
-	  ((script-molecule . (feta . ("dlongfermata" . "ulongfermata")))
-	   (direction .  1)))
-	 ("verylongfermata" .
-	  ((script-molecule . (feta . ("dverylongfermata" . "uverylongfermata")))
-	   (direction .  1)))
-	 ("stopped" .
-	  ((script-molecule . (feta . ("stopped" . "stopped")))
-	   (direction  . 1) ))
-	 ("staccato" .
-	  ((script-molecule . (feta . ("staccato" . "staccato")))
-	   (side-relative-direction .  -1)
-	   (follow-into-staff  . #t)
-	   (priority . -100)))
-	 ("tenuto" .
-	  ((script-molecule . (feta . ("tenuto" . "tenuto")))
-	   (follow-into-staff . #t)
-	   (side-relative-direction . -1)))
-	 ("comma" .
-	  ((script-molecule . (feta . ("lcomma" . "rcomma")))
-	   (follow-into-staff . #t)
-	   (direction . 1)))
-	 ("varcomma" .
-	  ((script-molecule . (feta . ("lvarcomma" . "rvarcomma")))
-	   (follow-into-staff . #t)
-	   (direction . 1)))
-	 ("upbow" .
-	  ((script-molecule . (feta . ("upbow" . "upbow")))
-	   (direction  . 1) ))
-	 ("downbow" .
-	  ((script-molecule . (feta . ("downbow" . "downbow")))
-	   (direction  . 1) ))
-	 ("lheel" .
-	  ((script-molecule . (feta . ("upedalheel" . "upedalheel")))
-	   (direction .  -1))
-	  )
-	 ("rheel" .
-	  ((script-molecule . (feta . ("dpedalheel" . "dpedalheel")))
-	   (direction  . 1) ))
-	 ("ltoe" .
-	  ((script-molecule . (feta . ("upedaltoe" . "upedaltoe")))
-	   (direction  . -1) ))
-	 ("rtoe" .
-	  ((script-molecule . (feta . ("dpedaltoe" . "dpedaltoe")))
-	   (direction  . 1) ))
-	 ("turn" .
-	  ((script-molecule . (feta . ("turn" . "turn")))
-	   (direction  . 1) ))
-	 ("open" .
-	  ((script-molecule . (feta . ("open" . "open")))
-	   (direction  . 1) ))
-	 ("flageolet" .
-	  ((script-molecule . (feta . ("flageolet" . "flageolet")))
-	   (direction  . 1) ))
-	 ("reverseturn" .
-	  ((script-molecule . (feta . ("reverseturn" . "reverseturn")))
-	   (direction  . 1) ))
-	 ("trill" .
-	  ((script-molecule . (feta . ("trill" . "trill")))
-	   (direction . 1)
-	   (priority . 2000)))
-	 ("prall" .
-	  ((script-molecule . (feta . ("prall" . "prall")))
-	   (direction  . 1) ))
-	 ("mordent" .
-	  ((script-molecule . (feta . ("mordent" . "mordent")))
-	   (direction  . 1) ))
-	 ("prallprall" .
-	  ((script-molecule . (feta . ("prallprall" . "prallprall")))
-	   (direction  . 1) ))
-	 ("prallmordent" .
-	  ((script-molecule . (feta . ("prallmordent" . "prallmordent")))
-	   (direction  . 1) ))
-	 ("upprall" .
-	  ((script-molecule . (feta . ("upprall" . "upprall")))
-	   (direction  . 1) ))
-	 ("downprall" .
-	  ((script-molecule . (feta . ("downprall" . "downprall")))
-	   (direction  . 1) ))
-	 ("upmordent" .
-	  ((script-molecule . (feta . ("upmordent" . "upmordent")))
-	   (direction  . 1) ))
-	 ("downmordent" .
-	  ((script-molecule . (feta . ("downmordent" . "downmordent")))
-	   (direction  . 1) ))
-	 ("lineprall" .
-	  ((script-molecule . (feta . ("lineprall" . "lineprall")))
-	   (direction  . 1) ))
-	 ("pralldown" .
-	  ((script-molecule . (feta . ("pralldown" . "pralldown")))
-	   (direction  . 1) ))
-	 ("prallup" .
-	  ((script-molecule . (feta . ("prallup" . "prallup")))
-	   (direction  . 1) ))
-	 ("segno" .
-	  ((script-molecule . (feta . ("segno" . "segno")))
-	   (direction  . 1) ))
-	 ("coda" .
-	  ((script-molecule . (feta . ("coda" . "coda")))
-	   (direction  . 1) ))
-	 ("varcoda" .
-	  ((script-molecule . (feta . ("varcoda" . "varcoda")))
-	   (direction  . 1) )))
-       default-script-alist)
-      )
diff --git a/scm/slur.scm b/scm/slur.scm
deleted file mode 100644
index bc13a4e6ed..0000000000
--- a/scm/slur.scm
+++ /dev/null
@@ -1,131 +0,0 @@
-;;;;
-;;;; slur.scm -- Slur scheme stuff
-;;;;
-;;;; source file of the GNU LilyPond music typesetter
-;;;; 
-;;;; (c)  2000--2004 Jan Nieuwenhuizen <janneke@gnu.org>
-;;;;
-
-(define (attached-to-stem slur dir)
-  (let* ((note-columns (ly:get-grob-property slur 'note-columns))
-	 (col (if (= dir 1) (car note-columns) (car (reverse note-columns))))
-	 (stem (ly:get-grob-property col 'stem)))
-    (and
-     (eq? col (ly:get-spanner-bound slur dir))
-     stem
-     (ly:get-grob-property stem 'heads))))
-
-
-;; Slur-extremity-rules is a list of rules.  Each rule is a pair 
-;; (fuction . attachment), where function takes two arguments,
-;; the slur and the direction of the attachment.
-;;
-;; The rules are tried starting from the car of this list.  If the
-;; function part (car) evaluates to #t, the corresponding
-;; attachment (cdr) is used for the slur's dir.  Otherwise, the next
-;; rule is tried.
-;;
-;; Currently, we have attachments:
-;;
-;;    'head 'along-side-stem 'stem 'loose-end
-;;
-
-(define default-slur-extremity-rules
-  (list
-
-   ;; (cons (lambda (slur dir) (begin (display "before sanity check") (newline))#f) #f)
-
-   ;; urg: don't crash on a slur without note-columns
-   (cons (lambda (slur dir)
-	   (< (length (ly:get-grob-property slur 'note-columns)) 1)) 'head)
-
-   ;; (cons (lambda (slur dir) (begin (display "before loose-end") (newline))#f) #f)
-   (cons (lambda (slur dir) (not (attached-to-stem slur dir)))  'loose-end)
-
-   ;; (cons (lambda (slur dir) (begin (display "before head") (newline))#f) #f)
-
-   (cons (lambda (slur dir)
-	   ;; urg, code dup
-	   (let* ((note-columns (ly:get-grob-property slur 'note-columns))
-		  (col (car (if (= dir 1) note-columns (reverse note-columns))))
-		  (stem (ly:get-grob-property col 'stem)))
-	     
-	     (and stem
-		  (not (equal? (ly:get-grob-property slur 'direction) 
-			       (ly:get-grob-property stem 'direction))))))  'head)
-
-   ;; (cons (lambda (slur dir) (begin (display "before stem") (newline))#f) #f)
-
-   (cons (lambda (slur dir)
-	   ;; if attached-to-stem
-	   (and (attached-to-stem slur dir)
-		;; and got beam
-		;; urg, code dup
-		(let* ((note-columns (ly:get-grob-property slur 'note-columns))
-		       (col (if (= dir 1) (car note-columns) (car (reverse note-columns))))
-		       (stem (ly:get-grob-property col 'stem)))
-		  (and stem
-		       (ly:get-grob-property stem 'beam)
-		       ;; and beam on same side as slur
-		       (let ((beaming (ly:get-grob-property stem 'beaming)))
-			 ;; (display "beaming (") (display dir) (display "): ") (write beaming) (newline)
-			 (if (pair? beaming)
-			     (>= (length (if (= dir -1) (cdr beaming) (car beaming)))
-				1)
-			     #f))))))
-	 'stem)
-
-   ;; (cons (lambda (slur dir) (begin (display "before loose-end") (newline))#f) #f)
-   (cons (lambda (slur dir) (not (attached-to-stem slur dir)))  'loose-end)
-   ;; (cons (lambda (slur dir) (begin (display "after loose-end") (newline))#f) #f)
-
-   ;; default case, attach to head
-   (cons (lambda (x y) #t)  'head)
-   ))
-
-
-;; This list defines the offsets for each type of attachment.
-;; The format of each element is
-;; (attachment stem-dir*dir slur-dir*dir)
-;; Different attachments have different default points:
-;;
-;; head: Default position is centered in X, on outer side of head Y
-;; along-side-stem: Default position is on stem X, on outer side of head Y
-;; stem: Default position is on stem X, at stem end Y
-(define default-slur-extremity-offset-alist
-  '(
-    ((head 1 1) . (-0.25 . 0.75))
-    ((head 1 -1) . (-0.25 . 0.75))
-    ((head -1 1) . (-0.25 . 0.75))
-    ((head -1 -1) . (-0.85 . 0.75))
-
-    ((stem 1 1) . (-0.125 . 0.5))
-    ((stem -1 -1) . (-0.125 . 0.5))
-
-    ((loose-end 1 1) . (-0.4 . 0))
-    ((loose-end 1 -1) . (-0.4 . 0))
-    ((loose-end -1 -1) . (-4 . 0))
-    ((loose-end -1 1) . (-4 . 0))
-    ))
-
-;; This is a bit of a hack: slurs and phrasing slurs
-;; attaching at the same note must not collide.
-;; However, slurs (and phrasing slurs) should look
-;; at scripts and eachother.
-(define default-phrasing-slur-extremity-offset-alist
-  '(
-    ((head 1 1) . (-0.25 . 1.25))
-    ((head 1 -1) . (-0.25 . 1.25))
-    ((head -1 1) . (-0.25 . 1.25))
-    ((head -1 -1) . (-0.85 . 1.25))
-
-    ((stem 1 1) . (-0.25 . 1.5))
-    ((stem -1 -1) . (-0.25 . 1.5))
-
-    ((loose-end 1 1) . (-0.4 . 0))
-    ((loose-end 1 -1) . (-0.4 . 0))
-    ((loose-end -1 -1) . (-4 . 0))
-    ((loose-end -1 1) . (-4 . 0))
-    ))
-
-
diff --git a/scm/standalone.scm b/scm/standalone.scm
deleted file mode 100644
index 939c43cbc2..0000000000
--- a/scm/standalone.scm
+++ /dev/null
@@ -1,37 +0,0 @@
-;;;; standalone.scm -- implement Scheme stuff for use without LilyPond
-;;;;
-;;;;  source file of the GNU LilyPond music typesetter
-;;;; 
-;;;; (c)  1998--2004 Jan Nieuwenhuizen <janneke@gnu.org>
-;;;; Han-Wen Nienhuys <hanwen@cs.uu.nl>
-
-(define standalone (not (defined? 'ly:gulp-file)))
-;;(write standalone (current-error-port))
-
-(define (gulp-file name)
-  (let* ((file (open-input-file name))
-	 (text (read-delimited "" file)))
-    (close file)
-    text))
-
-(define (scm-gulp-file name)
-  (set! %load-path 
-	(cons (string-append (getenv 'LILYPONDPREFIX) "/ly")
-	      (cons (string-append (getenv 'LILYPONDPREFIX) "/ps")
-		    %load-path)))
-  (let ((path (%search-load-path name)))
-       (if path
-	   (gulp-file path)
-	   (gulp-file name))))
-
-(define (scm-number->string x)
-  (let ((e (inexact->exact x)))
-    (string-append (if (= e x)
-		       (number->string e)
-		       (number->string x))
-		   " ")))
-
-(define ly:gulp-file scm-gulp-file)
-(define ly:number->string scm-number->string)
-
-(eval-string (ly:gulp-file "lily.scm"))
diff --git a/scm/to-xml.scm b/scm/to-xml.scm
deleted file mode 100644
index 0e6bd24ae6..0000000000
--- a/scm/to-xml.scm
+++ /dev/null
@@ -1,260 +0,0 @@
-
-(use-modules (ice-9 regex)
-	     (srfi srfi-1)
-	     (oop goops))
-
-"
-Todo: this is a quick hack; it makes more sense to define a GOOPS
-class of a documentnode (similar to how
-; the documentation is generated.)
-
-That is much cleaner: building the document, and dumping it to output
-is then separated.
-
-
-   foo = \\score { ... }
-
-   #(as-xml foo)
-
-   <score>
-     <music></music>
-     <paperoutput>
-     </paperoutput>
-   </score>
-"
-
-(define-class <xml-node> ()
-  (name #:init-value "" #:accessor node-name #:init-keyword #:name)
-  (value #:init-value "" #:accessor node-value #:init-keyword #:value)
-  (attributes #:init-value '()
-	      #:accessor node-attributes
-	      #:init-keyword #:attributes)
-  (children #:init-value '()
-	    #:accessor node-children
-	    #:init-keyword #:children))
-
-(define node-names
-  '((NoteEvent . note)
-    (SequentialMusic . measure)
-
-    ;;ugh
-    (pitch . pitch)
-    (duration . duration)
-    (octave . octave)
-    (step . step)
-    ))
-
-(define (assoc-get-default key alist default)
-  "Return value if KEY in ALIST, else DEFAULT."
-  (let ((entry (assoc key alist)))
-    (if entry (cdr entry) default)))
-
-(define (musicxml-node->string node)
-  (let ((xml-name (assoc-get-default (node-name node) node-names #f)))
-  (string-append
-   (if xml-name (open-tag xml-name '() '()) "")
-   (if (equal? (node-value node) "")
-       (string-append
-	(if xml-name "\n" "")
-	(apply string-append (map musicxml-node->string (node-children node))))
-       (node-value node))
-   (if xml-name (close-tag xml-name) "")
-   (if xml-name "\n" ""))))
-
-(define (xml-node->string node)
-  (string-append
-   "\n"
-   (open-tag (node-name node) (node-attributes node) '())
-   (if (equal? (node-value node) "")
-       (string-append
-	(apply string-append (map xml-node->string (node-children node))))
-       (node-value node))
-   "\n"
-   (close-tag (node-name node))))
-
-(define (musicxml-duration->xml-node d)
-  (make <xml-node>
-    #:name 'duration
-    #:value (number->string (ash 1 (ly:duration-log d)))))
-
-(define (duration->xml-node d)
-  (make <xml-node>
-    #:name 'duration
-    ;; #:value (number->string (ash 1 (ly:duration-log d)))))
-    #:attributes `((log . ,(ly:duration-log d))
-		   (dots . ,(ly:duration-dot-count d))
-		   (numer . ,(car (ly:duration-factor d)))
-		   (denom . ,(cdr (ly:duration-factor d))))))
-
-(define (musicxml-pitch->xml-node p)
-  (make <xml-node>
-    #:name 'pitch
-    #:children
-    (list
-     (make <xml-node>
-       #:name 'step
-       #:value (list-ref  '("C" "D" "E" "F" "G" "A" "B")
-			  (ly:pitch-notename p)))
-     (make <xml-node>
-       #:name 'octave
-       #:value (number->string (ly:pitch-octave p))))))
-
-(define (pitch->xml-node p)
-  (make <xml-node>
-    #:name 'pitch
-    #:attributes `((octave . ,(ly:pitch-octave p))
-		   (notename . ,(ly:pitch-notename p))
-		   (alteration . ,(ly:pitch-alteration p)))))
-			       
-(define (music->xml-node music)
-  (let* ((name (ly:get-mus-property music 'name))
-	 (e (ly:get-mus-property music 'element))
-	 (es (ly:get-mus-property music 'elements))
-	 (mprops (ly:get-mutable-properties music))
-	 (d (ly:get-mus-property music 'duration))
-	 (p (ly:get-mus-property music 'pitch))
-	 (ignore-props '(origin elements duration pitch element)))
-    
-    (make <xml-node>
-      #:name name
-      #:children
-      (apply
-       append
-       (if (ly:pitch? p) (list (pitch->xml-node p)) '())
-       (if (ly:duration? d) (list (duration->xml-node d)) '())
-       (if (pair? es) (map music->xml-node es) '())
-       (if (ly:music? e) (list (music->xml-node e)) '())
-       '()))))
-
-(define (dtd-header)
-  (string-append
-   "<?xml version=\"1.0\"?>
-<!DOCTYPE MUSIC ["
-   preliminary-dtd
-   "
-]>
-
-"))
-  
- 
-;; as computed from input/trip.ly, by
-;; http://www.pault.com/pault/dtdgenerator/
-
-;; must recompute with larger, more serious piece, and probably
-;; manually add stuff
-(define preliminary-dtd
-  "
-<!ELEMENT duration EMPTY >
-<!ATTLIST duration denom ( 1 | 3 | 5 ) #REQUIRED >
-<!ATTLIST duration dots ( 0 | 1 ) #REQUIRED >
-<!ATTLIST duration log ( 0 | 1 | 2 | 3 | 4 ) #REQUIRED >
-<!ATTLIST duration numer ( 1 | 4 ) #REQUIRED >
-
-<!ELEMENT music ( duration | music | pitch )* >
-<!ATTLIST music articulation-type ( lheel | ltoe | marcato | rheel | rtoe | staccato | tenuto ) #IMPLIED >
-<!ATTLIST music change-to-id NMTOKEN #IMPLIED >
-<!ATTLIST music change-to-type NMTOKEN #IMPLIED >
-<!ATTLIST music context-id CDATA #IMPLIED >
-<!ATTLIST music context-type ( PianoStaff | Score | Staff | Timing | Voice ) #IMPLIED >
-<!ATTLIST music denominator NMTOKEN #IMPLIED >
-<!ATTLIST music direction ( 0 | 1 ) #IMPLIED >
-<!ATTLIST music force-accidental CDATA #IMPLIED >
-<!ATTLIST music grob-property NMTOKEN #IMPLIED >
-<!ATTLIST music grob-value CDATA #IMPLIED >
-<!ATTLIST music iterator-ctor CDATA #IMPLIED >
-<!ATTLIST music label NMTOKEN #IMPLIED >
-<!ATTLIST music last-pitch CDATA #IMPLIED >
-<!ATTLIST music numerator NMTOKEN #IMPLIED >
-<!ATTLIST music penalty NMTOKEN #IMPLIED >
-<!ATTLIST music pitch-alist CDATA #IMPLIED >
-<!ATTLIST music pop-first CDATA #IMPLIED >
-<!ATTLIST music repeat-count NMTOKEN #IMPLIED >
-<!ATTLIST music span-direction ( -1 | 1 ) #IMPLIED >
-<!ATTLIST music span-type NMTOKEN #IMPLIED >
-<!ATTLIST music symbol NMTOKEN #IMPLIED >
-<!ATTLIST music text NMTOKEN #IMPLIED >
-<!ATTLIST music text-type NMTOKEN #IMPLIED >
-<!ATTLIST music type NMTOKEN #REQUIRED >
-<!ATTLIST music value CDATA #IMPLIED >
-
-<!ELEMENT pitch EMPTY >
-<!ATTLIST pitch alteration ( 0 | 1 ) #REQUIRED >
-<!ATTLIST pitch notename ( 0 | 1 | 2 | 3 | 4 | 5 | 6 ) #REQUIRED >
-<!ATTLIST pitch octave ( -1 | -2 | 0 | 1 ) #REQUIRED >")
-
-
-;; should use macro
-(define (assert x)
-  (if x
-      #t
-      (error "assertion failed")))
-
-(define (re-sub re to string)
-  (regexp-substitute/global #f re string 'pre to 'post))
-
-(define (re-sub-alist string alist)
-  (if (null? alist)
-      string
-      (re-sub (caar alist) (cdar alist)
-	      (re-sub-alist string (cdr alist)))))
-
-(define xml-entities-alist
-  '(("\"" . "&quot;")
-    ("<" . "&lt;")
-    (">" . "&gt;")
-    ("'" . "&apos;")
-    ("&" . "&amp;")))
-
-(define (open-tag tag attrs exceptions)
-  (define (candidate? x)
-    (not (memq (car x) exceptions)))
-  
-  (define (dump-attr sym-val)
-    (let*
-	(
-	(sym (car sym-val))
-	(val (cdr sym-val))
-	)
-      
-    (string-append
-     "\n   "
-    (symbol->string sym)
-    "=\""
-    (let ((s (call-with-output-string (lambda (port) (display val port)))))
-      (re-sub-alist s xml-entities-alist))
-    "\""
-    )))
-
-  (string-append
-   "<" (symbol->string tag)
-   (apply string-append (map dump-attr (filter candidate? attrs)))
-   ">"))
-
-(define (close-tag name)
-  (string-append "</" (symbol->string name) ">"))
-
-(define-public (music-to-xml music port)
-  "Dump XML-ish stuff to PORT."
-
-  ;; dtd contains # -- This confuses tex during make web.
-  ;;
-  ;;  (display (dtd-header) port)
-  
-  (display (open-tag 'music '((type . score)) '()) port)
-  (display (xml-node->string (music->xml-node music)) port)
-  (display (close-tag 'music) port))
-
-(define-public (music-to-musicxml music port)
-  "Dump MusicXML-ish stuff to PORT."
-
-  ;; dtd contains # -- This confuses tex during make web.
-  ;;
-  ;;  (display (dtd-header) port)
-
-  (define pitch->xml-node musicxml-pitch->xml-node)
-  (define duration->xml-node musicxml-duration->xml-node)
-  
-  (display (open-tag 'music '((type . score)) '()) port)
-  (display (musicxml-node->string (music->xml-node music)) port)
-  (display (close-tag 'music) port))
-
diff --git a/scm/translation-functions.scm b/scm/translation-functions.scm
deleted file mode 100644
index 0dd2787a4c..0000000000
--- a/scm/translation-functions.scm
+++ /dev/null
@@ -1,37 +0,0 @@
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;; tuplets.
-
-(define-public (denominator-tuplet-formatter mus)
-  (number->string (ly:get-mus-property mus 'denominator)))
-
-(define-public (fraction-tuplet-formatter mus)
-  (string-append (number->string (ly:get-mus-property mus 'numerator))
-		 ":"
-		 (number->string (ly:get-mus-property mus 'denominator))
-		 ))
-
-
-;; metronome marks
-(define-public (format-metronome-markup event context)
-  (let*
-      ((dur  (ly:get-mus-property event 'tempo-unit))
-       (count (ly:get-mus-property event 'metronome-count))
-       (note-mark (make-note-by-number-markup (ly:duration-log dur)
-					      (ly:duration-dot-count dur)
-					      1) ) ) 
-    (make-line-markup
-     (list
-      note-mark
-      (make-simple-markup  "=")
-      (make-simple-markup (number->string count))
-      
-  ))))
-
-
-
-(define-public (format-mark-letters mark context)
-  (make-bold-markup (make-markletter-markup (1- mark))))
-
-(define-public (format-mark-numbers mark context)
-  (make-bold-markup (number->string mark)))
-
diff --git a/scripts/GNUmakefile b/scripts/GNUmakefile
deleted file mode 100644
index d196b692e5..0000000000
--- a/scripts/GNUmakefile
+++ /dev/null
@@ -1,11 +0,0 @@
-depth = ..
-
-SEXECUTABLES=convert-ly lilypond-book lilypond abc2ly etf2ly musedata2ly pmx2ly mup2ly midi2ly
-STEPMAKE_TEMPLATES=script help2man po
-LOCALSTEPMAKE_TEMPLATES = lilypond
-HELP2MAN_EXECS = $(SEXECUTABLES)
-
-include $(depth)/make/stepmake.make 
-include $(stepdir)/executable-targets.make
-
-
diff --git a/scripts/abc2ly.py b/scripts/abc2ly.py
deleted file mode 100644
index bde1e8cfe5..0000000000
--- a/scripts/abc2ly.py
+++ /dev/null
@@ -1,1332 +0,0 @@
-#!@PYTHON@
-
-# once upon a rainy monday afternoon.
-#
-#   ...
-#
-# (not finished.)
-# ABC standard v1.6:  http://www.gre.ac.uk/~c.walshaw/abc2mtex/abc.txt
-#
-# Enhancements  (Roy R. Rankin)
-#
-# Header section moved to top of lilypond file
-# handle treble, treble-8, alto, and bass clef
-# Handle voices (V: headers) with clef and part names, multiple voices
-# Handle w: lyrics with multiple verses
-# Handle key mode names for minor, major, phrygian, ionian, locrian, aeolian,
-#     mixolydian, lydian, dorian
-# Handle part names from V: header
-# Tuplets handling fixed up
-# Lines starting with |: not discarded as header lines
-# Multiple T: and C: header entries handled
-# Accidental maintained until next bar check
-# Silent rests supported
-# articulations fermata, upbow, downbow, ltoe, accent, tenuto supported
-# Chord strings([-^]"string") can contain a '#'
-# Header fields enclosed by [] in notes string processed
-# W: words output after tune as abc2ps does it (they failed before)
-
-# Enhancements (Laura Conrad)
-#
-# Barring now preserved between ABC and lilypond
-# the default placement for text in abc is above the staff.
-# %%LY now supported.
-# \breve and \longa supported.
-# M:none doesn't crash lily.
-
-# Limitations
-#
-# Multiple tunes in single file not supported
-# Blank T: header lines should write score and open a new score
-# Not all header fields supported
-# ABC line breaks are ignored
-# Block comments generate error and are ignored
-# Postscript commands are ignored
-# lyrics not resynchronized by line breaks (lyrics must fully match notes)
-# %%LY slyrics can't be directly before a w: line.
-# ???
-
-
-
-#TODO:
-#
-# Convert to new chord styles.
-#
-# UNDEF -> None
-#
-  
-  
-program_name = 'abc2ly'
-version = '@TOPLEVEL_VERSION@'
-if version == '@' + 'TOPLEVEL_VERSION' + '@':
-	version = '(unknown version)'		# uGUHGUHGHGUGH
-  
-import __main__
-import getopt
-import sys
-import re
-import string
-import os
-
-
-UNDEF = 255
-state = UNDEF
-strict = 0
-voice_idx_dict = {}
-header = {}
-header['footnotes'] = ''
-lyrics = []
-slyrics = []
-voices = []
-state_list = []
-repeat_state = [0] * 8
-current_voice_idx = -1
-current_lyric_idx = -1
-lyric_idx = -1
-part_names = 0
-default_len = 8
-length_specified = 0
-nobarlines = 0
-global_key = [0] * 7			# UGH
-names = ["One", "Two", "Three"]
-DIGITS='0123456789'
-alphabet="ABCDEFGHIJKLMNOPQRSTUVWXYZ"	
-HSPACE=' \t'
-midi_specs = ''
-
-
-def error (msg):
-	sys.stderr.write (msg)
-	if strict:
-		sys.exit (1)
-	
-	
-def check_clef(s):
-      if not s:
-              return ''
-      if re.match('-8va', s) or re.match('treble8', s):
-	      # treble8 is used by abctab2ps; -8va is used by barfly,
-	      # and by my patch to abc2ps. If there's ever a standard
-	      # about this we'll support that.
-	      s = s[4:]
-	      state.base_octave = -1
-	      voices_append("\\clef \"G_8\"\n")
-      elif re.match('^treble', s):
-              s = s[6:]
-              if re.match ('^-8', s):
-                      s = s[2:]
-                      state.base_octave = -2
-                      voices_append("\\clef \"G_8\"\n")
-              else:
-                      state.base_octave = 0
-                      voices_append("\\clef treble\n")
-      elif re.match('^alto', s):
-              s = s[4:]
-              state.base_octave = -1
-              voices_append ("\\clef alto\n" )
-      elif re.match('^bass',s ):
-              s = s[4:]
-              state.base_octave = -2
-              voices_append ("\\clef bass\n" )
-      return s
-
-def select_voice (name, rol):
-	if not voice_idx_dict.has_key (name):
-	      state_list.append(Parser_state())
-	      voices.append ('')
-	      slyrics.append ([])
-	      voice_idx_dict[name] = len (voices) -1
-	__main__.current_voice_idx =  voice_idx_dict[name]
-	__main__.state = state_list[current_voice_idx]
-	while rol != '':
-	      m = re.match ('^([^ \t=]*)=(.*)$', rol) # find keywork
-	      if m:
-		      keyword = m.group(1)
-		      rol = m.group (2)
-		      a = re.match ('^("[^"]*"|[^ \t]*) *(.*)$', rol)
-		      if a:
-			      value = a.group (1)
-			      rol = a.group ( 2)
-			      if keyword == 'clef':
-				      check_clef(value)
-			      elif keyword == "name":
-				      value = re.sub ('\\\\','\\\\\\\\', value)
-				      voices_append ("\\property Staff.instrument = %s\n" % value )
-				      __main__.part_names = 1
-			      elif keyword == "sname" or keyword == "snm":
-				      voices_append ("\\property Staff.instr = %s\n" % value )
-
-	      else:
-		      break
-
-	return
-
-
-def dump_header (outf,hdr):
-	outf.write ('\\header {\n')
-	ks = hdr.keys ()
-	ks.sort ()
-	for k in ks:
- 		hdr[k] = re.sub('"', '\\"', hdr[k])		
-		outf.write ('\t%s = "%s"\n'% (k,hdr[k]))
- 	outf.write ('}')
-
-def dump_lyrics (outf):
-	if (len(lyrics)):
-		outf.write("\n\\score\n{\n    \\context Lyrics\n    <<\n")
-		for i in range (len (lyrics)):
-			outf.write ( lyrics [i])
-			outf.write ("\n")
-		outf.write("    >>\n    \\paper{}\n}\n")
-
-def dump_default_bar (outf):
-	"""
-	Nowadays abc2ly outputs explicits barlines (?)
-	"""
- 	outf.write ("\n\\property Score.defaultBarType=\"empty\"\n")
-
-
-def dump_slyrics (outf):
-	ks = voice_idx_dict.keys()
-	ks.sort ()
-	for k in ks:
-		if re.match('[1-9]', k):
-			m = alphabet[string.atoi(k)]
-		else:
-			m = k
-		for i in range (len(slyrics[voice_idx_dict[k]])):
-			l=alphabet[i]
-			outf.write ("\nwords%sV%s = \\lyrics  {" % (m, l))
-			outf.write ("\n" + slyrics [voice_idx_dict[k]][i])
-			outf.write ("\n}")
-
-def dump_voices (outf):
-	global doing_alternative, in_repeat
-	ks = voice_idx_dict.keys()
-	ks.sort ()
-	for k in ks:
-		if re.match ('[1-9]', k):
-			m = alphabet[string.atoi(k)]
-		else:
-			m = k
-		outf.write ("\nvoice%s = \\notes {" % m)
-		dump_default_bar(outf)
-		if repeat_state[voice_idx_dict[k]]:
-			outf.write("\n\\repeat volta 2 {")
-		outf.write ("\n" + voices [voice_idx_dict[k]])
-		if not using_old:
-			if doing_alternative[voice_idx_dict[k]]:
-				outf.write("}")
-			if in_repeat[voice_idx_dict[k]]:
-				outf.write("}")
-		outf.write ("\n}")
-
-def try_parse_q(a):
-	global midi_specs
-	#assume that Q takes the form "Q:1/4=120"
-	#There are other possibilities, but they are deprecated
-	if string.count(a, '/') == 1:
-		array=string.split(a,'/')
-		numerator=array[0]
-		if numerator != 1:
-			sys.stderr.write("abc2ly: Warning, unable to translate a Q specification with a numerator of %s: %s\n" % (numerator, a))
-		array2=string.split(array[1],'=')
-		denominator=array2[0]
-		perminute=array2[1]
-		duration=str(string.atoi(denominator)/string.atoi(numerator))
-		midi_specs=string.join(["\\tempo", duration, "=", perminute])
-	else:
-		sys.stderr.write("abc2ly: Warning, unable to parse Q specification: %s\n" % a)
-        
-def dump_score (outf):
-	outf.write (r"""\score{
-        \notes <<
-""")
-
-	ks  = voice_idx_dict.keys ();
-	ks.sort ()
-	for k in  ks:
-		if re.match('[1-9]', k):
-			m = alphabet[string.atoi(k)]
-		else:
-			m = k
-		if k == 'default' and len (voice_idx_dict) > 1:
-			break
-		if len ( slyrics [voice_idx_dict[k]] ):
-			outf.write ("\n        \\addlyrics")
-		outf.write ("\n\t\\context Staff=\"%s\"\n\t{\n" %k ) 
-		if k != 'default':
-			outf.write ("\t    \\voicedefault\n")
-		outf.write ("\t    \\voice%s " % m)
-		outf.write ("\n\t}\n")
-		if len ( slyrics [voice_idx_dict[k]] ):
-			outf.write ("\n\t\\context Lyrics=\"%s\" \n\t<<\t" % k)
-			if re.match('[1-9]',k):
-				m = alphabet[string.atoi(k)]
-			else:
-				m = k
-			for i in range (len(slyrics[voice_idx_dict[k]])):
-				l=alphabet[i]
-				outf.write("\n\t  { \\words%sV%s }" % ( m, l) )
-			outf.write ( "\n\t>>\n" )
-	outf.write ("\n    >>")
-	outf.write ("\n\t\\paper {\n")
-	if part_names:
-		outf.write ("\t    \\translator \n\t    {\n")
-		outf.write ("\t\t\\StaffContext\n")
-#		outf.write ("\t\t\\consists Staff_margin_engraver\n")
-		outf.write ("\t    }\n")
-	outf.write ("\t}\n\t\\midi {%s}\n}\n" % midi_specs)
-
-
-
-def set_default_length (s):
-	global length_specified
-	m =  re.search ('1/([0-9]+)', s)
-	if m:
-		__main__.default_len = string.atoi ( m.group (1))
-		length_specified = 1
-
-def set_default_len_from_time_sig (s):
-	m =  re.search ('([0-9]+)/([0-9]+)', s)
-	if m:
-		n = string.atoi (m.group (1))
-		d = string.atoi (m.group (2))
-		if (n * 1.0 )/(d * 1.0) <  0.75:
-			__main__.default_len =  16
-		else:
-			__main__.default_len = 8
-
-def gulp_file(f):
-	try:
-		i = open(f)
-		i.seek (0, 2)
-		n = i.tell ()
-		i.seek (0,0)
-	except:
-		sys.stderr.write ("can't open file: `%s'\n" % f)
-		return ''
-	s = i.read (n)
-	if len (s) <= 0:
-		sys.stderr.write ("gulped empty file: `%s'\n" % f)
-	i.close ()
-	return s
-
-
-# pitch manipulation. Tuples are (name, alteration).
-# 0 is (central) C. Alteration -1 is a flat, Alteration +1 is a sharp
-# pitch in semitones. 
-def semitone_pitch  (tup):
-	p =0
-
-	t = tup[0]
-	p = p + 12 * (t / 7)
-	t = t % 7
-	
-	if t > 2:
-		p = p- 1
-		
-	p = p + t* 2 + tup[1]
-	return p
-
-def fifth_above_pitch (tup):
-	(n, a)  = (tup[0] + 4, tup[1])
-
-	difference = 7 - (semitone_pitch ((n,a)) - semitone_pitch (tup))
-	a = a + difference
-	
-	return (n,a)
-
-def sharp_keys ():
-	p = (0,0)
-	l = []
-	k = 0
-	while 1:
-		l.append (p)
-		(t,a) = fifth_above_pitch (p)
-		if semitone_pitch((t,a)) % 12 == 0:
-			break
-
-		p = (t % 7, a)
-	return l
-
-def flat_keys ():
-	p = (0,0)
-	l = []
-	k = 0
-	while 1:
-		l.append (p)
-		(t,a) = quart_above_pitch (p)
-		if semitone_pitch((t,a)) % 12 == 0:
-			break
-
-		p = (t % 7, a)
-	return l
-
-def quart_above_pitch (tup):
-	(n, a)  = (tup[0] + 3, tup[1])
-
-	difference = 5 - (semitone_pitch ((n,a)) - semitone_pitch (tup))
-	a = a + difference
-	
-	return (n,a)
-
-key_lookup = { 	# abc to lilypond key mode names
-	'm'   : 'minor',
-	'min' : 'minor',
-	'maj' : 'major',
-	'major' : 'major',	
-	'phr' : 'phrygian',
-	'ion' : 'ionian',
-	'loc' : 'locrian',
-	'aeo' : 'aeolian',
-	'mix' : 'mixolydian',
-	'mixolydian' : 'mixolydian',	
-	'lyd' : 'lydian',
-	'dor' : 'dorian',
-	'dorian' : 'dorian'	
-}
-
-def lily_key (k):
-	k = string.lower (k)
-	key = k[0]
-	k = k[1:]
-	if k and k[0] == '#':
-		key = key + 'is'
-		k = k[1:]
-	elif k and k[0] == 'b':
-		key = key + 'es'
-		k = k[1:]
-	if not k:
-		return '%s \\major' % key
-
-	type = k[0:3]
-	if key_lookup.has_key(type):
-		return("%s \\%s" % ( key, key_lookup[type]))
-	sys.stderr.write("Unknown key type `%s' ignored\n" % type)
-	return key
-
-def shift_key (note, acc , shift):
-        s = semitone_pitch((note, acc))
-        s = (s + shift + 12) % 12
-        if s <= 4:
-                n = s / 2
-                a = s % 2
-        else:
-                n = (s + 1) / 2
-                a = (s + 1) % 2
-        if a:
-                n = n + 1
-                a = -1
-        return (n,a)
-
-key_shift = { # semitone shifts for key mode names
-	'm'   : 3,
-	'min' : 3,
-	'minor' : 3,
-	'maj' : 0,
-	'major' : 0,	
-	'phr' : -4,
-	'phrygian' : -4,
-	'ion' : 0,
-	'ionian' : 0,
-	'loc' : 1,
-	'locrian' : 1,	
-	'aeo' : 3,
-	'aeolian' : 3,
-	'mix' : 5,
-	'mixolydian' : 5,	
-	'lyd' : -5,
-	'lydian' : -5,	
-	'dor' :	-2,
-	'dorian' :	-2	
-}
-def compute_key (k):
-	k = string.lower (k)
-	intkey = (ord (k[0]) - ord('a') + 5) % 7
-	intkeyacc =0
-	k = k[1:]
-	
-	if k and k[0] == 'b':
-		intkeyacc = -1
-		k = k[1:]
-	elif  k and k[0] == '#':
-		intkeyacc = 1
-		k = k[1:]
-	k = k[0:3]
-	if k and key_shift.has_key(k):
-		(intkey, intkeyacc) = shift_key(intkey, intkeyacc, key_shift[k])
-	keytup = (intkey, intkeyacc)
-	
-	sharp_key_seq = sharp_keys ()
-	flat_key_seq = flat_keys ()
-
-	accseq = None
-	accsign = 0
-	if keytup in sharp_key_seq:
-		accsign = 1
-		key_count = sharp_key_seq.index (keytup)
-		accseq = map (lambda x: (4*x -1 ) % 7, range (1, key_count + 1))
-
-	elif keytup in flat_key_seq:
-		accsign = -1
-		key_count = flat_key_seq.index (keytup)
-		accseq = map (lambda x: (3*x + 3 ) % 7, range (1, key_count + 1))
-	else:
-		error ("Huh?")
-		raise "Huh"
-	
-	key_table = [0] * 7
-	for a in accseq:
-		 key_table[a] = key_table[a] + accsign
-
-	return key_table
-
-tup_lookup = {
-	'2' : '3/2',
-	'3' : '2/3',
-	'4' : '4/3',
-	'5' : '4/5',
-	'6' : '4/6',
-	'7' : '6/7',
-	'9' : '8/9',
-	}
-
-
-def try_parse_tuplet_begin (str, state):
-	if re.match ('\([2-9]', str):
-		dig = str[1]
-		str = str[2:]
- 		prev_tuplet_state = state.parsing_tuplet
-  		state.parsing_tuplet = string.atoi (dig[0])
- 		if prev_tuplet_state:
- 			voices_append ("}")		
-		voices_append ("\\times %s {" % tup_lookup[dig])
-	return str
-
-def  try_parse_group_end (str, state):
-	if str and str[0] in HSPACE:
-		str = str[1:]
-	return str
-	
-def header_append (key, a):
-	s = ''
-	if header.has_key (key):
-		s = header[key] + "\n"
-		header [key] = s + a
-
-def wordwrap(a, v):
-	linelen = len (v) - string.rfind(v, '\n')
-	if linelen + len (a) > 80:
-		v = v + '\n'
-	return v + a + ' '
-
-def stuff_append (stuff, idx, a):
-	if not stuff:
-		stuff.append (a)
-	else:
-		stuff [idx] = wordwrap(a, stuff[idx])
-
-
-
-def voices_append(a):
-	if current_voice_idx < 0:
-		select_voice ('default', '')
-	stuff_append (voices, current_voice_idx, a)
-
-def repeat_prepend():
-	global repeat_state
-	if current_voice_idx < 0:
-		select_voice ('default', '')
-	if not using_old:
-		repeat_state[current_voice_idx] = 't'
-
-	
-def lyrics_append(a):
-	a = re.sub ( '#', '\\#', a)	# latex does not like naked #'s
-	a = re.sub ( '"', '\\"', a)	# latex does not like naked "'s
-	a = '\t{ \\lyrics "' + a + '" }\n'
-	stuff_append (lyrics, current_lyric_idx, a)
-
-# break lyrics to words and put "'s around words containing numbers and '"'s
-def fix_lyric(str):
-	ret = ''
-	while str != '':
-		m = re.match('[ \t]*([^ \t]*)[ \t]*(.*$)', str)
-		if m:
-			word = m.group(1)
-			str = m.group(2)
-			word = re.sub('"', '\\"', word) # escape "
-			if re.match('.*[0-9"\(]', word):
-				word = re.sub('_', ' ', word) # _ causes probs inside ""
-				ret = ret + '\"' + word + '\" '
-			else:
-				ret = ret + word + ' '
-		else:
-			return (ret)
-	return (ret)
-
-def slyrics_append(a):
-	a = re.sub ( '_', ' _ ', a)	# _ to ' _ '
-	a = re.sub ( '-', '- ', a)	# split words with -
-	a = re.sub ( '\\\\- ', '-', a) 	# unless \-
-	a = re.sub ( '~', '_', a)	# ~ to space('_')
-	a = re.sub ( '\*', '_ ', a)	# * to to space
-	a = re.sub ( '#', '\\#', a)	# latex does not like naked #'s
-	if re.match('.*[0-9"\(]', a):	# put numbers and " and ( into quoted string
-		a = fix_lyric(a)
-	a = re.sub ( '$', ' ', a)	# insure space between lines
-	__main__.lyric_idx = lyric_idx + 1
-	if len(slyrics[current_voice_idx]) <= lyric_idx:
-		slyrics[current_voice_idx].append(a)
-	else:
-		v = slyrics[current_voice_idx][lyric_idx]
-		slyrics[current_voice_idx][lyric_idx] = wordwrap(a, slyrics[current_voice_idx][lyric_idx])
-
-
-def try_parse_header_line (ln, state):
-	global length_specified
-	m = re.match ('^([A-Za-z]): *(.*)$', ln)
-
-	if m:
-		g =m.group (1)
-		a = m.group (2)
-		if g == 'T':	#title
-			a = re.sub('[ \t]*$','', a)	#strip trailing blanks
-			if header.has_key('title'):
-				if a:
- 					if len(header['title']):
- 						header['title'] = header['title'] + '\\\\\\\\' + a
- 					else:
- 						header['subtitle'] = a
-			else:
-				header['title'] =  a
-		if g == 'M':	# Meter
-			if a == 'C':
-				if not state.common_time:
-					state.common_time = 1
-					voices_append ("\\property Staff.TimeSignature \\override #\'style = #'C\n")
-				a = '4/4'
-			if a == 'C|':
-				if not state.common_time:
-					state.common_time = 1
-					voices_append ("\\property Staff.TimeSignature \\override #\'style = #'C\n")
-				a = '2/2'
-			if not length_specified:
-				set_default_len_from_time_sig (a)
-			else:
-				length_specified = 0
-			if not a == 'none':
-				voices_append ('\\time %s' % a)
-			state.next_bar = ''
-		if g == 'K': # KEY
-			a = check_clef(a)
-			if a:
-				m = re.match ('^([^ \t]*) *(.*)$', a) # seperate clef info
-				if m:
-					# there may or may not be a space
-					# between the key letter and the mode
-					if key_lookup.has_key(m.group(2)[0:3]):
-						key_info = m.group(1) + m.group(2)[0:3]
-						clef_info = m.group(2)[4:]
-					else:
-						key_info = m.group(1)
-						clef_info = m.group(2)
-					__main__.global_key  = compute_key (key_info)# ugh.
-					voices_append ('\\key %s' % lily_key(key_info))
-					check_clef(clef_info)
-				else:
-					__main__.global_key  = compute_key (a)# ugh.
-					voices_append ('\\key %s \\major' % lily_key(a))
-		if g == 'N': # Notes
-			header ['footnotes'] = header['footnotes'] +  '\\\\\\\\' + a
-		if g == 'O': # Origin
-			header ['origin'] = a
-		if g == 'X': # Reference Number
-			header ['crossRefNumber'] = a
-		if g == 'A': #	Area
-			header ['area'] = a
-		if g == 'H':	# History
-			header_append ('history', a)
-		if g == 'B':	# Book
-			header ['book'] = a
-		if g == 'C':	# Composer
-			if header.has_key('composer'):
-				if a:
-					header['composer'] = header['composer'] + '\\\\\\\\' + a
-			else:
-				header['composer'] =  a
-		if g == 'S':
-			header ['subtitle'] = a
-		if g == 'L':	# Default note length
-			set_default_length (ln)
-		if g == 'V':	# Voice 
-			voice = re.sub (' .*$', '', a)
-			rest = re.sub ('^[^ \t]*  *', '', a)
-			if state.next_bar:
-				voices_append(state.next_bar)
-				state.next_bar = ''
-			select_voice (voice, rest)
-		if g == 'W':	# Words
-			lyrics_append(a)
-		if g == 'w':	# vocals
-			slyrics_append (a)
-		if g == 'Q':    #tempo
-			try_parse_q (a)
-		return ''
-	return ln
-
-# we use in this order specified accidental, active accidental for bar,
-# active accidental for key
-def pitch_to_lilypond_name (name, acc, bar_acc, key):
-	s = ''
-	if acc == UNDEF:
-		if not nobarlines:
-			acc = bar_acc
-	if acc == UNDEF:
-		acc = key
-	if acc == -1:
-		s = 'es'
-	elif acc == 1:
-		s =  'is'
-	
-	if name > 4:
-		name = name -7
-	return(chr (name  + ord('c')) + s)
-
-
-def octave_to_lilypond_quotes (o):
-	o = o + 2
-	s =''
-	if o < 0:
-		o = -o
-		s=','
-	else:
-		s ='\''
-
-	return s * o
-
-def parse_num (str):
-	durstr = ''
-	while str and str[0] in DIGITS:
-		durstr = durstr + str[0]
-		str = str[1:]
-
-	n = None
-	if durstr:
-		n  =string.atoi (durstr) 
-	return (str,n)
-
-
-def duration_to_lilypond_duration  (multiply_tup, defaultlen, dots):
-	base = 1
-	# (num /  den)  / defaultlen < 1/base
-	while base * multiply_tup[0] < multiply_tup[1]:
-		base = base * 2
-	if base == 1:
-		if (multiply_tup[0] / multiply_tup[1])  == 2:
-			base = '\\breve'
- 		if (multiply_tup[0] / multiply_tup[1]) == 3:
- 			base = '\\breve'
- 			dots = 1
-		if (multiply_tup[0] / multiply_tup[1]) == 4:
-			base = '\longa'
-	return '%s%s' % ( base, '.'* dots)
-
-class Parser_state:
-	def __init__ (self):
-		self.in_acc = {}
-		self.next_articulation = ''
-		self.next_bar = ''
-		self.next_dots = 0
-		self.next_den = 1
-		self.parsing_tuplet = 0
-		self.plus_chord = 0
-		self.base_octave = 0
-		self.common_time = 0
-
-
-
-# return (str, num,den,dots) 
-def parse_duration (str, parser_state):
-	num = 0
-	den = parser_state.next_den
-	parser_state.next_den = 1
-
-	(str, num) = parse_num (str)
-	if not num:
-		num = 1
-	if len(str):
-		if str[0] == '/':
-			if len(str[0]):
-				while str[:1] == '/':
-					str= str[1:]
-					d = 2
-					if str[0] in DIGITS:
-						(str, d) =parse_num (str)
-
-					den = den * d
-
-	den = den * default_len
-	
-	current_dots = parser_state.next_dots
-	parser_state.next_dots = 0
-	if re.match ('[ \t]*[<>]', str):
-		while str[0] in HSPACE:
-			str = str[1:]
-		while str[0] == '>':
-			str = str [1:]
-			current_dots = current_dots + 1
-			parser_state.next_den = parser_state.next_den * 2
-		
-		while str[0] == '<':
-			str = str [1:]
-			den = den * 2
-			parser_state.next_dots = parser_state.next_dots + 1
-
-
-
-	try_dots = [3, 2, 1]
-	for d in try_dots:
-		f = 1 << d
-		multiplier = (2*f-1)
-		if num % multiplier == 0 and den % f == 0:
-			num = num / multiplier
-			den = den / f
-			current_dots = current_dots + d
-		
-	return (str, num,den,current_dots)
-
-
-def try_parse_rest (str, parser_state):
-	if not str or str[0] <> 'z' and str[0] <> 'x':
-		return str
-
-	__main__.lyric_idx = -1
-
-	if parser_state.next_bar:
-		voices_append(parser_state.next_bar)
-		parser_state.next_bar = ''
-
-	if str[0] == 'z':
-		rest = 'r'
-	else:
-		rest = 's'
-	str = str[1:]
-
-	(str, num,den,d) = parse_duration (str, parser_state)
-	voices_append ('%s%s' % (rest, duration_to_lilypond_duration ((num,den), default_len, d)))
-	if parser_state.next_articulation:
-		voices_append (parser_state.next_articulation)
-		parser_state.next_articulation = ''
-
-	return str
-
-artic_tbl = {
-	'.'  : '-.',
-	 'T' : '^\\trill',
-	 'H' : '^\\fermata',
-	 'u' : '^\\upbow',
-	 'K' : '^\\ltoe',
-	 'k' : '^\\accent',
-	 'M' : '^\\tenuto',
-	 '~' : '^"~" ',
-	 'J' : '',		# ignore slide
-	 'R' : '',		# ignore roll
-	 'v' : '^\\downbow'
-}
-	
-def try_parse_articulation (str, state):
-	while str and  artic_tbl.has_key(str[:1]):
-		state.next_articulation = state.next_articulation + artic_tbl[str[:1]]
-		if not artic_tbl[str[:1]]:
-			sys.stderr.write("Warning: ignoring `%s'\n" % str[:1] )
-
-		str = str[1:]
-
-	
-		
-	# s7m2 input doesnt care about spaces
-	if re.match('[ \t]*\(', str):
-		str = string.lstrip (str)
-
-	slur_begin =0
-	while str[:1] =='(' and str[1] not in DIGITS:
-		slur_begin = slur_begin + 1
-		state.next_articulation = state.next_articulation + '('
-		str = str[1:]
-
-	return str
-		
-#
-# remember accidental for rest of bar
-#
-def set_bar_acc(note, octave, acc, state):
-	if acc == UNDEF:
-		return
-	n_oct = note + octave * 7
-	state.in_acc[n_oct] = acc
-
-# get accidental set in this bar or UNDEF if not set
-def get_bar_acc(note, octave, state):
-	n_oct = note + octave * 7
-	if state.in_acc.has_key(n_oct):
-		return(state.in_acc[n_oct])
-	else:
-		return(UNDEF)
-
-def clear_bar_acc(state):
-	for k in state.in_acc.keys():
-		del state.in_acc[k]
-	
-
-		
-# WAT IS ABC EEN ONTZETTENDE PROGRAMMEERPOEP  !
-def try_parse_note (str, parser_state):
-	mud = ''
-
-	slur_begin =0
-	if not str:
-		return str
-
-	articulation =''
-	acc = UNDEF
-	if str[0] in '^=_':
-		c = str[0]
-		str = str[1:]
-		if c == '^':
-			acc = 1
-		if c == '=':
-			acc = 0
-		if c == '_':
-			acc = -1
-
-        octave = parser_state.base_octave
-	if str[0] in "ABCDEFG":
-		str = string.lower (str[0]) + str[1:]
-		octave = octave - 1
-
-
-	notename = 0
-	if str[0] in "abcdefg":
-		notename = (ord(str[0]) - ord('a') + 5)%7
-		str = str[1:]
-	else:
-		return str		# failed; not a note!
-
-	
-	__main__.lyric_idx = -1
-
-	if parser_state.next_bar:
-		voices_append(parser_state.next_bar)
-		parser_state.next_bar = ''
-
-	while str[0] == ',':
-		 octave = octave - 1
-		 str = str[1:]
-	while str[0] == '\'':
-		 octave = octave + 1
-		 str = str[1:]
-
-	(str, num,den,current_dots) = parse_duration (str, parser_state)
-
-	if re.match('[ \t]*\)', str):
-		str = string.lstrip (str)
-	
-	slur_end =0
-	while str[:1] ==')':
-		slur_end = slur_end + 1
-		str = str[1:]
-
-	
-	bar_acc = get_bar_acc(notename, octave, parser_state)
-	pit = pitch_to_lilypond_name(notename, acc, bar_acc, global_key[notename])
-	oct = octave_to_lilypond_quotes (octave)
-	if acc != UNDEF and (acc == global_key[notename] or acc == bar_acc):
-		mod='!'
-	else:
-		mod = ''
-	voices_append ("%s%s%s%s" %
-		(pit, oct, mod,
-	 	 duration_to_lilypond_duration ((num,den), default_len, current_dots)))
-	
-	set_bar_acc(notename, octave, acc, parser_state)
-	if parser_state.next_articulation:
-		articulation = articulation + parser_state.next_articulation
-		parser_state.next_articulation = ''
-
-	voices_append (articulation)
-
-	if parser_state.parsing_tuplet:
-		parser_state.parsing_tuplet = parser_state.parsing_tuplet - 1
-		if not parser_state.parsing_tuplet:
-			voices_append ("}")
-	if slur_begin:
-		voices_append ('-(' * slur_begin )
-	if slur_end:
-		voices_append ('-)' *slur_end )
-
-
-
-	return str
-
-def junk_space (str):
-	while str and str[0] in '\t\n ':
-		str = str[1:]
-
-	return str
-
-
-def try_parse_guitar_chord (str, state):
-	if str[:1] =='"':
-		str = str[1:]
-		gc = ''
-		if str[0] == '_' or (str[0] == '^'):
-			position = str[0]
-			str = str[1:]
-		else:
-			position = '^'
-		while str and str[0] != '"':
-			gc = gc + str[0]
-			str = str[1:]
-			
-		if str:
-			str = str[1:]
-		gc = re.sub('#', '\\#', gc)	# escape '#'s
-		state.next_articulation = ("%c\"%s\"" % (position ,gc)) + state.next_articulation
-	return str
-
-def try_parse_escape (str):
-	if not str or str [0] != '\\':
-		return str
-	
-	str = str[1:]
-	if str[:1] =='K':
-		key_table = compute_key ()
-	return str
-
-#
-# |] thin-thick double bar line
-# || thin-thin double bar line
-# [| thick-thin double bar line
-# :| left repeat
-# |: right repeat
-# :: left-right repeat
-# |1 volta 1
-# |2 volta 2
-old_bar_dict = {
-'|]' : '|.',
-'||' : '||',
-'[|' : '||',
-':|' : ':|',
-'|:' : '|:',
-'::' : ':|:',
-'|1' : '|',
-'|2' : '|',
-':|2' : ':|',
-'|' :  '|'
-}
-bar_dict = {
- '|]' : '\\bar "|."',
- '||' : '\\bar "||"',
- '[|' : '\\bar "||"',
- ':|' : '}',
- '|:' : '\\repeat volta 2 {',
- '::' : '} \\repeat volta 2 {',
- '|1' : '} \\alternative{{',
- '|2' : '} {',
- ':|2' : '} {',
- '|' :  '\\bar "|"'
-  }
-
-
-warn_about = ['|:', '::', ':|', '|1', ':|2', '|2']
-alternative_opener = ['|1', '|2', ':|2']
-repeat_ender = ['::', ':|']
-repeat_opener = ['::', '|:']
-in_repeat = [''] * 8
-doing_alternative = [''] * 8
-using_old = ''
-
-def try_parse_bar (str,state):
-	global in_repeat, doing_alternative, using_old
-	do_curly = ''
-	bs = None
-	if current_voice_idx < 0:
-		select_voice ('default', '')
-	# first try the longer one
-	for trylen in [3,2,1]:
-		if str[:trylen] and bar_dict.has_key (str[:trylen]):
-			s = str[:trylen]
-			if using_old:
-				bs = "\\bar \"%s\"" % old_bar_dict[s]
-			else:
-				bs = "%s" % bar_dict[s]
-			str = str[trylen:]
-			if s in alternative_opener:
-				if not in_repeat[current_voice_idx]:
-					using_old = 't'
-					bs = "\\bar \"%s\"" % old_bar_dict[s]
-				else:
-					doing_alternative[current_voice_idx] = 't'
-
-			if s in repeat_ender:
-				if not in_repeat[current_voice_idx]:
-					sys.stderr.write("Warning: inserting repeat to beginning of notes.\n")
-					repeat_prepend()
-					in_repeat[current_voice_idx] = ''
-				else:
-					if doing_alternative[current_voice_idx]:
-						do_curly = 't'
-				if using_old:
-					bs = "\\bar \"%s\"" % old_bar_dict[s]
-				else:
-					bs =  bar_dict[s]
-				doing_alternative[current_voice_idx] = ''
-				in_repeat[current_voice_idx] = ''
-			if s in repeat_opener:
-				in_repeat[current_voice_idx] = 't'
-				if using_old:
-					bs = "\\bar \"%s\"" % old_bar_dict[s]
-				else:
-					bs =  bar_dict[s]
-			break
-	if str[:1] == '|':
-		state.next_bar = '|\n'
-		str = str[1:]
-		clear_bar_acc(state)
-	
-	if bs <> None or state.next_bar != '':
-		if state.parsing_tuplet:
-			state.parsing_tuplet =0
-			voices_append ('} ')
-		
-	if bs <> None:
-		clear_bar_acc(state)
-		voices_append (bs)
-		if do_curly != '':
-			voices_append("} }")
-			do_curly = ''
-	return str
-
-def try_parse_tie (str):
-	if str[:1] =='-':
-		str = str[1:]
-		voices_append (' ~ ')
-	return str
-
-def bracket_escape (str, state):
-	m = re.match ( '^([^\]]*)] *(.*)$', str)
-	if m:
-		cmd = m.group (1)
-		str = m.group (2)
-		try_parse_header_line (cmd, state)
-	return str
-
-def try_parse_chord_delims (str, state):
-	if str[:1] =='[':
-		str = str[1:]
-		if re.match('[A-Z]:', str):	# bracket escape
-			return bracket_escape(str, state)
-		if state.next_bar:
-			voices_append(state.next_bar)
-			state.next_bar = ''
-		voices_append ('<')
-
-	if str[:1] == '+':
-		str = str[1:]
-		if state.plus_chord:
-			voices_append ('>')
-			state.plus_chord = 0
-		else:
-			if state.next_bar:
-				voices_append(state.next_bar)
-				state.next_bar = ''
-			voices_append ('<')
-			state.plus_chord = 1
-
-	ch = ''
-	if str[:1] ==']':
-		str = str[1:]
-		ch = '>'
-
-	end = 0
-	while str[:1] ==')':
-		end = end + 1
-		str = str[1:]
-
-	
-	voices_append ("\\spanrequest \\stop \"slur\"" * end)
-	voices_append (ch)
-	return str
-
-def try_parse_grace_delims (str, state):
-	if str[:1] =='{':
-		if state.next_bar:
-			voices_append(state.next_bar)
-			state.next_bar = ''
-		str = str[1:]
-		voices_append ('\\grace { ')
-
-	if str[:1] =='}':
-		str = str[1:]
-		voices_append ('}')
-
-	return str
-
-def try_parse_comment (str):
-	global nobarlines
-	if (str[0] == '%'):
-		if str[0:5] == '%MIDI':
-#the nobarlines option is necessary for an abc to lilypond translator for
-#exactly the same reason abc2midi needs it: abc requires the user to enter
-#the note that will be printed, and MIDI and lilypond expect entry of the
-#pitch that will be played.
-#
-#In standard 19th century musical notation, the algorithm for translating
-#between printed note and pitch involves using the barlines to determine
-#the scope of the accidentals.
-#
-#Since ABC is frequently used for music in styles that do not use this
-#convention, such as most music written before 1700, or ethnic music in
-#non-western scales, it is necessary to be able to tell a translator that
-#the barlines should not affect its interpretation of the pitch.  
-			if (string.find(str,'nobarlines') > 0):
-				nobarlines = 1
-		elif str[0:3] == '%LY':
-			p = string.find(str, 'voices')
-			if (p > -1):
-				voices_append(str[p+7:])
-				voices_append("\n")
-			p = string.find(str, 'slyrics')
-			if (p > -1):
-				slyrics_append(str[p+8:])
-			
-#write other kinds of appending  if we ever need them.			
-	return str
-
-happy_count = 100
-def parse_file (fn):
-	f = open (fn)
-	ls = f.readlines ()
-
-	select_voice('default', '')
-	lineno = 0
-	sys.stderr.write ("Line ... ")
-	sys.stderr.flush ()
-	__main__.state = state_list[current_voice_idx]
-	
-	for ln in ls:
-		lineno = lineno + 1
-
-		if not (lineno % happy_count):
-			sys.stderr.write ('[%d]'% lineno)
-			sys.stderr.flush ()
-		m = re.match  ('^([^%]*)%(.*)$',ln)  # add comments to current voice
-		if m:
-			if m.group(2):
-				try_parse_comment(m.group(2))
-				voices_append ('%% %s\n' % m.group(2))
-			ln = m.group (1)
-
-		orig_ln = ln
-		
-		ln = try_parse_header_line (ln, state)
-
-		# Try nibbling characters off until the line doesn't change.
-		prev_ln = ''
-		while ln != prev_ln:
-			prev_ln = ln
-			ln = try_parse_chord_delims (ln, state)
-			ln = try_parse_rest (ln, state)
-			ln = try_parse_articulation (ln,state)
-			ln = try_parse_note  (ln, state)
-			ln = try_parse_bar (ln, state)
-			ln = try_parse_tie (ln)
-			ln = try_parse_escape (ln)
-			ln = try_parse_guitar_chord (ln, state)
-			ln = try_parse_tuplet_begin (ln, state)
-			ln = try_parse_group_end (ln, state)
-			ln = try_parse_grace_delims (ln, state)
-			ln = junk_space (ln)
-
-		if ln:
-			error ("%s: %d: Huh?  Don't understand\n" % (fn, lineno))
-			left = orig_ln[0:-len (ln)]
-			sys.stderr.write (left + '\n')
-			sys.stderr.write (' ' *  len (left) + ln + '\n')	
-
-
-def identify():
-	sys.stderr.write ("%s from LilyPond %s\n" % (program_name, version))
-
-def help ():
-	print r"""
-Convert ABC to lilypond.
-
-Usage: abc2ly [OPTIONS]... ABC-FILE
-
-Options:
-  -h, --help          print this help
-  -o, --output=FILE   set output filename to FILE
-  -v, --version       show version information
-  -s, --strict        be strict about succes
-  
-This program converts ABC music files (see
-http://www.gre.ac.uk/~c.walshaw/abc2mtex/abc.txt) to LilyPond input.
-
-
-Report bugs to bug-lilypond@gnu.org.
-
-Written by Han-Wen Nienhuys <hanwen@cs.uu.nl>, Laura Conrad
-<lconrad@laymusic.org>, Roy Rankin <Roy.Rankin@@alcatel.com.au>.
-"""
-
-def print_version ():
-	print r"""abc2ly (GNU lilypond) %s""" % version
-
-
-
-(options, files) = getopt.getopt (sys.argv[1:], 'vo:hs', ['help','version', 'output=', 'strict'])
-out_filename = ''
-
-for opt in options:
-	o = opt[0]
-	a = opt[1]
-	if o== '--help' or o == '-h':
-		help ()
-		sys.exit (0)
-	elif o == '--version' or o == '-v':
-		print_version ()
-		sys.exit(0)
-	elif o == '--strict' or o == '-s':
-		strict = 1
-	elif o == '--output' or o == '-o':
-		out_filename = a
-	else:
-		print o
-		raise getopt.error
-
-identify()
-
-header['tagline'] = 'Lily was here %s -- automatically converted from ABC' % version
-for f in files:
-	if f == '-':
-		f = ''
-
-	sys.stderr.write ('Parsing `%s\'...\n' % f)
-	parse_file (f)
-
-	if not out_filename:
-		out_filename = os.path.basename (os.path.splitext (f)[0]) + ".ly"
-	sys.stderr.write ('lilypond output to: `%s\'...' % out_filename)
-	outf = open (out_filename, 'w')
-
-#	dump_global (outf)
-	dump_header (outf ,header)
-	dump_slyrics (outf)
-	dump_voices (outf)
-	dump_score (outf)
-	dump_lyrics (outf)
-	sys.stderr.write ('\n')
-	
diff --git a/scripts/convert-ly.py b/scripts/convert-ly.py
deleted file mode 100644
index 8dea95c63f..0000000000
--- a/scripts/convert-ly.py
+++ /dev/null
@@ -1,1995 +0,0 @@
-#!@PYTHON@
-#
-# convert-ly.py -- Update old LilyPond input files (fix name?)
-#
-# source file of the GNU LilyPond music typesetter
-#
-# (c) 1998--2004  Han-Wen Nienhuys <hanwen@cs.uu.nl>
-#                 Jan Nieuwenhuizen <janneke@gnu.org>
-
-
-# TODO
-#   use -f and -t for -s output
-
-# NEWS
-# 0.2
-#  - rewrite in python
-
-program_name = 'convert-ly'
-version = '@TOPLEVEL_VERSION@'
-
-import os
-import sys
-import __main__
-import getopt
-import  string
-import re
-import time
-
-# Did we ever have \mudela-version?  I doubt it.
-# lilypond_version_re_str = '\\\\version *\"(.*)\"'
-lilypond_version_re_str = '\\\\(mudela-)?version *\"(.*)\"'
-lilypond_version_re = re.compile (lilypond_version_re_str)
-add_version = 1
-
-
-def program_id ():
-	return '%s (GNU LilyPond) %s' %(program_name,  version);
-
-def identify ():
-	sys.stderr.write (program_id () + '\n')
-
-def usage ():
-	sys.stdout.write (
-		r"""Usage: %s [OPTIONS]... [FILE]...
-Try to convert to newer lilypond-versions.  The version number of the
-input is guessed by default from \version directive.
-
-Options:
-  -h, --help             print this help
-  -e, --edit             edit in place
-  -f, --from=VERSION     start from version; overrides \version found in file
-  -s, --show-rules       print all rules
-  -t, --to=VERSION       show target version
-  -n, --no-version       don't add new version stamp
-      --version          print program version
-
-Report bugs to bugs-gnu-music@gnu.org.
-
-""" % program_name)
-	
-	
-	sys.exit (0)
-
-def print_version ():
-	
-	sys.stdout.write (r"""%s
-
-This 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.
-
-""" % (program_id() , program_name))
-	
-def gulp_file(f):
-	try:
-		i = open(f)
-		i.seek (0, 2)
-		n = i.tell ()
-		i.seek (0,0)
-	except:
-		print 'can\'t open file: ' + f + '\n'
-		return ''
-	s = i.read (n)
-	if len (s) <= 0:
-		print 'gulped empty file: ' + f + '\n'
-	i.close ()
-	return s
-
-def str_to_tuple (s):
-	return tuple (map (string.atoi, string.split (s,'.')))
-
-def tup_to_str (t):
-	return string.join (map (lambda x: '%s' % x, list (t)), '.')
-
-def version_cmp (t1, t2):
-	for x in [0,1,2]:
-		if t1[x] - t2[x]:
-			return t1[x] - t2[x]
-	return 0
-
-def guess_lilypond_version (filename):
-	s = gulp_file (filename)
-	m = lilypond_version_re.search (s)
-	if m:
-		return m.group (2)
-	else:
-		return ''
-
-class FatalConversionError:
-	pass
-
-conversions = []
-
-def show_rules (file):
-	for x in conversions:
-		file.write  ('%s: %s\n' % (tup_to_str (x[0]), x[2]))
-
-############################
-		
-if 1:
-	def conv(str):
-		if re.search ('\\\\multi', str):
-			sys.stderr.write ('\nNot smart enough to convert \\multi')
-		return str
-	
-	conversions.append (((0,1,9), conv, '\\header { key = concat + with + operator }'))
-
-if 1:					# need new a namespace
-	def conv (str):
-		if re.search ('\\\\octave', str):
-			sys.stderr.write ('\nNot smart enough to convert \\octave')
-		#	raise FatalConversionError()
-		
-		return str
-
-	conversions.append ((
-		((0,1,19), conv, 'deprecated \\octave; can\'t convert automatically')))
-
-
-if 1:					# need new a namespace
-	def conv (str):
-		str = re.sub ('\\\\textstyle([^;]+);',
-					 '\\\\property Lyrics . textstyle = \\1', str)
-		# harmful to current .lys
-		# str = re.sub ('\\\\key([^;]+);', '\\\\accidentals \\1;', str)
-			
-		return str
-
-	conversions.append ((
-		((0,1,20), conv, 'deprecated \\textstyle, new \key syntax')))
-
-
-if 1:
-	def conv (str):
-		str = re.sub ('\\\\musical_pitch', '\\\\musicalpitch',str)
-		str = re.sub ('\\\\meter', '\\\\time',str)
-			
-		return str
-
-	conversions.append ((
-		((0,1,21), conv, '\\musical_pitch -> \\musicalpitch, '+
-		 '\\meter -> \\time')))
-
-if 1:
-	def conv (str):
-		return str
-
-	conversions.append ((
-		((1,0,0), conv, '0.1.21 -> 1.0.0 ')))
-
-
-if 1:
-	def conv (str):
-		str = re.sub ('\\\\accidentals', '\\\\keysignature',str)
-		str = re.sub ('specialaccidentals *= *1', 'keyoctaviation = 0',str)
-		str = re.sub ('specialaccidentals *= *0', 'keyoctaviation = 1',str)
-			
-		return str
-
-	conversions.append ((
-		((1,0,1), conv, '\\accidentals -> \\keysignature, ' +
-		 'specialaccidentals -> keyoctaviation')))
-
-if 1:
-	def conv(str):
-		if re.search ('\\\\header', str):
-			sys.stderr.write ('\nNot smart enough to convert to new \\header format')
-		return str
-	
-	conversions.append (((1,0,2), conv, '\\header { key = concat + with + operator }'))
-
-if 1:
-	def conv(str):
-		str =  re.sub ('\\\\melodic([^a-zA-Z])', '\\\\notes\\1',str)
-		return str
-	
-	conversions.append (((1,0,3), conv, '\\melodic -> \\notes'))
-
-if 1:
-	def conv(str):
-		str =  re.sub ('default_paper *=', '',str)
-		str =  re.sub ('default_midi *=', '',str)
-		return str
-	
-	conversions.append (((1,0,4), conv, 'default_{paper,midi}'))
-
-if 1:
-	def conv(str):
-		str =  re.sub ('ChoireStaff', 'ChoirStaff',str)
-		str =  re.sub ('\\\\output', 'output = ',str)
-			
-		return str
-	
-	conversions.append (((1,0,5), conv, 'ChoireStaff -> ChoirStaff'))
-
-if 1:
-	def conv(str):
-		if re.search ('[a-zA-Z]+ = *\\translator',str):
-			sys.stderr.write ('\nNot smart enough to change \\translator syntax')
-		#	raise FatalConversionError()
-		return str
-	
-	conversions.append (((1,0,6), conv, 'foo = \\translator {\\type .. } ->\\translator {\\type ..; foo; }'))
-
-
-if 1:
-	def conv(str):
-		str =  re.sub ('\\\\lyrics*', '\\\\lyrics',str)
-			
-		return str
-	
-	conversions.append (((1,0,7), conv, '\\lyric -> \\lyrics'))
-
-if 1:
-	def conv(str):
-		str =  re.sub ('\\\\\\[/3+', '\\\\times 2/3 { ',str)
-		str =  re.sub ('\\[/3+', '\\\\times 2/3 { [',str)
-		str =  re.sub ('\\\\\\[([0-9/]+)', '\\\\times \\1 {',str)
-		str =  re.sub ('\\[([0-9/]+)', '\\\\times \\1 { [',str)
-		str =  re.sub ('\\\\\\]([0-9/]+)', '}', str)
-		str =  re.sub ('\\\\\\]', '}',str)
-		str =  re.sub ('\\]([0-9/]+)', '] }', str)
-		return str
-	
-	conversions.append (((1,0,10), conv, '[2/3 ]1/1 -> \\times 2/3 '))
-
-if 1:
-	def conv(str):
-		return str
-	conversions.append (((1,0,12), conv, 'Chord syntax stuff'))
-
-
-if 1:
-	def conv(str):
-		
-		
-		str =  re.sub ('<([^>~]+)~([^>]*)>','<\\1 \\2> ~', str)
-			
-		return str
-	
-	conversions.append (((1,0,13), conv, '<a ~ b> c -> <a b> ~ c'))
-
-if 1:
-	def conv(str):
-		str =  re.sub ('<\\[','[<', str)
-		str =  re.sub ('\\]>','>]', str)
-			
-		return str
-	
-	conversions.append (((1,0,14), conv, '<[a b> <a b]>c -> [<a b> <a b>]'))
-
-
-if 1:
-	def conv(str):
-		str =  re.sub ('\\\\type([^\n]*engraver)','\\\\TYPE\\1', str)
-		str =  re.sub ('\\\\type([^\n]*performer)','\\\\TYPE\\1', str)
-		str =  re.sub ('\\\\type','\\\\context', str)
-		str =  re.sub ('\\\\TYPE','\\\\type', str)
-		str =  re.sub ('textstyle','textStyle', str)
-			
-		return str
-	
-	conversions.append (((1,0,16), conv, '\\type -> \\context, textstyle -> textStyle'))
-
-
-if 1:
-	def conv(str):
-		if re.search ('\\\\repeat',str):
-			sys.stderr.write ('\nNot smart enough to convert \\repeat')
-		#	raise FatalConversionError()
-		return str
-	
-	conversions.append (((1,0,18), conv,
-                '\\repeat NUM Music Alternative -> \\repeat FOLDSTR Music Alternative'))
-
-if 1:
-	def conv(str):
-		str =  re.sub ('SkipBars','skipBars', str)
-		str =  re.sub ('fontsize','fontSize', str)
-		str =  re.sub ('midi_instrument','midiInstrument', str)			
-			
-		return str
-
-	conversions.append (((1,0,19), conv,
-                'fontsize -> fontSize, midi_instrument -> midiInstrument, SkipBars -> skipBars'))
-
-
-if 1:
-	def conv(str):
-		str =  re.sub ('tieydirection','tieVerticalDirection', str)
-		str =  re.sub ('slurydirection','slurVerticalDirection', str)
-		str =  re.sub ('ydirection','verticalDirection', str)			
-			
-		return str
-
-	conversions.append (((1,0,20), conv,
-                '{,tie,slur}ydirection -> {v,tieV,slurV}erticalDirection'))
-
-
-if 1:
-	def conv(str):
-		str =  re.sub ('hshift','horizontalNoteShift', str)
-			
-		return str
-
-	conversions.append (((1,0,21), conv,
-                'hshift -> horizontalNoteShift'))
-
-
-if 1:
-	def conv(str):
-		str =  re.sub ('\\\\grouping[^;]*;','', str)
-			
-		return str
-
-	conversions.append (((1,1,52), conv,
-                'deprecate \\grouping'))
-
-
-if 1:
-	def conv(str):
-		str =  re.sub ('\\\\wheel','\\\\coda', str)
-			
-		return str
-
-	conversions.append (((1,1,55), conv,
-                '\\wheel -> \\coda'))
-
-if 1:
-	def conv(str):
-		str =  re.sub ('keyoctaviation','keyOctaviation', str)
-		str =  re.sub ('slurdash','slurDash', str)
-			
-		return str
-
-	conversions.append (((1,1,65), conv,
-                'slurdash -> slurDash, keyoctaviation -> keyOctaviation'))
-
-if 1:
-	def conv(str):
-		str =  re.sub ('\\\\repeat *\"?semi\"?','\\\\repeat "volta"', str)
-			
-		return str
-
-	conversions.append (((1,1,66), conv,
-                'semi -> volta'))
-
-
-if 1:
-	def conv(str):
-		str =  re.sub ('\"?beamAuto\"? *= *\"?0?\"?','noAutoBeaming = "1"', str)
-			
-		return str
-
-	conversions.append (((1,1,67), conv,
-                'beamAuto -> noAutoBeaming'))
-
-if 1:
-	def conv(str):
-		str =  re.sub ('automaticMelismas', 'automaticMelismata', str)
-			
-		return str
-
-	conversions.append (((1,2,0), conv,
-                'automaticMelismas -> automaticMelismata'))
-
-if 1:
-	def conv(str):
-		str =  re.sub ('dynamicDir\\b', 'dynamicDirection', str)
-			
-		return str
-
-	conversions.append (((1,2,1), conv,
-                'dynamicDir -> dynamicDirection'))
-
-if 1:
-	def conv(str):
-		str =  re.sub ('\\\\cadenza *0 *;', '\\\\cadenzaOff', str)
-		str =  re.sub ('\\\\cadenza *1 *;', '\\\\cadenzaOn', str)		
-			
-		return str
-
-	conversions.append (((1,3,4), conv,
-                '\\cadenza -> \cadenza{On|Off}'))
-
-if 1:
-	def conv (str):
-		str = re.sub ('"?beamAuto([^"=]+)"? *= *"([0-9]+)/([0-9]+)" *;*',
-			      'beamAuto\\1 = #(make-moment \\2 \\3)',
-			      str)
-		return str
-
-	conversions.append (((1,3,5), conv, 'beamAuto moment properties'))
-
-if 1:
-	def conv (str):
-		str = re.sub ('stemStyle',
-			      'flagStyle',
-			      str)
-		return str
-
-	conversions.append (((1,3,17), conv, 'stemStyle -> flagStyle'))
-
-if 1:
-	def conv (str):
-		str = re.sub ('staffLineLeading',
-			      'staffSpace',
-			      str)
-		return str
-
-	conversions.append (((1,3,18), conv, 'staffLineLeading -> staffSpace'))
-
-
-if 1:
-	def conv(str):
-		if re.search ('\\\\repetitions',str):
-			sys.stderr.write ('\nNot smart enough to convert \\repetitions')
-		#	raise FatalConversionError()
-		return str
-	
-	conversions.append (((1,3,23), conv,
-                '\\\\repetitions feature dropped'))
-
-
-if 1:
-	def conv (str):
-		str = re.sub ('textEmptyDimension *= *##t',
-			      'textNonEmpty = ##f',
-			      str)
-		str = re.sub ('textEmptyDimension *= *##f',
-			      'textNonEmpty = ##t',
-			      str)
-		return str
-
-	conversions.append (((1,3,35), conv, 'textEmptyDimension -> textNonEmpty'))
-
-if 1:
-	def conv (str):
-		str = re.sub ("([a-z]+)[ \t]*=[ \t]*\\\\musicalpitch *{([- 0-9]+)} *\n",
-			      "(\\1 . (\\2))\n", str)
-		str = re.sub ("\\\\musicalpitch *{([0-9 -]+)}",
-			      "\\\\musicalpitch #'(\\1)", str)
-		if re.search ('\\\\notenames',str):
-			sys.stderr.write ('\nNot smart enough to convert to new \\notenames format')
-		return str
-
-	conversions.append (((1,3,38), conv, '\musicalpitch { a b c } -> #\'(a b c)'))
-
-if 1:
-	def conv (str):
-		def replace (match):
-			return '\\key %s;' % string.lower (match.group (1))
-		
-		str = re.sub ("\\\\key ([^;]+);",  replace, str)
-		return str
-	
-	conversions.append (((1,3,39), conv, '\\key A ;  ->\\key a;'))
-
-if 1:
-	def conv (str):
-		if re.search ('\\[:',str):
-			sys.stderr.write ('\nNot smart enough to convert to new tremolo format')
-		return str
-
-	conversions.append (((1,3,41), conv,
-                '[:16 c4 d4 ] -> \\repeat "tremolo" 2 { c16 d16 }'))
-
-if 1:
-	def conv (str):
-		str = re.sub ('Staff_margin_engraver' , 'Instrument_name_engraver', str)
-		return str
-
-	conversions.append (((1,3,42), conv,
-                'Staff_margin_engraver deprecated, use Instrument_name_engraver'))
-
-if 1:
-	def conv (str):
-		str = re.sub ('note[hH]eadStyle\\s*=\\s*"?(\\w+)"?' , "noteHeadStyle = #'\\1", str)
-		return str
-
-	conversions.append (((1,3,49), conv,
-                'noteHeadStyle value: string -> symbol'))
-
-if 1:
-	def conv (str):
-		if re.search ('\\\\keysignature', str):
-			sys.stderr.write ('\nNot smart enough to convert to new tremolo format')
-		return str
-
-
-	conversions.append (((1,3,58), conv,
-                'noteHeadStyle value: string -> symbol'))
-
-if 1:
-	def conv (str):
-		str = re.sub (r"""\\key *([a-z]+) *;""", r"""\\key \1 \major;""",str);
-		return str
-	conversions.append (((1,3,59), conv,
-                '\key X ; -> \key X major; '))
-
-if 1:
-	def conv (str):
-		str = re.sub (r'latexheaders *= *"\\\\input ',
-			      'latexheaders = "',
-			      str)
-		return str
-	conversions.append (((1,3,68), conv, 'latexheaders = "\\input global" -> latexheaders = "global"'))
-
-
-
-
-# TODO: lots of other syntax change should be done here as well
-if 1:
-	def conv (str):
-		str = re.sub ('basicCollisionProperties', 'NoteCollision', str)
-		str = re.sub ('basicVoltaSpannerProperties' , "VoltaBracket", str)
-		str = re.sub ('basicKeyProperties' , "KeySignature", str)
-
-		str = re.sub ('basicClefItemProperties' ,"Clef", str)
-
-
-		str = re.sub ('basicLocalKeyProperties' ,"Accidentals", str)
-		str = re.sub ('basicMarkProperties' ,"Accidentals", str)
-		str = re.sub ('basic([A-Za-z_]+)Properties', '\\1', str)
-
-		str = re.sub ('Repeat_engraver' ,'Volta_engraver', str)
-		return str
-	
-	conversions.append (((1,3,92), conv, 'basicXXXProperties -> XXX, Repeat_engraver -> Volta_engraver'))
-
-if 1:
-	def conv (str):
-		# Ugh, but meaning of \stemup changed too
-		# maybe we should do \stemup -> \stemUp\slurUp\tieUp ?
-		str = re.sub ('\\\\stemup', '\\\\stemUp', str)
-		str = re.sub ('\\\\stemdown', '\\\\stemDown', str)
-		str = re.sub ('\\\\stemboth', '\\\\stemBoth', str)
-		
-		str = re.sub ('\\\\slurup', '\\\\slurUp', str)
-		str = re.sub ('\\\\slurboth', '\\\\slurBoth', str)
-		str = re.sub ('\\\\slurdown', '\\\\slurDown', str)
-		str = re.sub ('\\\\slurdotted', '\\\\slurDotted', str)
-		str = re.sub ('\\\\slurnormal', '\\\\slurNoDots', str)		
-		
-		str = re.sub ('\\\\shiftoff', '\\\\shiftOff', str)
-		str = re.sub ('\\\\shifton', '\\\\shiftOn', str)
-		str = re.sub ('\\\\shiftonn', '\\\\shiftOnn', str)
-		str = re.sub ('\\\\shiftonnn', '\\\\shiftOnnn', str)
-
-		str = re.sub ('\\\\onevoice', '\\\\oneVoice', str)
-		str = re.sub ('\\\\voiceone', '\\\\voiceOne', str)
-		str = re.sub ('\\\\voicetwo', '\\\\voiceTwo', str)
-		str = re.sub ('\\\\voicethree', '\\\\voiceThree', str)
-		str = re.sub ('\\\\voicefour', '\\\\voiceFour', str)
-
-		# I don't know exactly when these happened...
-		# ugh, we loose context setting here...
-		str = re.sub ('\\\\property *[^ ]*verticalDirection[^=]*= *#?"?(1|(\\\\up))"?', '\\\\stemUp\\\\slurUp\\\\tieUp', str)
-		str = re.sub ('\\\\property *[^ ]*verticalDirection[^=]*= *#?"?((-1)|(\\\\down))"?', '\\\\stemDown\\\\slurDown\\\\tieDown', str)
-		str = re.sub ('\\\\property *[^ ]*verticalDirection[^=]*= *#?"?(0|(\\\\center))"?', '\\\\stemBoth\\\\slurBoth\\\\tieBoth', str)
-
-		str = re.sub ('verticalDirection[^=]*= *#?"?(1|(\\\\up))"?', 'Stem \\\\override #\'direction = #0\nSlur \\\\override #\'direction = #0\n Tie \\\\override #\'direction = #1', str)
-		str = re.sub ('verticalDirection[^=]*= *#?"?((-1)|(\\\\down))"?', 'Stem \\\\override #\'direction = #0\nSlur \\\\override #\'direction = #0\n Tie \\\\override #\'direction = #-1', str)
-		str = re.sub ('verticalDirection[^=]*= *#?"?(0|(\\\\center))"?', 'Stem \\\\override #\'direction = #0\nSlur \\\\override #\'direction = #0\n Tie \\\\override #\'direction = #0', str)
-		
-		str = re.sub ('\\\\property *[^ .]*[.]?([a-z]+)VerticalDirection[^=]*= *#?"?(1|(\\\\up))"?', '\\\\\\1Up', str)
-		str = re.sub ('\\\\property *[^ .]*[.]?([a-z]+)VerticalDirection[^=]*= *#?"?((-1)|(\\\\down))"?', '\\\\\\1Down', str)
-		str = re.sub ('\\\\property *[^ .]*[.]?([a-z]+)VerticalDirection[^=]*= *#?"?(0|(\\\\center))"?', '\\\\\\1Both', str)
-
-		# (lacks capitalisation slur -> Slur)
-		str = re.sub ('([a-z]+)VerticalDirection[^=]*= *#?"?(1|(\\\\up))"?', '\\1 \\\\override #\'direction = #1', str)
-		str = re.sub ('([a-z]+)VerticalDirection[^=]*= *#?"?((-1)|(\\\\down))"?', '\\1 \\override #\'direction = #-1', str)
-		str = re.sub ('([a-z]+)VerticalDirection[^=]*= *#?"?(0|(\\\\center))"?', '\\1 \\\\override #\'direction = #0', str)
-
-		## dynamic..
-		str = re.sub ('\\\\property *[^ .]*[.]?dynamicDirection[^=]*= *#?"?(1|(\\\\up))"?', '\\\\dynamicUp', str)
-		str = re.sub ('\\\\property *[^ .]*[.]?dyn[^=]*= *#?"?((-1)|(\\\\down))"?', '\\\\dynamicDown', str)
-		str = re.sub ('\\\\property *[^ .]*[.]?dyn[^=]*= *#?"?(0|(\\\\center))"?', '\\\\dynamicBoth', str)
-
-		str = re.sub ('\\\\property *[^ .]*[.]?([a-z]+)Dash[^=]*= *#?"?(0|(""))"?', '\\\\\\1NoDots', str)
-		str = re.sub ('\\\\property *[^ .]*[.]?([a-z]+)Dash[^=]*= *#?"?([1-9]+)"?', '\\\\\\1Dotted', str)
-
-		str = re.sub ('\\\\property *[^ .]*[.]?noAutoBeaming[^=]*= *#?"?(0|(""))"?', '\\\\autoBeamOn', str)
-		str = re.sub ('\\\\property *[^ .]*[.]?noAutoBeaming[^=]*= *#?"?([1-9]+)"?', '\\\\autoBeamOff', str)
-
-
-
-		return str
-	
-	conversions.append (((1,3,93), conv,
-                'property definiton case (eg. onevoice -> oneVoice)'))
-
-
-if 1:
-	def conv (str):
-		str = re.sub ('ChordNames*', 'ChordNames', str)
-		if re.search ('\\\\textscript "[^"]* *"[^"]*"', str):
-			sys.stderr.write ('\nNot smart enough to convert to new \\textscript markup text')
-
-		str = re.sub ('\\textscript +("[^"]*")', '\\textscript #\\1', str)
-
-		return str
-	
-	conversions.append (((1,3,97), conv, 'ChordName -> ChordNames'))
-
-
-# TODO: add lots of these
-	
-if 1:
-	def conv (str):
-		str = re.sub ('\\\\property *"?Voice"? *[.] *"?textStyle"? *= *"([^"]*)"', '\\\\property Voice.TextScript \\\\set #\'font-style = #\'\\1', str)
-		str = re.sub ('\\\\property *"?Lyrics"? *[.] *"?textStyle"? *= *"([^"]*)"', '\\\\property Lyrics.LyricText \\\\set #\'font-style = #\'\\1', str)
-
-		str = re.sub ('\\\\property *"?([^.]+)"? *[.] *"?timeSignatureStyle"? *= *"([^"]*)"', '\\\\property \\1.TimeSignature \\\\override #\'style = #\'\\2', str)
-
-		str = re.sub ('"?timeSignatureStyle"? *= *#?""', 'TimeSignature \\\\override #\'style = ##f', str)
-		
-		str = re.sub ('"?timeSignatureStyle"? *= *#?"([^"]*)"', 'TimeSignature \\\\override #\'style = #\'\\1', str)
-		
-		str = re.sub ('#\'style *= #*"([^"])"', '#\'style = #\'\\1', str)
-		
-		str = re.sub ('\\\\property *"?([^.]+)"? *[.] *"?horizontalNoteShift"? *= *"?#?([-0-9]+)"?', '\\\\property \\1.NoteColumn \\\\override #\'horizontal-shift = #\\2', str)
-
-		# ugh
-		str = re.sub ('\\\\property *"?([^.]+)"? *[.] *"?flagStyle"? *= *""', '\\\\property \\1.Stem \\\\override #\'flag-style = ##f', str)
-		
-		str = re.sub ('\\\\property *"?([^.]+)"? *[.] *"?flagStyle"? *= *"([^"]*)"', '\\\\property \\1.Stem \\\\override #\'flag-style = #\'\\2', str)
-		return str
-	
-	conversions.append (((1,3,98), conv, 'CONTEXT.textStyle -> GROB.#font-style '))
-
-if 1:
-	def conv (str):
-		str = re.sub ('"?beamAutoEnd_([0-9]*)"? *= *(#\\([^)]*\\))', 'autoBeamSettings \\push #\'(end 1 \\1 * *) = \\2', str)
-		str = re.sub ('"?beamAutoBegin_([0-9]*)"? *= *(#\\([^)]*\))', 'autoBeamSettings \\push #\'(begin 1 \\1 * *) = \\2', str)
-		str = re.sub ('"?beamAutoEnd"? *= *(#\\([^)]*\\))', 'autoBeamSettings \\push #\'(end * * * *) = \\1', str)
-		str = re.sub ('"?beamAutoBegin"? *= *(#\\([^)]*\\))', 'autoBeamSettings \\push #\'(begin * * * *) = \\1', str)
-
-
-		return str
-	
-	conversions.append (((1,3,102), conv, 'beamAutoEnd -> autoBeamSettings \\push (end * * * *)'))
-
-
-if 1:
-	def conv (str):
-		str = re.sub ('\\\\push', '\\\\override', str)
-		str = re.sub ('\\\\pop', '\\\\revert', str)
-
-		return str
-	
-	conversions.append (((1,3,111), conv, '\\push -> \\override, \\pop -> \\revert'))
-
-if 1:
-	def conv (str):
-		str = re.sub ('LyricVoice', 'LyricsVoice', str)
-		# old fix
-		str = re.sub ('Chord[Nn]ames*.Chord[Nn]ames*', 'ChordNames.ChordName', str)
-		str = re.sub ('Chord[Nn]ames([ \t\n]+\\\\override)', 'ChordName\\1', str)
-		return str
-	
-	conversions.append (((1,3,113), conv, 'LyricVoice -> LyricsVoice'))
-
-def regularize_id (str):
-	s = ''
-	lastx = ''
-	for x in str:
-		if x == '_':
-			lastx = x
-			continue
-		elif x in string.digits:
-			x = chr(ord (x) - ord ('0')  +ord ('A'))
-		elif x not in string.letters:
-			x = 'x'
-		elif x in string.lowercase and lastx == '_':
-			x = string.upper (x)
-		s = s + x
-		lastx = x
-	return s
-
-if 1:
-	def conv (str):
-		
-		def regularize_dollar_reference (match):
-			return regularize_id (match.group (1))
-		def regularize_assignment (match):
-			return '\n' + regularize_id (match.group (1)) + ' = '
-		str = re.sub ('\$([^\t\n ]+)', regularize_dollar_reference, 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'))
-
-
-if 1:
-	def conv (str):
-		def regularize_paper (match):
-			return regularize_id (match.group (1))
-		
-		str = re.sub ('(paper_[a-z]+)', regularize_paper, str)
-		str = re.sub ('sustainup', 'sustainUp', str)
-		str = re.sub ('nobreak', 'noBreak', str)
-		str = re.sub ('sustaindown', 'sustainDown', str)
-		str = re.sub ('sostenutoup', 'sostenutoUp', str)
-		str = re.sub ('sostenutodown', 'sostenutoDown', str)
-		str = re.sub ('unachorda', 'unaChorda', str)
-		str = re.sub ('trechorde', 'treChorde', str)
-	
-		return str
-	
-	conversions.append (((1,3,120), conv, 'paper_xxx -> paperXxxx, pedalup -> pedalUp.'))
-
-if 1:
-	def conv (str):
-		str = re.sub ('drarnChords', 'chordChanges', str)
-		str = re.sub ('\\musicalpitch', '\\pitch', str)
-		return str
-	
-	conversions.append (((1,3,122), conv, 'drarnChords -> chordChanges, \\musicalpitch -> \\pitch'))
-
-if 1:
-	def conv (str):
-		str = re.sub ('ly-([sg])et-elt-property', 'ly-\\1et-grob-property', str)
-		return str
-	
-	conversions.append (((1,3,136), conv, 'ly-X-elt-property -> ly-X-grob-property'))
-
-if 1:
-	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.'))
-
-if 1:
-	def conv (str):
-		str = re.sub ('followThread', 'followVoice', str)
-		str = re.sub ('Thread.FollowThread', 'Voice.VoiceFollower', str)
-		str = re.sub ('FollowThread', 'VoiceFollower', str)
-		return str
-	
-	conversions.append (((1,3,138), conv, 'followThread -> followVoice.'))
-
-if 1:
-	def conv (str):
-		str = re.sub ('font-point-size', 'font-design-size', str)
-		return str
-	
-	conversions.append (((1,3,139), conv, 'font-point-size -> font-design-size.'))
-
-if 1:
-	def conv (str):
-		str = re.sub ('([a-zA-Z]*)NoDots', '\\1Solid', str)
-		return str
-	
-	conversions.append (((1,3,141), conv, 'xNoDots -> xSolid'))
-
-if 1:
-	def conv (str):
-		str = re.sub ('([Cc])hord([ea])', '\\1ord\\2', str)
-		return str
-	
-	conversions.append (((1,3,144), conv, 'Chorda -> Corda'))
-
-
-if 1:
-	def conv (str):
-		str = re.sub ('([A-Za-z]+)MinimumVerticalExtent', 'MinimumV@rticalExtent', str)
-		str = re.sub ('([A-Za-z]+)ExtraVerticalExtent', 'ExtraV@rticalExtent', str)
-		str = re.sub ('([A-Za-z]+)VerticalExtent', 'VerticalExtent', str)
-		str = re.sub ('ExtraV@rticalExtent', 'ExtraVerticalExtent', str)
-		str = re.sub ('MinimumV@rticalExtent', 'MinimumVerticalExtent', str)		
-		return str
-
-	conversions.append (((1,3,145), conv,
-	'ContextNameXxxxVerticalExtent -> XxxxVerticalExtent'))
-
-if 1:
-	def conv (str):
-		str = re.sub ('\\\\key[ \t]*;', '\\key \\default;', str)
-		str = re.sub ('\\\\mark[ \t]*;', '\\mark \\default;', str)
-
-		# Make sure groups of more than one ; have space before
-		# them, so that non of them gets removed by next rule
-		str = re.sub ("([^ \n\t;]);(;+)", "\\1 ;\\2", str)
-		
-		# Only remove ; that are not after spaces, # or ;
-		# Otherwise  we interfere with Scheme comments,
-		# which is badbadbad.
-		str = re.sub ("([^ \t;#]);", "\\1", str)
-
-		return str
-	conversions.append (((1,3,146), conv, 'semicolons removed'))
-
-if 1:
-	def conv (str):
-		str = re.sub ('default-neutral-direction', 'neutral-direction',str)
-		return str
-	conversions.append (((1,3,147), conv, 'default-neutral-direction -> neutral-direction'))
-
-if 1:
-	def conv (str):
-		str = re.sub ('\(align', '(axis', str)
-		str = re.sub ('\(rows', '(columns', str)
-		return str
-	conversions.append (((1,3,148), conv, '"(align" -> "(axis", "(rows" -> "(columns"'))
-
-
-if 1:
-	def conv (str):
-		str = re.sub ('SystemStartDelimiter', 'systemStartDelimiter', str)
-		return str
-	conversions.append (((1,5,33), conv, 'SystemStartDelimiter -> systemStartDelimiter'))
-
-if 1:
-	def conv (str):
-		str = re.sub ('arithmetic-multiplier', 'spacing-increment', str)
-		str = re.sub ('arithmetic-basicspace', 'shortest-duration-space', str)		
-		return str
-	
-	conversions.append (((1,5,38), conv, 'SystemStartDelimiter -> systemStartDelimiter'))
-
-
-if 1:
-	def conv (str):
-	
-		def func(match):
-			break_dict = {
-			"Instrument_name": "instrument-name",
-			"Left_edge_item": "left-edge",
-			"Span_bar": "span-bar",
-			"Breathing_sign": "breathing-sign",
-			"Staff_bar": "staff-bar",
-			"Clef_item": "clef",
-			"Key_item": "key-signature",
-			"Time_signature": "time-signature",
-			"Custos": "custos"
-			}
-			props =  match.group (1)
-			for (k,v) in break_dict.items():
-				props = re.sub (k, v, props)
-			return  "breakAlignOrder = #'(%s)" % props
-
-		str = re.sub ("breakAlignOrder *= *#'\\(([a-z_\n\tA-Z ]+)\\)",
-			      func, str)
-		return str
-
-	# 40 ?
-	conversions.append (((1,5,40), conv, 'breakAlignOrder property names'))
-	
-
-if 1:
-	def conv (str):
-		str = re.sub ('noAutoBeaming *= *##f', 'autoBeaming = ##t', str)
-		str = re.sub ('noAutoBeaming *= *##t', 'autoBeaming = ##f', str)
-		return str
-	
-	conversions.append (((1,5,49), conv, 'noAutoBeaming -> autoBeaming'))
-
-if 1:
-	def conv (str):
-		str = re.sub ('tuplet-bracket-visibility', 'bracket-visibility', str)
-		str = re.sub ('tuplet-number-visibility', 'number-visibility', str)		
-		return str
-	
-	conversions.append (((1,5,52), conv, 'tuplet-X-visibility -> X-visibility'))
-
-if 1:
-	def conv (str):
-		str = re.sub ('Pitch::transpose', 'ly-transpose-pitch', str)
-
-		return str
-	
-	conversions.append (((1,5,56), conv, 'Pitch::transpose -> ly-transpose-pitch'))
-
-if 1:
-	def conv (str):
-		str = re.sub ('textNonEmpty *= *##t', "TextScript \\set #'no-spacing-rods = ##f", str)
-		str = re.sub ('textNonEmpty *= *##f', "TextScript \\set #'no-spacing-rods = ##t", str)
-		return str
-	
-	conversions.append (((1,5,58), conv, 'deprecate textNonEmpty'))
-
-
-if 1:
-	def conv (str):
-		str = re.sub ('MinimumVerticalExtent', 'minimumV@rticalExtent', str)
-		str = re.sub ('minimumVerticalExtent', 'minimumV@rticalExtent', str)		
-		str = re.sub ('ExtraVerticalExtent', 'extraV@rticalExtent', str)
-		str = re.sub ('extraVerticalExtent', 'extraV@rticalExtent', str)		
-		str = re.sub ('VerticalExtent', 'verticalExtent', str)
-		str = re.sub ('extraV@rticalExtent', 'extraVerticalExtent', str)
-		str = re.sub ('minimumV@rticalExtent', 'minimumVerticalExtent', str)		
-		return str
-
-	conversions.append (((1,5,59), conv,
-	'XxxxVerticalExtent -> xxxVerticalExtent'))
-
-if 1:
-	def conv (str):
-		str = re.sub ('visibility-lambda', 'break-visibility', str)
-		return str
-
-	conversions.append (((1,5,62), conv,
-	'visibility-lambda -> break-visibility'))
-	
-
-if 1:
-	def conv (str):
-		if re.search (r'\addlyrics',str) \
-		       and re.search ('automaticMelismata', str)  == None:
-			sys.stderr.write  ('automaticMelismata is turned on by default since 1.5.67. Please fix this by hand.')
-			raise FatalConversionError()
-		return str
-
-	conversions.append (((1,5,67), conv,
-			     'automaticMelismata turned on by default'))
-
-if 1:
-	def conv (str):
-		str = re.sub ('ly-set-grob-property([^!])', 'ly-set-grob-property!\1', str)
-		str = re.sub ('ly-set-mus-property([^!])', 'ly-set-mus-property!\1', str)		
-		return str
-	
-	conversions.append (((1,5,68), conv, 'ly-set-X-property -> ly-set-X-property!'))
-
-if 1:
-	def conv (str):
-		str = re.sub ('extent-X', 'X-extent', str)
-		str = re.sub ('extent-Y', 'Y-extent', str)		
-		return str
-	
-	conversions.append (((1,5,71), conv, 'extent-[XY] -> [XY]-extent'))
-
-
-if 1:
-	def conv (str):
-		str = re.sub ("""#\(set! +point-and-click +line-column-location\)""",
-			      """#(set-point-and-click! \'line-column)""", str)
-		str = re.sub ("""#\(set![ \t]+point-and-click +line-location\)""",
-			      '#(set-point-and-click! \'line)', str)
-		str = re.sub ('#\(set! +point-and-click +#f\)',
-			      '#(set-point-and-click! \'none)', str)
-		return str
-	
-	conversions.append (((1,5,72), conv, 'set! point-and-click -> set-point-and-click!'))
-
-
-if 1:
-	def conv (str):
-		str = re.sub ('flag-style', 'stroke-style', str)
-		str = re.sub (r"""Stem([ ]+)\\override #'style""", r"""Stem \\override #'flag-style""", str);
-		str = re.sub (r"""Stem([ ]+)\\set([ ]+)#'style""", r"""Stem \\set #'flag-style""", str);
-		return str
-	
-	conversions.append (((1,6,5), conv, 'Stems: flag-style -> stroke-style; style -> flag-style'))
-
-
-if 1:
-	def subst_req_name (match):
-		return "(make-music-by-name \'%sEvent)" % regularize_id (match.group(1))
-
-	def conv (str):
-		str = re.sub ('\\(ly-make-music *\"([A-Z][a-z_]+)_req\"\\)', subst_req_name, str)
-		str = re.sub ('Request_chord', 'EventChord', str)
-		return str
-	
-	conversions.append (((1,7,1), conv, 'ly-make-music foo_bar_req -> make-music-by-name FooBarEvent'))
-
-
-if 1:
-	spanner_subst ={
-		"text" : 'TextSpanEvent',
-		"decrescendo" : 'DecrescendoEvent',
-		"crescendo" : 'CrescendoEvent',
-		"Sustain" : 'SustainPedalEvent',
-		"slur" : 'SlurEvent',
-		"UnaCorda" : 'UnaCordaEvent',
-		"Sostenuto" : 'SostenutoEvent',
-		}
-	def subst_ev_name (match):
-		stype = 'STOP'
-		if re.search ('start', match.group(1)):
-			stype= 'START'
-
-		mtype = spanner_subst[match.group(2)]
-		return "(make-span-event '%s %s)" % (mtype , stype)
-
-	def subst_definition_ev_name(match):
-		return ' = #%s' % subst_ev_name (match)
-	def subst_inline_ev_name (match):
-		s = subst_ev_name (match)
-		return '#(ly-export %s)' % s
-	def subst_csp_definition (match):
-		return ' = #(make-event-chord (list %s))' % subst_ev_name (match)
-	def subst_csp_inline (match):
-		return '#(ly-export (make-event-chord (list %s)))' % subst_ev_name (match)
-		
-	def conv (str):
-		str = re.sub (r' *= *\\spanrequest *([^ ]+) *"([^"]+)"', subst_definition_ev_name, str)
-		str = re.sub (r'\\spanrequest *([^ ]+) *"([^"]+)"', subst_inline_ev_name, str)
-		str = re.sub (r' *= *\\commandspanrequest *([^ ]+) *"([^"]+)"', subst_csp_definition, str)
-		str = re.sub (r'\\commandspanrequest *([^ ]+) *"([^"]+)"', subst_csp_inline, str)
-		str = re.sub (r'ly-id ', 'ly-import ', str)
-
-		str = re.sub (r' *= *\\script "([^"]+)"', ' = #(make-articulation "\\1")', str)
-		str = re.sub (r'\\script "([^"]+)"', '#(ly-export (make-articulation "\\1"))', str)
-		return str
-
-	conversions.append (((1,7,2), conv, '\\spanrequest -> #(make-span-event .. ), \script -> #(make-articulation .. )'))
-
-if 1:
-	def conv(str):
-		str = re.sub (r'\(ly-', '(ly:', str)
-
-		changed = [
-			r'duration\?',
-			r'font-metric\?',
-			r'molecule\?',
-			r'moment\?',
-			r'music\?',
-			r'pitch\?',
-			'make-duration',
-			'music-duration-length',
-			'duration-log',
-			'duration-dotcount',
-			'intlog2',
-			'duration-factor',
-			'transpose-key-alist',
-			'get-system',
-			'get-broken-into',
-			'get-original',
-			'set-point-and-click!',
-			'make-moment',
-			'make-pitch',
-			'pitch-octave',
-			'pitch-alteration',
-			'pitch-notename',
-			'pitch-semitones',
-			r'pitch<\?',
-			r'dir\?',
-			'music-duration-compress',
-			'set-point-and-click!'
-			]
-
-		origre = r'\b(%s)' % string.join (changed, '|')
-		
-		str = re.sub (origre, r'ly:\1',str)
-		str = re.sub ('set-point-and-click!', 'set-point-and-click', str)
-		
-		return str
-	
-	conversions.append (((1,7,3), conv, 'ly- -> ly:'))
-
-if 1:
-	def conv(str):
-		if re.search ('new-chords-done',str):
-			return str
-		
-		str = re.sub (r'<<', '< <', str)
-		str = re.sub (r'>>', '> >', str)
-		return str
-	
-	conversions.append (((1,7,4), conv, '<< >> -> < <  > >'))
-
-if 1:
-	def conv(str):
-		str = re.sub (r"\\transpose", r"\\transpose c'", str)
-		str = re.sub (r"\\transpose c' *([a-z]+)'", r"\\transpose c \1", str)
-		return str
-	conversions.append (((1,7,5), conv, '\\transpose TO -> \\transpose FROM  TO'))
-
-if 1:
-	def conv(str):
-		kws =   ['arpeggio',
-			 'sustainDown',
-			 'sustainUp',
-			 'f',
-			 'p',
-			 'pp',
-			 'ppp',
-			 'fp',
-			 'ff',
-			 'mf',
-			 'mp',
-			 'sfz',
-			 ]
-
-		origstr = string.join (kws, '|')
-		str = re.sub (r'([^_^-])\\(%s)\b' % origstr, r'\1-\\\2', str)
-		return str
-	conversions.append (((1,7,6), conv, 'note\\script -> note-\script'))
-
-
-if 1:
-	def conv(str):
-		str = re.sub (r"\\property *ChordNames *\. *ChordName *\\(set|override) *#'style *= *#('[a-z]+)",
-			      r"#(set-chord-name-style \2)", str)
-		str = re.sub (r"\\property *ChordNames *\. *ChordName *\\revert *#'style",
-			      r"", str)
-		return str
-	conversions.append (((1,7,10), conv, "\property ChordName #'style -> #(set-chord-name-style 'style)"))
-	
-
-
-if 1:
-	def conv(str):
-		str = re.sub (r"ly:transpose-pitch", "ly:pitch-transpose", str)
-		
-		return str
-	conversions.append (((1,7,11), conv, "transpose-pitch -> pitch-transpose"))
-
-if 1:
-	def conv(str):
-		str = re.sub (r"ly:get-molecule-extent", "ly:molecule-get-extent", str)
-		str = re.sub (r"ly:set-molecule-extent!", "ly:molecule-set-extent!", str)
-		str = re.sub (r"ly:add-molecule", "ly:molecule-add", str)
-		str = re.sub (r"ly:combine-molecule-at-edge", "ly:molecule-combine-at-edge", str)
-		str = re.sub (r"ly:align-to!", "ly:molecule-align-to!", str)
-		
-		return str
-	
-	conversions.append (((1,7,13), conv, "ly:XX-molecule-YY -> ly:molecule-XX-YY"))	
-
-if 1:
-	def conv(str):
-		str = re.sub (r"linewidth *= *-[0-9.]+ *(\\mm|\\cm|\\in|\\pt)?", 'raggedright = ##t', str )
-		return str
-	
-	conversions.append (((1,7,15), conv, "linewidth = -1 -> raggedright = ##t"))	
-
-if 1:
-	def conv(str):
-		str = re.sub ("divisiomaior",
-			      "divisioMaior", str)
-		str = re.sub ("divisiominima",
-			      "divisioMinima", str)
-		str = re.sub ("divisiomaxima",
-			      "divisioMaxima", str)
-		return str
-	
-	conversions.append (((1,7,16), conv, "divisiomaior -> divisioMaior"))
-
-if 1:
-	def conv(str):
-		str = re.sub ("Skip_req_swallow_translator",
-			      "Skip_event_swallow_translator", str)
-		return str
-	
-	conversions.append (((1,7,17), conv, "Skip_req  -> Skip_event"))
-
-if 1:
-	def conv(str):
-		str = re.sub ("groupOpen",
-			      "startGroup", str)
-		str = re.sub ("groupClose",
-			      "stopGroup", str)
-		str = re.sub ("#'outer",
-			      "#'enclose-bounds", str)
-
-		return str
-	
-	conversions.append (((1,7,18), conv,
-			     """groupOpen/Close  -> start/stopGroup,
-			     #'outer  -> #'enclose-bounds
-			     """))
-
-if 1:
-	def conv(str):
-		if re.search( r'\\GraceContext', str):
-			sys.stderr.write ("GraceContext has been removed")
-			sys.stderr.write ("please use #(add-to-grace-init .. )")
-			raise FatalConversionError()
-
-		str = re.sub ('HaraKiriStaffContext', 'RemoveEmptyStaffContext', str)
-		return str
-	
-	conversions.append (((1,7,19), conv,"remove GraceContext"))
-
-
-
-if 1:
-	def conv(str):
-		str = re.sub (
-			r"(set|override|revert) *#'type",
-			r"\1 #'style",
-			str)
-		return str
-	
-	conversions.append (((1,7,22), conv,"#'type -> #'style"))
-
-if 1:
-	def conv(str):
-		str = re.sub (
-			"barNonAuto *= *##t",
-			"automaticBars = ##f",
-			str)
-		str = re.sub (
-			"barNonAuto *= *##f",
-			"automaticBars = ##t",
-			str)
-		return str
-	
-	conversions.append (((1,7,23), conv,"barNonAuto -> automaticBars"))
-	
-
-if 1:
-	def conv(str):
-		if re.search( r'-(start|stop)Cluster', str):
-			sys.stderr.write ("""Cluster syntax has been changed.
-Please refer to the manual for details, and convert manually.
-""")
-			
-			raise FatalConversionError()
-
-		return str
-	
-	conversions.append (((1,7,24), conv,"cluster syntax"))
-
-if 1:
-	def conv(str):
-		str = re.sub (r"\\property *Staff\.(Sustain|Sostenuto|UnaCorda)Pedal *\\(override|set) *#'pedal-type *",
-				r"\property Staff.pedal\1Style ", 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"))
-
-
-
-if 1:
-
-	def sub_chord (m):
-		str = m.group(1)
-
-		origstr =  '<%s>' % str
-		if re.search (r'\\\\', str):
-			return origstr
-
-		if re.search (r'\\property', str):
-			return origstr
-
-		if re.match (r'^\s*\)?\s*\\[a-zA-Z]+', str):
-			return origstr
-
-		durs = []
-		def sub_durs (m, durs = durs):
-			durs.append(m.group(2))
-			return m.group (1)
-
-		str = re.sub (r"([a-z]+[,'!? ]*)([0-9]+\.*)", sub_durs, str)
-		dur_str = ''
-
-		for d in durs:
-			if dur_str == '':
-				dur_str = d
-			if dur_str <> d:
-				return '<%s>' % m.group (1)
-
-		pslur_strs = ['']
-		dyns = ['']
-		slur_strs = ['']
-
-		last_str = ''
-		while last_str <> str:
-			last_str = str
-
-			def sub_tremolos (m, slur_strs = slur_strs):
-				tr = m.group (2)
-				if tr not in slur_strs:
-					slur_strs.append (tr)
-				return  m.group (1)
-			
-  			str = re.sub (r"([a-z]+[',!? ]*)(:[0-9]+)",
-				      sub_tremolos, str)
-
-			def sub_dyn_end (m, dyns = dyns):
-				dyns.append (' \!')
-				return ' ' + m.group(2)
-
-			str = re.sub (r'(\\!)\s*([a-z]+)', sub_dyn_end, str)
-			def sub_slurs(m, slur_strs = slur_strs):
-				if '-)' not in slur_strs:
-					slur_strs.append (')')
-				return m.group(1)
-			
-			def sub_p_slurs(m, slur_strs = slur_strs):
-				if '-\)' not in slur_strs:
-					slur_strs.append ('\)')
-				return m.group(1)
-			
-			str = re.sub (r"\)[ ]*([a-z]+)", sub_slurs, str)
-			str = re.sub (r"\\\)[ ]*([a-z]+)", sub_p_slurs, str)
-			def sub_begin_slurs(m, slur_strs = slur_strs):
-				if '-(' not in slur_strs:
-					slur_strs.append ('(')
-				return m.group(1)
-			
-			str = re.sub (r"([a-z]+[,'!?0-9 ]*)\(",
-				      sub_begin_slurs, str)
-			def sub_begin_p_slurs(m, slur_strs = slur_strs):
-				if '-\(' not in slur_strs:
-					slur_strs.append ('\(')
-				return m.group(1)
-
-			str = re.sub (r"([a-z]+[,'!?0-9 ]*)\\\(",
-				sub_begin_p_slurs, str)
-
-			def sub_dyns (m, slur_strs = slur_strs):
-				s = m.group(0)
-				if s == '@STARTCRESC@':
-					slur_strs.append ("\\<")
-				elif s == '@STARTDECRESC@':
-					slur_strs.append ("\\>")
-				elif s == r'-?\\!':
-					slur_strs.append ('\\!')
-				return ''
-
-			str = re.sub (r'@STARTCRESC@', sub_dyns, str)
-			str = re.sub (r'-?\\!', sub_dyns, str)
-
-			def sub_articulations (m, slur_strs = slur_strs):
-				a = m.group(1)
-				if a not in slur_strs:
-					slur_strs.append (a)
-				return ''
-
-			str = re.sub (r"([_^-]\@ACCENT\@)", sub_articulations,
-				      str)
-			str = re.sub (r"([_^-]\\[a-z]+)", sub_articulations,
-				      str)
-			str = re.sub (r"([_^-][>_.+|^-])", sub_articulations,
-				      str)
-			str = re.sub (r'([_^-]"[^"]+")', sub_articulations,
-				      str)
-
-			def sub_pslurs(m, slur_strs = slur_strs):
-				slur_strs.append (' \\)')
-				return m.group(1)
-			str = re.sub (r"\\\)[ ]*([a-z]+)", sub_pslurs, str)
-
-		## end of while <>
-
-		suffix = string.join (slur_strs, '') + string.join (pslur_strs,
-								    '') \
-			 + string.join (dyns, '')
-
-		return '@STARTCHORD@%s@ENDCHORD@%s%s' % (str , dur_str, suffix)
-
-
-
-	def sub_chords (str):
-		simend = '>'
-		simstart = '<'
-		chordstart = '<<'
-		chordend = '>>'
-		marker_str = '%% new-chords-done %%'
-
-		if re.search (marker_str,str):
-			return str
-		str = re.sub ('<<', '@STARTCHORD@', str)
-		str = re.sub ('>>', '@ENDCHORD@', str)
-		
-		str = re.sub (r'\\<', '@STARTCRESC@', str)
-		str = re.sub (r'\\>', '@STARTDECRESC@', str)
-		str = re.sub (r'([_^-])>', r'\1@ACCENT@', str)
-		str = re.sub (r'<([^<>{}]+)>', sub_chord, str)
-
-		# add dash: -[, so that [<<a b>> c d] becomes
-		#                      <<a b>>-[ c d]
-		# and gets skipped by articulation_substitute
-		str = re.sub (r'\[ *(@STARTCHORD@[^@]+@ENDCHORD@[0-9.]*)',
-			      r'\1-[', str)
-		str = re.sub (r'\\! *(@STARTCHORD@[^@]+@ENDCHORD@[0-9.]*)',
-			      r'\1-\\!', str)
-		
-		str = re.sub (r'<([^?])', r'%s\1' % simstart, str)
-		str = re.sub (r'>([^?])', r'%s\1' % simend,  str)
-		str = re.sub ('@STARTCRESC@', r'\\<', str)
-		str = re.sub ('@STARTDECRESC@', r'\\>' ,str)
-		str = re.sub (r'\\context *Voice *@STARTCHORD@',
-			      '@STARTCHORD@', str)
-		str = re.sub ('@STARTCHORD@', chordstart, str)
-		str = re.sub ('@ENDCHORD@', chordend, str)
-		str = re.sub (r'@ACCENT@', '>', str)
-		return str
-
-	def articulation_substitute (str):
-		str = re.sub (r"""([^-])\[ *([a-z]+[,']*[!?]?[0-9:]*\.*)""",
-			      r"\1 \2[", str)
-		str = re.sub (r"""([^-])\\\) *([a-z]+[,']*[!?]?[0-9:]*\.*)""",
-			      r"\1 \2\\)", str)
-		str = re.sub (r"""([^-\\])\) *([a-z]+[,']*[!?]?[0-9:]*\.*)""",
-			      r"\1 \2)", str)
-		str = re.sub (r"""([^-])\\! *([a-z]+[,']*[!?]?[0-9:]*\.*)""",
-			      r"\1 \2\\!", str)
-		return str
-	
-	def conv_relative(str):
-		if re.search (r"\\relative", str):
-			str= "#(ly:set-option 'old-relative)\n" + str
-
-		return str
-	
-	def conv (str):
-		str =  conv_relative (str)
-		str = sub_chords (str)
-
-		str = articulation_substitute (str)
-		
-		return str
-	
-	conversions.append (((1,9,0), conv, """New relative mode,
-Postfix articulations, new chord syntax."""))
-
-if 1:
-	def conv (str):
-		if re.search ("font-style",str):
-			sys.stderr.write ("font-style is deprecated. Please remove.")
-			raise FatalConversionError()
-			
-		str = re.sub (r'-\\markup', r'@\\markup', str)
-		str = re.sub (r'-\\', r'\\', str)
-		str = re.sub (r'-\)', ')', str)
-		str = re.sub (r'-\(', '(', str)
-		str = re.sub ('-\[', '[', str)
-		str = re.sub ('-\]', ']', str)
-		str = re.sub ('-~', '~', str)
-		str = re.sub (r'@\\markup', r'-\\markup', str)
-		return str
-
-	conversions.append (((1,9,1), conv, """Remove - before articulation"""))
-if 1:
-	def conv (str):
-		str = re.sub ('ly:set-context-property',
-			      'ly:set-context-property!', str)
-		str = re.sub ('\\\\newcontext', '\\\\new', str)
-		str = re.sub ('\\\\grace[\t\n ]*([^{ ]+)',
-			      r'\\grace { \1 }', str)
-		str = re.sub ("\\\\grace[\t\n ]*{([^}]+)}",
-			      r"""\\grace {
-  \\property Voice.Stem \\override #'stroke-style = #"grace"
-  \1
-  \\property Voice.Stem \\revert #'stroke-style }
-""", str)
-		
-		return str
-	
-	conversions.append (((1,9,2), conv, """\newcontext -> \new"""))
-
-if 1:
-	def conv (str):
-		str = re.sub ('accacciatura',
-			      'acciaccatura', str)
-
-		if re.search ("context-spec-music", str):
-			sys.stderr.write ("context-spec-music takes a symbol for the context now. Update by hand.")
-					
-			raise FatalConversionError()
-		
-		str = re.sub ('fingerHorizontalDirection *= *#(LEFT|-1)',
-			      "fingeringOrientations = #'(up down left)", str)
-		str = re.sub ('fingerHorizontalDirection *= *#(RIGHT|1)',
-			      "fingeringOrientations = #'(up down right)", str)
-
-		return str
-	
-	conversions.append (((1,9,3), conv,
-			     """\acciaccatura misspelling, fingerHorizontalDirection -> fingeringOrientations"""))
-
-
-def conv (str):
-	if re.search ('\\figures', str):
-		sys.stderr.write ("Warning: attempting automatic \\figures conversion.  Check results!");
-		
-	
-	def figures_replace (m):
-		s = m.group (1)
-		s = re.sub ('<', '@FIGOPEN@',s)
-		s = re.sub ('>', '@FIGCLOSE@',s)
-		return '\\figures { %s }' % s
-	
-	str = re.sub (r'\\figures[ \t\n]*{([^}]+)}', figures_replace, str)
-	str = re.sub (r'\\<', '@STARTCRESC@', str)
-	str = re.sub (r'\\>', '@STARTDECRESC@', str)
-	str = re.sub (r'([-^_])>', r'\1@ACCENT@', str)
-	str = re.sub (r'<<', '@STARTCHORD@', str)
-	str = re.sub (r'>>', '@ENDCHORD@', str)
-	str = re.sub (r'>', '@ENDSIMUL@', str)
-	str = re.sub (r'<', '@STARTSIMUL@', str)
-	str = re.sub ('@STARTDECRESC@', '\\>', str)
-	str = re.sub ('@STARTCRESC@', '\\<', str)
-	str = re.sub ('@ACCENT@', '>', str)
-	str = re.sub ('@ENDCHORD@', '>', str)
-	str = re.sub ('@STARTCHORD@', '<', str)
-	str = re.sub ('@STARTSIMUL@', '<<', str)
-	str = re.sub ('@ENDSIMUL@', '>>', str)
-	str = re.sub ('@FIGOPEN@', '<', str)
-	str = re.sub ('@FIGCLOSE@', '>', str)
-
-	return str
-
-conversions.append (((1,9,4), conv, 'Swap < > and << >>'))
-
-
-def conv (str):
-	str = re.sub ('HaraKiriVerticalGroup', 'RemoveEmptyVerticalGroup', str)
-
-	return str
-
-conversions.append (((1,9,5), conv, 'HaraKiriVerticalGroup -> RemoveEmptyVerticalGroup'))
-
-def conv (str):
-	if re.search ("ly:get-font", str) :
-		sys.stderr.write (r"(ly:get-font foo ..)  has been replaced by" + \
-				  " (ly:paper-get-font (ly:grob-get-paper foo) .. ).\n" +\
-				  "please update manually.")
-		
-		raise FatalConversionError()
-	
-	if re.search ("\\pitch *#", str) :
-		sys.stderr.write (r"\\pitch has been deprecated. " +\
-				  " Use Scheme code to construct arbitrary note events.")
-		
-		raise FatalConversionError()
-	
-	return str
-		
-
-conversions.append (((1,9,6), conv, 'ly:get-font deprecated.'))
-
-def conv (str):
-	def sub_alteration (m):
-		alt = m.group (3)
-		alt = {
-			'-1': 'FLAT',
-			'-2': 'DOUBLE-FLAT',
-			'0': 'NATURAL',
-			'1': 'SHARP',
-			'2': 'DOUBLE-SHARP',
-			}[alt]
-		
-		return '(ly:make-pitch %s %s %s)' % (m.group(1), m.group (2),
-						     alt)
-	
-	str =re.sub ("\\(ly:make-pitch *([0-9-]+) *([0-9-]+) *([0-9-]+) *\\)",
-		     sub_alteration, str)
-
-
-	str = re.sub ("ly:verbose", "ly:get-option 'verbose", str)
-
-	m= re.search ("\\\\outputproperty #([^#]+)[\t\n ]*#'([^ ]+)", str)
-	if m:
-		sys.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)) )
-		raise FatalConversionError ()
-
-	if re.search ("ly:(make-pitch|pitch-alteration)", str) \
-	       or re.search ("keySignature", str):
-		sys.stderr.write (
-"""The alteration field of Scheme pitches was multiplied by 2
-to support quarter tone accidentals. You have to edit the following constructs by hand:
-
-* 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'''))
-
-
-def conv (str):
-	if re.search ("dash-length",str):
-		sys.stderr.write ("""dash-length has been removed. Use dash-fraction instead.""")
-		raise FatalConversionError()
-	return str
-
-conversions.append (((1,9,8), conv, """dash-length -> dash-fraction"""))
-
-
-def conv (str):
-	def func(match):
-		return "#'font-size = #%d" % (2*string.atoi (match.group (1))) 
-		
-	str =re.sub (r"#'font-relative-size\s*=\s*#([0-9-]+)", func, str)
-	str =re.sub (r"#'font-family\s*=\s*#'ancient",
-		     r"#'font-family = #'music", str)
-	
-	return str
-
-conversions.append (((2,1,1), conv, """font-relative-size -> font-size"""))
-
-def conv (str):
-	str =re.sub (r"ly:get-music-length", "ly:music-length", str)
-	return str
-
-conversions.append (((2,1,2), conv, """ly:get-music-length -> ly:music-length"""))
-
-def conv (str):
-	str =re.sub (r"\.\s+stz=", ". instr ", str)
-	return str
-
-conversions.append (((2,1,3), conv, """stanza -> instrument"""))
-
-def conv (str):
-	def func (match):
-		c = match.group (1)
-		b = match.group (2)
-		
-		if b == 't':
-			if c == 'Score':
-				return ''
-			else:
-				return r" \property %s.melismaBusyProperties \unset"  % c
-		elif b == 'f':
-			return r"\property %s.melismaBusyProperties = #'(melismaBusy)"  % c
-		
-	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."""))
-
-
-
-def conv (str):
-	str =re.sub (r"\\translator\s+([a-zA-Z]+)", r"\\change \1", str)
-	return str
-
-conversions.append (((2,1,7), conv, """\\translator Staff -> \\change Staff"""))
-
-def conv (str):
-	str =re.sub (r"\\newaddlyrics", r"\\lyricsto", str)
-	return str
-
-conversions.append (((2,1,10), conv, """\\newaddlyrics -> \\lyricsto"""))
-
-def conv (str):
-	str = re.sub (r'\\include\s*"paper([0-9]+)(-init)?.ly"',
-		      r"#(set-staff-size \1)", str)
-
-	def sub_note (match):
-		dur = ''
-		log = string.atoi (match.group (1))
-		dots = string.atoi (match.group (2))
-		
-		if log >= 0:
-			dur = '%d' % (1 << log)
-		else:
-			dur = { -1 : 'breve',
-				-2 : 'longa',
-				-3 : 'maxima'}[log]
-
-		dur += ('.' * dots)
-		
-		return r'\note #"%s" #%s' % (dur, match.group (3))
-	
-	str = re.sub (r'\\note\s+#([0-9-]+)\s+#([0-9]+)\s+#([0-9.-]+)',
-		      sub_note, str)
-	return str
-
-conversions.append (((2,1,11), conv, """\\include "paper16.ly" -> #(set-staff-size 16)
-\note #3 #1 #1 -> \note #"8." #1
-"""))
-
-
-def conv (str):
-	str =re.sub (r"OttavaSpanner", r"OttavaBracket", str)
-	return str
-
-conversions.append (((2,1,12), conv, """OttavaSpanner -> OttavaBracket"""))
-
-
-def conv (str):
-	str =re.sub (r"\(set-staff-size ", r"(set-global-staff-size ", str)
-	return str
-
-conversions.append (((2,1,13), conv, """set-staff-size -> set-global-staff-size"""))
-
-def conv (str):
-	str =re.sub (r"#'style\s*=\s*#'dotted-line",
-		     r"#'dash-fraction = #0.0 ", str)
-	return str
-
-conversions.append (((2,1,14), conv, """style = dotted -> dash-fraction = 0"""))
-
-def conv (str):
-	str =re.sub (r'LyricsVoice\s*\.\s*instrument\s*=\s*("[^"]*")',
-		     r'LyricsVoice . vocalName = \1', str)
-	
-	str =re.sub (r'LyricsVoice\s*\.\s*instr\s*=\s*("[^"]*")',
-		     r'LyricsVoice . vocNam = \1', str)
-	return str
-
-conversions.append (((2,1,15), conv, """LyricsVoice . instr(ument) -> vocalName"""))
-
-def conv (str):
-	def sub_acc (m):
-		d = {
-		'4': 'doublesharp',
-		'3': 'threeqsharp',
-		'2': 'sharp',
-		'1': 'semisharp',
-		'0': 'natural',
-		'-1': 'semiflat',
-		'-2': 'flat',
-		'-3': 'threeqflat',
-		'-4': 'doubleflat'}
-		return '\\%s' %  d[m.group (1)]
-		     
-	str = re.sub (r'\\musicglyph\s*#"accidentals-([0-9-]+)"',
-		      sub_acc, str)
-	return str
-
-conversions.append (((2,1,16), conv, """\\musicglyph #"accidentals-NUM" -> \\sharp/flat/etc."""))
-
-
-def conv (str):
-
-	if re.search (r'\\partcombine', str):
-		sys.stderr.write ('Warning: \\partcombine has been changed. '
-				  +'Check conversion manually!')
-
-		raise FatalConversionError()
-
-	# this rule doesn't really work,
-	# too lazy to figure out why.
-	str = re.sub (r'\\context\s+Voice\s*=\s*one\s*\\partcombine\s+Voice\s*\\context\s+Thread\s*=\s*one(.*)\s*'
-		      + r'\\context\s+Thread\s*=\s*two',
-		      '\\\\newpartcombine\n\\1\n', str)
-	
-	
-	return str
-
-conversions.append (((2,1,17), conv, """\\partcombine syntax change to \\newpartcombine"""))
-
-
-def conv (str):
-	str = re.sub (r'\\newpartcombine', r'\\partcombine', str)
-	str = re.sub (r'\\autochange\s+Staff', r'\\autochange ', str)
-	return str
-
-conversions.append (((2,1,18), conv, """\\newpartcombine -> \\partcombine,
-\\autochange Staff -> \\autochange
-"""))
-
-
-
-
-def conv (str):
-	str = re.sub (r'\\include "drumpitch-init.ly"','', str)
-	str = re.sub (r'\\pitchnames ','pitchnames = ', str)
-	str = re.sub (r'\\chordmodifiers ','chordmodifiers = ', str)
-	str = re.sub (r'\bdrums\b\s*=','drumContents = ', str)
-	str = re.sub (r'\\drums\b','\\drumContents ', str)
-	
-
-	if re.search ('drums->paper', str):
-		sys.stderr.write ("\nDrum notation found. Check file manually!")
-		
-	str = re.sub (r"""\\apply\s+#\(drums->paper\s+'([a-z]+)\)""",
-		      r"""\property DrumStaff.drumStyleTable = #\1-style""",
-		      str)
-
-	if re.search ('Thread', str):
-		sys.stderr.write ("\nThread found. Check file manually!\n");
-
-	str = re.sub (r"""(\\once\s*)?\\property\s+Thread\s*\.\s*NoteHead\s*"""
-		      + r"""\\(set|override)\s*#'style\s*=\s*#'harmonic"""
-		      + r"""\s+([a-z]+[,'=]*)([0-9]*\.*)"""		      
-		      ,r"""<\3\\harmonic>\4""", str)
-
-	str = re.sub (r"""\\new Thread""", """\context Voice""", str)
-	str = re.sub (r"""Thread""", """Voice""", str)
-
-	if re.search ('\bLyrics\b', str):
-		sys.stderr.write ("\nLyrics found. Check file manually!\n");
-
-	str = re.sub (r"""LyricsVoice""", r"""L@ricsVoice""", str)
-	str = re.sub (r"""\bLyrics\b""", r"""LyricsVoice""", str)
-	str = re.sub (r"""LyricsContext""", r"""LyricsVoiceContext""", str)
-	str = re.sub (r"""L@ricsVoice""", r"""LyricsVoice""",str)
-	
-	
-	return str
-
-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)
-	return str
-
-conversions.append (((2,1,20), conv, """nonevent-skip -> skip-music""" ))
-
-def conv (str):
-	str = re.sub (r'molecule-callback', 'print-function', str)
-	str = re.sub (r'brew_molecule', 'print', str)
-	str = re.sub (r'brew-new-markup-molecule', 'Text_item::print', str)
-	str = re.sub (r'LyricsVoice', 'Lyrics', str)
-	str = re.sub (r'tupletInvisible',
-		      r"TupletBracket \\set #'transparent", str)
-	
-	return str
-
-conversions.append (((2,1,21), conv, """molecule-callback -> print-function,
-brew_molecule -> print
-brew-new-markup-molecule -> Text_item::print
-LyricsVoice -> Lyrics
-tupletInvisible -> TupletBracket \set #'transparent
-""" ))
-
-
-
-
-################################
-#	END OF CONVERSIONS	
-################################
-
-def get_conversions (from_version, to_version):
-	def version_b (v, f = from_version, t = to_version):
-		return version_cmp (v[0], f) > 0 and version_cmp (v[0], t) <= 0
-	return filter (version_b, conversions)
-
-
-def latest_version ():
-	return conversions[-1][0]
-
-def do_conversion (infile, from_version, outfile, to_version):
-	conv_list = get_conversions (from_version, to_version)
-
-	sys.stderr.write ('Applying conversions: ')
-	str = infile.read ()
-	last_conversion = ()
-	try:
-		for x in conv_list:
-			sys.stderr.write (tup_to_str (x[0])  + ', ')
-			str = x[1] (str)
-			last_conversion = x[0]
-
-	except FatalConversionError:
-		sys.stderr.write ('Error while converting; I won\'t convert any further')
-
-	if last_conversion:
-		sys.stderr.write ('\n')
-		new_ver =  '\\version \"%s\"' % tup_to_str (last_conversion)
-
-		if re.search (lilypond_version_re_str, str):
-			str = re.sub (lilypond_version_re_str,'\\'+new_ver , str)
-		elif add_version:
-			str = new_ver + '\n' + str
-
-		outfile.write(str)
-
-	return last_conversion
-	
-class UnknownVersion:
-	pass
-
-def do_one_file (infile_name):
-	sys.stderr.write ('Processing `%s\' ... '% infile_name)
-	outfile_name = ''
-	if __main__.edit:
-		outfile_name = infile_name + '.NEW'
-	elif __main__.outfile_name:
-		outfile_name = __main__.outfile_name
-
-	if __main__.from_version:
-		from_version = __main__.from_version
-	else:
-		guess = guess_lilypond_version (infile_name)
-		if not guess:
-			raise UnknownVersion()
-		from_version = str_to_tuple (guess)
-
-	if __main__.to_version:
-		to_version = __main__.to_version
-	else:
-		to_version = latest_version ()
-
-
-	if infile_name:
-		infile = open (infile_name,'r')
-	else:
-		infile = sys.stdin
-
-	if outfile_name:
-		outfile =  open (outfile_name, 'w')
-	else:
-		outfile = sys.stdout
-
-	touched = do_conversion (infile, from_version, outfile, to_version)
-
-	if infile_name:
-		infile.close ()
-
-	if outfile_name:
-		outfile.close ()
-
-	if __main__.edit and touched:
-		try:
-			os.remove(infile_name + '~')
-		except:
-			pass
-		os.rename (infile_name, infile_name + '~')
-		os.rename (infile_name + '.NEW', infile_name)
-
-	sys.stderr.write ('\n')
-	sys.stderr.flush ()
-
-edit = 0
-assume_old = 0
-to_version = ()
-from_version = ()
-outfile_name = ''
-
-(options, files) = getopt.getopt (
-	sys.argv[1:], 'ao:f:t:senh', ['no-version', 'version', 'output', 'show-rules', 'help', 'edit', 'from=', 'to='])
-
-for opt in options:
-	o = opt[0]
-	a = opt[1]
-	if o== '--help' or o == '-h':
-		usage ()
-		sys.exit (0)
-	if o == '--version' or o == '-v':
-		print_version ()
-		sys.exit (0)
-	elif o== '--from' or o=='-f':
-		from_version = str_to_tuple (a)
-	elif o== '--to' or o=='-t':
-		to_version = str_to_tuple (a)
-	elif o== '--edit' or o == '-e':
-		edit = 1
-	elif o== '--show-rules' or o == '-s':
-		show_rules (sys.stdout)
-		sys.exit(0)
-	elif o == '--output' or o == '-o':
-		outfile_name = a
-	elif o == '--no-version' or o == '-n':
-		add_version = 0
-	else:
-		print o
-		raise getopt.error
-
-identify ()
-for f in files:
-	if f == '-':
-		f = ''
-	elif not os.path.isfile (f):
-		continue
-	try:
-		do_one_file (f)
-	except UnknownVersion:
-		sys.stderr.write ('\n')
-		sys.stderr.write ("%s: can't determine version for `%s'" % (program_name, f))
-		sys.stderr.write ('\n')
-		if assume_old:
-			fv = from_version
-			from_version = (0,0,0)
-			do_one_file (f)
-			from_version = fv
-		else:
-			sys.stderr.write ("%s: skipping: `%s' " % (program_name,  f))
-		pass
-
-sys.stderr.write ('\n')
diff --git a/scripts/etf2ly.py b/scripts/etf2ly.py
deleted file mode 100644
index 34a1c9e018..0000000000
--- a/scripts/etf2ly.py
+++ /dev/null
@@ -1,1224 +0,0 @@
-#!@PYTHON@
-
-# info mostly taken from looking at files. See also
-# http://lilypond.org/wiki/?EnigmaTransportFormat
-
-# This supports
-#
-#  * notes
-#  * rests
-#  * ties
-#  * slurs
-#  * lyrics
-#  * articulation
-#  * grace notes
-#  * tuplets
-#
-
-# todo:
-#  * slur/stem directions
-#  * voices (2nd half of frame?)
-#  * more intelligent lyrics
-#  * beams (better use autobeam?)
-#  * more robust: try entertainer.etf (freenote)
-#  * dynamics
-#  * empty measures (eg. twopt03.etf from freenote)
-#
-
-
-program_name = 'etf2ly'
-version = '@TOPLEVEL_VERSION@'
-if version == '@' + 'TOPLEVEL_VERSION' + '@':
-	version = '(unknown version)'	   # uGUHGUHGHGUGH
-  
-import __main__
-import getopt
-import sys
-import re
-import string
-import os
-
-finale_clefs= ['treble', 'alto', 'tenor', 'bass', 'percussion', 'treble_8', 'bass_8', 'baritone']
-
-def lily_clef (fin):
-	try:
-		return finale_clefs[fin]
-	except IndexError:
-		sys.stderr.write ( '\nHuh? Found clef number %d\n' % fin)
-
-	return 'treble'
-	
-	
-
-def gulp_file(f):
-	return open (f).read ()
-
-# notename 0 == central C
-distances = [0, 2, 4, 5, 7, 9, 11, 12]
-def semitones (name, acc):
-	return (name / 7 ) * 12 + distances[name % 7] + acc
-
-# represent pitches as (notename, alteration), relative to C-major scale
-def transpose(orig, delta):
-	(oname, oacc) = orig
-	(dname, dacc) = delta
-	
-	old_pitch =semitones (oname, oacc)
-	delta_pitch = semitones (dname, dacc)
-	nname = (oname + dname) 
-	nacc = oacc
-	new_pitch = semitones (nname, nacc) 
-
-	nacc = nacc - (new_pitch - old_pitch - delta_pitch)
-
-	return (nname, nacc)
-
-
-
-def interpret_finale_key_sig (finale_id):
-	"""
-find the transposition of C-major scale that belongs here.
-
-we are not going to insert the correct major/minor, we only want to
-have the correct number of accidentals
-"""
-
-	p = (0,0)
-
-	
-	bank_number = finale_id >> 8
-	accidental_bits = finale_id & 0xff
-
-	if 0 <= accidental_bits < 7:
-		while accidental_bits > 0:
-			p = transpose (p, (4,0)) # a fifth up
-			accidental_bits = accidental_bits - 1
-	elif 248 < accidental_bits <= 255:
-		while accidental_bits < 256:
-			p = transpose (p, (3,0))
-			accidental_bits = accidental_bits + 1
-
-	if bank_number == 1:
-		# minor scale
-		p = transpose (p, (5, 0))
-	p  = (p[0] % 7, p[1])
-
-	return KeySignature (p, bank_number)
-
-# should cache this.
-def find_scale (keysig):
-	cscale = map (lambda x: (x,0), range (0,7))
-	print "cscale: ", cscale
-	ascale = map (lambda x: (x,0), range (-2,5))
-	print "ascale: ", ascale
-	transposition = keysig.pitch
-	if keysig.sig_type == 1:
-		transposition = transpose(transposition, (2, -1))
-		transposition = (transposition[0] % 7, transposition[1])
-		trscale = map(lambda x, k=transposition: transpose(x, k), ascale)
-	else:
-		trscale = map(lambda x, k=transposition: transpose(x, k), cscale)
-	print "trscale: ", trscale
-	return trscale
-
-def EDU_to_duration (edu):
-	log = 1
-	d = 4096
-	while d > edu:
-		d = d >> 1
-		log = log << 1
-
-	edu = edu - d
-	dots = 0
-	if edu == d /2:
-		dots = 1
-	elif edu == d*3/4:
-		dots = 2
-	return (log, dots)	
-
-def rat_to_lily_duration (rat):
-	(n,d) = rat
-
-	basedur = 1
-	while d and  d % 2 == 0:
-		basedur = basedur << 1
-		d = d >> 1
-
-	str = 's%d' % basedur
-	if n <> 1:
-		str = str + '*%d' % n
-	if d <> 1:
-		str = str + '/%d' % d
-
-	return str
-
-def gcd (a,b):
-	if b == 0:
-		return a
-	c = a
-	while c: 
-		c = a % b
-		a = b
-		b = c
-	return a
-	
-
-def rat_simplify (r):
-	(n,d) = r
-	if d < 0:
-		d = -d
-		n = -n
-	if n == 0:
-		return (0,1)
-	else:
-		g = gcd (n, d)
-		return (n/g, d/g)
-	
-def rat_multiply (a,b):
-	(x,y) = a
-	(p,q) = b
-
-	return rat_simplify ((x*p, y*q))
-
-def rat_add (a,b):
-	(x,y) = a
-	(p,q) = b
-
-	return rat_simplify ((x*q + p*y, y*q))
-
-def rat_neg (a):
-	(p,q) = a
-	return (-p,q)
-
-
-
-def rat_subtract (a,b ):
-	return rat_add (a, rat_neg (b))
-
-def lily_notename (tuple2):
-	(n, a) = tuple2
-	nn = chr ((n+ 2)%7 + ord ('a'))
-
-	return nn + {-2:'eses', -1:'es', 0:'', 1:'is', 2:'isis'}[a]
-
-
-class Tuplet:
-	def __init__ (self, number):
-		self.start_note = number
-		self.finale = []
-
-	def append_finale (self, fin):
-		self.finale.append (fin)
-
-	def factor (self):
-		n = self.finale[0][2]*self.finale[0][3]
-		d = self.finale[0][0]*self.finale[0][1]
-		return rat_simplify( (n, d))
-	
-	def dump_start (self):
-		return '\\times %d/%d { ' % self.factor ()
-	
-	def dump_end (self):
-		return ' }'
-
-	def calculate (self, chords):
-		edu_left = self.finale[0][0] * self.finale[0][1]
-
-		startch = chords[self.start_note]
-		c = startch
- 		while c and edu_left:
-			c.tuplet = self
-			if c == startch:
-				c.chord_prefix = self.dump_start () + c.chord_prefix 
-
-			if not c.grace:
-				edu_left = edu_left - c.EDU_duration ()
-			if edu_left == 0:
-				c.chord_suffix = c.chord_suffix+ self.dump_end ()
-			c = c.next
-
-		if edu_left:
-			sys.stderr.write ("\nHuh? Tuplet starting at entry %d was too short." % self.start_note)
-		
-class Slur:
-	def __init__ (self, number, params):
-		self.number = number
-		self.finale = params
-
-	def append_entry (self, finale_e):
-		self.finale.append (finale_e)
-
-	def calculate (self, chords):
-		startnote = self.finale[5]
-		endnote = self.finale[3*6 + 2]
-		try:
-			cs = chords[startnote]
-			ce = chords[endnote]
-
-			if not cs or not ce:
-				raise IndexError
-			
-			cs.note_suffix = '-(' + cs.note_suffix 
-			ce.note_suffix = ce.note_suffix + '-)'
-			
-		except IndexError:
-			sys.stderr.write ("""\nHuh? Slur no %d between (%d,%d), with %d notes""" % (self.number,  startnote, endnote, len (chords)))
-					 
-		
-class Global_measure:
-	def __init__ (self, number):
-		self.timesig = ''
-		self.number = number
-		self.key_signature = None
-		self.scale = None
-		self.force_break = 0
-		
-		self.repeats = []
-		self.finale = []
-
-	def __str__ (self):
-		return `self.finale `
-	
-	def set_timesig (self, finale):
-		(beats, fdur) = finale
-		(log, dots) = EDU_to_duration (fdur)
-
-		if dots == 1:
-			beats = beats * 3
-			log = log * 2
-			dots = 0
-
-		if dots <> 0:
-			sys.stderr.write ("\nHuh? Beat duration has  dots? (EDU Duration = %d)" % fdur) 
-		self.timesig = (beats, log)
-
-	def length (self):
-		return self.timesig
-	
-	def set_key_sig (self, finale):
-		k = interpret_finale_key_sig (finale)
-		self.key_signature = k
-		self.scale = find_scale (k)
-
-	def set_flags (self,flag1, flag2):
-		
-		# flag1 isn't all that interesting.
-		if flag2 & 0x8000:
-			self.force_break = 1
-			
-		if flag2 & 0x0008:
-			self.repeats.append ('start')
-		if flag2 & 0x0004:
-			self.repeats.append ('stop')
-			
-		if flag2 & 0x0002:
-			if flag2 & 0x0004:
-				self.repeats.append ('bracket')
-
-articulation_dict ={
-	94: '^',
-	109: '\\prall',
-	84: '\\turn',
-	62: '\\mordent',
-	85: '\\fermata',
-	46: '.',
-#	3: '>',
-#	18: '\arpeggio' ,
-}
-
-class Articulation_def:
-	def __init__ (self, n, a, b):
-		self.finale_glyph = a & 0xff
-		self.number = n
-
-	def dump (self):
-		try:
-			return articulation_dict[self.finale_glyph]
-		except KeyError:
-			sys.stderr.write ("\nUnknown articulation no. %d" % self.finale_glyph)
-			sys.stderr.write ("\nPlease add an entry to articulation_dict in the Python source")			
-			return None
-	
-class Articulation:
-	def __init__ (self, a,b, finale):
-		self.definition = finale[0]
-		self.notenumber = b
-		
-	def calculate (self, chords, defs):
-		c = chords[self.notenumber]
-
-		adef = defs[self.definition]
-		lystr =adef.dump()
-		if lystr == None:
-			lystr = '"art"'
-			sys.stderr.write ("\nThis happened on note %d" % self.notenumber)
-
-		c.note_suffix = '-' + lystr
-
-class Syllable:
-	def __init__ (self, a,b , finale):
-		self.chordnum = b
-		self.syllable = finale[1]
-		self.verse = finale[0]
-	def calculate (self, chords, lyrics):
-		self.chord = chords[self.chordnum]
-
-class Verse:
-	def __init__ (self, number, body):
-		self.body = body
-		self.number = number
-		self.split_syllables ()
-	def split_syllables (self):
-		ss = re.split ('(-| +)', self.body)
-
-		sep = 0
-		syls = [None]
-		for s in ss:
-			if sep:
-				septor = re.sub (" +", "", s)
-				septor = re.sub ("-", " -- ", septor) 
-				syls[-1] = syls[-1] + septor
-			else:
-				syls.append (s)
-			
-			sep = not sep 
-
-		self.syllables = syls
-
-	def dump (self):
-		str = ''
-		line = ''
-		for s in self.syllables[1:]:
-			line = line + ' ' + s
-			if len (line) > 72:
-				str = str + ' ' * 4 + line + '\n'
-				line = ''
-			
-		str = """\nverse%s = \\lyrics {\n %s}\n""" %  (encodeint (self.number - 1) ,str)
-		return str
-
-class KeySignature:
-	def __init__(self, pitch, sig_type = 0):
-		self.pitch = pitch
-		self.sig_type = sig_type
-	
-	def signature_type (self):
-		if self.sig_type == 1:
-			return "\\minor"
-		else:
-			# really only for 0, but we only know about 0 and 1
-			return "\\major"
-	
-	def equal (self, other):
-		if other and other.pitch == self.pitch and other.sig_type == self.sig_type:
-			return 1
-		else:
-			return 0
-	
-
-class Measure:
-	def __init__(self, no):
-		self.number = no
-		self.frames = [0] * 4
-		self.flags = 0
-		self.clef = 0
-		self.finale = []
-		self.global_measure = None
-		self.staff = None
-		self.valid = 1
-		
-
-	def valid (self):
-		return self.valid
-	def calculate (self):
-		fs = []
-
-		if len (self.finale) < 2:
-			fs = self.finale[0]
-
-			self.clef = fs[1]
-			self.frames = [fs[0]]
-		else:
-			fs = self.finale
-			self.clef = fs[0]
-			self.flags = fs[1]
-			self.frames = fs[2:]
-
-
-class Frame:
-	def __init__ (self, finale):
-		self.measure = None
-		self.finale = finale
-		(number, start, end ) = finale
-		self.number = number
-		self.start = start
-		self.end = end
-		self.chords  = []
-
-	def set_measure (self, m):
-		self.measure = m
-
-	def calculate (self):
-
-		# do grace notes.
-		lastch = None
-		for c in self.chords:
-			if c.grace and (lastch == None or (not lastch.grace)):
-				c.chord_prefix = r'\grace {' + c.chord_prefix
-			elif not c.grace and lastch and lastch.grace:
-				lastch.chord_suffix = lastch.chord_suffix + ' } '
-
-			lastch = c
-			
-
-		
-	def dump (self):
-		str = '%% FR(%d)\n' % self.number
-		left = self.measure.global_measure.length ()
-
-		
-		ln = ''
-		for c in self.chords:
-			add = c.ly_string () + ' '
-			if len (ln) + len(add) > 72:
-				str = str + ln + '\n'
-				ln = ''
-			ln = ln + add
-			left = rat_subtract (left, c.length ())
-
-		str = str + ln 
-		
-		if left[0] < 0:
-			sys.stderr.write ("""\nHuh? Going backwards in frame no %d, start/end (%d,%d)""" % (self.number, self.start, self.end))
-			left = (0,1)
-		if left[0]:
-			str = str + rat_to_lily_duration (left)
-
-		str = str + '  | \n'
-		return str
-		
-def encodeint (i):
-	return chr ( i  + ord ('A'))
-
-class Staff:
-	def __init__ (self, number):
-		self.number = number
-		self.measures = []
-
-	def get_measure (self, no):
-		fill_list_to (self.measures, no)
-
-		if self.measures[no] == None:
-			m = Measure (no)
-			self.measures [no] =m
-			m.staff = self
-
-		return self.measures[no]
-	def staffid (self):
-		return 'staff' + encodeint (self.number - 1)
-	def layerid (self, l):
-		return self.staffid() +  'layer%s' % chr (l -1 + ord ('A'))
-	
-	def dump_time_key_sigs (self):
-		k  = ''
-		last_key = None
-		last_time = None
-		last_clef = None
-		gap = (0,1)
-		for m in self.measures[1:]:
-			if not m or not m.valid:
-				continue # ugh.
-			
-			g = m.global_measure
-			e = ''
-			
-			if g:
-				if g.key_signature and not g.key_signature.equal(last_key):
-					pitch= g.key_signature.pitch
-					e = e + "\\key %s %s " % (lily_notename (pitch),
-								  g.key_signature.signature_type())
-					
-					last_key = g.key_signature
-				if last_time <> g.timesig :
-					e = e + "\\time %d/%d " % g.timesig
-					last_time = g.timesig
-
-				if 'start' in g.repeats:
-					e = e + ' \\bar "|:" ' 
-
-
-				# we don't attempt voltas since they fail easily.
-				if 0 : # and g.repeat_bar == '|:' or g.repeat_bar == ':|:' or g.bracket:
-					strs = []
-					if g.repeat_bar == '|:' or g.repeat_bar == ':|:' or g.bracket == 'end':
-						strs.append ('#f')
-
-					
-					if g.bracket == 'start':
-						strs.append ('"0."')
-
-					str = string.join (map (lambda x: '(volta %s)' % x, strs))
-					
-					e = e + ' \\property Score.repeatCommands =  #\'(%s) ' % str
-
-				if g.force_break:
-					e = e + ' \\break '  
-			
-			if last_clef <> m.clef :
-				e = e + '\\clef "%s"' % lily_clef (m.clef)
-				last_clef = m.clef
-			if e:
-				if gap <> (0,1):
-					k = k +' ' + rat_to_lily_duration (gap) + '\n'
-				gap = (0,1)
-				k = k + e
-				
-			if g:
-				gap = rat_add (gap, g.length ())
-				if 'stop' in g.repeats:
-					k = k + ' \\bar ":|" '
-				
-		k = '%sglobal = \\notes  { %s }\n\n ' % (self.staffid (), k)
-		return k
-	
-	def dump (self):
-		str = ''
-
-
-		layerids = []
-		for x in range (1,5): # 4 layers.
-			laystr =  ''
-			last_frame = None
-			first_frame = None
-			gap = (0,1)
-			for m in self.measures[1:]:
-				if not m or not m.valid:
-					sys.stderr.write ("Skipping non-existant or invalid measure\n")
-					continue
-
-				fr = None
-				try:
-					fr = m.frames[x]
-				except IndexError:
-					sys.stderr.write ("Skipping nonexistent frame %d\n" % x)
-					laystr = laystr + "%% non existent frame %d (skipped) \n" % x
-				if fr:
-					first_frame = fr
-					if gap <> (0,1):
-						laystr = laystr +'} %s {\n ' % rat_to_lily_duration (gap)
-						gap = (0,1)
-					laystr = laystr + fr.dump ()
-				else:
-					if m.global_measure :
-						gap = rat_add (gap, m.global_measure.length ())
-					else:
-						sys.stderr.write ( \
-							"No global measure for staff %d measure %d\n"
-							% (self.number, m.number))
-			if first_frame:
-				l = self.layerid (x)
-				laystr = '%s =  \\notes { { %s } }\n\n' % (l, laystr)
-				str = str  + laystr
-				layerids.append (l)
-
-		str = str +  self.dump_time_key_sigs ()		
-		stafdef = '\\%sglobal' % self.staffid ()
-		for i in layerids:
-			stafdef = stafdef + ' \\' + i
-			
-
-		str = str + '%s = \\context Staff = %s <<\n %s\n >>\n' % \
-		      (self.staffid (), self.staffid (), stafdef)
-		return str
-
-				
-
-def ziplist (l):
-	if len (l) < 2:
-		return []
-	else:
-		return [(l[0], l[1])] + ziplist (l[2:])
-
-
-class Chord:
-	def __init__ (self, number, contents):
-		self.pitches = []
-		self.frame = None
-		self.finale = contents[:7]
-
-		self.notelist = ziplist (contents[7:])
-		self.duration  = None
-		self.next = None
-		self.prev = None
-		self.number = number
-		self.note_prefix= ''
-		self.note_suffix = ''
-		self.chord_suffix = ''
-		self.chord_prefix = ''
-		self.tuplet = None
-		self.grace = 0
-		
-	def measure (self):
-		if not self.frame:
-			return None
-		return self.frame.measure
-
-	def length (self):
-		if self.grace:
-			return (0,1)
-		
-		l = (1, self.duration[0])
-
-		d = 1 << self.duration[1]
-
-		dotfact = rat_subtract ((2,1), (1,d))
-		mylen =  rat_multiply (dotfact, l)
-
-		if self.tuplet:
-			mylen = rat_multiply (mylen, self.tuplet.factor())
-		return mylen
-		
-
-	def EDU_duration (self):
-		return self.finale[2]
-	def set_duration (self):
-		self.duration = EDU_to_duration(self.EDU_duration ())
-		
-	def calculate (self):
-		self.find_realpitch ()
-		self.set_duration ()
-
-		flag = self.finale[4]
-		if Chord.GRACE_MASK & flag:
-			self.grace = 1
-		
-	
-	def find_realpitch (self):
-
-		meas = self.measure ()
-		tiestart = 0
-		if not meas or not meas.global_measure  :
-			sys.stderr.write ('note %d not in measure\n' % self.number)
-		elif not meas.global_measure.scale:
-			sys.stderr.write ('note %d: no scale in this measure.' % self.number)
-		else:
-			
-			for p in self.notelist:
-				(pitch, flag) = p
-
-
-				nib1 = pitch & 0x0f
-				
-				if nib1 > 8:
-					nib1 = -(nib1 - 8)
-				rest = pitch / 16
-
-				scale =  meas.global_measure.scale 
-				(sn, sa) =scale[rest % 7]
-				sn = sn + (rest - (rest%7)) + 7
-				acc = sa + nib1
-				self.pitches.append ((sn, acc))
-				tiestart =  tiestart or (flag & Chord.TIE_START_MASK)
-		if tiestart :
-			self.chord_suffix = self.chord_suffix + ' ~ '
-		
-	REST_MASK = 0x40000000L
-	TIE_START_MASK = 0x40000000L
-	GRACE_MASK = 0x00800000L
-	
-	def ly_string (self):
-		s = ''
-
-		rest = ''
-
-
-		if not (self.finale[4] & Chord.REST_MASK):
-			rest = 'r'
-		
-		for p in self.pitches:
-			(n,a) =  p
-			o = n/ 7
-			n = n % 7
-
-			nn = lily_notename ((n,a))
-
-			if o < 0:
-				nn = nn + (',' * -o)
-			elif o > 0:
-				nn = nn + ('\'' * o)
-				
-			if s:
-				s = s + ' '
-
-			if rest:
-				nn = rest
-				
-			s = s + nn 
-
-		if not self.pitches:
-			s  = 'r'
-		if len (self.pitches) > 1:
-			s = '<%s>' % s
-
-		s = s + '%d%s' % (self.duration[0], '.'* self.duration[1])
-		s = self.note_prefix + s + self.note_suffix
-		
-		s = self.chord_prefix + s + self.chord_suffix
-
-		return s
-
-
-def fill_list_to (list, no):
-	"""
-Add None to LIST until it contains entry number NO.
-	"""
-	while len (list) <= no:
-		list.extend ([None] * (no - len(list) + 1))
-	return list
-
-def read_finale_value (str):
-	"""
-Pry off one value from STR. The value may be $hex, decimal, or "string".
-Return: (value, rest-of-STR)
-	"""
-	while str and str[0] in ' \t\n':
-		str = str[1:]
-
-	if not str:
-		return (None,str)
-	
-	if str[0] == '$':
-		str = str [1:]
-
-		hex = ''
-		while str and str[0] in '0123456789ABCDEF':
-			hex = hex  + str[0]
-			str = str[1:]
-
-		
-		return (string.atol (hex, 16), str)
-	elif str[0] == '"':
-		str = str[1:]
-		s = ''
-		while str and str[0] <> '"':
-			s = s + str[0]
-			str = str[1:]
-
-		return (s,str)
-	elif str[0] in '-0123456789':
-		dec = ''
-		while str and str[0] in '-0123456789':
-			dec = dec  + str[0]
-			str = str[1:]
-			
-		return (string.atoi (dec), str)
-	else:
-		sys.stderr.write ("Can't convert `%s'\n" % str)
-		return (None, str)
-
-
-
-	
-def parse_etf_file (fn, tag_dict):
-
-	""" Read FN, putting ETF info into
-	a giant dictionary.  The keys of TAG_DICT indicate which tags
-	to put into the dict.
-	"""
-	
-	sys.stderr.write ('parsing ... ' )
-	f = open (fn)
-	
-	gulp = re.sub ('[\n\r]+', '\n',  f.read ())
-	ls = string.split (gulp, '\n^')
-
-	etf_file_dict = {}
-	for k in tag_dict.keys (): 
-		etf_file_dict[k] = {}
-
-	last_tag = None
-	last_numbers = None
-
-
-	for l in  ls:
-		m = re.match ('^([a-zA-Z0-9&]+)\(([^)]+)\)', l)
-		if m and tag_dict.has_key (m.group (1)):
-			tag = m.group (1)
-
-			indices = tuple (map (string.atoi, string.split (m.group (2), ',')))
-			content = l[m.end (2)+1:]
-
-
-			tdict = etf_file_dict[tag]
-			if not tdict.has_key (indices):
-				tdict[indices] = []
-
-
-			parsed = []
-
-			if tag == 'verse' or tag == 'block':
-				m2 = re.match ('(.*)\^end', content)
-				if m2:
-					parsed = [m2.group (1)]
-			else:
-				while content:
-					(v, content) = read_finale_value (content)
-					if v <> None:
-						parsed.append (v)
-
-			tdict [indices].extend (parsed)
-
-			last_indices = indices
-			last_tag = tag
-
-			continue
-
-# let's not do this: this really confuses when eE happens to be before  a ^text.
-#		if last_tag and last_indices:
-#			etf_file_dict[last_tag][last_indices].append (l)
-			
-	sys.stderr.write ('\n') 
-	return etf_file_dict
-
-	
-
-
-
-class Etf_file:
-	def __init__ (self, name):
-		self.measures = [None]
-		self.chords = [None]
-		self.frames = [None]
-		self.tuplets = [None]
-		self.staffs = [None]
-		self.slurs = [None]
-		self.articulations = [None]
-		self.syllables = [None]
-		self.verses = [None]
-		self.articulation_defs = [None]
-
-		## do it
-		self.parse (name)
-
-	def get_global_measure (self, no):
-		fill_list_to (self.measures, no)
-		if self.measures[no] == None:
-			self.measures [no] = Global_measure (no)
-
-		return self.measures[no]
-
-		
-	def get_staff(self,staffno):
-		fill_list_to (self.staffs, staffno)
-		if self.staffs[staffno] == None:
-			self.staffs[staffno] = Staff (staffno)
-
-		return self.staffs[staffno]
-
-	# staff-spec
-	def try_IS (self, indices, contents):
-		pass
-
-	def try_BC (self, indices, contents):
-		bn = indices[0]
-		where = contents[0] / 1024.0
-	def try_TP(self,  indices, contents):
-		(nil, num) = indices
-
-		if self.tuplets[-1] == None or num <> self.tuplets[-1].start_note:
-			self.tuplets.append (Tuplet (num))
-
-		self.tuplets[-1].append_finale (contents)
-
-	def try_IM (self, indices, contents):
-		(a,b) = indices
-		fin = contents
-		self.articulations.append (Articulation (a,b,fin))
-	def try_verse (self, indices, contents):
-		a = indices[0]
-		body = contents[0]
-
-		body = re.sub (r"""\^[a-z]+\([^)]+\)""", "", body)
-		body = re.sub ("\^[a-z]+", "", body)
-		self.verses.append (Verse (a, body))
-	def try_ve (self,indices, contents):
-		(a,b) = indices
-		self.syllables.append (Syllable (a,b,contents))
-
-	def try_eE (self,indices, contents):
-		no = indices[0]
-		(prev, next, dur, pos, entryflag, extended, follow) = contents[:7]
-
-		fill_list_to (self.chords, no)
-		self.chords[no]  =Chord (no, contents)
-
-	def try_Sx(self,indices, contents):
-		slurno = indices[0]
-		fill_list_to (self.slurs, slurno)
-		self.slurs[slurno] = Slur(slurno, contents)
-
-	def try_IX (self, indices, contents):
-		n = indices[0]
-		a = contents[0]
-		b = contents[1]
-
-		ix= None
-		try:
-			ix = self.articulation_defs[n]
-		except IndexError:
-			ix = Articulation_def (n,a,b)
-			self.articulation_defs.append (Articulation_def (n, a, b))
-
-	def try_GF(self, indices, contents):
-		(staffno,measno) = indices
-
-		st = self.get_staff (staffno)
-		meas = st.get_measure (measno)
-		meas.finale = contents
-		
-	def try_FR(self, indices, contents):
-		frameno = indices [0]
-		
-		startnote = contents[0]
-		endnote = contents[1]
-
-		fill_list_to (self.frames, frameno)
-	
-		self.frames[frameno] = Frame ((frameno, startnote, endnote))
-	
-	def try_MS (self, indices, contents):
-		measno = indices[0]
-		keynum = contents[1]
-		meas =self. get_global_measure (measno)
-
-		meas.set_key_sig (keynum)
-
-		beats = contents[2]
-		beatlen = contents[3]
-		meas.set_timesig ((beats, beatlen))
-
-		meas_flag1 = contents[4]
-		meas_flag2 = contents[5]
-
-		meas.set_flags (meas_flag1, meas_flag2);
-
-
-	routine_dict = {
-		'MS': try_MS,
-		'FR': try_FR,
-		'GF': try_GF,
-		'IX': try_IX,
-		'Sx' : try_Sx,
-		'eE' : try_eE,
-		'verse' : try_verse,
-		've' : try_ve,
-		'IM' : try_IM,
-		'TP' : try_TP,
-		'BC' : try_BC,
-		'IS' : try_IS,
-		}
-	
-	def parse (self, etf_dict):
-		sys.stderr.write ('reconstructing ...')
-		sys.stderr.flush ()
-
-		for (tag,routine) in Etf_file.routine_dict.items ():
-			ks = etf_dict[tag].keys ()
-			ks.sort ()
-			for k in ks:
-				routine (self, k, etf_dict[tag][k])
-			
-		sys.stderr.write ('processing ...')
-		sys.stderr.flush ()
-
-		self.unthread_entries ()
-
-		for st in self.staffs[1:]:
-			if not st:
-				continue
-			mno = 1
-			for m in st.measures[1:]:
-				if not m:
-					continue
-				
-				m.calculate()
-				try:
-					m.global_measure = self.measures[mno]
-				except IndexError:
-					sys.stderr.write ("Non-existent global measure %d" % mno)
-					continue
-				
-				frame_obj_list = [None]
-				for frno in m.frames:
-					try:
-						fr = self.frames[frno]
-						frame_obj_list.append (fr)
-					except IndexError:
-						sys.stderr.write ("\nNon-existent frame %d"  % frno)
-
-				m.frames = frame_obj_list
-				for fr in frame_obj_list[1:]:
-					if not fr:
-						continue
-					
-					fr.set_measure (m)
-					
-					fr.chords = self.get_thread (fr.start, fr.end)
-					for c in fr.chords:
-						c.frame = fr
-				mno = mno + 1
-
-		for c in self.chords[1:]:
-			if c:
-				c.calculate()
-
-		for f in self.frames[1:]:
-			if f:
-				f.calculate ()
-			
-		for t in self.tuplets[1:]:
-			t.calculate (self.chords)
-			
-		for s in self.slurs[1:]:
-			if s:
-				s.calculate (self.chords)
-			
-		for s in self.articulations[1:]:
-			s.calculate (self.chords, self.articulation_defs)
-			
-	def get_thread (self, startno, endno):
-
-		thread = []
-
-		c = None
-		try:
-			c = self.chords[startno]
-		except IndexError:
-			sys.stderr.write ("Huh? Frame has invalid bounds (%d,%d)\n" % (startno, endno))
-			return []
-
-		
-		while c and c.number <> endno:
-			thread.append (c)
-			c = c.next
-
-		if c: 
-			thread.append (c)
-		
-		return thread
-
-	def dump (self):
-		str = ''
-		staffs = []
-		for s in self.staffs[1:]:
-			if s:
-				str = str + '\n\n' + s.dump () 
-				staffs.append ('\\' + s.staffid ())
-
-
-		# should use \addlyrics ?
-
-		for v in self.verses[1:]:
-			str = str + v.dump()
-
-		if len (self.verses) > 1:
-			sys.stderr.write ("\nLyrics found; edit to use \\addlyrics to couple to a staff\n")
-			
-		if staffs:
-			str = str + '\\score { << %s >> } ' % string.join (staffs)
-			
-		return str
-
-
-	def __str__ (self):
-		return 'ETF FILE %s %s' % (self.measures,  self.entries)
-	
-	def unthread_entries (self):
-		for e in self.chords[1:]:
-			if not e:
-				continue
-
-			e.prev = self.chords[e.finale[0]]
-			e.next = self.chords[e.finale[1]]
-
-def identify():
-	sys.stderr.write ("%s from LilyPond %s\n" % (program_name, version))
-
-def help ():
-	sys.stdout.write("""Usage: etf2ly [OPTIONS]... ETF-FILE
-
-Convert ETF to LilyPond.
-
-Options:
-  -h, --help          print this help
-  -o, --output=FILE   set output filename to FILE
-  -v, --version       show version information
-
-Enigma Transport Format is a format used by Coda Music Technology's
-Finale product. This program will convert a subset of ETF to a
-ready-to-use lilypond file.
-
-Report bugs to bug-lilypond@gnu.org.
-
-Written by  Han-Wen Nienhuys <hanwen@cs.uu.nl>.
-
-""")
-
-def print_version ():
-	sys.stdout.write (r"""etf2ly (GNU lilypond) %s
-
-This 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 `midi2ly --warranty' for more information.
-
-Copyright (c) 2000--2004 by Han-Wen Nienhuys <hanwen@cs.uu.nl>
-""" % version)
-
-
-
-(options, files) = getopt.getopt (sys.argv[1:], 'vo:h', ['help','version', 'output='])
-out_filename = None
-
-for opt in options:
-	o = opt[0]
-	a = opt[1]
-	if o== '--help' or o == '-h':
-		help ()
-		sys.exit (0)
-	if o == '--version' or o == '-v':
-		print_version ()
-		sys.exit(0)
-		
-	if o == '--output' or o == '-o':
-		out_filename = a
-	else:
-		print o
-		raise getopt.error
-
-identify()
-
-e = None
-for f in files:
-	if f == '-':
-		f = ''
-
-	sys.stderr.write ('Processing `%s\'\n' % f)
-
-	dict = parse_etf_file (f, Etf_file.routine_dict)
-	e = Etf_file(dict)
-	if not out_filename:
-		out_filename = os.path.basename (re.sub ('(?i).etf$', '.ly', f))
-		
-	if out_filename == f:
-		out_filename = os.path.basename (f + '.ly')
-		
-	sys.stderr.write ('Writing `%s\'' % out_filename)
-	ly = e.dump()
-
-	
-	
-	fo = open (out_filename, 'w')
-	fo.write ('%% lily was here -- automatically converted by etf2ly from %s\n' % f)
-	fo.write(ly)
-	fo.close ()
-	
diff --git a/scripts/lilypond-book.py b/scripts/lilypond-book.py
deleted file mode 100644
index edee878bc2..0000000000
--- a/scripts/lilypond-book.py
+++ /dev/null
@@ -1,887 +0,0 @@
-#!@PYTHON@
-
-'''
-TODO:
-      ly-options: intertext, quote ?
-      --linewidth?
-      eps in latex?
-      check latex parameters, twocolumn, multicolumn?
-      
-Example usage:
-
-test:
-     lilypond-book --filter="tr '[a-z]' '[A-Z]'" BOOK
-	  
-convert-ly on book:
-     lilypond-book --filter="convert-ly --no-version --from=1.6.11 -" BOOK
-
-classic lilypond-book:
-     lilypond-book --process="lilypond-bin" BOOK.tely
-
-   must substitute:
-     @mbinclude foo.itely -> @include foo.itely
-     \mbinput -> \input
-     
-'''
-
-import __main__
-import glob
-import string
-
-################################################################
-# Users of python modules should include this snippet
-# and customize variables below.
-
-# We'll suffer this path init stuff as long as we don't install our
-# python packages in <prefix>/lib/pythonx.y (and don't kludge around
-# it as we do with teTeX on Red Hat Linux: set some environment var
-# (PYTHONPATH) in profile)
-
-# If set, LILYPONDPREFIX must take prevalence
-# if datadir is not set, we're doing a build and LILYPONDPREFIX
-import getopt, os, sys
-datadir = '@local_lilypond_datadir@'
-if not os.path.isdir (datadir):
-	datadir = '@lilypond_datadir@'
-if os.environ.has_key ('LILYPONDPREFIX') :
-	datadir = os.environ['LILYPONDPREFIX']
-	while datadir[-1] == os.sep:
-		datadir= datadir[:-1]
-
-sys.path.insert (0, os.path.join (datadir, 'python'))
-
-# Customize these
-#if __name__ == '__main__':
-
-import lilylib as ly
-global _;_=ly._
-global re;re = ly.re
-
-
-# lilylib globals
-program_version = '@TOPLEVEL_VERSION@'
-program_name = 'lilypond-book'
-verbose_p = 0
-pseudo_filter_p = 0
-original_dir = os.getcwd ()
-
-
-help_summary = _ ("""Process LilyPond snippets in hybrid HTML, LaTeX or texinfo document.  Example usage:
-
-   lilypond-book --filter="tr '[a-z]' '[A-Z]'" BOOK
-   lilypond-book --filter="convert-ly --no-version --from=2.0.0 -" BOOK
-   lilypond-book --process='lilypond-bin -I include' BOOK
-
-""")
-
-copyright = ('Jan Nieuwenhuizen <janneke@gnu.org>',
-	     'Han-Wen Nienhuys <hanwen@cs.uu.nl>')
-
-option_definitions = [
-	(_ ("EXT"), 'f', 'format', _ ("use output format EXT (texi [default], texi-html, latex, html)")),
-	(_ ("FILTER"), 'F', 'filter', _ ("pipe snippets through FILTER [convert-ly -n -]")),
-	('', 'h', 'help', _ ("print this help")),
-	(_ ("DIR"), 'I', 'include', _ ("add DIR to include path")),
-	(_ ("COMMAND"), 'P', 'process', _ ("process ly_files using COMMAND FILE...")),
-	(_ ("DIR"), 'o', 'output', _ ("write output to DIR")),
-	('', 'V', 'verbose', _ ("be verbose")),
-	('', 'v', 'version', _ ("print version information")),
-	('', 'w', 'warranty', _ ("show warranty and copyright")),
-	]
-
-include_path = [ly.abspath (os.getcwd ())]
-lilypond_binary = os.path.join ('@bindir@', 'lilypond-bin')
-
-# only use installed binary  when we're installed too.
-if '@bindir@' == ('@' + 'bindir@') or not os.path.exists (lilypond_binary):
-	lilypond_binary = 'lilypond-bin'
-
-
-use_hash_p = 1
-format = 0
-output_name = 0
-latex_filter_cmd = 'latex "\\nonstopmode \input /dev/stdin"'
-filter_cmd = 0
-process_cmd = lilypond_binary
-default_ly_options = {}
-
-AFTER = 'after'
-BEFORE = 'before'
-FRAGMENT = 'fragment'
-HTML = 'html'
-LATEX = 'latex'
-LINEWIDTH = 'linewidth'
-NOFRAGMENT = 'nofragment'
-NOTES = 'body'
-OUTPUT = 'output'
-PAPER = 'paper'
-PREAMBLE = 'preamble'
-PRINTFILENAME = 'printfilename'
-RAGGEDRIGHT = 'raggedright'
-RELATIVE = 'relative'
-STAFFSIZE = 'staffsize'
-TEXIDOC = 'texidoc'
-TEXINFO = 'texinfo'
-VERBATIM = 'verbatim'
-
-# Recognize special sequences in the input 
-#
-# (?P<name>regex) -- assign result of REGEX to NAME
-# *? -- match non-greedily.
-# (?m) -- multiline regex: make ^ and $ match at each line
-# (?s) -- make the dot match all characters including newline
-no_match = 'a\ba'
-snippet_res = {
-	HTML: {
-	'include':  no_match,
-	'lilypond' : '(?m)(?P<match><lilypond((?P<options>[^:]*):)(?P<code>.*?)/>)',
-	'lilypond_block': r'''(?ms)(?P<match><lilypond(?P<options>[^>]+)?>(?P<code>.*?)</lilypond>)''',
-	'lilypond_file': r'(?m)(?P<match><lilypondfile(?P<options>[^>]+)?>\s*(?P<filename>[^<]+)\s*</lilypondfile>)',
-	'multiline_comment': r"(?sm)\s*(?!@c\s+)(?P<code><!--\s.*?!-->)\s",
-	'singleline_comment': no_match,
-	'verb': r'''(?P<code><pre>.*?</pre>)''',
-	'verbatim': r'''(?s)(?P<code><pre>\s.*?</pre>\s)''',
-	},
-
-	LATEX: {
-	'include': r'(?m)^[^%\n]*?(?P<match>\\input{(?P<filename>[^}]+)})',
-	'lilypond' : r'(?m)^[^%\n]*?(?P<match>\\lilypond\s*(\[(?P<options>.*?)\])?\s*{(?P<code>.*?)})',
-	'lilypond_block': r"(?sm)^[^%\n]*?(?P<match>\\begin\s*(\[(?P<options>.*?)\])?\s*{lilypond}(?P<code>.*?)\\end{lilypond})",
-	'lilypond_file': r'(?m)^[^%\n]*?(?P<match>\\lilypondfile\s*(\[(?P<options>.*?)\])?\s*\{(?P<filename>.+)})',
-	'multiline_comment': no_match,
-	'singleline_comment': r"(?m)^.*?(?P<match>(?P<code>^%.*$\n+))",
-	'verb': r"(?P<code>\\verb(?P<del>.).*?(?P=del))",
-	'verbatim': r"(?s)(?P<code>\\begin\s*{verbatim}.*?\\end{verbatim})",
-	},
-
-	TEXINFO: {
-	'include':  '(?m)^[^%\n]*?(?P<match>@include\s+(?P<filename>\S*))',
-	'lilypond' : '(?m)^(?P<match>@lilypond(\[(?P<options>[^]]*)\])?{(?P<code>.*?)})',
-	'lilypond_block': r'''(?ms)^(?P<match>@lilypond(\[(?P<options>[^]]*)\])?\s(?P<code>.*?)@end lilypond)\s''',
-	'lilypond_file': '(?m)^(?P<match>@lilypondfile(\[(?P<options>[^]]*)\])?{(?P<filename>[^}]+)})',
-	'multiline_comment': r"(?sm)^\s*(?!@c\s+)(?P<code>@ignore\s.*?@end ignore)\s",
-	'singleline_comment': r"(?m)^.*(?P<match>(?P<code>@c([ \t][^\n]*|)\n))",
-
-# don't do this: fucks up with @code{@{}
-#	'verb': r'''(?P<code>@code{.*?})''',
-	'verbatim': r'''(?s)(?P<code>@example\s.*?@end\s+example\s)''',
-	},
-	}
-
-format_res = {
-	HTML: {
-	'option-sep' : '\s*',
-	'intertext': r',?\s*intertext=\".*?\"',
-	},
-	LATEX: {
-	'intertext': r',?\s*intertext=\".*?\"',
-	'option-sep' : ',\s*',
-	},
-	TEXINFO: {
-	'intertext': r',?\s*intertext=\".*?\"',
-	'option-sep' : ',\s*',
-	},
-	}
-
-ly_options = {
-	NOTES: {
-	RELATIVE: r'''\relative c%(relative_quotes)s''',
-	},
-	PAPER: {
-	'indent' : r'''
-    indent = %(indent)s''',
-	'linewidth' : r'''
-    linewidth = %(linewidth)s''',
-	'noindent' : r'''
-    indent = 0.0\mm''',
-	'notime' : r'''
-    \translator {
-        \StaffContext
-        \remove Time_signature_engraver
-    }''',
-	RAGGEDRIGHT : r'''
-    indent = 0.0\mm
-    raggedright = ##t''',
-	},
-	PREAMBLE: {
-	STAFFSIZE: r'''
-#(set-global-staff-size %(staffsize)s)''',
-	},
-	}
-
-output = {
-	HTML : {
-	AFTER: r'''
-  </a>
-</p>''',
-	BEFORE: r'''
-<p>
-  <a href="%(base)s.ly">''',
-	OUTPUT: r'''
-    <img align="center" valign="center"
-         border="0" src="%(picture)s" alt="[picture of music]">''',
-	PRINTFILENAME:'<p><tt><a href="%(base)s.ly">%(filename)s</a></tt></p>',
-	VERBATIM: r'''<pre>
-%(verb)s</pre>''',
-	},
-	
-	LATEX :	{
-	AFTER: '',
-	BEFORE: '',
-	OUTPUT: r'''{\parindent 0pt
-\catcode`\@=12
-\ifx\preLilyPondExample\preLilyPondExample\fi
-\def\lilypondbook{}
-\input %(base)s.tex
-\ifx\preLilyPondExample\postLilyPondExample\fi
-\catcode`\@=0}''',
-	PRINTFILENAME: '''\\texttt{%(filename)s}
-
-	''',
-	VERBATIM: r'''\begin{verbatim}
-%(verb)s\end{verbatim}
-''',
-	},
-	
-	TEXINFO :	{
-	AFTER: '',
-	BEFORE: '',
-	PRINTFILENAME: '''@file{%(filename)s}
-
-	''',
-	VERBATIM: r'''@example
-%(verb)s@end example
-''',
-	
-	},
-	
-	}
-
-PREAMBLE_LY = r'''%% Generated by %(program_name)s
-%% Options: [%(option_string)s]
-%(preamble_string)s
-\paper {%(paper_string)s
-}
-''' 
-
-FRAGMENT_LY = r'''\score{
-    \notes%(notes_string)s{
-        %(code)s    }
-}'''
-FULL_LY = '%(code)s'
-
-texi_linewidths = { 'afourpaper': '160 \\mm',
-		    'afourwide': '6.5\\in',
-		    'afourlatex': '150 \\mm',
-		    'smallbook': '5 \\in' ,
-		    'letterpaper': '6\\in'}
-
-def classic_lilypond_book_compatibility (o):
-	if o == 'singleline':
-		return RAGGEDRIGHT
-	m = re.search ('relative\s*([-0-9])', o)
-	if m:
-		return 'relative=%s' % m.group (1)
-	m = re.match ('([0-9]+)pt', o)
-	if m:
-		return 'staffsize=%s' % m.group (1)
-	m = re.match ('indent=([-.0-9]+)(cm|in|mm|pt)', o)
-	if m:
-		f = float (m.group (1))
-		return 'indent=%f\\%s' % (f, m.group (2))
-	m = re.match ('linewidth=([-.0-9]+)(cm|in|mm|pt)', o)
-	if m:
-		f = float (m.group (1))
-		return 'linewidth=%f\\%s' % (f, m.group (2))
-	return None
-
-def compose_ly (code, options):
-	#Hmm
-	for i in default_ly_options.keys ():
-		if i not in options:
-			options.append (i)
-	
-	m = re.search (r'''\\score''', code)
-	if not m and (not options \
-		      or not NOFRAGMENT in options or FRAGMENT in options):
-		if RAGGEDRIGHT not in options:
-			options.append (RAGGEDRIGHT)
-		body = FRAGMENT_LY
-	else:
-		body = FULL_LY
-
-	# defaults
-	relative = 0
-	staffsize = 16
-	override = {}
-	override.update (default_ly_options)
-
-	option_string = string.join (options, ',')
-	notes_options = []
-	paper_options = []
-	preamble_options = []
-	for i in options:
-		c = classic_lilypond_book_compatibility (i)
-		if c:
-			ly.warning (_ ("deprecated ly-option used: %s" % i))
-			ly.warning (_ ("compatibility mode translation: %s" \
-				       % c))
-			i = c
-		
-		if string.find (i, '=') > 0:
-			key, value = string.split (i, '=')
-			override[key] = value
-		else:
-			key = i
-			if i not in override:
-				override[i] = None
-
-		if key in ly_options[NOTES].keys ():
-			notes_options.append (ly_options[NOTES][key])
-		elif key in ly_options[PREAMBLE].keys ():
-			preamble_options.append (ly_options[PREAMBLE][key])
-		elif key in ly_options[PAPER].keys ():
-			paper_options.append (ly_options[PAPER][key])
-		elif key not in (FRAGMENT, NOFRAGMENT, PRINTFILENAME,
-				 RELATIVE, VERBATIM, TEXIDOC):
-			ly.warning (_("ignoring unknown ly option: %s") % i)
-
-	#URGS
-	if RELATIVE in override.keys () and override[RELATIVE]:
-		relative = string.atoi (override[RELATIVE])
-
-	relative_quotes = (",,,", ",,", ",", "", "'", "''", "'''")[relative+4]
-	program_name = __main__.program_name
-	paper_string = string.join (paper_options, '\n    ') % override
-	preamble_string = string.join (preamble_options, '\n    ') % override
-	notes_string = string.join (notes_options, '\n    ') % vars ()
-	return (PREAMBLE_LY + body) % vars ()
-
-# BARF
-# use lilypond-bin for latex (.lytex) books,
-# and lilypond --preview for html, texinfo books?
-def to_eps (file):
-	cmd = r'latex "\nonstopmode \input %s"' % file
-	# Ugh.  (La)TeX writes progress and error messages on stdout
-	# Redirect to stderr
-	cmd = '(( %s  >&2 ) >&- )' % cmd
-	ly.system (cmd)
-	ly.system ('dvips -Ppdf -u+lilypond.map -E -o %s.eps %s' \
-		   % (file, file))
-
-def find_file (name):
-	for i in include_path:
-		full = os.path.join (i, name)
-		if os.path.exists (full):
-			return full
-	ly.error (_ ('file not found: %s\n' % name))
-	ly.exit (1)
-	return ''
-	
-def verbatim_html (s):
-	return re.sub ('>', '&gt;',
-		       re.sub ('<', '&lt;',
-			       re.sub ('&', '&amp;', s)))
-
-def verbatim_texinfo (s):
-	return re.sub ('{', '@{',
-		       re.sub ('}', '@}',
-			       re.sub ('@', '@@', s)))
-
-def split_options (option_string):
-	return re.split (format_res[format]['option-sep'], option_string)
-
-
-class Chunk:
-	def replacement_text (self):
-		return ''
-
-	def is_outdated (self):
-		return 0
-
-class Substring (Chunk):
-	def __init__ (self, source, start, end):
-		self.source = source
-		self.start = start
-		self.end = end
-
-	def replacement_text (self):
-		return self.source [self.start:self.end]
-	
-class Snippet (Chunk):
-	def __init__ (self, type, match, format):
-		self.type = type
-		self.match = match
-		self.hash = 0
-		self.options = []
-		self.format = format
-
-	def replacement_text (self):
-		return self.match.group (0)
-	
-	def substring (self, s):
-		return self.match.group (s)
-
-	def filter_code (self):
-		pass # todo
-
-	def __repr__ (self):
-		return `self.__class__`  +  " type =  " + self.type
-
-class Include_snippet (Snippet):
-	def processed_filename (self):
-		f = self.substring ('filename')
-		return os.path.splitext (f)[0] + format2ext[format]
-
-	def replacement_text (self):
-		s = self.match.group (0)
-		f = self.substring ('filename')
-	
-		return re.sub (f, self.processed_filename (), s)
-
-class Lilypond_snippet (Snippet):
-	def __init__ (self, type, match, format):
-		Snippet.__init__ (self, type, match, format)
-		os = match.group ('options')
-		if os:
-			self.options = split_options (os)
-
-	def ly (self):
-		if self.type == 'lilypond_file':
-			name = self.substring ('filename')
-			return '\\renameinput \"%s\"\n' % name\
-			       + open (find_file (name)).read ()
-		else:
-			return self.substring ('code')
-		
-	def full_ly (self):
-		s = self.ly ()
-		if s:
-			return compose_ly (s, self.options)
-		return ''
-	
-	def get_hash (self):
-		if not self.hash:
-			self.hash = abs (hash (self.full_ly ()))
-		return self.hash
-
-	def basename (self):
-		if use_hash_p:
-			return 'lily-%d' % self.get_hash ()
-		raise 'to be done'
-
-	def write_ly (self):
-		outf = open (self.basename () + '.ly', 'w')
-		outf.write (self.full_ly ())
-
-	def is_outdated (self):
-		base = self.basename ()
-		if os.path.exists (base + '.ly') \
-		   and os.path.exists (base + '.tex') \
-		   and (use_hash_p \
-			or self.ly () == open (base + '.ly').read ()):
-			# TODO: something smart with target formats
-			# (ps, png) and m/ctimes
-			return None
-		return self
-	
-	def replacement_text (self):
-		func = Lilypond_snippet.__dict__ ['output_' + self.format]
-		return func (self)
-	
-	def output_html (self):
-		base = self.basename ()
-		str = ''
-		if format == HTML:
-			str = self.output_print_filename (HTML)
-			if VERBATIM in self.options:
-				verb = verbatim_html (self.substring ('code'))
-				str += write (output[HTML][VERBATIM] % vars ())
-				
-		# URGUGHUGHUGUGHU
-		single = '%(base)s.png' % vars ()
-		multiple = '%(base)s-page1.png' % vars ()
-		pictures = (single,)
-		if os.path.exists (multiple) \
-		   and (not os.path.exists (single)\
-			or (os.stat (multiple)[stat.ST_MTIME] \
-			    > os.stat (single)[stat.ST_MTIME])):
-			pictures = glob.glob ('%(base)s-page*.png' % vars ())
-		
-		str += output[HTML][BEFORE] % vars ()
-		for picture in pictures:
-			str += output[HTML][OUTPUT] % vars ()
-		str += output[HTML][AFTER] % vars ()
-		return str
-			
-	def output_latex (self):
-		str = ''
-		base = self.basename ()
-		if format == LATEX:
-			str = self.output_print_filename (LATEX)
-			if  VERBATIM in self.options:
-				verb = self.substring ('code')
-				str += (output[LATEX][VERBATIM] % vars ())
-		str +=  (output[LATEX][BEFORE]
-			 + (output[LATEX][OUTPUT] % vars ())
-			 + output[LATEX][AFTER])
-		return str
-
-	def output_print_filename (self,format):
-		str = ''
-		if  PRINTFILENAME in self.options:
-			base = self.basename ()
-			filename = self.substring ('filename')
-			str = output[format][PRINTFILENAME] % vars ()
-		return str
-
-	def output_texinfo (self):
-		str = ''
-		base = self.basename ()
-		if TEXIDOC in self.options:
-			texidoc = base + '.texidoc'
-			if os.path.exists (texidoc):
-				str += '@include %(texidoc)s\n' % vars ()
-
-		if  VERBATIM in self.options:
-			verb = verbatim_texinfo (self.substring ('code'))
-			str +=  (output[TEXINFO][VERBATIM] % vars ())
-
-		str += ('@tex\n' + self.output_latex () + '\n@end tex\n')
-		str += ('@html\n' + self.output_html () + '\n@end html\n')
-		# need par after picture
-		str += '\n'
-
-		return str
-			
-snippet_type_to_class = {
-	'lilypond_file' : Lilypond_snippet,
-	'lilypond_block' : Lilypond_snippet,
-	'lilypond' : Lilypond_snippet,
-	'include' : Include_snippet,
-	}
-
-def find_toplevel_snippets (s, types):
-        res = {}
-        for i in types:
-                res[i] = ly.re.compile (snippet_res[format][i])
-
-        snippets = []
-        index = 0
-        ##  found = dict (map (lambda x: (x, None), types))
-	## urg python2.1
-        found = {}
-	map (lambda x, f=found: f.setdefault (x, None), types)
-
-	# We want to search for multiple regexes, without searching
-	# the string multiple times for one regex.
-	# Hence, we use earlier results to limit the string portion
-	# where we search.
-	# Since every part of the string is traversed at most once for
-	# every type of snippet, this is linear.
-
-        while 1:
-                first = None
-                endex = 1 << 30
-                for type in types:
-                        if not found[type] or found[type][0] < index:
-                                found[type] = None
-                                m = res[type].search (s[index:endex])
-				if not m:
-					continue
-				
-				cl = Snippet
-				if snippet_type_to_class.has_key (type):
-					cl = snippet_type_to_class[type]
-				snip = cl (type, m, format)
-				start = index + m.start (0)
-				found[type] = (start, snip)
-
-                        if found[type] \
-			   and (not first or found[type][0] < found[first][0]):
-                                first = type
-                                endex = found[first][0]
-
-                if not first:
-			snippets.append (Substring (s, index, len (s)))
-			break
-
-		(start , snip) = found[first]
-		snippets.append (Substring (s, index, start))
-		snippets.append (snip)
-                index = start + len (snip.match.group (0))
-
-        return snippets
-
-def filter_pipe (input, cmd):
-	if verbose_p:
-		ly.progress (_ ("Opening filter `%s\'") % cmd)
-		
-	stdin, stdout, stderr = os.popen3 (cmd)
-	stdin.write (input)
-	status = stdin.close ()
-
-	if not status:
-		status = 0
-		output = stdout.read ()
-		status = stdout.close ()
-		error = stderr.read ()
-		
-	if not status:
-		status = 0
-	signal = 0x0f & status
-	if status or (not output and error):
-		exit_status = status >> 8
-		ly.error (_ ("`%s\' failed (%d)") % (cmd, exit_status))
-		ly.error (_ ("The error log is as follows:"))
-		sys.stderr.write (error)
-		sys.stderr.write (stderr.read ())
-		ly.exit (status)
-	
-	if verbose_p:
-		ly.progress ('\n')
-
-	return output
-	
-def run_filter (s):
-	return filter_pipe (s, filter_cmd)
-
-def process_snippets (cmd, snippets):
-	names = filter (lambda x: x, map (Lilypond_snippet.basename, snippets))
-	if names:
-		ly.system (string.join ([cmd] + names))
-
-	if format == HTML or format == TEXINFO:
-		for i in names:
-			if os.path.exists (i + '.tex'):
-				to_eps (i)
-				ly.make_ps_images (i + '.eps', resolution=110)
-
-LATEX_DOCUMENT = r'''
-%(preamble)s
-\begin{document}
-\typeout{textwidth=\the\textwidth}
-\typeout{columnsep=\the\columnsep}
-\makeatletter\if@twocolumn\typeout{columns=2}\fi\makeatother
-\end{document}
-'''
-#need anything else besides textwidth?
-def get_latex_textwidth (source):
-	m = re.search (r'''(?P<preamble>\\begin\s*{document})''', source)
-	preamble = source[:m.start (0)]
-	latex_document = LATEX_DOCUMENT % vars ()
-        parameter_string = filter_pipe (latex_document, latex_filter_cmd)
-
-	columns = 0
-	m = re.search ('columns=([0-9.]*)', parameter_string)
-	if m:
-		columns = string.atoi (m.group (1))
-
-	columnsep = 0
-	m = re.search ('columnsep=([0-9.]*)pt', parameter_string)
-	if m:
-		columnsep = string.atof (m.group (1))
-
-	textwidth = 0
-	m = re.search('textwidth=([0-9.]*)pt', parameter_string)
-	if m:
-		textwidth = string.atof (m.group (1))
-		if columns:
-			textwidth = (textwidth - columnsep) / columns
-
-	return textwidth
-
-ext2format = {
-	'.html' : HTML,
-	'.itely' : TEXINFO,
-	'.lytex' : LATEX,
-	'.tely' : TEXINFO,
-	'.tex': LATEX,
-	'.texi' : TEXINFO,
-	'.texinfo' : TEXINFO,
-	'.xml' : HTML,
-	}
-			       
-format2ext = {
-	HTML: '.html',
-	#TEXINFO: '.texinfo',
-	TEXINFO: '.texi',
-	LATEX: '.tex',
-	}
-	
-def do_file (input_filename):
-	#ugh
-	global format
-	if not format:
-		e = os.path.splitext (input_filename)[1]
-		if e in ext2format.keys ():
-			#FIXME
-			format = ext2format[e]
-		else:
-			ly.error (_ ("cannot determine format for: %s" \
-				     % input_filename))
-
-	if not input_filename or input_filename == '-':
-		in_handle = sys.stdin
-		input_fullname = '<stdin>'
-	else:
-		if os.path.exists (input_filename):
-			input_fullname = input_filename
-		elif format == LATEX:
-			# urg python interface to libkpathsea?
-			input_fullname = ly.read_pipe ('kpsewhich '
-						       + input_filename)[:-1]
-		else:
-			input_fullname = find_file (input_filename)
-		in_handle = open (input_fullname)
-		
-	if input_filename == '-':
-		input_base = 'stdin'
-	else:
-		input_base = os.path.basename \
-			     (os.path.splitext (input_filename)[0])
-
-	# only default to stdout when filtering 
-	if output_name == '-' or (not output_name and filter_cmd):
-		output_filename = '-'
-		output_file = sys.stdout
-	else:
-		if not output_name:
-			output_filename = input_base + format2ext[format]
-		else:
-			if not os.path.isdir (output_name):
-				os.mkdir (output_name, 0777)
-			output_filename = (output_name
-					   + '/' + input_base
-					   + format2ext[format])
-		output_file = open (output_filename, 'w')
-		if output_name:
-			os.chdir (output_name)
-
-	ly.progress (_ ("Reading %s...") % input_fullname)
-	source = in_handle.read ()
-	ly.progress ('\n')
-	
-	snippet_types = (
-		'lilypond_block',
-#		'verb',
-		'verbatim',
-		'singleline_comment',
-		'multiline_comment',
-		'lilypond_file',
-		'include',
-		'lilypond', )
-	ly.progress (_ ("Dissecting..."))
-	chunks = find_toplevel_snippets (source, snippet_types)
-	ly.progress ('\n')
-
-	global default_ly_options
-	textwidth = 0
-	if LINEWIDTH not in default_ly_options.keys ():
-		if format == LATEX:
-			textwidth = get_latex_textwidth (source)
-			default_ly_options[LINEWIDTH] = '''%.0f\\pt''' \
-							% textwidth
-		elif format == TEXINFO:
-			for (k, v) in texi_linewidths.items ():
-				s = chunks[0].replacement_text ()
-				if re.search (k, s):
-					default_ly_options[LINEWIDTH] = v
-					break
-
-	if filter_cmd:
-		pass # todo
-	elif process_cmd:
-		outdated = filter (lambda x: x.__class__ == Lilypond_snippet \
-				   and x.is_outdated (), chunks)
-		ly.progress (_ ("Writing snippets..."))
-		map (Lilypond_snippet.write_ly, outdated)
-		ly.progress ('\n')
-
-		if outdated:
-			ly.progress (_ ("Processing..."))
-			process_snippets (process_cmd, outdated)
-		else:
-			ly.progress (_ ("All snippets are up to date..."))
-		ly.progress ('\n')
-
-		ly.progress (_ ("Compiling %s...") % output_filename)
-		output_file.writelines ([s.replacement_text () \
-					 for s in chunks])
-		ly.progress ('\n')
-
-	def process_include (snippet):
-		os.chdir (original_dir)
-		name = snippet.substring ('filename')
-		ly.progress (_ ('Processing include: %s') % name)
-		ly.progress ('\n')
-		do_file (name)
-		
-	map (process_include,
-	     filter (lambda x: x.__class__ == Include_snippet, chunks))
-
-def do_options ():
-	global format, output_name
-	global filter_cmd, process_cmd, verbose_p
-	
-	(sh, long) = ly.getopt_args (option_definitions)
-	try:
-		(options, files) = getopt.getopt (sys.argv[1:], sh, long)
-	except getopt.error, s:
-		sys.stderr.write ('\n')
-		ly.error (_ ("getopt says: `%s\'" % s))
-		sys.stderr.write ('\n')
-		ly.help ()
-		ly.exit (2)
-
-	for opt in options:
-		o = opt[0]
-		a = opt[1]
-
-		if 0:
-			pass
-		elif o == '--filter' or o == '-F':
-			filter_cmd = a
-			process_cmd = 0
-		elif o == '--format' or o == '-f':
-			format = a
-			if a == 'texi-html' or a == 'texi':
-				format = TEXINFO
-		elif o == '--help' or o == '-h':
-			ly.help ()
-			sys.exit (0)
-		elif o == '--include' or o == '-I':
-			include_path.append (os.path.join (original_dir,
-							   ly.abspath (a)))
-		elif o == '--output' or o == '-o':
-			output_name = a
-		elif o == '--outdir':
-			output_name = a
-		elif o == '--process' or o == '-P':
-			process_cmd = a
-			filter_cmd = 0
-		elif o == '--version' or o == '-v':
-			ly.identify (sys.stdout)
-			sys.exit (0)
-		elif o == '--verbose' or o == '-V':
-			verbose_p = 1
-		elif o == '--warranty' or o == '-w':
-			if 1 or status:
-				ly.warranty ()
-			sys.exit (0)
-	return files
-
-def main ():
-	files = do_options ()
-	global process_cmd
-	if process_cmd:
-		process_cmd += string.join ([(' -I %s' % p)
-					     for p in include_path])
-
-	ly.identify (sys.stderr)
-	ly.setup_environment ()
-	if files:
-		do_file (files[0])
-
-if __name__ == '__main__':
-	main ()
diff --git a/scripts/lilypond.py b/scripts/lilypond.py
deleted file mode 100644
index c5ea0ae984..0000000000
--- a/scripts/lilypond.py
+++ /dev/null
@@ -1,1016 +0,0 @@
-#!@PYTHON@
-#
-# lilypond.py -- Run LilyPond, add titles to bare score, generate printable
-#              document
-#              Invokes: lilypond-bin, latex (or pdflatex), dvips, ps2pdf, gs
-# 
-# source file of the GNU LilyPond music typesetter
-# 
-# (c) 1998--2004  Han-Wen Nienhuys <hanwen@cs.uu.nl>
-#                 Jan Nieuwenhuizen <janneke@gnu.org>
-
-# This is the third incarnation of ly2dvi, now renamed lilypond.
-#
-# Earlier incarnations of lilypond were written by
-# Jeffrey B. Reed<daboys@austin.rr.com> (Python version)
-# Jan Arne Fagertun <Jan.A.Fagertun@@energy.sintef.no> (Bourne shell script)
-#
-
-# Note: gettext work best if we use ' for program/docstrings and "
-#       for gettextable strings.
-#       USE ''' for docstrings.
-
-
-'''
-TODO:
-
-  * figure out which set of command line options should make lilypond:
-
-      na: create tex only?  
-      na: create latex only? 
-      na: create tex and latex
-      default: create dvi only
-      na: create tex, latex and dvi
-      -P: create dvi and ps
-      -p: create pdf
-      na: * create ps only
-
-     etc.
-
-  * move versatile taglines, 
-  
-     \header {
-        beginfooter=\mutopiaPD
-        endfooter=\tagline  -> 'lily was here <version>'
-     }
-
-     lilytagline (->lily was here), usertagline, copyright, lily-version
-     etc.
-
-  * head/header tagline/endfooter
-
-  * dvi from lilypond .tex output?  This is hairy, because we create dvi
-    from lilypond .tex *and* header output.
-
-  * multiple \score blocks?
-
-  * Introduce verbosity levels
-  
-     0  = QUIET: mute all command output, no lilypond progress
-     1  = BRIEF: mute all command output, only lilypond progress
-     2a = NORMAL: show only LilyPond command output, show lilypond progress
-     2b = NORMAL: show command output, show lilypond progress
-     3  = VERBOSE: show command output, run lilypond --verbose
-     4  = DEBUGGING: show all command output, run lilypond --verbose, print
-                   environment and all kinds of client side debugging stuff
-
-     Currently, we only have 1 and 4, but we kludge to have 2a and 4.
-'''
-
-import operator
-import stat
-import string
-import traceback
-import glob
-
-################################################################
-# Users of python modules should include this snippet
-# and customize variables below.
-
-# We'll suffer this path init stuff as long as we don't install our
-# python packages in <prefix>/lib/pythonx.y (and don't kludge around
-# it as we do with teTeX on Red Hat Linux: set some environment var
-# (PYTHONPATH) in profile)
-
-# If set, LILYPONDPREFIX must take prevalence
-# if datadir is not set, we're doing a build and LILYPONDPREFIX
-import getopt, os, sys
-datadir = '@local_lilypond_datadir@'
-if not os.path.isdir (datadir):
-	datadir = '@lilypond_datadir@'
-if os.environ.has_key ('LILYPONDPREFIX') :
-	datadir = os.environ['LILYPONDPREFIX']
-	while datadir[-1] == os.sep:
-		datadir= datadir[:-1]
-
-
-sys.path.insert (0, os.path.join (datadir, 'python'))
-
-# Customize these
-#if __name__ == '__main__':
-
-import lilylib as ly
-global _;_=ly._
-global re;re = ly.re
-
-# lilylib globals
-program_name = 'lilypond'
-program_version = '@TOPLEVEL_VERSION@'
-verbose_p = 0
-pseudo_filter_p = 0
-original_dir = os.getcwd ()
-temp_dir = os.path.join (original_dir,  '%s.dir' % program_name)
-keep_temp_dir_p = 0
-preview_resolution = 90
-debug_p = 0
-
-## FIXME
-## do -P or -p by default?
-##help_summary = _ ("Run LilyPond using LaTeX for titling")
-help_summary = _ ("Run LilyPond, add titles, generate printable document.")
-copyright = ('Han-Wen Nienhuys <hanwen@cs.uu.nl',
-	     'Jan Nieuwenhuizen <janneke@gnu.org')
-
-option_definitions = [
-	('', 'd', 'dependencies',
-	 _ ("write Makefile dependencies for every input file")),
-	('', 'h', 'help', _ ("print this help")),
-	('', '', 'debug', _ ("print even more output")),
-	(_ ("FILE"), 'f', 'find-pfa', _ ("find pfa fonts used in FILE")),
-	('','', 'html', _("make HTML file with links to all output")),
-	(_ ("DIR"), 'I', 'include', _ ("add DIR to LilyPond's search path")),
-	('', 'k', 'keep',
-	 _ ("keep all output, output to directory %s.dir") % program_name),
-	('', '', 'no-lily', _ ("don't run LilyPond")),
-	('', 'm', 'no-paper', _ ("produce MIDI output only")),
-	(_ ("FILE"), 'o', 'output', _ ("write output to FILE")),
-	(_ ('RES'), '', 'preview-resolution',
-	 _ ("set the resolution of the preview to RES")),
-	('', '', 'no-pdf', _ ("do not generate PDF output")),
-	('', '', 'no-ps', _ ("do not generate PostScript output")),
-	('', 'p', 'pdf', _ ("generate PDF output")),
-	('', 'P', 'postscript', _ ("generate PostScript output")),
-	('', '', 'pdftex', _ ("use pdflatex to generate a PDF output")),
-	('', '', 'png', _("generate PNG page images")),
-	('', '', 'preview', _ ("make a picture of the first system")),
-	('', '', 'psgz', _ ("generate PS.GZ")),
-	('', 's', 'safe-mode', _ ("run in safe-mode")),
-	(_ ("KEY=VAL"), 'S', 'set', _ ("change global setting KEY to VAL")),
-	('', 'V', 'verbose', _ ("be verbose")),
-	('', 'v', 'version', _ ("print version number")),
-	('', 'w', 'warranty', _ ("show warranty and copyright")),
-	]
-
-# other globals
-safe_mode_p = 0
-preview_p = 0
-page_images_p = 0
-lilypond_error_p = 0
-html_p = 0
-
-# Pdftex support
-pdftex_p = 0
-latex_cmd = 'latex'
-
-
-tex_extension = '.tex'  ## yuk.
-
-#lilypond_binary = 'valgrind --suppressions=%(home)s/usr/src/guile-1.6.supp --num-callers=10 %(home)s/usr/src/lilypond/lily/out/lilypond '% { 'home' : '/home/hanwen' }
-
-lilypond_binary = os.path.join ('@bindir@', 'lilypond-bin')
-
-# only use installed binary  when we're installed too.
-if '@bindir@' == ('@' + 'bindir@') or not os.path.exists (lilypond_binary):
-	lilypond_binary = 'lilypond-bin'
-
-
-layout_fields = ['dedication', 'title', 'subtitle', 'subsubtitle',
-	  'footer', 'head', 'composer', 'arranger', 'instrument',
-	  'opus', 'piece', 'metre', 'meter', 'poet', 'texttranslator']
-
-
-# init to empty; values here take precedence over values in the file
-
-## TODO: change name.
-extra_init = {
-	'language' : [],
-	'latexheaders' : [],
-	'latexpackages' :  ['geometry'],
-
-	# for geometry v3
-	'latexoptions' : ['compat2'],
-	
-	'papersize' : [],
-	'pagenumber' : [1],
-	'textheight' : [], 
-	'linewidth' : [],
-	'orientation' : [],
-	'unit' : ['pt'],
-}
-
-extra_fields = extra_init.keys ()
-fields = layout_fields + extra_fields
-
-include_path = ['.']
-lily_p = 1
-paper_p = 1
-
-output_name = ''
-
-# Output formats that lilypond should create
-targets = ['DVI', 'LATEX', 'MIDI', 'TEX', 'PDF', 'PS']
-
-track_dependencies_p = 0
-dependency_files = []
-
-#what a name.
-def set_setting (dict, key, val):
-	try:
-		val = string.atoi (val)
-	except ValueError:
-		#ly.warning (_ ("invalid value: %s") % `val`)
-		pass
-
-	if type(val) == type ('hoi'):
-		try:
-			val = string.atof (val)
-		except ValueError:
-			#ly.warning (_ ("invalid value: %s") % `val`)
-			pass
-
-	try:
-		dict[key].append (val)
-	except KeyError:
-		ly.warning (_ ("no such setting: `%s'") % `key`)
-		dict[key] = [val]
-
-
-def escape_shell (x):
-	return re.sub ("(\s|[`'\"\\\\])", r'\\\1',x)
-
-
-def run_lilypond (files, dep_prefix):
-	def make_include_option (x):
-		return '-I %s' %   escape_shell (x)
-
-	opts = ''
-	opts = opts + ' ' + string.join (map (make_include_option, include_path))
-	if pseudo_filter_p:
-		opts = opts + ' --output=lelie'
-	if paper_p:
-		opts = opts + ' ' + string.join (map (lambda x : '-H ' + x,
-						      fields))
-	else:
-		opts = opts + ' --no-paper'
-
-	if pdftex_p:
-		opts = opts + ' -f pdftex'		
-
-	if safe_mode_p:
-		opts = opts + ' --safe-mode'
-
-	if track_dependencies_p:
-		opts = opts + " --dependencies"
-		if dep_prefix:
-			opts = opts + ' --dep-prefix=%s' % dep_prefix
-
-	fs = string.join (map (escape_shell, files))
-
-	global verbose_p
-	if verbose_p:
-		opts = opts + ' --verbose'
-
-	if debug_p:
-		ly.print_environment ()
-		
-	cmd = string.join ((lilypond_binary, opts, fs))
-	status = ly.system (cmd, ignore_error = 1, progress_p = 1)
-	signal = 0x0f & status
-	exit_status = status >> 8
-
-	# 2 == user interrupt.
-	if signal and signal != 2:
-		sys.stderr.write ('\n\n')
-		ly.error (_ ("LilyPond crashed (signal %d).") % signal)
-		ly.error (_ ("Please submit a bug report to bug-lilypond@gnu.org"))
-		ly.exit (status)
-			
-	if status:
-		sys.stderr.write ('\n')
-		if len (files) == 1:
-			ly.error (_ ("LilyPond failed on input file %s (exit status %d)") % (files[0], exit_status))
-			ly.exit (status)
-		else:
-			ly.error (_ ("LilyPond failed on an input file (exit status %d)") % exit_status)
-			ly.error (_ ("Continuing..."))
-			global lilypond_error_p
-			lilypond_error_p = 1
-		
-
-def analyse_lilypond_output (filename, extra):
-	
-	# urg
-	'''Grep FILENAME for interesting stuff, and
-	put relevant info into EXTRA.'''
-	filename = filename + tex_extension
-	ly.progress (_ ("Analyzing %s...") % filename)
-	s = open (filename).read ()
-
-	# search only the first 10k
-	s = s[:10240]
-	for x in extra_fields:
-		m = re.search (r'\\def\\lilypondpaper%s{([^}]*)}'%x, s)
-		if m:
-			set_setting (extra, x, m.group (1))
-	ly.progress ('\n')
-
-def find_tex_files_for_base (base, extra):
-	'''
-	Find the \header fields dumped from BASE.
-	'''
-	
-	headerfiles = {}
-	for f in layout_fields:
-		fn = base + '.' + f
-		if os.path.exists (fn):
-			headerfiles[f] = fn
-
-	if os.path.exists (base  +'.dep'):
-		dependency_files.append (base + '.dep')
-
-	for f in extra_fields:
-		fn =base + '.' + f
-		if os.path.exists (fn):
-			extra[f].append (open (fn).read ())
-	
-	return (base + tex_extension, headerfiles)
-	 
-
-def find_tex_files (files, extra):
-	'''
-	Find all .tex files whose prefixes start with some name in FILES. 
-
-	'''
-	
-	tfiles = []
-	
-	for f in files:
-		x = 0
-		while 1:
-			fname = os.path.basename (f)
-			fname = ly.strip_extension (fname, '.ly')
-			if x:
-				fname = fname + '-%d' % x
-
-			if os.path.exists (fname + tex_extension):
-				tfiles.append (find_tex_files_for_base (fname, extra))
-				analyse_lilypond_output (fname, extra)
-			else:
-				break
-
-			x = x + 1
-	if not x:
-		fstr = string.join (files, ', ')
-		ly.warning (_ ("no LilyPond output found for `%s'") % fstr)
-	return tfiles
-
-def one_latex_definition (defn, first):
-	s = '\n'
-	for (k,v) in defn[1].items ():
-		val = open (v).read ()
-		if (string.strip (val)):
-			s = s + r'''\def\lilypond%s{%s}''' % (k, val)
-		else:
-			s = s + r'''\let\lilypond%s\relax''' % k
-		s = s + '\n'
-
-	if first:
-		s = s + '\\def\\mustmakelilypondtitle{}\n'
-	else:
-		s = s + '\\def\\mustmakelilypondpiecetitle{}\n'
-		
-	s = s + '\\input %s\n' % defn[0] # The final \n seems important here. It ensures that the footers and taglines end up on the right page.
-	return s
-
-
-ly_paper_to_latexpaper =  {
-	'letter' : 'letterpaper', 
-	'a3' : 'a3paper',
-	'a4' : 'a4paper',
-	'a5' : 'a5paper',
-	'a6' : 'a6paper',
-	'legal' : 'legalpaper', 
-	'tabloid' : 'papersize={11in,17in}', 
-}
-
-#TODO: should set textheight (enlarge) depending on papersize. 
-def global_latex_preamble (extra):
-	'''construct preamble from EXTRA,'''
-	s = ""
-	s = s + '% generation tag\n'
-
-	options = ''
-
-	if extra['latexoptions']:
-		options = options + ',' + extra['latexoptions'][-1]
-
-	s = s + '\\documentclass[%s]{article}\n' % options
-
-	if safe_mode_p:
-		s = s + '\\nofiles\n'
-
-	if extra['language']:
-		s = s + r'\usepackage[%s]{babel}' \
-		    % extra['language'][-1] + '\n'
-
-	s = s + '\\usepackage{%s}\n' \
-		% string.join (extra['latexpackages'], ',')
-
-	if extra['latexheaders']:
-		s = s + '\\include{%s}\n' \
-			% string.join (extra['latexheaders'], '}\n\\include{')
-
- 	unit = extra['unit'][-1]
-
-
-	papersize = ''
-	if extra['papersize']:
-		try:
-			papersize = ly_paper_to_latexpaper[extra['papersize'][0]] + ','
-		except KeyError:
-			ly.warning (_ ("invalid value: `%s'") % `extra['papersize'][0]`)
-			pass
-
-	textheight = ''
-	if extra['textheight']:
-		textheight = ',textheight=%f%s' % (extra['textheight'][0], unit)
-
-	orientation = 'portrait'
-	if extra['orientation']:
-		orientation = extra['orientation'][0]
-
- 	# set sane geometry width (a4-width) for linewidth = -1.
-	maxlw = max (extra['linewidth'] + [-1])
-	if maxlw < 0:
-	        # who the hell is 597 ?
-		linewidth = '597pt'
-	else:
-		linewidth = '%d%s' % (maxlw, unit)
-	s = s + '\geometry{%swidth=%s%s,bottom=11mm,headsep=2mm,top=12mm,headheight=2mm,footskip=5mm,%s}\n' % (papersize, linewidth, textheight, orientation)
-
-
-	if 'twoside' in  extra['latexoptions'] :
-		s = s + '\geometry{twosideshift=4mm}\n'
-
-	s = s + r'''
-\usepackage[latin1]{inputenc}
-\input{titledefs}
-'''
-	
-	if extra['pagenumber'] and extra['pagenumber'][-1] and extra['pagenumber'][-1] != 'no':
-		s = s + '\setcounter{page}{%d}\n' % (extra['pagenumber'][-1])
-                s = s + '\\pagestyle{plain}\n'
-	else:
-		s = s + '\\pagestyle{empty}\n'
-
-
-	return s
-
-	
-def global_latex_definition (tfiles, extra):
-	'''construct preamble from EXTRA, dump Latex stuff for each
-lily output file in TFILES after that, and return the Latex file constructed.  '''
-
-	
-	s = global_latex_preamble (extra) + '\\begin{document}\n'
-	s = s + '\\parindent 0pt\n'
-	s = s + '\\thispagestyle{firstpage}\n'
-
-	first = 1
-	for t in tfiles:
-		s = s + one_latex_definition (t, first)
-		first = 0
-
-
-	s = s + '\n\\thispagestyle{lastpage}\n'
-	s = s + '\\end{document}'
-
-	return s
-
-def run_latex (files, outbase, extra):
-
-	'''Construct latex file, for FILES and EXTRA, dump it into
-OUTBASE.latex. Run LaTeX on it.
-
-RETURN VALUE
-
-None
-	'''
-
-	latex_fn = outbase + '.latex'
-	
-	wfs = find_tex_files (files, extra)
-	s = global_latex_definition (wfs, extra)
-
-	f = open (latex_fn, 'w')
-	f.write (s)
-	f.close ()
-
-	cmd = latex_cmd + ' \\\\nonstopmode \\\\input %s' % latex_fn
-	
-	# Ugh.  (La)TeX writes progress and error messages on stdout
-	# Redirect to stderr
-	cmd = '(( %s  >&2 ) >&- )' % cmd
-	status = ly.system (cmd, ignore_error = 1)
-	signal = 0xf & status
- 	exit_status = status >> 8
-
-	if exit_status:
-
-		logstr = ''
-		try:
-			logstr = open (outbase + '.log').read ()
-			m = re.search ("\n!", logstr)
-			start = m.start (0)
-			logstr = logstr[start:start+200]
-		except:
-			pass
-			
-		ly.error (_ ("LaTeX failed on the output file."))
-		ly.error (_ ("The error log is as follows:"))
-		sys.stderr.write (logstr + '\n')
-		ly.exit (1)
-	
-	if preview_p:
-		# make a preview by rendering only the 1st line
-		# of each score
-		for score in find_tex_files (files, extra):
-			preview_base = ly.strip_extension (score[0], '.tex')
-			preview_fn = preview_base + '.preview.tex'
-			s = global_latex_definition ((score,), extra)
-			s = re.sub ('thispagestyle{firstpage}',
-				    r'''thispagestyle{empty}%
-				    \\def\\interscoreline{\\endinput}''', s)
-			s = re.sub ('thispagestyle{lastpage}',
-				    r'''thispagestyle{empty}%
-				    \\def\\interscoreline{\\endinput}''', s)
-			f = open (preview_fn, 'w')
-			f.write (s)
-			f.close ()
-			cmd = '%s \\\\nonstopmode \\\\input %s' \
-			      % (latex_cmd, preview_fn)
-			ly.system (cmd)
-
-
-def run_dvips (outbase, extra):
-
-
-	'''Run dvips using the correct options taken from EXTRA,
-leaving a PS file in OUTBASE.ps
-
-RETURN VALUE
-
-None.
-'''
-	opts = ''
-	if extra['papersize']:
-		opts = opts + ' -t%s' % extra['papersize'][0]
-
-	if extra['orientation'] and extra['orientation'][0] == 'landscape':
-		opts = opts + ' -tlandscape'
-
-
-	if 'PDF' in targets:
-		where = ly.read_pipe ('kpsewhich feta20.pfa').strip()
-
-		pfa_file  = None
-		if where:
-			try: 
-				pfa_file = open (where, 'r')
-			except IOError:
-				pass
-
-		if pfa_file:
-			opts = opts + ' -Ppdf -G0 -u +lilypond.map'
-		else:
-			ly.warning (_ ('''Trying create PDF, but no PFA fonts found.
-Using bitmap fonts instead. This will look bad.'''))
-
-	cmd = 'dvips %s -o%s %s' % (opts, outbase + '.ps', outbase + '.dvi')
-	ly.system (cmd)
-
-	if preview_p:
-		for score in find_tex_files (files, extra):
-			preview_base = ly.strip_extension (score[0], '.tex')
-			cmd = 'dvips -E -Ppdf -u+lilypond.map -o%s %s' \
-			      % (preview_base + '.preview.ps',
-				 preview_base + '.preview.dvi')
-			ly.system (cmd)
-
-	if 'PDF' in targets:
-		cmd = 'ps2pdf %s.ps %s.pdf' % (outbase , outbase)
-		ly.system (cmd)
-		
-def generate_dependency_file (depfile, outname):
-	df = open (depfile, 'w')
-	df.write (outname + ':' )
-	
-	for d in dependency_files:
-		s = open (d).read ()
-		s = re.sub ('#[^\n]*\n', '', s)
-		s = re.sub (r'\\\n', ' ', s)
-		m = re.search ('.*:(.*)\n', s)
-
-		# ugh. Different targets?
-		if m:
-			df.write ( m.group (1)  + ' ' )
-
-	df.write ('\n')
-	df.close ();
-
-def find_file_in_path (path, name):
-	for d in string.split (path, os.pathsep):
-		if name in os.listdir (d):
-			return os.path.join (d, name)
-
-# Added as functionality to lilypond, because lilypond may well need to do this
-# in future too.
-PS = '%!PS-Adobe'
-def find_pfa_fonts (name):
-	s = open (name).read ()
-	if s[:len (PS)] != PS:
-		# no ps header?
-		ly.error (_ ("not a PostScript file: `%s\'" % name))
-		ly.exit (1)
-	here = 0
-	m = re.match ('.*?/(feta[-a-z0-9]+) +findfont', s[here:], re.DOTALL)
-	pfa = []
-	while m:
-		here = m.end (1)
-		pfa.append (m.group (1))
-		m = re.match ('.*?/(feta[-a-z0-9]+) +findfont', s[here:], re.DOTALL)
-	return pfa
-
-
-def make_html_menu_file (html_file, files_found):
-	exts = {
-		'pdf' : "Print (PDF, %s)",
-		'ps.gz' : "Print (gzipped PostScript, %s)",
-		'png' : "View (PNG, %s)",
-		'midi' : "Listen (MIDI, %s)",
-		'ly' : "View source code (%s)", 
-		}
-	html_str = ''
-
-	pages = filter (lambda x : re.search ('page[0-9]+.png',  x),
-			files_found)
-	rest =  filter (lambda x : not re.search ('page[0-9]+.png',  x),
-			files_found)
-
-	preview = filter (lambda x: re.search ('.png$', x), rest)
-	if preview:
-		html_str = '<img src="%s">' % preview[0]
-
-	for p in pages:
-		page = re.sub ('.*page([0-9])+.*', 'View page \\1 (PNG picture, %s)\n', p)
-		page = page % 'unknown size'
-		
-		html_str += '<li><a href="%s">%s</a>' % (p, page)
-		
-		
-	for e in ['pdf', 'ps.gz', 'midi', 'ly']:
-		fs = filter (lambda x: re.search ('.%s$' % e, x), rest)
-		for f in fs:
-			entry = exts[e] % 'unknown size' # todo
-			html_str += '<li><a href="%s">%s</a>\n\n' % (f, entry)
-
-	html_str += "\n\n</li>"
-	ly.progress (_("Writing HTML menu `%s'") % html_file)
- 	ly.progress ('\n')
-	open (html_file, 'w').write (html_str)
-	
-################################################################
-## MAIN
-################################################################
-
-(sh, long) = ly.getopt_args (option_definitions)
-try:
-	(options, files) = getopt.getopt (sys.argv[1:], sh, long)
-except getopt.error, s:
-	sys.stderr.write ('\n')
-	ly.error (_ ("getopt says: `%s\'" % s))
-	sys.stderr.write ('\n')
-	ly.help ()
-	ly.exit (2)
-	
-for opt in options:
-	o = opt[0]
-	a = opt[1]
-
-	if 0:
-		pass
-	elif o == '--help' or o == '-h':
-		ly.help ()
-		sys.exit (0)
-	elif o == '--find-pfa' or o == '-f':
-		fonts = map (lambda x: x + '.pfa', find_pfa_fonts (a))
-		files = map (lambda x:
-			     find_file_in_path (os.environ['GS_FONTPATH'], x),
-			     fonts)
-		print string.join (files, ' ')
-		sys.exit (0)
-	elif o == '--include' or o == '-I':
-		include_path.append (a)
-	elif o == '--postscript' or o == '-P':
-		if 'PDF' in targets:
-			targets.remove ('PDF')
-		if 'PS' not in targets:
-			targets.append ('PS')
-	elif o == '--pdf' or o == '-p':
-		if 'PDF' not in targets:
-			targets.append ('PDF')
-	elif o == '--no-pdf':
-		if 'PDF' in targets:
-			targets.remove ('PDF')
-	elif o == '--no-ps':
-		if 'PS' in targets:
-			targets.remove ('PS')
-		if 'PDF' in targets:
-			targets.remove ('PDF')
-	elif o == '--keep' or o == '-k':
-		keep_temp_dir_p = 1
-	elif o == '--debug':
-		verbose_p = 1
-		debug_p = 1 
-	elif o == '--no-lily':
-		lily_p = 0
-	elif o == '--preview':
-		preview_p = 1
-		if 'PNG' not in targets:
-			targets.append ('PNG')
-	elif o == '--preview-resolution':
-		preview_resolution = string.atoi (a)
-	elif o == '--no-paper' or o == '-m':
-		targets = ['MIDI'] 
-		paper_p = 0
-	elif o == '--output' or o == '-o':
-		output_name = a
-	elif o == '--safe-mode' or o == '-s':
-		safe_mode_p = 1
-	elif o == '--set' or o == '-S':
-		ss = string.split (a, '=')
-		set_setting (extra_init, ss[0], ss[1])
-	elif o == '--dependencies' or o == '-d':
-		track_dependencies_p = 1
-	elif o == '--verbose' or o == '-V':
-		verbose_p = 1
-	elif o == '--version' or o == '-v':
-		ly.identify (sys.stdout)
-		sys.exit (0)
-	elif o == '--pdftex':
-		latex_cmd = 'pdflatex'
-		targets.remove ('DVI')
-		targets.append ('PDFTEX')
-		pdftex_p = 1
-		tex_extension = '.pdftex'
-	elif o == '--warranty' or o == '-w':
-		status = os.system ('%s -w' % lilypond_binary)
-		if status:
-			ly.warranty ()
-		sys.exit (0)
-	elif o == '--html':
-		html_p = 1
-	elif o == '--png':
-		page_images_p = 1
-		if 'PNG' not in targets:
-			targets.append ('PNG')
-	elif o == '--psgz':
-		targets.append ('PS.GZ')
-		if 'PS' not in targets:
-			targets.append ('PS')
-	else:
-		unimplemented_option () # signal programming error
-
-# Don't convert input files to abspath, rather prepend '.' to include
-# path.
-include_path.insert (0, '.')
-
-# As a neat trick, add directory part of first input file
-# to include path.  That way you can do without the clumsy -I in:
-
-#    lilypond -I foe/bar/baz foo/bar/baz/baz.ly
-if files and files[0] != '-' and os.path.dirname (files[0]) != '.':
-	include_path.append (os.path.dirname (files[0]))
-	
-include_path = map (ly.abspath, include_path)
-
-if files and (files[0] == '-' or output_name == '-'):
-	if len (files) == 1:
-		pseudo_filter_p = 1
-		output_name = 'lelie'
-		if verbose_p:
-			ly.progress (_ ("pseudo filter") + '\n')
-	else:
-		ly.help ()
-		ly.error (_ ("pseudo filter only for single input file"))
-		ly.exit (2)
-		
-if not files:
-	ly.help ()
-	ly.error (_ ("no files specified on command line"))
-	ly.exit (2)
-
-if 1:
-	ly.identify (sys.stderr)
-	ly.lilypond_version_check (lilypond_binary, '@TOPLEVEL_VERSION@')
-	
-	original_output = output_name
-	
-	# Ugh, maybe make a setup () function
-	files = map (lambda x: ly.strip_extension (x, '.ly'), files)
-
-	# hmmm. Wish I'd 've written comments when I wrote this.
-	# now it looks complicated.
-	
-	(outdir, outbase) = ('','')
-	if not output_name:
-		outbase = os.path.basename (files[0])
-		outdir = ly.abspath ('.')
-	elif output_name[-1] == os.sep:
-		outdir = ly.abspath (output_name)
-		outbase = os.path.basename (files[0])
-	else:
-		(outdir, outbase) = os.path.split (ly.abspath (output_name))
-
-	for i in ('.dvi', '.latex', '.ly', '.ps', '.tex', '.pdftex'):
-		output_name = ly.strip_extension (output_name, i)
-		outbase = ly.strip_extension (outbase, i)
-
-	for i in files[:] + [output_name]:
-		b = os.path.basename (i)
-		if string.find (b, ' ') >= 0:
-			ly.error (_ ("filename should not contain spaces: `%s'") % b)
-			ly.exit (1)
-			
-	if os.path.dirname (output_name) != '.':
-		dep_prefix = os.path.dirname (output_name)
-	else:
-		dep_prefix = 0
-
-	reldir = os.path.dirname (output_name)
-	if outdir != '.' and (track_dependencies_p or targets):
-		ly.mkdir_p (outdir, 0777)
-
-	tmpdir = ly.setup_temp ()
-	ly.setup_environment ()
-	if safe_mode_p:
-		os.environ['openout_any'] = 'p'
-
-	# to be sure, add tmpdir *in front* of inclusion path.
-	#os.environ['TEXINPUTS'] =  tmpdir + ':' + os.environ['TEXINPUTS']
-	os.chdir (tmpdir)
-
-	# We catch all exceptions, because we need to do stuff at exit:
-	#   * copy any successfully generated stuff from tempdir and
-	#     notify user of that
-	#   * cleanout tempdir
-	if lily_p:
-		try:
-			run_lilypond (files, dep_prefix)
-		except:
-			### ARGH. This also catches python programming errors.
-			### this should only catch lilypond nonzero exit  status
-			### --hwn
-
-			
- 			# TODO: friendly message about LilyPond setup/failing?
- 			#
-			targets = []
-			if verbose_p:
-				traceback.print_exc ()
-			else:
-				ly.warning (_("Running LilyPond failed. Rerun with --verbose for a trace."))
-				
-	# Our LilyPond pseudo filter always outputs to 'lelie'
-	# have subsequent stages and use 'lelie' output.
-	if pseudo_filter_p:
-		files[0] = 'lelie'
-
-	if 'PS.GZ'  in targets:
-		targets.append ('PS')
-		
-	if 'PNG' in targets and 'PS' not in targets:
-		targets.append ('PS')
-	if 'PS' in targets and 'DVI' not in targets:
-		targets.append('DVI')
-
-	if 'DVI' in targets:
-		try:
-			run_latex (files, outbase, extra_init)
-			# unless: add --tex, or --latex?
-			targets.remove ('TEX')
-			targets.remove('LATEX')
-		except:
-			# TODO: friendly message about TeX/LaTeX setup,
-			# trying to run tex/latex by hand
-			if 'DVI' in targets:
-				targets.remove ('DVI')
-			if 'PS' in targets:
-				targets.remove ('PS')
-			if verbose_p:
-				traceback.print_exc ()
-
-	if 'PS' in targets:
-		try:
-			run_dvips (outbase, extra_init)
-			
-		except: 
-			if 'PS' in targets:
-				targets.remove ('PS')
-			if verbose_p:
-				traceback.print_exc ()
-			else:
-				ly.warning (_("Failed to make PS file. Rerun with --verbose for a trace."))
-
-	if preview_p:
-		for score in find_tex_files (files, extra_init):
-			preview_base = ly.strip_extension (score[0], '.tex')
-			ly.make_ps_images (preview_base + '.preview.ps',
-					   resolution=preview_resolution
-					   )
-
-	if 'PDFTEX' in targets:
-		try:
-			run_latex (files, outbase, extra_init)
-			# unless: add --tex, or --latex?
-			targets.remove ('TEX')
-			targets.remove ('LATEX')
-			targets.remove ('PDFTEX')
-			if 'PDF' not in targets:
-				targets.append('PDF')
-		except:
-			# TODO: friendly message about TeX/LaTeX setup,
-			# trying to run tex/latex by hand
-			if 'PDFTEX' in targets:
-				targets.remove ('PDFTEX')
-			if 'PDF' in targets:
-				targets.remove ('PDF')
-			if 'PS' in targets:
-				targets.remove ('PS')
-			if verbose_p:
-				traceback.print_exc ()
-			else:
-				ly.warning (_("Running LaTeX failed. Rerun with --verbose for a trace."))
-				
-	if page_images_p:
-		ly.make_ps_images (outbase + '.ps' ,
-				   resolution = preview_resolution
-				   )
-
-	# add DEP to targets?
-	if track_dependencies_p:
-		depfile = os.path.join (outdir, outbase + '.dep')
-		generate_dependency_file (depfile, depfile)
-		if os.path.isfile (depfile):
-			ly.progress (_ ("dependencies output to `%s'...") %
-				     depfile)
-			ly.progress ('\n')
-
-	if pseudo_filter_p:
-		main_target = 0
-		for i in 'PDF', 'PS', 'PNG', 'DVI', 'LATEX':
-			if i in targets:
-				main_target = i
-				break
-
-		ly.progress (_ ("%s output to <stdout>...") % i)
-		outname = outbase + '.' + string.lower (main_target)
-		if os.path.isfile (outname):
-			sys.stdout.write (open (outname).read ())
-		elif verbose_p:
-			ly.warning (_ ("can't find file: `%s'") % outname)
-		targets = []
-		ly.progress ('\n')
-		
-	if 'PS.GZ' in targets:
-		ly.system ("gzip *.ps") 
-		targets.remove ('PS')
-
-	# Hmm, if this were a function, we could call it the except: clauses
-	files_found = []
-	for i in targets:
-		ext = string.lower (i)
-
-		pattern = '%s.%s' % (outbase, ext)
-		if i == 'PNG':
-			pattern  = '*.png' 
-		ls = glob.glob (pattern)
-		files_found += ls 
-		ly.cp_to_dir ('.*\.%s$' % ext, outdir)
-
-
-		if ls:
-			names = string.join (map (lambda x: "`%s'" % x, ls))
-			ly.progress (_ ("%s output to %s...") % (i, names))
-			ly.progress ('\n')
-		elif verbose_p:
-			ly.warning (_ ("can't find file: `%s.%s'") % (outbase, ext))
-
-	if html_p:
-		make_html_menu_file (os.path.join (outdir, outbase + ".html"),
-				     files_found)
-
-	os.chdir (original_dir)
-	ly.cleanup_temp ()
-
-	sys.exit (lilypond_error_p)
diff --git a/scripts/midi2ly.py b/scripts/midi2ly.py
deleted file mode 100644
index 1130a0a12d..0000000000
--- a/scripts/midi2ly.py
+++ /dev/null
@@ -1,1114 +0,0 @@
-#!@PYTHON@
-#
-# midi2ly.py -- LilyPond midi import script
-# 
-# source file of the GNU LilyPond music typesetter
-#
-# (c) 1998--2004  Han-Wen Nienhuys <hanwen@cs.uu.nl>
-#                 Jan Nieuwenhuizen <janneke@gnu.org>
-
-
-'''
-TODO:
-   * test on weird and unquantised midi input (lily-devel)
-   * drop c++ midi2ly
-   * update doc and manpage
-
-   * simply insert clef changes whenever too many ledger lines
-     [to avoid tex capacity exceeded]
-   * do not ever quant skips
-   * better lyrics handling
-   * [see if it is feasible to] move ly-classes to library for use in
-     other converters, while leaving midi specific stuff here
-'''
-
-import getopt
-import os
-import string
-import sys
-
-
-################################################################
-# Users of python modules should include this snippet.
-#
-# This soon to be removed for: import lilypond.lilylib as ly
-libdir = '@local_lilypond_libdir@'
-if not os.path.isdir (libdir):
-       libdir = '@lilypond_libdir@'
-sys.path.insert (0, os.path.join (libdir, 'python'))
-
-
-################################################################
-
-import midi
-
-
-################################################################
-################ CONSTANTS
-
-
-output_name = ''
-LINE_BELL = 60
-scale_steps = [0,2,4,5,7,9,11]
-
-clocks_per_1 = 1536
-clocks_per_4 = 0
-key = 0
-time = 0
-reference_note = 0
-start_quant = 0
-start_quant_clocks = 0
-duration_quant = 0
-duration_quant_clocks = 0
-allowed_tuplets = []
-allowed_tuplet_clocks = []
-absolute_p = 0
-explicit_durations_p = 0
-text_lyrics_p = 0
-
-
-
-################################################################
-
-localedir = '@localedir@'
-try:
-	import gettext
-	gettext.bindtextdomain ('lilypond', localedir)
-	gettext.textdomain ('lilypond')
-	_ = gettext.gettext
-except:
-	def _ (s):
-		return s
-
-program_name = 'midi2ly'
-program_version = '@TOPLEVEL_VERSION@'
-
-errorport = sys.stderr
-verbose_p = 0
-
-# temp_dir = os.path.join (original_dir,  '%s.dir' % program_name)
-# original_dir = os.getcwd ()
-# keep_temp_dir_p = 0
-
-
-help_summary = _ ("Convert MIDI to LilyPond source.")
-
-option_definitions = [
-	('', 'a', 'absolute-pitches', _ ("print absolute pitches")),
-	(_ ("DUR"), 'd', 'duration-quant', _ ("quantise note durations on DUR")),
-	('', 'e', 'explicit-durations', _ ("print explicit durations")),
-	('', 'h', 'help', _ ("print this help")),
-	(_ ("ALT[:MINOR]"), 'k', 'key', _ ("set key: ALT=+sharps|-flats; MINOR=1")),
-	(_ ("FILE"), 'o', 'output', _ ("write output to FILE")),
-	(_ ("DUR"), 's', 'start-quant', _ ("quantise note starts on DUR")),
-	(_ ("DUR*NUM/DEN"), 't', 'allow-tuplet', _ ("allow tuplet durations DUR*NUM/DEN")),
-	('', 'V', 'verbose', _ ("be verbose")),
-	('', 'v', 'version', _ ("print version number")),
-	('', 'w', 'warranty', _ ("show warranty and copyright")),
-	('', 'x', 'text-lyrics', _ ("treat every text as a lyric")),
-	]
-
-################################################################
-# lilylib.py -- options and stuff
-# 
-# source file of the GNU LilyPond music typesetter
-
-import os
-
-try:
-	import gettext
-	gettext.bindtextdomain ('lilypond', localedir)
-	gettext.textdomain ('lilypond')
-	_ = gettext.gettext
-except:
-	def _ (s):
-		return s
-
-if program_version == '@' + 'TOPLEVEL_VERSION' + '@':
-	program_version = '1.5.17'
-
-def identify ():
-	sys.stdout.write ('%s (GNU LilyPond) %s\n' % (program_name, program_version))
-
-def warranty ():
-	identify ()
-	sys.stdout.write ('\n')
-	sys.stdout.write (_ ('Copyright (c) %s by' % ' 2001--2004'))
-	sys.stdout.write ('\n')
-	sys.stdout.write ('  Han-Wen Nienhuys')
-	sys.stdout.write ('  Jan Nieuwenhuizen')
-	sys.stdout.write ('\n')
-	sys.stdout.write (_ (r'''
-Distributed under terms of the GNU General Public License. It comes with
-NO WARRANTY.'''))
-	sys.stdout.write ('\n')
-
-def progress (s):
-	errorport.write (s + '\n')
-
-def warning (s):
-	progress (_ ("warning: ") + s)
-		
-def error (s):
-
-
-	'''Report the error S.  Exit by raising an exception. Please
-	do not abuse by trying to catch this error. If you do not want
-	a stack trace, write to the output directly.
-
-	RETURN VALUE
-
-	None
-	
-	'''
-	
-	progress (_ ("error: ") + s)
-	raise _ ("Exiting ... ")
-
-def getopt_args (opts):
-	'''Construct arguments (LONG, SHORT) for getopt from  list of options.'''
-	short = ''
-	long = []
-	for o in opts:
-		if o[1]:
-			short = short + o[1]
-			if o[0]:
-				short = short + ':'
-		if o[2]:
-			l = o[2]
-			if o[0]:
-				l = l + '='
-			long.append (l)
-	return (short, long)
-
-def option_help_str (o):
-	'''Transform one option description (4-tuple ) into neatly formatted string'''
-	sh = '  '	
-	if o[1]:
-		sh = '-%s' % o[1]
-
-	sep = '  '
-	if o[1] and o[2]:
-		sep = ', '
-		
-	long = ''
-	if o[2]:
-		long= '--%s' % o[2]
-
-	arg = ''
-	if o[0]:
-		if o[2]:
-			arg = '='
-		arg = arg + o[0]
-	return '  ' + sh + sep + long + arg
-
-
-def options_help_str (opts):
-	'''Convert a list of options into a neatly formatted string'''
-	w = 0
-	strs =[]
-	helps = []
-
-	for o in opts:
-		s = option_help_str (o)
-		strs.append ((s, o[3]))
-		if len (s) > w:
-			w = len (s)
-
-	str = ''
-	for s in strs:
-		str = str + '%s%s%s\n' % (s[0], ' ' * (w - len(s[0])  + 3), s[1])
-	return str
-
-def help ():
-	ls = [(_ ("Usage: %s [OPTIONS]... FILE") % program_name),
-		('\n\n'),
-		(help_summary),
-		('\n\n'),
-		(_ ("Options:")),
-		('\n'),
-		(options_help_str (option_definitions)),
-		('\n\n'),
-		(_ ("Report bugs to %s.") % 'bug-lilypond@gnu.org'),
-		('\n')]
-	map (sys.stdout.write, ls)
-	
-def setup_temp ():
-	"""
-	Create a temporary directory, and return its name. 
-	"""
-	global temp_dir
-	if not keep_temp_dir_p:
-		temp_dir = tempfile.mktemp (program_name)
-	try:
-		os.mkdir (temp_dir, 0777)
-	except OSError:
-		pass
-
-	return temp_dir
-
-
-def system (cmd, ignore_error = 0):
-	"""Run CMD. If IGNORE_ERROR is set, don't complain when CMD returns non zero.
-
-	RETURN VALUE
-
-	Exit status of CMD
-	"""
-	
-	if verbose_p:
-		progress (_ ("Invoking `%s\'") % cmd)
-	st = os.system (cmd)
-	if st:
-		name = re.match ('[ \t]*([^ \t]*)', cmd).group (1)
-		msg = name + ': ' + _ ("command exited with value %d") % st
-		if ignore_error:
-			warning (msg + ' ' + _ ("(ignored)") + ' ')
-		else:
-			error (msg)
-
-	return st
-
-
-def cleanup_temp ():
-	if not keep_temp_dir_p:
-		if verbose_p:
-			progress (_ ("Cleaning %s...") % temp_dir)
-		shutil.rmtree (temp_dir)
-
-
-def strip_extension (f, ext):
-	(p, e) = os.path.splitext (f)
-	if e == ext:
-		e = ''
-	return p + e
-
-################################################################
-# END Library
-################################################################
-
-
-
-
-class Duration:
-	allowed_durs = (1, 2, 4, 8, 16, 32, 64, 128)
-	def __init__ (self, clocks):
-		self.clocks = clocks
-		if clocks <= 0:
-			self.clocks = duration_quant_clocks
-		(self.dur, self.num, self.den) = self.dur_num_den (clocks)
-		
-	def dur_num_den (self, clocks):
-		for i in range (len (allowed_tuplet_clocks)):
-			if clocks == allowed_tuplet_clocks[i]:
-				return allowed_tuplets[i]
-
-		dur = 0; num = 1; den = 1;
-		g = gcd (clocks, clocks_per_1)
-		if g:
-			(dur, num) = (clocks_per_1 / g, clocks / g)
-		if not dur in self.allowed_durs:
-			dur = 4; num = clocks; den = clocks_per_4
-		return (dur, num, den)
-
-	def dump (self):
-		if self.den == 1:
-			if self.num == 1:
-				s = '%d' % self.dur
-			elif self.num == 3 and self.dur != 1:
-				s = '%d.' % (self.dur / 2)
-			else:
-				s = '%d*%d' % (self.dur, self.num)
-		else:
-			s = '%d*%d/%d' % (self.dur, self.num, self.den)
-			
-		global reference_note
-		reference_note.duration = self
-
-		return s
-
-	def compare (self, other):
-		return self.clocks - other.clocks
-
-def sign (x):
-	if x >= 0:
-		return 1
-	else:
-		return -1
-
-class Note:
-	names = (0, 0, 1, 1, 2, 3, 3, 4, 4, 5, 5, 6)
-	alterations = (0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 1, 0)
-	alteration_names = ('eses', 'es', '', 'is' , 'isis')
-	
-	def __init__ (self, clocks, pitch, velocity):
-		self.pitch = pitch
-		self.velocity = velocity
-		# hmm
-		self.clocks = clocks
-		self.duration = Duration (clocks)
-		(self.octave, self.notename, self.alteration) = self.o_n_a ()
-
-	def o_n_a (self):
-		# major scale: do-do
-		# minor scale: la-la  (= + 5) '''
-
-		n = self.names[(self.pitch) % 12]
- 		a = self.alterations[(self.pitch) % 12]
-
-		if a and key.flats:
-			a = - self.alterations[(self.pitch) % 12]
-			n = (n - a) % 7
-
-		#  By tradition, all scales now consist of a sequence
-		#  of 7 notes each with a distinct name, from amongst
-		#  a b c d e f g.  But, minor scales have a wide
-		#  second interval at the top - the 'leading note' is
-		#  sharped. (Why? it just works that way! Anything
-		#  else doesn't sound as good and isn't as flexible at
-		#  saying things. In medieval times, scales only had 6
-		#  notes to avoid this problem - the hexachords.)
-
-		#  So, the d minor scale is d e f g a b-flat c-sharp d
-		#  - using d-flat for the leading note would skip the
-		#  name c and duplicate the name d.  Why isn't c-sharp
-		#  put in the key signature? Tradition. (It's also
-		#  supposedly based on the Pythagorean theory of the
-		#  cycle of fifths, but that really only applies to
-		#  major scales...)  Anyway, g minor is g a b-flat c d
-		#  e-flat f-sharp g, and all the other flat minor keys
-		#  end up with a natural leading note. And there you
-		#  have it.
-
-		#  John Sankey <bf250@freenet.carleton.ca>
-		#
-		#  Let's also do a-minor: a b c d e f gis a
-		#
-		#  --jcn
-
-		o = self.pitch / 12 - 4
-
-		if key.minor:
-			# as -> gis
-			if key.sharps == 0 and key.flats == 0 \
-			   and n == 5 and a == -1:
-				n = 4; a = 1
-			# des -> cis
-       			elif key.flats == 1 and n == 1 and a == -1:
-				n = 0; a = 1
-			# ges -> fis
-			elif key.flats == 2 and n == 4 and a == -1:
-				n = 3; a = 1
-			# g -> fisis
-			elif key.sharps == 5 and n == 4 and a == 0:
-				n = 3; a = 2
-			# d -> cisis
-			elif key.sharps == 6 and n == 1 and a == 0:
-				n = 0; a = 2
-			# a -> gisis
-			elif key.sharps == 7 and n == 5 and a == 0:
-				n = 4; a = 2
-
-		# b -> ces
-		if key.flats >= 6 and n == 6 and a == 0:
- 			n = 0; a = -1; o = o + 1
-		# e -> fes
-		if key.flats >= 7 and n == 2 and a == 0:
- 			n = 3; a = -1
-
-		# f -> eis
-		if key.sharps >= 3 and n == 3 and a == 0:
- 			n = 2; a = 1
-		# c -> bis
-		if key.sharps >= 4 and n == 0 and a == 0:
- 			n = 6; a = 1; o = o - 1
-
-		return (o, n, a)
-		
-	def dump (self, dump_dur = 1):
-		global reference_note
-		s = chr ((self.notename + 2)  % 7 + ord ('a'))
-		s = s + self.alteration_names[self.alteration + 2]
-		if absolute_p:
-			commas = self.octave
-		else:
-			delta = self.pitch - reference_note.pitch
-			commas = sign (delta) * (abs (delta) / 12)
-			if ((sign (delta) \
-			     * (self.notename - reference_note.notename) + 7) \
-			    % 7 >= 4) \
-			    or ((self.notename == reference_note.notename) \
-				and (abs (delta) > 4) and (abs (delta) < 12)):
-				commas = commas + sign (delta)
-			
-		if commas > 0:
-			s = s + "'" * commas
-		elif commas < 0:
-			s = s + "," * -commas
-
-		## FIXME: compile fix --jcn
-		if dump_dur and (explicit_durations_p \
-		   or Duration.compare (self.duration,
-					reference_note.duration)):
-			s = s + self.duration.dump ()
-
-		reference_note = self
-		
-		# TODO: move space
-		return s + ' '
-
-
-class Time:
-	def __init__ (self, num, den):
-		self.clocks = 0
-		self.num = num
-		self.den = den
-
-	def bar_clocks (self):
-		return clocks_per_1 * self.num / self.den
-	
-	def dump (self):
-		global time
-		time = self
-		return '\n  ' + '\\time %d/%d ' % (self.num, self.den) + '\n  '
-
-class Tempo:
-	def __init__ (self, seconds_per_1):
-		self.clocks = 0
-		self.seconds_per_1 = seconds_per_1
-
-	def dump (self):
-		return '\n  ' + '\\tempo 4 = %d ' % (4 * 60 / self.seconds_per_1) + '\n  '
-
-class Clef:
-	clefs = ('"bass_8"', 'bass', 'violin', '"violin^8"')
-	def __init__ (self, type):
-		self.type = type
-		
-	def dump (self):
-		return '\n  \\clef %s\n  ' % self.clefs[self.type]
-
-class Key:
-	key_sharps = ('c', 'g', 'd', 'a', 'e', 'b', 'fis')
-	key_flats = ('BUG', 'f', 'bes', 'es', 'as', 'des', 'ges')
-
-	def __init__ (self, sharps, flats, minor):
-		self.clocks = 0
-		self.flats = flats
-		self.sharps = sharps
-		self.minor = minor
-
-	def dump (self):
-		global key
-		key = self
-
-		s = ''
-		if self.sharps and self.flats:
-			s = '\\keysignature %s ' % 'TODO'
-		else:
-			
-			if self.flats:
-				k = (ord ('cfbeadg'[self.flats % 7]) - ord ('a') - 2 -2 * self.minor + 7) % 7
-			else:
-				k = (ord ('cgdaebf'[self.sharps % 7]) - ord ('a') - 2 -2 * self.minor + 7) % 7
-  
-			if not self.minor:
-				name = chr ((k + 2) % 7 + ord ('a'))
-			else:
-				name = chr ((k + 2) % 7 + ord ('a'))
-
-			# fis cis gis dis ais eis bis
-			sharps = (2, 4, 6, 1, 3, 5, 7)
-			# bes es as des ges ces fes
-			flats = (6, 4, 2, 7, 5, 3, 1)
-			a = 0
-			if self.flats:
-				if flats[k] <= self.flats:
-					a = -1
-			else:
-				if sharps[k] <= self.sharps:
-					a = 1
-
-			if a:
-				name = name + Note.alteration_names[a + 2]
-
-			s = '\\key ' + name
-			if self.minor:
-				s = s + ' \\minor'
-			else:
-				s = s + ' \\major'
-
-		return '\n\n  ' + s + '\n  '
-
-
-class Text:
-	text_types = (
-		'SEQUENCE_NUMBER',
-		'TEXT_EVENT',
-		'COPYRIGHT_NOTICE',
-		'SEQUENCE_TRACK_NAME',
-		'INSTRUMENT_NAME',
-		'LYRIC',
-		'MARKER',
-		'CUE_POINT',)
-	
-	def __init__ (self, type, text):
-		self.clocks = 0
-		self.type = type
-		self.text = text
-
-	def dump (self):
-		# urg, we should be sure that we're in a lyrics staff
-		if self.type == midi.LYRIC:
-			s = '"%s"' % self.text
-			d = Duration (self.clocks)
-			if explicit_durations_p \
-			   or Duration.compare (d,
-						reference_note.duration):
-				s = s + Duration (self.clocks).dump ()
-			s = s + ' '
-		else:
-			s = '\n  % [' + self.text_types[self.type] + '] ' + self.text + '\n  '
-		return s
-
-
-def split_track (track):
-	chs = {}
-	for i in range(16):
-		chs[i] = []
-		
-	for e in track:
-		data = list (e[1])
-		if data[0] > 0x7f and data[0] < 0xf0:
-			c = data[0] & 0x0f
-			e = (e[0], tuple ([data[0] & 0xf0] + data[1:]))
-			chs[c].append (e)
-		else:
-			chs[0].append (e)
-
-	for i in range (16):
-		if chs[i] == []:
-			del chs[i]
-
-	threads = []
-	for v in chs.values ():
-		events = events_on_channel (v)
-		thread = unthread_notes (events)
-		if len (thread):
-			threads.append (thread)
-	return threads
-
-
-def quantise_clocks (clocks, quant):
- 	q = int (clocks / quant) * quant
-	if q != clocks:
-		for tquant in allowed_tuplet_clocks:
-		 	if int (clocks / tquant) * tquant == clocks:
-				return clocks
-	 	if 2 * (clocks - q) > quant:
- 			q = q + quant
-	return q
-
-def end_note (pitches, notes, t, e):
-	try:
-		(lt, vel) = pitches[e]
-		del pitches[e]
-
-		i = len (notes) - 1 
-		while i > 0:
-			if notes[i][0] > lt:
-				i = i -1
-			else:
-				break
-		d = t - lt
-		if duration_quant_clocks:
-			d = quantise_clocks (d, duration_quant_clocks)
-			if not d:
-				d = duration_quant_clocks
-
-		notes.insert (i + 1,
-			    (lt, Note (d, e, vel)))
-
-	except KeyError:
-		pass
-
-def events_on_channel (channel):
-	pitches = {}
-
-	notes = []
-	events = []
-	last_lyric = 0
-	last_time = 0
-	for e in channel:
-		t = e[0]
-
-		if start_quant_clocks:
-			t = quantise_clocks (t, start_quant_clocks)
-
-
-		if e[1][0] == midi.NOTE_OFF \
-		   or (e[1][0] == midi.NOTE_ON and e[1][2] == 0):
-			end_note (pitches, notes, t, e[1][1])
-			
-		elif e[1][0] == midi.NOTE_ON:
-			if not pitches.has_key (e[1][1]):
-				pitches[e[1][1]] = (t, e[1][2])
-				
-		# all include ALL_NOTES_OFF
-		elif e[1][0] >= midi.ALL_SOUND_OFF \
-		     and e[1][0] <= midi.POLY_MODE_ON:
-			for i in pitches.keys ():
-				end_note (pitches, notes, t, i)
-				
-		elif e[1][0] == midi.META_EVENT:
-			if e[1][1] == midi.END_OF_TRACK:
-				for i in pitches.keys ():
-					end_note (pitches, notes, t, i)
-				break
-
-			elif e[1][1] == midi.SET_TEMPO:
-				(u0, u1, u2) = map (ord, e[1][2])
-				us_per_4 = u2 + 256 * (u1 + 256 * u0)
-				seconds_per_1 = us_per_4 * 4 / 1e6
-				events.append ((t, Tempo (seconds_per_1)))
-			elif e[1][1] == midi.TIME_SIGNATURE:
-				(num, dur, clocks4, count32) = map (ord, e[1][2])
-				den = 2 ** dur 
-				events.append ((t, Time (num, den)))
-			elif e[1][1] == midi.KEY_SIGNATURE:
- 				(alterations, minor) = map (ord, e[1][2])
-				sharps = 0
-				flats = 0
-				if alterations < 127:
-					sharps = alterations
-				else:
-					flats = 256 - alterations
-
-				k = Key (sharps, flats, minor)
-				events.append ((t, k))
-
-				# ugh, must set key while parsing
-				# because Note init uses key
-				# Better do Note.calc () at dump time?
-				global key
-				key = k
-
-			elif e[1][1] == midi.LYRIC \
-			     or (text_lyrics_p and e[1][1] == midi.TEXT_EVENT):
-				if last_lyric:
-					last_lyric.clocks = t - last_time
-					events.append ((last_time, last_lyric))
-				last_time = t
-				last_lyric = Text (midi.LYRIC, e[1][2])
-
-			elif e[1][1] >= midi.SEQUENCE_NUMBER \
-			     and e[1][1] <= midi.CUE_POINT:
-				events.append ((t, Text (e[1][1], e[1][2])))
-			else:
-				if verbose_p:
-					sys.stderr.write ("SKIP: %s\n" % `e`)
-				pass
-		else:
-			if verbose_p:
-				sys.stderr.write ("SKIP: %s\n" % `e`)
-			pass
-
-	if last_lyric:
-		# last_lyric.clocks = t - last_time
-		# hmm
-		last_lyric.clocks = clocks_per_4
-		events.append ((last_time, last_lyric))
-		last_lyric = 0
-		
-	i = 0
-	while len (notes):
-		if i < len (events) and notes[0][0] >= events[i][0]:
-			i = i + 1
-		else:
-			events.insert (i, notes[0])
-			del notes[0]
-	return events
-
-def unthread_notes (channel):
-	threads = []
-	while channel:
-		thread = []
-		end_busy_t = 0
-		start_busy_t = 0
-		todo = []
-		for e in channel:
-			t = e[0]
-			if e[1].__class__ == Note \
-			   and ((t == start_busy_t \
-				 and e[1].clocks + t == end_busy_t) \
-			    or t >= end_busy_t):
-				thread.append (e)
-				start_busy_t = t
-				end_busy_t = t + e[1].clocks
-			elif e[1].__class__ == Time \
-			     or e[1].__class__ == Key \
-			     or e[1].__class__ == Text \
-			     or e[1].__class__ == Tempo:
-				thread.append (e)
-			else:
-				todo.append (e)
-		threads.append (thread)
-		channel = todo
-
-	return threads
-
-def gcd (a,b):
-	if b == 0:
-		return a
-	c = a
-	while c: 
-		c = a % b
-		a = b
-		b = c
-	return a
-	
-def dump_skip (skip, clocks):
-	return skip + Duration (clocks).dump () + ' '
-
-def dump (self):
-	return self.dump ()
-
-def dump_chord (ch):
-	s = ''
-	notes = []
-	for i in ch:
-		if i.__class__ == Note:
-			notes.append (i)
-		else:
-			s = s + i.dump ()
-	if len (notes) == 1:
-		s = s + dump (notes[0])
-	elif len (notes) > 1:
-		global reference_note
-		s = s + '<'
-		s = s + notes[0].dump (dump_dur = 0)
-		r = reference_note
-		for i in notes[1:]:
-			s = s + i.dump (dump_dur = 0 )
-		s = s + '>'
-
-		s = s + notes[0].duration.dump() + ' '
-		reference_note = r
-	return s
-
-def dump_bar_line (last_bar_t, t, bar_count):
-	s = ''
-	bar_t = time.bar_clocks ()
-	if t - last_bar_t >= bar_t:
-		bar_count = bar_count + (t - last_bar_t) / bar_t
-		
-		if t - last_bar_t == bar_t:
-			s = '|\n  %% %d\n  ' % bar_count
-			last_bar_t = t
-		else:
-			# urg, this will barf at meter changes
-			last_bar_t = last_bar_t + (t - last_bar_t) / bar_t * bar_t
-			
-	return (s, last_bar_t, bar_count)
-
-			
-def dump_channel (thread, skip):
-	global key, reference_note, time
-
-	key = Key (0, 0, 0)
-	time = Time (4, 4)
-	# urg LilyPond doesn't start at c4, but
-	# remembers from previous tracks!
-	# reference_note = Note (clocks_per_4, 4*12, 0)
-	reference_note = Note (0, 4*12, 0)
-	last_e = None
-	chs = []
-	ch = []
-
-	for e in thread:
-		if last_e and last_e[0] == e[0]:
-			ch.append (e[1])
-		else:
-			if ch:
-				chs.append ((last_e[0], ch))
-				
-			ch = [e[1]]
-			
-		last_e = e
-
-	if ch:
-		chs.append ((last_e[0], ch))
-	t = 0
-	last_t = 0
-	last_bar_t = 0
-	bar_count = 1
-	
-	lines = ['']
-	for ch in chs: 
-		t = ch[0]
-
-		i = string.rfind (lines[-1], '\n') + 1
-		if len (lines[-1][i:]) > LINE_BELL:
-			lines.append ('')
-			
-		if t - last_t > 0:
-			lines[-1] = lines[-1] + dump_skip (skip, t-last_t)
-		elif t - last_t < 0:
-			errorport.write ('BUG: time skew')
-
-		(s, last_bar_t, bar_count) = dump_bar_line (last_bar_t,
-							    t, bar_count)
-		lines[-1] = lines[-1] + s
-		
-		lines[-1] = lines[-1] + dump_chord (ch[1])
-
-		clocks = 0
-		for i in ch[1]:
-			if i.clocks > clocks:
-				clocks = i.clocks
-				
-		last_t = t + clocks
-		
-		(s, last_bar_t, bar_count) = dump_bar_line (last_bar_t,
-							    last_t, bar_count)
-		lines[-1] = lines[-1] + s
-
-	return string.join (lines, '\n  ') + '\n'
-
-def track_name (i):
-	return 'track%c' % (i + ord ('A'))
-
-def channel_name (i):
-	return 'channel%c' % (i + ord ('A'))
-
-def dump_track (channels, n):
-	s = '\n'
-	track = track_name (n)
-	clef = guess_clef (channels)
-
-	for i in range (len (channels)):
-		channel = channel_name (i)
-		item = thread_first_item (channels[i])
-
-		if item and item.__class__ == Note:
-			skip = 's'
-			s = s + '%s = \\notes' % (track + channel)
-			if not absolute_p:
-				s = s + '\\relative c '
-		elif item and item.__class__ == Text:
-			skip = '" "'
-			s = s + '%s = \\lyrics ' % (track + channel)
-		else:
-			skip = '\\skip '
-			# must be in \notes mode for parsing \skip
-			s = s + '%s = \\notes ' % (track + channel)
-		s = s + '{\n'
-		s = s + '  ' + dump_channel (channels[i][0], skip)
-		s = s + '}\n\n'
-
-	s = s + '%s = <<\n' % track
-
-	if clef.type != 2:
-		s = s + clef.dump () + '\n'
-
-	for i in range (len (channels)):
-		channel = channel_name (i)
-		item = thread_first_item (channels[i])
-		if item and item.__class__ == Text:
-			s = s + '  \\context Lyrics = %s \\%s\n' % (channel,
-								    track + channel)
-		else:
-			s = s + '  \\context Voice = %s \\%s\n' % (channel,
-								   track + channel)
-	s = s + '>>\n\n'
-	return s
-
-def thread_first_item (thread):
-	for chord in thread:
-		for event in chord:
-			if event[1].__class__ == Note \
-			   or (event[1].__class__ == Text \
-			       and event[1].type == midi.LYRIC):
-				return event[1]
-	return 0
-
-def track_first_item (track):
-	for thread in track:
-		return thread_first_item (thread)
-
-def guess_clef (track):
-	i = 0
-	p = 0
-	for thread in track:
-		for chord in thread:
-			for event in chord:
-				if event[1].__class__ == Note:
-					i = i + 1
-					p = p + event[1].pitch
-	if i and p / i <= 3*12:
-		return Clef (0)
-	elif i and p / i <= 5*12:
-		return Clef (1)
-	elif i and p / i >= 7*12:
-		return Clef (3)
-	else:
-		return Clef (2)
-	
-
-def convert_midi (f, o):
-	global clocks_per_1, clocks_per_4, key
-
-	str = open (f).read ()
-	midi_dump = midi.parse (str)
-
-	clocks_per_1 = midi_dump[0][1]
-	clocks_per_4 = clocks_per_1 / 4
-	
-	global start_quant, start_quant_clocks
-	if start_quant:
-		start_quant_clocks = clocks_per_1 / start_quant
-
-	global duration_quant, duration_quant_clocks
-	if duration_quant:
-		duration_quant_clocks = clocks_per_1 / duration_quant
-
-	global allowed_tuplet_clocks
-	allowed_tuplet_clocks = []
-	for (dur, num, den) in allowed_tuplets:
-		allowed_tuplet_clocks.append (clocks_per_1 * num / (dur * den))
-
-	tracks = []
-	for t in midi_dump[1]:
-		key = Key (0, 0, 0)
-		tracks.append (split_track (t))
-
-	tag = '%% Lily was here -- automatically converted by %s from %s' % ( program_name, f)
-
-	s = ''
-	s = tag + '\n\n'
-	for i in range (len (tracks)):
-		s = s + dump_track (tracks[i], i)
-
-	s = s + '\n\\score {\n  <<\n'
-	for i in range (len (tracks)):
-		track = track_name (i)
-		item = track_first_item (tracks[i])
-		if item and item.__class__ == Note:
-			s = s + '    \\context Staff=%s \\%s\n' % (track, track)
-		elif item and item.__class__ == Text:
-			s = s + '    \\context Lyrics=%s \\%s\n' % (track, track)
-	s = s + '  >>\n}\n'
-
- 	progress (_ ("%s output to `%s'...") % ('LY', o))
-
-	if o == '-':
-		h = sys.stdout
-	else:
-		h = open (o, 'w')
-
-	h.write (s)
-	h.close ()
-
-
-(sh, long) = getopt_args (option_definitions)
-try:
-	(options, files) = getopt.getopt(sys.argv[1:], sh, long)
-except getopt.error, s:
-	errorport.write ('\n')
-	errorport.write (_ ("error: ") + _ ("getopt says: `%s\'" % s))
-	errorport.write ('\n')
-	errorport.write ('\n')
-	help ()
-	sys.exit (2)
-	
-for opt in options:	
-	o = opt[0]
-	a = opt[1]
-
-	if 0:
-		pass
-	elif o == '--help' or o == '-h':
-		help ()
-		errorport.write ('\n')
-		errorport.write (_ ("Example:"))
-		errorport.write  (r'''
-    midi2ly --key=-2:1 --duration-quant=32 \
-        --allow-tuplet=4*2/3 --allow-tuplet=2*4/3 foo.midi
-''')
-		sys.exit (0)
-	elif o == '--output' or o == '-o':
-		output_name = a
-	elif o == '--verbose' or o == '-V':
-		verbose_p = 1
-	elif o == '--version' or o == '-v':
-		identify ()
-		sys.exit (0)
-	elif o == '--warranty' or o == '-w':
-		status = system ('lilypond -w', ignore_error = 1)
-		if status:
-			warranty ()
-		sys.exit (0)
-
-
-	elif o == '--absolute-pitches' or o == '-a':
-		absolute_p = 1
-	elif o == '--duration-quant' or o == '-d':
-		duration_quant = string.atoi (a)
-	elif o == '--explicit-durations' or o == '-e':
-		explicit_durations_p = 1
-	elif o == '--key' or o == '-k':
-		(alterations, minor) = map (string.atoi, string.split (a + ':0', ':'))[0:2]
- 		sharps = 0
- 		flats = 0
- 		if alterations >= 0:
- 			sharps = alterations
- 		else:
- 			flats = - alterations
-		key = Key (sharps, flats, minor)
-	elif o == '--start-quant' or o == '-s':
-		start_quant = string.atoi (a)
-	elif o == '--allow-tuplet' or o == '-t':
-		a = string.replace (a, '/', '*')
-		tuplet = map (string.atoi, string.split (a, '*'))
-		allowed_tuplets.append (tuplet)
-	# lots of midi files use plain text for lyric events
-	elif o == '--text-lyrics' or o == '-x':
-		text_lyrics_p = 1
-
-
-if not files or files[0] == '-':
-
-	# FIXME: read from stdin when files[0] = '-'
-	help ()
-	errorport.write (program_name + ":" + _ ("error: ") + _ ("no files specified on command line.") + '\n')
-	sys.exit (2)
-
-
-for f in files:
-
-	g = f
-	g = strip_extension (g, '.midi')
-	g = strip_extension (g, '.mid')
-	g = strip_extension (g, '.MID')
-	(outdir, outbase) = ('','')
-
-	if not output_name:
-		outdir = '.'
-		outbase = os.path.basename (g)
-		o = os.path.join (outdir, outbase + '-midi.ly')
-	elif output_name[-1] == os.sep:
-		outdir = output_name
-		outbase = os.path.basename (g)
-		os.path.join (outdir, outbase + '-gen.ly')
-	else:
-		o = output_name
- 		(outdir, outbase) = os.path.split (o)
-
-	if outdir != '.' and outdir != '':
-		try:
-			os.mkdir (outdir, 0777)
-		except OSError:
-			pass
-
-	convert_midi (f, o)
-
diff --git a/scripts/mup2ly.py b/scripts/mup2ly.py
deleted file mode 100644
index bec71107cd..0000000000
--- a/scripts/mup2ly.py
+++ /dev/null
@@ -1,1332 +0,0 @@
-#!@PYTHON@
-# mup2ly.py -- mup input converter
-# 
-# source file of the GNU LilyPond music typesetter
-#
-# (c) 2001
-
-'''
-TODO:
-   LOTS: we get all notes out now, rest after 1.4
-
-   * lyrics (partly done)
-   * bars
-   * slurs,ties
-   * staff settings
-   * tuplets
-   * grace
-   * ornaments
-   * midi settings
-   * titling
-   * chords entry mode
-   * repeats, percent repeats
-   
-'''
-
-import os
-import fnmatch
-import stat
-import string
-import re
-import getopt
-import sys
-import __main__
-import operator
-import tempfile
-
-
-# if set, LILYPONDPREFIX must take prevalence
-# if datadir is not set, we're doing a build and LILYPONDPREFIX 
-datadir = '@local_lilypond_datadir@'
-if os.environ.has_key ('LILYPONDPREFIX') \
-   or '@local_lilypond_datadir@' == '@' + 'local_lilypond_datadir' + '@':
-	datadir = os.environ['LILYPONDPREFIX']
-else:
-	datadir = '@local_lilypond_datadir@'
-
-sys.path.append (os.path.join (datadir, 'python'))
-sys.path.append (os.path.join (datadir, 'python/out'))
-
-program_name = 'mup2ly'
-program_version = '@TOPLEVEL_VERSION@'
-original_dir = os.getcwd ()
-temp_dir = os.path.join (original_dir,  '%s.dir' % program_name)
-errorport = sys.stderr
-keep_temp_dir_p = 0
-verbose_p = 0
-
-localedir = '@localedir@'
-try:
-	import gettext
-	gettext.bindtextdomain ('lilypond', localedir)
-	gettext.textdomain ('lilypond')
-	_ = gettext.gettext
-except:
-	def _ (s):
-		return s
-
-
-program_name = 'mup2ly'
-help_summary = _ ("Convert mup to LilyPond source.")
-
-option_definitions = [
-	('', 'd', 'debug', _ ("debug")),
-	('NAME[=EXP]', 'D', 'define', _ ("define macro NAME [optional expansion EXP]")),
-	('', 'h', 'help', _ ("print this help")),
-	('FILE', 'o', 'output', _ ("write output to FILE")),
-	('', 'E', 'pre-process', _ ("only pre-process")),
-	('', 'V', 'verbose', _ ("be verbose")),
-	('', 'v', 'version', _ ("print version number")),
-	('', 'w', 'warranty', _ ("show warranty and copyright")),
-	]
-
-
-################################################################
-# lilylib.py -- options and stuff
-# 
-# source file of the GNU LilyPond music typesetter
-
-# Handle bug in Python 1.6-2.1
-#
-# there are recursion limits for some patterns in Python 1.6 til 2.1. 
-# fix this by importing pre instead. Fix by Mats.
-
-# todo: should check Python version first.
-try:
-	import pre
-	re = pre
-	del pre
-except ImportError:
-	import re
-
-# Attempt to fix problems with limited stack size set by Python!
-# Sets unlimited stack size. Note that the resource module only
-# is available on UNIX.
-try:
-       import resource
-       resource.setrlimit (resource.RLIMIT_STACK, (-1, -1))
-except:
-       pass
-
-try:
-	import gettext
-	gettext.bindtextdomain ('lilypond', localedir)
-	gettext.textdomain ('lilypond')
-	_ = gettext.gettext
-except:
-	def _ (s):
-		return s
-
-program_version = '@TOPLEVEL_VERSION@'
-if program_version == '@' + 'TOPLEVEL_VERSION' + '@':
-	program_version = '1.5.54'
-
-def identify ():
-	sys.stdout.write ('%s (GNU LilyPond) %s\n' % (program_name, program_version))
-
-def warranty ():
-	identify ()
-	sys.stdout.write ('\n')
-	sys.stdout.write (_ ('Copyright (c) %s by' % ' 2001--2004'))
-	sys.stdout.write ('\n')
-	sys.stdout.write ('  Han-Wen Nienhuys')
-	sys.stdout.write ('  Jan Nieuwenhuizen')
-	sys.stdout.write ('\n')
-	sys.stdout.write (_ (r'''
-Distributed under terms of the GNU General Public License. It comes with
-NO WARRANTY.'''))
-	sys.stdout.write ('\n')
-
-def progress (s):
-	errorport.write (s + '\n')
-
-def warning (s):
-	progress (_ ("warning: ") + s)
-
-def user_error (s, e=1):
-	errorport.write (program_name + ":" + _ ("error: ") + s + '\n')
-	sys.exit (e)
-	
-def error (s):
-	'''Report the error S.  Exit by raising an exception. Please
-	do not abuse by trying to catch this error. If you do not want
-	a stack trace, write to the output directly.
-
-	RETURN VALUE
-
-	None
-	
-	'''
-	
-	progress (_ ("error: ") + s)
-	raise _ ("Exiting ... ")
-
-def getopt_args (opts):
-	'''Construct arguments (LONG, SHORT) for getopt from  list of options.'''
-	short = ''
-	long = []
-	for o in opts:
-		if o[1]:
-			short = short + o[1]
-			if o[0]:
-				short = short + ':'
-		if o[2]:
-			l = o[2]
-			if o[0]:
-				l = l + '='
-			long.append (l)
-	return (short, long)
-
-def option_help_str (o):
-	'''Transform one option description (4-tuple ) into neatly formatted string'''
-	sh = '  '	
-	if o[1]:
-		sh = '-%s' % o[1]
-
-	sep = '  '
-	if o[1] and o[2]:
-		sep = ', '
-		
-	long = ''
-	if o[2]:
-		long= '--%s' % o[2]
-
-	arg = ''
-	if o[0]:
-		if o[2]:
-			arg = '='
-		arg = arg + o[0]
-	return '  ' + sh + sep + long + arg
-
-
-def options_help_str (opts):
-	'''Convert a list of options into a neatly formatted string'''
-	w = 0
-	strs =[]
-	helps = []
-
-	for o in opts:
-		s = option_help_str (o)
-		strs.append ((s, o[3]))
-		if len (s) > w:
-			w = len (s)
-
-	str = ''
-	for s in strs:
-		str = str + '%s%s%s\n' % (s[0], ' ' * (w - len(s[0])  + 3), s[1])
-	return str
-
-def help ():
-	ls = [(_ ("Usage: %s [OPTIONS]... FILE") % program_name),
-		('\n\n'),
-		(help_summary),
-		('\n\n'),
-		(_ ("Options:")),
-		('\n'),
-		(options_help_str (option_definitions)),
-		('\n\n'),
-		(_ ("Report bugs to %s.") % 'bug-lilypond@gnu.org'),
-		('\n')]
-	map (sys.stdout.write, ls)
-	
-def setup_temp ():
-	"""
-	Create a temporary directory, and return its name. 
-	"""
-	global temp_dir
-	if not keep_temp_dir_p:
-		temp_dir = tempfile.mktemp (program_name)
-	try:
-		os.mkdir (temp_dir, 0777)
-	except OSError:
-		pass
-
-	return temp_dir
-
-
-def system (cmd, ignore_error = 0, quiet =0):
-	"""Run CMD. If IGNORE_ERROR is set, don't complain when CMD returns non zero.
-
-	RETURN VALUE
-
-	Exit status of CMD
-	"""
-	
-	if verbose_p:
-		progress (_ ("Invoking `%s\'") % cmd)
-
-	st = os.system (cmd)
-	if st:
-		name = re.match ('[ \t]*([^ \t]*)', cmd).group (1)
-		msg = name + ': ' + _ ("command exited with value %d") % st
-		if ignore_error:
-			if not quiet:
-				warning (msg + ' ' + _ ("(ignored)") + ' ')
-		else:
-			error (msg)
-
-	return st
-
-
-def cleanup_temp ():
-	if not keep_temp_dir_p:
-		if verbose_p:
-			progress (_ ("Cleaning %s...") % temp_dir)
-		shutil.rmtree (temp_dir)
-
-
-def strip_extension (f, ext):
-	(p, e) = os.path.splitext (f)
-	if e == ext:
-		e = ''
-	return p + e
-
-
-def cp_to_dir (pattern, dir):
-	"Copy files matching re PATTERN from cwd to DIR"
-	# Duh.  Python style portable: cp *.EXT OUTDIR
-	# system ('cp *.%s %s' % (ext, outdir), 1)
-	files = filter (lambda x, p=pattern: re.match (p, x), os.listdir ('.'))
-	map (lambda x, d=dir: shutil.copy2 (x, os.path.join (d, x)), files)
-
-
-# Python < 1.5.2 compatibility
-#
-# On most platforms, this is equivalent to
-#`normpath(join(os.getcwd()), PATH)'.  *Added in Python version 1.5.2*
-if os.path.__dict__.has_key ('abspath'):
-	abspath = os.path.abspath
-else:
-	def abspath (path):
-		return os.path.normpath (os.path.join (os.getcwd (), path))
-
-if os.__dict__.has_key ('makedirs'):
-	makedirs = os.makedirs
-else:
-	def makedirs (dir, mode=0777):
-		system ('mkdir -p %s' % dir)
-
-
-def mkdir_p (dir, mode=0777):
-	if not os.path.isdir (dir):
-		makedirs (dir, mode)
-
-
-# if set, LILYPONDPREFIX must take prevalence
-# if datadir is not set, we're doing a build and LILYPONDPREFIX 
-datadir = '@local_lilypond_datadir@'
-
-if os.environ.has_key ('LILYPONDPREFIX') :
-	datadir = os.environ['LILYPONDPREFIX']
-else:
-	datadir = '@local_lilypond_datadir@'
-
-
-while datadir[-1] == os.sep:
-	datadir= datadir[:-1]
-
-sys.path.insert (0, os.path.join (datadir, 'python'))
-
-################################################################
-# END Library
-
-
-output = 0
-
-#
-# PMX cut and paste
-#
-
-def encodeint (i):
-	return chr (i  + ord ('A'))
-
-	
-actab = {-2: 'eses', -1: 'es', 0 : '', 1: 'is', 2:'isis'}
-
-def pitch_to_lily_string (tup):
-	(o,n,a) = tup
-
-        nm = chr((n + 2) % 7 + ord ('a'))
-	nm = nm + actab[a]
-	if o > 0:
-		nm = nm + "'" * o
-	elif o < 0:
-		nm = nm + "," * -o
-	return nm
-
-def gcd (a,b):
-	if b == 0:
-		return a
-	c = a
-	while c: 
-		c = a % b
-		a = b
-		b = c
-	return a
-
-def rat_simplify (r):
-	(n,d) = r
-	if d < 0:
-		d = -d
-		n = -n
-	if n == 0:
-		return (0,1)
-	else:
-		g = gcd (n, d)
-		return (n/g, d/g)
-	
-def rat_multiply (a,b):
-	(x,y) = a
-	(p,q) = b
-
-	return rat_simplify ((x*p, y*q))
-
-def rat_divide (a,b):
-	(p,q) = b
-	return rat_multiply (a, (q,p))
-
-tuplet_table = {
-	2: 3,
-	3: 2,
-	5: 4
-}
-
-
-def rat_add (a,b):
-	(x,y) = a
-	(p,q) = b
-
-	return rat_simplify ((x*q + p*y, y*q))
-
-def rat_neg (a):
-	(p,q) = a
-	return (-p,q)
-
-
-def rat_larger (a,b):
-	return rat_subtract (a, b )[0] > 0
-
-def rat_subtract (a,b ):
-	return rat_add (a, rat_neg (b))
-
-def rat_to_duration (frac):
-	log = 1
-	d = (1,1)
-	while rat_larger (d, frac):
-		d = rat_multiply (d, (1,2))
-		log = log << 1
-
-	frac = rat_subtract (frac, d)
-	dots = 0
-	if frac == rat_multiply (d, (1,2)):
-		dots = 1
-	elif frac == rat_multiply (d, (3,4)):
-		dots = 2
-	return (log, dots)	
-
-
-class Barcheck :
-	def __init__ (self):
-		pass
-	def dump (self):
-		return '|\n'
-
-
-class Meter :
-	def __init__ (self,nums):
-		self.nums = nums
-	def dump (self):
-		return ' %{ FIXME: meter change %} '
-		
-class Beam:
-	def __init__ (self, ch):
-		self.char = ch
-	def dump (self):
-		return self.char
-
-class Slur:
-	def __init__ (self,id):
-		self.id = id
-		self.start_chord = None
-		self.end_chord = None
-		
-	def calculate (self):
-		s =self.start_chord
-		e= self.end_chord
-
-		if e and s:
-			s.note_suffix = s.note_suffix + '-('
-			e.note_prefix = e.note_suffix + "-)"
-		else:
-			sys.stderr.write ("\nOrphaned slur")
-			
-class Voice:
-	def __init__ (self, n):
-                self.number = n
-		self.entries = []
-		self.chords = []
-		self.staff = None
-		self.current_slurs = []
-		self.slurs = []
-                
-	def toggle_slur (self, id):
-		
-		for s in self.current_slurs:
-			if s.id == id:
-				self.current_slurs.remove (s)
-				s.end_chord = self.chords[-1]
-				return
-		s = Slur (id)
-		s.start_chord = self.chords[-1]
-		self.current_slurs.append (s)
-		self.slurs.append (s)
-		
-	def last_chord (self):
-                if len (self.chords):
-                        return self.chords[-1]
-                else:
-                        ch = Chord ()
-                        ch.basic_duration = 4
-                        return ch
-                
-	def add_chord (self, ch):
-		self.chords.append (ch)
-		self.entries.append (ch)
-                
-	def add_nonchord (self, nch):
-		self.entries.append (nch)
-
-	def idstring (self):
-		return 'staff%svoice%s ' % (encodeint (self.staff.number) , encodeint(self.number))
-        
-	def dump (self):
-		str = ''
-                #if not self.entries:
-                #        #return '\n'
-                #        #ugh ugh
-                #        return '\n%s = {}\n\n' % self.idstring ()
-                ln = '  '
-                one_two = ("One", "Two")
-                if self.staff.voices [1 - self.number].entries:
-                        ln = ln + '\\voice%s\n  ' % one_two[self.number]
-		for e in self.entries:
-			next = e.dump ()
-			if next[-1] == '\n':
-				str  = str + ln + next + ' '
-				ln = '  '
-				continue
-			
-			if len (ln) +len (next) > 72:
-				str = str+ ln + '\n'
-				ln = '  '
-			ln = ln + next + ' '
-			
-			
-		str = str  + ln
-		id = self.idstring ()
-			
-		str = '''%s = \\context Voice = %s \\notes {
-%s
-}
-
-'''% (id, id, str)
-		return str
-        
-	def calculate_graces (self):
-		lastgr = 0
-		lastc = None
-		for c in self.chords:
-			if c.grace and  not lastgr:
-				c.chord_prefix = c.chord_prefix + '\\grace { '
-			elif not c.grace and lastgr:
-				lastc.chord_suffix = lastc.chord_suffix + ' } '
-			lastgr = c.grace
-			lastc = c
-                        
-	def calculate (self):
-		self.calculate_graces ()
-		for s in self.slurs:
-			s.calculate ()
-
-class Clef:
-	def __init__ (self, cl):
-		self.type = cl
-		
-	def dump (self):
-		return '\\clef %s' % self.type
-
-key_sharps = ('c', 'g', 'd', 'a', 'e', 'b', 'fis')
-key_flats = ('BUG', 'f', 'bes', 'es', 'as', 'des', 'ges')
-
-class Key:
-	def __init__ (self, sharps, flats):
-		self.flats = flats
-		self.sharps = sharps
-		
-	def dump (self):
-		if self.sharps and self.flats:
-			k = '\\keysignature %s ' % 'TODO'
-		elif self.sharps:
-			k = '\\notes\\key %s \major' % key_sharps[self.sharps]
-		elif self.flats:
-			k = '\\notes\\key %s \major' % key_flats[self.flats]
-		return k
-
-class Time:
-	def __init__ (self, frac):
-		self.frac = frac
-		
-	def dump (self):
-		return '\\time %d/%d' % (self.frac[0], self.frac[1])
-	
-
-clef_table = {
-	'b':'bass'  ,
-	'r':'baritone',
-	'n':'tenor',
-	'a':'alto',
-	'm':'mezzosoprano',
-	's':'soprano',
-	't':'treble',
-	'f':'frenchviolin',
-	}
-
-class Staff:
-	def __init__ (self, n):
-                # ugh
-		self.voices = (Voice (0), Voice (1))
-                
-		self.clef = None
-		self.time = None
-		self.key = None
-		self.instrument = 0
-		self.number = n
-		
-		i = 0
-		for v in self.voices:
-			v.staff = self
-			v.number = i
-			i = i+1
-                        
-	#def set_clef (self, letter):
-	#	clstr = clef_table[letter]
-	#	self.voices[0].add_nonchord (Clef (clstr))
-		
-	def calculate (self):
-		for v in self.voices:
-			v.calculate ()
-                        
-	def idstring (self):
-		return 'staff%s' % encodeint (self.number)
-
-	def dump (self):
-		str = ''
-
-		refs = ''
-		for v in self.voices:
-			if v.entries:
-				# urg
-				if v == self.voices[0]:
-					if self.clef:
-						refs = refs + self.clef.dump ()
-					if self.time:
-						refs = refs + self.time.dump ()
-					if self.key:
-						refs = refs + self.key.dump ()
-					if refs:
-						refs = '\n  ' + refs
-				str = str + v.dump()
-				refs = refs + '\n  \\' + v.idstring ()
-		str = str + '''
-%s = \context Staff = %s <<%s
->>
-
-''' % (self.idstring (), self.idstring (), refs)
-		return str
-
-class Tuplet:
-	def __init__ (self, number, base, dots):
-		self.chords = []
-		self.number = number
-		self.replaces = tuplet_table[number]
-		self.base = base
-		self.dots = dots
-		
-		length = (1,base)
-		if dots == 1:
-			length = rat_multiply (length, (3,2))
-		elif dots == 2:
-			length = rat_multiply (length, (7,4))
-
-		length = rat_multiply (length, (1,self.replaces))
-
-		(nb,nd) =rat_to_duration (length)
-
-		self.note_base = nb
-		self.note_dots = nd
-
-	def add_chord (self, ch):
-		ch.dots = self.note_dots
-		ch.basic_duration = self.note_base
-		self.chords.append (ch)
-
-		if len (self.chords) == 1:
-			ch.chord_prefix = '\\times %d/%d { ' % (self.replaces, self.number)
-		elif len (self.chords) == self.number:
-			ch.chord_suffix = ' }' 
-		
-class Chord:
-	def __init__ (self):
-		self.pitches = []
-		self.multimeasure = 0
-		self.dots = 0
-		self.basic_duration = 0
-		self.scripts = []
-		self.grace = 0
-		self.chord_prefix = ''
-		self.chord_suffix = ''
-		self.note_prefix = ''
-		self.note_suffix = ''
-
-        # maybe use import copy?
-	def copy (self):
-		ch = Chord ()
-		#for i in self.pitches:
-		#	ch.pitches.append (i)
-		ch.pitches = self.pitches[:]
-		ch.multimeasure = self.multimeasure
-		ch.dots = self.dots
-		ch.basic_duration = self.basic_duration
-		#for i in self.scripts:
-		#	ch.scripts.append (i)
-		ch.scripts = self.scripts[:]
-		ch.grace = self.grace
-
-		ch.chord_prefix = self.chord_prefix
-		ch.chord_suffix = self.chord_suffix
-		ch.note_prefix = self.note_prefix
-		ch.note_suffix = self.note_suffix
-		return ch
-
-		
-	def dump (self):
-		str = ''
-
-		sd = ''
-		if self.basic_duration == 0.5:
-			sd = '\\breve'
-		else:
-			sd = '%d' % self.basic_duration
-		sd = sd + '.' * self.dots 
-		for p in self.pitches:
-			if str:
-				str = str + ' ' 
-			str = str + pitch_to_lily_string (p)
-
-
-		str = self.note_prefix +str  + self.note_suffix
-		
-		if len (self.pitches) > 1:
-			str = '<%s>' % str
-		elif self.multimeasure:
-			str = 'R'
-		elif len (self.pitches) == 0:
-			str = 'r'
-
-		str = str + sd
-		for s in self.scripts:
-			str = str + '-' + s
-
-		str = self.chord_prefix + str + self.chord_suffix
-		
-		return str
-		
-SPACE=' \t\n'
-DIGITS ='0123456789'
-basicdur_table = {
-	9: 0.5,
-	0: 0 ,
-	2: 2 ,
-	4: 4 ,
-	8: 8 ,
-	1: 16,
-	3: 32,
-	6: 64
-	}
-
-
-ornament_table = {
-	't': '\\prall',
-	'm': '\\mordent',
-	'x': '"x"',
-	'+': '+',
-	'u': '"pizz"',
-	'p': '|',
-	'(': '"paren"',
-	')': '"paren"',
-	'g': '"segno"',
-	'.': '.',
-	'fd': '\\fermata',
-	'f': '\\fermata',
-	'_': '-',
-	'T': '\\trill',
-	'>': '>',
-	'^': '^',
-	}
-
-# http://www.arkkra.com/doc/uguide/contexts.html
-
-contexts = (
-	'header', 
-	'footer', 
-	'header2', 
-	'footer2', 
-	'score', 
-	'staff',
-	'voice',
-	'grids', 
-	'music',
-	)
-
-class Parser:
-	def __init__ (self, lines):
-		self.parse_function = self.parse_context_music
-		self.staffs = []
-                self.current_voices = []
-		self.forced_duration = None
-		self.last_name = 0
-		self.last_oct = 0		
-		self.tuplets_expected = 0
-		self.tuplets = []
-		self.clef = None
-		self.time = None
-		self.key = None
-		
-		self.parse (lines)
-		
-        def parse_compound_location (self, line):
-		colon = string.index (line, ':')
-                s = line[:colon]
-                debug (s)
-                line = line[colon + 1:]
-                debug (line)
-                self.current_voices = []
-                ##self.current_staffs = []
-                map (self.parse_location, string.split (s, '&'))
-                return line
-
-        def parse_location (self, line):
-		m = re.match ('^([-,0-9]+) *([-,0-9]*)', string.lstrip (line))
-                
-                def range_list_to_idxs (s):
-                        
-                        # duh
-                        def flatten (l):
-                                f = []
-                                for i in l:
-                                        for j in i:
-                                                f.append (j)
-                                return f
-                                         
-                        def range_to_list (s):
-                                if string.find (s, '-') >= 0:
-                                        debug ('s: ' + s)
-                                        l = map (string.lstrip,
-                                                 string.split (s, '-'))
-                                        r = range (string.atoi (l[0]) - 1,
-                                                   string.atoi (l[1]))
-                                else:
-                                        r = (string.atoi (s) - 1,)
-                                return r
-                        
-                        ranges = string.split (s, ',')
-                        l = flatten (map (range_to_list, ranges))
-                        l.sort ()
-                        return l
-                
-                staff_idxs = range_list_to_idxs (m.group (1))
-                if m.group (2):
-                        voice_idxs = range_list_to_idxs (m.group (2))
-                else:
-                        voice_idxs = [0]
-                for s in staff_idxs:
-                        while s > len (self.staffs) - 1:
-                                self.staffs.append (Staff (s))
-                        for v in voice_idxs:
-                                self.current_voices.append (self.staffs[s].voices[v])
-                        
-	def parse_note (self, line):
-                # FIXME: 1?
-                oct = 1
-                name = (ord (line[0]) - ord ('a') + 5) % 7
-                # FIXME: does key play any role in this?
-		alteration = 0
-		debug ('NOTE: ' + `line`)
-                line = string.lstrip (line[1:])
-		while line:
-                        if len (line) > 1 and line[:2] == '//':
-                                line = 0
-                                break
-			elif line[0] == '#':
-				alteration = alteration + 1
-			elif line[0] == '&':
-				alteration = alteration - 1
-			elif line[0] == '+':
-                                oct = oct + 1 
-			elif line[0] == '-':
-                                oct = oct - 1
-                        else:
-                                skipping (line[0])
-			line = string.lstrip (line[1:])
-		return (oct, name, alteration)
-			
-	def parse_chord (self, line):
-		debug ('CHORD: ' + line)
-		line = string.lstrip (line)
-		ch = Chord ()
-		if not line:
-			#ch = self.current_voices[0].last_chord ()
-			ch = self.last_chord.copy ()
-		else:
-			m = re.match ('^([0-9]+)([.]*)', line)
-			if m:
-				ch.basic_duration = string.atoi (m.group (1))
-				line = line[len (m.group (1)):]
-				if m.group (2):
-					ch.dots = len (m.group (2))
-					line = line[len (m.group (2)):]
-                        else:
-                                #ch.basic_duration = self.current_voices[0].last_chord ().basic_duration
-                                ch.basic_duration = self.last_chord.basic_duration
-                                
-                        line = string.lstrip (line)
-                        if len (line) > 1 and line[:2] == '//':
-                                line = 0
-                        #ugh
-                        if not line:
-				debug ('nline: ' + line)
-                                #ch = self.current_voices[0].last_chord ()
-				n = self.last_chord.copy ()
-				n.basic_duration = ch.basic_duration
-				n.dots = ch.dots
-                                ch = n
-				debug ('ch.pitsen:' + `ch.pitches`)
-				debug ('ch.dur:' + `ch.basic_duration`)
-			else:
-				debug ('eline: ' + line)
-				
-			while line:
-                                if len (line) > 1 and line[:2] == '//':
-                                        line = 0
-                                        break
-                                elif line[:1] == 'mr':
-					ch.multimeasure = 1
-                                        line = line[2:]
-                                elif line[:1] == 'ms':
-					ch.multimeasure = 1
-                                        line = line[2:]
-				elif line[0] in 'rs':
-                                        line = line[1:]
-                                        pass
-				elif line[0] in 'abcdefg':
-					m = re.match ('([a-g][-#&+]*)', line)
-					l = len (m.group (1))
-					pitch = self.parse_note (line[:l])
-                                        debug ('PITCH: ' + `pitch`)
-					ch.pitches.append (pitch)
-					line = line[l:]
-                                        break
-				else:
-					skipping (line[0])
-					line = line[1:]
-                                line = string.lstrip (line)
-		debug ('CUR-VOICES: ' + `self.current_voices`)
-		map (lambda x, ch=ch: x.add_chord (ch), self.current_voices)
-		self.last_chord = ch
-
-	def parse_lyrics_location (self, line):
-		line = line.lstrip (line)
-		addition = 0
-		m = re.match ('^(between[ \t]+)', line)
-		if m:
-			line = line[len (m.group (1)):]
-			addition = 0.5
-		else:
-			m = re.match ('^(above [ \t]+)', line)
-			if m:
-				line = line[len (m.group (1)):]
-				addition = -0.5
-			else:
-				addlyrics = 1
-		
-	def parse_voice (self, line):
-		line = string.lstrip (line)
-		# `;' is not a separator, chords end with ';'
-		chords = string.split (line, ';')[:-1]
-		# mup resets default duration and pitch each bar
-		self.last_chord = Chord ()
-		self.last_chord.basic_duration = 4
-		map (self.parse_chord, chords)
-
-	def init_context_header (self, line):
-		self.parse_function = self.parse_context_header
-					
-	def parse_context_header (self, line):
-		debug ('header: ' + line)
-		skipping (line)
-		
-	def init_context_footer (self, line):
-		self.parse_function = self.parse_context_footer
-
-	def parse_context_footer (self, line):
-		debug ('footer: ' + line)
-		skipping (line)
-
-	def init_context_header2 (self, line):
-		self.parse_function = self.parse_context_header2
-
-	def parse_context_header2 (self, line):
-		debug ('header2: ' + line)
-		skipping (line)
-
-	def init_context_footer2 (self, line):
-		self.parse_function = self.parse_context_footer2
-
-	def parse_context_footer2 (self, line):
-		debug ('footer2: ' + line)
-		skipping (line)
-
-	def init_context_score (self, line):
-		self.parse_function = self.parse_context_score
-
-	def parse_context_score (self, line):
-		debug ('score: ' + line)
-		line = string.lstrip (line)
-		# ugh: these (and lots more) should also be parsed in
-		# context staff.  we should have a class Staff_properties
-		# and parse/set all those.
-		m = re.match ('^(time[ \t]*=[ \t]*([0-9]+)[ \t]*/[ \t]*([0-9]+))', line)
-		if m:
-			line = line[len (m.group (1)):]
-			self.time = Time ((string.atoi (m.group (2)),
-					   string.atoi (m.group (3))))
-
-		m = re.match ('^(key[ \t]*=[ \t]*([0-9]+)[ \t]*(#|@))', line)
-		if m:
-			line = line[len (m.group (1)):]
-			n = string.atoi (m.group (2))
-			if m.group (3) == '#':
-				self.key = Key (n, 0)
-			else:
-				self.key = Key (0, n)
-		skipping (line)
-
-	def init_context_staff (self, line):
-		self.parse_function = self.parse_context_staff
-
-	def parse_context_staff (self, line):
-		debug ('staff: ' + line)
-		skipping (line)
-
-	def init_context_voice (self, line):
-		self.parse_function = self.parse_context_voice
-
-	def parse_context_voice (self, line):
-		debug ('voice: ' + line)
-		skipping (line)
-
-	def init_context_grids (self, line):
-		self.parse_function = self.parse_context_grids
-
-	def parse_context_grids (self, line):
-		debug ('grids: ' + line)
-		skipping (line)
-
-	def init_context_music (self, line):
-		self.parse_function = self.parse_context_music
-
-	def parse_context_music (self, line):
-		debug ('music: ' + line)
-                line = string.lstrip (line)
-                if line and line[0] in '0123456789':
-                        line = self.parse_compound_location (line)
-                        self.parse_voice (line)
-		else:
-			m = re.match ('^(TODOlyrics[ \t]+)', line)
-			if m:
-				line = line[len (m.group (1)):]
-				self.parse_lyrics_location (line[7:])
-				self.parse_lyrics (line)
-			else:
-				skipping (line)
-
-	def parse (self, lines):
-		# shortcut: set to official mup maximum (duh)
-		# self.set_staffs (40)
-		for line in lines:
-                        debug ('LINE: ' + `line`)
-			m = re.match ('^([a-z]+2?)', line)
-			
-			if m:
-				word = m.group (1)
-				if word in contexts:
-					eval ('self.init_context_%s (line)' % word)
-					continue
-                                else:
-                                        warning (_ ("no such context: %s") % word)
-                                        skipping (line)
-			else:
-                                debug ('FUNC: ' + `self.parse_function`)
-				self.parse_function (line)
-				
-		for c in self.staffs:
-			# hmm
-			if not c.clef and self.clef:
-				c.clef = self.clef
-			if not c.time and self.time:
-				c.time = self.time
-			if not c.key and self.key:
-				c.key = self.key
-			c.calculate ()
-
-	def dump (self):
-		str = ''
-
-		refs = ''
-		for s in self.staffs:
-			str = str +  s.dump ()
-			refs = refs + '\n    \\' + s.idstring ()
-
-		str = str + '''
-
-\score {
-  <<%s
-  >>
-  \paper {}
-  \midi {}
-}
-''' % refs 
-		return str
-
-
-class Pre_processor:
-	def __init__ (self, raw_lines):
-		self.lines = []
-		self.active = [1]
-		self.process_function = self.process_line
-		self.macro_name = ''
-		self.macro_body = ''
-		self.process (raw_lines)
-
-	def process_line (self, line):
-		global macros
-		m = re.match ('^([ \t]*([a-zA-Z]+))', line)
-		s = line
-		if m:
-			word = m.group (2)
-			debug ('MACRO?: ' + `word`)
-			if word in pre_processor_commands:
-				line = line[len (m.group (1)):]
-				eval ('self.process_macro_%s (line)' % word)
-				s = ''
-			else:
-				if macros.has_key (word):
-					s = macros[word] + line[len (m.group (1)):]
-		if not self.active [-1]:
-			s = ''
-		return s
-
-	def process_macro_body (self, line):
-		global macros
-		# dig this: mup allows ifdefs inside macro bodies
-		s = self.process_line (line)
-		m = re.match ('(.*[^\\\\])(@)(.*)', s)
-		if m:
-			self.macro_body = self.macro_body + '\n' + m.group (1)
-			macros[self.macro_name] = self.macro_body
-			debug ('MACROS: ' + `macros`)
-			# don't do nested multi-line defines
-			self.process_function = self.process_line
-			if m.group (3):
-				s = m.group (3)
-			else:
-				s = ''
-		else:
-			self.macro_body = self.macro_body + '\n' + s
-			s = ''
-		return s
-
-	# duh: mup is strictly line-based, except for `define',
-	# which is `@' terminated and may span several lines
-	def process_macro_define (self, line):
-		global macros
-		# don't define new macros in unactive areas
-		if not self.active[-1]:
-			return
-		m = re.match ('^[ \t]*([a-zA-Z][a-zA-Z1-9_]*)(([^@]*)|(\\\\@))(@)?', line)
-		n = m.group (1)
-		if m.group (5):
-			if m.group (2):
-				e = m.group (2)
-			else:
-				e = ''
-			macros[n] = e
-			debug ('MACROS: ' + `macros`)
-		else:
-			# To support nested multi-line define's
-			# process_function and macro_name, macro_body
-			# should become lists (stacks)
-			# The mup manual is undetermined on this
-			# and I haven't seen examples doing it.
-			#
-			# don't do nested multi-line define's
-			if m.group (2):
-				self.macro_body = m.group (2)
-			else:
-				self.macro_body = ''
-			self.macro_name = n
-			self.process_function = self.process_macro_body
-		
-	def process_macro_ifdef (self, line):
-		m = re.match ('^[ \t]*([a-zA-Z][a-zA-Z1-9_]*)', line)
-		if m:
-			
-			active = self.active[-1] and macros.has_key (m.group (1))
-			debug ('ACTIVE: %d' % active)
-			self.active.append (active)
-
-	def process_macro_ifndef (self, line):
-		m = re.match ('^[ \t]*([a-zA-Z][a-zA-Z1-9_]*)', line)
-		if m:
-			active = self.active[-1] and not macros.has_key (m.group (1))
-			self.active.append (active)
-
-	def process_macro_else (self, line):
-		debug ('ELSE')
-		self.active[-1] = not self.active[-1]
-		
-	def process_macro_endif (self, line):
-		self.active = self.active[:-1]
-			
-	def process (self, raw_lines):
-		s = ''
-		for line in raw_lines:
-			ls = string.split (self.process_function (line), '\n')
-			for i in ls:
-				if i:
-					s = s + string.rstrip (i)
-					if s and s[-1] == '\\':
-						s = string.rstrip (s[:-1])
-					elif s:
-						self.lines.append (s)
-						s = ''
-
-
-debug_p = 0
-only_pre_process_p = 0
-def debug (s):
-        if debug_p:
-                progress ('DEBUG: ' + s)
-
-def skipping (s):
-	if verbose_p or debug_p:
-                progress ('SKIPPING: ' + s)
-
-(sh, long) = getopt_args (__main__.option_definitions)
-try:
-	(options, files) = getopt.getopt (sys.argv[1:], sh, long)
-except:
-	help ()
-	sys.exit (2)
-
-macros = {}
-pre_processor_commands = (
-	'define',
-	'else',
-	'endif',
-	'ifdef',
-	'ifndef',
-	)
-
-for opt in options:
-	o = opt[0]
-	a = opt[1]
-        if 0:
-                pass
-	elif o== '--debug' or o == '-d':
-                debug_p = 1
-	elif o== '--define' or o == '-D':
-		if string.find (a, '=') >= 0:
-			(n, e) = string.split (a, '=')
-		else:
-			n = a
-			e = ''
-		macros[n] = e
-	elif o== '--pre-process' or o == '-E':
-		only_pre_process_p = 1
-	elif o== '--help' or o == '-h':
-		help ()
-		sys.exit (0)
-	elif o== '--verbose' or o == '-V':
-                verbose_p = 1
-	elif o == '--version' or o == '-v':
-		identify ()
-		sys.exit (0)
-	elif o == '--output' or o == '-o':
-		output = a
-	else:
-		print o
-		raise getopt.error
-
-# writes to stdout for help2man
-# don't call 
-# identify ()
-# sys.stdout.flush ()
-
-# handy emacs testing
-# if not files:
-# 	files = ['template.mup']
-
-if not files:
-	files = ['-']
-	
-for f in files:
-
-	if f == '-':
-		h = sys.stdin
-	elif f and not os.path.isfile (f):
-		f = strip_extension (f, '.mup') + '.mup'
-		h = open (f)
-	progress ( _("Processing `%s'..." % f))
-	raw_lines = h.readlines ()
-	p = Pre_processor (raw_lines)
-	if only_pre_process_p:
-		if not output:
-			output = os.path.basename (re.sub ('(?i).mup$', '.mpp', f))
-	else:
-		e = Parser (p.lines)
-		if not output:
-			output = os.path.basename (re.sub ('(?i).mup$', '.ly', f))
-		if output == f:
-			output = os.path.basename (f + '.ly')
-			
-	if f == '-':
-		output = '-'
-		out_h = sys.stdout
-	else:
-		out_h = open (output, 'w')
-
-	progress (_ ("Writing `%s'...") % output)
-
-	tag = '%% Lily was here -- automatically converted by %s from %s' % ( program_name, f)
-	if only_pre_process_p:
-		# duh
-		ly = string.join (p.lines, '\n')
-	else:
-		ly = tag + '\n\n' + e.dump ()
-
-	out_h.write (ly)
-	out_h.close ()
-	if debug_p:
-		print (ly)
-	
diff --git a/scripts/musedata2ly.py b/scripts/musedata2ly.py
deleted file mode 100644
index f34ee7aaab..0000000000
--- a/scripts/musedata2ly.py
+++ /dev/null
@@ -1,652 +0,0 @@
-#!@PYTHON@
-
-# musedata = musedata.stanford.edu
-# musedata = COBOL for musicians.
-
-
-# TODO
-#
-# * clefs,
-# * keys,
-# * staffs,
-# * multiple voices (they use `Backspace' (shudder)
-# * tuplets
-#
-
-#
-# I completely forgot how this was supposed to work --hwn 5/2002 
-#
-#
-
-import re
-import sys
-import string
-import getopt
-import os
-program_name = 'musedata2ly'
-version = '@TOPLEVEL_VERSION@'
-if version == '@' + 'TOPLEVEL_VERSION' + '@':
-	version = '(unknown version)'	   # uGUHGUHGHGUGH
-
-
-
-ref_header_dict = {
-	'COM': 'composer',
-	'OPR': 'collection',
-	'OTL': 'title',
-	'OMV': 'subtitle',
-	'YOR': 'source',
-	'AGN': 'instrument',
-	'END': 'encodingdate',
-	'CDT': 'date',
-	'OCY': 'composedin',
-	'AST': 'genre',
-	'YEC': 'copyright',
-	'YEM': 'license',
-	'YEN': 'encodingcountry',
-	'EED': 'editor',
-	'SCA': 'opus',
-	'ONM': 'onm',
-	'ENC': 'musedataencoder',
-	'KEY': 'musedatakey',
-	'AFT': 'musedatastage'
-	}
-
-
-class Ref_parser:
-	def __init__ (self, fn):
-		self.dict = {}
-		
-		ls = open (fn).readlines ()
-		self.parse (ls)
-	def parse (self,ls):
-		for l in ls:
-			m = re.match('!!!([A-Z]+):[ \t]+(.*)$',l)
-			if m:
-				key = m.group(1)
-				val = m.group (2)
-				val = re.sub ('[ \t]+', ' ', val)
-				try:
-					
-					key =ref_header_dict [key]
-				except KeyError:
-					sys.stderr.write ('\nUnknown ref key \`%s\'' % key) 
-				s = ''
-				try:
-					s = self.dict[key]
-				except KeyError:
-					pass
-
-				s = s + val
-				self.dict[key] = s
-	def dump( self):
-		str = ''
-		for (k,v) in self.dict.items ():
-			str = str +'  %s = "%s"\n' % (k,v)
-		str = '\\header {\n%s}' % str
-		return str
-	
-verbose = 0
-
-
-actab = {-2: 'eses', -1: 'es', 0 : '', 1: 'is', 2:'isis'}
-
-def pitch_to_lily_string (tup):
-	(o,n,a) = tup
-
-	nm = chr((n + 2) % 7 + ord ('a'))
-	nm = nm + actab[a]
-	if o > 0:
-		nm = nm + "'" * o
-	elif o < 0:
-		nm = nm + "," * -o
-	return nm
-
-def get_key (s):
-	i = string.atoi (s)
-	return ''
-
-def get_timesig (s):
-	return '\\time %s\n' % s
-
-
-divisions = 4
-def get_divisions_per_quarter (s):
-	divisions = string.atoi (s) 
-	return ''
-
-def get_directive (s):
-	return '%% %s\n' % s
-
-def get_transposing (s):
-	return ''
-
-def get_num_instruments (s):
-	return ''
-
-def get_lilypond_notename (p, ac):
-	if p > 5:
-		p = p - 7
-	s = chr (p + ord ('c'))
-	infix = 'i'
-	if ac < 0:
-		infix = 'e'
-		ac = -ac
-
-	while ac:
-		s = s + infix + 's'
-		ac = ac - 1
-	return s
-def get_clef ():
-	return ''
-
-SPACES = ' '
-DIGITS = "0123456789"
-
-
-clef_dict = {
-04: 'treble',
-13 : 'alto',
-22: 'bass',
-}
-attr_dict = {
-	'C' : get_clef,
-	'K' : get_key ,
-	'T' : get_timesig,
-	'Q' : get_divisions_per_quarter,
-	'D' : get_directive,
-	'X' : get_transposing,
-	'I': get_num_instruments,
-	}
-
-class Attribute_set:
-	def __init__ (self, dict):
-		self.dict = dict
-	def dump (self):
-		s = ''
-		if self. dict.has_key ('T'):
-			s = s+ get_timesig  (self.dict['T'])
-		
-		return s
-
-
-script_table = {
-'v': '\\upbow',
-'n': '\\downbow',
-'o': '\\harmonic',
-'0': '"openstring',
-'Q': '\\thumb',
-'>': '^',
-'V': '^',
-'.': '.',
-'_': '-',
-'=': '"det leg"',
-'i': '|',
-'s': '"\\\\textsharp"',
-'n': '"\\\\textnatural"',
-'b': '"\\\\textflat"',
-'F': '\\fermata',
-'E': '\\fermata',
-}
-
-
-class Chord:
-	def __init__ (self):
-		self.pitches = []
-		self.grace = 0
-		self.cue = 0
-		self.slurstart = []
-		self.slurstop  = []
-		self.scripts = []
-		self.syllables = []
-		self.dots = 0
-		self.basic_duration = 4
-		self.tied = 0
-
-		self.note_suffix = self.note_prefix = ''
-		self.chord_suffix = self.chord_prefix = ''
-		
-	def add_script (self,s):
-		self.scripts.append (s)
-	def set_duration (self, d):
-		self.basic_duration = d
-	def add_syllable (self, s):
-		self.syllables.append (s)
-	def add_pitch (self,t):
-		self.pitches.append (t)
-		
-	def dump (self):
-		str = ''
-
-		sd = ''
-		if self.basic_duration == 0.5:
-			sd = '\\breve'
-		else:
-			sd = '%d' % self.basic_duration
-
-		sd = sd + '.' * self.dots
-
-		for p in self.pitches:
-			if str:
-				str = str + ' ' 
-			str = str + pitch_to_lily_string (p) 
-		
-		if len (self.pitches) > 1:
-			str = '<%s>' % str
-		elif len (self.pitches) == 0:
-			str = 'r'
-
-		str = str + sd + '(' * len (self.slurstart) + ')' * len (self.slurstart) 
-		for s in self.scripts:
-			str = str + '-' + s
-
-		str = self.note_prefix +str  + self.note_suffix
-		str = self.chord_prefix + str + self.chord_suffix
-		return str
-
-class Measure_start:
-	def dump (self):
-		return ' |\n'
-	
-class Parser:
-	def append_entry (self, e):
-		self.entries.append (e)
-	def append_chord (self,c ):
-		self.chords.append (c)
-		self.entries.append (c)
-	def last_chord (self):
-		return self.chords[-1]
-	def __init__ (self, fn):
-		self.divs_per_q = 1
-		self.header_dict = {
-			'tagline' :'automatically converted from Musedata',
-			'copyright' : 'all rights reserved -- free for noncommercial use'
-			#  musedata license (argh)
-			}
-		self.entries = []
-		self.chords = []
-
-		
-		lines = open (fn).readlines ()
-		lines = map (lambda x: re.sub ("\r$", '', x), lines)
-		lines = self.parse_header (lines)
-		lines = self.append_lines (lines)
-		str = string.join (lines, '\n')
-		lines = re.split ('[\n\r]+', str)
-		self.parse_body (lines)
-		
-	def parse_header (self, lines):
-		enter = string.split (lines[3], ' ')
-		self.header_dict['enteredby']  = string.join (enter[1:])
-		self.header_dict['enteredon'] = enter[0]
-		self.header_dict['opus'] = lines[4]
-		self.header_dict['source'] = lines[5]
-		self.header_dict['title'] = lines[6]
-		self.header_dict['subtitle'] = lines[7]
-		self.header_dict['instrument']= lines[8]
-		self.header_dict['musedatamisc'] =lines[9]
-		self.header_dict['musedatagroups'] =lines[10]
-		self.header_dict['musedatagroupnumber']=lines[11]
-		lines =  lines[12:]
-		comment = 0
-		while lines:
-			if lines[0][0]  == '$':
-				break			
-			lines = lines[1:]
-		return lines
-	
-	def parse_musical_attributes (self,l):
-		atts = re.split('([A-Z][0-9]?):', l)
-		atts = atts[1:]
-		found = {}
-		while len (atts):
-			id = atts[0]
-			val = atts[1]
-			atts = atts[2:]
-			found[id] = val
-
-		try:
-			self.divs_per_q = string.atoi (found['Q'])
-		except KeyError:
-			pass
-		
-		self.append_entry (Attribute_set (found))
-	def append_entry (self, e):
-		self.entries.append (e)
-
-	def parse_line_comment (self,l):
-		pass
-
-	def parse_note_line (self,l):
-		ch = None
-		if verbose:
-			print DIGITS+DIGITS+DIGITS 
-			print l
-		pi = l[0:5]
-		di = l[5:8]
-		tied = l[8:9] == '-'
-
-		cue = grace = 0
-		if (pi[0] == 'g'):
-			grace = 1
-			pi = pi[1:]
-		elif (pi[0] == 'c'):
-			cue = 1
-			pi = pi[1:]
-		
-		if pi[0] == ' ':
-			ch = self.last_chord ()
-			pi = pi[1:]
-		else:
-			ch = Chord ()
-			self.append_chord (ch)
-
-
-		ch.cue = ch.cue or cue
-		ch.grace = ch.grace or grace
-
-		while pi[0] in SPACES:
-			pi = pi[1:]
-
-		if pi[0] <> 'r':
-			name =  ((ord (pi[0]) -ord('A')) + 5) % 7
-			alter = 0
-			pi = pi[1:]
-			while pi and pi[0] in '#f':
-				if pi[0] == '#':
-					alter = alter + 1
-				else:
-					alter = alter - 1
-				pi = pi[1:]
-
-			oct = string.atoi (pi) - 3
-
-			pittup = (oct, name ,alter)
-			ch.add_pitch (pittup)
-
-		ch.dots = 0
-		
-		dot_str = l[17:18]
-		if dot_str  == '.':
-			ch.dots = 1
-		elif dot_str == ':':
-			ch.dots = 2
-
-		base_dur = None
-		if ch.cue or ch.grace:
-			c = di[2]
-			if c == '0':
-				ch.accaciatura = 1
-			elif c == 'A':
-				base_dur = 0.5
-			else:
-				base_dur = 1 << (9 - (ord (c) - ord ('0')))
-		else:
-			fact  = (1,1)
-			if ch.dots == 1:
-				fact = (2,3)
-			elif ch.dots == 2:
-				fact = (4, 7)
-			
-			base_dur =  (4 * self.divs_per_q* fact[1]) / (string.atoi (di)* fact[0])
-			ch.set_duration (base_dur)
-
-		ch.tied = ch.tied or tied 
-	
-		if l[26:27] == '[':
-			ch.start_beam = 1
-		elif l[26:27] == ']':
-			ch.end_beam = 1
-
-
-		additional = l[32:44]
-		for c in additional:
-			if c in '([{z':
-				ch.slurstart.append( 0)
-				continue
-			elif c in ')]}x':
-				ch.slurstop.append( 0)
-				continue
-			
-			if c == '*':
-				ch.start_tuplet = 1
-				continue
-			elif c == '!':
-				ch.stop_tuplet = 1
-				continue
-
-			if c in DIGITS:
-				ch.add_script (c)
-				continue
-
-			if c == ' ' :
-				continue
-			
-			try:
-				scr = script_table[c]
-				ch.add_script (scr)
-				c = None
-			except KeyError:
-				sys.stderr.write ("\nFixme: script `%s' not done\n" % c)
-
-		text = l[40:81]
-		sylls = string.split (text,'|')
-
-		for syl in sylls:
-			ch.add_syllable (syl)
-
-			
-	def parse_measure_line (self,l):
-		self.append_entry (Measure_start())
-
-
-	def parse_duration (l):
-		s = ''
-		while l[0] in '0123456789':
-			s = s + l[0]
-			l= l[1:]
-		print l
-		num = string.atoi (s)
-		den = 4 * divisions 
-
-		current_dots = 0
-		try_dots = [3, 2, 1]
-		for d in try_dots:
-			f = 1 << d
-			multiplier = (2*f-1)
-			if num % multiplier == 0 and den % f == 0:
-				num = num / multiplier
-				den = den / f
-				current_dots = current_dots + d
-
-		if num <> 1:
-			sys.stderr.write ('huh. Durations left')
-		return '%s%s' % (den, '.' * current_dots)
-	
-	def append_lines (self,ls):
-		nls = []
-		for l in ls:
-			if l[0] == 'a':
-				nls[-1] = nls[-1]+l[1:]
-			else:
-				nls.append(l)
-		return nls
-	def dump (self):
-		s = ''
-		ln = ''
-		for e in self.entries:
-			
-			next = ' ' + e.dump()
-			if len (ln) + len (next) > 72:
-				s = s +ln +  '\n'
-				ln = ''
-			ln = ln + next
-			
-		s = s + ln
-
-		s = '\\notes {\n %s \n}' % s
-		return s
-	
-	def parse_body (self,lines):
-		comment_switch = 0
-		for l in lines:
-			if not l:
-				continue
-			
-			c = l[0]
-			if c == '&':
-				comment_switch = not comment_switch
-				continue
-			
-			if comment_switch:
-				continue
-
-			if 0:
-				pass
-			elif c == '$':
-				self.parse_musical_attributes (l)
-			elif c == '@':
-				self.parse_line_comment (l)
-			elif c == '*':
-				self.parse_musical_directions (l)
-			elif c in 'ABCDEFGr ':
-				self.parse_note_line (l)
-			elif c == 'm':
-				self.parse_measure_line (l)
-			elif c == '/':
-				break
-			elif c in 'PS':
-				pass			# ignore sound & print
-			else:
-				sys.stderr.write ("\nUnrecognized record `%s'\n"%  l)
-
-
-
-
-
-def help ():
-	sys.stdout.write (
-"""Usage: musedata2ly [OPTIONS]... FILE1 [FILE2 ...]
-
-Convert musedata to LilyPond.
-
-Options:
-  -h,--help          print this help
-  -o,--output=FILE   set output filename to FILE
-  -v,--version       show version information
-  -r,--ref=REF       read background information from ref-file REF     
-
-Musedata (http://www.ccarh.org/musedata/) is an electronic library of
-classical music scores, currently comprising XXX scores.  The music is
-encoded in so-called Musedata format
-(http://www.ccarh.org/publications/books/beyondmidi/online/musedata).
-musedata2ly converts a set of musedata files to one .ly file, and will
-include a \header field if a .ref file is supplied.
-
-This converter is not complete -- this is left to the user as an excercise.
-
-Report bugs to bug-lilypond@gnu.org.
-
-Written by Han-Wen Nienhuys <hanwen@cs.uu.nl>.
-
-""")
-
-
-def print_version ():
-	sys.stdout.write ("""musedata2ly (GNU LilyPond) %s
-
-This 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 `midi2ly --warranty' for more information.
-
-Copyright (c) 2000--2004 by Han-Wen Nienhuys <hanwen@cs.uu.nl>.
-""" % version)
-def identify():
-	sys.stderr.write ("%s from LilyPond %s\n" % (program_name, version))
-
-
-
-(options, files) = getopt.getopt (sys.argv[1:], 'r:vo:h', ['verbose', 'ref=', 'help','version', 'output='])
-out_filename = None
-ref_file = None
-for opt in options:
-	o = opt[0]
-	a = opt[1]
-	if o== '--help' or o == '-h':
-		help ()
-		sys.exit (0)
-	elif o == '--version' or o == '-v':
-		print_version ()
-		sys.exit(0)
-	elif o == '--ref' or o == '-r':
-		ref_file = a 
-	elif o == '--output' or o == '-o':
-		out_filename = a
-	elif o == '--verbose' :
-		verbose = 1
-	else:
-		print o
-		raise getopt.error
-
-identify()
-
-
-
-ly = ''
-
-
-found_ids = ''
-
-for f in files:
-	if f == '-':
-		f = ''
-
-	sys.stderr.write ('Processing `%s\'\n' % f)
-	
-	e = Parser(f)
-
-	id = os.path.basename (f)
-	id = re.sub ('[^a-zA-Z0-9]', 'x', id)
-
-	def num2let (match):
-		return chr (ord (match.group ()) - ord('0') + ord('A'))
-		
-	id = re.sub ('[0-9]', num2let, id)
-	
-	id = 'voice%s' % id
-	ly =ly + '\n\n%s = \\context Staff = "%s" %s\n\n' % (id, id, e.dump ())
-
-	found_ids = found_ids + '\\%s\n' % id
-
-found_ids = '\n\n\n\\score { << %s >> } ' % found_ids 
-
-ly_head = ''
-if ref_file:
-	head = Ref_parser (ref_file)
-	if not out_filename:
-		t = ''
-		st = ''
-		try:
-			t = head.dict['title']
-			st= head.dict['subtitle']
-		except KeyError:
-			pass
-			
-		t = t + '-' +st
-		
-		t = re.sub ("^ +(.*) +$", r"\1", t)
-		t = re.sub ("\\.", '', t)
-		out_filename = re.sub ('[^a-zA-Z0-9-]', '-', t)
-		out_filename = out_filename+ '.ly'
-	ly_head = head.dump ()
-	
-if not out_filename:
-	out_filename = 'musedata.ly'
-	
-sys.stderr.write ('Writing `%s\'\n' % out_filename)
-
-fo = open (out_filename, 'w')
-fo.write ('%% lily was here -- automatically converted by musedata.ly\n')
-fo.write(ly_head + ly + found_ids)
-fo.close ()
-
diff --git a/scripts/old-lilypond-book.py b/scripts/old-lilypond-book.py
deleted file mode 100644
index ab4bc7b796..0000000000
--- a/scripts/old-lilypond-book.py
+++ /dev/null
@@ -1,1656 +0,0 @@
-#!@PYTHON@
-# vim: set noexpandtab:
-
-"""
-
-  TODO:
-  * junk --outdir for--output
-  * Figure out clean set of options.
-  *
-  * texinfo: add support for @pagesize
-
-  todo: dimension handling (all the x2y) is clumsy. (tca: Thats
-        because the values are taken directly from texinfo.tex,
-        geometry.sty and article.cls. Give me a hint, and I'll
-        fix it.)
-
-
-  TODO: magnification support should also work for texinfo -> html: eg. add as option to dvips.
-
-
-
-  This is a slightly hairy program. The general approach is as follows 
-  The input string is chopped up in chunks, i.e. ,  a list of tuples
-
-    with the format  (TAG_STR, MAIN_STR, OPTIONS, TODO, BASE)
-
-  This list is built step by step: first ignore and verbatim commands
-  are handled, delivering a list of chunks.
-  
-  then all chunks containing lilypond commands are chopped up
-
-  when all chunks have their final form, all bodies from lilypond blocks are 
-  extracted, and if applicable, written do disk and run through lilypond.
-  
-
-tags supported
-
-  ignore
-  lilypond
-  input
-  verb
-  verbatim
-  multicols
-  numcols
-  
-
-
-
-"""
-
-#  This is was the idea for handling of comments:
-#	Multiline comments, @ignore .. @end ignore is scanned for
-#	in read_doc_file, and the chunks are marked as 'ignore', so
-#	lilypond-book will not touch them any more. The content of the
-#	chunks are written to the output file. Also 'include' and 'input'
-#	regex has to check if they are commented out.
-#
-
-#	Then it is scanned for 'lilypond', 'lilypond-file' and 'lilypond-block'.
-#	These three regex's has to check if they are on a commented line,
-#	% for latex, @c for texinfo.
-#
-#	Then lines that are commented out with % (latex) and @c (Texinfo)
-#	are put into chunks marked 'ignore'. This cannot be done before
-#	searching for the lilypond-blocks because % is also the comment character
-#	for lilypond.
-#
-#	The the rest of the rexeces are searched for. They don't have to test
-#	if they are on a commented out line.
-
-import glob
-import stat
-import string
-
-
-################################################################
-# Users of python modules should include this snippet
-# and customize variables below.
-
-# We'll suffer this path init stuff as long as we don't install our
-# python packages in <prefix>/lib/pythonx.y (and don't kludge around
-# it as we do with teTeX on Red Hat Linux: set some environment var
-# (PYTHONPATH) in profile)
-
-# If set, LILYPONDPREFIX must take prevalence
-# if datadir is not set, we're doing a build and LILYPONDPREFIX
-import getopt, os, sys
-datadir = '@local_lilypond_datadir@'
-if not os.path.isdir (datadir):
-	datadir = '@lilypond_datadir@'
-if os.environ.has_key ('LILYPONDPREFIX') :
-	datadir = os.environ['LILYPONDPREFIX']
-	while datadir[-1] == os.sep:
-		datadir= datadir[:-1]
-
-sys.path.insert (0, os.path.join (datadir, 'python'))
-
-# Customize these
-#if __name__ == '__main__':
-
-import lilylib as ly
-global _;_=ly._
-global re;re = ly.re
-
-# lilylib globals
-program_version = '@TOPLEVEL_VERSION@'
-program_name = 'lilypond-book'
-verbose_p = 0
-pseudo_filter_p = 0
-original_dir = os.getcwd ()
-
-
-preview_resolution = 90
-
-## FIXME
-## do -P or -p by default?
-##help_summary = _ ("Run LilyPond using LaTeX for titling")
-help_summary = _ ("Process LilyPond snippets in hybrid html, LaTeX or texinfo document")
-copyright = ('Tom Cato Amundsen <tca@gnu.org>',
-	     'Han-Wen Nienhuys <hanwen@cs.uu.nl>')
-
-option_definitions = [
-	(_ ("EXT"), 'f', 'format', _ ("use output format EXT (texi [default], texi-html, latex, html)")),
-	(_ ("DIM"),  '', 'default-music-fontsize', _ ("default fontsize for music.  DIM is assumed to be in points")),
-	(_ ("DIM"),  '', 'default-lilypond-fontsize', _ ("deprecated, use --default-music-fontsize")),
-	(_ ("OPT"), '', 'extra-options', _ ("pass OPT quoted to the lilypond command line")),
-	(_ ("DIM"), '', 'force-music-fontsize', _ ("force fontsize for all inline lilypond. DIM is assumed to be in points")),
-	(_ ("DIM"), '', 'force-lilypond-fontsize', _ ("deprecated, use --force-music-fontsize")),
-	('', 'h', 'help', _ ("print this help")),
-	(_ ("DIR"), 'I', 'include', _ ("include path")),
-	('', 'M', 'dependencies', _ ("write dependencies")),
-	(_ ("PREF"), '',  'dep-prefix', _ ("prepend PREF before each -M dependency")),
-	('', 'n', 'no-lily', _ ("don't run lilypond")),
-	('', '', 'no-pictures', _ ("don't generate pictures")),
-	('', '', 'no-music', _ ("strip all lilypond blocks from output")),
-	(_ ("FILE"), 'o', 'outname', _ ("filename main output file")),
-	(_ ("FILE"), '', 'outdir', _ ("where to place generated files")),
-	(_ ('RES'), '', 'preview-resolution',
-	 _ ("set the resolution of the preview to RES")),
-	('', 'V', 'verbose', _ ("be verbose")),
-	('', 'v', 'version', _ ("print version information")),
-	('', 'w', 'warranty', _ ("show warranty and copyright")),
-	]
-
-# format specific strings, ie. regex-es for input, and % strings for output
-
-# global variables
-
-include_path = [os.getcwd ()]
-
-#lilypond_binary = 'valgrind --suppressions=/home/hanwen/usr/src/guile-1.6.supp  --num-callers=10 /home/hanwen/usr/src/lilypond/lily/out/lilypond'
-
-lilypond_binary = os.path.join ('@bindir@', 'lilypond-bin')
-
-# only use installed binary  when we're installed too.
-if '@bindir@' == ('@' + 'bindir@') or not os.path.exists (lilypond_binary):
-	lilypond_binary = 'lilypond-bin'
-
-
-
-ly2dvi_binary = os.path.join ('@bindir@', 'ly2dvi')
-
-# only use installed binary  when we're installed too.
-if '@bindir@' == ('@' + 'bindir@') or not os.path.exists (lilypond_binary):
-	ly2dvi_binary = 'ly2dvi'
-
-
-
-g_extra_opts = ''
-g_here_dir = os.getcwd ()
-g_dep_prefix = ''
-g_outdir = ''
-g_force_music_fontsize = 0
-g_do_pictures = 1
-g_do_music = 1
-g_make_html = 0
-
-format = ''
-g_run_lilypond = 1
-no_match = 'a\ba'
-
-default_music_fontsize = 16
-default_text_fontsize = 12
-paperguru = None
-
-################################################################
-# Dimension handling for LaTeX.
-# 
-class LatexPaper:
-	def __init__ (self):
-		self.m_document_preamble = []
-		self.m_num_cols = 1
-		self.m_multicols = 1
-
-	def find_latex_dims (self):
-		if g_outdir:
-			fname = os.path.join (g_outdir, "lily-tmp.tex")
-		else:
-			fname = "lily-tmp.tex"
-		try:
-			f = open (fname, "w")
-		except IOError:
-			error ("Error creating temporary file '%s'" % fname)
-
-		for s in self.m_document_preamble:
-			f.write (s)
-		f.write (r"""
-\begin{document}
-\typeout{---}
-\typeout{\columnsep \the\columnsep}
-\typeout{\textwidth \the\textwidth}
-\typeout{---}
-\end{document}
-		""")
-		f.close ()
-		re_dim = re.compile (r"\\(\w+)\s+(\d+\.\d+)")
-
-		cmd = "latex '\\nonstopmode \input %s'" % fname
-	        # Ugh.  (La)TeX writes progress and error messages on stdout
-		# Redirect to stderr
-		cmd = '(( %s  >&2 ) >&- )' % cmd
-		status = ly.system (cmd, ignore_error = 1)
-		signal = 0xf & status
-		exit_status = status >> 8
-		
-		if status:
-			ly.error (_ ("LaTeX failed."))
-			ly.error (_ ("The error log is as follows:"))
-			
-			#URG see lilypond
-			try:
-				lns = open ('lily-tmp.log').readlines ()
-			except:
-				lns = ''
-			countdown = -3
-			for ln in lns:
-				sys.stderr.write (ln)
-				if re.match ('^!', ln):
-					countdown = 3
-
-				if countdown == 0:
-					break
-
-				if countdown > 0:
-					countdown = countdown -1
-
-			sys.stderr.write ("  ... (further messages elided)...\n")
-			sys.exit (1)
-
-		lns = open ('lily-tmp.log').readlines ()
-		for ln in lns:
-			ln = string.strip (ln)
-			m = re_dim.match (ln)
-			if m:
-				if m.groups ()[0] in ('textwidth', 'columnsep'):
-					self.__dict__['m_%s' % m.groups ()[0]] = float (m.groups ()[1])
-
-		try:
-			os.remove (fname)
-			os.remove (os.path.splitext (fname)[0]+".aux")
-			os.remove (os.path.splitext (fname)[0]+".log")
-		except:
-			pass
-
-		if not self.__dict__.has_key ('m_textwidth'):
-			raise 'foo!'
-
-	def get_linewidth (self):
-		if self.m_num_cols == 1:
-			w = self.m_textwidth
-		else:
-			w = (self.m_textwidth - self.m_columnsep)/2
-		if self.m_multicols > 1:
-			return (w - self.m_columnsep* (self.m_multicols-1)) \
-			   / self.m_multicols
-		return w
-
-
-class HtmlPaper:
-	def __init__ (self):
-		self.m_papersize = 'letterpaper'
-		self.m_fontsize = 12
-	def get_linewidth (self):
-		return html_linewidths[self.m_papersize][self.m_fontsize]
-
-class TexiPaper:
-	def __init__ (self):
-		self.m_papersize = 'letterpaper'
-		self.m_fontsize = 12
-	def get_linewidth (self):
-		return texi_linewidths[self.m_papersize][self.m_fontsize]
-
-def mm2pt (x):
-	return x * 2.8452756
-def in2pt (x):
-	return x * 72.26999
-def em2pt (x, fontsize = 10):
-	return {10: 10.00002, 11: 10.8448, 12: 11.74988}[fontsize] * x
-def ex2pt (x, fontsize = 10):
-	return {10: 4.30554, 11: 4.7146, 12: 5.16667}[fontsize] * x
-
-def pt2pt (x):
-	return x
-
-dimension_conversion_dict ={
-	'mm': mm2pt,
-	'cm': lambda x: mm2pt (10*x),
-	'in': in2pt,
-	'em': em2pt,
-	'ex': ex2pt,
-	'pt': pt2pt
-	}
-
-# Convert numeric values, with or without specific dimension, to floats.
-# Keep other strings
-def conv_dimen_to_float (value):
-	if type (value) == type (""):
-		m = re.match ("([0-9.]+)(cm|in|pt|mm|em|ex)",value)
-		if m:
-			unit = m.group (2)
-			num = string.atof (m.group (1))
-			conv =  dimension_conversion_dict[m.group (2)]
-
-			value = conv (num)
-
-		elif re.match ("^[0-9.]+$",value):
-			value = float (value)
-
-	return value
-
-texi_linewidths = {
-	'afourpaper': {12: mm2pt (160)},
-	'afourwide': {12: in2pt (6.5)},
-	'afourlatex': {12: mm2pt (150)},
-	'smallbook': {12: in2pt (5)},
-	'letterpaper': {12: in2pt (6)}}
-
-html_linewidths = {
-	'afourpaper': {12: mm2pt (160)},
-	'afourwide': {12: in2pt (6.5)},
-	'afourlatex': {12: mm2pt (150)},
-	'smallbook': {12: in2pt (5)},
-	'letterpaper': {12: in2pt (6)}}
-
-
-################################################################
-# How to output various structures. 
-output_dict= {
-
-
-	'html' : {
-
-		'output-filename' : r'''
-<!-- %s >
-<a href="%s">
-<pre>%s</pre></a>:''',
-		'output-lilypond-fragment': '''<lilypond%s>
-\context Staff\context Voice{ %s }
-</lilypond>''',
-		'output-noinline': r'''
-<!-- generated: %(fn)s.png !-->
-''',
-		## maybe <hr> ?
-		'pagebreak': None,
-		# Verbatim text is always finished with \n.  FIXME: For HTML,
-		# this newline should be removed.
-		'output-verbatim': r'''<pre>
-%s</pre>''',
-		# Verbatim text is always finished with \n.  FIXME: For HTML,
-		# this newline should be removed.
-		'output-small-verbatim': r'''<font size=-1><pre>
-%s</pre></font>''',
-		## Ugh we need to differentiate on origin:
-		## lilypond-block origin wants an extra <p>, but
-		## inline music doesn't.
-		## possibly other center options?
-		'output-html': r'''
-%(htmlimages)s''',
-		},
-
-
-	'latex': {
-
-		'output-lilypond-fragment' : r'''\begin[singleline,%s]{lilypond}
-    \context Voice{
-      %s
-    }
-\end{lilypond}''',
-		'output-filename' : r'''\verb+%s+:\\
-%% %s
-%% %s
-''',
-
-		# verbatim text is always finished with \n
-		'output-verbatim': r'''\begin{verbatim}
-%s\end{verbatim}
-''',
-		# verbatim text is always finished with \n
-		'output-small-verbatim': r'''{\small\begin{verbatim}
-%s\end{verbatim}}
-''',
-		'output-default-post': "\\def\postLilyPondExample{}\n",
-		'output-default-pre': "\\def\preLilyPondExample{}\n",
-		'usepackage-graphics': '\\usepackage{graphics}\n',
-		'output-eps': '\\noindent\includegraphics{%(fn)s}', 
-		'output-noinline': r'''
-%% generated: %(fn)s.eps
-''',
-		'output-latex-quoted': r'''{\preLilyPondExample
-\def\lilypondbook{}
-\input %(fn)s.tex
-\postLilyPondExample}''',
-		'output-latex-noquote': r'''{\parindent 0pt
-\preLilyPondExample
-\def\lilypondbook{}
-\input %(fn)s.tex
-\postLilyPondExample}''',
-		'pagebreak': r'\pagebreak',
-		},
-
-
-	'texi' : {
-
-
-		'output-filename' : r'''
-@ifnothtml
-@file{%s}:@*
-@end ifnothtml
-@ifhtml
-@uref{%s,@file{%s}}
-@end ifhtml
-''',
-		'output-lilypond-fragment': '''@lilypond[%s]
-\context Staff\context Voice{ %s }
-@end lilypond ''',
-		'output-noinline': r'''
-@c generated: %(fn)s.png
-''',
-		'pagebreak': None,
-		# verbatim text is always finished with \n
-		'output-small-verbatim': r'''@smallexample
-%s@end smallexample
-''',
-		# verbatim text is always finished with \n
-		'output-verbatim': r'''@example
-%s@end example
-''',
-		# do some tweaking: @ is needed in some ps stuff.
-		#
-		# ugh, the <p> below breaks inline images...
-		'output-texi-noquote': r'''@tex
-\catcode`\@=12
-\parindent 0pt
-\def\lilypondbook{}
-\input %(fn)s.tex
-\catcode`\@=0
-@end tex
-@html
-<p>%(htmlimages)s
-<p>
-@end html
-''',
-		'output-texi-quoted': r'''@quotation
-@tex
-\catcode`\@=12
-\def\lilypondbook{}
-\input %(fn)s.tex
-\catcode`\@=0
-@end tex
-@html
-<p>%(htmlimages)s
-<p>
-@end html
-@end quotation
-''',
-		}
-
-	}
-
-def output_verbatim (body, small):
-	global format
-	if format == 'html':
-		body = re.sub ('&', '&amp;', body)
-		body = re.sub ('>', '&gt;', body)
-		body = re.sub ('<', '&lt;', body)
-	elif format == 'texi':
-		# clumsy workaround for python 2.2 pre bug.
-		body = re.sub ('@', '@@', body)
-		body = re.sub ('{', '@{', body)
-		body = re.sub ('}', '@}', body)
-
-	if small:
-		key = 'output-small-verbatim'
-	else:
-		key = 'output-verbatim'
-	return get_output (key) % body
-
-
-################################################################
-# Recognize special sequences in the input 
-
-
-# Warning: This uses extended regular expressions.  Tread with care.
-#
-# legenda
-#
-# (?P<name>regex) -- assign result of REGEX to NAME
-# *? -- match non-greedily.
-# (?m) -- multiline regex: make ^ and $ match at each line
-# (?s) -- make the dot match all characters including newline
-re_dict = {
-	'html': {
-		'include':  no_match,
-		'input': no_match,
-		'header': no_match,
-		'preamble-end': no_match,
-		'landscape': no_match,
-		'verbatim': r'''(?s)(?P<code><pre>\s.*?</pre>\s)''',
-		'verb': r'''(?P<code><pre>.*?</pre>)''',
-		'lilypond-file': r'(?m)(?P<match><lilypondfile(?P<options>[^>]+)?>\s*(?P<filename>[^<]+)\s*</lilypondfile>)',
-		'lilypond' : '(?m)(?P<match><lilypond((?P<options>[^:]*):)(?P<code>.*?)/>)',
-		'lilypond-block': r'''(?ms)(?P<match><lilypond(?P<options>[^>]+)?>(?P<code>.*?)</lilypond>)''',
-		'option-sep' : '\s*',
-		'intertext': r',?\s*intertext=\".*?\"',
-		'multiline-comment': r"(?sm)\s*(?!@c\s+)(?P<code><!--\s.*?!-->)\s",
-		'singleline-comment': no_match,
-		'numcols': no_match,
-		'multicols': no_match,
-		'ly2dvi': r'(?m)(?P<match><ly2dvifile(?P<options>[^>]+)?>\s*(?P<filename>[^<]+)\s*</ly2dvifile>)',
-		},
-
-	'latex': {
-		'input': r'(?m)^[^%\n]*?(?P<match>\\mbinput{?([^}\t \n}]*))',
-		'include': r'(?m)^[^%\n]*?(?P<match>\\mbinclude{(?P<filename>[^}]+)})',
-		'option-sep' : ',\s*',
-		'header': r"\n*\\documentclass\s*(\[.*?\])?",
-		'preamble-end': r'(?P<code>\\begin\s*{document})',
-		'verbatim': r"(?s)(?P<code>\\begin\s*{verbatim}.*?\\end{verbatim})",
-		'verb': r"(?P<code>\\verb(?P<del>.).*?(?P=del))",
-		'lilypond-file': r'(?m)^[^%\n]*?(?P<match>\\lilypondfile\s*(\[(?P<options>.*?)\])?\s*\{(?P<filename>.+)})',
-		'lilypond' : r'(?m)^[^%\n]*?(?P<match>\\lilypond\s*(\[(?P<options>.*?)\])?\s*{(?P<code>.*?)})',
-		'lilypond-block': r"(?sm)^[^%\n]*?(?P<match>\\begin\s*(\[(?P<options>.*?)\])?\s*{lilypond}(?P<code>.*?)\\end{lilypond})",
-		'def-post-re': r"\\def\\postLilyPondExample",
-		'def-pre-re': r"\\def\\preLilyPondExample",
-		'usepackage-graphics': r"\usepackage\s*{graphics}",
-		'intertext': r',?\s*intertext=\".*?\"',
-		'multiline-comment': no_match,
-		'singleline-comment': r"(?m)^.*?(?P<match>(?P<code>^%.*$\n+))",
-		'numcols': r"(?P<code>\\(?P<num>one|two)column)",
-		'multicols': r"(?P<code>\\(?P<be>begin|end)\s*{multicols}({(?P<num>\d+)?})?)",
-		'ly2dvi': no_match,
-
-		},
-
-	# why do we have distinction between @mbinclude and @include?
-
-	'texi': {
-		'include':  '(?m)^[^%\n]*?(?P<match>@mbinclude\s+(?P<filename>\S*))',
-		'input': no_match,
-		'header': no_match,
-		'preamble-end': no_match,
-		'landscape': no_match,
-		'verbatim': r'''(?s)(?P<code>@example\s.*?@end example\s)''',
-		'verb': r'''(?P<code>@code{.*?})''',
-		'lilypond-file': '(?m)^(?P<match>@lilypondfile(\[(?P<options>[^]]*)\])?{(?P<filename>[^}]+)})',
-		'lilypond' : '(?m)^(?P<match>@lilypond(\[(?P<options>[^]]*)\])?{(?P<code>.*?)})',
-		'lilypond-block': r'''(?ms)^(?P<match>@lilypond(\[(?P<options>[^]]*)\])?\s(?P<code>.*?)@end lilypond)\s''',
-		'option-sep' : ',\s*',
-		'intertext': r',?\s*intertext=\".*?\"',
-		'multiline-comment': r"(?sm)^\s*(?!@c\s+)(?P<code>@ignore\s.*?@end ignore)\s",
-		'singleline-comment': r"(?m)^.*?(?P<match>(?P<code>@c.*$\n+))",
-		'numcols': no_match,
-		'multicols': no_match,
-		'ly2dvi': no_match,
-		}
-	}
-
-
-for r in re_dict.keys ():
-	olddict = re_dict[r]
-	newdict = {}
-	for k in olddict.keys ():
-		try:
-			newdict[k] = re.compile (olddict[k])
-		except:
-			print 'invalid regexp: %s' % olddict[k]
-
-			## we'd like to catch and reraise a more
-			## detailed error, but alas, the exceptions
-			## changed across the 1.5/2.1 boundary.
-
-			raise "Invalid re"
-	re_dict[r] = newdict
-
-
-def uniq (list):
-	list.sort ()
-	s = list
-	list = []
-	for x in s:
-		if x not in list:
-			list.append (x)
-	return list
-
-
-def get_output (name):
-	return  output_dict[format][name]
-
-def get_re (name):
-	return  re_dict[format][name]
-
-def bounding_box_dimensions (fname):
-	if g_outdir:
-		fname = os.path.join (g_outdir, fname)
-	try:
-		fd = open (fname)
-	except IOError:
-		error ("Error opening `%s'" % fname)
-	str = fd.read ()
-	s = re.search ('%%BoundingBox: ([0-9]+) ([0-9]+) ([0-9]+) ([0-9]+)', str)
-	if s:
-
-		gs = map (lambda x: string.atoi (x), s.groups ())
-		return (int (gs[2] - gs[0] + 0.5),
-			int (gs[3] - gs[1] + 0.5))
-	else:
-		return (0,0)
-
-def error (str):
-	sys.stderr.write ("\n\n" + str + "\nExiting ... \n\n")
-	raise 'Exiting.'
-
-
-def compose_full_body (body, opts):
-	'''Construct the lilypond code to send to LilyPond.
-	Add stuff to BODY using OPTS as options.'''
-	music_size = default_music_fontsize
-	if g_force_music_fontsize:
-		music_size = g_force_music_fontsize
-	indent = ''
-	linewidth = ''
-	notime = ''
-	for o in opts:
-		if not g_force_music_fontsize:
-			m = re.match ('([0-9]+)pt', o)
-			if m:
-				music_size = string.atoi (m.group (1))
-
-		m = re.match ('indent=([-.0-9]+)(cm|in|mm|pt)', o)
-		if m:
-			f = float (m.group (1))
-			indent = 'indent = %f\\%s' % (f, m.group (2))
-
-		m = re.match ('linewidth=([-.0-9]+)(cm|in|mm|pt)', o)
-		if m:
-			f = float (m.group (1))
-			linewidth = 'linewidth = %f\\%s' % (f, m.group (2))
-
-	if re.search ('\\\\score', body):
-		is_fragment = 0
-	else:
-		is_fragment = 1
-	if 'fragment' in opts:
-		is_fragment = 1
-	if 'nofragment' in opts:
-		is_fragment = 0
-
-	if is_fragment and not 'multiline' in opts:
-		opts.append ('singleline')
-
-	if 'raggedright' in opts or  'singleline' in opts:
-		if not linewidth:
-			linewidth = 'raggedright = ##t'
-		if not indent:
-			indent = 'indent = 0.0\mm'
-	elif not linewidth:
-		global paperguru
-		l = paperguru.get_linewidth ()
-		linewidth = 'linewidth = %f\pt' % l
-
-	if 'noindent' in opts:
-		indent = 'indent = 0.0\mm'
-
-	if 'notime' in opts:
-		notime = r'''
-\translator {
-  \StaffContext
-  \remove Time_signature_engraver
-}
-'''
-
-	orig_name = ''
-	for o in opts:
-		m= re.search ('relative(.*)', o)
-		v = 0
-		if m:
-			try:
-				v = string.atoi (m.group (1))
-			except ValueError:
-				pass
-
-			v = v + 1
-			pitch = 'c'
-			if v < 0:
-				pitch = pitch + '\,' * v
-			elif v > 0:
-				pitch = pitch + '\'' * v
-
-			body = '\\relative %s { %s }' % (pitch, body)
-		m =re.search ("filename=(.*)", o)
-		if m:
-			orig_name = m.group (1)
-		
-	if is_fragment:
-		body = r'''
-\score {
-  \notes {
-%s
-  }
-}
-''' % body
-
-	opts = uniq (opts)
-	optstring = string.join (opts, ' ')
-	optstring = re.sub ('\n', ' ', optstring)
-	body = r'''
-%% Generated automatically by: lilypond-book.py
-%% options are %s
-#(set-global-staff-size %d)
-
-\paper  {
-  %s
-  %s
-  %s
-}
-''' % (optstring, music_size, linewidth, indent, notime) + body
-
-	if orig_name:
-		body = '\\renameinput \"%s\"\n%s' % (orig_name, body)
-	
-
-	# ughUGH not original options
-	return body
-
-def scan_html_preamble (chunks):
-	return
-
-def scan_latex_preamble (chunks):
-	# First we want to scan the \documentclass line
-	# it should be the first non-comment line.
-	# The only thing we really need to know about the \documentclass line
-	# is if there are one or two columns to begin with.
-	idx = 0
-	while 1:
-		if chunks[idx][0] == 'ignore':
-			idx = idx + 1
-			continue
-		m = get_re ('header').match (chunks[idx][1])
-		if not m:
-			error ("Latex documents must start with a \documentclass command")
-		if m.group (1):
-			options = re.split (r',\s*', m.group (1)[1:-1])
-		else:
-			options = []
-		if 'twocolumn' in options:
-			paperguru.m_num_cols = 2
-		break
-
-
-	# Then we add everything before \begin{document} to
-	# paperguru.m_document_preamble so that we can later write this header
-	# to a temporary file in find_latex_dims() to find textwidth.
-	while idx < len (chunks) and chunks[idx][0] != 'preamble-end':
-		if chunks[idx] == 'ignore':
-			idx = idx + 1
-			continue
-		paperguru.m_document_preamble.append (chunks[idx][1])
-		idx = idx + 1
-
-	if len (chunks) == idx:
-		error ("Didn't find end of preamble (\\begin{document})")
-
-	paperguru.find_latex_dims ()
-
-def scan_texi_preamble (chunks):
-	# this is not bulletproof..., it checks the first 10 chunks
-	for c in chunks[:10]:
-		if c[0] == 'input':
-			for s in ('afourpaper', 'afourwide', 'letterpaper',
-				  'afourlatex', 'smallbook'):
-				if string.find (c[1], "@%s" % s) != -1:
-					paperguru.m_papersize = s
-
-
-def scan_preamble (chunks):
-	global format
-	if format == 'html':
-		scan_html_preamble (chunks)
-	elif format == 'latex':
-		scan_latex_preamble (chunks)
-	elif format == 'texi':
-		scan_texi_preamble (chunks)
-
-
-def completize_preamble (chunks):
-	global format
-	if format != 'latex':
-		return chunks
-	pre_b = post_b = graphics_b = None
-	for chunk in chunks:
-		if chunk[0] == 'preamble-end':
-			break
-		if chunk[0] == 'input':
-			m = get_re ('def-pre-re').search (chunk[1])
-			if m:
-				pre_b = 1
-		if chunk[0] == 'input':
-			m = get_re ('def-post-re').search (chunk[1])
-			if m:
-				post_b = 1
-
-		if chunk[0] == 'input':
-			m = get_re ('usepackage-graphics').search (chunk[1])
-			if m:
-				graphics_b = 1
-	x = 0
-	while x < len (chunks) and   chunks[x][0] != 'preamble-end':
-		x = x + 1
-
-	if x == len (chunks):
-		return chunks
-
-	if not pre_b:
-		chunks.insert (x, ('input', get_output ('output-default-pre')))
-	if not post_b:
-		chunks.insert (x, ('input', get_output ('output-default-post')))
-	if not graphics_b:
-		chunks.insert (x, ('input', get_output ('usepackage-graphics')))
-
-	return chunks
-
-
-read_files = []
-def find_file (name):
-	'''
-	Search the include path for NAME. If found, return the (CONTENTS, PATH) of the file.
-	'''
-
-	if name == '-':
-		return (sys.stdin.read (), '<stdin>')
-	f = None
-	nm = ''
-	for a in include_path:
-		try:
-			nm = os.path.join (a, name)
-			f = open (nm)
-			global read_files
-			read_files.append (nm)
-			break
-		except IOError:
-			pass
-	if f:
-		sys.stderr.write ("Reading `%s'\n" % nm)
-		return (f.read (), nm)
-	else:
-		error ("File not found `%s'\n" % name)
-		return ('', '')
-
-def do_ignore (match_object):
-	return [('ignore', match_object.group ('code'))]
-def do_preamble_end (match_object):
-	return [('preamble-end', match_object.group ('code'))]
-
-def make_verbatim (match_object):
-	return [('verbatim', match_object.group ('code'))]
-
-def make_verb (match_object):
-	return [('verb', match_object.group ('code'))]
-
-def do_include_file (m):
-	"m: MatchObject"
-	return [('input', get_output ('pagebreak'))] \
-	     + read_doc_file (m.group ('filename')) \
-	     + [('input', get_output ('pagebreak'))]
-
-def do_input_file (m):
-	return read_doc_file (m.group ('filename'))
-
-def make_lilypond (m):
-	if m.group ('options'):
-		options = m.group ('options')
-	else:
-		options = ''
-	return [('input', get_output ('output-lilypond-fragment') %
-			(options, m.group ('code')))]
-
-def make_lilypond_file (m):
-	'''
-
-	Find @lilypondfile{bla.ly} occurences and substitute bla.ly
-	into a @lilypond .. @end lilypond block.
-
-	'''
-
-	if m.group ('options'):
-		options = get_re ('option-sep').split (m.group ('options'))
-	else:
-		options = []
-	(content, nm) = find_file (m.group ('filename'))
-	options.append ("filename=%s" % nm)
-	(path, base) = os.path.split (nm)
-	
-	if path not in include_path:
-		include_path.append (path)
-
-	return [('lilypond', content, options)]
-	
-
-def make_ly2dvi_block (m):
-	'''
-
-	Find <ly2dvifile .. >
-	'''
-
-	return [('ly2dvi', m.group ('filename'), m.group ('options'))]
-
-
-def make_lilypond_block (m):
-	if not g_do_music:
-		return []
-
-	if m.group ('options'):
-		options = get_re ('option-sep').split (m.group ('options'))
-	else:
-		options = []
-	options = filter (lambda s: s != '', options)
-	return [('lilypond', m.group ('code'), options)]
-
-
-def do_columns (m):
-	global format
-	if format != 'latex':
-		return []
-	if m.group ('num') == 'one':
-		return [('numcols', m.group ('code'), 1)]
-	if m.group ('num') == 'two':
-		return [('numcols', m.group ('code'), 2)]
-
-def do_multicols (m):
-	global format
-	if format != 'latex':
-		return []
-	if m.group ('be') == 'begin':
-		return [('multicols', m.group ('code'), int (m.group ('num')))]
-	else:
-		return [('multicols', m.group ('code'), 1)]
-	return []
-
-def chop_chunks (chunks, re_name, func, use_match=0):
-	newchunks = []
-	for c in chunks:
-		if c[0] == 'input':
-			str = c[1]
-			while str:
-				m = get_re (re_name).search (str)
-				if m == None:
-					newchunks.append (('input', str))
-					str = ''
-				else:
-					if use_match:
-						newchunks.append (('input', str[:m.start ('match')]))
-					else:
-						newchunks.append (('input', str[:m.start (0)]))
-				        #newchunks.extend (func (m))
-					# python 1.5 compatible:
-					newchunks = newchunks + func (m)
-					str = str [m.end (0):]
-		else:
-			newchunks.append (c)
-	return newchunks
-
-def determine_format (str):
-	"""
-
-	SIDE EFFECT! This sets FORMAT and PAPERGURU
-
-	"""
-	
-	global format
-	if format == '':
-		html = re.search ('(?i)<[dh]tml', str[:200])
-		latex = re.search (r'''\\document''', str[:200])
-		texi = re.search ('@node|@setfilename', str[:200])
-
-		f = ''
-		g = None
-
-		if html and not latex and not texi:
-			f = 'html'
-		elif latex and not html and not texi:
-			f = 'latex'
-		elif texi and not html and not latex:
-			f = 'texi'
-		else:
-			error ("can't determine format, please specify")
-		format = f
-
-	global paperguru
-	if paperguru == None:
-		if format == 'html':
-			g = HtmlPaper ()
-		elif format == 'latex':
-			g = LatexPaper ()
-		elif format == 'texi':
-			g = TexiPaper ()
-
-		paperguru = g
-
-
-def read_doc_file (filename):
-	'''Read the input file, find verbatim chunks and do \input and \include
-	'''
-	(str, path) = find_file (filename)
-	determine_format (str)
-
-	chunks = [('input', str)]
-
-	# we have to check for verbatim before doing include,
-	# because we don't want to include files that are mentioned
-	# inside a verbatim environment
-	chunks = chop_chunks (chunks, 'verbatim', make_verbatim)
-
-	chunks = chop_chunks (chunks, 'verb', make_verb)
-	chunks = chop_chunks (chunks, 'multiline-comment', do_ignore)
-	#ugh fix input
-	chunks = chop_chunks (chunks, 'include', do_include_file, 1)
-	chunks = chop_chunks (chunks, 'input', do_input_file, 1)
-	return chunks
-
-
-taken_file_names = {}
-
-def unique_file_name (body):
-	return 'lily-' + `abs (hash (body))`
-
-def schedule_lilypond_block (chunk):
-	'''Take the body and options from CHUNK, figure out how the
-	real .ly should look.  The .ly is written, and scheduled in
-	TODO.
-
-	Return: a single chunk.
-
-	The chunk pertaining to the lilypond output
-	has the format (TYPE_STR, MAIN_STR, OPTIONS, TODO, BASE), 
-	where TODO has format [basename, extension, extension, ... ]
-	'''
-
-	(type, body, opts) = chunk
-	assert type == 'lilypond'
-	file_body = compose_full_body (body, opts)
-	## Hmm, we should hash only lilypond source, and skip the
-	## %options are ...
-	## comment line
-	basename = unique_file_name (file_body)
-	for o in opts:
-		m = re.search ('filename="(.*?)"', o)
-		if m:
-			basename = m.group (1)
-			if not taken_file_names.has_key (basename):
-				taken_file_names[basename] = 0
-			else:
-				taken_file_names[basename] = taken_file_names[basename] + 1
-				basename = basename + "-t%i" % taken_file_names[basename]
-	update_file (file_body, os.path.join (g_outdir, basename) + '.ly')
-	needed_filetypes = ['tex']
-
-	if format == 'html' or g_make_html:
-		needed_filetypes.append ('eps')
-		needed_filetypes.append ('png')
-	if 'eps' in opts and not ('eps' in needed_filetypes):
-		needed_filetypes.append ('eps')
-
-	pathbase = os.path.join (g_outdir, basename)
-	def must_rebuild (base, ext1, ext2):
-		
-		f2 = base + ext2
-		f1 = base + ext1
-		fp2 = base + '-page1' + ext2
-
-		isfile2 = os.path.isfile (f2)
-		
-		if not isfile2 and os.path.isfile (fp2):
-			f2  = fp2
-			isfile2 = os.path.isfile (fp2)
-			
-		if (os.path.isfile (f2) and isfile2 and
-		    os.stat (f1)[stat.ST_MTIME] >
-		    os.stat (f2)[stat.ST_MTIME]) or \
-		    not isfile2:
-		
-			return 1
-		
-	todo = []
-	if 'tex' in needed_filetypes and must_rebuild (pathbase, '.ly', '.tex'):
-		todo.append ('tex')
-	if 'eps' in needed_filetypes and must_rebuild (pathbase, '.tex', '.eps'):
-		todo.append ('eps')
-	if 'png' in needed_filetypes and must_rebuild (pathbase, '.eps', '.png'):
-		todo.append ('png')
-
-	return ('lilypond', body, opts, todo, basename)
-
-def format_lilypond_block (chunk):
-	"""
-	
-	Figure out  what should be left MAIN_STR (meant
-	for the main file) from a lilypond chunk: process
-	verbatim, and other options. Return: multiple chunks.
-
-	
-	"""
-
-	
-	return_chunks = []
-
-	(type, body, opts, todo, basename) = chunk
-	assert type == 'lilypond'
-
-
-	newbody = ''
-	filename_chunk = None 
-	if 'printfilename' in opts:
-		for o in opts:
-			m= re.match ("filename=(.*)", o)
-			if m:
-				template = get_output ("output-filename")
-				b =  basename + '.ly'
-				human_base = os.path.basename (m.group (1))
-						  
-				## todo: include path, but strip 
-				## first part of the path.
-				filename_chunk = ('input',  template % (human_base, b,human_base))
-				break
-
-
-	if 'smallverbatim' in opts:
-		newbody += output_verbatim (body, 1)
-	elif 'verbatim' in opts:
-		newbody += output_verbatim (body, 0)
-
-	for o in opts:
-		m = re.search ('intertext="(.*?)"', o)
-		if m:
-			newbody = newbody + "\n"
-			if format == 'texi':
-				newbody = newbody + "@noindent\n"
-			elif format == 'latex':
-				newbody = newbody + "\\noindent\n"
-			newbody = newbody + m.group (1) + "\n"
-
-	if 'noinline' in opts:
-		s = 'output-noinline'
-	elif format == 'latex':
-		if 'quote' in opts:
-			s = 'output-latex-quoted'
-		elif 'eps' in opts:
-			s = 'output-eps'
-		else:
-			s = 'output-latex-noquote'
-	elif format == 'texi':
-		if 'quote' in opts:
-			s = 'output-texi-quoted'
-		else:
-			s = 'output-texi-noquote'
-	else: # format == 'html'
-		s = 'output-html'
-
-	def html_pages (basename):
-		pat = os.path.join (g_outdir, "%s-page*.png"%  basename)
-		
-		files =  glob.glob (pat)
-		
-		
-		template = '''<img align="center" valign="center"
-		border="0" src="%s" alt="[picture of music]">'''
-
-		str = ''
-		if  files == []:
-			files = [basename+'.png' ]
-		else:
-			files = map (os.path.basename, files)
-			
-		for f in  files:
-			str += template % f
-
-		str = '<a href="%s.ly">%s</a>' % (basename, str)
-
-		return str
-
-	
-	newbody = newbody + get_output (s) % {'fn': basename,
-					      'htmlimages': html_pages(basename)
-					      }
-
-	if filename_chunk:
-		return_chunks += [filename_chunk]
-	
-	return_chunks += [('lilypond', newbody, opts, todo, basename)]
-	
-	return return_chunks
-
-def format_lilypond_output_bodies (chunks):
-	newchunks = []
-	for c in chunks:
-
-		if c[0] == 'lilypond':
-			newchunks += format_lilypond_block (c)
-		else:
-			newchunks.append (c)
-
-	return newchunks
-
-
-
-def process_lilypond_blocks (chunks):#ugh rename
-	newchunks = []
-	# Count sections/chapters.
-	for c in chunks:
-		if c[0] == 'lilypond':
-			c = schedule_lilypond_block (c)
-		elif c[0] == 'numcols':
-			paperguru.m_num_cols = c[2]
-		elif c[0] == 'multicols':
-			paperguru.m_multicols = c[2]
-			
-		newchunks.append (c)
-		
-	return newchunks
-
-def process_ly2dvi_blocks (chunks):
-	
-	def process_ly2dvi_block (chunk):
-		"""
-
-Run ly2dvi script on filename specified in CHUNK.
-This is only supported for HTML output.
-
-In HTML output it will leave a download menu with ps/pdf/midi etc.  in
-a separate HTML file, and a title + preview in the main html file,
-linking to the menu.
-
-		"""
-		(tag, name, opts) = chunk
-		assert format == 'html'
-		(content, original_name) = find_file (name)
-
-		original_name = os.path.basename (original_name)
-		
-		base = unique_file_name (content)
-		outname = base + '.ly'
-		changed = update_file (content, outname)
-
-		preview = base + ".preview.png"
-		preview_page = base + '-page1.png'
-		
-		if changed or not (os.path.isfile (preview) or
-				   os.path.isfile (preview_page)):
-			
-			ly.system ('%s --preview --postscript --verbose %s ' % (ly2dvi_binary, base) ) 
-
-			ly.make_ps_images (base + '.ps')
-			ly.system ('gzip -9 - < %s.ps > %s.ps.gz' %  (base, base))
-			
-		def size_str (fn):
-			b = os.stat(fn)[stat.ST_SIZE]
-			if b < 1024:
-				return '%d bytes' % b
-			elif b < (2 << 20):
-				return '%d kb' % (b >> 10)
-			else:
-				return '%d mb' % (b >> 20)
-
-		exts = {
-			'pdf' : "Print (PDF, %s)",
-			'ps.gz' : "Print (gzipped PostScript, %s)",
-			'png' : "View (PNG, %s)",
-			'midi' : "Listen (MIDI, %s)",
-			'ly' : "View source code (%s)", 
-			}
-
-		menu = ''
-		page_files = glob.glob ('%s-page*.png' % base)
-
-		for p in page_files:
-			p = p.strip()
-			if os.path.isfile (p):
-				sz = size_str (p)
-				page = re.sub ('.*page([0-9])+.*', 'View page \\1 (PNG picture, %s)\n', p)
-				page = page % sz
-				menu += '<li><a href="%s">%s</a>' % (p, page) 
-
-		ext_order = ['ly', 'pdf', 'ps.gz', 'midi']
-		for e in ext_order:
-			fn =   base +  '.' + e
-			print 'checking,' , fn
-			if not os.path.isfile (fn):
-				continue
-
-			entry = exts[e] % size_str (fn)
-
-			## TODO: do something like
-			## this for texinfo/latex as well ?
-			
-			menu += '<li><a href="%s">%s</a>\n\n' % (fn, entry)
-
-
-		explanatory_para = """The pictures are 90dpi
-anti-aliased snapshots of the printed output, in PNG format. Both  PDF and PS
-use scalable fonts and should look OK at any resolution."""
-		
-		separate_menu =r'''
-<title>LilyPond example %s</title>
-
-<h1>%s</h1>
-<p><img src="%s">
-<p>%s
-<p>
-<ul>%s</ul>''' % (original_name,original_name, preview, explanatory_para, menu)
-		
-		open (base + '.html','w'). write (separate_menu)
-
-		inline_menu = '<p/><a href="%s.html"><img alt="%s" src="%s"></a><p/>' % (base, original_name, preview)
-
-		return ('ly2dvi', inline_menu)
-
-	newchunks = []
-	for c in chunks:
-		if c[0] == 'ly2dvi':
-			c = process_ly2dvi_block (c)
-		newchunks.append (c)
-
-	return newchunks
-
-def compile_all_files (chunks):
-	global foutn
-	eps = []
-	tex = []
-	png = []
-
-	for c in chunks:
-		if c[0] != 'lilypond':
-			continue
-
-		base  = c[4]
-		exts = c[3]
-		for e in exts:
-			if e == 'eps':
-				eps.append (base)
-			elif e == 'tex':
-				#ugh
-				if base + '.ly' not in tex:
-					tex.append (base + '.ly')
-			elif e == 'png' and g_do_pictures:
-				png.append (base)
-	d = os.getcwd ()
-	if g_outdir:
-		os.chdir (g_outdir)
-	if tex:
-		# fixme: be sys-independent.
-		def incl_opt (x):
-			if g_outdir and x[0] != '/' :
-				x = os.path.join (g_here_dir, x)
-			return ' -I %s' % x
-
-		incs = map (incl_opt, include_path)
-		lilyopts = string.join (incs)
-		if do_deps:
-			lilyopts += ' --dependencies'
-			if g_outdir:
-				lilyopts += ' --dep-prefix=' + g_outdir + '/'
-		lilyopts += ' --header=texidoc'
-		texfiles = string.join (tex)
-		cmd = string.join ((lilypond_binary, lilyopts, g_extra_opts,
-				    texfiles))
-
-		ly.lilypond_version_check (lilypond_binary, '@TOPLEVEL_VERSION@')
-		
-		ly.system (cmd, ignore_error = 0, progress_p = 1)
-
-		#
-		# Ugh, fixing up dependencies for .tex generation
-		#
-		if do_deps:
-			depfiles=map (lambda x: re.sub ('(.*)\.ly', '\\1.dep',
-							x), tex)
-
-			for i in depfiles:
-				f =open (i)
-				text=f.read ()
-				f.close ()
-				text=re.sub ('\n([^:\n]*):',
-					     '\n' + foutn + ':', text)
-				f = open (i, 'w')
-				f.write (text)
-				f.close ()
-
-	def to_eps (file):
-		cmd = r"latex '\nonstopmode \input %s'" % file
-	        # Ugh.  (La)TeX writes progress and error messages on stdout
-		# Redirect to stderr
-		cmd = '(( %s  >&2 ) >&- )' % cmd
-		
-		ly.system (cmd)
-		ly.system ("dvips -Ppdf -u+lilypond.map -E -o %s.eps %s" % (file, file))
-	map (to_eps, eps)
-
-	for p in png:
-		ly.make_ps_images (p + '.eps', resolution=110)
-	os.chdir (d)
-
-
-def update_file (body, name):
-	'''
-	write the body if it has changed. Return whether BODY has changed.
-	'''
-	same = 0
-	try:
-		f = open (name)
-		fs = f.read (-1)
-		same = (fs == body)
-	except:
-		pass
-
-	if not same:
-		f = open (name , 'w')
-		f.write (body)
-		f.close ()
-
-	return not same
-
-
-def write_deps (fn, target, chunks):
-	global read_files
-	sys.stderr.write ('Writing `%s\'\n' % os.path.join (g_outdir, fn))
-	f = open (os.path.join (g_outdir, fn), 'w')
-	f.write ('%s%s: ' % (g_dep_prefix, target))
-	for d in read_files:
-		f.write ('%s ' %  d)
-
-
-	## There used to be code to write .tex dependencies, but
-	## that is silly: lilypond-book has its own dependency scheme
-	## to ensure that all lily-XXX.tex files are there
-		
-
-	f.write ('\n')
-	f.close ()
-	read_files = []
-
-def check_texidoc (chunks):
-	## TODO: put file name in front of texidoc. 
-	##
-	n = []
-        for c in chunks:
-	        if c[0] == 'lilypond':
-			(type, body, opts, todo, basename) = c;
-			pathbase = os.path.join (g_outdir, basename)
-			if os.path.isfile (pathbase + '.texidoc') \
-			   and 'notexidoc' not in opts:
-				n.append( ('input', '\n@include %s.texidoc\n\n' % basename))
-		n.append (c)
-	return n
-
-
-## what's this? Docme --hwn
-##
-def fix_epswidth (chunks):
-	newchunks = []
-	for c in chunks:
-		if c[0] != 'lilypond' or 'eps' not in c[2]:
-			newchunks.append (c)
-			continue
-
-		mag = 1.0
-		for o in c[2]:
-			m  = re.match ('magnification=([0-9.]+)', o)
-			if m:
-				mag = string.atof (m.group (1))
-
-		def replace_eps_dim (match, lmag = mag):
-			filename = match.group (1)
-			dims = bounding_box_dimensions (filename)
-
-			return '%fpt' % (dims[0] *lmag)
-
-		body = re.sub (r'''\\lilypondepswidth{(.*?)}''', replace_eps_dim, c[1])
-		newchunks.append (('lilypond', body, c[2], c[3], c[4]))
-
-	return newchunks
-
-
-##docme: why global?
-foutn=""
-
-def do_file (input_filename):
-	chunks = read_doc_file (input_filename)
-	chunks = chop_chunks (chunks, 'ly2dvi', make_ly2dvi_block, 1)
-	chunks = chop_chunks (chunks, 'lilypond', make_lilypond, 1)
-	chunks = chop_chunks (chunks, 'lilypond-file', make_lilypond_file, 1)
-	chunks = chop_chunks (chunks, 'lilypond-block', make_lilypond_block, 1)
-	chunks = chop_chunks (chunks, 'singleline-comment', do_ignore, 1)
-	chunks = chop_chunks (chunks, 'preamble-end', do_preamble_end)
-	chunks = chop_chunks (chunks, 'numcols', do_columns)
-	chunks = chop_chunks (chunks, 'multicols', do_multicols)
-	
-	scan_preamble (chunks)
-	chunks = process_lilypond_blocks (chunks)
-	chunks = process_ly2dvi_blocks (chunks)
-	
-	# Do It.
-	global g_run_lilypond
-	if g_run_lilypond:
-		compile_all_files (chunks)
-		chunks = fix_epswidth (chunks)
-
-
-	chunks = format_lilypond_output_bodies (chunks)
-	global format
-	if format == 'texi':
-		chunks = check_texidoc (chunks)
-
-
-	x = 0
-	chunks = completize_preamble (chunks)
-
-	global foutn
-
-	if outname:
-		my_outname = outname
-	elif input_filename == '-' or input_filename == "/dev/stdin":
-		my_outname = '-'
-	else:
-		my_outname = os.path.basename (os.path.splitext (input_filename)[0]) + '.' + format
-	my_depname = my_outname + '.dep'
-
-	if my_outname == '-' or my_outname == '/dev/stdout':
-		fout = sys.stdout
-		foutn = "<stdout>"
-		global do_deps
-		do_deps = 0
-	else:
-		foutn = os.path.join (g_outdir, my_outname)
-		sys.stderr.write ("Writing `%s'\n" % foutn)
-		fout = open (foutn, 'w')
-	for c in chunks:
-		fout.write (c[1])
-	fout.close ()
-	# should chmod -w
-
-	if do_deps:
-		write_deps (my_depname, foutn, chunks)
-
-outname = ''
-try:
-	(sh, long) = ly.getopt_args (option_definitions)
-	(options, files) = getopt.getopt (sys.argv[1:], sh, long)
-	
-except getopt.error, msg:
-	sys.stderr.write ('\n')
-	ly.error (_ ("getopt says: `%s\'" % s))
-	sys.stderr.write ('\n')
-	ly.help ()
-	ly.exit (2)
-
-do_deps = 0
-for opt in options:
-	o = opt[0]
-	a = opt[1]
-
-	if o == '--include' or o == '-I':
-		include_path.append (a)
-	elif o == '--version' or o == '-v':
-		ly.identify (sys.stdout)
-		sys.exit (0)
-	elif o == '--verbose' or o == '-V':
-		verbose_p = 1
-	elif o == '--format' or o == '-f':
-		format = a
-		if a == 'texi-html':
-			format = 'texi'
-			g_make_html = 1
-	elif o == '--outname' or o == '-o':
-		if len (files) > 1:
-			#HACK
-			sys.stderr.write ("lilypond-book is confused by --outname on multiple files")
-			sys.exit (1)
-		outname = a
-	elif o == '--help' or o == '-h':
-		ly.help ()
-		sys.exit (0)
-	elif o == '--no-lily' or o == '-n':
-		g_run_lilypond = 0
-	elif o == '--preview-resolution':
-		preview_resolution = string.atoi (a)
-	elif o == '--dependencies' or o == '-M':
-		do_deps = 1
-	elif o == '--default-music-fontsize':
-		default_music_fontsize = string.atoi (a)
-	elif o == '--default-lilypond-fontsize':
-		print "--default-lilypond-fontsize is deprecated, use --default-music-fontsize"
-		default_music_fontsize = string.atoi (a)
-	elif o == '--extra-options':
-		g_extra_opts = a
-	elif o == '--force-music-fontsize':
-		g_force_music_fontsize = string.atoi (a)
-	elif o == '--force-lilypond-fontsize':
-		print "--force-lilypond-fontsize is deprecated, use --default-lilypond-fontsize"
-		g_force_music_fontsize = string.atoi (a)
-	elif o == '--dep-prefix':
-		g_dep_prefix = a
-	elif o == '--no-pictures':
-		g_do_pictures = 0
-	elif o == '--no-music':
-		g_do_music = 0
-	elif o == '--outdir':
-		g_outdir = a
-	elif o == '--warranty' or o == '-w':
-		#status = os.system ('lilypond -w')
-		if 1 or status:
-			ly.warranty ()
-		sys.exit (0)
-
-ly.identify (sys.stderr)
-
-if g_outdir:
-	if os.path.isfile (g_outdir):
-		error ("outdir is a file: %s" % g_outdir)
-	if not os.path.exists (g_outdir):
-		os.mkdir (g_outdir)
-		
-if not files:
-	ly.help ()
-	ly.error (_ ("no files specified on command line"))
-	ly.exit (2)
-
-ly.setup_environment ()
-
-
-for input_filename in files:
-	do_file (input_filename)
-
-
-#
-# Petr, ik zou willen dat ik iets zinvoller deed,
-# maar wat ik kan ik doen, het verandert toch niets?
-#   --hwn 20/aug/99
diff --git a/scripts/pmx2ly.py b/scripts/pmx2ly.py
deleted file mode 100644
index b84ee425b4..0000000000
--- a/scripts/pmx2ly.py
+++ /dev/null
@@ -1,863 +0,0 @@
-#!@PYTHON@
-
-# PMX is a Musixtex preprocessor written by Don Simons, see
-# http://www.gmd.de/Misc/Music/musixtex/software/pmx/
-
-# TODO:
-#  * block openings aren't parsed.
-
-import os
-import string
-import sys
-import re
-import getopt
-
-program_name = 'pmx2ly'
-version = '@TOPLEVEL_VERSION@'
-if version == '@' + 'TOPLEVEL_VERSION' + '@':
-	version = '(unknown version)'	   # uGUHGUHGHGUGH
-
-
-def encodeint (i):
-	return chr ( i  + ord ('A'))
-
-	
-actab = {-2: 'eses', -1: 'es', 0 : '', 1: 'is', 2:'isis'}
-
-def pitch_to_lily_string (tup):
-	(o,n,a) = tup
-
-	nm = chr((n + 2) % 7 + ord ('a'))
-	nm = nm + actab[a]
-	if o > 0:
-		nm = nm + "'" * o
-	elif o < 0:
-		nm = nm + "," * -o
-	return nm
-
-def gcd (a,b):
-	if b == 0:
-		return a
-	c = a
-	while c: 
-		c = a % b
-		a = b
-		b = c
-	return a
-
-def rat_simplify (r):
-	(n,d) = r
-	if d < 0:
-		d = -d
-		n = -n
-	if n == 0:
-		return (0,1)
-	else:
-		g = gcd (n, d)
-		return (n/g, d/g)
-	
-def rat_multiply (a,b):
-	(x,y) = a
-	(p,q) = b
-
-	return rat_simplify ((x*p, y*q))
-
-def rat_divide (a,b):
-	(p,q) = b
-	return rat_multiply (a, (q,p))
-
-tuplet_table = {
-	2: 3,
-	3: 2,
-	5: 4
-}
-
-
-def rat_add (a,b):
-	(x,y) = a
-	(p,q) = b
-
-	return rat_simplify ((x*q + p*y, y*q))
-
-def rat_neg (a):
-	(p,q) = a
-	return (-p,q)
-
-
-def rat_larger (a,b):
-	return rat_subtract (a, b )[0] > 0
-
-def rat_subtract (a,b ):
-	return rat_add (a, rat_neg (b))
-
-def rat_to_duration (frac):
-	log = 1
-	d = (1,1)
-	while rat_larger (d, frac):
-		d = rat_multiply (d, (1,2))
-		log = log << 1
-
-	frac = rat_subtract (frac, d)
-	dots = 0
-	if frac == rat_multiply (d, (1,2)):
-		dots = 1
-	elif frac == rat_multiply (d, (3,4)):
-		dots = 2
-	return (log, dots)	
-
-
-class Barcheck :
-	def __init__ (self):
-		pass
-	def dump (self):
-		return '|\n'
-
-
-class Meter :
-	def __init__ (self,nums):
-		self.nums = nums
-	def dump (self):
-		return ' %{ FIXME: meter change %} '
-		
-class Beam:
-	def __init__ (self, ch):
-		self.char = ch
-	def dump (self):
-		return self.char
-
-class Slur:
-	def __init__ (self,id):
-		self.id = id
-		self.start_chord = None
-		self.end_chord = None
-	def calculate (self):
-		s =self.start_chord
-		e= self.end_chord
-
-		if e and s:
-			s.note_suffix = s.note_suffix + '('
-			e.note_prefix = e.note_suffix + ')' 
-		else:
-			sys.stderr.write ("\nOrphaned slur")
-
-
-class Voice:
-	def __init__ (self):
-		self.entries = []
-		self.chords = []
-		self.staff = None
-		self.current_slurs = []
-		self.slurs = []
-	def toggle_slur (self, id):
-		
-		for s in self.current_slurs:
-			if s.id == id:
-				self.current_slurs.remove (s)
-				s.end_chord = self.chords[-1]
-				return
-		s = Slur (id)
-		s.start_chord = self.chords[-1]
-		self.current_slurs.append (s)
-		self.slurs.append (s)
-		
-	def last_chord (self):
-		return self.chords[-1]
-	
-	def add_chord (self, ch):
-		self.chords.append (ch)
-		self.entries.append (ch)
-	def add_nonchord (self, nch):
-		self.entries.append (nch)
-
-	def idstring (self):
-		return 'staff%svoice%s ' % (encodeint (self.staff.number) , encodeint(self.number))
-	def dump (self):
-		str = ''
-		ln = ''
-		for e in self.entries:
-			next = ' ' + e.dump ()
-			if next[-1] == '\n':
-				str  = str + ln + next
-				ln = ''
-				continue
-			
-			if len (ln) +len (next) > 72:
-				str = str+ ln + '\n'
-				ln = ''
-			ln = ln + next
-			
-			
-		str = str  + ln
-		id = self.idstring ()
-			
-		str = '%s =  \\notes { \n %s }\n '% (id, str)
-		return str
-	def calculate_graces (self):
-		lastgr = 0
-		lastc = None
-		for c in self.chords:
-			if c.grace and  not lastgr:
-				c.chord_prefix = c.chord_prefix + '\\grace { '
-			elif not c.grace and lastgr:
-				lastc.chord_suffix = lastc.chord_suffix + ' } '
-			lastgr = c.grace
-			lastc = c
-	def calculate (self):
-		self.calculate_graces ()
-		for s in self.slurs:
-			s.calculate ()
-
-class Clef:
-	def __init__ (self, cl):
-		self.type = cl
-	def dump(self):
-		return '\\clef %s' % self.type
-
-class Key:
-	def __init__ (self, key):
-		self.type = key
-	def dump(self):
-		return '\\key %s' % self.type
-
-clef_table = {
-	'b':'bass'  ,
-	'r':'baritone',
-	'n':'tenor',
-	'a':'alto',
-	'm':'mezzosoprano',
-	's':'soprano',
-	't':'treble',
-	'f':'frenchviolin',
-	}
-key_table = {
-	'+0':'c \major',
-	'+1':'g \major',
-	'+2':'d \major',
-	'+3':'a \major',
-	'+4':'e \major',
-	'+5':'b \major',
-	'+6':'fis \major',
-	'-1':'f \major',
-	'-2':'bes \major',
-	'-3':'ees \major',
-	'-4':'aes \major',
-	'-5':'des \major',
-	'-6':'ges \major'
-	}
-class Staff:
-	def __init__ (self): 
-		self.voices = (Voice (), Voice())
-		self.clef = None
-		self.instrument = 0
-		self.voice_idx = 0
-		self.number = None
-		self.key = 0
-		
-		i = 0
-		for v  in self.voices:
-			v.staff = self
-			v.number = i
-			i = i+1
-	def set_clef (self, letter):
-		if clef_table.has_key (letter):
-			clstr = clef_table[letter]
-			self.voices[0].add_nonchord (Clef (clstr))
-		else:
-			sys.stderr.write ("Clef type `%c' unknown\n" % letter)
-	
-	def current_voice (self):
-		return self.voices[self.voice_idx]
-	def next_voice (self):
-		self.voice_idx = (self.voice_idx + 1)%len (self.voices)
-
-	def calculate (self):
-		for v in self.voices:
-			v.calculate ()
-	def idstring (self):
-		return 'staff%s' % encodeint (self.number)
-	def dump (self):
-		str = ''
-
-		refs = ''
-		for v in self.voices:
-			str = str + v.dump()
-			refs = refs + '\\' + v.idstring ()+  ' '
-		
-		str = str + '\n\n%s = \\context Staff = %s \n  << \n %s >>\n\n\n'% (self.idstring (), self.idstring (), refs)
-		return str
-
-class Tuplet:
-	def __init__ (self, number, base, dots):
-		self.chords = []
-		self.number = number
-		self.replaces = tuplet_table[number]
-		self.base = base
-		self.dots = dots
-		
-		length = (1,base)
-		if dots == 1:
-			length = rat_multiply (length, (3,2))
-		elif dots == 2:
-			length = rat_multiply (length, (7,4))
-
-		length = rat_multiply (length, (1,self.replaces))
-
-		(nb,nd) =rat_to_duration (length)
-
-		self.note_base = nb
-		self.note_dots = nd
-
-	def add_chord (self, ch):
-		ch.dots = self.note_dots
-		ch.basic_duration = self.note_base
-		self.chords.append (ch)
-
-		if len (self.chords) == 1:
-			ch.chord_prefix = '\\times %d/%d { ' % (self.replaces, self.number)
-		elif len (self.chords) == self.number:
-			ch.chord_suffix = ' }' 
-		
-class Chord:
-	def __init__ (self):
-		self.pitches = []
-		self.dots = 0
-		self.basic_duration = 0
-		self.scripts = []
-		self.grace = 0
-		self.chord_prefix = ''
-		self.chord_suffix = ''
-		self.note_prefix = ''
-		self.note_suffix = ''
-		
-	def dump (self):
-		str = ''
-
-		sd = ''
-		if self.basic_duration == 0.5:
-			sd = '\\breve'
-		else:
-			sd = '%d' % self.basic_duration
-		sd = sd + '.' * self.dots 
-		for p in self.pitches:
-			if str:
-				str = str + ' ' 
-			str = str + pitch_to_lily_string (p) 
-
-		if len (self.pitches) > 1:
-			str = '<%s>' % str
-		elif len (self.pitches) == 0:
-			str = 'r'
-
-		str = str + sd
-		for s in self.scripts:
-			str = str + '-' + s
-
-		str = self.note_prefix + str + self.note_suffix
-		str = self.chord_prefix + str + self.chord_suffix
-		
-		return str
-		
-SPACE=' \t\n'
-DIGITS ='0123456789'
-basicdur_table = {
-	9: 0.5,
-	0: 0 ,
-	2: 2 ,
-	4: 4 ,
-	8: 8 ,
-	1: 16,
-	3: 32,
-	6: 64
-	}
-
-
-ornament_table = {
-	't': '\\prall',
-	'm': '\\mordent',
-	'x': '"x"',
-	'+': '+',
-	'u': '"pizz"',
-	'p': '|',
-	'(': '"paren"',
-	')': '"paren"',
-	'g': '"segno"',
-	'.': '.',
-	'fd': '\\fermata',
-	'f': '\\fermata',
-	'_': '-',
-	'T': '\\trill',
-	'>': '>',
-	'^': '^',
-	}
-
-class Parser:
-	def __init__ (self, filename):
-		self.staffs = []
-		self.forced_duration = None
-		self.last_name = 0
-		self.last_oct = 0		
-		self.tuplets_expected = 0
-		self.tuplets = []
-		self.last_basic_duration = 4
-
-		self.parse (filename)
-		
-	def set_staffs (self, number):
-		self.staffs = map (lambda x: Staff (), range(0, number))
-		
-		self.staff_idx = 0
-
-		i =0
-		for s in self.staffs:
-			s.number = i
-			i = i+1
-	def current_staff (self):
-		return self.staffs[self.staff_idx]
-
-	def current_voice (self):
-		return self.current_staff ().current_voice ()
-	
-	def next_staff (self):
-		self.staff_idx = (self.staff_idx + 1)% len (self.staffs)
-		
-	def parse_note (self, str):
-		name = None
-		ch = None
-
-		grace = 0
-		if str[0] == 'G':
-			grace = 1
-			str = str[1:]
-			
-		if str[0] == 'z':
-			ch = self.current_voice().last_chord()
-			str = str[1:]
-		else:
-			ch = Chord ()
-			self.current_voice().add_chord (ch)
-
-		# what about 's'?
-		if str[0] <> 'r':
-			name = (ord (str[0]) - ord('a') + 5) % 7
-
-		str = str[1:]
-
-		ch.grace = ch.grace or grace 
-		
-		forced_duration  = 0
-		alteration = 0
-		dots = 0
-		oct = None
-		durdigit = None
-		multibar = 0
-		tupnumber = 0
-		extra_oct = 0
-		while str[0] in 'dsfmnul0123456789.,+-':
-			c = str[0]
-			str = str[1:]
-			if c == 'f':
-				alteration = alteration -1
-			elif c == 'n':
-				alteration = 0
-			elif c == 'm':
-				multibar = 1
-			elif c == 's':
-				alteration = alteration +1
-			elif c == 'd':
-				dots = dots + 1
-			elif c in DIGITS and durdigit == None and \
-			     self.tuplets_expected == 0:
-				durdigit = string.atoi (c)
-			elif c in DIGITS:
-				oct = string.atoi (c) - 3
-			elif c == '+':
-				extra_oct = extra_oct + 1
-			elif c == '-':
-				extra_oct = extra_oct - 1
-			elif c == '.':
-				dots = dots+ 1
-				forced_duration = 2
-			elif c == ',':
-				forced_duration = 2
-
-		if str[0] == 'x':
-			str = str[1:]
-			tupnumber = string.atoi (str[0])
-			str = str[1:]
-			str=re.sub (r'^n?f?[+-0-9.]+', '' , str)
-
-		
-		if durdigit:
-			try:
-				basic_duration =  basicdur_table[durdigit]
-				self.last_basic_duration = basic_duration
-			except KeyError:
-				sys.stderr.write ("""
-Huh? expected duration, found %d Left was `%s'""" % (durdigit, str[:20]))
-
-				basic_duration = 4
-		else:
-			basic_duration = self.last_basic_duration
-
-
-		
-		if name <> None and oct == None:
-			e = 0
-			if self.last_name < name and name -self.last_name > 3:
-				e = -1
-			elif self.last_name > name and self.last_name -name > 3:
-				e = 1
-
-			oct = self.last_oct  +e + extra_oct
-
-		if name <> None:
-			self.last_oct = oct
-			self.last_name = name
-				
-		if name <> None:
-			ch.pitches.append ((oct, name,  alteration))
-
-		# do before adding to tuplet.
-		ch.basic_duration = basic_duration
-		ch.dots = dots
-
-		if forced_duration:
-			self.forced_duration = ch.basic_duration / forced_duration
-
-		if tupnumber:
-			tup =Tuplet (tupnumber, basic_duration, dots)
-			self.tuplets_expected = tupnumber
-			self.tuplets.append (tup)
-
-		if self.tuplets_expected > 0:
-			self.tuplets[-1].add_chord (ch)
-			self.tuplets_expected = self.tuplets_expected - 1
-			
-		return str
-	def parse_basso_continuo (self, str):
-		while str[0] in DIGITS +'#n-':
-			scr = str[0]
-
-			if scr == '#':
-				scr = '\\\\textsharp'
-			
-			if len(scr)>1 or scr not in DIGITS:
-				scr = '"%s"' % scr
-				
-			self.current_voice().last_chord ().scripts.append (scr)
-			str=str[1:]
-		return str
-	def parse_beams (self,str):
-		c = str[0]
-	#	self.current_voice().add_nonchord (Beam(c))
-		if str[0] == '[':
-			str = str[1:]
-			while str[0] in '+-0123456789':
-				str=str[1:]
-		else:
-			str = str[1:]
-					
-		return str
-
-	def parse_key (self, str):
-		key = ""
-		#The key is changed by a string of the form K[+-]<num>[+-]<num>
-		#where the first number is the transposition and the second number is the
-		#new key signature.  For now, we won't bother with the transposition.
-		if str[2] != '0':
-			sys.stderr.write("Transposition not implemented yet: ")
-			while str[0] in '+-0123456789':
-				str = str[1:]
-		else:
-			str=str[3:]
-			key = ''
-			while str[0] in '+-0123456789':
-				key=key + str[0]
-				str=str[1:]
-			keystr = key_table[key]
-			self.current_voice().add_nonchord (Key(keystr))
-		return(str)
-
-
-	def parse_header  (self, ls):
-		def atonum(a):
-			if re.search('\\.', a):
-				return string.atof (a)
-			else:
-				return string.atoi (a)
-
-		number_count = 12
-		numbers = []
-
-		while len (numbers) < number_count:
-			opening = ls[0]
-			ls = ls[1:]
-
-			opening = re.sub ('[ \t\n]+', ' ', opening)
-			opening = re.sub ('^ ', '', opening)
-			opening = re.sub (' $', '', opening)						
-			if opening == '':
-				continue
-			opening = string.split (opening, ' ')
-
-			numbers = numbers + map (atonum, opening)
-
-		(no_staffs, no_instruments, timesig_num, timesig_den, ptimesig_num,
-		 esig_den, pickup_beats,keysig_number) = tuple (numbers[0:8])
-		(no_pages,no_systems, musicsize, fracindent) = tuple (numbers[8:])
-
-		# ignore this.
-		# opening = map (string.atoi, re.split ('[\t ]+', opening))
-		
-		instruments = []
-		while len (instruments) < no_instruments:
-			instruments.append (ls[0])
-			ls = ls[1:]
-
-		l = ls[0]
-		ls = ls[1:]
-
-		self.set_staffs (no_staffs)
-
-		for s in self.staffs:
-			s.set_clef(l[0])
-			l = l[1:]
-
-		# dump path 
-		ls = ls[1:] 
-
-		# dump more ?
-		return ls
-
-	def parse_ornament (self, left):
-		left = left[1:]
-		e = self.current_voice ().last_chord ()
-
-		id = left[0]
-		left = left[1:]
-		if left[0] == 'd':
-			id = id +'d'
-			left = left [1:]
-
-		orn = '"orn"'
-		try:
-			orn = ornament_table[id]
-		except KeyError:
-			sys.stderr.write ("unknown ornament `%s'\n" % id)
-			
-		e.scripts.append (orn)
-		return left
-	def parse_barcheck (self, left):
-		self.current_voice ().add_nonchord (Barcheck ())
-		
-		return left [1:]
-
-	def parse_slur (self, left):
-		left = left[1:]
-
-		id = None
-
-		if re.match ('[A-Z0-9]', left[0]):
-			id = left[0]
-			left= left[1:]
-		while left[0] in 'uld0123456789+-.':
-			left= left[1:]
-			
-		self.current_voice ().toggle_slur (id)
-		return left
-
-	def parse_mumbo_jumbo (self,left):
-		left = left[1:]
-		while left and  left[0] <> '\\':
-			left = left[1:]
-
-		left  = left[1:]
-		return left
-	def parsex (self,left):
-		left = left[1:]
-		while left[0] in DIGITS:
-			left = left[1:]
-
-		return left
-	
-	def parse_body (self, left):
-		preamble = 1
-		
-		while left:
-			c = left[0]
-			if c == '%':
-				f = string.find (left, '\n')
-				if f < 0:
-					left = ''
-				left = left[f+1:]
-			elif c == 'm':
-				left = left[1:]
-				m = re.match ('([o0-9]/[o0-9]/[o0-9]/[o0-9])', left)
-				if m:
-					nums = m.group (1)
-					left = left[len (nums):]
-					nums = map (string.atoi , nums)
-					self.current_voice ().add_nonchord (Meter (nums))
-					continue
-
-				m= re.match ('([0-9o]+)', left)
-				if m:
-					nums = m.group (1)
-					self.current_voice ().add_nonchord (Meter (map (string.atoi (nums))))
-					continue
-				
-			elif left[0] in 'lh':
-				f = string.find (left, '\n')
-				if f <0 :
-					left = ''
-				else:
-					left = left[f+1:]
-					
-				f = string.find (left, '\n')
-				title = left[:f]
-				left=left[f+1:]
-			elif c in 'Gzabcdefgr':
-				left = self.parse_note (left)
-			elif c in DIGITS + 'n#-':
-				left = self.parse_basso_continuo (left)
-			elif c in SPACE:
-				left = left[1:]
-			elif c == 's':
-				left = self.parse_slur (left)
-			elif c == '|':
-				left = self.parse_barcheck (left)
-			elif c == 'o':
-				left = self.parse_ornament (left)
-			elif c == 'x':
-				left = self.parsex (left)
-			elif c == 'C':
-				self.current_staff().set_clef(str(left[1]))
-				left = left[2:]
-			elif c == 'K':
-				left = self.parse_key (left)
-			elif c in "[]":
-				left = self.parse_beams (left)
-			elif left[:2] == "//":
-				self.current_staff().next_voice ()
-				left = left[2:]
-			elif c == '/':
-				self.next_staff ()
-				left = left[1:]
-			elif c == '\\':
-				left = self.parse_mumbo_jumbo(left)
-			elif c == '\r':
-				left = left[1:]
-			else:
-				sys.stderr.write ("""
-Huh? Unknown directive `%s', before `%s'""" % (c, left[:20] ))
-				left = left[1:]
-
-	def dump (self):
-		str = ''
-
-		refs = ''
-		for s in self.staffs:
-			str = str +  s.dump ()
-			refs = '\\' + s.idstring() + refs
-
-		str = str + "\n\n\\score { <<\n %s\n >> }" % refs 
-		return str
-			
-
-	def parse (self,fn):
-		ls = open (fn).readlines ()
-		def subst(s):
-			return re.sub ('%.*$', '', s)
-		
-		ls = map (subst, ls)
-		ls = filter (lambda x: x <> '\n', ls)
-		ls = self.parse_header (ls)
-		left = string.join (ls, ' ')
-
-#		print left
-		self.parse_body (left)
-		for c in self.staffs:
-			c.calculate ()
-
-		
-
-
-
-def help ():
-	sys.stdout.write (
-"""Usage: pmx2ly [OPTIONS]... PMX-FILE
-
-Convert PMX to LilyPond.
-
-Options:
-  -h, --help          print this help
-  -o, --output=FILE   set output filename to FILE
-  -v, --version       shown version information
-
-PMX is a Musixtex preprocessor written by Don Simons, see
-http://www.gmd.de/Misc/Music/musixtex/software/pmx/.
-
-Report bugs to bug-lilypond@gnu.org.
-
-Written by Han-Wen Nienhuys <hanwen@cs.uu.nl>.
-
-""")
-
-
-def print_version ():
-	sys.stdout.write ("""pmx2ly (GNU LilyPond) %s
-
-This 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 `midi2ly --warranty' for more information.
-
-Copyright (c) 2000--2004 by Han-Wen Nienhuys <hanwen@cs.uu.nl>
-""" % version)
-def identify():
-	sys.stderr.write ("%s from LilyPond %s\n" % (program_name, version))
-
-
-
-(options, files) = getopt.getopt (sys.argv[1:], 'vo:h', ['help','version', 'output='])
-out_filename = None
-for opt in options:
-	o = opt[0]
-	a = opt[1]
-	if o== '--help' or o == '-h':
-		help ()
-		sys.exit (0)
-	if o == '--version' or o == '-v':
-		print_version ()
-		sys.exit(0)
-		
-	if o == '--output' or o == '-o':
-		out_filename = a
-	else:
-		print o
-		raise getopt.error
-
-identify()
-
-for f in files:
-	if f == '-':
-		f = ''
-
-	sys.stderr.write ('Processing `%s\'\n' % f)
-	e = Parser(f)
-	if not out_filename:
-		out_filename = os.path.basename (re.sub ('(?i).pmx$', '.ly', f))
-		
-	if out_filename == f:
-		out_filename = os.path.basename (f + '.ly')
-		
-	sys.stderr.write ('Writing `%s\'' % out_filename)
-	ly = e.dump()
-
-	
-	
-	fo = open (out_filename, 'w')
-	fo.write ('%% lily was here -- automatically converted by pmx2ly from %s\n' % f)
-	fo.write(ly)
-	fo.close ()
-	
-
diff --git a/server.el.patch b/server.el.patch
deleted file mode 100644
index fb3c59f189..0000000000
--- a/server.el.patch
+++ /dev/null
@@ -1,165 +0,0 @@
-From: Jan Nieuwenhuizen <janneke@gnu.org>
-Subject: Bugfix and feature for server.el
-To: emacs-devel@gnu.org
-cc: Han-Wen <hanwen@cs.uu.nl>
-Date: Sat, 10 Aug 2002 17:46:22 +0200
-Organization: Jan at Peder
-
-
-Find the following fix attached.  We had a problem with our
-application that uses `emacslient --no-wait' to edit input files.
-
-Emacs-21.2 (unlike previous versions), when invoked through
-`emacsclient --no-wait', wants to revert buffers whenever they have
-been edited, and does allow any editing, which is annoying.  When
-invoking with --no-wait, we are typically `moving around' and editing
-the same file all the time; and do not want to revert.
-
-When it does revert the buffer, it does not use the column argument of
-emacsclient; this is now fixed.
-
-Greetings,
-Han-Wen and Jan.
-
-
-Btw: this message was sent to bug-gnu-emacs about three weeks ago, but
-     that list seems to be slightly foobarred?  We both have current
-     disclaimers with GNU.
-
-
-ChangeLog:
-2002-07-21  Jan Nieuwenhuizen  <janneke@gnu.org>
-
-	* server.el (server-process-filter): Cleanup stray if.  Add
-	'no-revert to file list entry when emacsclient was invoked with
-	'--no-wait'.
-	(server-visit-files): New function goto-line-column.  Accept
-	'no-revert option.  Bugfix: also goto column when reverting
-	buffer.
-
---- server.el.~1.78.~	2001-12-18 17:42:38.000000000 +0100
-+++ server.el	2002-08-10 17:32:10.000000000 +0200
-@@ -251,40 +251,43 @@ Prefix arg means just kill any existing 
- 		       (substring request (match-beginning 0) (1- (match-end 0))))
- 		      (pos 0))
- 		  (setq request (substring request (match-end 0)))
--		  (if (string-match "\\`-nowait" arg)
--		      (setq nowait t)
--		    (cond
--    			;; ARG is a line number option.
--		     ((string-match "\\`\\+[0-9]+\\'" arg)
-+		  (cond
-+		   ((string-match "\\`-nowait" arg)
-+		    (setq nowait t))
-+		   ;; ARG is a line number option.
-+		   ((string-match "\\`\\+[0-9]+\\'" arg)
- 		      (setq lineno (string-to-int (substring arg 1))))
--		     ;; ARG is line number:column option. 
--		     ((string-match "\\`+\\([0-9]+\\):\\([0-9]+\\)\\'" arg)
--		      (setq lineno (string-to-int (match-string 1 arg))
--			    columnno (string-to-int (match-string 2 arg))))
--		     (t
--		      ;; ARG is a file name.
--		      ;; Collapse multiple slashes to single slashes.
--		      (setq arg (command-line-normalize-file-name arg))
--		      ;; Undo the quoting that emacsclient does
--		      ;; for certain special characters.
--		      (while (string-match "&." arg pos)
--			(setq pos (1+ (match-beginning 0)))
--			(let ((nextchar (aref arg pos)))
--			  (cond ((= nextchar ?&)
--				 (setq arg (replace-match "&" t t arg)))
--				((= nextchar ?-)
--				 (setq arg (replace-match "-" t t arg)))
--				(t
--				 (setq arg (replace-match " " t t arg))))))
--		      ;; Now decode the file name if necessary.
--		      (if coding-system
--			  (setq arg (decode-coding-string arg coding-system)))
--		      (setq files
--			    (cons (list arg lineno columnno)
--				  files))
--		      (setq lineno 1)
--		      (setq columnno 0))))))
--	      (run-hooks 'pre-command-hook)
-+		   ;; ARG is line number:column option. 
-+		   ((string-match "\\`+\\([0-9]+\\):\\([0-9]+\\)\\'" arg)
-+		    (setq lineno (string-to-int (match-string 1 arg))
-+			  columnno (string-to-int (match-string 2 arg))))
-+		   (t
-+		    ;; ARG is a file name.
-+		    ;; Collapse multiple slashes to single slashes.
-+		    (setq arg (command-line-normalize-file-name arg))
-+		    ;; Undo the quoting that emacsclient does
-+		    ;; for certain special characters.
-+		    (while (string-match "&." arg pos)
-+		      (setq pos (1+ (match-beginning 0)))
-+		      (let ((nextchar (aref arg pos)))
-+			(cond ((= nextchar ?&)
-+			       (setq arg (replace-match "&" t t arg)))
-+			      ((= nextchar ?-)
-+			       (setq arg (replace-match "-" t t arg)))
-+			      (t
-+			       (setq arg (replace-match " " t t arg))))))
-+		    ;; Now decode the file name if necessary.
-+		    (if coding-system
-+			(setq arg (decode-coding-string arg coding-system)))
-+		    (setq files
-+			  ;; When invoking emacsclient with --no-wait, we are
-+			  ;; typically `moving around' and editing the same file;
-+			  ;; and do not want to revert.  Should make --no-revert
-+			  ;; option for emacsclient?
-+			  (cons (list arg lineno columnno (if nowait 'no-revert nil))
-+				files))
-+		    (setq lineno 1)
-+		    (setq columnno 0)))))
- 	      (server-visit-files files client nowait)
- 	      (run-hooks 'post-command-hook)
- 	      ;; CLIENT is now a list (CLIENTNUM BUFFERS...)
-@@ -309,6 +312,13 @@ Prefix arg means just kill any existing 
- FILES is an alist whose elements are (FILENAME LINENUMBER COLUMNNUMBER).
- NOWAIT non-nil means this client is not waiting for the results,
- so don't mark these buffers specially, just visit them normally."
-+
-+  (defun goto-line-column (file-line-col)
-+    (goto-line (nth 1 file-line-col))
-+    (let ((column-number (nth 2 file-line-col)))
-+      (if (> column-number 0)
-+	  (move-to-column (1- column-number)))))
-+  
-   ;; Bind last-nonmenu-event to force use of keyboard, not mouse, for queries.
-   (let (client-record (last-nonmenu-event t) (obuf (current-buffer)))
-     ;; Restore the current buffer afterward, but not using save-excursion,
-@@ -322,7 +332,8 @@ so don't mark these buffers specially, j
- 	  (let* ((filen (car (car files)))
- 		 (obuf (get-file-buffer filen)))
- 	    (push filen file-name-history)
--	    (if (and obuf (set-buffer obuf))
-+	    (if (and obuf (set-buffer obuf)
-+		     (not (memq 'no-revert (car files))))
- 		(progn
- 		  (cond ((file-exists-p filen)
- 			 (if (or (not (verify-visited-file-modtime obuf))
-@@ -335,12 +346,9 @@ so don't mark these buffers specially, j
- 				      ", write buffer to file? "))
- 			     (write-file filen))))
- 		  (setq server-existing-buffer t)
--		  (goto-line (nth 1 (car files))))
-+		  (goto-line-column (car files)))
- 	      (set-buffer (find-file-noselect filen))
--	      (goto-line (nth 1 (car files)))
--	      (let ((column-number (nth 2 (car files))))
--		(when (> column-number 0)
--		  (move-to-column (1- column-number))))
-+	      (goto-line-column (car files))
- 	      (run-hooks 'server-visit-hook)))
- 	  (if (not nowait)
- 	      (setq server-buffer-clients
-
--- 
-Jan Nieuwenhuizen <janneke@gnu.org> | GNU LilyPond - The music typesetter
-http://www.xs4all.nl/~jantien       | http://www.lilypond.org
-
-
-
-
diff --git a/stepmake/.cvsignore b/stepmake/.cvsignore
deleted file mode 100644
index 08b7059530..0000000000
--- a/stepmake/.cvsignore
+++ /dev/null
@@ -1,8 +0,0 @@
-GNUmakefile
-autom4te.cache
-configure
-config.cache
-config.h
-config.log
-config.make
-config.status
diff --git a/stepmake/CHANGES b/stepmake/CHANGES
deleted file mode 100644
index 980c358324..0000000000
--- a/stepmake/CHANGES
+++ /dev/null
@@ -1,388 +0,0 @@
-pl 82
-	- allow srcdir builds
-
-pl 81
-	- Yodl-free (tm)
-	- bf: package-zet: too many symlinks
-	- bf: yodl-targets.make
-
-pl 80
-	- use mgsmerge iso tupdate
-
-pl 79
-	- empty sed script fix for aix
-
-pl 78
-	- yodl mode, mp fixes
-
-pl 77
-	- mfmode
-
-pl 76
-	- bfs: shells, scripts
-
-pl 75
-	- bfs: release
-
-pl 74
-	- avoid buggy /bin/sh on hp-ux
-	- bf: make/stepmake.make
-	- simple prolog support
-
-pl 73
-	- bf: invoke sed only once
-
-pl 72
-	- bf: mfplain dependency
-	- inimf, inimf checking (sigh)
-
-pl 71
-	- bf: c-tags
-	- yodl: groff, ditroff
-
-pl 70
-	- GUILE config fixes (AF)
-
-pl 69
-	- package_depth detection fix
-
-pl 68
-	- support for install-libraries
-
-pl 66
-	- check for tbl and gmake
-
-pl 65
-	- unix style pathsep/dirsep for cygwin
-
-pl 64
-	- gcc-2.8/egcs
-
-pl 63
-	- CFLAGS from yodl debian patch
-
-pl 62
-	- fixed dist from subdirs
-	- junked stepmake/aclocal.m4 (again?)
-	- resurrected po stuff
-
-pl 61
-	- bf: package-diff
-
-pl 60
-	- small fixes.
-
-pl 59
-	- bf: package-diff (remove missing automatic)
-	- install templates, (urg) INSTALL*1,2 INSTALL_OUT*1,2
-
-pl 58
-	- distribute formatted txt files: no yodl needed for operation!
-	- guile 1.2 and 1.3 support
-
-pl 57
-	- yodl first build script fixes
-	- uninstall fixes, but, urg, still have to uninstall twice
-	  to get rid of all subdirs
-	- installed stepmake
-	  * install not required
-	  * only installs on explicit make install from toplevel stepdir
-	  * rather urg, 'make dist' needs absolute distdir!
-
-pl 56
-	- crude metapost stuff
-
-pl 55
-	- table-to-html stuff moved .
-
-pl 54
-	- && for TeX
-
-pl 53
-	- moved TeX stuff into tex template
-
-pl 52
-	- striproff
-	- reeable $(PACKAGE)_LIBES,_INCLUDES
-	- metafont rules
-	- GTK+, --, -draw config stuff
-
-pl 51
-	- bumped version nr
-
-pl 50
-	- bf's: PATHSEP
-	- png
-
-pl 49
-	- use yodl2ms and striproff for txt conversion
-	- bf: chmod fail
-
-pl 48
-	- bumped version for yodl after various (lily pl7) changes
-
-pl 47
-	- bf: patch in website after 'make release'
-	- windows ln -> cp
-	- bf: texinfo build
-
-pl 46
-	- bf: versioning typo: topleveL_MAJOR
-	- bf: reincluded optional STATE-VECTOR
-pl 45
-	- Foo_rules.make -> foo-rules.make
-
-pl 44
-	- split: Toplevel.make, debian/Makefile, Documentation/topdocs/Makefile
-
-pl 43
-	- grand split up in targets/rules/variables.  The vars should be before rules!!
-pl 42
-	- fake-msgfmt.sh; urg copied from fake-yodl
-
-pl 41
-	- standard naming: _FILES
-	- use install-sh
-	- junked most check-X-deps
-	- standard naming: dir/out/library.a
-	- split C++ / C stuff in separate files.  Moved out of default stuff
-	- automake.yo updates
-	- fake-yodl.sh
-
-pl 40
-	- bf's: texinfo
-	- bf's: package-zip.sh for bash-2.0
-	- typo package-diff
-
-pl 39
-	- disabled toplevel index
-
-pl 38
-	- bf's: topweb, Documentation
-	- bf: ls-latex
-
-pl 37
-	- bf's: add-html-footer (ok, i've been reading /.)
-	
-pl 36.hwn1
-	- Metafont.make
-	- use := assignment for shell & wildcard stuff
-
-pl 36
-	- bf: Executable.make install
-
-pl 35
-	- bf: Po_rules
-	- grand foreach hack (HWN)
-
-pl 34
-	- stepmake/*shared.make
-
-pl 33
-	- make dist fix
-	- yodl/lily website fixes
-
-pl 32
- 	- DEPTH: enable fixing of 'yodl using yodl'
- 	- bf's: package-diff: --dir-* 
-
-pl 31.hwn1
-	- bf ls-latex.py; added format
-
-pl 31
-	- fixed make-flags
-	- fixup package-diff and added to-dir, from-dir
-
-pl 30.hwn2
-	- 
-
-pl 30.hwn1
-	- doc++ target	
-	- make -> $(MAKE)
-
-pl 30
-	- add-html-footer: html/body/title
-
-pl 29.hwn1
-	- automake.urgh -> automake.yo
-
-pl 29
-	- counter fix
-
-pl 28
-	- mini fix voor soladeris (HWN)
-	- add-html-footer fixes
-	- dropped pl
-
-pl 27
-	- irix fixes(?) (HWN)
-
-pl 26.jcn3
-	- update.py: try at stupid advice
-	- bf: ls-latex .yo author
-	- bf: Excutable.make install
-
-pl 26.jcn2
-	- no changes
-
-pl 26.hwn1
-	- no changes; just testin' make update
-
-pl 26.jcn1
-	- no changes
-
-pl 26
-	- make apply
-	- package-to.diff.gz
-	- package-from-to.diff.gz with state-vector
-	- state vector
-
-pl 25
-	- bf: add-html-footer.py: version_str iso tuple
-	- typo: Executable.make
-	- for 2latex: yodl2latex of yodl-1.30.0.pre9
-	- package depth 'detected' by configure (kinda ugh)
-	- fixes (HWN)
-
-pl 24
-	- binary releases:
-	  * make deb
-	    * dpkg 1.4.0.23.2
-	    * debhelper 0.96
-	    * /usr/bin/db_*: remove -p from install options (urg)
-	  * make rpm
-	  * make zip
-	- debian fixes
-	- SEXECUTABLES / EXECUTABLES (JBR)
-	- fixed package-zip.sh (again?)
-	- bf's: make zip
-	- some doco
-	- bf: STRIPFILES
-	- rpm from tarball in $(depth)/$(outdir)
-	- dropped lilypython, pythonblurb
-	- bf's: flower.py/packagepython.py/package-diff.py
-
-
-pl 23.hwn2
-	- add mailaddress to package-diff, beautifications
-
-pl 23.hwn1
-	- release.py: check make dist retval
-	- revamped rpm stuff. 
-	- bf abs-step-bindir
-
-
-pl 23
-	- relaxed 'error' to '-echo' for non-vital utilities
-	- table-to-html.py
-	- bin/stepdirs.sh
-	- bin/stepmakeise.sh
-	- --package-ised
-	- windows-nt fixes (JBR)
-
-pl 22
-	- new zip stuff
-
-pl 21
-	- packagepythonified add-html-footer, ls-latex
-	- packagepython (dankje lieverd)
-	- LD
-	- bf: don't diff .pyc
-	- yodl2 -> YODL2
-	- AC_STEPMAKE_YODL
-	- vars: GCC/TROFF/LD
-
-pl 20
-	- bf: ls-latex: .yo author + title
-	- htmldoc fix
-	- ls-latex
-	- add-html-footer
-	- po stuff
-	- latex + bibtex
-	- latex2yodl fixes
-
-pl 19
-	- add htmlfooter to all yodl chapter files
-	- .latex for latex files
-	- tex2html -> latex2html.sh
-
-pl 18
-	- package-zet.sh
-	- cleaned-out configure -> aclocal.m4
-	- (step)make targets:
-	  * diff
-	  * help
-	  * rpm
-	  * zip
-	- tex2yodl.pl helper
-	- patches are now called $package-$TOPLEVEL_VERSION.diff
-	- fixed @FILE@ and @VAR@ substitute
-	- bf: DO_CXX_COMPILE
-
-pl 17
-	- C rules :-)
-	- bf's Template.make
-
-pl 16
-	- more lily macros -> generic stepmake
-	- dropped POD configuration
-	- used it
-	- pod2yodl: one time conversion helper
-
-pl 15
-	- fixes: texi2man
-
-pl 14
-	- text2html
-
-pl 13
-	- texinfo support
-	- removed mudela rules
-
-pl 12
-	- irix patch
-
-pl 11
-	- 'urg comment' by wendy
-	- python fixes
-
-pl 10
-	- more from lily
-	- sed-stuff
-
-pl 9
-	- configure fix for irix tr
-	- bf: Install_*.make
-	- bf: PACKAGE_ ROOTDIR
-
-pl 8
-	- some python stuff from lily
-
-pl 7
-	- PACKAGE_NAME
-	- BLURB
-	- INSTALL doco
-	- Documentation/
-
-pl 6
-	- bf: include makedir/Rules.make too
-	- Documentation/automake.urgh
-
-pl 5
-	- allow chained make-dist
-
-pl 4
-	- DOTTEXT->.txt
-
-pl 3
-	- included more Lily makefiles
-
-pl 2
-	- dropped $(package) in makefile names
-	- moved stepmake makes to stepmake/
-
-pl 1
-	- preparing for verbatim include
-
-pl 0
-	- shared between lilypond-0.1.69 lilyx-0.1.0
diff --git a/stepmake/GNUmakefile b/stepmake/GNUmakefile
deleted file mode 100644
index 0ea8a623c8..0000000000
--- a/stepmake/GNUmakefile
+++ /dev/null
@@ -1,31 +0,0 @@
-# -*-Makefile-*-
-# title	 specific top level makefile for StepMake
-
-# subdir level:
-#
-depth = ..
-
-# descent order into subdirectories:
-#
-SUBDIRS = bin stepmake 
-
-# list of distribution files:
-#
-SCRIPTS =  aclocal.m4 autogen.sh
-README_FILES = CHANGES README TODO
-README_TXT_FILES = 
-EXTRA_DIST_FILES = $(README_FILES)  $(SCRIPTS) 
-NON_ESSENTIAL_DIST_FILES = $(README_TXT_FILES)
-#
-
-# bootstrap stepmake:
-#
-STEPMAKE_TEMPLATES= texinfo
-include $(depth)/make/stepmake.make 
-
-# don't install stepmake
-install: local-install
-	@echo Not installing stepmake
-
-localclean:
-	rm -f bin/*.pyc
diff --git a/stepmake/INSTALL.texi b/stepmake/INSTALL.texi
deleted file mode 100644
index bfc62cf766..0000000000
--- a/stepmake/INSTALL.texi
+++ /dev/null
@@ -1,240 +0,0 @@
-\input texinfo @c -*-texinfo-*-
-@setfilename INSTALL.info
-@settitle INSTALL
-
-@node Top, , , (dir)
-@top
-
-
-@unnumberedsec Name
-    
-
-INSTALL - installing StepMake
-
-@unnumberedsec Description
-    
-
-This page documents installation and usage of StepMake
-
-@unnumberedsec Abstract
-    
-
-StepMake is a drop-in package that takes care of generic Makefile and
-packaging/distribution issues.  It enables you to write only the simplest of
-Makefile snippets, while providing a series powerful make targets.  Features
-include speed, wildcarding, out/ dir build, stateless Makefiles and package
-clustering.  It includes some handy scripts for making (package-)diffs and
-patches, making binary distributions etc.
-
-To use StepMake with your package, you do something remotely like:
-@example 
-
-    tar xzf releases/stepmake-0.1.23
-    cd package-x.x.x/		       # package to be StepMake-ised
-    ./../stepmake-0.1.23/bin/stepmakeise.sh
- 
-@end example 
-
-You'll have to customize at least the files:
-@example 
-
-    ./VERSION .
-    ./configure.in 
- 
-@end example 
-
-to your package's needs.  You might want to take a look at:
-@example 
-
-    ./make/Toplevel.make.in
-    ./config.hh.in
-    ./config.make.in
- 
-@end example 
-
-Also, you should put a Makefile in every subdirectory of your
-package.  These makefiles generally are quite simple, e.g. this 
-is a the makefile for an include directory of LilyPond:
-@example 
-
-    # lily/include/Makefile
-
-    depth = ../..
-    include $(depth)/make/Stepmake.make
- 
-@end example 
-
-it will identify all @code{.h, .hh, ...} files and take care of distributing 
-them.
-
-There's a @file{make/Template.make} that you can use as an example.
-See also the Makefiles in the LilyPond or Yodl package.
-
-Once included in your package, StepMake (or in fact, any 
-StepMake-ised package) behaves as a normal subdirectory;
-make commands such as 'make dist' recurse into the stepmake tree
-(For a list of available targets, type @code{make help} after
-configuring).
-Stepmake (and any changes made) will be distributed with the main
-pacakage.  However, StepMake doesn't lose its independency, change
-to the stepmake directory, and it'll behave as a main package.
-You shouldn't version directory names of subpackages, otherwise
-you'll see that package twice in each patch when you upgrade.
-
-@unnumberedsec Prerequisites
-    
-
-To use StepMake with a package you need:
-
-@itemize @bullet
-@item A GNU system: StepMake is known to work on these GNU systems: Linux
-    (PPC, intel), FreeBSD, AIX, NeXTStep, IRIX, Digital Unix and Solaris.
-    If you have the Cygnus WINDOWS32 port of the GNU utils, it will even
-    work in Windows NT/95, but we don't promise to support it.
-@item GNU make 
-@item GNU autoconf
-@end itemize
-
-@unnumberedsec Recommended
-    
-
-Although not strictly necessary, these are recommended to have.
-
-@itemize @bullet
-@item Python
-@item Yodl.  All documentation will be in Yodl. (1.22.jcn3)
-@item GNU find
-@end itemize
-
-@unnumberedsec Internals
-    
-
-Over time, we put a lot of effort in the configure, make, distribute
-system (CMDS) for LilyPond.  Some months ago, we realised it was not
-standard GNU --- we require GNU make for building, and Python for extra
-scripting.  In an effort to be more GNU, we tried automake, but after two
-weeks we realised the costs were too high for us and we reverted to our
-own system (see @file{automake.urgh}).  Not long after that i was confronted
-with two other packages that lacked a decent CMDS.  I realised that Lily's
-would be perfect, it's modular and easy.  The only problem was to make a
-clean cut between generic and Lily specific stuff.  The result was
-StepMake: a bunch of generic makefiles, found in:
-@example 
-
-    stepmake/stepmake/*.make
- 
-@end example 
-
-eneric helper scripts:
-@example 
-
-    stepmake/bin/*.sh
-    stepmake/bin/*.py
- 
-@end example 
-
-and modular configure functions:
-@example 
-
-    stepmake/configure.in
-    stepmake/aclocal.m4
-    stepmake/config.hh.in
-    stepmake/config.make.in
- 
-@end example 
-
-Of course, every package has its own configure- and make peculiarities.
-The best way to create the configure scripts is to copy them from
-stepmake@footnote{Actually, stepmake/bin/stepmakeise.sh will do
-that for you.} into you package's toplevel directory.  For most
-packages, you'll only have to comment in/out some functions in
-@file{configure.in}.
-
-Package specific makefiles go in:
-@example 
-
-    make/Targets.make
-    make/Rulese.make
-    make/Substitute.make
- 
-@end example 
-
-and are included by the generic StepMake makefiles.
-
-@unnumberedsec Maintaining
-    
-
-If you want to make and manage (binary) distributions, create and apply
-patches, you'll need some framework that's outside of the package's
-sourcetree.
-For a number of simple  maintenance tasks, StepMake will therefore assume
-the following directory structure:
-
-Check and update the layout with the command:
-@example 
-
-    ./stepmake/bin/stepdirs.sh
- 
-@end example 
-
-@unnumberedsec See also
-    
-
-@code{../PATCHES.txt}
-
-@unnumberedsec Configuring
-    
-
-Stepmake comes with a number of precooked configure functions for
-general needs, such as AC_STEPMAKE_COMPILE for simple C development
-and AC_STEPMAKE_CXX for C++.
-
-See configure.in and comment in/out the functions that your package
-needs.  For specific needs, you can write your own autoconf code,
-see @code{info autoconf}.
-
-@example 
-
-    doos/                        # gnu/windows32 build and binary releases
-    harmonia -> harmonia-x.y.z 
-    harmonia-x.y.z/
-    lilypond -> lilypond-x.y.z   # symlink to development directory
-    lilypond-x.y.z/              # current development
-    patches/ 		         # patches between different releases
-    RedHat/BUILD                 # RedHat build and binary releases
-    RedHat/RPMS
-    RedHat/SPECS
-    releases/                    # .tar.gz releases
-    test/                        # tarballs and diffs from current version
-    yodl -> yodl-1.30.17
-    yodl-1.30.17
- 
-@end example 
-
-with prefix @file{$HOME/usr/src}
-and (for building rpms only) in @file{$HOME/.rpmrc}:
-@example 
-
-    topdir: /home/fred/usr/src/RedHat
- 
-@end example 
-
-
-@unnumberedsec Authors
-
-@itemize @bullet
-@item @email{hanwen@@cs.uu.nl, Han-Wen Nienhuys}, 
-    @uref{http://www.cs.uu.nl/people/hanwen}
-    @* 
-    Main author.
-
-@item @email{janneke@@gnu.org, Jan Nieuwenhuizen},
-    @uref{http://www.xs4all.nl/~jantien}
-    @* 
-    Main author.
-@item @email{daboys@@austin.rr.com, Jeffrey B. Reed},
-    Windows-nt fixes.
-@end itemize
-
-
-@bye
diff --git a/stepmake/README b/stepmake/README
deleted file mode 100644
index 22375a6104..0000000000
--- a/stepmake/README
+++ /dev/null
@@ -1,18 +0,0 @@
-StepMake
-
-This is a simple generic make package.
-It is being used by LilyPond and Harmonia
-(and StepMake itself, of course)
-
-You're looking at her embryonal state -- things are *supposed* 
-to be broken.
-
-Fixes/patches/suggestions appreciated.
-
-StepMake is Free Software; you can redistribute it and/or
-modify it under the terms of the GNU General Public License 
-version 2 as published by the Free Software Foundation.
-
-Jan Nieuwenhuizen <janneke@gnu.org>
-ftp://pcnov095.win.tue.nl/pub/lilypond/development
-
diff --git a/stepmake/TODO b/stepmake/TODO
deleted file mode 100644
index e828ae4961..0000000000
--- a/stepmake/TODO
+++ /dev/null
@@ -1,25 +0,0 @@
-	* urg, fix flower.py dirname, tarball etc. (package-diff, release)
-
-	* use RE iso REG{SUB,EX} for python stuff.
-
-	* (re-)enable use outside of make system, e.g.
-	  
-	  - /usr/bin/make-patch for direct use on tarballs
-
-	* drop silly 'package' prefixes
-
-	* all perl scripts to python
-
-	* more doco
-	  - Variable names of StepMake, e.g. 'depth', 'EXTRA_DISTFILES' etc.
-	  - AC_STEPMAKE calls
-
-	* template package
-
-	* move bin stuff from LilyPond to stepmake
-
-	* shared lib (use libtool)
-
-	* fix autoconf, allowing aclocal.m4 to be included only once
-	  (if possible from stepmake/bin)
-
diff --git a/stepmake/aclocal.m4 b/stepmake/aclocal.m4
deleted file mode 100644
index 6308424a7b..0000000000
--- a/stepmake/aclocal.m4
+++ /dev/null
@@ -1,995 +0,0 @@
-dnl aclocal.m4   -*-shell-script-*-
-dnl StepMake subroutines for configure.in
-
-
-### mostly interal macros
-
-# Get full path of executable ($1)
-AC_DEFUN(STEPMAKE_GET_EXECUTABLE, [
-    ## which doesn't work in ash, if /usr/bin/which isn't installed
-    ## type -p doesn't work in ash
-    ## command -v doesn't work in zsh
-    ## command -v "$1" 2>&1
-    ## this test should work in ash, bash, pdksh (ksh), zsh
-    type -p "$1" 2>/dev/null | tail -n 1 | awk '{print $NF}'
-])
-
-
-# Get version string from executable ($1)
-AC_DEFUN(STEPMAKE_GET_VERSION, [
-    ## "$1" --version 2>&1 | grep -v '^$' | head -n 1 | awk '{print $NF}'
-    ##
-    ## ARG.
-    ## Workaround for broken Debian gcc version string:
-    ##     gcc (GCC) 3.1.1 20020606 (Debian prerelease)
-    ##
-    ## -V: Workaround for python
-    ##
-    ## Assume, and hunt for, dotted version multiplet.
-
-    changequote(<<, >>)dnl
-    ("$1" --version || "$1" -V) 2>&1 | grep '[0-9]\.[0-9]' | head -n 1 | \
-	sed -e 's/.*[^-.0-9]\([0-9][0-9]*\.[0-9][.0-9]*\).*/\1/'
-    changequote([, ])dnl
-])
-
-# Calculate simplistic numeric version from version string ($1)
-# As yet, we have no need for something more elaborate.
-AC_DEFUN(STEPMAKE_NUMERIC_VERSION, [
-    echo "$1" | awk -F. '
-    {
-      if ([$]3) {three = [$]3}
-      else {three = 0}
-    }
-    {printf "%d\n", [$]1*1000000 + [$]2*1000 + three}'
-])
-
-
-# Add item ($2) to list ($1, one of 'OPTIONAL', 'REQUIRED')
-AC_DEFUN(STEPMAKE_ADD_ENTRY, [
-    eval "$1"=\"`eval echo \"'$'$1\" \"$2\"`\"
-])
-
-# Check if tested program ($2) was found ($1).
-# If not, add entry to missing-list ($3, one of 'OPTIONAL', 'REQUIRED').
-# We could abort here if a 'REQUIRED' program is not found
-AC_DEFUN(STEPMAKE_OPTIONAL_REQUIRED, [
-    STEPMAKE_CHECK_SEARCH_RESULT($1)
-    if test $? -ne 0; then
-	STEPMAKE_ADD_ENTRY($3, $2)
-	if test "$3" = "REQUIRED"; then
-	    command="echo ERROR: $2 not found"
-	    # abort configure process here?
-	else
-	    command="- echo $2 not found"
-	fi
-	eval "$1"='$command'
-	false
-    else
-	true
-    fi
-])
-
-
-# Return if tested proram ($1) was found (true) or not (false).
-AC_DEFUN(STEPMAKE_CHECK_SEARCH_RESULT, [
-    r="`eval echo '$'"$1"`"
-    if test -n "$r" -a "$r" != "error" -a "$r" != "no" && expr '`eval echo '$'"$1"`' : '.*\(echo\)' > /dev/null; then
-	true
-    else
-	##STEPMAKE_WARN(cannot find $2. $3)
-	false
-    fi
-])
-
-
-# Check version of program ($1)
-# If version is smaller than requested ($3),
-# add entry to missing-list ($2, one of 'OPTIONAL', 'REQUIRED').
-AC_DEFUN(STEPMAKE_CHECK_VERSION, [
-    r="`eval echo '$'"$1"`"
-    AC_MSG_CHECKING([$r version])
-    exe=`STEPMAKE_GET_EXECUTABLE($r)`
-    ver=`STEPMAKE_GET_VERSION($exe)`
-    num=`STEPMAKE_NUMERIC_VERSION($ver)`
-    req=`STEPMAKE_NUMERIC_VERSION($3)`
-    AC_MSG_RESULT([$ver])
-    if test "$num" -lt "$req"; then
-	STEPMAKE_ADD_ENTRY($2, ["$r >= $3 (installed: $ver)"])
-    fi
-])
-
-# Check version of program ($1)
-# If version is greater than or equals unsupported ($3),
-# add entry to unsupported list ($2, 'UNSUPPORTED')
-AC_DEFUN(STEPMAKE_CHECK_VERSION_UNSUPPORTED, [
-    r="`eval echo '$'"$1"`"
-    AC_MSG_CHECKING([$r version])
-    exe=`STEPMAKE_GET_EXECUTABLE($r)`
-    ver=`STEPMAKE_GET_VERSION($exe)`
-    num=`STEPMAKE_NUMERIC_VERSION($ver)`
-    sup=`STEPMAKE_NUMERIC_VERSION($3)`
-    AC_MSG_RESULT([$ver])
-    if test "$num" -ge "$sup"; then
-	STEPMAKE_ADD_ENTRY($2, ["$r < $3 (installed: $ver)"])
-    fi
-])
-
-### Macros to build configure.in
-
-
-AC_DEFUN(STEPMAKE_BIBTEX2HTML, [
-    STEPMAKE_PROGS(BIBTEX2HTML, bibtex2html bib2html, $1)
-    if test "$BIBTEX2HTML" = "bib2html"; then
-	BIBTEX2HTML_FLAGS='$< $(@)'
-    else
-	BIBTEX2HTML_FLAGS='-o $(@D)/$(*F) $<'
-    fi
-    AC_SUBST(BIBTEX2HTML)
-    AC_SUBST(BIBTEX2HTML_FLAGS)
-])
-
-
-AC_DEFUN(STEPMAKE_BISON, [
-    # ugh, automake: we want (and check for) bison
-    AC_PROG_YACC
-    
-    STEPMAKE_PROGS(BISON, bison, $1)
-    
-    # urg.  should test functionality rather than version.
-    if test "$BISON" = "bison" -a -n "$2"; then
-	STEPMAKE_CHECK_VERSION(BISON, $1, $2)
-    fi
-])
-
-
-AC_DEFUN(STEPMAKE_COMPILE, [
-    # -O is necessary to get inlining
-    CFLAGS=${CFLAGS-""}
-    CXXFLAGS=${CXXFLAGS-$CFLAGS}
-    LDFLAGS=${LDFLAGS-""}
-    checking_b=yes
-    optimise_b=yes
-    profile_b=no
-    debug_b=yes
-
-    AC_ARG_ENABLE(checking,
-    [  --enable-checking       set runtime checks (assert calls).  Default: on],
-    [checking_b=$enableval] )
-
-    AC_ARG_ENABLE(debugging,
-    [  --enable-debugging      compile with debugging info.  Default: on],
-    [debug_b=$enableval])
-
-    AC_ARG_ENABLE(optimising,
-    [  --enable-optimising     compile with optimising.  Default: on],
-    [optimise_b=$enableval])
-
-    AC_ARG_ENABLE(profiling, 
-    [  --enable-profiling      compile with gprof support.  Default: off],
-    [profile_b=$enableval])
-    
-
-    if test "$checking_b" = no; then
-	# ugh
-	AC_DEFINE(NDEBUG)
-	DEFINES="$DEFINES -DNDEBUG"
-    fi
-
-    if test "$optimise_b" = yes; then
-	OPTIMIZE="-O2 -finline-functions"
-    fi
-
-
-    if test $profile_b = yes; then
-	EXTRA_LIBES="-pg"
-	OPTIMIZE="$OPTIMIZE -pg"
-    fi
-
-    if test $debug_b = yes; then	
-	OPTIMIZE="$OPTIMIZE -g"
-    fi
-
-
-    AC_PROG_CC
-    STEPMAKE_OPTIONAL_REQUIRED(CC, cc, $1)
-    LD='$(CC)'
-    AC_SUBST(LD)
-
-    CFLAGS="$CFLAGS $OPTIMIZE"
-    CPPFLAGS=${CPPFLAGS-""}
-
-    AC_MSG_CHECKING([for IEEE-conformance compiler flags])
-    save_cflags="$CFLAGS"
-    case "$host" in
-        alpha*-*-*)
-	    dnl should do compile test?
-	    AC_MSG_RESULT(-mieee)
-	    CFLAGS="-mieee $CFLAGS"
-	    ;;
-	*)
-	    AC_MSG_RESULT([none])
-	    ;;
-    esac
-    AC_SUBST(cross_compiling)
-    AC_SUBST(CFLAGS)
-    AC_SUBST(CPPFLAGS)
-    AC_SUBST(LDFLAGS)
-    AC_SUBST(ICFLAGS)
-    AC_SUBST(ILDFLAGS)
-    AC_SUBST(DEFINES)
-    AC_SUBST(EXTRA_LIBES)
-])
-
-AC_DEFUN(STEPMAKE_CXX, [
-    AC_LANG([C++])
-    AC_PROG_CXX
-    STEPMAKE_OPTIONAL_REQUIRED(CXX, c++, $1)
-
-    CPPFLAGS="$CPPFLAGS $DEFINES"
-    CXXFLAGS="$CXXFLAGS $OPTIMIZE"
-    LDFLAGS="$LDFLAGS $EXTRA_LIBES"
-
-    AC_SUBST(CXXFLAGS)
-    AC_SUBST(CXX)
-    LD='$(CXX)'
-    AC_SUBST(LD)
-])
-
-
-AC_DEFUN(STEPMAKE_CXXTEMPLATE, [
-    AC_CACHE_CHECK([whether explicit instantiation is needed],
-	lily_cv_need_explicit_instantiation,
-	AC_LINK_IFELSE([AC_LANG_PROGRAM([[
-    template <class T> struct foo { static int baz; };
-    template <class T> int foo<T>::baz = 1;
-    ]], [[ return foo<int>::baz; ]])],[lily_cv_need_explicit_instantiation=no],[lily_cv_need_explicit_instantiation=yes]))
-    if test x"$lily_cv_need_explicit_instantiation"x = x"yes"x; then
-	AC_DEFINE(NEED_EXPLICIT_INSTANTIATION)
-    fi
-])
-
-
-AC_DEFUN(STEPMAKE_DATADIR, [
-    if test "$datadir" = "\${prefix}/share"; then
-	    datadir='${prefix}/share'
-    fi
-    presome=${prefix}
-    if test "$prefix" = "NONE"; then
-	presome=${ac_default_prefix}
-    fi
-    
-    build_package_datadir=$ugh_ugh_autoconf250_builddir/share/$package
-    
-    DATADIR=`echo ${datadir} | sed "s!\\\${prefix}!$presome!"`
-    BUILD_PACKAGE_DATADIR=`echo ${build_package_datadir} | sed "s!\\\${prefix}!$presome!"`
-    
-    AC_SUBST(datadir)
-    AC_SUBST(build_package_datadir)
-    AC_DEFINE_UNQUOTED(DATADIR, ["${DATADIR}"])
-    AC_DEFINE_UNQUOTED(BUILD_PACKAGE_DATADIR, ["${BUILD_PACKAGE_DATADIR}"])
-])
-
-## ugh: cut & paste programming from datadir. 
-AC_DEFUN(STEPMAKE_LIBDIR, [
-
-    if test "$libdir" = "\${exec_prefix}/lib"; then
- 	libdir='${exec_prefix}/lib'
-    fi
-    presome=$exec_prefix
-    build_package_libdir=$ugh_ugh_autoconf250_builddir/lib/$package
-    
-    LIBDIR=`echo ${libdir} | sed "s!\\\${exec_prefix}!$presome!"`
-    BUILD_PACKAGE_LIBDIR=`echo ${build_package_libdir} | sed "s!\\\${exec_prefix}!$presome!"`
-    
-    AC_SUBST(libdir)
-    AC_SUBST(build_package_libdir)
-    AC_DEFINE_UNQUOTED(LIBDIR, ["${LIBDIR}"])
-    AC_DEFINE_UNQUOTED(BUILD_PACKAGE_LIBDIR, ["${BUILD_PACKAGE_LIBDIR}"])
-])
-
-
-AC_DEFUN(STEPMAKE_END, [
-    AC_SUBST(OPTIONAL)
-    AC_SUBST(REQUIRED)
-    
-    AC_CONFIG_FILES([$CONFIGFILE.make:config.make.in])
-    AC_OUTPUT
-    
-    if test -n "$OPTIONAL"; then
-	echo
-        echo "WARNING: Please consider installing optional programs: $OPTIONAL"
-    fi
-
-    if test -n "$REQUIRED"; then
-	echo
-        echo "ERROR: Please install required programs: $REQUIRED"
-    fi
-    
-    if test -n "$UNSUPPORTED"; then
-	echo
-        echo "ERROR: Please use older version of programs: $UNSUPPORTED"
-    fi
-    
-    if test -n "$OPTIONAL$REQUIRED$UNSUPPORTED"; then
-	echo
-	echo "See INSTALL.txt for more information on how to build $PACKAGE_NAME"
-	if test -f config.cache ; then
-	    echo "Remove config.cache before rerunning ./configure"
-	fi 
-    fi
-    
-    if test -n "$REQUIRED$UNSUPPORTED"; then
-	rm -f $srcdir/GNUmakefile
-        exit 1
-    fi
-
-    # regular in-place build
-    # test for srcdir_build = yes ?
-    if test "$srcdir_build" = "yes"; then
-	rm -f $srcdir/GNUmakefile
-	cp $srcdir/GNUmakefile.in $srcdir/GNUmakefile
-	chmod 444 $srcdir/GNUmakefile
-    else # --srcdir build
-        rm -f GNUmakefile
-    	cp $srcdir/make/srcdir.make.in GNUmakefile
-    	chmod 444 GNUmakefile
-    fi
-])
-
-
-AC_DEFUN(STEPMAKE_FLEX, [
-    # ugh, automake: we want (and check for) flex
-    # AC_PROG_LEX
-    # urg: automake 1.3: hope this doesn't break 1.2 ac_cv_pro_lex_root hack...
-
-    # AC_PROG_LEX()
-    # ugh, ugh
-    ac_cv_prog_lex_root=lex.yy
-    STEPMAKE_PROGS(FLEX, flex, $1)
-])
-
-
-AC_DEFUN(STEPMAKE_FLEXLEXER, [
-    AC_CHECK_HEADERS([FlexLexer.h],[true],[false])
-    if test $? -ne 0; then
-	warn='FlexLexer.h (flex package)'
-	STEPMAKE_ADD_ENTRY($1, $warn)
-    fi
-    # check for yyFlexLexer.yy_current_buffer,
-    # in 2.5.4 <= flex < 2.5.29
-    AC_LANG_PUSH(C++)
-    AC_CACHE_CHECK([for yyFlexLexer.yy_current_buffer],
-	[stepmake_flexlexer_yy_current_buffer],
-	AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
-using namespace std;
-#include <FlexLexer.h>
-class yy_flex_lexer: public yyFlexLexer
-{
-  public:
-    yy_flex_lexer ()
-    {
-      yy_current_buffer = 0;
-    }
-};
-]])],
-	    [stepmake_flexlexer_yy_current_buffer=yes],
-	    [stepmake_flexlexer_yy_current_buffer=no]))
-    if test $stepmake_flexlexer_yy_current_buffer = yes; then
-	AC_DEFINE(HAVE_FLEXLEXER_YY_CURRENT_BUFFER, 1, [Define to 1 if yyFlexLexer has yy_current_buffer.])
-    fi
-    AC_LANG_POP(C++)
-])
-
-
-AC_DEFUN(STEPMAKE_GCC, [
-    if test "$GCC" = "yes"; then
-        STEPMAKE_CHECK_VERSION(CC, $1, $2)
-    else
-	warn="$CC (Please install *GNU* cc)"
-	STEPMAKE_ADD_ENTRY($1, $warn)
-    fi
-])
-
-AC_DEFUN(STEPMAKE_GETTEXT, [
-    presome=${prefix}
-    if test "$prefix" = "NONE"; then
-	    presome=${ac_default_prefix}
-    fi
-    LOCALEDIR=`echo ${localedir} | sed "s!\\\${prefix}!$presome!"`
-    
-    AC_SUBST(localedir)
-    AC_DEFINE_UNQUOTED(LOCALEDIR, ["${LOCALEDIR}"])
-    # ouch.  autoconf <= 2.57's gettext check fails for
-    # g++ >= 3.3 (with -std=gnu++98, the default).
-    # While the check is OK for g++ -std=c++98,
-    # LilyPond needs GNU g++, so who is to blame here?
-    # Use a workaround until this is resolved:
-    # for g++ >= 3.3, select C language.
-    GCC_UNSUPPORTED=
-    STEPMAKE_CHECK_VERSION_UNSUPPORTED(CXX, GCC_UNSUPPORTED, 3.3)
-    if test -n "$GCC_UNSUPPORTED"; then
-	AC_MSG_WARN([autoconf <= 2.57 with g++ >= 3.3 gettext test broken.])
-	AC_MSG_WARN([Trying gcc, cross thumbs.])
-	AC_LANG_PUSH(C)
-    fi
-    AC_CHECK_LIB(intl, gettext)
-    AC_CHECK_FUNCS(gettext)
-    if test -n "$GCC_UNSUPPORTED"; then
-	AC_LANG_POP(C)
-    fi
-])
-
-
-AC_DEFUN(STEPMAKE_GUILE, [
-    STEPMAKE_PATH_PROG(GUILE, guile, $1)
-])
-
-
-#   STEPMAKE_GUILE_FLAGS --- set flags for compiling and linking with Guile
-#
-#   This macro runs the guile-config script, installed with Guile,
-#   to find out where Guile's header files and libraries are
-#   installed.  It sets two variables, marked for substitution, as
-#   by AC_SUBST.
-#   
-#     GUILE_CFLAGS --- flags to pass to a C or C++ compiler to build
-#             code that uses Guile header files.  This is almost
-#             always just a -I flag.
-#   
-#     GUILE_LDFLAGS --- flags to pass to the linker to link a
-#             program against Guile.  This includes -lguile for
-#             the Guile library itself, any libraries that Guile
-#             itself requires (like -lqthreads), and so on.  It may
-#             also include a -L flag to tell the compiler where to
-#             find the libraries.
-
-AC_DEFUN([STEPMAKE_GUILE_FLAGS], [
-    exe=`STEPMAKE_GET_EXECUTABLE($guile_config)`
-    if test -x $exe; then
-	AC_MSG_CHECKING([guile compile flags])
-	GUILE_CFLAGS="`$guile_config compile`"
-	AC_MSG_RESULT($GUILE_CFLAGS)
-	AC_MSG_CHECKING([guile link flags])
-	GUILE_LDFLAGS="`$guile_config link`"
-	AC_MSG_RESULT($GUILE_LDFLAGS)
-    fi
-    AC_SUBST(GUILE_CFLAGS)
-    AC_SUBST(GUILE_LDFLAGS)
-])
-
-
-AC_DEFUN(STEPMAKE_GUILE_DEVEL, [
-    ## First, let's just see if we can find Guile at all.
-    AC_MSG_CHECKING([for guile-config])
-    for guile_config in $GUILE_CONFIG guile-config $target-guile-config $build-guile-config; do
-	AC_MSG_RESULT([$guile_config])
-	if ! $guile_config --version > /dev/null 2>&1 ; then
-	    AC_MSG_WARN([cannot execute $guile_config])
-	    AC_MSG_CHECKING([if we are cross compiling])
-	    GUILE_CONFIG='echo no guile-config'
-	else
-	    GUILE_CONFIG=$guile_config
-	    break
-	fi
-    done
-    STEPMAKE_OPTIONAL_REQUIRED(GUILE_CONFIG, $guile_config, $1)
-    if test $? -ne 0; then
-        STEPMAKE_ADD_ENTRY($1, 'guile-config (guile-devel, guile-dev or libguile-dev package)')
-    fi 
-
-    STEPMAKE_CHECK_SEARCH_RESULT(GUILE_CONFIG)
-    # urg.  should test functionality rather than version.
-    if test $? -eq 0 -a -n "$2"; then
-	STEPMAKE_CHECK_VERSION(GUILE_CONFIG, $1, $2)
-    fi
-
-    AC_SUBST(GUILE_CONFIG)
-    
-    guile_version="$ver"
-    changequote(<<, >>)dnl
-    GUILE_MAJOR_VERSION=`expr $guile_version : '\([0-9]*\)'`
-    GUILE_MINOR_VERSION=`expr $guile_version : '[0-9]*\.\([0-9]*\)'`
-    GUILE_PATCH_LEVEL=`expr $guile_version : '[0-9]*\.[0-9]*\.\([0-9]*\)'`
-    changequote([, ])dnl
-    STEPMAKE_GUILE_FLAGS
-    AC_DEFINE_UNQUOTED(GUILE_MAJOR_VERSION, $GUILE_MAJOR_VERSION)
-    AC_DEFINE_UNQUOTED(GUILE_MINOR_VERSION, $GUILE_MINOR_VERSION)
-    AC_DEFINE_UNQUOTED(GUILE_PATCH_LEVEL, $GUILE_PATCH_LEVEL)
-])
-
-
-AC_DEFUN(STEPMAKE_GXX, [
-    if test "$GXX" = "yes"; then
-        STEPMAKE_CHECK_VERSION(CXX, $1, $2)
-    else
-	warn="$CXX (Please install *GNU* c++)"
-	STEPMAKE_ADD_ENTRY($1, $warn)
-    fi
-])
-
-
-AC_DEFUN(STEPMAKE_INIT, [
-
-    AC_PREREQ(2.50)
-    . $srcdir/VERSION
-    FULL_VERSION=$MAJOR_VERSION.$MINOR_VERSION.$PATCH_LEVEL
-    if test x$MY_PATCH_LEVEL != x; then
-	FULL_VERSION=$FULL_VERSION.$MY_PATCH_LEVEL
-    fi
-
-    # urg: don't "fix" this: irix doesn't know about [:lower:] and [:upper:]
-    changequote(<<, >>)dnl
-    PACKAGE=`echo $PACKAGE_NAME | tr '[a-z]' '[A-Z]'`
-    package=`echo $PACKAGE_NAME | tr '[A-Z]' '[a-z]'`
-    changequote([, ])dnl
-
-    # No versioning on directory names of sub-packages 
-    # urg, urg
-    stepmake=${datadir}/stepmake
-    presome=${prefix}
-    if test "$prefix" = "NONE"; then
-	    presome=${ac_default_prefix}
-    fi
-    stepmake=`echo ${stepmake} | sed "s!\\\${prefix}!$presome!"`
-
-    # urg, how is this supposed to work?
-    if test "$program_prefix" = "NONE"; then
-	  program_prefix=
-    fi
-    if test "$program_suffix" = "NONE"; then
-	  program_suffix=
-    fi
-
-    AC_MSG_CHECKING(Package)
-    if test "$PACKAGE" = "STEPMAKE"; then
-	AC_MSG_RESULT(Stepmake package!)
-
-	AC_MSG_CHECKING(builddir)
-
-	ugh_ugh_autoconf250_builddir="`pwd`"
-	
-	if test "$srcdir" = "."; then
-	    srcdir_build=yes
-	else
-	    srcdir_build=no
-	    package_builddir="`dirname $ugh_ugh_autoconf250_builddir`"
-	    package_srcdir="`dirname  $srcdir`"
-	fi
-	AC_MSG_RESULT($ugh_ugh_autoconf250_builddir)
-
-	(cd stepmake 2>/dev/null || mkdir stepmake)
-	(cd stepmake; rm -f bin; ln -s ../$srcdir/bin .)
-# only possible with autoconf < 2.50 -- hardcoded in configure.in
-#	AC_CONFIG_AUX_DIR(bin)
-	stepmake=stepmake
-    else
-        AC_MSG_RESULT($PACKAGE)
-
-	AC_MSG_CHECKING(builddir)
-	ugh_ugh_autoconf250_builddir="`pwd`"
-	if test "$srcdir" = "."; then
-	    srcdir_build=yes
-	else
-	    srcdir_build=no
-	fi
-	AC_MSG_RESULT($ugh_ugh_autoconf250_builddir)
-
-	AC_MSG_CHECKING(for stepmake)
-	# Check for installed stepmake
-	if test -d $stepmake; then
-	    AC_MSG_RESULT($stepmake)
-	else
-	    stepmake="`cd $srcdir/stepmake; pwd`"
-	    AC_MSG_RESULT([$srcdir/stepmake  ($datadir/stepmake not found)])
-	fi
-
-# only possible with autoconf < 2.50 -- hardcoded in configure.in
-# 	AC_CONFIG_AUX_DIR(\
-# 	  stepmake/bin\
-# 	  $srcdir/stepmake/bin\
-#	)
-    fi
-
-    AC_SUBST(ugh_ugh_autoconf250_builddir)
-    AC_SUBST(stepmake)
-    AC_SUBST(package)
-    AC_SUBST(PACKAGE)
-    AC_SUBST(PACKAGE_NAME)
-    # We don't need the upper case variant,
-    # so stick to macros are uppercase convention.
-    # AC_DEFINE_UNQUOTED(package, ["${package}"])
-    # AC_DEFINE_UNQUOTED(PACKAGE, ["${PACKAGE}"])
-    AC_DEFINE_UNQUOTED(PACKAGE, ["${package}"])
-    AC_DEFINE_UNQUOTED(PACKAGE_NAME, ["${PACKAGE_NAME}"])
-    AC_DEFINE_UNQUOTED(TOPLEVEL_VERSION, ["${FULL_VERSION}"])
-
-    if test -z "$package_depth"; then
-    	package_depth="."
-    else
-    	package_depth="../$package_depth"
-    fi
-    export package_depth
-    AC_SUBST(package_depth)
-
-    AUTOGENERATE="This file was automatically generated by configure"
-    AC_SUBST(AUTOGENERATE)
-
-    CONFIGSUFFIX=
-    AC_ARG_ENABLE(config,
-    [  --enable-config=CONF    put settings in config-CONF.make and config-CONF.h;
-                            do \`make conf=CONF' to get output in ./out-CONF],
-    [CONFIGURATION=$enableval])
-
-    ##'
-
-    test -n "$CONFIGURATION" && CONFIGSUFFIX="-$CONFIGURATION"
-    CONFIGFILE=config$CONFIGSUFFIX
-    AC_SUBST(CONFIGSUFFIX)
-     
-    AC_CANONICAL_HOST
-    STEPMAKE_PROGS(MAKE, gmake make, REQUIRED)
-    STEPMAKE_PROGS(FIND, find, REQUIRED)
-
-    STEPMAKE_PROGS(TAR, tar, REQUIRED)
-
-    if test "$(echo 2)" != "2" ||
-	test "x`uname`" = "xHP-UX"; then
-	AC_PATH_PROG(KSH, ksh, /bin/ksh)
-	AC_PATH_PROG(BASH, bash, $KSH)
-	STEPMAKE_WARN(avoiding buggy /bin/sh)
-	AC_PATH_PROG(SHELL, bash, $KSH)
-    else
-	SHELL=/bin/sh
-	AC_PATH_PROG(BASH, bash, $SHELL)
-    fi
-    AC_SUBST(SHELL)
-
-    STEPMAKE_PYTHON(REQUIRED, 1.5)
-
-    if expr "$MAKE" : '.*\(echo\)' >/dev/null; then
- 	$MAKE -v 2> /dev/null | grep GNU > /dev/null
-	if test "$?" = 1; then
-	    warn='make (Please install *GNU* make)'
-	    # STEPMAKE_WARN($warn)
-	    STEPMAKE_ADD_ENTRY(REQUIRED, $warn)
-        fi
-    fi 
-
-    if test "$OSTYPE" = "cygwin" -o "$OSTYPE" = "cygwin32" -o "$OSTYPE" = "Windows_NT"; then
-	LN=cp # hard link does not work under cygnus-nt
-	LN_S='cp -r' # symbolic link does not work for native nt
-	ZIP="zip -r -9" #
-	program_suffix=.exe
- 	ROOTSEP=':'
-        DIRSEP='/'
- 	PATHSEP=':'
-	INSTALL="\$(SHELL) \$(stepdir)/../bin/install-dot-exe.sh -c"
-    else
-	ROOTSEP=':'
-	DIRSEP='/'
-	PATHSEP=':'
-	LN=ln
-	LN_S='ln -s'
-	ZIP="zip -r -9"
-        INSTALL="\$(SHELL) \$(stepdir)/../bin/install-sh -c"
-    fi
-    AC_SUBST(program_prefix)
-    AC_SUBST(program_suffix)
-    AC_SUBST(ZIP)
-    AC_SUBST(LN)
-    AC_SUBST(LN_S)
-    AC_SUBST(INSTALL)
-    AC_DEFINE_UNQUOTED(DIRSEP, ['${DIRSEP}'])
-    AC_DEFINE_UNQUOTED(PATHSEP, ['${PATHSEP}'])
-    AC_SUBST(DIRSEP)
-    AC_SUBST(PATHSEP)
-    AC_SUBST(ROOTSEP)
-  
-    STEPMAKE_DATADIR
-    STEPMAKE_LIBDIR
-])
-
-    
-AC_DEFUN(STEPMAKE_KPATHSEA, [
-	
-    AC_ARG_WITH(kpathsea-include,
-	[  --with-kpathsea-include=DIR
-	                  location of the kpathsea include dir],[
-	    if test "$withval" = "yes" -o "$withval" = "no"; then
-		AC_MSG_WARN(Usage: --with-kpathsea-include=includedir)
-	    else
-		CPPFLAGS="$CPPFLAGS -I${withval}"
-	    fi
-	    ])
-    
-    AC_ARG_WITH(kpathsea-lib,
-	[  --with-kpathsea-lib=DIR location of the kpathsea lib dir],[
-	    if test "$withval" = "yes" -o "$withval" = "no"; then
-		AC_MSG_WARN(Usage: --with-kpathsea-lib=libdir)
-	    else
-		LDFLAGS="$LDFLAGS -L${withval}"
-	    fi
-	    ])
-    
-    kpathsea_b=yes
-    #FIXME --with-xxx is meant for specifying a PATH too,
-    # so this should read: --enable-kpathsea,
-    # or --with-kpathsea-include=PATH --with-kpathsea-lib=PATH
-    AC_ARG_WITH(kpathsea,
-    [  --with-kpathsea         use kpathsea lib.  Default: on],
-    [kpathsea_b=$with_kpathsea])
-
-    if test "$kpathsea_b" != "no"; then	
-	AC_CHECK_HEADERS([kpathsea/kpathsea.h])
-	AC_CHECK_LIB(kpathsea, kpse_find_file)
-	AC_CHECK_FUNCS(kpse_find_file,,kpathsea_b=no)
-	if test "$kpathsea_b" = "no"; then
-	    warn='kpathsea (libkpathsea-dev, kpathsea-devel or tetex-devel
-   package).
-   Else, please specify the location of your kpathsea using
-   --with-kpathsea-include and --with-kpathsea-lib options.  You should
-   install kpathsea; see INSTALL.txt.  Rerun ./configure
-   --without-kpathsea only if kpathsea is not available for your
-   platform.'
-	    STEPMAKE_ADD_ENTRY(REQUIRED, $warn)
-	fi
-    fi
-    AC_MSG_CHECKING(whether to use kpathsea)
-    if test "$kpathsea_b" != no; then
-        AC_MSG_RESULT(yes)
-	KPATHSEA=1
-    else
-        AC_MSG_RESULT(no)
-	KPATHSEA=0
-    fi
-
-    AC_SUBST(KPATHSEA)
-    AC_DEFINE_UNQUOTED(KPATHSEA, $KPATHSEA)
-])
-
-
-AC_DEFUN(STEPMAKE_LIB, [
-    STEPMAKE_PROGS(AR, ar, $1)
-    AC_PROG_RANLIB
-    STEPMAKE_OPTIONAL_REQUIRED(RANLIB, ranlib, $1)
-])
-
-
-AC_DEFUN(STEPMAKE_LIBTOOL, [
-    # libtool.info ...
-    # **Never** try to set library version numbers so that they correspond
-    # to the release number of your package.  This is an abuse that only
-    # fosters misunderstanding of the purpose of library versions.
-
-    REVISION=$PATCH_LEVEL
-    # CURRENT=$MINOR_VERSION
-    CURRENT=`expr $MINOR_VERSION + 1`
-    # AGE=`expr $MAJOR_VERSION + 1`
-    AGE=$MAJOR_VERSION
-    AC_SUBST(CURRENT)
-    AC_SUBST(REVISION)
-    AC_SUBST(AGE)
-])
-
-
-AC_DEFUN(STEPMAKE_LOCALE, [
-    lang=English
-    ALL_LINGUAS="en nl"
-
-    # with/enable ??
-    AC_ARG_WITH(localedir,
-    [  --with-localedir=LOCALE use LOCALE as locale dir.  Default:
-                            PREFIX/share/locale ],
-    localedir=$with_localedir,
-    localedir='${prefix}/share/locale')
-
-    AC_ARG_WITH(lang,
-    [  --with-lang=LANG        use LANG as language to emit messages],
-    language=$with_lang,
-    language=English)
-
-    AC_MSG_CHECKING(language)    
-    case "$language" in
-      En* | en* | Am* | am* | US* | us*)
-	    lang=English;;
-      NL | nl | Du* | du* | Ned* | ned*)
-	    lang=Dutch;;
-      "")
-	    lang=English;;
-      *)
-	    lang=unknown;;
-    esac
-    AC_MSG_RESULT($lang)
-
-    if test "$lang" = "unknown" ; then
-	STEPMAKE_WARN($language not supported; available are: $ALL_LINGUAS)
-    fi
-
-])
-
-
-AC_DEFUN(STEPMAKE_MAKEINFO, [
-    STEPMAKE_PROGS(MAKEINFO, makeinfo, $1)
-    if test "$MAKEINFO" = "makeinfo"; then
-	AC_MSG_CHECKING(whether makeinfo can split html by @node)
-	mkdir -p out
-	makeinfo --html --output=out/split <<EOF
-\input texinfo
-\input texinfo @c -*-texinfo-*-
-@setfilename split.info
-@settitle split.info
-@bye
-EOF
-	if test -d out/split; then
-	    SPLITTING_MAKEINFO=yes
-	    AC_MSG_RESULT(yes)
-	    rm -rf out/split
-	else
-	    AC_MSG_RESULT(no)
-	    STEPMAKE_WARN(your html documentation will be one large file)
-	    rm -rf out/split
-	fi
-    fi
-    AC_SUBST(SPLITTING_MAKEINFO)
-])
-
-
-
-AC_DEFUN(STEPMAKE_MAN, [
-    STEPMAKE_PROGS(GROFF, groff ditroff, $1)
-    AC_SUBST(GROFF)
-    STEPMAKE_PROGS(TROFF, troff, $1)
-    AC_SUBST(TROFF)
-    STEPMAKE_PROGS(TBL, tbl, $1)
-    AC_SUBST(TBL)
-])
-
-
-AC_DEFUN(STEPMAKE_MSGFMT, [
-    STEPMAKE_PROGS(MSGFMT, msgfmt, $1)
-])
-
-
-# Check for program ($2), set full path result to ($1).
-# If missing, add entry to missing-list ($3, one of 'OPTIONAL', 'REQUIRED')
-AC_DEFUN(STEPMAKE_PATH_PROG, [
-    AC_CHECK_PROGS($1, $2, no)
-    STEPMAKE_OPTIONAL_REQUIRED($1, $2, $3)
-    if test $? -eq 0; then
-	AC_PATH_PROG($1, $2)
-	if test -n "$4"; then
-	    STEPMAKE_CHECK_VERSION($1, $3, $4)
-	fi
-    fi
-])
-
-
-# Check for program in set of names ($2), set result to ($1) .
-# If missing, add entry to missing-list ($3, one of 'OPTIONAL', 'REQUIRED')
-# If exists, and a minimal version ($4) is required
-AC_DEFUN(STEPMAKE_PROGS, [
-    AC_CHECK_PROGS($1, $2, no)
-    STEPMAKE_OPTIONAL_REQUIRED($1, $2, $3)
-    if test $? -eq 0 -a -n "$4"; then
-	STEPMAKE_CHECK_VERSION($1, $3, $4)
-    fi
-])
-
-
-AC_DEFUN(STEPMAKE_PERL, [
-    STEPMAKE_PATH_PROG(PERL, perl, $1)
-])
-
-
-AC_DEFUN(STEPMAKE_PYTHON, [
-    unset pv
-    AC_MSG_CHECKING([for python])
-    for python in $PYTHON python python2 python2.3 python2.2 python2.1 python2.0; do
-	AC_MSG_RESULT([$python])
-	if ! $python -V > /dev/null 2>&1 ; then
-	    #AC_MSG_WARN([cannot execute $python])
-	    PYTHON='echo no python'
-	else
-	    unset pv
-	    STEPMAKE_CHECK_VERSION(python, pv, $2)
-	    if test -z "$pv"; then
-		PYTHON=$python
-		break
-	    fi
-	fi
-    done
-    if test -n "$pv"; then
-	STEPMAKE_ADD_ENTRY($1, $pv)
-    fi
-    AC_PATH_PROG(PYTHON, $PYTHON)
-    AC_SUBST(PYTHON)
-])
-
-AC_DEFUN(STEPMAKE_PYTHON_DEVEL, [
-    unset PYTHON_HEADER PYTHON_INCLUDE
-    if test -n "$PYTHON"; then
-	changequote(<<, >>)dnl
-	# alternatively, for python >= 2.0
-	# 'import sys, distutils.sysconfig; sys.stdout.write (distutils.sysconfig.get_python_inc ())'
-	PYTHON_INCLUDE=`$PYTHON -c 'import sys; sys.stdout.write ("%s/include/python%s" % (sys.prefix, sys.version[:3]))'`
-	changequote([, ])dnl
-    fi
-    
-    ##AC_CHECK_HEADERS([Python.h],[PYTHON_HEADER=yes])
-    if test -z "$PYTHON_HEADER"; then
-	#URG -- how to extend include path?
-	ac_compile="$ac_compile -I$PYTHON_INCLUDE"
-	ac_cpp="$ac_cpp -I$PYTHON_INCLUDE"
-	CPPFLAGS="$CPPFLAGS -I$PYTHON_INCLUDE"
-	AC_CHECK_HEADERS([Python.h],[PYTHON_HEADER=yes])
-    fi
-    
-    if test -z "$PYTHON_HEADER"; then
-	warn="$PYTHON_INCLUDE/Python.h (python-devel, python-dev or libpython-dev package)"
-	STEPMAKE_ADD_ENTRY($1, $warn)
-    fi
-])
-
-
-AC_DEFUN(STEPMAKE_TEXMF_DIRS, [
-    AC_ARG_ENABLE(tfm-path,
-    [  --enable-tfm-path=PATH  set path of tex directories where tfm files live,
-                            esp.: cmr10.tfm.  Default: use kpsewhich],
-    [tfm_path=$enableval],
-    [tfm_path=auto] )
-
-    # ugh
-    STEPMAKE_PROGS(KPSEWHICH, kpsewhich, OPTIONAL)
-    AC_MSG_CHECKING(for tfm path)
-
-    TFM_FONTS="cmr msam"
-
-    if test "x$tfm_path" = xauto ; then
-	if test "x$KPSEWHICH" != "xno" ; then
-	    for i in $TFM_FONTS; do
-		dir=`$KPSEWHICH tfm ${i}10.tfm`
-		TFM_PATH="$TFM_PATH `dirname $dir`"
-	    done
-	else
-	    STEPMAKE_WARN(Please specify where cmr10.tfm lives:
-    ./configure --enable-tfm-path=/usr/local/TeX/lib/tex/fonts)
-	fi
-    else
-         TFM_PATH=$tfm_path
-    fi
-
-    TFM_PATH=`echo $TFM_PATH | tr ':' ' '`
-    AC_MSG_RESULT($TFM_PATH)
-    AC_SUBST(TFM_PATH)
-])
-
-
-AC_DEFUN(STEPMAKE_TEXMF, [
-    # urg, never know what names these teTeX guys will think up
-
-    STEPMAKE_PROGS(METAFONT, mf mfont, $1)
-    STEPMAKE_PROGS(INIMETAFONT, inimf inimfont, $1)
-
-    AC_MSG_CHECKING(for working metafont mode)
-    modelist='ljfour lj4 lj3 lj2 ljet laserjet'
-    for MFMODE in $modelist; do
-    	$METAFONT "\mode:=$MFMODE; mode_setup; end." > /dev/null 2>&1
-	if test -f mfput.tfm; then
-	    break;
-	fi
-    done
-    AC_MSG_RESULT($MFMODE)
-
-    rm -f mfput.*
-
-    AC_SUBST(MFMODE)
-])
-
-
-AC_DEFUN(STEPMAKE_WARN, [
-    AC_MSG_WARN($1)
-    warn_b=yes
-])
-
-
diff --git a/stepmake/autogen.sh b/stepmake/autogen.sh
deleted file mode 100755
index bc99b2d1af..0000000000
--- a/stepmake/autogen.sh
+++ /dev/null
@@ -1,62 +0,0 @@
-#!/bin/sh
-# Run this to generate configure and initial GNUmakefiles
-
-srcdir=`dirname $0`
-
-
-if [ ! -f aclocal.m4 -o stepmake/aclocal.m4 -nt aclocal.m4 ]; then
-    echo "stepmake/aclocal.m4 is newer. Copying file." 
-    cp -f stepmake/aclocal.m4 aclocal.m4
-fi
-
-if [ ! -f autogen.sh -o stepmake/autogen.sh -nt autogen.sh ]; then
-    echo "stepmake/autogen.sh is newer. Copying file." 
-    cp -f stepmake/autogen.sh autogen.sh
-    exec ./autogen.sh
-fi
-
-# Be paranoid: check for autoconf >= 2.50
-# Some setups have both autoconf 2.13 and 2.5x available through
-# a wrapper script: /usr/bin/autoconf.
-# This wrapper may incorrectly autoselect autoconf 2.50, but it
-# advertises itself as autoconf 2.13.
-# If you have such a setup, invoke this script as:
-#   autoconf=autoconf2.50 ./autogen.sh
-for i in autoconf2.50 autoconf-2.50 autoconf  false; do
-  version=`$i --version 2>/dev/null | head -n 1 | awk '{print $NF}' | awk -F. '{print $1 * 100 + $2}'`
-  if test "0$version" -ge 250; then
-    autoconf=$i
-    break
-  fi
-done
-
-if test -z "$autoconf"; then
-    echo "ERROR: Please install autoconf 2.50 or newer"
-    exit 1
-fi
-
-if test -z "$*"; then
-  echo "WARNING: I am going to run \`configure' with no arguments."
-  echo "If you wish to pass any to it, please specify them on the"
-  echo \`$0\'" command line."
-  echo
-fi
-
-for coin in $srcdir/configure.in #`find $srcdir -name configure.in -print`
-do 
-  dr=`dirname $coin`
-  echo processing $dr
-  (
-      cd $dr
-      echo "Running autoconf ..."
-      $autoconf
-  )
-done
-
-#conf_flags="--enable-maintainer-mode --enable-compile-warnings" #--enable-iso-c
-if test -z "$NOCONFIGURE"; then
-  echo Running $srcdir/configure $conf_flags "$@" ...
-  $srcdir/configure $conf_flags "$@"
-else
-  echo Skipping configure process.
-fi
diff --git a/stepmake/bin/GNUmakefile b/stepmake/bin/GNUmakefile
deleted file mode 100644
index c5da573a94..0000000000
--- a/stepmake/bin/GNUmakefile
+++ /dev/null
@@ -1,11 +0,0 @@
-# bin/Makefile
-
-depth = ../..
-EXTRA_DIST_FILES = install-sh config.sub config.guess
-STEPMAKE_TEMPLATES=script install
-
-include $(depth)/make/stepmake.make 
-
-POST_INSTALL=chmod 755 $(datadir)/bin/*
-INSTALLATION_DIR=$(datadir)/bin
-INSTALLATION_FILES=$(DIST_FILES)
diff --git a/stepmake/bin/add-html-footer.py b/stepmake/bin/add-html-footer.py
deleted file mode 100644
index 22e5875c55..0000000000
--- a/stepmake/bin/add-html-footer.py
+++ /dev/null
@@ -1,293 +0,0 @@
-#!@PYTHON@
-
-"""
-Print a nice footer.  add the top of the ChangeLog file (up to the ********)
-"""
-import re
-import sys
-import os
-import time
-import string 
-import getopt
-
-gcos = "unknown"
-index_url=''
-top_url=''
-changelog_file=''
-package_name = ''
-package_version = ''
-
-mail_address = '(address unknown)'
-try:
-	mail_address= os.environ['MAILADDRESS']
-except KeyError:
-	pass
-
-webmaster= mail_address
-try:
-	webmaster= os.environ['WEBMASTER']
-except KeyError:
-	pass
-
-header_file = ''
-footer_file = ''
-default_header = r"""
-"""
-
-
-wiki_base = 'http://afavant.elte.hu/lywiki/'
-
-
-default_footer = r"""<hr>Please take me <a href=@INDEX@>back to the index</a>
-of @PACKAGE_NAME@
-"""
-
-built = r"""
-<p>
-<table align="center" width="100%%" cellspacing="2" BGCOLOR="#e8ffe8">
- <tr>
-          <td align=left>
-
-<a href="%(wiki_base)s%(wiki_page)s">Read </a> comments on this page, or
-<a href="%(wiki_base)s%(wiki_page)s?action=edit">add</a> one.
-<p>
-<font size="-1">
-This page is for %(package_name)s-%(package_version)s (%(branch_str)s). <br>
-</font>
-<address><font size="-1">
-Report errors to &lt;<a href="mailto:%(mail_address)s">%(mail_address)s</a>&gt;.</font></address>
-        </tr>
-        </table>
-
-
-"""
-
-
-def gulp_file (f):
-	try:
-		i = open(f)
-		i.seek (0, 2)
-		n = i.tell ()
-		i.seek (0,0)
-	except:
-		sys.stderr.write ("can't open file: %s\n" % f)
-		return ''
-	s = i.read (n)
-	if len (s) <= 0:
-		sys.stderr.write ("gulped empty file: %s\n" % f)
-	i.close ()
-	return s
-
-def help ():
-	sys.stdout.write (r"""Usage: add-html-footer [OPTIONS]... HTML-FILE
-Add header, footer and top of ChangLog file (up to the ********) to HTML-FILE
-
-Options:
-  --changelog=FILE          use FILE as ChangeLog [ChangeLog]
-  --footer=FILE             use FILE as footer
-  --header=FILE             use FILE as header
-  -h, --help                print this help
-  --index=URL               set homepage to URL
-  --name=NAME               set package_name to NAME
-  --version=VERSION         set package version to VERSION
-
-""")
-	sys.exit (0)
-
-(options, files) = getopt.getopt(sys.argv[1:], 'h', [
-	'changelog=', 'footer=', 'header=', 'help', 'index=',
-	'name=', 'version=']) 
-
-for opt in options:
-	o = opt[0]
-	a = opt[1]
-	if o == '--changelog':
-		changelog_file = a
-	elif o == '--footer':
-		footer_file = a
-	elif o == '--header':
-		header_file = a
-	elif o == '-h' or o == '--help':
-		help ()
-	# urg, this is top!
-	elif o == '--index':
-		index_url = a
-	elif o == '--name':
-		package_name = a
-	elif o == '--version':
-		package_version = a
-	else:
-		raise 'unknown opt ', o
-
-#burp?
-def set_gcos ():
-	global gcos
-	os.environ["CONFIGSUFFIX"] = 'www';
-	if os.name == 'nt':
-		import ntpwd
-		pw = ntpwd.getpwname(os.environ['USERNAME'])
-	else:
-		import pwd
-		if os.environ.has_key('FAKEROOTKEY') and os.environ.has_key('LOGNAME'):
-			pw = pwd.getpwnam (os.environ['LOGNAME'])
-		else:
-			pw = pwd.getpwuid (os.getuid())
-
-	f = pw[4]
-	f = string.split (f, ',')[0]
-	gcos = f 
-
-def compose (default, file):
-	s = default
-	if file:
-		s = gulp_file (file)
-	return s
-
-set_gcos ()
-localtime = time.strftime ('%c %Z', time.localtime (time.time ()))
-
-if os.path.basename (index_url) != "index.html":
-	index_url = os.path.join (index_url , "index.html")
-top_url = os.path.dirname (index_url) + "/"
-
-header = compose (default_header, header_file)
-
-# compose (default_footer, footer_file)
-footer =  built
-header_tag = '<!-- header_tag -->'
-footer_tag = '<!-- footer_tag -->'
-
-# Python < 1.5.2 compatibility
-#
-# On most platforms, this is equivalent to
-#`normpath(join(os.getcwd()), PATH)'.  *Added in Python version 1.5.2*
-if os.path.__dict__.has_key ('abspath'):
-	abspath = os.path.abspath
-else:
-	def abspath (path):
-		return os.path.normpath (os.path.join (os.getcwd (), path))
-
-
-def remove_self_ref (s):	
-	self_url = abspath (os.getcwd () + '/' + f)
-	#sys.stderr.write ('url0: %s\n' % self_url)
-
-	# self_url = re.sub ('.*?' + string.lower (package_name) + '[^/]*/',
-	#		 '', self_url)
-	# URG - this only works when source tree is unpacked in `src/' dir
-	# For some reason, .*? still eats away
-	#     /home/fred/usr/src/lilypond-1.5.14/Documentation/user/out-www/lilypond/
-	# instead of just
-	#
-	#     /home/fred/usr/src/lilypond-1.5.14/
-	#
-	#     Tutorial.html
-	self_url = re.sub ('.*?src/' + string.lower (package_name) + '[^/]*/',
-			 '', self_url)
-
-	#sys.stderr.write ('url1: %s\n' % self_url)
-	
-	#urg, ugly lily-specific toplevel index hack
-	self_url = re.sub ('.*topdocs/out-www/index.html', 'index.html', self_url)
-	#sys.stderr.write ('url2: %s\n' % self_url)
-
-	# ugh, python2.[12] re is broken.
-	## pat = re.compile ('.*?(<a href="[\./]*' + self_url + '#?[^"]*">)([^<]*)(</a>)', re.DOTALL)
-	pat = re.compile ('[.\n]*?(<a href="[\./]*' + self_url + '#?[^"]*">)([^<]*)(</a>)')
-	m = pat.search (s)
-	while m:
-		#sys.stderr.write ('self: %s\n' % m.group (2))
-		s = s[:m.start (1)] + m.group (2) + s[m.end (3):]
-		m = pat.search (s)
-	return s
-
-def do_file (f):
-	s = gulp_file (f)
-	s = re.sub ('%', '%%', s)
-
-	if changelog_file:
-		changes = gulp_file (changelog_file)
-		# urg?
-		#m = re.search ('^\\\\*\\\\*', changes)
-		m = re.search (r'\*\*\*', changes)
-		if m:
-			changes = changes[:m.start (0)]
-		s = re.sub ('top_of_ChangeLog', '<pre>\n'+ changes  + '\n</pre>\n', s)
-
-	if re.search (header_tag, s) == None:
-		body = '<BODY BGCOLOR=WHITE TEXT=BLACK>'
-		s = re.sub ('(?i)<body>', body, s)
-		if re.search ('(?i)<BODY', s):
-			s = re.sub ('(?i)<body[^>]*>', body + header, s, 1)
-		elif re.search ('(?i)<html', s):		
-			s = re.sub ('(?i)<html>', '<HTML>' + header, s, 1)
-		else:
-			s = header + s
-
-		s = header_tag + '\n' + s
-
-		if re.search ('(?i)<!DOCTYPE', s) == None:
-			doctype = '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">\n'
-			s = doctype + s
-
-	if re.search (footer_tag, s) == None:
-		s = s + footer_tag + '\n'
-
-		if re.search ('(?i)</body', s):
-			s = re.sub ('(?i)</body>', footer + '</BODY>', s, 1)
-		elif re.search ('(?i)</html', s):		
-			s = re.sub ('(?i)</html>', footer + '</HTML>', s, 1)
-		else:
-			s = s + footer
-
-
-	#URUGRGOUSNGUOUNRIU
-	index = index_url
-	top = top_url
-	if os.path.basename (f) == "index.html":
-		cwd = os.getcwd ()
-		if os.path.basename (cwd) == "topdocs":
-			index = "index.html"
-			top = ""
-
-		# don't cause ///////index.html entries in log files.
-		#	index = "./index.html"
-		#	top = "./"
-
-
-	versiontup = string.split(package_version, '.')
-	branch_str = 'stable-branch'
-	if string.atoi ( versiontup[1]) %  2:
-		branch_str = 'development-branch'
-
-	wiki_page = ('v%s.%s-' % (versiontup[0], versiontup[1]) +  f)
-	wiki_page = re.sub ('out-www/', '', wiki_page)
-	wiki_page = re.sub ('/', '-', wiki_page) 
-	wiki_page = re.sub (r'\.-', '', wiki_page) 
-	wiki_page = re.sub ('.html', '', wiki_page)
-
-	subst = globals ()
-	subst.update (locals())
-	
-	
-	s = s % subst
-	
-	# urg
-	# maybe find first node?
-	fallback_web_title = '-- --'
-
-	# ugh, python2.[12] re is broken.
-	#m = re.match ('.*?<title>\(.*?\)</title>', s, re.DOTALL)
-	m = re.match ('[.\n]*?<title>([.\n]*?)</title>', s)
-	if m:
-		fallback_web_title = m.group (1)
-	s = re.sub ('@WEB-TITLE@', fallback_web_title, s)
-	
-	s = remove_self_ref (s)
-
-	open (f, 'w').write (s)
-
-
-for f in files:
-	do_file (f)
-
diff --git a/stepmake/bin/config.guess b/stepmake/bin/config.guess
deleted file mode 100755
index a1a58a86cc..0000000000
--- a/stepmake/bin/config.guess
+++ /dev/null
@@ -1,1321 +0,0 @@
-#! /bin/sh
-# Attempt to guess a canonical system name.
-#   Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
-#   2000, 2001, 2002 Free Software Foundation, Inc.
-
-timestamp='2002-03-20'
-
-# This file is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful, but
-# WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-# General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-#
-# As a special exception to the GNU General Public License, if you
-# distribute this file as part of a program that contains a
-# configuration script generated by Autoconf, you may include it under
-# the same distribution terms that you use for the rest of that program.
-
-# Originally written by Per Bothner <per@bothner.com>.
-# Please send patches to <config-patches@gnu.org>.  Submit a context
-# diff and a properly formatted ChangeLog entry.
-#
-# This script attempts to guess a canonical system name similar to
-# config.sub.  If it succeeds, it prints the system name on stdout, and
-# exits with 0.  Otherwise, it exits with 1.
-#
-# The plan is that this can be called by configure scripts if you
-# don't specify an explicit build system type.
-
-me=`echo "$0" | sed -e 's,.*/,,'`
-
-usage="\
-Usage: $0 [OPTIONS]
-
-Output the configuration name of the system \`$me' is run on.
-
-Operation modes:
-  -h, --help         print this help, then exit
-  -t, --time-stamp   print date of last modification, then exit
-  -v, --version      print version number, then exit
-
-Report bugs and patches to <config-patches@gnu.org>."
-
-version="\
-GNU config.guess ($timestamp)
-
-Originally written by Per Bothner.
-Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001
-Free Software Foundation, Inc.
-
-This is free software; see the source for copying conditions.  There is NO
-warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
-
-help="
-Try \`$me --help' for more information."
-
-# Parse command line
-while test $# -gt 0 ; do
-  case $1 in
-    --time-stamp | --time* | -t )
-       echo "$timestamp" ; exit 0 ;;
-    --version | -v )
-       echo "$version" ; exit 0 ;;
-    --help | --h* | -h )
-       echo "$usage"; exit 0 ;;
-    -- )     # Stop option processing
-       shift; break ;;
-    - )	# Use stdin as input.
-       break ;;
-    -* )
-       echo "$me: invalid option $1$help" >&2
-       exit 1 ;;
-    * )
-       break ;;
-  esac
-done
-
-if test $# != 0; then
-  echo "$me: too many arguments$help" >&2
-  exit 1
-fi
-
-
-dummy=dummy-$$
-trap 'rm -f $dummy.c $dummy.o $dummy.rel $dummy; exit 1' 1 2 15
-
-# CC_FOR_BUILD -- compiler used by this script.
-# Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still
-# use `HOST_CC' if defined, but it is deprecated.
-
-set_cc_for_build='case $CC_FOR_BUILD,$HOST_CC,$CC in
- ,,)    echo "int dummy(){}" > $dummy.c ;
-	for c in cc gcc c89 c99 ; do
-	  ($c $dummy.c -c -o $dummy.o) >/dev/null 2>&1 ;
-	  if test $? = 0 ; then
-	     CC_FOR_BUILD="$c"; break ;
-	  fi ;
-	done ;
-	rm -f $dummy.c $dummy.o $dummy.rel ;
-	if test x"$CC_FOR_BUILD" = x ; then
-	  CC_FOR_BUILD=no_compiler_found ;
-	fi
-	;;
- ,,*)   CC_FOR_BUILD=$CC ;;
- ,*,*)  CC_FOR_BUILD=$HOST_CC ;;
-esac'
-
-# This is needed to find uname on a Pyramid OSx when run in the BSD universe.
-# (ghazi@noc.rutgers.edu 1994-08-24)
-if (test -f /.attbin/uname) >/dev/null 2>&1 ; then
-	PATH=$PATH:/.attbin ; export PATH
-fi
-
-UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown
-UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown
-UNAME_SYSTEM=`(uname -s) 2>/dev/null`  || UNAME_SYSTEM=unknown
-UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown
-
-# Note: order is significant - the case branches are not exclusive.
-
-case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
-    *:NetBSD:*:*)
-	# NetBSD (nbsd) targets should (where applicable) match one or
-	# more of the tupples: *-*-netbsdelf*, *-*-netbsdaout*,
-	# *-*-netbsdecoff* and *-*-netbsd*.  For targets that recently
-	# switched to ELF, *-*-netbsd* would select the old
-	# object file format.  This provides both forward
-	# compatibility and a consistent mechanism for selecting the
-	# object file format.
-	#
-	# Note: NetBSD doesn't particularly care about the vendor
-	# portion of the name.  We always set it to "unknown".
-	sysctl="sysctl -n hw.machine_arch"
-	UNAME_MACHINE_ARCH=`(/sbin/$sysctl 2>/dev/null || \
-	    /usr/sbin/$sysctl 2>/dev/null || echo unknown)`
-	case "${UNAME_MACHINE_ARCH}" in
-	    arm*) machine=arm-unknown ;;
-	    sh3el) machine=shl-unknown ;;
-	    sh3eb) machine=sh-unknown ;;
-	    *) machine=${UNAME_MACHINE_ARCH}-unknown ;;
-	esac
-	# The Operating System including object format, if it has switched
-	# to ELF recently, or will in the future.
-	case "${UNAME_MACHINE_ARCH}" in
-	    arm*|i386|m68k|ns32k|sh3*|sparc|vax)
-		eval $set_cc_for_build
-		if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \
-			| grep __ELF__ >/dev/null
-		then
-		    # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout).
-		    # Return netbsd for either.  FIX?
-		    os=netbsd
-		else
-		    os=netbsdelf
-		fi
-		;;
-	    *)
-	        os=netbsd
-		;;
-	esac
-	# The OS release
-	release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'`
-	# Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM:
-	# contains redundant information, the shorter form:
-	# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used.
-	echo "${machine}-${os}${release}"
-	exit 0 ;;
-    amiga:OpenBSD:*:*)
-	echo m68k-unknown-openbsd${UNAME_RELEASE}
-	exit 0 ;;
-    arc:OpenBSD:*:*)
-	echo mipsel-unknown-openbsd${UNAME_RELEASE}
-	exit 0 ;;
-    hp300:OpenBSD:*:*)
-	echo m68k-unknown-openbsd${UNAME_RELEASE}
-	exit 0 ;;
-    mac68k:OpenBSD:*:*)
-	echo m68k-unknown-openbsd${UNAME_RELEASE}
-	exit 0 ;;
-    macppc:OpenBSD:*:*)
-	echo powerpc-unknown-openbsd${UNAME_RELEASE}
-	exit 0 ;;
-    mvme68k:OpenBSD:*:*)
-	echo m68k-unknown-openbsd${UNAME_RELEASE}
-	exit 0 ;;
-    mvme88k:OpenBSD:*:*)
-	echo m88k-unknown-openbsd${UNAME_RELEASE}
-	exit 0 ;;
-    mvmeppc:OpenBSD:*:*)
-	echo powerpc-unknown-openbsd${UNAME_RELEASE}
-	exit 0 ;;
-    pmax:OpenBSD:*:*)
-	echo mipsel-unknown-openbsd${UNAME_RELEASE}
-	exit 0 ;;
-    sgi:OpenBSD:*:*)
-	echo mipseb-unknown-openbsd${UNAME_RELEASE}
-	exit 0 ;;
-    sun3:OpenBSD:*:*)
-	echo m68k-unknown-openbsd${UNAME_RELEASE}
-	exit 0 ;;
-    wgrisc:OpenBSD:*:*)
-	echo mipsel-unknown-openbsd${UNAME_RELEASE}
-	exit 0 ;;
-    *:OpenBSD:*:*)
-	echo ${UNAME_MACHINE}-unknown-openbsd${UNAME_RELEASE}
-	exit 0 ;;
-    alpha:OSF1:*:*)
-	if test $UNAME_RELEASE = "V4.0"; then
-		UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'`
-	fi
-	# A Vn.n version is a released version.
-	# A Tn.n version is a released field test version.
-	# A Xn.n version is an unreleased experimental baselevel.
-	# 1.2 uses "1.2" for uname -r.
-	cat <<EOF >$dummy.s
-	.data
-\$Lformat:
-	.byte 37,100,45,37,120,10,0	# "%d-%x\n"
-
-	.text
-	.globl main
-	.align 4
-	.ent main
-main:
-	.frame \$30,16,\$26,0
-	ldgp \$29,0(\$27)
-	.prologue 1
-	.long 0x47e03d80 # implver \$0
-	lda \$2,-1
-	.long 0x47e20c21 # amask \$2,\$1
-	lda \$16,\$Lformat
-	mov \$0,\$17
-	not \$1,\$18
-	jsr \$26,printf
-	ldgp \$29,0(\$26)
-	mov 0,\$16
-	jsr \$26,exit
-	.end main
-EOF
-	eval $set_cc_for_build
-	$CC_FOR_BUILD $dummy.s -o $dummy 2>/dev/null
-	if test "$?" = 0 ; then
-		case `./$dummy` in
-			0-0)
-				UNAME_MACHINE="alpha"
-				;;
-			1-0)
-				UNAME_MACHINE="alphaev5"
-				;;
-			1-1)
-				UNAME_MACHINE="alphaev56"
-				;;
-			1-101)
-				UNAME_MACHINE="alphapca56"
-				;;
-			2-303)
-				UNAME_MACHINE="alphaev6"
-				;;
-			2-307)
-				UNAME_MACHINE="alphaev67"
-				;;
-			2-1307)
-				UNAME_MACHINE="alphaev68"
-				;;
-		esac
-	fi
-	rm -f $dummy.s $dummy
-	echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[VTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
-	exit 0 ;;
-    Alpha\ *:Windows_NT*:*)
-	# How do we know it's Interix rather than the generic POSIX subsystem?
-	# Should we change UNAME_MACHINE based on the output of uname instead
-	# of the specific Alpha model?
-	echo alpha-pc-interix
-	exit 0 ;;
-    21064:Windows_NT:50:3)
-	echo alpha-dec-winnt3.5
-	exit 0 ;;
-    Amiga*:UNIX_System_V:4.0:*)
-	echo m68k-unknown-sysv4
-	exit 0;;
-    *:[Aa]miga[Oo][Ss]:*:*)
-	echo ${UNAME_MACHINE}-unknown-amigaos
-	exit 0 ;;
-    *:[Mm]orph[Oo][Ss]:*:*)
-	echo ${UNAME_MACHINE}-unknown-morphos
-	exit 0 ;;
-    *:OS/390:*:*)
-	echo i370-ibm-openedition
-	exit 0 ;;
-    arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*)
-	echo arm-acorn-riscix${UNAME_RELEASE}
-	exit 0;;
-    SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*)
-	echo hppa1.1-hitachi-hiuxmpp
-	exit 0;;
-    Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*)
-	# akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE.
-	if test "`(/bin/universe) 2>/dev/null`" = att ; then
-		echo pyramid-pyramid-sysv3
-	else
-		echo pyramid-pyramid-bsd
-	fi
-	exit 0 ;;
-    NILE*:*:*:dcosx)
-	echo pyramid-pyramid-svr4
-	exit 0 ;;
-    sun4H:SunOS:5.*:*)
-	echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
-	exit 0 ;;
-    sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*)
-	echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
-	exit 0 ;;
-    i86pc:SunOS:5.*:*)
-	echo i386-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
-	exit 0 ;;
-    sun4*:SunOS:6*:*)
-	# According to config.sub, this is the proper way to canonicalize
-	# SunOS6.  Hard to guess exactly what SunOS6 will be like, but
-	# it's likely to be more like Solaris than SunOS4.
-	echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
-	exit 0 ;;
-    sun4*:SunOS:*:*)
-	case "`/usr/bin/arch -k`" in
-	    Series*|S4*)
-		UNAME_RELEASE=`uname -v`
-		;;
-	esac
-	# Japanese Language versions have a version number like `4.1.3-JL'.
-	echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'`
-	exit 0 ;;
-    sun3*:SunOS:*:*)
-	echo m68k-sun-sunos${UNAME_RELEASE}
-	exit 0 ;;
-    sun*:*:4.2BSD:*)
-	UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null`
-	test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3
-	case "`/bin/arch`" in
-	    sun3)
-		echo m68k-sun-sunos${UNAME_RELEASE}
-		;;
-	    sun4)
-		echo sparc-sun-sunos${UNAME_RELEASE}
-		;;
-	esac
-	exit 0 ;;
-    aushp:SunOS:*:*)
-	echo sparc-auspex-sunos${UNAME_RELEASE}
-	exit 0 ;;
-    # The situation for MiNT is a little confusing.  The machine name
-    # can be virtually everything (everything which is not
-    # "atarist" or "atariste" at least should have a processor
-    # > m68000).  The system name ranges from "MiNT" over "FreeMiNT"
-    # to the lowercase version "mint" (or "freemint").  Finally
-    # the system name "TOS" denotes a system which is actually not
-    # MiNT.  But MiNT is downward compatible to TOS, so this should
-    # be no problem.
-    atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*)
-        echo m68k-atari-mint${UNAME_RELEASE}
-	exit 0 ;;
-    atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*)
-	echo m68k-atari-mint${UNAME_RELEASE}
-        exit 0 ;;
-    *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*)
-        echo m68k-atari-mint${UNAME_RELEASE}
-	exit 0 ;;
-    milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*)
-        echo m68k-milan-mint${UNAME_RELEASE}
-        exit 0 ;;
-    hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*)
-        echo m68k-hades-mint${UNAME_RELEASE}
-        exit 0 ;;
-    *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*)
-        echo m68k-unknown-mint${UNAME_RELEASE}
-        exit 0 ;;
-    powerpc:machten:*:*)
-	echo powerpc-apple-machten${UNAME_RELEASE}
-	exit 0 ;;
-    RISC*:Mach:*:*)
-	echo mips-dec-mach_bsd4.3
-	exit 0 ;;
-    RISC*:ULTRIX:*:*)
-	echo mips-dec-ultrix${UNAME_RELEASE}
-	exit 0 ;;
-    VAX*:ULTRIX*:*:*)
-	echo vax-dec-ultrix${UNAME_RELEASE}
-	exit 0 ;;
-    2020:CLIX:*:* | 2430:CLIX:*:*)
-	echo clipper-intergraph-clix${UNAME_RELEASE}
-	exit 0 ;;
-    mips:*:*:UMIPS | mips:*:*:RISCos)
-	eval $set_cc_for_build
-	sed 's/^	//' << EOF >$dummy.c
-#ifdef __cplusplus
-#include <stdio.h>  /* for printf() prototype */
-	int main (int argc, char *argv[]) {
-#else
-	int main (argc, argv) int argc; char *argv[]; {
-#endif
-	#if defined (host_mips) && defined (MIPSEB)
-	#if defined (SYSTYPE_SYSV)
-	  printf ("mips-mips-riscos%ssysv\n", argv[1]); exit (0);
-	#endif
-	#if defined (SYSTYPE_SVR4)
-	  printf ("mips-mips-riscos%ssvr4\n", argv[1]); exit (0);
-	#endif
-	#if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD)
-	  printf ("mips-mips-riscos%sbsd\n", argv[1]); exit (0);
-	#endif
-	#endif
-	  exit (-1);
-	}
-EOF
-	$CC_FOR_BUILD $dummy.c -o $dummy \
-	  && ./$dummy `echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` \
-	  && rm -f $dummy.c $dummy && exit 0
-	rm -f $dummy.c $dummy
-	echo mips-mips-riscos${UNAME_RELEASE}
-	exit 0 ;;
-    Motorola:PowerMAX_OS:*:*)
-	echo powerpc-motorola-powermax
-	exit 0 ;;
-    Night_Hawk:Power_UNIX:*:*)
-	echo powerpc-harris-powerunix
-	exit 0 ;;
-    m88k:CX/UX:7*:*)
-	echo m88k-harris-cxux7
-	exit 0 ;;
-    m88k:*:4*:R4*)
-	echo m88k-motorola-sysv4
-	exit 0 ;;
-    m88k:*:3*:R3*)
-	echo m88k-motorola-sysv3
-	exit 0 ;;
-    AViiON:dgux:*:*)
-        # DG/UX returns AViiON for all architectures
-        UNAME_PROCESSOR=`/usr/bin/uname -p`
-	if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ]
-	then
-	    if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \
-	       [ ${TARGET_BINARY_INTERFACE}x = x ]
-	    then
-		echo m88k-dg-dgux${UNAME_RELEASE}
-	    else
-		echo m88k-dg-dguxbcs${UNAME_RELEASE}
-	    fi
-	else
-	    echo i586-dg-dgux${UNAME_RELEASE}
-	fi
- 	exit 0 ;;
-    M88*:DolphinOS:*:*)	# DolphinOS (SVR3)
-	echo m88k-dolphin-sysv3
-	exit 0 ;;
-    M88*:*:R3*:*)
-	# Delta 88k system running SVR3
-	echo m88k-motorola-sysv3
-	exit 0 ;;
-    XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3)
-	echo m88k-tektronix-sysv3
-	exit 0 ;;
-    Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD)
-	echo m68k-tektronix-bsd
-	exit 0 ;;
-    *:IRIX*:*:*)
-	echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'`
-	exit 0 ;;
-    ????????:AIX?:[12].1:2)   # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX.
-	echo romp-ibm-aix      # uname -m gives an 8 hex-code CPU id
-	exit 0 ;;              # Note that: echo "'`uname -s`'" gives 'AIX '
-    i*86:AIX:*:*)
-	echo i386-ibm-aix
-	exit 0 ;;
-    ia64:AIX:*:*)
-	if [ -x /usr/bin/oslevel ] ; then
-		IBM_REV=`/usr/bin/oslevel`
-	else
-		IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE}
-	fi
-	echo ${UNAME_MACHINE}-ibm-aix${IBM_REV}
-	exit 0 ;;
-    *:AIX:2:3)
-	if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then
-		eval $set_cc_for_build
-		sed 's/^		//' << EOF >$dummy.c
-		#include <sys/systemcfg.h>
-
-		main()
-			{
-			if (!__power_pc())
-				exit(1);
-			puts("powerpc-ibm-aix3.2.5");
-			exit(0);
-			}
-EOF
-		$CC_FOR_BUILD $dummy.c -o $dummy && ./$dummy && rm -f $dummy.c $dummy && exit 0
-		rm -f $dummy.c $dummy
-		echo rs6000-ibm-aix3.2.5
-	elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then
-		echo rs6000-ibm-aix3.2.4
-	else
-		echo rs6000-ibm-aix3.2
-	fi
-	exit 0 ;;
-    *:AIX:*:[45])
-	IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'`
-	if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then
-		IBM_ARCH=rs6000
-	else
-		IBM_ARCH=powerpc
-	fi
-	if [ -x /usr/bin/oslevel ] ; then
-		IBM_REV=`/usr/bin/oslevel`
-	else
-		IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE}
-	fi
-	echo ${IBM_ARCH}-ibm-aix${IBM_REV}
-	exit 0 ;;
-    *:AIX:*:*)
-	echo rs6000-ibm-aix
-	exit 0 ;;
-    ibmrt:4.4BSD:*|romp-ibm:BSD:*)
-	echo romp-ibm-bsd4.4
-	exit 0 ;;
-    ibmrt:*BSD:*|romp-ibm:BSD:*)            # covers RT/PC BSD and
-	echo romp-ibm-bsd${UNAME_RELEASE}   # 4.3 with uname added to
-	exit 0 ;;                           # report: romp-ibm BSD 4.3
-    *:BOSX:*:*)
-	echo rs6000-bull-bosx
-	exit 0 ;;
-    DPX/2?00:B.O.S.:*:*)
-	echo m68k-bull-sysv3
-	exit 0 ;;
-    9000/[34]??:4.3bsd:1.*:*)
-	echo m68k-hp-bsd
-	exit 0 ;;
-    hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*)
-	echo m68k-hp-bsd4.4
-	exit 0 ;;
-    9000/[34678]??:HP-UX:*:*)
-	HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'`
-	case "${UNAME_MACHINE}" in
-	    9000/31? )            HP_ARCH=m68000 ;;
-	    9000/[34]?? )         HP_ARCH=m68k ;;
-	    9000/[678][0-9][0-9])
-		if [ -x /usr/bin/getconf ]; then
-		    sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null`
-                    sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null`
-                    case "${sc_cpu_version}" in
-                      523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0
-                      528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1
-                      532)                      # CPU_PA_RISC2_0
-                        case "${sc_kernel_bits}" in
-                          32) HP_ARCH="hppa2.0n" ;;
-                          64) HP_ARCH="hppa2.0w" ;;
-			  '') HP_ARCH="hppa2.0" ;;   # HP-UX 10.20
-                        esac ;;
-                    esac
-		fi
-		if [ "${HP_ARCH}" = "" ]; then
-		    eval $set_cc_for_build
-		    sed 's/^              //' << EOF >$dummy.c
-
-              #define _HPUX_SOURCE
-              #include <stdlib.h>
-              #include <unistd.h>
-
-              int main ()
-              {
-              #if defined(_SC_KERNEL_BITS)
-                  long bits = sysconf(_SC_KERNEL_BITS);
-              #endif
-                  long cpu  = sysconf (_SC_CPU_VERSION);
-
-                  switch (cpu)
-              	{
-              	case CPU_PA_RISC1_0: puts ("hppa1.0"); break;
-              	case CPU_PA_RISC1_1: puts ("hppa1.1"); break;
-              	case CPU_PA_RISC2_0:
-              #if defined(_SC_KERNEL_BITS)
-              	    switch (bits)
-              		{
-              		case 64: puts ("hppa2.0w"); break;
-              		case 32: puts ("hppa2.0n"); break;
-              		default: puts ("hppa2.0"); break;
-              		} break;
-              #else  /* !defined(_SC_KERNEL_BITS) */
-              	    puts ("hppa2.0"); break;
-              #endif
-              	default: puts ("hppa1.0"); break;
-              	}
-                  exit (0);
-              }
-EOF
-		    (CCOPTS= $CC_FOR_BUILD $dummy.c -o $dummy 2>/dev/null) && HP_ARCH=`./$dummy`
-		    if test -z "$HP_ARCH"; then HP_ARCH=hppa; fi
-		    rm -f $dummy.c $dummy
-		fi ;;
-	esac
-	echo ${HP_ARCH}-hp-hpux${HPUX_REV}
-	exit 0 ;;
-    ia64:HP-UX:*:*)
-	HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'`
-	echo ia64-hp-hpux${HPUX_REV}
-	exit 0 ;;
-    3050*:HI-UX:*:*)
-	eval $set_cc_for_build
-	sed 's/^	//' << EOF >$dummy.c
-	#include <unistd.h>
-	int
-	main ()
-	{
-	  long cpu = sysconf (_SC_CPU_VERSION);
-	  /* The order matters, because CPU_IS_HP_MC68K erroneously returns
-	     true for CPU_PA_RISC1_0.  CPU_IS_PA_RISC returns correct
-	     results, however.  */
-	  if (CPU_IS_PA_RISC (cpu))
-	    {
-	      switch (cpu)
-		{
-		  case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break;
-		  case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break;
-		  case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break;
-		  default: puts ("hppa-hitachi-hiuxwe2"); break;
-		}
-	    }
-	  else if (CPU_IS_HP_MC68K (cpu))
-	    puts ("m68k-hitachi-hiuxwe2");
-	  else puts ("unknown-hitachi-hiuxwe2");
-	  exit (0);
-	}
-EOF
-	$CC_FOR_BUILD $dummy.c -o $dummy && ./$dummy && rm -f $dummy.c $dummy && exit 0
-	rm -f $dummy.c $dummy
-	echo unknown-hitachi-hiuxwe2
-	exit 0 ;;
-    9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* )
-	echo hppa1.1-hp-bsd
-	exit 0 ;;
-    9000/8??:4.3bsd:*:*)
-	echo hppa1.0-hp-bsd
-	exit 0 ;;
-    *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*)
-	echo hppa1.0-hp-mpeix
-	exit 0 ;;
-    hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* )
-	echo hppa1.1-hp-osf
-	exit 0 ;;
-    hp8??:OSF1:*:*)
-	echo hppa1.0-hp-osf
-	exit 0 ;;
-    i*86:OSF1:*:*)
-	if [ -x /usr/sbin/sysversion ] ; then
-	    echo ${UNAME_MACHINE}-unknown-osf1mk
-	else
-	    echo ${UNAME_MACHINE}-unknown-osf1
-	fi
-	exit 0 ;;
-    parisc*:Lites*:*:*)
-	echo hppa1.1-hp-lites
-	exit 0 ;;
-    C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*)
-	echo c1-convex-bsd
-        exit 0 ;;
-    C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*)
-	if getsysinfo -f scalar_acc
-	then echo c32-convex-bsd
-	else echo c2-convex-bsd
-	fi
-        exit 0 ;;
-    C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*)
-	echo c34-convex-bsd
-        exit 0 ;;
-    C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*)
-	echo c38-convex-bsd
-        exit 0 ;;
-    C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*)
-	echo c4-convex-bsd
-        exit 0 ;;
-    CRAY*Y-MP:*:*:*)
-	echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
-	exit 0 ;;
-    CRAY*[A-Z]90:*:*:*)
-	echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \
-	| sed -e 's/CRAY.*\([A-Z]90\)/\1/' \
-	      -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \
-	      -e 's/\.[^.]*$/.X/'
-	exit 0 ;;
-    CRAY*TS:*:*:*)
-	echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
-	exit 0 ;;
-    CRAY*T3D:*:*:*)
-	echo alpha-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
-	exit 0 ;;
-    CRAY*T3E:*:*:*)
-	echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
-	exit 0 ;;
-    CRAY*SV1:*:*:*)
-	echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
-	exit 0 ;;
-    F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*)
-	FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
-        FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`
-        FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'`
-        echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
-        exit 0 ;;
-    i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*)
-	echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE}
-	exit 0 ;;
-    sparc*:BSD/OS:*:*)
-	echo sparc-unknown-bsdi${UNAME_RELEASE}
-	exit 0 ;;
-    *:BSD/OS:*:*)
-	echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE}
-	exit 0 ;;
-    *:FreeBSD:*:*)
-	echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`
-	exit 0 ;;
-    i*:CYGWIN*:*)
-	echo ${UNAME_MACHINE}-pc-cygwin
-	exit 0 ;;
-    i*:MINGW*:*)
-	echo ${UNAME_MACHINE}-pc-mingw32
-	exit 0 ;;
-    i*:PW*:*)
-	echo ${UNAME_MACHINE}-pc-pw32
-	exit 0 ;;
-    x86:Interix*:3*)
-	echo i386-pc-interix3
-	exit 0 ;;
-    i*:Windows_NT*:* | Pentium*:Windows_NT*:*)
-	# How do we know it's Interix rather than the generic POSIX subsystem?
-	# It also conflicts with pre-2.0 versions of AT&T UWIN. Should we
-	# UNAME_MACHINE based on the output of uname instead of i386?
-	echo i386-pc-interix
-	exit 0 ;;
-    i*:UWIN*:*)
-	echo ${UNAME_MACHINE}-pc-uwin
-	exit 0 ;;
-    p*:CYGWIN*:*)
-	echo powerpcle-unknown-cygwin
-	exit 0 ;;
-    prep*:SunOS:5.*:*)
-	echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
-	exit 0 ;;
-    *:GNU:*:*)
-	echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'`
-	exit 0 ;;
-    i*86:Minix:*:*)
-	echo ${UNAME_MACHINE}-pc-minix
-	exit 0 ;;
-    arm*:Linux:*:*)
-	echo ${UNAME_MACHINE}-unknown-linux-gnu
-	exit 0 ;;
-    ia64:Linux:*:*)
-	echo ${UNAME_MACHINE}-unknown-linux-gnu
-	exit 0 ;;
-    m68*:Linux:*:*)
-	echo ${UNAME_MACHINE}-unknown-linux-gnu
-	exit 0 ;;
-    mips:Linux:*:*)
-	eval $set_cc_for_build
-	sed 's/^	//' << EOF >$dummy.c
-	#undef CPU
-	#undef mips
-	#undef mipsel
-	#if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL)
-	CPU=mipsel
-	#else
-	#if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB)
-	CPU=mips
-	#else
-	CPU=
-	#endif
-	#endif
-EOF
-	eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^CPU=`
-	rm -f $dummy.c
-	test x"${CPU}" != x && echo "${CPU}-pc-linux-gnu" && exit 0
-	;;
-    ppc:Linux:*:*)
-	echo powerpc-unknown-linux-gnu
-	exit 0 ;;
-    ppc64:Linux:*:*)
-	echo powerpc64-unknown-linux-gnu
-	exit 0 ;;
-    alpha:Linux:*:*)
-	case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in
-	  EV5)   UNAME_MACHINE=alphaev5 ;;
-	  EV56)  UNAME_MACHINE=alphaev56 ;;
-	  PCA56) UNAME_MACHINE=alphapca56 ;;
-	  PCA57) UNAME_MACHINE=alphapca56 ;;
-	  EV6)   UNAME_MACHINE=alphaev6 ;;
-	  EV67)  UNAME_MACHINE=alphaev67 ;;
-	  EV68*) UNAME_MACHINE=alphaev68 ;;
-        esac
-	objdump --private-headers /bin/sh | grep ld.so.1 >/dev/null
-	if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi
-	echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC}
-	exit 0 ;;
-    parisc:Linux:*:* | hppa:Linux:*:*)
-	# Look for CPU level
-	case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in
-	  PA7*) echo hppa1.1-unknown-linux-gnu ;;
-	  PA8*) echo hppa2.0-unknown-linux-gnu ;;
-	  *)    echo hppa-unknown-linux-gnu ;;
-	esac
-	exit 0 ;;
-    parisc64:Linux:*:* | hppa64:Linux:*:*)
-	echo hppa64-unknown-linux-gnu
-	exit 0 ;;
-    s390:Linux:*:* | s390x:Linux:*:*)
-	echo ${UNAME_MACHINE}-ibm-linux
-	exit 0 ;;
-    sh*:Linux:*:*)
-	echo ${UNAME_MACHINE}-unknown-linux-gnu
-	exit 0 ;;
-    sparc:Linux:*:* | sparc64:Linux:*:*)
-	echo ${UNAME_MACHINE}-unknown-linux-gnu
-	exit 0 ;;
-    x86_64:Linux:*:*)
-	echo x86_64-unknown-linux-gnu
-	exit 0 ;;
-    i*86:Linux:*:*)
-	# The BFD linker knows what the default object file format is, so
-	# first see if it will tell us. cd to the root directory to prevent
-	# problems with other programs or directories called `ld' in the path.
-	# Set LC_ALL=C to ensure ld outputs messages in English.
-	ld_supported_targets=`cd /; LC_ALL=C ld --help 2>&1 \
-			 | sed -ne '/supported targets:/!d
-				    s/[ 	][ 	]*/ /g
-				    s/.*supported targets: *//
-				    s/ .*//
-				    p'`
-        case "$ld_supported_targets" in
-	  elf32-i386)
-		TENTATIVE="${UNAME_MACHINE}-pc-linux-gnu"
-		;;
-	  a.out-i386-linux)
-		echo "${UNAME_MACHINE}-pc-linux-gnuaout"
-		exit 0 ;;		
-	  coff-i386)
-		echo "${UNAME_MACHINE}-pc-linux-gnucoff"
-		exit 0 ;;
-	  "")
-		# Either a pre-BFD a.out linker (linux-gnuoldld) or
-		# one that does not give us useful --help.
-		echo "${UNAME_MACHINE}-pc-linux-gnuoldld"
-		exit 0 ;;
-	esac
-	# Determine whether the default compiler is a.out or elf
-	eval $set_cc_for_build
-	sed 's/^	//' << EOF >$dummy.c
-	#include <features.h>
-	#ifdef __ELF__
-	# ifdef __GLIBC__
-	#  if __GLIBC__ >= 2
-	LIBC=gnu
-	#  else
-	LIBC=gnulibc1
-	#  endif
-	# else
-	LIBC=gnulibc1
-	# endif
-	#else
-	#ifdef __INTEL_COMPILER
-	LIBC=gnu
-	#else
-	LIBC=gnuaout
-	#endif
-	#endif
-EOF
-	eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^LIBC=`
-	rm -f $dummy.c
-	test x"${LIBC}" != x && echo "${UNAME_MACHINE}-pc-linux-${LIBC}" && exit 0
-	test x"${TENTATIVE}" != x && echo "${TENTATIVE}" && exit 0
-	;;
-    i*86:DYNIX/ptx:4*:*)
-	# ptx 4.0 does uname -s correctly, with DYNIX/ptx in there.
-	# earlier versions are messed up and put the nodename in both
-	# sysname and nodename.
-	echo i386-sequent-sysv4
-	exit 0 ;;
-    i*86:UNIX_SV:4.2MP:2.*)
-        # Unixware is an offshoot of SVR4, but it has its own version
-        # number series starting with 2...
-        # I am not positive that other SVR4 systems won't match this,
-	# I just have to hope.  -- rms.
-        # Use sysv4.2uw... so that sysv4* matches it.
-	echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION}
-	exit 0 ;;
-    i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*)
-	UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'`
-	if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then
-		echo ${UNAME_MACHINE}-univel-sysv${UNAME_REL}
-	else
-		echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL}
-	fi
-	exit 0 ;;
-    i*86:*:5:[78]*)
-	case `/bin/uname -X | grep "^Machine"` in
-	    *486*)	     UNAME_MACHINE=i486 ;;
-	    *Pentium)	     UNAME_MACHINE=i586 ;;
-	    *Pent*|*Celeron) UNAME_MACHINE=i686 ;;
-	esac
-	echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION}
-	exit 0 ;;
-    i*86:*:3.2:*)
-	if test -f /usr/options/cb.name; then
-		UNAME_REL=`sed -n 's/.*Version //p' </usr/options/cb.name`
-		echo ${UNAME_MACHINE}-pc-isc$UNAME_REL
-	elif /bin/uname -X 2>/dev/null >/dev/null ; then
-		UNAME_REL=`(/bin/uname -X|egrep Release|sed -e 's/.*= //')`
-		(/bin/uname -X|egrep i80486 >/dev/null) && UNAME_MACHINE=i486
-		(/bin/uname -X|egrep '^Machine.*Pentium' >/dev/null) \
-			&& UNAME_MACHINE=i586
-		(/bin/uname -X|egrep '^Machine.*Pent ?II' >/dev/null) \
-			&& UNAME_MACHINE=i686
-		(/bin/uname -X|egrep '^Machine.*Pentium Pro' >/dev/null) \
-			&& UNAME_MACHINE=i686
-		echo ${UNAME_MACHINE}-pc-sco$UNAME_REL
-	else
-		echo ${UNAME_MACHINE}-pc-sysv32
-	fi
-	exit 0 ;;
-    i*86:*DOS:*:*)
-	echo ${UNAME_MACHINE}-pc-msdosdjgpp
-	exit 0 ;;
-    pc:*:*:*)
-	# Left here for compatibility:
-        # uname -m prints for DJGPP always 'pc', but it prints nothing about
-        # the processor, so we play safe by assuming i386.
-	echo i386-pc-msdosdjgpp
-        exit 0 ;;
-    Intel:Mach:3*:*)
-	echo i386-pc-mach3
-	exit 0 ;;
-    paragon:*:*:*)
-	echo i860-intel-osf1
-	exit 0 ;;
-    i860:*:4.*:*) # i860-SVR4
-	if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then
-	  echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4
-	else # Add other i860-SVR4 vendors below as they are discovered.
-	  echo i860-unknown-sysv${UNAME_RELEASE}  # Unknown i860-SVR4
-	fi
-	exit 0 ;;
-    mini*:CTIX:SYS*5:*)
-	# "miniframe"
-	echo m68010-convergent-sysv
-	exit 0 ;;
-    M68*:*:R3V[567]*:*)
-	test -r /sysV68 && echo 'm68k-motorola-sysv' && exit 0 ;;
-    3[34]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0)
-	OS_REL=''
-	test -r /etc/.relid \
-	&& OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid`
-	/bin/uname -p 2>/dev/null | grep 86 >/dev/null \
-	  && echo i486-ncr-sysv4.3${OS_REL} && exit 0
-	/bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \
-	  && echo i586-ncr-sysv4.3${OS_REL} && exit 0 ;;
-    3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*)
-        /bin/uname -p 2>/dev/null | grep 86 >/dev/null \
-          && echo i486-ncr-sysv4 && exit 0 ;;
-    m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*)
-	echo m68k-unknown-lynxos${UNAME_RELEASE}
-	exit 0 ;;
-    mc68030:UNIX_System_V:4.*:*)
-	echo m68k-atari-sysv4
-	exit 0 ;;
-    i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.0*:*)
-	echo i386-unknown-lynxos${UNAME_RELEASE}
-	exit 0 ;;
-    TSUNAMI:LynxOS:2.*:*)
-	echo sparc-unknown-lynxos${UNAME_RELEASE}
-	exit 0 ;;
-    rs6000:LynxOS:2.*:*)
-	echo rs6000-unknown-lynxos${UNAME_RELEASE}
-	exit 0 ;;
-    PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.0*:*)
-	echo powerpc-unknown-lynxos${UNAME_RELEASE}
-	exit 0 ;;
-    SM[BE]S:UNIX_SV:*:*)
-	echo mips-dde-sysv${UNAME_RELEASE}
-	exit 0 ;;
-    RM*:ReliantUNIX-*:*:*)
-	echo mips-sni-sysv4
-	exit 0 ;;
-    RM*:SINIX-*:*:*)
-	echo mips-sni-sysv4
-	exit 0 ;;
-    *:SINIX-*:*:*)
-	if uname -p 2>/dev/null >/dev/null ; then
-		UNAME_MACHINE=`(uname -p) 2>/dev/null`
-		echo ${UNAME_MACHINE}-sni-sysv4
-	else
-		echo ns32k-sni-sysv
-	fi
-	exit 0 ;;
-    PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort
-                      # says <Richard.M.Bartel@ccMail.Census.GOV>
-        echo i586-unisys-sysv4
-        exit 0 ;;
-    *:UNIX_System_V:4*:FTX*)
-	# From Gerald Hewes <hewes@openmarket.com>.
-	# How about differentiating between stratus architectures? -djm
-	echo hppa1.1-stratus-sysv4
-	exit 0 ;;
-    *:*:*:FTX*)
-	# From seanf@swdc.stratus.com.
-	echo i860-stratus-sysv4
-	exit 0 ;;
-    *:VOS:*:*)
-	# From Paul.Green@stratus.com.
-	echo hppa1.1-stratus-vos
-	exit 0 ;;
-    mc68*:A/UX:*:*)
-	echo m68k-apple-aux${UNAME_RELEASE}
-	exit 0 ;;
-    news*:NEWS-OS:6*:*)
-	echo mips-sony-newsos6
-	exit 0 ;;
-    R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*)
-	if [ -d /usr/nec ]; then
-	        echo mips-nec-sysv${UNAME_RELEASE}
-	else
-	        echo mips-unknown-sysv${UNAME_RELEASE}
-	fi
-        exit 0 ;;
-    BeBox:BeOS:*:*)	# BeOS running on hardware made by Be, PPC only.
-	echo powerpc-be-beos
-	exit 0 ;;
-    BeMac:BeOS:*:*)	# BeOS running on Mac or Mac clone, PPC only.
-	echo powerpc-apple-beos
-	exit 0 ;;
-    BePC:BeOS:*:*)	# BeOS running on Intel PC compatible.
-	echo i586-pc-beos
-	exit 0 ;;
-    SX-4:SUPER-UX:*:*)
-	echo sx4-nec-superux${UNAME_RELEASE}
-	exit 0 ;;
-    SX-5:SUPER-UX:*:*)
-	echo sx5-nec-superux${UNAME_RELEASE}
-	exit 0 ;;
-    Power*:Rhapsody:*:*)
-	echo powerpc-apple-rhapsody${UNAME_RELEASE}
-	exit 0 ;;
-    *:Rhapsody:*:*)
-	echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE}
-	exit 0 ;;
-    *:Darwin:*:*)
-	echo `uname -p`-apple-darwin${UNAME_RELEASE}
-	exit 0 ;;
-    *:procnto*:*:* | *:QNX:[0123456789]*:*)
-	UNAME_PROCESSOR=`uname -p`
-	if test "$UNAME_PROCESSOR" = "x86"; then
-		UNAME_PROCESSOR=i386
-		UNAME_MACHINE=pc
-	fi
-	echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE}
-	exit 0 ;;
-    *:QNX:*:4*)
-	echo i386-pc-qnx
-	exit 0 ;;
-    NSR-[GKLNPTVW]:NONSTOP_KERNEL:*:*)
-	echo nsr-tandem-nsk${UNAME_RELEASE}
-	exit 0 ;;
-    *:NonStop-UX:*:*)
-	echo mips-compaq-nonstopux
-	exit 0 ;;
-    BS2000:POSIX*:*:*)
-	echo bs2000-siemens-sysv
-	exit 0 ;;
-    DS/*:UNIX_System_V:*:*)
-	echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE}
-	exit 0 ;;
-    *:Plan9:*:*)
-	# "uname -m" is not consistent, so use $cputype instead. 386
-	# is converted to i386 for consistency with other x86
-	# operating systems.
-	if test "$cputype" = "386"; then
-	    UNAME_MACHINE=i386
-	else
-	    UNAME_MACHINE="$cputype"
-	fi
-	echo ${UNAME_MACHINE}-unknown-plan9
-	exit 0 ;;
-    i*86:OS/2:*:*)
-	# If we were able to find `uname', then EMX Unix compatibility
-	# is probably installed.
-	echo ${UNAME_MACHINE}-pc-os2-emx
-	exit 0 ;;
-    *:TOPS-10:*:*)
-	echo pdp10-unknown-tops10
-	exit 0 ;;
-    *:TENEX:*:*)
-	echo pdp10-unknown-tenex
-	exit 0 ;;
-    KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*)
-	echo pdp10-dec-tops20
-	exit 0 ;;
-    XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*)
-	echo pdp10-xkl-tops20
-	exit 0 ;;
-    *:TOPS-20:*:*)
-	echo pdp10-unknown-tops20
-	exit 0 ;;
-    *:ITS:*:*)
-	echo pdp10-unknown-its
-	exit 0 ;;
-    i*86:XTS-300:*:STOP)
-	echo ${UNAME_MACHINE}-unknown-stop
-	exit 0 ;;
-    i*86:atheos:*:*)
-	echo ${UNAME_MACHINE}-unknown-atheos
-	exit 0 ;;
-esac
-
-#echo '(No uname command or uname output not recognized.)' 1>&2
-#echo "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" 1>&2
-
-eval $set_cc_for_build
-cat >$dummy.c <<EOF
-#ifdef _SEQUENT_
-# include <sys/types.h>
-# include <sys/utsname.h>
-#endif
-main ()
-{
-#if defined (sony)
-#if defined (MIPSEB)
-  /* BFD wants "bsd" instead of "newsos".  Perhaps BFD should be changed,
-     I don't know....  */
-  printf ("mips-sony-bsd\n"); exit (0);
-#else
-#include <sys/param.h>
-  printf ("m68k-sony-newsos%s\n",
-#ifdef NEWSOS4
-          "4"
-#else
-	  ""
-#endif
-         ); exit (0);
-#endif
-#endif
-
-#if defined (__arm) && defined (__acorn) && defined (__unix)
-  printf ("arm-acorn-riscix"); exit (0);
-#endif
-
-#if defined (hp300) && !defined (hpux)
-  printf ("m68k-hp-bsd\n"); exit (0);
-#endif
-
-#if defined (NeXT)
-#if !defined (__ARCHITECTURE__)
-#define __ARCHITECTURE__ "m68k"
-#endif
-  int version;
-  version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`;
-  if (version < 4)
-    printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version);
-  else
-    printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version);
-  exit (0);
-#endif
-
-#if defined (MULTIMAX) || defined (n16)
-#if defined (UMAXV)
-  printf ("ns32k-encore-sysv\n"); exit (0);
-#else
-#if defined (CMU)
-  printf ("ns32k-encore-mach\n"); exit (0);
-#else
-  printf ("ns32k-encore-bsd\n"); exit (0);
-#endif
-#endif
-#endif
-
-#if defined (__386BSD__)
-  printf ("i386-pc-bsd\n"); exit (0);
-#endif
-
-#if defined (sequent)
-#if defined (i386)
-  printf ("i386-sequent-dynix\n"); exit (0);
-#endif
-#if defined (ns32000)
-  printf ("ns32k-sequent-dynix\n"); exit (0);
-#endif
-#endif
-
-#if defined (_SEQUENT_)
-    struct utsname un;
-
-    uname(&un);
-
-    if (strncmp(un.version, "V2", 2) == 0) {
-	printf ("i386-sequent-ptx2\n"); exit (0);
-    }
-    if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */
-	printf ("i386-sequent-ptx1\n"); exit (0);
-    }
-    printf ("i386-sequent-ptx\n"); exit (0);
-
-#endif
-
-#if defined (vax)
-# if !defined (ultrix)
-#  include <sys/param.h>
-#  if defined (BSD)
-#   if BSD == 43
-      printf ("vax-dec-bsd4.3\n"); exit (0);
-#   else
-#    if BSD == 199006
-      printf ("vax-dec-bsd4.3reno\n"); exit (0);
-#    else
-      printf ("vax-dec-bsd\n"); exit (0);
-#    endif
-#   endif
-#  else
-    printf ("vax-dec-bsd\n"); exit (0);
-#  endif
-# else
-    printf ("vax-dec-ultrix\n"); exit (0);
-# endif
-#endif
-
-#if defined (alliant) && defined (i860)
-  printf ("i860-alliant-bsd\n"); exit (0);
-#endif
-
-  exit (1);
-}
-EOF
-
-$CC_FOR_BUILD $dummy.c -o $dummy 2>/dev/null && ./$dummy && rm -f $dummy.c $dummy && exit 0
-rm -f $dummy.c $dummy
-
-# Apollos put the system type in the environment.
-
-test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit 0; }
-
-# Convex versions that predate uname can use getsysinfo(1)
-
-if [ -x /usr/convex/getsysinfo ]
-then
-    case `getsysinfo -f cpu_type` in
-    c1*)
-	echo c1-convex-bsd
-	exit 0 ;;
-    c2*)
-	if getsysinfo -f scalar_acc
-	then echo c32-convex-bsd
-	else echo c2-convex-bsd
-	fi
-	exit 0 ;;
-    c34*)
-	echo c34-convex-bsd
-	exit 0 ;;
-    c38*)
-	echo c38-convex-bsd
-	exit 0 ;;
-    c4*)
-	echo c4-convex-bsd
-	exit 0 ;;
-    esac
-fi
-
-cat >&2 <<EOF
-$0: unable to guess system type
-
-This script, last modified $timestamp, has failed to recognize
-the operating system you are using. It is advised that you
-download the most up to date version of the config scripts from
-
-    ftp://ftp.gnu.org/pub/gnu/config/
-
-If the version you run ($0) is already up to date, please
-send the following data and any information you think might be
-pertinent to <config-patches@gnu.org> in order to provide the needed
-information to handle your system.
-
-config.guess timestamp = $timestamp
-
-uname -m = `(uname -m) 2>/dev/null || echo unknown`
-uname -r = `(uname -r) 2>/dev/null || echo unknown`
-uname -s = `(uname -s) 2>/dev/null || echo unknown`
-uname -v = `(uname -v) 2>/dev/null || echo unknown`
-
-/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null`
-/bin/uname -X     = `(/bin/uname -X) 2>/dev/null`
-
-hostinfo               = `(hostinfo) 2>/dev/null`
-/bin/universe          = `(/bin/universe) 2>/dev/null`
-/usr/bin/arch -k       = `(/usr/bin/arch -k) 2>/dev/null`
-/bin/arch              = `(/bin/arch) 2>/dev/null`
-/usr/bin/oslevel       = `(/usr/bin/oslevel) 2>/dev/null`
-/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null`
-
-UNAME_MACHINE = ${UNAME_MACHINE}
-UNAME_RELEASE = ${UNAME_RELEASE}
-UNAME_SYSTEM  = ${UNAME_SYSTEM}
-UNAME_VERSION = ${UNAME_VERSION}
-EOF
-
-exit 1
-
-# Local variables:
-# eval: (add-hook 'write-file-hooks 'time-stamp)
-# time-stamp-start: "timestamp='"
-# time-stamp-format: "%:y-%02m-%02d"
-# time-stamp-end: "'"
-# End:
diff --git a/stepmake/bin/config.sub b/stepmake/bin/config.sub
deleted file mode 100755
index c99bd1a79d..0000000000
--- a/stepmake/bin/config.sub
+++ /dev/null
@@ -1,1443 +0,0 @@
-#! /bin/sh
-# Configuration validation subroutine script.
-#   Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
-#   2000, 2001, 2002 Free Software Foundation, Inc.
-
-timestamp='2002-03-07'
-
-# This file is (in principle) common to ALL GNU software.
-# The presence of a machine in this file suggests that SOME GNU software
-# can handle that machine.  It does not imply ALL GNU software can.
-#
-# This file is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place - Suite 330,
-# Boston, MA 02111-1307, USA.
-
-# As a special exception to the GNU General Public License, if you
-# distribute this file as part of a program that contains a
-# configuration script generated by Autoconf, you may include it under
-# the same distribution terms that you use for the rest of that program.
-
-# Please send patches to <config-patches@gnu.org>.  Submit a context
-# diff and a properly formatted ChangeLog entry.
-#
-# Configuration subroutine to validate and canonicalize a configuration type.
-# Supply the specified configuration type as an argument.
-# If it is invalid, we print an error message on stderr and exit with code 1.
-# Otherwise, we print the canonical config type on stdout and succeed.
-
-# This file is supposed to be the same for all GNU packages
-# and recognize all the CPU types, system types and aliases
-# that are meaningful with *any* GNU software.
-# Each package is responsible for reporting which valid configurations
-# it does not support.  The user should be able to distinguish
-# a failure to support a valid configuration from a meaningless
-# configuration.
-
-# The goal of this file is to map all the various variations of a given
-# machine specification into a single specification in the form:
-#	CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM
-# or in some cases, the newer four-part form:
-#	CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM
-# It is wrong to echo any other type of specification.
-
-me=`echo "$0" | sed -e 's,.*/,,'`
-
-usage="\
-Usage: $0 [OPTIONS] CPU-MFR-OPSYS
-       $0 [OPTIONS] ALIAS
-
-Canonicalize a configuration name.
-
-Operation modes:
-  -h, --help         print this help, then exit
-  -t, --time-stamp   print date of last modification, then exit
-  -v, --version      print version number, then exit
-
-Report bugs and patches to <config-patches@gnu.org>."
-
-version="\
-GNU config.sub ($timestamp)
-
-Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001
-Free Software Foundation, Inc.
-
-This is free software; see the source for copying conditions.  There is NO
-warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
-
-help="
-Try \`$me --help' for more information."
-
-# Parse command line
-while test $# -gt 0 ; do
-  case $1 in
-    --time-stamp | --time* | -t )
-       echo "$timestamp" ; exit 0 ;;
-    --version | -v )
-       echo "$version" ; exit 0 ;;
-    --help | --h* | -h )
-       echo "$usage"; exit 0 ;;
-    -- )     # Stop option processing
-       shift; break ;;
-    - )	# Use stdin as input.
-       break ;;
-    -* )
-       echo "$me: invalid option $1$help"
-       exit 1 ;;
-
-    *local*)
-       # First pass through any local machine types.
-       echo $1
-       exit 0;;
-
-    * )
-       break ;;
-  esac
-done
-
-case $# in
- 0) echo "$me: missing argument$help" >&2
-    exit 1;;
- 1) ;;
- *) echo "$me: too many arguments$help" >&2
-    exit 1;;
-esac
-
-# Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any).
-# Here we must recognize all the valid KERNEL-OS combinations.
-maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'`
-case $maybe_os in
-  nto-qnx* | linux-gnu* | storm-chaos* | os2-emx* | windows32-* | rtmk-nova*)
-    os=-$maybe_os
-    basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`
-    ;;
-  *)
-    basic_machine=`echo $1 | sed 's/-[^-]*$//'`
-    if [ $basic_machine != $1 ]
-    then os=`echo $1 | sed 's/.*-/-/'`
-    else os=; fi
-    ;;
-esac
-
-### Let's recognize common machines as not being operating systems so
-### that things like config.sub decstation-3100 work.  We also
-### recognize some manufacturers as not being operating systems, so we
-### can provide default operating systems below.
-case $os in
-	-sun*os*)
-		# Prevent following clause from handling this invalid input.
-		;;
-	-dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \
-	-att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \
-	-unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \
-	-convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\
-	-c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \
-	-harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \
-	-apple | -axis)
-		os=
-		basic_machine=$1
-		;;
-	-sim | -cisco | -oki | -wec | -winbond)
-		os=
-		basic_machine=$1
-		;;
-	-scout)
-		;;
-	-wrs)
-		os=-vxworks
-		basic_machine=$1
-		;;
-	-chorusos*)
-		os=-chorusos
-		basic_machine=$1
-		;;
- 	-chorusrdb)
- 		os=-chorusrdb
-		basic_machine=$1
- 		;;
-	-hiux*)
-		os=-hiuxwe2
-		;;
-	-sco5)
-		os=-sco3.2v5
-		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
-		;;
-	-sco4)
-		os=-sco3.2v4
-		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
-		;;
-	-sco3.2.[4-9]*)
-		os=`echo $os | sed -e 's/sco3.2./sco3.2v/'`
-		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
-		;;
-	-sco3.2v[4-9]*)
-		# Don't forget version if it is 3.2v4 or newer.
-		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
-		;;
-	-sco*)
-		os=-sco3.2v2
-		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
-		;;
-	-udk*)
-		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
-		;;
-	-isc)
-		os=-isc2.2
-		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
-		;;
-	-clix*)
-		basic_machine=clipper-intergraph
-		;;
-	-isc*)
-		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
-		;;
-	-lynx*)
-		os=-lynxos
-		;;
-	-ptx*)
-		basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'`
-		;;
-	-windowsnt*)
-		os=`echo $os | sed -e 's/windowsnt/winnt/'`
-		;;
-	-psos*)
-		os=-psos
-		;;
-	-mint | -mint[0-9]*)
-		basic_machine=m68k-atari
-		os=-mint
-		;;
-esac
-
-# Decode aliases for certain CPU-COMPANY combinations.
-case $basic_machine in
-	# Recognize the basic CPU types without company name.
-	# Some are omitted here because they have special meanings below.
-	1750a | 580 \
-	| a29k \
-	| alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \
-	| alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \
-	| arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr \
-	| c4x | clipper \
-	| d10v | d30v | dsp16xx \
-	| fr30 \
-	| h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \
-	| i370 | i860 | i960 | ia64 \
-	| m32r | m68000 | m68k | m88k | mcore \
-	| mips | mips16 | mips64 | mips64el | mips64orion | mips64orionel \
-	| mips64vr4100 | mips64vr4100el | mips64vr4300 \
-	| mips64vr4300el | mips64vr5000 | mips64vr5000el \
-	| mipsbe | mipseb | mipsel | mipsle | mipstx39 | mipstx39el \
-	| mipsisa32 | mipsisa64 \
-	| mn10200 | mn10300 \
-	| ns16k | ns32k \
-	| openrisc | or32 \
-	| pdp10 | pdp11 | pj | pjl \
-	| powerpc | powerpc64 | powerpc64le | powerpcle | ppcbe \
-	| pyramid \
-	| sh | sh[34] | sh[34]eb | shbe | shle | sh64 \
-	| sparc | sparc64 | sparc86x | sparclet | sparclite | sparcv9 | sparcv9b \
-	| strongarm \
-	| tahoe | thumb | tic80 | tron \
-	| v850 | v850e \
-	| we32k \
-	| x86 | xscale | xstormy16 | xtensa \
-	| z8k)
-		basic_machine=$basic_machine-unknown
-		;;
-	m6811 | m68hc11 | m6812 | m68hc12)
-		# Motorola 68HC11/12.
-		basic_machine=$basic_machine-unknown
-		os=-none
-		;;
-	m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k)
-		;;
-
-	# We use `pc' rather than `unknown'
-	# because (1) that's what they normally are, and
-	# (2) the word "unknown" tends to confuse beginning users.
-	i*86 | x86_64)
-	  basic_machine=$basic_machine-pc
-	  ;;
-	# Object if more than one company name word.
-	*-*-*)
-		echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2
-		exit 1
-		;;
-	# Recognize the basic CPU types with company name.
-	580-* \
-	| a29k-* \
-	| alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \
-	| alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \
-	| alphapca5[67]-* | alpha64pca5[67]-* | arc-* \
-	| arm-*  | armbe-* | armle-* | armv*-* \
-	| avr-* \
-	| bs2000-* \
-	| c[123]* | c30-* | [cjt]90-* | c54x-* \
-	| clipper-* | cydra-* \
-	| d10v-* | d30v-* \
-	| elxsi-* \
-	| f30[01]-* | f700-* | fr30-* | fx80-* \
-	| h8300-* | h8500-* \
-	| hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \
-	| i*86-* | i860-* | i960-* | ia64-* \
-	| m32r-* \
-	| m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \
-	| m88110-* | m88k-* | mcore-* \
-	| mips-* | mips16-* | mips64-* | mips64el-* | mips64orion-* \
-	| mips64orionel-* | mips64vr4100-* | mips64vr4100el-* \
-	| mips64vr4300-* | mips64vr4300el-* | mipsbe-* | mipseb-* \
-	| mipsle-* | mipsel-* | mipstx39-* | mipstx39el-* \
-	| none-* | np1-* | ns16k-* | ns32k-* \
-	| orion-* \
-	| pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \
-	| powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* | ppcbe-* \
-	| pyramid-* \
-	| romp-* | rs6000-* \
-	| sh-* | sh[34]-* | sh[34]eb-* | shbe-* | shle-* | sh64-* \
-	| sparc-* | sparc64-* | sparc86x-* | sparclet-* | sparclite-* \
-	| sparcv9-* | sparcv9b-* | strongarm-* | sv1-* | sx?-* \
-	| tahoe-* | thumb-* | tic30-* | tic54x-* | tic80-* | tron-* \
-	| v850-* | v850e-* | vax-* \
-	| we32k-* \
-	| x86-* | x86_64-* | xps100-* | xscale-* | xstormy16-* \
-	| xtensa-* \
-	| ymp-* \
-	| z8k-*)
-		;;
-	# Recognize the various machine names and aliases which stand
-	# for a CPU type and a company and sometimes even an OS.
-	386bsd)
-		basic_machine=i386-unknown
-		os=-bsd
-		;;
-	3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc)
-		basic_machine=m68000-att
-		;;
-	3b*)
-		basic_machine=we32k-att
-		;;
-	a29khif)
-		basic_machine=a29k-amd
-		os=-udi
-		;;
-	adobe68k)
-		basic_machine=m68010-adobe
-		os=-scout
-		;;
-	alliant | fx80)
-		basic_machine=fx80-alliant
-		;;
-	altos | altos3068)
-		basic_machine=m68k-altos
-		;;
-	am29k)
-		basic_machine=a29k-none
-		os=-bsd
-		;;
-	amdahl)
-		basic_machine=580-amdahl
-		os=-sysv
-		;;
-	amiga | amiga-*)
-		basic_machine=m68k-unknown
-		;;
-	amigaos | amigados)
-		basic_machine=m68k-unknown
-		os=-amigaos
-		;;
-	amigaunix | amix)
-		basic_machine=m68k-unknown
-		os=-sysv4
-		;;
-	apollo68)
-		basic_machine=m68k-apollo
-		os=-sysv
-		;;
-	apollo68bsd)
-		basic_machine=m68k-apollo
-		os=-bsd
-		;;
-	aux)
-		basic_machine=m68k-apple
-		os=-aux
-		;;
-	balance)
-		basic_machine=ns32k-sequent
-		os=-dynix
-		;;
-	c90)
-		basic_machine=c90-cray
-		os=-unicos
-		;;
-	convex-c1)
-		basic_machine=c1-convex
-		os=-bsd
-		;;
-	convex-c2)
-		basic_machine=c2-convex
-		os=-bsd
-		;;
-	convex-c32)
-		basic_machine=c32-convex
-		os=-bsd
-		;;
-	convex-c34)
-		basic_machine=c34-convex
-		os=-bsd
-		;;
-	convex-c38)
-		basic_machine=c38-convex
-		os=-bsd
-		;;
-	cray | j90)
-		basic_machine=j90-cray
-		os=-unicos
-		;;
-	crds | unos)
-		basic_machine=m68k-crds
-		;;
-	cris | cris-* | etrax*)
-		basic_machine=cris-axis
-		;;
-	da30 | da30-*)
-		basic_machine=m68k-da30
-		;;
-	decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn)
-		basic_machine=mips-dec
-		;;
-	decsystem10* | dec10*)
-		basic_machine=pdp10-dec
-		os=-tops10
-		;;
-	decsystem20* | dec20*)
-		basic_machine=pdp10-dec
-		os=-tops20
-		;;
-	delta | 3300 | motorola-3300 | motorola-delta \
-	      | 3300-motorola | delta-motorola)
-		basic_machine=m68k-motorola
-		;;
-	delta88)
-		basic_machine=m88k-motorola
-		os=-sysv3
-		;;
-	dpx20 | dpx20-*)
-		basic_machine=rs6000-bull
-		os=-bosx
-		;;
-	dpx2* | dpx2*-bull)
-		basic_machine=m68k-bull
-		os=-sysv3
-		;;
-	ebmon29k)
-		basic_machine=a29k-amd
-		os=-ebmon
-		;;
-	elxsi)
-		basic_machine=elxsi-elxsi
-		os=-bsd
-		;;
-	encore | umax | mmax)
-		basic_machine=ns32k-encore
-		;;
-	es1800 | OSE68k | ose68k | ose | OSE)
-		basic_machine=m68k-ericsson
-		os=-ose
-		;;
-	fx2800)
-		basic_machine=i860-alliant
-		;;
-	genix)
-		basic_machine=ns32k-ns
-		;;
-	gmicro)
-		basic_machine=tron-gmicro
-		os=-sysv
-		;;
-	go32)
-		basic_machine=i386-pc
-		os=-go32
-		;;
-	h3050r* | hiux*)
-		basic_machine=hppa1.1-hitachi
-		os=-hiuxwe2
-		;;
-	h8300hms)
-		basic_machine=h8300-hitachi
-		os=-hms
-		;;
-	h8300xray)
-		basic_machine=h8300-hitachi
-		os=-xray
-		;;
-	h8500hms)
-		basic_machine=h8500-hitachi
-		os=-hms
-		;;
-	harris)
-		basic_machine=m88k-harris
-		os=-sysv3
-		;;
-	hp300-*)
-		basic_machine=m68k-hp
-		;;
-	hp300bsd)
-		basic_machine=m68k-hp
-		os=-bsd
-		;;
-	hp300hpux)
-		basic_machine=m68k-hp
-		os=-hpux
-		;;
-	hp3k9[0-9][0-9] | hp9[0-9][0-9])
-		basic_machine=hppa1.0-hp
-		;;
-	hp9k2[0-9][0-9] | hp9k31[0-9])
-		basic_machine=m68000-hp
-		;;
-	hp9k3[2-9][0-9])
-		basic_machine=m68k-hp
-		;;
-	hp9k6[0-9][0-9] | hp6[0-9][0-9])
-		basic_machine=hppa1.0-hp
-		;;
-	hp9k7[0-79][0-9] | hp7[0-79][0-9])
-		basic_machine=hppa1.1-hp
-		;;
-	hp9k78[0-9] | hp78[0-9])
-		# FIXME: really hppa2.0-hp
-		basic_machine=hppa1.1-hp
-		;;
-	hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893)
-		# FIXME: really hppa2.0-hp
-		basic_machine=hppa1.1-hp
-		;;
-	hp9k8[0-9][13679] | hp8[0-9][13679])
-		basic_machine=hppa1.1-hp
-		;;
-	hp9k8[0-9][0-9] | hp8[0-9][0-9])
-		basic_machine=hppa1.0-hp
-		;;
-	hppa-next)
-		os=-nextstep3
-		;;
-	hppaosf)
-		basic_machine=hppa1.1-hp
-		os=-osf
-		;;
-	hppro)
-		basic_machine=hppa1.1-hp
-		os=-proelf
-		;;
-	i370-ibm* | ibm*)
-		basic_machine=i370-ibm
-		;;
-# I'm not sure what "Sysv32" means.  Should this be sysv3.2?
-	i*86v32)
-		basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
-		os=-sysv32
-		;;
-	i*86v4*)
-		basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
-		os=-sysv4
-		;;
-	i*86v)
-		basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
-		os=-sysv
-		;;
-	i*86sol2)
-		basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
-		os=-solaris2
-		;;
-	i386mach)
-		basic_machine=i386-mach
-		os=-mach
-		;;
-	i386-vsta | vsta)
-		basic_machine=i386-unknown
-		os=-vsta
-		;;
-	iris | iris4d)
-		basic_machine=mips-sgi
-		case $os in
-		    -irix*)
-			;;
-		    *)
-			os=-irix4
-			;;
-		esac
-		;;
-	isi68 | isi)
-		basic_machine=m68k-isi
-		os=-sysv
-		;;
-	m88k-omron*)
-		basic_machine=m88k-omron
-		;;
-	magnum | m3230)
-		basic_machine=mips-mips
-		os=-sysv
-		;;
-	merlin)
-		basic_machine=ns32k-utek
-		os=-sysv
-		;;
-	mingw32)
-		basic_machine=i386-pc
-		os=-mingw32
-		;;
-	miniframe)
-		basic_machine=m68000-convergent
-		;;
-	*mint | -mint[0-9]* | *MiNT | *MiNT[0-9]*)
-		basic_machine=m68k-atari
-		os=-mint
-		;;
-	mips3*-*)
-		basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`
-		;;
-	mips3*)
-		basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown
-		;;
-	mmix*)
-		basic_machine=mmix-knuth
-		os=-mmixware
-		;;
-	monitor)
-		basic_machine=m68k-rom68k
-		os=-coff
-		;;
-	morphos)
-		basic_machine=powerpc-unknown
-		os=-morphos
-		;;
-	msdos)
-		basic_machine=i386-pc
-		os=-msdos
-		;;
-	mvs)
-		basic_machine=i370-ibm
-		os=-mvs
-		;;
-	ncr3000)
-		basic_machine=i486-ncr
-		os=-sysv4
-		;;
-	netbsd386)
-		basic_machine=i386-unknown
-		os=-netbsd
-		;;
-	netwinder)
-		basic_machine=armv4l-rebel
-		os=-linux
-		;;
-	news | news700 | news800 | news900)
-		basic_machine=m68k-sony
-		os=-newsos
-		;;
-	news1000)
-		basic_machine=m68030-sony
-		os=-newsos
-		;;
-	news-3600 | risc-news)
-		basic_machine=mips-sony
-		os=-newsos
-		;;
-	necv70)
-		basic_machine=v70-nec
-		os=-sysv
-		;;
-	next | m*-next )
-		basic_machine=m68k-next
-		case $os in
-		    -nextstep* )
-			;;
-		    -ns2*)
-		      os=-nextstep2
-			;;
-		    *)
-		      os=-nextstep3
-			;;
-		esac
-		;;
-	nh3000)
-		basic_machine=m68k-harris
-		os=-cxux
-		;;
-	nh[45]000)
-		basic_machine=m88k-harris
-		os=-cxux
-		;;
-	nindy960)
-		basic_machine=i960-intel
-		os=-nindy
-		;;
-	mon960)
-		basic_machine=i960-intel
-		os=-mon960
-		;;
-	nonstopux)
-		basic_machine=mips-compaq
-		os=-nonstopux
-		;;
-	np1)
-		basic_machine=np1-gould
-		;;
-	nsr-tandem)
-		basic_machine=nsr-tandem
-		;;
-	op50n-* | op60c-*)
-		basic_machine=hppa1.1-oki
-		os=-proelf
-		;;
-	or32 | or32-*)
-		basic_machine=or32-unknown
-		os=-coff
-		;;
-	OSE68000 | ose68000)
-		basic_machine=m68000-ericsson
-		os=-ose
-		;;
-	os68k)
-		basic_machine=m68k-none
-		os=-os68k
-		;;
-	pa-hitachi)
-		basic_machine=hppa1.1-hitachi
-		os=-hiuxwe2
-		;;
-	paragon)
-		basic_machine=i860-intel
-		os=-osf
-		;;
-	pbd)
-		basic_machine=sparc-tti
-		;;
-	pbb)
-		basic_machine=m68k-tti
-		;;
-        pc532 | pc532-*)
-		basic_machine=ns32k-pc532
-		;;
-	pentium | p5 | k5 | k6 | nexgen | viac3)
-		basic_machine=i586-pc
-		;;
-	pentiumpro | p6 | 6x86 | athlon)
-		basic_machine=i686-pc
-		;;
-	pentiumii | pentium2)
-		basic_machine=i686-pc
-		;;
-	pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*)
-		basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'`
-		;;
-	pentiumpro-* | p6-* | 6x86-* | athlon-*)
-		basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'`
-		;;
-	pentiumii-* | pentium2-*)
-		basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'`
-		;;
-	pn)
-		basic_machine=pn-gould
-		;;
-	power)	basic_machine=power-ibm
-		;;
-	ppc)	basic_machine=powerpc-unknown
-	        ;;
-	ppc-*)	basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'`
-		;;
-	ppcle | powerpclittle | ppc-le | powerpc-little)
-		basic_machine=powerpcle-unknown
-	        ;;
-	ppcle-* | powerpclittle-*)
-		basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'`
-		;;
-	ppc64)	basic_machine=powerpc64-unknown
-	        ;;
-	ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'`
-		;;
-	ppc64le | powerpc64little | ppc64-le | powerpc64-little)
-		basic_machine=powerpc64le-unknown
-	        ;;
-	ppc64le-* | powerpc64little-*)
-		basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'`
-		;;
-	ps2)
-		basic_machine=i386-ibm
-		;;
-	pw32)
-		basic_machine=i586-unknown
-		os=-pw32
-		;;
-	rom68k)
-		basic_machine=m68k-rom68k
-		os=-coff
-		;;
-	rm[46]00)
-		basic_machine=mips-siemens
-		;;
-	rtpc | rtpc-*)
-		basic_machine=romp-ibm
-		;;
-	s390 | s390-*)
-		basic_machine=s390-ibm
-		;;
-	s390x | s390x-*)
-		basic_machine=s390x-ibm
-		;;
-	sa29200)
-		basic_machine=a29k-amd
-		os=-udi
-		;;
-	sequent)
-		basic_machine=i386-sequent
-		;;
-	sh)
-		basic_machine=sh-hitachi
-		os=-hms
-		;;
-	sparclite-wrs | simso-wrs)
-		basic_machine=sparclite-wrs
-		os=-vxworks
-		;;
-	sps7)
-		basic_machine=m68k-bull
-		os=-sysv2
-		;;
-	spur)
-		basic_machine=spur-unknown
-		;;
-	st2000)
-		basic_machine=m68k-tandem
-		;;
-	stratus)
-		basic_machine=i860-stratus
-		os=-sysv4
-		;;
-	sun2)
-		basic_machine=m68000-sun
-		;;
-	sun2os3)
-		basic_machine=m68000-sun
-		os=-sunos3
-		;;
-	sun2os4)
-		basic_machine=m68000-sun
-		os=-sunos4
-		;;
-	sun3os3)
-		basic_machine=m68k-sun
-		os=-sunos3
-		;;
-	sun3os4)
-		basic_machine=m68k-sun
-		os=-sunos4
-		;;
-	sun4os3)
-		basic_machine=sparc-sun
-		os=-sunos3
-		;;
-	sun4os4)
-		basic_machine=sparc-sun
-		os=-sunos4
-		;;
-	sun4sol2)
-		basic_machine=sparc-sun
-		os=-solaris2
-		;;
-	sun3 | sun3-*)
-		basic_machine=m68k-sun
-		;;
-	sun4)
-		basic_machine=sparc-sun
-		;;
-	sun386 | sun386i | roadrunner)
-		basic_machine=i386-sun
-		;;
-        sv1)
-		basic_machine=sv1-cray
-		os=-unicos
-		;;
-	symmetry)
-		basic_machine=i386-sequent
-		os=-dynix
-		;;
-	t3d)
-		basic_machine=alpha-cray
-		os=-unicos
-		;;
-	t3e)
-		basic_machine=alphaev5-cray
-		os=-unicos
-		;;
-	t90)
-		basic_machine=t90-cray
-		os=-unicos
-		;;
-	tic54x | c54x*)
-		basic_machine=tic54x-unknown
-		os=-coff
-		;;
-	tx39)
-		basic_machine=mipstx39-unknown
-		;;
-	tx39el)
-		basic_machine=mipstx39el-unknown
-		;;
-	toad1)
-		basic_machine=pdp10-xkl
-		os=-tops20
-		;;
-	tower | tower-32)
-		basic_machine=m68k-ncr
-		;;
-	udi29k)
-		basic_machine=a29k-amd
-		os=-udi
-		;;
-	ultra3)
-		basic_machine=a29k-nyu
-		os=-sym1
-		;;
-	v810 | necv810)
-		basic_machine=v810-nec
-		os=-none
-		;;
-	vaxv)
-		basic_machine=vax-dec
-		os=-sysv
-		;;
-	vms)
-		basic_machine=vax-dec
-		os=-vms
-		;;
-	vpp*|vx|vx-*)
-               basic_machine=f301-fujitsu
-               ;;
-	vxworks960)
-		basic_machine=i960-wrs
-		os=-vxworks
-		;;
-	vxworks68)
-		basic_machine=m68k-wrs
-		os=-vxworks
-		;;
-	vxworks29k)
-		basic_machine=a29k-wrs
-		os=-vxworks
-		;;
-	w65*)
-		basic_machine=w65-wdc
-		os=-none
-		;;
-	w89k-*)
-		basic_machine=hppa1.1-winbond
-		os=-proelf
-		;;
-	windows32)
-		basic_machine=i386-pc
-		os=-windows32-msvcrt
-		;;
-        xps | xps100)
-		basic_machine=xps100-honeywell
-		;;
-	ymp)
-		basic_machine=ymp-cray
-		os=-unicos
-		;;
-	z8k-*-coff)
-		basic_machine=z8k-unknown
-		os=-sim
-		;;
-	none)
-		basic_machine=none-none
-		os=-none
-		;;
-
-# Here we handle the default manufacturer of certain CPU types.  It is in
-# some cases the only manufacturer, in others, it is the most popular.
-	w89k)
-		basic_machine=hppa1.1-winbond
-		;;
-	op50n)
-		basic_machine=hppa1.1-oki
-		;;
-	op60c)
-		basic_machine=hppa1.1-oki
-		;;
-	romp)
-		basic_machine=romp-ibm
-		;;
-	rs6000)
-		basic_machine=rs6000-ibm
-		;;
-	vax)
-		basic_machine=vax-dec
-		;;
-	pdp10)
-		# there are many clones, so DEC is not a safe bet
-		basic_machine=pdp10-unknown
-		;;
-	pdp11)
-		basic_machine=pdp11-dec
-		;;
-	we32k)
-		basic_machine=we32k-att
-		;;
-	sh3 | sh4 | sh3eb | sh4eb)
-		basic_machine=sh-unknown
-		;;
-	sh64)
-		basic_machine=sh64-unknown
-		;;
-	sparc | sparcv9 | sparcv9b)
-		basic_machine=sparc-sun
-		;;
-        cydra)
-		basic_machine=cydra-cydrome
-		;;
-	orion)
-		basic_machine=orion-highlevel
-		;;
-	orion105)
-		basic_machine=clipper-highlevel
-		;;
-	mac | mpw | mac-mpw)
-		basic_machine=m68k-apple
-		;;
-	pmac | pmac-mpw)
-		basic_machine=powerpc-apple
-		;;
-	c4x*)
-		basic_machine=c4x-none
-		os=-coff
-		;;
-	*-unknown)
-		# Make sure to match an already-canonicalized machine name.
-		;;
-	*)
-		echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2
-		exit 1
-		;;
-esac
-
-# Here we canonicalize certain aliases for manufacturers.
-case $basic_machine in
-	*-digital*)
-		basic_machine=`echo $basic_machine | sed 's/digital.*/dec/'`
-		;;
-	*-commodore*)
-		basic_machine=`echo $basic_machine | sed 's/commodore.*/cbm/'`
-		;;
-	*)
-		;;
-esac
-
-# Decode manufacturer-specific aliases for certain operating systems.
-
-if [ x"$os" != x"" ]
-then
-case $os in
-        # First match some system type aliases
-        # that might get confused with valid system types.
-	# -solaris* is a basic system type, with this one exception.
-	-solaris1 | -solaris1.*)
-		os=`echo $os | sed -e 's|solaris1|sunos4|'`
-		;;
-	-solaris)
-		os=-solaris2
-		;;
-	-svr4*)
-		os=-sysv4
-		;;
-	-unixware*)
-		os=-sysv4.2uw
-		;;
-	-gnu/linux*)
-		os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'`
-		;;
-	# First accept the basic system types.
-	# The portable systems comes first.
-	# Each alternative MUST END IN A *, to match a version number.
-	# -sysv* is not here because it comes later, after sysvr4.
-	-gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \
-	      | -*vms* | -sco* | -esix* | -isc* | -aix* | -sunos | -sunos[34]*\
-	      | -hpux* | -unos* | -osf* | -luna* | -dgux* | -solaris* | -sym* \
-	      | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \
-	      | -aos* \
-	      | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \
-	      | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \
-	      | -hiux* | -386bsd* | -netbsd* | -openbsd* | -freebsd* | -riscix* \
-	      | -lynxos* | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \
-	      | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \
-	      | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \
-	      | -chorusos* | -chorusrdb* \
-	      | -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \
-	      | -mingw32* | -linux-gnu* | -uxpv* | -beos* | -mpeix* | -udk* \
-	      | -interix* | -uwin* | -rhapsody* | -darwin* | -opened* \
-	      | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \
-	      | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \
-	      | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \
-	      | -morphos* | -superux* | -rtmk* | -rtmk-nova*)
-	# Remember, each alternative MUST END IN *, to match a version number.
-		;;
-	-qnx*)
-		case $basic_machine in
-		    x86-* | i*86-*)
-			;;
-		    *)
-			os=-nto$os
-			;;
-		esac
-		;;
-	-nto*)
-		os=-nto-qnx
-		;;
-	-sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \
-	      | -windows* | -osx | -abug | -netware* | -os9* | -beos* \
-	      | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*)
-		;;
-	-mac*)
-		os=`echo $os | sed -e 's|mac|macos|'`
-		;;
-	-linux*)
-		os=`echo $os | sed -e 's|linux|linux-gnu|'`
-		;;
-	-sunos5*)
-		os=`echo $os | sed -e 's|sunos5|solaris2|'`
-		;;
-	-sunos6*)
-		os=`echo $os | sed -e 's|sunos6|solaris3|'`
-		;;
-	-opened*)
-		os=-openedition
-		;;
-	-wince*)
-		os=-wince
-		;;
-	-osfrose*)
-		os=-osfrose
-		;;
-	-osf*)
-		os=-osf
-		;;
-	-utek*)
-		os=-bsd
-		;;
-	-dynix*)
-		os=-bsd
-		;;
-	-acis*)
-		os=-aos
-		;;
-	-atheos*)
-		os=-atheos
-		;;
-	-386bsd)
-		os=-bsd
-		;;
-	-ctix* | -uts*)
-		os=-sysv
-		;;
-	-nova*)
-		os=-rtmk-nova
-		;;
-	-ns2 )
-	        os=-nextstep2
-		;;
-	-nsk*)
-		os=-nsk
-		;;
-	# Preserve the version number of sinix5.
-	-sinix5.*)
-		os=`echo $os | sed -e 's|sinix|sysv|'`
-		;;
-	-sinix*)
-		os=-sysv4
-		;;
-	-triton*)
-		os=-sysv3
-		;;
-	-oss*)
-		os=-sysv3
-		;;
-	-svr4)
-		os=-sysv4
-		;;
-	-svr3)
-		os=-sysv3
-		;;
-	-sysvr4)
-		os=-sysv4
-		;;
-	# This must come after -sysvr4.
-	-sysv*)
-		;;
-	-ose*)
-		os=-ose
-		;;
-	-es1800*)
-		os=-ose
-		;;
-	-xenix)
-		os=-xenix
-		;;
-        -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*)
-	        os=-mint
-		;;
-	-none)
-		;;
-	*)
-		# Get rid of the `-' at the beginning of $os.
-		os=`echo $os | sed 's/[^-]*-//'`
-		echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2
-		exit 1
-		;;
-esac
-else
-
-# Here we handle the default operating systems that come with various machines.
-# The value should be what the vendor currently ships out the door with their
-# machine or put another way, the most popular os provided with the machine.
-
-# Note that if you're going to try to match "-MANUFACTURER" here (say,
-# "-sun"), then you have to tell the case statement up towards the top
-# that MANUFACTURER isn't an operating system.  Otherwise, code above
-# will signal an error saying that MANUFACTURER isn't an operating
-# system, and we'll never get to this point.
-
-case $basic_machine in
-	*-acorn)
-		os=-riscix1.2
-		;;
-	arm*-rebel)
-		os=-linux
-		;;
-	arm*-semi)
-		os=-aout
-		;;
-	# This must come before the *-dec entry.
-	pdp10-*)
-		os=-tops20
-		;;
-        pdp11-*)
-		os=-none
-		;;
-	*-dec | vax-*)
-		os=-ultrix4.2
-		;;
-	m68*-apollo)
-		os=-domain
-		;;
-	i386-sun)
-		os=-sunos4.0.2
-		;;
-	m68000-sun)
-		os=-sunos3
-		# This also exists in the configure program, but was not the
-		# default.
-		# os=-sunos4
-		;;
-	m68*-cisco)
-		os=-aout
-		;;
-	mips*-cisco)
-		os=-elf
-		;;
-	mips*-*)
-		os=-elf
-		;;
-	or32-*)
-		os=-coff
-		;;
-	*-tti)	# must be before sparc entry or we get the wrong os.
-		os=-sysv3
-		;;
-	sparc-* | *-sun)
-		os=-sunos4.1.1
-		;;
-	*-be)
-		os=-beos
-		;;
-	*-ibm)
-		os=-aix
-		;;
-	*-wec)
-		os=-proelf
-		;;
-	*-winbond)
-		os=-proelf
-		;;
-	*-oki)
-		os=-proelf
-		;;
-	*-hp)
-		os=-hpux
-		;;
-	*-hitachi)
-		os=-hiux
-		;;
-	i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent)
-		os=-sysv
-		;;
-	*-cbm)
-		os=-amigaos
-		;;
-	*-dg)
-		os=-dgux
-		;;
-	*-dolphin)
-		os=-sysv3
-		;;
-	m68k-ccur)
-		os=-rtu
-		;;
-	m88k-omron*)
-		os=-luna
-		;;
-	*-next )
-		os=-nextstep
-		;;
-	*-sequent)
-		os=-ptx
-		;;
-	*-crds)
-		os=-unos
-		;;
-	*-ns)
-		os=-genix
-		;;
-	i370-*)
-		os=-mvs
-		;;
-	*-next)
-		os=-nextstep3
-		;;
-        *-gould)
-		os=-sysv
-		;;
-        *-highlevel)
-		os=-bsd
-		;;
-	*-encore)
-		os=-bsd
-		;;
-        *-sgi)
-		os=-irix
-		;;
-        *-siemens)
-		os=-sysv4
-		;;
-	*-masscomp)
-		os=-rtu
-		;;
-	f30[01]-fujitsu | f700-fujitsu)
-		os=-uxpv
-		;;
-	*-rom68k)
-		os=-coff
-		;;
-	*-*bug)
-		os=-coff
-		;;
-	*-apple)
-		os=-macos
-		;;
-	*-atari*)
-		os=-mint
-		;;
-	*)
-		os=-none
-		;;
-esac
-fi
-
-# Here we handle the case where we know the os, and the CPU type, but not the
-# manufacturer.  We pick the logical manufacturer.
-vendor=unknown
-case $basic_machine in
-	*-unknown)
-		case $os in
-			-riscix*)
-				vendor=acorn
-				;;
-			-sunos*)
-				vendor=sun
-				;;
-			-aix*)
-				vendor=ibm
-				;;
-			-beos*)
-				vendor=be
-				;;
-			-hpux*)
-				vendor=hp
-				;;
-			-mpeix*)
-				vendor=hp
-				;;
-			-hiux*)
-				vendor=hitachi
-				;;
-			-unos*)
-				vendor=crds
-				;;
-			-dgux*)
-				vendor=dg
-				;;
-			-luna*)
-				vendor=omron
-				;;
-			-genix*)
-				vendor=ns
-				;;
-			-mvs* | -opened*)
-				vendor=ibm
-				;;
-			-ptx*)
-				vendor=sequent
-				;;
-			-vxsim* | -vxworks*)
-				vendor=wrs
-				;;
-			-aux*)
-				vendor=apple
-				;;
-			-hms*)
-				vendor=hitachi
-				;;
-			-mpw* | -macos*)
-				vendor=apple
-				;;
-			-*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*)
-				vendor=atari
-				;;
-			-vos*)
-				vendor=stratus
-				;;
-		esac
-		basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"`
-		;;
-esac
-
-echo $basic_machine$os
-exit 0
-
-# Local variables:
-# eval: (add-hook 'write-file-hooks 'time-stamp)
-# time-stamp-start: "timestamp='"
-# time-stamp-format: "%:y-%02m-%02d"
-# time-stamp-end: "'"
-# End:
diff --git a/stepmake/bin/fake-msgfmt.sh b/stepmake/bin/fake-msgfmt.sh
deleted file mode 100644
index 1a97f8d510..0000000000
--- a/stepmake/bin/fake-msgfmt.sh
+++ /dev/null
@@ -1,33 +0,0 @@
-#!/bin/sh
-
-IDENTIFICATION=fake-msgfmt.sh
-
-OUTPUT='/dev/null'
-
-while getopts ':d:o:' OPT;
-do
-case $OPT in
-o)
-    OUTPUT=$OPTARG
-    ;;
-*)
-    ;;
-    esac
-done
-
-
-
-shift `expr $OPTIND - 1`
-#
-# Input file name
-#
-if [ "$1" = "" ]
-then
-  echo "$IDENTIFICATION: No input file name given"
-  exit 1
-fi
-
-echo Faking msgfmt: copying $1 to $OUTPUT
-
-
-cp $1 $OUTPUT
diff --git a/stepmake/bin/install-dot-exe.sh b/stepmake/bin/install-dot-exe.sh
deleted file mode 100755
index 1881b2de8b..0000000000
--- a/stepmake/bin/install-dot-exe.sh
+++ /dev/null
@@ -1,25 +0,0 @@
-#!/bin/sh
-# install-dot-exe.sh  -- add .exe for cygnus gnu-windows
-# hack for doos install
-
-realinstall=install
-
-args=''
-while [ $# -ne 0 ] 
-do
-    x=`echo $1 | sed 's@//@/@g'`
-    case $1 in
-	-*) args="$args $x"
-	    ;;
-
-	 *) if [ -f $1.exe ]; then
-		args="$args $x.exe"
-	    else
-		args="$args $x"
-	    fi
-	    ;;
-    esac
-    shift
-done
-
-$realinstall $args
diff --git a/stepmake/bin/install-layout.sh b/stepmake/bin/install-layout.sh
deleted file mode 100644
index 4e54a99564..0000000000
--- a/stepmake/bin/install-layout.sh
+++ /dev/null
@@ -1,12 +0,0 @@
-#!/bin/sh
-# install-layout.sh --- build an installation layout
-#
-prefix=$HOME/usr
-dirs='bin src/patches src/releases lib/texmf/tex lib/texmf/mf/source/public'
-
-for i in $dirs; do
-	if [ ! -e $prefix/$i ]; then
-		echo +mkdir -p $prefix/$i
-		mkdir -p $prefix/$i
-	fi
-done
diff --git a/stepmake/bin/install-sh b/stepmake/bin/install-sh
deleted file mode 100755
index e9de23842d..0000000000
--- a/stepmake/bin/install-sh
+++ /dev/null
@@ -1,251 +0,0 @@
-#!/bin/sh
-#
-# install - install a program, script, or datafile
-# This comes from X11R5 (mit/util/scripts/install.sh).
-#
-# Copyright 1991 by the Massachusetts Institute of Technology
-#
-# Permission to use, copy, modify, distribute, and sell this software and its
-# documentation for any purpose is hereby granted without fee, provided that
-# the above copyright notice appear in all copies and that both that
-# copyright notice and this permission notice appear in supporting
-# documentation, and that the name of M.I.T. not be used in advertising or
-# publicity pertaining to distribution of the software without specific,
-# written prior permission.  M.I.T. makes no representations about the
-# suitability of this software for any purpose.  It is provided "as is"
-# without express or implied warranty.
-#
-# Calling this script install-sh is preferred over install.sh, to prevent
-# `make' implicit rules from creating a file called install from it
-# when there is no Makefile.
-#
-# This script is compatible with the BSD install script, but was written
-# from scratch.  It can only install one file at a time, a restriction
-# shared with many OS's install programs.
-
-
-# set DOITPROG to echo to test this script
-
-# Don't use :- since 4.3BSD and earlier shells don't like it.
-doit="${DOITPROG-}"
-
-
-# put in absolute paths if you don't have them in your path; or use env. vars.
-
-mvprog="${MVPROG-mv}"
-cpprog="${CPPROG-cp}"
-chmodprog="${CHMODPROG-chmod}"
-chownprog="${CHOWNPROG-chown}"
-chgrpprog="${CHGRPPROG-chgrp}"
-stripprog="${STRIPPROG-strip}"
-rmprog="${RMPROG-rm}"
-mkdirprog="${MKDIRPROG-mkdir}"
-
-transformbasename=""
-transform_arg=""
-instcmd="$mvprog"
-chmodcmd="$chmodprog 0755"
-chowncmd=""
-chgrpcmd=""
-stripcmd=""
-rmcmd="$rmprog -f"
-mvcmd="$mvprog"
-src=""
-dst=""
-dir_arg=""
-
-while [ x"$1" != x ]; do
-    case $1 in
-	-c) instcmd="$cpprog"
-	    shift
-	    continue;;
-
-	-d) dir_arg=true
-	    shift
-	    continue;;
-
-	-m) chmodcmd="$chmodprog $2"
-	    shift
-	    shift
-	    continue;;
-
-	-o) chowncmd="$chownprog $2"
-	    shift
-	    shift
-	    continue;;
-
-	-g) chgrpcmd="$chgrpprog $2"
-	    shift
-	    shift
-	    continue;;
-
-	-s) stripcmd="$stripprog"
-	    shift
-	    continue;;
-
-	-t=*) transformarg=`echo $1 | sed 's/-t=//'`
-	    shift
-	    continue;;
-
-	-b=*) transformbasename=`echo $1 | sed 's/-b=//'`
-	    shift
-	    continue;;
-
-	*)  if [ x"$src" = x ]
-	    then
-		src=$1
-	    else
-		# this colon is to work around a 386BSD /bin/sh bug
-		:
-		dst=$1
-	    fi
-	    shift
-	    continue;;
-    esac
-done
-
-if [ x"$src" = x ]
-then
-	echo "install:	no input file specified"
-	exit 1
-else
-	true
-fi
-
-if [ x"$dir_arg" != x ]; then
-	dst=$src
-	src=""
-	
-	if [ -d $dst ]; then
-		instcmd=:
-		chmodcmd=""
-	else
-		instcmd=mkdir
-	fi
-else
-
-# Waiting for this to be detected by the "$instcmd $src $dsttmp" command
-# might cause directories to be created, which would be especially bad 
-# if $src (and thus $dsttmp) contains '*'.
-
-	if [ -f $src -o -d $src ]
-	then
-		true
-	else
-		echo "install:  $src does not exist"
-		exit 1
-	fi
-	
-	if [ x"$dst" = x ]
-	then
-		echo "install:	no destination specified"
-		exit 1
-	else
-		true
-	fi
-
-# If destination is a directory, append the input filename; if your system
-# does not like double slashes in filenames, you may need to add some logic
-
-	if [ -d $dst ]
-	then
-		dst="$dst"/`basename $src`
-	else
-		true
-	fi
-fi
-
-## this sed command emulates the dirname command
-dstdir=`echo $dst | sed -e 's,[^/]*$,,;s,/$,,;s,^$,.,'`
-
-# Make sure that the destination directory exists.
-#  this part is taken from Noah Friedman's mkinstalldirs script
-
-# Skip lots of stat calls in the usual case.
-if [ ! -d "$dstdir" ]; then
-defaultIFS='	
-'
-IFS="${IFS-${defaultIFS}}"
-
-oIFS="${IFS}"
-# Some sh's can't handle IFS=/ for some reason.
-IFS='%'
-set - `echo ${dstdir} | sed -e 's@/@%@g' -e 's@^%@/@'`
-IFS="${oIFS}"
-
-pathcomp=''
-
-while [ $# -ne 0 ] ; do
-	pathcomp="${pathcomp}${1}"
-	shift
-
-	if [ ! -d "${pathcomp}" ] ;
-        then
-		$mkdirprog "${pathcomp}"
-	else
-		true
-	fi
-
-	pathcomp="${pathcomp}/"
-done
-fi
-
-if [ x"$dir_arg" != x ]
-then
-	$doit $instcmd $dst &&
-
-	if [ x"$chowncmd" != x ]; then $doit $chowncmd $dst; else true ; fi &&
-	if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dst; else true ; fi &&
-	if [ x"$stripcmd" != x ]; then $doit $stripcmd $dst; else true ; fi &&
-	if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dst; else true ; fi
-else
-
-# If we're going to rename the final executable, determine the name now.
-
-	if [ x"$transformarg" = x ] 
-	then
-		dstfile=`basename $dst`
-	else
-		dstfile=`basename $dst $transformbasename | 
-			sed $transformarg`$transformbasename
-	fi
-
-# don't allow the sed command to completely eliminate the filename
-
-	if [ x"$dstfile" = x ] 
-	then
-		dstfile=`basename $dst`
-	else
-		true
-	fi
-
-# Make a temp file name in the proper directory.
-
-	dsttmp=$dstdir/#inst.$$#
-
-# Move or copy the file name to the temp name
-
-	$doit $instcmd $src $dsttmp &&
-
-	trap "rm -f ${dsttmp}" 0 &&
-
-# and set any options; do chmod last to preserve setuid bits
-
-# If any of these fail, we abort the whole thing.  If we want to
-# ignore errors from any of these, just make sure not to ignore
-# errors from the above "$doit $instcmd $src $dsttmp" command.
-
-	if [ x"$chowncmd" != x ]; then $doit $chowncmd $dsttmp; else true;fi &&
-	if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dsttmp; else true;fi &&
-	if [ x"$stripcmd" != x ]; then $doit $stripcmd $dsttmp; else true;fi &&
-	if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dsttmp; else true;fi &&
-
-# Now rename the file to the real destination.
-
-	$doit $rmcmd -f $dstdir/$dstfile &&
-	$doit $mvcmd $dsttmp $dstdir/$dstfile 
-
-fi &&
-
-
-exit 0
diff --git a/stepmake/bin/ls-latex.py b/stepmake/bin/ls-latex.py
deleted file mode 100644
index 4279b73148..0000000000
--- a/stepmake/bin/ls-latex.py
+++ /dev/null
@@ -1,212 +0,0 @@
-#!@PYTHON@
-
-# name isn't really appropriate now ...
-
-name = 'ls-latex'
-version = '0.1'
-
-import sys
-import os
-import string
-import __main__
-import glob
-import re
-
-format_names  = {'ps.gz': 'Compressed PostScript',
-				 'html' : 'HTML'
-				 }
-
-def gulp_file(f):
-	try:
-		i = open(f)
-		i.seek (0, 2)
-		n = i.tell ()
-		i.seek (0,0)
-	except:
-		sys.stderr.write ("can't open file: %s\n" % f)
-		return ''
-	s = i.read (n)
-	if len (s) <= 0:
-		sys.stderr.write ("gulped empty file: %s\n" % f)
-	i.close ()
-	return s
-
-class Latex_head:
-	def __init__ (self):
-		self.author = ''
-		self.title = ''
-		self.date = ''
-		self.format = ''
-		
-def read_latex_header (s):
-	header = Latex_head()
-	m = re.search(r'\\author{([^}]+)}', s)
-	if m:
-		header.author = m.group (1)
-
-	m = re.search (r'\\title{([^}]+)}',s )
-	if m:
-		header.title = m.group (1)
-
-	header.formats = ['ps.gz']
-	return  header
-
-
-def read_bib_header (s):
-	m = re.search ('% *AUTHOR *= *(.*)\n',s)
-
-	header = Latex_head()
-
-	if m:
-		header.author = m.group (1)
-
-	m = re.search ('% *TITLE *= *(.*)\n',s )
-	if m:
-		header.title = m.group (1)
-
-	header.formats = ['html']
-	return header
-
-
-def read_pod_header (s):
-	header = Latex_head ()
-
-	i = re.search( '[^\n \t]', s)
-	s = s[i:]
-	i = re.search( '\n\n', s)
-	s = s[i+2:]	
-	i = re.search( '\n\n', s)
-	header.title = s[:i]
-
-	header.formats = ['html']
-	return  header
-
-def read_texinfo_header (s):
-	header = Latex_head ()
-
-	m = re.search( '@settitle (.*)\n', s)
-	if m:
-		header.title = m.group (1)
-	m = re.search( '@author (.*)\n', s)
-	if m:
-		header.author = m.group (1)
-	
-	header.formats = ['html', 'ps.gz']
-	return header
-
-# urg
-# should make a 'next_parens '
-yo_article_re = re.compile ('article(\\([^)]*\\))[ \t\n]*(\\([^)]*\\))')
-yo_report_re = re.compile ('report(\\([^)]*\\))[\t\n ]*(\\([^)]*\\))')
-yo_sect_re  =  re.compile ('sect(\\([^)]*\\))')
-yo_chapter_re  =  re.compile ('chapter(\\([^)]*\\))')
-
-def read_yodl_header (s):
-	header = Latex_head ()
-	report = yo_report_re.search (s)
-	article = 0
-	sect = 0
-	chapter = 0
-	if report:
-		header.author = report.group (2)
-		header.title = yo_report_re.group (1)
-	else:
-		article = yo_article_re.search (s)
-		if article:
-			header.author = article.group (2)
-			header.title = article.group (1)
-		else:
-			chapter = yo_chapter_re.search (s)
-			if chapter:
-				header.title = chapter.group (1)
-			else:
-				sect = yo_sect_re.search (s)
-				if sect:
-					header.title = sect.group (1)
-
-	header.formats = ['html']
-	return  header
-
-
-def print_html_head (l,o,h):
-	pre =o
-	
-	fn = pre + h.basename
-
-	t = h.filename 
-	if h.title :
-		t = t + ': '+ h.title
-
-	l.write ('<li>%s </a>' % t)
-
-	if h.author:
-		l.write ('<p>by %s</p>' % h.author)
-
-	for f in h.formats:
-		l.write ('(<a href=%s.%s>%s</a>)' % (fn, f, format_names [f]))
-	l.write ('</li>\n')
-
-def help ():
-	sys.stdout.write (r"""Usage: ls-latex [OPTIONS]... FILE...
-Generate html index file for FILE...
-
-Options:
--h, --help                print this help
-""")
-	sys.exit (0)
-
-import getopt
-
-(options, files) = getopt.getopt(sys.argv[1:], 
-	'e:h', ['help', 'prefix=',  'title='])
-
-tex = ''
-output =''
-pre = ''
-title = ''
-for opt in options:
-	o = opt[0]
-	a = opt[1]
-	if o == '--prefix':
-		pre = a
-	elif o == '--title':
-		title = a  
-	elif o == '-h' or o == '--help':
-			help ()
-
-
-l = sys.stdout
-
-l.write (r"""<html><title>%s</title>
-<body>
-<h1> %s</h1><ul>
-""" % (title, title))
-
-
-read_header_funcs = {
-	'pod' : read_pod_header,
-	'tex' : read_latex_header,
-	'doc' : read_latex_header,
-	'bib': read_bib_header, 
-	'latex' : read_latex_header,
-	'tely' : read_texinfo_header,
-	'texi': read_texinfo_header,
-	'yo': read_yodl_header, 
-}	
-
-
-for x in files:
-	m = re.search ('\\.([^.]*)$', x)
-	if m == None:
-		continue
-
-	s = gulp_file (x)
-	head = read_header_funcs [m.group(1)] (s)
-
-	head.filename = x
-	head.basename = re.sub ("\\.[^.]+", '', x)
-	
-	print_html_head (l, pre, head)
-
-l.write ('</ul></body></html>')
-
diff --git a/stepmake/bin/make-version.py b/stepmake/bin/make-version.py
deleted file mode 100644
index 3c7089db81..0000000000
--- a/stepmake/bin/make-version.py
+++ /dev/null
@@ -1,44 +0,0 @@
-
-import re
-import sys
-
-
-vf = 'VERSION'
-if sys.argv[1:]:
-	vf = sys.argv[1]
-
-f = open (vf)
-ls = f.readlines ()
-mypatch = 0
-defs = []
-for l in ls:
-	l = re.sub ('#.*','', l)
-	m  = re.search ('([^ =]*)[\t ]*=[ \t]*([^ \t]*)[ \t]*\n', l)
-	if m:
-		defs.append ((m.group(1), m.group(2)))
-
-
-sys.stdout.write (r'''
-#ifndef VERSION_HH
-#define VERSION_HH
-/* automatically generated */
-
-
-''')
-for d in defs:
-
-	# GUILE leaks autoconf data into userspace. 
-	sys.stdout.write ('#ifdef %s\n' % d[0])
-	sys.stdout.write ('#undef %s\n' % d[0])
-	sys.stdout.write ('#endif /* %s */\n' % d[0])		
-	
-	sys.stdout.write ('#define %s "%s"\n' % d)
-	
-
-if ('MY_PATCH_LEVEL', '') in defs:
-	sys.stdout.write ('#define NO_MY_PATCHLEVEL')
-
-sys.stdout.write(r'''
-#endif
-''')
-	
diff --git a/stepmake/bin/ntpwd.py b/stepmake/bin/ntpwd.py
deleted file mode 100644
index a656a8dc4f..0000000000
--- a/stepmake/bin/ntpwd.py
+++ /dev/null
@@ -1,29 +0,0 @@
-"""Winnt access into /etc/passwd via account name"""
-
-import sys
-import string
-
-def getpwname( name, pwfile='/etc/passwd' ):
-    "Get password record that matches the specified name"
-    try:
-        _fd = open( pwfile, 'r' )
-    except:
-        sys.stderr.write("Error unable to locate" + pwfile + "\n")
-        sys.stderr.write("Consult gnu-win32 command mkpasswd\n")
-        sys.exit(1)
-
-    _data = _fd.read()
-    _fd.close()
-        
-    for _line in string.split(_data, '\n'):
-        _record=string.split( _line, ':' );
-        if _record[0] == name:
-            return _record
-    return ()
-
-def _test():
-    pw = getpwname( 'jeff' )
-    print pw[4]
-
-if __name__ == '__main__':
-	_test()
diff --git a/stepmake/bin/package-diff.py b/stepmake/bin/package-diff.py
deleted file mode 100644
index 284e2c6e8e..0000000000
--- a/stepmake/bin/package-diff.py
+++ /dev/null
@@ -1,346 +0,0 @@
-#!@PYTHON@
-
-#
-# TODO: CLEAN THIS UP, merge packagepython.py and release.py 
-#
-
-
-
-import fnmatch
-import sys
-import os
-import re
-import string
-import getopt
-import pipes
-
-
-_debug = 0
-
-_prune = ['(*)']
-
-def find(pattern, dir = os.curdir):
-        list = []
-        names = os.listdir(dir)
-        names.sort()
-        for name in names:
-                if name in (os.curdir, os.pardir):
-                        continue
-                fullname = os.path.join(dir, name)
-                if fnmatch.fnmatch(name, pattern):
-                        list.append(fullname)
-                if os.path.isdir(fullname) and not os.path.islink(fullname):
-                        for p in _prune:
-                                if fnmatch.fnmatch(name, p):
-                                        if _debug: print "skip", `fullname`
-                                        break
-                        else:
-                                if _debug: print "descend into", `fullname`
-                                list = list + find(pattern, fullname)
-        return list
-
-
-topdir = ''
-def gulp_file(f):
-	try:
-		i = open(f)
-		i.seek (0, 2)
-		n = i.tell ()
-		i.seek (0,0)
-	except:
-		sys.stderr.write ("can't open file: %s\n" % f)
-		return ''
-	s = i.read (n)
-	if len (s) <= 0:
-		sys.stderr.write ("gulped emty file: %s\n" % f)
-	i.close ()
-	return s
-
-
-def mailaddress():
-	try:
-		return os.environ['MAILADDRESS']
-	except KeyError:
-		return '(address unknown)'
-
-
-
-class Flags:
-	def __init__ (self):
-		self.to_version = 0
-		self.from_version = 0
-		self.package = 0
-
-flags = Flags ()
-
-def help ():
-	sys.stdout.write (
-		'Generate a patch to go to current version\n'
-		'  -f, --from=FROM      old is FROM\n'
-		'  -h, --help           print this help\n'
-		'      --outdir=DIR     generate in DIR\n'
-		'  -o, --output=NAME    write patch to NAME\n'
-		'  -p, --package=DIR    specify package\n'
-		'  -r, --release        diff against latest release\n'  
-		'  -t, --to=TO          to version TO\n'  
-		'  -F, --dir-from=FROM  diff from directory FROM\n'  
-		'  -T, --dir-to=TO      diff to directory TO\n'  
-		)
-
-def cleanup ():
-	global from_diff, to_diff, original_dir
-	os.chdir ('/tmp/package-diff')
-	sys.stderr.write ('Cleaning ... ')
-	os.system ('rm -fr %s %s' % (from_diff, to_diff))
-	sys.stderr.write ('\n')
-	os.chdir (original_dir)
-
-def untar (fn):
-	# os.system ('pwd');
-	try:
-		open (fn)
-	except:
-		sys.stderr.write ("Can't find tarball: %s\n" % fn)
-		cleanup ()
-		sys.exit (1)
-	sys.stderr.write ("Untarring: %s\n" % fn)
-	os.system ('gzip --quiet -dc ' + fn + '| tar xf - ')
-	sys.stderr.flush ()
-
-def remove_automatic (dirnames):
-	files = []
-
-	for d in dirnames:
-		try:
-			for p in pats:
-				files = files + find (p, d)
-		except:
-			sys.stderr.write ("Can't find dir: %s\n" % d)
-			cleanup ()
-			sys.exit (1)
-
-	dirs = map (lambda d: find ('out*', d), dirnames)
-	dirs = reduce (lambda x,y:  x + y, dirs)
-	
-	#print dirs
-
-	for d in dirs:
-		if os.path.isdir (d):
-			files = files + find ('*', d)
-		
-	for f in files:
-		try:
-			os.remove (f)
-		except:
-			sys.stderr.write ("can't remove: `" + f + "'\n'")
-
-def dirname (v):
-	return flags.package.name + '-' + version_tuple_to_str (v)
-
-def tarball(v):
-	return dirname (v)  + '.tar.gz'
-
-def released_tarball(v):
-	return flags.package.release_dir + tarball (v)
-
-
-def remove_configure (dir):
-	os.chdir (dir)
-
-	# ugh
-	os.system ('rm -f *.ly')
-
-	# should do 'make distclean ?'
-	os.system ('rm -rf debian/out GNUmakefile config.cache config.h config.hh config.log config.make config.status configure stepmake/GNUmakefile stepmake/config.hh stepmake/config.log stepmake/config.status stepmake/config.make')
-
-	# ugh: symlinks
-	os.system ('rm -f stepmake/stepmake/stepmake stepmake/stepmake/bin')
-
-
-# ugh, how to get rid of .tex files generated by lily?
-pats = ['configure', '*.diff', '*.diff.gz', '*.pyc',  '*.txt']
-
-header = """Generated by %s,
-From = %s, To = %s
-
-usage 
-
-    cd %s-source-dir; patch -E -p1 < %s
-
-Patches do not contain automatically generated files 
-or (urg) empty directories, 
-i.e., you should run
-
-	./autogen.sh
-	./configure [your options.]
-
-	
-"""
-
-
-def makediff (fromdir, todir, patch_name):
-	remove_automatic ([fromdir, todir])
-	
-	# ugh
-	remove_configure (fromdir)
-	remove_configure (todir)
-	os.chdir (todir)
-	
-	fromname = fromdir
-	toname = todir
-	if os.path.dirname (fromname) == os.path.dirname (toname):
-		fromname = os.path.basename (fromname)
-		toname = os.path.basename (toname)
-		fromdir = '../' + fromname
-
-	f = open (patch_name, 'wb')
-	f.write (header %
-		(mailaddress (),   fromname, toname, 
-		 flags.package.name, os.path.basename (patch_name)))
-
-	f.close ()
-			
-	sys.stderr.write ('diffing to %s... ' % patch_name)
-	os.system ('pwd')
-	print ('diff -purN %s . >> %s' % (fromdir, patch_name))
-	os.system ('diff -purN %s . >> %s' % (fromdir, patch_name))
-	os.system ('gzip --quiet -9f %s' % patch_name)
-   
-
-os.environ['GZIP'] = '-q'
-print 'argv: ' + string.join (sys.argv[1:])
-(options, files) = getopt.getopt (sys.argv[1:], 
-	'hF:f:o:p:rT:t:', ['conf=', 'from=', 'dir-from=', 'dir-to=', 'help', 'outdir=', 'output=', 'package=', 'release', 'to='])
-
-patch_name = ''
-conf = ''
-outdir = ''
-from_src = ''
-to_src = ''
-release=0
-from_version=0
-to_version=0
-for opt in options:
-	o = opt[0]
-	a = opt[1]
-	if o == '--from' or o == '-f':
-		 from_version = a
-	elif o == '--to' or o == '-t':
-		 to_version = a
-	elif o == '--dir-from' or o == '-F':
-		 from_src = a;
-	elif o == '--dir-to' or o == '-T':
-		 to_src = a;
-	elif o == '--help' or o == '-h':
-		help ()
-		sys.exit (0)
-	elif o == '--outdir':
-		outdir = a
-	elif o == '--conf':
-		conf = a
-	elif o == '--output' or o == '-o':
-		patch_name = a
-	elif o == '-p' or o == '--package':
-		topdir = a
-	elif o == '--release' or o == '-r':
-		release=1
-	else:
-		raise getopt.error
-
-sys.path.append (topdir + '/stepmake/bin')
-from packagepython import *
-package = Package (topdir)
-flags.package = package
-packager = Packager ()
-
-if from_src:
-	from_package = Package (from_src)
-	flags.from_version = from_package.version
-if from_version:
-	flags.from_version = version_str_to_tuple (from_version)
-	from_src = ''
-
-if to_src:
-	to_package = Package (to_src)
-	flags.to_version = to_package.version
-if to_version:
-	flags.to_version = version_str_to_tuple (to_version)
-	to_src = ''
-
-if not flags.to_version:
-	flags.to_version = package.version
-
-if not flags.from_version:
-	flags.from_version = prev_version (flags.to_version)
-
-# urg
-if release:
-	flags.from_version = (flags.from_version[0], 
-		flags.from_version[1], flags.from_version[2], '');
-
-import tempfile
-original_dir = os.getcwd ();
-
-os.system ('rm -rf /tmp/package-diff') 
-try:
-	os.mkdir ('/tmp/package-diff')
-except:
-	pass
-
-from_diff = dirname (flags.from_version)
-to_diff =  dirname (flags.to_version)
-if to_diff == from_diff:
-	if from_src:
-	      from_diff = from_diff + '.src'
-	elif to_src:
-	      to_diff = to_diff + '.src'
-	else:
-	      sys.stderr.write (patch_name + ': nothing to do: to == from = ' + from_diff + '\n')
-	      sys.exit (1)
-
-def compat_abspath (path):
-	return os.path.normpath (os.path.join (os.getcwd (), path))
-
-if conf and not outdir:
-	outdir = 'out-' + conf
-
-if not patch_name:
-	patch_name = os.path.join (outdir, '%s-%s-%s.diff' % (package.name,
-							      version_tuple_to_str (flags.from_version),
-							      version_tuple_to_str (flags.to_version)))
-
-	patch_name = compat_abspath (patch_name)
-
-from_diff = '/tmp/package-diff/' + from_diff
-to_diff =  '/tmp/package-diff/' + to_diff
-
-if not from_src:
-	os.chdir ('/tmp/package-diff')
-	untar (released_tarball (flags.from_version))
-	os.chdir (original_dir)
-else:
-	sys.stderr.write ('copying ' + from_src + ' to ' + from_diff + '\n')
-	# os.system ('cp -pr %s %s' % (srcdir, from_diff))
-	os.system ('mkdir -p %s '% (from_diff))
-	os.chdir (from_src)
-	os.system ('tar cf - --exclude out --exclude out-www . \
-		| tar -xf - -C %s' % from_diff)
-
-
-if not to_src:
-	os.chdir ('/tmp/package-diff')
-	untar (released_tarball (flags.to_version))
-	os.chdir (original_dir)
-else:
-	sys.stderr.write ('copying ' + to_src + ' to ' + to_diff + '\n')
-	os.system ('mkdir -p %s '% (to_diff))
-	# os.system ('cp -pr %s %s'  (to_src, to_diff))%
-	os.chdir (to_src)
-	os.system ('tar -cf - --exclude out --exclude out-www . \
-		. | tar -xf - -C %s ' % to_diff)
-
-os.chdir (to_diff)
-makediff (from_diff, to_diff, patch_name) 
-
-cleanup ()
-
diff --git a/stepmake/bin/package-zet.sh b/stepmake/bin/package-zet.sh
deleted file mode 100755
index 4f0b79e620..0000000000
--- a/stepmake/bin/package-zet.sh
+++ /dev/null
@@ -1,44 +0,0 @@
-#!/bin/sh
-# package-zet.sh --- help configure a StepMake package's sourcetree
-# normally invoked by a script like:
-# 
-#   zet-pack.sh  ( e.g.: ". bin/zet-lily.sh")
-#
-PACKAGE=`echo $PACKAGE_NAME | tr '[a-z]' '[A-Z]'`
-package=`echo $PACKAGE_NAME | tr '[A-Z]' '[a-z]'`
-#
-# You should set ${PACKAGE}_SOURCEDIR to the latest unpacked source dir,
-# it will default to:
-#
-#  $sources/$package  (e.g.: LILYPOND_SOURCEDIR=/home/fred/usr/src/lilypond)
-#
-
-
-PACKAGE_SOURCEDIR=`eval echo '\$'${PACKAGE}_SOURCEDIR`
-if [ "x$PACKAGE_SOURCEDIR" = "x" ]; then
-    eval ${PACKAGE}_SOURCEDIR="$prefix/src/$package"
-    export ${PACKAGE}_SOURCEDIR
-    PACKAGE_SOURCEDIR=`eval echo '\$'${PACKAGE}_SOURCEDIR`
-fi
-#
-# and create links to here, if necessary
-#
-sourcetree=`basename \`pwd\``
-if [ "x$sourcetree" != "x$package" ]; then
-	(cd ..; rm -f $package 2>&1 > /dev/null)
-	(cd ..; ln -s $sourcetree $package)
-fi
-#
-if [ ! -r $sources ]; then
-	(cd ..; ln -s `pwd` $sources)
-fi
-#
-mkdir -p $prefix/bin
-result=`echo $PATH | grep "$HOME/usr/bin"`
-if [ "x$result" = "x" ]; then
-    PATH=$PATH:$HOME/usr/bin
-fi
-result=`echo $PATH | grep "$sources/$package/bin"`
-if [ "x$result" = "x" ]; then
-    PATH=$PATH:$sources/$package/bin
-fi
diff --git a/stepmake/bin/package-zip.sh b/stepmake/bin/package-zip.sh
deleted file mode 100644
index e325688fdd..0000000000
--- a/stepmake/bin/package-zip.sh
+++ /dev/null
@@ -1,59 +0,0 @@
-#!/bin/sh
-# package-zip.sh --- make a windoze distribution
-
-set -x
-
-if [ $# -lt 2 ]; then
-	echo "Usage: package-zip.sh PACKAGE_SOURCEDIR FILE..."
-	exit 2
-fi
-
-topdir=$1
-shift
-. $topdir/VERSION
-
-VERSION=$MAJOR_VERSION.$MINOR_VERSION.$PATCH_LEVEL
-if [ "x$MY_PATCH_LEVEL" != "x" ]; then
-	VERSION=$VERSION.$MY_PATCH_LEVEL
-fi
-
-package=`echo $PACKAGE_NAME | tr '[A-Z]' '[a-z]'`
-name=$package-$VERSION
-ZIP="zip -r -9"
-builddir="/tmp/$package-doos"
-
-{ cd $topdir/..; PACKAGE_ROOTDIR=`pwd`; export PACKAGE_ROOTDIR; }
-
-zip="$PACKAGE_ROOTDIR/doos/zip/$name.exe.zip"
-
-
-if [ ! -e $PACKAGE_ROOTDIR/doos/zip ]; then
-	doo mkdir -p $PACKAGE_ROOTDIR/doos/zip
-fi
-
-set -x
-
-cd $PACKAGE_ROOTDIR/doos || exit 1
-
-rm -rf $package-*
-
-tar xzf $PACKAGE_ROOTDIR/releases/$name.tar.gz || exit 1
-cd $name
-
-export PATH=/usr/doos/bin:$PATH
-./configure --host=i386-pc-linux --target=i386-pc-cygwin32 --prefix=/usr --enable-debugging --enable-printing --enable-checking
-
-make
-make -C Documentation info || true
-rm -rf $builddir
-make prefix="$builddir/usr" DOTEXE=.exe install
-make prefix="$builddir/usr" installextradoc
-
-rm -f $zip
-(cd $builddir; $ZIP $zip $*)
-# urg
-true "Wrote: $zip"
-
-# huh?
-# ln out/$name.exe.zip $zip
-
diff --git a/stepmake/bin/package-zip32.sh b/stepmake/bin/package-zip32.sh
deleted file mode 100644
index 75039f9504..0000000000
--- a/stepmake/bin/package-zip32.sh
+++ /dev/null
@@ -1,139 +0,0 @@
-#!/bin/sh
-# package-zip32.sh --- make a windoze formated distribution
-
-set -x
-
-if [ $# -lt 1 ]; then
-	echo "Usage: $0 PACKAGE_SOURCEDIR"
-	exit 2
-fi
-
-srcdir=$1
-shift
-
-. $srcdir/VERSION
-
-VERSION=$MAJOR_VERSION.$MINOR_VERSION.$PATCH_LEVEL
-if [ "x$MY_PATCH_LEVEL" != "x" ]; then
-    VERSION=$VERSION.$MY_PATCH_LEVEL
-fi
-
-package=`echo $PACKAGE_NAME | tr '[A-Z]' '[a-z]'`
-name=$package-$VERSION
-ZIP_CMD="zip -r -9"
-
-here=`pwd`
-cd $srcdir/.. 
-PACKAGE_ROOTDIR=`pwd` 
-export PACKAGE_ROOTDIR 
-cd $here
-
-RELEASE_DIR="$PACKAGE_ROOTDIR/bin.releases/winnt"
-ZIP_FILE="$RELEASE_DIR/$name.bin.zip"
-
-
-if [ ! -e $RELEASE_DIR ]; then
-    mkdir -p $RELEASE_DIR
-fi
-
-distdir=/tmp/${name}
-
-#
-# Maybe we can get away without reconfiguring
-#
-# rm -f ${srcdir}/config.cache
-# PYTHON=${PYTHON:-python} ${srcdir}/configure --prefix=${distdir} \
-#     --srcdir=${srcdir}
-
-if ! make ; then
-    echo "make failed"
-    exit 1
-fi
-
-# failure allowed
-#make -C Documentation info
-
-if ! make install ; then
-    echo "make install failed"
-    exit 1
-fi
-
-#if ! make -C Documentation/man WWW ; then
-#    echo "make -C documentation/man WWW failed"
-#    exit 1
-#fi
-
-if ! make -C Documentation/ntweb WWW ; then
-    echo "make -C documentation/ntweb WWW failed"
-    exit 1
-fi
-
-#
-# Post install clean up
-#
-CYGWIN_LIB=$PACKAGE_ROOTDIR/distfiles/winnt/cygwin1.dll
-if [ ! -e $CYGWIN_LIB ]; then
-    echo "Unable to locate $CYGWIN_LIB"
-    exit 1
-fi
-
-#
-# copy cygwin lib into bin
-#
-cp $CYGWIN_LIB $distdir/bin
-
-ASH_EXE=$PACKAGE_ROOTDIR/distfiles/winnt/ash.exe
-if [ ! -e $ASH_EXE ]; then
-    echo "Unable to locate $ASH_EXE"
-    exit 1
-fi
-
-#
-# copy ash into bin
-#
-cp $ASH_EXE $distdir/bin
-
-GUILE_SCM=$PACKAGE_ROOTDIR/distfiles/winnt/ice-9
-if [ ! -e $GUILE_SCM ]; then
-    echo "Unable to locate $GUILE_SCM"
-    exit 1
-fi
-
-#
-# copy guile init files into share/lilypond
-#
-echo "copy $GUILE_SCM to $distdir/share/lilypond"
-cp -r $GUILE_SCM $distdir/share/lilypond
-
-#
-# Rename python files to <filename>.py
-#
-mv $distdir/bin/lilypond $distdir/bin/lilypond.py
-mv $distdir/bin/convert-mudela $distdir/bin/convert-mudela.py
-mv $distdir/bin/mudela-book $distdir/bin/mudela-book.py
-
-#
-# copy man documentation to doc directory
-#
-#mkdir $distdir/doc
-#cp Documentation/man/out/*.html $distdir/doc
-
-#
-# copy web documentation to web directory
-#
-mkdir $distdir/web
-for i in index.html guile-1.3.4-gnu-windows.patch angels.ly
-do
-  cp Documentation/ntweb/out/$i $distdir/web || exit 1
-done
-
-#
-# Zip it up
-#
-cd $distdir/..
-$ZIP_CMD $ZIP_FILE $name
-echo "Wrote $ZIP_FILE"
-rm -rf $name
-exit 0
-
-
diff --git a/stepmake/bin/packagepython.py b/stepmake/bin/packagepython.py
deleted file mode 100755
index 51d262302e..0000000000
--- a/stepmake/bin/packagepython.py
+++ /dev/null
@@ -1,161 +0,0 @@
-#!/usr/bin/python
-
-
-#ugh. junkme.
-
-# packagepython.py --  implement general StepMake-wide python stuff
-# 
-# source file of the GNU LilyPond music typesetter
-# 
-# (c)  1997--2003 Han-Wen Nienhuys <hanwen@stack.nl>
-#                Jan Nieuwenhuizen <janneke@gnu.org>
-
-import re
-import string
-
-import sys
-import os
-import getopt
-
-make_assign_re = re.compile ('^([A-Z_]*)=(.*)$')
-
-def read_makefile (fn):
-	file = open (fn)
-	lines = file.readlines()
-
-	mi = pa = mj = 0
-	mp = ''
-
-	make_dict = {}
-	for l in lines:
-		m = make_assign_re.search (l)
-		if m:
-			nm = m.group (1)
-			val = m.group (2)
-			make_dict[nm] = val
-	return make_dict
-
-class Package:
-	def __init__ (self, dirname):
-		dict = read_makefile (dirname + '/VERSION')
-		version_list = []
-		for x in [ 'MAJOR_VERSION', 'MINOR_VERSION', 'PATCH_LEVEL']:
-			version_list.append (string.atoi (dict[x]))
-		version_list.append (dict['MY_PATCH_LEVEL'])
-		self.topdir = dirname
-		self.groupdir = self.topdir + '/..'
-		self.patch_dir = self.groupdir + '/patches/'
-		self.release_dir = self.groupdir + '/releases/'
-		self.test_dir = self.groupdir + '/test/'
-		self.version =  tuple(version_list)
-		self.Name = dict['PACKAGE_NAME']
-		self.name = string.lower (self.Name)
-		if self.name == 'lilypond':
-			self.nickname = 'lelie'
-		else:
-			self.nickname = self.name
-		self.NAME = string.upper (self.Name)
-
-
-class Packager:
-	def __init__ (self):
-		try:
-			m= os.environ['MAILADDRESS']
-		except KeyError:
-			m= '(address unknown)'
-		self.mail= m
-		try:
-			m= os.environ['WEBMASTER']
-		except KeyError:
-			m= self.mail
-		self.webmaster= m
-
-
-def full_version_tup(tup):
-	t = [0,0,0,'']
-	for i in range (4):
-	  try:
-		  t[i] = tup[i]
-	  except IndexError:
-		  break
-	return tuple(t)
-
-def split_my_patchlevel (str):
-	m = re.match ('(.*?)([0-9]*)$', str)
-	return (m.group (1), string.atoi (m.group (2)))
-
-def next_version(tup):
-	l = list(full_version_tup (tup))
-	t3name=t3num=''
-	if l[3]:
-		(t3name,t3num)= split_my_patchlevel (l[3])
-		if t3num: 
-			t3num = '%d' % (t3num + 1)
-		else:
-			t3num = t3name =''
-	else:
-		l[2] = l[2] +1
-
-	return tuple(l[0:3] + [t3name +  t3num])
-
-def prev_version(tup):
-	l = list(full_version_tup (tup))
-	t3name=t3num=''
-	if l[3]:
-		(t3name, t3num) = split_my_patchlevel (l[3])
-		if t3num and t3num - 1 > 0:
-			t3num = '%d' %(t3num - 1)
-		else:
-			t3num = t3name =''
-
-	else:
-		l[2] = l[2] -1
-		
-	return tuple(l[0:3] + [t3name +  t3num])
-
-def version_tuple_to_str(tup):
-	tup = full_version_tup (tup)
-	if tup[3]:
-		my = '.' + tup[3]
-	else:
-		my = ''
-	return ('%d.%d.%d' % tup[0:3]) + my
-
-def version_str_to_tuple(str):
-	t = string.split(str, '.')
-	mypatch = ''
-	if len (t) >= 4:
-		mypatch = string.join (t[3:], '.')
-	return (string.atoi(t[0]), string.atoi(t[1]), string.atoi(t[2]), mypatch)
-
-def version_compare (ltup, rtup):
-	rtup = full_version_tup (ltup)
-	rtup = full_version_tup (rtup)
-	for i in (0,1,2):
-		if ltup[i] - rtup[i]: return ltup[i] - rtup[i]
-	if ltup[3] and rtup[3]:
-		(lname, lnum) = split_my_patchlevel (ltup[i])
-		(rname, rnum) = split_my_patchlevel (rtup[3])
-		if lname != rname:
-			raise 'ambiguous'
-		return sign (lnum - rnum)
-	if ltup[3]:
-		return 1
-	else:
-		return -1
-	
-if __name__ == '__main__':
-	p = Package ('.')
-	v=  p.version
-	print v, prev_version(v), next_version(v)
-	pv=(0,1,1,'jcn4')
-	print version_tuple_to_str(pv), prev_version(pv), next_version(pv)
-	print version_tuple_to_str((0,1,1,''))    
-	print full_version_tup ((0,1))
-
-	
-def dump_file(f, s):
-	i = open(f, 'w')
-	i.write(s)
-	i.close ()
-
diff --git a/stepmake/bin/release.py b/stepmake/bin/release.py
deleted file mode 100755
index cd9fbd50e1..0000000000
--- a/stepmake/bin/release.py
+++ /dev/null
@@ -1,80 +0,0 @@
-#!@PYTHON@
-# release.py
-
-import os
-import sys
-import getopt
-
-topdir = ''
-outdir = '.'
-
-(options, files) = getopt.getopt(sys.argv[1:], 'ho:p:', ['help', 'outdir=', 'package=']) 
-
-def help ():
-	sys.stdout.write (r"""Usage: release [OPTIONS]...
-Make a tarball and patch.
-
-Options:
-  -o, --outdir=DIR       specify where to leave patches
-  -h, --help             print this help
-  -p, --package=DIR      specify package"""
-)
-	sys.exit (0)
-
-for opt in options:
-        o = opt[0]
-        a = opt[1]
-	if o == '-h' or o == '--help':
-		help ()
-	elif o == '-p' or o == '--package':
-		topdir = a
-	elif o == '--outdir' or o == '-o':
-		outdir = a
-	    
-
-sys.path.append (topdir + '/stepmake/bin')
-from packagepython import *
-package = Package (topdir)
-os.chdir(package.topdir)
-
-try:
-	os.system ('set -x; rm ' + os.path.join (outdir, package.name + '*gz'))
-except:
-	pass
-
-
-
-status = os.system('make dist')
-if status:
-	raise 'make dist failed'
-
-cur_ver = package.version
-
-
-pn = '%s-%s' % (package.name, version_tuple_to_str (cur_ver))
-tarball = pn + '.tar.gz'
-orig  = os.path.join (outdir, tarball)
-try:
-	os.remove(os.path.join (package.release_dir, tarball))
-except:
-	pass
-os.link(orig,  os.path.join (package.release_dir, tarball))
-
-# urg: howto check exit code?
-os.system(sys.executable + ' ' + package.topdir + '/stepmake/bin/package-diff.py --outdir=%s --package=%s' % (outdir, topdir))
-
-prev_ver = prev_version (cur_ver)
-dn = '%s-%s-%s' % (package.name, version_tuple_to_str (prev_ver),
-		   version_tuple_to_str (cur_ver))
-diffname = dn + '.diff.gz'
-rel_pn = package.patch_dir + diffname
-
-diffname = os.path.join (outdir, diffname)
-
-try:
-	os.rename(diffname, rel_pn)
-except:
-	sys.stderr.write ("Can't find diff: %s\n" % diffname)
-	sys.exit (1)
-os.link(rel_pn, diffname)
-
diff --git a/stepmake/bin/stepdirs.sh b/stepmake/bin/stepdirs.sh
deleted file mode 100755
index fbda8e9b3c..0000000000
--- a/stepmake/bin/stepdirs.sh
+++ /dev/null
@@ -1,47 +0,0 @@
-#!/bin/sh
-# stepdirs.sh
-
-help () {
-	echo "Usage: stepmake/bin/stepdirs.sh"
-}
-
-if [ $# -ne 0 ]; then
-	help
-	exit 2
-fi
-
-if [ ! -r stepmake ]; then
-	help
-	exit 2
-fi
-
-if [ -r VERSION ]; then
-	. ./VERSION
-	if [ "x$PACKAGE_NAME" = "xStepMake" ]; then
-		help
-		exit 2
-	fi
-fi
-
-dirs="RedHat doos patches releases test"
-
-echo -n "Checking StepMake layout..."
-for i in $dirs; do
-	if [ ! -r ../$i ]; then
-		missing="$missing ../$i"
-	fi
-done
-
-if [ "x$missing" = "x" ]; then
-	echo ok
-	exit 0
-fi
-
-echo
-
-echo "Creating missing directories:"
-for i in $missing; do
-	(set -x; mkdir $i)
-done
-
-echo done
diff --git a/stepmake/bin/stepmakeise.sh b/stepmake/bin/stepmakeise.sh
deleted file mode 100755
index 4119be3df5..0000000000
--- a/stepmake/bin/stepmakeise.sh
+++ /dev/null
@@ -1,105 +0,0 @@
-#!/bin/sh
-# stepmakeise.sh
-
-help () {
-	cat <<EOF
-Usage: ../stepmake-x.x.x/bin/stepmakeise.sh
-Include or update package's StepMake.
-EOF
-}
-
-name=`basename $0`
-reldir=../releases
-stepbin=`dirname $0`
-
-if [ $# -ne 0 ]; then
-	help
-	exit 2
-fi
-
-value ()
-{
-    expression=`echo $1 | sed 's/\./ \\\\\* 100 + /g'`
-    # urg?  $1=`expr $expression`
-    urg=/tmp/stepmakeise.$$
-    echo expr $expression > $urg
-    echo `. $urg`
-    rm -f $urg
-}
-
-if [ -r stepmake ]; then
-	. ./stepmake/VERSION
-	if [ "x$PACKAGE_NAME" != "xStepMake" ]; then
-		echo "$name: huh 1?"
-		exit 1
-	fi
-	echo "Stepmake found"
-	echo -n "Checking version..."
-	VERSION=$MAJOR_VERSION.$MINOR_VERSION.$PATCH_LEVEL
-	# urg
-	version=$VERSION
-	if [ "$MY_PATCH_LEVEL" != "" ]; then
-		VERSION=$VERSION.$MY_PATCH_LEVEL
-	fi
-	echo " $version"
-else
-	VERSION="0.0.0"
-	version=$VERSION
-fi
-
-if [ true ]; then
-	# urg
-	echo -n "Checking latest..."
-	if [ ! -r $reldir ]; then
-		echo "$name: huh 2?"
-		exit 1
-	fi
-	LATEST=`cd $reldir; ls -t1 stepmake-*.tar.gz | head -n 1 | sed 's!stepmake-!!' | sed 's!.tar.gz!!'`
-	# urg
-	latest=`echo $LATEST | sed 's/\.[a-zA-Z][a-zA-Z]*[0-9]*$//'`
-	latest_val=`value $latest`
-	echo " $latest"
-	version_val=`value $version`
-	if [ $latest_val -le $version_val ]; then
-	    echo "relax, StepMake is up to date"
-	    exit 0
-	fi
-	echo -n "Updating StepMake..."
-	(set +x; rm -rf stepmake; tar xzf $reldir/stepmake-$LATEST.tar.gz; mv stepmake-$LATEST stepmake)
-	echo "ok"
-fi
-
-if [ -r VERSION ]; then
-	echo "$name: warning: VERSION found: not stepmakeising"
-	echo "You should rerun configure"
-	rm -f Makefile
-	exit 0
-fi
-
-files="VERSION make aclocal.in configure.in config.hh.in config.make.in"
-for i in $files; do
-	if [ -r $i ]; then
-		echo "$name: can't stepmakise: $i already present"
-		exit 1
-	fi
-done
-
-echo -n "Stepmakeising..."
-for i in $files; do
-	cp -prv stepmake/$i .
-done
-
-cat <<EOF
-ok
-Please edit the folowing files to your package's needs:
-
-    VERSION
-    configure.in 
-
-and look at:
-
-    make/Toplevel.make.in
-    config.hh.in
-    config.make.in
-EOF
-
diff --git a/stepmake/bin/text2html.py b/stepmake/bin/text2html.py
deleted file mode 100644
index c2424deeba..0000000000
--- a/stepmake/bin/text2html.py
+++ /dev/null
@@ -1,40 +0,0 @@
-#@PYTHON@
-import os
-import re
-import string
-import sys
-
-
-entities = {
-	"&" : 'amp',
-	"`" : 'apos',
-	'>' : 'gt',
-	'<' : 'lt',
-	'"' : 'quot',
-	}
-
-def txt2html (s):
-	for i in entities.keys ():
-		s = re.sub (i, '\001' + entities[i] + ';', s);
-	s = re.sub ('\001', '&', s);
-	return s
-
-for a in sys.argv[1:]:
-	# hmm, we need: text2html out/foe.txt -> out/foe.html,
-	# -o is a bit overkill?
-	# outfile = os.path.basename (os.path.splitext(a)[0]) + '.html'
-	outfile = os.path.splitext(a)[0] + '.html'
-	
-	try:
-	    os.unlink(outfile)
-	except:
-	    pass
-
-	s = r"""
-<html><body><pre>
-%s
-</pre></body></html>
-""" % txt2html (open (a).read ())
-	open (outfile, 'w').write (s)
-
-
diff --git a/stepmake/config.hh.in b/stepmake/config.hh.in
deleted file mode 100644
index 58f6d8b230..0000000000
--- a/stepmake/config.hh.in
+++ /dev/null
@@ -1,14 +0,0 @@
-/* @configure_input@ */
-
-/* Hmm */
-#define PACKAGE "@package@"
-
-/* Toplevel version */
-#define  TOPLEVEL_VERSION "@TOPLEVEL_VERSION@"
-
-/* default init and input dir */
-#define DATADIR "@DATADIR@"
-
-/* default locale dir */
-#define LOCALEDIR "@LOCALEDIR@"
-
diff --git a/stepmake/configure.in b/stepmake/configure.in
deleted file mode 100644
index 3900ffd9fd..0000000000
--- a/stepmake/configure.in
+++ /dev/null
@@ -1,45 +0,0 @@
-dnl configure.in   -*-shell-script-*-
-dnl Process this file with autoconf to produce a configure script. 
-
-# Bootstrap the init proces.
-AC_INIT
-
-# Bootstrap StepMake configure
-# For user package:
-# AC_CONFIG_AUX_DIR(stepmake/bin)
-# For stepmake package:
-AC_CONFIG_AUX_DIR(bin)
-STEPMAKE_INIT
-
-# List a file that identifies your package.
-AC_CONFIG_SRCDIR([make/stepmake.lsm.in])
-# Move to aclocal.m4?
-AC_CONFIG_HEADER([$CONFIGFILE.h:config.hh.in])
-
-# For all packages except the StepMake package itself
-# AC_CONFIG_SUBDIRS(stepmake)
-
-CC=echo
-AC_SUBST(CC)
-# Uncomment the configuration options your package needs.
-# STEPMAKE_COMPILE
-# AC_CHECK_HEADERS([limits.h malloc.h string.h unistd.h values.h])
-# STEPMAKE_CXX
-# STEPMAKE_GXX
-# STEPMAKE_CXXTEMPLATE
-# STEPMAKE_LEXYACC
-# STEPMAKE_LIB
-# STEPMAKE_LIBTOOL
-STEPMAKE_LOCALE
-# STEPMAKE_GETTEXT
-# STEPMAKE_MAN
-# STEPMAKE_MSGFMT
-# STEPMAKE_TEXMF
-# STEPMAKE_TEXMF_DIRS
-
-# AM_PATH_GTK(1.0.0,,AC_MSG_ERROR([please install proper version of gtk]))
-# AM_PATH_GTK__(0.9.4,,AC_MSG_ERROR([please install proper version of gtk--]))
-
-AC_CHECK_PROGS(MAKEINFO, makeinfo, error)
-
-STEPMAKE_END
diff --git a/stepmake/stepmake/GNUmakefile b/stepmake/stepmake/GNUmakefile
deleted file mode 100644
index a2336555bd..0000000000
--- a/stepmake/stepmake/GNUmakefile
+++ /dev/null
@@ -1,25 +0,0 @@
-# title	   makefile for stepmake
-
-# subdir level:
-#
-depth = ../..
-#
-
-# descent order into subdirectories:
-#
-SUBDIRS =
-#
-
-STEPMAKE_TEMPLATES=makedir install www
-
-# bootstrap stepmake:
-#
--include $(depth)/make/stepmake.make 
-
-ifeq ($(PACKAGE),STEPMAKE)
-INSTALLATION_DIR=$(datadir)/stepmake
-else
-INSTALLATION_DIR=$(dir $(patsubst %/, %, $(dir $(datadir))))$(package)/stepmake/stepmake
-endif
-INSTALLATION_FILES=GNUmakefile $(MAKE_FILES)
-
diff --git a/stepmake/stepmake/automatically-configured.sub.make b/stepmake/stepmake/automatically-configured.sub.make
deleted file mode 100644
index 1bb8bf6d7f..0000000000
--- a/stepmake/stepmake/automatically-configured.sub.make
+++ /dev/null
@@ -1 +0,0 @@
-# empty
diff --git a/stepmake/stepmake/automatically-generated.sub.make b/stepmake/stepmake/automatically-generated.sub.make
deleted file mode 100644
index 1ebfcc3078..0000000000
--- a/stepmake/stepmake/automatically-generated.sub.make
+++ /dev/null
@@ -1,10 +0,0 @@
-
-LINECOMMENT=\#
-
-default:
-	-chmod +w $(OUTFILE)
-	head -n 1 $(INFILE) > $(OUTFILE)
-	echo "$(LINECOMMENT) WARNING WARNING WARNING" >> $(OUTFILE)
-	echo "$(LINECOMMENT) do not edit! this is $(OUTFILE), generated from $(INFILE)" >> $(OUTFILE)
-	cat $(INFILE) >> $(OUTFILE)
-	chmod -w $(OUTFILE)
diff --git a/stepmake/stepmake/c++-files.make b/stepmake/stepmake/c++-files.make
deleted file mode 100644
index 1bb8bf6d7f..0000000000
--- a/stepmake/stepmake/c++-files.make
+++ /dev/null
@@ -1 +0,0 @@
-# empty
diff --git a/stepmake/stepmake/c++-rules.make b/stepmake/stepmake/c++-rules.make
deleted file mode 100644
index 2f561180c9..0000000000
--- a/stepmake/stepmake/c++-rules.make
+++ /dev/null
@@ -1,28 +0,0 @@
-.SUFFIXES: .cc .dep .hh .ll .o .so .yy
-
-$(outdir)/%.o: %.cc
-	$(DO_O_DEP) $(CXX) -c $(ALL_CXXFLAGS) -o $@ $<
-
-$(outdir)/%.o: $(outdir)/%.cc
-	$(DO_O_DEP) $(CXX) -c $(ALL_CXXFLAGS) -o $@ $<
-
-$(outdir)/%.lo: %.cc
-	$(DO_LO_DEP) $(CXX) -c $(ALL_CXXFLAGS) $(PIC_FLAGS) -o $@ $<
-
-$(outdir)/%.lo: $(outdir)/%.cc
-	$(DO_LO_DEP) $(CXX) -c $(ALL_CXXFLAGS) $(PIC_FLAGS) -o $@ $<
-
-$(outdir)/%.cc: %.yy
-	$(BISON) -o $@ $<
-	-mv -f $(*F).yy.tab.c $@ # bison < 1.30
-
-$(outdir)/%.hh: %.yy
-	$(BISON) -o$(outdir)/$(*F).cc -d $<
-	-mv -f $(*F).yy.tab.h $@  # bison < 1.30 ???
-	-mv -f $(outdir)/$(*F).cc.h $@  # bison < 1.30
-	-mv $(*F).tab.hh $@
-	rm -f $(*F).tab.c $(*F).tab.cc # bison < 1.30
-	rm -f $(outdir)/$(*F).cc # avoid recompiling the .cc file 
-
-$(outdir)/%.cc: %.ll
-	$(FLEX) -Cfe -p -p -o$@ $< 
diff --git a/stepmake/stepmake/c++-targets.make b/stepmake/stepmake/c++-targets.make
deleted file mode 100644
index e032d7ee59..0000000000
--- a/stepmake/stepmake/c++-targets.make
+++ /dev/null
@@ -1,2 +0,0 @@
-# empty
-
diff --git a/stepmake/stepmake/c++-vars.make b/stepmake/stepmake/c++-vars.make
deleted file mode 100644
index 901e041b6b..0000000000
--- a/stepmake/stepmake/c++-vars.make
+++ /dev/null
@@ -1,28 +0,0 @@
-
-include $(stepdir)/compile-vars.make
-
-# added two warnings that are treated by cygwin32's gcc 2.7.2 as errors.
-# huh, but still, no warnings even provoced with linux's gcc 2.7.2.1?
-
-# -pipe makes it go faster, but is not supported on all platforms. 
-# EXTRA_CXXFLAGS= -Wall -Winline -W -Wmissing-prototypes -Wmissing-declarations -Wconversion
-EXTRA_CXXFLAGS= -Wall  -W -Wmissing-prototypes -Wconversion
-
-ALL_CXXFLAGS = $(CXXFLAGS) $(ICFLAGS) $(DEFINES) $(addprefix -I,$(INCLUDES)) $(USER_CFLAGS) $(EXTRA_CFLAGS) $(MODULE_CFLAGS) $($(PACKAGE)_CFLAGS) $($(PACKAGE)_CXXFLAGS) $(USER_CXXFLAGS) $(EXTRA_CXXFLAGS) $(MODULE_CXXFLAGS)
-
-# template files:
-TCC_FILES := $(wildcard *.tcc)
-HH_FILES := $(wildcard *.hh)
-CC_FILES := $(wildcard *.cc)
-INL_FILES := $(wildcard *.icc)
-YY_FILES := $(wildcard *.yy)
-LL_FILES := $(wildcard *.ll)
-
-SOURCE_FILES+= $(CC_FILES) $(YY_FILES) $(INL_FILES) $(TCC_FILES) $(HH_FILES) $(LL_FILES)
-
-ALL_CC_SOURCES += $(HH_FILES) $(INL_FILES) $(CC_FILES) $(YY_FILES) $(LL_FILES) 
-
-O_FILES+=$(addprefix $(outdir)/, $(CC_FILES:.cc=.o) $(LL_FILES:.ll=.o) $(YY_FILES:.yy=.o))
-
-TAGS_FILES += $(TCC_FILES) $(HH_FILES) $(INL_FILES) $(CC_FILES) $(YY_FILES) $(LL_FILES)
-
diff --git a/stepmake/stepmake/c-rules.make b/stepmake/stepmake/c-rules.make
deleted file mode 100644
index 289e6c2485..0000000000
--- a/stepmake/stepmake/c-rules.make
+++ /dev/null
@@ -1,28 +0,0 @@
-.SUFFIXES: .c .dep .h .l .lo .o .so .y
-
-$(outdir)/%.o: %.c
-	$(DO_O_DEP) $(CC) -c $(ALL_CFLAGS) -o $@ $<
-
-$(outdir)/%.o: $(outdir)/%.c
-	$(DO_O_DEP) $(CC) -c $(ALL_CFLAGS) -o $@ $<
-
-$(outdir)/%.lo: %.c
-	$(DO_LO_DEP) $(CC) -c $(ALL_CFLAGS) $(PIC_FLAGS) -o $@ $<
-
-$(outdir)/%.lo: %.c
-	$(DO_LO_DEP) $(CC) -c $(ALL_CFLAGS) $(PIC_FLAGS) -o $@ $<
-
-$(outdir)/%.c: %.y
-	$(BISON) $<
-	mv $(*F).tab.c $@
-
-$(outdir)/%.h: %.y
-	$(BISON) -d $<
-	mv $(*F).tab.h $@
-	rm -f $(*F).tab.c # if this happens in the wrong order it triggers recompile of the .cc file 
-
-$(outdir)/%.c: %.l
-	$(FLEX) -Cfe -p -p -o$@ $<
-# could be faster:
-#	$(FLEX) -8 -Cf -o$@ $< 
-
diff --git a/stepmake/stepmake/c-targets.make b/stepmake/stepmake/c-targets.make
deleted file mode 100644
index 1bb8bf6d7f..0000000000
--- a/stepmake/stepmake/c-targets.make
+++ /dev/null
@@ -1 +0,0 @@
-# empty
diff --git a/stepmake/stepmake/c-vars.make b/stepmake/stepmake/c-vars.make
deleted file mode 100644
index 2637bf2332..0000000000
--- a/stepmake/stepmake/c-vars.make
+++ /dev/null
@@ -1,16 +0,0 @@
-include $(stepdir)/compile-vars.make
-
-H_FILES := $(wildcard *.h)
-C_FILES := $(wildcard *.c)
-Y_FILES := $(wildcard *.y)
-L_FILES := $(wildcard *.l)
-
-SOURCE_FILES+=$(Y_FILES) $(C_FILES) $(L_FILES) $(H_FILES)
-
-O_FILES+=$(addprefix $(outdir)/, $(Y_FILES:.y=.o) $(C_FILES:.c=.o) $(L_FILES:.l=.o))
-
-TAGS_FILES += $(C_FILES) $(H_FILES)
-
-ALL_C_SOURCES += $(H_FILES) $(C_FILES) $(Y_FILES) $(L_FILES)
-
-ALL_CFLAGS = $(CFLAGS) $(ICFLAGS) $(DEFINES) $(addprefix -I,$(INCLUDES)) $(USER_CFLAGS) $(EXTRA_CFLAGS) $(MODULE_CFLAGS)
diff --git a/stepmake/stepmake/compile-vars.make b/stepmake/stepmake/compile-vars.make
deleted file mode 100644
index 085a4363e6..0000000000
--- a/stepmake/stepmake/compile-vars.make
+++ /dev/null
@@ -1,13 +0,0 @@
-ARFLAGS = ru
-
-ALL_LDFLAGS = $(LDFLAGS) $(ILDFLAGS) $(EXTRA_LDFLAGS) $($(PACKAGE)_LDFLAGS) $(MODULE_LDFLAGS) $(USER_LDFLAGS)
-
-PIC_FLAGS = -fpic -fPIC
-SHARED_FLAGS = -shared
-
-o-dep-out = $(outdir)/$(subst .o,.dep,$(notdir $@))#
-DO_O_DEP = rm -f $(o-dep-out); DEPENDENCIES_OUTPUT="$(o-dep-out) $(outdir)/$(notdir $@)"
-
-lo-dep-out = $(outdir)/$(subst .lo,.dep,$(notdir $@))#
-DO_LO_DEP = rm -f $(lo-dep-out); DEPENDENCIES_OUTPUT="$(lo-dep-out) $(outdir)/$(notdir $@)"
-
diff --git a/stepmake/stepmake/debian-rules.make b/stepmake/stepmake/debian-rules.make
deleted file mode 100644
index 11638b9201..0000000000
--- a/stepmake/stepmake/debian-rules.make
+++ /dev/null
@@ -1,7 +0,0 @@
-$(outdir)/%: %
-	rm -f $@
-	ln $< $@
-
-$(outdir)/%: $(doc-dir)/%.in
-	rm -f $@
-	cat $< | sed 's%^% %' > $@
diff --git a/stepmake/stepmake/debian-targets.make b/stepmake/stepmake/debian-targets.make
deleted file mode 100644
index 73d27e60c5..0000000000
--- a/stepmake/stepmake/debian-targets.make
+++ /dev/null
@@ -1,5 +0,0 @@
-
-default: $(OUTCONF_FILES)
-
-
-# local-dist: default
diff --git a/stepmake/stepmake/debian-vars.make b/stepmake/stepmake/debian-vars.make
deleted file mode 100644
index e032d7ee59..0000000000
--- a/stepmake/stepmake/debian-vars.make
+++ /dev/null
@@ -1,2 +0,0 @@
-# empty
-
diff --git a/stepmake/stepmake/documentation-rules.make b/stepmake/stepmake/documentation-rules.make
deleted file mode 100644
index 81469e2e6f..0000000000
--- a/stepmake/stepmake/documentation-rules.make
+++ /dev/null
@@ -1,17 +0,0 @@
-# special rules for the documentation section.
-# There are too many to add to the general rules
-
-.SUFFIXES: .1 .data .html .gif .png .tex .txt .xpm
-
-$(outdir)/%.gif: %.xpm
-	xpmtoppm $< | ppmtogif > $@
-
-$(outdir)/%.png: %.xpm
-	xpmtoppm $< | pnmtopng > $@
-
-# use striproff?
-$(outdir)/%.txt: $(outdir)/%.1
-	troff -man -Tascii $< | grotty -b -u -o > $@
-
-include $(stepdir)/texinfo-rules.make
-
diff --git a/stepmake/stepmake/documentation-targets.make b/stepmake/stepmake/documentation-targets.make
deleted file mode 100644
index b8eabaed77..0000000000
--- a/stepmake/stepmake/documentation-targets.make
+++ /dev/null
@@ -1,24 +0,0 @@
-
-default:
-
-# UGH. 
-include $(stepdir)/www-targets.make
-
-local-WWW: $(OUTHTML_FILES) 
-
-# why isn't this in texinfo-targets?
-INFO_INSTALL_FILES = $(wildcard $(addsuffix *, $(INFO_FILES)))
-
-# should we call install-info?
-INFOINSTALL=$(MAKE) INSTALLATION_OUT_DIR=$(DESTDIR)$(infodir) depth=$(depth) INSTALLATION_OUT_FILES="$(INFO_INSTALL_FILES)" -f $(stepdir)/install-out.sub.make
-
-local-install: install-info
-local-uninstall: uninstall-info
-
-install-info: $(INFO_FILES)
-	-$(INSTALL) -d $(DESTDIR)$(infodir)
-	$(INFOINSTALL) local-install
-
-uninstall-info:
-	$(INFOINSTALL) local-uninstall
-	-rmdir $(infodir)
diff --git a/stepmake/stepmake/documentation-vars.make b/stepmake/stepmake/documentation-vars.make
deleted file mode 100644
index 733252a047..0000000000
--- a/stepmake/stepmake/documentation-vars.make
+++ /dev/null
@@ -1,4 +0,0 @@
-at-dir = $(doc-dir)/
-at-ext = .in
-
-
diff --git a/stepmake/stepmake/elisp-rules.make b/stepmake/stepmake/elisp-rules.make
deleted file mode 100644
index 1bb8bf6d7f..0000000000
--- a/stepmake/stepmake/elisp-rules.make
+++ /dev/null
@@ -1 +0,0 @@
-# empty
diff --git a/stepmake/stepmake/elisp-targets.make b/stepmake/stepmake/elisp-targets.make
deleted file mode 100644
index 1bb8bf6d7f..0000000000
--- a/stepmake/stepmake/elisp-targets.make
+++ /dev/null
@@ -1 +0,0 @@
-# empty
diff --git a/stepmake/stepmake/elisp-vars.make b/stepmake/stepmake/elisp-vars.make
deleted file mode 100644
index 14bc8e4d85..0000000000
--- a/stepmake/stepmake/elisp-vars.make
+++ /dev/null
@@ -1,3 +0,0 @@
-
-EL_FILES := $(wildcard *.el)
-SOURCE_FILES += $(EL_FILES)
diff --git a/stepmake/stepmake/executable-rules.make b/stepmake/stepmake/executable-rules.make
deleted file mode 100644
index 5d25e923f5..0000000000
--- a/stepmake/stepmake/executable-rules.make
+++ /dev/null
@@ -1,4 +0,0 @@
-
-$(EXECUTABLE): $(outdir)/config.h $(O_FILES) $(outdir)/version.hh
-	$(foreach a, $(MODULE_LIBS), $(MAKE) -C $(a) && ) true
-	$(LD) -o $@ $(O_FILES) $(LOADLIBES) $(ALL_LDFLAGS)
diff --git a/stepmake/stepmake/executable-targets.make b/stepmake/stepmake/executable-targets.make
deleted file mode 100644
index b16bf89807..0000000000
--- a/stepmake/stepmake/executable-targets.make
+++ /dev/null
@@ -1,23 +0,0 @@
-default: $(EXECUTABLE)
-
-exe: $(EXECUTABLE)
-
-local-install: installexe
-
-local-uninstall: uninstallexe
-
-installexe: all
-	-$(INSTALL) -d $(bindir)
-	$(foreach a, $(EXECUTABLES), \
-		$(INSTALL) -m 755 $(outdir)/$(a) \
-		$(bindir)/$(program_prefix)$(a)$(program_suffix) && \
-		strip $(bindir)/$(program_prefix)$(a)$(program_suffix) && ) true
-	$(foreach a, $(SEXECUTABLES), \
-		$(INSTALL) -m 755 $(outdir)/$(a) $(bindir) &&) true
-
-uninstallexe:
-	$(foreach a, $(EXECUTABLES), rm -f \
-		$(bindir)/$(program_prefix)$(a)$(program_suffix) && ) true
-	$(foreach a, $(SEXECUTABLES), rm -f $(bindir)/$(a) &&) true
-
-
diff --git a/stepmake/stepmake/executable-vars.make b/stepmake/stepmake/executable-vars.make
deleted file mode 100644
index 5ac8fcd982..0000000000
--- a/stepmake/stepmake/executable-vars.make
+++ /dev/null
@@ -1,7 +0,0 @@
-MODULE_LIBES =$(addprefix $(outdir)/../, $(addsuffix /$(outbase)/library.a, $(MODULE_LIBS)))
-LOADLIBES = $(MODULE_LIBES) $($(PACKAGE)_LIBES) $(EXTRA_LIBES)
-
-EXECUTABLE = $(outdir)/$(NAME)
-EXECUTABLES = $(notdir $(EXECUTABLE))
-
-
diff --git a/stepmake/stepmake/generic-rules.make b/stepmake/stepmake/generic-rules.make
deleted file mode 100644
index 1a19a4dc88..0000000000
--- a/stepmake/stepmake/generic-rules.make
+++ /dev/null
@@ -1,9 +0,0 @@
-$(outdir)/%: %.m4
-	$(M4) $< > $@
-
-%.dep:
-	touch $@
-
-%.gz: %
-	gzip -c9 $< > $@
-
diff --git a/stepmake/stepmake/generic-targets.make b/stepmake/stepmake/generic-targets.make
deleted file mode 100644
index 603ffa1375..0000000000
--- a/stepmake/stepmake/generic-targets.make
+++ /dev/null
@@ -1,184 +0,0 @@
-.PHONY : all clean config default diff dist doc exe help html lib TAGS\
-	 po
-
-all:	 default
-	$(LOOP)
-
-man:
-	$(LOOP)
-
-# be careful about deletion.
-clean: local-clean
-	-rm -f $(outdir)/*
-	$(LOOP)
-
-ifneq ($(strip $(depth)),.)
-dist:
-	make -C $(depth) dist
-endif
-
-distclean: clean 
-	$(LOOP)
-	$(MAKE) local-distclean
-
-maintainerclean: 
-	$(LOOP)
-	$(MAKE)	local-maintainerclean
-	$(MAKE) local-distclean
-
-
-# configure:
-#
-config:
-	./$(depth)/configure
-#
-
-
-# target help:
-#
-generic-help:
-	@echo -e "\
-Makefile for $(PACKAGE_NAME) $(TOPLEVEL_VERSION)\n\
-Usage: make ["VARIABLE=value"]... [TARGET]\n\
-\n\
-Targets:\n"
-
-# urg
-webdir = $(local_package_docdir)
-help: generic-help local-help
-	@echo -e "\
-  all         update everything\n\
-  clean       remove all genated stuff in $(outdir)\n\
-  check       run selftest\n\
-  default     same as the empty target\n\
-  exe         update all executables\n\
-  help        this help\n\
-  install     install programs and data (prefix=$(prefix))\n\
-  lib         update all libraries\n\
-  web         update website in out-www\n\
-  web-install install website documentation in (webdir=$(webdir))\n\
-  web-clean   clean out-www\n\
-  TAGS        genarate tagfiles\n\
-\n\
-Make may be invoked from any subdirectory\n\
-Note that all commands recurse into SUBDIRS;\n\
-prepend \`local-' to do only cwd, eg: local-clean\n\
-"\
-
-local-help:
-
-local-dist: $(DIST_FILES) $(OUT_DIST_FILES) $(NON_ESSENTIAL_DIST_FILES)
-	mkdir -p $(distdir)/$(localdir)
-	$(LN) $(DIST_FILES) $(distdir)/$(localdir)
-
-	case "$(NON_ESSENTIAL_DIST_FILES)x" in x) ;; *) \
-		$(LN) $(NON_ESSENTIAL_DIST_FILES) $(distdir)/$(localdir);; \
-	esac
-
-	case "$(OUT_DIST_FILES)x" in x) ;; *) \
-		mkdir -p $(distdir)/$(localdir)/$(outdir); \
-		$(LN) $(OUT_DIST_FILES) $(distdir)/$(localdir)/$(outdir);; \
-	esac
-#	$(foreach i, $(SUBDIRS), $(MAKE) distdir=../$(distdir) localdir=$(localdir)/$(i) -C $(i) local-dist &&) true
-# absolute for installed stepmake
-	$(foreach i, $(SUBDIRS), $(MAKE) topdir=$(topdir) distdir=$(distdir) localdir=$(localdir)/$(notdir $(i)) -C $(i) local-dist &&) true
-
-
-
-html: $(HTML_FILES)
-
-TAGS:
-	-if [ "$(TAGS_FILES)" != "" ]; then \
-		etags $(ETAGS_FLAGS) $(TAGS_FILES) || \
-		ctags $(CTAGS_FLAGS) ".h.hh.tcc.icc" $(TAGS_FILES) $(ERROR_LOG); \
-	fi
-
-	$(LOOP)
-
-$(outdir)/version.hh: $(depth)/VERSION $(config_make)
-	$(PYTHON) $(step-bindir)/make-version.py $< > $@
-
-$(outdir)/config.h: $(config_h)
-	cp -p $< $@
-
-configure: configure.in aclocal.m4
-	NOCONFIGURE=yes $(srcdir)/autogen.sh
-	chmod +x configure
-
-local-clean:
-
-local-distclean:
-
-local-maintainerclean:
-
-install-strip:
-	$(MAKE) INSTALL="$(INSTALL) -s" install
-
-ifneq ($(strip $(depth)),.)
-final-install:
-	$(LOOP)
-
-install: local-install
-	$(LOOP)
-endif
-
-local-install:
-
-uninstall: local-uninstall
-	$(LOOP)
-
-local-uninstall:
-
-installextradoc:
-	-$(INSTALL) -d $(prefix)/doc/$(package)
-	$(foreach i, $(EXTRA_DOC_FILES),\
-		cp -r $(i) $(prefix)/doc/$(package) &&) true
-
-include $(outdir)/dummy.dep $(DEP_FILES) # expect a warning here
-
-$(outdir)/dummy.dep:
-	-mkdir -p $(outdir)
-	touch $(outdir)/dummy.dep
-
-
-check: local-check
-	$(LOOP)
-
-local-check:
-
-# ugh.  ugh ugh ugh
-$(config_make): $(topdir)/configure
-	@echo "************************************************************"
-	@echo "configure changed! You should probably reconfigure manually."
-	@echo "************************************************************"
-	(cd $(builddir); ./config.status)
-	touch $@		# do something for multiple simultaneous configs.
-
-
-deb:
-	$(MAKE) -C $(depth)/debian
-	cd $(depth) && debuild
-
-diff:
-	$(PYTHON) $(step-bindir)/package-diff.py  --outdir=$(topdir)/$(outdir) --package=$(topdir) $(makeflags)
-	-ln -f $(depth)/$(outdir)/$(distname).diff.gz $(patch-dir)
-
-release: 
-	$(PYTHON) $(step-bindir)/release.py --outdir=$(topdir)/$(outdir) --package=$(topdir)
-
-
-################ website.
-
-local-WWW:
-local-WWW-post:
-web-install:
-
-WWW: local-WWW
-	$(LOOP)
-
-WWW-post: local-WWW-post
-	$(LOOP)
-
-web: 
-	$(MAKE) out=www WWW
-	$(MAKE) out=www WWW-post
diff --git a/stepmake/stepmake/generic-vars.make b/stepmake/stepmake/generic-vars.make
deleted file mode 100644
index 117afbfdc9..0000000000
--- a/stepmake/stepmake/generic-vars.make
+++ /dev/null
@@ -1,125 +0,0 @@
-# directory names:
-
-# depth from group-dir
-# internal, not normally used
-DEPTH = $(depth)/$(package-depth)
-
-#ifeq ($(topdir),)
-#abs-srcdir := $(shell cd $(depth); pwd)
-##deprecated
-#topdir := $(abs-srcdir)
-#endif
-
-## `which pwd` is to prevent symlink resolving intelligence 
-pwd:=$(shell `which pwd`)
-current-relative-dir:=$(subst $(strip $(shell cd $(depth); `which pwd`)),,$(pwd))
-
-ifeq ($(srcdir),.)
-src-depth = $(depth)
-else
-src-depth = $(srcdir)
-endif
-
-ifeq ($(topdir),)
-abs-srcdir := $(shell cd $(src-depth); pwd)
-topdir := $(abs-srcdir)
-endif
-
-# derived names
-ifeq ($(distdir),)
-  distdir = $(topdir)/$(outdir)/$(DIST_NAME)
-  DIST_NAME = $(package)-$(TOPLEVEL_VERSION)
-endif
-distname = $(package)-$(TOPLEVEL_VERSION)
-
-doc-dir = $(src-depth)/Documentation
-po-dir = $(src-depth)/po
-
-# sort-out which of these are still needed
-#
-$(package)_bindir = $(depth)/bin
-step-bindir = $(stepmake)/bin
-
-group-dir = $(shell cd $(DEPTH);pwd)/..
-release-dir = $(group-dir)/releases
-patch-dir = $(group-dir)/patches
-#
-# i have in $HOME/.rpmrc
-#     topdir: /home/fred/usr/src/Redhat
-#
-rpm-sources = $(release-dir)
-rpm-build = $(group-dir)/RedHat/BUILD
-#
-
-# package-icon=$(outdir)/$(package)-icon.gif
-package-icon=$(outdir)/$(package)-icon.xpm
-
-
-# need to be defined in local Makefiles:
-#
-FOOBAR = 
-# the version:
-#
-ifneq ($(MY_PATCH_LEVEL),$(FOOBAR))
-VERSION=$(MAJOR_VERSION).$(MINOR_VERSION).$(PATCH_LEVEL).$(MY_PATCH_LEVEL)
-else
-VERSION=$(MAJOR_VERSION).$(MINOR_VERSION).$(PATCH_LEVEL)
-endif
-
-ifneq ($(TOPLEVEL_MY_PATCH_LEVEL),$(FOOBAR))
-TOPLEVEL_VERSION=$(TOPLEVEL_MAJOR_VERSION).$(TOPLEVEL_MINOR_VERSION).$(TOPLEVEL_PATCH_LEVEL).$(TOPLEVEL_MY_PATCH_LEVEL)
-else
-TOPLEVEL_VERSION=$(TOPLEVEL_MAJOR_VERSION).$(TOPLEVEL_MINOR_VERSION).$(TOPLEVEL_PATCH_LEVEL)
-endif
-
-
-
-# clean file lists:
-#
-ERROR_LOG = 2> /dev/null
-SILENT_LOG = 2>&1 >  /dev/null
-date := $(shell date +%x)	#duplicated?
-
-INCLUDES = include $(outdir) $($(PACKAGE)_INCLUDES) $(MODULE_INCLUDES)
-
-M4 = m4
-
-#replace to do stripping of certain objects
-STRIPDEBUG=true 
-
-DIST_FILES=$(EXTRA_DIST_FILES) GNUmakefile $(ALL_SOURCES)
-DOCDIR=$(depth)/$(outdir)
-
-STRIP=strip --strip-debug
-
-# substitute $(STRIP) in Site.make if you want stripping
-DO_STRIP=true
-LOOP=$(foreach i,  $(SUBDIRS), $(MAKE) PACKAGE=$(PACKAGE) package=$(package) -C $(i) $@ &&) true
-
-# different redhat releases need different flags for etags. Just use defaults.
-ETAGS_FLAGS= # -CT
-CTAGS_FLAGS=-h
-
-makeflags=$(patsubst %==, %, $(patsubst ---%,,$(patsubst ----%,,$(MAKEFLAGS:%=--%))))
-
-DEP_FILES := $(wildcard $(outdir)/*.dep)
-
-IN_FILES := $(wildcard *.in)
-SOURCE_FILES += $(IN_FILES)
-
-# Preprocessed .in documentation _FILES:
-OUTIN_FILES = $(addprefix $(outdir)/, $(IN_FILES:%.in=%))
-
-ALL_SOURCES = $(SOURCE_FILES)
-
-# Check if we are building for Cygwin
-#
-HOST_ARCH=$(shell $(CC) -dumpmachine)
-ifeq ($(HOST_ARCH),i686-pc-cygwin)
-CYGWIN_BUILD = yes
-endif
-#
-# ugh-- what if someone decides on: 'i568-pc-cygwin-gnu'
-ifeq ($(HOST_ARCH),i686-cygwin)
-CYGWIN_BUILD = yes
-endif
diff --git a/stepmake/stepmake/help2man-rules.make b/stepmake/stepmake/help2man-rules.make
deleted file mode 100644
index bdc00ac737..0000000000
--- a/stepmake/stepmake/help2man-rules.make
+++ /dev/null
@@ -1,35 +0,0 @@
-# We must invoke the generated $(outdir)/help2man script instead of
-# the help2man.pl source, which means that the buildscripts directory
-# must be built first.
-#
-# From the perlrun man-page:
-#
-#	If the #! line does not contain the word "perl", the
-#       program named after the #! is executed instead of the Perl
-#       interpreter.  This is slightly bizarre, but it helps
-#
-# Indeed it is.  Perl sucks.
-#
-# Two screenfulls explaining that the otherwise standard #! is broken
-# for perl, and arguing that this broken magic is better in some
-# cases.  Four more explaining what a line comment is, and that it may
-# be parsed, same here.
-
-HELP2MAN_COMMAND = $(PERL) $(builddir)/buildscripts/$(outbase)/help2man $< > $@
-
-ifeq ($(strip $(CROSS)),no)
-$(outdir)/%.1: $(outdir)/%
-	$(HELP2MAN_COMMAND)
-else
-# When cross building, some manpages will not build because the
-# executable does not run.  We assume the manpages to be generated
-# during a previous compile for the build host, with config=for-build,
-# in the directory $(outdir)-for-build.
-$(outdir)/%.1: $(outdir:%=%-for-build)/%.1
-	cp $< $@
-endif
-
-ifneq ($(outdir),./out)
-$(outdir)/%.1: out/%.1
-	cp $< $@
-endif
diff --git a/stepmake/stepmake/help2man-targets.make b/stepmake/stepmake/help2man-targets.make
deleted file mode 100644
index c5abd4aee3..0000000000
--- a/stepmake/stepmake/help2man-targets.make
+++ /dev/null
@@ -1,21 +0,0 @@
-default: man
-
-local-install: install-help2man
-
-install-help2man: man
-	-$(INSTALL) -d $(DESTDIR)$(mandir)/man1
-	$(foreach a,  $(HELP2MAN_GROFFS), \
-		$(INSTALL) -m 644 $(a) $(DESTDIR)$(mandir)/man1 && ) true
-
-man: $(HELP2MAN_GROFFS)
-
-local-uninstall: uninstall-help2man
-
-uninstall-help2man:
-	$(foreach a, $(notdir $(MANGROFFS)), rm -f $(a) && ) true
-
-
-
-
-
-
diff --git a/stepmake/stepmake/help2man-vars.make b/stepmake/stepmake/help2man-vars.make
deleted file mode 100644
index 6ae6dd819e..0000000000
--- a/stepmake/stepmake/help2man-vars.make
+++ /dev/null
@@ -1,5 +0,0 @@
-
-HELP2MAN_GROFFS = $(addsuffix .1, $(addprefix $(outdir)/, $(HELP2MAN_EXECS)))
-
-# triggers recompilations.  Ugh.
-OUT_DIST_FILES +=  # $(wildcard $(outdir)/*.1) 
diff --git a/stepmake/stepmake/install-library-rules.make b/stepmake/stepmake/install-library-rules.make
deleted file mode 100644
index 1bb8bf6d7f..0000000000
--- a/stepmake/stepmake/install-library-rules.make
+++ /dev/null
@@ -1 +0,0 @@
-# empty
diff --git a/stepmake/stepmake/install-library-targets.make b/stepmake/stepmake/install-library-targets.make
deleted file mode 100644
index 3d657c5073..0000000000
--- a/stepmake/stepmake/install-library-targets.make
+++ /dev/null
@@ -1,22 +0,0 @@
-
-local-install: $(LIBRARY)
-ifneq ($(strip $(INSTALL_HEADERS)),)
-	$(INSTALL) -d $(includedir)
-	$(INSTALL) $(INSTALL_HEADERS) $(includedir)
-endif
-ifeq ($(LIB_SUFFIX),.so)
-	$(INSTALL) -d $(libdir)
-	$(INSTALL) $(LIBRARY) $(libdir)/$(INSTALL_LIBRARY).$(VERSION)
-	ln -s $(LIB_PREFIX)intl$(LIB_SUFFIX).$(VERSION) $(libdir)/$(LIB_PREFIX)intl$(LIB_SUFFIX).$(MAJOR_VERSION)
-	ln -s $(LIB_PREFIX)intl$(LIB_SUFFIX).$(VERSION) $(libdir)/$(LIB_PREFIX)intl$(LIB_SUFFIX)
-else
-	$(INSTALL) -d $(libdir)
-	$(INSTALL) $(LIBRARY) $(libdir)/$(INSTALL_LIBRARY)
-endif
-
-local-uninstall:
-ifneq ($(strip $(INSTALL_HEADERS)),)
-	rm -f $(addprefix $(includedir)/, $(INSTALL_HEADERS))
-endif
-	rm -f $(libdir)/$(INSTALL_LIBRARY)
-
diff --git a/stepmake/stepmake/install-library-vars.make b/stepmake/stepmake/install-library-vars.make
deleted file mode 100644
index 1bb8bf6d7f..0000000000
--- a/stepmake/stepmake/install-library-vars.make
+++ /dev/null
@@ -1 +0,0 @@
-# empty
diff --git a/stepmake/stepmake/install-out-rules.make b/stepmake/stepmake/install-out-rules.make
deleted file mode 100644
index 1bb8bf6d7f..0000000000
--- a/stepmake/stepmake/install-out-rules.make
+++ /dev/null
@@ -1 +0,0 @@
-# empty
diff --git a/stepmake/stepmake/install-out-targets.make b/stepmake/stepmake/install-out-targets.make
deleted file mode 100644
index 3abb38417b..0000000000
--- a/stepmake/stepmake/install-out-targets.make
+++ /dev/null
@@ -1,27 +0,0 @@
-
-local-install: local-install-files local-install-outfiles
-
-local-install-files:
-
-# urg, parameterise
-local-install-outfiles: $(INSTALLATION_OUT_FILES) $(foreach suff, $(INSTALLATION_OUT_SUFFIXES), $(INSTALLATION_OUT_FILES$(suff)))
-	-$(INSTALL) -d $(INSTALLATION_OUT_DIR)
-	$(foreach i, $(INSTALLATION_OUT_FILES), \
-		$(INSTALL) -m 644 $(i) $(INSTALLATION_OUT_DIR)/ && ) true
-	$(foreach suff, $(INSTALLATION_OUT_SUFFIXES),  \
-		($(INSTALL) -d $(INSTALLATION_OUT_DIR$(suff))/ || true) && \
-		$(foreach i, $(INSTALLATION_OUT_FILES$(suff)), \
-			$(INSTALL) -m 644 $(i) $(INSTALLATION_OUT_DIR$(suff))/ && ) true && ) true
-
-
-local-uninstall: local-uninstall-outfiles local-uninstall-files 
-
-local-uninstall-files:
-
-local-uninstall-outfiles:
-	rm -f $(foreach  i, $(notdir $(INSTALLATION_OUT_FILES)), \
-		$(INSTALLATION_OUT_DIR)/$(i))
-	rm -f $(foreach suff, $(INSTALLATION_OUT_SUFFIXES),  \
-		$(foreach i, $(INSTALLATION_OUT_FILES$(suff)), \
-			$(INSTALLATION_OUT_DIR$(suff))/$(i)))
-	-rmdir $(INSTALLATION_OUT_DIR) $(foreach suff, $(INSTALLATION_OUT_SUFFIXES), $(INSTALLATION_OUT_DIR$(suff)))
diff --git a/stepmake/stepmake/install-out-vars.make b/stepmake/stepmake/install-out-vars.make
deleted file mode 100644
index 1bb8bf6d7f..0000000000
--- a/stepmake/stepmake/install-out-vars.make
+++ /dev/null
@@ -1 +0,0 @@
-# empty
diff --git a/stepmake/stepmake/install-out.sub.make b/stepmake/stepmake/install-out.sub.make
deleted file mode 100644
index 43253fbf02..0000000000
--- a/stepmake/stepmake/install-out.sub.make
+++ /dev/null
@@ -1,4 +0,0 @@
-
-include $(depth)/make/stepmake.make
-include $(stepdir)/install-out-targets.make
-
diff --git a/stepmake/stepmake/install-rules.make b/stepmake/stepmake/install-rules.make
deleted file mode 100644
index 1bb8bf6d7f..0000000000
--- a/stepmake/stepmake/install-rules.make
+++ /dev/null
@@ -1 +0,0 @@
-# empty
diff --git a/stepmake/stepmake/install-targets.make b/stepmake/stepmake/install-targets.make
deleted file mode 100644
index 0eaa54f4a0..0000000000
--- a/stepmake/stepmake/install-targets.make
+++ /dev/null
@@ -1,28 +0,0 @@
-
-local-install: local-install-files local-install-outfiles
-
-local-install-outfiles:
-
-# urg, parameterise
-local-install-files: $(INSTALLATION_FILES)
-	$(PRE_INSTALL)
-	-$(INSTALL) -d $(INSTALLATION_DIR)
-	$(foreach i,  $(INSTALLATION_FILES),\
-		$(INSTALL) -m 644 $(i) $(INSTALLATION_DIR)/ &&)true
-	$(foreach suff, $(INSTALLATION_SUFFIXES),  \
-		($(INSTALL) -d $(INSTALLATION_DIR$(suff)) || true) && \
-		$(foreach i, $(INSTALLATION_FILES$(suff)), \
-			$(INSTALL) -m 644 $(i) $(INSTALLATION_DIR$(suff))/  && )  && ) true
-	$(POST_INSTALL)
-
-local-uninstall: local-uninstall-outfiles local-uninstall-files 
-
-local-uninstall-outfiles:
-
-local-uninstall-files:
-	rm -f $(foreach i,  $(INSTALLATION_FILES), $(INSTALLATION_DIR)/$(i))
-	rm -f $(foreach suff, $(INSTALLATION_SUFFIXES),  \
-		$(foreach i, $(INSTALLATION_FILES$(suff)),\
-			$(INSTALLATION_DIR$(suff)/$(i))))
-	-rmdir $(INSTALLATION_DIR) $(foreach suff, $(INSTALLATION_SUFFIXES), $(INSTALLATION_DIR$(suff))/)
-
diff --git a/stepmake/stepmake/install-vars.make b/stepmake/stepmake/install-vars.make
deleted file mode 100644
index 1bb8bf6d7f..0000000000
--- a/stepmake/stepmake/install-vars.make
+++ /dev/null
@@ -1 +0,0 @@
-# empty
diff --git a/stepmake/stepmake/install.sub.make b/stepmake/stepmake/install.sub.make
deleted file mode 100644
index d986fe1970..0000000000
--- a/stepmake/stepmake/install.sub.make
+++ /dev/null
@@ -1,4 +0,0 @@
-
-include $(depth)/make/stepmake.make
-include $(stepdir)/install-targets.make
-
diff --git a/stepmake/stepmake/intlrules.make b/stepmake/stepmake/intlrules.make
deleted file mode 100644
index 8a44f880b3..0000000000
--- a/stepmake/stepmake/intlrules.make
+++ /dev/null
@@ -1,7 +0,0 @@
-
-LIBINTL=$(outdir)/libintl.a
-check-lib-intl:
-	$(MAKE) -C $(depth)/intl lib
-
-include $(stepdir)/c.make
-
diff --git a/stepmake/stepmake/library-rules.make b/stepmake/stepmake/library-rules.make
deleted file mode 100644
index 64d49bc098..0000000000
--- a/stepmake/stepmake/library-rules.make
+++ /dev/null
@@ -1,8 +0,0 @@
-
-$(LIBRARY): $(outdir)/config.h $(O_FILES)
-	$(AR) $(ARFLAGS) $@ $(O_FILES)
-	# thanks to Nelson Beebe for this trick.
-	$(RANLIB) $@ || $(AR) ts $@ || true
-
-
-
diff --git a/stepmake/stepmake/library-targets.make b/stepmake/stepmake/library-targets.make
deleted file mode 100644
index 61bd8f28c0..0000000000
--- a/stepmake/stepmake/library-targets.make
+++ /dev/null
@@ -1,3 +0,0 @@
-default: $(LIBRARY)
-
-lib: $(LIBRARY)
diff --git a/stepmake/stepmake/library-vars.make b/stepmake/stepmake/library-vars.make
deleted file mode 100644
index 7c01002d53..0000000000
--- a/stepmake/stepmake/library-vars.make
+++ /dev/null
@@ -1,8 +0,0 @@
-LIB_PREFIX = lib
-LIB_SUFFIX = .a
-
-AR=ar
-
-# LIBRARY = $(outdir)/$(LIB_PREFIX)$(NAME)$(LIB_SUFFIX)
-LIBRARY = $(outdir)/$(LIB_PREFIX)rary$(LIB_SUFFIX)
-INSTALL_LIBRARY = $(LIB_PREFIX)$(NAME)$(LIB_SUFFIX)
diff --git a/stepmake/stepmake/makedir-rules.make b/stepmake/stepmake/makedir-rules.make
deleted file mode 100644
index 1bb8bf6d7f..0000000000
--- a/stepmake/stepmake/makedir-rules.make
+++ /dev/null
@@ -1 +0,0 @@
-# empty
diff --git a/stepmake/stepmake/makedir-targets.make b/stepmake/stepmake/makedir-targets.make
deleted file mode 100644
index 04cd506bfc..0000000000
--- a/stepmake/stepmake/makedir-targets.make
+++ /dev/null
@@ -1,4 +0,0 @@
-
-spec: $(OUTSPEC_FILES)
-
-$(OUTSPEC_FILES): $(config_make) $(depth)/VERSION
diff --git a/stepmake/stepmake/makedir-vars.make b/stepmake/stepmake/makedir-vars.make
deleted file mode 100644
index 3be7d7f87e..0000000000
--- a/stepmake/stepmake/makedir-vars.make
+++ /dev/null
@@ -1,17 +0,0 @@
-
-MAKE_FILES := $(wildcard *.make)
-LSM_FILES:= $(wildcard *.lsm.in)
-OUTLSM_FILES=$(addprefix $(outdir)/,$(basename $(LSM_FILES)))
-SPEC_FILES:= $(wildcard *.spec.in)
-OUTSPEC_FILES=$(addprefix $(outdir)/,$(basename $(SPEC_FILES)))
-OUT_DIST_FILES= $(strip $(OUTLSM_FILES) $(OUTSPEC_FILES))
-
-EXTRA_DIST_FILES += $(MAKE_FILES)
-
-# these two outdir FILES are distributed, since they make sense to have 
-# without running configure and make.
-
-at-dir = $(doc-dir)/
-at-ext = .in
-
-
diff --git a/stepmake/stepmake/metafont-rules.make b/stepmake/stepmake/metafont-rules.make
deleted file mode 100644
index a5d48d996d..0000000000
--- a/stepmake/stepmake/metafont-rules.make
+++ /dev/null
@@ -1,43 +0,0 @@
-
-# Don't remove $(outdir)/.log's.  Logs are a target!
-
-# we want to see botched results as well.
-$(outdir)/%.dvi: %.mf
-	-$(METAFONT) "\scrollmode; input $<;"
-	gftodvi  $(basename $<)
-	mv $(basename $<).dvi $(outdir)
-	rm $(basename $<).*gf
-
-# This is not metafont, this is feta-specific
-$(outdir)/%.log: %.mf
-	$(METAFONT) $<
-	mv $(@F) $@
-	rm $(basename $(@F)).*gf
-
-$(outdir)/%.tfm $(outdir)%.log: %.mf
-	$(METAFONT) "\mode:=$(MFMODE); nonstopmode; input $<;"
-# Let's keep this log output, it saves another mf run.
-	mv $(basename $(@F)).log $(basename $(@F)).tfm $(outdir)
-	rm $(basename $(@F)).*gf 
-
-$(outdir)/%.$(XPM_RESOLUTION)gf: %.mf
-	$(METAFONT) "\\mode=$(XPM_MODE); \\input $<"
-# Let's keep this log output, it saves another mf run.
-	mv $(@F) $(basename $(@F)).log $(basename $(@F)).tfm $(outdir)
-
-$(outdir)/%.$(XPM_RESOLUTION)pk: $(outdir)/%.$(XPM_RESOLUTION)gf
-	gftopk $< $@
-
-
-$(outdir)/%.pfa: %.mf
-	$(MFTRACE) $(MFTRACE_FLAGS) -I $(outdir)/ --pfa --simplify $(basename $(@F))
-	mv $(basename $(@F)).pfa $(outdir)
-
-$(outdir)/%.pfb: %.mf
-	$(MFTRACE)  $(MFTRACE_FLAGS) -I $(outdir)/ --pfa --pfb --simplify  $(basename $(@F))
-	-mv $(basename $(@F)).pfa $(outdir)
-	mv $(basename $(@F)).pfb $(outdir)
-
-#%.afm:
-#	$(SHELL) $(depth)/buildscripts/tfmtoafm.sh $(shell basename $@ .afm)
-#	mv $@ $@.in
diff --git a/stepmake/stepmake/metafont-targets.make b/stepmake/stepmake/metafont-targets.make
deleted file mode 100644
index 616e5868a7..0000000000
--- a/stepmake/stepmake/metafont-targets.make
+++ /dev/null
@@ -1,12 +0,0 @@
-
-tfm: $(TFM_FILES)
-
-dvi: $(DVI_FILES)
-
-pks: $(addprefix $(outdir)/, $(XPM_FONTS:%=%.$(XPM_RESOLUTION)pk))
-
-xpms: $(addprefix $(outdir)/, $(XPM_FONTS:%=%.afm)) pks
-	$(foreach i, $(XPM_FONTS), $(SHELL) $(depth)/buildscripts/mf-to-xpms.sh $(i) && ) true
-
-pfb: $(PFB_FILES)
-
diff --git a/stepmake/stepmake/metafont-vars.make b/stepmake/stepmake/metafont-vars.make
deleted file mode 100644
index 96af147311..0000000000
--- a/stepmake/stepmake/metafont-vars.make
+++ /dev/null
@@ -1,20 +0,0 @@
-
-MF_FILES := $(wildcard *.mf)
-EXTRA_DIST_FILES += $(MF_FILES)
-MF_TFM_FILES = $(addprefix $(outdir)/, $(FONT_FILES:.mf=.tfm))
-MF_DVI_FILES = $(addprefix $(outdir)/, $(FONT_FILES:.mf=.dvi))
-MF_LOG_FILES = $(addprefix $(outdir)/, $(FONT_FILES:.mf=.log))
-DVI_FILES += $(MF_DVI_FILES)
-TFM_FILES += $(MF_TFM_FILES)
-
-# XPM_MODE=sun
-# XPM_RESOLUTION=85
-
-# XPM_MODE=declarge
-# XPM_RESOLUTION=100
-
-XPM_MODE=ibmvga
-XPM_RESOLUTION=110
-
-
-
diff --git a/stepmake/stepmake/metapost-rules.make b/stepmake/stepmake/metapost-rules.make
deleted file mode 100644
index 38a9322a04..0000000000
--- a/stepmake/stepmake/metapost-rules.make
+++ /dev/null
@@ -1,14 +0,0 @@
-# Don't remove $(outdir)/.log's.  Logs are a target!
-
-$(outdir)/%.0: %.mf $(outdir)/mfplain.mem  
-	-$(METAPOST) "&$(outdir)/mfplain \mode=lowres; \mag=1.0; nonstopmode; input $<"
-
-$(outdir)/mfplain.mem: $(MFPLAIN_MP)
-	$(INIMETAPOST)  $(INIMETAPOST_FLAGS) $(MFPLAIN_MP) dump
-	mv mfplain.* $(outdir)
-
-$(outdir)/%.pfa: $(outdir)/%.0
-	$(PYTHON) $(depth)/buildscripts/ps-to-pfa.py --output $(basename $<).pfa $<
-	rm -f $(basename $(@F)).[0-9]*
-	rm -f $(basename $(@F)).tfm $(basename $(@F)).log
-
diff --git a/stepmake/stepmake/metapost-targets.make b/stepmake/stepmake/metapost-targets.make
deleted file mode 100644
index 66d57a847d..0000000000
--- a/stepmake/stepmake/metapost-targets.make
+++ /dev/null
@@ -1,2 +0,0 @@
-
-pfa: $(PFA_FILES) 
diff --git a/stepmake/stepmake/metapost-vars.make b/stepmake/stepmake/metapost-vars.make
deleted file mode 100644
index c8c73d2168..0000000000
--- a/stepmake/stepmake/metapost-vars.make
+++ /dev/null
@@ -1,7 +0,0 @@
-
-# MF_FILES := $(wildcard *.mf)
-# FONT_FILES = $(wildcard *[0-9].mf)
-# EXTRA_DIST_FILES += $(MF_FILES)
-MP_PFA_FILES = $(addprefix $(outdir)/, $(FONT_FILES:.mf=.pfa))
-PFA_FILES += $(MP_PFA_FILES)
-
diff --git a/stepmake/stepmake/no-builtin-rules.make b/stepmake/stepmake/no-builtin-rules.make
deleted file mode 100644
index e8e2718eb5..0000000000
--- a/stepmake/stepmake/no-builtin-rules.make
+++ /dev/null
@@ -1,242 +0,0 @@
-# UGH.  GNU make comes with implicit rules.
-# We don't want any of them, and can't force users to run
-# --no-builtin-rules
-
-.SUFFIXES:
-
-#Compiling C programs
-#    `N.o' is made automatically from `N.c' with a command of the form
-#     `$(CC) -c $(CPPFLAGS) $(CFLAGS)'.
-
-%.o: %.c
-
-# Compiling C++ programs
-#      `N.o' is made automatically from `N.cc' or `N.C' with a command of
-#      the form `$(CXX) -c $(CPPFLAGS) $(CXXFLAGS)'.  We encourage you to
-#      use the suffix `.cc' for C++ source files instead of `.C'.
-
-%.o: %.cc
-
-# Compiling Pascal programs
-#      `N.o' is made automatically from `N.p' with the command `$(PC) -c
-#      $(PFLAGS)'.
-
-%.o: %.p
-
-# Compiling Fortran and Ratfor programs
-#      `N.o' is made automatically from `N.r', `N.F' or `N.f' by running
-#      the Fortran compiler.  The precise command used is as follows:
-
-#     `.f'
-#           `$(FC) -c $(FFLAGS)'.
-
-%.o: %.f
-
-#     `.F'
-#           `$(FC) -c $(FFLAGS) $(CPPFLAGS)'.
-
-%.o: %.F
-
-#     `.r'
-#           `$(FC) -c $(FFLAGS) $(RFLAGS)'.
-
-%.o: %.r
-
-# Preprocessing Fortran and Ratfor programs
-#      `N.f' is made automatically from `N.r' or `N.F'.  This rule runs
-#      just the preprocessor to convert a Ratfor or preprocessable
-#      Fortran program into a strict Fortran program.  The precise
-#      command used is as follows:
-
-#     `.F'
-#           `$(FC) -F $(CPPFLAGS) $(FFLAGS)'.
-
-%.f: %.F
-
-#     `.r'
-#           `$(FC) -F $(FFLAGS) $(RFLAGS)'.
-
-%.f: %.r
-
-# Compiling Modula-2 programs
-#      `N.sym' is made from `N.def' with a command of the form `$(M2C)
-#      $(M2FLAGS) $(DEFFLAGS)'.  `N.o' is made from `N.mod'; the form is:
-#      `$(M2C) $(M2FLAGS) $(MODFLAGS)'.
-
-%.sym: %.def
-%.o: %.mod
-
-# Assembling and preprocessing assembler programs
-#      `N.o' is made automatically from `N.s' by running the assembler,
-#      `as'.  The precise command is `$(AS) $(ASFLAGS)'.
-
-%.o: %.s
-
-#      `N.s' is made automatically from `N.S' by running the C
-#      preprocessor, `cpp'.  The precise command is `$(CPP) $(CPPFLAGS)'.
-
-%.s: %.S
-
-# Linking a single object file
-#      `N' is made automatically from `N.o' by running the linker
-#      (usually called `ld') via the C compiler.  The precise command
-#      used is `$(CC) $(LDFLAGS) N.o $(LOADLIBES) $(LDLIBS)'.
-
-%: %.o
-
-#      This rule does the right thing for a simple program with only one
-#      source file.  It will also do the right thing if there are multiple
-#      object files (presumably coming from various other source files),
-#      one of which has a name matching that of the executable file.
-#      Thus,
-
-#           x: y.o z.o
-
-#      when `x.c', `y.c' and `z.c' all exist will execute:
-
-#           cc -c x.c -o x.o
-#           cc -c y.c -o y.o
-#           cc -c z.c -o z.o
-#           cc x.o y.o z.o -o x
-#           rm -f x.o
-#           rm -f y.o
-#           rm -f z.o
-
-#      In more complicated cases, such as when there is no object file
-#      whose name derives from the executable file name, you must write
-#      an explicit command for linking.
-
-#      Each kind of file automatically made into `.o' object files will
-#      be automatically linked by using the compiler (`$(CC)', `$(FC)' or
-#      `$(PC)'; the C compiler `$(CC)' is used to assemble `.s' files)
-#      without the `-c' option.  This could be done by using the `.o'
-#      object files as intermediates, but it is faster to do the
-#      compiling and linking in one step, so that's how it's done.
-
-# Yacc for C programs
-#      `N.c' is made automatically from `N.y' by running Yacc with the
-#      command `$(YACC) $(YFLAGS)'.
-
-%.c: %.y
-
-# Lex for C programs
-#      `N.c' is made automatically from `N.l' by by running Lex.  The
-#      actual command is `$(LEX) $(LFLAGS)'.
-
-%.c: %.l
-
-# Lex for Ratfor programs
-#      `N.r' is made automatically from `N.l' by by running Lex.  The
-#      actual command is `$(LEX) $(LFLAGS)'.
-
-%.r: %.l
-
-#      The convention of using the same suffix `.l' for all Lex files
-#      regardless of whether they produce C code or Ratfor code makes it
-#      impossible for `make' to determine automatically which of the two
-#      languages you are using in any particular case.  If `make' is
-#      called upon to remake an object file from a `.l' file, it must
-#      guess which compiler to use.  It will guess the C compiler, because
-#      that is more common.  If you are using Ratfor, make sure `make'
-#      knows this by mentioning `N.r' in the makefile.  Or, if you are
-#      using Ratfor exclusively, with no C files, remove `.c' from the
-#      list of implicit rule suffixes with:
-
-#           .SUFFIXES:
-#           .SUFFIXES: .o .r .f .l ...
-
-# Making Lint Libraries from C, Yacc, or Lex programs
-#      `N.ln' is made from `N.c' by running `lint'.  The precise command
-#      is `$(LINT) $(LINTFLAGS) $(CPPFLAGS) -i'.  The same command is
-#      used on the C code produced from `N.y' or `N.l'.
-
-%.ln: %.c
-
-# TeX and Web
-#      `N.dvi' is made from `N.tex' with the command `$(TEX)'.  `N.tex'
-#      is made from `N.web' with `$(WEAVE)', or from `N.w' (and from
-#      `N.ch' if it exists or can be made) with `$(CWEAVE)'.  `N.p' is
-#      made from `N.web' with `$(TANGLE)' and `N.c' is made from `N.w'
-#      (and from `N.ch' if it exists or can be made) with `$(CTANGLE)'.
-
-%.dvi: %.tex
-%.tex: %.web
-%.tex: %.w
-%.tex: %.ch
-%.p: %.web
-%.c: %.w
-%.w: %.ch
-
-# Texinfo and Info
-#      `N.dvi' is made from `N.texinfo', `N.texi', or `N.txinfo', with
-#      the command `$(TEXI2DVI) $(TEXI2DVI_FLAGS)'.  `N.info' is made from
-#      `N.texinfo', `N.texi', or `N.txinfo', with the command
-#      `$(MAKEINFO) $(MAKEINFO_FLAGS)'.
-
-%.dvi: %.texinfo
-%.dvi: %.texi
-%.dvi: %.txinfo
-
-%.info: %.texinfo
-%.info: %.texi
-%.info: %.txinfo
-
-# RCS
-#      Any file `N' is extracted if necessary from an RCS file named
-#      either `N,v' or `RCS/N,v'.  The precise command used is
-#      `$(CO) $(COFLAGS)'.  `N' will not be extracted from RCS if it
-#      already exists, even if the RCS file is newer.  The rules for RCS
-#      are terminal (*note Match-Anything Pattern Rules: Match-Anything
-#      Rules.), so RCS files cannot be generated from another source;
-#      they must actually exist.
-
-%: %,v
-%: RCS/%,v
-
-# SCCS
-#      Any file `N' is extracted if necessary from an SCCS file named
-#      either `s.N' or `SCCS/s.N'.  The precise command used is
-#      `$(GET) $(GFLAGS)'.  The rules for SCCS are terminal (*note
-#      Match-Anything Pattern Rules: Match-Anything Rules.), so SCCS
-#      files cannot be generated from another source; they must actually
-#      exist.
-
-%: s.%
-%: SCCS/s.%
-
-#      For the benefit of SCCS, a file `N' is copied from `N.sh' and made
-#      executable (by everyone).  This is for shell scripts that are
-#      checked into SCCS.  Since RCS preserves the execution permission
-#      of a file, you do not need to use this feature with RCS.
-
-%: %.sh
-
-#      We recommend that you avoid using of SCCS.  RCS is widely held to
-#      be superior, and is also free.  By choosing free software in place
-#      of comparable (or inferior) proprietary software, you support the
-#      free software movement.
-
-#    Usually, you want to change only the variables listed in the table
-# above, which are documented in the following section.
-
-#    However, the commands in built-in implicit rules actually use
-# variables such as `COMPILE.c', `LINK.p', and `PREPROCESS.S', whose
-# values contain the commands listed above.
-
-#    `make' follows the convention that the rule to compile a `.X' source
-# file uses the variable `COMPILE.X'.  Similarly, the rule to produce an
-# executable from a `.X' file uses `LINK.X'; and the rule to preprocess a
-# `.X' file uses `PREPROCESS.X'.
-
-#    Every rule that produces an object file uses the variable
-# `OUTPUT_OPTION'.  `make' defines this variable either to contain `-o
-# $@', or to be empty, depending on a compile-time option.  You need the
-# `-o' option to ensure that the output goes into the right file when the
-# source file is in a different directory, as when using `VPATH' (*note
-# Directory Search::).  However, compilers on some systems do not accept
-# a `-o' switch for object files.  If you use such a system, and use
-# `VPATH', some compilations will put their output in the wrong place.  A
-# possible workaround for this problem is to give `OUTPUT_OPTION' the
-# value `; mv $*.o $@'.
-
-
diff --git a/stepmake/stepmake/omf-rules.make b/stepmake/stepmake/omf-rules.make
deleted file mode 100644
index 29033347d6..0000000000
--- a/stepmake/stepmake/omf-rules.make
+++ /dev/null
@@ -1,2 +0,0 @@
-
-# empty
diff --git a/stepmake/stepmake/omf-targets.make b/stepmake/stepmake/omf-targets.make
deleted file mode 100644
index d35dea43e7..0000000000
--- a/stepmake/stepmake/omf-targets.make
+++ /dev/null
@@ -1,16 +0,0 @@
-
-omf: $(OMF_FILES)
-
-local-install: omf-local-install
-
-omf-local-install: $(OMF_FILES)
-	-$(INSTALL) -d $(local_package_omfdir)
-	$(foreach a, $(OMF_FILES), $(INSTALL) -m 644 $(a) $(local_package_omfdir)/$(notdir $(a)) && ) true
-	@echo "Run scrollkeeper-update to register newly installed OMF files."
-
-local-uninstall: omf-local-uninstall
-
-omf-local-uninstall:
-	rm -f $(foreach i,  $(OMF_FILES), $(local_package_omfdir)/$(i))
-	-rmdir $(local_package_omfdir)
-
diff --git a/stepmake/stepmake/omf-vars.make b/stepmake/stepmake/omf-vars.make
deleted file mode 100644
index cc305e0087..0000000000
--- a/stepmake/stepmake/omf-vars.make
+++ /dev/null
@@ -1,5 +0,0 @@
-
-#empty
-#
-
-OMF_FILES += 
diff --git a/stepmake/stepmake/po-rules.make b/stepmake/stepmake/po-rules.make
deleted file mode 100644
index 1bb8bf6d7f..0000000000
--- a/stepmake/stepmake/po-rules.make
+++ /dev/null
@@ -1 +0,0 @@
-# empty
diff --git a/stepmake/stepmake/po-targets.make b/stepmake/stepmake/po-targets.make
deleted file mode 100644
index 8e1d565829..0000000000
--- a/stepmake/stepmake/po-targets.make
+++ /dev/null
@@ -1,38 +0,0 @@
-
-
-
-####
-#### UGH!
-new-po:
-	if test -r $(po-dir); then \
-	  rm -f $(po-dir)/$(outdir)/$(package).po; \
-	  touch $(po-dir)/$(outdir)/$(package).po; \
-	fi
-
-ifeq ($(strip $(depth)),.)
-po: new-po
-	$(LOOP)
-localpo:
-	@true
-else
-po: localpo
-	$(LOOP)
-ALL_PO_SOURCES = $(ALL_C_SOURCES) $(ALL_CC_SOURCES) $(PYTHON_SCRIPTS_IN) $(PY_MODULES_IN) $(wildcard $(outdir)/*.hh) $(wildcard $(outdir)/*.cc)
-localpo:
-ifneq ($(strip $(ALL_PO_SOURCES)),)
-	@echo $(ALL_PO_SOURCES)
-	xgettext --default-domain=$(package) --join \
-	 --output-dir=$(po-dir)/$(outdir) --add-comments \
-	 --keyword=_ --keyword=_f --keyword=_i $(ALL_PO_SOURCES)
-endif
-endif
-
-
-po-update: po
-	$(MAKE) -C $(po-dir) po-update
-
-po-changes:
-	$(MAKE) -C $(po-dir) po-changes
-
-po-replace: po
-	$(MAKE) -C $(po-dir) po-replace
diff --git a/stepmake/stepmake/po-vars.make b/stepmake/stepmake/po-vars.make
deleted file mode 100644
index 1bb8bf6d7f..0000000000
--- a/stepmake/stepmake/po-vars.make
+++ /dev/null
@@ -1 +0,0 @@
-# empty
diff --git a/stepmake/stepmake/pod-rules.make b/stepmake/stepmake/pod-rules.make
deleted file mode 100644
index d0b4628b4c..0000000000
--- a/stepmake/stepmake/pod-rules.make
+++ /dev/null
@@ -1,30 +0,0 @@
-
-.SUFFIXES: .1 .5 .html .pod .txt
-
-pod2html=pod2html
-pod2groff=pod2man --center="$(PACKAGE_NAME) documentation" --section="0"\
-	--release="$(PACKAGE_NAME) $(VERSION)" $< > $@
-
-
-# perl 5.003/4
-POD2HTML_5003=$(POD2HTML) $< ; mv $(notdir $@) $(outdir)/ || true
-# urg, broken.  if you must have perl 5004, better install pod2html from 5003
-POD2HTML_5004=$(POD2HTML) --noindex --infile $< --outfile=$@;  sh $(depth)/bin/add-URLs.sh $@
-
-do_pod2html=$($(POD2HTML_VERSION))
-
-$(outdir)/%.html: $(outdir)/%.pod 
-	$(do_pod2html) 
-
-$(outdir)/%.pod: %.pod
-	cp $< $@
-
-$(outdir)/%.5: %.pod
-	$(pod2groff)
-
-$(outdir)/%.1: %.pod
-	$(pod2groff)
-
-$(outdir)/%.1: $(outdir)/%.pod
-	-$(pod2groff)
-
diff --git a/stepmake/stepmake/pod-vars.make b/stepmake/stepmake/pod-vars.make
deleted file mode 100644
index 541da42c94..0000000000
--- a/stepmake/stepmake/pod-vars.make
+++ /dev/null
@@ -1,3 +0,0 @@
-
-POD_FILES := $(wildcard *.pod)
-OUTPOD_FILES = $(addprefix $(outdir)/,$(POD_FILES))
diff --git a/stepmake/stepmake/podir-rules.make b/stepmake/stepmake/podir-rules.make
deleted file mode 100644
index 1bb8bf6d7f..0000000000
--- a/stepmake/stepmake/podir-rules.make
+++ /dev/null
@@ -1 +0,0 @@
-# empty
diff --git a/stepmake/stepmake/podir-targets.make b/stepmake/stepmake/podir-targets.make
deleted file mode 100644
index 0b831c5c79..0000000000
--- a/stepmake/stepmake/podir-targets.make
+++ /dev/null
@@ -1,32 +0,0 @@
-
-.SUFFIXES: .po .pot .mo
-
-$(outdir)/%.mo: %.po
-	$(MSGFMT) -o $@ $<
-
-# sed-pofile = sed 's/^. \#: .*//'
-sed-pofile = -e 's/^\#: .*//'
-sed-makestuff = -e 's/[a-zA-Z_/]*make\[[0-9]*\].*//'
-sed-edstuff = -e 's/[ \.,adic0-9]*//' -e 's/---//' | sort -u
-
-
-po-update:
-	$(foreach i,$(CATALOGS), \
-	  rm -f $(po-dir)/$(outdir)/$(i).po; \
-	  msgmerge $(po-dir)/$(i).po $(po-dir)/$(outdir)/$(package).po \
-	    -o $(po-dir)/$(outdir)/$(i).po && ) true
-	@$(foreach i,$(CATALOGS), \
-	  changes=`$(MAKE) --silent -C $(po-dir) LANGUAGE=$i po-changes $(ERROR_LOG) | sed $(sed-makestuff)`; \
-	  if test "$$changes" != "" ; then \
-	    echo "*** Changes for language $i; check po/$(outdir)/$i.po ***"; \
-	    echo -e "changes: \`$$changes'";\
-	  fi && ) true
-
-
-po-changes:
-	diff -e $(po-dir)/$(outdir)/$(LANGUAGE).po $(po-dir)/$(LANGUAGE).po \
-	  | sed $(sed-pofile) $(sed-edstuff)
-
-po-replace: po-update
-	mv $(outdir)/$(package).po $(package).pot
-	mv $(outdir)/*.po .
diff --git a/stepmake/stepmake/podir-vars.make b/stepmake/stepmake/podir-vars.make
deleted file mode 100644
index 1bb8bf6d7f..0000000000
--- a/stepmake/stepmake/podir-vars.make
+++ /dev/null
@@ -1 +0,0 @@
-# empty
diff --git a/stepmake/stepmake/python-module-rules.make b/stepmake/stepmake/python-module-rules.make
deleted file mode 100644
index 8f37c41530..0000000000
--- a/stepmake/stepmake/python-module-rules.make
+++ /dev/null
@@ -1,10 +0,0 @@
-
-$(outdir)/%$(SHARED_MODULE_SUFFIX): $(outdir)/%.lo
-	$(LD) $(SHARED_FLAGS) -o $@ $< $(ALL_LDFLAGS)
-
-$(outdir)/%.pyc: $(outdir)/%.py
-	$(PYTHON) -c 'import py_compile; py_compile.compile ("$<")'
-
-$(outdir)/%.py: %.py $(config_make)
-	cat $< | sed $(sed-atvariables) > $@
-	chmod 755 $@
diff --git a/stepmake/stepmake/python-module-targets.make b/stepmake/stepmake/python-module-targets.make
deleted file mode 100644
index 44bde97e2f..0000000000
--- a/stepmake/stepmake/python-module-targets.make
+++ /dev/null
@@ -1 +0,0 @@
-default: $(OUT_PY_MODULES) $(OUT_PYC_MODULES) $(OUT_SO_MODULES)
diff --git a/stepmake/stepmake/python-module-vars.make b/stepmake/stepmake/python-module-vars.make
deleted file mode 100644
index be7985f27b..0000000000
--- a/stepmake/stepmake/python-module-vars.make
+++ /dev/null
@@ -1,11 +0,0 @@
-PY_MODULES_IN = $(wildcard *.py)
-OUT_PY_MODULES = $(PY_MODULES_IN:%=$(outdir)/%)
-OUT_PYC_MODULES = $(OUT_PY_MODULES:%.py=%.pyc)
-ifneq ($(CYGWIN_BUILD),)
-SHARED_MODULE_SUFFIX = .dll
-else
-SHARED_MODULE_SUFFIX = .so
-endif
-OUT_SO_MODULES = $(addprefix $(outdir)/, $(C_FILES:.c=$(SHARED_MODULE_SUFFIX)))
-EXTRA_DIST_FILES += $(PY_MODULES_IN)
-
diff --git a/stepmake/stepmake/scm-rules.make b/stepmake/stepmake/scm-rules.make
deleted file mode 100644
index 1bb8bf6d7f..0000000000
--- a/stepmake/stepmake/scm-rules.make
+++ /dev/null
@@ -1 +0,0 @@
-# empty
diff --git a/stepmake/stepmake/scm-targets.make b/stepmake/stepmake/scm-targets.make
deleted file mode 100644
index 1bb8bf6d7f..0000000000
--- a/stepmake/stepmake/scm-targets.make
+++ /dev/null
@@ -1 +0,0 @@
-# empty
diff --git a/stepmake/stepmake/scm-vars.make b/stepmake/stepmake/scm-vars.make
deleted file mode 100644
index 115a05fb18..0000000000
--- a/stepmake/stepmake/scm-vars.make
+++ /dev/null
@@ -1,7 +0,0 @@
-
-SCM_FILES := $(wildcard *.scm)
-
-SOURCE_FILES += $(SCM_FILES)
-
-TAGS_FILES += $(SCM_FILES)
-
diff --git a/stepmake/stepmake/script-rules.make b/stepmake/stepmake/script-rules.make
deleted file mode 100644
index 02e99909ac..0000000000
--- a/stepmake/stepmake/script-rules.make
+++ /dev/null
@@ -1,25 +0,0 @@
-
-$(outdir)/%: %.pl $(config_make)  $(depth)/VERSION
-	cat $< | sed $(sed-atvariables) > $@
-	chmod 755 $@
-
-$(outdir)/%: %.bash $(config_make) $(depth)/VERSION
-	cat $< | sed $(sed-atvariables) > $@
-	chmod 755 $@
-
-$(outdir)/%: %.scm $(config_make) $(depth)/VERSION
-	cat $< | sed $(sed-atvariables) > $@
-	chmod 755 $@
-
-$(outdir)/%: %.expect $(config_make) $(depth)/VERSION
-	cat $< | sed $(sed-atvariables) > $@
-	chmod 755 $@
-
-$(outdir)/%: %.sh $(config_make) $(depth)/VERSION
-	cat $< | sed $(sed-atvariables) > $@
-	chmod 755 $@
-
-$(outdir)/%: %.py $(config_make) $(depth)/VERSION
-	cat $< | sed $(sed-atvariables) > $@
-	chmod 755 $@
-
diff --git a/stepmake/stepmake/script-targets.make b/stepmake/stepmake/script-targets.make
deleted file mode 100644
index 0159636812..0000000000
--- a/stepmake/stepmake/script-targets.make
+++ /dev/null
@@ -1,2 +0,0 @@
-
-all: $(BASH_SCRIPTS) $(EXPECT_SCRIPTS) $(PERL_SCRIPTS) $(PYTHON_SCRIPTS) $(SCM_SCRIPTS) $(SH_SCRIPTS)
diff --git a/stepmake/stepmake/script-vars.make b/stepmake/stepmake/script-vars.make
deleted file mode 100644
index e325882478..0000000000
--- a/stepmake/stepmake/script-vars.make
+++ /dev/null
@@ -1,15 +0,0 @@
-
-PERL_SCRIPTS_IN := $(wildcard *.pl)
-PERL_SCRIPTS = $(addprefix $(outdir)/, $(PERL_SCRIPTS_IN:.pl=))
-BASH_SCRIPTS_IN := $(wildcard *.bash)
-BASH_SCRIPTS = $(addprefix $(outdir)/, $(BASH_SCRIPTS_IN:.bash=))
-EXPECT_SCRIPTS_IN := $(wildcard *.expect)
-EXPECT_SCRIPTS = $(addprefix $(outdir)/, $(EXPECT_SCRIPTS_IN:.expect=))
-SCM_SCRIPTS_IN := $(wildcard *.scm)
-SCM_SCRIPTS = $(addprefix $(outdir)/, $(SCM_SCRIPTS_IN:.scm=))
-SH_SCRIPTS_IN := $(wildcard *.sh)
-SH_SCRIPTS = $(addprefix $(outdir)/, $(SH_SCRIPTS_IN:.sh=))
-PYTHON_SCRIPTS_IN := $(wildcard *.py)
-PYTHON_SCRIPTS = $(addprefix $(outdir)/, $(PYTHON_SCRIPTS_IN:.py=))
-ALL_SCRIPTS_IN = $(BASH_SCRIPTS_IN) $(EXPECT_SCRIPTS_IN) $(PERL_SCRIPTS_IN) $(PYTHON_SCRIPTS_IN) $(SCM_SCRIPTS_IN) $(SH_SCRIPTS_IN)
-EXTRA_DIST_FILES += $(ALL_SCRIPTS_IN)
diff --git a/stepmake/stepmake/shared-library-rules.make b/stepmake/stepmake/shared-library-rules.make
deleted file mode 100644
index 7a1a3e5c49..0000000000
--- a/stepmake/stepmake/shared-library-rules.make
+++ /dev/null
@@ -1,4 +0,0 @@
-
-
-$(SHARED_LIBRARY): $(outdir)/config.h $(LO_FILES)
-	$(LD) $(SHARED_FLAGS) -o $@ $(LO_FILES) $(ALL_LDFLAGS)
diff --git a/stepmake/stepmake/shared-library-targets.make b/stepmake/stepmake/shared-library-targets.make
deleted file mode 100644
index 4f8dbe8d2b..0000000000
--- a/stepmake/stepmake/shared-library-targets.make
+++ /dev/null
@@ -1,4 +0,0 @@
-
-default: $(SHARED_LIBRARY)
-
-$(SHARED_LIB_PREFIX)$(NAME): default
\ No newline at end of file
diff --git a/stepmake/stepmake/shared-library-vars.make b/stepmake/stepmake/shared-library-vars.make
deleted file mode 100644
index a8ea9a9935..0000000000
--- a/stepmake/stepmake/shared-library-vars.make
+++ /dev/null
@@ -1,23 +0,0 @@
-
-ifneq ($(CYGWIN_BUILD),)
-  SHARED_LIB_PREFIX = cyg
-  SHARED_LIB_SUFFIX = 
-  SHARED_LIB_VERSION = $(subst .,-,$(VERSION))
-  SHARED_LIB_VERSION_SUFFIX = .dll
-  ALL_LDFLAGS += -Wl,--image-base=0x10000000 -Wl,--out-implib,lib$(NAME).a
-else
-  SHARED_LIB_PREFIX = lib
-  SHARED_LIB_SUFFIX = .so
-  SHARED_LIB_VERSION = $(VERSION)
-  SHARED_LIB_VERSION_SUFFIX =
-endif
-
-INSTALL_SHARED_LIBRARY = $(SHARED_LIB_PREFIX)$(NAME)$(SHARED_LIB_SUFFIX)$(SHARED_LIB_VERSION)$(SHARED_LIB_VERSION_SUFFIX)
-SHARED_LIBRARY = $(outdir)/$(INSTALL_SHARED_LIBRARY)
-
-
-lo-dep-out = $(outdir)/$(subst .lo,.dep,$(notdir $@))#
-DO_LO_DEP = rm -f $(lo-dep-out); DEPENDENCIES_OUTPUT="$(lo-dep-out) $(outdir)/$(notdir $@)"
-
-LO_FILES += $(addprefix $(outdir)/, $(Y_FILES:.y=.lo) $(C_FILES:.c=.lo) $(L_FILES:.l=.lo))
-
diff --git a/stepmake/stepmake/substitute-rules.make b/stepmake/stepmake/substitute-rules.make
deleted file mode 100644
index ad63c0f7e6..0000000000
--- a/stepmake/stepmake/substitute-rules.make
+++ /dev/null
@@ -1,7 +0,0 @@
-
-# config_make dep isn't working. Why?  
-$(outdir)/%: %.in $(config_make) $(depth)/VERSION
-	rm -f $@
-	cat $< | sed $(sed-atfiles) $(sed-atvariables) > $@
-
-
diff --git a/stepmake/stepmake/substitute-vars.make b/stepmake/stepmake/substitute-vars.make
deleted file mode 100644
index eb45a465fc..0000000000
--- a/stepmake/stepmake/substitute-vars.make
+++ /dev/null
@@ -1,18 +0,0 @@
-
-sed-endline = sed 's!$$!\\!'
-sed-newline = sed 's!$$!\n!'
-sed-quotes = sed "s!\'!\\\&!g"
-sed-quote-line = sed 's!.*$$!\"&\"!'
-
-date := $(shell date '+%d%b%y'|tr '[a-z]' '[A-Z]' )
-DATE = $(date)
-
-# for all FILE in AT_FILES:
-# substitute occurrences of @FILE@ with contents $(at-dir)BLA$(at-ext)
-sed-atfiles = -e '\#' $(foreach i, $(AT_FILES), \
-  -e '/@$i@/r $(at-dir)$i$(at-ext)' -e 's%@$i@%%g')
-
-# for all VAR in ATVARIABLES
-# substitute occurrences of @VAR@ with $(VAR)
-sed-atvariables = -e '\#' $(foreach i, $(ATVARIABLES), -e 's!@$i@!$($i)!g')
-
diff --git a/stepmake/stepmake/tex-rules.make b/stepmake/stepmake/tex-rules.make
deleted file mode 100644
index 482957c558..0000000000
--- a/stepmake/stepmake/tex-rules.make
+++ /dev/null
@@ -1,22 +0,0 @@
-
-$(outdir)/%.tex: %.tex
-	cp $< $@
-
-$(outdir)/%.dvi: $(outdir)/%.tex
-	(cd $(outdir); tex \\nonstopmode \\input $(<F))
-
-$(outdir)/%.dvi: $(outdir)/%.latex
-	(cd $(outdir)&& \
-	  latex \\nonstopmode \\input $(<F)&&\
-	  (bibtex $(basename $(<F)) || true) && \
-	  latex \\nonstopmode \\input $(<F)&&\
-	  (makeindex $(basename $(<F)) || true) && \
-	  latex \\nonstopmode \\input $(<F) )
-
-
-$(outdir)/%.ps: $(outdir)/%.dvi
-	cd $(outdir) && dvips -t $(DVIPS_PAPERSIZE) -o $(@F) $(<F)
-
-$(outdir)-$(PAPERSIZE)/%.ps: $(outdir)-$(PAPERSIZE)/%.dvi
-	cd $(outdir)-$(PAPERSIZE) && dvips -t$(PAPERSIZE) -o $(@F) $(<F)
-
diff --git a/stepmake/stepmake/tex-targets.make b/stepmake/stepmake/tex-targets.make
deleted file mode 100644
index 1bb8bf6d7f..0000000000
--- a/stepmake/stepmake/tex-targets.make
+++ /dev/null
@@ -1 +0,0 @@
-# empty
diff --git a/stepmake/stepmake/tex-vars.make b/stepmake/stepmake/tex-vars.make
deleted file mode 100644
index c54ae55c8f..0000000000
--- a/stepmake/stepmake/tex-vars.make
+++ /dev/null
@@ -1,4 +0,0 @@
-
-export TEXPICTS:=$(outdir)$(PATHSEP)$(TEXPICTS)
-
-DVIPS_PAPERSIZE=$(PAPERSIZE)
diff --git a/stepmake/stepmake/texinfo-rules.make b/stepmake/stepmake/texinfo-rules.make
deleted file mode 100644
index 2bad713de2..0000000000
--- a/stepmake/stepmake/texinfo-rules.make
+++ /dev/null
@@ -1,36 +0,0 @@
-
-.SUFFIXES: .html .info .texi .texinfo
-
-$(outdir)/%.info: $(outdir)/%.texi
-	$(MAKEINFO) -I $(outdir) --output=$@ $<
-
-$(outdir)/%.html: $(outdir)/%.texi
-	$(MAKEINFO) -I $(outdir) --output=$@ --html --no-split --no-headers $<
-
-$(outdir)/%.html.omf: %.texi
-	$(call GENERATE_OMF,html)
-
-$(outdir)/%.pdf.omf: %.texi
-	$(call GENERATE_OMF,pdf)
-
-$(outdir)/%.ps.gz.omf: %.texi
-	$(call GENERATE_OMF,ps.gz) 
-
-# Generic rule not possible?
-$(outdir)/%/%.html: $(outdir)/%.texi 
-	$(MAKEINFO) --output=$@ --html $<
-
-
-$(outdir)/%.dvi: $(outdir)/%.texi
-	cd $(outdir); texi2dvi --batch $(TEXINFO_PAPERSIZE_OPTION) $(<F)
-
-$(outdir)/%.txt: $(outdir)/%.texi
-	$(MAKEINFO) -I $(pwd) -I $(outdir) --no-split --no-headers --output $@ $<
-
-$(outdir)/%.texi: %.texi
-	rm -f $@
-	cp $< $@
-	chmod -w $@
-
-
-
diff --git a/stepmake/stepmake/texinfo-targets.make b/stepmake/stepmake/texinfo-targets.make
deleted file mode 100644
index ecb816f38e..0000000000
--- a/stepmake/stepmake/texinfo-targets.make
+++ /dev/null
@@ -1,33 +0,0 @@
-
-default: $(INFO_FILES)
-
-local-WWW: $(addprefix $(outdir)/,$(TEXI_FILES:.texi=.html))
-
-local-doc: $(OUTTXT_FILES)
-
-.PHONY : texinfo-all-menus-update
-
-TEXINFO_ALL_MENUS_UPDATE_EL ='\
-  (let ((error nil)\
-        (version-control nil))\
-      (load-library "texinfo")\
-      (texinfo-mode)\
-      (texinfo-all-menus-update)\
-      (if (buffer-modified-p (current-buffer))\
-        (save-buffer))))\
-'
-
-check-info: texinfo-all-menus-update
-
-# buffer-modified-p is ALWAYS true, even if there were no actual
-# changes, so we try setting origal (timestamp) back if there
-# were no changes.
-#
-# ugh: emacs20.7 batch mode is not really batch:
-#
-# answer `echo q' to the question:
-# FILE locked by EMAIL (pid PID): (s, q, p, ?)?
-#
-texinfo-all-menus-update:
-	-$(foreach i, $(TEXINFO_SOURCES), echo q | emacs --batch --no-site-file $(i) --eval $(TEXINFO_ALL_MENUS_UPDATE_EL); )
-	$(foreach i, $(sort $(TEXINFO_SOURCES)), if diff -u $(i)~ $(i); then mv $(i)~ $(i);  fi && ) true
diff --git a/stepmake/stepmake/texinfo-vars.make b/stepmake/stepmake/texinfo-vars.make
deleted file mode 100644
index a496060b95..0000000000
--- a/stepmake/stepmake/texinfo-vars.make
+++ /dev/null
@@ -1,14 +0,0 @@
-
-TEXI_FILES = $(wildcard *.texi)
-
-ALL_SOURCES += $(TEXI_FILES)
-
-TEXINFO_SOURCES = $(TEXI_FILES)
-
-OUTTXT_FILES += $(addprefix $(outdir)/,$(TEXI_FILES:.texi=.txt))
-
-GENERATE_OMF = $(PYTHON) $(depth)/buildscripts/texi2omf.py --format $(1) --location $(local_package_docdir)/$(current-relative-dir)/out-www/$(notdir $(basename $@))  --version $(TOPLEVEL_VERSION) $< > $@
-
-TEXINFO_PAPERSIZE_OPTION= $(if $(findstring $(PAPERSIZE),a4),,-t @afourpaper)
-
-MAKEINFO = LANG= $(MAKEINFO_PROGRAM)
diff --git a/stepmake/stepmake/topdocs-rules.make b/stepmake/stepmake/topdocs-rules.make
deleted file mode 100644
index 1bb8bf6d7f..0000000000
--- a/stepmake/stepmake/topdocs-rules.make
+++ /dev/null
@@ -1 +0,0 @@
-# empty
diff --git a/stepmake/stepmake/topdocs-targets.make b/stepmake/stepmake/topdocs-targets.make
deleted file mode 100644
index 0a858bd45b..0000000000
--- a/stepmake/stepmake/topdocs-targets.make
+++ /dev/null
@@ -1,9 +0,0 @@
-
-default: local-doc 
-
-copy-to-top:  $(TO_TOP_FILES)
-	$(foreach i, $(TO_TOP_FILES), \
-	  cp $(i) $(builddir) && ) true
-
-local-WWW: $(HTML_FILES) copy-to-top
-
diff --git a/stepmake/stepmake/topdocs-vars.make b/stepmake/stepmake/topdocs-vars.make
deleted file mode 100644
index 336c26b984..0000000000
--- a/stepmake/stepmake/topdocs-vars.make
+++ /dev/null
@@ -1,2 +0,0 @@
-TO_TOP_FILES=$(addprefix $(outdir)/, $(README_TOP_FILES))
-
diff --git a/stepmake/stepmake/toplevel-rules.make b/stepmake/stepmake/toplevel-rules.make
deleted file mode 100644
index 1bb8bf6d7f..0000000000
--- a/stepmake/stepmake/toplevel-rules.make
+++ /dev/null
@@ -1 +0,0 @@
-# empty
diff --git a/stepmake/stepmake/toplevel-targets.make b/stepmake/stepmake/toplevel-targets.make
deleted file mode 100644
index fe29adffbf..0000000000
--- a/stepmake/stepmake/toplevel-targets.make
+++ /dev/null
@@ -1,82 +0,0 @@
-include $(stepdir)/www-targets.make
-
-local-dist: configure 
-
-# urg!: this gets into every package (ie: yodl)
-local-distclean: 
-	rm -f config.h config.hh config.make Makefile GNUmakefile \
-		config.cache config.status config.log index.html \
-		stepmake/stepmake/stepmake stepmake/stepmake/bin
-
-local-maintainerclean:
-	rm -f configure
-
-GNUmakefile: GNUmakefile.in
-	$(MAKE) INFILE=$< OUTFILE=$@ -f $(stepdir)/automatically-generated.sub.make
-
-ifneq ($(PACKAGE),STEPMAKE)
-aclocal.m4: $(stepmake)/aclocal.m4
-	$(MAKE) INFILE=$< OUTFILE=$@ LINECOMMENT=dnl -f $(stepdir)/automatically-generated.sub.make
-
-autogen.sh: $(stepmake)/autogen.sh
-	$(MAKE) INFILE=$< OUTFILE=$@ LINECOMMENT=\# -f $(stepdir)/automatically-generated.sub.make
-	chmod +x autogen.sh
-endif
-
-
-$(package-icon):
-	$(MAKE) -C Documentation/pictures icon
-
-
-do-top-doc:
-	-$(MAKE) -C Documentation/topdocs/ README_TOP_FILES="$(README_TXT_FILES)" copy-to-top
-
-
-$(README_TXT_FILES): do-top-doc
-
-local-clean:
-
-install:
-	$(LOOP)
-ifeq ($(strip $(SRCMAKE)),)
-	$(MAKE) final-install
-endif
-
-local-dist: do-top-doc
-
-dist:
-	rm -rf $(distdir)
-	$(MAKE) local-dist $(distdir)
-	chmod -R a+r $(distdir)
-	chmod  a+x `find $(distdir) -type d -print` 
-	(cd ./$(depth)/$(outdir); $(TAR) -cf -  --owner=0 --group=0 $(DIST_NAME) | gzip -9 > $(DIST_NAME).tar.gz)
-# ugh.
-# Can't compare "stage1" dist with "stage2" dist in this way?
-	-ln -f $(depth)/$(outdir)/$(distname).tar.gz $(release-dir)
-	rm -rf $(distdir)/
-
-#
-#
-local-help:
-	@echo -e "\
-  config      rerun configure\n\
-  deb         build Debian package\n\
-  diff        generate patch: $(depth)/$(outdir)/$(distname).diff.gz\n\
-  .           Options:\n\
-  .             from=0.1.74\n\
-  .             help==\n\
-  .             release==\n\
-  .             to=0.1.74.jcn2\n\
-  dist        roll tarball: $(depth)/$(outdir)/$(distname).tar.gz\n\
-  distclean   cleaner than clean (duh)\n\
-  doc         update all documentation\n\
-  release     roll tarball and generate patch\n\
-  po          make new translation Portable Object database\n\
-  po-replace  do po-update and replace catalogs with msgmerged versions\n\
-  po-update   update translation Portable Object database\n\
-\n\
-Some of these top level targets (diff, dist, release) can be issued\n\
-from anywhere in the source tree.\n\
-"\
-#
-
diff --git a/stepmake/stepmake/toplevel-vars.make b/stepmake/stepmake/toplevel-vars.make
deleted file mode 100644
index 6ab5a4ed16..0000000000
--- a/stepmake/stepmake/toplevel-vars.make
+++ /dev/null
@@ -1,7 +0,0 @@
-
-# override Generic_vars.make:
-DIST_FILES := $(EXTRA_DIST_FILES) 
-
-# urg?
-include $(stepdir)/documentation-vars.make
-
diff --git a/stepmake/stepmake/www-rules.make b/stepmake/stepmake/www-rules.make
deleted file mode 100644
index 1bb8bf6d7f..0000000000
--- a/stepmake/stepmake/www-rules.make
+++ /dev/null
@@ -1 +0,0 @@
-# empty
diff --git a/stepmake/stepmake/www-targets.make b/stepmake/stepmake/www-targets.make
deleted file mode 100644
index 108d4b9f48..0000000000
--- a/stepmake/stepmake/www-targets.make
+++ /dev/null
@@ -1 +0,0 @@
-# moved to generic-targets.make
\ No newline at end of file
diff --git a/stepmake/stepmake/www-vars.make b/stepmake/stepmake/www-vars.make
deleted file mode 100644
index 1bb8bf6d7f..0000000000
--- a/stepmake/stepmake/www-vars.make
+++ /dev/null
@@ -1 +0,0 @@
-# empty
diff --git a/tex/GNUmakefile b/tex/GNUmakefile
deleted file mode 100644
index 8d3554e52c..0000000000
--- a/tex/GNUmakefile
+++ /dev/null
@@ -1,17 +0,0 @@
-depth = ..
-
-TEX_FILES = $(wildcard *.tex) $(outdir)/music-drawing-routines.ps
-
-EXTRA_DIST_FILES = $(TEX_FILES)
-STEPMAKE_TEMPLATES=install
-
-INSTALLATION_DIR=$(local_lilypond_datadir)/tex/
-INSTALLATION_FILES=$(TEX_FILES)
-
-include $(depth)/make/stepmake.make
-
-$(outdir)/music-drawing-routines.ps: $(depth)/ps/music-drawing-routines.ps
-	rm -f $@
-	-ln $< $@
-
-all: $(INSTALLATION_FILES)
diff --git a/tex/headers.tex b/tex/headers.tex
deleted file mode 100644
index 4da5d07f1e..0000000000
--- a/tex/headers.tex
+++ /dev/null
@@ -1,17 +0,0 @@
-
-
-\advance\topmargin-20mm
-\addtolength{\textheight}{40mm}
-\footskip5mm
-
-\usepackage{fancyheadings}
-\lhead{}
-\rhead{}
-\chead{}
-\lfoot{}
-\cfoot{\ifnum\thepage=1{\hfill\lilypondtagline}\fi}
-\rfoot{\ifnum\thepage>1{\hfill\thepage\hfill}\fi}
-\headrulewidth0mm
-\pagestyle{fancy}
-\thispagestyle{fancy}
-
diff --git a/tex/lily-debug.tex b/tex/lily-debug.tex
deleted file mode 100644
index 295e44f061..0000000000
--- a/tex/lily-debug.tex
+++ /dev/null
@@ -1,26 +0,0 @@
-
-% debugging stuff
-\def\vruler#1{{%
-        \def\wid{\dimen0}%
-        \def\inc{\dimen1}%
-        \wid=#1pt
-        \inc=\wid
-        \divide\inc by #1
-        \divide\wid by 2
-        \here=-\wid
-        \loop\ifdim\here<\wid\advance\here by\inc
-                \hbox to0pt{\vbox to0pt{\vss\hrule width2pt height 0.05pt\kern\here}\hss}%
-        \repeat%
-}}
-\def\hruler#1#2{\hbox{%
-        \def\wid{\dimen0}%
-        \def\here{\dimen3}%
-        \wid=#1pt
-        \divide\wid by 2
-        \here=-\wid
-        \loop\ifdim\here<\wid\advance\here by #2
-                \hbox to0pt{\kern\here\vrule width0.05pt height 1pt depth 1pt\hss}%
-        \repeat%
-}}
-
-
diff --git a/tex/lily-pdf-defs.tex b/tex/lily-pdf-defs.tex
deleted file mode 100644
index 69af9f0465..0000000000
--- a/tex/lily-pdf-defs.tex
+++ /dev/null
@@ -1,27 +0,0 @@
-% lily-pdf-defs.tex
-%
-% Define an \embeddedpdf command so that we can do the right thing.
-%
-\edef\lilypdfdefsELC{\the\endlinechar}%
-\endlinechar -1\relax
-
-\gdef\lilypondspace{ }
-
-\gdef\lilypondpostscript{
-  % This sets CTM so that you get to the currentpoint
-  % by executing a 0 0 moveto
-  \def\embeddedpdf##1{
-    \pdfliteral{
-      q \lilypondpaperoutputscale\lilypondspace 0 0 %
-        \lilypondpaperoutputscale\lilypondspace 0 0 cm %
-        \lilyoutputscalefactor\lilypondspace 0 0 %
-        \lilyoutputscalefactor\lilypondspace 0 0 cm %
-      ##1 Q
-    }
-  }
-}
-
-\gdef\lilypondexperimentalfeatures{}
-
-\endlinechar \lilypdfdefsELC
-\endinput
diff --git a/tex/lily-ps-defs.tex b/tex/lily-ps-defs.tex
deleted file mode 100644
index 8a4522a2e7..0000000000
--- a/tex/lily-ps-defs.tex
+++ /dev/null
@@ -1,54 +0,0 @@
-% lily-ps-defs.tex
-%
-\edef\lilypsdefsELC{\the\endlinechar}%
-\endlinechar -1\relax
-
-% Header info (macros/defs, etc) should go into a \special{! ... };
-% note the ! sign.  See dvips.info for details.
-%
-% We protect punctuation characters with \string to avoid problems with
-% language specific shorthands (e.g. `:' for French, `"' for German, etc.).
-
-\gdef\lilypondsetdimen#1{
-  \expandafter\gdef\csname #1ps\endcsname{}
-  \special{
-    \string!
-    /#1 (\csname #1\endcsname) set_tex_dimen
-  }
-}
-
-\gdef\lilypondspace{ }
-
-\gdef\lilypondpostscript{
-  % A document processed with lilypond-book can contain music fragments in
-  % different sizes.  To reduce overhead, we define `lyscaleXXX' PS macros
-  % only once.
-  \lilypondifundefined{lyscale\lilypondpaperoutputscale}
-    {
-      \expandafter\gdef\csname lyscale\lilypondpaperoutputscale\endcsname{}
-      % This sets CTM so that you get to the currentpoint
-      % by executing a 0 0 moveto
-      \special{
-        \string!
-        /lyscale\lilypondpaperoutputscale
-          {\lilypondpaperoutputscale\lilypondspace\scaletounit %
-           dup scale} def
-      }
-    }
-    {}
-                      
-  \def\embeddedps##1{
-    \special{
-      \string"
-      lyscale\lilypondpaperoutputscale\lilypondspace ##1}
-  }
-
-  \lilypondifundefined{lilypondpaperblotdiameterps}
-    {\lilypondsetdimen{lilypondpaperblotdiameter}}
-    {}
-}
-
-\gdef\lilypondexperimentalfeatures{}
-
-\endlinechar \lilypsdefsELC
-\endinput
diff --git a/tex/lilyponddefs.tex b/tex/lilyponddefs.tex
deleted file mode 100644
index 5cc6d4ffcf..0000000000
--- a/tex/lilyponddefs.tex
+++ /dev/null
@@ -1,205 +0,0 @@
-% lilyponddefs.tex
-%
-% Include file for LilyPond.
-%
-% This file defines various macros to acommodate lilypond output.
-%
-% It should run with plain TeX, LaTeX, pdftex, and texinfo.
-%
-% To avoid interferences, lilyponddefs.tex should be loaded within a group.
-% To load it only once, most of the definitions must be global.
-%
-% The overall structure of a file created by LilyPond is as follows:
-%
-%   <lilypond parameter definitions>
-%   \ifx\lilypondstart \undefined
-%     \input lilyponddefs
-%   \fi
-%   \lilypondstart
-%   <font setup and note output>
-%   \lilypondend
-%
-% No footers and headers are provided for the stand-alone run (i.e., for
-% directly saying `latex <LilyPond output>'.
-%
-%
-% Avoid \par while reading this file.
-\edef\lilyponddefsELC{\the\endlinechar}%
-\endlinechar -1\relax
-
-% the next three macros are taken from LaTeX
-\long\gdef\lilypondfirst#1#2{#1}
-
-\long\gdef\lilypondsecond#1#2{#2}
-
-\gdef\lilypondifundefined#1{
-  \expandafter\ifx\csname#1\endcsname\relax
-    \expandafter\lilypondfirst
-  \else
-    \expandafter\lilypondsecond
-  \fi
-}
-
-\gdef\lilypondstart{
-  \begingroup
-  \catcode `\@=11\relax
-  % \@nodocument is defined as \relax after `\begin{document}'
-  \lilypondifundefined{@nodocument}
-    {
-      % either plain TeX or texinfo or not at the beginning of LaTeX input
-      \def\x{\endgroup}
-    }
-    {
-      % provide a proper LaTeX preamble (for A4 paper format)
-      \def\x{
-        \endgroup
-        \def\lilyponddocument{}
-        \documentclass[a4paper]{article}
-	\nofiles
-        \pagestyle{empty}
-        % \begin is defined as \outer in texinfo, thus we use \csname
-        \csname begin\endcsname{document}
-        % center staves horizontally on page
-        \ifdim\lilypondpaperlinewidth\lilypondpaperunit > 0pt
-          \hsize\lilypondpaperlinewidth\lilypondpaperunit
-          % we abuse \scoreshift temporarily
-          \scoreshift \paperwidth
-          \advance\scoreshift -\the\hsize
-          \scoreshift 0.5\scoreshift
-          \advance\scoreshift -1in
-          \oddsidemargin \scoreshift
-          \evensidemargin \scoreshift
-        \fi
-        \parindent 0pt
-      }
-    }
-
-  \x
-
-  \lilypondifundefined{mustmakelilypondtitle}
-    {}
-    {\makelilypondtitle}
-
-  \lilypondifundefined{mustmakelilypondpiecetitle}
-    {}
-    {\makelilypondpiecetitle}
-}
-
-\gdef\lilypondend{
-  \lilypondifundefined{lilypondbook}
-    {\lilypondifundefined{lilypondpaperlastpagefill}
-      {\vskip 0pt plus \lilypondpaperinterscorelinefill00 fill}
-      {}
-    }
-    {}
-
-  \begingroup
-  \lilypondifundefined{lilyponddocument}
-    {
-      \def\x{\endgroup}
-    }
-    {
-      \def\x{
-        \endgroup
-        \csname end\endcsname{document}
-      }
-    }
-
-  \x
-}
-
-% this is an inversed \loop ... \repeat macro
-\def\lilypondloop#1\lilypondrepeat{
-  \def\lilypondbody{#1}
-  \lilyponditerate
-}
-
-\def\lilyponditerate{
-  % \if ...
-    \lilypondbody
-    \let\lilypondnext \relax
-  \else
-    \let\lilypondnext \lilyponditerate
-  \fi
-  \lilypondnext
-}
-
-% the following macro is executed only once
-\gdef\lilypondspecial{
-  \special{header=music-drawing-routines.ps}
-  \gdef\lilypondspecial{}
-}
-
-% the feta characters
-\input feta20
-
-\global\font\fetasixteen = feta16
-\gdef\fetafont{\fetasixteen}
-\gdef\fetachar#1{\hbox{\fetasixteen#1}}
-
-\gdef\botalign#1{
-  \vbox to 0pt{\vss #1}
-}
-\gdef\leftalign#1{
-  \hbox to 0pt{#1\hss}
-}
-
-\gdef\lyitem#1#2#3{
-  \botalign{
-    \hbox{\raise #1\outputscale
-          \leftalign{\kern #2\outputscale #3}}
-  }
-}
-
-\gdef\lybox#1#2#3{
-  \hbox to #1\outputscale {
-    \lower\scoreshift \vbox to #2\outputscale {
-      \hbox{#3}
-      \vss
-    }
-    \hss
-  }
-}
-
-\gdef\lyvrule#1#2#3#4{
-  \kern #1\outputscale
-  \vrule width #2\outputscale depth #3\outputscale height #4\outputscale
-}
-
-% Attempt to keep lilypiecetitle together with the piece:
-%
-% TODO: figure this out.
-\gdef\myfilbreak{}%\par\vfil\penalty200\vfilneg}
-
-\lilypondifundefined{lilypondpaperinterscorelinefill}
-  {\gdef\lilypondpaperinterscorelinefill{0}}
-  {\gdef\lilypondpaperinterscorelinefill{1}}
-
-%% Allow overriding of interscoreline, eg for lilypond --preview
-\lilypondifundefined{interscoreline}
-{\gdef\interscoreline{
-  \vskip \lilypondpaperinterscoreline \lilypondpaperunit
-    plus \lilypondpaperinterscorelinefill fill
-}}{}
-
-% Are we using PDFTeX?  If so, use pdf definitions.
-% MiKTeX checks \pdfoutput the wrong way, thus we use \csname.
-\lilypondifundefined{lilypondpostscript}
-  {
-    \lilypondifundefined{pdfoutput}
-      {\input lily-ps-defs }
-      {
-        \pdfoutput = 1
-        \input lily-pdf-defs %
-      }
-  }
-  {}
-
-\newdimen\outputscale
-\newdimen\scoreshift
-
-% Restore newline functionality (disabled to avoid \par).
-\endlinechar \lilyponddefsELC
-\endinput
-
-% EOF
diff --git a/tex/ltest.tex b/tex/ltest.tex
deleted file mode 100644
index 0425d88072..0000000000
--- a/tex/ltest.tex
+++ /dev/null
@@ -1,16 +0,0 @@
-% Mats Bengtsson
-\documentclass[a4paper, 10pt]{article}
-\nofiles
-
-% Allow for 8-bit characters:
-\usepackage[latin1]{inputenc}
-\usepackage[T1]{fontenc}
-
-\begin{document}
-\input lilyponddefs
-\input titledefs
-
-\def\settext#1{\normalfont #1} % Allow for 8-bit characters
-
-\input lelie.out
-\end{document}
diff --git a/tex/number.tex b/tex/number.tex
deleted file mode 100644
index 8aff711902..0000000000
--- a/tex/number.tex
+++ /dev/null
@@ -1,33 +0,0 @@
-% number.tex
-
-\font\fetaelevenfont=feta-nummer11
-\font\fetathirteenfont=feta-nummer13
-\font\fetasixteenfont=feta-nummer16
-\font\fetatwentyfont=feta-nummer20
-\font\fetatwentythreefont=feta-nummer23
-\font\fetatwentysixfont=feta-nummer26
-
-\def\fetafont{\fetasixteenfont}
-
-\def\test#1{%
-        \hbox {%
-                \vrule height #1pt width 5pt
-                \vbox{ 0 1 2 3 4 5 6 7 8 9 .-,}
-                \vrule height #1pt width 5pt
-                \hfill
-        }
-
-}
-
-\parindent0mm
-\magnification \magstep 2
-\baselineskip 10mm
-
-\fetaelevenfont \test{11}
-\fetathirteenfont \test{13}
-\fetasixteenfont \test{16}
-\fetatwentyfont \test{20}
-\fetatwentythreefont \test{23}
-\fetatwentysixfont \test{26}
-
-\end
diff --git a/tex/test-pedal.tex b/tex/test-pedal.tex
deleted file mode 100644
index d66fca3996..0000000000
--- a/tex/test-pedal.tex
+++ /dev/null
@@ -1,39 +0,0 @@
-% pedal.tex
-
-\hsize = 296mm
-\vsize = 210mm
-
-% fix chord.cc::banter_str before removing these
-\def\fetdef#1#2{%
-  \def#1{\hbox{\char#2}}}
-
-\fetdef\pedalasterisk{101}
-\fetdef\pedaldash{102}
-\fetdef\pedaldot{103}
-\fetdef\pedalP{104}
-\fetdef\pedald{105}
-\fetdef\pedale{106}
-
-%\font\fetatwentysixfontt=feta26 scaled \magstep 4
-%\font\fetatwentysixfontt=feta26 scaled 18842
-\font\fetatwentysixfontt=feta26 scaled 2407
-\magnification \magstep 4
-
-\def\fetafont{\fetatwentysixfontt}
-
-\baselineskip 12mm
-
-\vbox{
-\kern 20mm
-
-\hbox{
-\fetatwentysixfontt
-\hbox { \pedalP\kern-0.06ex\pedale\kern -0.55ex\pedald\pedaldot}
-\kern 50mm
-\pedalasterisk
-}
-}
-
-\end
-
-%\endinput
diff --git a/tex/texinfo.tex b/tex/texinfo.tex
deleted file mode 100644
index 88a09ccb44..0000000000
--- a/tex/texinfo.tex
+++ /dev/null
@@ -1,6732 +0,0 @@
-% texinfo.tex -- TeX macros to handle Texinfo files.
-%
-% Load plain if necessary, i.e., if running under initex.
-\expandafter\ifx\csname fmtname\endcsname\relax\input plain\fi
-%
-\def\texinfoversion{2003-12-07.11}
-%
-% Copyright (C) 1985, 1986, 1988, 1990, 1991, 1992, 1993, 1994, 1995,
-% 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
-%
-% This texinfo.tex file is free software; you can redistribute it and/or
-% modify it under the terms of the GNU General Public License as
-% published by the Free Software Foundation; either version 2, or (at
-% your option) any later version.
-%
-% This texinfo.tex file is distributed in the hope that it will be
-% useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-% of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-% General Public License for more details.
-%
-% You should have received a copy of the GNU General Public License
-% along with this texinfo.tex file; see the file COPYING.  If not, write
-% to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-% Boston, MA 02111-1307, USA.
-%
-% As a special exception, when this file is read by TeX when processing
-% a Texinfo source document, you may use the result without
-% restriction.  (This has been our intent since Texinfo was invented.)
-% 
-% Please try the latest version of texinfo.tex before submitting bug
-% reports; you can get the latest version from:
-%   http://www.gnu.org/software/texinfo/ (the Texinfo home page), or
-%   ftp://tug.org/tex/texinfo.tex
-%     (and all CTAN mirrors, see http://www.ctan.org).
-% The texinfo.tex in any given distribution could well be out
-% of date, so if that's what you're using, please check.
-%
-% Send bug reports to bug-texinfo@gnu.org.  Please include including a
-% complete document in each bug report with which we can reproduce the
-% problem.  Patches are, of course, greatly appreciated.
-%
-% To process a Texinfo manual with TeX, it's most reliable to use the
-% texi2dvi shell script that comes with the distribution.  For a simple
-% manual foo.texi, however, you can get away with this:
-%   tex foo.texi
-%   texindex foo.??
-%   tex foo.texi
-%   tex foo.texi
-%   dvips foo.dvi -o  # or whatever; this makes foo.ps.
-% The extra TeX runs get the cross-reference information correct.
-% Sometimes one run after texindex suffices, and sometimes you need more
-% than two; texi2dvi does it as many times as necessary.
-%
-% It is possible to adapt texinfo.tex for other languages, to some
-% extent.  You can get the existing language-specific files from the
-% full Texinfo distribution.
-% 
-% The GNU Texinfo home page is http://www.gnu.org/software/texinfo.
-
-
-\message{Loading texinfo [version \texinfoversion]:}
-
-% If in a .fmt file, print the version number
-% and turn on active characters that we couldn't do earlier because
-% they might have appeared in the input file name.
-\everyjob{\message{[Texinfo version \texinfoversion]}%
-  \catcode`+=\active \catcode`\_=\active}
-
-\message{Basics,}
-\chardef\other=12
-
-% We never want plain's \outer definition of \+ in Texinfo.
-% For @tex, we can use \tabalign.
-\let\+ = \relax
-
-% Save some plain tex macros whose names we will redefine.
-\let\ptexb=\b
-\let\ptexbullet=\bullet
-\let\ptexc=\c
-\let\ptexcomma=\,
-\let\ptexdot=\.
-\let\ptexdots=\dots
-\let\ptexend=\end
-\let\ptexequiv=\equiv
-\let\ptexexclam=\!
-\let\ptexfootnote=\footnote
-\let\ptexgtr=>
-\let\ptexhat=^
-\let\ptexi=\i
-\let\ptexindent=\indent
-\let\ptexnoindent=\noindent
-\let\ptexinsert=\insert
-\let\ptexlbrace=\{
-\let\ptexless=<
-\let\ptexplus=+
-\let\ptexrbrace=\}
-\let\ptexslash=\/
-\let\ptexstar=\*
-\let\ptext=\t
-
-% If this character appears in an error message or help string, it
-% starts a new line in the output.
-\newlinechar = `^^J
-
-% Use TeX 3.0's \inputlineno to get the line number, for better error
-% messages, but if we're using an old version of TeX, don't do anything.
-%
-\ifx\inputlineno\thisisundefined
-  \let\linenumber = \empty % Pre-3.0.
-\else
-  \def\linenumber{l.\the\inputlineno:\space}
-\fi
-
-% Set up fixed words for English if not already set.
-\ifx\putwordAppendix\undefined  \gdef\putwordAppendix{Appendix}\fi
-\ifx\putwordChapter\undefined   \gdef\putwordChapter{Chapter}\fi
-\ifx\putwordfile\undefined      \gdef\putwordfile{file}\fi
-\ifx\putwordin\undefined        \gdef\putwordin{in}\fi
-\ifx\putwordIndexIsEmpty\undefined     \gdef\putwordIndexIsEmpty{(Index is empty)}\fi
-\ifx\putwordIndexNonexistent\undefined \gdef\putwordIndexNonexistent{(Index is nonexistent)}\fi
-\ifx\putwordInfo\undefined      \gdef\putwordInfo{Info}\fi
-\ifx\putwordInstanceVariableof\undefined \gdef\putwordInstanceVariableof{Instance Variable of}\fi
-\ifx\putwordMethodon\undefined  \gdef\putwordMethodon{Method on}\fi
-\ifx\putwordNoTitle\undefined   \gdef\putwordNoTitle{No Title}\fi
-\ifx\putwordof\undefined        \gdef\putwordof{of}\fi
-\ifx\putwordon\undefined        \gdef\putwordon{on}\fi
-\ifx\putwordpage\undefined      \gdef\putwordpage{page}\fi
-\ifx\putwordsection\undefined   \gdef\putwordsection{section}\fi
-\ifx\putwordSection\undefined   \gdef\putwordSection{Section}\fi
-\ifx\putwordsee\undefined       \gdef\putwordsee{see}\fi
-\ifx\putwordSee\undefined       \gdef\putwordSee{See}\fi
-\ifx\putwordShortTOC\undefined  \gdef\putwordShortTOC{Short Contents}\fi
-\ifx\putwordTOC\undefined       \gdef\putwordTOC{Table of Contents}\fi
-%
-\ifx\putwordMJan\undefined \gdef\putwordMJan{January}\fi
-\ifx\putwordMFeb\undefined \gdef\putwordMFeb{February}\fi
-\ifx\putwordMMar\undefined \gdef\putwordMMar{March}\fi
-\ifx\putwordMApr\undefined \gdef\putwordMApr{April}\fi
-\ifx\putwordMMay\undefined \gdef\putwordMMay{May}\fi
-\ifx\putwordMJun\undefined \gdef\putwordMJun{June}\fi
-\ifx\putwordMJul\undefined \gdef\putwordMJul{July}\fi
-\ifx\putwordMAug\undefined \gdef\putwordMAug{August}\fi
-\ifx\putwordMSep\undefined \gdef\putwordMSep{September}\fi
-\ifx\putwordMOct\undefined \gdef\putwordMOct{October}\fi
-\ifx\putwordMNov\undefined \gdef\putwordMNov{November}\fi
-\ifx\putwordMDec\undefined \gdef\putwordMDec{December}\fi
-%
-\ifx\putwordDefmac\undefined    \gdef\putwordDefmac{Macro}\fi
-\ifx\putwordDefspec\undefined   \gdef\putwordDefspec{Special Form}\fi
-\ifx\putwordDefvar\undefined    \gdef\putwordDefvar{Variable}\fi
-\ifx\putwordDefopt\undefined    \gdef\putwordDefopt{User Option}\fi
-\ifx\putwordDeffunc\undefined   \gdef\putwordDeffunc{Function}\fi
-
-% In some macros, we cannot use the `\? notation---the left quote is
-% in some cases the escape char.
-\chardef\colonChar = `\:
-\chardef\commaChar = `\,
-\chardef\dotChar   = `\.
-\chardef\exclamChar= `\!
-\chardef\questChar = `\?
-\chardef\semiChar  = `\;
-\chardef\spaceChar = `\ %
-\chardef\underChar = `\_
-
-% Ignore a token.
-%
-\def\gobble#1{}
-
-% The following is used inside several \edef's.
-\def\makecsname#1{\expandafter\noexpand\csname#1\endcsname}
-
-% Make an outer definition into an inner one (due to Chris Thompson).
-% The arguments should be the control sequence to be defined, and the
-% new of the \outer control sequence, as characters; the control
-% sequence #1 is defined to be just the same as \csname#2\endcsname, but
-% not \outer.
-% 
-% For example, \innerdef\innernewcount{newcount} defines \innernewcount
-% to be a non-outer version of \newcount.
-%
-\def\innerdef#1#2{\edef#1{\expandafter\noexpand\csname #2\endcsname}}%
-%
-\innerdef\innernewcount{newcount}%
-
-% Hyphenation fixes.
-\hyphenation{ap-pen-dix}
-\hyphenation{eshell}
-\hyphenation{mini-buf-fer mini-buf-fers}
-\hyphenation{time-stamp}
-\hyphenation{white-space}
-
-% Margin to add to right of even pages, to left of odd pages.
-\newdimen\bindingoffset
-\newdimen\normaloffset
-\newdimen\pagewidth \newdimen\pageheight
-
-% For a final copy, take out the rectangles
-% that mark overfull boxes (in case you have decided
-% that the text looks ok even though it passes the margin).
-%
-\def\finalout{\overfullrule=0pt}
-
-% @| inserts a changebar to the left of the current line.  It should
-% surround any changed text.  This approach does *not* work if the
-% change spans more than two lines of output.  To handle that, we would
-% have adopt a much more difficult approach (putting marks into the main
-% vertical list for the beginning and end of each change).
-%
-\def\|{%
-  % \vadjust can only be used in horizontal mode.
-  \leavevmode
-  %
-  % Append this vertical mode material after the current line in the output.
-  \vadjust{%
-    % We want to insert a rule with the height and depth of the current
-    % leading; that is exactly what \strutbox is supposed to record.
-    \vskip-\baselineskip
-    %
-    % \vadjust-items are inserted at the left edge of the type.  So
-    % the \llap here moves out into the left-hand margin.
-    \llap{%
-      %
-      % For a thicker or thinner bar, change the `1pt'.
-      \vrule height\baselineskip width1pt
-      %
-      % This is the space between the bar and the text.
-      \hskip 12pt
-    }%
-  }%
-}
-
-% Sometimes it is convenient to have everything in the transcript file
-% and nothing on the terminal.  We don't just call \tracingall here,
-% since that produces some useless output on the terminal.  We also make
-% some effort to order the tracing commands to reduce output in the log
-% file; cf. trace.sty in LaTeX.
-%
-\def\gloggingall{\begingroup \globaldefs = 1 \loggingall \endgroup}%
-\def\loggingall{%
-  \tracingstats2
-  \tracingpages1
-  \tracinglostchars2  % 2 gives us more in etex
-  \tracingparagraphs1
-  \tracingoutput1
-  \tracingmacros2
-  \tracingrestores1
-  \showboxbreadth\maxdimen \showboxdepth\maxdimen
-  \ifx\eTeXversion\undefined\else % etex gives us more logging
-    \tracingscantokens1
-    \tracingifs1
-    \tracinggroups1
-    \tracingnesting2
-    \tracingassigns1
-  \fi
-  \tracingcommands3  % 3 gives us more in etex
-  \errorcontextlines\maxdimen
-}%
-
-% add check for \lastpenalty to plain's definitions.  If the last thing
-% we did was a \nobreak, we don't want to insert more space.
-%
-\def\smallbreak{\ifnum\lastpenalty<10000\par\ifdim\lastskip<\smallskipamount
-  \removelastskip\penalty-50\smallskip\fi\fi}
-\def\medbreak{\ifnum\lastpenalty<10000\par\ifdim\lastskip<\medskipamount
-  \removelastskip\penalty-100\medskip\fi\fi}
-\def\bigbreak{\ifnum\lastpenalty<10000\par\ifdim\lastskip<\bigskipamount
-  \removelastskip\penalty-200\bigskip\fi\fi}
-
-% For @cropmarks command.
-% Do @cropmarks to get crop marks.
-%
-\newif\ifcropmarks
-\let\cropmarks = \cropmarkstrue
-%
-% Dimensions to add cropmarks at corners.
-% Added by P. A. MacKay, 12 Nov. 1986
-%
-\newdimen\outerhsize \newdimen\outervsize % set by the paper size routines
-\newdimen\cornerlong  \cornerlong=1pc
-\newdimen\cornerthick \cornerthick=.3pt
-\newdimen\topandbottommargin \topandbottommargin=.75in
-
-% Main output routine.
-\chardef\PAGE = 255
-\output = {\onepageout{\pagecontents\PAGE}}
-
-\newbox\headlinebox
-\newbox\footlinebox
-
-% \onepageout takes a vbox as an argument.  Note that \pagecontents
-% does insertions, but you have to call it yourself.
-\def\onepageout#1{%
-  \ifcropmarks \hoffset=0pt \else \hoffset=\normaloffset \fi
-  %
-  \ifodd\pageno  \advance\hoffset by \bindingoffset
-  \else \advance\hoffset by -\bindingoffset\fi
-  %
-  % Do this outside of the \shipout so @code etc. will be expanded in
-  % the headline as they should be, not taken literally (outputting ''code).
-  \setbox\headlinebox = \vbox{\let\hsize=\pagewidth \makeheadline}%
-  \setbox\footlinebox = \vbox{\let\hsize=\pagewidth \makefootline}%
-  %
-  {%
-    % Have to do this stuff outside the \shipout because we want it to
-    % take effect in \write's, yet the group defined by the \vbox ends
-    % before the \shipout runs.
-    %
-    \escapechar = `\\     % use backslash in output files.
-    \indexdummies         % don't expand commands in the output.
-    \normalturnoffactive  % \ in index entries must not stay \, e.g., if
-                   % the page break happens to be in the middle of an example.
-    \shipout\vbox{%
-      % Do this early so pdf references go to the beginning of the page.
-      \ifpdfmakepagedest \pdfdest name{\the\pageno} xyz\fi
-      %
-      \ifcropmarks \vbox to \outervsize\bgroup
-        \hsize = \outerhsize
-        \vskip-\topandbottommargin
-        \vtop to0pt{%
-          \line{\ewtop\hfil\ewtop}%
-          \nointerlineskip
-          \line{%
-            \vbox{\moveleft\cornerthick\nstop}%
-            \hfill
-            \vbox{\moveright\cornerthick\nstop}%
-          }%
-          \vss}%
-        \vskip\topandbottommargin
-        \line\bgroup
-          \hfil % center the page within the outer (page) hsize.
-          \ifodd\pageno\hskip\bindingoffset\fi
-          \vbox\bgroup
-      \fi
-      %
-      \unvbox\headlinebox
-      \pagebody{#1}%
-      \ifdim\ht\footlinebox > 0pt
-        % Only leave this space if the footline is nonempty.
-        % (We lessened \vsize for it in \oddfootingxxx.)
-        % The \baselineskip=24pt in plain's \makefootline has no effect.
-        \vskip 2\baselineskip
-        \unvbox\footlinebox
-      \fi
-      %
-      \ifcropmarks
-          \egroup % end of \vbox\bgroup
-        \hfil\egroup % end of (centering) \line\bgroup
-        \vskip\topandbottommargin plus1fill minus1fill
-        \boxmaxdepth = \cornerthick
-        \vbox to0pt{\vss
-          \line{%
-            \vbox{\moveleft\cornerthick\nsbot}%
-            \hfill
-            \vbox{\moveright\cornerthick\nsbot}%
-          }%
-          \nointerlineskip
-          \line{\ewbot\hfil\ewbot}%
-        }%
-      \egroup % \vbox from first cropmarks clause
-      \fi
-    }% end of \shipout\vbox
-  }% end of group with \normalturnoffactive
-  \advancepageno
-  \ifnum\outputpenalty>-20000 \else\dosupereject\fi
-}
-
-\newinsert\margin \dimen\margin=\maxdimen
-
-\def\pagebody#1{\vbox to\pageheight{\boxmaxdepth=\maxdepth #1}}
-{\catcode`\@ =11
-\gdef\pagecontents#1{\ifvoid\topins\else\unvbox\topins\fi
-% marginal hacks, juha@viisa.uucp (Juha Takala)
-\ifvoid\margin\else % marginal info is present
-  \rlap{\kern\hsize\vbox to\z@{\kern1pt\box\margin \vss}}\fi
-\dimen@=\dp#1 \unvbox#1
-\ifvoid\footins\else\vskip\skip\footins\footnoterule \unvbox\footins\fi
-\ifr@ggedbottom \kern-\dimen@ \vfil \fi}
-}
-
-% Here are the rules for the cropmarks.  Note that they are
-% offset so that the space between them is truly \outerhsize or \outervsize
-% (P. A. MacKay, 12 November, 1986)
-%
-\def\ewtop{\vrule height\cornerthick depth0pt width\cornerlong}
-\def\nstop{\vbox
-  {\hrule height\cornerthick depth\cornerlong width\cornerthick}}
-\def\ewbot{\vrule height0pt depth\cornerthick width\cornerlong}
-\def\nsbot{\vbox
-  {\hrule height\cornerlong depth\cornerthick width\cornerthick}}
-
-% Parse an argument, then pass it to #1.  The argument is the rest of
-% the input line (except we remove a trailing comment).  #1 should be a
-% macro which expects an ordinary undelimited TeX argument.
-%
-\def\parsearg{\parseargusing{}}
-\def\parseargusing#1#2{%
-  \def\next{#2}%
-  \begingroup
-    \obeylines
-    \catcode`\ =10
-    #1%
-    \parseargline\empty% Insert the \empty token, see \finishparsearg below.
-}
-
-{\obeylines %
-  \gdef\parseargline#1^^M{%
-    \endgroup % End of the group started in \parsearg.
-    \argremovecomment #1\comment\ArgTerm%
-  }%
-}
-
-% First remove any @comment, then any @c comment.
-\def\argremovecomment#1\comment#2\ArgTerm{\argremovec #1\c\ArgTerm}
-\def\argremovec#1\c#2\ArgTerm{\argremovespace#1$ $\ArgTerm}
-% \argremovec might leave us with trailing space, though; e.g.,
-%    @end itemize  @c foo
-% Note that the argument cannot contain the TeX $, as its catcode is
-% changed to \other when Texinfo source is read.
-\def\argremovespace#1 $#2\ArgTerm{\finishparsearg#1$\ArgTerm}
-
-% If a _delimited_ argument is enclosed in braces, they get stripped; so
-% to get _exactly_ the rest of the line, we had to prevent such situation.
-% We prepended an \empty token at the very beginning and we expand it
-% just before passing the control to \next.
-% (But first, we have to spend the remaining $ or two.)
-\def\finishparsearg#1$#2\ArgTerm{\expandafter\next\expandafter{#1}}
-
-% \defparsearg\foo{...}
-%	is roughly equivalent to
-% \def\foo{\parsearg\Xfoo}
-% \def\Xfoo#1{...}
-%
-% Actually, I use \csname\string\foo\endcsname, ie. \\foo, as it is my
-% favourite TeX trick.  --kasal, 16nov03
-
-\def\defparsearg#1{%
-  \expandafter \dodefparsearg \csname\string#1\endcsname #1%
-}
-\def\dodefparsearg#1#2{%
-  \def#2{\parsearg#1}%
-  \def#1##1%
-}
-
-% Several utility definitions with active space:
-{
-  \obeyspaces
-  \gdef\obeyedspace{ }
-
-  % Make each space character in the input produce a normal interword
-  % space in the output.  Don't allow a line break at this space, as this
-  % is used only in environments like @example, where each line of input
-  % should produce a line of output anyway.
-  %
-  \gdef\sepspaces{\obeyspaces\let =\tie}
-
-  % If an index command is used in an @example environment, any spaces
-  % therein should become regular spaces in the raw index file, not the
-  % expansion of \tie (\leavevmode \penalty \@M \ ).
-  \gdef\unsepspaces{\let =\space}
-}
-
-
-\def\flushcr{\ifx\par\lisppar \def\next##1{}\else \let\next=\relax \fi \next}
-
-
-%% These are used to keep @begin/@end levels from running away
-%% Call \inENV within environments (after a \begingroup)
-\newif\ifENV \ENVfalse \def\inENV{\ifENV\relax\else\ENVtrue\fi}
-\def\ENVcheck{%
-\ifENV\errmessage{Still within an environment; press RETURN to continue}
-\endgroup\fi} % This is not perfect, but it should reduce lossage
-
-% @end foo executes the definition of \Efoo.
-%
-\defparsearg\end{%
-  \expandafter\ifx\csname E#1\endcsname\relax
-    \badenderror{#1}%
-  \else
-    % Everything's ok; the right environment has been started.
-    \csname E#1\endcsname
-  \fi
-}
-
-\def\badenderror#1{%
-  \expandafter\ifx\csname#1\endcsname\relax
-    % There's no \foo, i.e., no ``environment'' foo.
-    \errhelp = \EMsimple
-    \errmessage{Undefined command `@end #1'}%
-  \else
-    \unmatchedenderror{#1}%
-  \fi
-}
-
-% There is an environment #1, but it hasn't been started.  Give an error.
-%
-\def\unmatchedenderror#1{%
-  \errhelp = \EMsimple
-  \errmessage{This `@end #1' doesn't have a matching `@#1'}%
-}
-
-% Define the control sequence \E#1 to give an unmatched @end error.
-%
-\def\defineunmatchedend#1{%
-  \expandafter\def\csname E#1\endcsname{\unmatchedenderror{#1}}%
-}
-
-\newhelp\EMsimple{Press RETURN to continue.}
-
-
-%% Simple single-character @ commands
-
-% @@ prints an @
-% Kludge this until the fonts are right (grr).
-\def\@{{\tt\char64}}
-
-% This is turned off because it was never documented
-% and you can use @w{...} around a quote to suppress ligatures.
-%% Define @` and @' to be the same as ` and '
-%% but suppressing ligatures.
-%\def\`{{`}}
-%\def\'{{'}}
-
-% Used to generate quoted braces.
-\def\mylbrace {{\tt\char123}}
-\def\myrbrace {{\tt\char125}}
-\let\{=\mylbrace
-\let\}=\myrbrace
-\begingroup
-  % Definitions to produce \{ and \} commands for indices,
-  % and @{ and @} for the aux file.
-  \catcode`\{ = \other \catcode`\} = \other
-  \catcode`\[ = 1 \catcode`\] = 2
-  \catcode`\! = 0 \catcode`\\ = \other
-  !gdef!lbracecmd[\{]%
-  !gdef!rbracecmd[\}]%
-  !gdef!lbraceatcmd[@{]%
-  !gdef!rbraceatcmd[@}]%
-!endgroup
-
-% Accents: @, @dotaccent @ringaccent @ubaraccent @udotaccent
-% Others are defined by plain TeX: @` @' @" @^ @~ @= @u @v @H.
-\let\, = \c
-\let\dotaccent = \.
-\def\ringaccent#1{{\accent23 #1}}
-\let\tieaccent = \t
-\let\ubaraccent = \b
-\let\udotaccent = \d
-
-% Other special characters: @questiondown @exclamdown
-% Plain TeX defines: @AA @AE @O @OE @L (plus lowercase versions) @ss.
-\def\questiondown{?`}
-\def\exclamdown{!`}
-
-% Dotless i and dotless j, used for accents.
-\def\imacro{i}
-\def\jmacro{j}
-\def\dotless#1{%
-  \def\temp{#1}%
-  \ifx\temp\imacro \ptexi
-  \else\ifx\temp\jmacro \j
-  \else \errmessage{@dotless can be used only with i or j}%
-  \fi\fi
-}
-
-% Be sure we're in horizontal mode when doing a tie, since we make space
-% equivalent to this in @example-like environments. Otherwise, a space
-% at the beginning of a line will start with \penalty -- and
-% since \penalty is valid in vertical mode, we'd end up putting the
-% penalty on the vertical list instead of in the new paragraph.
-{\catcode`@ = 11
- % Avoid using \@M directly, because that causes trouble
- % if the definition is written into an index file.
- \global\let\tiepenalty = \@M
- \gdef\tie{\leavevmode\penalty\tiepenalty\ }
-}
-
-% @: forces normal size whitespace following.
-\def\:{\spacefactor=1000 }
-
-% @* forces a line break.
-\def\*{\hfil\break\hbox{}\ignorespaces}
-
-% @/ allows a line break.
-\let\/=\allowbreak
-
-% @. is an end-of-sentence period.
-\def\.{.\spacefactor=3000 }
-
-% @! is an end-of-sentence bang.
-\def\!{!\spacefactor=3000 }
-
-% @? is an end-of-sentence query.
-\def\?{?\spacefactor=3000 }
-
-% @w prevents a word break.  Without the \leavevmode, @w at the
-% beginning of a paragraph, when TeX is still in vertical mode, would
-% produce a whole line of output instead of starting the paragraph.
-\def\w#1{\leavevmode\hbox{#1}}
-
-% @group ... @end group forces ... to be all on one page, by enclosing
-% it in a TeX vbox.  We use \vtop instead of \vbox to construct the box
-% to keep its height that of a normal line.  According to the rules for
-% \topskip (p.114 of the TeXbook), the glue inserted is
-% max (\topskip - \ht (first item), 0).  If that height is large,
-% therefore, no glue is inserted, and the space between the headline and
-% the text is small, which looks bad.
-%
-% Another complication is that the group might be very large.  This can
-% cause the glue on the previous page to be unduly stretched, because it
-% does not have much material.  In this case, it's better to add an
-% explicit \vfill so that the extra space is at the bottom.  The
-% threshold for doing this is if the group is more than \vfilllimit
-% percent of a page (\vfilllimit can be changed inside of @tex).
-%
-\newbox\groupbox
-\def\vfilllimit{0.7}
-%
-\def\group{\begingroup
-  \ifnum\catcode`\^^M=\active \else
-    \errhelp = \groupinvalidhelp
-    \errmessage{@group invalid in context where filling is enabled}%
-  \fi
-  \startsavinginserts
-  %
-  % The \vtop we start below produces a box with normal height and large
-  % depth; thus, TeX puts \baselineskip glue before it, and (when the
-  % next line of text is done) \lineskip glue after it.  (See p.82 of
-  % the TeXbook.)  Thus, space below is not quite equal to space
-  % above.  But it's pretty close.
-  \def\Egroup{%
-    \egroup           % End the \vtop.
-    % \dimen0 is the vertical size of the group's box.
-    \dimen0 = \ht\groupbox  \advance\dimen0 by \dp\groupbox
-    % \dimen2 is how much space is left on the page (more or less).
-    \dimen2 = \pageheight   \advance\dimen2 by -\pagetotal
-    % if the group doesn't fit on the current page, and it's a big big
-    % group, force a page break.
-    \ifdim \dimen0 > \dimen2
-      \ifdim \pagetotal < \vfilllimit\pageheight
-        \page
-      \fi
-    \fi
-    \box\groupbox
-    \checkinserts
-    \endgroup         % End the \group.
-  }%
-  %
-  \setbox\groupbox = \vtop\bgroup
-    % We have to put a strut on the last line in case the @group is in
-    % the midst of an example, rather than completely enclosing it.
-    % Otherwise, the interline space between the last line of the group
-    % and the first line afterwards is too small.  But we can't put the
-    % strut in \Egroup, since there it would be on a line by itself.
-    % Hence this just inserts a strut at the beginning of each line.
-    \everypar = {\strut}%
-    %
-    % Since we have a strut on every line, we don't need any of TeX's
-    % normal interline spacing.
-    \offinterlineskip
-    %
-    % OK, but now we have to do something about blank
-    % lines in the input in @example-like environments, which normally
-    % just turn into \lisppar, which will insert no space now that we've
-    % turned off the interline space.  Simplest is to make them be an
-    % empty paragraph.
-    \ifx\par\lisppar
-      \edef\par{\leavevmode \par}%
-      %
-      % Reset ^^M's definition to new definition of \par.
-      \obeylines
-    \fi
-    %
-    % Do @comment since we are called inside an environment such as
-    % @example, where each end-of-line in the input causes an
-    % end-of-line in the output.  We don't want the end-of-line after
-    % the `@group' to put extra space in the output.  Since @group
-    % should appear on a line by itself (according to the Texinfo
-    % manual), we don't worry about eating any user text.
-    \comment
-}
-%
-% TeX puts in an \escapechar (i.e., `@') at the beginning of the help
-% message, so this ends up printing `@group can only ...'.
-%
-\newhelp\groupinvalidhelp{%
-group can only be used in environments such as @example,^^J%
-where each line of input produces a line of output.}
-
-% @need space-in-mils
-% forces a page break if there is not space-in-mils remaining.
-
-\newdimen\mil  \mil=0.001in
-
-% Old definition--didn't work.
-%\defparsearg\need{\par %
-%% This method tries to make TeX break the page naturally
-%% if the depth of the box does not fit.
-%{\baselineskip=0pt%
-%\vtop to #1\mil{\vfil}\kern -#1\mil\nobreak
-%\prevdepth=-1000pt
-%}}
-
-\defparsearg\need{%
-  % Ensure vertical mode, so we don't make a big box in the middle of a
-  % paragraph.
-  \par
-  %
-  % If the @need value is less than one line space, it's useless.
-  \dimen0 = #1\mil
-  \dimen2 = \ht\strutbox
-  \advance\dimen2 by \dp\strutbox
-  \ifdim\dimen0 > \dimen2
-    %
-    % Do a \strut just to make the height of this box be normal, so the
-    % normal leading is inserted relative to the preceding line.
-    % And a page break here is fine.
-    \vtop to #1\mil{\strut\vfil}%
-    %
-    % TeX does not even consider page breaks if a penalty added to the
-    % main vertical list is 10000 or more.  But in order to see if the
-    % empty box we just added fits on the page, we must make it consider
-    % page breaks.  On the other hand, we don't want to actually break the
-    % page after the empty box.  So we use a penalty of 9999.
-    %
-    % There is an extremely small chance that TeX will actually break the
-    % page at this \penalty, if there are no other feasible breakpoints in
-    % sight.  (If the user is using lots of big @group commands, which
-    % almost-but-not-quite fill up a page, TeX will have a hard time doing
-    % good page breaking, for example.)  However, I could not construct an
-    % example where a page broke at this \penalty; if it happens in a real
-    % document, then we can reconsider our strategy.
-    \penalty9999
-    %
-    % Back up by the size of the box, whether we did a page break or not.
-    \kern -#1\mil
-    %
-    % Do not allow a page break right after this kern.
-    \nobreak
-  \fi
-}
-
-% @br   forces paragraph break
-
-\let\br = \par
-
-% @dots{} output an ellipsis using the current font.
-% We do .5em per period so that it has the same spacing in a typewriter
-% font as three actual period characters.
-%
-\def\dots{%
-  \leavevmode
-  \hbox to 1.5em{%
-    \hskip 0pt plus 0.25fil minus 0.25fil
-    .\hss.\hss.%
-    \hskip 0pt plus 0.5fil minus 0.5fil
-  }%
-}
-
-% @enddots{} is an end-of-sentence ellipsis.
-%
-\def\enddots{%
-  \leavevmode
-  \hbox to 2em{%
-    \hskip 0pt plus 0.25fil minus 0.25fil
-    .\hss.\hss.\hss.%
-    \hskip 0pt plus 0.5fil minus 0.5fil
-  }%
-  \spacefactor=3000
-}
-
-% @page forces the start of a new page.
-%
-\def\page{\par\vfill\supereject}
-
-% @exdent text....
-% outputs text on separate line in roman font, starting at standard page margin
-
-% This records the amount of indent in the innermost environment.
-% That's how much \exdent should take out.
-\newskip\exdentamount
-
-% This defn is used inside fill environments such as @defun.
-\defparsearg\exdent{\hfil\break\hbox{\kern -\exdentamount{\rm#1}}\hfil\break}
-
-% This defn is used inside nofill environments such as @example.
-\defparsearg\nofillexdent{{\advance \leftskip by -\exdentamount
-  \leftline{\hskip\leftskip{\rm#1}}}}
-
-% @inmargin{WHICH}{TEXT} puts TEXT in the WHICH margin next to the current
-% paragraph.  For more general purposes, use the \margin insertion
-% class.  WHICH is `l' or `r'.
-%
-\newskip\inmarginspacing \inmarginspacing=1cm
-\def\strutdepth{\dp\strutbox}
-%
-\def\doinmargin#1#2{\strut\vadjust{%
-  \nobreak
-  \kern-\strutdepth
-  \vtop to \strutdepth{%
-    \baselineskip=\strutdepth
-    \vss
-    % if you have multiple lines of stuff to put here, you'll need to
-    % make the vbox yourself of the appropriate size.
-    \ifx#1l%
-      \llap{\ignorespaces #2\hskip\inmarginspacing}%
-    \else
-      \rlap{\hskip\hsize \hskip\inmarginspacing \ignorespaces #2}%
-    \fi
-    \null
-  }%
-}}
-\def\inleftmargin{\doinmargin l}
-\def\inrightmargin{\doinmargin r}
-%
-% @inmargin{TEXT [, RIGHT-TEXT]}
-% (if RIGHT-TEXT is given, use TEXT for left page, RIGHT-TEXT for right;
-% else use TEXT for both).
-%
-\def\inmargin#1{\parseinmargin #1,,\finish}
-\def\parseinmargin#1,#2,#3\finish{% not perfect, but better than nothing.
-  \setbox0 = \hbox{\ignorespaces #2}%
-  \ifdim\wd0 > 0pt
-    \def\lefttext{#1}%  have both texts
-    \def\righttext{#2}%
-  \else
-    \def\lefttext{#1}%  have only one text
-    \def\righttext{#1}%
-  \fi
-  %
-  \ifodd\pageno
-    \def\temp{\inrightmargin\righttext}% odd page -> outside is right margin
-  \else
-    \def\temp{\inleftmargin\lefttext}%
-  \fi
-  \temp
-}
-
-% @include file    insert text of that file as input.
-%
-\def\include{\parseargusing\filenamecatcodes\includezzz}
-\def\includezzz#1{%
-  \pushthisfilestack
-  \def\thisfile{#1}%
-  {%
-    \makevalueexpandable
-    \def\temp{\input #1 }%
-    \expandafter
-  }\temp
-  \popthisfilestack
-}
-\def\filenamecatcodes{%
-  \catcode`\\=\other
-  \catcode`~=\other
-  \catcode`^=\other
-  \catcode`_=\other
-  \catcode`|=\other
-  \catcode`<=\other
-  \catcode`>=\other
-  \catcode`+=\other
-  \catcode`-=\other
-}
-
-\def\pushthisfilestack{%
-  \expandafter\pushthisfilestackX\popthisfilestack\StackTerm
-}
-\def\pushthisfilestackX{%
-  \expandafter\pushthisfilestackY\thisfile\StackTerm
-}
-\def\pushthisfilestackY #1\StackTerm #2\StackTerm {%
-  \gdef\popthisfilestack{\gdef\thisfile{#1}\gdef\popthisfilestack{#2}}%
-}
-
-\def\popthisfilestack{\errthisfilestackempty}
-\def\errthisfilestackempty{\errmessage{Internal error:
-  the stack of filenames is empty.}}
-
-\def\thisfile{}
-
-% @center line
-% outputs that line, centered.
-%
-\defparsearg\center{%
-  \ifhmode \hfil\break \fi
-  {%
-    \advance\hsize by -\leftskip
-    \advance\hsize by -\rightskip
-    \line{\hfil \ignorespaces#1\unskip \hfil}%
-  }%
-  \ifhmode \break \fi
-}
-
-% @sp n   outputs n lines of vertical space
-
-\defparsearg\sp{\vskip #1\baselineskip}
-
-% @comment ...line which is ignored...
-% @c is the same as @comment
-% @ignore ... @end ignore  is another way to write a comment
-
-\def\comment{\begingroup \catcode`\^^M=\other%
-\catcode`\@=\other \catcode`\{=\other \catcode`\}=\other%
-\commentxxx}
-{\catcode`\^^M=\other \gdef\commentxxx#1^^M{\endgroup}}
-
-\let\c=\comment
-
-% @paragraphindent NCHARS
-% We'll use ems for NCHARS, close enough.
-% NCHARS can also be the word `asis' or `none'.
-% We cannot feasibly implement @paragraphindent asis, though.
-%
-\def\asisword{asis} % no translation, these are keywords
-\def\noneword{none}
-%
-\defparsearg\paragraphindent{%
-  \def\temp{#1}%
-  \ifx\temp\asisword
-  \else
-    \ifx\temp\noneword
-      \defaultparindent = 0pt
-    \else
-      \defaultparindent = #1em
-    \fi
-  \fi
-  \parindent = \defaultparindent
-}
-
-% @exampleindent NCHARS
-% We'll use ems for NCHARS like @paragraphindent.
-% It seems @exampleindent asis isn't necessary, but
-% I preserve it to make it similar to @paragraphindent.
-\defparsearg\exampleindent{%
-  \def\temp{#1}%
-  \ifx\temp\asisword
-  \else
-    \ifx\temp\noneword
-      \lispnarrowing = 0pt
-    \else
-      \lispnarrowing = #1em
-    \fi
-  \fi
-}
-
-% @firstparagraphindent WORD
-% If WORD is `none', then suppress indentation of the first paragraph
-% after a section heading.  If WORD is `insert', then do indent at such
-% paragraphs.
-%
-% The paragraph indentation is suppressed or not by calling
-% \suppressfirstparagraphindent, which the sectioning commands do.
-% We switch the definition of this back and forth according to WORD.
-% By default, we suppress indentation.
-%
-\def\suppressfirstparagraphindent{\dosuppressfirstparagraphindent}
-\newdimen\currentparindent
-%
-\def\insertword{insert}
-%
-\defparsearg\firstparagraphindent{%
-  \def\temp{#1}%
-  \ifx\temp\noneword
-    \let\suppressfirstparagraphindent = \dosuppressfirstparagraphindent
-  \else\ifx\temp\insertword
-    \let\suppressfirstparagraphindent = \relax
-  \else
-    \errhelp = \EMsimple
-    \errmessage{Unknown @firstparagraphindent option `\temp'}%
-  \fi\fi
-}
-
-% Here is how we actually suppress indentation.  Redefine \everypar to
-% \kern backwards by \parindent, and then reset itself to empty.
-%
-% We also make \indent itself not actually do anything until the next
-% paragraph.
-%
-\gdef\dosuppressfirstparagraphindent{%
-  \gdef\indent{%
-    \restorefirstparagraphindent
-    \indent
-  }%
-  \gdef\noindent{%
-    \restorefirstparagraphindent
-    \noindent
-  }%
-  \global\everypar = {%
-    \kern -\parindent
-    \restorefirstparagraphindent
-  }%
-}
-
-\gdef\restorefirstparagraphindent{%
-  \global \let \indent = \ptexindent
-  \global \let \noindent = \ptexnoindent
-  \global \everypar = {}%
-}
-
-
-% @asis just yields its argument.  Used with @table, for example.
-%
-\def\asis#1{#1}
-
-% @math outputs its argument in math mode.
-%
-% One complication: _ usually means subscripts, but it could also mean
-% an actual _ character, as in @math{@var{some_variable} + 1}.  So make
-% _ active, and distinguish by seeing if the current family is \slfam,
-% which is what @var uses.
-{
-  \catcode\underChar = \active
-  \gdef\mathunderscore{%
-    \catcode\underChar=\active
-    \def_{\ifnum\fam=\slfam \_\else\sb\fi}%
-  }
-}
-% Another complication: we want \\ (and @\) to output a \ character.
-% FYI, plain.tex uses \\ as a temporary control sequence (why?), but
-% this is not advertised and we don't care.  Texinfo does not
-% otherwise define @\.
-%
-% The \mathchar is class=0=ordinary, family=7=ttfam, position=5C=\.
-\def\mathbackslash{\ifnum\fam=\ttfam \mathchar"075C \else\backslash \fi}
-%
-\def\math{%
-  \tex
-  \mathunderscore
-  \let\\ = \mathbackslash
-  \mathactive
-  $\finishmath
-}
-\def\finishmath#1{#1$\Etex}
-
-% Some active characters (such as <) are spaced differently in math.
-% We have to reset their definitions in case the @math was an argument
-% to a command which sets the catcodes (such as @item or @section).
-%
-{
-  \catcode`^ = \active
-  \catcode`< = \active
-  \catcode`> = \active
-  \catcode`+ = \active
-  \gdef\mathactive{%
-    \let^ = \ptexhat
-    \let< = \ptexless
-    \let> = \ptexgtr
-    \let+ = \ptexplus
-  }
-}
-
-% @bullet and @minus need the same treatment as @math, just above.
-\def\bullet{$\ptexbullet$}
-\def\minus{$-$}
-
-% @refill is a no-op.
-\let\refill=\relax
-
-% If working on a large document in chapters, it is convenient to
-% be able to disable indexing, cross-referencing, and contents, for test runs.
-% This is done with @novalidate (before @setfilename).
-%
-\newif\iflinks \linkstrue % by default we want the aux files.
-\let\novalidate = \linksfalse
-
-% @setfilename is done at the beginning of every texinfo file.
-% So open here the files we need to have open while reading the input.
-% This makes it possible to make a .fmt file for texinfo.
-\def\setfilename{%
-   \iflinks
-     \readauxfile
-   \fi % \openindices needs to do some work in any case.
-   \openindices
-   \fixbackslash  % Turn off hack to swallow `\input texinfo'.
-   \global\let\setfilename=\comment % Ignore extra @setfilename cmds.
-   %
-   % If texinfo.cnf is present on the system, read it.
-   % Useful for site-wide @afourpaper, etc.
-   % Just to be on the safe side, close the input stream before the \input.
-   \openin 1 texinfo.cnf
-   \ifeof1 \let\temp=\relax \else \def\temp{\input texinfo.cnf }\fi
-   \closein1
-   \temp
-   %
-   \comment % Ignore the actual filename.
-}
-
-% Called from \setfilename.
-%
-\def\openindices{%
-  \newindex{cp}%
-  \newcodeindex{fn}%
-  \newcodeindex{vr}%
-  \newcodeindex{tp}%
-  \newcodeindex{ky}%
-  \newcodeindex{pg}%
-}
-
-% @bye.
-\outer\def\bye{\pagealignmacro\tracingstats=1\ptexend}
-
-
-\message{pdf,}
-% adobe `portable' document format
-\newcount\tempnum
-\newcount\lnkcount
-\newtoks\filename
-\newcount\filenamelength
-\newcount\pgn
-\newtoks\toksA
-\newtoks\toksB
-\newtoks\toksC
-\newtoks\toksD
-\newbox\boxA
-\newcount\countA
-\newif\ifpdf
-\newif\ifpdfmakepagedest
-
-\ifx\pdfoutput\undefined
-  \pdffalse
-  \let\pdfmkdest = \gobble
-  \let\pdfurl = \gobble
-  \let\endlink = \relax
-  \let\linkcolor = \relax
-  \let\pdfmakeoutlines = \relax
-\else
-  \pdftrue
-  \pdfoutput = 1
-  \input pdfcolor
-  \pdfcatalog{/PageMode /UseOutlines}%
-  \def\dopdfimage#1#2#3{%
-    \def\imagewidth{#2}%
-    \def\imageheight{#3}%
-    % without \immediate, pdftex seg faults when the same image is
-    % included twice.  (Version 3.14159-pre-1.0-unofficial-20010704.)
-    \ifnum\pdftexversion < 14
-      \immediate\pdfimage
-    \else
-      \immediate\pdfximage
-    \fi
-      \ifx\empty\imagewidth\else width \imagewidth \fi
-      \ifx\empty\imageheight\else height \imageheight \fi
-      \ifnum\pdftexversion<13
-         #1.pdf%
-       \else
-         {#1.pdf}%
-       \fi
-    \ifnum\pdftexversion < 14 \else
-      \pdfrefximage \pdflastximage
-    \fi}
-  \def\pdfmkdest#1{{%
-    % We have to set dummies so commands such as @code in a section title
-    % aren't expanded.
-    \atdummies
-    \normalturnoffactive
-    \pdfdest name{#1} xyz%
-  }}
-  \def\pdfmkpgn#1{#1}
-  \let\linkcolor = \Blue  % was Cyan, but that seems light?
-  \def\endlink{\Black\pdfendlink}
-  % Adding outlines to PDF; macros for calculating structure of outlines
-  % come from Petr Olsak
-  \def\expnumber#1{\expandafter\ifx\csname#1\endcsname\relax 0%
-    \else \csname#1\endcsname \fi}
-  \def\advancenumber#1{\tempnum=\expnumber{#1}\relax
-    \advance\tempnum by 1
-    \expandafter\xdef\csname#1\endcsname{\the\tempnum}}
-  %
-  % #1 is the section text.  #2 is the pdf expression for the number
-  % of subentries (or empty, for subsubsections).  #3 is the node
-  % text, which might be empty if this toc entry had no
-  % corresponding node.  #4 is the page number.
-  % 
-  \def\dopdfoutline#1#2#3#4{%
-    % Generate a link to the node text if that exists; else, use the
-    % page number.  We could generate a destination for the section
-    % text in the case where a section has no node, but it doesn't
-    % seem worthwhile, since most documents are normally structured.
-    \def\pdfoutlinedest{#3}%
-    \ifx\pdfoutlinedest\empty \def\pdfoutlinedest{#4}\fi
-    %
-    \pdfoutline goto name{\pdfmkpgn{\pdfoutlinedest}}#2{#1}%
-  }
-  %
-  \def\pdfmakeoutlines{%
-    \openin 1 \jobname.toc
-    \ifeof 1\else\begingroup
-      \closein 1
-      % Thanh's hack / proper braces in bookmarks
-      \edef\mylbrace{\iftrue \string{\else}\fi}\let\{=\mylbrace
-      \edef\myrbrace{\iffalse{\else\string}\fi}\let\}=\myrbrace
-      %
-      % Read toc silently, to get counts of subentries for \pdfoutline.
-      \def\numchapentry##1##2##3##4{\def\thischapnum{##2}}%
-      \def\numsecentry##1##2##3##4{%
-        \def\thissecnum{##2}%
-        \advancenumber{chap\thischapnum}}%
-      \def\numsubsecentry##1##2##3##4{%
-        \def\thissubsecnum{##2}%
-        \advancenumber{sec\thissecnum}}%
-      \def\numsubsubsecentry##1##2##3##4{\advancenumber{subsec\thissubsecnum}}%
-      %
-      % use \def rather than \let here because we redefine \chapentry et
-      % al. a second time, below.
-      \def\appentry{\numchapentry}%
-      \def\appsecentry{\numsecentry}%
-      \def\appsubsecentry{\numsubsecentry}%
-      \def\appsubsubsecentry{\numsubsubsecentry}%
-      \def\unnchapentry{\numchapentry}%
-      \def\unnsecentry{\numsecentry}%
-      \def\unnsubsecentry{\numsubsecentry}%
-      \def\unnsubsubsecentry{\numsubsubsecentry}%
-      \input \jobname.toc
-      %
-      % Read toc second time, this time actually producing the outlines.
-      % The `-' means take the \expnumber as the absolute number of
-      % subentries, which we calculated on our first read of the .toc above.
-      % 
-      % We use the node names as the destinations.
-      \def\numchapentry##1##2##3##4{%
-        \dopdfoutline{##1}{count-\expnumber{chap##2}}{##3}{##4}}%
-      \def\numsecentry##1##2##3##4{%
-        \dopdfoutline{##1}{count-\expnumber{sec##2}}{##3}{##4}}%
-      \def\numsubsecentry##1##2##3##4{%
-        \dopdfoutline{##1}{count-\expnumber{subsec##2}}{##3}{##4}}%
-      \def\numsubsubsecentry##1##2##3##4{% count is always zero
-        \dopdfoutline{##1}{}{##3}{##4}}%
-      %
-      % Make special characters normal for writing to the pdf file.
-      \indexnofonts
-      \turnoffactive
-      \input \jobname.toc
-    \endgroup\fi
-  }
-  %
-  \def\makelinks #1,{%
-    \def\params{#1}\def\E{END}%
-    \ifx\params\E
-      \let\nextmakelinks=\relax
-    \else
-      \let\nextmakelinks=\makelinks
-      \ifnum\lnkcount>0,\fi
-      \picknum{#1}%
-      \startlink attr{/Border [0 0 0]}
-        goto name{\pdfmkpgn{\the\pgn}}%
-      \linkcolor #1%
-      \advance\lnkcount by 1%
-      \endlink
-    \fi
-    \nextmakelinks
-  }
-  \def\picknum#1{\expandafter\pn#1}
-  \def\pn#1{%
-    \def\p{#1}%
-    \ifx\p\lbrace
-      \let\nextpn=\ppn
-    \else
-      \let\nextpn=\ppnn
-      \def\first{#1}
-    \fi
-    \nextpn
-  }
-  \def\ppn#1{\pgn=#1\gobble}
-  \def\ppnn{\pgn=\first}
-  \def\pdfmklnk#1{\lnkcount=0\makelinks #1,END,}
-  \def\addtokens#1#2{\edef\addtoks{\noexpand#1={\the#1#2}}\addtoks}
-  \def\skipspaces#1{\def\PP{#1}\def\D{|}%
-    \ifx\PP\D\let\nextsp\relax
-    \else\let\nextsp\skipspaces
-      \ifx\p\space\else\addtokens{\filename}{\PP}%
-        \advance\filenamelength by 1
-      \fi
-    \fi
-    \nextsp}
-  \def\getfilename#1{\filenamelength=0\expandafter\skipspaces#1|\relax}
-  \ifnum\pdftexversion < 14
-    \let \startlink \pdfannotlink
-  \else
-    \let \startlink \pdfstartlink
-  \fi
-  \def\pdfurl#1{%
-    \begingroup
-      \normalturnoffactive\def\@{@}%
-      \makevalueexpandable
-      \leavevmode\Red
-      \startlink attr{/Border [0 0 0]}%
-        user{/Subtype /Link /A << /S /URI /URI (#1) >>}%
-        % #1
-    \endgroup}
-  \def\pdfgettoks#1.{\setbox\boxA=\hbox{\toksA={#1.}\toksB={}\maketoks}}
-  \def\addtokens#1#2{\edef\addtoks{\noexpand#1={\the#1#2}}\addtoks}
-  \def\adn#1{\addtokens{\toksC}{#1}\global\countA=1\let\next=\maketoks}
-  \def\poptoks#1#2|ENDTOKS|{\let\first=#1\toksD={#1}\toksA={#2}}
-  \def\maketoks{%
-    \expandafter\poptoks\the\toksA|ENDTOKS|
-    \ifx\first0\adn0
-    \else\ifx\first1\adn1 \else\ifx\first2\adn2 \else\ifx\first3\adn3
-    \else\ifx\first4\adn4 \else\ifx\first5\adn5 \else\ifx\first6\adn6
-    \else\ifx\first7\adn7 \else\ifx\first8\adn8 \else\ifx\first9\adn9
-    \else
-      \ifnum0=\countA\else\makelink\fi
-      \ifx\first.\let\next=\done\else
-        \let\next=\maketoks
-        \addtokens{\toksB}{\the\toksD}
-        \ifx\first,\addtokens{\toksB}{\space}\fi
-      \fi
-    \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi
-    \next}
-  \def\makelink{\addtokens{\toksB}%
-    {\noexpand\pdflink{\the\toksC}}\toksC={}\global\countA=0}
-  \def\pdflink#1{%
-    \startlink attr{/Border [0 0 0]} goto name{\pdfmkpgn{#1}}
-    \linkcolor #1\endlink}
-  \def\done{\edef\st{\global\noexpand\toksA={\the\toksB}}\st}
-\fi % \ifx\pdfoutput
-
-
-\message{fonts,}
-% Font-change commands.
-
-% Texinfo sort of supports the sans serif font style, which plain TeX does not.
-% So we set up a \sf analogous to plain's \rm, etc.
-\newfam\sffam
-\def\sf{\fam=\sffam \tensf}
-\let\li = \sf % Sometimes we call it \li, not \sf.
-
-% We don't need math for this one.
-\def\ttsl{\tenttsl}
-
-% Default leading.
-\newdimen\textleading  \textleading = 13.2pt
-
-% Set the baselineskip to #1, and the lineskip and strut size
-% correspondingly.  There is no deep meaning behind these magic numbers
-% used as factors; they just match (closely enough) what Knuth defined.
-%
-\def\lineskipfactor{.08333}
-\def\strutheightpercent{.70833}
-\def\strutdepthpercent {.29167}
-%
-\def\setleading#1{%
-  \normalbaselineskip = #1\relax
-  \normallineskip = \lineskipfactor\normalbaselineskip
-  \normalbaselines
-  \setbox\strutbox =\hbox{%
-    \vrule width0pt height\strutheightpercent\baselineskip
-                    depth \strutdepthpercent \baselineskip
-  }%
-}
-
-% Set the font macro #1 to the font named #2, adding on the
-% specified font prefix (normally `cm').
-% #3 is the font's design size, #4 is a scale factor
-\def\setfont#1#2#3#4{\font#1=\fontprefix#2#3 scaled #4}
-
-% Use cm as the default font prefix.
-% To specify the font prefix, you must define \fontprefix
-% before you read in texinfo.tex.
-\ifx\fontprefix\undefined
-\def\fontprefix{cm}
-\fi
-% Support font families that don't use the same naming scheme as CM.
-\def\rmshape{r}
-\def\rmbshape{bx}               %where the normal face is bold
-\def\bfshape{b}
-\def\bxshape{bx}
-\def\ttshape{tt}
-\def\ttbshape{tt}
-\def\ttslshape{sltt}
-\def\itshape{ti}
-\def\itbshape{bxti}
-\def\slshape{sl}
-\def\slbshape{bxsl}
-\def\sfshape{ss}
-\def\sfbshape{ss}
-\def\scshape{csc}
-\def\scbshape{csc}
-
-\newcount\mainmagstep
-\ifx\bigger\relax
-  % not really supported.
-  \mainmagstep=\magstep1
-  \setfont\textrm\rmshape{12}{1000}
-  \setfont\texttt\ttshape{12}{1000}
-\else
-  \mainmagstep=\magstephalf
-  \setfont\textrm\rmshape{10}{\mainmagstep}
-  \setfont\texttt\ttshape{10}{\mainmagstep}
-\fi
-\setfont\textbf\bfshape{10}{\mainmagstep}
-\setfont\textit\itshape{10}{\mainmagstep}
-\setfont\textsl\slshape{10}{\mainmagstep}
-\setfont\textsf\sfshape{10}{\mainmagstep}
-\setfont\textsc\scshape{10}{\mainmagstep}
-\setfont\textttsl\ttslshape{10}{\mainmagstep}
-\font\texti=cmmi10 scaled \mainmagstep
-\font\textsy=cmsy10 scaled \mainmagstep
-
-% A few fonts for @defun names and args.
-\setfont\defbf\bfshape{10}{\magstep1}
-\setfont\deftt\ttshape{10}{\magstep1}
-\setfont\defttsl\ttslshape{10}{\magstep1}
-\def\df{\let\tentt=\deftt \let\tenbf = \defbf \let\tenttsl=\defttsl \bf}
-
-% Fonts for indices, footnotes, small examples (9pt).
-\setfont\smallrm\rmshape{9}{1000}
-\setfont\smalltt\ttshape{9}{1000}
-\setfont\smallbf\bfshape{10}{900}
-\setfont\smallit\itshape{9}{1000}
-\setfont\smallsl\slshape{9}{1000}
-\setfont\smallsf\sfshape{9}{1000}
-\setfont\smallsc\scshape{10}{900}
-\setfont\smallttsl\ttslshape{10}{900}
-\font\smalli=cmmi9
-\font\smallsy=cmsy9
-
-% Fonts for small examples (8pt).
-\setfont\smallerrm\rmshape{8}{1000}
-\setfont\smallertt\ttshape{8}{1000}
-\setfont\smallerbf\bfshape{10}{800}
-\setfont\smallerit\itshape{8}{1000}
-\setfont\smallersl\slshape{8}{1000}
-\setfont\smallersf\sfshape{8}{1000}
-\setfont\smallersc\scshape{10}{800}
-\setfont\smallerttsl\ttslshape{10}{800}
-\font\smalleri=cmmi8
-\font\smallersy=cmsy8
-
-% Fonts for title page:
-\setfont\titlerm\rmbshape{12}{\magstep3}
-\setfont\titleit\itbshape{10}{\magstep4}
-\setfont\titlesl\slbshape{10}{\magstep4}
-\setfont\titlett\ttbshape{12}{\magstep3}
-\setfont\titlettsl\ttslshape{10}{\magstep4}
-\setfont\titlesf\sfbshape{17}{\magstep1}
-\let\titlebf=\titlerm
-\setfont\titlesc\scbshape{10}{\magstep4}
-\font\titlei=cmmi12 scaled \magstep3
-\font\titlesy=cmsy10 scaled \magstep4
-\def\authorrm{\secrm}
-\def\authortt{\sectt}
-
-% Chapter (and unnumbered) fonts (17.28pt).
-\setfont\chaprm\rmbshape{12}{\magstep2}
-\setfont\chapit\itbshape{10}{\magstep3}
-\setfont\chapsl\slbshape{10}{\magstep3}
-\setfont\chaptt\ttbshape{12}{\magstep2}
-\setfont\chapttsl\ttslshape{10}{\magstep3}
-\setfont\chapsf\sfbshape{17}{1000}
-\let\chapbf=\chaprm
-\setfont\chapsc\scbshape{10}{\magstep3}
-\font\chapi=cmmi12 scaled \magstep2
-\font\chapsy=cmsy10 scaled \magstep3
-
-% Section fonts (14.4pt).
-\setfont\secrm\rmbshape{12}{\magstep1}
-\setfont\secit\itbshape{10}{\magstep2}
-\setfont\secsl\slbshape{10}{\magstep2}
-\setfont\sectt\ttbshape{12}{\magstep1}
-\setfont\secttsl\ttslshape{10}{\magstep2}
-\setfont\secsf\sfbshape{12}{\magstep1}
-\let\secbf\secrm
-\setfont\secsc\scbshape{10}{\magstep2}
-\font\seci=cmmi12 scaled \magstep1
-\font\secsy=cmsy10 scaled \magstep2
-
-% Subsection fonts (13.15pt).
-\setfont\ssecrm\rmbshape{12}{\magstephalf}
-\setfont\ssecit\itbshape{10}{1315}
-\setfont\ssecsl\slbshape{10}{1315}
-\setfont\ssectt\ttbshape{12}{\magstephalf}
-\setfont\ssecttsl\ttslshape{10}{1315}
-\setfont\ssecsf\sfbshape{12}{\magstephalf}
-\let\ssecbf\ssecrm
-\setfont\ssecsc\scbshape{10}{\magstep1}
-\font\sseci=cmmi12 scaled \magstephalf
-\font\ssecsy=cmsy10 scaled 1315
-% The smallcaps and symbol fonts should actually be scaled \magstep1.5,
-% but that is not a standard magnification.
-
-% In order for the font changes to affect most math symbols and letters,
-% we have to define the \textfont of the standard families.  Since
-% texinfo doesn't allow for producing subscripts and superscripts except
-% in the main text, we don't bother to reset \scriptfont and
-% \scriptscriptfont (which would also require loading a lot more fonts).
-%
-\def\resetmathfonts{%
-  \textfont0=\tenrm \textfont1=\teni \textfont2=\tensy
-  \textfont\itfam=\tenit \textfont\slfam=\tensl \textfont\bffam=\tenbf
-  \textfont\ttfam=\tentt \textfont\sffam=\tensf
-}
-
-% The font-changing commands redefine the meanings of \tenSTYLE, instead
-% of just \STYLE.  We do this so that font changes will continue to work
-% in math mode, where it is the current \fam that is relevant in most
-% cases, not the current font.  Plain TeX does \def\bf{\fam=\bffam
-% \tenbf}, for example.  By redefining \tenbf, we obviate the need to
-% redefine \bf itself.
-\def\textfonts{%
-  \let\tenrm=\textrm \let\tenit=\textit \let\tensl=\textsl
-  \let\tenbf=\textbf \let\tentt=\texttt \let\smallcaps=\textsc
-  \let\tensf=\textsf \let\teni=\texti \let\tensy=\textsy \let\tenttsl=\textttsl
-  \resetmathfonts \setleading{\textleading}}
-\def\titlefonts{%
-  \let\tenrm=\titlerm \let\tenit=\titleit \let\tensl=\titlesl
-  \let\tenbf=\titlebf \let\tentt=\titlett \let\smallcaps=\titlesc
-  \let\tensf=\titlesf \let\teni=\titlei \let\tensy=\titlesy
-  \let\tenttsl=\titlettsl
-  \resetmathfonts \setleading{25pt}}
-\def\titlefont#1{{\titlefonts\rm #1}}
-\def\chapfonts{%
-  \let\tenrm=\chaprm \let\tenit=\chapit \let\tensl=\chapsl
-  \let\tenbf=\chapbf \let\tentt=\chaptt \let\smallcaps=\chapsc
-  \let\tensf=\chapsf \let\teni=\chapi \let\tensy=\chapsy \let\tenttsl=\chapttsl
-  \resetmathfonts \setleading{19pt}}
-\def\secfonts{%
-  \let\tenrm=\secrm \let\tenit=\secit \let\tensl=\secsl
-  \let\tenbf=\secbf \let\tentt=\sectt \let\smallcaps=\secsc
-  \let\tensf=\secsf \let\teni=\seci \let\tensy=\secsy \let\tenttsl=\secttsl
-  \resetmathfonts \setleading{16pt}}
-\def\subsecfonts{%
-  \let\tenrm=\ssecrm \let\tenit=\ssecit \let\tensl=\ssecsl
-  \let\tenbf=\ssecbf \let\tentt=\ssectt \let\smallcaps=\ssecsc
-  \let\tensf=\ssecsf \let\teni=\sseci \let\tensy=\ssecsy \let\tenttsl=\ssecttsl
-  \resetmathfonts \setleading{15pt}}
-\let\subsubsecfonts = \subsecfonts % Maybe make sssec fonts scaled magstephalf?
-\def\smallfonts{%
-  \let\tenrm=\smallrm \let\tenit=\smallit \let\tensl=\smallsl
-  \let\tenbf=\smallbf \let\tentt=\smalltt \let\smallcaps=\smallsc
-  \let\tensf=\smallsf \let\teni=\smalli \let\tensy=\smallsy
-  \let\tenttsl=\smallttsl
-  \resetmathfonts \setleading{10.5pt}}
-\def\smallerfonts{%
-  \let\tenrm=\smallerrm \let\tenit=\smallerit \let\tensl=\smallersl
-  \let\tenbf=\smallerbf \let\tentt=\smallertt \let\smallcaps=\smallersc
-  \let\tensf=\smallersf \let\teni=\smalleri \let\tensy=\smallersy
-  \let\tenttsl=\smallerttsl
-  \resetmathfonts \setleading{9.5pt}}
-
-% Set the fonts to use with the @small... environments.
-\let\smallexamplefonts = \smallfonts
-
-% About \smallexamplefonts.  If we use \smallfonts (9pt), @smallexample
-% can fit this many characters:
-%   8.5x11=86   smallbook=72  a4=90  a5=69
-% If we use \smallerfonts (8pt), then we can fit this many characters:
-%   8.5x11=90+  smallbook=80  a4=90+  a5=77
-% For me, subjectively, the few extra characters that fit aren't worth
-% the additional smallness of 8pt.  So I'm making the default 9pt.
-%
-% By the way, for comparison, here's what fits with @example (10pt):
-%   8.5x11=71  smallbook=60  a4=75  a5=58
-%
-% I wish we used A4 paper on this side of the Atlantic.
-%
-% --karl, 24jan03.
-
-
-% Set up the default fonts, so we can use them for creating boxes.
-%
-\textfonts
-
-% Define these so they can be easily changed for other fonts.
-\def\angleleft{$\langle$}
-\def\angleright{$\rangle$}
-
-% Count depth in font-changes, for error checks
-\newcount\fontdepth \fontdepth=0
-
-% Fonts for short table of contents.
-\setfont\shortcontrm\rmshape{12}{1000}
-\setfont\shortcontbf\bfshape{10}{\magstep1}  % no cmb12
-\setfont\shortcontsl\slshape{12}{1000}
-\setfont\shortconttt\ttshape{12}{1000}
-
-%% Add scribe-like font environments, plus @l for inline lisp (usually sans
-%% serif) and @ii for TeX italic
-
-% \smartitalic{ARG} outputs arg in italics, followed by an italic correction
-% unless the following character is such as not to need one.
-\def\smartitalicx{\ifx\next,\else\ifx\next-\else\ifx\next.\else
-                    \ptexslash\fi\fi\fi}
-\def\smartslanted#1{{\ifusingtt\ttsl\sl #1}\futurelet\next\smartitalicx}
-\def\smartitalic#1{{\ifusingtt\ttsl\it #1}\futurelet\next\smartitalicx}
-
-% like \smartslanted except unconditionally uses \ttsl.
-% @var is set to this for defun arguments.
-\def\ttslanted#1{{\ttsl #1}\futurelet\next\smartitalicx}
-
-% like \smartslanted except unconditionally use \sl.  We never want
-% ttsl for book titles, do we?
-\def\cite#1{{\sl #1}\futurelet\next\smartitalicx}
-
-\let\i=\smartitalic
-\let\var=\smartslanted
-\let\dfn=\smartslanted
-\let\emph=\smartitalic
-
-\def\b#1{{\bf #1}}
-\let\strong=\b
-
-% We can't just use \exhyphenpenalty, because that only has effect at
-% the end of a paragraph.  Restore normal hyphenation at the end of the
-% group within which \nohyphenation is presumably called.
-%
-\def\nohyphenation{\hyphenchar\font = -1  \aftergroup\restorehyphenation}
-\def\restorehyphenation{\hyphenchar\font = `- }
-
-% Set sfcode to normal for the chars that usually have another value.
-% Can't use plain's \frenchspacing because it uses the `\x notation, and
-% sometimes \x has an active definition that messes things up.
-%
-\catcode`@=11
-  \def\frenchspacing{%
-    \sfcode\dotChar  =\@m \sfcode\questChar=\@m \sfcode\exclamChar=\@m
-    \sfcode\colonChar=\@m \sfcode\semiChar =\@m \sfcode\commaChar =\@m
-  }
-\catcode`@=\other
-
-\def\t#1{%
-  {\tt \rawbackslash \frenchspacing #1}%
-  \null
-}
-\let\ttfont=\t
-\def\samp#1{`\tclose{#1}'\null}
-\setfont\keyrm\rmshape{8}{1000}
-\font\keysy=cmsy9
-\def\key#1{{\keyrm\textfont2=\keysy \leavevmode\hbox{%
-  \raise0.4pt\hbox{\angleleft}\kern-.08em\vtop{%
-    \vbox{\hrule\kern-0.4pt
-     \hbox{\raise0.4pt\hbox{\vphantom{\angleleft}}#1}}%
-    \kern-0.4pt\hrule}%
-  \kern-.06em\raise0.4pt\hbox{\angleright}}}}
-% The old definition, with no lozenge:
-%\def\key #1{{\ttsl \nohyphenation \uppercase{#1}}\null}
-\def\ctrl #1{{\tt \rawbackslash \hat}#1}
-
-% @file, @option are the same as @samp.
-\let\file=\samp
-\let\option=\samp
-
-% @code is a modification of @t,
-% which makes spaces the same size as normal in the surrounding text.
-\def\tclose#1{%
-  {%
-    % Change normal interword space to be same as for the current font.
-    \spaceskip = \fontdimen2\font
-    %
-    % Switch to typewriter.
-    \tt
-    %
-    % But `\ ' produces the large typewriter interword space.
-    \def\ {{\spaceskip = 0pt{} }}%
-    %
-    % Turn off hyphenation.
-    \nohyphenation
-    %
-    \rawbackslash
-    \frenchspacing
-    #1%
-  }%
-  \null
-}
-
-% We *must* turn on hyphenation at `-' and `_' in \code.
-% Otherwise, it is too hard to avoid overfull hboxes
-% in the Emacs manual, the Library manual, etc.
-
-% Unfortunately, TeX uses one parameter (\hyphenchar) to control
-% both hyphenation at - and hyphenation within words.
-% We must therefore turn them both off (\tclose does that)
-% and arrange explicitly to hyphenate at a dash.
-%  -- rms.
-{
-  \catcode`\-=\active
-  \catcode`\_=\active
-  %
-  \global\def\code{\begingroup
-    \catcode`\-=\active \let-\codedash
-    \catcode`\_=\active \let_\codeunder
-    \codex
-  }
-}
-
-\def\realdash{-}
-\def\codedash{-\discretionary{}{}{}}
-\def\codeunder{%
-  % this is all so @math{@code{var_name}+1} can work.  In math mode, _
-  % is "active" (mathcode"8000) and \normalunderscore (or \char95, etc.)
-  % will therefore expand the active definition of _, which is us
-  % (inside @code that is), therefore an endless loop.
-  \ifusingtt{\ifmmode
-               \mathchar"075F % class 0=ordinary, family 7=ttfam, pos 0x5F=_.
-             \else\normalunderscore \fi
-             \discretionary{}{}{}}%
-            {\_}%
-}
-\def\codex #1{\tclose{#1}\endgroup}
-
-% @kbd is like @code, except that if the argument is just one @key command,
-% then @kbd has no effect.
-
-% @kbdinputstyle -- arg is `distinct' (@kbd uses slanted tty font always),
-%   `example' (@kbd uses ttsl only inside of @example and friends),
-%   or `code' (@kbd uses normal tty font always).
-\defparsearg\kbdinputstyle{%
-  \def\arg{#1}%
-  \ifx\arg\worddistinct
-    \gdef\kbdexamplefont{\ttsl}\gdef\kbdfont{\ttsl}%
-  \else\ifx\arg\wordexample
-    \gdef\kbdexamplefont{\ttsl}\gdef\kbdfont{\tt}%
-  \else\ifx\arg\wordcode
-    \gdef\kbdexamplefont{\tt}\gdef\kbdfont{\tt}%
-  \else
-    \errhelp = \EMsimple
-    \errmessage{Unknown @kbdinputstyle option `\arg'}%
-  \fi\fi\fi
-}
-\def\worddistinct{distinct}
-\def\wordexample{example}
-\def\wordcode{code}
-
-% Default is `distinct.'
-\kbdinputstyle distinct
-
-\def\xkey{\key}
-\def\kbdfoo#1#2#3\par{\def\one{#1}\def\three{#3}\def\threex{??}%
-\ifx\one\xkey\ifx\threex\three \key{#2}%
-\else{\tclose{\kbdfont\look}}\fi
-\else{\tclose{\kbdfont\look}}\fi}
-
-% For @url, @env, @command quotes seem unnecessary, so use \code.
-\let\url=\code
-\let\env=\code
-\let\command=\code
-
-% @uref (abbreviation for `urlref') takes an optional (comma-separated)
-% second argument specifying the text to display and an optional third
-% arg as text to display instead of (rather than in addition to) the url
-% itself.  First (mandatory) arg is the url.  Perhaps eventually put in
-% a hypertex \special here.
-%
-\def\uref#1{\douref #1,,,\finish}
-\def\douref#1,#2,#3,#4\finish{\begingroup
-  \unsepspaces
-  \pdfurl{#1}%
-  \setbox0 = \hbox{\ignorespaces #3}%
-  \ifdim\wd0 > 0pt
-    \unhbox0 % third arg given, show only that
-  \else
-    \setbox0 = \hbox{\ignorespaces #2}%
-    \ifdim\wd0 > 0pt
-      \ifpdf
-        \unhbox0             % PDF: 2nd arg given, show only it
-      \else
-        \unhbox0\ (\code{#1})% DVI: 2nd arg given, show both it and url
-      \fi
-    \else
-      \code{#1}% only url given, so show it
-    \fi
-  \fi
-  \endlink
-\endgroup}
-
-% rms does not like angle brackets --karl, 17may97.
-% So now @email is just like @uref, unless we are pdf.
-%
-%\def\email#1{\angleleft{\tt #1}\angleright}
-\ifpdf
-  \def\email#1{\doemail#1,,\finish}
-  \def\doemail#1,#2,#3\finish{\begingroup
-    \unsepspaces
-    \pdfurl{mailto:#1}%
-    \setbox0 = \hbox{\ignorespaces #2}%
-    \ifdim\wd0>0pt\unhbox0\else\code{#1}\fi
-    \endlink
-  \endgroup}
-\else
-  \let\email=\uref
-\fi
-
-% Check if we are currently using a typewriter font.  Since all the
-% Computer Modern typewriter fonts have zero interword stretch (and
-% shrink), and it is reasonable to expect all typewriter fonts to have
-% this property, we can check that font parameter.
-%
-\def\ifmonospace{\ifdim\fontdimen3\font=0pt }
-
-% Typeset a dimension, e.g., `in' or `pt'.  The only reason for the
-% argument is to make the input look right: @dmn{pt} instead of @dmn{}pt.
-%
-\def\dmn#1{\thinspace #1}
-
-\def\kbd#1{\def\look{#1}\expandafter\kbdfoo\look??\par}
-
-% @l was never documented to mean ``switch to the Lisp font'',
-% and it is not used as such in any manual I can find.  We need it for
-% Polish suppressed-l.  --karl, 22sep96.
-%\def\l#1{{\li #1}\null}
-
-% Explicit font changes: @r, @sc, undocumented @ii.
-\def\r#1{{\rm #1}}              % roman font
-\def\sc#1{{\smallcaps#1}}       % smallcaps font
-\def\ii#1{{\it #1}}             % italic font
-
-% @acronym downcases the argument and prints in smallcaps.
-% It would be nicer to go one point size down.
-\def\acronym#1{{\smallcaps \lowercase{#1}}}
-
-% @pounds{} is a sterling sign.
-\def\pounds{{\it\$}}
-
-% @registeredsymbol - R in a circle.  For now, only works in text size;
-% we'd have to redo the font mechanism to change the \scriptstyle and
-% \scriptscriptstyle font sizes to make it look right in headings.
-% Adapted from the plain.tex definition of \copyright.
-%
-\def\registeredsymbol{%
-  $^{{\ooalign{\hfil\raise.07ex\hbox{$\scriptstyle\rm R$}\hfil\crcr\Orb}}%
-    }$%
-}
-
-
-\message{page headings,}
-
-\newskip\titlepagetopglue \titlepagetopglue = 1.5in
-\newskip\titlepagebottomglue \titlepagebottomglue = 2pc
-
-% First the title page.  Must do @settitle before @titlepage.
-\newif\ifseenauthor
-\newif\iffinishedtitlepage
-
-% Do an implicit @contents or @shortcontents after @end titlepage if the
-% user says @setcontentsaftertitlepage or @setshortcontentsaftertitlepage.
-%
-\newif\ifsetcontentsaftertitlepage
- \let\setcontentsaftertitlepage = \setcontentsaftertitlepagetrue
-\newif\ifsetshortcontentsaftertitlepage
- \let\setshortcontentsaftertitlepage = \setshortcontentsaftertitlepagetrue
-
-\defparsearg\shorttitlepage{\begingroup\hbox{}\vskip 1.5in \chaprm \centerline{#1}%
-        \endgroup\page\hbox{}\page}
-
-\def\titlepage{%
-  \begingroup \parindent=0pt \textfonts
-  % Leave some space at the very top of the page.
-  \vglue\titlepagetopglue
-  % No rule at page bottom unless we print one at the top with @title.
-  \finishedtitlepagetrue
-  %
-  % Most title ``pages'' are actually two pages long, with space
-  % at the top of the second.  We don't want the ragged left on the second.
-  \let\oldpage = \page
-  \def\page{%
-    \iffinishedtitlepage\else
-       \finishtitlepage
-    \fi
-    \let\page = \oldpage
-    \page
-    \null
-  }%
-}
-
-\def\Etitlepage{%
-   \iffinishedtitlepage\else
-      \finishtitlepage
-   \fi
-   % It is important to do the page break before ending the group,
-   % because the headline and footline are only empty inside the group.
-   % If we use the new definition of \page, we always get a blank page
-   % after the title page, which we certainly don't want.
-   \oldpage
-   \endgroup
-   %
-   % Need this before the \...aftertitlepage checks so that if they are
-   % in effect the toc pages will come out with page numbers.
-   \HEADINGSon
-   %
-   % If they want short, they certainly want long too.
-   \ifsetshortcontentsaftertitlepage
-     \shortcontents
-     \contents
-     \global\let\shortcontents = \relax
-     \global\let\contents = \relax
-   \fi
-   %
-   \ifsetcontentsaftertitlepage
-     \contents
-     \global\let\contents = \relax
-     \global\let\shortcontents = \relax
-   \fi
-}
-
-\def\finishtitlepage{%
-   \vskip4pt \hrule height 2pt width \hsize
-   \vskip\titlepagebottomglue
-   \finishedtitlepagetrue
-}
-
-%%% Macros to be used within @titlepage:
-
-\let\subtitlerm=\tenrm
-\def\subtitlefont{\subtitlerm \normalbaselineskip = 13pt \normalbaselines}
-
-\def\authorfont{\authorrm \normalbaselineskip = 16pt \normalbaselines
-		\let\tt=\authortt}
-
-\defparsearg\title{\leftline{\titlefonts\rm #1}
-		% print a rule at the page bottom also.
-		\finishedtitlepagefalse
-		\vskip4pt \hrule height 4pt width \hsize \vskip4pt}
-
-\defparsearg\subtitle{{\subtitlefont \rightline{#1}}}
-
-% @author should come last, but may come many times.
-\defparsearg\author{\ifseenauthor\else\vskip 0pt plus 1filll\seenauthortrue\fi
-  {\authorfont \leftline{#1}}}
-
-
-%%% Set up page headings and footings.
-
-\let\thispage=\folio
-
-\newtoks\evenheadline    % headline on even pages
-\newtoks\oddheadline     % headline on odd pages
-\newtoks\evenfootline    % footline on even pages
-\newtoks\oddfootline     % footline on odd pages
-
-% Now make TeX use those variables
-\headline={{\textfonts\rm \ifodd\pageno \the\oddheadline
-                            \else \the\evenheadline \fi}}
-\footline={{\textfonts\rm \ifodd\pageno \the\oddfootline
-                            \else \the\evenfootline \fi}\HEADINGShook}
-\let\HEADINGShook=\relax
-
-% Commands to set those variables.
-% For example, this is what  @headings on  does
-% @evenheading @thistitle|@thispage|@thischapter
-% @oddheading @thischapter|@thispage|@thistitle
-% @evenfooting @thisfile||
-% @oddfooting ||@thisfile
-
-
-\def\evenheading{\parsearg\evenheadingxxx}
-\def\evenheadingxxx #1{\evenheadingyyy #1\|\|\|\|\finish}
-\def\evenheadingyyy #1\|#2\|#3\|#4\finish{%
-\global\evenheadline={\rlap{\centerline{#2}}\line{#1\hfil#3}}}
-
-\def\oddheading{\parsearg\oddheadingxxx}
-\def\oddheadingxxx #1{\oddheadingyyy #1\|\|\|\|\finish}
-\def\oddheadingyyy #1\|#2\|#3\|#4\finish{%
-\global\oddheadline={\rlap{\centerline{#2}}\line{#1\hfil#3}}}
-
-\defparsearg\everyheading{\oddheadingxxx{#1}\evenheadingxxx{#1}}%
-
-\def\evenfooting{\parsearg\evenfootingxxx}
-\def\evenfootingxxx #1{\evenfootingyyy #1\|\|\|\|\finish}
-\def\evenfootingyyy #1\|#2\|#3\|#4\finish{%
-\global\evenfootline={\rlap{\centerline{#2}}\line{#1\hfil#3}}}
-
-\def\oddfooting{\parsearg\oddfootingxxx}
-\def\oddfootingxxx #1{\oddfootingyyy #1\|\|\|\|\finish}
-\def\oddfootingyyy #1\|#2\|#3\|#4\finish{%
-  \global\oddfootline = {\rlap{\centerline{#2}}\line{#1\hfil#3}}%
-  %
-  % Leave some space for the footline.  Hopefully ok to assume
-  % @evenfooting will not be used by itself.
-  \global\advance\pageheight by -\baselineskip
-  \global\advance\vsize by -\baselineskip
-}
-
-\defparsearg\everyfooting{\oddfootingxxx{#1}\evenfootingxxx{#1}}
-
-
-% @headings double      turns headings on for double-sided printing.
-% @headings single      turns headings on for single-sided printing.
-% @headings off         turns them off.
-% @headings on          same as @headings double, retained for compatibility.
-% @headings after       turns on double-sided headings after this page.
-% @headings doubleafter turns on double-sided headings after this page.
-% @headings singleafter turns on single-sided headings after this page.
-% By default, they are off at the start of a document,
-% and turned `on' after @end titlepage.
-
-\def\headings #1 {\csname HEADINGS#1\endcsname}
-
-\def\HEADINGSoff{%
-\global\evenheadline={\hfil} \global\evenfootline={\hfil}
-\global\oddheadline={\hfil} \global\oddfootline={\hfil}}
-\HEADINGSoff
-% When we turn headings on, set the page number to 1.
-% For double-sided printing, put current file name in lower left corner,
-% chapter name on inside top of right hand pages, document
-% title on inside top of left hand pages, and page numbers on outside top
-% edge of all pages.
-\def\HEADINGSdouble{%
-\global\pageno=1
-\global\evenfootline={\hfil}
-\global\oddfootline={\hfil}
-\global\evenheadline={\line{\folio\hfil\thistitle}}
-\global\oddheadline={\line{\thischapter\hfil\folio}}
-\global\let\contentsalignmacro = \chapoddpage
-}
-\let\contentsalignmacro = \chappager
-
-% For single-sided printing, chapter title goes across top left of page,
-% page number on top right.
-\def\HEADINGSsingle{%
-\global\pageno=1
-\global\evenfootline={\hfil}
-\global\oddfootline={\hfil}
-\global\evenheadline={\line{\thischapter\hfil\folio}}
-\global\oddheadline={\line{\thischapter\hfil\folio}}
-\global\let\contentsalignmacro = \chappager
-}
-\def\HEADINGSon{\HEADINGSdouble}
-
-\def\HEADINGSafter{\let\HEADINGShook=\HEADINGSdoublex}
-\let\HEADINGSdoubleafter=\HEADINGSafter
-\def\HEADINGSdoublex{%
-\global\evenfootline={\hfil}
-\global\oddfootline={\hfil}
-\global\evenheadline={\line{\folio\hfil\thistitle}}
-\global\oddheadline={\line{\thischapter\hfil\folio}}
-\global\let\contentsalignmacro = \chapoddpage
-}
-
-\def\HEADINGSsingleafter{\let\HEADINGShook=\HEADINGSsinglex}
-\def\HEADINGSsinglex{%
-\global\evenfootline={\hfil}
-\global\oddfootline={\hfil}
-\global\evenheadline={\line{\thischapter\hfil\folio}}
-\global\oddheadline={\line{\thischapter\hfil\folio}}
-\global\let\contentsalignmacro = \chappager
-}
-
-% Subroutines used in generating headings
-% This produces Day Month Year style of output.
-% Only define if not already defined, in case a txi-??.tex file has set
-% up a different format (e.g., txi-cs.tex does this).
-\ifx\today\undefined
-\def\today{%
-  \number\day\space
-  \ifcase\month
-  \or\putwordMJan\or\putwordMFeb\or\putwordMMar\or\putwordMApr
-  \or\putwordMMay\or\putwordMJun\or\putwordMJul\or\putwordMAug
-  \or\putwordMSep\or\putwordMOct\or\putwordMNov\or\putwordMDec
-  \fi
-  \space\number\year}
-\fi
-
-% @settitle line...  specifies the title of the document, for headings.
-% It generates no output of its own.
-\def\thistitle{\putwordNoTitle}
-\def\settitle{\parsearg{\gdef\thistitle}}
-
-
-\message{tables,}
-% Tables -- @table, @ftable, @vtable, @item(x).
-
-% default indentation of table text
-\newdimen\tableindent \tableindent=.8in
-% default indentation of @itemize and @enumerate text
-\newdimen\itemindent  \itemindent=.3in
-% margin between end of table item and start of table text.
-\newdimen\itemmargin  \itemmargin=.1in
-
-% used internally for \itemindent minus \itemmargin
-\newdimen\itemmax
-
-% Note @table, @ftable, and @vtable define @item, @itemx, etc., with
-% these defs.
-% They also define \itemindex
-% to index the item name in whatever manner is desired (perhaps none).
-
-\newif\ifitemxneedsnegativevskip
-
-\def\itemxpar{\par\ifitemxneedsnegativevskip\nobreak\vskip-\parskip\nobreak\fi}
-
-\def\internalBitem{\smallbreak \parsearg\itemzzz}
-\def\internalBitemx{\itemxpar \parsearg\itemzzz}
-
-\def\itemzzz #1{\begingroup %
-  \advance\hsize by -\rightskip
-  \advance\hsize by -\tableindent
-  \setbox0=\hbox{\itemindicate{#1}}%
-  \itemindex{#1}%
-  \nobreak % This prevents a break before @itemx.
-  %
-  % If the item text does not fit in the space we have, put it on a line
-  % by itself, and do not allow a page break either before or after that
-  % line.  We do not start a paragraph here because then if the next
-  % command is, e.g., @kindex, the whatsit would get put into the
-  % horizontal list on a line by itself, resulting in extra blank space.
-  \ifdim \wd0>\itemmax
-    %
-    % Make this a paragraph so we get the \parskip glue and wrapping,
-    % but leave it ragged-right.
-    \begingroup
-      \advance\leftskip by-\tableindent
-      \advance\hsize by\tableindent
-      \advance\rightskip by0pt plus1fil
-      \leavevmode\unhbox0\par
-    \endgroup
-    %
-    % We're going to be starting a paragraph, but we don't want the
-    % \parskip glue -- logically it's part of the @item we just started.
-    \nobreak \vskip-\parskip
-    %
-    % Stop a page break at the \parskip glue coming up.  (Unfortunately
-    % we can't prevent a possible page break at the following
-    % \baselineskip glue.)  However, if what follows is an environment
-    % such as @example, there will be no \parskip glue; then
-    % the negative vskip we just would cause the example and the item to
-    % crash together.  So we use this bizarre value of 10001 as a signal
-    % to \aboveenvbreak to insert \parskip glue after all.
-    % (Possibly there are other commands that could be followed by
-    % @example which need the same treatment, but not section titles; or
-    % maybe section titles are the only special case and they should be
-    % penalty 10001...)
-    \penalty 10001
-    \endgroup
-    \itemxneedsnegativevskipfalse
-  \else
-    % The item text fits into the space.  Start a paragraph, so that the
-    % following text (if any) will end up on the same line.
-    \noindent
-    % Do this with kerns and \unhbox so that if there is a footnote in
-    % the item text, it can migrate to the main vertical list and
-    % eventually be printed.
-    \nobreak\kern-\tableindent
-    \dimen0 = \itemmax  \advance\dimen0 by \itemmargin \advance\dimen0 by -\wd0
-    \unhbox0
-    \nobreak\kern\dimen0
-    \endgroup
-    \itemxneedsnegativevskiptrue
-  \fi
-}
-
-\def\item{\errmessage{@item while not in a list environment}}
-\def\itemx{\errmessage{@itemx while not in a list environment}}
-
-% @table, @ftable, @vtable.
-\def\table{%
-  \begingroup\inENV
-  \let\itemindex\gobble
-  \tablex
-}
-\def\ftable{%
-  \begingroup\inENV
-  \def\itemindex ##1{\doind {fn}{\code{##1}}}%
-  \tablex
-}
-\def\vtable{%
-  \begingroup\inENV
-  \def\itemindex ##1{\doind {vr}{\code{##1}}}%
-  \tablex
-}
-\def\tablex#1{%
-  \def\itemindicate{#1}%
-  \parsearg\tabley
-}
-\def\tabley#1{%
-  {%
-    \makevalueexpandable
-    \edef\temp{\noexpand\tablez #1\space\space\space}%
-    \expandafter
-  }\temp \endtablez
-}
-\def\tablez #1 #2 #3 #4\endtablez{%
-  \aboveenvbreak
-  \ifnum 0#1>0 \advance \leftskip by #1\mil \fi
-  \ifnum 0#2>0 \tableindent=#2\mil \fi
-  \ifnum 0#3>0 \advance \rightskip by #3\mil \fi
-  \itemmax=\tableindent
-  \advance \itemmax by -\itemmargin
-  \advance \leftskip by \tableindent
-  \exdentamount=\tableindent
-  \parindent = 0pt
-  \parskip = \smallskipamount
-  \ifdim \parskip=0pt \parskip=2pt \fi
-  \let\item = \internalBitem
-  \let\itemx = \internalBitemx
-}
-\def\Etable{\endgraf\afterenvbreak\endgroup}
-\let\Eftable\Etable
-\let\Evtable\Etable
-
-% This is the counter used by @enumerate, which is really @itemize
-
-\newcount \itemno
-
-\defparsearg\itemize{%
-  \begingroup % ended by the @end itemize
-  \itemizey {#1}{\Eitemize}
-}
-
-\def\itemizey#1#2{%
-  \aboveenvbreak
-  \itemmax=\itemindent
-  \advance\itemmax by -\itemmargin
-  \advance\leftskip by \itemindent
-  \exdentamount=\itemindent
-  \parindent=0pt
-  \parskip=\smallskipamount
-  \ifdim\parskip=0pt \parskip=2pt \fi
-  \def#2{\endgraf\afterenvbreak\endgroup}%
-  \def\itemcontents{#1}%
-  % @itemize with no arg is equivalent to @itemize @bullet.
-  \ifx\itemcontents\empty\def\itemcontents{\bullet}\fi
-  \let\item=\itemizeitem
-}
-
-% \splitoff TOKENS\endmark defines \first to be the first token in
-% TOKENS, and \rest to be the remainder.
-%
-\def\splitoff#1#2\endmark{\def\first{#1}\def\rest{#2}}%
-
-% Allow an optional argument of an uppercase letter, lowercase letter,
-% or number, to specify the first label in the enumerated list.  No
-% argument is the same as `1'.
-%
-\defparsearg\enumerate{\enumeratey #1  \endenumeratey}
-\def\enumeratey #1 #2\endenumeratey{%
-  \begingroup % ended by the @end enumerate
-  %
-  % If we were given no argument, pretend we were given `1'.
-  \def\thearg{#1}%
-  \ifx\thearg\empty \def\thearg{1}\fi
-  %
-  % Detect if the argument is a single token.  If so, it might be a
-  % letter.  Otherwise, the only valid thing it can be is a number.
-  % (We will always have one token, because of the test we just made.
-  % This is a good thing, since \splitoff doesn't work given nothing at
-  % all -- the first parameter is undelimited.)
-  \expandafter\splitoff\thearg\endmark
-  \ifx\rest\empty
-    % Only one token in the argument.  It could still be anything.
-    % A ``lowercase letter'' is one whose \lccode is nonzero.
-    % An ``uppercase letter'' is one whose \lccode is both nonzero, and
-    %   not equal to itself.
-    % Otherwise, we assume it's a number.
-    %
-    % We need the \relax at the end of the \ifnum lines to stop TeX from
-    % continuing to look for a <number>.
-    %
-    \ifnum\lccode\expandafter`\thearg=0\relax
-      \numericenumerate % a number (we hope)
-    \else
-      % It's a letter.
-      \ifnum\lccode\expandafter`\thearg=\expandafter`\thearg\relax
-        \lowercaseenumerate % lowercase letter
-      \else
-        \uppercaseenumerate % uppercase letter
-      \fi
-    \fi
-  \else
-    % Multiple tokens in the argument.  We hope it's a number.
-    \numericenumerate
-  \fi
-}
-
-% An @enumerate whose labels are integers.  The starting integer is
-% given in \thearg.
-%
-\def\numericenumerate{%
-  \itemno = \thearg
-  \startenumeration{\the\itemno}%
-}
-
-% The starting (lowercase) letter is in \thearg.
-\def\lowercaseenumerate{%
-  \itemno = \expandafter`\thearg
-  \startenumeration{%
-    % Be sure we're not beyond the end of the alphabet.
-    \ifnum\itemno=0
-      \errmessage{No more lowercase letters in @enumerate; get a bigger
-                  alphabet}%
-    \fi
-    \char\lccode\itemno
-  }%
-}
-
-% The starting (uppercase) letter is in \thearg.
-\def\uppercaseenumerate{%
-  \itemno = \expandafter`\thearg
-  \startenumeration{%
-    % Be sure we're not beyond the end of the alphabet.
-    \ifnum\itemno=0
-      \errmessage{No more uppercase letters in @enumerate; get a bigger
-                  alphabet}
-    \fi
-    \char\uccode\itemno
-  }%
-}
-
-% Call itemizey, adding a period to the first argument and supplying the
-% common last two arguments.  Also subtract one from the initial value in
-% \itemno, since @item increments \itemno.
-%
-\def\startenumeration#1{%
-  \advance\itemno by -1
-  \itemizey{#1.}\Eenumerate\flushcr
-}
-
-% @alphaenumerate and @capsenumerate are abbreviations for giving an arg
-% to @enumerate.
-%
-\def\alphaenumerate{\enumerate{a}}
-\def\capsenumerate{\enumerate{A}}
-\def\Ealphaenumerate{\Eenumerate}
-\def\Ecapsenumerate{\Eenumerate}
-
-% Definition of @item while inside @itemize.
-
-\def\itemizeitem{%
-\advance\itemno by 1
-{\let\par=\endgraf \smallbreak}%
-\ifhmode \errmessage{In hmode at itemizeitem}\fi
-{\parskip=0in \hskip 0pt
-\hbox to 0pt{\hss \itemcontents\hskip \itemmargin}%
-\vadjust{\penalty 1200}}%
-\flushcr}
-
-% @multitable macros
-% Amy Hendrickson, 8/18/94, 3/6/96
-%
-% @multitable ... @end multitable will make as many columns as desired.
-% Contents of each column will wrap at width given in preamble.  Width
-% can be specified either with sample text given in a template line,
-% or in percent of \hsize, the current width of text on page.
-
-% Table can continue over pages but will only break between lines.
-
-% To make preamble:
-%
-% Either define widths of columns in terms of percent of \hsize:
-%   @multitable @columnfractions .25 .3 .45
-%   @item ...
-%
-%   Numbers following @columnfractions are the percent of the total
-%   current hsize to be used for each column. You may use as many
-%   columns as desired.
-
-
-% Or use a template:
-%   @multitable {Column 1 template} {Column 2 template} {Column 3 template}
-%   @item ...
-%   using the widest term desired in each column.
-
-% Each new table line starts with @item, each subsequent new column
-% starts with @tab. Empty columns may be produced by supplying @tab's
-% with nothing between them for as many times as empty columns are needed,
-% ie, @tab@tab@tab will produce two empty columns.
-
-% @item, @tab do not need to be on their own lines, but it will not hurt
-% if they are.
-
-% Sample multitable:
-
-%   @multitable {Column 1 template} {Column 2 template} {Column 3 template}
-%   @item first col stuff @tab second col stuff @tab third col
-%   @item
-%   first col stuff
-%   @tab
-%   second col stuff
-%   @tab
-%   third col
-%   @item first col stuff @tab second col stuff
-%   @tab Many paragraphs of text may be used in any column.
-%
-%         They will wrap at the width determined by the template.
-%   @item@tab@tab This will be in third column.
-%   @end multitable
-
-% Default dimensions may be reset by user.
-% @multitableparskip is vertical space between paragraphs in table.
-% @multitableparindent is paragraph indent in table.
-% @multitablecolmargin is horizontal space to be left between columns.
-% @multitablelinespace is space to leave between table items, baseline
-%                                                            to baseline.
-%   0pt means it depends on current normal line spacing.
-%
-\newskip\multitableparskip
-\newskip\multitableparindent
-\newdimen\multitablecolspace
-\newskip\multitablelinespace
-\multitableparskip=0pt
-\multitableparindent=6pt
-\multitablecolspace=12pt
-\multitablelinespace=0pt
-
-% Macros used to set up halign preamble:
-%
-\let\endsetuptable\relax
-\def\xendsetuptable{\endsetuptable}
-\let\columnfractions\relax
-\def\xcolumnfractions{\columnfractions}
-\newif\ifsetpercent
-
-% #1 is the part of the @columnfraction before the decimal point, which
-% is presumably either 0 or the empty string (but we don't check, we
-% just throw it away).  #2 is the decimal part, which we use as the
-% percent of \hsize for this column.
-\def\pickupwholefraction#1.#2 {%
-  \global\advance\colcount by 1
-  \expandafter\xdef\csname col\the\colcount\endcsname{.#2\hsize}%
-  \setuptable
-}
-
-\newcount\colcount
-\def\setuptable#1{%
-  \def\firstarg{#1}%
-  \ifx\firstarg\xendsetuptable
-    \let\go = \relax
-  \else
-    \ifx\firstarg\xcolumnfractions
-      \global\setpercenttrue
-    \else
-      \ifsetpercent
-         \let\go\pickupwholefraction
-      \else
-         \global\advance\colcount by 1
-         \setbox0=\hbox{#1\unskip\space}% Add a normal word space as a
-                   % separator; typically that is always in the input, anyway.
-         \expandafter\xdef\csname col\the\colcount\endcsname{\the\wd0}%
-      \fi
-    \fi
-    \ifx\go\pickupwholefraction
-      % Put the argument back for the \pickupwholefraction call, so
-      % we'll always have a period there to be parsed.
-      \def\go{\pickupwholefraction#1}%
-    \else
-      \let\go = \setuptable
-    \fi%
-  \fi
-  \go
-}
-
-% multitable-only commands.
-\def\headitem{\errmessage{@headitem outside of @multitable}}
-\def\tab{\errmessage{@tab outside of @multitable}}
-
-% @multitable ... @end multitable definitions:
-%
-\newtoks\everytab  % insert after every tab.
-%
-\defparsearg\multitable{\bgroup
-  \vskip\parskip
-  \startsavinginserts
-  %
-  % @headitem starts a heading row, which we typeset in bold.
-  % Assignments have to be global since we are inside the implicit group
-  % of an alignment entry.
-  \def\headitem{\crcrwithinserts \global\everytab={\bf}\the\everytab}%
-  %
-  % @item within a multitable starts a normal row, get rid of any bold.
-  \def\item{\crcrwithinserts \global\everytab={}}%
-  %
-  % A \tab used to include \hskip1sp.  But then the space in a template
-  % line is not enough.  That is bad.  So let's go back to just & until
-  % we encounter the problem it was intended to solve again.  --karl,
-  % nathan@acm.org, 20apr99.
-  \def\tab{&\the\everytab}%
-  %
-  \tolerance=9500
-  \hbadness=9500
-  \setmultitablespacing
-  \parskip=\multitableparskip
-  \parindent=\multitableparindent
-  \overfullrule=0pt
-  \global\colcount=0
-  %
-  \def\Emultitable{%
-    \global\setpercentfalse
-    \crcrwithinserts
-    \egroup\egroup
-  }%
-  %
-  % To parse everything between @multitable and @item:
-  \setuptable#1 \endsetuptable
-  %
-  % \everycr will reset column counter, \colcount, at the end of
-  % each line. Every column entry will cause \colcount to advance by one.
-  % The table preamble
-  % looks at the current \colcount to find the correct column width.
-  \everycr{\noalign{%
-  %
-  % \filbreak%% keeps underfull box messages off when table breaks over pages.
-  % Maybe so, but it also creates really weird page breaks when the table
-  % breaks over pages. Wouldn't \vfil be better?  Wait until the problem
-  % manifests itself, so it can be fixed for real --karl.
-    \global\colcount=0\relax}}%
-  %
-  % This preamble sets up a generic column definition, which will
-  % be used as many times as user calls for columns.
-  % \vtop will set a single line and will also let text wrap and
-  % continue for many paragraphs if desired.
-  \halign\bgroup&\global\advance\colcount by 1\relax
-    \multistrut\vtop{\hsize=\expandafter\csname col\the\colcount\endcsname
-  %
-  % In order to keep entries from bumping into each other
-  % we will add a \leftskip of \multitablecolspace to all columns after
-  % the first one.
-  %
-  % If a template has been used, we will add \multitablecolspace
-  % to the width of each template entry.
-  %
-  % If the user has set preamble in terms of percent of \hsize we will
-  % use that dimension as the width of the column, and the \leftskip
-  % will keep entries from bumping into each other.  Table will start at
-  % left margin and final column will justify at right margin.
-  %
-  % Make sure we don't inherit \rightskip from the outer environment.
-  \rightskip=0pt
-  \ifnum\colcount=1
-    % The first column will be indented with the surrounding text.
-    \advance\hsize by\leftskip
-  \else
-    \ifsetpercent \else
-      % If user has not set preamble in terms of percent of \hsize
-      % we will advance \hsize by \multitablecolspace.
-      \advance\hsize by \multitablecolspace
-    \fi
-   % In either case we will make \leftskip=\multitablecolspace:
-  \leftskip=\multitablecolspace
-  \fi
-  % Ignoring space at the beginning and end avoids an occasional spurious
-  % blank line, when TeX decides to break the line at the space before the
-  % box from the multistrut, so the strut ends up on a line by itself.
-  % For example:
-  % @multitable @columnfractions .11 .89
-  % @item @code{#}
-  % @tab Legal holiday which is valid in major parts of the whole country.
-  % Is automatically provided with highlighting sequences respectively marking
-  % characters.
-  \noindent\ignorespaces##\unskip\multistrut}\cr
-}
-\def\crcrwithinserts{\crcr\noalign{\checkinserts}}
-
-\def\setmultitablespacing{% test to see if user has set \multitablelinespace.
-% If so, do nothing. If not, give it an appropriate dimension based on
-% current baselineskip.
-\ifdim\multitablelinespace=0pt
-\setbox0=\vbox{X}\global\multitablelinespace=\the\baselineskip
-\global\advance\multitablelinespace by-\ht0
-%% strut to put in table in case some entry doesn't have descenders,
-%% to keep lines equally spaced
-\let\multistrut = \strut
-\else
-%% FIXME: what is \box0 supposed to be?
-\gdef\multistrut{\vrule height\multitablelinespace depth\dp0
-width0pt\relax} \fi
-%% Test to see if parskip is larger than space between lines of
-%% table. If not, do nothing.
-%%        If so, set to same dimension as multitablelinespace.
-\ifdim\multitableparskip>\multitablelinespace
-\global\multitableparskip=\multitablelinespace
-\global\advance\multitableparskip-7pt %% to keep parskip somewhat smaller
-                                      %% than skip between lines in the table.
-\fi%
-\ifdim\multitableparskip=0pt
-\global\multitableparskip=\multitablelinespace
-\global\advance\multitableparskip-7pt %% to keep parskip somewhat smaller
-                                      %% than skip between lines in the table.
-\fi}
-
-
-\message{conditionals,}
-% Prevent errors for section commands.
-% Used in @ignore and in failing conditionals.
-\def\ignoresections{%
-  \let\appendix=\relax
-  \let\appendixsec=\relax
-  \let\appendixsection=\relax
-  \let\appendixsubsec=\relax
-  \let\appendixsubsection=\relax
-  \let\appendixsubsubsec=\relax
-  \let\appendixsubsubsection=\relax
-  %\let\begin=\relax
-  %\let\bye=\relax
-  \let\centerchap=\relax
-  \let\chapter=\relax
-  \let\contents=\relax
-  \let\section=\relax
-  \let\smallbook=\relax
-  \let\subsec=\relax
-  \let\subsection=\relax
-  \let\subsubsec=\relax
-  \let\subsubsection=\relax
-  \let\titlepage=\relax
-  \let\top=\relax
-  \let\unnumbered=\relax
-  \let\unnumberedsec=\relax
-  \let\unnumberedsection=\relax
-  \let\unnumberedsubsec=\relax
-  \let\unnumberedsubsection=\relax
-  \let\unnumberedsubsubsec=\relax
-  \let\unnumberedsubsubsection=\relax
-}
-
-% Ignore @ignore, @ifhtml, @ifinfo, and the like.
-%
-\def\direntry{\doignore{direntry}}
-\def\documentdescriptionword{documentdescription}
-\def\documentdescription{\doignore{documentdescription}}
-\def\docbook{\doignore{docbook}}
-\def\html{\doignore{html}}
-\def\ifdocbook{\doignore{ifdocbook}}
-\def\ifhtml{\doignore{ifhtml}}
-\def\ifinfo{\doignore{ifinfo}}
-\def\ifnottex{\doignore{ifnottex}}
-\def\ifplaintext{\doignore{ifplaintext}}
-\def\ifxml{\doignore{ifxml}}
-\def\ignore{\doignore{ignore}}
-\def\menu{\doignore{menu}}
-\def\xml{\doignore{xml}}
-
-% @dircategory CATEGORY  -- specify a category of the dir file
-% which this file should belong to.  Ignore this in TeX.
-\let\dircategory = \comment
-
-% Ignore text until a line `@end #1', keeping track of nested conditionals.
-%
-% A count to remember the depth of nesting.
-\newcount\doignorecount
-
-\def\doignore#1{\begingroup
-  % Scan in ``verbatim'' mode:
-  \catcode`\@ = \other
-  \catcode`\{ = \other
-  \catcode`\} = \other
-  %
-  % Make sure that spaces turn into tokens that match what \doignoretext wants.
-  \catcode\spaceChar = 10
-  %
-  % Count number of #1's that we've seen.
-  \doignorecount = 0
-  %
-  % Swallow text until we reach the matching `@end #1'.
-  \dodoignore {#1}%
-}
-
-{ \catcode`_=11 % We want to use \_STOP_ which cannot appear in texinfo source.
-  \obeylines %
-  %
-  \gdef\dodoignore#1{%
-    % #1 contains the string `ifinfo'.
-    %
-    % Define a command to find the next `@end #1', which must be on a line
-    % by itself.
-    \long\def\doignoretext##1^^M@end #1{\doignoretextyyy##1^^M@#1\_STOP_}%
-    % And this command to find another #1 command, at the beginning of a
-    % line.  (Otherwise, we would consider a line `@c @ifset', for
-    % example, to count as an @ifset for nesting.)
-    \long\def\doignoretextyyy##1^^M@#1##2\_STOP_{\doignoreyyy{##2}\_STOP_}%
-    %
-    % And now expand that command.
-    \obeylines %
-    \doignoretext ^^M%
-  }%
-}
-
-\def\doignoreyyy#1{%
-  \def\temp{#1}%
-  \ifx\temp\empty			% Nothing found.
-    \let\next\doignoretextzzz
-  \else					% Found a nested condition, ...
-    \advance\doignorecount by 1
-    \let\next\doignoretextyyy		% ..., look for another.
-    % If we're here, #1 ends with ^^M\ifinfo (for example).
-  \fi
-  \next #1% the token \_STOP_ is present just after this macro.
-}
-
-% We have to swallow the remaining "\_STOP_".
-% 
-\def\doignoretextzzz#1{%
-  \ifnum\doignorecount = 0	% We have just found the outermost @end.
-    \let\next\enddoignore
-  \else				% Still inside a nested condition.
-    \advance\doignorecount by -1
-    \let\next\doignoretext      % Look for the next @end.
-  \fi
-  \next
-}
-
-% Finish off ignored text.
-\def\enddoignore{\endgroup\ignorespaces}
-
-
-% @set VAR sets the variable VAR to an empty value.
-% @set VAR REST-OF-LINE sets VAR to the value REST-OF-LINE.
-%
-% Since we want to separate VAR from REST-OF-LINE (which might be
-% empty), we can't just use \parsearg; we have to insert a space of our
-% own to delimit the rest of the line, and then take it out again if we
-% didn't need it.
-% We rely on the fact that \parsearg sets \catcode`\ =10.
-%
-\def\set{\parseargusing{\catcode`\-=\other \catcode`\_=\other}\setxxx}
-\def\setxxx#1{\setyyy#1 \endsetyyy}
-\def\setyyy#1 #2\endsetyyy{%
-  \def\temp{#2}%
-  \edef\next{\gdef\makecsname{SET#1}}%
-  \ifx\temp\empty
-    \next{}%
-  \else
-    \setzzz#2\endsetzzz
-  \fi
-}
-% Remove the trailing space \setxxx inserted.
-\def\setzzz#1 \endsetzzz{\next{#1}}
-
-% @clear VAR clears (i.e., unsets) the variable VAR.
-%
-\defparsearg\clear{\global\expandafter\let\csname SET#1\endcsname=\relax}
-
-% @value{foo} gets the text saved in variable foo.
-\def\value{\begingroup\makevalueexpandable\valuexxx}
-\def\valuexxx#1{\expandablevalue{#1}\endgroup}
-{
-  \catcode`\- = \active \catcode`\_ = \active
-  %
-  \gdef\makevalueexpandable{%
-    \let\value = \expandablevalue
-    % We don't want these characters active, ...
-    \catcode`\-=\other \catcode`\_=\other
-    % ..., but we might end up with active ones in the argument if
-    % we're called from @code, as @code{@value{foo-bar_}}, though.
-    % So \let them to their normal equivalents.
-    \let-\realdash \let_\normalunderscore
-  }
-}
-
-% We have this subroutine so that we can handle at least some @value's
-% properly in indexes (we call \makevalueexpandable in \indexdummies).
-% The command has to be fully expandable (if the variable is set), since
-% the result winds up in the index file.  This means that if the
-% variable's value contains other Texinfo commands, it's almost certain
-% it will fail (although perhaps we could fix that with sufficient work
-% to do a one-level expansion on the result, instead of complete).
-%
-\def\expandablevalue#1{%
-  \expandafter\ifx\csname SET#1\endcsname\relax
-    {[No value for ``#1'']}%
-    \message{Variable `#1', used in @value, is not set.}%
-  \else
-    \csname SET#1\endcsname
-  \fi
-}
-
-% @ifset VAR ... @end ifset reads the `...' iff VAR has been defined
-% with @set.
-%
-\defparsearg\ifset{%
-  \expandafter\ifx\csname SET#1\endcsname\relax
-    \let\next=\ifsetfail
-  \else
-    \let\next=\ifsetsucceed
-  \fi
-  \next
-}
-\def\ifsetsucceed{\conditionalsucceed{ifset}}
-\def\ifsetfail{\doignore{ifset}}
-\defineunmatchedend{ifset}
-
-% @ifclear VAR ... @end ifclear reads the `...' iff VAR has never been
-% defined with @set, or has been undefined with @clear.
-%
-\defparsearg\ifclear{%
-  \expandafter\ifx\csname SET#1\endcsname\relax
-    \let\next=\ifclearsucceed
-  \else
-    \let\next=\ifclearfail
-  \fi
-  \next
-}
-\def\ifclearsucceed{\conditionalsucceed{ifclear}}
-\def\ifclearfail{\doignore{ifclear}}
-\defineunmatchedend{ifclear}
-
-% @iftex, @ifnothtml, @ifnotinfo, @ifnotplaintext always succeed; we
-% read the text following, through the first @end iftex (etc.).  Make
-% `@end iftex' (etc.) valid only after an @iftex.
-%
-\def\iftex{\conditionalsucceed{iftex}}
-\def\ifnothtml{\conditionalsucceed{ifnothtml}}
-\def\ifnotinfo{\conditionalsucceed{ifnotinfo}}
-\def\ifnotplaintext{\conditionalsucceed{ifnotplaintext}}
-\defineunmatchedend{iftex}
-\defineunmatchedend{ifnothtml}
-\defineunmatchedend{ifnotinfo}
-\defineunmatchedend{ifnotplaintext}
-
-% True conditional.  Since \set globally defines its variables, we can
-% just start and end a group (to keep the @end definition undefined at
-% the outer level).
-%
-\def\conditionalsucceed#1{\begingroup
-  \expandafter\def\csname E#1\endcsname{\endgroup}%
-}
-
-% @defininfoenclose.
-\let\definfoenclose=\comment
-
-
-\message{indexing,}
-% Index generation facilities
-
-% Define \newwrite to be identical to plain tex's \newwrite
-% except not \outer, so it can be used within \newindex.
-{\catcode`\@=11
-\gdef\newwrite{\alloc@7\write\chardef\sixt@@n}}
-
-% \newindex {foo} defines an index named foo.
-% It automatically defines \fooindex such that
-% \fooindex ...rest of line... puts an entry in the index foo.
-% It also defines \fooindfile to be the number of the output channel for
-% the file that accumulates this index.  The file's extension is foo.
-% The name of an index should be no more than 2 characters long
-% for the sake of vms.
-%
-\def\newindex#1{%
-  \iflinks
-    \expandafter\newwrite \csname#1indfile\endcsname
-    \openout \csname#1indfile\endcsname \jobname.#1 % Open the file
-  \fi
-  \expandafter\xdef\csname#1index\endcsname{%     % Define @#1index
-    \noexpand\doindex{#1}}
-}
-
-% @defindex foo  ==  \newindex{foo}
-%
-\def\defindex{\parsearg\newindex}
-
-% Define @defcodeindex, like @defindex except put all entries in @code.
-%
-\def\defcodeindex{\parsearg\newcodeindex}
-%
-\def\newcodeindex#1{%
-  \iflinks
-    \expandafter\newwrite \csname#1indfile\endcsname
-    \openout \csname#1indfile\endcsname \jobname.#1
-  \fi
-  \expandafter\xdef\csname#1index\endcsname{%
-    \noexpand\docodeindex{#1}}%
-}
-
-
-% @synindex foo bar    makes index foo feed into index bar.
-% Do this instead of @defindex foo if you don't want it as a separate index.
-%
-% @syncodeindex foo bar   similar, but put all entries made for index foo
-% inside @code.
-%
-\def\synindex#1 #2 {\dosynindex\doindex{#1}{#2}}
-\def\syncodeindex#1 #2 {\dosynindex\docodeindex{#1}{#2}}
-
-% #1 is \doindex or \docodeindex, #2 the index getting redefined (foo),
-% #3 the target index (bar).
-\def\dosynindex#1#2#3{%
-  % Only do \closeout if we haven't already done it, else we'll end up
-  % closing the target index.
-  \expandafter \ifx\csname donesynindex#2\endcsname \undefined
-    % The \closeout helps reduce unnecessary open files; the limit on the
-    % Acorn RISC OS is a mere 16 files.
-    \expandafter\closeout\csname#2indfile\endcsname
-    \expandafter\let\csname\donesynindex#2\endcsname = 1
-  \fi
-  % redefine \fooindfile:
-  \expandafter\let\expandafter\temp\expandafter=\csname#3indfile\endcsname
-  \expandafter\let\csname#2indfile\endcsname=\temp
-  % redefine \fooindex:
-  \expandafter\xdef\csname#2index\endcsname{\noexpand#1{#3}}%
-}
-
-% Define \doindex, the driver for all \fooindex macros.
-% Argument #1 is generated by the calling \fooindex macro,
-%  and it is "foo", the name of the index.
-
-% \doindex just uses \parsearg; it calls \doind for the actual work.
-% This is because \doind is more useful to call from other macros.
-
-% There is also \dosubind {index}{topic}{subtopic}
-% which makes an entry in a two-level index such as the operation index.
-
-\def\doindex#1{\edef\indexname{#1}\parsearg\singleindexer}
-\def\singleindexer #1{\doind{\indexname}{#1}}
-
-% like the previous two, but they put @code around the argument.
-\def\docodeindex#1{\edef\indexname{#1}\parsearg\singlecodeindexer}
-\def\singlecodeindexer #1{\doind{\indexname}{\code{#1}}}
-
-% Take care of Texinfo commands that can appear in an index entry.
-% Since there are some commands we want to expand, and others we don't,
-% we have to laboriously prevent expansion for those that we don't.
-%
-\def\indexdummies{%
-  \def\@{@}% change to @@ when we switch to @ as escape char in index files.
-  \def\ {\realbackslash\space }%
-  % Need these in case \tex is in effect and \{ is a \delimiter again.
-  % But can't use \lbracecmd and \rbracecmd because texindex assumes
-  % braces and backslashes are used only as delimiters.
-  \let\{ = \mylbrace
-  \let\} = \myrbrace
-  %
-  % \definedummyword defines \#1 as \realbackslash #1\space, thus
-  % effectively preventing its expansion.  This is used only for control
-  % words, not control letters, because the \space would be incorrect
-  % for control characters, but is needed to separate the control word
-  % from whatever follows.
-  %
-  % For control letters, we have \definedummyletter, which omits the
-  % space.
-  %
-  % These can be used both for control words that take an argument and
-  % those that do not.  If it is followed by {arg} in the input, then
-  % that will dutifully get written to the index (or wherever).
-  %
-  \def\definedummyword##1{%
-    \expandafter\def\csname ##1\endcsname{\realbackslash ##1\space}%
-  }%
-  \def\definedummyletter##1{%
-    \expandafter\def\csname ##1\endcsname{\realbackslash ##1}%
-  }%
-  %
-  % Do the redefinitions.
-  \commondummies
-}
-
-% For the aux file, @ is the escape character.  So we want to redefine
-% everything using @ instead of \realbackslash.  When everything uses
-% @, this will be simpler.
-%
-\def\atdummies{%
-  \def\@{@@}%
-  \def\ {@ }%
-  \let\{ = \lbraceatcmd
-  \let\} = \rbraceatcmd
-  %
-  % (See comments in \indexdummies.)
-  \def\definedummyword##1{%
-    \expandafter\def\csname ##1\endcsname{@##1\space}%
-  }%
-  \def\definedummyletter##1{%
-    \expandafter\def\csname ##1\endcsname{@##1}%
-  }%
-  %
-  % Do the redefinitions.
-  \commondummies
-}
-
-% Called from \indexdummies and \atdummies.  \definedummyword and
-% \definedummyletter must be defined first.
-%
-\def\commondummies{%
-  %
-  \normalturnoffactive
-  %
-  % Control letters and accents.
-  \definedummyletter{_}%
-  \definedummyletter{,}%
-  \definedummyletter{"}%
-  \definedummyletter{`}%
-  \definedummyletter{'}%
-  \definedummyletter{^}%
-  \definedummyletter{~}%
-  \definedummyletter{=}%
-  \definedummyword{u}%
-  \definedummyword{v}%
-  \definedummyword{H}%
-  \definedummyword{dotaccent}%
-  \definedummyword{ringaccent}%
-  \definedummyword{tieaccent}%
-  \definedummyword{ubaraccent}%
-  \definedummyword{udotaccent}%
-  \definedummyword{dotless}%
-  %
-  % Other non-English letters.
-  \definedummyword{AA}%
-  \definedummyword{AE}%
-  \definedummyword{L}%
-  \definedummyword{OE}%
-  \definedummyword{O}%
-  \definedummyword{aa}%
-  \definedummyword{ae}%
-  \definedummyword{l}%
-  \definedummyword{oe}%
-  \definedummyword{o}%
-  \definedummyword{ss}%
-  %
-  % Although these internal commands shouldn't show up, sometimes they do.
-  \definedummyword{bf}%
-  \definedummyword{gtr}%
-  \definedummyword{hat}%
-  \definedummyword{less}%
-  \definedummyword{sf}%
-  \definedummyword{sl}%
-  \definedummyword{tclose}%
-  \definedummyword{tt}%
-  %
-  % Texinfo font commands.
-  \definedummyword{b}%
-  \definedummyword{i}%
-  \definedummyword{r}%
-  \definedummyword{sc}%
-  \definedummyword{t}%
-  %
-  \definedummyword{TeX}%
-  \definedummyword{acronym}%
-  \definedummyword{cite}%
-  \definedummyword{code}%
-  \definedummyword{command}%
-  \definedummyword{dfn}%
-  \definedummyword{dots}%
-  \definedummyword{emph}%
-  \definedummyword{env}%
-  \definedummyword{file}%
-  \definedummyword{kbd}%
-  \definedummyword{key}%
-  \definedummyword{math}%
-  \definedummyword{option}%
-  \definedummyword{samp}%
-  \definedummyword{strong}%
-  \definedummyword{uref}%
-  \definedummyword{url}%
-  \definedummyword{var}%
-  \definedummyword{verb}%
-  \definedummyword{w}%
-  %
-  % Assorted special characters.
-  \definedummyword{bullet}%
-  \definedummyword{copyright}%
-  \definedummyword{registeredsymbol}%
-  \definedummyword{dots}%
-  \definedummyword{enddots}%
-  \definedummyword{equiv}%
-  \definedummyword{error}%
-  \definedummyword{expansion}%
-  \definedummyword{minus}%
-  \definedummyword{pounds}%
-  \definedummyword{point}%
-  \definedummyword{print}%
-  \definedummyword{result}%
-  %
-  % Handle some cases of @value -- where it does not contain any
-  % (non-fully-expandable) commands.
-  \makevalueexpandable
-  %
-  % Normal spaces, not active ones.
-  \unsepspaces
-  %
-  % No macro expansion.
-  \turnoffmacros
-}
-
-
-% \indexnofonts is used when outputting the strings to sort the index
-% by, and when constructing control sequence names.  It eliminates all
-% control sequences and just writes whatever the best ASCII sort string
-% would be for a given command (usually its argument).
-%
-\def\indexdummytex{TeX}
-\def\indexdummydots{...}
-%
-\def\indexnofonts{%
-  \def\ { }%
-  \def\@{@}%
-  % how to handle braces?
-  \def\_{\normalunderscore}%
-  %
-  \let\,=\asis
-  \let\"=\asis
-  \let\`=\asis
-  \let\'=\asis
-  \let\^=\asis
-  \let\~=\asis
-  \let\==\asis
-  \let\u=\asis
-  \let\v=\asis
-  \let\H=\asis
-  \let\dotaccent=\asis
-  \let\ringaccent=\asis
-  \let\tieaccent=\asis
-  \let\ubaraccent=\asis
-  \let\udotaccent=\asis
-  \let\dotless=\asis
-  %
-  % Other non-English letters.
-  \def\AA{AA}%
-  \def\AE{AE}%
-  \def\L{L}%
-  \def\OE{OE}%
-  \def\O{O}%
-  \def\aa{aa}%
-  \def\ae{ae}%
-  \def\l{l}%
-  \def\oe{oe}%
-  \def\o{o}%
-  \def\ss{ss}%
-  \def\exclamdown{!}%
-  \def\questiondown{?}%
-  %
-  % Don't no-op \tt, since it isn't a user-level command
-  % and is used in the definitions of the active chars like <, >, |, etc.
-  % Likewise with the other plain tex font commands.
-  %\let\tt=\asis
-  %
-  % Texinfo font commands.
-  \let\b=\asis
-  \let\i=\asis
-  \let\r=\asis
-  \let\sc=\asis
-  \let\t=\asis
-  %
-  \let\TeX=\indexdummytex
-  \let\acronym=\asis
-  \let\cite=\asis
-  \let\code=\asis
-  \let\command=\asis
-  \let\dfn=\asis
-  \let\dots=\indexdummydots
-  \let\emph=\asis
-  \let\env=\asis
-  \let\file=\asis
-  \let\kbd=\asis
-  \let\key=\asis
-  \let\math=\asis
-  \let\option=\asis
-  \let\samp=\asis
-  \let\strong=\asis
-  \let\uref=\asis
-  \let\url=\asis
-  \let\var=\asis
-  \let\verb=\asis
-  \let\w=\asis
-}
-
-\let\indexbackslash=0  %overridden during \printindex.
-\let\SETmarginindex=\relax % put index entries in margin (undocumented)?
-
-% Most index entries go through here, but \dosubind is the general case.
-% #1 is the index name, #2 is the entry text.
-\def\doind#1#2{\dosubind{#1}{#2}{}}
-
-% Workhorse for all \fooindexes.
-% #1 is name of index, #2 is stuff to put there, #3 is subentry --
-% empty if called from \doind, as we usually are (the main exception
-% is with most defuns, which call us directly).
-%
-\def\dosubind#1#2#3{%
-  \iflinks
-  {%
-    % Store the main index entry text (including the third arg).
-    \toks0 = {#2}%
-    % If third arg is present, precede it with a space.
-    \def\thirdarg{#3}%
-    \ifx\thirdarg\empty \else
-      \toks0 = \expandafter{\the\toks0 \space #3}%
-    \fi
-    %
-    \edef\writeto{\csname#1indfile\endcsname}%
-    %
-    \ifvmode
-      \dosubindsanitize
-    \else
-      \dosubindwrite
-    \fi
-  }%
-  \fi
-}
-
-% Write the entry in \toks0 to the index file:
-%
-\def\dosubindwrite{%
-  % Put the index entry in the margin if desired.
-  \ifx\SETmarginindex\relax\else
-    \insert\margin{\hbox{\vrule height8pt depth3pt width0pt \the\toks0}}%
-  \fi
-  %
-  % Remember, we are within a group.
-  \indexdummies % Must do this here, since \bf, etc expand at this stage
-  \escapechar=`\\
-  \def\rawbackslashxx{\indexbackslash}% \indexbackslash isn't defined now
-      % so it will be output as is; and it will print as backslash.
-  %
-  % Process the index entry with all font commands turned off, to
-  % get the string to sort by.
-  {\indexnofonts
-   \edef\temp{\the\toks0}% need full expansion
-   \xdef\indexsorttmp{\temp}%
-  }%
-  %
-  % Set up the complete index entry, with both the sort key and
-  % the original text, including any font commands.  We write
-  % three arguments to \entry to the .?? file (four in the
-  % subentry case), texindex reduces to two when writing the .??s
-  % sorted result.
-  \edef\temp{%
-    \write\writeto{%
-      \string\entry{\indexsorttmp}{\noexpand\folio}{\the\toks0}}%
-  }%
-  \temp
-}
-
-% Take care of unwanted page breaks:
-%
-% If a skip is the last thing on the list now, preserve it
-% by backing up by \lastskip, doing the \write, then inserting
-% the skip again.  Otherwise, the whatsit generated by the
-% \write will make \lastskip zero.  The result is that sequences
-% like this:
-% @end defun
-% @tindex whatever
-% @defun ...
-% will have extra space inserted, because the \medbreak in the
-% start of the @defun won't see the skip inserted by the @end of
-% the previous defun.
-%
-% But don't do any of this if we're not in vertical mode.  We
-% don't want to do a \vskip and prematurely end a paragraph.
-%
-% Avoid page breaks due to these extra skips, too.
-%
-% But wait, there is a catch there:
-% We'll have to check whether \lastskip is zero skip.  \ifdim is not
-% sufficient for this purpose, as it ignores stretch and shrink parts
-% of the skip.  The only way seems to be to check the textual
-% representation of the skip.
-%
-% The following is almost like \def\zeroskipmacro{0.0pt} except that
-% the ``p'' and ``t'' characters have catcode \other, not 11 (letter).
-%
-\edef\zeroskipmacro{\expandafter\the\csname z@skip\endcsname}
-%
-% ..., ready, GO:
-%
-\def\dosubindsanitize{%
-  % \lastskip and \lastpenalty cannot both be nonzero simultaneously.
-  \skip0 = \lastskip
-  \edef\lastskipmacro{\the\lastskip}%
-  \count255 = \lastpenalty
-  %
-  % If \lastskip is nonzero, that means the last item was a
-  % skip.  And since a skip is discardable, that means this
-  % -\skip0 glue we're inserting is preceded by a
-  % non-discardable item, therefore it is not a potential
-  % breakpoint, therefore no \nobreak needed.
-  \ifx\lastskipmacro\zeroskipmacro
-  \else
-    \vskip-\skip0
-  \fi
-  %
-  \dosubindwrite
-  %
-  \ifx\lastskipmacro\zeroskipmacro
-    % if \lastskip was zero, perhaps the last item was a
-    % penalty, and perhaps it was >=10000, e.g., a \nobreak.
-    % In that case, we want to re-insert the penalty; since we
-    % just inserted a non-discardable item, any following glue
-    % (such as a \parskip) would be a breakpoint.  For example:
-    %   @deffn deffn-whatever
-    %   @vindex index-whatever
-    %   Description.
-    % would allow a break between the index-whatever whatsit
-    % and the "Description." paragraph.
-    \ifnum\count255>9999 \nobreak \fi
-  \else
-    % On the other hand, if we had a nonzero \lastskip,
-    % this make-up glue would be preceded by a non-discardable item
-    % (the whatsit from the \write), so we must insert a \nobreak.
-    \nobreak\vskip\skip0
-  \fi
-}
-
-% The index entry written in the file actually looks like
-%  \entry {sortstring}{page}{topic}
-% or
-%  \entry {sortstring}{page}{topic}{subtopic}
-% The texindex program reads in these files and writes files
-% containing these kinds of lines:
-%  \initial {c}
-%     before the first topic whose initial is c
-%  \entry {topic}{pagelist}
-%     for a topic that is used without subtopics
-%  \primary {topic}
-%     for the beginning of a topic that is used with subtopics
-%  \secondary {subtopic}{pagelist}
-%     for each subtopic.
-
-% Define the user-accessible indexing commands
-% @findex, @vindex, @kindex, @cindex.
-
-\def\findex {\fnindex}
-\def\kindex {\kyindex}
-\def\cindex {\cpindex}
-\def\vindex {\vrindex}
-\def\tindex {\tpindex}
-\def\pindex {\pgindex}
-
-\def\cindexsub {\begingroup\obeylines\cindexsub}
-{\obeylines %
-\gdef\cindexsub "#1" #2^^M{\endgroup %
-\dosubind{cp}{#2}{#1}}}
-
-% Define the macros used in formatting output of the sorted index material.
-
-% @printindex causes a particular index (the ??s file) to get printed.
-% It does not print any chapter heading (usually an @unnumbered).
-%
-\defparsearg\printindex{\begingroup
-  \dobreak \chapheadingskip{10000}%
-  %
-  \smallfonts \rm
-  \tolerance = 9500
-  \everypar = {}% don't want the \kern\-parindent from indentation suppression.
-  %
-  % See if the index file exists and is nonempty.
-  % Change catcode of @ here so that if the index file contains
-  % \initial {@}
-  % as its first line, TeX doesn't complain about mismatched braces
-  % (because it thinks @} is a control sequence).
-  \catcode`\@ = 11
-  \openin 1 \jobname.#1s
-  \ifeof 1
-    % \enddoublecolumns gets confused if there is no text in the index,
-    % and it loses the chapter title and the aux file entries for the
-    % index.  The easiest way to prevent this problem is to make sure
-    % there is some text.
-    \putwordIndexNonexistent
-  \else
-    %
-    % If the index file exists but is empty, then \openin leaves \ifeof
-    % false.  We have to make TeX try to read something from the file, so
-    % it can discover if there is anything in it.
-    \read 1 to \temp
-    \ifeof 1
-      \putwordIndexIsEmpty
-    \else
-      % Index files are almost Texinfo source, but we use \ as the escape
-      % character.  It would be better to use @, but that's too big a change
-      % to make right now.
-      \def\indexbackslash{\rawbackslashxx}%
-      \catcode`\\ = 0
-      \escapechar = `\\
-      \begindoublecolumns
-      \input \jobname.#1s
-      \enddoublecolumns
-    \fi
-  \fi
-  \closein 1
-\endgroup}
-
-% These macros are used by the sorted index file itself.
-% Change them to control the appearance of the index.
-
-\def\initial#1{{%
-  % Some minor font changes for the special characters.
-  \let\tentt=\sectt \let\tt=\sectt \let\sf=\sectt
-  %
-  % Remove any glue we may have, we'll be inserting our own.
-  \removelastskip
-  %
-  % We like breaks before the index initials, so insert a bonus.
-  \penalty -300
-  %
-  % Typeset the initial.  Making this add up to a whole number of
-  % baselineskips increases the chance of the dots lining up from column
-  % to column.  It still won't often be perfect, because of the stretch
-  % we need before each entry, but it's better.
-  %
-  % No shrink because it confuses \balancecolumns.
-  \vskip 1.67\baselineskip plus .5\baselineskip
-  \leftline{\secbf #1}%
-  \vskip .33\baselineskip plus .1\baselineskip
-  %
-  % Do our best not to break after the initial.
-  \nobreak
-}}
-
-% \entry typesets a paragraph consisting of the text (#1), dot leaders, and
-% then page number (#2) flushed to the right margin.  It is used for index
-% and table of contents entries.  The paragraph is indented by \leftskip.
-%
-% A straigtforward implementation would start like this:
-%	\def\entry#1#2{...
-% But this frozes the catcodes in the argument, and can cause problems to
-% @code, which set's active ``-''.  This problem was fixed by a kludge---
-% ``-'' was active throughout whole index, but this isn't what we really
-% want.
-% The right solution is to prevent \entry from swallowing the whole text.
-%                                 --kasal, 21nov03
-\def\entry{%
-  \begingroup
-    %
-    % Start a new paragraph if necessary, so our assignments below can't
-    % affect previous text.
-    \par
-    %
-    % Do not fill out the last line with white space.
-    \parfillskip = 0in
-    %
-    % No extra space above this paragraph.
-    \parskip = 0in
-    %
-    % Do not prefer a separate line ending with a hyphen to fewer lines.
-    \finalhyphendemerits = 0
-    %
-    % \hangindent is only relevant when the entry text and page number
-    % don't both fit on one line.  In that case, bob suggests starting the
-    % dots pretty far over on the line.  Unfortunately, a large
-    % indentation looks wrong when the entry text itself is broken across
-    % lines.  So we use a small indentation and put up with long leaders.
-    %
-    % \hangafter is reset to 1 (which is the value we want) at the start
-    % of each paragraph, so we need not do anything with that.
-    \hangindent = 2em
-    %
-    % When the entry text needs to be broken, just fill out the first line
-    % with blank space.
-    \rightskip = 0pt plus1fil
-    %
-    % A bit of stretch before each entry for the benefit of balancing
-    % columns.
-    \vskip 0pt plus1pt
-    %
-    % Swallow the left brace of the text (first parameter):
-    \afterassignment\doentry
-    \let\temp =
-}
-\def\doentry{%
-    \bgroup % Instead of the swallowed brace.
-      \noindent
-      \aftergroup\finishentry
-      % And now comes the text of the entry.
-}
-\def\finishentry#1{%
-    % #1 is the page number.
-    %
-    % The following is kludged to not output a line of dots in the index if
-    % there are no page numbers.  The next person who breaks this will be
-    % cursed by a Unix daemon.
-    \def\tempa{{\rm }}%
-    \def\tempb{#1}%
-    \edef\tempc{\tempa}%
-    \edef\tempd{\tempb}%
-    \ifx\tempc\tempd
-      \ %
-    \else
-      %
-      % If we must, put the page number on a line of its own, and fill out
-      % this line with blank space.  (The \hfil is overwhelmed with the
-      % fill leaders glue in \indexdotfill if the page number does fit.)
-      \hfil\penalty50
-      \null\nobreak\indexdotfill % Have leaders before the page number.
-      %
-      % The `\ ' here is removed by the implicit \unskip that TeX does as
-      % part of (the primitive) \par.  Without it, a spurious underfull
-      % \hbox ensues.
-      \ifpdf
-	\pdfgettoks#1.\ \the\toksA
-      \else
-	\ #1%
-      \fi
-    \fi
-    \par
-  \endgroup
-}
-
-% Like \dotfill except takes at least 1 em.
-\def\indexdotfill{\cleaders
-  \hbox{$\mathsurround=0pt \mkern1.5mu ${\it .}$ \mkern1.5mu$}\hskip 1em plus 1fill}
-
-\def\primary #1{\line{#1\hfil}}
-
-\newskip\secondaryindent \secondaryindent=0.5cm
-\def\secondary#1#2{{%
-  \parfillskip=0in
-  \parskip=0in
-  \hangindent=1in
-  \hangafter=1
-  \noindent\hskip\secondaryindent\hbox{#1}\indexdotfill
-  \ifpdf
-    \pdfgettoks#2.\ \the\toksA % The page number ends the paragraph.
-  \else
-    #2
-  \fi
-  \par
-}}
-
-% Define two-column mode, which we use to typeset indexes.
-% Adapted from the TeXbook, page 416, which is to say,
-% the manmac.tex format used to print the TeXbook itself.
-\catcode`\@=11
-
-\newbox\partialpage
-\newdimen\doublecolumnhsize
-
-\def\begindoublecolumns{\begingroup % ended by \enddoublecolumns
-  % Grab any single-column material above us.
-  \output = {%
-    %
-    % Here is a possibility not foreseen in manmac: if we accumulate a
-    % whole lot of material, we might end up calling this \output
-    % routine twice in a row (see the doublecol-lose test, which is
-    % essentially a couple of indexes with @setchapternewpage off).  In
-    % that case we just ship out what is in \partialpage with the normal
-    % output routine.  Generally, \partialpage will be empty when this
-    % runs and this will be a no-op.  See the indexspread.tex test case.
-    \ifvoid\partialpage \else
-      \onepageout{\pagecontents\partialpage}%
-    \fi
-    %
-    \global\setbox\partialpage = \vbox{%
-      % Unvbox the main output page.
-      \unvbox\PAGE
-      \kern-\topskip \kern\baselineskip
-    }%
-  }%
-  \eject % run that output routine to set \partialpage
-  %
-  % Use the double-column output routine for subsequent pages.
-  \output = {\doublecolumnout}%
-  %
-  % Change the page size parameters.  We could do this once outside this
-  % routine, in each of @smallbook, @afourpaper, and the default 8.5x11
-  % format, but then we repeat the same computation.  Repeating a couple
-  % of assignments once per index is clearly meaningless for the
-  % execution time, so we may as well do it in one place.
-  %
-  % First we halve the line length, less a little for the gutter between
-  % the columns.  We compute the gutter based on the line length, so it
-  % changes automatically with the paper format.  The magic constant
-  % below is chosen so that the gutter has the same value (well, +-<1pt)
-  % as it did when we hard-coded it.
-  %
-  % We put the result in a separate register, \doublecolumhsize, so we
-  % can restore it in \pagesofar, after \hsize itself has (potentially)
-  % been clobbered.
-  %
-  \doublecolumnhsize = \hsize
-    \advance\doublecolumnhsize by -.04154\hsize
-    \divide\doublecolumnhsize by 2
-  \hsize = \doublecolumnhsize
-  %
-  % Double the \vsize as well.  (We don't need a separate register here,
-  % since nobody clobbers \vsize.)
-  \vsize = 2\vsize
-}
-
-% The double-column output routine for all double-column pages except
-% the last.
-%
-\def\doublecolumnout{%
-  \splittopskip=\topskip \splitmaxdepth=\maxdepth
-  % Get the available space for the double columns -- the normal
-  % (undoubled) page height minus any material left over from the
-  % previous page.
-  \dimen@ = \vsize
-  \divide\dimen@ by 2
-  \advance\dimen@ by -\ht\partialpage
-  %
-  % box0 will be the left-hand column, box2 the right.
-  \setbox0=\vsplit255 to\dimen@ \setbox2=\vsplit255 to\dimen@
-  \onepageout\pagesofar
-  \unvbox255
-  \penalty\outputpenalty
-}
-%
-% Re-output the contents of the output page -- any previous material,
-% followed by the two boxes we just split, in box0 and box2.
-\def\pagesofar{%
-  \unvbox\partialpage
-  %
-  \hsize = \doublecolumnhsize
-  \wd0=\hsize \wd2=\hsize
-  \hbox to\pagewidth{\box0\hfil\box2}%
-}
-%
-% All done with double columns.
-\def\enddoublecolumns{%
-  \output = {%
-    % Split the last of the double-column material.  Leave it on the
-    % current page, no automatic page break.
-    \balancecolumns
-    %
-    % If we end up splitting too much material for the current page,
-    % though, there will be another page break right after this \output
-    % invocation ends.  Having called \balancecolumns once, we do not
-    % want to call it again.  Therefore, reset \output to its normal
-    % definition right away.  (We hope \balancecolumns will never be
-    % called on to balance too much material, but if it is, this makes
-    % the output somewhat more palatable.)
-    \global\output = {\onepageout{\pagecontents\PAGE}}%
-  }%
-  \eject
-  \endgroup % started in \begindoublecolumns
-  %
-  % \pagegoal was set to the doubled \vsize above, since we restarted
-  % the current page.  We're now back to normal single-column
-  % typesetting, so reset \pagegoal to the normal \vsize (after the
-  % \endgroup where \vsize got restored).
-  \pagegoal = \vsize
-}
-%
-% Called at the end of the double column material.
-\def\balancecolumns{%
-  \setbox0 = \vbox{\unvbox255}% like \box255 but more efficient, see p.120.
-  \dimen@ = \ht0
-  \advance\dimen@ by \topskip
-  \advance\dimen@ by-\baselineskip
-  \divide\dimen@ by 2 % target to split to
-  %debug\message{final 2-column material height=\the\ht0, target=\the\dimen@.}%
-  \splittopskip = \topskip
-  % Loop until we get a decent breakpoint.
-  {%
-    \vbadness = 10000
-    \loop
-      \global\setbox3 = \copy0
-      \global\setbox1 = \vsplit3 to \dimen@
-    \ifdim\ht3>\dimen@
-      \global\advance\dimen@ by 1pt
-    \repeat
-  }%
-  %debug\message{split to \the\dimen@, column heights: \the\ht1, \the\ht3.}%
-  \setbox0=\vbox to\dimen@{\unvbox1}%
-  \setbox2=\vbox to\dimen@{\unvbox3}%
-  %
-  \pagesofar
-}
-\catcode`\@ = \other
-
-
-\message{sectioning,}
-% Chapters, sections, etc.
-
-% \unnumberedno is an oxymoron, of course.  But we count the unnumbered
-% sections so that we can refer to them unambiguously in the pdf
-% outlines by their "section number".  We avoid collisions with chapter
-% numbers by starting them at 10000.  (If a document ever has 10000
-% chapters, we're in trouble anyway, I'm sure.)
-\newcount\unnumberedno \unnumberedno = 10000
-\newcount\chapno
-\newcount\secno        \secno=0
-\newcount\subsecno     \subsecno=0
-\newcount\subsubsecno  \subsubsecno=0
-
-% This counter is funny since it counts through charcodes of letters A, B, ...
-\newcount\appendixno  \appendixno = `\@
-%
-% \def\appendixletter{\char\the\appendixno}
-% We do the following ugly conditional instead of the above simple
-% construct for the sake of pdftex, which needs the actual
-% letter in the expansion, not just typeset.
-% 
-\def\appendixletter{%
-  \ifnum\appendixno=`A A%
-  \else\ifnum\appendixno=`B B%
-  \else\ifnum\appendixno=`C C%
-  \else\ifnum\appendixno=`D D%
-  \else\ifnum\appendixno=`E E%
-  \else\ifnum\appendixno=`F F%
-  \else\ifnum\appendixno=`G G%
-  \else\ifnum\appendixno=`H H%
-  \else\ifnum\appendixno=`I I%
-  \else\ifnum\appendixno=`J J%
-  \else\ifnum\appendixno=`K K%
-  \else\ifnum\appendixno=`L L%
-  \else\ifnum\appendixno=`M M%
-  \else\ifnum\appendixno=`N N%
-  \else\ifnum\appendixno=`O O%
-  \else\ifnum\appendixno=`P P%
-  \else\ifnum\appendixno=`Q Q%
-  \else\ifnum\appendixno=`R R%
-  \else\ifnum\appendixno=`S S%
-  \else\ifnum\appendixno=`T T%
-  \else\ifnum\appendixno=`U U%
-  \else\ifnum\appendixno=`V V%
-  \else\ifnum\appendixno=`W W%
-  \else\ifnum\appendixno=`X X%
-  \else\ifnum\appendixno=`Y Y%
-  \else\ifnum\appendixno=`Z Z%
-  % The \the is necessary, despite appearances, because \appendixletter is
-  % expanded while writing the .toc file.  \char\appendixno is not
-  % expandable, thus it is written literally, thus all appendixes come out
-  % with the same letter (or @) in the toc without it.
-  \else\char\the\appendixno
-  \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi
-  \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi}
-
-% Each @chapter defines this as the name of the chapter.
-% page headings and footings can use it.  @section does likewise.
-% However, they are not reliable, because we don't use marks.
-\def\thischapter{}
-\def\thissection{}
-
-\newcount\absseclevel % used to calculate proper heading level
-\newcount\secbase\secbase=0 % @raisesections/@lowersections modify this count
-
-% @raisesections: treat @section as chapter, @subsection as section, etc.
-\def\raisesections{\global\advance\secbase by -1}
-\let\up=\raisesections % original BFox name
-
-% @lowersections: treat @chapter as section, @section as subsection, etc.
-\def\lowersections{\global\advance\secbase by 1}
-\let\down=\lowersections % original BFox name
-
-% Choose a numbered-heading macro
-% #1 is heading level if unmodified by @raisesections or @lowersections
-% #2 is text for heading
-\def\numhead#1#2{\absseclevel=\secbase\advance\absseclevel by #1
-\ifcase\absseclevel
-      \chapterzzz{#2}%
-  \or \seczzz{#2}%
-  \or \numberedsubseczzz{#2}%
-  \or \numberedsubsubseczzz{#2}%
-  \else
-    \ifnum \absseclevel<0 \chapterzzz{#2}%
-    \else \numberedsubsubseczzz{#2}%
-    \fi
-  \fi
-  \suppressfirstparagraphindent
-}
-
-% like \numhead, but chooses appendix heading levels
-\def\apphead#1#2{\absseclevel=\secbase\advance\absseclevel by #1
-\ifcase\absseclevel
-      \appendixzzz{#2}%
-  \or \appendixsectionzzz{#2}%
-  \or \appendixsubseczzz{#2}%
-  \or \appendixsubsubseczzz{#2}%
-  \else
-    \ifnum \absseclevel<0 \appendixzzz{#2}%
-    \else \appendixsubsubseczzz{#2}%
-    \fi
-  \fi
-  \suppressfirstparagraphindent
-}
-
-% like \numhead, but chooses numberless heading levels
-\def\unnmhead#1#2{\absseclevel=\secbase\advance\absseclevel by #1
-  \ifcase\absseclevel
-      \unnumberedzzz{#2}%
-  \or \unnumberedseczzz{#2}%
-  \or \unnumberedsubseczzz{#2}%
-  \or \unnumberedsubsubseczzz{#2}%
-  \else
-    \ifnum \absseclevel<0 \unnumberedzzz{#2}%
-    \else \unnumberedsubsubseczzz{#2}%
-    \fi
-  \fi
-  \suppressfirstparagraphindent
-}
-
-% @chapter, @appendix, @unnumbered.  Increment top-level counter, reset
-% all lower-level sectioning counters to zero.
-% 
-% Also set \chaplevelprefix, which we prepend to @float sequence numbers
-% (e.g., figures), q.v.  By default (before any chapter), that is empty.
-\let\chaplevelprefix = \empty
-% 
-\outer\defparsearg\chapter{\numhead0{#1}} % normally numhead0 calls chapterzzz
-\def\chapterzzz#1{%
-  % section resetting is \global in case the chapter is in a group, such
-  % as an @include file.
-  \global\secno=0 \global\subsecno=0 \global\subsubsecno=0
-    \global\advance\chapno by 1
-  %
-  % Used for \float.
-  \gdef\chaplevelprefix{\the\chapno.}%
-  \resetallfloatnos
-  %
-  \message{\putwordChapter\space \the\chapno}%
-  %
-  % Write the actual heading.
-  \chapmacro{#1}{Ynumbered}{\the\chapno}%
-  %
-  % So @section and the like are numbered underneath this chapter.
-  \global\let\section = \numberedsec
-  \global\let\subsection = \numberedsubsec
-  \global\let\subsubsection = \numberedsubsubsec
-}
-
-\outer\defparsearg\appendix{\apphead0{#1}} % normally apphead0 calls appendixzzz
-\def\appendixzzz#1{%
-  \global\secno=0 \global\subsecno=0 \global\subsubsecno=0
-    \global\advance\appendixno by 1
-  \gdef\chaplevelprefix{\appendixletter.}%
-  \resetallfloatnos
-  %
-  \def\appendixnum{\putwordAppendix\space \appendixletter}%
-  \message{\appendixnum}%
-  %
-  \chapmacro{#1}{Yappendix}{\appendixletter}%
-  %
-  \global\let\section = \appendixsec
-  \global\let\subsection = \appendixsubsec
-  \global\let\subsubsection = \appendixsubsubsec
-}
-
-% @centerchap is like @unnumbered, but the heading is centered.
-\outer\defparsearg\centerchap{{\unnumberedyyy{#1}}}
-
-\outer\defparsearg\unnumbered{\unnmhead0{#1}} % normally unnmhead0 calls unnumberedzzz
-\def\unnumberedzzz#1{%
-  \global\secno=0 \global\subsecno=0 \global\subsubsecno=0
-    \global\advance\unnumberedno by 1
-  %
-  % Since an unnumbered as no number, no prefix for figures.
-  \global\let\chaplevelprefix = \empty
-  \resetallfloatnos
-  %
-  % This used to be simply \message{#1}, but TeX fully expands the
-  % argument to \message.  Therefore, if #1 contained @-commands, TeX
-  % expanded them.  For example, in `@unnumbered The @cite{Book}', TeX
-  % expanded @cite (which turns out to cause errors because \cite is meant
-  % to be executed, not expanded).
-  %
-  % Anyway, we don't want the fully-expanded definition of @cite to appear
-  % as a result of the \message, we just want `@cite' itself.  We use
-  % \the<toks register> to achieve this: TeX expands \the<toks> only once,
-  % simply yielding the contents of <toks register>.  (We also do this for
-  % the toc entries.)
-  \toks0 = {#1}%
-  \message{(\the\toks0)}%
-  %
-  \chapmacro{#1}{Ynothing}{\the\unnumberedno}%
-  %
-  \global\let\section = \unnumberedsec
-  \global\let\subsection = \unnumberedsubsec
-  \global\let\subsubsection = \unnumberedsubsubsec
-}
-
-% @top is like @unnumbered.
-\let\top\unnumbered
-
-% Sections.
-\outer\defparsearg\numberedsec{\numhead1{#1}} % normally calls seczzz
-\def\seczzz#1{%
-  \global\subsecno=0 \global\subsubsecno=0  \global\advance\secno by 1
-  \sectionheading{#1}{sec}{Ynumbered}{\the\chapno.\the\secno}%
-}
-
-\outer\defparsearg\appendixsection{\apphead1{#1}} % normally calls appendixsectionzzz
-\def\appendixsectionzzz#1{%
-  \global\subsecno=0 \global\subsubsecno=0  \global\advance\secno by 1
-  \sectionheading{#1}{sec}{Yappendix}{\appendixletter.\the\secno}%
-}
-\let\appendixsec\appendixsection
-
-\outer\defparsearg\unnumberedsec{\unnmhead1{#1}} % normally calls unnumberedseczzz
-\def\unnumberedseczzz#1{%
-  \global\subsecno=0 \global\subsubsecno=0  \global\advance\secno by 1
-  \sectionheading{#1}{sec}{Ynothing}{\the\unnumberedno.\the\secno}%
-}
-
-% Subsections.
-\outer\defparsearg\numberedsubsec{\numhead2{#1}} % normally calls numberedsubseczzz
-\def\numberedsubseczzz#1{%
-  \global\subsubsecno=0  \global\advance\subsecno by 1
-  \sectionheading{#1}{subsec}{Ynumbered}{\the\chapno.\the\secno.\the\subsecno}%
-}
-
-\outer\defparsearg\appendixsubsec{\apphead2{#1}} % normally calls appendixsubseczzz
-\def\appendixsubseczzz#1{%
-  \global\subsubsecno=0  \global\advance\subsecno by 1
-  \sectionheading{#1}{subsec}{Yappendix}%
-                 {\appendixletter.\the\secno.\the\subsecno}%
-}
-
-\outer\defparsearg\unnumberedsubsec{\unnmhead2{#1}} %normally calls unnumberedsubseczzz
-\def\unnumberedsubseczzz#1{%
-  \global\subsubsecno=0  \global\advance\subsecno by 1
-  \sectionheading{#1}{subsec}{Ynothing}%
-                 {\the\unnumberedno.\the\secno.\the\subsecno}%
-}
-
-% Subsubsections.
-\outer\defparsearg\numberedsubsubsec{\numhead3{#1}} % normally numberedsubsubseczzz
-\def\numberedsubsubseczzz#1{%
-  \global\advance\subsubsecno by 1
-  \sectionheading{#1}{subsubsec}{Ynumbered}%
-                 {\the\chapno.\the\secno.\the\subsecno.\the\subsubsecno}%
-}
-
-\outer\defparsearg\appendixsubsubsec{\apphead3{#1}} % normally appendixsubsubseczzz
-\def\appendixsubsubseczzz#1{%
-  \global\advance\subsubsecno by 1
-  \sectionheading{#1}{subsubsec}{Yappendix}%
-                 {\appendixletter.\the\secno.\the\subsecno.\the\subsubsecno}%
-}
-
-\outer\defparsearg\unnumberedsubsubsec{\unnmhead3{#1}} %normally unnumberedsubsubseczzz
-\def\unnumberedsubsubseczzz#1{%
-  \global\advance\subsubsecno by 1
-  \sectionheading{#1}{subsubsec}{Ynothing}%
-                 {\the\unnumberedno.\the\secno.\the\subsecno.\the\subsubsecno}%
-}
-
-% These are variants which are not "outer", so they can appear in @ifinfo.
-% Actually, they are now be obsolete; ordinary section commands should work.
-\def\infotop{\parsearg\unnumberedzzz}
-\def\infounnumbered{\parsearg\unnumberedzzz}
-\def\infounnumberedsec{\parsearg\unnumberedseczzz}
-\def\infounnumberedsubsec{\parsearg\unnumberedsubseczzz}
-\def\infounnumberedsubsubsec{\parsearg\unnumberedsubsubseczzz}
-
-\def\infoappendix{\parsearg\appendixzzz}
-\def\infoappendixsec{\parsearg\appendixseczzz}
-\def\infoappendixsubsec{\parsearg\appendixsubseczzz}
-\def\infoappendixsubsubsec{\parsearg\appendixsubsubseczzz}
-
-\def\infochapter{\parsearg\chapterzzz}
-\def\infosection{\parsearg\sectionzzz}
-\def\infosubsection{\parsearg\subsectionzzz}
-\def\infosubsubsection{\parsearg\subsubsectionzzz}
-
-% These macros control what the section commands do, according
-% to what kind of chapter we are in (ordinary, appendix, or unnumbered).
-% Define them by default for a numbered chapter.
-\let\section = \numberedsec
-\let\subsection = \numberedsubsec
-\let\subsubsection = \numberedsubsubsec
-
-% Define @majorheading, @heading and @subheading
-
-% NOTE on use of \vbox for chapter headings, section headings, and such:
-%       1) We use \vbox rather than the earlier \line to permit
-%          overlong headings to fold.
-%       2) \hyphenpenalty is set to 10000 because hyphenation in a
-%          heading is obnoxious; this forbids it.
-%       3) Likewise, headings look best if no \parindent is used, and
-%          if justification is not attempted.  Hence \raggedright.
-
-
-\def\majorheading{%
-  {\advance\chapheadingskip by 10pt \chapbreak }%
-  \parsearg\chapheadingzzz
-}
-
-\def\chapheading{\chapbreak \parsearg\chapheadingzzz}
-\def\chapheadingzzz#1{%
-  {\chapfonts \vbox{\hyphenpenalty=10000\tolerance=5000
-                    \parindent=0pt\raggedright
-                    \rm #1\hfill}}%
-  \bigskip \par\penalty 200\relax
-  \suppressfirstparagraphindent
-}
-
-% @heading, @subheading, @subsubheading.
-\defparsearg\heading{\sectionheading{#1}{sec}{Yomitfromtoc}{}
-  \suppressfirstparagraphindent}
-\defparsearg\subheading{\sectionheading{#1}{subsec}{Yomitfromtoc}{}
-  \suppressfirstparagraphindent}
-\defparsearg\subsubheading{\sectionheading{#1}{subsubsec}{Yomitfromtoc}{}
-  \suppressfirstparagraphindent}
-
-% These macros generate a chapter, section, etc. heading only
-% (including whitespace, linebreaking, etc. around it),
-% given all the information in convenient, parsed form.
-
-%%% Args are the skip and penalty (usually negative)
-\def\dobreak#1#2{\par\ifdim\lastskip<#1\removelastskip\penalty#2\vskip#1\fi}
-
-\def\setchapterstyle #1 {\csname CHAPF#1\endcsname}
-
-%%% Define plain chapter starts, and page on/off switching for it
-% Parameter controlling skip before chapter headings (if needed)
-
-\newskip\chapheadingskip
-
-\def\chapbreak{\dobreak \chapheadingskip {-4000}}
-\def\chappager{\par\vfill\supereject}
-\def\chapoddpage{\chappager \ifodd\pageno \else \hbox to 0pt{} \chappager\fi}
-
-\def\setchapternewpage #1 {\csname CHAPPAG#1\endcsname}
-
-\def\CHAPPAGoff{%
-\global\let\contentsalignmacro = \chappager
-\global\let\pchapsepmacro=\chapbreak
-\global\let\pagealignmacro=\chappager}
-
-\def\CHAPPAGon{%
-\global\let\contentsalignmacro = \chappager
-\global\let\pchapsepmacro=\chappager
-\global\let\pagealignmacro=\chappager
-\global\def\HEADINGSon{\HEADINGSsingle}}
-
-\def\CHAPPAGodd{%
-\global\let\contentsalignmacro = \chapoddpage
-\global\let\pchapsepmacro=\chapoddpage
-\global\let\pagealignmacro=\chapoddpage
-\global\def\HEADINGSon{\HEADINGSdouble}}
-
-\CHAPPAGon
-
-\def\CHAPFplain{%
-\global\let\chapmacro=\chfplain
-\global\let\centerchapmacro=\centerchfplain}
-
-% Normal chapter opening.
-% 
-% #1 is the text, #2 is the section type (Ynumbered, Ynothing,
-% Yappendix, Yomitfromtoc), #3 the chapter number.
-% 
-% To test against our argument.
-\def\Ynothingkeyword{Ynothing}
-\def\Yomitfromtockeyword{Yomitfromtoc}
-\def\Yappendixkeyword{Yappendix}
-%
-\def\chfplain#1#2#3{%
-  \pchapsepmacro
-  {%
-    \chapfonts \rm
-    %
-    % Have to define \thissection before calling \donoderef, because the
-    % xref code eventually uses it.  On the other hand, it has to be called
-    % after \pchapsepmacro, or the headline will change too soon.
-    \gdef\thissection{#1}%
-    \gdef\thischaptername{#1}%
-    %
-    % Only insert the separating space if we have a chapter/appendix
-    % number, and don't print the unnumbered ``number''.
-    \def\temptype{#2}%
-    \ifx\temptype\Ynothingkeyword
-      \setbox0 = \hbox{}%
-      \def\toctype{unnchap}%
-      \def\thischapter{#1}%
-    \else\ifx\temptype\Yomitfromtockeyword
-      \setbox0 = \hbox{}% contents like unnumbered, but no toc entry
-      \def\toctype{omit}%
-      \xdef\thischapter{}%
-    \else\ifx\temptype\Yappendixkeyword
-      \setbox0 = \hbox{\putwordAppendix{} #3\enspace}%
-      \def\toctype{app}%
-      % We don't substitute the actual chapter name into \thischapter
-      % because we don't want its macros evaluated now.  And we don't
-      % use \thissection because that changes with each section.
-      %
-      \xdef\thischapter{\putwordAppendix{} \appendixletter:
-                        \noexpand\thischaptername}%
-    \else
-      \setbox0 = \hbox{#3\enspace}%
-      \def\toctype{numchap}%
-      \xdef\thischapter{\putwordChapter{} \the\chapno:
-                        \noexpand\thischaptername}%
-    \fi\fi\fi
-    %
-    % Write the toc entry for this chapter.  Must come before the
-    % \donoderef, because we include the current node name in the toc
-    % entry, and \donoderef resets it to empty.
-    \writetocentry{\toctype}{#1}{#3}%
-    %
-    % For pdftex, we have to write out the node definition (aka, make
-    % the pdfdest) after any page break, but before the actual text has
-    % been typeset.  If the destination for the pdf outline is after the
-    % text, then jumping from the outline may wind up with the text not
-    % being visible, for instance under high magnification.
-    \donoderef{#2}%
-    %
-    % Typeset the actual heading.
-    \vbox{\hyphenpenalty=10000 \tolerance=5000 \parindent=0pt \raggedright
-          \hangindent=\wd0 \centerparametersmaybe
-          \unhbox0 #1\par}%
-  }%
-  \nobreak\bigskip % no page break after a chapter title
-  \nobreak
-}
-
-% @centerchap -- centered and unnumbered.
-\let\centerparametersmaybe = \relax
-\def\centerchfplain#1{{%
-  \def\centerparametersmaybe{%
-    \advance\rightskip by 3\rightskip
-    \leftskip = \rightskip
-    \parfillskip = 0pt
-  }%
-  \chfplain{#1}{Ynothing}{}%
-}}
-
-\CHAPFplain % The default
-
-% I don't think this chapter style is supported any more, so I'm not
-% updating it with the new noderef stuff.  We'll see.  --karl, 11aug03.
-% 
-\def\unnchfopen #1{%
-\chapoddpage {\chapfonts \vbox{\hyphenpenalty=10000\tolerance=5000
-                       \parindent=0pt\raggedright
-                       \rm #1\hfill}}\bigskip \par\nobreak
-}
-
-\def\chfopen #1#2{\chapoddpage {\chapfonts
-\vbox to 3in{\vfil \hbox to\hsize{\hfil #2} \hbox to\hsize{\hfil #1} \vfil}}%
-\par\penalty 5000 %
-}
-
-\def\centerchfopen #1{%
-\chapoddpage {\chapfonts \vbox{\hyphenpenalty=10000\tolerance=5000
-                       \parindent=0pt
-                       \hfill {\rm #1}\hfill}}\bigskip \par\nobreak
-}
-
-\def\CHAPFopen{%
-\global\let\chapmacro=\chfopen
-\global\let\centerchapmacro=\centerchfopen}
-
-
-% Section titles.  These macros combine the section number parts and
-% call the generic \sectionheading to do the printing.
-% 
-\newskip\secheadingskip
-\def\secheadingbreak{\dobreak \secheadingskip{-1000}}
-
-% Subsection titles.
-\newskip\subsecheadingskip
-\def\subsecheadingbreak{\dobreak \subsecheadingskip{-500}}
-
-% Subsubsection titles.
-\def\subsubsecheadingskip{\subsecheadingskip}
-\def\subsubsecheadingbreak{\subsecheadingbreak}
-
-
-% Print any size, any type, section title.
-% 
-% #1 is the text, #2 is the section level (sec/subsec/subsubsec), #3 is
-% the section type for xrefs (Ynumbered, Ynothing, Yappendix), #4 is the
-% section number.
-% 
-\def\sectionheading#1#2#3#4{%
-  {%
-    % Switch to the right set of fonts.
-    \csname #2fonts\endcsname \rm
-    %
-    % Insert space above the heading.
-    \csname #2headingbreak\endcsname
-    %
-    % Only insert the space after the number if we have a section number.
-    \def\sectionlevel{#2}%
-    \def\temptype{#3}%
-    %
-    \ifx\temptype\Ynothingkeyword
-      \setbox0 = \hbox{}%
-      \def\toctype{unn}%
-      \gdef\thissection{#1}%
-    \else\ifx\temptype\Yomitfromtockeyword
-      % for @headings -- no section number, don't include in toc,
-      % and don't redefine \thissection.
-      \setbox0 = \hbox{}%
-      \def\toctype{omit}%
-      \let\sectionlevel=\empty
-    \else\ifx\temptype\Yappendixkeyword
-      \setbox0 = \hbox{#4\enspace}%
-      \def\toctype{app}%
-      \gdef\thissection{#1}%
-    \else
-      \setbox0 = \hbox{#4\enspace}%
-      \def\toctype{num}%
-      \gdef\thissection{#1}%
-    \fi\fi\fi
-    %
-    % Write the toc entry (before \donoderef).  See comments in \chfplain.
-    \writetocentry{\toctype\sectionlevel}{#1}{#4}%
-    %
-    % Write the node reference (= pdf destination for pdftex).
-    % Again, see comments in \chfplain.
-    \donoderef{#3}%
-    %
-    % Output the actual section heading.
-    \vbox{\hyphenpenalty=10000 \tolerance=5000 \parindent=0pt \raggedright
-          \hangindent=\wd0  % zero if no section number
-          \unhbox0 #1}%
-  }%
-  % Add extra space after the heading -- half of whatever came above it.
-  % Don't allow stretch, though.
-  \kern .5 \csname #2headingskip\endcsname
-  %
-  % Do not let the kern be a potential breakpoint, as it would be if it
-  % was followed by glue.
-  \nobreak
-  %
-  % We'll almost certainly start a paragraph next, so don't let that
-  % glue accumulate.  (Not a breakpoint because it's preceded by a
-  % discardable item.)
-  \vskip-\parskip
-  %
-  % This \nobreak is purely so the last item on the list is a \penalty
-  % of 10000.  This is so other code, for instance \parsebodycommon, can
-  % check for and avoid allowing breakpoints.  Otherwise, it would
-  % insert a valid breakpoint between:
-  %   @section sec-whatever
-  %   @deffn def-whatever
-  \nobreak
-}
-
-
-\message{toc,}
-% Table of contents.
-\newwrite\tocfile
-
-% Write an entry to the toc file, opening it if necessary.
-% Called from @chapter, etc.  
-% 
-% Example usage: \writetocentry{sec}{Section Name}{\the\chapno.\the\secno}
-% We append the current node name (if any) and page number as additional
-% arguments for the \{chap,sec,...}entry macros which will eventually
-% read this.  The node name is used in the pdf outlines as the
-% destination to jump to.
-% 
-% We open the .toc file for writing here instead of at @setfilename (or
-% any other fixed time) so that @contents can be anywhere in the document.
-% But if #1 is `omit', then we don't do anything.  This is used for the
-% table of contents chapter openings themselves.
-%
-\newif\iftocfileopened
-\def\omitkeyword{omit}%
-%
-\def\writetocentry#1#2#3{%
-  \edef\writetoctype{#1}%
-  \ifx\writetoctype\omitkeyword \else
-    \iftocfileopened\else
-      \immediate\openout\tocfile = \jobname.toc
-      \global\tocfileopenedtrue
-    \fi
-    %
-    \iflinks
-      \toks0 = {#2}%
-      \toks2 = \expandafter{\lastnode}%
-      \edef\temp{\write\tocfile{\realbackslash #1entry{\the\toks0}{#3}%
-                               {\the\toks2}{\noexpand\folio}}}%
-      \temp
-    \fi
-  \fi
-  %
-  % Tell \shipout to create a pdf destination on each page, if we're
-  % writing pdf.  These are used in the table of contents.  We can't
-  % just write one on every page because the title pages are numbered
-  % 1 and 2 (the page numbers aren't printed), and so are the first
-  % two pages of the document.  Thus, we'd have two destinations named
-  % `1', and two named `2'.
-  \ifpdf \global\pdfmakepagedesttrue \fi
-}
-
-\newskip\contentsrightmargin \contentsrightmargin=1in
-\newcount\savepageno
-\newcount\lastnegativepageno \lastnegativepageno = -1
-
-% Prepare to read what we've written to \tocfile.
-%
-\def\startcontents#1{%
-   % If @setchapternewpage on, and @headings double, the contents should
-   % start on an odd page, unlike chapters.  Thus, we maintain
-   % \contentsalignmacro in parallel with \pagealignmacro.
-   % From: Torbjorn Granlund <tege@matematik.su.se>
-   \contentsalignmacro
-   \immediate\closeout\tocfile
-   %
-   % Don't need to put `Contents' or `Short Contents' in the headline.
-   % It is abundantly clear what they are.
-   \def\thischapter{}%
-   \chapmacro{#1}{Yomitfromtoc}{}%
-   %
-   \savepageno = \pageno
-   \begingroup                  % Set up to handle contents files properly.
-      \catcode`\\=0  \catcode`\{=1  \catcode`\}=2  \catcode`\@=11
-      % We can't do this, because then an actual ^ in a section
-      % title fails, e.g., @chapter ^ -- exponentiation.  --karl, 9jul97.
-      %\catcode`\^=7 % to see ^^e4 as \"a etc. juha@piuha.ydi.vtt.fi
-      \raggedbottom             % Worry more about breakpoints than the bottom.
-      \advance\hsize by -\contentsrightmargin % Don't use the full line length.
-      %
-      % Roman numerals for page numbers.
-      \ifnum \pageno>0 \global\pageno = \lastnegativepageno \fi
-}
-
-
-% Normal (long) toc.
-\def\contents{%
-   \startcontents{\putwordTOC}%
-     \openin 1 \jobname.toc
-     \ifeof 1 \else
-       \closein 1
-       \input \jobname.toc
-     \fi
-     \vfill \eject
-     \contentsalignmacro % in case @setchapternewpage odd is in effect
-     \pdfmakeoutlines
-   \endgroup
-   \lastnegativepageno = \pageno
-   \global\pageno = \savepageno
-}
-
-% And just the chapters.
-\def\summarycontents{%
-   \startcontents{\putwordShortTOC}%
-      %
-      \let\numchapentry = \shortchapentry
-      \let\appentry = \shortchapentry
-      \let\unnchapentry = \shortunnchapentry
-      % We want a true roman here for the page numbers.
-      \secfonts
-      \let\rm=\shortcontrm \let\bf=\shortcontbf
-      \let\sl=\shortcontsl \let\tt=\shortconttt
-      \rm
-      \hyphenpenalty = 10000
-      \advance\baselineskip by 1pt % Open it up a little.
-      \def\numsecentry##1##2##3##4{}
-      \let\appsecentry = \numsecentry
-      \let\unnsecentry = \numsecentry
-      \let\numsubsecentry = \numsecentry
-      \let\appsubsecentry = \numsecentry
-      \let\unnsubsecentry = \numsecentry
-      \let\numsubsubsecentry = \numsecentry
-      \let\appsubsubsecentry = \numsecentry
-      \let\unnsubsubsecentry = \numsecentry
-      \openin 1 \jobname.toc
-      \ifeof 1 \else
-        \closein 1
-        \input \jobname.toc
-      \fi
-     \vfill \eject
-     \contentsalignmacro % in case @setchapternewpage odd is in effect
-   \endgroup
-   \lastnegativepageno = \pageno
-   \global\pageno = \savepageno
-}
-\let\shortcontents = \summarycontents
-
-% Typeset the label for a chapter or appendix for the short contents.
-% The arg is, e.g., `A' for an appendix, or `3' for a chapter.
-%
-\def\shortchaplabel#1{%
-  % This space should be enough, since a single number is .5em, and the
-  % widest letter (M) is 1em, at least in the Computer Modern fonts.
-  % But use \hss just in case.
-  % (This space doesn't include the extra space that gets added after
-  % the label; that gets put in by \shortchapentry above.)
-  % 
-  % We'd like to right-justify chapter numbers, but that looks strange
-  % with appendix letters.  And right-justifying numbers and
-  % left-justifying letters looks strange when there is less than 10
-  % chapters.  Have to read the whole toc once to know how many chapters
-  % there are before deciding ...
-  \hbox to 1em{#1\hss}%
-}
-
-% These macros generate individual entries in the table of contents.
-% The first argument is the chapter or section name.
-% The last argument is the page number.
-% The arguments in between are the chapter number, section number, ...
-
-% Chapters, in the main contents.
-\def\numchapentry#1#2#3#4{\dochapentry{#2\labelspace#1}{#4}}
-%
-% Chapters, in the short toc.
-% See comments in \dochapentry re vbox and related settings.
-\def\shortchapentry#1#2#3#4{%
-  \tocentry{\shortchaplabel{#2}\labelspace #1}{\doshortpageno\bgroup#4\egroup}%
-}
-
-% Appendices, in the main contents.
-% Need the word Appendix, and a fixed-size box.
-% 
-\def\appendixbox#1{%
-  % We use M since it's probably the widest letter.
-  \setbox0 = \hbox{\putwordAppendix{} M}%
-  \hbox to \wd0{\putwordAppendix{} #1\hss}}
-%
-\def\appentry#1#2#3#4{\dochapentry{\appendixbox{#2}\labelspace#1}{#4}}
-
-% Unnumbered chapters.
-\def\unnchapentry#1#2#3#4{\dochapentry{#1}{#4}}
-\def\shortunnchapentry#1#2#3#4{\tocentry{#1}{\doshortpageno\bgroup#4\egroup}}
-
-% Sections.
-\def\numsecentry#1#2#3#4{\dosecentry{#2\labelspace#1}{#4}}
-\let\appsecentry=\numsecentry
-\def\unnsecentry#1#2#3#4{\dosecentry{#1}{#4}}
-
-% Subsections.
-\def\numsubsecentry#1#2#3#4{\dosubsecentry{#2\labelspace#1}{#4}}
-\let\appsubsecentry=\numsubsecentry
-\def\unnsubsecentry#1#2#3#4{\dosubsecentry{#1}{#4}}
-
-% And subsubsections.
-\def\numsubsubsecentry#1#2#3#4{\dosubsubsecentry{#2\labelspace#1}{#4}}
-\let\appsubsubsecentry=\numsubsubsecentry
-\def\unnsubsubsecentry#1#2#3#4{\dosubsubsecentry{#1}{#4}}
-
-% This parameter controls the indentation of the various levels.
-\newdimen\tocindent \tocindent = 2pc
-
-% Now for the actual typesetting. In all these, #1 is the text and #2 is the
-% page number.
-%
-% If the toc has to be broken over pages, we want it to be at chapters
-% if at all possible; hence the \penalty.
-\def\dochapentry#1#2{%
-   \penalty-300 \vskip1\baselineskip plus.33\baselineskip minus.25\baselineskip
-   \begingroup
-     \chapentryfonts
-     \tocentry{#1}{\dopageno\bgroup#2\egroup}%
-   \endgroup
-   \nobreak\vskip .25\baselineskip plus.1\baselineskip
-}
-
-\def\dosecentry#1#2{\begingroup
-  \secentryfonts \leftskip=\tocindent
-  \tocentry{#1}{\dopageno\bgroup#2\egroup}%
-\endgroup}
-
-\def\dosubsecentry#1#2{\begingroup
-  \subsecentryfonts \leftskip=2\tocindent
-  \tocentry{#1}{\dopageno\bgroup#2\egroup}%
-\endgroup}
-
-\def\dosubsubsecentry#1#2{\begingroup
-  \subsubsecentryfonts \leftskip=3\tocindent
-  \tocentry{#1}{\dopageno\bgroup#2\egroup}%
-\endgroup}
-
-% We use the same \entry macro as for the index entries.
-\let\tocentry = \entry
-
-% Space between chapter (or whatever) number and the title.
-\def\labelspace{\hskip1em \relax}
-
-\def\dopageno#1{{\rm #1}}
-\def\doshortpageno#1{{\rm #1}}
-
-\def\chapentryfonts{\secfonts \rm}
-\def\secentryfonts{\textfonts}
-\def\subsecentryfonts{\textfonts}
-\def\subsubsecentryfonts{\textfonts}
-
-
-\message{environments,}
-% @foo ... @end foo.
-
-% @point{}, @result{}, @expansion{}, @print{}, @equiv{}.
-%
-% Since these characters are used in examples, it should be an even number of
-% \tt widths. Each \tt character is 1en, so two makes it 1em.
-%
-\def\point{$\star$}
-\def\result{\leavevmode\raise.15ex\hbox to 1em{\hfil$\Rightarrow$\hfil}}
-\def\expansion{\leavevmode\raise.1ex\hbox to 1em{\hfil$\mapsto$\hfil}}
-\def\print{\leavevmode\lower.1ex\hbox to 1em{\hfil$\dashv$\hfil}}
-\def\equiv{\leavevmode\lower.1ex\hbox to 1em{\hfil$\ptexequiv$\hfil}}
-
-% The @error{} command.
-% Adapted from the TeXbook's \boxit.
-%
-\newbox\errorbox
-%
-{\tentt \global\dimen0 = 3em}% Width of the box.
-\dimen2 = .55pt % Thickness of rules
-% The text. (`r' is open on the right, `e' somewhat less so on the left.)
-\setbox0 = \hbox{\kern-.75pt \tensf error\kern-1.5pt}
-%
-\setbox\errorbox=\hbox to \dimen0{\hfil
-   \hsize = \dimen0 \advance\hsize by -5.8pt % Space to left+right.
-   \advance\hsize by -2\dimen2 % Rules.
-   \vbox{%
-      \hrule height\dimen2
-      \hbox{\vrule width\dimen2 \kern3pt          % Space to left of text.
-         \vtop{\kern2.4pt \box0 \kern2.4pt}% Space above/below.
-         \kern3pt\vrule width\dimen2}% Space to right.
-      \hrule height\dimen2}
-    \hfil}
-%
-\def\error{\leavevmode\lower.7ex\copy\errorbox}
-
-% @tex ... @end tex    escapes into raw Tex temporarily.
-% One exception: @ is still an escape character, so that @end tex works.
-% But \@ or @@ will get a plain tex @ character.
-
-\def\tex{\begingroup
-  \catcode `\\=0 \catcode `\{=1 \catcode `\}=2
-  \catcode `\$=3 \catcode `\&=4 \catcode `\#=6
-  \catcode `\^=7 \catcode `\_=8 \catcode `\~=\active \let~=\tie
-  \catcode `\%=14
-  \catcode `\+=\other
-  \catcode `\"=\other
-  \catcode `\|=\other
-  \catcode `\<=\other
-  \catcode `\>=\other
-  \escapechar=`\\
-  %
-  \let\b=\ptexb
-  \let\bullet=\ptexbullet
-  \let\c=\ptexc
-  \let\,=\ptexcomma
-  \let\.=\ptexdot
-  \let\dots=\ptexdots
-  \let\equiv=\ptexequiv
-  \let\!=\ptexexclam
-  \let\i=\ptexi
-  \let\indent=\ptexindent
-  \let\noindent=\ptexnoindent
-  \let\{=\ptexlbrace
-  \let\+=\tabalign
-  \let\}=\ptexrbrace
-  \let\/=\ptexslash
-  \let\*=\ptexstar
-  \let\t=\ptext
-  %
-  \def\endldots{\mathinner{\ldots\ldots\ldots\ldots}}%
-  \def\enddots{\relax\ifmmode\endldots\else$\mathsurround=0pt \endldots\,$\fi}%
-  \def\@{@}%
-\let\Etex=\endgroup}
-
-% Define @lisp ... @end lisp.
-% @lisp does a \begingroup so it can rebind things,
-% including the definition of @end lisp (which normally is erroneous).
-
-% Amount to narrow the margins by for @lisp.
-\newskip\lispnarrowing \lispnarrowing=0.4in
-
-% This is the definition that ^^M gets inside @lisp, @example, and other
-% such environments.  \null is better than a space, since it doesn't
-% have any width.
-\def\lisppar{\null\endgraf}
-
-% This space is always present above and below environments.
-\newskip\envskipamount \envskipamount = 0pt
-
-% Make spacing and below environment symmetrical.  We use \parskip here
-% to help in doing that, since in @example-like environments \parskip
-% is reset to zero; thus the \afterenvbreak inserts no space -- but the
-% start of the next paragraph will insert \parskip.
-%
-\def\aboveenvbreak{{%
-  % =10000 instead of <10000 because of a special case in \itemzzz, q.v.
-  \ifnum \lastpenalty=10000 \else
-    \advance\envskipamount by \parskip
-    \endgraf
-    \ifdim\lastskip<\envskipamount
-      \removelastskip
-      % it's not a good place to break if the last penalty was \nobreak
-      % or better ...
-      \ifnum\lastpenalty>10000 \else \penalty-50 \fi
-      \vskip\envskipamount
-    \fi
-  \fi
-}}
-
-\let\afterenvbreak = \aboveenvbreak
-
-% \nonarrowing is a flag.  If "set", @lisp etc don't narrow margins.
-\let\nonarrowing=\relax
-
-% @cartouche ... @end cartouche: draw rectangle w/rounded corners around
-% environment contents.
-\font\circle=lcircle10
-\newdimen\circthick
-\newdimen\cartouter\newdimen\cartinner
-\newskip\normbskip\newskip\normpskip\newskip\normlskip
-\circthick=\fontdimen8\circle
-%
-\def\ctl{{\circle\char'013\hskip -6pt}}% 6pt from pl file: 1/2charwidth
-\def\ctr{{\hskip 6pt\circle\char'010}}
-\def\cbl{{\circle\char'012\hskip -6pt}}
-\def\cbr{{\hskip 6pt\circle\char'011}}
-\def\carttop{\hbox to \cartouter{\hskip\lskip
-        \ctl\leaders\hrule height\circthick\hfil\ctr
-        \hskip\rskip}}
-\def\cartbot{\hbox to \cartouter{\hskip\lskip
-        \cbl\leaders\hrule height\circthick\hfil\cbr
-        \hskip\rskip}}
-%
-\newskip\lskip\newskip\rskip
-
-\def\cartouche{%
-\begingroup\inENV
-  \ifhmode\par\fi  % can't be in the midst of a paragraph.
-  \startsavinginserts
-  \lskip=\leftskip \rskip=\rightskip
-  \leftskip=0pt\rightskip=0pt % we want these *outside*.
-  \cartinner=\hsize \advance\cartinner by-\lskip
-  \advance\cartinner by-\rskip
-  \cartouter=\hsize
-  \advance\cartouter by 18.4pt	% allow for 3pt kerns on either
-				% side, and for 6pt waste from
-				% each corner char, and rule thickness
-  \normbskip=\baselineskip \normpskip=\parskip \normlskip=\lineskip
-  % Flag to tell @lisp, etc., not to narrow margin.
-  \let\nonarrowing=\comment
-  \vbox\bgroup
-      \baselineskip=0pt\parskip=0pt\lineskip=0pt
-      \carttop
-      \hbox\bgroup
-	  \hskip\lskip
-	  \vrule\kern3pt
-	  \vbox\bgroup
-	      \kern3pt
-	      \hsize=\cartinner
-	      \baselineskip=\normbskip
-	      \lineskip=\normlskip
-	      \parskip=\normpskip
-	      \vskip -\parskip
-	      \comment % For explanation, see the end of \def\group.
-}
-\def\Ecartouche{%
-              \ifhmode\par\fi
-	      \kern3pt
-	  \egroup
-	  \kern3pt\vrule
-	  \hskip\rskip
-      \egroup
-      \cartbot
-  \egroup
-  \checkinserts
-\endgroup
-}
-
-
-% This macro is called at the beginning of all the @example variants,
-% inside a group.
-\def\nonfillstart{%
-  \aboveenvbreak
-  \inENV % This group ends at the end of the body
-  \hfuzz = 12pt % Don't be fussy
-  \sepspaces % Make spaces be word-separators rather than space tokens.
-  \let\par = \lisppar % don't ignore blank lines
-  \obeylines % each line of input is a line of output
-  \parskip = 0pt
-  \parindent = 0pt
-  \emergencystretch = 0pt % don't try to avoid overfull boxes
-  % @cartouche defines \nonarrowing to inhibit narrowing
-  % at next level down.
-  \ifx\nonarrowing\relax
-    \advance \leftskip by \lispnarrowing
-    \exdentamount=\lispnarrowing
-    \let\exdent=\nofillexdent
-    \let\nonarrowing=\relax
-  \fi
-}
-
-% Define the \E... control sequence only if we are inside the particular
-% environment, so the error checking in \end will work.
-%
-% To end an @example-like environment, we first end the paragraph (via
-% \afterenvbreak's vertical glue), and then the group.  That way we keep
-% the zero \parskip that the environments set -- \parskip glue will be
-% inserted at the beginning of the next paragraph in the document, after
-% the environment.
-%
-\def\nonfillfinish{\afterenvbreak\endgroup}
-
-% @lisp: indented, narrowed, typewriter font.
-\def\lisp{\begingroup
-  \nonfillstart
-  \let\Elisp = \nonfillfinish
-  \tt
-  \let\kbdfont = \kbdexamplefont % Allow @kbd to do something special.
-  \gobble       % eat return
-}
-
-% @example: Same as @lisp.
-\def\example{\begingroup \def\Eexample{\nonfillfinish\endgroup}\lisp}
-
-% @smallexample and @smalllisp: use smaller fonts.
-% Originally contributed by Pavel@xerox.
-\def\smalllisp{\begingroup
-  \def\Esmalllisp{\nonfillfinish\endgroup}%
-  \def\Esmallexample{\nonfillfinish\endgroup}%
-  \smallexamplefonts
-  \lisp
-}
-\let\smallexample = \smalllisp
-
-
-% @display: same as @lisp except keep current font.
-%
-\def\display{\begingroup
-  \nonfillstart
-  \let\Edisplay = \nonfillfinish
-  \gobble
-}
-%
-% @smalldisplay: @display plus smaller fonts.
-%
-\def\smalldisplay{\begingroup
-  \def\Esmalldisplay{\nonfillfinish\endgroup}%
-  \smallexamplefonts \rm
-  \display
-}
-
-% @format: same as @display except don't narrow margins.
-%
-\def\format{\begingroup
-  \let\nonarrowing = t%
-  \nonfillstart
-  \let\Eformat = \nonfillfinish
-  \gobble
-}
-%
-% @smallformat: @format plus smaller fonts.
-%
-\def\smallformat{\begingroup
-  \def\Esmallformat{\nonfillfinish\endgroup}%
-  \smallexamplefonts \rm
-  \format
-}
-
-% @flushleft (same as @format).
-%
-\def\flushleft{\begingroup \def\Eflushleft{\nonfillfinish\endgroup}\format}
-
-% @flushright.
-%
-\def\flushright{\begingroup
-  \let\nonarrowing = t%
-  \nonfillstart
-  \let\Eflushright = \nonfillfinish
-  \advance\leftskip by 0pt plus 1fill
-  \gobble
-}
-
-
-% @quotation does normal linebreaking (hence we can't use \nonfillstart)
-% and narrows the margins.
-%
-\def\quotation{%
-  \begingroup\inENV %This group ends at the end of the @quotation body
-  {\parskip=0pt \aboveenvbreak}% because \aboveenvbreak inserts \parskip
-  \parindent=0pt
-  % We have retained a nonzero parskip for the environment, since we're
-  % doing normal filling. So to avoid extra space below the environment...
-  \def\Equotation{\parskip = 0pt \nonfillfinish}%
-  %
-  % @cartouche defines \nonarrowing to inhibit narrowing at next level down.
-  \ifx\nonarrowing\relax
-    \advance\leftskip by \lispnarrowing
-    \advance\rightskip by \lispnarrowing
-    \exdentamount = \lispnarrowing
-    \let\nonarrowing = \relax
-  \fi
-  \parsearg\quotationlabel
-}
-
-% If we're given an argument, typeset it in bold with a colon after.
-\def\quotationlabel#1{%
-  \def\temp{#1}%
-  \ifx\temp\empty \else
-    {\bf #1: }%
-  \fi
-}
-
-
-% LaTeX-like @verbatim...@end verbatim and @verb{<char>...<char>}
-% If we want to allow any <char> as delimiter,
-% we need the curly braces so that makeinfo sees the @verb command, eg:
-% `@verbx...x' would look like the '@verbx' command.  --janneke@gnu.org
-%
-% [Knuth]: Donald Ervin Knuth, 1996.  The TeXbook.
-%
-% [Knuth] p.344; only we need to do the other characters Texinfo sets
-% active too.  Otherwise, they get lost as the first character on a
-% verbatim line.
-\def\dospecials{%
-  \do\ \do\\\do\{\do\}\do\$\do\&%
-  \do\#\do\^\do\^^K\do\_\do\^^A\do\%\do\~%
-  \do\<\do\>\do\|\do\@\do+\do\"%
-}
-%
-% [Knuth] p. 380
-\def\uncatcodespecials{%
-  \def\do##1{\catcode`##1=\other}\dospecials}
-%
-% [Knuth] pp. 380,381,391
-% Disable Spanish ligatures ?` and !` of \tt font
-\begingroup
-  \catcode`\`=\active\gdef`{\relax\lq}
-\endgroup
-%
-% Setup for the @verb command.
-%
-% Eight spaces for a tab
-\begingroup
-  \catcode`\^^I=\active
-  \gdef\tabeightspaces{\catcode`\^^I=\active\def^^I{\ \ \ \ \ \ \ \ }}
-\endgroup
-%
-\def\setupverb{%
-  \tt  % easiest (and conventionally used) font for verbatim
-  \def\par{\leavevmode\endgraf}%
-  \catcode`\`=\active
-  \tabeightspaces
-  % Respect line breaks,
-  % print special symbols as themselves, and
-  % make each space count
-  % must do in this order:
-  \obeylines \uncatcodespecials \sepspaces
-}
-
-% Setup for the @verbatim environment
-%
-% Real tab expansion
-\newdimen\tabw \setbox0=\hbox{\tt\space} \tabw=8\wd0 % tab amount
-%
-\def\starttabbox{\setbox0=\hbox\bgroup}
-\begingroup
-  \catcode`\^^I=\active
-  \gdef\tabexpand{%
-    \catcode`\^^I=\active
-    \def^^I{\leavevmode\egroup
-      \dimen0=\wd0 % the width so far, or since the previous tab
-      \divide\dimen0 by\tabw
-      \multiply\dimen0 by\tabw % compute previous multiple of \tabw
-      \advance\dimen0 by\tabw  % advance to next multiple of \tabw
-      \wd0=\dimen0 \box0 \starttabbox
-    }%
-  }
-\endgroup
-\def\setupverbatim{%
-  \nonfillstart
-  \advance\leftskip by -\defbodyindent
-  % Easiest (and conventionally used) font for verbatim
-  \tt
-  \def\par{\leavevmode\egroup\box0\endgraf}%
-  \catcode`\`=\active
-  \tabexpand
-  % Respect line breaks,
-  % print special symbols as themselves, and
-  % make each space count
-  % must do in this order:
-  \obeylines \uncatcodespecials \sepspaces
-  \everypar{\starttabbox}%
-}
-
-% Do the @verb magic: verbatim text is quoted by unique
-% delimiter characters.  Before first delimiter expect a
-% right brace, after last delimiter expect closing brace:
-%
-%    \def\doverb'{'<char>#1<char>'}'{#1}
-%
-% [Knuth] p. 382; only eat outer {}
-\begingroup
-  \catcode`[=1\catcode`]=2\catcode`\{=\other\catcode`\}=\other
-  \gdef\doverb{#1[\def\next##1#1}[##1\endgroup]\next]
-\endgroup
-%
-\def\verb{\begingroup\setupverb\doverb}
-%
-%
-% Do the @verbatim magic: define the macro \doverbatim so that
-% the (first) argument ends when '@end verbatim' is reached, ie:
-%
-%     \def\doverbatim#1@end verbatim{#1}
-%
-% For Texinfo it's a lot easier than for LaTeX,
-% because texinfo's \verbatim doesn't stop at '\end{verbatim}':
-% we need not redefine '\', '{' and '}'.
-%
-% Inspired by LaTeX's verbatim command set [latex.ltx]
-%
-\begingroup
-  \catcode`\ =\active
-  \obeylines %
-  % ignore everything up to the first ^^M, that's the newline at the end
-  % of the @verbatim input line itself.  Otherwise we get an extra blank
-  % line in the output.
-  \xdef\doverbatim#1^^M#2@end verbatim{#2\noexpand\end\gobble verbatim}%
-  % We really want {...\end verbatim} in the body of the macro, but
-  % without the active space; thus we have to use \xdef and \gobble.
-\endgroup
-%
-\def\verbatim{%
-  \let\Everbatim\nonfillfinish
-  \begingroup
-    \setupverbatim\doverbatim
-}
-
-% @verbatiminclude FILE - insert text of file in verbatim environment.
-%
-\def\verbatiminclude{\parseargusing\filenamecatcodes\doverbatiminclude}
-%
-\def\doverbatiminclude#1{%
-  \begingroup
-    \makevalueexpandable
-    \setupverbatim
-    \input #1
-  \nonfillfinish % contains \endgroup
-}
-
-% @copying ... @end copying.
-% Save the text away for @insertcopying later.  Many commands won't be
-% allowed in this context, but that's ok.
-%
-% We save the uninterpreted tokens, rather than creating a box.
-% Saving the text in a box would be much easier, but then all the
-% typesetting commands (@smallbook, font changes, etc.) have to be done
-% beforehand -- and a) we want @copying to be done first in the source
-% file; b) letting users define the frontmatter in as flexible order as
-% possible is very desirable.
-%
-\def\copying{\begingroup
-  % Define a command to swallow text until we reach `@end copying'.
-  % \ is the escape char in this texinfo.tex file, so it is the
-  % delimiter for the command; @ will be the escape char when we read
-  % it, but that doesn't matter.
-  \long\def\docopying##1\end copying{\gdef\copyingtext{##1}\enddocopying}%
-  %
-  % We must preserve ^^M's in the input file; see \insertcopying below.
-  \catcode`\^^M = \active
-  \docopying
-}
-
-% What we do to finish off the copying text.
-%
-\def\enddocopying{\endgroup\ignorespaces}
-
-% @insertcopying.  Here we must play games with ^^M's.  On the one hand,
-% we need them to delimit commands such as `@end quotation', so they
-% must be active.  On the other hand, we certainly don't want every
-% end-of-line to be a \par, as would happen with the normal active
-% definition of ^^M.  On the third hand, two ^^M's in a row should still
-% generate a \par.
-%
-% Our approach is to make ^^M insert a space and a penalty1 normally;
-% then it can also check if \lastpenalty=1.  If it does, then manually
-% do \par.
-%
-% This messes up the normal definitions of @c[omment], so we redefine
-% it.  Similarly for @ignore.  (These commands are used in the gcc
-% manual for man page generation.)
-%
-% Seems pretty fragile, most line-oriented commands will presumably
-% fail, but for the limited use of getting the copying text (which
-% should be quite simple) inserted, we can hope it's ok.
-%
-{\catcode`\^^M=\active %
-\gdef\insertcopying{\begingroup %
-  \parindent = 0pt  % looks wrong on title page
-  \def^^M{%
-    \ifnum \lastpenalty=1 %
-      \par %
-    \else %
-      \space \penalty 1 %
-    \fi %
-  }%
-  %
-  % Fix @c[omment] for catcode 13 ^^M's.
-  \def\c##1^^M{\ignorespaces}%
-  \let\comment = \c %
-  %
-  % Don't bother jumping through all the hoops that \doignore does, it
-  % would be very hard since the catcodes are already set.
-  \long\def\ignore##1\end ignore{\ignorespaces}%
-  %
-  \copyingtext %
-\endgroup}%
-}
-
-\message{defuns,}
-% @defun etc.
-
-\newskip\defbodyindent \defbodyindent=.4in
-\newskip\defargsindent \defargsindent=50pt
-\newskip\deflastargmargin \deflastargmargin=18pt
-
-% \startdefun \deffn
-% -- starts the processing of @deffn
-\def\startdefun#1{%
-  \begingroup\inENV
-  \def\thisenv{#1}%
-  \ifnum\lastpenalty<10000
-    \medbreak
-  \else
-    % If there are two @def commands in a row, we'll have a \nobreak,
-    % which is there to keep the function description together with its
-    % header.  But if there's nothing but headers, we need to allow a
-    % break somewhere.  Check for penalty 10002 (inserted by
-    % \defargscommonending) instead of 10000, since the sectioning
-    % commands insert a \penalty10000, and we don't want to allow a break
-    % between a section heading and a defun.
-    \ifnum\lastpenalty=10002 \penalty2000 \fi
-    %
-    % Similarly, after a section heading, do not allow a break.
-    % But do insert the glue.
-    \medskip  % preceded by discardable penalty, so not a breakpoint
-  \fi
-  %
-  \parindent=0in
-  \advance\leftskip by \defbodyindent
-  \exdentamount=\defbodyindent
-}
-
-% \dodefunx \startdefun \deffn
-% -- converts \deffn expansion to \deffnx, omitting \startdefun.
-\def\dodefunx \startdefun #1{%
-  % As above, allow line break if we have multiple x headers in a row.
-  % It's not a great place, though.
-  \ifnum\lastpenalty=10002 \penalty3000 \fi
-  %
-  % Check whether we are inside the corresponding @defun.
-  \def\temp{#1}%
-  \ifx\thisenv\temp
-  \else
-    \errmessage{\expandafter\string\temp x inside
-      \expandafter\noexpand\thisenv environment}%
-  \fi
-}
-
-% Without continued lines we'd just have:
-%   \def\parsedefunline#1{\parseargusing\activeparens{\parsedefunlineX#1}}
-%   \def\parsedefunlineX#1#2{\printdefunline #1#2\DefunTerm}
-% but with continuations, things are much more complicated.
-%
-\def\parsedefunline#1{%
-  \def\defunlinemacro{#1}% store \deffnheader (initially)
-  \parsedefunlineX
-}
-\def\parsedefunlineX{%
-  \parseargusing\activeparens\parsedefunlineY
-}
-\def\parsedefunlineY#1{%
-  % We have to prepend a token to prevent brace stripping;
-  % \defunlinemacro just comes handy.
-  \defunchkspace\defunlinemacro#1\DefunMid\ \DefunMid\DefunTerm
-}
-\def\defunchkspace#1\ \DefunMid#2\DefunTerm{%
-  \def\temp{#2}%
-  \ifx\temp\empty
-    % The line doesn't end with `@ '; in this case, #1 ends with \DefunMid.
-    \let\next\defunchktab
-  \else
-    % `@ ' was found and stripped.
-    \let\next\defunloop
-  \fi
-  \next#1\^^I\DefunMid\DefunTerm
-}
-\def\defunchktab#1\^^I\DefunMid#2\DefunTerm{%
-  \def\temp{#2}%
-  \ifx\temp\empty
-    % The line doesn't end with `@TAB', either.
-    \let\next\defunchkfinish
-  \else
-    % `@TAB' was found and stripped.
-    \let\next\defunloop
-  \fi
-  \next#1\^^I\DefunMid\DefunTerm
-}
-\def\defunloop#1\^^I\DefunMid\DefunTerm{%
-  % Expand the \defunlinemacro token at the beginning of #1.
-  \expandafter\def\expandafter\defunlinemacro
-    \expandafter{#1 }%
-  \parsedefunlineX
-}
-\def\defunchkfinish#1\DefunMid\^^I%\DefunMid\DefunTerm -- stays here
-{%
-  % #1 starts with \defunlinemacro, which is expanded and its expansion
-  % starts with eg. \deffnheader.
-  \expandafter\replaceeols #1\^^M%\DefunMid\DefunTerm -- stays here
-}
-
-% Each occurence of `\^^M' or `<space>\^^M' is replaced by a single space.
-%
-% The parameters start with \deffnheader token, so trere is no risk braces
-% could be stripped at #1.  And we have a \DefunMid token just before
-% \DefunTerm, so we cannot loose braces at #2 either.  Uff!
-%
-\def\replaceeols#1\^^M#2\DefunTerm{%
-  \stripDefunMid #2%
-  \ifx\temp\empty
-    % This \^^M is the terminating one.
-    \printdefunline #1\DefunTerm
-  \else
-    \replaceeolsX#1\^^M \^^M#2\DefunTerm
-  \fi
-}
-\def\replaceeolsX#1 \^^M{\replaceeolsY#1\^^M}
-\def\replaceeolsY#1\^^M#2\^^M{\replaceeols#1 }
-\def\stripDefunMid#1\DefunMid{\def\temp{#1}}
-
-% \printdefunline \deffnheader text\DefunTerm
-%
-\def\printdefunline#1\DefunTerm{%
-  \begingroup
-    % call \deffnheader:
-    #1 \endheader
-    % common ending:
-    \interlinepenalty = 10000
-    \advance\rightskip by 0pt plus 1fil
-    \endgraf
-    \nobreak\vskip -\parskip
-    \penalty 10002  % signal to \startdefun and \dodefunx
-    % Some of the @defun-type tags do not enable magic parentheses,
-    % rendering the following check redundant.  But we don't optimize.
-    \checkparencounts
-  \endgroup
-}
-
-\def\Edefun{\endgraf\endgroup\medbreak}
-
-% \makedefun{deffn} creates \deffn, \deffnx and \Edeffn;
-% the only thing remainnig is to define \deffnheader.
-%
-\def\makedefun#1{%
-  \expandafter\let\csname E#1\endcsname = \Edefun
-  \edef\temp{\noexpand\domakedefun
-    \makecsname{#1}\makecsname{#1x}\makecsname{#1header}}%
-  \temp
-}
-
-% \domakedefun \deffn \deffnx \deffnheader
-%
-% Define \deffn and \deffnx, without parameters.
-% \deffnheader has to be defined explicitly.
-%
-\def\domakedefun#1#2#3{%
-  \def#1{%
-    \startdefun#1%
-    \parsedefunline#3%
-  }%
-  % A tricky way to recycle the code defined above:
-  \def#2{\expandafter\dodefunx#1}%
-}
-
-% Untyped functions (@deffn, @defop):
-
-\makedefun{deffn} % category name args
-\def\deffnheader{\deffngeneral{}}
-
-\makedefun{defop} % category class name args
-\def\defopheader#1 {\defopon{#1\ \putwordon}}
-
-% \defopon {category on}class name args
-\def\defopon#1#2 {\deffngeneral{\putwordon\ \code{#2}}{#1\ \code{#2}} }
-
-% \deffngeneral {subind}category name args
-%
-\def\deffngeneral#1#2 #3 #4\endheader{%
-  % Remember that \dosubin{fn}{xxx}{} is equivalent to \doind{fn}{xxx}.
-  \dosubind{fn}{\code{#3}}{#1}%
-  \defname{#2}{}{#3}\ampdefunargs{#4\unskip}%
-}
-
-% Typed functions (@deftypefn, @deftypeop):
-
-\makedefun{deftypefn} % category type name args
-\def\deftypefnheader{\deftypefngeneral{}}
-
-\makedefun{deftypeop} % category class type name args
-\def\deftypeopheader#1 {\deftypeopon{#1\ \putwordon}}
-
-% \deftypeopon {category on}class type name args
-\def\deftypeopon#1#2 {\deftypefngeneral{\putwordon\ \code{#2}}{#1\ \code{#2}} }
-
-% \deftypefngeneral {subind}category type name args
-%
-\def\deftypefngeneral#1#2 #3 #4 #5\endheader{%
-  \dosubind{fn}{\code{#4}}{#1}%
-  \defname{#2}{#3}{#4}\normaldefunargs{#5\unskip}%
-}
-
-% Typed variables (@deftypevr, @deftypecv):
-
-\makedefun{deftypevr}% category type var args
-\def\deftypevrheader{\deftypecvgeneral{}}
-
-\makedefun{deftypecv}% category class type var args
-\def\deftypecvheader#1 {\deftypecvof{#1\ \putwordof}}
-
-% \deftypecvof {category of}class type var args
-\def\deftypecvof#1#2 {\deftypecvgeneral{\putwordof\ \code{#2}}{#1\ \code{#2}} }
-
-% \deftypecvgeneral {subind}category type var args
-%
-\def\deftypecvgeneral#1#2 #3 #4 #5\endheader{%
-  \dosubind{vr}{\code{#4}}{#1}%
-  \defname{#2}{#3}{#4}\normaldefunargs{#5\unskip}%
-}
-
-% Untyped variables (@defvr, @defcv):
-\makedefun{defvr}% category var args
-\def\defvrheader#1 {\deftypevrheader{#1} {} }
-
-\makedefun{defcv}% category class var args
-\def\defcvheader#1 {\defcvof{#1\ \putwordof}}
-
-% \defcvof {category of}class var args
-\def\defcvof#1#2 {\deftypecvof{#1}#2 {} }
-
-% Type (@deftp):
-\makedefun{deftp}% category name args
-\def\deftpheader#1 #2 #3\endheader{%
-  \doind{tp}{\code{#2}}%
-  \defname{#1}{}{#2}\normaldefunargs{#3\unskip}%
-}
-
-% Remaining @defun-like shortcuts:
-\makedefun{defun}     \def\defunheader{\deffnheader{\putwordDeffunc} }
-\makedefun{defmac}    \def\defmacheader{\deffnheader{\putwordDefmac} }
-\makedefun{defspec}   \def\defspecheader{\deffnheader{\putwordDefspec} }
-\makedefun{deftypefun}\def\deftypefunheader{\deftypefnheader{\putwordDeffunc} }
-\makedefun{defvar}    \def\defvarheader{\defvrheader{\putwordDefvar} }
-\makedefun{defopt}    \def\defoptheader{\defvrheader{\putwordDefopt} }
-\makedefun{deftypevar}\def\deftypevarheader{\deftypevrheader{\putwordDefvar} }
-\makedefun{defmethod} \def\defmethodheader{\defopon\putwordMethodon}
-\makedefun{deftypemethod}\def\deftypemethodheader{\deftypeopon\putwordMethodon}
-\makedefun{defivar}    \def\defivarheader{\defcvof\putwordInstanceVariableof}
-\makedefun{deftypeivar}\def\deftypeivarheader{\deftypecvof\putwordInstanceVariableof}
-
-% \defname, which formats the name of the @def (not the args).
-% #1 is the category, such as "Function".
-% #2 is the return type, if any.
-% #3 is the function name.
-% 
-% We are followed by (but not passed) the arguments, if any.
-%
-\def\defname#1#2#3{%
-  % Get the values of \leftskip and \rightskip as they were outside the @def...
-  \advance\leftskip by -\defbodyindent
-  %
-  % How we'll format the type name.  Putting it in brackets helps
-  % distinguish it from the body text that may end up on the next line
-  % just below it.
-  \def\temp{#1}%
-  \setbox0=\hbox{\kern\deflastargmargin \ifx\temp\empty\else [\rm\temp]\fi}
-  %
-  % Figure out line sizes for the paragraph shape.
-  % The first line needs space for \box0; but if \rightskip is nonzero,
-  % we need only space for the part of \box0 which exceeds it:
-  \dimen0=\hsize  \advance\dimen0 by -\wd0  \advance\dimen0 by \rightskip
-  % The continuations:
-  \dimen2=\hsize  \advance\dimen2 by -\defargsindent
-  % (plain.tex says that \dimen1 should be used only as global.)
-  \parshape 2 0in \dimen0 \defargsindent \dimen2
-  %
-  % Put the type name to the right margin.
-  \noindent
-  \hbox to 0pt{%
-    \hfil\box0 \kern-\hsize
-    % \hsize has to be shortened this way:
-    \kern\leftskip
-    % Intentionally do not respect \rightskip, since we need the space.
-  }%
-  %
-  % Allow all lines to be underfull without complaint:
-  \tolerance=10000 \hbadness=10000
-  \exdentamount=\defbodyindent
-  {%
-    % defun fonts. We use typewriter by default (used to be bold) because:
-    % . we're printing identifiers, they should be in tt in principle.
-    % . in languages with many accents, such as Czech or French, it's
-    %   common to leave accents off identifiers.  The result looks ok in
-    %   tt, but exceedingly strange in rm.
-    % . we don't want -- and --- to be treated as ligatures.
-    % . this still does not fix the ?` and !` ligatures, but so far no
-    %   one has made identifiers using them :).
-    \df \tt
-    \def\temp{#2}% return value type
-    \ifx\temp\empty\else \tclose{\temp} \fi
-    #3% output function name
-  }%
-  {\rm\enskip}% hskip 0.5 em of \tenrm
-  %
-  \boldbrax
-  % arguments will be output next, if any.
-}
-
-% This expands the args, with & being treated magically.
-%
-\def\ampdefunargs{%
-  \magicamp
-  \normaldefunargs
-}
-
-% Print arguments in slanted typewriter, prevent hyphenation at `-' chars.
-% 
-\def\normaldefunargs#1{%
-  % use sl by default (not ttsl), inconsistently with using tt for the
-  % name.  This is because literal text is sometimes needed in the
-  % argument list (groff manual), and ttsl and tt are not very
-  % distinguishable.
-  % tt for the names.
-  \df \sl \hyphenchar\font=0
-  % On the other hand, if an argument has two dashes (for instance), we
-  % want a way to get ttsl.  Let's try @var for that.
-  \let\var=\ttslanted
-  #1%
-  \sl\hyphenchar\font=45
-}
-
-% We want ()&[] to print specially on the defun line.
-%
-\def\activeparens{%
-  \catcode`\(=\active \catcode`\)=\active
-  \catcode`\[=\active \catcode`\]=\active
-  \catcode`\&=\active
-}
-
-% Make control sequences which act like normal parenthesis chars.
-\let\lparen = ( \let\rparen = )
-
-% Be sure that we always have a definition for `(', etc.  For example,
-% if the fn name has parens in it, \boldbrax will not be in effect yet,
-% so TeX would otherwise complain about undefined control sequence.
-{
-  \activeparens
-  \global\let(=\lparen \global\let)=\rparen
-  \global\let[=\lbrack \global\let]=\rbrack
-  \global\let& = \&
-
-  \gdef\boldbrax{\let(=\opnr\let)=\clnr\let[=\lbrb\let]=\rbrb}
-  \gdef\magicamp{\let&=\amprm}
-}
-
-\newcount\parencount
-
-% If we encounter &foo, then turn on ()-hacking afterwards
-\newif\ifampseen
-\def\amprm#1 {\ampseentrue{\bf\&#1 }}
-
-\def\parenfont{%
-  \ifampseen
-    % At the first level, print parens in roman,
-    % otherwise use the default font.
-    \ifnum \parencount=1 \rm \fi
-  \else
-    % The \sf parens (in \boldbrax) actually are a little bolder than
-    % the contained text.  This is especially needed for [ and ] .
-    \sf
-  \fi
-}
-\def\infirstlevel#1{%
-  \ifampseen
-    \ifnum\parencount=1
-      #1%
-    \fi
-  \fi
-}
-\def\bfafterword#1 {#1 \bf}
-
-\def\opnr{%
-  \global\advance\parencount by 1
-  {\parenfont(}%
-  \infirstlevel \bfafterword
-}
-\def\clnr{%
-  {\parenfont)}%
-  \infirstlevel \sl
-  \global\advance\parencount by -1
-}
-
-\newcount\brackcount
-\def\lbrb{%
-  \global\advance\brackcount by 1
-  {\bf[}%
-}
-\def\rbrb{%
-  {\bf]}%
-  \global\advance\brackcount by -1
-}
-
-\def\checkparencounts{%
-  \ifnum\parencount=0 \else \badparencount \fi
-  \ifnum\brackcount=0 \else \badbrackcount \fi
-}
-\def\badparencount{%
-  \errmessage{Unbalanced parentheses in @def}%
-  \global\parencount=0
-}
-\def\badbrackcount{%
-  \errmessage{Unbalanced square braces in @def}%
-  \global\brackcount=0
-}
-
-
-\message{macros,}
-% @macro.
-
-% To do this right we need a feature of e-TeX, \scantokens,
-% which we arrange to emulate with a temporary file in ordinary TeX.
-\ifx\eTeXversion\undefined
- \newwrite\macscribble
- \def\scanmacro#1{%
-   \begingroup \newlinechar`\^^M
-   % Undo catcode changes of \startcontents and \doprintindex
-   \catcode`\@=0 \catcode`\\=\other \escapechar=`\@
-   % Append \endinput to make sure that TeX does not see the ending newline.
-   \toks0={#1\endinput}%
-   \immediate\openout\macscribble=\jobname.tmp
-   \immediate\write\macscribble{\the\toks0}%
-   \immediate\closeout\macscribble
-   \let\xeatspaces\eatspaces
-   \input \jobname.tmp
-   \endgroup
-}
-\else
-\def\scanmacro#1{%
-\begingroup \newlinechar`\^^M
-% Undo catcode changes of \startcontents and \doprintindex
-\catcode`\@=0 \catcode`\\=\other \escapechar=`\@
-\let\xeatspaces\eatspaces\scantokens{#1\endinput}\endgroup}
-\fi
-
-\newcount\paramno   % Count of parameters
-\newtoks\macname    % Macro name
-\newif\ifrecursive  % Is it recursive?
-\def\macrolist{}    % List of all defined macros in the form
-                    % \do\macro1\do\macro2...
-
-% Utility routines.
-% Thisdoes \let #1 = #2, except with \csnames.
-\def\cslet#1#2{%
-\expandafter\expandafter
-\expandafter\let
-\expandafter\expandafter
-\csname#1\endcsname
-\csname#2\endcsname}
-
-% Trim leading and trailing spaces off a string.
-% Concepts from aro-bend problem 15 (see CTAN).
-{\catcode`\@=11
-\gdef\eatspaces #1{\expandafter\trim@\expandafter{#1 }}
-\gdef\trim@ #1{\trim@@ @#1 @ #1 @ @@}
-\gdef\trim@@ #1@ #2@ #3@@{\trim@@@\empty #2 @}
-\def\unbrace#1{#1}
-\unbrace{\gdef\trim@@@ #1 } #2@{#1}
-}
-
-% Trim a single trailing ^^M off a string.
-{\catcode`\^^M=\other \catcode`\Q=3%
-\gdef\eatcr #1{\eatcra #1Q^^MQ}%
-\gdef\eatcra#1^^MQ{\eatcrb#1Q}%
-\gdef\eatcrb#1Q#2Q{#1}%
-}
-
-% Macro bodies are absorbed as an argument in a context where
-% all characters are catcode 10, 11 or 12, except \ which is active
-% (as in normal texinfo). It is necessary to change the definition of \.
-
-% It's necessary to have hard CRs when the macro is executed. This is
-% done by  making ^^M (\endlinechar) catcode 12 when reading the macro
-% body, and then making it the \newlinechar in \scanmacro.
-
-\def\macrobodyctxt{%
-  \catcode`\~=\other
-  \catcode`\^=\other
-  \catcode`\_=\other
-  \catcode`\|=\other
-  \catcode`\<=\other
-  \catcode`\>=\other
-  \catcode`\+=\other
-  \catcode`\{=\other
-  \catcode`\}=\other
-  \catcode`\@=\other
-  \catcode`\^^M=\other
-  \usembodybackslash}
-
-\def\macroargctxt{%
-  \catcode`\~=\other
-  \catcode`\^=\other
-  \catcode`\_=\other
-  \catcode`\|=\other
-  \catcode`\<=\other
-  \catcode`\>=\other
-  \catcode`\+=\other
-  \catcode`\@=\other
-  \catcode`\\=\other}
-
-% \mbodybackslash is the definition of \ in @macro bodies.
-% It maps \foo\ => \csname macarg.foo\endcsname => #N
-% where N is the macro parameter number.
-% We define \csname macarg.\endcsname to be \realbackslash, so
-% \\ in macro replacement text gets you a backslash.
-
-{\catcode`@=0 @catcode`@\=@active
- @gdef@usembodybackslash{@let\=@mbodybackslash}
- @gdef@mbodybackslash#1\{@csname macarg.#1@endcsname}
-}
-\expandafter\def\csname macarg.\endcsname{\realbackslash}
-
-\def\macro{\recursivefalse\parsearg\macroxxx}
-\def\rmacro{\recursivetrue\parsearg\macroxxx}
-
-\def\macroxxx#1{%
-  \getargs{#1}%           now \macname is the macname and \argl the arglist
-  \ifx\argl\empty       % no arguments
-     \paramno=0%
-  \else
-     \expandafter\parsemargdef \argl;%
-  \fi
-  \if1\csname ismacro.\the\macname\endcsname
-     \message{Warning: redefining \the\macname}%
-  \else
-     \expandafter\ifx\csname \the\macname\endcsname \relax
-     \else \errmessage{Macro name \the\macname\space already defined}\fi
-     \global\cslet{macsave.\the\macname}{\the\macname}%
-     \global\expandafter\let\csname ismacro.\the\macname\endcsname=1%
-     % Add the macroname to \macrolist
-     \toks0 = \expandafter{\macrolist\do}%
-     \xdef\macrolist{\the\toks0
-       \expandafter\noexpand\csname\the\macname\endcsname}%
-  \fi
-  \begingroup \macrobodyctxt
-  \ifrecursive \expandafter\parsermacbody
-  \else \expandafter\parsemacbody
-  \fi}
-
-\defparsearg\unmacro{%
-  \if1\csname ismacro.#1\endcsname
-    \global\cslet{#1}{macsave.#1}%
-    \global\expandafter\let \csname ismacro.#1\endcsname=0%
-    % Remove the macro name from \macrolist:
-    \begingroup
-      \expandafter\let\csname#1\endcsname \relax
-      \let\do\unmacrodo
-      \xdef\macrolist{\macrolist}%
-    \endgroup
-  \else
-    \errmessage{Macro #1 not defined}%
-  \fi
-}
-
-% Called by \do from \dounmacro on each macro.  The idea is to omit any
-% macro definitions that have been changed to \relax.
-%
-\def\unmacrodo#1{%
-  \ifx#1\relax
-    % remove this
-  \else
-    \noexpand\do \noexpand #1%
-  \fi
-}
-
-% This makes use of the obscure feature that if the last token of a
-% <parameter list> is #, then the preceding argument is delimited by
-% an opening brace, and that opening brace is not consumed.
-\def\getargs#1{\getargsxxx#1{}}
-\def\getargsxxx#1#{\getmacname #1 \relax\getmacargs}
-\def\getmacname #1 #2\relax{\macname={#1}}
-\def\getmacargs#1{\def\argl{#1}}
-
-% Parse the optional {params} list.  Set up \paramno and \paramlist
-% so \defmacro knows what to do.  Define \macarg.blah for each blah
-% in the params list, to be ##N where N is the position in that list.
-% That gets used by \mbodybackslash (above).
-
-% We need to get `macro parameter char #' into several definitions.
-% The technique used is stolen from LaTeX:  let \hash be something
-% unexpandable, insert that wherever you need a #, and then redefine
-% it to # just before using the token list produced.
-%
-% The same technique is used to protect \eatspaces till just before
-% the macro is used.
-
-\def\parsemargdef#1;{\paramno=0\def\paramlist{}%
-        \let\hash\relax\let\xeatspaces\relax\parsemargdefxxx#1,;,}
-\def\parsemargdefxxx#1,{%
-  \if#1;\let\next=\relax
-  \else \let\next=\parsemargdefxxx
-    \advance\paramno by 1%
-    \expandafter\edef\csname macarg.\eatspaces{#1}\endcsname
-        {\xeatspaces{\hash\the\paramno}}%
-    \edef\paramlist{\paramlist\hash\the\paramno,}%
-  \fi\next}
-
-% These two commands read recursive and nonrecursive macro bodies.
-% (They're different since rec and nonrec macros end differently.)
-
-\long\def\parsemacbody#1@end macro%
-{\xdef\temp{\eatcr{#1}}\endgroup\defmacro}%
-\long\def\parsermacbody#1@end rmacro%
-{\xdef\temp{\eatcr{#1}}\endgroup\defmacro}%
-
-% This defines the macro itself. There are six cases: recursive and
-% nonrecursive macros of zero, one, and many arguments.
-% Much magic with \expandafter here.
-% \xdef is used so that macro definitions will survive the file
-% they're defined in; @include reads the file inside a group.
-\def\defmacro{%
-  \let\hash=##% convert placeholders to macro parameter chars
-  \ifrecursive
-    \ifcase\paramno
-    % 0
-      \expandafter\xdef\csname\the\macname\endcsname{%
-        \noexpand\scanmacro{\temp}}%
-    \or % 1
-      \expandafter\xdef\csname\the\macname\endcsname{%
-         \bgroup\noexpand\macroargctxt
-         \noexpand\braceorline
-         \expandafter\noexpand\csname\the\macname xxx\endcsname}%
-      \expandafter\xdef\csname\the\macname xxx\endcsname##1{%
-         \egroup\noexpand\scanmacro{\temp}}%
-    \else % many
-      \expandafter\xdef\csname\the\macname\endcsname{%
-         \bgroup\noexpand\macroargctxt
-         \noexpand\csname\the\macname xx\endcsname}%
-      \expandafter\xdef\csname\the\macname xx\endcsname##1{%
-          \expandafter\noexpand\csname\the\macname xxx\endcsname ##1,}%
-      \expandafter\expandafter
-      \expandafter\xdef
-      \expandafter\expandafter
-        \csname\the\macname xxx\endcsname
-          \paramlist{\egroup\noexpand\scanmacro{\temp}}%
-    \fi
-  \else
-    \ifcase\paramno
-    % 0
-      \expandafter\xdef\csname\the\macname\endcsname{%
-        \noexpand\norecurse{\the\macname}%
-        \noexpand\scanmacro{\temp}\egroup}%
-    \or % 1
-      \expandafter\xdef\csname\the\macname\endcsname{%
-         \bgroup\noexpand\macroargctxt
-         \noexpand\braceorline
-         \expandafter\noexpand\csname\the\macname xxx\endcsname}%
-      \expandafter\xdef\csname\the\macname xxx\endcsname##1{%
-        \egroup
-        \noexpand\norecurse{\the\macname}%
-        \noexpand\scanmacro{\temp}\egroup}%
-    \else % many
-      \expandafter\xdef\csname\the\macname\endcsname{%
-         \bgroup\noexpand\macroargctxt
-         \expandafter\noexpand\csname\the\macname xx\endcsname}%
-      \expandafter\xdef\csname\the\macname xx\endcsname##1{%
-          \expandafter\noexpand\csname\the\macname xxx\endcsname ##1,}%
-      \expandafter\expandafter
-      \expandafter\xdef
-      \expandafter\expandafter
-      \csname\the\macname xxx\endcsname
-      \paramlist{%
-          \egroup
-          \noexpand\norecurse{\the\macname}%
-          \noexpand\scanmacro{\temp}\egroup}%
-    \fi
-  \fi}
-
-\def\norecurse#1{\bgroup\cslet{#1}{macsave.#1}}
-
-% \braceorline decides whether the next nonwhitespace character is a
-% {.  If so it reads up to the closing }, if not, it reads the whole
-% line.  Whatever was read is then fed to the next control sequence
-% as an argument (by \parsebrace or \parsearg)
-\def\braceorline#1{\let\next=#1\futurelet\nchar\braceorlinexxx}
-\def\braceorlinexxx{%
-  \ifx\nchar\bgroup\else
-    \expandafter\parsearg
-  \fi \next}
-
-% We mant to disable all macros during \shipout so that they are not
-% expanded by \write.
-\def\turnoffmacros{\begingroup \def\do##1{\let\noexpand##1=\relax}%
-  \edef\next{\macrolist}\expandafter\endgroup\next}
-
-
-% @alias.
-% We need some trickery to remove the optional spaces around the equal
-% sign.  Just make them active and then expand them all to nothing.
-\def\alias{\parseargusing\obeyspaces\aliasxxx}
-\def\aliasxxx #1{\aliasyyy#1\relax}
-\def\aliasyyy #1=#2\relax{%
-  {%
-    \expandafter\let\obeyedspace=\empty
-    \xdef\next{\global\let\makecsname{#1}=\makecsname{#2}}%
-  }%
-  \next
-}
-
-
-\message{cross references,}
-
-\newwrite\auxfile
-
-\newif\ifhavexrefs    % True if xref values are known.
-\newif\ifwarnedxrefs  % True if we warned once that they aren't known.
-
-% @inforef is relatively simple.
-\def\inforef #1{\inforefzzz #1,,,,**}
-\def\inforefzzz #1,#2,#3,#4**{\putwordSee{} \putwordInfo{} \putwordfile{} \file{\ignorespaces #3{}},
-  node \samp{\ignorespaces#1{}}}
-
-% @node's only job in TeX is to define \lastnode, which is used in
-% cross-references.
-\defparsearg\node{\ENVcheck\nodexxx #1,\finishnodeparse}
-\def\nodexxx#1,#2\finishnodeparse{\gdef\lastnode{#1}}
-\let\nwnode=\node
-\let\lastnode=\empty
-
-% Write a cross-reference definition for the current node.  #1 is the
-% type (Ynumbered, Yappendix, Ynothing).
-% 
-\def\donoderef#1{%
-  \ifx\lastnode\empty\else
-    \setref{\lastnode}{#1}%
-    \global\let\lastnode=\empty
-  \fi
-}
-
-% @anchor{NAME} -- define xref target at arbitrary point.
-%
-\newcount\savesfregister
-%
-\gdef\savesf{\relax \ifhmode \savesfregister=\spacefactor \fi}
-\gdef\restoresf{\relax \ifhmode \spacefactor=\savesfregister \fi}
-\gdef\anchor#1{%
-  \savesf
-  \setref{#1}{Ynothing}%
-  \restoresf
-  \ignorespaces
-}
-
-% \setref{NAME}{SNT} defines a cross-reference point NAME (a node or an
-% anchor), which consists of three parts:
-% 1) NAME-title - the current sectioning name, taken from \thissection;
-% 2) NAME-snt   - section number and type, defined as the SNT arg;
-% 3) NAME-pg    - the page number.
-% This is called from \donoderef, \anchor, and \dofloat.
-% 
-% We take care not to fully expand the title, since it may contain
-% arbitrary macros.
-%
-% Use \turnoffactive so that punctuation chars such as underscore
-% and backslash work in node names.
-%
-\def\setref#1#2{%
-  \pdfmkdest{#1}%
-  \iflinks
-    {%
-      \turnoffactive
-      \edef\writexrdef##1##2{%
-	\write\auxfile{@xrdef{#1-% #1 of \setref, expanded by the \edef
-	  ##1}{##2}}% these are parameters of \writexrdef
-      }%
-      \toks0 = \expandafter{\thissection}%
-      \immediate \writexrdef{title}{\the\toks0 }%
-      \immediate \writexrdef{snt}{\csname #2\endcsname}% \Ynumbered etc.
-      \writexrdef{pg}{\folio}% will be written later, during \shipout
-    }%
-  \fi
-}
-
-% @xref, @pxref, and @ref generate cross-references.  For \xrefX, #1 is
-% the node name, #2 the name of the Info cross-reference, #3 the printed
-% node name, #4 the name of the Info file, #5 the name of the printed
-% manual.  All but the node name can be omitted.
-%
-\def\pxref#1{\putwordsee{} \xrefX[#1,,,,,,,]}
-\def\xref#1{\putwordSee{} \xrefX[#1,,,,,,,]}
-\def\ref#1{\xrefX[#1,,,,,,,]}
-\def\xrefX[#1,#2,#3,#4,#5,#6]{\begingroup
-  \unsepspaces
-  \def\printedmanual{\ignorespaces #5}%
-  \def\printedrefname{\ignorespaces #3}%
-  \setbox1=\hbox{\printedmanual\unskip}%
-  \setbox0=\hbox{\printedrefname\unskip}%
-  \ifdim \wd0 = 0pt
-    % No printed node name was explicitly given.
-    \expandafter\ifx\csname SETxref-automatic-section-title\endcsname\relax
-      % Use the node name inside the square brackets.
-      \def\printedrefname{\ignorespaces #1}%
-    \else
-      % Use the actual chapter/section title appear inside
-      % the square brackets.  Use the real section title if we have it.
-      \ifdim \wd1 > 0pt
-        % It is in another manual, so we don't have it.
-        \def\printedrefname{\ignorespaces #1}%
-      \else
-        \ifhavexrefs
-          % We know the real title if we have the xref values.
-          \def\printedrefname{\refx{#1-title}{}}%
-        \else
-          % Otherwise just copy the Info node name.
-          \def\printedrefname{\ignorespaces #1}%
-        \fi%
-      \fi
-    \fi
-  \fi
-  %
-  % Make link in pdf output.
-  % 
-  \ifpdf
-    \leavevmode
-    \getfilename{#4}%
-    {\turnoffactive \otherbackslash
-     \ifnum\filenamelength>0
-       \startlink attr{/Border [0 0 0]}%
-         goto file{\the\filename.pdf} name{#1}%
-     \else
-       \startlink attr{/Border [0 0 0]}%
-         goto name{\pdfmkpgn{#1}}%
-     \fi
-    }%
-    \linkcolor
-  \fi
-  %
-  % Float references are printed completely differently: "Figure 1.2"
-  % instead of "[somenode], p.3".  We distinguish them by the
-  % LABEL-title being set to a magic string.
-  \expandafter\ifx \csname X#1-title\endcsname \floatmagic
-    % If the user specified the print name (third arg) to the ref,
-    % print it instead of our usual "Figure 1.2".
-    \ifdim\wd0 = 0pt
-      \refx{#1-snt}%
-    \else
-      \printedrefname
-    \fi
-    %
-    % if the user also gave the printed manual name (fifth arg), append
-    % "in MANUALNAME". 
-    \ifdim \wd1 > 0pt
-      \space \putwordin{} \cite{\printedmanual}%
-    \fi
-  \else
-  %
-  % If we use \unhbox0 and \unhbox1 to print the node names, TeX does not
-  % insert empty discretionaries after hyphens, which means that it will
-  % not find a line break at a hyphen in a node names.  Since some manuals
-  % are best written with fairly long node names, containing hyphens, this
-  % is a loss.  Therefore, we give the text of the node name again, so it
-  % is as if TeX is seeing it for the first time.
-  \ifdim \wd1 > 0pt
-    \putwordsection{} ``\printedrefname'' \putwordin{} \cite{\printedmanual}%
-  \else
-    % _ (for example) has to be the character _ for the purposes of the
-    % control sequence corresponding to the node, but it has to expand
-    % into the usual \leavevmode...\vrule stuff for purposes of
-    % printing. So we \turnoffactive for the \refx-snt, back on for the
-    % printing, back off for the \refx-pg.
-    {\turnoffactive \otherbackslash
-     % Only output a following space if the -snt ref is nonempty; for
-     % @unnumbered and @anchor, it won't be.
-     \setbox2 = \hbox{\ignorespaces \refx{#1-snt}{}}%
-     \ifdim \wd2 > 0pt \refx{#1-snt}\space\fi
-    }%
-    % output the `[mynode]' via a macro.
-    \xrefprintnodename\printedrefname
-    %
-    % But we always want a comma and a space:
-    ,\space
-    %
-    % output the `page 3'.
-    \turnoffactive \otherbackslash \putwordpage\tie\refx{#1-pg}{}%
-  \fi
-  \endlink
-  \fi
-\endgroup}
-
-% This macro is called from \xrefX for the `[nodename]' part of xref
-% output.  It's a separate macro only so it can be changed more easily,
-% since square brackets don't work well in some documents.  Particularly
-% one that Bob is working on :).
-%
-\def\xrefprintnodename#1{[#1]}
-
-% Things referred to by \setref.
-%
-\def\Ynothing{}
-\def\Yomitfromtoc{}
-\def\Ynumbered{%
-  \ifnum\secno=0
-    \putwordChapter@tie \the\chapno
-  \else \ifnum\subsecno=0
-    \putwordSection@tie \the\chapno.\the\secno
-  \else \ifnum\subsubsecno=0
-    \putwordSection@tie \the\chapno.\the\secno.\the\subsecno
-  \else
-    \putwordSection@tie \the\chapno.\the\secno.\the\subsecno.\the\subsubsecno
-  \fi\fi\fi
-}
-\def\Yappendix{%
-  \ifnum\secno=0
-     \putwordAppendix@tie @char\the\appendixno{}%
-  \else \ifnum\subsecno=0
-     \putwordSection@tie @char\the\appendixno.\the\secno
-  \else \ifnum\subsubsecno=0
-    \putwordSection@tie @char\the\appendixno.\the\secno.\the\subsecno
-  \else
-    \putwordSection@tie
-      @char\the\appendixno.\the\secno.\the\subsecno.\the\subsubsecno
-  \fi\fi\fi
-}
-
-% Define \refx{NAME}{SUFFIX} to reference a cross-reference string named NAME.
-% If its value is nonempty, SUFFIX is output afterward.
-%
-\def\refx#1#2{%
-  {%
-    \indexnofonts
-    \otherbackslash
-    \expandafter\global\expandafter\let\expandafter\thisrefX
-      \csname X#1\endcsname
-  }%
-  \ifx\thisrefX\relax
-    % If not defined, say something at least.
-    \angleleft un\-de\-fined\angleright
-    \iflinks
-      \ifhavexrefs
-        \message{\linenumber Undefined cross reference `#1'.}%
-      \else
-        \ifwarnedxrefs\else
-          \global\warnedxrefstrue
-          \message{Cross reference values unknown; you must run TeX again.}%
-        \fi
-      \fi
-    \fi
-  \else
-    % It's defined, so just use it.
-    \thisrefX
-  \fi
-  #2% Output the suffix in any case.
-}
-
-% This is the macro invoked by entries in the aux file.
-%
-\def\xrdef#1{\expandafter\gdef\csname X#1\endcsname}
-
-% Read the last existing aux file, if any.  No error if none exists.
-% Open the new one.
-% 
-\def\readauxfile{\begingroup
-  \catcode`\^^@=\other
-  \catcode`\^^A=\other
-  \catcode`\^^B=\other
-  \catcode`\^^C=\other
-  \catcode`\^^D=\other
-  \catcode`\^^E=\other
-  \catcode`\^^F=\other
-  \catcode`\^^G=\other
-  \catcode`\^^H=\other
-  \catcode`\^^K=\other
-  \catcode`\^^L=\other
-  \catcode`\^^N=\other
-  \catcode`\^^P=\other
-  \catcode`\^^Q=\other
-  \catcode`\^^R=\other
-  \catcode`\^^S=\other
-  \catcode`\^^T=\other
-  \catcode`\^^U=\other
-  \catcode`\^^V=\other
-  \catcode`\^^W=\other
-  \catcode`\^^X=\other
-  \catcode`\^^Z=\other
-  \catcode`\^^[=\other
-  \catcode`\^^\=\other
-  \catcode`\^^]=\other
-  \catcode`\^^^=\other
-  \catcode`\^^_=\other
-  % It was suggested to set the catcode of ^ to 7, which would allow ^^e4 etc.
-  % in xref tags, i.e., node names.  But since ^^e4 notation isn't
-  % supported in the main text, it doesn't seem desirable.  Furthermore,
-  % that is not enough: for node names that actually contain a ^
-  % character, we would end up writing a line like this: 'xrdef {'hat
-  % b-title}{'hat b} and \xrdef does a \csname...\endcsname on the first
-  % argument, and \hat is not an expandable control sequence.  It could
-  % all be worked out, but why?  Either we support ^^ or we don't.
-  %
-  % The other change necessary for this was to define \auxhat:
-  % \def\auxhat{\def^{'hat }}% extra space so ok if followed by letter
-  % and then to call \auxhat in \setq.
-  %
-  \catcode`\^=\other
-  %
-  % Special characters.  Should be turned off anyway, but...
-  \catcode`\~=\other
-  \catcode`\[=\other
-  \catcode`\]=\other
-  \catcode`\"=\other
-  \catcode`\_=\other
-  \catcode`\|=\other
-  \catcode`\<=\other
-  \catcode`\>=\other
-  \catcode`\$=\other
-  \catcode`\#=\other
-  \catcode`\&=\other
-  \catcode`\%=\other
-  \catcode`+=\other % avoid \+ for paranoia even though we've turned it off
-  %
-  % Make the characters 128-255 be printing characters
-  {%
-    \count 1=128
-    \def\loop{%
-      \catcode\count 1=\other
-      \advance\count 1 by 1
-      \ifnum \count 1<256 \loop \fi
-    }%
-  }%
-  %
-  % Turn off \ as an escape so we do not lose on
-  % entries which were dumped with control sequences in their names.
-  % For example, @xrdef{$\leq $-fun}{page ...} made by @defun ^^
-  % Reference to such entries still does not work the way one would wish,
-  % but at least they do not bomb out when the aux file is read in.
-  \catcode`\\=\other
-  %
-  % @ is our escape character in .aux files.
-  \catcode`\{=1
-  \catcode`\}=2
-  \catcode`\@=0
-  %
-  \openin 1 \jobname.aux
-  \ifeof 1 \else
-    \closein 1
-    \input \jobname.aux
-    \global\havexrefstrue
-  \fi
-  % Open the new aux file right away (otherwise the \immediate's in
-  % \setref cause spurious terminal output).  TeX will close it
-  % automatically at exit.
-  \immediate\openout\auxfile=\jobname.aux
-\endgroup}
-
-
-\message{insertions,}
-% including footnotes.
-
-\newcount \footnoteno
-
-% The trailing space in the following definition for supereject is
-% vital for proper filling; pages come out unaligned when you do a
-% pagealignmacro call if that space before the closing brace is
-% removed. (Generally, numeric constants should always be followed by a
-% space to prevent strange expansion errors.)
-\def\supereject{\par\penalty -20000\footnoteno =0 }
-
-% @footnotestyle is meaningful for info output only.
-\let\footnotestyle=\comment
-
-{\catcode `\@=11
-%
-% Auto-number footnotes.  Otherwise like plain.
-\gdef\footnote{%
-  \let\indent=\ptexindent
-  \let\noindent=\ptexnoindent
-  \global\advance\footnoteno by \@ne
-  \edef\thisfootno{$^{\the\footnoteno}$}%
-  %
-  % In case the footnote comes at the end of a sentence, preserve the
-  % extra spacing after we do the footnote number.
-  \let\@sf\empty
-  \ifhmode\edef\@sf{\spacefactor\the\spacefactor}\ptexslash\fi
-  %
-  % Remove inadvertent blank space before typesetting the footnote number.
-  \unskip
-  \thisfootno\@sf
-  \dofootnote
-}%
-
-% Don't bother with the trickery in plain.tex to not require the
-% footnote text as a parameter.  Our footnotes don't need to be so general.
-%
-% Oh yes, they do; otherwise, @ifset (and anything else that uses
-% \parseargline) fails inside footnotes because the tokens are fixed when
-% the footnote is read.  --karl, 16nov96.
-%
-\gdef\dofootnote{%
-  \insert\footins\bgroup
-  % We want to typeset this text as a normal paragraph, even if the
-  % footnote reference occurs in (for example) a display environment.
-  % So reset some parameters.
-  \hsize=\pagewidth
-  \interlinepenalty\interfootnotelinepenalty
-  \splittopskip\ht\strutbox % top baseline for broken footnotes
-  \splitmaxdepth\dp\strutbox
-  \floatingpenalty\@MM
-  \leftskip\z@skip
-  \rightskip\z@skip
-  \spaceskip\z@skip
-  \xspaceskip\z@skip
-  \parindent\defaultparindent
-  %
-  \smallfonts \rm
-  %
-  % Because we use hanging indentation in footnotes, a @noindent appears
-  % to exdent this text, so make it be a no-op.  makeinfo does not use
-  % hanging indentation so @noindent can still be needed within footnote
-  % text after an @example or the like (not that this is good style).
-  \let\noindent = \relax
-  %
-  % Hang the footnote text off the number.  Use \everypar in case the
-  % footnote extends for more than one paragraph.
-  \everypar = {\hang}%
-  \textindent{\thisfootno}%
-  %
-  % Don't crash into the line above the footnote text.  Since this
-  % expands into a box, it must come within the paragraph, lest it
-  % provide a place where TeX can split the footnote.
-  \footstrut
-  \futurelet\next\fo@t
-}
-}%end \catcode `\@=11
-
-% In case a @footnote appears in a vbox, save the footnote text and create
-% the real \insert just after the vbox finished.  Otherwise, the insertion
-% would be lost.
-% Similarily, if a @footnote appears inside an alignment, save the footnote
-% text to a box and make the \insert when a row of the table is finished.
-% And the same can be done for other insert classes.  --kasal, 16nov03.
-
-% Replace the \insert primitive by a cheating macro.
-% Deeper inside, just make sure that the saved insertions are not spilled
-% out prematurely.
-%
-\def\startsavinginserts{%
-  \ifx \insert\ptexinsert
-    \let\insert\saveinsert
-  \else
-    \let\checkinserts\relax
-  \fi
-}
-
-% This \insert replacements works for both \insert\footins{xx} and
-% \insert\footins\bgroup xx\egroup, but it doesn't work for \insert27{xx}.
-%
-\def\saveinsert#1{%
-  \edef\next{\noexpand\savetobox \makeSAVEname#1}%
-  \afterassignment\next
-  % swallow the left brace
-  \let\temp =
-}
-\def\makeSAVEname#1{\makecsname{SAVE\expandafter\gobble\string#1}}
-\def\savetobox#1{\global\setbox#1 = \vbox\bgroup \unvbox#1}
-
-\def\checksaveins#1{\ifvoid#1\else \placesaveins#1\fi}
-
-\def\placesaveins#1{%
-  \ptexinsert \csname\expandafter\gobblesave\string#1\endcsname
-    {\box#1}%
-}
-
-% eat @SAVE -- beware, all of them have catcode \other:
-{
-  \def\dospecials{\do S\do A\do V\do E} \uncatcodespecials  %  ;-)
-  \gdef\gobblesave @SAVE{}
-}
-
-% initialization:
-\def\newsaveins #1{%
-  \edef\next{\noexpand\newsaveinsX \makeSAVEname#1}%
-  \next
-}
-\def\newsaveinsX #1{%
-  \csname newbox\endcsname #1% \newbox cannot be pronounced, as it is outer
-  \expandafter\def\expandafter\checkinserts\expandafter{\checkinserts
-    \checksaveins#1}%
-}
-
-% initialize:
-\let\checkinserts\empty
-\newsaveins\footins
-\newsaveins\margin
-
-
-% @image.  We use the macros from epsf.tex to support this.
-% If epsf.tex is not installed and @image is used, we complain.
-%
-% Check for and read epsf.tex up front.  If we read it only at @image
-% time, we might be inside a group, and then its definitions would get
-% undone and the next image would fail.
-\openin 1 = epsf.tex
-\ifeof 1 \else
-  \closein 1
-  % Do not bother showing banner with epsf.tex v2.7k (available in
-  % doc/epsf.tex and on ctan).
-  \def\epsfannounce{\toks0 = }%
-  \input epsf.tex
-\fi
-%
-% We will only complain once about lack of epsf.tex.
-\newif\ifwarnednoepsf
-\newhelp\noepsfhelp{epsf.tex must be installed for images to
-  work.  It is also included in the Texinfo distribution, or you can get
-  it from ftp://tug.org/tex/epsf.tex.}
-%
-\def\image#1{%
-  \ifx\epsfbox\undefined
-    \ifwarnednoepsf \else
-      \errhelp = \noepsfhelp
-      \errmessage{epsf.tex not found, images will be ignored}%
-      \global\warnednoepsftrue
-    \fi
-  \else
-    \imagexxx #1,,,,,\finish
-  \fi
-}
-%
-% Arguments to @image:
-% #1 is (mandatory) image filename; we tack on .eps extension.
-% #2 is (optional) width, #3 is (optional) height.
-% #4 is (ignored optional) html alt text.
-% #5 is (ignored optional) extension.
-% #6 is just the usual extra ignored arg for parsing this stuff.
-\newif\ifimagevmode
-\def\imagexxx#1,#2,#3,#4,#5,#6\finish{\begingroup
-  \catcode`\^^M = 5     % in case we're inside an example
-  \normalturnoffactive  % allow _ et al. in names
-  % If the image is by itself, center it.
-  \ifvmode
-    \imagevmodetrue
-    \nobreak\bigskip
-    % Usually we'll have text after the image which will insert
-    % \parskip glue, so insert it here too to equalize the space
-    % above and below.
-    \nobreak\vskip\parskip
-    \nobreak
-    \line\bgroup\hss
-  \fi
-  %
-  % Output the image.
-  \ifpdf
-    \dopdfimage{#1}{#2}{#3}%
-  \else
-    % \epsfbox itself resets \epsf?size at each figure.
-    \setbox0 = \hbox{\ignorespaces #2}\ifdim\wd0 > 0pt \epsfxsize=#2\relax \fi
-    \setbox0 = \hbox{\ignorespaces #3}\ifdim\wd0 > 0pt \epsfysize=#3\relax \fi
-    \epsfbox{#1.eps}%
-  \fi
-  %
-  \ifimagevmode \hss \egroup \bigbreak \fi  % space after the image
-\endgroup}
-
-
-% @float FLOATTYPE,LOC ... @end float for displayed figures, tables, etc.
-% We don't actually implement floating yet, we just plop the float "here".
-% But it seemed the best name for the future.
-% 
-\def\float{\parsearg\parsefloat}
-\def\parsefloat#1{\dofloat #1,,,\finish}
-
-% #1 is the optional FLOATTYPE, the text label for this float, typically
-% "Figure", "Table", "Example", etc.  Can't contain commas.  If omitted,
-% this float will not be numbered and cannot be referred to.
-% 
-% #2 is the optional xref label.  Also must be present for the float to
-% be referable.
-% 
-% #3 is the optional positioning argument; for now, it is ignored.  It
-% will somehow specify the positions allowed to float to (here, top, bottom).
-% 
-% We keep a separate counter for each FLOATTYPE, which we reset at each
-% chapter-level command.
-\let\resetallfloatnos=\empty
-%
-\def\dofloat#1,#2,#3,#4\finish{\vtop\bgroup
-  \def\floattype{#1}%
-  \def\floatlabel{#2}%
-  \def\floatloc{#3}% we do nothing with this yet.
-  % xx should we indent the whole thing? center it?
-  % 
-  % allow @[short]caption now.
-  \let\thiscaption=\empty
-  \def\caption##1{\def\thiscaption{##1}}%
-  %
-  \let\thisshortcaption=\empty
-  \def\shortcaption##1{\def\thisshortcaption{##1}}%
-  %
-  \ifx\floattype\empty \else
-    % For now, assume the FLOATTYPE is entirely letters, so we just use it
-    % in a control sequence name literally.  We want each FLOATTYPE to be
-    % numbered separately (Figure 1, Table 1, Figure 2, ...).
-    \expandafter\let\expandafter\floatno\csname\floattype floatno\endcsname
-    \ifx\floatno\relax
-      % Haven't seen this figure type before, so need to define
-      % the counter for it, and then redefine \floatno.
-      \expandafter\innernewcount\csname\floattype floatno\endcsname
-      \expandafter\let\expandafter\floatno\csname\floattype floatno\endcsname
-      %
-      % Remember to reset this floatno at the next chap.
-      \toks0 = \expandafter{\resetallfloatnos}%
-      \xdef\resetallfloatnos{\the\toks0 \makecsname{\floattype floatno}=0 }%
-    \fi
-    \global\advance\floatno by 1
-    %
-    \ifx\floatlabel\empty \else
-      {%
-        % This magic value for \thissection is output by \setref as the
-        % XREFLABEL-title value.  \xrefX uses it to distinguish float
-        % labels (which have a completely different output format) from
-        % nodes and xref labels.
-        % 
-        \let\thissection=\floatmagic
-        \setref{\floatlabel}{Yfloat}%
-      }%
-    \fi
-  \fi
-  %
-  \def\Efloat{%
-    % we have four possibilities:
-    % @float Foo & @caption{Cap}: Foo 1.1: Cap
-    % @float Foo & no caption:    Foo 1.1
-    % @float & @caption{cap}:     Cap
-    % @float & no caption:
-    %
-    \let\printedsomething = \empty
-    %
-    \ifx\floattype\empty \else
-      \vskip.5\parskip  % space above caption
-      %
-      % Print the float number preceded by the chapter-level number
-      % (empty in the case of unnumbered).  Although there are other
-      % styles of float numbering, we hardwire this one.
-      \floattype\space\chaplevelprefix\the\floatno
-      \let\printedsomething = t%
-    \fi
-    %
-    \ifx\thiscaption\empty \else
-      \ifx\printedsomething\empty
-        \vskip.5\parskip  % space above caption
-      \else
-        :\space  % had a number, so print a colon.
-      \fi
-      %
-      % Print caption text.
-      \thiscaption
-      \let\printedsomething = t%
-    \fi
-    %
-    % Space below caption, if we printed anything.
-    \ifx\printedsomething\empty \else \vskip\parskip \fi
-    %
-    \egroup  % end of \vtop
-  }%
-}
-
-% \setref calls this to get the XREFLABEL-snt value.  We want an @xref
-% to the FLOATLABEL to expand to "Figure 3.1".  We call \setref when we
-% first read the @float command.
-% 
-\def\Yfloat{\floattype @tie{}\chaplevelprefix\the\floatno}%
-
-\def\floatmagic{!!float!!}
-
-% @listoffloats FLOATTYPE - print a list of floats like a table of contents.
-\def\listoffloats{\parsearg\dolistoffloats}
-\def\dolistoffloats#1{%xx
-}
-
-% Default definitions.
-\def\caption{\errmessage{@caption while not in @float environment}}
-\def\shortcaption{\errmessage{@shortcaption while not in @float environment}}
-
-
-\message{localization,}
-% and i18n.
-
-% @documentlanguage is usually given very early, just after
-% @setfilename.  If done too late, it may not override everything
-% properly.  Single argument is the language abbreviation.
-% It would be nice if we could set up a hyphenation file here.
-%
-\defparsearg\documentlanguage{%
-  \tex % read txi-??.tex file in plain TeX.
-  % Read the file if it exists.
-  \openin 1 txi-#1.tex
-  \ifeof1
-    \errhelp = \nolanghelp
-    \errmessage{Cannot read language file txi-#1.tex}%
-    \let\temp = \relax
-  \else
-    \def\temp{\input txi-#1.tex }%
-  \fi
-  \temp
-  \endgroup
-}
-\newhelp\nolanghelp{The given language definition file cannot be found or
-is empty.  Maybe you need to install it?  In the current directory
-should work if nowhere else does.}
-
-
-% @documentencoding should change something in TeX eventually, most
-% likely, but for now just recognize it.
-\let\documentencoding = \comment
-
-
-% Page size parameters.
-%
-\newdimen\defaultparindent \defaultparindent = 15pt
-
-\chapheadingskip = 15pt plus 4pt minus 2pt
-\secheadingskip = 12pt plus 3pt minus 2pt
-\subsecheadingskip = 9pt plus 2pt minus 2pt
-
-% Prevent underfull vbox error messages.
-\vbadness = 10000
-
-% Don't be so finicky about underfull hboxes, either.
-\hbadness = 2000
-
-% Following George Bush, just get rid of widows and orphans.
-\widowpenalty=10000
-\clubpenalty=10000
-
-% Use TeX 3.0's \emergencystretch to help line breaking, but if we're
-% using an old version of TeX, don't do anything.  We want the amount of
-% stretch added to depend on the line length, hence the dependence on
-% \hsize.  We call this whenever the paper size is set.
-%
-\def\setemergencystretch{%
-  \ifx\emergencystretch\thisisundefined
-    % Allow us to assign to \emergencystretch anyway.
-    \def\emergencystretch{\dimen0}%
-  \else
-    \emergencystretch = .15\hsize
-  \fi
-}
-
-% Parameters in order: 1) textheight; 2) textwidth; 3) voffset;
-% 4) hoffset; 5) binding offset; 6) topskip; 7) physical page height; 8)
-% physical page width.
-%
-% We also call \setleading{\textleading}, so the caller should define
-% \textleading.  The caller should also set \parskip.
-%
-\def\internalpagesizes#1#2#3#4#5#6#7#8{%
-  \voffset = #3\relax
-  \topskip = #6\relax
-  \splittopskip = \topskip
-  %
-  \vsize = #1\relax
-  \advance\vsize by \topskip
-  \outervsize = \vsize
-  \advance\outervsize by 2\topandbottommargin
-  \pageheight = \vsize
-  %
-  \hsize = #2\relax
-  \outerhsize = \hsize
-  \advance\outerhsize by 0.5in
-  \pagewidth = \hsize
-  %
-  \normaloffset = #4\relax
-  \bindingoffset = #5\relax
-  %
-  \ifpdf
-    \pdfpageheight #7\relax
-    \pdfpagewidth #8\relax
-  \fi
-  %
-  \setleading{\textleading}
-  %
-  \parindent = \defaultparindent
-  \setemergencystretch
-}
-
-% @letterpaper (the default).
-\def\letterpaper{{\globaldefs = 1
-  \parskip = 3pt plus 2pt minus 1pt
-  \textleading = 13.2pt
-  %
-  % If page is nothing but text, make it come out even.
-  \internalpagesizes{46\baselineskip}{6in}%
-                    {\voffset}{.25in}%
-                    {\bindingoffset}{36pt}%
-                    {11in}{8.5in}%
-}}
-
-% Use @smallbook to reset parameters for 7x9.5 (or so) format.
-\def\smallbook{{\globaldefs = 1
-  \parskip = 2pt plus 1pt
-  \textleading = 12pt
-  %
-  \internalpagesizes{7.5in}{5in}%
-                    {\voffset}{.25in}%
-                    {\bindingoffset}{16pt}%
-                    {9.25in}{7in}%
-  %
-  \lispnarrowing = 0.3in
-  \tolerance = 700
-  \hfuzz = 1pt
-  \contentsrightmargin = 0pt
-  \defbodyindent = .5cm
-}}
-
-% Use @afourpaper to print on European A4 paper.
-\def\afourpaper{{\globaldefs = 1
-  \parskip = 3pt plus 2pt minus 1pt
-  \textleading = 13.2pt
-  %
-  % Double-side printing via postscript on Laserjet 4050
-  % prints double-sided nicely when \bindingoffset=10mm and \hoffset=-6mm.
-  % To change the settings for a different printer or situation, adjust
-  % \normaloffset until the front-side and back-side texts align.  Then
-  % do the same for \bindingoffset.  You can set these for testing in
-  % your texinfo source file like this:
-  % @tex
-  % \global\normaloffset = -6mm
-  % \global\bindingoffset = 10mm
-  % @end tex
-  \internalpagesizes{51\baselineskip}{160mm}
-                    {\voffset}{\hoffset}%
-                    {\bindingoffset}{44pt}%
-                    {297mm}{210mm}%
-  %
-  \tolerance = 700
-  \hfuzz = 1pt
-  \contentsrightmargin = 0pt
-  \defbodyindent = 5mm
-}}
-
-% Use @afivepaper to print on European A5 paper.
-% From romildo@urano.iceb.ufop.br, 2 July 2000.
-% He also recommends making @example and @lisp be small.
-\def\afivepaper{{\globaldefs = 1
-  \parskip = 2pt plus 1pt minus 0.1pt
-  \textleading = 12.5pt
-  %
-  \internalpagesizes{160mm}{120mm}%
-                    {\voffset}{\hoffset}%
-                    {\bindingoffset}{8pt}%
-                    {210mm}{148mm}%
-  %
-  \lispnarrowing = 0.2in
-  \tolerance = 800
-  \hfuzz = 1.2pt
-  \contentsrightmargin = 0pt
-  \defbodyindent = 2mm
-  \tableindent = 12mm
-}}
-
-% A specific text layout, 24x15cm overall, intended for A4 paper.
-\def\afourlatex{{\globaldefs = 1
-  \afourpaper
-  \internalpagesizes{237mm}{150mm}%
-                    {\voffset}{4.6mm}%
-                    {\bindingoffset}{7mm}%
-                    {297mm}{210mm}%
-  %
-  % Must explicitly reset to 0 because we call \afourpaper.
-  \globaldefs = 0
-}}
-
-% Use @afourwide to print on A4 paper in landscape format.
-\def\afourwide{{\globaldefs = 1
-  \afourpaper
-  \internalpagesizes{241mm}{165mm}%
-                    {\voffset}{-2.95mm}%
-                    {\bindingoffset}{7mm}%
-                    {297mm}{210mm}%
-  \globaldefs = 0
-}}
-
-% @pagesizes TEXTHEIGHT[,TEXTWIDTH]
-% Perhaps we should allow setting the margins, \topskip, \parskip,
-% and/or leading, also. Or perhaps we should compute them somehow.
-%
-\defparsearg\pagesizes{\pagesizesyyy #1,,\finish}
-\def\pagesizesyyy#1,#2,#3\finish{{%
-  \setbox0 = \hbox{\ignorespaces #2}\ifdim\wd0 > 0pt \hsize=#2\relax \fi
-  \globaldefs = 1
-  %
-  \parskip = 3pt plus 2pt minus 1pt
-  \setleading{\textleading}%
-  %
-  \dimen0 = #1
-  \advance\dimen0 by \voffset
-  %
-  \dimen2 = \hsize
-  \advance\dimen2 by \normaloffset
-  %
-  \internalpagesizes{#1}{\hsize}%
-                    {\voffset}{\normaloffset}%
-                    {\bindingoffset}{44pt}%
-                    {\dimen0}{\dimen2}%
-}}
-
-% Set default to letter.
-%
-\letterpaper
-
-
-\message{and turning on texinfo input format.}
-
-% Define macros to output various characters with catcode for normal text.
-\catcode`\"=\other
-\catcode`\~=\other
-\catcode`\^=\other
-\catcode`\_=\other
-\catcode`\|=\other
-\catcode`\<=\other
-\catcode`\>=\other
-\catcode`\+=\other
-\catcode`\$=\other
-\def\normaldoublequote{"}
-\def\normaltilde{~}
-\def\normalcaret{^}
-\def\normalunderscore{_}
-\def\normalverticalbar{|}
-\def\normalless{<}
-\def\normalgreater{>}
-\def\normalplus{+}
-\def\normaldollar{$}%$ font-lock fix
-
-% This macro is used to make a character print one way in ttfont
-% where it can probably just be output, and another way in other fonts,
-% where something hairier probably needs to be done.
-%
-% #1 is what to print if we are indeed using \tt; #2 is what to print
-% otherwise.  Since all the Computer Modern typewriter fonts have zero
-% interword stretch (and shrink), and it is reasonable to expect all
-% typewriter fonts to have this, we can check that font parameter.
-%
-\def\ifusingtt#1#2{\ifdim \fontdimen3\font=0pt #1\else #2\fi}
-
-% Same as above, but check for italic font.  Actually this also catches
-% non-italic slanted fonts since it is impossible to distinguish them from
-% italic fonts.  But since this is only used by $ and it uses \sl anyway
-% this is not a problem.
-\def\ifusingit#1#2{\ifdim \fontdimen1\font>0pt #1\else #2\fi}
-
-% Turn off all special characters except @
-% (and those which the user can use as if they were ordinary).
-% Most of these we simply print from the \tt font, but for some, we can
-% use math or other variants that look better in normal text.
-
-\catcode`\"=\active
-\def\activedoublequote{{\tt\char34}}
-\let"=\activedoublequote
-\catcode`\~=\active
-\def~{{\tt\char126}}
-\chardef\hat=`\^
-\catcode`\^=\active
-\def^{{\tt \hat}}
-
-\catcode`\_=\active
-\def_{\ifusingtt\normalunderscore\_}
-% Subroutine for the previous macro.
-\def\_{\leavevmode \kern.07em \vbox{\hrule width.3em height.1ex}\kern .07em }
-
-\catcode`\|=\active
-\def|{{\tt\char124}}
-\chardef \less=`\<
-\catcode`\<=\active
-\def<{{\tt \less}}
-\chardef \gtr=`\>
-\catcode`\>=\active
-\def>{{\tt \gtr}}
-\catcode`\+=\active
-\def+{{\tt \char 43}}
-\catcode`\$=\active
-\def${\ifusingit{{\sl\$}}\normaldollar}%$ font-lock fix
-
-% If a .fmt file is being used, characters that might appear in a file
-% name cannot be active until we have parsed the command line.
-% So turn them off again, and have \everyjob (or @setfilename) turn them on.
-% \otherifyactive is called near the end of this file.
-\def\otherifyactive{\catcode`+=\other \catcode`\_=\other}
-
-\catcode`\@=0
-
-% \rawbackslashxx outputs one backslash character in current font,
-% as in \char`\\.
-\global\chardef\rawbackslashxx=`\\
-
-% \rawbackslash defines an active \ to do \rawbackslashxx.
-% \otherbackslash defines an active \ to be a literal `\' character with
-% catcode other.
-{\catcode`\\=\active
- @gdef@rawbackslash{@let\=@rawbackslashxx}
- @gdef@otherbackslash{@let\=@realbackslash}
-}
-
-% \realbackslash is an actual character `\' with catcode other.
-{\catcode`\\=\other @gdef@realbackslash{\}}
-
-% \normalbackslash outputs one backslash in fixed width font.
-\def\normalbackslash{{\tt\rawbackslashxx}}
-
-\catcode`\\=\active
-
-% Used sometimes to turn off (effectively) the active characters
-% even after parsing them.
-@def@turnoffactive{%
-  @let"=@normaldoublequote
-  @let\=@realbackslash
-  @let~=@normaltilde
-  @let^=@normalcaret
-  @let_=@normalunderscore
-  @let|=@normalverticalbar
-  @let<=@normalless
-  @let>=@normalgreater
-  @let+=@normalplus
-  @let$=@normaldollar %$ font-lock fix
-  @unsepspaces
-}
-
-% Same as @turnoffactive except outputs \ as {\tt\char`\\} instead of
-% the literal character `\'.  (Thus, \ is not expandable when this is in
-% effect.)
-%
-@def@normalturnoffactive{@turnoffactive @let\=@normalbackslash}
-
-% Make _ and + \other characters, temporarily.
-% This is canceled by @fixbackslash.
-@otherifyactive
-
-% If a .fmt file is being used, we don't want the `\input texinfo' to show up.
-% That is what \eatinput is for; after that, the `\' should revert to printing
-% a backslash.
-%
-@gdef@eatinput input texinfo{@fixbackslash}
-@global@let\ = @eatinput
-
-% On the other hand, perhaps the file did not have a `\input texinfo'. Then
-% the first `\{ in the file would cause an error. This macro tries to fix
-% that, assuming it is called before the first `\' could plausibly occur.
-% Also back turn on active characters that might appear in the input
-% file name, in case not using a pre-dumped format.
-%
-@gdef@fixbackslash{%
-  @ifx\@eatinput @let\ = @normalbackslash @fi
-  @catcode`+=@active
-  @catcode`@_=@active
-}
-
-% Say @foo, not \foo, in error messages.
-@escapechar = `@@
-
-% These look ok in all fonts, so just make them not special.
-@catcode`@& = @other
-@catcode`@# = @other
-@catcode`@% = @other
-
-@c Set initial fonts.
-@textfonts
-@rm
-
-
-@c Local variables:
-@c eval: (add-hook 'write-file-hooks 'time-stamp)
-@c page-delimiter: "^\\\\message"
-@c time-stamp-start: "def\\\\texinfoversion{"
-@c time-stamp-format: "%:y-%02m-%02d.%02H"
-@c time-stamp-end: "}"
-@c End:
-
-@c vim:sw=2:
-
-@ignore
-   arch-tag: e1b36e32-c96e-4135-a41a-0b2efa2ea115
-@end ignore
diff --git a/tex/titledefs.tex b/tex/titledefs.tex
deleted file mode 100644
index 73e4628d5b..0000000000
--- a/tex/titledefs.tex
+++ /dev/null
@@ -1,195 +0,0 @@
-% titledefs.tex
-%
-% LilyPond titling for LaTeX
-%
-% Note:
-%
-%    Defining a value, but leaving it empty:
-%        \def\lilypondfoo{}
-%    makes LaTeX break on the \\ in:
-%        \ifx\lilypondfoo\undefined\else{\lilypondfoo\\}\fi
-%
-\edef\titledefsELC{\the\endlinechar}%
-\endlinechar -1\relax
-
-% The feta characters for use in titles
-\input feta20.tex
-
-\font\fetasixteen=feta16
-\def\fetafont{\fetasixteen}
-\def\fetachar#1{\hbox{\fetasixteen#1}}
-
-\def\makelilypondtitle{
-  \begin{center}
-    \ifx\lilyponddedication\undefined
-    \else
-      {\normalfont\lilyponddedication\\}
-    \fi
-
-    \bfseries
-
-    \ifx\lilypondtitle\undefined
-    \else
-      {\huge\lilypondtitle\\}
-    \fi
-
-    \ifx\lilypondsubtitle\undefined
-    \else
-      {\Large\lilypondsubtitle\\}
-    \fi
-
-    \ifx\lilypondsubsubtitle\undefined
-    \else
-      {\large\lilypondsubsubtitle\\}
-    \fi
-  \end{center}
-
-  \bigskip
-
-  \begin{minipage}[t]{0.45\textwidth}
-    \ifx\lilypondpoet\undefined
-    \else
-      {\lilypondpoet\\}
-    \fi
-
-    \ifx\lilypondtexttranslator\undefined
-    \else
-      {\lilypondtexttranslator\\}
-    \fi
-
-    \ifx\lilypondmeter\undefined
-    \else
-      {\lilypondmeter\\}
-    \fi
-  \end{minipage}
-
-  \hspace*{\fill}
-
-  \begin{minipage}[t]{0.45\textwidth}
-    \begin{flushright}
-      \ifx\lilypondcomposer\undefined
-      \else
-        {\large\normalfont\scshape\lilypondcomposer\\}
-      \fi
-
-      \ifx\lilypondopus\undefined
-      \else
-        {\lilypondopus\\}
-      \fi
-
-      \ifx\lilypondarranger\undefined
-      \else
-        {\lilypondarranger\\}
-      \fi
-    \end{flushright}
-  \end{minipage}
-
-  \par
-
-  \ifx\lilypondinstrument\undefined
-  \else
-    {\center{\large\lilypondinstrument}
-     \par}
-  \fi
-
-  \ifx\lilypondpiece\undefined
-  \else
-    {\flushleft{\large\normalfont\scshape\lilypondpiece}
-     \par}
-  \fi
-
-% \leavevmode
-
-  \global\let\lilypondopus\relax
-  \global\let\lilypondpiece\relax
-  \global\let\mustmakelilypondtitle\undefined
-}
-
-\def\makelilypondpiecetitle{
-  \bigskip\myfilbreak
-
-  \ifx\lilypondopus\undefined
-  \else
-    {\flushright{\lilypondopus}
-     \par}
-  \fi
-
-  \ifx\lilypondpiece\undefined
-  \else
-    {\flushleft{\large\normalfont\scshape\lilypondpiece}
-     \par}
-  \fi
-
-  \nopagebreak
-
-  \global\let\lilypondopus\relax
-  \global\let\lilypondpiece\relax
-  \global\let\mustmakelilypondpiecetitle\undefined
-}
-
-% header -- head ?
-% these names can't be changed: they're used in mutopia headers
-
-\def\theheader{
-  \ifx\lilypondhead\undefined
-  \else
-    \lilypondhead
-  \fi
-}
-
-\def\thefooter{
-  \ifx\lilypondfooter\undefined
-  \else
-    \lilypondfooter
-  \fi
-}
-
-\def\makelilypondtagline{
-  \ifx\undefined\lilypondtagline
-  \else
-    \lilypondtagline
-  \fi
-}
-
-\def\thecopyright{
-  \ifx\lilypondcopyright\undefined
-    \thefooter
-  \else
-    \lilypondcopyright
-  \fi
-}
-
-% Moved header and footer definitions here from the lilypond script.
-% Separate page styles for first, last and ordinary (plain) pages.
-
-\makeatletter
-
-\renewcommand{\ps@plain}{
-  \renewcommand{\@oddfoot}{
-    \parbox{\textwidth}{\mbox{}\thefooter}}
-  \renewcommand{\@evenfoot}{
-    \@oddfoot}
-  \renewcommand{\@evenhead}{
-    \hbox to \textwidth{\textbf{\thepage}\hfill{\small\theheader}}}
-  \renewcommand{\@oddhead}{
-    \hbox to \textwidth{{\small\theheader}\hfill\textbf{\thepage}}}
-}
-
-\newcommand{\ps@firstpage}{
-  \renewcommand{\@oddfoot}{
-    \parbox{\textwidth}{\mbox{}\thecopyright}}
-  \renewcommand{\@evenfoot}{
-    \@oddfoot}
-}
-
-\newcommand{\ps@lastpage}{
-  \renewcommand{\@oddfoot}{
-    \parbox{\textwidth}{\mbox{}\makelilypondtagline}}
-  \renewcommand{\@evenfoot}{
-    \@oddfoot}
-}
-
-\makeatother
-
-\endlinechar \titledefsELC
-\endinput
diff --git a/vimrc b/vimrc
deleted file mode 100644
index 7cfa170a40..0000000000
--- a/vimrc
+++ /dev/null
@@ -1,47 +0,0 @@
-:version 6.1
-set autoindent
-set shiftwidth=2
-"
-" some handy key mappings
-"
-" <F4>  save & make and play midi
-map <F4> :w<Return>:se makeprg=lilypond\ -m\ %<<Return>:make<Return>:!timidity %<.midi<Return>
-"
-" <F5>  save & make dvi, midi, ps
-map <F5> :w<Return>:se makeprg=lilypond\ -P\ %<<Return>:make<Return>
-"
-" <F6>  view ps
-map <F6> :!gv -watch %<.ps &<Return>
-"
-" <S-F6>  view dvi
-map <S-F6> :!xdvi %<.dvi &<Return>
-"
-" <F7>  prev error
-map <F7> :cp<Return>
-"
-" <F8>  next error
-map <F8> :cn<Return>
-"
-" <F9>  make
-map <F9> :w<Return>:se makeprg=make\ -k<Return>:make<Return>
-"
-" <F10> run buffer through lily
-map <F10> :w<Return>:se makeprg=lilypond\ %:t<Return>:make<Return>
-"
-" <S-F10> run buffer through lily -M
-map <S-F10> :w<Return>:se makeprg=lilypond\ -M\ %:t<Return>:make<Return>
-"
-" <F12> comment region
-map <F12> :g!/%.*/normal 0i%<Return>
-"
-" <S-F12> remove comments in region
-map <S-F12> :g/%.*/normal 0x<Return>
-"
-" Completions in Insert/Replace-mode with <Ctrl-N>
-set dictionary-=~/.vim/lilypond.words.el dictionary+=~/.vim/lilypond.words.el
-set complete-=k complete+=k
-" errorformat for lily (with columns) and gcc
-" (how to see multiple-line error messages?)
-"
-se errorformat=%f:%l:%c:\ %m,%f:%l:\ %m,In\ file\ included\ from\ %f:%l:,\^I\^Ifrom\ %f:%l%m
-
-- 
2.39.5