From 8b875ee66fa889c5d141a495b33650157787b5bb Mon Sep 17 00:00:00 2001
From: Han-Wen Nienhuys <hanwen@xs4all.nl>
Date: Mon, 29 Sep 1997 12:55:05 +0200
Subject: [PATCH] release: 0.1.18

---
 AUTHORS.text              |  2 +-
 Documentation/INSTALL.pod |  5 +++
 INSTALL.text              | 52 +++++++++++------------
 NEWS                      | 23 +++++++----
 VERSION                   |  6 +--
 bin/Makefile              |  2 +-
 bin/clean-fonts           |  6 ++-
 bin/make-website.in       |  4 +-
 bin/mf-deps.py            | 72 ++++++++++++++++++++++++++++++++
 init/dyn10.ly             |  2 +-
 init/font-en-tja16.ly     |  9 ++--
 init/font-en-tja20.ly     | 25 ++++++-----
 init/symbol.ly            |  2 +
 init/table16.ly           | 15 ++++---
 init/table20.ly           | 13 +++---
 init/vette-beams16.ly     |  3 ++
 init/vette-beams20.ly     |  3 ++
 input/font.ly             |  3 +-
 lily/Stable.make          |  6 +--
 lily/VERSION              |  2 +-
 lily/atom.cc              | 14 ++++++-
 lily/boxes.cc             | 25 +++++++++++
 lily/include/atom.hh      | 10 ++---
 lily/include/boxes.hh     | 32 ++++++--------
 lily/tex-beam.cc          | 47 ++++++++-------------
 lily/tex-slur.cc          | 33 +++++++++------
 make/lilypond.lsm         |  8 ++--
 make/lilypond.spec        |  4 +-
 mf/Makefile               | 33 +++++++++------
 mf/TODO                   |  1 +
 mf/bolletjes.mf           |  1 -
 mf/dimen.tex              | 15 +++----
 mf/eindelijk.mf           |  2 -
 mf/font-en-tja16.mf       |  5 +--
 mf/font-en-tja20.mf       |  5 +--
 mf/generic-params.mf      |  9 ++++
 mf/generic-tja.mf         | 25 +++++++++++
 mf/toevallig.mf           | 87 +++++++++++++++++++++++++++++++++++++++
 mf/vette-beams16.mf       | 18 ++++++++
 mf/vette-beams20.mf       | 18 ++++++++
 mf/wat-zie-ik.mf          | 46 +++++----------------
 tex/dyn10.tex             |  2 +-
 tex/fetdefs.tex           | 18 +++-----
 tex/font-en-tja16.tex     |  9 ++--
 tex/font-en-tja20.tex     |  9 ++--
 tex/lilyponddefs.tex      |  6 ++-
 tex/taupindefs.tex        |  3 +-
 tex/vette-beams16.tex     |  3 ++
 tex/vette-beams20.tex     |  3 ++
 49 files changed, 495 insertions(+), 251 deletions(-)
 create mode 100644 bin/mf-deps.py
 create mode 100644 init/vette-beams16.ly
 create mode 100644 init/vette-beams20.ly
 create mode 100644 mf/generic-params.mf
 create mode 100644 mf/generic-tja.mf
 create mode 100644 mf/toevallig.mf
 create mode 100644 mf/vette-beams16.mf
 create mode 100644 mf/vette-beams20.mf
 create mode 100644 tex/vette-beams16.tex
 create mode 100644 tex/vette-beams20.tex

diff --git a/AUTHORS.text b/AUTHORS.text
index c37d5dfba1..3cf19e8c59 100644
--- a/AUTHORS.text
+++ b/AUTHORS.text
@@ -61,6 +61,6 @@ CCCCOOOONNNNTTTTRRRRIIIIBBBBUUUUTTTTOOOORRRRSS
 
 
 
-23/Sep/97                LilyPond 0.1.17                        1
+23/Sep/97                LilyPond 0.1.18                        1
 
 
diff --git a/Documentation/INSTALL.pod b/Documentation/INSTALL.pod
index ae5da8da87..d15fbc7332 100644
--- a/Documentation/INSTALL.pod
+++ b/Documentation/INSTALL.pod
@@ -100,6 +100,11 @@ with the perl's Plain Old Documentation. (I use 5.003)
 
 =item *
 
+Python.  Although perl is nice, python is better.  We will shift
+towards python for build scripts
+
+=item *
+
 GNU find
 
 =item *
diff --git a/INSTALL.text b/INSTALL.text
index 88723a48bb..7861a349c0 100644
--- a/INSTALL.text
+++ b/INSTALL.text
@@ -61,7 +61,7 @@ RRRRUUUUNNNNNNNNIIIINNNNGGGG
 
 
 
-8/Aug/97                 LilyPond 0.1.14                        1
+26/Sep/97                LilyPond 0.1.18                        1
 
 
 
@@ -93,6 +93,10 @@ RRRREEEECCCCOOOOMMMMMMMMEEEENNNNDDDDEEEEDDDD
                  documentation was created with the perl's Plain
                  Old Documentation. (I use 5.003)
 
