From 450905eed19bced95484ebb2639aba2eeb250b06 Mon Sep 17 00:00:00 2001
From: Han-Wen Nienhuys <hanwen@xs4all.nl>
Date: Mon, 14 Apr 1997 22:51:42 +0200
Subject: [PATCH] release: 0.0.51

---
 .version                         |   2 +-
 Documentation/CodingStyle.pod    |   8 +-
 Documentation/INSTALL.pod        |  16 ++--
 Documentation/MANIFESTO.pod      | 157 +++++++++++++++++++++++++++++++
 Documentation/examples.pod       |  20 ++--
 Documentation/faq.pod            |  32 +++++--
 Documentation/index.pod          |  14 ++-
 Documentation/lilygut.pod        |  14 +--
 Documentation/lilypond.pod       |  87 +++++------------
 Documentation/mudela.pod         | 119 +++++------------------
 INSTALL.text                     |  30 +++---
 NEWS                             |   9 ++
 README                           |   4 -
 TEST                             |  21 +++++
 TODO                             |  28 ++++--
 init/dutch.ini                   |   3 +
 init/symbol.ini                  |   2 +
 input/kortjakje.ly               |   4 +-
 input/scales.ly                  |  13 ++-
 input/wohltemperirt.ly           |  92 ++++++++++++++++--
 lily/.version                    |   2 +-
 lily/crescendo.cc                |   2 +-
 lily/dynamic-reg.cc              |  12 +++
 lily/{headreg.cc => head-reg.cc} |   2 +-
 lily/include/dynamic-reg.hh      |   1 +
 lily/include/staff-side.hh       |   1 +
 lily/include/text-item.hh        |   9 +-
 lily/include/text-reg.hh         |   7 +-
 lily/lexer.l                     |   2 +-
 lily/musical-request.cc          |   7 +-
 lily/note-column-reg.cc          |   5 +-
 lily/note-column.cc              |   2 +-
 lily/notehead.cc                 |   4 +
 lily/register-group.cc           |   2 +-
 lily/staff-side.cc               |  23 ++++-
 lily/text-item.cc                |   6 +-
 lily/text-reg.cc                 |  10 +-
 37 files changed, 516 insertions(+), 256 deletions(-)
 create mode 100644 Documentation/MANIFESTO.pod
 create mode 100644 TEST
 rename lily/{headreg.cc => head-reg.cc} (96%)

diff --git a/.version b/.version
index 3434710ebe..0e2c17ca28 100644
--- a/.version
+++ b/.version
@@ -1,6 +1,6 @@
 TOPLEVEL_MAJOR_VERSION = 0
 TOPLEVEL_MINOR_VERSION = 0
-TOPLEVEL_PATCH_LEVEL = 50
+TOPLEVEL_PATCH_LEVEL = 51
 # use to send patches, always empty for released version:
 # include separator: ".postfix", "-pl" makes rpm barf
 
diff --git a/Documentation/CodingStyle.pod b/Documentation/CodingStyle.pod
index c1a9c7aed0..468c63a260 100644
--- a/Documentation/CodingStyle.pod
+++ b/Documentation/CodingStyle.pod
@@ -1,10 +1,10 @@
 =head1 NAME
 
-CodingStyle - standards while programming for LilyPond
+CodingStyle - standards while programming for GNU LilyPond
 
 =head1 DESCRIPTION
 
-Please use these standards while doing programming for LilyPond
+Please use these standards while doing programming for GNU LilyPond
 
 Functions and methods do not return errorcodes, but use assert for
 checking status. 
@@ -115,8 +115,8 @@ Unfortunately most of the code isn't really documented that good.
 
 =head2 CLASSNAMES (2)
 
-A lot of classes in LilyPond start with 'P', this is to distinguish
-certain parts of LilyPond: the P stands for Printer, and the P-classes
+A lot of classes in GNU LilyPond start with 'P', this is to distinguish
+certain parts of GNU LilyPond: the P stands for Printer, and the P-classes
 are supposed to be more lowlevel than the others. Example:
 
 Staff uses PStaff, PScore and PCol to do the typesetting of
diff --git a/Documentation/INSTALL.pod b/Documentation/INSTALL.pod
index 4a0701b8b0..0d6c96e6eb 100644
--- a/Documentation/INSTALL.pod
+++ b/Documentation/INSTALL.pod
@@ -1,10 +1,10 @@
 =head1 NAME
 
-INSTALL - installing LilyPond
+INSTALL - installing GNU LilyPond
 
 =head1 DESCRIPTION
 
-This page documents installation  and compilation of LilyPond
+This page documents installation  and compilation of GNU LilyPond
 
 =head1 IMPORTANT
 
@@ -22,7 +22,7 @@ For compilation you need.
 =over 5
 
 =item *
-Unix. LilyPond is known to run on Linux, AIX, Digital Unix and
+Unix. GNU LilyPond is known to run on Linux, AIX, Digital Unix and
 Solaris
 
 If you have the Cygnus WIN32 port of the GNU utils, it will
@@ -66,7 +66,7 @@ Documentation.
 
 =head1 CONFIGURING and COMPILING
 
-to install LilyPond, simply type:
+to install GNU LilyPond, simply type:
 
 	configure
 	make install
@@ -96,7 +96,7 @@ B<--help>. If you are not root, you will probably have to make it with
 
 	configure --prefix=/home/me_myself_and_I/
 
-Since LilyPond currently is beta, You are advised to also use
+Since GNU LilyPond currently is beta, You are advised to also use
 
 	--enable-debug
 	--enable-checking
@@ -120,7 +120,7 @@ F<bin/>.
 
 =head1 RUNNING
 
-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:
 
 
 =over 5
@@ -154,14 +154,14 @@ Windows NT:
 you need the cygnus win32 gnu port development stuff; have a look
 at http://www.cygnus.com/gnu-win32.
 
-to make LilyPond under, brr, aargh, well, simply type:
+to make GNU LilyPond under, brr, aargh, well, simply type:
 
 	bash configure
 	make win32
 
 =head1 PLATFORMS
 
-LilyPond (pl 0.0.39) is known to compile on the following platforms:
+GNU LilyPond (pl 0.0.39) is known to compile on the following platforms:
 
 	* linux 2.0.28, g++ 2.7.2[.1]
 	* aix 4.1, g++ 2.7.2
