From 0c27bf23e1a814dfd461f14119f40a5a9fba7d93 Mon Sep 17 00:00:00 2001
From: Jan Nieuwenhuizen <janneke@gnu.org>
Date: Thu, 25 Sep 1997 11:56:09 +0200
Subject: [PATCH] patch::: 0.1.17.jcn1: pats

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
---
 NEWS                       |  17 +++-
 VERSION                    |   2 +-
 bin/convert-mudela.in      |   4 +-
 bin/mf-to-table.in         |  65 +++++++++-----
 init/dyn10.ly              |   3 +-
 init/font-en-tja16.ly      |  19 ++--
 init/font-en-tja20.ly      |  19 ++--
 input/font.ly              |   5 +-
 make/Toplevel.make.in      |   4 +-
 mf/Makefile                |  26 +++---
 mf/bolletjes.mf            |  33 ++++---
 mf/eindelijk.mf            | 178 +++++++++++++++++++++++++++++++++++++
 mf/font-en-tja16.mf        |   1 +
 mf/font-en-tja20.mf        |   1 +
 mi2mu/midi-track-parser.cc |  12 ++-
 mi2mu/mudela-item.cc       |   1 +
 tex/dyn10.tex              |   4 +
 tex/fetdefs.tex            |  12 +--
 tex/font-en-tja16.tex      |  19 ++++
 tex/font-en-tja20.tex      |  19 ++++
 tex/taupindefs.tex         |  19 ++--
 21 files changed, 378 insertions(+), 85 deletions(-)
 create mode 100644 mf/eindelijk.mf
 create mode 100644 tex/dyn10.tex
 create mode 100644 tex/font-en-tja16.tex
 create mode 100644 tex/font-en-tja20.tex

diff --git a/NEWS b/NEWS
index 296386883b..3dbecdea57 100644
--- a/NEWS
+++ b/NEWS
@@ -1,10 +1,23 @@
+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
+ 
 pl 17
 	- bf: ledgerline width
 	- bf: toccata-fuga-E
 	- took out some hardwiring of tex-beam
 	
-pl 16.jcn2
-	- mf-to-table.in: generate mozarella metric info tables
+pl 16.jcn1
+  	- mf-to-table.in: generate mozarella metric info tables
 	- autometric.mf: write metric info to mf logfile
 	- ital-r.mf, smaller ital-m.mf
 	- variable streepjes length (top/bottomlines); fixed (for 20pt?)
diff --git a/VERSION b/VERSION
index fabc29c721..c7e2cb0a84 100644
--- a/VERSION
+++ b/VERSION
@@ -3,4 +3,4 @@ TOPLEVEL_MINOR_VERSION = 1
 TOPLEVEL_PATCH_LEVEL = 17
 
 # use to send patches, always empty for released version:
-TOPLEVEL_MY_PATCH_LEVEL = 
+TOPLEVEL_MY_PATCH_LEVEL = .jcn1
diff --git a/bin/convert-mudela.in b/bin/convert-mudela.in
index 1efde362a5..8b05c1561a 100644
--- a/bin/convert-mudela.in
+++ b/bin/convert-mudela.in
@@ -254,10 +254,8 @@ sub  set_files
     if ($ARGV [0])  {
 	$infile = $ARGV[0];
     } 
