From 0d17e9c759bd61c9b20a7c4d9941a412c2a53f5f Mon Sep 17 00:00:00 2001
From: Han-Wen Nienhuys <hanwen@xs4all.nl>
Date: Wed, 9 Jun 1999 12:15:02 +0200
Subject: [PATCH] release: 1.1.47

---
 AUTHORS.txt                          |   8 +-
 Documentation/COPYRIGHT              |  88 +++++++++++++
 Documentation/CodingStyle.yo         |  73 +----------
 Documentation/GNUmakefile            |   1 +
 Documentation/faq.yo                 |  16 ++-
 Documentation/links.yo               |  35 ++----
 Documentation/man/lilypond.yo        |  95 ++++++--------
 Documentation/man/out/lilypond.1     | 118 ++++++++----------
 Documentation/tex/other-packages.bib |   3 +-
 Documentation/tex/refman.yo          |  19 ++-
 Documentation/topdocs/AUTHORS.yo     |   8 +-
 Documentation/topdocs/INSTALL.yo     |  85 ++++++-------
 Documentation/topdocs/PATCHES.yo     |  18 +--
 Documentation/topdocs/README.yo      |   2 +-
 Documentation/topdocs/index.yo       |   4 +-
 INSTALL.txt                          | 178 ++++++++++++---------------
 NEWS                                 |  21 +++-
 PATCHES.txt                          |  15 +--
 TODO                                 |  70 +----------
 VERSION                              |   2 +-
 buildscripts/mf-to-table.py          |   5 +
 input/bugs/rep.ly                    |   2 +-
 input/test/mark.ly                   |   2 +-
 input/test/multi-measure-rest.ly     |   2 +-
 input/test/tuplet.fly                |  43 +++++++
 lily/g-script-engraver.cc            |   9 +-
 lily/include/audio-item.hh           |   5 -
 lily/include/dimensions.hh           |   4 +
 lily/include/ly-symbols.hh           |   1 +
 lily/include/midi-item.hh            |   4 +-
 lily/include/new-repeated-music.hh   |   9 ++
 lily/include/tuplet-spanner.hh       |   6 +-
 lily/lookup.cc                       |  29 ++++-
 lily/tuplet-engraver.cc              |  13 ++
 lily/tuplet-spanner.cc               |  64 ++++++----
 ly/deutsch.ly                        |  10 +-
 ly/property.ly                       |  20 +--
 make/out/lelievijver.lsm             |   8 +-
 make/out/lilypond.lsm                |   8 +-
 make/out/lilypond.spec               |   4 +-
 mutopia/N.W.Gade/brass.ly            |  56 ++++-----
 mutopia/N.W.Gade/global.ly           |   5 +-
 mutopia/N.W.Gade/global.tex          |   4 +-
 mutopia/N.W.Gade/parts.ly            | 105 +++++++++-------
 mutopia/N.W.Gade/score.ly            |  53 ++++----
 mutopia/N.W.Gade/strings.ly          |  28 ++---
 mutopia/N.W.Gade/wood.ly             |  32 ++---
 scm/lily.scm                         |   2 +-
 tex/titledefs.tex                    |   1 +
 49 files changed, 718 insertions(+), 675 deletions(-)
 create mode 100644 Documentation/COPYRIGHT
 create mode 100644 input/test/tuplet.fly

diff --git a/AUTHORS.txt b/AUTHORS.txt
index 9ca7d95ce5..fcae67073e 100644
--- a/AUTHORS.txt
+++ b/AUTHORS.txt
@@ -60,9 +60,5 @@ o    Jeffrey B. Reed <daboys@austin.rr.com>, Windows-NT sup-
 
 o    Shay Rojanski Some mudela source.
 
-Your  name  could  be here! If you want to help, then take a
-look at the SMALLISH PROJECTS section of in the  file  TODO.
-Some do not involve coding C++
-
-[And  of  course we sincerely thank J.S.Bach, F.Schubert, T.
-Merula and W.A.Mozart for their beautiful music]
+Your  name  could  be here! If you want to fix something, do
+it, and send us a patch!
diff --git a/Documentation/COPYRIGHT b/Documentation/COPYRIGHT
new file mode 100644
index 0000000000..1628105c98
--- /dev/null
+++ b/Documentation/COPYRIGHT
@@ -0,0 +1,88 @@
+[Note to uninitiated readers.  This is a Q&A document that explains
+what to watch out for when submitting scores for the Mutopia project.
+The Mutopia project is an effort to accumulate an archive of sheet
+music that is in the public domain.  The project should be similar to
+the Gutenberg project.
+
+We will be using music typesetting software to produce the software.
+The project will only accept music for composers that have passed into
+the PD.  The sole remaining problem is caused by the editorial
+changes.  A recent edition may contain editorial amendments that are
+not in the PD, so we cannot simply copy the music from recent
+editions.]
+
+
+
+What is copyright?
+
+Copyright is a legal system that protects the expressions of ideas.
+It was originally conceived to foster development of art and
+knowledge.
+
+Copyright law gives "owners" of the expressions the right to restrict
+reproductions of these expressions and collect fees.  In this way they
+can earn a living.  For example, a poet may restrict xeroxing and
+public performances of his poems, and demand a fee for print for
+prints and performances.
+
+After some time ---for most forms of expression, this is 70 years
+after the author died--- the work goes into the public domain, which
+means that all restrictions are lifted.  You can print, perform and
+modify the works as much as you like.
+
+Copyright law is internationalised.  In most countries the conditions
+from the Berne convention have been adopted.
+
+
+
+
+How does copyright work for music scores?
+
+Let's analyze how a printed score  is produced:
+
+1.  The composer composes music.
+
+2.  An editor edits the music, based on the composer's manuscript and
+on other editions.
+
+3.  An engraver lays out the editor's product.
+
+As you can see, there are three individuals, whose expressions are
+protected by copyright law.  Since we are interested in the scores
+that are in the PD.
+
+The copyright on the music itself passes into the PD 70 years after
+the death of the composer.  (Or XXXX years after publication if the
+work is published posthumously.)
+
+The copyright on the editorial changes pass in to the PD 70 years
+after death of the editor, or XXX years after publication.  Depending on YYY
+
+The copyright of the engraver is of no interest to us, since we will
+not reproduce any of the layout.
+
+
+
+What are editorial changes?
+
+
+
+
+
+
+How do I find out what changes might be copyrighted?
+
+You cannot copyright something you did not create yourself.  So if you
+find the same editorial changes across different editions it is
+unlikely that it is copyrighted.
+
+
+
+
+Urtexts?
+
+
+
+Scores that are not marked with dates?
+
+
diff --git a/Documentation/CodingStyle.yo b/Documentation/CodingStyle.yo
index ec80eb456a..c39d41f0a4 100644
--- a/Documentation/CodingStyle.yo
+++ b/Documentation/CodingStyle.yo
@@ -7,8 +7,7 @@ We use these standards while doing programming for GNU LilyPond.  If
 you do some hacking, we appreciate it if you would follow this rules,
 but if you don't, we still like you.
 