diff --git a/Documentation/MANIFESTO.pod b/Documentation/MANIFESTO.pod
new file mode 100644
index 0000000000..7808c4bb19
--- /dev/null
+++ b/Documentation/MANIFESTO.pod
@@ -0,0 +1,157 @@
+=head1 NAME
+
+MANIFESTO -- Rationale behind the GNU LilyPond project
+
+=head1 DESCRIPTION
+
+
+GNU LilyPond was written with some considerations in mind:
+
+
+=over 4
+
+Describing a well-defined language for defining music. We call
+this language (rather arrogantly) The Musical Definition Language
+(mudela for short). GNU LilyPond reads a mudela sourcefile and outputs a
+TeX file.  
+
+=item *
+
+We want to provide an easy-to-use interface for typesetting music in
+its broadest sense. This interface should be intuitive from a musical
+point of view. By broadest sense we mean: it is designed for music
+printed left to right in staffs, using notes to designate rythm and
+pitch.
+
+=item  *
+
+Generate high-quality output. Ideally it should be of a professional
+quality. We'd like to render Herbert Chlapiks words, "Fine music
+setting is not possible without a knowledgeable printer,"  untrue.
+
+=back 
+
+=head1 LILYPOND
+
+
+Further considerations while doing the programming
+
+=over 4
+
+=item *
+
+GNU LilyPond uses MusiXTeX fonts and TeX for its output. This is not a key
+issue: in a future version, GNU LilyPond might bypass TeX, but at the moment
+TeX is very convenient for producing output.
+
+
+=item *
+
+GNU LilyPond does not display notes directly, nor will it be rehacked to be
+used interactively. GNU LilyPond writes output to a file.  It will not be
+extended to play music, or to recognize music.
+
+=item *
+
+GNU LilyPond is intended to run on Unix platforms, but it should
+be portable to any platform which can run TeX and the GNU tools
+
+=item *
+
+GNU LilyPond is free. Commercial windows packages for setting music are
+abundant. Free musicprinting software is scarce.
+
+=item *
+
+GNU LilyPond is written in GNU C++. It will not be downgraded/ported to fit
+broken systems.
+
+=back
+
+=head1 MUDELA
+
+The design of Mudela has been (perfect past tense, hopefully) an
+ongoing process, the most important criteria being:
+
+=over 4
+
+=item *
+
+define the (musical) message of the composer as unambiguously as possible,
+
+=item *
+
+be intuitive, and easily readable 
+(compared to, say, Musi*TeX input, or MIDI :-),
+
+=item *
+
+be writable in ASCII with a simple texteditor, yfte(TM).
+
+=back
+
+Other considerations were (and will be):
+
+=over 4
+
+=item *
+
+be able to edit the layout without danger of changing the original
+music (Urtext),
+
+=item *
+
+allow for adding different interpretations, again, 
+without danger of changing the original,
+
+=item *
+
+easy to create a conductor's score, 
+as well as the scores for all individual instruments,
+
+=item *
+
+provide simple musical manipulations, such as 
+S<(i) extracting> a slice of music from a previously defined piece, 
+S<(ii) extracting> only the rhythm from a piece of music, 
+S<(iii) transposing>, etc.,
+
+=item *
+
+easy to comprehend to both programmers and others.
+
+=back
+
+One of the things that (might) be here would be: feasible to use in a
+graphic editor. We don't have experience with these beasts, so we
+don't know how to do this. Comments appreciated.
+
+Musical pieces could be
+
+=over 4
+
+=item *
+
+Mahlerian orchestral scores,
+
+=item *
+
+piano pieces (Schubertian, Rachmaninovian),
+
+=item *
+
+pop songs (lyrics and chords),
+
+=item *
+
+gregorian chants,
+
+=item *
+
+Bach multivoice organ pieces,
+
+=item *
+
+short excerpts to be used in musicological publications.
+
+=back
diff --git a/Documentation/examples.pod b/Documentation/examples.pod
index 48920157ee..b00226cebc 100644
--- a/Documentation/examples.pod
+++ b/Documentation/examples.pod
@@ -1,18 +1,18 @@
 =head1 NAME
 
-LilyExamples - LilyPond example input
+LilyExamples - GNU LilyPond example input
 
 =head1 DESCRIPTION
 
-This file documents the example inputfiles of LilyPond. Information of
+This file documents the example inputfiles of GNU LilyPond. Information of
 each file: 
 
 	title
 	description (composer, piece)
-	tested LilyPond features.
+	tested GNU LilyPond features.
 	copyright info
 
-Most music distributed with LilyPond was composed a long time ago, and
+Most music distributed with GNU LilyPond was composed a long time ago, and
 do not have copyrights. Any exceptions are mentioned here.
 
 =head2 F<cadenza.ly>
@@ -46,6 +46,8 @@ bones version.
 
 Features: example with lots of newbie comment.
 
+Copyright: public domain
+
 =head2 F<maartje.ly>
 
 Features: partial measure.
@@ -73,11 +75,11 @@ Features: auto beams, multiple parralel meters.
 =head2 F<scales.ly>
 
 Features: plets, accents, beam steepnesses, dynamics, crescendi,
-\octave command.
+\octave command, \transpose, multiple scripts
 
 =head2 F<scsii-menuetto.ly>
 
-J. S. Bach, Solo Cello Suites. Suite II part v Menuetto I
+J. S. Bach, Solo Cello Suites. Suite II part v Menuetto I. BWV ?
 
 Features: breaking algorithm, chords, multivoice, accents
 
@@ -90,13 +92,13 @@ Features: multivoice, accents, lyrics, chords, piano music
 
 =head2 F<twinkle.ly>
 
+Twinkle twinkle little star in three languages.
+
 Features: lyrics
 
 =head2 F<wohltemperirt.ly>
 
-JS Bach, Das Wohltemperirtes Clavier I, Fuga II (c-minor)
-
-a 7 bar fragment. 
+JS Bach, Das Wohltemperirtes Clavier I, Fuga II (c-minor), BWV ?
 
 Features: stem direction, multivoice.
 
diff --git a/Documentation/faq.pod b/Documentation/faq.pod
index 930ad89345..70162a6095 100644
--- a/Documentation/faq.pod
+++ b/Documentation/faq.pod
@@ -1,12 +1,32 @@
 =head1 NAME
 
-FAQ - LilyPond FAQs
+FAQ - GNU LilyPond FAQs
 
 =head1 DESCRIPTION
 
 Some questions that have been answered before.
 
-=head2 language
+=head2 Language: mudela
+
+Q: Why can't you type C<#c> in stead of C<cis> ?
+
+A: We think that C<#c> looks as if you are entering the symbols to
+print (which you are not; remember, you're entering the musical
+content in Mudela)
+
+We're not sure on leaving out this feature. If you think this is a
+good idea, please let us know.
+
+Be warned we will I<not> allow you to leave out the C<#> if the note
+already has an accidental. We won't allow
+
+	c# c	% no way! 
+
+in stead of:
+
+	cis cis
+	#c #c
+
 
 Q: I can type
 
@@ -73,9 +93,9 @@ simple front end to the complicated internals.
 
 Q: Why do I need g++ >= 2.7?
 
-A: By using g++ LilyPond is portable to all platforms which support
+A: By using g++, GNU LilyPond is portable to all platforms which support
 g++ (there are quite a few). Not having to support other compilers
-saves us a I<lot> of trouble. LilyPond and FlowerLib use:
+saves us a I<lot> of trouble. GNU LilyPond and FlowerLib use:
 
 =over 4
 
@@ -117,10 +137,10 @@ Q: I want a DOS/NT/W95 port.
 
 A.0: Reconsider.  Try Linux.  It's fun!
 
-A.1: Currently (patchlevel 27), LilyPond (and flowerLib) compiles, links
+A.1: Currently (patchlevel 27), GNU LilyPond (and flowerLib) compiles, links
 and runs on windhoos-nt, using the cygnus gnu port (release b17.1). 
 I (JCN) only had to make a minor workaround for missing library calls.  
-Have a look at http://www.cygnus.com/gnu-win32.  To make LilyPond type
+Have a look at http://www.cygnus.com/gnu-win32.  To make GNU LilyPond type
 C<make $OSTYPE>. (I am not promising to maintain this platform, it is just 
 that when having to use doze, i-m sometimes too lazy to reboot.)
 
diff --git a/Documentation/index.pod b/Documentation/index.pod
index d6588acde2..b67f1543ff 100644
--- a/Documentation/index.pod
+++ b/Documentation/index.pod
@@ -1,12 +1,12 @@
 =head1 NAME
 