+       +o         Python.  Although perl is nice, python is
+                 better.  We will shift towards python for build
+                 scripts
+
        +o         GNU find
 
        +o         A fast computer (a full page of music typically
@@ -120,14 +124,10 @@ CCCCOOOONNNNFFFFIIIIGGGGUUUURRRRIIIINNNNGGGG a
 
        The TeX include directory is detected dynamically, but it
        can be adjusted with --------eeeennnnaaaabbbblllleeee----tttteeeexxxx----pppprrrreeeeffffiiiixxxx and --------eeeennnnaaaabbbblllleeee----tttteeeexxxx----
-       ddddiiiirrrr. The above assumes that you are root and have the GNU
-       development tools, and your make is GNU make.  If this is
-       not the case, you can adjust your environment variables to
-       your taste:
 
 
 
-8/Aug/97                 LilyPond 0.1.14                        2
+26/Sep/97                LilyPond 0.1.18                        2
 
 
 
@@ -136,6 +136,11 @@ CCCCOOOONNNNFFFFIIIIGGGGUUUURRRRIIIINNNNGGGG a
 INSTALL(1)            LilyPond documentation           INSTALL(1)
 
 
+       ddddiiiirrrr. The above assumes that you are root and have the GNU
+       development tools, and your make is GNU make.  If this is
+       not the case, you can adjust your environment variables to
+       your taste:
+
                export CPPFLAGS="-I /home/me/my_include -DWEIRD_FOOBAR"
                configure
 
@@ -185,15 +190,10 @@ INSTALL(1)            LilyPond documentation           INSTALL(1)
                 Set then directory TeX input is in (detected as a
                 subdir of tex-prefix)
 
-       --enable-mf-dir
-                Set the directory mf input is in (idem)
-                [obsolete]
-
-
 
 
 
-8/Aug/97                 LilyPond 0.1.14                        3
+26/Sep/97                LilyPond 0.1.18                        3
 
 
 
@@ -202,6 +202,10 @@ INSTALL(1)            LilyPond documentation           INSTALL(1)
 INSTALL(1)            LilyPond documentation           INSTALL(1)
 
 
+       --enable-mf-dir
+                Set the directory mf input is in (idem)
+                [obsolete]
+
        --enable-out-dir
                 Set the directory for machine generated output.
 
@@ -252,14 +256,10 @@ IIIINNNNSSSSTTTTAAAALLLLLLLLIIIINNNNGGGG
 
                make install
 
-       should do the trick.
 
-       Install the musixtex fonts in a directory which TeX and MF
-       knows (if you are root, look for a directory which
 
 
-
-8/Aug/97                 LilyPond 0.1.14                        4
+26/Sep/97                LilyPond 0.1.18                        4
 
 
 
@@ -268,6 +268,10 @@ IIIINNNNSSSSTTTTAAAALLLLLLLLIIIINNNNGGGG
 INSTALL(1)            LilyPond documentation           INSTALL(1)
 
 
+       should do the trick.
+
+       Install the musixtex fonts in a directory which TeX and MF
+       knows (if you are root, look for a directory which
        contains the directories with AMS and CM source (*.mf)
        files. Create a subdir lilypond or musixtex and copy the
        fonts into that). Do not forget to rehash TeX (if
@@ -318,14 +322,10 @@ RRRREEEEDDDDHHHHAAAATTTT LLLLIIIINNNNUUUUXXXX
        file is in _m_a_k_e_/_o_u_t_/_l_i_l_y_p_o_n_d_._s_p_e_c. You should be able to
        create an rpm as a normal user. Be sure you have a
        ~/.rpmrc, and edit the RPM-dir in _V_a_r_i_a_b_l_e_s_._m_a_k_e. (If you
-       create the RPM as a normal user the permissions will not
-       be set correctly, unfortunately)
-
-
 
 
 
-8/Aug/97                 LilyPond 0.1.14                        5
+26/Sep/97                LilyPond 0.1.18                        5
 
 
 
@@ -334,6 +334,9 @@ RRRREEEEDDDDHHHHAAAATTTT LLLLIIIINNNNUUUUXXXX
 INSTALL(1)            LilyPond documentation           INSTALL(1)
 
 
+       create the RPM as a normal user the permissions will not
+       be set correctly, unfortunately)
+
 DDDDEEEEBBBBIIIIAAAANNNN GGGGNNNNUUUU////LLLLIIIINNNNUUUUXXXX
        A Debian package is in the works
 
@@ -388,9 +391,6 @@ AAAAUUUUTTTTHHHHOOOORRRRSSSS
 
 
 
-
-
-
-8/Aug/97                 LilyPond 0.1.14                        6
+26/Sep/97                LilyPond 0.1.18                        6
 
 
diff --git a/NEWS b/NEWS
index de36da862a..72917102fb 100644
--- a/NEWS
+++ b/NEWS
@@ -1,23 +1,30 @@
-pl 17.jcn2
+
+pl 18
+	- bf: Box[X_AXIS] = b
+	- sharp sign, natural sign
+	- linethickness parametric
+	- bin/mf-deps.py script
+	- split into size/generic mf-files
+	- moved beams out of font-en-tja into vette-beams.  
+	- Made corresponding .cc changes.
+	
+
+jcn patches
 	- egcs compile (no link yet)
 	- nicer 4rest
 	- beam font (je kunt wel tegen een grapje, eva?)
 	- mf-to-table: 
 	  * "breapth" (x-depth) feature
 	  * handle generic stuff such as beams
-
-pl 17.jcn1
-	- all of the above
-
-pl 16.jcn3
 	- polished noteheads
 	- fixed 8-128 rests
 	- 4rest
 	- mf-to-table generates tex defs
 	- bf:mf-to-table and conflily outname check
-
-pl 16.jcn2
 	- 8-128 rests
+
+******
+sep 24
  
 pl 17
 	- bf: ledgerline width
diff --git a/VERSION b/VERSION
index dc2827164c..f1fb7e7cf2 100644
--- a/VERSION
+++ b/VERSION
@@ -1,6 +1,6 @@
 TOPLEVEL_MAJOR_VERSION = 0
 TOPLEVEL_MINOR_VERSION = 1
-TOPLEVEL_PATCH_LEVEL = 17
+TOPLEVEL_PATCH_LEVEL = 18
+TOPLEVEL_MY_PATCH_LEVEL = 
 
-# use to send patches, always empty for released version:
-TOPLEVEL_MY_PATCH_LEVEL = .jcn2
+# use the above to send patches, always empty for released version:
diff --git a/bin/Makefile b/bin/Makefile
index 87c5cb3bcc..8f5410eec0 100644
--- a/bin/Makefile
+++ b/bin/Makefile
@@ -5,7 +5,7 @@ include $(depth)/make/Include.make
 
 # list of distribution files:
 SCRIPTS = clearlily cpgento make-patch lily.efence \
-	make-version release conflily clean-fonts
+	make-version release conflily clean-fonts mf-deps.py
 PERL_SCRIPTS_IN = $(wildcard *.in)
 PERL_SCRIPTS = $(addprefix $(outdir)/, $(PERL_SCRIPTS_IN:.in=))
 EXTRA_DISTFILES = $(SCRIPTS) $(PERL_SCRIPTS_IN)
diff --git a/bin/clean-fonts b/bin/clean-fonts
index ae65586662..8494ff68a5 100755
--- a/bin/clean-fonts
+++ b/bin/clean-fonts
@@ -1,5 +1,7 @@
 #!/bin/sh
 
 # remove possibly stale .pk/.tfm files 
-
-rm  `locate font-en-tja| egrep '.*pk$|.*tfm$'`
+echo> /tmp/cleaning-font
+FILES=`find /var/lib/texmf/ -name 'font-en-tja*'` # -or -name 'vette-beam*'`
+echo removing $FILES
+rm  $FILES /tmp/cleaning-font
diff --git a/bin/make-website.in b/bin/make-website.in
index 6c65e645dd..37d318957d 100644
--- a/bin/make-website.in
+++ b/bin/make-website.in
@@ -44,7 +44,9 @@ sub set_html_footer
     my $username=$pw[6];
 
     $footstr = 
-	"\n<hr>Please take me <a href=index.html>back to the LilyPond index</a>\n<hr>
+	"\n<hr>Please take me <a href=index.html>back to the index</a>\n
+of LilyPond -- The GNU Project Music typesetter
+<hr>
 <font size=-1>
 This page was built using <code>" . $id_str . "</code> from lilypond-"
     . $lily_version . 
diff --git a/bin/mf-deps.py b/bin/mf-deps.py
new file mode 100644
index 0000000000..d0784ab5c5
--- /dev/null
+++ b/bin/mf-deps.py
@@ -0,0 +1,72 @@
+#!@PYTHON@
+
+"""look into metafont source for dependencies.
+
+ fixme: python path
+ fixme: error reporting
+ fixem: why doesn't python have closures..
+
+"""
+
+from regex import * ;
+from regsub import * ;
+import sys;
+import os;
+
+input_re = compile('^ *input *\([^;]+\);')
+postfixes = ['log', 'dvi', '2602gf', 'tfm']
+
+
+def print_one(x):
+    print x
+
+def line_concat(x,y):
+    return x + '\n' +  y
+
+class Targetdeps:
+    """Dependencies for one toplevel sourcefile
+
+    """
+    
+    def __init__(self,nm):
+	split = os.path.splitext(nm)	
+	self.basename=split[0];
+	self.depfiles = []
+	self.checkdep(nm)
+	
+    def checkdep(self, name):
+	split = os.path.splitext(name)
+	name = split[0] + '.mf';
+
+	if name not in self.depfiles:
+	    self.get_filedeps(name)
+
+    def get_filedeps(self,filename):
+#	print sys.stderr.write( 'checking ' + filename + '\n');
+	try:
+	    file = open(filename)
+	except IOError:
+#	    print sys.stderr.write( 'can\'t open ' + filename + '\n')
+	    return
+
+	self.depfiles.append(filename)
+_	lines = file.readlines()
+	file.close()
+	for line in lines:
+	    if input_re.match ( line) <> -1:
+		self.checkdep( input_re.group(1))
+
+    def target_string(self):
+	targets =  map (lambda x,y = self.basename: 'out/' + y + '.' + x, postfixes)
+	depstring = reduce(lambda x,y: x + ' ' + y, self.depfiles) 
+	dependencies = map (lambda x, y=depstring: x + ': ' + y, targets)
+
+	return reduce(line_concat, dependencies)
+
+
+
+for file in sys.argv[1:]:
+    t = Targetdeps(file)
+    print t.target_string()
+
+
diff --git a/init/dyn10.ly b/init/dyn10.ly
index 80a224c5c0..a5cc969220 100644
--- a/init/dyn10.ly
+++ b/init/dyn10.ly
@@ -1,4 +1,4 @@
-% generated at Fri Sep 26 09:25:28 1997 from out/dyn10.log
+% generated at Fri Sep 26 14:26:49 1997 from out/dyn10.log
 % changes will be lost
 
 % dyn=\symboltables {
diff --git a/init/font-en-tja16.ly b/init/font-en-tja16.ly
index f060334fd9..bed24e7c2d 100644
--- a/init/font-en-tja16.ly
+++ b/init/font-en-tja16.ly
@@ -1,4 +1,4 @@
-% generated at Fri Sep 26 09:25:30 1997 from out/font-en-tja16.log
+% generated at Mon Sep 29 11:32:20 1997 from out/font-en-tja16.log
 % changes will be lost
 
 % font-en-tja=\symboltables {
@@ -17,9 +17,8 @@
 		"-2"	"\sixtyfourthrest"	-0.00\pt	5.33\pt	19.47\pt	-0.00\pt
 		"-2"	"\hundredtwentyeighthrest"	-0.00\pt	5.33\pt	23.47\pt	-0.00\pt
 		}
-	"beamslopes" = \table {
-		"uslope"	"\beamuslope{%}{%}"	2.00\pt	32.00\pt	0.00\pt	-0.00\pt
-		"dslope"	"\beamdslope{%}{%}"	2.00\pt	32.00\pt	0.00\pt	-0.00\pt
-		"horizontal"	"\rulesym{%}{%}"	-0.00\pt	0.00\pt	0.00\pt	-0.00\pt
+	"foobars" = \table {
+		"1"	"\sharp"	-0.00\pt	4.40\pt	6.00\pt	-6.00\pt
+		"0"	"\natural"	-0.00\pt	2.67\pt	6.00\pt	-6.00\pt
 		}
 	%  } % font-en-tja
diff --git a/init/font-en-tja20.ly b/init/font-en-tja20.ly
index b9a1c2f314..69b2154982 100644
--- a/init/font-en-tja20.ly
+++ b/init/font-en-tja20.ly
@@ -1,25 +1,24 @@
-% generated at Fri Sep 26 09:25:32 1997 from out/font-en-tja20.log
+% generated at Mon Sep 29 11:32:24 1997 from out/font-en-tja20.log
 % changes will be lost
 
 % font-en-tja=\symboltables {
 	"balls" = \table {
-		"0"	"\wholeball"	-0.00\pt	10.08\pt	5.60\pt	-0.00\pt
-		"1"	"\halfball"	-0.00\pt	7.01\pt	5.60\pt	-0.00\pt
-		"2"	"\quartball"	-0.00\pt	6.73\pt	5.60\pt	-0.00\pt
+		"0"	"\wholeball"	-0.00\pt	10.35\pt	5.75\pt	-0.00\pt
+		"1"	"\halfball"	-0.00\pt	7.20\pt	5.75\pt	-0.00\pt
+		"2"	"\quartball"	-0.00\pt	6.91\pt	5.75\pt	-0.00\pt
 		"-1"	"\breveball"	-0.00\pt	10.00\pt	5.00\pt	-0.00\pt
 		"-2"	"\longaball"	-0.00\pt	10.00\pt	5.00\pt	-0.00\pt
 		}
 	"almostrests" = \table {
 		"4"	"\quartrest"	-0.00\pt	5.00\pt	20.00\pt	-0.00\pt
-		"-2"	"\eighthrest"	-0.00\pt	6.67\pt	9.13\pt	-0.00\pt
-		"-2"	"\sixteenthrest"	-0.00\pt	6.67\pt	14.13\pt	-0.00\pt
-		"-2"	"\thirtysecondrest"	-0.00\pt	6.67\pt	19.13\pt	-0.00\pt
-		"-2"	"\sixtyfourthrest"	-0.00\pt	6.67\pt	24.13\pt	-0.00\pt
-		"-2"	"\hundredtwentyeighthrest"	-0.00\pt	6.67\pt	29.13\pt	-0.00\pt
+		"-2"	"\eighthrest"	-0.00\pt	6.67\pt	9.33\pt	-0.00\pt
+		"-2"	"\sixteenthrest"	-0.00\pt	6.67\pt	14.33\pt	-0.00\pt
+		"-2"	"\thirtysecondrest"	-0.00\pt	6.67\pt	19.33\pt	-0.00\pt
+		"-2"	"\sixtyfourthrest"	-0.00\pt	6.67\pt	24.33\pt	-0.00\pt
+		"-2"	"\hundredtwentyeighthrest"	-0.00\pt	6.67\pt	29.33\pt	-0.00\pt
 		}
-	"beamslopes" = \table {
-		"uslope"	"\beamuslope{%}{%}"	2.00\pt	32.00\pt	0.00\pt	-0.00\pt
-		"dslope"	"\beamdslope{%}{%}"	2.00\pt	32.00\pt	0.00\pt	-0.00\pt
-		"horizontal"	"\rulesym{%}{%}"	-0.00\pt	0.00\pt	0.00\pt	-0.00\pt
+	"foobars" = \table {
+		"1"	"\sharp"	-0.00\pt	5.50\pt	7.50\pt	-7.50\pt
+		"0"	"\natural"	-0.00\pt	3.33\pt	7.50\pt	-7.50\pt
 		}
 	%  } % font-en-tja
diff --git a/init/symbol.ly b/init/symbol.ly
index 115b6dbb14..3efcaa9b0b 100644
--- a/init/symbol.ly
+++ b/init/symbol.ly
@@ -1,4 +1,6 @@
 % symbol.ly
+%
+% FIXME other name
   
 \version "0.1.6";
   
diff --git a/init/table16.ly b/init/table16.ly
index 46ff184838..2be017c49f 100644
--- a/init/table16.ly
+++ b/init/table16.ly
@@ -75,9 +75,6 @@ table_sixteen=
 	"tenor_change"	"\caltoclef" 	0.0\pt	11.2\pt	0.0\pt	16.0\pt
      }
 
-     % ugh what's our outdir called?
-     \include "font-en-tja16.ly"
-
      "slur" = \table {
 	"whole"	"\slurchar%{%}"
 	"half"	"\hslurchar%{%}"
@@ -86,8 +83,8 @@ table_sixteen=
      "accidentals" = \table {
 	"-2"	"\flatflat"	0.0\pt 	8.16\pt	-2.5\pt 7.5\pt
 	"-1"	"\flat"		0.0\pt	4.8\pt	-2.5\pt 7.5\pt
-	"0"	"\natural"	0.0\pt	4.8\pt	-7.5\pt 7.5\pt
-	"1"	"\sharp" 	0.0\pt	3.6\pt	-7.5\pt 7.5\pt
+	"0"	"\natural"	0.0\pt	4.0\pt	-6.\pt 6.\pt
+	"1"	"\sharp" 	0.0\pt	4.4\pt	-6.\pt 6.\pt
 	"2"	"\sharpsharp"	0.0\pt	4.8\pt	-2.5\pt 7.5\pt
      }
 
@@ -165,11 +162,13 @@ table_sixteen=
 	"d7"	"\dhundredtwentyeighthflag"	0.0\pt	4.0\pt	0.0\pt	0.0\pt
      }
 
-     "oldbeamslopes" = \table {
-	"uslope"	"\beamuslope{%}{%}"  2.0\pt 64.0\pt 0.0\pt 0.0\pt
-	"dslope"	"\beamdslope{%}{%}"  2.0\pt 64.0\pt 0.0\pt 0.0\pt
+     "beamslopes" = \table {
+	"slope"		"\beamslope{%}{%}"  2.0\pt 64.0\pt 0.0\pt 0.0\pt	
 	"horizontal"	"\rulesym{%}{%}"	
      }
+     % ugh what's our outdir called?
+     \include "font-en-tja16.ly"
+
 
 }
 
diff --git a/init/table20.ly b/init/table20.ly
index 2d276a6af4..b39f16334a 100644
--- a/init/table20.ly
+++ b/init/table20.ly
@@ -11,7 +11,6 @@ table_twenty =
 
     % index TeXstring, 	xmin xmax ymin ymax
 
-    % not yet updated
     "scripts" = \table {
 	"fermata" "\fermata"		0.0\pt 0.0\pt	0.0\pt 6.0\pt
 	"-fermata" "\ifermata"		0.0\pt 0.0\pt	-6.0\pt 0.0\pt
@@ -78,8 +77,6 @@ table_twenty =
 	"tenor_change"	"\caltoclef" 	0.0\pt	16.0\pt	0.0\pt	20.0\pt
     }
 
-    % ugh what's our outdir called?
-    \include "font-en-tja20.ly"
 
     "slur" = \table {
 	"whole"	"\slurchar%{%}"	0.0\pt	0.0\pt	0.0\pt	0.0\pt
@@ -165,10 +162,12 @@ table_twenty =
 	"d7"	"\dhundredtwentyeighthflag"	0.0\pt	5.0\pt	0.0\pt	0.0\pt
      }
 
-    "oldbeamslopes" = \table {
-	"uslope"	"\beamuslope{%}{%}"  2.0\pt 64.0\pt 0.0\pt 0.0\pt
-	"dslope"	"\beamdslope{%}{%}"  2.0\pt 64.0\pt 0.0\pt 0.0\pt
+  "beamslopes" = \table {
+	"slope"		"\beamslope{%}{%}"  2.0\pt 64.0\pt 0.0\pt 0.0\pt	
 	"horizontal"	"\rulesym{%}{%}"	
-    }
+     }
+     
+    % ugh what's our outdir called?
+    \include "font-en-tja20.ly"
 }
 
diff --git a/init/vette-beams16.ly b/init/vette-beams16.ly
new file mode 100644
index 0000000000..55fc84888e
--- /dev/null
+++ b/init/vette-beams16.ly
@@ -0,0 +1,3 @@
+% generated at Fri Sep 26 15:26:29 1997 from out/vette-beams16.log
+% changes will be lost
+
diff --git a/init/vette-beams20.ly b/init/vette-beams20.ly
new file mode 100644
index 0000000000..438f27e89a
--- /dev/null
+++ b/init/vette-beams20.ly
@@ -0,0 +1,3 @@
+% generated at Fri Sep 26 15:26:46 1997 from out/vette-beams20.log
+% changes will be lost
+
diff --git a/input/font.ly b/input/font.ly
index 738871d15f..4f659db61e 100644
--- a/input/font.ly
+++ b/input/font.ly
@@ -20,7 +20,8 @@ TestedFeatures	font-en-tja
 		[c8 c] [a' a']
 %		[c a'] [a' c]
 		[c d e f] [a' g' f' e']
-		r1 r2 r4 r8 r16 r32 r64 r128
+		[cis' dis' c' d'] [cisis' disis' ceses' deses']
+		  r1 r2 r4 r8 r16 r32 r64 r128
 	}
 	\paper{ 
 	    \paper_twenty
diff --git a/lily/Stable.make b/lily/Stable.make
index 079e634ce3..9214c7fb0b 100644
--- a/lily/Stable.make
+++ b/lily/Stable.make
@@ -1,7 +1,7 @@
-# kept in dist bo stripping stable stuff, still to copy...
 
-# a bit of a hack to keep exec size under control.
-stablecc=atom.cc  offset.cc meter.cc boxes.cc \
+
+# a hack to keep exec size under control.
+stablecc=  offset.cc meter.cc boxes.cc \
 	keyword.cc leastsquares.cc \
 	lookup.cc meter.cc\
 	parser.cc notename-table.cc lexer.cc\
diff --git a/lily/VERSION b/lily/VERSION
index c905573ecc..783f85e049 100644
--- a/lily/VERSION
+++ b/lily/VERSION
@@ -1,6 +1,6 @@
 MAJOR_VERSION = 0
 MINOR_VERSION = 1
-PATCH_LEVEL = 17
+PATCH_LEVEL = 18
 # use to send patches, always empty for released version:
 # include separator: ".postfix", "-pl" makes rpm barf
 
diff --git a/lily/atom.cc b/lily/atom.cc
index 0f1f205289..423181603d 100644
--- a/lily/atom.cc
+++ b/lily/atom.cc
@@ -57,7 +57,7 @@ Atom::TeX_string() const
   Offset off = off_;
 
   /* infinity checks. */
-  for (int a =X_AXIS; a < NO_AXES; a++)
+  for (int a = X_AXIS; a < NO_AXES; a++)
     {
       Axis ax = (Axis)a;
       if (abs (off[ax]) >= 100 CM)
@@ -75,3 +75,15 @@ Atom::TeX_string() const
   s += tex_str + "}";
   return s;
 }
+
+void
+Atom::translate (Real r, Axis a)
+{
+  off_[a] += r; 
+}
+
+void
+Atom::translate (Offset o)
+{
+  off_ += o;
+}
diff --git a/lily/boxes.cc b/lily/boxes.cc
index 1bf7177336..28fdeade83 100644
--- a/lily/boxes.cc
+++ b/lily/boxes.cc
@@ -9,9 +9,23 @@
 #include "boxes.hh"
 #include "varray.hh"
 
+void
+Box::translate (Offset o)
+{
+  x().translate (o.x ());
+  y().translate (o.y ());
+}
+
+void
+Box::unite (Box b)
+{
+  x().unite (b.x ());
+  y().unite (b.y ());
+}
 
 Box::Box()
 {        
+
 }
 
 Box::Box (Interval ix, Interval iy)
@@ -20,3 +34,14 @@ Box::Box (Interval ix, Interval iy)
   y() = iy;
 }
 
+Interval &
+Box::operator[] (Axis a)
+{
+  return interval_a_[a];
+}
+
+Interval
+Box::operator[] (Axis a)const
+{
+  return interval_a_[a];
+}
diff --git a/lily/include/atom.hh b/lily/include/atom.hh
index d25942c336..66c4a6cbba 100644
--- a/lily/include/atom.hh
+++ b/lily/include/atom.hh
@@ -22,13 +22,9 @@ struct Atom {
 
   String str() const;		// for printing.
   Atom (String, Box);
-    Atom ();
-  void translate (Offset o) {
-    off_ += o;
-  }
-  void translate (Real r,Axis a){
-    off_[a] += r;
-  }
+  Atom ();
+  void translate (Offset o);
+  void translate (Real r,Axis a);
   /// how big is #this#?
   Box extent() const;
   void print() const;
diff --git a/lily/include/boxes.hh b/lily/include/boxes.hh
index 45490033bd..0e5addc8af 100644
--- a/lily/include/boxes.hh
+++ b/lily/include/boxes.hh
@@ -12,28 +12,20 @@
 #include "axes.hh"
 
 struct Box {
-    Interval interval_a_[NO_AXES];
+  Interval interval_a_[NO_AXES];
     
-    Interval &x() {return interval_a_[X_AXIS]; }
-    Interval &y(){ return interval_a_[Y_AXIS]; }
-    Interval x() const{ return interval_a_[X_AXIS]; }
-    Interval y() const{return interval_a_[Y_AXIS]; }
-    Interval operator[](Axis a) {
-	return interval_a_[a];
-    }
+  Interval &x() {return interval_a_[X_AXIS]; }
+  Interval &y(){ return interval_a_[Y_AXIS]; }
+  Interval x() const{ return interval_a_[X_AXIS]; }
+  Interval y() const{return interval_a_[Y_AXIS]; }
+  Interval operator[](Axis a) const;
+  Interval &operator[] (Axis a);
     
-    void translate (Offset o) {
-	x().translate (o.x ());
-	y().translate (o.y ());
-    }
-
-    /// smallest box enclosing #b#
-    void unite (Box b) {
-	x().unite (b.x ());
-	y().unite (b.y ());
-    }
-    Box();
-    Box (Interval ix, Interval iy);
+  void translate (Offset o);
+  /// smallest box enclosing #b#
+  void unite (Box b);
+  Box();
+  Box (Interval ix, Interval iy);
 };
 
 
diff --git a/lily/tex-beam.cc b/lily/tex-beam.cc
index 193e6d4e6f..c5b356a604 100644
--- a/lily/tex-beam.cc
+++ b/lily/tex-beam.cc
@@ -23,8 +23,7 @@
 Atom
 Lookup::beam_element (int sidx, int widx, Real slope) const
 {
-  char dir_char = slope >0 ? 'u' : 'd';
-  String name = dir_char + String("slope");
+  String name = String("slope");
   Atom bs=(*symtables_)("beamslopes")->lookup (name);
   
   Array<String> args;
@@ -38,24 +37,6 @@ Lookup::beam_element (int sidx, int widx, Real slope) const
   return bs;
 }
 
-// ugh.. hard wired tex-code.
-static int
-slope_index (Real &s)
-{
-  if (abs (s) > 0.5)
-    {
-      WARN << "beam steeper than 0.5 (" << s << ")\n";
-      s = sign (s) * 0.5;
-    }
-
-  int i = int (rint (s *  20.0));
-
-  s = i/20.0;
-  if (s>0)
-    return 6*i;
-  else
-    return -6 * i;
-}
 
 Atom
 Lookup::rule_symbol (Real height, Real width) const
@@ -73,24 +54,32 @@ Lookup::rule_symbol (Real height, Real width) const
 Atom
 Lookup::beam (Real &slope, Real width) const
 {        
-  int sidx = slope_index (slope);
-  if (!slope)
-    return rule_symbol (2 PT, width);
+  int sidx = 0;
+  if (abs (slope) > 1.0)
+    {
+      WARN << "beam steeper than 1.0 (" << slope << ")\n";
+      slope = sign (slope);
+    }
 
-  Interval xdims = (*symtables_)("beamslopes")->lookup ("uslope").dim_[X_AXIS];
+  sidx = int (rint (slope *  20.0));
+  slope = sidx / 20.0;
+  
+  Interval xdims = (*symtables_)("beamslopes")->lookup ("slope").dim_[X_AXIS];
   Real min_wid = xdims[LEFT];
   Real max_wid = xdims[RIGHT];
-
+  assert(max_wid > 0);
+  int widths = intlog2 (int (max_wid/min_wid)) + 1;
+  
   if (width < min_wid) 
     {
       WARN<<"Beam too narrow. (" << print_dimen (width) <<")\n";
       width = min_wid;
     }
+  
   Real elemwidth = max_wid;
-  int widx = intlog2 (int (max_wid/min_wid));
-
-  Molecule m;
   
+  int widx  =widths - 1;
+  Molecule m;
   while (elemwidth > width) 
     {
       widx --;
@@ -99,7 +88,7 @@ Lookup::beam (Real &slope, Real width) const
   Real overlap = elemwidth/4;
   Real last_x = width - elemwidth;
   Real x = overlap;
-  Atom elem (beam_element (sidx, widx, slope));
+  Atom elem (beam_element (sidx * widths, widx, slope));
   m.add (elem);
   while (x < last_x) 
     {
diff --git a/lily/tex-slur.cc b/lily/tex-slur.cc
index 664460f8b9..58783600f5 100644
--- a/lily/tex-slur.cc
+++ b/lily/tex-slur.cc
@@ -55,8 +55,8 @@ Lookup::half_slur_middlepart (Real &dx, Direction dir) const
 
   Atom s;
   
-  s.dim_.y() = Interval (min (0,0), max (0,0)); // todo
-  s.dim_.x() = Interval (0,dx);
+  s.dim_[Y_AXIS] = Interval (min (0, 0), max (0, 0)); // todo
+  s.dim_[X_AXIS] = Interval (-dx/2, dx/2);
 
   String f =  String ("\\hslurchar");
   f += direction_char (CENTER);
@@ -74,6 +74,11 @@ Lookup::half_slur_middlepart (Real &dx, Direction dir) const
   return s;
 }
 
+/*
+   The halfslurs have their center at the end pointing away from the notehead.  
+   This lookup translates so that width() == [0, w]
+ */
+
 Atom
 Lookup::half_slur (int dy, Real &dx, Direction dir, int xpart) const
 {
@@ -99,8 +104,8 @@ Lookup::half_slur (int dy, Real &dx, Direction dir, int xpart) const
     }
 	
   Atom s;
-  s.dim_.x() = Interval (0,dx);
-  s.dim_.y() = Interval (min (0,dy), max (0,dy));
+  s.dim_[X_AXIS] = Interval (0, dx);
+  s.dim_[Y_AXIS] = Interval (min (0, dy), max (0, dy));
 
 
   String f = String ("\\hslurchar");
@@ -171,17 +176,18 @@ Lookup::slur (int dy , Real &dx, Direction dir) const
     }
   
   Atom s;
-  s.dim_.x() = Interval (-dx/2,dx/2);
-  s.dim_.y() = Interval (min (0,dy), max (0,dy));
+  s.dim_[X_AXIS] = Interval (0, dx);
+  s.dim_[Y_AXIS] = Interval (min (0, dy), max (0, dy));
 
   String f = String ("\\slurchar") + String (direction_char (y_sign));
 
   int idx=-1;
-  if (y_sign) {	
-    idx = hidx * 16 + widx;
-    if (dir < 0)
-      idx += 128;
-  }
+  if (y_sign) 
+    {	
+      idx = hidx * 16 + widx;
+      if (dir < 0)
+	idx += 128;
+    }
   else 
     {
       if (dx >= 4*54 PT) 
@@ -222,17 +228,18 @@ Lookup::big_slur (int dy , Real &dx, Direction dir) const
   Real right_wid = left_wid;
 
   Atom l = half_slur (l_dy, left_wid, dir, -1);
+  
+   
   Atom r = half_slur (r_dy, right_wid, dir, 1);
   Real mid_wid = dx - left_wid - right_wid;
 
   Molecule mol;
   mol.add (l);
   Atom a (half_slur (0, mid_wid, dir, 0));
-  a.translate (slur_extra * internote_f, Y_AXIS);
   mol.add_at_edge (X_AXIS, RIGHT, a);
   mol.add_at_edge (X_AXIS, RIGHT, r);
+
   mol.translate (l_dy * internote_f, Y_AXIS);
-  
   Atom s;
   s.tex_ = mol.TeX_string();
   s.dim_ = mol.extent();
diff --git a/make/lilypond.lsm b/make/lilypond.lsm
index 41a21342ba..857917a619 100644
--- a/make/lilypond.lsm
+++ b/make/lilypond.lsm
@@ -1,7 +1,7 @@
 Begin3
 Title: LilyPond
-Version: 0.1.17
-Entered-date: 24SEP97
+Version: 0.1.18
+Entered-date: 26SEP97
 Description: 	LilyPond is the GNU Project music typesetter. This
 		program converts music definition files into
 		visual or auditive output: it can typeset formatted
@@ -14,8 +14,8 @@ Author: hanwen@stack.nl (Han-Wen Nienhuys)
 	jan@digicash.com (Jan Nieuwenhuizen)
 Maintained-by: hanwen@stack.nl (Han-Wen Nienhuys)
 Primary-site: sunsite.unc.edu /pub/Linux/apps
-	395k lilypond-0.1.17.tar.gz 
+	395k lilypond-0.1.18.tar.gz 
 Original-site: pcnov095.win.tue.nl /pub/lilypond/
-	395k lilypond-0.1.17.tar.gz 
+	395k lilypond-0.1.18.tar.gz 
 Copying-policy: GPL
 End
diff --git a/make/lilypond.spec b/make/lilypond.spec
index b9415b39bd..9797e390d4 100644
--- a/make/lilypond.spec
+++ b/make/lilypond.spec
@@ -1,9 +1,9 @@
 Name: lilypond
-Version: 0.1.17
+Version: 0.1.18
 Release: 1
 Copyright: GPL
 Group: Applications/Publishing
-Source0: pcnov095.win.tue.nl:/pub/lilypond/lilypond-0.1.17.tar.gz
+Source0: pcnov095.win.tue.nl:/pub/lilypond/lilypond-0.1.18.tar.gz
 Summary: A preprocessor to make TeX typeset music.
 URL: http://www.stack.nl/~hanwen/lilypond
 Packager: Han-Wen Nienhuys <hanwen@stack.nl>
diff --git a/mf/Makefile b/mf/Makefile
index 6e6446bcfe..26bc3f01df 100644
--- a/mf/Makefile
+++ b/mf/Makefile
@@ -16,10 +16,12 @@ EXTRA_DISTFILES = $(MFFILES) $(TEXFILES) TODO
 #
 
 FONT_FILES = $(wildcard *[0-9].mf)
+FET_FILES = $(wildcard font-en-tja*[0-9].mf)
+
 lyout = $(depth)/init
 texout = $(depth)/tex
-LYTABLES = $(addprefix $(lyout)/, $(FONT_FILES:.mf=.ly))
-TEXTABLES = $(addprefix $(texout)/, $(FONT_FILES:.mf=.tex))
+LYTABLES = $(addprefix $(lyout)/, $(FET_FILES:.mf=.ly))
+TEXTABLES = $(addprefix $(texout)/, $(FET_FILES:.mf=.tex))
 #
 
 all: $(LYTABLES) $(TEXTABLES)
@@ -27,14 +29,20 @@ all: $(LYTABLES) $(TEXTABLES)
 localclean:
 	rm -f $(LYTABLES) $(TEXTABLES)
 
+$(outdir)/%.dvi: %.mf
+	mf $<
+	gftodvi  $(basename $<)
+	mv   $(basename $<).dvi $(outdir)
+	rm $(basename $<).*gf
+
 $(outdir)/%.log: %.mf
 	mf $<
 	mv $(@F) $@
-	rm $(shell basename $< .mf).*gf
+	rm $(basename $< ).*gf
 
 $(lyout)/%.ly $(texout)/%.tex: $(outdir)/%.log
 	mf-to-table -l $(lyout)/$(<F:.log=.ly) -t $(texout)/$(<F:.log=.tex) $<
-	
+
 localinstall:
 	$(INSTALL) -d $(MFDIR)/lilypond
 	$(INSTALL) -m 644 $(MFFILES) $(MFDIR)/lilypond/
@@ -45,13 +53,14 @@ localuninstall:
 
 # dependencies:
 #
-$(lyout)/dyn10.ly: autometric.mf ital-f.mf ital-m.mf ital-p.mf ital-r.mf ital-s.mf ital-z.mf dyn10.mf
-$(lyout)/font-en-tja16.ly: autometric.mf bolletjes.mf eindelijk.mf font-en-tja16.mf wat-zie-ik.mf
-$(lyout)/font-en-tja20.ly: autometric.mf bolletjes.mf eindelijk.mf font-en-tja20.mf wat-zie-ik.mf
-#
-$(texout)/dyn10.tex: autometric.mf ital-f.mf ital-m.mf ital-p.mf ital-r.mf ital-s.mf ital-z.mf dyn10.mf
-$(texout)/font-en-tja16.tex: autometric.mf bolletjes.mf eindelijk.mf font-en-tja16.mf wat-zie-ik.mf
-$(texout)/font-en-tja20.tex: autometric.mf bolletjes.mf eindelijk.mf font-en-tja20.mf wat-zie-ik.mf
-#
+include $(outdir)/mfdeps
+
+
+
+$(outdir)/mfdeps: $(FONT_FILES)
+# do something silly to avoid barfs if python not installed.
+	echo > $@
+	python $(depth)/bin/mf-deps.py  $^ >> $@
+
 
 
diff --git a/mf/TODO b/mf/TODO
index ac3f4a796a..b69830eee9 100644
--- a/mf/TODO
+++ b/mf/TODO
@@ -8,5 +8,6 @@
 	- check out Adobe Sonata/Petrucci font layout.  They are the
 standard for Music fonts
 	- rewrite : make a metafont iso font
+	- perl script to generate dependencies for mf 
 l
 
diff --git a/mf/bolletjes.mf b/mf/bolletjes.mf
index bbc31feed2..305660525b 100644
--- a/mf/bolletjes.mf
+++ b/mf/bolletjes.mf
@@ -4,7 +4,6 @@
 % most beautiful bolletjes are pronounced, not circular, 
 % and not even symmetric.
 
-interline#:=staffsize#/(stafflines-1);
 %noteheight#:=interline#;
 % even more pronounced (almost overdone), just like the original
 noteheight#:=interline#+1.5stafflinethickness#;
diff --git a/mf/dimen.tex b/mf/dimen.tex
index acba4b1d5b..78fc5369af 100644
--- a/mf/dimen.tex
+++ b/mf/dimen.tex
@@ -2,16 +2,13 @@
 % A tex file to help determine dims.
 %
 
-\font\musicfont=musix16
-\font\slurfont=xslu16
-\font\specfont=musixspx % tildes? beams, circles, (de)-crescendos, pianobraces
-\font\eglerfont=opus16 % notes, clefs, beams
-\font\eglerspec=opussps % tabulars, circles, glissandi, pianobraces
-\font\tjafont=font-en-tja16
-%\def\thefont{\musicfont}
+\font\taupin=musix16
+\font\fet=font-en-tja16
+\font\vet=vette-beams16
+\font\slurs=xslhd16
+\font\specfont=musixspx
+\def\thefont{\slurs}
 %\def\thefont{\specfont}
-%\def\thefont{\eglerfont}
-\def\thefont{\tjafont}
 
 \def\mb#1{{\thefont\char#1}}
 
diff --git a/mf/eindelijk.mf b/mf/eindelijk.mf
index 56541e11c3..deabf71fac 100644
--- a/mf/eindelijk.mf
+++ b/mf/eindelijk.mf
@@ -1,8 +1,6 @@
 % eindelijk.mf
 % LilyPond's own rest(s)
 
-define_pixels(interline);
-define_pixels(stafflinethickness);
 % MO*TeX stuff
 % nhh#:=interline#;
 % nhw#:=6/5*interline#;
diff --git a/mf/font-en-tja16.mf b/mf/font-en-tja16.mf
index f82dc30dbb..c43c04c6ed 100644
--- a/mf/font-en-tja16.mf
+++ b/mf/font-en-tja16.mf
@@ -13,12 +13,9 @@ test:=0;
 
 staffsize#:=16pt#;
 stafflines:=5;
-stafflinethickness#:=0.4pt#;
 code:=-1;
 
-input bolletjes;
-input eindelijk;
-input wat-zie-ik;
+input generic-tja;
 
 fet_endfont("font-en-tja");
 
diff --git a/mf/font-en-tja20.mf b/mf/font-en-tja20.mf
index 0015e173cf..ab7d914e35 100644
--- a/mf/font-en-tja20.mf
+++ b/mf/font-en-tja20.mf
@@ -9,14 +9,11 @@ fet_beginfont("font-en-tja", 20);
 test:=0;
 
 staffsize#:=20pt#;
-% staffsize#:=16pt#;
 stafflines:=5;
 stafflinethickness#:=0.4pt#;
 code:=-1;
 
-input bolletjes;
-input eindelijk;
-input wat-zie-ik;
+input generic-tja;
 
 fet_endfont("font-en-tja");
 
diff --git a/mf/generic-params.mf b/mf/generic-params.mf
new file mode 100644
index 0000000000..1e8053dc14
--- /dev/null
+++ b/mf/generic-params.mf
@@ -0,0 +1,9 @@
+
+interline#:=staffsize#/(stafflines-1);
+  
+        %  [D.K.Roush & J.S.Gourlay] say this should be 0.072
+        % We know better
+stafflinethickness#:=0.1 interline#;
+
+define_pixels(interline);
+define_pixels(stafflinethickness);
diff --git a/mf/generic-tja.mf b/mf/generic-tja.mf
new file mode 100644
index 0000000000..9d0dc58794
--- /dev/null
+++ b/mf/generic-tja.mf
@@ -0,0 +1,25 @@
+
+
+% better versions of Taupin/Egler savepic cmds
+%
+%
+picture save_picture_stack[];
+numeric stack_idx;
+stack_idx := 0;
+
+def push_picture(expr p) = save_picture_stack[incr stack_idx] := p enddef;
+def push_current = push_picture (currentpicture) enddef;
+def pop_picture =  save_picture_stack[ decr stack_idx] enddef;
+def top_picture = save_picture_stack[stack_idx] enddef;
+
+
+def scaledabout(expr point, scale) =
+	shifted -point scaled scale shifted point
+enddef;
+
+
+input generic-params;
+input bolletjes;
+input eindelijk;
+input toevallig;
+
diff --git a/mf/toevallig.mf b/mf/toevallig.mf
new file mode 100644
index 0000000000..0d61863455
--- /dev/null
+++ b/mf/toevallig.mf
@@ -0,0 +1,87 @@
+%
+% Real accidentals
+
+%\tracingequations:= tracingonline := 1;
+%proofing := 2;
+
+fet_begingroup("foobars");
+
+begingroup;
+
+fet_beginchar(incr code, 1.1 interline#, 1.5 interline#, 
+		1.5 interline#, 0, "Sharp" , "1", "sharp");
+
+	save interbeam, interstem, beamheight, beamwidth, 
+		stemwidth;
+
+	interbeam := 1.1 interline;
+	interstem := 7/16 ;
+	beamheight := 4 stafflinethickness;
+	beamwidth := w;
+	stemwidth := 1.3 stafflinethickness;
+
+	2 horizontal_protrusion  + interstem * beamwidth + stemwidth
+		= beamwidth;
+
+	pickup pensquare xscaled horizontal_protrusion yscaled beamheight;
+	pair center;
+	center = (.5 w, 0);
+	
+	z2 - z1 = (beamwidth - horizontal_protrusion, beamheight/2);
+	z1 + z2 = 2*center;
+	beamslope = (y2-y1)/(x2-x1);
+	path beam;
+	beam:=  z1 .. z2;
+	draw beam shifted (0, -interbeam/2);
+	draw beam shifted (0,interbeam/2);
+
+	pickup pencircle scaled stemwidth;
+	x3 = x4 = xpart center;
+	bot y3 = -1.5 interline + ypart center;
+	top y4 = 1.5 interline + ypart center;
+
+	path stem;
+	stem := z3 .. z4;
+	numeric xs;
+	xs := interstem* beamwidth / 2;
+	draw stem shifted (- xs, - xs* beamslope);
+	draw stem shifted (xs , xs *beamslope);
+	endchar;
+
+fet_beginchar(incr code, 8/12 interline#, 1.5 interline#, 1.5 interline#, 0,
+	"Natural", "0", "natural")
+
+
+	save interbeam, interstem, beamheight, beamwidth, 
+		stemwidth;
+
+	beamheight = 4.5 stafflinethickness;
+	interstem + stemwidth =  w;
+	stemwidth = 1.3 stafflinethickness;
+
+	z2 -z1 = (interstem, slope * interstem);
+	xpart .5 [z2,z1] = xcenter ;
+	xcenter = w/2;
+
+
+	pickup penrazor scaled beamheight rotated 90;
+	top y2 = interline - 3/2 stafflinethickness ;
+	slope =  stafflinethickness / interstem;
+	
+	draw z1 .. z2;
+	draw (xpart z1, -y2) .. (xpart z2, -y1);
+	beamtop = top y2;
+	
+	pickup pencircle scaled stemwidth;
+	xpart z3 = xpart z1;
+	xpart z4 = xpart z2;
+	top y3 = 1.5 interline;
+	top y4 = beamtop;
+
+	draw (xpart z1, -y4) .. z3;
+	draw (xpart z2, -y3) .. z4;
+
+	labels(1,2,3,4);
+	endchar;
+endgroup;
+fet_endgroup("foobars");
diff --git a/mf/vette-beams16.mf b/mf/vette-beams16.mf
new file mode 100644
index 0000000000..48921a25c2
--- /dev/null
+++ b/mf/vette-beams16.mf
@@ -0,0 +1,18 @@
+% font-en-tja16.mf
+% part of LilyPond's pretty-but-neat music font
+
+% font_identifier:="font-en-tja16";
+% font_size 16pt#;
+font_identifier:="vette-beams16";
+font_size 16;
+mode_setup;
+
+test:=0;
+
+staffsize#:=16pt#;
+stafflines:=5;
+stafflinethickness#:=0.4pt#;
+input generic-params;
+input wat-zie-ik;
+end.
+
diff --git a/mf/vette-beams20.mf b/mf/vette-beams20.mf
new file mode 100644
index 0000000000..49f4ffd547
--- /dev/null
+++ b/mf/vette-beams20.mf
@@ -0,0 +1,18 @@
+% font-en-tja16.mf
+% part of LilyPond's pretty-but-neat music font
+
+% font_identifier:="font-en-tja16";
+% font_size 16pt#;
+
+font_identifier:="vette-beams16";
+font_size 20;
+mode_setup;
+
+test:=0;
+
+staffsize#:=20pt#;
+stafflines:=5;
+stafflinethickness#:=0.4pt#;
+input generic-params;
+input wat-zie-ik;
+end.
diff --git a/mf/wat-zie-ik.mf b/mf/wat-zie-ik.mf
index 0f835ae512..507d377496 100644
--- a/mf/wat-zie-ik.mf
+++ b/mf/wat-zie-ik.mf
@@ -2,7 +2,8 @@
 % part of LilyPond's pretty-but-neat music font
 % beams: plat en steil
 
-fet_begingroup("beamslopes");
+%\tracingequations:= tracingonline := 1;
+
 
 beamheight#:=0.48interline#;
 define_pixels(beamheight);
@@ -12,47 +13,20 @@ beam_pen:=penrazor scaled beamheight rotated 90;
 
 % mimic taupin-SLOPES for now -- because lily knows them
 ELEM_TAN:=0.05;
-SLOPES:=10;
-LENGTHS:=5;
-ELEM_LEN:=2;
+SLOPES:=20;
+LENGTHS:=6;
+ELEM_FACTOR := 2;
+ELEM_INITIAL_LEN:=2;
 
-% fake char for tables; will be overwritten by mf
-% misuse breapth for minimum length (mf-to-table negates breapth again)
-fet_beginchar(code+1,ELEM_LEN**LENGTHS,0,0,-ELEM_LEN,"Beamslopes up","uslope","beamuslope{%}{%}");
-	endchar;
 
 % Beamslopes up
-for i:=1 upto SLOPES:
-	width:=ELEM_LEN;
+for i := -SLOPES upto SLOPES:
+	width:= ELEM_INITIAL_LEN;
 	for j:=1 upto LENGTHS:
-		beginchar(incr code,width,0,0);
+		beginchar(128 + i * LENGTHS + j -1 ,width,0,0);
 			pickup beam_pen;
 			draw origin--(lft w,w*i*ELEM_TAN);
 			endchar;
-		width:=2*width;
-		endfor;
-	endfor;
-
-% fake char for tables; will be overwritten by mf
-% misuse breapth for minimum length (mf-to-table negates breapth again)
-fet_beginchar(code+1,ELEM_LEN**LENGTHS,0,0,-ELEM_LEN,"Beamslopes down","dslope","beamdslope{%}{%}");
-	endchar;
-
-% Beamslopes down
-for i:=1 upto SLOPES:
-	width:=ELEM_LEN;
-	for j:=1 upto LENGTHS:
-		beginchar(incr code,width,0,0);
-			pickup beam_pen;
-			draw origin--(lft w,-w*i*ELEM_TAN);
-			endchar;
-		width:=2*width;
+		width:=ELEM_FACTOR *width;
 		endfor;
 	endfor;
-
-% fake char for tables
-fet_beginchar(code+1*SLOPES*LENGTHS,0,0,0,0,"Horizontal beams","horizontal","rulesym{%}{%}");
-	endchar;
-	
-fet_endgroup("beamslopes");
-
diff --git a/tex/dyn10.tex b/tex/dyn10.tex
index 3d9a26df80..dce4aeab11 100644
--- a/tex/dyn10.tex
+++ b/tex/dyn10.tex
@@ -1,4 +1,4 @@
-% generated at Fri Sep 26 09:25:28 1997 from out/dyn10.log
+% generated at Fri Sep 26 14:26:49 1997 from out/dyn10.log
 % changes will be lost
 
 % dyn
diff --git a/tex/fetdefs.tex b/tex/fetdefs.tex
index 39c7e36418..857f5121c1 100644
--- a/tex/fetdefs.tex
+++ b/tex/fetdefs.tex
@@ -3,9 +3,11 @@
 
 \def\fetsixteendefs{
         \font\fontentja=font-en-tja16
+        \font\vetfont=vette-beams16
 }
 \def\fettwentydefs{
-	\font\fontentja=font-en-tja20
+        \font\fontentja=font-en-tja20
+        \font\vetfont=vette-beams20
 }
 
 % \def\fetdef#1#2{\def#1{\fetchar{#2}}}
@@ -15,14 +17,6 @@
 
 \input font-en-tja20
 
-\def\beamuslope#1#2{{\count0=#2\advance\count0 by#1
-        \advance\count0 by \beamuslopestart
-	% huh?? -- think i followed taupin beam convention
-	% is lily confused?
-	\advance\count0 by -8
-        \fetchar\count0}}
-\def\beamdslope#1#2{{\count0=#2\advance\count0 by#1
-        \advance\count0 by \beamdslopestart
-	% huh??
-	\advance\count0 by -8
-        \fetchar\count0}}
+\def\beamslope#1#2{{\count0=#2\advance\count0 by#1
+        \advance\count0by128
+        {\vetfont\char\count0}}}
diff --git a/tex/font-en-tja16.tex b/tex/font-en-tja16.tex
index 3419d253d6..f48b24729e 100644
--- a/tex/font-en-tja16.tex
+++ b/tex/font-en-tja16.tex
@@ -1,4 +1,4 @@
-% generated at Fri Sep 26 09:25:30 1997 from out/font-en-tja16.log
+% generated at Mon Sep 29 11:32:20 1997 from out/font-en-tja16.log
 % changes will be lost
 
 % font-en-tja
