diff options
Diffstat (limited to 'macros/mtex/metafont/slur16.mf')
-rw-r--r-- | macros/mtex/metafont/slur16.mf | 229 |
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; |