-    if (( ! -f $infile) && (! $infile =~ /\\.ly$/s ) ){
+    if (!(-f $infile) && !($infile =~ /\.ly$/s)) {
 	$infile .= ".ly";
-	
-
     }
     if ($opt_edit && $infile ne "-") {
 	$opt_edit = 1;
diff --git a/bin/mf-to-table.in b/bin/mf-to-table.in
index 17a7c2f7a8..dbca26c004 100644
--- a/bin/mf-to-table.in
+++ b/bin/mf-to-table.in
@@ -9,7 +9,7 @@ Ugh . Perl sux. Anybody for Python?
     
 =cut    
 
-$mf_to_table_version = 0.1;
+$mf_to_table_version = 0.2;
 
 use Getopt::Long;
 
@@ -30,32 +30,38 @@ sub usage
     . "Generate mozarella metrics table from preparated metafont log\n\n"
     . "Options:\n"
     . "  -h, --help             print this help\n"
-    . "  -o, --output=FILE      name output file\n"
+    . "  -l, --ly=FILE          name output table\n"
+    . "  -t, --tex=FILE         name output tex chardefs\n"
 }
 
 sub make_table
 {
     my $line;
     my $indent = 0;
+    my $lineno=0;
     while ($line = <IN>) {
+    	$lineno++;
 	if ($line =~ /^@@/) {
 	    $line =~ s/^@@(.*)@@/$1/;
 	    chop ($line);
 	    my @fields = split (/:/,$line);
 	    my $label = $fields [0];
 	    my $name = $fields [1];
-	    print OUT "\t" x $indent;
+	    print OUTLY "\t" x $indent;
 	    if ($label eq "font") {
-		print OUT "% $name=\\symboltables {\n";
+		print OUTLY "% $name=\\symboltables {\n";
+		print OUTTEX "% $name\n";
 		$indent++;
 	    } elsif ($label eq "group") {
-		print OUT "\"$name\" = \\table {\n";
+		print OUTLY "\"$name\" = \\table {\n";
+		print OUTTEX "% $name\n";
 		$indent++;
 	    } elsif ($label eq "puorg") {
-		print OUT "}\n";
+		print OUTLY "}\n";
+		print OUTTEX "\n";
 		$indent--;
 	    } elsif ($label eq "tnof") {
-		print OUT "%  } % $name\n";
+		print OUTLY "%  } % $name\n";
 		$indent--;
 	    } elsif ($label eq "char") {
 		my $c = $fields [2];
@@ -64,9 +70,10 @@ sub make_table
 		my $d = $fields [5];
 		my $id = $fields [6];
 		my $texstr = $fields [7];
-		print OUT sprintf( "\"%s\"\t\"\\%s\"\t%.2f\\pt\t%.2f\\pt\t%.2f\\pt\t%.2f\\pt\n", $id, $texstr, 0, $w, $h, $d );
+		print OUTLY sprintf( "\"%s\"\t\"\\%s\"\t%.2f\\pt\t%.2f\\pt\t%.2f\\pt\t%.2f\\pt\n", $id, $texstr, 0, $w, $h, $d );
+		print OUTTEX sprintf( "\\fetdef\\%s{%d}\n", $texstr, $c);
 	    } else {
-	    	print STDERR "mf-to-table: unknown label: \`$label\'\n";
+	    	print STDERR "mf-to-table: $lineno: unknown label: \`$label\'\n";
 	    }
 	}
     }
@@ -74,16 +81,28 @@ sub make_table
       
 sub  set_files 
 {
-    $infile = "-";
-    $outfile = "-";
-    $outfile = $opt_output if (defined($opt_output));
-
     if ($ARGV [0])  {
 	$infile = $ARGV[0];
     } 
-    if (( ! -f $infile) && (! $infile =~ /\\.log$/s ) ){
+    if (!(-f $infile) && !($infile =~ /\.log$/s )) {
 	$infile .= ".log";
     }
+
+    if (defined($opt_ly)) {
+    	$lyfile = $opt_ly;
+    }
+    else {
+    	$lyfile = $infile;
+	$lyfile =~ s/\.log$/.ly/;
+    }
+    if (defined($opt_tex)) {
+	$texfile = $opt_tex;
+    }
+    else {
+    	$texfile = $infile;
+	$texfile =~ s/\.log$/.tex/;
+    }
+
     print STDERR "Input ", (($infile eq "-") ?"STDIN" : $infile), " .. \n";
 }
 
@@ -92,14 +111,20 @@ sub do_one_arg
     set_files;
 
     die "can't open \`$infile\'" unless open IN,$infile ;
-    die "can't open \`$outfile\'" unless open OUT, ">$outfile";
-    print OUT "% generated at " . localtime() . " from $infile\n";
-    print OUT "% changes will be lost\n";
+
+    die "can't open \`$lyfile\'" unless open OUTLY, ">$lyfile";
+    print OUTLY "% generated at " . localtime() . " from $infile\n";
+    print OUTLY "% changes will be lost\n\n";
+
+    die "can't open \`$texfile\'" unless open OUTTEX, ">$texfile";
+    print OUTTEX "% generated at " . localtime() . " from $infile\n";
+    print OUTTEX "% changes will be lost\n\n";
     
     make_table;
 
     close IN;
-    close OUT;
+    close OUTLY;
+    close OUTTEX;
 }
 
 ## "main"
@@ -107,7 +132,7 @@ sub do_one_arg
 identify;
 
 #GetOptions ("help", "output=s", "from=i", "to=i", "minor=i", "edit", "show-rules");
-GetOptions ("help", "output=s");
+GetOptions ("help", "ly=s", "tex=s");
 
 if ($opt_help) {
     usage();
@@ -115,7 +140,7 @@ if ($opt_help) {
     exit 0;
 }
 
-local ($infile,$outfile);
+local ($infile,$lyfile,$texfile);
 my $processed_one=0;
 
 while (defined($ARGV[0])) {
diff --git a/init/dyn10.ly b/init/dyn10.ly
index 6819259da4..b0697a1e61 100644
--- a/init/dyn10.ly
+++ b/init/dyn10.ly
@@ -1,4 +1,5 @@
-% generated at Mon Sep 22 21:28:05 1997 from out/dyn10.log
+% generated at Thu Sep 25 01:22:50 1997 from out/dyn10.log
 % changes will be lost
+
 % dyn=\symboltables {
 	%  } % dyn
diff --git a/init/font-en-tja16.ly b/init/font-en-tja16.ly
index 906985ce02..905ba2cf9a 100644
--- a/init/font-en-tja16.ly
+++ b/init/font-en-tja16.ly
@@ -1,11 +1,20 @@
-% generated at Mon Sep 22 22:26:51 1997 from out/font-en-tja16.log
+% generated at Thu Sep 25 01:22:51 1997 from out/font-en-tja16.log
 % changes will be lost
+
 % font-en-tja=\symboltables {
 	"balls" = \table {
 		"0"	"\wholeball"	0.00\pt	8.64\pt	4.80\pt	0.00\pt
-		"1"	"\halfball"	0.00\pt	5.97\pt	4.80\pt	0.00\pt
-		"2"	"\quartball"	0.00\pt	5.88\pt	4.80\pt	0.00\pt
-		"-1"	"\breveball"	0.00\pt	9.60\pt	4.80\pt	0.00\pt
-		"-2"	"\longaball"	0.00\pt	9.60\pt	4.80\pt	0.00\pt
+		"1"	"\halfball"	0.00\pt	6.01\pt	4.80\pt	0.00\pt
+		"2"	"\quartball"	0.00\pt	5.76\pt	4.80\pt	0.00\pt
+		"-1"	"\breveball"	0.00\pt	8.00\pt	4.00\pt	0.00\pt
+		"-2"	"\longaball"	0.00\pt	8.00\pt	4.00\pt	0.00\pt
+		}
+	"almostrests" = \table {
+		"4"	"\quartrest"	0.00\pt	4.00\pt	16.00\pt	0.00\pt
+		"-2"	"\eighthrest"	0.00\pt	5.33\pt	7.47\pt	0.00\pt
+		"-2"	"\sixteenthrest"	0.00\pt	5.33\pt	11.47\pt	0.00\pt
+		"-2"	"\thirtysecondrest"	0.00\pt	5.33\pt	15.47\pt	0.00\pt
+		"-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
 		}
 	%  } % font-en-tja
diff --git a/init/font-en-tja20.ly b/init/font-en-tja20.ly
index c5e308b694..cabba87281 100644
--- a/init/font-en-tja20.ly
+++ b/init/font-en-tja20.ly
@@ -1,11 +1,20 @@
-% generated at Mon Sep 22 22:28:11 1997 from out/font-en-tja20.log
+% generated at Thu Sep 25 01:22:52 1997 from out/font-en-tja20.log
 % changes will be lost
+
 % font-en-tja=\symboltables {
 	"balls" = \table {
 		"0"	"\wholeball"	0.00\pt	10.44\pt	5.80\pt	0.00\pt
-		"1"	"\halfball"	0.00\pt	7.21\pt	5.80\pt	0.00\pt
-		"2"	"\quartball"	0.00\pt	7.10\pt	5.80\pt	0.00\pt
-		"-1"	"\breveball"	0.00\pt	11.60\pt	5.80\pt	0.00\pt
-		"-2"	"\longaball"	0.00\pt	11.60\pt	5.80\pt	0.00\pt
+		"1"	"\halfball"	0.00\pt	7.26\pt	5.80\pt	0.00\pt
+		"2"	"\quartball"	0.00\pt	6.97\pt	5.80\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
 		}
 	%  } % font-en-tja
diff --git a/input/font.ly b/input/font.ly
index 4e3a499da1..1a1cd0b9bc 100644
--- a/input/font.ly
+++ b/input/font.ly
@@ -10,13 +10,14 @@ TestedFeatures	font-en-tja
 	\melodic{ 
 		\octave c';
 		\meter 4/4;
-		% \longa
-		% \breve % \brevis
+		a\longa
+		a\breve
 		c1 g c' a'
 		c2 g c' a'
 		c4 g c' a'
 		a\ppp a\pp a\p a\mp a\mf a\f a\ff a\fff
 		a\fp a\sf a\sfz % a\fz a\rf
+		r1 r2 r4 r8 r16 r32 r64 r128
 	}
 	\paper{ 
 	    \paper_twenty
diff --git a/make/Toplevel.make.in b/make/Toplevel.make.in
index 5de434c161..e472fde411 100644
--- a/make/Toplevel.make.in
+++ b/make/Toplevel.make.in
@@ -27,8 +27,8 @@ include ./$(depth)/make/Variables.make
 
 # descent order into subdirectories:
 #
-SUBDIRS = bin flower lib lily mf mi2mu \
-	Documentation init input tex make
+SUBDIRS = flower lib lily mf mi2mu \
+	Documentation bin init input tex make
 #
 
 # list of distribution files:
diff --git a/mf/Makefile b/mf/Makefile
index 556d777dd7..42acbad8f9 100644
--- a/mf/Makefile
+++ b/mf/Makefile
@@ -16,22 +16,24 @@ EXTRA_DISTFILES = $(MFFILES) $(TEXFILES) TODO
 #
 
 FONT_FILES = $(wildcard *[0-9].mf)
-tableout = $(depth)/init
-TABLES = $(addprefix $(tableout)/, $(FONT_FILES:.mf=.ly))
+lyout = $(depth)/init
+texout = $(depth)/tex
+LYTABLES = $(addprefix $(lyout)/, $(FONT_FILES:.mf=.ly))
+TEXTABLES = $(addprefix $(texout)/, $(FONT_FILES:.mf=.tex))
 #
 
-all: $(TABLES)
+all: $(LYTABLES) $(TEXTABLES)
 
-# localclean:
-# 	rm -f $(TABLES)
+localclean:
+	rm -f $(LYTABLES) $(TEXTABLES)
 
 $(outdir)/%.log: %.mf
 	mf $<
 	mv $(@F) $@
 	rm $(shell basename $< .mf).*gf
 
-$(tableout)/%.ly: $(outdir)/%.log
-	mf-to-table -o $@ $<
+$(lyout)/%.ly $(texout)/%.tex: $(outdir)/%.log
+	mf-to-table -l $(lyout)/$(<F:.log=.ly) -t $(texout)/$(<F:.log=.tex) $<
 	
 localinstall:
 	$(INSTALL) -d $(MFDIR)/lilypond
@@ -43,9 +45,13 @@ localuninstall:
 
 # dependencies:
 #
-$(tableout)/dyn10.ly: autometric.mf ital-f.mf ital-m.mf ital-p.mf ital-r.mf ital-s.mf ital-z.mf dyn10.mf
-$(tableout)/font-en-tja16.ly: autometric.mf bolletjes.mf font-en-tja16.mf
-$(tableout)/font-en-tja20.ly: autometric.mf bolletjes.mf font-en-tja20.mf
+$(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
+$(lyout)/font-en-tja20.ly: autometric.mf bolletjes.mf eindelijk.mf font-en-tja20.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
+$(texout)/font-en-tja20.tex: autometric.mf bolletjes.mf eindelijk.mf font-en-tja20.mf
 #
 
 
diff --git a/mf/bolletjes.mf b/mf/bolletjes.mf
index 9d7052d0c2..fadb1683cd 100644
--- a/mf/bolletjes.mf
+++ b/mf/bolletjes.mf
@@ -4,9 +4,10 @@
 % most beautiful bolletjes are pronounced, not circular, 
 % and not even symmetric.
 
-% interline#:=staffsize#/(stafflines-1)+stafflinethickness#;
+interline#:=staffsize#/(stafflines-1);
+%noteheight#:=interline#;
 % even more pronounced (almost overdone), just like the original
-interline#:=staffsize#/(stafflines-1)+2stafflinethickness#;
+noteheight#:=interline#+2stafflinethickness#;
 
 def test_grid =
 if test>1:
@@ -34,9 +35,9 @@ def begin_notehead =
 	save b_h,a_w;
 	enddef;
 
-def end_notehead(expr code,interline,name,id,texstr) =
+def end_notehead(expr code,height,name,id,texstr) =
 	save a,b,h,w,ai,bi;
-	h#=interline;
+	h#=height;
 	2b#=h#*b_h;
 	a#=b#*a_b;
 	w#=2a#/a_w;
@@ -79,16 +80,19 @@ begin_notehead;
 	alpha:=0;
 	super:=0.707;
 	ai_a:=0.508;
-	ai_bi:=1.23;
+	% ai_bi:=1.23;
+	ai_bi:=1.30; % jcn
 	% err_y_ai:=0.0938;
 	% err_x_bi:=0;
 	err_y_ai:=0;
 	err_x_bi:=0.115;
-	alphai:=135;
-	superi:=0.69;
+	% alphai:=135;
+	alphai:=125; % jcn
+	% superi:=0.69;
+	superi:=0.68; % jcn
 	b_h:=1; %no rotate-> no height correction
 	a_w:=1; % no rotate-> no width correction
-	end_notehead(incr code,interline#,"Whole notehead","0","wholeball");
+	end_notehead(incr code,noteheight#,"Whole notehead","0","wholeball");
 
 % half note
 % Wanske, p.39
@@ -97,16 +101,19 @@ begin_notehead;
 	a_b:=1.50; % after drawing
 	err_y_a:=0.157;
 	alpha:=34;
-	super:=0.66;
-	ai_a:=0.863;
-	ai_bi:=3.14;
+	% super:=0.66;
+	super:=0.67; % jcn
+	% ai_a:=0.863;
+	ai_a:=0.850; % jcn
+	% ai_bi:=3.14;
+	ai_bi:=3.30; % jcn
 	err_y_ai:=0;
 	err_x_bi:=-0.12;
 	alphai:=alpha;
 	superi:=0.80;
 	b_h:=0.935;
 	a_w:=1.12;
-	end_notehead(incr code,interline#,"Half notehead","1","halfball");
+	end_notehead(incr code,noteheight#,"Half notehead","1","halfball");
 
 % quarter note
 % Wanske p.38
@@ -124,7 +131,7 @@ begin_notehead;
 	superi:=0.707;
 	b_h:=0.85;
 	a_w:=1.09;
-	end_notehead(incr code,interline#,"Quarter notehead","2","quartball");
+	end_notehead(incr code,noteheight#,"Quarter notehead","2","quartball");
 
 % from MO*gen.mf
 lthick:=.4pt;
diff --git a/mf/eindelijk.mf b/mf/eindelijk.mf
new file mode 100644
index 0000000000..ff2dc89d73
--- /dev/null
+++ b/mf/eindelijk.mf
@@ -0,0 +1,178 @@
+% eindelijk.mf
+% LilyPond's own rest(s)
+
+define_pixels(interline);
+define_pixels(stafflinethickness);
+% MO*TeX stuff
+nhh#:=interline#;
+nhw#:=6/5*interline#;
+define_pixels(nhh,nhw);
+
+
+
+med#:=1/33designsize;
+thick#:=1/16designsize;
+define_blacker_pixels(med,thick);
+pen med_pen;
+med_pen:= pencircle scaled med;
+
+rthin:=1/8interline;
+% rthick:=2rthin;
+rthick:=2thick+rthin;
+
+def shift_pic (expr pone, ptwo) =
+  currentpicture:=currentpicture shifted (round(pone),round(ptwo))
+enddef;
+
+% ugh, dunno how to generate doubles "outside*" rests?
+fet_begingroup("almostrests");
+
+% stem#:=1/8interline#;
+stem#:=1/5interline#;
+flare#:=2/3interline#;
+define_pixels(stem,flare);
+
+fet_beginchar(incr code,interline#,4interline#,0,"Quarter rest","4","quartrest");
+	alpha:=-50;
+	penpos1(rthin,alpha+90);
+	penpos2(5/4rthick,alpha);
+	penpos4(5/4rthick,alpha);
+	penpos3(3/4rthick,alpha);
+	penpos6(rthin,alpha-20);
+	penpos7(4/3thick,alpha);
+	penpos8(rthin,-10);
+	y1l=7/2nhh; x1l=1/3nhh;
+	z2r=z1+(nhh*right) rotated alpha;
+	z3=1/2[z2,z4];
+	x4=3/8nhh; y4=2nhh;
+	z6=z4l+(5/4nhh*right) rotated alpha;
+	x7l=x4l; y7r=y6l;
+	x8=1/3nhw; y8= nhh-1/4nhh;
+	z5=z6r shifted (sqrt(2)*rthin/4,sqrt(2)*rthin/4);
+
+	pickup penrazor scaled rthin rotated 45;
+	draw z1--z2r; 
+	draw z4l--z5;
+	penstroke z2e..z3e..z4e;
+	penstroke z6e..tension1.4..z7e..tension1.4..z8e;
+	penlabels(1,2,3,4,5,6,7,8);
+	endchar;
+
+def crook(expr a,w) =
+	begingroup;
+	save x,y;
+	penpos1(flare/2,-90);
+	penpos2(flare/2,0);
+	penpos3(flare/2,90);
+	penpos4(flare/2,180);
+	x4r=xpart a-w; y3r=ypart a+flare/4;
+	x1l=x2l=x3l=x4l;
+	y1l=y2l=y3l=y4l;
+	penpos5(stem,250);
+	x5=x4r+9/8flare; y5r=y1r;
+	penpos6(stem,260);
+	x6l=xpart a; y6l=ypart a;
+	penstroke z1e..z2e..z3e..z4e..z1e..z5e{right}..z6e;
+	penlabels(1,2,3,4,5,6);
+	endgroup;
+	enddef;
+
+def brush(expr a,w,b,v) =
+	begingroup;
+	save x,y;
+	z1=a; z2=b;
+	penpos3(w,angle(z2-z1)+90);
+	penpos4(w,angle(z2-z1));
+	penpos5(v,angle(z1-z2)+90);
+	penpos6(v,angle(z1-z2));
+	x3=x4=x1; y3=y4=y1;
+	x5=x6=x2; y5=y6=y2;
+	fill z3r{z1-z2}..z4l..{z2-z1}z3l..z5r{z2-z1}..z6l..{z1-z2}z5l..cycle;
+	penlabels(1,2,3,4,5,6);
+	endgroup;
+	enddef;
+
+fet_beginchar(incr code,4/3interline#,5/3interline#+2stafflinethickness#,0,"8th rest","-2","eighthrest");
+	save x,y;
+	x1=w-stem/6; y1=h-flare/4;
+	crook (z1,w-stem/6);
+	z2-z1=whatever*dir70;
+	y2=stem/2;
+	brush (z1,stem/3,z2,stem);
+	% ugh
+	currentpicture:=currentpicture shifted (0,interline);
+%	currentpicture:=currentpicture shifted (0,interline+2stafflinethickness);
+	endchar;
+
+fet_beginchar(incr code,4/3interline#,5/3interline#+interline#+2stafflinethickness#,0,"16th rest","-2","sixteenthrest");
+	save x,y;
+	x1=w-stem/6; y1=h-flare/4;
+	z2-z1=whatever*dir74;
+	y2=stem/2;
+	brush (z1,stem/2,z2,stem);
+	crook (z1,7/8w);
+	z3-z1=whatever*dir74;
+	y3=y1-interline;
+	crook (z3,7/8w);
+%	currentpicture:=currentpicture shifted (0,2stafflinethickness);
+	endchar;
+
+fet_beginchar(incr code,4/3interline#,5/3interline#+2interline#+2stafflinethickness#,0,"32th rest","-2","thirtysecondrest");
+	save x,y;
+	x1=w-stem/6; y1=h-flare/4;
+	z2-z1=whatever*dir76;
+	y2=stem/2;
+	brush (z1,stem/2,z2,stem);
+	crook (z1,7/8w);
+	z3-z1=whatever*dir76;
+	y3=y1-interline;
+	crook (z3,7/8w);
+	z4-z1=whatever*dir76;
+	y4=y1-2interline;
+	crook (z4,7/8w);
+%	currentpicture:=currentpicture shifted (0,2stafflinethickness);
+	endchar;
+
+fet_beginchar(incr code,4/3interline#,5/3interline#+3interline#+2stafflinethickness#,0,"64th rest","-2","sixtyfourthrest");
+	save x,y;
+	x1=w-stem/6; y1=h-flare/4;
+	z2-z1=whatever*dir78;
+	y2=stem/2;
+	brush (z1,stem/2,z2,stem);
+	crook (z1,7/8w);
+	z3-z1=whatever*dir78;
+	y3=y1-interline;
+	crook (z3,7/8w);
+	z4-z1=whatever*dir78;
+	y4=y1-2interline;
+	crook (z4,7/8w);
+	z5-z1=whatever*dir78;
+	y5=y1-3interline;
+	crook (z5,7/8w);
+%	currentpicture:=currentpicture shifted (0,2stafflinethickness);
+	endchar;
+
+fet_beginchar(incr code,4/3interline#,5/3interline#+4interline#+2stafflinethickness#,0,"128th rest","-2","hundredtwentyeighthrest");
+	save x,y;
+	x1=w-stem/6; y1=h-flare/4;
+	z2-z1=whatever*dir80;
+	y2=stem/2;
+	brush (z1,stem/2,z2,stem);
+	crook (z1,7/8w);
+	z3-z1=whatever*dir80;
+	y3=y1-interline;
+	crook (z3,7/8w);
+	z4-z1=whatever*dir80;
+	y4=y1-2interline;
+	crook (z4,7/8w);
+	z5-z1=whatever*dir80;
+	y5=y1-3interline;
+	crook (z5,7/8w);
+	z6-z1=whatever*dir80;
+	y6=y1-4interline;
+	crook (z6,7/8w);
+%	currentpicture:=currentpicture shifted (0,2stafflinethickness);
+	endchar;
+
+fet_endgroup("rests");
+
diff --git a/mf/font-en-tja16.mf b/mf/font-en-tja16.mf
index aa75cc4d16..c4bec4c8b9 100644
--- a/mf/font-en-tja16.mf
+++ b/mf/font-en-tja16.mf
@@ -17,6 +17,7 @@ stafflinethickness#:=0.4pt#;
 code:=-1;
 
 input bolletjes;
+input eindelijk;
 
 fet_endfont("font-en-tja");
 
diff --git a/mf/font-en-tja20.mf b/mf/font-en-tja20.mf
index f7dcf17232..f58aedfb62 100644
--- a/mf/font-en-tja20.mf
+++ b/mf/font-en-tja20.mf
@@ -15,6 +15,7 @@ stafflinethickness#:=0.4pt#;
 code:=-1;
 
 input bolletjes;
+input eindelijk;
 
 fet_endfont("font-en-tja");
 
diff --git a/mi2mu/midi-track-parser.cc b/mi2mu/midi-track-parser.cc
index 028c3face3..b7472aab85 100644
--- a/mi2mu/midi-track-parser.cc
+++ b/mi2mu/midi-track-parser.cc
@@ -51,6 +51,8 @@ Midi_track_parser::note_end (Mudela_column* col_l, int channel_i, int pitch_i, i
   // junk dynamics
   (void)aftertouch_i;
 
+  assert (col_l);
+
   for (PCursor<Mudela_note*> i (open_note_l_list_.top ()); i.ok (); i++) 
     {
       if ((i->pitch_i_ == pitch_i) && (i->channel_i_ == channel_i)) 
@@ -72,12 +74,13 @@ void
 Midi_track_parser::note_end_all (Mudela_column* col_l) 
 {
   // find 
-  for  (PCursor<Mudela_note*> i (open_note_l_list_.top ()); i.ok (); i++) 
+  assert (col_l);
+  for (PCursor<Mudela_note*> i (open_note_l_list_.top ()); i.ok (); i++) 
     {
       i->end_column_l_ = col_l;
       i.remove_p();
       // ugh
-      if  (!i.ok())
+      if (!i.ok())
 	break;
     }
 }
@@ -96,6 +99,9 @@ Midi_track_parser::parse (Mudela_column* col_l)
   if (!eot())
     return 0;
 
+  // vangnet
+  note_end_all (col_l);
+
   Mudela_staff* p = mudela_staff_p_;
   mudela_staff_p_ = 0;
   return p;
@@ -265,7 +271,7 @@ Midi_track_parser::parse_event (Mudela_column* col_l)
 	    {
 	      next_byte ();
 	      unsigned useconds_per_4_u = get_u (3);
-	      // $$ = new Mudela_tempo ( ($2 << 16) +  ($3 << 8) + $4);
+	      // $$ = new Mudela_tempo ( ($2 << 16) + ($3 << 8) + $4);
 	      // LOGOUT (DEBUG_ver) << $$->str() << endl;
 	      Mudela_tempo* p = new Mudela_tempo ( useconds_per_4_u );
 	      item_p = p;
diff --git a/mi2mu/mudela-item.cc b/mi2mu/mudela-item.cc
index 7a69984b9a..cc7bacdfa5 100644
--- a/mi2mu/mudela-item.cc
+++ b/mi2mu/mudela-item.cc
@@ -175,6 +175,7 @@ Mudela_note::duration_mom ()
 {
 // ugh
 //    return Duration_convert::dur2_mom (duration ());
+  assert (end_column_l_);
   return end_column_l_->at_mom () - at_mom ();
 }
 
diff --git a/tex/dyn10.tex b/tex/dyn10.tex
new file mode 100644
index 0000000000..b63ddfb36e
--- /dev/null
+++ b/tex/dyn10.tex
@@ -0,0 +1,4 @@
+% generated at Thu Sep 25 01:22:50 1997 from out/dyn10.log
+% changes will be lost
+
+% dyn
diff --git a/tex/fetdefs.tex b/tex/fetdefs.tex
index 7ec690ab1f..049a3a59e7 100644
--- a/tex/fetdefs.tex
+++ b/tex/fetdefs.tex
@@ -3,19 +3,11 @@
         \font\fontentja=font-en-tja16
 }
 \def\fettwentydefs{
-  \font\fontentja=font-en-tja20
+	\font\fontentja=font-en-tja20
 }
 
-
 % \def\fetdef#1#2{\def#1{\fetchar{#2}}}
 % ugh, linewidth, ugh, tablexx.ly balldims not used!
 \def\fetdef#1#2{\def#1{\lower.5\staffrulethickness\hbox{\fetchar{#2}}}}
 \def\fetchar#1{\fontentja\char#1}
-\fetdef\quartball{'002}
-\fetdef\halfball{'001}
-\fetdef\wholeball{'000}
-% \fetdef\breveball{'003}
-% \fetdef\longaball{'004}
-% \musicdef\quartball{'007}
-% \musicdef\halfball{'010}
-% \musicdef\wholeball{'011}
+\input font-en-tja20
diff --git a/tex/font-en-tja16.tex b/tex/font-en-tja16.tex
new file mode 100644
index 0000000000..3e3f447680
--- /dev/null
+++ b/tex/font-en-tja16.tex
@@ -0,0 +1,19 @@
+% generated at Thu Sep 25 01:22:51 1997 from out/font-en-tja16.log
+% changes will be lost
+
+% font-en-tja
+% balls
+\fetdef\wholeball{0}
+\fetdef\halfball{1}
+\fetdef\quartball{2}
+\fetdef\breveball{3}
+\fetdef\longaball{4}
+
+% almostrests
+\fetdef\quartrest{5}
+\fetdef\eighthrest{6}
+\fetdef\sixteenthrest{7}
+\fetdef\thirtysecondrest{8}
+\fetdef\sixtyfourthrest{9}
+\fetdef\hundredtwentyeighthrest{10}
+
diff --git a/tex/font-en-tja20.tex b/tex/font-en-tja20.tex
new file mode 100644
index 0000000000..42b2b50b75
--- /dev/null
+++ b/tex/font-en-tja20.tex
@@ -0,0 +1,19 @@
+% generated at Thu Sep 25 01:22:52 1997 from out/font-en-tja20.log
+% changes will be lost
+
+% font-en-tja
+% balls
+\fetdef\wholeball{0}
+\fetdef\halfball{1}
+\fetdef\quartball{2}
+\fetdef\breveball{3}
+\fetdef\longaball{4}
+
+% almostrests
+\fetdef\quartrest{5}
+\fetdef\eighthrest{6}
+\fetdef\sixteenthrest{7}
+\fetdef\thirtysecondrest{8}
+\fetdef\sixtyfourthrest{9}
+\fetdef\hundredtwentyeighthrest{10}
+
diff --git a/tex/taupindefs.tex b/tex/taupindefs.tex
index 290e711cb9..77ffb3bcec 100644
--- a/tex/taupindefs.tex
+++ b/tex/taupindefs.tex
@@ -38,8 +38,11 @@
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 % provide interface to musixtex fonts 
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\musicdef\breveball{'040}
-\musicdef\longaball{'047}
+% \musicdef\breveball{'040}
+% \musicdef\longaball{'047}
+% \musicdef\quartball{'007}
+% \musicdef\halfball{'010}
+% \musicdef\wholeball{'011}
 \musicdef\halfrest{'074}
 \musicdef\wholerest{'075}
 \musicdef\breverest{'072}
@@ -48,12 +51,12 @@
 %% hmm
 \musicdef\outsidehalfrest{10}
 \musicdef\outsidewholerest{11}
-\musicdef\quartrest{62}
-\musicdef\eighthrest{63}
-\musicdef\sixteenthrest{64}
-\musicdef\thirtysecondrest{65}
-\musicdef\sixtyfourthrest{66}
-\musicdef\hundredtwentyeighthrest{67}
+% \musicdef\quartrest{62}
+% \musicdef\eighthrest{63}
+% \musicdef\sixteenthrest{64}
+% \musicdef\thirtysecondrest{65}
+% \musicdef\sixtyfourthrest{66}
+% \musicdef\hundredtwentyeighthrest{67}
 \musicdef\sharp{52}
 \musicdef\flat{50}
 \musicdef\natural{54}
-- 
2.39.5