@@ -17,8 +17,7 @@
 \fetdef\sixtyfourthrest{9}
 \fetdef\hundredtwentyeighthrest{10}
 
-% beamslopes
-\def\beamuslopestart{11}
-\def\beamdslopestart{61}
-\def\rulesymstart{160}
+% foobars
+\fetdef\sharp{11}
+\fetdef\natural{12}
 
diff --git a/tex/font-en-tja20.tex b/tex/font-en-tja20.tex
index 2dd7bb4ad9..bee8faec97 100644
--- a/tex/font-en-tja20.tex
+++ b/tex/font-en-tja20.tex
@@ -1,4 +1,4 @@
-% generated at Fri Sep 26 09:25:32 1997 from out/font-en-tja20.log
+% generated at Mon Sep 29 11:32:24 1997 from out/font-en-tja20.log
 % changes will be lost
 
 % font-en-tja
@@ -17,8 +17,7 @@
 \fetdef\sixtyfourthrest{9}
 \fetdef\hundredtwentyeighthrest{10}
 
-% beamslopes
-\def\beamuslopestart{11}
-\def\beamdslopestart{61}
-\def\rulesymstart{160}
+% foobars
+\fetdef\sharp{11}
+\fetdef\natural{12}
 
diff --git a/tex/lilyponddefs.tex b/tex/lilyponddefs.tex
index 20986c443f..319d45f2f7 100644
--- a/tex/lilyponddefs.tex
+++ b/tex/lilyponddefs.tex
@@ -66,7 +66,6 @@
         \balkheight=20pt
         \notewidth=7.15pt
         \noteheight=5pt
