X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=mf%2Ffeta-bolletjes.mf;h=b45222e4cc6d06f6b2d00a79bcd7cafcb95fcc97;hb=3d17d722356a0190c43c17fbf4ad3f1c4b4f66d5;hp=0eb46ae98cfa36dd8a9ccb8c1a240b7260b04274;hpb=75eebcb49e52d296b1da3e1074e0825d2c780db4;p=lilypond.git diff --git a/mf/feta-bolletjes.mf b/mf/feta-bolletjes.mf index 0eb46ae98c..b45222e4cc 100644 --- a/mf/feta-bolletjes.mf +++ b/mf/feta-bolletjes.mf @@ -26,8 +26,14 @@ picture remember_pic; %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% save black_notehead_width, noteheight; -save slash_thick, slash_slope, overdone_heads; -numeric black_notehead_width, noteheight, slash_thick; +save half_notehead_width, whole_notehead_width, slash_thick; +save slash_slope, overdone_heads, solfa_noteheight; + +numeric noteheight; +numeric slash_thick; +numeric black_notehead_width; +numeric whole_notehead_width; +numeric half_notehead_width; fet_begingroup ("noteheads"); @@ -48,6 +54,12 @@ slash_thick# := 2/3 * 0.48 staff_space#; overdone_heads = 0.0; noteheight# := staff_space# + (1 + overdone_heads) * stafflinethickness#; + +% +% solfa heads should not overlap on chords. +% +solfa_noteheight# := staff_space# - stafflinethickness#; + define_pixels (slash_thick); define_whole_vertical_pixels (noteheight); @@ -133,6 +145,77 @@ endgroup; enddef; +% +% dimensions aren't entirely right. +% +def draw_longa (expr up) = + save stemthick, fudge; + + stemthick# = 2 stafflinethickness#; + define_whole_blacker_pixels (stemthick); + + fudge = hround (blot_diameter / 2); + + draw_outside_ellipse (1.80, 0, 0.707, 0); + undraw_inside_ellipse (1.30, 125, 0.68, 2 stafflinethickness#); + + pickup pencircle scaled stemthick; + + if up: + bot y1 = -d; + y2 = h; + rt x1 - fudge = 0; + x1 = x2; + + fudge + lft x3 = w; + x4 = x3; + top y4 = h + 3.0 staff_space; + y3 = y1; + else: + bot y1 = -d - 3.0 staff_space; + top y2 = h; + rt x1 - fudge = 0; + x1 = x2; + + fudge + lft x3 = w; + x4 = x3; + y4 = y2; + bot y3 = -d; + fi; + + draw_gridline (z1, z2, stemthick); + draw_gridline (z3, z4, stemthick); +enddef; + + +fet_beginchar ("Longa notehead", "u-2"); + draw_longa (true); + + draw_staff (-2, 2, 0); +fet_endchar; + +fet_beginchar ("Longa notehead", "d-2"); + draw_longa (false); + + draw_staff (-2, 2, 0); +fet_endchar; + + +if test > 0: + fet_beginchar ("Longa notehead", "u-2"); + draw_longa (true); + + draw_staff (-2, 2, 0.5); + fet_endchar; + + fet_beginchar ("Longa notehead", "d-2"); + draw_longa (false); + + draw_staff (-2, 2, 0.5); + fet_endchar; +fi; + + % % dimensions aren't entirely right. % @@ -185,6 +268,8 @@ fet_beginchar ("Whole notehead", "s0"); undraw_inside_ellipse (1.30, 125 - puff_up_factor * 10, 0.68, 2 stafflinethickness#); + whole_notehead_width# := charwd; + draw_staff (-2, 2, 0); fet_endchar; @@ -205,6 +290,8 @@ fet_beginchar ("Half notehead", "s1"); draw_outside_ellipse (1.53 - puff_up_factor / 3.0, 34, 0.66, 0.17); undraw_inside_ellipse (3.25, 33, 0.81, 2.5 stafflinethickness#); + half_notehead_width# := charwd; + draw_staff (-2, 2, 0); fet_endchar; @@ -319,6 +406,9 @@ endgroup enddef; +% +% UGH: xs not declared as argument. +% def define_triangle_shape (expr stemdir) = save triangle_a, triangle_b, triangle_c; save triangle_out_a, triangle_out_b, triangle_out_c; @@ -355,7 +445,7 @@ def define_triangle_shape (expr stemdir) = set_char_box (0, width#, depth#, height#); % Formerly, the shape has simply been drawn with an elliptical pen - % (`scaled pen_thick xsaled xs'), but the envelope of such a curve + % (`scaled pen_thick xscaled xs'), but the envelope of such a curve % is of 6th degree. For the sake of mf2pt1, we approximate it. pickup pencircle scaled pen_thick xscaled xs; @@ -428,10 +518,10 @@ def define_triangle_shape (expr stemdir) = % attachment Y if stemdir = 1: charwy := ypart exact_right_point; - charwx := xpart exact_right_point; + charwx := xpart exact_right_point + .5 pen_thick# * xs; else: charwy := -ypart exact_down_point; - charwx := (width# - xpart exact_down_point); + charwx := width# - (xpart exact_down_point - .5 pen_thick# * xs); fi enddef; @@ -486,14 +576,14 @@ def draw_small_triangle_head (expr dir) = enddef; -fet_beginchar ("Half trianglehead", "d1triangle"); +fet_beginchar ("Half trianglehead (downstem)", "d1triangle"); draw_small_triangle_head (-1); draw_staff (-2, 2, 0); fet_endchar; -fet_beginchar ("Half trianglehead", "u1triangle"); +fet_beginchar ("Half trianglehead (upstem)", "u1triangle"); draw_small_triangle_head (1); draw_staff (-2, 2, 0.5); @@ -514,14 +604,14 @@ def draw_closed_triangle_head (expr dir) = enddef; -fet_beginchar ("Quart trianglehead", "u2triangle"); +fet_beginchar ("Quart trianglehead (upstem)", "u2triangle"); draw_closed_triangle_head (1); draw_staff (-2, 2, 0); fet_endchar; -fet_beginchar ("Quart trianglehead", "d2triangle"); +fet_beginchar ("Quart trianglehead (downstem)", "d2triangle"); draw_closed_triangle_head (-1); draw_staff (-2, 2, 0.5); @@ -881,14 +971,16 @@ fi; % save solfa_pen_thick; -solfa_pen_thick# = 2 stafflinethickness#; +solfa_pen_thick# = 1.75 stafflinethickness#; define_blacker_pixels (solfa_pen_thick); -solfa_whole_width := 1.8; -solfa_half_width := 1.35; -solfa_quarter_width := 1.35; +save solfa_base_notewidth; +solfa_base_notewidth# := black_notehead_width#; +solfa_whole_width := whole_notehead_width# / black_notehead_width#; +solfa_half_width := half_notehead_width# / black_notehead_width#; +solfa_quarter_width := 1.0; def draw_do_head (expr width_factor, dir) = save p_in, p_out; @@ -896,8 +988,8 @@ def draw_do_head (expr width_factor, dir) = path p_in, p_out; pair left_dist, right_dist; - set_char_box (0, width_factor * noteheight#, - 0.5 noteheight#, 0.5 noteheight#); + set_char_box (0, width_factor * solfa_base_notewidth#, + 0.5 solfa_noteheight#, 0.5 solfa_noteheight#); pickup pencircle scaled solfa_pen_thick; @@ -986,8 +1078,8 @@ def draw_re_head (expr width_factor, dir) = save p_in, p_out; path p_in, p_out; - set_char_box (0, width_factor * noteheight#, - 0.5 noteheight#, 0.5 noteheight#); + set_char_box (0, width_factor * solfa_base_notewidth#, + 0.5 solfa_noteheight#, 0.5 solfa_noteheight#); pickup pencircle scaled solfa_pen_thick; @@ -1070,8 +1162,8 @@ def draw_mi_head (expr width_factor) = path path_out, path_in; pair ne_dist, se_dist, ne, se; - set_char_box (0, width_factor * noteheight#, - 0.5 noteheight#, 0.5 noteheight#); + set_char_box (0, width_factor * solfa_base_notewidth#, + 0.5 solfa_noteheight#, 0.5 solfa_noteheight#); pickup pencircle scaled solfa_pen_thick; @@ -1132,21 +1224,21 @@ fet_endchar; fet_beginchar ("Half mihead", "s1mi"); - draw_mi_head (1.6); + draw_mi_head (solfa_quarter_width); fill path_out; unfill path_in; fet_endchar; fet_beginchar ("Quart mihead", "s2mi"); - draw_mi_head (1.65); + draw_mi_head (solfa_quarter_width); fill path_out; fet_endchar; def draw_fa_head (expr width_factor) = - set_char_box (0, width_factor * noteheight#, - 0.5 noteheight#, 0.5 noteheight#); + set_char_box (0, width_factor * solfa_base_notewidth#, + 0.5 solfa_noteheight#, 0.5 solfa_noteheight#); save p_down_in, p_down_out, p_up_in, p_up_out, nw_dist, nw; path p_down_in, p_down_out, p_up_in, p_up_out; @@ -1236,8 +1328,8 @@ fet_endchar; def draw_la_head (expr width_factor) = - set_char_box (0, width_factor * noteheight#, - 0.5 noteheight#, 0.5 noteheight#); + set_char_box (0, width_factor * solfa_base_notewidth#, + 0.5 solfa_noteheight#, 0.5 solfa_noteheight#); save p_in, p_out; path p_in, p_out; @@ -1295,8 +1387,8 @@ fet_endchar; def draw_ti_head (expr width_factor, dir) = - set_char_box (0, width_factor * noteheight#, - 0.5 noteheight#, 0.5 noteheight#); + set_char_box (0, width_factor * solfa_base_notewidth#, + 0.5 solfa_noteheight#, 0.5 solfa_noteheight#); save p_in, p_out, p_top; save nw_dist, sw_dist, nw, sw; path p_in, p_out, p_top;