diff options
Diffstat (limited to 'fonts/musixtex-fonts/source/musixspx.mf')
-rw-r--r-- | fonts/musixtex-fonts/source/musixspx.mf | 314 |
1 files changed, 314 insertions, 0 deletions
diff --git a/fonts/musixtex-fonts/source/musixspx.mf b/fonts/musixtex-fonts/source/musixspx.mf new file mode 100644 index 0000000000..3f28010683 --- /dev/null +++ b/fonts/musixtex-fonts/source/musixspx.mf @@ -0,0 +1,314 @@ +% +% This file is part of MusiXTeX +% +% MusiXTeX is free software; you can redistribute it and/or modify +% it under the terms of the GNU General Public License as published by +% the Free Software Foundation; either version 2, or (at your option) +% any later version. +% +% MusiXTeX is distributed in the hope that it will be useful, +% but WITHOUT ANY WARRANTY; without even the implied warranty of +% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +% GNU General Public License for more details. +% +% You should have received a copy of the GNU General Public License +% along with MusiXTeX; see the file COPYING. If not, write to +% the Free Software Foundation, Inc., 59 Temple Place - Suite 330, +% Boston, MA 02111-1307, USA. +% + +font_identifier := "music_special_symbols"; + +% Here are two types of pianobrackets available, they are absolute compatible, +% so choose this one you prefer (search for '%!!!') + +% free pos: 196-255 + +mode_setup; + +font_size 20pt#; + +nhh#:=5pt#; +nhw#:=6pt#; + +qqs#=.4pt#; %width of lines +qqw#=10pt#; %length of horizontal stroke. + +med#:=1/33designsize; +thick#:=1/16designsize; + +thinwidth:=0.125pt; + +define_pixels(qqw,nhh,nhw); +define_blacker_pixels(med,thick); + +qqs:=ceiling(qqs#*hppp); % the way rule widths are calculated + +pair sw; +sw = down+left; + +path p; +picture save_pic; + +pen line_pen; +line_pen:= pencircle scaled qqs; + +%%%%%%% +message ("<glissandi-elements>"); +%%%%%%% + +def glissando (expr theta)= + x1=-1; y1=0; z2=z1+(.5nhw,0); z3=z1+(nhw+1,0); + p:= z1{1.25up+right}..{1.25down+right}z2{1.25down+right}..{1.25up+right}z3; + pickup penrazor scaled (.075nhw+thick) rotated (theta+65); + draw p rotated theta; + labels (1,2,3); +enddef; + +for slope=1 upto 8: + + beginchar(slope-1, (cosd(10slope))*nhw#,(sind(10slope))*nhw#, 0); + " glissando element slope "&decimal (10slope)&" degree"; + glissando (10slope); + save_pic:= currentpicture; + endchar; + + beginchar(8+slope-1, (cosd(10slope))*nhw#, (sind(10slope))*nhw#, 0); + " glissando element slope "&decimal (-10slope)&" degree"; + currentpicture:= save_pic reflectedabout (origin, right); + endchar; + +endfor; + +%%%%%%% +message ("<guitar chords>"); +%%%%%%% + +def tabulatur (expr nd)= + hwidth:=1/5w; + x1=x2=y2=y3=0; x3=w; y1=-nd; + fill unitsquare xscaled (w+2thinwidth) yscaled (med+.2pt) + shifted(-thinwidth,0); + pickup pencircle scaled max(1,.2pt+blacker); + for v=1 upto 5 : + draw (z2--z3) shifted (0,v*-hwidth); + endfor; + + for v=0 upto 5 : + draw (z1--z2) shifted (v*hwidth,0); + endfor; + labels (1,2,3); +enddef; + +shift:=.15nhh; +def Circle (expr nh)= + x1l=.1w; x2=x4=.5w; x3l=.9w; + y1=y3=.5nh+shift; y2=.1nh+shift; y4=.9nh+shift; + penpos1(med, 0); + penpos2(thinwidth,90); + penpos3(med,180); + penpos4(thinwidth, 270); + penstroke z1e..z2e..z3e..z4e..cycle; + pickup pencircle; draw z1..z2..z3..z4..cycle; +enddef; + +def Cross (expr nh)= + x1=x3=.2w; x2=x4=.8w; + y1=y4=.2nh+shift; y2=y3=nh-.2nh+shift; + pickup pencircle scaled med; + draw z1--z2; draw z3--z4; + labels (1,2,3,4); +enddef; + +beginchar(16, 3nhw#, 0, 0);" small grid"; + tabulatur (108/25nhh); +endchar; + +beginchar(17, 3/2nhw#, 0, 0); " small dot"; + fill fullcircle scaled .54nhh shifted (w,-.36nhh); +endchar; + +beginchar(18, 3nhw#, 0, 0); " small bar"; + fill unitsquare xscaled w yscaled .24nhh shifted (0,-.48nhh); +endchar; + +beginchar(19, 3/5nhw#, 0, 0); " small circle"; + Circle (.72nhh); +endchar; + +beginchar(20, 3/5nhw#, 0, 0); " small cross"; + Cross (.72nhh); +endchar; + +% the next seems to be senseless, but it isn't + +beginchar(28, 3/5nhw#, 0, 0); " small blank"; +endchar; + +%%%%%%% +message ("<several lines>"); +%%%%%%% + +hooklength:=4.5pt; + +beginchar(21, 0, 0, 0);" bracket hook up"; + pickup line_pen; + draw origin--(0, hooklength); +endchar; + +beginchar(22, 0, 0, 0);" bracket hook down"; + pickup line_pen; + draw origin--(0, -hooklength); +endchar; + +beginchar(23, nhw#, 0, 0);" upper octaveline"; + pickup line_pen; + draw (.33w, 1.1nhw)--(.66w, 1.1nhw); +endchar; + +beginchar(24, 0, 0, 0);" final hook for upper octaveline"; + pickup line_pen; + draw (1.1nhw,0)--(1.1nhw, 1.1nhw); + draw (.33nhw, 1.1nhw)--(1.1nhw, 1.1nhw); +endchar; + +beginchar(25, nhw#, 0, 0);" lower octaveline"; + pickup line_pen; + draw (.33w, 0)--(.66w, 0); +endchar; + +beginchar(26, 0, 0, 0);" final hook for lower octaveline"; + pickup line_pen; + draw (1.1nhw,0)--(1.1nhw, 1.1nhw); + draw (.33nhw,0)--(1.1nhw, 0); +endchar; + +beginchar(27, .75nhw#, 0, 0);" used for \bracket"; + pickup line_pen; + draw origin--(.5nhw, 0); +endchar; + +beginchar(29, qqw#, 0, 0);" line ydim 0pt"; + pickup line_pen; + draw origin--(w,0); +endchar; + +% lines length xdim 10pt, ydim (-).25 to (-)5pt + +for j=1 upto 20: + beginchar(29+j, qqw#, 0, 0); " line ydim "&decimal .25j&"pt"; + pickup line_pen; + draw origin--(w, .25pt*j); + save_pic:= currentpicture; + endchar; + + beginchar(49+j, qqw#, 0, 0); " line ydim -"&decimal .25j&"pt"; + currentpicture:= save_pic reflectedabout (origin, right); + endchar; +endfor; + +%%%%%%% +message ("<circles>"); +%%%%%%% + +for n:=1 upto 14: + beginchar(70+n-1, 0, 0, 0); + " fullcircle diameter "&decimal ((n+2)*2)&" pt"; + diameter:=(n+2)*2pt; + pickup line_pen; + draw fullcircle scaled diameter; + endchar; +endfor; + +%%%%%%% +message ("<(de-)crescendi>"); +%%%%%%% + +widthstep:=nhw; +crescendowidth:=.5nhh; % \Internote + +for n:=1 upto 32: + beginchar(84+n-1, 0, 3pt#, 3pt#); + " crescendo length "&decimal n&" noteheadwidths"; + pickup line_pen; + draw (n*widthstep, crescendowidth+.0075n*crescendowidth)--(0,0); + addto currentpicture also currentpicture reflectedabout (origin,right); + save_pic:= currentpicture; + endchar; + + beginchar(116+n-1, 0, 3pt#, 3pt#); + " decrescendo length "&decimal n&" noteheadwidths"; + currentpicture:= save_pic reflectedabout(origin, up) shifted (n*widthstep,0); + endchar; +endfor; + +%%%%%%% +message ("<piano brackets>"); +%%%%%%% + +% lastbrace is adjustable (originally 99) + +firstbrace:=20; % smallest brace is 2*20 pt (\simeq 14mm) +lastbrace:=67+48; % largest brace is 2*67 pt (\simeq 47mm) + +%%% from Stanislav Kneifl + +def drawpianobracket (expr height) = + u# := 1nhh#/5pt# * 1pt#; + v# := (height/40) * 1pt#; + define_pixels (u, v); +% beginchar (height-firstbrace, 1.25nhh#, 0, 0); + beginchar (height-firstbrace+148, 0, 0, 0); + z1 = origin; + z2 = (4.7u, 7v); + z3 = (3.6u, 16.5v); + z4 = (1.9u, 25v); + z5 = (2.28u, 32v); + z6 = (w, 40v); + penpos1 (max(1,0.1u), 125); + penpos2 (1.2u, 180); + penpos3 (3.2u, 195); + penpos4 (2.5u, 180); + penpos5 (1.14u, 180); + penpos6 (max(2,0.3u), 150); + penstroke z1e{dir 35}..z2e..z3e..z4e..z5e..{dir 60}z6e; + currenttransform := identity reflectedabout ((0,0),(1,0)); + penstroke z1e{dir 35}..z2e..z3e..z4e..z5e..{dir 60}z6e; + currenttransform := identity; +% inserted + currentpicture:=currentpicture shifted (round(-1.75nhh), 0); +% + endchar; +enddef; + +def bigbrace(expr v) = + beginchar (v-firstbrace+148, 0, 0, 0); + " brace vsize "&decimal round(2v*pt#)&"pt"; + vwidth:=v*pt; + hwidth:=max(.1vwidth,3.25pt); + hwidth:=min(hwidth,6.5pt); + actwidth:=.035vwidth; + x1=.25nhw; y1=vwidth; + x2l=-.8hwidth; y2=2/3vwidth; + x3r=.2hwidth; y3=1/3vwidth; + x4=-hwidth; y4=0; + penpos1(max(1,.25pt),-35); + penpos2(1.5med+actwidth,40); + penpos3(1.75med+actwidth,45); + penpos4(max(1,.2pt),-90); + penstroke z1e..z2e..z3e..{left+sw}z4e; + currentpen:= pencircle; draw z1..z2..z3..{left+sw}z4; + addto currentpicture also currentpicture reflectedabout (origin, right); + penlabels(1,2,3,4); + currentpicture:= currentpicture shifted (round(-.75nhh), 0); + endchar; +enddef; + +%!!! comment the line 'bigbrace' and uncomment the line 'drawpianobracket' + +for v=firstbrace upto lastbrace : + bigbrace (v); +% drawpianobracket (v); +endfor; + +end |