-        \staffrulethickness=0.4pt
         \musixtwentyfonts
         \font\textmusic=cmmi12
         \musixcalc
@@ -74,7 +73,6 @@
 
 \def\musixsixteendefs{
         \balkheight=16pt
-        \staffrulethickness=0.4pt
         \notewidth=5.93pt
         \noteheight=4pt
         \musixsixteenfonts
@@ -97,6 +95,10 @@
         \smallspace=.3\interlinedist
         \interstaffrule=\balkheight
         \divide\interstaffrule by 4
+
+        %  [D.K.Roush & J.S.Gourlay] say this should be 0.072
+        % We know better
+        \staffrulethickness=0.1\interlinedist
 }
 
 
diff --git a/tex/taupindefs.tex b/tex/taupindefs.tex
index 4a47f9dcc8..12080f171a 100644
--- a/tex/taupindefs.tex
+++ b/tex/taupindefs.tex
@@ -1,4 +1,3 @@
-\input fetdefs
 \def\musixtwentyfonts{
         \font\normaltextfont=cmr10 %\textfont is a primitive
         \font\smalltextfont=cmr8
@@ -135,3 +134,5 @@
 %         \advance\count0 by 186
 %         \musicfnt\char\count0}}
 
+
+\input fetdefs
diff --git a/tex/vette-beams16.tex b/tex/vette-beams16.tex
new file mode 100644
index 0000000000..55fc84888e
--- /dev/null
+++ b/tex/vette-beams16.tex
@@ -0,0 +1,3 @@
+% generated at Fri Sep 26 15:26:29 1997 from out/vette-beams16.log
+% changes will be lost
+
diff --git a/tex/vette-beams20.tex b/tex/vette-beams20.tex
new file mode 100644
index 0000000000..438f27e89a
--- /dev/null
+++ b/tex/vette-beams20.tex
@@ -0,0 +1,3 @@
+% generated at Fri Sep 26 15:26:46 1997 from out/vette-beams20.log
+% changes will be lost
+
-- 
2.39.5