-Functions and methods do not return errorcodes, but use assert for
-checking status.
+Functions and methods do not return errorcodes.
 
 quote(
 
@@ -100,7 +99,6 @@ nsubsect(CLASSES and TYPES:)
 
 verb(
 	This_is_a_class
-	AClass_name	(for Abbreviation_class_name)
 )
 
 nsubsect(MEMBERS)
@@ -229,73 +227,8 @@ verb(
 nsect(HUNGARIAN NOTATION NAMING CONVENTION)
 
 Proposed is a naming convention derived from the so-called
-em(Hungarian Notation).
-
-nsubsect(Hungarian)
-
-The Hungarian Notation was conceived by or at least got its name from,
-the hungarian programmer Charles Simonyi.  It is a naming convention 
-with the aim to make code more readable (for fellow programmers), and 
-more accessible for programmers that are new to a project.
-
-The essence of the Hungarian Notation is that every identifier has a
-part which identifies its type (for functions this is the result
-type).  This is particularly useful in object oriented programming,
-where a particular object implies a specific interface (a set of
-member functions, perhaps some redefined operators), and for
-accounting heap allocated memory pointers and links.
-
-nsubsect(Advantages)
-
-Another fun quote from Microsoft Secrets:
-
-quote(
-	The Hungarian naming convention gives developers the ability
-	to read other people's code relatively easily, with a minmum
-	number of comments in the source code.  Jon De Vann estimated
-	that only about 1 percent of all lines in the Excel product
-	code consist of comments, but the code is still very
-	understandable due to the use of Hungarian: "if you look at
-	our source code, you also notice very few comments.  Hungarian
-	gives us the ability to go in and read code..."
-)
-
-Wow! If you use Hungarian you don't have to document your software!
-Just think of the hours I have wasted documenting while this "silver bullet"
-existed. I feel so stupid and ashamed!  (Didn't MMM-Brooks say `There is
-no silver bullet?' --HWN)
-
-
-nsubsect(Disadvantages)
-
-itemize(
-it()more keystrokes (disk space!)
-it()it looks silly code(get_slu_p())
-it()it looks like code from micro suckers
-it()(which) might scare away some (otherwise good?)
-    progammers, or make you a paria in the free
-    software community
-it()it has ambiguities
-it()not very useful if not used consistently
-it()usefullness in em(very large) (but how many classes is very large?)
-    remains an issue.
-)
-
-nsubsect(Proposal)
-
-itemize(
-it()learn about cut and paste / use emacs or vi
-    or lean to type using ten fingers
-it()Use emacs dabbrev-expand, with dabbrev-case-fold-search set to nil.
-it()use no, or pick less silly, abbrvs.
-it()use non-ambiguous postfixes code(identifier_name_type_modifier[_modifier])
-it()There is no need for Hungarian if the scope of the variable is small,
-    ie. local variables, arguments in function definitions (not
-    declarations).
-)
-
-Macros, code(enum)s and code(const)s are all uppercase,
-with the parts of the names separated by underscores.
+em(Hungarian Notation).  Macros, code(enum)s and code(const)s are all
+uppercase, with the parts of the names separated by underscores.
 
 nsubsect(Types)
 
diff --git a/Documentation/GNUmakefile b/Documentation/GNUmakefile
index b6e67c58bc..c7dbe8373f 100644
--- a/Documentation/GNUmakefile
+++ b/Documentation/GNUmakefile
@@ -7,6 +7,7 @@ SUBDIRS=man tex pictures topdocs ntweb
 STEPMAKE_TEMPLATES=documentation 
 README_TOP_FILES=NEWS DEDICATION TODO ANNOUNCE-0.1 AIMS
 INFO_FILES = $(wildcard $(outdir)/$(package).info*)
+EXTRA_DIST_FILES = COPYRIGHT
 
 
 
diff --git a/Documentation/faq.yo b/Documentation/faq.yo
index 87d5e056e0..a878886610 100644
--- a/Documentation/faq.yo
+++ b/Documentation/faq.yo
@@ -321,6 +321,9 @@ Don't forget to put your name and e-mail address
 in the file(AUTHORS.pod) file, or you won't get credits :-]
 
 
+em(Please) always send a bf(-u) diff, even if it is larger than the
+whole file.
+
 question(How do I learn the C++ code?)
 
 The entry point is in code(main()). Good luck. :-)
@@ -410,15 +413,20 @@ older installations) afterwards, so that TeX will find the files.
 Also, don't forget to remove all old .tfm and .*pk files when the font
 is updated (as it will be in version 1.1.40, for example).
 
-question(How does PS output work?)
+question(Are there scalable versions of the font?)
 
-itemize(
- it()
-Generate the PostScript Type-3 fonts. In the file(mf/) 
+Yes, they are type-3 fonts.  In the file(mf/) 
 subdirectory, issue:
 verb(
 	make pfa
 ) in the mf/ subdirectory.  This will also  make file(mfplain) for metapost.
+The file(pfa)s will be in the subdirectory file(out/).
+
+question(How does PS output work?)
+
+itemize(
+ it()
+Generate the PostScript Type-3 fonts. 
 it()
 Run lilypond with option tt(-f ps):
 verb(
diff --git a/Documentation/links.yo b/Documentation/links.yo
index 3617caae07..9addb6fc2c 100644
--- a/Documentation/links.yo
+++ b/Documentation/links.yo
@@ -1,4 +1,3 @@
-
 article(links - Links to other related websites)(HWN and JCN)()
 
 sect(DESCRIPTION)
@@ -12,7 +11,6 @@ nsubsect(LilyPond)
 
 description(
 dit(lurl(http://www.cs.uu.nl/people/hanwen/lilypond/))Han-Wen's site.
-dit(lurl(http://www.xs4all.nl/~jantien/lilypond/))Jan's site.
 dit(lurl(http://sca.uwaterloo.ca/lilypond/))The canadian mirror
 (thanks, Eric!)
 )
@@ -21,8 +19,9 @@ subsect(Other)
 
 description(
 dit(lurl(http://www.gnu.org/))
-    LilyPond is part of the GNU Project started by the Free Software
-    Foundation to create a system of free software for the world-community
+    LilyPond is part of the GNU Project.  The GNU project is the name 
+    of Richard Stallman's effort to create a freely available 
+    system of software.
 dit(lurl(http://www.zib.de/Visual/software/doc++/index.html))
     The documentation system for C++ sources, which is used for the
     LilyPond sources.
@@ -34,38 +33,22 @@ dit(lurl(http://www.iat.unc.edu/technology/music/music.html))
     An enormous collection of music related URLs
 dit(lurl(http://www.ram.org/ramblings/philosophy/fmp.html))
     Musings on free music, plus hints how to record your own (free) music.
-
 dit(lurl(http://www.geocities.com/Vienna/Studio/1714/))
 	John Sankey has taken up the task of recording classical
-music, and distributing the results at no cost.
+	music, and distributing the results at no cost.
 )
 
-
 sect(Ftp)
 
-We will upload major releases to the following sites:
-
-description(
-dit(lurl(ftp://metalab.unc.edu/pub/Linux/apps/sound/convert))
-    The GNU/Linux FTP site
-
-dit(lurl(ftp://ftp.dante.de/tex-archive/support/lilypond))
-    An ftp site which is in CTAN. CTAN is a worldwide network of
-    sites full of TeX() stuff.
-
-dit(lurl(ftp://ftp.redhat.com/pub/contrib/))
-    The FTP site of RedHat Software.
-)
-
-At this moment we have about one development-patchlevel per week. 
-These development releases will also be at
+At this moment we have about one development-patchlevel per week.
+These development releases will be at
 
 itemize(
 it()lurl(ftp://ftp.cs.uu.nl/pub/GNU/LilyPond/development)
 
 it()lurl(ftp://sca.uwaterloo.ca/pub/lilypond)
 
-it()[your mirror here]
+it()lurl(ftp://ftp.lilypond.org/pub/lilypond)
 )
 
 Debian releases are located at
@@ -102,13 +85,11 @@ dit(lurl(http://www.ssc.com/linux/))
 dit(lurl( http://sound.condorow.net))
     Dave Philips' Linux sound applications page
 dit(lurl(http://www4.smart.net/~jcovey/scores.html))
-	Jeff Covey's guitar music=
+	Jeff Covey's guitar music
 dit(lurl(http://www.home.fh-karlsruhe.de/~rost0001/web/musik/musik.html))
     Stochastic composing using LilyPond 
 dit(lurl(http://www.medieval.org/emfaq/scores/software.html))
     More software for (early) music.
-dit(lurl(http://www.emry.net/webwatcher/))
-    The Linux webwatcher: this site logs changes in important Linux sites.
 dit(lurl(http://www.pbm.com/~lindahl/ravenscroft/modern))
     Transcriptions of the music of Thomas Ravenscroft, partly using
     LilyPond
diff --git a/Documentation/man/lilypond.yo b/Documentation/man/lilypond.yo
index ddfdf4ad54..d680277e43 100644
--- a/Documentation/man/lilypond.yo
+++ b/Documentation/man/lilypond.yo
@@ -6,7 +6,7 @@ COMMENT(
 
 manpage(LilyPond)
        (1)
-	(1998)
+	(1999)
        (The LilyPond package)
        (The GNU Project Music Typesetter)
 
@@ -24,10 +24,10 @@ includefile(../BLURB.in)
 
 manpageoptions()
 description(
-dit(-I,--include=FILE)
+dit(-I,--include=)
     add file(FILE) to the search path for input files.
 dit(-M,--midi)
-    This disables TeX output. If you have a \midi definition, it will do the 
+    Disable TeX output. If you have a \midi definition, it will do the 
     midi output only.
 dit(-d,--dependencies)
     Also output rules to be included in Makefile.
@@ -52,7 +52,7 @@ dit(-i,--init=FILE)
 dit(--include, -I=DIRECTORY)
     Add file(DIRECTORY) to the search path for input files.
 dit(--ignore-version, -V)
-    Make incompatible mudela version non-fatal.
+    Make the incompatible mudela version warning non-fatal.
 )
 
 manpagesection(FEATURES)
@@ -67,10 +67,10 @@ it()ASCII script input, with identifiers (for music reuse),
     customizable notenames, customisable fontset.
 it()MIDI output lets you check if you have entered the correct notes.
 it()MIDI to Mudela conversion through the mi2mu program.
-it()Multiple staffs in one score.  Each staff can have different meters.
+it()Multiple staffs in one score.  Each staff can have different time signatures.
 it()Beams, slurs, ties, chords, super/subscripts (accents and text)
     triplets, general n-plet (triplet, quadruplets, etc.), lyrics,
-    transposition dynamics (both absolute and hairpin style).
+    transposition, dynamics (both absolute and hairpin style).
 it()Multiple voices within one staff; beams optionally shared
     between voices.  Up to four voices is handled cleanly.
 it()Multiple scores within one input file.  Each score is output to
@@ -80,7 +80,7 @@ it()Clef changes, meter changes, cadenza-mode, key changes, repeat bars.
 
 manpagesection(DISCLAIMER)
 
-GNU LilyPond is copyright 1996-1998 by its authors.  GNU LilyPond is
+GNU LilyPond is copyright 1996-1999 by its authors.  GNU LilyPond is
 distributed under the terms of the GNU General Public License.  GNU LilyPond 
 is provided without any warranty what so ever.
 GNU LilyPond may be freely distributed.  For further information consult 
@@ -88,15 +88,17 @@ the GNU General Public License, from the file file(COPYING).
 
 manpagesection(PROBLEMS)
 
-There is an extensive list of todoes and bugs.  See file(TODO).  If you
-have a problem you should try to find out
+There is an extensive list of todoes and bugs.  See the file
+file(TODO) distributed with the sources.  If you have a problem you
+should try to find out
 
 itemize(
 it()If the bug has been fixed in a newer release.
 it()If the bug has been found earlier, consult file(TODO) and file(BUGS).
 )
 
-If you have found a bug, then you should send a bugreport.
+If you have found a bug, then we would appreciate it if you sent a
+bugreport.
 
 itemize(
 it()Send a copy of the input which causes the error.
@@ -104,15 +106,16 @@ it()Send a description of the platform you use.
 it()Send a description of the LilyPond version you use 
     (with compile/configure options please).
 it()Send a description of the bug itself.
-it()Send it to email(bug-gnu-music@gnu.org) (you don't have to subscribe
-    to this mailinglist).
+it()Send it to email(bug-gnu-music@gnu.org); you don't have to be subscribed
+    to this mailinglist.
 )
 
 manpagefiles()
 description(
 dit(file(init.ly)) 
     The initialisation file with symbol tables etc.  It
-    includes files from the directory file(init/).
+    includes files from the directory
+    file(PREFIX/share/lilypond/ly/). (file(PREFIX) typically is file(/usr/local)
 )
 
 manspagesection(environment)
@@ -121,6 +124,8 @@ description(
 dit(LILYINCLUDE)
     additional directories for finding lilypond data.  The
     format is like the format of file(PATH).
+dit(LILYPREFIX)
+	[FIXME]
 dit(LANG)
     selects the language for the warning messages of LilyPond.
 )
@@ -131,25 +136,26 @@ Lots of them.  See file(TODO) and file(BUGS)
 
 manpageseealso()
 
+LilyPond comes with various other documentation files, but most are in
+the form of manual pages.  They are included in the source
+package. Interesting documents include 
+
 description(
-dit(internals)
-    On technical details of LilyPond
-dit(mudela-man)
-    On the input format.  This is a LilyPond-enhanced LaTeX document.
 dit(MANIFESTO)
     Goals of the GNU LilyPond project.
 dit(FAQ)
     The GNU LilyPond FAQ list
-dit(GNU url(LilyPond)(http://www.cs.uu.nl/people/hanwen/lilypond/index.html))
-    has her own webpage.  This webpage contains the MIDI, GIF and PS files for 
-    some standard music files.  It also has the complete LilyPond documentation
 )
 
-GNU LilyPond is
-updated very frequently, the latest version is always available at:
-lurl(ftp://ftp.cs.uu.nl/pub/GNU/LilyPond).  This FTP site is mirrored
-at a number of sites; consult the project web pages for information
-about mirrors.
+A further source for information is the website, which can be found at
+lurl(http://www.lilypond.org/).  The website contains on-line versions
+of the documentation
+
+
+GNU LilyPond is updated very frequently, the latest version is always
+available at: lurl(ftp://ftp.cs.uu.nl/pub/GNU/LilyPond).  This FTP
+site is mirrored at a number of sites; consult the project web pages
+for information about mirrors.
 
 For programs which are part of the GNU music project, the following
 mailing list have been setup:
@@ -178,47 +184,18 @@ gnu-music-discuss.
 manpagesection(REMARKS)
 
 GNU LilyPond has no connection with the music package Rosegarden, other
-than the names being similar (:-)
-
-manpagesection(HISTORY)
-cindex(History)
-
-(for a  detailed changelog, see file(NEWS))
-
-GNU LilyPond's roots lie in MPP, a preprocessor to the rather arcane
-MusiXTeX macro package for TeX.  A friend of mine, Jan Nieuwenhuizen
-wrote the first 44 versions (0.01 to 0.44), then his program caught my
-attention, and I was slowly sucked in to the interesting problem of
-easily producing beautifully printed music.  I contributed some
-code.  We soon realised that MPP's design was too fundamentally broken
-to be repaired, so it was decided to rewrite MPP.  We debated a lot about
-the requirements to an inputformat (fall 1995).  I sat down and started
-with a parser-first, bottom-up rewrite called mpp95 (which totally
-failed, obviously).
-
-After long and hard thinking, I came up with an algorithm for the
-horizontal spacing of multiple staffs (april 1996) I coded it (and did
-not test it).  After starting with this fundamental piece, I slowly
-added the stages which come before spacing, and after.  A half year
-later, I had a first working version, (october 1996).  I announced
-Patchlevel 0.0.7 (or 8) to the mutex list after asking some technical
-details on spacing; it was downloaded approximately 4 times.  Then I
-got the hang of it, and in the subsequent two months, I coded until it
-had doubled in size (pl 23).
-
-Most the other history is described in the NEWS file.  The first large
-scale release (0.1) was done after approximately 78 patchlevels on
-August 1, 1997.
+than the names being similar :-)
 
 manpageauthor()
 cindex(Author)
 
-Please consult the documentation file file(AUTHORS.txt) for more detailed
-information, and small contributions. 
-
 itemize(
 it()nemail(Han-wen Nienhuys)(hanwen@cs.uu.nl)
     lurl(http://www.cs.uu.nl/people/hanwen)
 it()nemail(Jan Nieuwenhuizen)(janneke@gnu.org)
     lurl(http://www.xs4all.nl/~jantien)
 )
+
+Please consult the documentation file file(AUTHORS) for more detailed
+information, and small contributions.
+
diff --git a/Documentation/man/out/lilypond.1 b/Documentation/man/out/lilypond.1
index 76386a29d6..d3e8212ed2 100644
--- a/Documentation/man/out/lilypond.1
+++ b/Documentation/man/out/lilypond.1
@@ -1,4 +1,4 @@
-.TH "LilyPond" "1" "1998" "The LilyPond package" "The GNU Project Music Typesetter" 
+.TH "LilyPond" "1" "1999" "The LilyPond package" "The GNU Project Music Typesetter" 
 .PP 
 .PP 
 .SH "NAME" 
@@ -17,10 +17,10 @@ beams, slurs, triplets, named chords, transposing, formatting scores,
 part extraction\&.  It includes a nice font of musical symbols\&.
 .PP 
 .SH "OPTIONS" 
-.IP "-I,--include=FILE" 
+.IP "-I,--include=" 
 add \fBFILE\fP to the search path for input files\&.
 .IP "-M,--midi" 
-This disables TeX output\&. If you have a \emidi definition, it will do the 
+Disable TeX output\&. If you have a \emidi definition, it will do the 
 midi output only\&.
 .IP "-d,--dependencies" 
 Also output rules to be included in Makefile\&.
@@ -45,7 +45,7 @@ Set init file to \fBFILE\fP (default: \fBinit\&.ly\fP)\&.
 .IP "--include, -I=DIRECTORY" 
 Add \fBDIRECTORY\fP to the search path for input files\&.
 .IP "--ignore-version, -V" 
-Make incompatible mudela version non-fatal\&.
+Make the incompatible mudela version warning non-fatal\&.
 .PP 
 .SH "FEATURES" 
 .PP 
@@ -61,11 +61,11 @@ MIDI output lets you check if you have entered the correct notes\&.
 .IP o 
 MIDI to Mudela conversion through the mi2mu program\&.
 .IP o 
-Multiple staffs in one score\&.  Each staff can have different meters\&.
+Multiple staffs in one score\&.  Each staff can have different time signatures\&.
 .IP o 
 Beams, slurs, ties, chords, super/subscripts (accents and text)
 triplets, general n-plet (triplet, quadruplets, etc\&.), lyrics,
-transposition dynamics (both absolute and hairpin style)\&.
+transposition, dynamics (both absolute and hairpin style)\&.
 .IP o 
 Multiple voices within one staff; beams optionally shared
 between voices\&.  Up to four voices is handled cleanly\&.
@@ -77,7 +77,7 @@ Clef changes, meter changes, cadenza-mode, key changes, repeat bars\&.
 .PP 
 .SH "DISCLAIMER" 
 .PP 
-GNU LilyPond is copyright 1996-1998 by its authors\&.  GNU LilyPond is
+GNU LilyPond is copyright 1996-1999 by its authors\&.  GNU LilyPond is
 distributed under the terms of the GNU General Public License\&.  GNU LilyPond 
 is provided without any warranty what so ever\&.
 GNU LilyPond may be freely distributed\&.  For further information consult 
@@ -85,15 +85,17 @@ the GNU General Public License, from the file \fBCOPYING\fP\&.
 .PP 
 .SH "PROBLEMS" 
 .PP 
-There is an extensive list of todoes and bugs\&.  See \fBTODO\fP\&.  If you
-have a problem you should try to find out
+There is an extensive list of todoes and bugs\&.  See the file
+\fBTODO\fP distributed with the sources\&.  If you have a problem you
+should try to find out
 .PP 
 .IP o 
 If the bug has been fixed in a newer release\&.
 .IP o 
 If the bug has been found earlier, consult \fBTODO\fP and \fBBUGS\fP\&.
 .PP 
-If you have found a bug, then you should send a bugreport\&.
+If you have found a bug, then we would appreciate it if you sent a
+bugreport\&.
 .PP 
 .IP o 
 Send a copy of the input which causes the error\&.
@@ -105,49 +107,53 @@ Send a description of the LilyPond version you use
 .IP o 
 Send a description of the bug itself\&.
 .IP o 
-Send it to bug-gnu-music@gnu\&.org (you don\'t have to subscribe
-to this mailinglist)\&.
+Send it to bug-gnu-music@gnu\&.org; you don\'t have to be subscribed
+to this mailinglist\&.
 .PP 
 .SH "FILES" 
 .IP "\fBinit\&.ly\fP" 
 The initialisation file with symbol tables etc\&.  It
-includes files from the directory \fBinit/\fP\&.
-.PP 
+includes files from the directory
+\fBPREFIX/share/lilypond/ly/\fP\&. (\fBPREFIX\fP typically is \fB/usr/local\fP
+)
+.IP 
 manspagesection(environment)
-.PP 
+.IP 
 .IP "LILYINCLUDE" 
 additional directories for finding lilypond data\&.  The
 format is like the format of \fBPATH\fP\&.
+.IP "LILYPREFIX" 
+[FIXME]
 .IP "LANG" 
 selects the language for the warning messages of LilyPond\&.
-.PP 
+.IP 
 .SH "BUGS" 
-.PP 
+.IP 
 Lots of them\&.  See \fBTODO\fP and \fBBUGS\fP
-.PP 
+.IP 
 .SH "SEE ALSO" 
-.PP 
-.IP "internals" 
-On technical details of LilyPond
-.IP "mudela-man" 
-On the input format\&.  This is a LilyPond-enhanced LaTeX document\&.
+.IP 
+LilyPond comes with various other documentation files, but most are in
+the form of manual pages\&.  They are included in the source
+package\&. Interesting documents include 
+.IP 
 .IP "MANIFESTO" 
 Goals of the GNU LilyPond project\&.
 .IP "FAQ" 
 The GNU LilyPond FAQ list
-.IP "GNU LilyPond" 
-has her own webpage\&.  This webpage contains the MIDI, GIF and PS files for 
-some standard music files\&.  It also has the complete LilyPond documentation
-.PP 
-GNU LilyPond is
-updated very frequently, the latest version is always available at:
-ftp://ftp\&.cs\&.uu\&.nl/pub/GNU/LilyPond\&.  This FTP site is mirrored
-at a number of sites; consult the project web pages for information
-about mirrors\&.
-.PP 
+.IP 
+A further source for information is the website, which can be found at
+http://www\&.lilypond\&.org/\&.  The website contains on-line versions
+of the documentation
+.IP 
+GNU LilyPond is updated very frequently, the latest version is always
+available at: ftp://ftp\&.cs\&.uu\&.nl/pub/GNU/LilyPond\&.  This FTP
+site is mirrored at a number of sites; consult the project web pages
+for information about mirrors\&.
+.IP 
 For programs which are part of the GNU music project, the following
 mailing list have been setup:
-.PP 
+.IP 
 .IP "info-gnu-music@gnu\&.org" 
 For information on the GNU Music project, to subscribe: send mail with
 subject "subscribe" to info-gnu-music-request@gnu\&.org
@@ -163,52 +169,24 @@ bug-gnu-music-request@gnu\&.org
 For discussions concerning the GNU Music project, to subscribe: send
 mail with subject "subscribe" to
 gnu-music-discuss-request@gnu\&.org
-.PP 
+.IP 
 Announces of new versions will be sent to info-gnu-music and
 gnu-music-discuss\&.
-.PP 
+.IP 
 .SH "REMARKS" 
-.PP 
+.IP 
 GNU LilyPond has no connection with the music package Rosegarden, other
-than the names being similar (:-)
-.PP 
-.SH "HISTORY" 
-.PP 
-(for a  detailed changelog, see \fBNEWS\fP)
-.PP 
-GNU LilyPond\'s roots lie in MPP, a preprocessor to the rather arcane
-MusiXTeX macro package for TeX\&.  A friend of mine, Jan Nieuwenhuizen
-wrote the first 44 versions (0\&.01 to 0\&.44), then his program caught my
-attention, and I was slowly sucked in to the interesting problem of
-easily producing beautifully printed music\&.  I contributed some
-code\&.  We soon realised that MPP\'s design was too fundamentally broken
-to be repaired, so it was decided to rewrite MPP\&.  We debated a lot about
-the requirements to an inputformat (fall 1995)\&.  I sat down and started
-with a parser-first, bottom-up rewrite called mpp95 (which totally
-failed, obviously)\&.
-.PP 
-After long and hard thinking, I came up with an algorithm for the
-horizontal spacing of multiple staffs (april 1996) I coded it (and did
-not test it)\&.  After starting with this fundamental piece, I slowly
-added the stages which come before spacing, and after\&.  A half year
-later, I had a first working version, (october 1996)\&.  I announced
-Patchlevel 0\&.0\&.7 (or 8) to the mutex list after asking some technical
-details on spacing; it was downloaded approximately 4 times\&.  Then I
-got the hang of it, and in the subsequent two months, I coded until it
-had doubled in size (pl 23)\&.
-.PP 
-Most the other history is described in the NEWS file\&.  The first large
-scale release (0\&.1) was done after approximately 78 patchlevels on
-August 1, 1997\&.
+than the names being similar :-
 .PP 
 .SH "AUTHOR" 
 .PP 
-Please consult the documentation file \fBAUTHORS\&.txt\fP for more detailed
-information, and small contributions\&. 
-.PP 
 .IP o 
 Han-wen Nienhuys <hanwen@cs\&.uu\&.nl>
 http://www\&.cs\&.uu\&.nl/people/hanwen
 .IP o 
 Jan Nieuwenhuizen <janneke@gnu\&.org>
 http://www\&.xs4all\&.nl/~jantien
+.PP 
+Please consult the documentation file \fBAUTHORS\fP for more detailed
+information, and small contributions\&.
+.PP 
diff --git a/Documentation/tex/other-packages.bib b/Documentation/tex/other-packages.bib
index 25b86464dc..8ff5024157 100644
--- a/Documentation/tex/other-packages.bib
+++ b/Documentation/tex/other-packages.bib
@@ -69,8 +69,7 @@ symphonic music), as well as for operas or ballets. "
 @Misc{igor,
   title = {Igor},
   author = {Technoligor AB},
-  note = {Commercial music notation with bigwig supporters.
-Still in beta},
+  note = {Commercial music notation with bigwig supporters.},
   html={http://www.igortech.pi.se/},
 }
 
diff --git a/Documentation/tex/refman.yo b/Documentation/tex/refman.yo
index 121f41f66d..5711ca323b 100644
--- a/Documentation/tex/refman.yo
+++ b/Documentation/tex/refman.yo
@@ -1525,13 +1525,28 @@ and -2.
 dit(code(abbrev)) Set length for tremolo to be used if no length is
 explicitly specified.
 
-GONE dit(code(markScriptPadding)) Determines the extra space added between
+dit(code(tupletDirection)) Determines the direction of triplets and 
+other tuplets.  Set to code(\down) to force them below the staff,
+code(\up) to force them above, or code(\free) to let LilyPond decide.
+
+dit(code(tupletVisibility)) Determines whether tuplets of notes are
+labelled.  Setting to 0 shows nothing; setting to 1 shows a number;
+setting to 2 shows a number and a bracket if there is no beam; setting
+to 3 shows a number, and if there is no beam it adds a bracket;
+setting to 4 shows both a number and a bracket unconditionally. The 
+code(pletoff) and code(pleton) identifiers set the property to 0 and 3, 
+respectively. 
+
+dit(code(markScriptPadding)) Determines the extra space added between
 the mark and the closest staff line or note.
 
-GONE dit(code(markDirection)) Determines if marks should be printed above
+dit(code(markDirection)) Determines if marks should be printed above
 or below the staff. Set to code(\up) to print marks above the staff;
 set to code(\down) to print marks below the staff.
 
+dit(code(articulationScriptPadding)) Determines the extra space added 
+between articulation marks, such as staccato, tenuto, trill, up/down 
+bow or fermata, and the closest staff line or note.
 )
 
 subsubsubsect(Staff properties)
diff --git a/Documentation/topdocs/AUTHORS.yo b/Documentation/topdocs/AUTHORS.yo
index cce65cd0ac..844103c86f 100644
--- a/Documentation/topdocs/AUTHORS.yo
+++ b/Documentation/topdocs/AUTHORS.yo
@@ -46,10 +46,6 @@ it()Shay Rojanski
 )
 
 
-Your name could be here! If you want to help, then take a look at the
-SMALLISH PROJECTS section of in the file file(TODO). Some do not involve
-coding C++
-
-[And of course we sincerely thank J.S.Bach, F.Schubert, T. Merula and
-W.A.Mozart for their beautiful music]
+Your name could be here! If you want to fix something, do it, and send
+us a patch!
 
diff --git a/Documentation/topdocs/INSTALL.yo b/Documentation/topdocs/INSTALL.yo
index 91a2f82972..36590d3185 100644
--- a/Documentation/topdocs/INSTALL.yo
+++ b/Documentation/topdocs/INSTALL.yo
@@ -27,7 +27,7 @@ it()A GNU system: GNU LilyPond is known to run on these GNU systems: Linux
     (PPC, intel), FreeBSD, AIX, NeXTStep, IRIX, Digital Unix and
 Solaris.
 
-it()Lots of disk space: LilyPond takes between 50 and 100 mb to
+it()Lots of disk space: LilyPond takes between 30 and 100 mb to
 compile if you use debugging information.  If you are short on
 disk-space run configure with code(--disable-debugging).
 
@@ -35,23 +35,43 @@ Although we recommend to use Unix, LilyPond is known to run on Windows
 NT/95/98 as well.  See Section ref(w32).
 
 it() EGCS 1.1 or newer.
-it() Python 1.5 (Strictly speaking, you shouldn't need Python for 
-   compiling and installing, but you'll need it to regenerate the font
-   tables, e.g.). 
-it() GUILE 1.3 (no, GUILE 1.2 won't work), check out lurl(http://www.gnu.org/software/guile/guile.html).
+
+it() Python 1.5,
+Check out
+lurl(ftp://ftp.python.org) or lurl(ftp://ftp.cwi.nl/pub/python).
+
+it() GUILE 1.3,  check out lurl(http://www.gnu.org/software/guile/guile.html).
+
+it()GNU make. 
+Check out lurl(ftp://ftp.gnu.org).
+
+it()Flex (version 2.5.4 or newer). 
+Check out lurl(ftp://ftp.gnu.org).
+
+it()Bison (version 1.25 or newer).
+Check out lurl(ftp://ftp.gnu.org).
+
+it()Yodl.  All documentation will be in Yodl. (1.30.17)
+lurl(ftp://ftp.lilypond.org/pub/yodl)
+
+it()The geometry package for LaTeX is needed to use ly2dvi.  
+Available at 
+lurl(ftp://ftp.ctan.org/tex-archive/macros/latex/contrib/supported/geometry)
+or at mirror site lurl(ftp://ftp.dante.de)
 )
 
+
 sect(RUNNING)
 
 GNU LilyPond does use a lot of resources. For operation you need the
-following:
+following software
 
 itemize(
 it()TeX
 it()A PostScript printer and/or viewer (such as Ghostscript) is strongly
     recommended.  Xdvi will show all embedded PostScript too if you have
     Ghostscript installed.
-it() GUILE 1.3 (no, GUILE 1.2 won't work), check out lurl(http://www.gnu.org/programs/guile.html)
+it() GUILE 1.3, check out lurl(http://www.gnu.org/programs/guile.html)
 )
 
 
@@ -66,47 +86,11 @@ The empty path component
 represents TeX() and MetaFont's default search paths.  Scripts with
 the proper paths for the bourne and C-shell respectively are generated in
 file(buildscripts/out/lilypond-profile) and
-file(buildscripts/out/lilypond-login) during compilation.
-
+file(buildscripts/out/lilypond-login) during compilation. 
 
-sect(RECOMMENDED)
+LilyPond is a hideously slow program.  A fast CPU and plenty of RAM is
+recommended for comfortable use.
 
-Although not strictly necessary, these are recommended to have.
-
-itemize(
-it()GNU make. 
-Check out lurl(ftp://ftp.gnu.org)
-or any mirror of this site.
-it()Flex (version 2.5.4 or newer). 
-Check out lurl(ftp://ftp.gnu.org)
-or any mirror of this site.
-it()Bison (version 1.25 or newer).
-Check out lurl(ftp://ftp.gnu.org)
-or any mirror of this site.
-it() GUILE 1.3 (no, GUILE 1.2 won't work),
-check out lurl(http://www.gnu.org/programs/guile.html).
-
-
-it()Python (version 1.5 or newer).  Check out
-lurl(ftp://ftp.python.org) or lurl(ftp://ftp.cwi.nl/pub/python).
-
-it()Yodl.  All documentation will be in Yodl. (1.30.17)
-lurl(ftp://ftp.lilypond.org/pub/yodl)
-    lurl(http://www.cs.uu.nl/~hanwen/yodl)
-it()Texinfo. (version 3.12 or newer)
-
-it()GNU find
-Check out lurl(ftp://ftp.gnu.org)
-or any mirror of this site.
-
-it()The geometry package for LaTeX is needed to use ly2dvi.  
-    Available at 
-lurl(ftp://ftp.ctan.org/tex-archive/macros/latex/contrib/supported/geometry)
-or at mirror site lurl(ftp://ftp.dante.de)
-
-it() A fast computer: a full page of music typically takes 1 minute on my
-    486/133, using the bf(--enable-checking) compile.
-)
 
 sect(WEBSITE)
 
@@ -124,10 +108,11 @@ man2html can be had from lurl(http://askdonald.ask.uni-karlsruhe.de/hppd/hpux/Ne
 )
 
 Building the website requires pnmtopng.  The version of file(pnmtopng)
-that is distributed with RedHat 5.1 contains a bug (pnmtopng is
-dynamically linked to the wrong version of libpng).  Recompile it from
-source, and make sure that the pnmtopng binary is linked statically to
-the libpng that is included in libgr.
+that is distributed with RedHat 5.1 and 5.2 contains a bug: pnmtopng
+is dynamically linked to the wrong version of libpng.  Recompile it
+from source, and make sure that the pnmtopng binary is linked
+statically to the libpng that is included in libgr.   RedHat 6.0 does
+not have this problem.
 
 verb( tar xzf libgr-2.0.13.tar.gz
       make
diff --git a/Documentation/topdocs/PATCHES.yo b/Documentation/topdocs/PATCHES.yo
index b08b7ea428..4827716c15 100644
--- a/Documentation/topdocs/PATCHES.yo
+++ b/Documentation/topdocs/PATCHES.yo
@@ -5,11 +5,14 @@ PATCHES - track and distribute your code changes
 nsect(DESCRIPTION)
 
 This page documents how to distribute your changes to GNU lilypond
-(or in fact any other StepMake package).
 
 nsect(ABSTRACT)
 
-Distributing a change normally goes like this:
+We would like to have unified context diffs with full pathnames.  A
+script automating supplied with Lily.
+
+ Distributing a change normally
+goes like this:
 
 itemize(
 it()make your fix/add your code 
@@ -108,12 +111,11 @@ verb(
 
 nsect(SYNCHRONISE)
 
-If you're not very quick with sending your patch, there's a good chance
-that an new release of LilyPond comes available.  In such a case (and
-sometimes for other unkown reasons :-), the maintainer will probably ask
-you to make a new patch against the latest release.
-Your best bet is to download the latest release, and apply your patch
-against this new source tree:
+If you're not very quick with sending your patch, there's a good
+chance that an new release of LilyPond comes available.  In such a
+case, the maintainer will probably ask you to make a new patch against
+the latest release.  Your best bet is to download the latest release,
+and apply your patch against this new source tree:
 
 verb(
     cd lilypond-0.1.74
diff --git a/Documentation/topdocs/README.yo b/Documentation/topdocs/README.yo
index 1b321d7bdd..1f59640ccc 100644
--- a/Documentation/topdocs/README.yo
+++ b/Documentation/topdocs/README.yo
@@ -56,7 +56,7 @@ criticism, comments, bugreports, patches, etc.
 verb(
 	   Please send your e-mail to one of the MAILING LISTS
 )
-and not to us personally.  See file(Documentation/links.yo) for more info.
+and em(not) to us personally.  See file(Documentation/links.yo) for more info.
 
 
 sect(WINDOWS 32)
diff --git a/Documentation/topdocs/index.yo b/Documentation/topdocs/index.yo
index 2d645208a7..804d96aeb9 100644
--- a/Documentation/topdocs/index.yo
+++ b/Documentation/topdocs/index.yo
@@ -31,7 +31,8 @@ nsubsect(Webmaster's Disclaimer)
 
 These pages were entirely created from the LilyPond package-sources.
 Sorry for poor look they have: we want to be hacking at LilyPond, and
-not at the webpages.
+not at the webpages.  If you want to volunteer for making shazzy
+webpages, then please mail us!
 
 Note: These pages are created from the latest bf(development snapshots)
 of LilyPond, specifically, this page was made from LilyPond
@@ -67,7 +68,6 @@ nsect(Documentation)
 itemize(
 it()url(Tutorial)(DOEXPAND(docdir)/tex/DOEXPAND(outdir)/tutorial.html)
 it()url(FAQ)(DOEXPAND(docdir)/DOEXPAND(outdir)/faq.html)
-it()url(Reference Manual)(DOEXPAND(docdir)/tex/DOEXPAND(outdir)/refman.html)
 it()url(Mailing Lists)(DOEXPAND(docdir)/DOEXPAND(outdir)/mail.html)
 it()url(All of the LilyPond documentation)(DOEXPAND(docdir)/DOEXPAND(outdir)/index.html)
 it()url(The DOC++ documentation of the C++ sources.)(DOEXPAND(depth)/docxx/index.html)
diff --git a/INSTALL.txt b/INSTALL.txt
index 3ca4a10605..622b63747e 100644
--- a/INSTALL.txt
+++ b/INSTALL.txt
@@ -9,15 +9,14 @@ Contents
 2: OBTAINING
 3: PREREQUISITES
 4: RUNNING
-5: RECOMMENDED
-6: WEBSITE
-7: CONFIGURING and COMPILING
-8: CONFIGURING FOR MULTIPLE PLATFORMS
-9: INSTALLING
-10: REDHAT LINUX
-11: DEBIAN GNU/LINUX
-12: WINDOWS NT/95
-13: AUTHORS
+5: WEBSITE
+6: CONFIGURING and COMPILING
+7: CONFIGURING FOR MULTIPLE PLATFORMS
+8: INSTALLING
+9: REDHAT LINUX
+10: DEBIAN GNU/LINUX
+11: WINDOWS NT/95
+12: AUTHORS
 
 1: ABSTRACT
 
@@ -45,92 +44,73 @@ o    A GNU system: GNU LilyPond is known to run on these GNU
      systems: Linux (PPC, intel),  FreeBSD,  AIX,  NeXTStep,
      IRIX, Digital Unix and Solaris.
 
-o    Lots  of  disk space: LilyPond takes between 50 and 100
+o    Lots  of  disk space: LilyPond takes between 30 and 100
      mb to compile if you use debugging information.  If you
      are  short  on disk-space run configure with --disable-
      debugging.
 
      Although we recommend to use Unix, LilyPond is known to
-     run on Windows NT/95/98 as well.  See Section 12.
+     run on Windows NT/95/98 as well.  See Section 11.
 
 o    EGCS 1.1 or newer.
 
-o    Python  1.5  (Strictly  speaking,  you  shouldn't  need
-     Python for compiling and installing, but you'll need it
-     to regenerate the font tables, e.g.).
+o    Python   1.5,   Check   out   ftp://ftp.python.org   or
+     ftp://ftp.cwi.nl/pub/python.
 
-o    GUILE  1.3  (no,  GUILE  1.2  won't  work),  check  out
-     http://www.gnu.org/software/guile/guile.html.
+o    GUILE   1.3,    check   out    http://www.gnu.org/soft-
+     ware/guile/guile.html.
+
+o    GNU make.  Check out ftp://ftp.gnu.org.
+
+o    Flex    (version    2.5.4   or   newer).    Check   out
+     ftp://ftp.gnu.org.
+
+o    Bison   (version   1.25   or   newer).     Check    out
+     ftp://ftp.gnu.org.
+
+o    Yodl.   All  documentation  will  be in Yodl. (1.30.17)
+     ftp://ftp.lilypond.org/pub/yodl
+
+o    The geometry package for LaTeX is needed to use ly2dvi.
+     Available           at          ftp://ftp.ctan.org/tex-
+     archive/macros/latex/contrib/supported/geometry  or  at
+     mirror site ftp://ftp.dante.de
 
 4: RUNNING
 
-GNU LilyPond does use a lot of resources. For operation  you
-need the following:
+GNU  LilyPond does use a lot of resources. For operation you
+need the following software
 
 o    TeX
 
 o    A   PostScript   printer   and/or   viewer   (such   as
-     Ghostscript) is strongly recommended.  Xdvi  will  show
-     all  embedded  PostScript  too  if you have Ghostscript
+     Ghostscript)  is  strongly recommended.  Xdvi will show
+     all embedded PostScript too  if  you  have  Ghostscript
      installed.
 
-o    GUILE  1.3  (no,  GUILE  1.2  won't  work),  check  out
-     http://www.gnu.org/programs/guile.html
+o    GUILE    1.3,    check    out   http://www.gnu.org/pro-
+     grams/guile.html
 
-For  running  LilyPond successfully you have to help TeX and
-MetaFont find various files.  The recommended way  of  doing
-so  is  adjusting  the environment variables in the start-up
-scripts of your shell.  An example is  given  here  for  the
+For running LilyPond successfully you have to help  TeX  and
+MetaFont  find  various files.  The recommended way of doing
+so is adjusting the environment variables  in  the  start-up
+scripts  of  your  shell.   An example is given here for the
 Bourne shell:
 
      export MFINPUTS="/usr/local/share/lilypond/mf:"
      export TEXINPUTS="/usr/local/share/lilypond/tex:/usr/local/share/lilypond/ps:"
 
-The  empty path component represents  and MetaFont's default
-search paths.  Scripts with the proper paths for the  bourne
+The empty path component represents  and MetaFont's  default
+
+search  paths.  Scripts with the proper paths for the bourne
 and   C-shell   respectively   are   generated   in   build-
-scripts/out/lilypond-profile and  buildscripts/out/lilypond-
+scripts/out/lilypond-profile  and buildscripts/out/lilypond-
 login during compilation.
 
-5: RECOMMENDED
+LilyPond is a hideously slow program.  A fast CPU and plenty
+of RAM is recommended for comfortable use.
 
-Although  not  strictly  necessary, these are recommended to
-have.
-
-o    GNU make.  Check out ftp://ftp.gnu.org or any mirror of
-     this site.
-
-o    Flex    (version    2.5.4   or   newer).    Check   out
-     ftp://ftp.gnu.org or any mirror of this site.
-
-o    Bison   (version   1.25   or   newer).     Check    out
-     ftp://ftp.gnu.org or any mirror of this site.
-
-o    GUILE  1.3  (no,  GUILE  1.2  won't  work),  check  out
-     http://www.gnu.org/programs/guile.html.
-
-o    Python   (version   1.5   or   newer).     Check    out
-     ftp://ftp.python.org or ftp://ftp.cwi.nl/pub/python.
-
-o    Yodl.   All  documentation  will  be in Yodl. (1.30.17)
-     ftp://ftp.lilypond.org/pub/yodl
-     http://www.cs.uu.nl/~hanwen/yodl
-
-o    Texinfo. (version 3.12 or newer)
-
-o    GNU  find  Check out ftp://ftp.gnu.org or any mirror of
-     this site.
-
-o    The geometry package for LaTeX is needed to use ly2dvi.
-     Available           at          ftp://ftp.ctan.org/tex-
-     archive/macros/latex/contrib/supported/geometry  or  at
-     mirror site ftp://ftp.dante.de
-
-o    A fast computer: a full page of music typically takes 1
-     minute on my 486/133, using the --enable-checking  com-
-     pile.
-
-6: WEBSITE
+5: WEBSITE
 
 If  you  want  to  auto-generate Lily's website, you'll need
 some additional conversion tools.
@@ -148,12 +128,11 @@ o    Bib2html http://pertsserver.cs.uiuc.edu/~hull/bib2html.
      TeTeX users should not forget to rerun texhash.
 
 Building the website requires pnmtopng.  The version of pnm-
-topng  that  is  distributed  with RedHat 5.1 contains a bug
-(pnmtopng is dynamically linked  to  the  wrong  version  of
-libpng).   Recompile  it from source, and make sure that the
+topng that is distributed with RedHat 5.1 and 5.2 contains a
+bug: pnmtopng is dynamically linked to the wrong version  of
+libpng.   Recompile  it  from source, and make sure that the
 pnmtopng binary is linked statically to the libpng  that  is
-
-included in libgr.
+included  in libgr.   RedHat 6.0 does not have this problem.
 
       tar xzf libgr-2.0.13.tar.gz
            make
@@ -163,7 +142,7 @@ included in libgr.
 
 You can then install the new pnmtopng into /usr/local/bin/
 
-7: CONFIGURING and COMPILING
+6: CONFIGURING and COMPILING
 
 to install GNU LilyPond, simply type:
 
@@ -184,9 +163,9 @@ This will install a number of files, something close to:
           /usr/local/share/lilypond/*
           /usr/local/share/locale/{it,nl}/LC_MESSAGES/lilypond.mo
 
-The  above assumes that you are root and have the GNU devel-
+The above assumes that you are root and have the GNU  devel-
 opment tools, and your make is GNU make.  If this is not the
-case,  you  can  adjust  your  environment variables to your
+case, you can adjust  your  environment  variables  to  your
 taste:
 
           export CPPFLAGS="-I /home/me/my_include -DWEIRD_FOOBAR"
@@ -195,16 +174,16 @@ taste:
 CPPFLAGS are the preprocessor flags.
 
 The configure script is Cygnus configure, and it will accept
---help.  If you are not root, you will probably have to make
+--help. If you are not root, you will probably have to  make
 it with a different --prefix option.  Our favourite location
 is
 
           ./configure --prefix=$HOME/usr
 
-In  this  case, you will have to set up MFINPUTS, and TEXIN-
+In this case, you will have to set up MFINPUTS,  and  TEXIN-
 PUTS accordingly.
 
-Since GNU LilyPond currently is beta,  you  are  advised  to
+Since  GNU  LilyPond  currently  is beta, you are advised to
 also use
 
           --enable-debugging
@@ -216,33 +195,33 @@ Options to configure include:
      Enable debugging print routines (lilypond -D option)
 
 --enable-optimise
-     Set  maximum  optimisation: compile with -O2.  This can
-     be unreliable on  some  compiler/platform  combinations
+     Set maximum optimisation: compile with -O2.   This  can
+     be  unreliable  on  some compiler/platform combinations
      (eg, DEC Alpha and PPC)
 
 --enable-profiling
      Compile with support for profiling.
 
 --enable-config
-     Output  to  a different configuration file.  Needed for
+     Output to a different configuration file.   Needed  for
      multi-platform builds
 
-All options are documented in the configure help The  option
+All  options are documented in the configure help The option
 --enable-optimise is recommended for Real Life usage.
 
 If you do
 
           make all
 
-everything  will be compiled, but nothing will be installed.
-The resulting binaries can be found  in  the  subdirectories
+everything will be compiled, but nothing will be  installed.
+The  resulting  binaries  can be found in the subdirectories
 out/ (which contain all files generated during compilation).
 
-8: CONFIGURING FOR MULTIPLE PLATFORMS
+7: CONFIGURING FOR MULTIPLE PLATFORMS
 
 If you want to compile LilyPond with different configuration
-settings,  then,  you  can  use  the --enable-config option.
-Example: suppose I want to build with and   without  profil-
+settings, then, you  can  use  the  --enable-config  option.
+Example:  suppose I want to build with and   without profil-
 ing.  Then I'd use the following for the normal build,
 
            ./configure --prefix=~ --disable-optimise --enable-checking
@@ -256,7 +235,7 @@ uration.
            make config=optprof
            make config=optprof install
 
-9: INSTALLING
+8: INSTALLING
 
 If you have done a successful make, then a simple
 
@@ -265,14 +244,13 @@ If you have done a successful make, then a simple
 should do the trick.
 
 If you are doing an upgrade, please remember to remove obso-
-lete  .pk  and  .tfm  files of the fonts.  A script has been
+lete .pk and .tfm files of the fonts.   A  script  has  been
 provided to do the work for you, see bin/clean-fonts.sh.
 
 CAVEATS
 
-o    The -O2 option  triggers   bugs  on  various  platforms
-     (PowerPC,  Alpha).   If  you  experience  problems, you
-
+o    The  -O2  option   triggers   bugs on various platforms
+     (PowerPC, Alpha).   If  you  experience  problems,  you
      should first try  turning off this.
 
 EXAMPLE
@@ -302,10 +280,10 @@ This is what the output looks like over here:
 Check out the input files, some of them have comments Please
 refer to the man page for more information.
 
-10: REDHAT LINUX
+9: REDHAT LINUX
 
-RedHat  Linux  users  can  compile an RPM. A spec file is in
-make/out/lilypond.spec, it is  distributed  along  with  the
+RedHat Linux users can compile an RPM. A  spec  file  is  in
+make/out/lilypond.spec,  it  is  distributed  along with the
 sources.
 
 You can make the rpm by issuing
@@ -313,18 +291,18 @@ You can make the rpm by issuing
           rpm -tb lilypond-x.y.z.tar.gz
           rpm -i /usr/src/redhat/RPMS/i386/lilypond-x.y.z
 
-11: DEBIAN GNU/LINUX
+10: DEBIAN GNU/LINUX
 
-A  Debian  package  is  also  available; contact Anthony Fok
-foka@debian.org.  The build scripts are in the  subdirectory
+A Debian package is  also  available;  contact  Anthony  Fok
+foka@debian.org.   The build scripts are in the subdirectory
 debian/.
 
-12: WINDOWS NT/95
+11: WINDOWS NT/95
 
 Separate instructions on building for W32 are avaible in the
 file README-W32.yo.
 
-13: AUTHORS
+12: AUTHORS
 
 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 
diff --git a/NEWS b/NEWS
index 4b1694fbf5..a44a11ac86 100644
--- a/NEWS
+++ b/NEWS
@@ -1,8 +1,27 @@
+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).
diff --git a/PATCHES.txt b/PATCHES.txt
index af208e12f6..55e1a71ea7 100644
--- a/PATCHES.txt
+++ b/PATCHES.txt
@@ -6,11 +6,13 @@ NAME
 DESCRIPTION
 
      This  page  documents how to distribute your changes to
-GNU lilypond (or in fact any other StepMake package).
+GNU lilypond
 
 ABSTRACT
 
-     Distributing a change normally goes like this:
+     We would like to have unified context diffs  with  full
+pathnames.   A  script  automating supplied with Lily.  Dis-
+tributing a change normally goes like this:
 
 o    make your fix/add your code
 
@@ -119,11 +121,10 @@ SYNCHRONISE
 
 If you're not very quick with sending your patch, there's  a
 good chance that an new release of LilyPond comes available.
-In such a case (and sometimes for other unkown reasons  :-),
-the  maintainer  will  probably  ask you to make a new patch
-against the latest release.  Your best bet  is  to  download
-the  latest  release,  and apply your patch against this new
-source tree:
+In such a case, the maintainer will probably ask you to make
+a new patch against the latest release.  Your best bet is to
+download the latest release, and apply  your  patch  against
+this new source tree:
 
          cd lilypond-0.1.74
          gzip -dc ../patches/lilypond-0.1.73.jcn1.diff.gz | patch -p1 -E
diff --git a/TODO b/TODO
index 5079798708..d68cafc830 100644
--- a/TODO
+++ b/TODO
@@ -50,7 +50,6 @@ I understand your point.  It should be changed.
 > but I hope you understand what I want to say.
 > 
 . * didot / big point.
-. * devise standard for functioning of Vertical_align_element.
 . * midi key.
 . * Repeats
 .  * input/bugs/rep.ly (moved from test)
@@ -81,15 +80,7 @@ preMudelaExample[eps]{}, and change it in document body sometimes.
 that can generate the same tune in two different modes without having
 to go through and rewrite all the music in the other mode.
 
-Long lyrics don't get a space at the end.  They just run right up
-against the next lyric.  (I don't think this used to be the case.)
-
 Lyrics and scripts collide.
-
-\key b; \time 4/4; looks bad.  The clef and time signature are too close.
-
-restStyle=mensural doesn't seem to work (lots of characters not found
-for rests.fly)
 . * Phrasing:  Indicating the textual underlay of a piece, or
 otherwise dividing a piece into phrases.
 
@@ -101,7 +92,7 @@ specify the third.  Should there be?
 
    note + circle = note + 1/4 of its length
 
-   the circle is like a dot that's not filled in.  for example, on
+5   the circle is like a dot that's not filled in.  for example, on
    page three, the c-sharp on the second line should be a quarter with 
    a circle, not a quarter tied to a sixteenth.  is this at all
    possible with lily?
@@ -113,22 +104,6 @@ specify the third.  Should there be?
 .  * spacing for prefatory matter
 .  * accidentals closer to note head
 .  * to space the staffs/staffgroups contained in the score.  
-
-In the orchestscore.ly file, I tried:
-\paper{
-    \translator {
-        \OrchestralScoreContext
-        minVerticalAlign = 3.0*\staffheight;
-    }
-    \translator { 
-        \StaffGroupContext
-        minVerticalAlign = 3.0*\staffheight;
-    }
-    \translator { 
-        \StaffContext
-        minVerticalAlign = 3.0*\staffheight;
-    }
-}
 .  * heavier beams?
 
 .* Cleanups needed
@@ -169,7 +144,7 @@ In the orchestscore.ly file, I tried:
 > see the problem for August.
 . * Abstraction for engravers:
 .  * make "in-between" engraver (Tie, Extender)
-.  * make wide_spanner_engraver (line_group_spanne,r staff_symbol)
+.  * make wide_spanner_engraver (line_group_spanner, staff_symbol)
 . * remove Interval dim_ from Dimension_cache and rename the struct.
 . * do scaled fonts generally 
 . * Spacing.
@@ -257,9 +232,6 @@ compilation.
 . * use Fourier transformation for rhythmic quantisation.
 . * horizontal centering of dynamics 
 . * $DEPENDENCIES_OUTPUT support
-. * Xdvi zooming ?! Try to understand GS garbage collection.
-gs: Error: /undefined in draw_beam
-gs: Operand stack:
 . * fix vertical alignment and stafflines
 . * declaring Performers
 . * *.yo: fix pod manpage layout legacy
@@ -425,34 +397,6 @@ languages:
 > Would it be hard to add support for proper dynamics in MIDI output?  I
 > would really like to have this feature...
 
-To answer this, I have to give a little background.  Please say so if
-I am being obtuse.
-
-Both audio and notation elements are created decentrally, when
-LilyPond says "Interpreting music ... [8][16] etc."  After all
-elements are created, they are processed again to calculate all
-parameters.  After that is done, they are dumped onto the output (the
-MIDI stream or the TeX file).
-
-The audio and notation elements are created by objects called
-performer and engraver respectively.  They work by taking a chunk of
-input (a so-called request), and using the request to create an audio
-or notation element.
-
-After some processing, the engraver sends the created elements to
-its enclosing notation/performance context.
-
-In the case of notation, engravers can also modify existing elements
-created by sibling engravers.  Eg. the beam-engraver will modify stems
-when it creates a beam over a couple of stems.  This is done in
-Engraver::do_acknowledge_element () and
-Engraver::do_process_acknowledged ().
-
-In the case of audio, there are no mechanisms to modify existing audio
-elements. After the audio elements are created, they are sent directly
-to the enclosing context (an instance of Performer_group_performer),
-through the method Performer::play ()
-
 Concretely spoken, for dynamics you have to write a performer
 (Dynamics_performer), that will take the input requests. If I
 understand correctly, every MIDI note played must have its dynamic
@@ -465,16 +409,9 @@ So the best way of handling this, is
 
   1 supporting dynamic settings in Audio_note
 
-  2 mimicking the broadcast/acknowledge mechanism of the Engravers in
-  the Performers
-
-  3 using that mechanism to write a Dynamics_performer that will modify
+  2 Write a Dynamics_performer that will modify
   any notes it finds to set appropriate strengths.
 
-You could also kludge this by deriving from Performer_group_performer
-a performer that also sets dynamics within notes, but that is not the
-elegant way to do it.
-
 I'd say that the work involved is not hard, but you have to be fluent
 with C++ and need some insight into the working of Notation Contexts
 and friends.  I guess I could do it in a day or so, but if you are not
@@ -486,7 +423,6 @@ valuable, and I think I have more interesting things to do than fixing
 the MIDI output (I don't even have a soundcard).  But I *do* want to help
 you or other people with implementing this, so if you need help, don't
 hesitate to ask.
-
 .  * account for rhythmic position in measure
 .  * etc.
 
diff --git a/VERSION b/VERSION
index 624ee8e3b1..1ed063fa0a 100644
--- a/VERSION
+++ b/VERSION
@@ -1,7 +1,7 @@
 PACKAGE_NAME=LilyPond
 MAJOR_VERSION=1
 MINOR_VERSION=1
-PATCH_LEVEL=46
+PATCH_LEVEL=47
 MY_PATCH_LEVEL=
 
 # use the above to send patches: MY_PATCH_LEVEL is always empty for a
diff --git a/buildscripts/mf-to-table.py b/buildscripts/mf-to-table.py
index eb45314a1b..2b57d02c6f 100644
--- a/buildscripts/mf-to-table.py
+++ b/buildscripts/mf-to-table.py
@@ -6,6 +6,11 @@
 # 
 # (c) 1997 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 
+
+#
+# TODO: Should use RE.
+#
+
 import os
 import sys
 import getopt
diff --git a/input/bugs/rep.ly b/input/bugs/rep.ly
index 94a06157c0..b829282123 100644
--- a/input/bugs/rep.ly
+++ b/input/bugs/rep.ly
@@ -3,7 +3,7 @@
 		  \context Staff \notes\relative c'{ 
 			  c4 d e f
 			  \repeat semi 3 { g a b c }
-%			  \alternative { { c b a g } { f e d c } } c c c c
+			  \alternative { { c b a g } { f e d c } } c c c c
 			  \alternative { { c b a g } { f e d c } { c d e f } }
 			  g g g g
 			  \repeat semi 2 { c c c c }
diff --git a/input/test/mark.ly b/input/test/mark.ly
index 6d0f2aac3f..5dd835a96d 100644
--- a/input/test/mark.ly
+++ b/input/test/mark.ly
@@ -24,7 +24,7 @@ two = \notes\relative c{
 		        markScriptPadding = "4.0";
 			markHangOn  = "Bar";
 			markHangDepth = "1";
-%			markDirection = \diown;
+%			markDirection = \down;
 		}
 	}
 }
diff --git a/input/test/multi-measure-rest.ly b/input/test/multi-measure-rest.ly
index 1e2e3195ab..696b9bad5b 100644
--- a/input/test/multi-measure-rest.ly
+++ b/input/test/multi-measure-rest.ly
@@ -1,5 +1,5 @@
 
-\score { \notes { \time 3/4; \key cis; R2. R2.*5 }
+\score { \notes { \time 3/4; \key cis; R2.*5 R2. R2.*5 }
 	\paper {
 	\translator { \ScoreContext skipBars = 1; }
 	linewidth = -1.;	
diff --git a/input/test/tuplet.fly b/input/test/tuplet.fly
new file mode 100644
index 0000000000..92ac4d4739
--- /dev/null
+++ b/input/test/tuplet.fly
@@ -0,0 +1,43 @@
+\property Voice.textEmptyDimension = 1
+\property Voice.textScriptPadding = 10
+\property Voice.tupletVisibility = 0
+\times2/3{c'4^"tupletVisibility = 0" d e} \times2/3{[f8 g a]} 
+  \times2/3{b16 c d} c8 |
+\property Voice.tupletVisibility = 1
+\times2/3{c,4^"tupletVisibility = 1" d e} \times2/3{[f8 g a]} 
+  \times2/3{b16 c d} c8 |
+\property Voice.tupletVisibility = 2
+\times2/3{c,4^"tupletVisibility = 2" d e} \times2/3{[f8 g a]} 
+  \times2/3{b16 c d} c8 |
+\property Voice.tupletVisibility = 3
+\times2/3{c,4^"tupletVisibility = 3" d e} \times2/3{[f8 g a]} 
+  \times2/3{b16 c d} c8 |
+\property Voice.tupletVisibility = 4
+\times2/3{c,4^"tupletVisibility = 4" d e} \times2/3{[f8 g a]} 
+  \times2/3{b16 c d} c8 | \break
+
+\property Voice.tupletDirection = \down
+\property Voice.tupletVisibility = 0
+\times2/3{c,4^"tupletDirection = \\textbackslash{}down" d e} 
+  \times2/3{[[f8 g a]]} \times2/3{b16 c d} c8 |
+\property Voice.tupletVisibility = 1
+\times2/3{c,4 d e} \times2/3{[f8 g a]} \times2/3{b16 c d} c8 |
+\property Voice.tupletVisibility = 2
+\times2/3{c,4 d e} \times2/3{[f8 g a]} \times2/3{b16 c d} c8 |
+\property Voice.tupletVisibility = 3
+\times2/3{c,4 d e} \times2/3{[f8 g a]} \times2/3{b16 c d} c8 |
+\property Voice.tupletVisibility = 4
+\times2/3{c,4 d e} \times2/3{[f8 g a]} \times2/3{b16 c d} c8 |\break
+
+\property Voice.tupletDirection = \up
+\property Voice.tupletVisibility = 0
+\times2/3{c,4^"tupletDirection = \\textbackslash{}up" d e} 
+  \times2/3{[[f8 g a]]} \times2/3{b16 c d} c8 |
+\property Voice.tupletVisibility = 1
+\times2/3{c,4 d e} \times2/3{[f8 g a]} \times2/3{b16 c d} c8 |
+\property Voice.tupletVisibility = 2
+\times2/3{c,4 d e} \times2/3{[f8 g a]} \times2/3{b16 c d} c8 |
+\property Voice.tupletVisibility = 3
+\times2/3{c,4 d e} \times2/3{[f8 g a]} \times2/3{b16 c d} c8 |
+\property Voice.tupletVisibility = 4
+\times2/3{c,4 d e} \times2/3{[f8 g a]} \times2/3{b16 c d} c8 |
diff --git a/lily/g-script-engraver.cc b/lily/g-script-engraver.cc
index b7afb866f5..bac7b55cb2 100644
--- a/lily/g-script-engraver.cc
+++ b/lily/g-script-engraver.cc
@@ -73,10 +73,17 @@ G_script_engraver::do_process_requests()
       if (l->dir_)
 	ss->dir_ = l->dir_;
 
+      Real padding = 1.0;
+      Scalar paddingprop = get_property ("articulationScriptPadding", 0);
+      if (paddingprop.length_i() && paddingprop.isnum_b ())
+	{
+	  padding = (Real)paddingprop;
+	}
+      
       ss->staff_support_b_ = !follow_staff;
       p->set_staff_side (ss);
       ss->set_elt_property (script_priority_scm_sym, priority);
-      ss->set_elt_property (padding_scm_sym, gh_double2scm(1.0));
+      ss->set_elt_property (padding_scm_sym, gh_double2scm(padding));
       script_p_arr_.push (p);
       staff_side_p_arr_.push (ss);
       
diff --git a/lily/include/audio-item.hh b/lily/include/audio-item.hh
index 72c2c61a0b..b6b6d33c00 100644
--- a/lily/include/audio-item.hh
+++ b/lily/include/audio-item.hh
@@ -16,11 +16,6 @@
   We need virtual constructors, 
   let's try decentralised factory for specific audio implemenations.
 
-  TODO:
-
-  virtual Niff_item* niff_item_p() = 0;
-  
-  virtual CSound_item* score_item_p() = 0;
  */
 struct Audio_item : public Audio_element {
   Audio_item (Request* req_l);
diff --git a/lily/include/dimensions.hh b/lily/include/dimensions.hh
index 65629f03d5..d6b7cfd176 100644
--- a/lily/include/dimensions.hh
+++ b/lily/include/dimensions.hh
@@ -8,11 +8,15 @@ 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;
+
 
 #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
 
 String print_dimen (Real);
 
diff --git a/lily/include/ly-symbols.hh b/lily/include/ly-symbols.hh
index 18135bbf89..fafa503ad9 100644
--- a/lily/include/ly-symbols.hh
+++ b/lily/include/ly-symbols.hh
@@ -57,6 +57,7 @@ DECLARE_LY_SYMBOL(text);
 DECLARE_LY_SYMBOL(transparent);
 DECLARE_LY_SYMBOL(tuplet);
 DECLARE_LY_SYMBOL(tuplet_thick);
+DECLARE_LY_SYMBOL(tuplet_visibility);
 DECLARE_LY_SYMBOL(visibility_lambda);
 DECLARE_LY_SYMBOL(volta);
 DECLARE_LY_SYMBOL(volta_thick);
diff --git a/lily/include/midi-item.hh b/lily/include/midi-item.hh
index 51996efa7f..eb3b9f5276 100644
--- a/lily/include/midi-item.hh
+++ b/lily/include/midi-item.hh
@@ -97,7 +97,7 @@ struct Midi_time_signature : Midi_item {
 };
 
 /**
-  Turn a note on (blond).
+  Turn a note on.
  */
 struct Midi_note : public Midi_item {
   Midi_note (Audio_item* audio_item_l); 
@@ -111,7 +111,7 @@ struct Midi_note : public Midi_item {
 };
 
 /**
-  Turn a note off (dark).
+  Turn a note off 
  */
 struct Midi_note_off : public Midi_item {
   Midi_note_off (Midi_note*); 
diff --git a/lily/include/new-repeated-music.hh b/lily/include/new-repeated-music.hh
index bc44ca390d..7488e3883c 100644
--- a/lily/include/new-repeated-music.hh
+++ b/lily/include/new-repeated-music.hh
@@ -39,6 +39,15 @@
 
    is called unfolded.  Useful for MIDI.
 
+
+   If the number of repeats is smaller than the number of alternatives, then
+
+   FIXME
+
+   If the number of repeats is bigger than the number of alternatives, then
+
+   FIXME
+   
 */
 class New_repeated_music : public Music
 {
diff --git a/lily/include/tuplet-spanner.hh b/lily/include/tuplet-spanner.hh
index c66009c7cf..2faa3bcd48 100644
--- a/lily/include/tuplet-spanner.hh
+++ b/lily/include/tuplet-spanner.hh
@@ -28,11 +28,7 @@ public:
 
   String  number_str_;
 
-  /*
-    junk us.
-   */
-  bool bracket_visibility_b_;
-  bool num_visibility_b_;
+  bool parallel_beam_b_;
   
 protected:
   Link_array<Beam> beam_l_arr_;
diff --git a/lily/lookup.cc b/lily/lookup.cc
index 846e2614eb..11a6d49e94 100644
--- a/lily/lookup.cc
+++ b/lily/lookup.cc
@@ -381,8 +381,11 @@ Lookup::stem (Real y1, Real y2) const
  taken from Knuth's plain.tex: */
 static Real mag_steps[] = {1, 1, 1.200, 1.440, 1.7280,  2.074, 2.488};
 
+/**
+   TODO: THIS IS UGLY.  Since the user has direct access to TeX
+   strings, we try some halfbaked attempt to detect TeX trickery.
 
-
+*/
 Molecule
 Lookup::text (String style, String text) const
 {
@@ -416,14 +419,21 @@ Lookup::text (String style, String text) const
 
   Font_metric* afm_l = all_fonts_global_p->find_font (style);
   DOUT << "\nChars: ";
-  
+
+
+  int brace_count =0;
   for (int i = 0; i < text.length_i (); i++) 
     {
+      
       if (text[i]=='\\')
 	for (i++; (i < text.length_i ()) && isalpha(text[i]); i++)
 	  ;
       else
 	{
+	  if (text[i] == '{')
+	    brace_count ++;
+	  else if (text[i] == '}')
+	    brace_count --;
           Character_metric *c = afm_l->get_char ((unsigned char)text[i],false);
 
 	  w += c->dimensions()[X_AXIS].length ();
@@ -439,6 +449,21 @@ Lookup::text (String style, String text) const
       ydims *= mag_steps[font_mag];
     }
 
+  if(brace_count)
+    {
+      warning (_f ("Non-matching braces in text `%s', adding braces.", text.ch_C()));
+
+      if (brace_count < 0)
+	{
+	  text = to_str ('{', -brace_count) + text;
+	}
+      else 
+	{
+	  text = text + to_str ('}', brace_count);
+	}
+    }
+
+  
   DOUT << "\n" << to_str (w) << "\n";
   m.dim_.x () = Interval (0, w);
   m.dim_.y () = ydims;
diff --git a/lily/tuplet-engraver.cc b/lily/tuplet-engraver.cc
index 51832adf9d..347ed70c43 100644
--- a/lily/tuplet-engraver.cc
+++ b/lily/tuplet-engraver.cc
@@ -34,12 +34,25 @@ Tuplet_engraver::do_try_music (Music *r)
 void
 Tuplet_engraver::do_process_requests ()
 {
+  int dir = 0;
+  Scalar prop = get_property ("tupletDirection", 0);
+  if (prop.isnum_b())
+    dir = (int)prop;
+  int visibility = 3;
+  prop = get_property ("tupletVisibility", 0);
+  if (prop.isnum_b())
+    visibility = (int)prop;
+
   for (int i= started_span_p_arr_.size ();
        i < time_scaled_music_arr_.size (); i++)
     {
       Tuplet_spanner* glep = new Tuplet_spanner;
       started_span_p_arr_.push (glep);
       glep->number_str_ = to_str (time_scaled_music_arr_[i]->den_i_);
+      glep->set_elt_property(tuplet_visibility_scm_sym,
+                             gh_int2scm (visibility));
+      if (dir != 0)
+	glep->set_elt_property(dir_forced_scm_sym, gh_int2scm (dir));
       announce_element (Score_element_info (glep, time_scaled_music_arr_ [i]));
     }
 }
diff --git a/lily/tuplet-spanner.cc b/lily/tuplet-spanner.cc
index 9ff1e89bde..1383acbb1d 100644
--- a/lily/tuplet-spanner.cc
+++ b/lily/tuplet-spanner.cc
@@ -19,8 +19,7 @@
 
 Tuplet_spanner::Tuplet_spanner ()
 {
-  bracket_visibility_b_ = true;
-  num_visibility_b_ = true;
+  parallel_beam_b_ = false;
 }
 
 /*
@@ -31,36 +30,52 @@ Tuplet_spanner::do_brew_molecule_p () const
 {
   Molecule* mol_p = new Molecule;
 
+  // Default behaviour: number always, bracket when no beam!
+  bool bracket_visibility = !parallel_beam_b_;
+  bool number_visibility = true;
+  SCM visibility_sym =get_elt_property (tuplet_visibility_scm_sym);
+  if (visibility_sym != SCM_BOOL_F)
+    {
+      /* Property values:
+	 0       show nothing
+	 1       show number
+	 2       show (number and bracket)-if-no-beam
+	 3       show number, and bracket-if-no-beam
+	 4       show number, and bracket
+      */
+      int value = gh_scm2int (SCM_CDR(visibility_sym));
+      bracket_visibility = (value == 4 || (value > 1 && !parallel_beam_b_));
+      number_visibility = (value > 2 || value == 1 || 
+			   (value == 2 && !parallel_beam_b_));
+    }
+  
   if (column_arr_.size ()){
     Real ncw = column_arr_.top ()->extent (X_AXIS).length ();
+    Real w = extent (X_AXIS).length () + ncw;
     Molecule num (lookup_l ()->text ("italic",
 				     number_str_));
     num.align_to (X_AXIS, CENTER);
+    num.translate_axis (w/2, X_AXIS);
     Real interline = paper_l ()->get_realvar (interline_scm_sym);
+    Real dy = column_arr_.top ()->extent (Y_AXIS) [dir_]
+      - column_arr_[0]->extent (Y_AXIS) [dir_];
+    num.align_to (Y_AXIS, CENTER);
+    num.translate_axis (dir_ * interline, Y_AXIS);
+	
+    num.translate_axis (dy/2, Y_AXIS);
+
     
-    if (beam_l_arr_.size () == 1 && !bracket_visibility_b_)
+    /*    if (beam_l_arr_.size () == 1 && !bracket_visibility)
       {
-	Beam *beam_l = beam_l_arr_[0];
-	Directional_spanner* ds = dynamic_cast<Directional_spanner*>(beam_l);
-	
 	num.translate_axis (dir_ * interline,  Y_AXIS);
-	num.translate (ds->center ());
-	num.translate_axis (ncw, X_AXIS);
       }
-    
-    if (bracket_visibility_b_)      
+    */
+    if (bracket_visibility)      
       {
-	Real dy = column_arr_.top ()->extent (Y_AXIS) [dir_]
-	  - column_arr_[0]->extent (Y_AXIS) [dir_];
-	Real w = extent (X_AXIS).length () + ncw;
-	num.align_to (Y_AXIS, CENTER);
-	num.translate_axis (dir_ * interline, Y_AXIS);
-	
-	num.translate (Offset (w/2, dy/2));
 	mol_p->add_molecule (lookup_l ()->plet (dy, w, dir_));
       }
 
-    if (num_visibility_b_)
+    if (number_visibility)
       {
 	mol_p->add_molecule (num);
       }
@@ -91,11 +106,11 @@ Tuplet_spanner::do_post_processing ()
       if (!broken_b () 
 	  && spanned_drul_[LEFT]->column_l () == beam_l->spanned_drul_[LEFT]->column_l ()
 	  && spanned_drul_[RIGHT]->column_l () == beam_l->spanned_drul_[RIGHT]->column_l ())
-	bracket_visibility_b_ = false;
+	parallel_beam_b_ = true;
     }
 
-  if (column_arr_.size () == 1)
-    bracket_visibility_b_ = false;
+  //  if (column_arr_.size () == 1)
+  //    bracket_visibility_b_ = false;
 }
 
 void
@@ -113,6 +128,13 @@ Direction
 Tuplet_spanner::get_default_dir () const
 {
   Direction d = UP;
+  SCM dir_sym =get_elt_property (dir_forced_scm_sym);
+  if (dir_sym != SCM_BOOL_F) {
+    d= (Direction) gh_scm2int (SCM_CDR(dir_sym));
+    if (d != CENTER)
+      return d;
+  }
+
   for (int i=0; i < column_arr_.size (); i ++) 
     {
       if (column_arr_[i]->dir () < 0) 
diff --git a/ly/deutsch.ly b/ly/deutsch.ly
index ef247f87f3..a1aa126891 100644
--- a/ly/deutsch.ly
+++ b/ly/deutsch.ly
@@ -1,9 +1,11 @@
-%
 % 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'
+
 
 %
 % Please note that, while these names are used to enter *notes*, they
@@ -36,7 +38,8 @@
 	g 	= \musicalpitch { -1 4 0 }
 	gis 	= \musicalpitch { -1 4 1 }
 	gisis	= \musicalpitch { -1 4 2 }
-	ases 	= \musicalpitch { -1 5 -2 }
+	asas 	= \musicalpitch { -1 5 -2 }
+	ases 	= \musicalpitch { -1 5 -2 }  % non-standard name for asas
 	as 	= \musicalpitch { -1 5 -1 }
 	a 	= \musicalpitch { -1 5 0 }
 	ais 	= \musicalpitch { -1 5 1 }
@@ -78,7 +81,8 @@
 	G 	= \musicalpitch { -2 4 0 }
 	Gis 	= \musicalpitch { -2 4 1 }
 	Gisis	= \musicalpitch { -2 4 2 }
-	Ases 	= \musicalpitch { -2 5 -2 }
+	Asas 	= \musicalpitch { -2 5 -2 }
+	Ases 	= \musicalpitch { -2 5 -2 }  % non-standard name for Asas
 	As 	= \musicalpitch { -2 5 -1 }
 	A 	= \musicalpitch { -2 5 0 }
 	Ais 	= \musicalpitch { -2 5 1 }
diff --git a/ly/property.ly b/ly/property.ly
index ede2be764d..7aa173d0b4 100644
--- a/ly/property.ly
+++ b/ly/property.ly
@@ -132,15 +132,15 @@ slurdotted =
 %{
  for grace note hack, see input/test/grace.ly
 %}
-pletoff = {
-	\property Voice.pletvisibility = 0
+tupletoff = {
+	\property Voice.tupletVisibility = 0
 }
-pleton = {
-	\property Voice.pletvisibility = 3
+tupleton = {
+	\property Voice.tupletVisibility = 3
 }
 tiny  = {
 	\property Voice.fontSize= "-2"
-	\pletoff %urg
+	\tupletoff %urg
 }
 
 small  = {
@@ -149,7 +149,7 @@ small  = {
 
 normalsize = {
 	\property Voice.fontSize= "0"
-	\pleton %urg
+	\tupleton %urg
 }
 
 %{
@@ -164,20 +164,20 @@ grace = {
 	\tiny
 % it would be so cool not to have to specify these factors each time...
 % :-(
-	\property Voice.pletvisibility = 0
+	\property Voice.tupletVisibility = 0
 	\[1/16
 }
 
 graceat = \melodic {
 	\normalsize
-	\property Voice.pletvisibility = 0
+	\property Voice.tupletVisibility = 0
 	\] \[31/32
 }
 
 ecarg =  \melodic {
-	\property Voice.pletvisibility = 0
+	\property Voice.tupletVisibility = 0
 	\]
-	\property Voice.pletvisibility = 3
+	\property Voice.tupletVisibility = 3
 }
 %}
 
diff --git a/make/out/lelievijver.lsm b/make/out/lelievijver.lsm
index e913cd4d66..a4bcc81feb 100644
--- a/make/out/lelievijver.lsm
+++ b/make/out/lelievijver.lsm
@@ -1,15 +1,15 @@
 Begin3
 Titel: LilyPond
-Versie: 1.1.46
-Inschrijf datum: 04JUN99
+Versie: 1.1.47
+Inschrijf datum: 09JUN99
 Beschrijving: @FLAPTEKST@
 Trefwoorden: muziek typezetten midi notatie
 Auteur: hanwen@stack.nl (Han-Wen Nienhuys)
 	janneke@gnu.org (Jan Nieuwenhuizen)
 Onderhouden door: hanwen@cs.ruu.nl (Han-Wen Nienhuys)
 Voornaamste plek: sunsite.unc.edu /pub/Linux/apps
-	770k lilypond-1.1.46.tar.gz 
+	770k lilypond-1.1.47.tar.gz 
 Oorspronkelijke plek: ftp.cs.uu.nl /pub/GNU/LilyPond/development/
-	770k lilypond-1.1.46.tar.gz 
+	770k lilypond-1.1.47.tar.gz 
 Copi-eer voorwaarden: GPL
 End
diff --git a/make/out/lilypond.lsm b/make/out/lilypond.lsm
index a3fb14fe65..d67fbc0822 100644
--- a/make/out/lilypond.lsm
+++ b/make/out/lilypond.lsm
@@ -1,7 +1,7 @@
 Begin3
 Title: LilyPond
-Version: 1.1.46
-Entered-date: 04JUN99
+Version: 1.1.47
+Entered-date: 09JUN99
 Description: 
 LilyPond is the GNU Project music typesetter.  This program can print
 beautiful sheet music from a music definition file.  It can also play
@@ -14,8 +14,8 @@ Author: hanwen@cs.ruu.nl (Han-Wen Nienhuys)
 	janneke@gnu.org (Jan Nieuwenhuizen)
 Maintained-by: hanwen@stack.nl (Han-Wen Nienhuys)
 Primary-site: sunsite.unc.edu /pub/Linux/apps/sound/convert
-	770k lilypond-1.1.46.tar.gz 
+	770k lilypond-1.1.47.tar.gz 
 Original-site: ftp.cs.uu.nl /pub/GNU/LilyPond/development/
-	770k lilypond-1.1.46.tar.gz 
+	770k lilypond-1.1.47.tar.gz 
 Copying-policy: GPL
 End
diff --git a/make/out/lilypond.spec b/make/out/lilypond.spec
index bd326193d7..b47a80facf 100644
--- a/make/out/lilypond.spec
+++ b/make/out/lilypond.spec
@@ -1,9 +1,9 @@
 Name: lilypond
-Version: 1.1.46
+Version: 1.1.47
 Release: 1
 Copyright: GPL
 Group: Applications/Publishing
-Source0: ftp.cs.uu.nl:/pub/GNU/LilyPond/development/lilypond-1.1.46.tar.gz
+Source0: ftp.cs.uu.nl:/pub/GNU/LilyPond/development/lilypond-1.1.47.tar.gz
 Summary: A program for printing sheet music.
 URL: http://www.cs.uu.nl/~hanwen/lilypond
 Packager: Han-Wen Nienhuys <hanwen@cs.uu.nl>
diff --git a/mutopia/N.W.Gade/brass.ly b/mutopia/N.W.Gade/brass.ly
index a4439356a1..a7320929c4 100644
--- a/mutopia/N.W.Gade/brass.ly
+++ b/mutopia/N.W.Gade/brass.ly
@@ -36,7 +36,7 @@ r \tiny g8 \f *1/2 \normalsize d'2 \> ( *7/8|
 [g,8. a16 g8. a16 \! g8. ) a16 ] |
 g4 r r |
 R2. |
-r4 r^\fermata r8^\fermata r |
+r4 r r8 r |
 R2*8 |
 d'8-. \pp r c-. r |
 d r c g |
@@ -200,7 +200,7 @@ c4 r8 g ( |
 ) e'4 r8 g,8 ( |
 ) c4 r |
 R2 |
-e4 \fz r^\fermata
+e4 \fz r
 }
 
 corIhelp=\notes\relative c''' {
@@ -208,10 +208,10 @@ corIhelp=\notes\relative c''' {
 \tiny
 
 s2.*32 |
-s2*33 |
+s2*33 | \stemup
 r4 r8 [g16^"oboe" \p ( a ] |
 [ ) g8-. fis16 ( g ][ ) fis8-. f16 ( g ] |
-[ ) f8-. e16 ( f ] ) e8-. s |
+[ ) f8-. e16 ( f ] ) e8-. s | \stemboth
 s2*66 |
 [f,,16^"Vlc." ( g f g][f g f8 ] |
 ) e4 r |
@@ -262,7 +262,7 @@ r r [g,16 ( \p d' e d ] |
 R2. |
 [g8. ( a16 g8. a16 g8. a16] |
 [g8._"dim." a16 ] g4. a8 |
-[g8. a16] ) g4^\fermata \pp r8^\fermata r |
+[g8. a16] ) g4 \pp r8 r |
 R2*8 |
 g8-. \pp r c,-. r |
 g'-. r c,-. r |
@@ -406,7 +406,7 @@ e4 r8 g ( |
 ) c,4 r8 g'8 ( |
 ) e4 r |
 R2 |
-c'4-. \fz r^\fermata
+c'4-. \fz r
 }
 
 trpI=\notes\relative c'' {
@@ -416,7 +416,7 @@ trpI=\notes\relative c'' {
 
 [d8. ( \f e16 ] ) d2 |
 R2.*30 |
-r4 r^\fermata r8 ^\fermata r |
+r4 r r8  r |
 R2*12 |
 g,2 \f ~ |
 g4 r |
@@ -514,7 +514,7 @@ d-. r |
 d-. r |
 g, r |
 R2 |
-g4 \fz r^\fermata
+g4 \fz r
 }
 
 trpIhelp=\notes\relative c'' {
@@ -522,23 +522,23 @@ trpIhelp=\notes\relative c'' {
 
 s2.*32 |
 s2*9 |
-r4 r8 c-.^"Clar. I" |
+r4^"Clar. I" r8 c-. |
 [bes-. a-. g-. f-. ] |
 [e-. d-. c-. ] r8 |
 s2*23 |
-r4 r8 g''8^"Cor. I" ( |
+r4^"Cor. I" r8 g''8 ( |
 ) g,4. g8 ( |
 [) d' d16 ( e ] )d8 s |
 s2*75 |
-r4 r8 c-.^"Clar. I" |
+r4^"Clar. I" r8 c-. |
 [bes-. a-. g-. f-. ] |
 [e-. d-. c-. ] s8 |
 s2*25
-r4 r8 a''^"Oboe" |
+r4^"Oboe" r8 a'' |
 a-. [ gis-. gis-. \< g-.] |
 [g-. fis-. \! fis-. f-. ] |
 s2*53 |
-r4 r8 [c'16^"Flauto" ( d] |
+r4^"Flauto" r8 [c'16 ( d] |
 ) c8 [b16 ( c ] ) b8 [bes16 ( c ] |
 )bes8 [a16 ( bes ] ) a8 [c16 ( d] |
 ) c8 [b16 ( c ] ) b8 [bes16 ( c ] |
@@ -550,22 +550,22 @@ trpIIhelp=\notes\relative c'' {
 
 s2.*32 |
 s2*9 |
-r4 r8 c-.^"Clar. I" |
+r4^"Clar. I" r8 c-. |
 [bes-. a-. g-. f-. ] |
 [e-. d-. c-. ] r8 |
 s2*23 |
-r4 r8 g''8^"Cor. I" ( |
+r4^"Cor. I" r8 g''8 ( |
 ) g,4. g8 ( |
 [) d' d16 ( e ] )d8 s |
 s2*75 |
-r4 r8 c-.^"Clar. I" |
+r4^"Clar. I" r8 c-. |
 [bes-. a-. g-. f-. ] |
 [e-. d-. c-. ] s8 |
 s2*28
-r4 g'8^"Trp. I" \f r |
+r4^"Trp. I" g'8 \f r |
 [d'-. d16 ( e ] ) d8 r |
 s2*51 |
-r4 r8 [c'16^"Flauto" ( d] |
+r4^"Flauto" r8 [c'16 ( d] |
 ) c8 [b16 ( c ] ) b8 [bes16 ( c ] |
 )bes8 [a16 ( bes ] ) a8 [c16 ( d] |
 ) c8 [b16 ( c ] ) b8 [bes16 ( c ] |
@@ -578,7 +578,7 @@ trpII=\notes\relative c' {
 \property Staff."midiInstrument" = "trumpet"
 
 R2.*31 |
-r4 r^\fermata r8 ^\fermata r |
+r4 r r8  r |
 R2*12 |
 g2 \f ~ |
 g4 r |
@@ -671,7 +671,7 @@ g-. r |
 g-. r |
 g r |
 R2 |
-g4 \fz r^\fermata
+g4 \fz r
 }
 
 timpani=\notes\relative c, {
@@ -698,7 +698,7 @@ c2.:32 |
 c2.:32 |
 c2.:32 |
 c4 r r |
-r r^\fermata r8^\fermata r |
+r r r8 r |
 R2*12 |
 f,2:32 \f ~ |
 f4 r |
@@ -709,7 +709,7 @@ R2 |
 f8 r r4 |
 R2*14 |
 \context Staff <{\voiceone \clef "treble";
-  r4^"Tri." r8 e''' |
+  r4^"Trg." r8 e''' |
   [e e e e ] | 
   [e e e g,, ] | % In reality: e e e e | e
   g r r4 |
@@ -769,7 +769,7 @@ R2*3 |
 c'4 \fz r |
 R2*10 |
 \context Staff <{\voiceone \clef "treble";
-  r4^"Tri." r8 e'' |
+  r4^"Trg." r8 e'' |
   [e e e e ] | 
   [e e e g,, ] | % In reality: e e e e | e4
   g4 r4 |
@@ -840,7 +840,7 @@ f2:32 ~ |
 f2:32 ~ |
 f8 r r4 |
 r2 |
-f4 \fz r^\fermata 
+f4 \fz r 
 }
 
 timphelp=\notes\relative c' {
@@ -850,7 +850,7 @@ timphelp=\notes\relative c' {
 [c8. ( d16] ) c2 |
 s2.*30 |
 s2*9 |
-r4 r8 \clef "treble"; c'-.^"Clar. I" |
+r4^"Clar. I" r8 \clef "treble"; c'-. |
 [bes-. a-. g-. f-. ] |
 [e-. d-. c-. ] r8 \clef "bass"; |
 s2*24 |
@@ -858,15 +858,15 @@ s2*24 |
 %[ ) g8-. fis16 ( g ][ ) fis8-. f16 ( g ] |
 %[ ) f8-. e16 ( f ] ) e8-. \clef "bass"; s |
 s2*77 |
-r4 r8 \clef "treble"; c'-.^"Clar. I" |
+r4^"Clar. I" r8 \clef "treble"; c'-. |
 [bes-. a-. g-. f-. ] |
 [e-. d-. c-. ] r8 \clef "bass"; |
 s2*28
-%r4 r8 \clef "treble"; a''^"Oboe" |
+%r4^"Oboe" r8 \clef "treble"; a'' |
 %a-. [ gis-. gis-. \< g-.] |
 %[g-. fis-. \! fis-. ] \clef "bass"; s8 |
 s2*57 |
-r4 r8 \clef "treble"; bes'^"Vi. I" ( |
+r4^"Vi. I" r8 \clef "treble"; bes' ( |
 ) bes'4. d,8 ( |
 ) d'4. c,8 ( |
 ) c'4. e,8 ( |
diff --git a/mutopia/N.W.Gade/global.ly b/mutopia/N.W.Gade/global.ly
index 135997817d..f2de39bfbe 100644
--- a/mutopia/N.W.Gade/global.ly
+++ b/mutopia/N.W.Gade/global.ly
@@ -2,10 +2,11 @@
 globalNoKey=\notes {
 \time 3/4;
 \skip 2.*31;
-s2 s8 \bar "||"; \break
+s4 s4^\fermata s8^\fermata \bar "||"; \break
 s8 
 \time 2/4;
-\skip 2*225;
+\skip 2*224;
+s4 s4^\fermata
 \bar "|.";
 }
 
diff --git a/mutopia/N.W.Gade/global.tex b/mutopia/N.W.Gade/global.tex
index 0fa5588102..5046499d6e 100644
--- a/mutopia/N.W.Gade/global.tex
+++ b/mutopia/N.W.Gade/global.tex
@@ -19,7 +19,7 @@
 % Modified from lilypond/tex/headers.tex:
 \advance\topmargin-5mm
 \advance\headsep-4mm
-\addtolength{\textheight}{12mm}
+\addtolength{\textheight}{17mm}
 \advance\footskip-3mm
 
 \usepackage{fancyheadings}
@@ -33,6 +33,7 @@
 
 % Modified from lilypond/tex/titledefs.tex:
 \def\makelilytitle{%
+  \vspace*{-10mm}%
   \begin{center}
         \bfseries
         \ifx\mudelanull\thetitle\else\sethuge{\thetitle}\\ \fi
@@ -57,4 +58,5 @@
 %  {\flushleft\setLarge{\normalfont\scshape\thepiece}}
   {\flushleft\setLarge{\textbf\thepiece}}
   \leavevmode
+  \enlargethispage*{5mm}
 }
diff --git a/mutopia/N.W.Gade/parts.ly b/mutopia/N.W.Gade/parts.ly
index e70c89dbe2..32616d92f0 100644
--- a/mutopia/N.W.Gade/parts.ly
+++ b/mutopia/N.W.Gade/parts.ly
@@ -8,6 +8,9 @@ copyright =	"Mats Bengtsson, 1999. Free circulation permitted and " +
 		"Statens Musikbibliotek, Stockholm, Sweden";
 }
 
+% Process with 'ly2dvi -s parts.ly' to get the separate parts.
+
+
 \version "1.0.20";
 
 \include "global.ly"
@@ -19,29 +22,26 @@ my_paper = \paper {
   textheight = 275.0 \mm;
   \translator {
     \OrchestralPartStaffContext
-    textScriptPadding = 5.0;
   }
   \translator { 
     \ScoreContext
     skipBars = 1;
     markScriptPadding = "6.0";
-    textstyle = "italic";
-    textEmptyDimension = 1;
-    oldTieBehavior = 1;
-  }
-  \translator { \VoiceContext
-    oldTieBehavior = 1;
+    barNumberScriptPadding = "11.0";
+    textScriptPadding = 5.0;
     textstyle = "italic";
     textEmptyDimension = 1;
   }
 }
-
+%{
 \score{
   \context Staff <
-    \global
-    \marks
-    \flauto
-    \flautohelp
+    \context Voice <
+      \global
+      \marks
+      \flauto
+    >
+    \context Voice = help \flautohelp
   >
   \header{
     instrument = "Flauto";
@@ -54,13 +54,15 @@ my_paper = \paper {
     \tempo 4=120;
   }
 }
-
+%}
 \score{
   \context Staff <
-    \global
-    \marks
-    \oboe
-    \oboehelp
+    \context Voice <
+      \global
+      \marks
+      \oboe
+    >
+    \context Voice = help \oboehelp
   >
   \header{
     instrument = "Oboe";
@@ -73,9 +75,9 @@ my_paper = \paper {
     \tempo 4=120;
   }
 }
-
+%{
 \score{
-  \context Staff <
+  \context Voice <
     \globalNoKey
     \marks
     \clarI
@@ -93,7 +95,7 @@ my_paper = \paper {
 }
 
 \score{
-  \context Staff <
+  \context Voice <
     \globalNoKey
     \marks
     \clarII
@@ -111,7 +113,7 @@ my_paper = \paper {
 }
 
 \score{
-  \context Staff <
+  \context Voice <
     \global
     \marks
     \fagotto
@@ -130,10 +132,12 @@ my_paper = \paper {
 
 \score{
   \context Staff <
-    \globalNoKey
-    \marks
-    \corI
-    \corIhelp
+    \context Voice <
+      \globalNoKey
+      \marks
+      \corI
+    >
+    \context Voice = help \corIhelp
   >
   \header{
     instrument = "Corno I in F";
@@ -149,10 +153,12 @@ my_paper = \paper {
 
 \score{
   \context Staff <
-    \globalNoKey
-    \marks
-    \corII
-    \corIIhelp
+    \context Voice <
+      \globalNoKey
+      \marks
+      \corII
+    >
+    \context Voice = help \corIIhelp
   >
   \header{
     instrument = "Corno II in F";
@@ -168,10 +174,12 @@ my_paper = \paper {
 
 \score{
   \context Staff <
-    \globalNoKey
-    \marks
-    \trpI
-    \trpIhelp
+    \context Voice <
+      \globalNoKey
+      \marks
+      \trpI
+      >
+    \context Voice = help \trpIhelp
   >
   \header{
     instrument = "Tromba I in B\\textflat";
@@ -187,10 +195,12 @@ my_paper = \paper {
 
 \score{
   \context Staff <
-    \globalNoKey
-    \marks
-    \trpII
-    \trpIIhelp
+    \context Voice <
+      \globalNoKey
+      \marks
+      \trpII
+    >
+    \context Voice = help \trpIIhelp
   >
   \header{
     instrument = "Tromba II in B\\textflat";
@@ -206,10 +216,12 @@ my_paper = \paper {
 
 \score{
   \context Staff <
-    \globalNoKey
-    \marks
-    \timpani
-    \timphelp
+    \context Voice <
+      \globalNoKey
+      \marks
+      \timpani
+    >
+    \context Voice = help \timphelp
   >
   \header{
     instrument = "Timpani \& Triangolo";
@@ -224,7 +236,7 @@ my_paper = \paper {
 }
 
 \score{
-  \context Staff <
+  \context Voice <
     \global
     \marks
     \viI
@@ -242,7 +254,7 @@ my_paper = \paper {
 }
 
 \score{
-  \context Staff <
+  \context Voice <
     \global
     \marks
     \viII
@@ -260,7 +272,7 @@ my_paper = \paper {
 }
 
 \score{
-  \context Staff <
+  \context Voice <
     \global
     \marks
     \notes{s2.*32 s2*142 \break}
@@ -279,7 +291,7 @@ my_paper = \paper {
 }
 
 \score{
-  \context Staff <
+  \context Voice <
     \global
     \marks
     \vlc
@@ -297,7 +309,7 @@ my_paper = \paper {
 }
 
 \score{
-  \context Staff <
+  \context Voice <
     \global
     \marks
     \cb
@@ -313,3 +325,4 @@ my_paper = \paper {
     \tempo 4=120;
   }
 }
+%}
\ No newline at end of file
diff --git a/mutopia/N.W.Gade/score.ly b/mutopia/N.W.Gade/score.ly
index 25902f259e..64fa9c6fbe 100644
--- a/mutopia/N.W.Gade/score.ly
+++ b/mutopia/N.W.Gade/score.ly
@@ -19,32 +19,32 @@ copyright =	"Mats Bengtsson, 1999. Free circulation permitted and " +
 
 \score{ <
   \context StaffGroup = wood <
-    \context Staff = flauto <
+    \context Voice = flauto <
       \property Staff.instrument = "Flauto"
       \property Staff.instr = "Fl."
       \global
       \marks
       \flauto
     >
-    \context Staff = oboe <
+    \context Voice = oboe <
       \property Staff.instrument = "Oboe"
       \property Staff.instr = "Ob."
       \global
       \oboe
     >
-    \context Staff = clarI <
+    \context Voice = clarI <
       \property Staff.instrument = "Clarinetto I"
       \property Staff.instr = "Cl. I"
       \globalNoKey
       \clarI
     >
-    \context Staff = clarII <
+    \context Voice = clarII <
       \property Staff.instrument = "Clarinetto II"
       \property Staff.instr = "Cl. II"
       \globalNoKey
       \clarII
     >
-    \context Staff = fagotto <
+    \context Voice = fagotto <
       \property Staff.instrument = "Fagotto"
       \property Staff.instr = "Fg."
       \global
@@ -53,55 +53,67 @@ copyright =	"Mats Bengtsson, 1999. Free circulation permitted and " +
   >
   \context StaffGroup = brass <
     \context Staff = cor <
-      \globalNoKey
       \property Staff.instrument = "2 Corni in F"
       \property Staff.instr = "Cor."
-      \context Voice = corI { \stemup \corI }
-      \context Voice = corII { \stemdown \corII }
+      \context Voice = corI <
+	\globalNoKey
+	\stemup \property Voice.dynamicDir = \up 
+	\corI 
+      >
+      \context Voice = corII { 
+	\stemdown \property Voice.dynamicDir = \down 
+	\corII 
+      }
     >
     \context Staff = trp <
-      \globalNoKey
       \property Staff.instrument = "2 Trp. in B\\textflat  "
       \property Staff.instr = "Trp."
-      \context Voice = trpI { \stemup \trpI }
-      \context Voice = trpII { \stemdown \trpII }
+      \context Voice = trpI <
+	\globalNoKey
+	\stemup \property Voice.dynamicDir = \up 
+	\trpI
+      >
+      \context Voice = trpII { 
+	\stemdown \property Voice.dynamicDir = \down 
+	\trpII
+      }
     >
   >
-    \context StaffGroup = percussion <\context Staff = timpani <
+    \context StaffGroup = percussion <\context Voice = timpani <
       \property Staff.instrument = "Timp. \& Triang."
-      \property Staff.instr = "Timp. \& Triang."
+      \property Staff.instr = "Tmp \& Trg"
       \global
       \timpani
     >
   >
   \context StaffGroup = strings <
     \context GrandStaff = violins <
-      \context Staff = viI <
+      \context Voice = viI <
         \property Staff.instrument = "Violin I"
         \property Staff.instr = "Vi. I"
         \global
         \viI
       >
-      \context Staff = viII <
+      \context Voice = viII <
         \property Staff.instrument = "Violin II"
         \property Staff.instr = "Vi. II"
         \global
         \viII
       >
     >
-    \context Staff = vla <
+    \context Voice = vla <
       \property Staff.instrument = "Viola"
       \property Staff.instr = "Vla."
       \global
       \vla
     >
-    \context Staff = vlc <
+    \context Voice = vlc <
       \property Staff.instrument = "Violoncello"
       \property Staff.instr = "Vlc"
       \global
       \vlc
     >
-    \context Staff = cb <
+    \context Voice = cb <
       \property Staff.instrument = "Contrabasso"
       \property Staff.instr = "C.B."
       \global
@@ -116,6 +128,7 @@ copyright =	"Mats Bengtsson, 1999. Free circulation permitted and " +
     \translator {
 	\OrchestralScoreContext
         minVerticalAlign = 2.5*\staffheight;
+        barNumberScriptPadding = "12.0";
     }
     \translator { \StaffContext
 	\consists "Staff_margin_engraver";
@@ -123,10 +136,6 @@ copyright =	"Mats Bengtsson, 1999. Free circulation permitted and " +
 	textstyle = "italic";
 	textScriptPadding = 5.0;
         textEmptyDimension = 1;
-%        oldTieBehavior = 1;
-    }
-    \translator { \VoiceContext
-        oldTieBehavior = 1;
     }
   }
 }
diff --git a/mutopia/N.W.Gade/strings.ly b/mutopia/N.W.Gade/strings.ly
index 373cacafde..168c1fa52f 100644
--- a/mutopia/N.W.Gade/strings.ly
+++ b/mutopia/N.W.Gade/strings.ly
@@ -32,7 +32,7 @@ r8 [ c ( g' c, f c ] |
 [ bes c ] ) bes2 ~ |
 bes r4 |
 R2.*4 |
-r4 r^\fermata r8^\fermata [c'16 \pp ( d] | \time 2/4;
+r4 r r8 [c'16 \pp ( d] | \time 2/4;
 ) c8 r r [c16 ( d] |
 ) c8 r r [c16 ( d] |
 [c d c a][f a c d] |
@@ -255,7 +255,7 @@ c r a r |
 <a4 ) a'> r8 c, |
 f2 ~ |
 f ( |
-<f4 \fz c' ) a'> r^\fermata
+<f4 \fz c' ) a'> r
 
 }
 
@@ -291,7 +291,7 @@ c \< ~ |
 \! c \pp ~ |
 c2 r4 |
 R2.*4 |
-r4 r^\fermata r8^\fermata [c'16 \pp ( d] | \time 2/4;
+r4 r r8 [c'16 \pp ( d] | \time 2/4;
 ) c8 r r [c16 ( d] |
 ) c8 r r [c16 ( d] |
 [c d c a][f a c d] |
@@ -558,7 +558,7 @@ es \< es4 \! d8 \f |
 <a4 ) a'> r8 c, |
 [a16 ( gis a gis][a gis a gis] |
 [a gis a gis][a gis a gis] |
-<) a4 f' \fz > r^\fermata 
+<) a4 f' \fz > r 
 }
 
 vla=\notes\relative c' {
@@ -588,10 +588,10 @@ g2 \mf [a8 \< ( \! d ] |
 [ c \> b \! c g e ) c] |
 [e'8. \pp ( f16 d8 e f d ] |
 b4 [c8 \< a f \! ) a ] |
-c,2 \p ~ c'4 |
-c,2 ~ c'4 |
-c,2 ~ c'4 |
-c, ~ c' r |
+c,2 \p () c'4 |
+c,2 () c'4 |
+c,2 () c'4 |
+c, () c' r |
 [c,8 ( g' ][ c g c a ] |
 [bes c ] ) a4 r |
 R2. |
@@ -603,7 +603,7 @@ r4 r c, \pp ~ |
 c2. ~ |
 c4 r r |
 R2.*3 |
-r4 r^\fermata r8^\fermata r8 |
+r4 r r8 r8 |
 R2*4 |
 c'8-. \pp r bes-. r |
 c-. r bes-. r |
@@ -832,7 +832,7 @@ a r c-. r |
 <f4 ) c'> r8 c, |
 [c'16 ( b c b][c b c b] |
 [c b c b][c b c b] |
-<c4 \fz ) a'> r^\fermata 
+<c4 \fz ) a'> r 
 }
 
 vlc=\notes\relative c' {
@@ -869,7 +869,7 @@ g ) f f, ( \< | % added slur
 ) e2. ~ |
 e2 r4 |
 R2.*4 |
-r4 r4^\fermata r8^\fermata [c'16 \pp ( d] | \time 2/4; % \pp added
+r4 r4 r8 [c'16 \pp ( d] | \time 2/4; % \pp added
 ) c8 r r [c16 ( d] | 
 ) c8 r r [c16 ( d] |
 [c d c a][f a c d] |
@@ -1102,7 +1102,7 @@ f4 r8 c8 ( |
 ) f4 r8 c8 ( |
 ) f,2 ~ |
 f ( |
-) f'4 \fz r^\fermata
+) f'4 \fz r
 }
 
 cb=\notes\relative c {
@@ -1136,7 +1136,7 @@ r4 r f ( \< |
 r r dis ( \< |
 \! ) e2 r4 |
 R2.*6 |
-r4 r^\fermata r8^\fermata r |
+r4 r r8 r |
 R2*4 |
 d8-. \pp r g-. r |
 d-. r g-. r |
@@ -1331,5 +1331,5 @@ f4 r8 c8 ( |
 ) f4 r8 c8 ( |
 ) f,2 ~ |
 f ( |
-) f'4 \fz r^\fermata
+) f'4 \fz r
 }
diff --git a/mutopia/N.W.Gade/wood.ly b/mutopia/N.W.Gade/wood.ly
index 17ee152456..6276f9af7b 100644
--- a/mutopia/N.W.Gade/wood.ly
+++ b/mutopia/N.W.Gade/wood.ly
@@ -20,7 +20,7 @@ R2.*4 |
 [c8. ( d16] c4. ) a8 |
 [a8. ( g16 ] ) f4 r |
 R2.*13 |
-r4 r4^\fermata r8^\fermata r8 \time 2/4;
+r4 r4 r8 r8 \time 2/4;
 R2*4 |
 d'8-. \pp r d-. r |
 d-. r d-. r |
@@ -191,7 +191,7 @@ f4 r8 c ( |
 ) a'4 r8 c, ( |
 ) f4 r |
 R2 |
-f4-. \fz r^\fermata
+f4-. \fz r
 }
 
 
@@ -212,7 +212,7 @@ R2.*4 |
 [c8. ( d16] c4. ) a8 |
 [a8. ( g16 ] ) f4 r |
 R2.*13 |
-r4 r4^\fermata r8^\fermata r8 \time 2/4;
+r4 r4 r8 r8 \time 2/4;
 R2*4 |
 a'8-. \pp r g-. r |
 a8-. r g-. r |
@@ -233,7 +233,7 @@ dis,2 |
 c r d r |
 g, r r4 |
 R2*10 |
-R4 r8 e' \p |
+r4 r8 e' \p |
 e [es-. es-.] d-. |
 d-. [cis-. cis-.] c-. |
 c [c16 ( d] [es8 d16 c] | % slur added
@@ -370,7 +370,7 @@ f4 r8 c' ( |
 ) a4 r8 c ( |
 ) f4 r |
 R2 |
-f4 \fz r^\fermata
+f4 \fz r
 
 }
 
@@ -398,7 +398,7 @@ d4-> () b r |
 r r \times 2/3 { [d8 ( b ) d ] } |
 a4 () d r |
 R2.*6 |
-r4 r4^\fermata r8^\fermata r8 |
+r4 r4 r8 r8 |
 R2*4 |
 gis,8-. \pp r a-. r |
 gis-. r a-. r |
@@ -606,7 +606,7 @@ g r d r |
 ) b'4 r8 d, ( |
 ) g,2 ~ |
 g ( |
-) g'4-. \fz r^\fermata
+) g'4-. \fz r
 }
 
 
@@ -634,7 +634,7 @@ d4 () b r |
 r r \times 2/3 { [d8 \f ( b ) d ] } |
 a4 () d r |
 R2.*6 |
-r4 r4^\fermata r8^\fermata r8 |
+r4 r4 r8 r8 |
 R2*9 |
 r4 r8 d-. \p |
 [c-. b-. \< a-. g-. ] |
@@ -815,7 +815,7 @@ b4 r |
 d4 r8 d, ( |
 ) g2 ~ |
 g ( |
-) b4-. \fz r^\fermata 
+) b4-. \fz r 
 }
 
 fagotto=\notes\relative c' {
@@ -825,7 +825,7 @@ fagotto=\notes\relative c' {
 [c8. \f ( d16 ] ) c2_"dim." |
 [c8. ( d16 ] ) c4 r |
 R2.*29 |
-r4 r4^\fermata r8^\fermata r8 |
+r4 r4 r8 r8 |
 R2*4 |
 c8-. \pp r bes-. r |
 c8-. r bes-. r |
@@ -1032,14 +1032,14 @@ c-. r c-. r |
 ) f4 r8 c ( |
 ) f,2 ~ |
 f ( |
-) c'4 \fz r^\fermata
+) c'4 \fz r
 }
 
 oboehelp=\notes\relative c'' {
 \tiny
 
 s2.*32 |
-s2*32 |
+s2*32 | \stemdown
 [a8^"Vi. I" ( g f d] |
 [b g ) a ] s8 |
 s2*106 |
@@ -1051,16 +1051,16 @@ flautohelp=\notes\relative c'' {
 \tiny
 
 s2.*32 |
-s2*32 |
+s2*32 | \stemdown
 [a8^"Vi. I" ( g f d] |
-[b g ) a ] s8 |
+[b g ) a ] s8 | \stemboth
 s2*60 |
 f''2^"Oboe" ( |
 b,4 [c8 ) b] |
-s2*44 |
+s2*44 | \stemdown
 [d8^"Vi. I" ( c bes g] |
 [e c ) d] s |
-s2*54 |
+s2*54 | \stemup
 bes''4.^"Vi. I"  a8 |
 [g-. f-. e-. ] s8 | 
 }
diff --git a/scm/lily.scm b/scm/lily.scm
index cc68e713a0..70c06dc82e 100644
--- a/scm/lily.scm
+++ b/scm/lily.scm
@@ -82,7 +82,7 @@
 
 ;; Spacing constants for prefatory matter.
 ;;
-;; rules for this are complicated. See [Wanske] page 126 -- 134
+;; rules for this spacing are much more complicated than this. See [Wanske] page 126 -- 134
 ;;
 ;;
 (define space-alist
diff --git a/tex/titledefs.tex b/tex/titledefs.tex
index 51df6979e7..5cda54d789 100644
--- a/tex/titledefs.tex
+++ b/tex/titledefs.tex
@@ -36,6 +36,7 @@
 \newcommand*{\mudelaopus}[1]{\def\theopus{#1}}
 \newcommand*{\mudelapiece}[1]{\def\thepiece{#1}}
 \newcommand*{\mudelametre}[1]{\def\themetre{#1}}
+\newcommand*{\mudelameter}[1]{\def\themetre{#1}}
 \newcommand*{\mudelapoet}[1]{\def\thepoet{#1}}
 %
 %
-- 
2.39.5