% -*- Fundamental -*- (emacs-20 mf mode mucks % feta-slag.mf -- implement trill symbols % % source file of the Feta (defintively not an abbreviation for Font-En-Tja) % music font % % (c) 1998--2000 Jan Nieuwenhuizen % % this file is included by feta-scripts.mf tfat := 1/2; %twidth# := 0.5staff_space#; %theight# := 0.55staff_space#; % tthin# := stafflinethickness#; tthin# := 1.6stafflinethickness#; twidth# := 2/3staff_space#; theight# := 1/2staff_space#; % uhg/ uhuh? % toverlap# := tfat*twidth#+tthin#; toverlap# := tfat*twidth#+0.45tthin#; define_pixels(twidth,theight,tthin,toverlap); def draw_trillelement = save x, y; pickup pencircle scaled tthin; lft x1 = -twidth; % x3 = -1/3*twidth; x3 = -0.3*twidth; top y3 = theight; z3 - z1 = whatever * (0.5twidth, theight); z2 = tfat[z3, z1]; path p; p = z3 -- z2 -- z1 -- z2; p := p -- (p scaled -1) -- cycle; filldraw p; labels(1,2,3); enddef; def draw_trill_two = draw_trillelement; currentpicture := currentpicture shifted (-2*twidth+toverlap, 0); draw_trillelement; currentpicture := currentpicture shifted (twidth-0.5toverlap, 0); enddef; def draw_trill_three = draw_trillelement; currentpicture := currentpicture shifted (-2*twidth+toverlap, 0); draw_trillelement; currentpicture := currentpicture shifted (-2*twidth+toverlap, 0); draw_trillelement; currentpicture := currentpicture shifted (2twidth-toverlap, 0); enddef; def draw_trill_four = draw_trillelement; currentpicture := currentpicture shifted (-2*twidth+toverlap, 0); draw_trillelement; currentpicture := currentpicture shifted (-2*twidth+toverlap, 0); draw_trillelement; currentpicture := currentpicture shifted (-2*twidth+toverlap, 0); draw_trillelement; currentpicture := currentpicture shifted (3twidth-1.5toverlap, 0); enddef; def draw_mordent(expr a) = pickup pencircle scaled tthin; save x, y; top y1 = 4/3theight; x1 = x2 = a; y2 = - y1; draw z1 -- z2; enddef; fet_beginchar("trilelement", "trilelement", "trilelement") % set_char_box(twidth#, twidth#, theight#, theight#); set_char_box(twidth#, twidth#-toverlap#, theight#, theight#); draw_trillelement; fet_endchar; fet_beginchar("prall", "prall", "prall") trills := 2; set_char_box(trills*twidth#-0.5toverlap#, trills*twidth#-0.5toverlap#, theight#, theight#); draw_trill_two; fet_endchar; fet_beginchar("mordent", "mordent", "mordent") trills := 2; set_char_box(trills*twidth#-0.5toverlap#, trills*twidth#-0.5toverlap#, theight#, theight#); draw_trill_two; draw_mordent(0); fet_endchar; % in modern typesetting, i've seen these double symbols implemented % as three trills rather than the actual double four [gerou and lusk]. % it looks nicer and i don't think it introduces ambiguity. % would like to have more references -- jcn. fet_beginchar("prallprall", "prallprall", "prallprall") trills := 3; set_char_box(trills*twidth#-(trills-1)*0.5toverlap#, trills*twidth#-(trills-1)*0.5toverlap#, theight#, theight#); draw_trill_three; fet_endchar; fet_beginchar("prallmordent", "prallmordent", "prallmordent") trills := 3; set_char_box(trills*twidth#-(trills-1)*0.5toverlap#, trills*twidth#-(trills-1)*0.5toverlap#, theight#, theight#); draw_trill_three; draw_mordent(twidth-0.5toverlap); fet_endchar; input feta-sleur; % % URG. The attached slurs look weird, and discontinuous in their connection to the % main part. --hwn fet_beginchar("upprall", "upprall", "upprall") % trills := 4; trills := 3; set_char_box(trills*twidth#-(trills-1)*0.5toverlap#, trills*twidth#-(trills-1)*0.5toverlap#, theight#, theight#); % draw_slur(-2twidth#,-2theight#,0,-1); % currentpicture := currentpicture shifted (-0.5w+tthin,-tfat*theight+0.75tthin); draw_slur(0,-2theight#,0,-1); % currentpicture := currentpicture shifted (-0.5w+1.3tthin,-tfat*theight+1.5tthin); currentpicture := currentpicture shifted (-0.5w+1.65tthin,-tfat*theight+1.15tthin); % draw_trill_four; draw_trill_three; fet_endchar; fet_beginchar("downprall", "downprall", "downprall") trills := 3; set_char_box(trills*twidth#-(trills-1)*0.5toverlap#, trills*twidth#-(trills-1)*0.5toverlap#, theight#, theight#); % draw_slur(-2twidth#,2theight#,0,1); draw_slur(0,2theight#,0,1); % currentpicture := currentpicture shifted (-0.5w+tthin,-tfat*theight+0.75tthin); currentpicture := currentpicture shifted (-0.5w+tthin,-tfat*theight+0.5tthin); draw_trill_three; fet_endchar;