summaryrefslogtreecommitdiff
path: root/macros/mtex/metafont
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
committerNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
commite0c6872cf40896c7be36b11dcc744620f10adf1d (patch)
tree60335e10d2f4354b0674ec22d7b53f0f8abee672 /macros/mtex/metafont
Initial commit
Diffstat (limited to 'macros/mtex/metafont')
-rw-r--r--macros/mtex/metafont/acc16.mf142
-rw-r--r--macros/mtex/metafont/beam16.mf79
-rw-r--r--macros/mtex/metafont/music16.mf12
-rw-r--r--macros/mtex/metafont/musicdef.mf71
-rw-r--r--macros/mtex/metafont/noten16.mf292
-rw-r--r--macros/mtex/metafont/pause16.mf184
-rw-r--r--macros/mtex/metafont/slur16.mf229
-rw-r--r--macros/mtex/metafont/slurdd16.mf41
-rw-r--r--macros/mtex/metafont/slurdu16.mf42
-rw-r--r--macros/mtex/metafont/slurud16.mf40
-rw-r--r--macros/mtex/metafont/sluruu16.mf39
-rw-r--r--macros/mtex/metafont/sonder16.mf112
-rw-r--r--macros/mtex/metafont/vio16.mf195
13 files changed, 1478 insertions, 0 deletions
diff --git a/macros/mtex/metafont/acc16.mf b/macros/mtex/metafont/acc16.mf
new file mode 100644
index 0000000000..821f879e8a
--- /dev/null
+++ b/macros/mtex/metafont/acc16.mf
@@ -0,0 +1,142 @@
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% %
+% VERSETZUNGSZEICHEN %
+% %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+
+
+%%%%%%%%%%%%
+%% "flat" %
+%%%%%%%%%%%%
+
+beginchar(50, nhw#, 2nhh#, 2nhh#);
+ clear;
+ penpos4(7/24nhh, 30);%/5,20 % 1
+ penpos3(nhh/5,-90);%/5,20 %
+ penpos2(nhh/5, 90);%/5,20 %
+ y1 = h; %4
+ x1 = x2 = x3 = s; x4 = w-s; % 2
+ y4 = s; %
+ y2l - y3r = 1/4h; y2l = 0; % 3
+ currentpen:= pencircle scaled 3thinwidth;
+ penstroke z2e...z4e...z3e{sw};%right ,sw
+ draw z1--z3;
+ draw z1--z3;
+penlabels(1,2,3,4);
+endchar;
+
+%%%%%%%%%%
+%% "bb" %
+%%%%%%%%%%
+
+beginchar(51,2nhw#, 2nhh#, 2nhh#);
+ clear;
+ penpos4(nhh/4, 0);%/5,20
+ penpos3(nhh/4,-90);%/5,20
+ penpos2(nhh/4, 90);%/5,20
+ y1 = h; %4
+ x1 = x2 = x3 = s; x4 = w/2-s; % 2
+ y4 = s; %
+ y2l - y3r = 1/4h; y2l = 0; % 3
+ currentpen:= pencircle scaled 3thinwidth;
+ draw z1--z3;
+ draw z1--z3;
+ penstroke z2e..z4e...z3e{sw};
+ draw (z1--z3) shifted ((w/2 - 1.5s),0);
+ penstroke (z2e..z4e...z3e{sw})shifted ((w/2 -1.5s),0);
+endchar;
+
+%%%%%%%%%%%%%
+%% "sharp" %
+%%%%%%%%%%%%%
+
+beginchar(52, nhw#, 1.5nhh#, 1.5nhh#);
+ clear;
+ penpos3(nhh/2,90);
+ penpos4(nhh/2,90);
+ y1 = h - s; y1 - y2 = 2h - s;
+ x1 = x2 = s; z3 = (0,1/4nhh);
+ y4l = y3r; x4 = w;
+ currentpen:= pencircle scaled 3thinwidth;
+ draw z1--z2;
+ draw (z1--z2) shifted (w-2s,s);
+ penstroke z3e--z4e;
+ penstroke (z3e--z4e) shifted (0, -nhh);
+penlabels(1,2,3,4);
+endchar;
+
+%%%%%%%%%%
+%% "xx" %
+%%%%%%%%%%%
+
+beginchar(53, nhw#, .5nhh#, .5nhh#);
+ clear;
+ z1 = (s, h-s); z2 = (w-s, h-s);
+ z3 = (s,-h+s); z4 = (w-s,-h+s);
+ currentpen:= pencircle scaled .2nhh;
+ draw z1--z4; draw z3--z2;
+ currentpen:= pencircle scaled .3nhh;
+ drawdot z1; drawdot z2; drawdot z3; drawdot z4;
+endchar;
+
+%%%%%%%%%%%%%%%
+%% "natural" %
+%%%%%%%%%%%%%%%
+
+beginchar(54, nhw#, 1.5nhh#, 1.5nhh#);
+ clear;
+ penpos3(nhh/2,90);
+ penpos4(nhh/2,90);
+ y1 = h; y2 = -h + nhh/2;
+ x1 = x2 = s; z3l = (s,0);
+ y4 = y3r; x4 = w-s;
+ currentpen:= pencircle scaled 3thinwidth;
+ draw z1--z2;
+ draw (z1--z2) shifted (w-2s,-h+y4r);
+ penstroke z3e--z4e;
+ penstroke (z3e--z4e) shifted (0, -nhh);
+endchar;
+
+%%%%%%%%%%%%%%%%
+%% "1/4 flat" %
+%%%%%%%%%%%%%%%%
+
+beginchar(55, nhw#, 2nhh#, 2nhh#);
+ clear;
+ penpos4(7/24nhh, 30);%/5,20 % 1
+ penpos3(nhh/5,-90);%/5,20 %
+ penpos2(nhh/5, 90);%/5,20 %
+ y1 = h; % 4
+ x1 = x2 = x3 = w-s; x4 =2w-3s; % 2
+ y4 = s; %
+ y2l - y3r = 1/4h; y2l = 0; % 3
+ currentpen:= pencircle scaled 3thinwidth;
+ penstroke (counterclockwise
+ (z2e...z4e...z3e{sw}) reflectedabout(z1 ,z3));
+ draw z1--z3;
+ draw z1--z3;
+penlabels(1,2,3,4);
+endchar;
+
+%%%%%%%%%%%%%%%%
+%% "3/4 flat" %
+%%%%%%%%%%%%%%%%
+
+beginchar(56, 2nhw#-2S, 2nhh#, 2nhh#);
+ clear;
+ penpos4(7/24nhh, 30);%/5,20 % 1
+ penpos3(nhh/5,-90);%/5,20 %
+ penpos2(nhh/5, 90);%/5,20 %
+ y1 = h; % 4
+ x1 = x2 = x3 = w/2; x4 =w-s; % 2
+ y4 = s; %
+ y2l - y3r = 1/4h; y2l = 0; % 3
+ currentpen:= pencircle scaled 3thinwidth;
+ penstroke z2e...z4e...z3e{sw};
+ penstroke (counterclockwise
+ (z2e...z4e...z3e{sw}) reflectedabout(z1 ,z3));
+ draw z1--z3;
+ draw z1--z3;
+penlabels(1,2,3,4);
+endchar;
diff --git a/macros/mtex/metafont/beam16.mf b/macros/mtex/metafont/beam16.mf
new file mode 100644
index 0000000000..03239d1784
--- /dev/null
+++ b/macros/mtex/metafont/beam16.mf
@@ -0,0 +1,79 @@
+input musicdef
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% %
+% BALKEN %
+% %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+
+
+font_x_height beamht#;
+
+def drawbeams (expr st, jj) =
+ save i, length, height;
+ numeric i, length, height;
+ length:= 0.5;
+ for i=0 upto 7:
+ height := length*st + beamht#;
+ beginchar(jj*8+i, length, height, 0);
+ clear;
+ % x2 = w; x1 = 0;
+ z2r = (w,h);
+ z1l = origin;
+ penpos1(beamht,90);
+ penpos2(beamht,90);
+ penstroke z1e---z2e;
+ endchar;
+ length := 2*length;
+ endfor;
+enddef;
+
+def drawbeamsneg (expr st, jj) =
+ save i, length, depth;
+ numeric i, length, depth;
+ length:= 0.5;
+ for i=0 upto 7:
+ depth := length*st - beamht#;
+ beginchar(jj*8+i, length, 0, depth);
+ clear;
+ z2l = (w,d);
+ z1r = origin;
+ penpos1(beamht,90);
+ penpos2(beamht,90);
+ penstroke z1e---z2e;
+ endchar;
+ length := 2*length;
+ endfor;
+enddef;
+
+numeric ss[];
+
+ss[0]:=0.05;
+ss[1]:=0.10;
+ss[2]:=0.15;
+ss[3]:=0.20;
+ss[4]:=0.25;
+ss[5]:=0.30;
+ss[6]:=0.35;
+ss[7]:=0.45;
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% Balken mit positiver Steigung %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+for j=0 upto 7 :
+drawbeams(ss[j],j);
+endfor;
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% Balken mit negativer Steigung %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+for j=0 upto 7 :
+drawbeamsneg(-ss[j],j+8);
+endfor;
+
+end;
+
diff --git a/macros/mtex/metafont/music16.mf b/macros/mtex/metafont/music16.mf
new file mode 100644
index 0000000000..9565133273
--- /dev/null
+++ b/macros/mtex/metafont/music16.mf
@@ -0,0 +1,12 @@
+input musicdef
+font_x_height nhh#;
+font_quad nhw#;
+font_normal_space 0pt;
+font_normal_stretch 0pt;
+font_normal_shrink 0pt;
+input noten16
+input acc16
+input pause16
+input vio16
+input sonder16
+end
diff --git a/macros/mtex/metafont/musicdef.mf b/macros/mtex/metafont/musicdef.mf
new file mode 100644
index 0000000000..fbbef58249
--- /dev/null
+++ b/macros/mtex/metafont/musicdef.mf
@@ -0,0 +1,71 @@
+% this is musicdef.mf
+%
+%
+% hier evtl. mode fuer gewuenschten output setzen
+%
+% AGFA P400 mode: for devices that print 406 pixels per inch
+% mode_def agfa =
+% proofing:=0;
+% fontmaking:=1;
+% tracingtitles:=0;
+% pixels_per_inch:=406;
+% blacker:=0.65;
+% fillin:=0;
+% o_correction:=1;
+% enddef;
+% localfont:=agfa;
+% mode:=agfa;
+%
+% low resolution music fonts are not very nice - but you need something...
+ mode_def atari =
+ proofing:=0;
+ fontmaking:=1;
+ tracingtitles:=0;
+ pixels_per_inch:=96;
+ blacker:=1.0;
+ fillin:=0;
+ o_correction:=1;
+ enddef;
+ localfont:=atari;
+ mode:=atari;
+ mode_setup;
+%
+%
+%mode_def ibm = % ibm mode: for the IBM3820
+% proofing:=0; % no, we're not making proofs
+% fontmaking:=1; % yes, we are making a font
+% tracingtitles:=0; % no, don't show titles in the log
+% pixels_per_inch:=240;
+% blacker:=.78; % (this value is conjectural)
+% fillin:=0.25; % (ditto)
+% o_correction:=.5; % (ditto)
+% enddef;
+%
+fontmaking:=1;
+turningcheck:=0;
+displaying:=1;
+designsize:=16;
+nhh#:=1/4designsize; %noteheadheight
+nhw#:=1.2nhh#; %noteheadwidth
+beamht#:=0.6nhh#; %Balkenst"arke
+nhh:=nhh#*pt; %noteheadheight *pt
+nhw:=nhw#*pt; %noteheadwidth *pt
+thinwidth := 0.1pt;
+beamht := beamht#*pt;
+s := 10thinwidth;
+S := 1/16designsize;
+%pair constants
+pair ne,se,sw,nw; %northeast,southeast,southwest,northwest
+ne = up+right; se = down+right; sw = down+left; nw = up+left;
+openit;
+def clear =
+ numeric x[],y[],x[]l,y[]l,x[]r,y[]r,dx[],dy[];
+ pair sh[];
+enddef;
+%
+pickup pencircle scaled (0.1pt);
+def penstrike text t =
+ forsuffixes e = l,r: path_.e:=t; endfor
+ if cycle path_.l: cyclestroke_
+ else: filldraw path_.l -- reverse path_.r -- cycle fi enddef;
+%
diff --git a/macros/mtex/metafont/noten16.mf b/macros/mtex/metafont/noten16.mf
new file mode 100644
index 0000000000..6aff8ab739
--- /dev/null
+++ b/macros/mtex/metafont/noten16.mf
@@ -0,0 +1,292 @@
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% %
+% NOTENKOEPFE UND FAEHNCHEN %
+% %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+%
+%
+%
+%%%%%%%%%%%%%%%
+%%notenkoepfe %
+%%%%%%%%%%%%%%%
+%
+%
+%
+%
+def drawnoteb(expr noteheadwidth, theta_a, theta_b, theta_c,
+width_a, width_b) =
+ % .l
+ penpos1(width_a, theta_a); % .2
+ % .r
+ penpos3(width_a, 180+theta_a); %.l.1.r .r.3.l
+ % .r
+ penpos2(width_b, 180+theta_b); % .4
+ % .l
+ penpos4(width_b, theta_b); %
+ y1 = y3 = 0;
+ x2 = x4 = 1/2noteheadwidth;
+ x1l= 0; x3l = w; y2l = h; y4l = -h;
+ penstroke (z1e{up}..z2e{right}..z3e{down}..z4e{left}..cycle)
+ rotatedaround((origin +1/2w*right),theta_c);
+ enddef;
+%
+%
+%%%%%%%%%%%%%%%
+%% flags %
+%%%%%%%%%%%%%%%
+%
+%
+%
+pickup pencircle scaled (0.1pt);
+def penstrike text t =
+ forsuffixes e = l,r: path_.e:=t; endfor
+ if cycle path_.l: cyclestroke_
+ else: filldraw path_.l -- reverse path_.r -- cycle fi enddef;
+def flagshape (suffix i) (expr width, height, thicka, thin, shift) =
+ pair intersectionp; %
+ thick := 1/3 height;
+ sh[-3] = origin;
+ sh[i] = shift; % .1
+ penpos[i](thick,90); %
+ penpos[i+1]( 3thin ,90); % .2
+ penpos[i+2](thin,0); %
+ penpos[i+3](thin,0); % .3
+ x[i] = -1/16mm; %
+ y[i]r = height; % .4
+ x[i+1] = 3/8width; %
+ y[i+1] = height - thick; %
+ y[i+3] = 0;
+ x[i+2]r = x[i+3]+2s= width;
+ y[i+2]r = height - 2thick;
+ if i>1: intersectionp = z[i-2];
+ else : intersectionp = z[i+3];
+ fi;
+ penstrike (z[i]e{dir(angle(z[i+1]e-z[i]e)-15)}
+ ..z[i+1]e{z[i+1]e-z[i]e}
+ ..z[i+2]e{down}..intersectionp shifted (sh[i-4]-sh[i]))
+ shifted sh[i];
+ for n=0 upto 3:
+ k:=i+n;
+ penlabels(k);endfor;
+ enddef;
+
+%def flagshaper (suffix i) (expr width, height, thicka, thin, shift) =
+% pair intersectionp; %
+% thick := 1/3 height;
+% sh[-3] := origin+shift;
+% sh[i] = shift; % .1
+% penpos[i](thick,90); %
+% penpos[i+1]( 3thin ,90); % .2
+% penpos[i+2](thin,0); %
+% penpos[i+3](thin,0); % .3
+% x[i] = 0; %
+% y[i]r = height; % .4
+% x[i+1] = 3/8width; %
+% y[i+1] = height - thick; %
+% y[i+3] = 0;
+% x[i+2]r = x[i+3]+2s= width;
+% y[i+2]r = height - 2thick;
+% if i>1: intersectionp = z[i-2];
+% else : intersectionp = z[i+3];
+% fi;
+% penstroke (counterclockwise
+% (z[i]e{dir(angle(z[i+1]e-z[i]e)-15)}
+% ..z[i+1]e{z[i+1]e-z[i]e}
+% ..z[i+2]e{down}..intersectionp shifted (-sh[i-4]+sh[i]))
+% reflectedabout (z1r scaled 0.5,
+% z1r scaled 0.5+right) )
+% shifted sh[i];
+% for n=0 upto 3:
+% k:=i+n;
+% penlabels(k);endfor;
+% enddef;
+
+def flagshaper (suffix i) (expr width, height, thicka, thin, shift) =
+ pair intersectionp; %
+ thick := 1/3 height;
+ sh[-3] := origin+shift;
+ sh[i] = shift; % .1
+ penpos[i](thick,90); %
+ penpos[i+1]( 3thin ,90); % .2
+ penpos[i+2](thin,0); %
+ penpos[i+3](thin,0); % .3
+ x[i] = 0; %
+ y[i]r = height; % .4
+ x[i+1] = 3/8width; %
+ y[i+1] = height - thick; %
+ y[i+3] = 0;
+ x[i+2]r = x[i+3]+2s= width;
+ y[i+2]r = height - 2thick;
+ if i>1: intersectionp = z[i-2];
+ else : intersectionp = z[i+3];
+ fi;
+ penstrike (counterclockwise
+ (z[i]e{dir(angle(z[i+1]e-z[i]e)-15)}
+ ..z[i+1]e{z[i+1]e-z[i]e}
+ ..z[i+2]e{down}..intersectionp shifted (-sh[i-4]+sh[i]))
+ reflectedabout (z1r scaled 0.5,
+ z1r scaled 0.5+right) )
+ shifted sh[i];
+ enddef;
+
+
+%%%%%%%%%%%%%%%
+%% volle Note %
+%%%%%%%%%%%%%%%
+
+beginchar(33, nhw#, .5nhh#, .5nhh#);
+ w:=w+2thinwidth;
+ drawnoteb(w, 0, 90, 20, w/2, nhh/2);
+endchar;
+
+%%%%%%%%%%%%%%%
+%% halbe Note %
+%%%%%%%%%%%%%%%
+
+beginchar(34, nhw#, .5nhh#, .5nhh#);
+ w:=w+2thinwidth;
+ drawnoteb(w, 0, 90, 20, 3*thinwidth, nhh/4);
+endchar;
+
+%%%%%%%%%%%%%%%
+%% ganze Note %
+%%%%%%%%%%%%%%%
+
+beginchar (35,1.5nhh#, .5nhh#, .5nhh#);
+ drawnoteb(w, 0, 85, 0, nhh/3, 3*thinwidth);
+endchar;
+
+%%%%%%%%%%%%%%%%%%%%%%%
+%% "8flag nach unten" %
+%%%%%%%%%%%%%%%%%%%%%%%
+
+beginchar(40, 0, 3nhh#, 0);
+ clear;
+ w:=nhw;
+ flagshape (1,w, h, nhh, 5thinwidth, origin);
+ w:=0;
+endchar;
+
+%%%%%%%%%%%%%%%%%%%%%%%%
+%% "16flag nach unten" %
+%%%%%%%%%%%%%%%%%%%%%%%%
+
+beginchar(41, 0, 3.25nhh#, 0);
+ clear;
+ w:=nhw;
+ flagshape (1, w, 2.5nhh, 2/3nhh, 5thinwidth, origin);
+ flagshape (5,.95 w, 2.25 nhh, 2/3nhh, 5thinwidth, (0,nhh));
+ w:=0;
+endchar;
+
+%%%%%%%%%%%%%%%%%%%%%%%%
+%% "32flag nach unten" %
+%%%%%%%%%%%%%%%%%%%%%%%%
+
+beginchar(42, 0, 3.75 nhh#, 0);
+ clear;
+ w:=nhw;
+ flagshape (1, w, 2.5nhh, 2/3nhh, 5thinwidth, origin);
+ flagshape (5, .95w, 2.25 nhh, 2/3nhh, 5thinwidth, (0,nhh));
+ flagshape (9, .9w, 2 nhh, 2/3nhh, 5thinwidth, (0,1.75nhh));
+ w:=0;
+endchar;
+
+%%%%%%%%%%%%%%%%%%%%%%%%
+%% "64flag nach unten" %
+%%%%%%%%%%%%%%%%%%%%%%%%
+
+beginchar(43, 0, 4.25nhh#, 0);
+ clear;
+ w:=nhw;
+ flagshape (1, w, 2.5nhh, 2/3nhh, 5thinwidth, origin);
+ flagshape (5,.95 w, 2.25 nhh, 2/3nhh, 5thinwidth, (0,nhh));
+ flagshape (9,.9w, 2 nhh, 2/3nhh, 5thinwidth, (0,1.75nhh));
+ flagshape(13,0.85w, 2nhh, 2/3nhh, 5thinwidth, (0,2.25nhh));
+ w:=0;
+endchar;
+
+%%%%%%%%%%%%%%%%%%%%%%%%%
+%% "128flag nach unten" %
+%%%%%%%%%%%%%%%%%%%%%%%%%
+
+beginchar(44, 0, 4.5nhh#, 0);
+ clear;
+ w:=nhw;
+ flagshape (1, w, 2.5nhh, 2/3nhh, 5thinwidth, origin);
+ flagshape (5, w, 2.25nhh, 2/3nhh, 5thinwidth, (0,nhh));
+ flagshape (9, w, 2 nhh, 2/3nhh, 5thinwidth, (0,1.75nhh));
+ flagshape(13,0.9 w, 2nhh, 2/3nhh, 5thinwidth, (0,2.25nhh));
+ flagshape(17,0.9 w, 1.5nhh, 1/3nhh, 5thinwidth, (0,3nhh));
+ w:=0;
+endchar;
+
+%%%%%%%%%%%%%%%%%%%%%%
+%% "8flag nach oben" %
+%%%%%%%%%%%%%%%%%%%%%%
+
+beginchar(45, 0, 3nhh#, 0);
+ clear;
+ w:=nhw;
+ flagshaper(1,w, h, nhh, 5thinwidth, origin);
+ penlabels(1,2,3,4);
+ w:=0;
+endchar;
+
+%%%%%%%%%%%%%%%%%%%%%%%
+%% "16flag nach oben" %
+%%%%%%%%%%%%%%%%%%%%%%%
+
+beginchar(46, 0, 3.25nhh#, 0);
+ clear;
+ w:=nhw;
+ flagshaper(1, w, 2.5nhh, 2/3nhh, 5thinwidth, (0,0.75nhh));
+ flagshaper(5, w, 2.25 nhh, 2/3nhh, 5thinwidth,(0,-0.25nhh));
+ penlabels(1,2,3,4,5,6,7,8);
+ w:=0;
+endchar;
+
+%%%%%%%%%%%%%%%%%%%%%%%
+%% "32flag nach oben" %
+%%%%%%%%%%%%%%%%%%%%%%%
+
+beginchar(47, 0, 3.75 nhh#, 0);
+ clear;
+ w:=nhw;
+ flagshaper(1, w, 2.5nhh, 2/3nhh, 5thinwidth, (0,1.5nhh));
+ flagshaper(5, w, 2.5nhh, 2/3nhh, 5thinwidth, (0,0.75nhh));
+ flagshaper(9, .95w, 2.25 nhh, 2/3nhh, 5thinwidth, origin);
+ penlabels(1,2,3,4,5,6,7,8,9,10,11,12);
+ w := 0;
+endchar;
+
+%%%%%%%%%%%%%%%%%%%%%%%
+%% "64flag nach oben" %
+%%%%%%%%%%%%%%%%%%%%%%%
+
+beginchar(48, 0, 4.25nhh#, 0);
+ clear;
+ w:=nhw;
+ flagshaper(1, w, 2.5nhh, 2/3nhh, 5thinwidth, (0,1.75nhh));
+ flagshaper(5, w, 2.25 nhh, 2/3nhh, 5thinwidth, (0,1nhh));
+ flagshaper(9,w, 2 nhh, 2/3nhh, 5thinwidth, (0,0.34nhh));
+ flagshaper(13,0.9w, 2nhh, 2/3nhh, 5thinwidth, (0,-0.32nhh));
+ penlabels(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16);
+ w := 0;
+endchar;
+
+%%%%%%%%%%%%%%%%%%%%%%%%
+%% "128flag nach oben" %
+%%%%%%%%%%%%%%%%%%%%%%%%
+
+beginchar(49, 0, 4.5nhh#, 0);
+ clear;
+ w:=nhw;
+ flagshaper (1, w, 2.25nhh, 2/3nhh, 5thinwidth, (0,2.5nhh));
+ flagshaper (5, w, 2.25nhh, 2/3nhh, 5thinwidth, (0,1.75nhh));
+ flagshaper (9, w, 2 nhh, 2/3nhh, 5thinwidth, (0,1nhh));
+ flagshaper(13,0.9 w, 2nhh, 2/3nhh, 5thinwidth, (0,0.5nhh));
+ flagshaper(17,0.9 w, 2nhh, 1/3nhh, 5thinwidth, (0,0nhh));
+ w := 0;
+endchar;
diff --git a/macros/mtex/metafont/pause16.mf b/macros/mtex/metafont/pause16.mf
new file mode 100644
index 0000000000..7ebbf449f9
--- /dev/null
+++ b/macros/mtex/metafont/pause16.mf
@@ -0,0 +1,184 @@
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% %
+% PAUSEN %
+% %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+
+
+
+%%%%%%%%%
+%% "dp" %
+%%%%%%%%%
+
+beginchar(58,1/2nhw#, 3nhh#, 0);
+ clear;
+ penpos1(nhh,90);
+ penpos2(nhh,90);
+ y1r = y2r = h;
+ x1r = 0; x2r = w;
+ currentpen:= pencircle;
+ penstroke z1e--z2e;
+labels(1,2);
+endchar;
+
+%%%%%%%%%%
+%% "ddp" %
+%%%%%%%%%%
+
+beginchar(59,1/2nhw#, 3nhh#, 0);
+ clear;
+ penpos1(2nhh,90);
+ penpos2(2nhh,90);
+ y1r = y2r = h;
+ x1r = 0; x2r = w;
+ currentpen:= pencircle;
+ penstroke z1e--z2e;
+labels(1,2);
+endchar;
+
+%%%%%%%%%%%%%%%%%%
+%% "ganze Pause" %
+%%%%%%%%%%%%%%%%%%
+
+beginchar(60, nhw#, 3nhh#, 0);
+ clear;
+ penpos1(nhh/2,90);
+ penpos2(nhh/2,90);
+ y1r = y2r = h;
+ x1r = 0; x2r = w;
+ currentpen:= pencircle;
+ penstroke z1e--z2e;
+endchar;
+%charwd:=4.5; chardx:=charwd*pt; chardp:=0; charht:=4;
+
+%%%%%%%%%%%%%%%%%%
+%% "halbe Pause" %
+%%%%%%%%%%%%%%%%%%
+
+beginchar(61, nhw#, 2.5nhh#, 0);
+ clear;
+ penpos1(nhh/2,90);
+ penpos2(nhh/2,90);
+ y1r = y2r = h;
+ x1r = 0; x2r = w;
+ currentpen:= pencircle;
+ penstroke z1e--z2e;
+endchar;
+
+%%%%%%%%%%%%%%%%%%%%
+%% "viertel Pause" %
+%%%%%%%%%%%%%%%%%%%%
+
+beginchar(62, nhw#, 4nhh#, 0); % .1
+ clear; % .2
+ thin := 5 thinwidth; thick := 1/2 nhh; % 8..3
+ alpha_a = -50; alpha_b = -50; % .4
+ penpos1 ( thin, (alpha_a+90)); % .5
+ penpos5 ( thin, (alpha_b)); % .6
+ penpos2 ( thick, alpha_a ); %
+ penpos4 ( thick, alpha_b ); % .7
+ penpos3 ( thick, 1/2(alpha_a+alpha_b));
+ x3r:=9/10[x3,x3r];
+ penpos8 ( thick, 1/2(alpha_a+alpha_b));
+ x8l:=9/10[x8,x8l];
+ penpos6 ( 1/2thick, (alpha_b+10));
+ penpos7 ( 1/4thick,-20);
+ y1l = h - 2s;
+ x1l = 2s;
+ z2r = z1 +(nhh* right) rotated alpha_a;
+ z5 = z4l+(nhh* right) rotated alpha_b;
+ z3 = 1/3[z2,z4];
+ z8 = 2/3[z2,z4];
+% z3 = 1/2[z2r,z4];
+ z4 = (w,h) scaled .5;
+ y6r = 1.5nhh;
+ x6l = x4l;
+ x7 = w/2; y7r= nhh;
+ currentpen:= pencircle scaled thin;
+ draw z1--z2r; draw z5--z4l;
+ penstroke z2e..z3e..z8e..z4e;
+ penstroke z5e{nw}..z6e{z7-z6}..z7e;
+endchar;
+%%title "viertelpause"; %
+%beginchar(62, nhw#, 4nhh#, 0); % .1
+% clear; % .2
+% thin := 5 thinwidth; thick := 1/2 nhh; % 8..3
+% alpha_a = -50; alpha_b = -50; % .4
+%% penpos4(thick,-45);
+% z1 = (s,h-s);
+% z3 = (w,nhh);
+% z2-z3=(h/2-s)*up;
+% z1-z6=(h/2-2s)*up;
+% z4r = 1/3z1;
+% z4l = (w/2,nhh);% z2 = (w-s,h-nhh-s);
+% % 1[z2,z4r]=1/3(w,h);
+% z5 = 1/2(w,nhh);
+% currentpen:= pencircle scaled thin;%4
+% draw z1--z2; draw z6--z3;
+% filldraw z1--z2..control1/3[-z2,z4r]
+% %-(w/2,h/2))}
+% ..z3--z6..control1/4[-z6,z2]
+% %(w/2,h-nhh))}
+% ..z1--cycle;
+% filldraw z3...z4r...z5--z5..z4l..z3..cycle;
+%penlabels(1,2,3,4,5,6);
+%endchar;
+%end;
+
+%%%%%%%%%%%%%%%%%%%
+%% "achtel Pause" %
+%%%%%%%%%%%%%%%%%%%
+
+beginchar(63, 2nhh#, 3nhh#, 0)
+clear;
+ %punkte f"ur achtelpause, 16. und 32. Pause
+ x1=y1= nhh; x2=x6=7/4nhh; y2=11/4nhh;
+ x3=x4=x5=1/2nhh; y3=10/4nhh;
+ y4=3nhh; y5=0; y6=15/4nhh;
+ currentpen := pencircle scaled 2thinwidth;
+ draw z1..z2;
+ currentpen := pensquare rotated45 scaled(sqrt2*thinwidth);
+ draw z2..z3{up+left};
+ fill z3..z4..z3..cycle;
+endchar;
+
+%%%%%%%%%%%%%%%%%%%%%%%%
+%% "sechzehntel Pause" %
+%%%%%%%%%%%%%%%%%%%%%%%%
+
+beginchar(64,2nhh#, 3nhh#, 0)
+ clear;
+ %punkte f"ur achtelpause, 16. und 32. Pause
+ x1=y1= nhh; x2=x6=7/4nhh; y2=11/4nhh;
+ x3=x4=x5=1/2nhh; y3=10/4nhh;
+ y4=3nhh; y5=0; y6=15/4nhh;
+ currentpen := pencircle scaled 2thinwidth;
+ draw z5..z2;
+ currentpen := pensquare rotated45 scaled(sqrt2*thinwidth);
+ draw z2..z3{up+left};
+ draw z2..z3{up+left} shifted(-1/2nhh,-nhh);
+ fill z3..z4..z3..cycle;
+ fill z3..z4..z3..cycle shifted (-1/2nhh,-nhh);
+endchar;
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% "zweiunddreissigstel Pause" %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+beginchar(65,2nhh#, 4nhh#, 0)
+ clear;
+ %punkte f"ur achtelpause, 16. und 32. Pause
+ x1=y1= nhh; x2=x6=7/4nhh;
+ y2=11/4nhh; x3=x4=x5=1/2nhh; y3=10/4nhh;
+ y4=3nhh; y5=0; y6=15/4nhh;
+ currentpen := pencircle scaled 2thinwidth;
+ draw z5..z6;
+ currentpen := pensquare rotated45 scaled(sqrt2*thinwidth);
+ draw z2..z3{up+left} shifted( 0,nhh);
+ draw z2..z3{up+left} shifted(-1/4nhh, 0);
+ draw z2..z3{up+left} shifted(-2/3nhh,-nhh);
+ fill z3..z4..z3..cycle shifted ( 0, nhh);
+ fill z3..z4..z3..cycle shifted (-1/4nhh, 0);
+ fill z3..z4..z3..cycle shifted (-2/3nhh,-nhh);
+endchar;
diff --git a/macros/mtex/metafont/slur16.mf b/macros/mtex/metafont/slur16.mf
new file mode 100644
index 0000000000..1ce0c194ae
--- /dev/null
+++ b/macros/mtex/metafont/slur16.mf
@@ -0,0 +1,229 @@
+input musicdef
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% %
+% BOGEN UND (DE)CRESCENDO %
+% %
+% (Phrasierungsbogen und Bogen der Steigung 0) %
+% %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+def drawslurs (expr st) =
+ save i, factor, length, height;
+ numeric i, absp, length, height, factor;
+ factor:= 1/6;
+ for i= 0 upto 15:
+ length := (i+2)*nhw#;
+ height := 0 ;
+
+ beginchar(i, length, height, 0);
+ clear;
+ z2r = (w,h);
+ z1l = origin;
+ absp := abs((-h,w));
+ if (factor*absp)>2nhh : factor:= 2nhh/absp fi;
+ z3r = 1/2z2l+factor*(-h,w);
+ penpos1(thinwidth,90);
+ penpos2(thinwidth,90);
+ penpos3(5/12beamht,90);
+ % currentpen := pencircle xscaled thinwidth yscaled beamht ;
+ pickup pencircle scaled (1/16mm + blacker);
+ penstroke z1e..z3e..z2e; %statt dir 30
+ endchar;
+ endfor;
+enddef;
+
+def drawslursneg (expr st) =
+ save i, factor, length, depth;
+ numeric i, absp, length, depth, factor;
+ factor:= 1/6;
+ for i=0 upto 15:
+ length := (i+2)*nhw#;
+ depth := length*st ;
+
+ beginchar(16+i, length, 0, depth);
+ clear;
+ z2l = (w,-d);
+ z1r = origin;
+ absp := abs((d,w));
+ if (factor*absp)>2nhh : factor:= 2nhh/absp fi;
+ z3r = 1/2z2l+factor*(d,w);
+ penpos1(thinwidth,90);
+ penpos2(thinwidth,90);
+ penpos3(5/12beamht,90);
+% currentpen := pencircle xscaled thinwidth yscaled beamht ;
+ pickup pencircle scaled (1/16mm + blacker);
+ penstroke (z1e..z3e..z2e) rotatedaround(1/2z2r, 180);
+ endchar;
+ endfor;
+enddef;
+
+def drawleftslur =
+ save i, length, height;
+ numeric i, length, height;
+ length := 9*nhw#;
+ for i = 1 upto 9:
+ height := (i+2)*1/2nhh# ;
+ beginchar(i-1+32, length, height, 0);
+ clear;
+ z2r = (w+4thinwidth,h);
+ z1l = origin;
+ penpos1(thinwidth,90);
+ penpos2(5/12beamht,90);
+% currentpen := pencircle xscaled thinwidth yscaled beamht ;
+ pickup pencircle scaled (1/16mm + blacker);
+ penstroke z1e..z2e{(2w,0)}; %statt dir 30
+ endchar;
+ endfor;
+enddef;
+
+def drawrightslur =
+ save i, length, height;
+ numeric i, length, height;
+ length := 9*nhw#;
+ for i= 1 upto 9:
+ height := (i+2)*1/2nhh#;
+ beginchar(i-1+48, length, height, 0);
+ clear;
+ z1r = (0-4\thinwidth,h);
+ z2l = (w,0);
+ penpos2(thinwidth,90);
+ penpos1(5/12beamht,90);
+% currentpen := pencircle xscaled thinwidth yscaled beamht ;
+ pickup pencircle scaled (1/16mm + blacker);
+ penstroke z1e{right}..z2e; %statt dir 30
+ endchar;
+ endfor;
+enddef;
+
+def drawleftslurneg =
+ save i, length, depth;
+ numeric i, length, depth;
+ length := 9*nhw#;
+ for i= 1 upto 9:
+ depth := (i+2)*1/2nhh# ;
+ beginchar(i-1+64, length, 0, depth);
+ clear;
+ z2l = (w+4thinwidth,-d);
+ z1r = origin;
+ penpos1(thinwidth,90);
+ penpos2(5/12beamht,90);
+ pickup pencircle scaled (1/16mm + blacker);
+ % currentpen := pencircle xscaled thinwidth yscaled beamht ;
+ penstroke z1e..z2e{(2w,0)}; %statt dir 30
+ endchar;
+ endfor;
+enddef;
+
+def drawrightslurneg =
+ save i, length, depth;
+ numeric i, length, depth;
+ length := 9*nhw#;
+ for i= 1 upto 9:
+ depth := (i+2)*1/2nhh#;
+
+ beginchar(i-1+80, length, 0, depth);
+ clear;
+ z1l = (0-4\thinwidth,-d);
+ z2r = (w,0);
+ penpos2(thinwidth,90);
+ penpos1(5/12beamht,90);
+% currentpen := pencircle xscaled thinwidth yscaled beamht ;
+ pickup pencircle scaled (1/16mm + blacker);
+ penstroke z1e{right}..z2e; %statt dir 30
+ endchar;
+ endfor;
+enddef;
+
+%decrescendo und cresc.
+def drawcrescendo =
+ save i, height, length, depth;
+ numeric i, length, height, depth;
+ for i= 0 upto 15:
+ length := (i+1)*nhw#;
+ depth := 1/2nhh# ;
+ height := depth ;
+
+ beginchar(i+96, length, height, depth);
+ clear;
+ z1 = origin;
+ z2l = (w,h);
+ z3r = (w,-d);
+ penpos2(1/16mm,90);
+ penpos1(1/16mm,90);
+ penpos3(1/16mm,90);
+ pickup pencircle scaled (blacker);
+ penstrike z1e--z2e;
+ penstrike z1e--z3e;
+ endchar;
+ endfor;
+enddef;
+
+def drawdecrescendo =
+ save i, height, length, depth;
+ numeric i, length, height, depth;
+ for i= 0 upto 15:
+ length := (i+1)*nhw#;
+ depth := 1/2nhh# ;
+ height := depth ;
+
+ beginchar(i+112, length, height, depth);
+ clear;
+ z1l = (0,h);
+ z2 = (w,0);
+ z3r = (0,-d);
+ penpos2(1/16mm,90);
+ penpos1(1/16mm,90);
+ penpos3(1/16mm,90);
+ pickup pencircle scaled (blacker);
+ penstrike z3e---z2e;
+ penstrike z1e---z2e;
+%label(1,2,3);
+ endchar;
+ endfor;
+enddef;
+
+%%%%%%%%%%%%%%%%%%%
+% Bogen nach oben %
+%%%%%%%%%%%%%%%%%%%
+
+drawslurs(0);
+
+%%%%%%%%%%%%%%%%%%%%
+% Bogen nach unten %
+%%%%%%%%%%%%%%%%%%%%
+
+drawslursneg(0);
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% linge Halbboegen nach oben %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+drawleftslur;
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% rechte Halbboegen nach oben %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+drawrightslur;
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% linke Halbboegen nach unten %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+drawleftslurneg;
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% rechte Halbboegen nach unten %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+drawrightslurneg;
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% Crescendo und Decrescendo %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+drawcrescendo;
+drawdecrescendo;
+
+
+end;
diff --git a/macros/mtex/metafont/slurdd16.mf b/macros/mtex/metafont/slurdd16.mf
new file mode 100644
index 0000000000..fd5712c57c
--- /dev/null
+++ b/macros/mtex/metafont/slurdd16.mf
@@ -0,0 +1,41 @@
+input musicdef
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% %
+% BOGEN (KONKAV) %
+% %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+
+def drawslursneg (expr i, j) =
+ save jj, factor, length, depth;
+ numeric jj, absp, length, depth, factor;
+ factor:= 1/6;
+ length := j*nhw#;
+ depth := i*1/2nhh#;
+ if j<4 : jj := (j*(j-1)+(i-1))*8
+ else: jj := (i-1)*8+(j mod 2)*64+floor((j-2)/2);fi;
+ beginchar(jj, length, 0, depth);
+ clear;
+ z2r = (w,-d);
+ z1l = origin;
+ absp := abs((d,w));
+ if (factor*absp)>2nhh : factor:= 2nhh/absp fi;
+ z3r = 1/2z2r+factor*(d,w);
+ penpos1(thinwidth,90);
+ penpos2(thinwidth,90);
+ penpos3(5/12beamht,90);
+ currentpen := pencircle xscaled thinwidth yscaled beamht ;
+ penstroke (z1e..z3e..z2e) rotatedaround (1/2z2r,180);
+ endchar;
+enddef;
+
+%%%%%%%%%%%%%%%%%%%%%%%
+% negative Steigungen %
+%%%%%%%%%%%%%%%%%%%%%%%
+
+for j= 1 upto 17:
+for i= 1 upto min(2j,8):
+drawslursneg(i,j);
+endfor;endfor;
+end;
+
diff --git a/macros/mtex/metafont/slurdu16.mf b/macros/mtex/metafont/slurdu16.mf
new file mode 100644
index 0000000000..20282e2ca7
--- /dev/null
+++ b/macros/mtex/metafont/slurdu16.mf
@@ -0,0 +1,42 @@
+input musicdef
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% %
+% BOGEN (KONVEX) %
+% %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+
+def drawslursneg (expr i,j) =
+ save jj, factor, length, depth;
+ numeric jj, absp, length, depth, factor;
+ factor:= 1/6;
+ length := j*nhw#;
+ depth := i*1/2nhh#;
+ if j<4 : jj := (j*(j-1)+(i-1))*8
+ else: jj := (i-1)*8+(j mod 2)*64+floor((j-2)/2);fi;
+ beginchar(jj, length, 0, depth);
+ clear;
+ % x2 = w; x1 = 0;
+ z2r = (w,-d);
+ z1l = origin;
+ absp := abs((d,w));
+ if (factor*absp)>2nhh : factor:= 2nhh/absp fi;
+ z3r = 1/2z2r+factor*(d,w);
+ penpos1(thinwidth,90);
+ penpos2(thinwidth,90);
+ penpos3(5/12beamht,90);
+ currentpen := pencircle xscaled thinwidth yscaled beamht ;
+ penstroke (z1e..z3e..z2e);
+ endchar;
+enddef;
+
+%%%%%%%%%%%%%%%%%%%%%%%
+% negative Steigungen %
+%%%%%%%%%%%%%%%%%%%%%%%
+
+for j= 1 upto 17:
+for i= 1 upto min(2j,8):
+drawslursneg(i,j);
+endfor;endfor;
+end;
+
diff --git a/macros/mtex/metafont/slurud16.mf b/macros/mtex/metafont/slurud16.mf
new file mode 100644
index 0000000000..f4028a8e96
--- /dev/null
+++ b/macros/mtex/metafont/slurud16.mf
@@ -0,0 +1,40 @@
+input musicdef
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% %
+% BOGEN (KONKAV) %
+% %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+
+def drawslurs (expr i,j) =
+ save jj, factor, length, height;
+ numeric jj, absp, length, height, factor;
+ factor:= 1/6;
+ height := i*1/2nhh#;
+ length := j*nhw#;
+ if j<4 : jj := (j*(j-1)+(i-1))*8
+ else: jj := (i-1)*8+(j mod 2)*64+floor((j-2)/2);fi;
+ beginchar(jj, length, height, 0);
+ clear;
+ z2r = (w,h);
+ z1l = origin;
+ absp := abs((-h,w));
+ if (factor*absp)>2nhh : factor:= 2nhh/absp fi;
+ z3r = 1/2z2r+factor*(-h,w);
+ penpos1(thinwidth,90);
+ penpos2(thinwidth,90);
+ penpos3(5/12beamht,90);
+ currentpen := pencircle xscaled thinwidth yscaled beamht ;
+ penstroke (z1e..z3e..z2e) rotatedaround (1/2z2r,180);
+ endchar;
+enddef;
+
+%%%%%%%%%%%%%%%%%%%%%%%
+% positive Steigungen %
+%%%%%%%%%%%%%%%%%%%%%%%
+
+for j= 1 upto 17:
+for i= 1 upto min(2j,8):
+drawslurs(i,j);
+endfor;endfor;
+end;
diff --git a/macros/mtex/metafont/sluruu16.mf b/macros/mtex/metafont/sluruu16.mf
new file mode 100644
index 0000000000..59fa5b22de
--- /dev/null
+++ b/macros/mtex/metafont/sluruu16.mf
@@ -0,0 +1,39 @@
+input musicdef
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% %
+% BOGEN (KONVEX) %
+% %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+def drawslurs(expr i,j) =
+ save jj,factor, length, height;
+ numeric jj, absp, length, height, factor;
+ factor:= 1/6;
+ height = i*1/2nhh#;
+ length = j*nhw#;
+ if j<4 : jj := (j*(j-1)+(i-1))*8
+ else: jj := (i-1)*8+(j mod 2)*64+floor((j-2)/2);fi;
+ beginchar(jj, length, height, 0);
+ clear;
+ z2r = (w,h);
+ z1l = origin;
+ absp := abs((-h,w));
+ if (factor*absp)>2nhh : factor:= 2nhh/absp fi;
+ z3r = 1/2z2l+factor*(-h,w);
+ penpos1(thinwidth,90);
+ penpos2(thinwidth,90);
+ penpos3(5/12beamht,90);
+ currentpen := pencircle xscaled thinwidth yscaled beamht ;
+ penstroke z1e..z3e..z2e; %statt dir 30
+ endchar;
+enddef;
+
+%%%%%%%%%%%%%%%%%%%%%%%
+% positive Steigungen %
+%%%%%%%%%%%%%%%%%%%%%%%
+
+for j= 1 upto 17:
+for i= 1 upto min(2j,8):
+drawslurs(i,j);
+endfor;endfor;
+end;
diff --git a/macros/mtex/metafont/sonder16.mf b/macros/mtex/metafont/sonder16.mf
new file mode 100644
index 0000000000..8421dee032
--- /dev/null
+++ b/macros/mtex/metafont/sonder16.mf
@@ -0,0 +1,112 @@
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% %
+% SONDERZEICHEN %
+% %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+
+
+
+def alla_breve (expr trans) =
+ thin := 5thinwidth; thick := 1/2 nhh;
+ penpos1(thin, 0);
+ penpos2(thin, -90);
+ penpos3(thick,180);
+ penpos4(2/3thin, 90);
+ penpos5(thin, 45);
+ penpos6(3/4thick,45);
+ 2x2r = 2x4r = x1 + 2s = w;
+ x3r = 0; 2y1 = 3y2 = y4r = h;
+ y3r = 2/3h;
+ x5 = w -2s;
+ y5 = h -2s;
+ z6r = z5r;
+ penstroke (z1e..z2e..z3e..z4e..z5e) transformed trans;
+ currentpen := pencircle scaled (2/3thick);
+ drawdot z6;
+enddef;
+
+
+%%%%%%%%%%%%%%%%
+% "allabreve" %%
+%%%%%%%%%%%%%%%%
+
+beginchar(82, 2nhh#, 3nhh#, 0);
+ clear;
+ alla_breve(identity);
+ z7 = z4 + 2/16 h *up;
+ z8 = z2 + 2/16 h *down;
+ currentpen := pencircle scaled (thin);
+ draw z7--z8;
+
+endchar;
+
+%%%%%%%%
+% "C" %%
+%%%%%%%%
+
+beginchar(83, 2nhh#, 3nhh#, 0);
+ clear;
+ alla_breve(identity);
+
+endchar;
+
+%%%%%%%%%%%%%%%
+% "reverseC" %%
+%%%%%%%%%%%%%%%
+
+beginchar(84, 2nhh#, 3nhh#, 0);
+ clear;
+ transform T;
+ xxpart T = -yypart T; xypart T = yxpart T; % T is a reflection
+ (w/2,0) transformed T = (w/2,0); (w/2,1) transformed T = (w/2,1);
+ thin := 5thinwidth; thick := 1/2 nhh;
+ penpos1(thin, 0);
+ penpos2(thin, -90);
+ penpos3(thick,180);
+ penpos4(2/3thin, 90);
+ penpos5(thin, 45);
+ penpos6(3/4thick,45);
+ 2x2r = 2x4r = x1 + 2s = w;
+ x3r = 0; 2y1 = 3y2 = y4r = h;
+ y3r = 2/3h;
+ x5 = w -2s;
+ y5 = h -2s;
+ z6r = z5r;
+ penstroke (counterclockwise
+ (z1e..z2e..z3e..z4e..z5e) transformed T);
+ currentpen := pencircle scaled (2/3thick);
+ drawdot (z6 transformed T);
+
+endchar;
+
+%%%%%%%%%%%%%%%
+% "fermate1" %%
+%%%%%%%%%%%%%%%
+
+beginchar(80, 2nhw#, 1.25nhh#, 0);
+ clear;
+ penpos2(nhh/4,90);
+ penpos4(nhh/4,90);
+ y2r = h;
+ z1 = origin; 2x2l = 2x4l = x3 = w; y4l = y3 = 0;
+ penstroke z1..z2e..z3;
+ currentpen:= pencircle scaled (nhh/4);
+ drawdot z4;
+endchar;
+
+%%%%%%%%%%%%%%%
+% "fermate2" %%
+%%%%%%%%%%%%%%%
+
+beginchar(81, 2nhw#, 0, 1.25nhh#);
+ clear;
+ penpos2(nhh/4,90);
+ penpos4(nhh/4,90);
+ y2l = -d;
+ z1 = origin; 2x2l = 2x4 = x3 = w;
+ y4r = y3 = 0;
+ penstroke (z1..z2e..z3);
+ currentpen := pencircle scaled (nhh/4);
+ drawdot z4;
+endchar;
diff --git a/macros/mtex/metafont/vio16.mf b/macros/mtex/metafont/vio16.mf
new file mode 100644
index 0000000000..8626d6c180
--- /dev/null
+++ b/macros/mtex/metafont/vio16.mf
@@ -0,0 +1,195 @@
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% %
+% NOTENSCHLUESSEL %
+% %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+%%%%%%%%%%%%%%%%%%%%
+% VIOLINSCHLUESSEL %
+%%%%%%%%%%%%%%%%%%%%
+
+def violin(expr width, beginleft, begindown, thick, penthick) =
+x10=x3=x2=x8;
+y6l=56/15width+y12r;
+x11-x4=width;
+x5=x4+13/15width;
+x2=x4+31/45 width;
+x1=x4+7/15width;
+x4=beginleft;
+x2-x12=4/15 width;
+x9+2/5width=x6;
+x6-4/15width=x7;
+x9=x4+1/5width;
+y12r=begindown;
+y2r=y4=2y11;
+y8=y12r+4/15width;
+y2r=y12r+28/15width;
+y1=y12r+width;
+y3r=y12r+13/15width;
+y7=y12r+116/45width;
+y5=y12r+16/5width;
+y5-y10=y11;
+y9=y12r+2/15width;
+penpos1(0,180);
+penpos2(thick,90);
+penpos3(penthick+1/16thick,-90);
+penpos4(5/4thick,120);
+penpos5(5/6thick,-120);
+penpos6(5/3thick,-85);
+penpos7(1/2thick,0);
+penpos8(penthick,0);
+penpos9(5/4thick,170);
+penpos10(5/6thick,180);
+penpos11(thick,0);
+penpos12(penthick,-90);
+pickup pencircle scaled 1s;
+penstroke z1e{2left}..z2e..z11e..z3e
+..z4e{right+up}..z10e..{up}z5e..z6e;
+penstroke z6e{down+left}..{down}z7e--z8e;
+fill z8l{2down+right}..z12l..z9l
+--z9r..z12r..{up}z8r..cycle;
+pickup pencircle scaled 1s;
+fill z9l{3/2right+up}..{right+2down}z9r..cycle;
+penlabels(1,2,3,4,5,6,7,8,9,10,11,12);
+enddef;
+
+beginchar(71,3.25nhw#, 6nhh#, 2nhh#);
+clear;
+violin(15/8nhh,7/4nhh,-3/2nhh,2/5nhh,1/9nhh);
+endchar;
+
+%%%%%%%%violin-schluessel verkleinert%%%%%%%%
+beginchar(72,3.25nhw#, 6nhh#, 2nhh#);
+clear;
+violin(12/8nhh,7/4nhh,-2/2nhh,3/10nhh,1/10nhh);
+endchar;
+
+%%%%%%%%%%%%%%%%%%%%%
+% BASS--SCHLUESSEL %%
+%%%%%%%%%%%%%%%%%%%%%
+
+def bass(expr width, beginleft, begindown, thick, dotthick)=
+
+y1=begindown;
+x1l=beginleft;
+x4=x5;
+x4-x3=width;
+x1l-x3=1/10width;
+y2=3/6(y4+y5);
+y4-y5=3/9width;
+y5-y3=9/9width;
+y3=y1-17/12width;
+x4-x2=3/9width;
+x7-x3=1/5width;
+y7=1/4(3y5+y4);
+penpos1(1/2thick,10);
+penpos2(thick,180);
+penpos3(0,180);
+penpos7(1/3thick,90);
+
+pickup pencircle scaled dotthick;
+drawdot z4; drawdot z5;
+pickup pencircle scaled 1s;
+penstroke z3e{up+right}..z2e{up}..{down+left}z1e;
+fill z1l{down+left}..{right}z7l{right}..{left+up}z1r..cycle;
+penlabels(1,2,3,4,5,7);
+enddef;
+
+beginchar(73,3nhw#, 4nhh#, 0nhh#);
+clear;
+bass(9/4nhh, 49/40nhh, 58/16nhh, 1/2nhh, 2s);
+endchar;
+
+%%%%%%verkleinerter bass-schluessel%%%%%%%%%
+beginchar(74,3nhw#, 4nhh#, 0nhh#);
+clear;
+bass(7/4nhh, 60/40nhh, 56/16nhh, 1/2nhh, 1.5s);
+endchar;
+
+%%%%%%%%%%%%%%%%%%%
+% ALT--SCHLUESSEL %
+%%%%%%%%%%%%%%%%%%%
+
+def alt(expr height, beginleft, begindown, thick) =
+x1=x7;
+x2=x8;
+y1-y7=height;
+y2-y8=height;
+y7=begindown;
+x7=beginleft;
+x2=x1+1/4height;
+x6l=x8l;
+y5=y7+1/2height;
+x5=x3;
+y4=y5+1/3(y3-y5);
+x4-x7=height;
+x4-x5=1/2height;
+y3-y5=2/5height;
+y8=y7;
+y6=y7;
+x9=x3;
+y9=y7-1/2height-2/5height;
+penpos8(1/4thick,180);
+penpos2(1/4thick,180);
+penpos1(thick,180);
+penpos7(thick,180);
+penpos6(thick,0);
+penpos5(1/10thick,0);
+penpos3(1/2thick,0);
+penpos4(2/3thick,180);
+
+pickup pencircle scaled 1s;
+fill z7l--z1l--z1r--z7r--cycle;
+fill z8l--z2l--z2r--z8r--cycle;
+penstroke z5e..{left+2down}z6e;
+penstroke z5e{right+4down}..{up}z4e{up}..{left+down}z3e;
+pickup pencircle scaled 1.8s;
+drawdot z3;
+
+
+pickup pencircle scaled 1s;
+penstroke
+ (counterclockwise(z7e--z1e)reflectedabout(z7,z8));
+penstroke
+(counterclockwise(z8e--z2e)reflectedabout(z7,z8));
+penstroke
+(counterclockwise(z5e..{left+2down}z6e)reflectedabout(z7,z8));
+penstroke
+(counterclockwise (z5e{right+4down}..{up}z4e{up}..{left+down}z3e)
+reflectedabout(z7,z8));
+
+pickup pencircle scaled 1.75s;
+drawdot z9;
+penlabels(1,2,3,4,5,6,7,8);
+enddef;
+
+%%%%%%%%%%%Altschl"usseL%%%%%%%%%%%
+beginchar(75,3.5nhw#, 4nhh#, 0nhh#);
+clear;
+alt(2nhh,1.25nhh,2nhh,2/5nhh);
+endchar;
+
+%%%%%%%%%Tenorschluessel%%%%%%%%%
+beginchar(76,3.5nhw#, 4nhh#, 0nhh#);
+clear;
+alt(2nhh,1.25nhh,3nhh,2/5nhh);
+endchar;
+
+%%%%%%%%%Baritonschluessel%%%%%%%%%
+beginchar(77,3.5nhw#, 4nhh#, 0nhh#);
+clear;
+alt(2nhh,1.25nhh,4nhh,2/5nhh);
+endchar;
+
+%%%%%%%%%Mezzosopranschluessel%%%%%%%%%
+beginchar(78,3.5nhw#, 4nhh#, 0nhh#);
+clear;
+alt(2nhh,1.25nhh,1nhh,2/5nhh);
+endchar;
+
+%%%%%%%%%Sopranschluessel%%%%%%%%%
+beginchar(79,3.5nhw#, 4nhh#, 0nhh#);
+clear;
+alt(2nhh,1.25nhh,0nhh,2/5nhh);
+endchar;
+