-LilyPond -- the Webpage
+GNU LilyPond -- the Webpage
 
 Excuse me for this poor page. I don't really have time for doing this..
 
 =head1 DESCRIPTION
 
-Technically LilyPond is a preprocessor which generates TeX
+Technically GNU LilyPond is a preprocessor which generates TeX
 (or LaTeX) output which contains information to typeset a musical
 score. Practically it is a typesetter, which only uses TeX as an
 output medium. (this is handy because there exist music fonts for TeX)
@@ -15,7 +15,7 @@ As a bonus, you can also output a MIDI file of what you typed.
 
 It translates script files (mudela files or F<*.ly>'s) into TeX input.
 Typesetting music is a complex task, whereas the message that printed
-music conveys is usually a simple one. LilyPond is a try at providing
+music conveys is usually a simple one. GNU LilyPond is a try at providing
 a simple interface for setting music.
 
 =head1 DOCUMENTATION
@@ -27,8 +27,12 @@ The installation instructions.
 </a
 >
 
-
-
+=item *
+<a href=MANIFESTO.html
+>
+Design criteria
+</a
+>
 
 =item *
 <a href=lilypond.html
diff --git a/Documentation/lilygut.pod b/Documentation/lilygut.pod
index a1b8497f52..99c15cea10 100644
--- a/Documentation/lilygut.pod
+++ b/Documentation/lilygut.pod
@@ -1,10 +1,10 @@
 =head1 NAME
 
-LilyGuts - doco to the internals of LilyPond
+LilyGuts - doco to the internals of GNU LilyPond
 
 =head1 DESCRIPTION
 
-This page documents some aspects of the internals of LilyPond. Some of
+This page documents some aspects of the internals of GNU LilyPond. Some of
 this stuff comes from e-mail I wrote, some from e-mail others wrote,
 some are large comments taken away from the headers
 
@@ -14,7 +14,7 @@ You should use doc++ to take a peek at the sources.
 
 =head1 OVERVIEW
 
-LilyPond is a "5-pass" system:
+GNU LilyPond is a "5-pass" system:
 
 =over 4
 
@@ -225,7 +225,7 @@ meter sign after the clef. Using the previous notation,
 
 	\discretionary{bar meter}{clef meter}{ bar meter }
 
-In Lilypond, we have the same concepts (and the same
+In GNU Lilypond, we have the same concepts (and the same
 terminology). Each (nonrhythmic) symbol is typeset using a Command
 (code: TYPESET). At a breakpoint, TYPESET commands can be grouped
 using separators (in lower case):
@@ -276,7 +276,7 @@ have been the subject of discussion in this thread).
 as you can see, these distance are conflicting. So instead of
 satisfying all those ideals simultaneously, a compromise is sought.
 
-This is Columbus' egg: LilyPond attaches "springs" to each
+This is Columbus' egg: GNU LilyPond attaches "springs" to each
 column-pair.  each spring has an equilibrium-position which is equal to
 the above mentioned distance, so
 
@@ -291,8 +291,8 @@ with minimum potential energy, for you physicists out there.
 This algorithm for doing one line, gives a "badness" parameter for
 each line (the potential energy). Now one can use TeX's algorithm for
 making paragraphs (using this new version of "badness"): one should
-try to minimise the overall badness of a paragraph. LilyPond also uses the
-concept of pre- and post-breaks.
+try to minimise the overall badness of a paragraph. GNU LilyPond also
+uses the concept of pre- and post-breaks.
 
 (actually, it is a bit more complicated: each column also has a
 minimum distance to other columns, to prevent symbols from running
diff --git a/Documentation/lilypond.pod b/Documentation/lilypond.pod
index 3482fa961c..cce5ba495e 100644
--- a/Documentation/lilypond.pod
+++ b/Documentation/lilypond.pod
@@ -42,7 +42,8 @@ output.
 
 =item B<-w,--warranty>,
 
-Show the warranty with which GNU LilyPond comes. (It comes with B<NO WARRANTY>!)
+Show the warranty with which GNU LilyPond comes. (It comes with B<NO
+WARRANTY>!)
 
 =item B<-o,--output=>F<FILE>,
 
@@ -63,6 +64,9 @@ add F<DIRECTORY> to the search path for input files.
 
 =head1 FEATURES
 
+This is an overview of the features that GNU LilyPond supports. For
+details on how to use them, you should consult mudela(5)
+
 =over 5
 
 =item *
@@ -108,62 +112,6 @@ clef changes, meter changes, cadenza-mode, key changes, repeat bars
 
 =back
 
-=head1 DESIGN CONSIDERATIONS
-
-GNU LilyPond was written with some considerations in mind:
-
-=over 5
-
-=item *
-
-Describing a well-defined language for defining music. We call
-this language (rather arrogantly) The Musical Definition Language
-(mudela for short). GNU LilyPond reads a mudela sourcefile and outputs a
-TeX file.  
-
-=item *
-
-We want to provide an easy-to-use interface for typesetting music in
-its broadest sense. This interface should be intuitive from a musical
-point of view. By broadest sense we mean: it is designed for music
-printed left to right in staffs, using notes to designate rythm and
-pitch.
-
-=item *
-
-GNU LilyPond uses MusiXTeX fonts and TeX for its output. This is not a key
-issue: in a future version, GNU LilyPond might bypass TeX, but at the moment
-TeX is very convenient for producing output.
-
-=item  *
-
-Generate high-quality output. Ideally it should be of a professional
-quality. We'd like to render Herbert Chlapiks words, "Fine music
-setting is not possible without a knowledgeable printer,"  untrue.
-
-=item *
-
-GNU LilyPond does not display notes directly, nor will it be rehacked to be
-used interactively. GNU LilyPond writes output to a file.  It will not be
-extended to play music, or to recognize music.
-
-=item *
-
-GNU LilyPond is intended to run on Unix platforms, but it should
-be portable to any platform which can run TeX and the GNU tools
-
-=item *
-
-GNU LilyPond is free. Commercial windows packages for setting music are
-abundant. Free musicprinting software is scarce.
-
-=item *
-
-GNU LilyPond is written in GNU C++. It will not be downgraded/ported to fit
-broken systems.
-
-=back
-
 =head1
 DISCLAIMER & COPYING POLICY
 
@@ -265,6 +213,7 @@ ftp://pcnov095.win.tue.nl/pub/lilypond.
 =over 5
 
 =item F<symbol.ini>
+
 The initialisation file with symbol tables etc. It
 includes files from the directory F<init/>.
 
@@ -276,12 +225,28 @@ B<LILYINCLUDE> an (one) additional directory for finding lilypond data.
 
 =head1 SEE ALSO
 
-mudela(5)
+=over 4
+
+=item lilygut(?)
+
+On technical details of LilyPond
+
+=item mudela(5)
+
+On the input format
 
-There are some documentation files  in the subdirectory F<Documentation/>,
-among others: lilygut,  error, faq,
+=item MANIFESTO
+
+Goals of the GNU LilyPond project.
+
+=item The GNU LilyPond FAQ list
+
+=back
 
-http://www.stack.nl/~hanwen/lilypond/index.html
+GNU LilyPond has her own webpage at
+http://www.stack.nl/~hanwen/lilypond/index.html. This webpage contains
+the MIDI, GIF and PS files for some standard music files. It also has
+the complete LilyPond documentation
 
 =head1  REMARKS
 
diff --git a/Documentation/mudela.pod b/Documentation/mudela.pod
index 4ee456d040..d8bfb8541a 100644
--- a/Documentation/mudela.pod
+++ b/Documentation/mudela.pod
@@ -1,10 +1,10 @@
 =head1 NAME
 
-Mudela -  LilyPond input format 0.1
+Mudela -  GNU LilyPond input format 0.1
 
 =head1 DESCRIPTION
 
-This document describes the the LilyPond input format, which is an
+This document describes the the GNU LilyPond input format, which is an
 effective language for definining music.  We call this language
 (rather arrogantly) The Musical Definition Language (S<Mudela 0.1>).
 
@@ -12,89 +12,6 @@ The first aim of Mudela is to define a piece of music,
 being complete from both from a musical typesetting, 
 as from a musical performing point of view.
 
-The design of Mudela has been (perfect past tense, hopefully)
-an ongoing process, 
-the most important criteria being:
-
-=over 4
-
-=item *
-
-define the (musical) message of the composer as unambiguously as possible,
-
-=item *
-
-be intuitive, and easily readable 
-(compared to, say, Musi*TeX input, or MIDI :-),
-
-=item *
-
-be writable in ASCII with a simple texteditor, yfte(TM).
-
-=back
-
-Other considerations were (and will be):
-
-=over 4
-
-=item *
-
-be able to edit the layout without danger of changing the original
-music (Urtext),
-
-=item *
-
-allow for adding different interpretations, again, 
-without danger of changing the original,
-
-=item *
-
-easy to create a conductor's score, 
-as well as the scores for all individual instruments,
-
-=item *
-
-provide simple musical manipulations, such as 
-S<(i) extracting> a slice of music from a previously defined piece, 
-S<(ii) extracting> only the rhythm from a piece of music, 
-S<(iii) transposing>, etc.,
-
-=item *
-
-easy to comprehend to both programmers and others.
-
-=back
-
-Musical pieces could be
-
-=over 5
-
-=item *
-
-Mahlerian orchestral scores,
-
-=item *
-
-piano pieces (Schubertian, Rachmaninovian),
-
-=item *
-
-pop songs (lyrics and chords),
-
-=item *
-
-gregorian chants,
-
-=item *
-
-Bach multivoice organ pieces,
-
-=item *
-
-short excerpts to be used in musicological publications.
-
-=back
-
 
 =head1 Overview
 
@@ -118,6 +35,15 @@ entering C<include> at the start of a line:
 
 Line comments are introduced by a C<%>
 
+=head2 Versions
+
+Occasionally, small changes in syntax across different versions of
+Mudela might give syntax errors. To warn you about possible
+incompatibilities, you can specify the Mudela version for which the
+inputfile was written,
+
+	\version "0.0.50";
+
 =head2 Words
 
 Keywords are preceded by a backslash "\". They contain alphabetic
@@ -251,7 +177,9 @@ duration is one and a half quaver (C<4.>) times 2/3.
 
 Notenames are just a special kind of identifiers, and can be declared
 for any language appropriate (see F<dutch.ini>).  The default language
-for notenames is defined to be dutch,
+for notenames is defined to be dutch. In dutch, the notenames are
+a,b,c,d,e,f and g. Sharps are formed by adding the extension "is",
+flats by adding "es"
 
 	% double sharp
 	cisis disis eisis fisis gisis aisis bisis
@@ -336,7 +264,6 @@ the c- construct chooses the default up/down direction.
 
 
 
-
 =head2 Defaults
 
 If omit the duration of a, a default value is substituted. For this
@@ -392,7 +319,7 @@ duration entry are bound together using an underscore
 
 =head2  Music direction
 
-Mudela reads left to right, but LilyPond can stack voices and
+Mudela reads left to right, but you can still stack voices and
 Voice_elements which are produced in two directions: horizontal
 (voice like) and vertical (chord like)
 
@@ -419,6 +346,14 @@ The duration of a chord equals the union of the durations of each of
 its elements.  The C<\multivoice> is a construct which is explained
 below.
 
+=head2 Transposition
+
+You can transpose horizontal music in the following way:
+
+	\transpose {	d	% from c to d that's one octave up.
+		{ e4 f4 }	% the horizontal music
+	}
+
 =head2 Rhythms
 
 Rhythms in Mudela are entered identical to Simple mudela.
@@ -462,7 +397,7 @@ In concrete, a piece of Mudela has the following structure:
 
 =head2 Examples
 
-Examples are included with the LilyPond distribution. For the sake of
+Examples are included with the GNU LilyPond distribution. For the sake of
 maintenance no long examples are included in this document.
 
 
@@ -528,15 +463,11 @@ requests. Merging of requests is preferably done with other requests
 done by members of the same voicegroups (beams, brackets, stems)
 
 
-=head2 Other
-
-LilyPond first reads F<symbol.ini>, which contains declarations crucial
-to proper operation of LilyPond (symbol tables, note names).
 
 =head1 HISTORY
 
 
-This language has a number of roots. First and foremost, LilyPond's
+This language has a number of roots. First and foremost, GNU LilyPond's
 predecessor mpp was the inspiration of simple Mudela.  Secondly, the
 hierarchical structure looks a lot like Rayce's (Rayce is a raytracer
 that I've written as a hobby project. ), which in turn owes a lot to
diff --git a/INSTALL.text b/INSTALL.text
index 7d6f7d5427..246247cbbd 100644
--- a/INSTALL.text
+++ b/INSTALL.text
@@ -5,10 +5,10 @@ INSTALL(1)            LilyPond documentation           INSTALL(1)
 
 
 NNNNAAAAMMMMEEEE
-       INSTALL - installing LilyPond
+       INSTALL - installing GNU LilyPond
 
 DDDDEEEESSSSCCCCRRRRIIIIPPPPTTTTIIIIOOOONNNN
-       This page documents installation  and compilation of
+       This page documents installation  and compilation of GNU
        LilyPond
 
 IIIIMMMMPPPPOOOORRRRTTTTAAAANNNNTTTT
@@ -23,8 +23,8 @@ IIIIMMMMPPPPOOOORRRRTTTTAAAANNNNTTTT
 PPPPRRRREEEERRRREEEEQQQQUUUUIIIISSSSIIIITTTTEEEESSSS
        For compilation you need.
 
-       +o Unix. LilyPond is known to run on Linux, AIX, Digital
-            Unix and Solaris
+       +o Unix. GNU LilyPond is known to run on Linux, AIX,
+            Digital Unix and Solaris
             If you have the Cygnus WIN32 port of the GNU utils,
             it will even work in Lose NT/95, but don't promise to
             support it.
@@ -50,7 +50,7 @@ RRRREEEECCCCOOOOMMMMMMMMEEEENNNNDDDDEEEEDDDD
        +o (GNU) find
 
 CCCCOOOONNNNFFFFIIIIGGGGUUUURRRRIIIINNNNGGGG aaaannnndddd CCCCOOOOMMMMPPPPIIIILLLLIIIINNNNGGGG
-       to install LilyPond, simply type:
+       to install GNU LilyPond, simply type:
 
                configure
                make install
@@ -61,7 +61,7 @@ CCCCOOOONNNNFFFFIIIIGGGGUUUURRRRIIIINNNNGGGG a
 
 
 
-3/Apr/97                 LilyPond 0.0.50                        1
+14/Apr/97                LilyPond 0.0.51                        1
 
 
 
@@ -94,8 +94,8 @@ INSTALL(1)            LilyPond documentation           INSTALL(1)
 
                configure --prefix=/home/me_myself_and_I/
 
-       Since LilyPond currently is beta, You are advised to also
-       use
+       Since GNU LilyPond currently is beta, You are advised to
+       also use
 
                --enable-debug
                --enable-checking
@@ -119,15 +119,15 @@ INSTALL(1)            LilyPond documentation           INSTALL(1)
        subdirectory _b_i_n_/.
 
 RRRRUUUUNNNNNNNNIIIINNNNGGGG
-       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:
 
        +o A fast computer (a full page of music typically takes 1
             minute on my 486/66, using the --------eeeennnnaaaabbbblllleeee----cccchhhheeeecccckkkkiiiinnnngggg
 
 
 
-3/Apr/97                 LilyPond 0.0.50                        2
+14/Apr/97                LilyPond 0.0.51                        2
 
 
 
@@ -155,15 +155,15 @@ WWWWIIIINNNNDDDDOOOOZZZZEEEE
        you need the cygnus win32 gnu port development stuff; have
        a look at http://www.cygnus.com/gnu-win32.
 
-       to make LilyPond under, brr, aargh, well, simply type:
+       to make GNU LilyPond under, brr, aargh, well, simply type:
 
                bash configure
                make win32
 
 
 PPPPLLLLAAAATTTTFFFFOOOORRRRMMMMSSSS
-       LilyPond (pl 0.0.39) is known to compile on the following
-       platforms:
+       GNU LilyPond (pl 0.0.39) is known to compile on the
+       following platforms:
 
                * linux 2.0.28, g++ 2.7.2[.1]
                * aix 4.1, g++ 2.7.2
@@ -193,6 +193,6 @@ AAAAUUUUTTTTHHHHOOOORRRRSSSS
 
 
 
-3/Apr/97                 LilyPond 0.0.50                        3
+14/Apr/97                LilyPond 0.0.51                        3
 
 
diff --git a/NEWS b/NEWS
index 237aac8d2f..cbcbe2102b 100644
--- a/NEWS
+++ b/NEWS
@@ -1,9 +1,18 @@
+pl 51
+	- transposition bugfix + doco
+	- LilyPond -> GNU LilyPond
+	- bugfixes for Staff_side and Note_column*
+	- wohltemperirt: 12 more bars
+
+******
+april 11
 pl 50
 	- merge rest / notehead.
 	- Staff_side as a base class for most "staff-side" symbols.
 	- version check
 	- Note_column_register, Note_column
 	- multiple scripts
+
 ********
 april 8
 pl 49.jcn1
diff --git a/README b/README
index 229d052b1e..9042e4f255 100644
--- a/README
+++ b/README
@@ -1,7 +1,3 @@
-
-warning: the  --enable-optimise compile seems to broken!!
-
-===================
 IMPORTANT:
 
 if you have downloaded a
diff --git a/TEST b/TEST
new file mode 100644
index 0000000000..0200c36ea6
--- /dev/null
+++ b/TEST
@@ -0,0 +1,21 @@
+Testing for 0.1 in 3 stages:
+
+	1. Announce "beta testers wanted" 
+	to linux.dev.apps, gnu.announce, mutex
+
+	Source only dist
+
+	GOAL: bugfixes & doco updates
+
+	create mailing list
+
+	2. Announce to LilyPond list, GNU "internal" list, RoseGarden
+list ?, LDA, Mutex
+
+	Source & binary dist too, beta release to fsf?
+
+	GOAL: distribution & portability testing
+
+	3. Announce to COLA, gnu.announce
+
+	Public release
diff --git a/TODO b/TODO
index 1ba47b577a..20b8e9aea5 100644
--- a/TODO
+++ b/TODO
@@ -5,10 +5,8 @@ before 0.1
 	* decent TeX page layout
 
 	* per-pstaff item-widths
-	
-	* remove unnecessary or confusing constructs from .ly
 
-	* key undo
+	* script priority
 
 This is an assorted collection of stuff that will be done, might be
 done, or is an idea that I want to think about
@@ -16,12 +14,12 @@ done, or is an idea that I want to think about
 PARSER
 	* Duration-> Musical_duration, typedef Rational Duration?
 
-MAKE-STUFF
-
-	* do platform stuff: configure, header(s), targets, build (out?)
-	
 BUGS
 
+	* hairpin width
+
+	* problems with empty staff.
+
 	* help-lines
 
 	* help-lines for rests
@@ -32,8 +30,12 @@ BUGS
 
 	* lilypond - -> crash
 
+	* \stem -1 < chord >  rest 
+
 SEVERELY LACKING:
 
+	* SPEED!
+
 	* grace notes
 
 FURTHER FOR ORCHESTRAL SCORE:
@@ -69,6 +71,8 @@ SMALLISH PROJECTS
 
 	* half-sharps, half-flats
 	
+	* key undo
+
 	* unix style paths for LILYINCLUDE EN
 
 	* rpm package buildroot
@@ -117,7 +121,6 @@ SMALLISH PROJECTS
 	* C meter iso 4/4
 
 	* textspanner: center position
-
 	* script-spacing
 
 	* Brackets
@@ -133,7 +136,8 @@ SMALLISH PROJECTS
 
 	* add (good guess of) width to lyric items
 
-	* midi output: eat-up dynamic, key/meter/tempo changes, and write them neatly
+	* midi output: eat-up dynamic, key/meter/tempo changes, and
+write them neatly
 
 	* LilyPond .deb
 
@@ -165,6 +169,9 @@ FUTURE
 
 	* Junk Staff_column, and find the requests while walking the Voices.?
 
+	* MIDI repeat: make lily understand repeats
+
+
 	* better beamslope calculation:	QLP for beams?
 
 	* implement better breaking algorithm
@@ -181,6 +188,7 @@ FUTURE
 
 	* piano staff
 
+	* vertical spanner
 IDEAS
 
 	* integrate Register/Midi stuff
@@ -224,3 +232,5 @@ IDEAS
 	* #c <-> cis
 
 	* breath marks 
+
+	* used fixedpoint arithmetic for min. energy.
diff --git a/init/dutch.ini b/init/dutch.ini
index 5d040d38dd..7d814d91c0 100644
--- a/init/dutch.ini
+++ b/init/dutch.ini
@@ -35,6 +35,7 @@
 	gis 	= \melodic_request { -1 4 1 }
 	gisis 	= \melodic_request { -1 4 2 }
 	ases 	= \melodic_request { -1 5 -2 }
+	aes 	= \melodic_request { -1 5 -1 }
 	as 	= \melodic_request { -1 5 -1 }
 	a 	= \melodic_request { -1 5 0 }
 	ais 	= \melodic_request { -1 5 1 }
@@ -76,7 +77,9 @@
 	G 	= \melodic_request { -2 4 0 }
 	Gis 	= \melodic_request { -2 4 1 }
 	Gisis 	= \melodic_request { -2 4 2 }
+	Aeses 	= \melodic_request { -2 5 -2 }
 	Ases 	= \melodic_request { -2 5 -2 }
+	Aes 	= \melodic_request { -2 5 -1 }
 	As 	= \melodic_request { -2 5 -1 }
 	A 	= \melodic_request { -2 5 0 }
 	Ais 	= \melodic_request { -2 5 1 }
diff --git a/init/symbol.ini b/init/symbol.ini
index 2ae2fcc064..c707ec2e46 100644
--- a/init/symbol.ini
+++ b/init/symbol.ini
@@ -1,3 +1,5 @@
+\version "0.0.50";
+
 include "register.ini"
 include "dynamic.ini"
 include "dutch.ini" % do not include init/ path
diff --git a/input/kortjakje.ly b/input/kortjakje.ly
index f0aaaf9aa3..86797c682c 100644
--- a/input/kortjakje.ly
+++ b/input/kortjakje.ly
@@ -25,8 +25,8 @@ melodie = \melodic {
 	g g|	f f|	e e| 	d d|	g g|	f f|	e e| 	d d|
  	%%% var 1
 	  c r8 c8		% r8 means an 8th rest.
-		  (|		% \start a slur
-				% NOTE: the slur\start should be directly after the note
+		  (|		% start a slur
+				% NOTE: the slurstart should be directly after the note
 			) 	% end a slur.
 			  g r8 g8 (|	) a r8 a8 (|	) g r4 
 	  f r8 f8 (|	) e4 r8 e8 (	|) d4 r8 d8 (|	) c4 r4 
diff --git a/input/scales.ly b/input/scales.ly
index 727b458d5a..966cfbb3b3 100644
--- a/input/scales.ly
+++ b/input/scales.ly
@@ -13,7 +13,7 @@ blah = \staff{  melodicregs
 			c d 
 		\clef "violin" ;
 		\octave  c' ;
-			c d
+		< \transpose { d { e f } } >
 		\octave  c'' ;
 			c d 
 		\duration  8 ;
@@ -22,11 +22,14 @@ blah = \staff{  melodicregs
 		\octave  c' ;
 		 |[ a  a a a a a a a \! a ]6/9 
 		\octave  c'' ; 
-		 [ 'c 'g d a e' b' f'' c''' g''' ]6/9
-		 [ g''' c''' f'' b' e' a d 'g 'c ]6/9
+		 ['c->-.-\fermata \< 'g->-.-\fermata d->-.-\fermata a->-.-\fermata
+		e'->-.-\fermata b'-. f''-. c'''->-.-\fermata \! g'''->-.-\fermata \> ]6/9
+		 [g'''->-.-\fermata c'''->-.-\fermata f''->-.-\fermata b'->-.-\fermata e'->-.-\fermata a->-.-\fermata d->-.-\fermata 'g->-.-\fermata \! 'c->-.-\fermata ]6/9
+		 \octave c;
+		['c->-.-\fermata \< 'g->-.-\fermata d->-.-\fermata a->-.-\fermata
+		e'->-.-\fermata b'-. f''-. c'''->-.-\fermata \! g'''->-.-\fermata \> ]6/9
+		 [g'''->-.-\fermata c'''->-.-\fermata f''->-.-\fermata b'->-.-\fermata e'->-.-\fermata a->-.-\fermata d->-.-\fermata 'g->-.-\fermata \! 'c->-.-\fermata ]6/9
 		\octave  c' ;
-		 [ 'c 'g d a e' b' f'' c''' g''' ]6/9
-		 [ g''' c''' f'' b' e' a d 'g 'c ]6/9
 		\octave  c' ;   
 		 [ c g d' ]2/3 
 		 [ d' g c ]2/3  
diff --git a/input/wohltemperirt.ly b/input/wohltemperirt.ly
index 5bff42ebc0..45f6381820 100644
--- a/input/wohltemperirt.ly
+++ b/input/wohltemperirt.ly
@@ -1,18 +1,16 @@
 % JS Bach, Das Wohltemperirtes Clavier I, Fuga II (c-minor)
 %
-% a 7 \bar fragment
-%
 %	Public Domain -- typed by by HWN
 %
 \version "0.0.50";
 
- global = \melodic{
+global = \melodic{
  	\meter 4/4 ;
  	\grouping 2*2; 
  	\key bes es as; 
-  }
+}
   
- dux = \melodic  {
+dux = \melodic  {
  	\clef "violin";
  	\octave c' ;
  	\duration  \last ;
@@ -27,6 +25,34 @@
 	[g a bes8(] [)bes16 es f g ] [as g f es] [d8 c'16 b]|
 	c'4 r4 r8 [f' es' d'] 
 	r8 [as g f] [g f16 es] [f8 d] | 
+	g4 r8 b [c' c'16 b] [c'8 g] |
+%% 10	
+	as4 r8 a [bes bes16 a] [bes8 f] |
+	g4 r8 g [as as g f] | % should jump staff
+	\octave c;
+	r8 [as bes c'] r8 [as16 g] [as8 f8] |
+	[bes8 c bes as ] [bes g f es] |
+	[f des' c' bes ] [c' as g f] |
+	[g8 %jump!
+	\octave c';
+		g16 fis] [g8 c] [es g16 fis] [g8 a] |
+	[d g16 fis] [g8 a] [c16 d] es4 [d16 c] |
+	'bes8 r8 r16 [d e fis ] [g a bes8( ] [)bes16 e f g] |
+	[a bes c'8(] [)c'16 fis16  g a ] [bes8 es16 d] [es8 'g] |
+	['as f16 e] [f8 'a8] ['bes g16 f] [g8 'b] |
+% 20
+	[c16 f es d] [c Bes As G] [F8 as g f] |
+	[es d es f] [B c d B] |
+	c4 r8 e8 [f f16 e] [f8 c] |
+	d4 r8 d8 [es8 es16 d] [es8 Bes] |
+	c2 () [c8 d16 es][ f es f d] |
+	B8 r8 r B c r r es |
+	d r r f()f r r f |
+	[es as g f] [es d es f] |
+	[B c d B] [B c] r c |
+	[f16 d es c]()[c8 B] c4 r8 e |
+	f4 r8 <f8 as b> [f es16 d] [es8 <f a] > |
+	<B d> r <B d> r <G2 c> |
 }
 
 comes = \melodic  {
@@ -40,6 +66,31 @@ comes = \melodic  {
 	['bes8 g16 f] [g8 'b] [c8 d16 es] f4( |
 	[) f8 es16 d] [c16 'bes 'as 'g] ['f8 as g f] 
 	[es d es f] ['b c d 'b] |
+	[c g16 fis] [g8 d] es4 r8 e8 |
+%% 10 
+	[f f16 e] [f8 c8] d4 r8 d |
+	[es8 es16 d] [es8 'bes] [c es16 d] [es8 f] |
+	['bes es16 d] [es8 f] ['as16 'bes] c4 ['bes16 'as] |
+	[G16 Es F G] [As Bes c d] [es d c d] [es f g a] |
+	[bes F G As] [Bes c d e] [f es d es] [ f g a b] |
+	[c'8 b16 a] [g f e d] [c8 es d c] |
+	[Bes A Bes c] [Fis G A Fis] |
+	[G8 d16 c] d8 r8 r8 [e16 d] e8 r8 |
+	r [fis16 e] fis8 r r [G16 F] G8 r8 |
+	r8 [A16 G] A8 r r [B16 A] B8 r |
+%% 20
+	r8 [c16 'b] [c8 'g] [As c16 'c] [c8 d] |
+	[G c16 B] [c8 d] [F16 G] As4 [G16 F] |
+	[Es8 c16 B] [c8 G] As4 r8 A |
+	[Bes8 Bes16 A] [Bes8 F8] g4 r8 G(|
+	)[G As16 Bes] [c B c As] F2( |
+	)[F8 d16 c] [d8 F] [Es es16 d] [es8 G] |
+	[F f16 es] [f8 As] [G16 f es d] [c B A G] |
+	[c8 f es d] r [As G f] |
+	[G F16 Es] [F8 D] [As G] r A |
+	[B c] [F16 Es D C] [C8 c16 B] [c8  G]|
+	[As c16 B] [c8 d] [G8 c16 B] [c8 d] |
+	[F16 G] As4 [G16 F] E2 |
 	
 }
 
@@ -54,6 +105,35 @@ bassdux = \melodic  {
 	r1 |
 	r8 [c16 B] [c8 G] [As c16 B] [c8 d] |
 	[G c16 B] [c8 d] [F16 G] As4 [G16 F] | 
+	\octave c;
+	[es c' b a] [g f es d] [c d es d] [c Bes As G] |
+%% 10
+	[F bes as g ] [f es d c] [Bes c d c ] [Bes As G F]|
+	[Es as g f] [es des c Bes] [As8 c' bes as] |
+	[g8 f g as] [d es f d] |
+	[es as g f] [g es d c] |
+	[d bes as g] [as f es d] |
+	es8 r8 r4 r8 [c Bes A] |
+	r [es d c] [d c16 Bes] [c8 d] |
+	[G8 bes16 a] [bes8 d] [es c'16 bes] [c'8 e] |
+	[f d'16 c'] [d'8 fis] g4 r16 [G A B] |
+	[c16 d es8]()[es16 A Bes c] [d es f8]()[f16 'b c d]|
+%%20	
+	es8 r r e [f F Es D] |
+	r [As G F] [G F16 Es] [F8 G] |
+	[c16 d  es d] [c Bes As G] [F bes as g] [f es d c] |
+	[Bes c d c] [Bes As G F] [Es As g f ] [es d c Bes] |
+	[As Bes c Bes] [As G F Es] [D g f es ] [d c B A] |
+	g4 r4 r16 [G A B] [c d es f] |
+	[g f as g] [f es d c] [B8 c16 B] [c8 G] |
+	[As c16 B] [c8 d] [G c16 B] [c8 d] |
+	[F16 G] As4 [G16 F] Es4 r8 es |
+	[d c g G] 
+	< \multivoice 
+	{ \stem 1; c2 (|)c1(|) c1 }
+	{ \stem -1; C2(|)C1(|) C1 }
+	>
+
 }
 
 % every "melody" declared in a staff has its own "voicegroup"
@@ -69,7 +149,7 @@ trebstaf = \staff{
 	}
 	\paper{}
 	\midi{
-		\tempo 4:90
+		\tempo 4:84
 	}
 }
 
diff --git a/lily/.version b/lily/.version
index 93a395e794..9515322b97 100644
--- a/lily/.version
+++ b/lily/.version
@@ -1,6 +1,6 @@
 MAJOR_VERSION = 0
 MINOR_VERSION = 0
-PATCH_LEVEL = 49
+PATCH_LEVEL = 51
 # use to send patches, always empty for released version:
 # include separator: ".postfix", "-pl" makes rpm barf
 
diff --git a/lily/crescendo.cc b/lily/crescendo.cc
index 4583bdae2f..5b10f8cc89 100644
--- a/lily/crescendo.cc
+++ b/lily/crescendo.cc
@@ -48,7 +48,7 @@ Crescendo::brew_molecule_p() const return m_p ;
     }
     Symbol s( paper()->lookup_l()->hairpin(w_dim, grow_dir_i_ < 0) );
     m_p->add(Atom(s));
-    int pos = get_position_i();
+    int pos = get_position_i(s.dim.y);
     m_p->translate(Offset(x_off_dim,pos * paper()->internote()));
 }
 
diff --git a/lily/dynamic-reg.cc b/lily/dynamic-reg.cc
index 4088a3be70..59de609437 100644
--- a/lily/dynamic-reg.cc
+++ b/lily/dynamic-reg.cc
@@ -14,6 +14,7 @@
 #include "paper-def.hh"
 #include "score-column.hh"
 #include "staff-sym.hh"
+#include "note-column.hh"
 
 Dynamic_register::Dynamic_register()
 {
@@ -133,3 +134,14 @@ Dynamic_register::~Dynamic_register()
     }
     delete cresc_p_;
 }
+void
+Dynamic_register::acknowledge_element(Staff_elem_info i)
+{
+    if (i.elem_l_->name() == Note_column::static_name()) {
+	if (dynamic_p_) dynamic_p_->add_support(i.elem_l_);
+	if (to_end_cresc_p_)
+	    to_end_cresc_p_->add_support(i.elem_l_);
+	if (cresc_p_) 
+	    cresc_p_->add_support(i.elem_l_);
+    }
+}
diff --git a/lily/headreg.cc b/lily/head-reg.cc
similarity index 96%
rename from lily/headreg.cc
rename to lily/head-reg.cc
index 2d551cdd2c..fd84da6974 100644
--- a/lily/headreg.cc
+++ b/lily/head-reg.cc
@@ -63,7 +63,7 @@ void
 Notehead_register::pre_move_processing()
 {
     if (note_p_) {
-	if (dir_i_ && note_p_->rest_b_ && note_p_->balltype <= 2) {
+	if (dir_i_ && note_p_->rest_b_ ) {
 	    note_p_->position +=4*dir_i_ ;
 	}
 	typeset_element(note_p_);
diff --git a/lily/include/dynamic-reg.hh b/lily/include/dynamic-reg.hh
index 8b39f4fe11..b0f8b1a437 100644
--- a/lily/include/dynamic-reg.hh
+++ b/lily/include/dynamic-reg.hh
@@ -25,6 +25,7 @@ public:
     ~Dynamic_register();
     NAME_MEMBERS(Dynamic_register);
 protected:
+    virtual void acknowledge_element(Staff_elem_info);
     virtual bool try_request(Request *req_l);
     virtual void process_requests();
     virtual void pre_move_processing();
diff --git a/lily/include/staff-side.hh b/lily/include/staff-side.hh
index bd29c53b5c..e24dfa62e6 100644
--- a/lily/include/staff-side.hh
+++ b/lily/include/staff-side.hh
@@ -35,5 +35,6 @@ public:
     
 protected:
     int get_position_i()const;
+    int get_position_i(Interval)const;
 };
 #endif // STAFF_SIDE_HH
diff --git a/lily/include/text-item.hh b/lily/include/text-item.hh
index 85ff171d6d..bf40574946 100644
--- a/lily/include/text-item.hh
+++ b/lily/include/text-item.hh
@@ -24,13 +24,14 @@ public:
         
     /* ***************/
 
-    NAME_MEMBERS(Text_item);
-    virtual void set_default_index();
-    Molecule* brew_molecule_p() const;
-    void do_pre_processing();
     Text_item(Text_def*);
     Text_item(Text_req*);
     ~Text_item();
+    NAME_MEMBERS(Text_item);
+protected:
+    virtual void set_default_index();
+    Molecule* brew_molecule_p() const;
+    virtual void do_post_processing();
 };
 
 
diff --git a/lily/include/text-reg.hh b/lily/include/text-reg.hh
index 59317e5bcd..db668dd44f 100644
--- a/lily/include/text-reg.hh
+++ b/lily/include/text-reg.hh
@@ -9,17 +9,20 @@
 #define TEXTREG_HH
 #include "register.hh"
 
-struct Text_register : Request_register{
+class Text_register : public Request_register{
     Text_item * text_p_;
     Text_req * text_req_l_;
     int dir_i_;
     /* *************** */
+protected:
     virtual void set_feature(Features );
-    Text_register();
     virtual bool try_request(Request*);
     virtual void process_requests();
     virtual void pre_move_processing();
     virtual void post_move_processing();
+    virtual void acknowledge_element(Staff_elem_info);
+public:
+    Text_register();
     NAME_MEMBERS(Text_register);
 };
 
diff --git a/lily/lexer.l b/lily/lexer.l
index cdb62a8717..81dc336101 100644
--- a/lily/lexer.l
+++ b/lily/lexer.l
@@ -50,7 +50,7 @@ TEX		{AA}|-|{PUNCT}|{ACCENT}|{NATIONAL}
 WORD		{A}{AN}*
 ALPHAWORD	{A}+
 INT		-?{N}+
-REAL		{INT}?(\.{N}*)?
+REAL		{INT}?(\.{N}+)?
 KEYWORD		\\{WORD}
 WHITE		[ \n\t\f]
 BLACK		[^ \n\t\f]
diff --git a/lily/musical-request.cc b/lily/musical-request.cc
index 1ba4fd7801..e9793572e7 100644
--- a/lily/musical-request.cc
+++ b/lily/musical-request.cc
@@ -106,13 +106,18 @@ Melodic_req::Melodic_req()
 void
 Melodic_req::transpose(Melodic_req const & delta)
 {
+    int old_pitch = pitch();
+    int delta_pitch = delta.pitch();
     octave_i_ += delta.octave_i_;
     notename_i_ += delta.notename_i_;
     while  (notename_i_ >= 7 ) {
 	notename_i_ -= 7;
 	octave_i_ ++;
     }
-    accidental_i_ += delta.accidental_i_;
+    int new_pitch = pitch();
+    int delta_acc = new_pitch - old_pitch - delta_pitch;
+    
+    accidental_i_ -= delta_acc;
     if (abs(accidental_i_) > 2) {
 	delta.warning("transposition makes accidental larger than 2");
     }
diff --git a/lily/note-column-reg.cc b/lily/note-column-reg.cc
index 1263ca1c6a..d76baf235d 100644
--- a/lily/note-column-reg.cc
+++ b/lily/note-column-reg.cc
@@ -26,9 +26,10 @@ Note_column_register::acknowledge_element(Staff_elem_info i)
     if (!acceptable_elem_b(i.elem_l_))
 	return;
 
-    if (!ncol_p_)
+    if (!ncol_p_){
 	ncol_p_ = new Note_column;
-
+	announce_element(Staff_elem_info(ncol_p_, 0));
+    }
     char const*nC = i.elem_l_->name();
 
     if (nC == Script::static_name())
diff --git a/lily/note-column.cc b/lily/note-column.cc
index f71d61ba14..4bb2f1d5e6 100644
--- a/lily/note-column.cc
+++ b/lily/note-column.cc
@@ -114,7 +114,7 @@ Note_column::do_pre_processing()
     Item *support_l=top_head_l;
     int j;
     for (j = 0; j < 2; j++ ) {
-	for (int i=0; i < placed_l_arr_a[j].size(); j++) {
+	for (int i=0; i < placed_l_arr_a[j].size(); i++) {
 	    placed_l_arr_a[j][i]->add_support(support_l);
 	    support_l = placed_l_arr_a[j][i];
 	}
diff --git a/lily/notehead.cc b/lily/notehead.cc
index 85132fe55e..df2becf109 100644
--- a/lily/notehead.cc
+++ b/lily/notehead.cc
@@ -70,6 +70,10 @@ Notehead::brew_molecule_p() const return out;
     }
     out->translate(Offset(x_dir * p->note_width(),0));
     bool streepjes = (position<-1)||(position > staff_size+1);
+    
+    if (rest_b_ && balltype > 2)
+	streepjes = false;
+    
     if (streepjes) {
 	int dir = sign(position);
 	int s =(position<-1) ? -((-position)/2): (position-staff_size)/2;
diff --git a/lily/register-group.cc b/lily/register-group.cc
index a757333200..9400bbc87a 100644
--- a/lily/register-group.cc
+++ b/lily/register-group.cc
@@ -58,7 +58,7 @@ void
 Register_group_register::acknowledge_element(Staff_elem_info info)
 {
     Request_register* origin = info.origin_reg_l_arr_[0];
-    if (!contains_b(origin) && !origin->contains_b(this))
+    if (!contains_b(origin) && !origin->contains_b(this)) // am i sure?
 	return;
     
     for (iter_top(reg_list_, i); i.ok(); i++) 
diff --git a/lily/staff-side.cc b/lily/staff-side.cc
index 92b7917acb..0bf26223ab 100644
--- a/lily/staff-side.cc
+++ b/lily/staff-side.cc
@@ -8,6 +8,7 @@
 
 #include "staff-side.hh"
 #include "staff-sym.hh"
+#include "debug.hh"
 
 void
 Staff_side::set_staffsym(Staff_symbol* s_l)
@@ -43,6 +44,10 @@ Staff_side::get_position_i()const
 {
     if (!staff_sym_l_)
 	return 0;
+    if (!dir_i_) {
+	warning("Staff_side::get_position_i(): returning -20");
+	return -20;
+    }
     
     Real inter_f = staff_sym_l_->inter_note_f();
     int staff_size_i = staff_sym_l_->steps_i();
@@ -61,5 +66,21 @@ Staff_side::get_position_i()const
 	Interval v= support_height();
 	y = v[dir_i_]  + 2*dir_i_*inter_f;	// ugh
     }
-    return int(rint(Real(y)/inter_f));
+    return int(rint(Real(y)/inter_f)); // should ret a float?
+}
+
+int
+Staff_side::get_position_i(Interval sym_dim) const
+{ 
+    if (!staff_sym_l_)
+	return 0;
+   if (!dir_i_) {
+	warning("Staff_side::get_position_i(): returning -20");
+	return -20;
+    }
+   
+    Real inter_f = staff_sym_l_->inter_note_f();
+  
+    int i= get_position_i();
+    return i+ int(rint(- sym_dim[dir_i_] / inter_f));
 }
diff --git a/lily/text-item.cc b/lily/text-item.cc
index ee10d5e873..e97c7357b3 100644
--- a/lily/text-item.cc
+++ b/lily/text-item.cc
@@ -50,12 +50,14 @@ Text_item::Text_item(Text_req* treq_l)
 void
 Text_item::set_default_index()
 {
-    pos_i_  = get_position_i();
+    pos_i_  = get_position_i(tdef_p_->create_atom(paper()).extent().y );
 }
 
 void
-Text_item::do_pre_processing()
+Text_item::do_post_processing()
 {
+    if (!dir_i_)
+	dir_i_ = -1;
     set_default_index();
 }
 
diff --git a/lily/text-reg.cc b/lily/text-reg.cc
index 6c86fad828..c502781a1d 100644
--- a/lily/text-reg.cc
+++ b/lily/text-reg.cc
@@ -3,7 +3,7 @@
 
   (c) 1997 Han-Wen Nienhuys <hanwen@stack.nl>
 */
-
+#include "note-column.hh"
 #include "musical-request.hh"
 #include "text-reg.hh"
 #include "text-item.hh"
@@ -28,7 +28,13 @@ Text_register::try_request(Request*req_l)
     text_req_l_ = req_l->text();
     return true;
 }
-
+void
+Text_register::acknowledge_element(Staff_elem_info i)
+{
+    if (text_p_ && i.elem_l_->name() == Note_column::static_name()) {
+	text_p_->add_support(i.elem_l_);
+    }
+}
 void
 Text_register::process_requests()
 {
-- 
2.39.5