From 5de9238f9cba2fb42e9bdf713d8312599a5ad515 Mon Sep 17 00:00:00 2001 From: Phil Holmes Date: Mon, 24 Sep 2012 12:58:05 +0100 Subject: [PATCH] Initial attempt at new mensural C clef --- mf/parmesan-clefs.mf | 226 +++++++++++++------------------------------ scm/parser-clef.scm | 16 ++- 2 files changed, 78 insertions(+), 164 deletions(-) diff --git a/mf/parmesan-clefs.mf b/mf/parmesan-clefs.mf index 34a09cf20b..c2d2cff852 100644 --- a/mf/parmesan-clefs.mf +++ b/mf/parmesan-clefs.mf @@ -521,88 +521,6 @@ def draw_double_brevis (expr exact_center, bwidth, bheight, penlabels (1, 2, 3, 4, 5, 6); enddef; - -% -% Draw three brevis notes; the second one shifted down by `shift', -% the third one by `2 shift'. -% The other parameters are the same as with `draw_brevis'. -% -def draw_triple_brevis (expr exact_center, bwidth, bheight, - blinethickness, shift) = - save brevis_width, brevis_height, linethickness; - - brevis_width# = bwidth; - brevis_height# = bheight; - linethickness# = blinethickness; - - save beam_width, beam_height; - save serif_size, serif_protrude, hole_height; - - beam_width# = 1.4 linethickness#; - hole_height# = 3 linethickness#; - 2 beam_height# + hole_height# = brevis_height#; - serif_size# = (hole_height# - linethickness#) / 2; - serif_protrude# = 1.5 serif_size#; - - save xoffs, yoffs; - - xoffs# = xpart exact_center; - yoffs# = ypart exact_center; - - define_pixels (xoffs, yoffs); - define_pixels (brevis_width, brevis_height, linethickness); - define_pixels (beam_width, beam_height, serif_size, serif_protrude); - - z1l = (xoffs, yoffs - linethickness); - z2r = z1r + serif_size * (1, -1); - z3l = z2l + (-serif_size, -serif_protrude); - - penpos1 (beam_width, 0); - penpos2 (beam_height, 90); - penpos3 (beam_width, 180); - - z7 = z1 shifted (0, -2 shift); - z8 = z2 shifted (0, -2 shift); - z9 = z3 shifted (0, -2 shift); - - penpos7 (beam_width, 0); - penpos8 (beam_height, 90); - penpos9 (beam_width, 180); - - save pat_in, pat_out; - path pat_in, pat_out; - - pat_out := z9r{down} - .. z9l{up} - .. z8l{right}; - pat_out := pat_out - -- reverse pat_out xscaled -1 - shifted (2 xoffs + brevis_width, 0); - pat_out := pat_out - -- reverse pat_out yscaled -1 - shifted (0, -2 yoffs) - -- cycle; - - fill pat_out; - - pat_in := z1r{down} - .. z2r{right}; - pat_in := pat_in - -- reverse pat_in xscaled -1 - shifted (2 xoffs + brevis_width, 0); - pat_in := pat_in - -- reverse pat_in yscaled -1 - shifted (0, 2 yoffs) - -- cycle; - - unfill pat_in; - unfill pat_in shifted (0, -shift); - unfill pat_in shifted (0, -2 shift); - - penlabels (1, 2, 3, 7, 8, 9); -enddef; - - def draw_neomensural_c_clef (expr exact_center, reduction) = save reduced_il, reduced_slt, stem_width; @@ -841,99 +759,87 @@ fet_beginchar ("petrucci c5 clef", "petrucci.c5_change"); fet_endchar; -def draw_mensural_c_clef (expr exact_center, reduction) = - % inspired by Ockeghem, "Missa Prolationum", in: MGG, volume - % 9, table 94. - - save reduced_il; - +def draw_mensural_c_clef (expr exact_center, reduction, fill_char) = + save reduced_il, vert_thick, hor_thick, blot_rad; reduced_il# = staff_space# * reduction; + vert_thick# = linethickness# * 1.4; + hor_thick# = staff_space# * reduction * 0.25; + blot_rad = blot_diameter/2; + + define_pixels (reduced_il, vert_thick, hor_thick); + + pickup pencircle scaled blot_diameter; + + penpos1 (vert_thick, 0); + penpos2 (vert_thick, 0); + penpos3 (hor_thick, 90); + penpos4 (hor_thick, 90); + penpos5 (hor_thick, 90); + penpos6 (hor_thick, 90); + penpos7 (vert_thick, 0); + penpos8 (hor_thick, 90); + + z1l = (0, 0); + x2l = 0; + top y2 = 2.2 reduced_il; + z3 = (vert_thick, 0.75 reduced_il); + z4 = z3 + (reduced_il-vert_thick, 0); + z5 = z4 + (vert_thick, - 0.5 reduced_il); + z6 = z5 - (reduced_il, 0); + z7 = z4 + (0.5 vert_thick, 0.5 reduced_il); + z8 = z5 - (vert_thick, 0); + save pat, pat_mid; + path pat, pat_mid; + pat = z1l + --z2l{up}..z2+(0, blot_rad)..{down}z2r + --top z3r{down}..{right}rt z3r + --lft z4r{right}..{up}top z4r + --z7l{up}..z7+(0, blot_rad)..{down}z7r + --top z5l{down}..{left}lft z5l + --rt z6l{left}..{down}bot z6l + --z1r; + pat := pat -- reverse pat yscaled -1 -- cycle; + fill pat; - define_pixels (reduced_il); - - draw_triple_brevis (exact_center + (0, 0.5 staff_space#), - 2 reduced_il#, 0.8 staff_space#, - 0.8 linethickness#, staff_space); - - save half_reduced_il; - - half_reduced_il# = staff_space# * sqrt (reduction); - - define_pixels (half_reduced_il); - - set_char_box (0 - xpart exact_center, - 2 reduced_il# + xpart exact_center, - 2.2 half_reduced_il# + staff_space# - - 2 ypart exact_center, - 2.2 half_reduced_il# + 2 ypart exact_center); - - save xoffs, yoffs; - - xoffs# = xpart exact_center; - yoffs# = ypart exact_center; - - define_pixels (xoffs, yoffs); - - save ellipse, T; - path ellipse; - transform T; - - T := identity xscaled 1.4 linethickness - yscaled blot_diameter; - pickup pencircle transformed T; - ellipse := fullcircle transformed T; - - lft x11 = lft x13 = xoffs; - top y11 = yoffs + 2.2 half_reduced_il; - bot y13 = yoffs - 2.2 half_reduced_il - staff_space; - rt x15 = rt x17 = xoffs + brevis_width; - y15 = yoffs + 1.4 half_reduced_il; - y17 = yoffs - 1.4 half_reduced_il - staff_space; - - z12 = z14 yscaled -1 shifted (0, -staff_space); - z14 = z9; - z16 = z18 yscaled -1 shifted (0, -staff_space); - rt z18 = lft z14 shifted (brevis_width, 0); + if fill_char: + pat_mid = bot z3l{up}..{right}rt z3l + --lft z4l{right}..{down}bot z4l + --top z8r{down}..{left}lft z8r + --rt z6r{left}..{up}top z6r + --cycle; + unfill pat_mid; + pat_mid := pat_mid shifted (0, -reduced_il); + unfill pat_mid; + fi; - penpos12 (1.4 linethickness, 0); - penpos14 (1.4 linethickness, 0); - penpos16 (1.4 linethickness, 0); - penpos18 (1.4 linethickness, 0); + set_char_box (0, reduced_il# + vert_thick#, + 2.2 reduced_il#, + 2.2 reduced_il#); - fill get_subpath (ellipse, up, down, z11) - -- z12l - -- z12r - -- cycle; - fill get_subpath (ellipse, down, up, z13) - -- z14r - -- z14l - -- cycle; - fill get_subpath (ellipse, up, down, z15) - -- z16l - -- z16r - -- cycle; - fill get_subpath (ellipse, down, up, z17) - -- z18r - -- z18l - -- cycle; - - labels (11, 13, 15, 17); - penlabels (12, 14, 16, 18); + penlabels (1,2,3,4,5,6,7,8); enddef; - fet_beginchar ("mensural c clef", "mensural.c"); if test = 1: draw_staff (-1, 3, 0.0); fi; - draw_mensural_c_clef ((0, 0), 1.0); + draw_mensural_c_clef ((0, 0), 1.0, true); fet_endchar; - fet_beginchar ("mensural c clef", "mensural.c_change"); - draw_mensural_c_clef ((0, 0), .8); + draw_mensural_c_clef ((0, 0), .8, true); fet_endchar; +fet_beginchar ("black mensural c clef", "blackmensural.c"); + if test = 1: + draw_staff (-1, 3, 0.0); + fi; + draw_mensural_c_clef ((0, 0), 1.0, false); +fet_endchar; + +fet_beginchar ("black mensural c clef", "blackmensural.c_change"); + draw_mensural_c_clef ((0, 0), 0.8, false); +fet_endchar; def draw_diamond (expr exact_center, reduction) = save stem_width, reduced_nht, holeheight, beamheight; diff --git a/scm/parser-clef.scm b/scm/parser-clef.scm index 6d46cc626c..f0a79c518f 100644 --- a/scm/parser-clef.scm +++ b/scm/parser-clef.scm @@ -57,16 +57,23 @@ ("hufnagel-fa1" . ("clefs.hufnagel.fa" -1 0)) ("hufnagel-fa2" . ("clefs.hufnagel.fa" 1 0)) ("hufnagel-do-fa" . ("clefs.hufnagel.do.fa" 4 0)) - ("mensural-c1" . ("clefs.mensural.c" -2 0)) - ("mensural-c2" . ("clefs.mensural.c" 0 0)) - ("mensural-c3" . ("clefs.mensural.c" 2 0)) - ("mensural-c4" . ("clefs.mensural.c" 4 0)) + ("mensural-c1" . ("clefs.mensural.c" -4 0)) + ("mensural-c2" . ("clefs.mensural.c" -2 0)) + ("mensural-c3" . ("clefs.mensural.c" 0 0)) + ("mensural-c4" . ("clefs.mensural.c" 2 0)) + ("mensural-c5" . ("clefs.mensural.c" 4 0)) + ("blackmensural-c1" . ("clefs.blackmensural.c" -4 0)) + ("blackmensural-c2" . ("clefs.blackmensural.c" -2 0)) + ("blackmensural-c3" . ("clefs.blackmensural.c" 0 0)) + ("blackmensural-c4" . ("clefs.blackmensural.c" 2 0)) + ("blackmensural-c5" . ("clefs.blackmensural.c" 4 0)) ("mensural-f" . ("clefs.mensural.f" 2 0)) ("mensural-g" . ("clefs.mensural.g" -2 0)) ("neomensural-c1" . ("clefs.neomensural.c" -4 0)) ("neomensural-c2" . ("clefs.neomensural.c" -2 0)) ("neomensural-c3" . ("clefs.neomensural.c" 0 0)) ("neomensural-c4" . ("clefs.neomensural.c" 2 0)) + ("neomensural-c5" . ("clefs.neomensural.c" 4 0)) ("petrucci-c1" . ("clefs.petrucci.c1" -4 0)) ("petrucci-c2" . ("clefs.petrucci.c2" -2 0)) ("petrucci-c3" . ("clefs.petrucci.c3" 0 0)) @@ -97,6 +104,7 @@ ("clefs.mensural.c" . 0) ("clefs.mensural.f" . 4) ("clefs.mensural.g" . -4) + ("clefs.blackmensural.c" . 0) ("clefs.neomensural.c" . 0) ("clefs.petrucci.c1" . 0) ("clefs.petrucci.c2" . 0) -- 2.39.5