summaryrefslogtreecommitdiff
path: root/macros/mtex/metafont/slur16.mf
diff options
context:
space:
mode:
Diffstat (limited to 'macros/mtex/metafont/slur16.mf')
-rw-r--r--macros/mtex/metafont/slur16.mf229
1 files changed, 229 insertions, 0 deletions
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;