From c761573d85f37ddbb08415bc558e0742554662ae Mon Sep 17 00:00:00 2001 From: Werner Lemberg Date: Wed, 15 Feb 2012 08:29:49 +0100 Subject: [PATCH] [mf] Improve comments; fix minor typos; formatting. --- mf/feta-ties.mf | 16 +- mf/parmesan-accidentals.mf | 52 ++++-- mf/parmesan-clefs.mf | 18 +- mf/parmesan-dots.mf | 17 +- mf/parmesan-noteheads.mf | 327 ++++++++++++++++++++++++++----------- mf/parmesan-scripts.mf | 95 ++++++----- 6 files changed, 350 insertions(+), 175 deletions(-) diff --git a/mf/feta-ties.mf b/mf/feta-ties.mf index 784f50bbaa..62702e92ff 100644 --- a/mf/feta-ties.mf +++ b/mf/feta-ties.mf @@ -27,6 +27,7 @@ max_height := .4 staff_space#; thin := 1.2 linethickness; thick := 2 linethickness; + def draw_lyric_tie (expr width_sharp) = save padding, angularity, width, height, depth; @@ -34,11 +35,10 @@ def draw_lyric_tie (expr width_sharp) = angularity := 2.5; width# := max (min (width_sharp, max_width), min_width); height# := (max (width# - min_width, 0) / (max_width - min_width)) - [min_height, max_height]; + [min_height, max_height]; depth# := padding# + height#; - set_char_box (0, 0, - depth#, 0); + set_char_box (0, 0, depth#, 0); define_pixels (width, padding); @@ -51,18 +51,20 @@ def draw_lyric_tie (expr width_sharp) = penpos3 (thin, angularity * angle (z3 - z2) + 90); fill z2l - .. simple_serif (z3l, z3r, 90) - .. z2r - .. simple_serif (z1r, z1l, 90) - .. cycle; + .. simple_serif (z3l, z3r, 90) + .. z2r + .. simple_serif (z1r, z1l, 90) + .. cycle; penlabels (1, 2, 3); enddef; + fet_beginchar ("Short lyric tie", "lyric.short"); draw_lyric_tie (1.25 staff_space#); fet_endchar; + fet_beginchar ("Default lyric tie", "lyric.default"); draw_lyric_tie (1.75 staff_space#); fet_endchar; diff --git a/mf/parmesan-accidentals.mf b/mf/parmesan-accidentals.mf index 7c081a995f..956fffcbaa 100644 --- a/mf/parmesan-accidentals.mf +++ b/mf/parmesan-accidentals.mf @@ -392,43 +392,59 @@ fet_beginchar ("Hufnagel Flat" , "hufnagelM1"); labels (1, 2, 3, 4, 5, 6); fet_endchar; + %%%%%%%%%%%%%%% %%% %%% Glyphs for Kievan Music Notation %%% %%%%%%%%%%%%%%% + fet_beginchar ("kievan sharp", "kievan1"); - % this draws the sharp - % the sharp never occurs in Synodal music. - % It can only be found in some early manuscripts + % This draws the sharp. + % It never occurs in Synodal music and + % can only be found in some early manuscripts. + z1 = (0.579 staff_space, 1.459 staff_space); z2 = (1.414 staff_space, -0.904 staff_space); z3 = (0.187 staff_space, 0.904 staff_space); + x2 - x1 = x4 - x3; y1 - y2 = y3 - y4; + z5 = (1.296 staff_space, 1.613 staff_space); z6 = (0.090 staff_space, -0.864 staff_space); z7 = (1.532 staff_space, 0.892 staff_space); + x5 - x6 = x7 - x8; y5 - y6 = y7 - y8; + pickup pensquare xscaled 0.167staff_space yscaled 0.167staff_space rotated -69.2; - draw z1{dir -69.2} .. {dir -74.1}z2; - draw z3{dir -69.2} .. {dir -74.1}z4; + draw z1{dir -69.2} + .. {dir -74.1}z2; + draw z3{dir -69.2} + .. {dir -74.1}z4; + pickup pensquare xscaled 0.167staff_space yscaled 0.167staff_space rotated -114.6; - draw z5{dir -114.6} ... {dir -125.0}z6; - draw z7{dir -114.6} ... {dir -125.0}z8; - set_char_box (0, 1.6 staff_space#, 1.6 staff_space#, 1.6 staff_space#); + draw z5{dir -114.6} + ... {dir -125.0}z6; + draw z7{dir -114.6} + ... {dir -125.0}z8; + + set_char_box (0, 1.6 staff_space#, + 1.6 staff_space#, 1.6 staff_space#); fet_endchar; + fet_beginchar ("kievan flat", "kievanM1"); - % this draws the flat sign + % This draws the flat sign. % In Synodal music, the flat only occurs on the high B - % but it may be used elsewhere in early manuscripts + % but it may be used elsewhere in early manuscripts. + z1 = (0.452 staff_space, 1.772 staff_space); z2 = (0.481 staff_space, 1.735 staff_space); z3 = (0.464 staff_space, 1.626 staff_space); @@ -444,6 +460,7 @@ fet_beginchar ("kievan flat", "kievanM1"); z13 = (0.338 staff_space, -1.063 staff_space); z14 = (0.016 staff_space, 0.196 staff_space); z15 = (0.204 staff_space, 1.316 staff_space); + fill z13 .. z14{up} .. z15{dir 70.8} @@ -459,10 +476,17 @@ fet_beginchar ("kievan flat", "kievanM1"); & z11 -- z12 & z12 -- z13 & z13 -- cycle; - fill z7{up} .. z8 .. {dir 23}z9 - & z9 .. z10{dir -135} .. {down}z11 - & z11 -- cycle; - set_char_box (0, 1.0 staff_space#, 1.0 staff_space#, 1.8 staff_space#); + fill z7{up} + .. z8 + .. {dir 23}z9 + & z9 + .. z10{dir -135} + .. {down}z11 + & z11 + -- cycle; + + set_char_box (0, 1.0 staff_space#, + 1.0 staff_space#, 1.8 staff_space#); fet_endchar; fet_endgroup ("accidentals"); diff --git a/mf/parmesan-clefs.mf b/mf/parmesan-clefs.mf index 2af7b9fdd0..1da30906bb 100644 --- a/mf/parmesan-clefs.mf +++ b/mf/parmesan-clefs.mf @@ -1700,6 +1700,7 @@ fet_beginchar ("Hufnagel do/fa clef", "hufnagel.do.fa_change"); draw_hufnagel_do_fa_clef ((0, 0), .8); fet_endchar; + %%%%%%%% %% %% Medieval East-Slavic (Kievan) Notation clefs @@ -1712,15 +1713,20 @@ def draw_kievan_do_clef = z2 = (1.063 staff_space, -0.122 staff_space); z3 = (1.467 staff_space, -1.621 staff_space); z4 = (1.002 staff_space, -2.253 staff_space); + y5 = y3; x4 - x5 = x3 - x4; + z6 = (0.917 staff_space, -0.383 staff_space); z7 = (0.012 staff_space, -0.448 staff_space); z8 = (0, -0.167 staff_space); z9 = (0.057 staff_space, 0.464 staff_space); z10 = (0.994 staff_space, 0.387 staff_space); z11 = (1.023 staff_space, 0.554 staff_space); - fill z1 .. z2{down} .. z3 + + fill z1 + .. z2{down} + .. z3 & z3 -- z4 & z4 -- z5 & z5 .. {up}z6 @@ -1729,15 +1735,19 @@ def draw_kievan_do_clef = & z9 .. {right}z10 & z10 .. z11 & z11 -- cycle; - set_char_box (0, 1.5 staff_space#, 2.25 staff_space#, 0.55 staff_space#); + + set_char_box (0, 1.5 staff_space#, + 2.25 staff_space#, 0.55 staff_space#); enddef; + fet_beginchar ("kievan tsefaut clef", "kievan.do"); - % this draws the Tse-Fa-Ut clef - % it is a variant alto clef that always occurs on the third line of the staff + % This draws the Tse-Fa-Ut clef; it is a variant alto clef that + % always occurs on the third line of the staff. draw_kievan_do_clef; fet_endchar; + fet_beginchar ("mensural c clef", "kievan.do_change"); % This is the same thing as a do clef? draw_kievan_do_clef; diff --git a/mf/parmesan-dots.mf b/mf/parmesan-dots.mf index 1c09d51efb..4323623ffb 100644 --- a/mf/parmesan-dots.mf +++ b/mf/parmesan-dots.mf @@ -35,24 +35,29 @@ fet_beginchar ("duration dot", "dotvaticana"); set_char_box (0, dot_diam#, .5 dot_diam#, .5 dot_diam#); fet_endchar; + %%%%%%%%%%%%% %%% %%% Code for Kievan Music Notation %%% %%%%%%%%%%%%% + save kievan_dot_diam; kievan_dot_diam# := staff_space# - stafflinethickness#; define_whole_pixels (kievan_dot_diam); + fet_beginchar ("kievan augmentation dot", "dotkievan"); - % pars for superellipse are right, top, left, bottom - fill superellipse((kievan_dot_diam, 0), - (kievan_dot_diam / 2, kievan_dot_diam / 2), - (0, 0), - (kievan_dot_diam / 2, -kievan_dot_diam / 2), + % parameters for superellipse are right, top, left, bottom + fill superellipse ((kievan_dot_diam, 0), + (kievan_dot_diam / 2, kievan_dot_diam / 2), + (0, 0), + (kievan_dot_diam / 2, -kievan_dot_diam / 2), 0.51); - set_char_box (0, kievan_dot_diam#, 0.5 kievan_dot_diam#, 0.5 kievan_dot_diam#); + + set_char_box (0, kievan_dot_diam#, + 0.5 kievan_dot_diam#, 0.5 kievan_dot_diam#); fet_endchar; fet_endgroup ("dots"); diff --git a/mf/parmesan-noteheads.mf b/mf/parmesan-noteheads.mf index 12fd9322f7..cadcbceb2d 100644 --- a/mf/parmesan-noteheads.mf +++ b/mf/parmesan-noteheads.mf @@ -383,9 +383,9 @@ def draw_mensural_longa (expr wid, holeheight, open, full, direction, ligature) penpos6 (stem_width, 0); if ligature: - penpos7 (stem_width, 0); + penpos7 (stem_width, 0); else: - penpos7 (1.5 stem_width, 0); + penpos7 (1.5 stem_width, 0); fi; fill z7l @@ -473,58 +473,87 @@ m_brevis_width := m_longa_width; m_holeheight := nm_holeheight; m_red_holeheight := nm_red_holeheight; + fet_beginchar ("Mensural maxima notehead (up)", "uM3mensural"); - draw_mensural_longa (m_maxima_width, m_holeheight, true, true, 1, false); + draw_mensural_longa (m_maxima_width, m_holeheight, + true, true, 1, false); fet_endchar; + fet_beginchar ("Mensural maxima notehead (down)", "dM3mensural"); - draw_mensural_longa (m_maxima_width, m_holeheight, true, true, -1, false); + draw_mensural_longa (m_maxima_width, m_holeheight, + true, true, -1, false); fet_endchar; + fet_beginchar ("Mensural maxima notehead (ligature)", "sM3ligmensural"); draw_mensural_brevis (m_maxima_width, m_holeheight, true, true); fet_endchar; + fet_beginchar ("Mensural longa notehead (up)", "uM2mensural"); - draw_mensural_longa (m_longa_width, m_holeheight, true, true, 1, false); + draw_mensural_longa (m_longa_width, m_holeheight, + true, true, 1, false); fet_endchar; + fet_beginchar ("Mensural longa notehead (down)", "dM2mensural"); - draw_mensural_longa (m_longa_width, m_holeheight, true, true, -1, false); + draw_mensural_longa (m_longa_width, m_holeheight, + true, true, -1, false); fet_endchar; fet_beginchar ("Mensural longa notehead (ligature)", "sM2ligmensural"); - draw_mensural_longa (m_longa_width, m_holeheight, true, true, -1, true); + draw_mensural_longa (m_longa_width, m_holeheight, + true, true, -1, true); fet_endchar; + fet_beginchar ("Mensural brevis notehead", "sM1mensural"); draw_mensural_brevis (m_brevis_width, m_holeheight, true, true); fet_endchar; -fet_beginchar ("Mensural maxima notehead (up, reduced hole)", "urM3mensural"); - draw_mensural_longa (m_maxima_width, m_red_holeheight, true, true, 1, false); + +fet_beginchar ("Mensural maxima notehead (up, reduced hole)", + "urM3mensural"); + draw_mensural_longa (m_maxima_width, m_red_holeheight, + true, true, 1, false); fet_endchar; -fet_beginchar ("Mensural maxima notehead (down, reduced hole)", "drM3mensural"); - draw_mensural_longa (m_maxima_width, m_red_holeheight, true, true, -1, false); + +fet_beginchar ("Mensural maxima notehead (down, reduced hole)", + "drM3mensural"); + draw_mensural_longa (m_maxima_width, m_red_holeheight, + true, true, -1, false); fet_endchar; -fet_beginchar ("Mensural maxima notehead (ligature, reduced hole)", "srM3ligmensural"); + +fet_beginchar ("Mensural maxima notehead (ligature, reduced hole)", + "srM3ligmensural"); draw_mensural_brevis (m_maxima_width, m_red_holeheight, true, true); fet_endchar; -fet_beginchar ("Mensural longa notehead (up, reduced hole)", "urM2mensural"); - draw_mensural_longa (m_longa_width, m_red_holeheight, true, true, 1, false); + +fet_beginchar ("Mensural longa notehead (up, reduced hole)", + "urM2mensural"); + draw_mensural_longa (m_longa_width, m_red_holeheight, + true, true, 1, false); fet_endchar; -fet_beginchar ("Mensural longa notehead (down, reduced hole)", "drM2mensural"); - draw_mensural_longa (m_longa_width, m_red_holeheight, true, true, -1, false); + +fet_beginchar ("Mensural longa notehead (down, reduced hole)", + "drM2mensural"); + draw_mensural_longa (m_longa_width, m_red_holeheight, + true, true, -1, false); fet_endchar; -fet_beginchar ("Mensural longa notehead (ligature, reduced hole)", "srM2ligmensural"); - draw_mensural_longa (m_longa_width, m_red_holeheight, true, true, -1, true); + +fet_beginchar ("Mensural longa notehead (ligature, reduced hole)", + "srM2ligmensural"); + draw_mensural_longa (m_longa_width, m_red_holeheight, + true, true, -1, true); fet_endchar; + fet_beginchar ("Mensural brevis notehead (reduced hole)", "srM1mensural"); draw_mensural_brevis (m_brevis_width, m_red_holeheight, true, true); fet_endchar; @@ -534,59 +563,95 @@ fet_endchar; % Semi-colored mensural/Petrucci maxima/longa/brevis % -fet_beginchar ("Semi-colored mensural maxima notehead (up)", "uM3semimensural"); - draw_mensural_longa (m_maxima_width, m_holeheight, true, false, 1, false); +fet_beginchar ("Semi-colored mensural maxima notehead (up)", + "uM3semimensural"); + draw_mensural_longa (m_maxima_width, m_holeheight, + true, false, 1, false); fet_endchar; -fet_beginchar ("Semi-colored mensural maxima notehead (down)", "dM3semimensural"); - draw_mensural_longa (m_maxima_width, m_holeheight, true, false, -1, false); + +fet_beginchar ("Semi-colored mensural maxima notehead (down)", + "dM3semimensural"); + draw_mensural_longa (m_maxima_width, m_holeheight, + true, false, -1, false); fet_endchar; -fet_beginchar ("Semi-colored mensural maxima notehead (ligature)", "sM3semiligmensural"); + +fet_beginchar ("Semi-colored mensural maxima notehead (ligature)", + "sM3semiligmensural"); draw_mensural_brevis (m_maxima_width, m_holeheight, true, false); fet_endchar; -fet_beginchar ("Semi-colored mensural longa notehead (up)", "uM2semimensural"); - draw_mensural_longa (m_longa_width, m_holeheight, true, false, 1, false); + +fet_beginchar ("Semi-colored mensural longa notehead (up)", + "uM2semimensural"); + draw_mensural_longa (m_longa_width, m_holeheight, + true, false, 1, false); fet_endchar; -fet_beginchar ("Semi-colored mensural longa notehead (down)", "dM2semimensural"); - draw_mensural_longa (m_longa_width, m_holeheight, true, false, -1, false); + +fet_beginchar ("Semi-colored mensural longa notehead (down)", + "dM2semimensural"); + draw_mensural_longa (m_longa_width, m_holeheight, + true, false, -1, false); fet_endchar; -fet_beginchar ("Semi-colored mensural longa notehead (ligature)", "sM2semiligmensural"); - draw_mensural_longa (m_longa_width, m_holeheight, true, false, -1, true); + +fet_beginchar ("Semi-colored mensural longa notehead (ligature)", + "sM2semiligmensural"); + draw_mensural_longa (m_longa_width, m_holeheight, + true, false, -1, true); fet_endchar; + fet_beginchar ("Semi-colored mensural brevis notehead", "sM1semimensural"); draw_mensural_brevis (m_brevis_width, m_holeheight, true, false); fet_endchar; -fet_beginchar ("Semi-colored mensural maxima notehead (up, reduced hole)", "urM3semimensural"); - draw_mensural_longa (m_maxima_width, m_red_holeheight, true, false, 1, false); + +fet_beginchar ("Semi-colored mensural maxima notehead (up, reduced hole)", + "urM3semimensural"); + draw_mensural_longa (m_maxima_width, m_red_holeheight, + true, false, 1, false); fet_endchar; -fet_beginchar ("Semi-colored mensural maxima notehead (down, reduced hole)", "drM3semimensural"); - draw_mensural_longa (m_maxima_width, m_red_holeheight, true, false, -1, false); + +fet_beginchar ("Semi-colored mensural maxima notehead (down, reduced hole)", + "drM3semimensural"); + draw_mensural_longa (m_maxima_width, m_red_holeheight, + true, false, -1, false); fet_endchar; -fet_beginchar ("Semi-colored mensural maxima notehead (ligature, reduced hole)", "srM3semiligmensural"); + +fet_beginchar ("Semi-colored mensural maxima notehead (ligature, reduced hole)", + "srM3semiligmensural"); draw_mensural_brevis (m_maxima_width, m_red_holeheight, true, false); fet_endchar; -fet_beginchar ("Semi-colored mensural longa notehead (up, reduced hole)", "urM2semimensural"); - draw_mensural_longa (m_longa_width, m_red_holeheight, true, false, 1, false); + +fet_beginchar ("Semi-colored mensural longa notehead (up, reduced hole)", + "urM2semimensural"); + draw_mensural_longa (m_longa_width, m_red_holeheight, + true, false, 1, false); fet_endchar; -fet_beginchar ("Semi-colored mensural longa notehead (down, reduced hole)", "drM2semimensural"); - draw_mensural_longa (m_longa_width, m_red_holeheight, true, false, -1, false); + +fet_beginchar ("Semi-colored mensural longa notehead (down, reduced hole)", + "drM2semimensural"); + draw_mensural_longa (m_longa_width, m_red_holeheight, + true, false, -1, false); fet_endchar; -fet_beginchar ("Semi-colored mensural longa notehead (ligature, reduced hole)", "srM2semiligmensural"); - draw_mensural_longa (m_longa_width, m_red_holeheight, true, false, -1, true); + +fet_beginchar ("Semi-colored mensural longa notehead (ligature, reduced hole)", + "srM2semiligmensural"); + draw_mensural_longa (m_longa_width, m_red_holeheight, + true, false, -1, true); fet_endchar; -fet_beginchar ("Semi-colored mensural brevis notehead (reduced hole)", "srM1semimensural"); + +fet_beginchar ("Semi-colored mensural brevis notehead (reduced hole)", + "srM1semimensural"); draw_mensural_brevis (m_brevis_width, m_red_holeheight, true, false); fet_endchar; @@ -599,26 +664,34 @@ fet_beginchar ("Black mensural maxima notehead (up)", "uM3blackmensural"); draw_mensural_longa (m_maxima_width, 0, false, false, 1, false); fet_endchar; + fet_beginchar ("Black mensural maxima notehead (down)", "dM3blackmensural"); draw_mensural_longa (m_maxima_width, 0, false, false, -1, false); fet_endchar; -fet_beginchar ("Black mensural maxima notehead (ligature)", "sM3blackligmensural"); + +fet_beginchar ("Black mensural maxima notehead (ligature)", + "sM3blackligmensural"); draw_mensural_brevis (m_maxima_width, 0, false, false); fet_endchar; + fet_beginchar ("Black mensural longa notehead (up)", "uM2blackmensural"); draw_mensural_longa (m_longa_width, 0, false, false, 1, false); fet_endchar; + fet_beginchar ("Black mensural longa notehead (down)", "dM2blackmensural"); draw_mensural_longa (m_longa_width, 0, false, false, -1, false); fet_endchar; -fet_beginchar ("Black mensural longa notehead (ligature)", "sM2blackligmensural"); + +fet_beginchar ("Black mensural longa notehead (ligature)", + "sM2blackligmensural"); draw_mensural_longa (m_longa_width, 0, false, false, -1, true); fet_endchar; + fet_beginchar ("Black mensural brevis notehead", "sM1blackmensural"); draw_mensural_brevis (m_brevis_width, 0, false, false); fet_endchar; @@ -632,10 +705,12 @@ fet_beginchar ("Mensural semibrevis head", "s0mensural"); draw_diamond_head (staff_space#, 0.15, 0.30, 30, true); fet_endchar; + fet_beginchar ("Mensural minima head", "s1mensural"); draw_diamond_head (staff_space#, 0.15, 0.30, 30, true); fet_endchar; + fet_beginchar ("Mensural semiminima head", "s2mensural"); draw_diamond_head (staff_space#, 0.15, 0.30, 30, false); fet_endchar; @@ -1706,6 +1781,7 @@ fet_beginchar ("Hufnagel pes lower punctum", "shufnagel.lpes") % labels (1, 2, 3, 4); fet_endchar; + %%%%%%%%%%%% %% %% Noteheads for Medieval East-Slavic (Kievan) Notation @@ -1713,55 +1789,63 @@ fet_endchar; %% %%%%%%%%%%%% + fet_beginchar ("kievan final note", "sM2kievan"); - % this draws the Final Note - % the final note is the last note of a piece of music - % equivalent to having a whole note and fermata in CMN - % it always has an invariant representation + % This draws the Final Note. + % It is the last note of a piece of music + % equivalent to having a whole note and fermata in CMN. + % It always has an invariant representation. + vert_bar_thickness# := 2 * stafflinethickness#; vert_height# := 1.5 * staff_space#; blank_space# := 1.5 * stafflinethickness#; note_width# := vert_height# - 2 * vert_bar_thickness#; - define_pixels(vert_height, blank_space, note_width); + + define_pixels (vert_height, blank_space, note_width); define_blacker_pixels (vert_bar_thickness); path p; - p := (0, blank_space) -- - (0, staff_space - blank_space) -- - (note_width, staff_space - blank_space) -- - (note_width, blank_space) -- - cycle; + p := (0, blank_space) + -- (0, staff_space - blank_space) + -- (note_width, staff_space - blank_space) + -- (note_width, blank_space) + -- cycle; fill p; fill p reflectedabout ((0, 0), (1, 0)); + pickup pensquare xscaled vert_bar_thickness; - draw (note_width + 0.5 * vert_bar_thickness, vert_height) -- - (note_width + 0.5 * vert_bar_thickness, -vert_height); + + draw (note_width + 0.5 * vert_bar_thickness, vert_height) + -- (note_width + 0.5 * vert_bar_thickness, -vert_height); set_char_box (0, note_width# + vert_bar_thickness#, vert_height#, vert_height#); fet_endchar; + fet_beginchar ("kievan recitative mark", "sM1kievan"); inner_width# := 4 * staff_space#; vert_bar_thickness# := 2 * stafflinethickness#; vert_bar_height# := staff_space# - stafflinethickness#; blank_space# := 0.20 * vert_bar_height#; - define_pixels(inner_width, blank_space, vert_bar_height); + + define_pixels (inner_width, blank_space, vert_bar_height); define_blacker_pixels (vert_bar_thickness); path p; - p := (3 * vert_bar_thickness, blank_space) -- - (3 * vert_bar_thickness, vert_bar_height - blank_space) -- - (3 * vert_bar_thickness + inner_width, vert_bar_height - blank_space) -- - (3 * vert_bar_thickness + inner_width, blank_space) -- - cycle; + p := (3 * vert_bar_thickness, blank_space) + -- (3 * vert_bar_thickness, vert_bar_height - blank_space) + -- (3 * vert_bar_thickness + inner_width, + vert_bar_height - blank_space) + -- (3 * vert_bar_thickness + inner_width, blank_space) + -- cycle; fill p; fill p reflectedabout ((0, 0), (1, 0)); % draw the four vertical lines pickup pensquare xscaled vert_bar_thickness; - p := (0.5 * vert_bar_thickness, vert_bar_height) -- - (0.5 * vert_bar_thickness, -vert_bar_height); + p := (0.5 * vert_bar_thickness, vert_bar_height) + -- (0.5 * vert_bar_thickness, -vert_bar_height); draw p; draw p shifted (2 * vert_bar_thickness, 0); draw p shifted (3 * vert_bar_thickness + inner_width, 0); @@ -1771,28 +1855,32 @@ fet_beginchar ("kievan recitative mark", "sM1kievan"); vert_bar_height#, vert_bar_height#); fet_endchar; + fet_beginchar ("Kievan whole note", "s0kievan"); % the amount by which top and bottom diamond overlap overlap# := stafflinethickness#; height# := staff_space# - stafflinethickness#; width# := height# + overlap#; - define_pixels(overlap, height, width); - % pars for superellipse are right, top, left, bottom - fill superellipse((width, 0.5 * (height + overlap)), - (width/2, height + overlap), - (0, 0.5 * (height + overlap)), - (width/2, -overlap), + define_pixels (overlap, height, width); + + % parameters for superellipse are right, top, left, bottom + fill superellipse ((width, 0.5 * (height + overlap)), + (width/2, height + overlap), + (0, 0.5 * (height + overlap)), + (width/2, -overlap), 0.51); - fill superellipse((width, -0.5 * (height + overlap)), - (width/2, overlap), - (0, -0.5 * (height + overlap)), - (width/2, -height - overlap), + fill superellipse ((width, -0.5 * (height + overlap)), + (width/2, overlap), + (0, -0.5 * (height + overlap)), + (width/2, -height - overlap), 0.51); + set_char_box (0, width#, height# + overlap#, height# + overlap#); fet_endchar; + fet_beginchar ("Kievan quarter note down", "d2kievan"); z1 = (0.09 * staff_space, 0.33 * staff_space); z2 = (0.66 * staff_space, 0.37 * staff_space); @@ -1804,15 +1892,21 @@ fet_beginchar ("Kievan quarter note down", "d2kievan"); z8 = (0.73 * staff_space, -0.35 * staff_space); z9 = (0.02 * staff_space, -0.39 * staff_space); z10 = (0, -0.24 * staff_space); - fill z1{dir 8.6} .. z2 .. z3 + + fill z1{dir 8.6} + .. z2 + .. z3 & z3 .. z4 .. z5 & z5 -- z6 & z6 .. z7 .. z8 & z8{left} .. z9 & z9 .. z10 ... {dir 75}cycle; - set_char_box (0, 1.02 staff_space#, 2.50 staff_space#, 0.40 staff_space#); + + set_char_box (0, 1.02 staff_space#, + 2.50 staff_space#, 0.40 staff_space#); fet_endchar; + fet_beginchar ("Kievan quarter note up", "u2kievan"); z1 = (0.090 staff_space, -0.330 staff_space); z2 = (0.664 staff_space, -0.371 staff_space); @@ -1824,18 +1918,25 @@ fet_beginchar ("Kievan quarter note up", "u2kievan"); z8 = (0.725 staff_space, 0.346 staff_space); z9 = (0.017 staff_space, 0.391 staff_space); z10 = (0, 0.240 staff_space); - fill z1{dir -6.9} .. z2 .. z3 + + fill z1{dir -6.9} + .. z2 + .. z3 & z3 .. z4 .. z5 & z5 -- z6 & z6 .. z7 .. z8 & z8{left} .. z9 & z9 .. z10 ... {dir -76.9}cycle; - set_char_box (0, 1.02 staff_space#, 0.40 staff_space#, 2.6 staff_space#); + + set_char_box (0, 1.02 staff_space#, + 0.40 staff_space#, 2.6 staff_space#); fet_endchar; -fet_beginchar ("kievan half note (line position)", "s1kievan"); - % this draws the half note with a short tail up and a long tail down - % this version of the half note is used on any line of the staff + +fet_beginchar ("Kievan half note (line position)", "s1kievan"); + % This draws the half note with a short tail up and a long tail down. + % This version of the half note is used on any line of the staff. + z1 = (1.031 staff_space, 0.945 staff_space); z2 = (0.945 staff_space, -0.122 staff_space); z3 = (1.059 staff_space, -1.393 staff_space); @@ -1847,7 +1948,10 @@ fet_beginchar ("kievan half note (line position)", "s1kievan"); z9 = (0.086 staff_space, 0.350 staff_space); z10 = (0.746 staff_space, 0.277 staff_space); z11 = (0.909 staff_space, 0.921 staff_space); - fill z1 .. z2{down} .. z3 + + fill z1 + .. z2{down} + .. z3 & z3 -- z4 & z4 .. z5{up} .. z6 & z6 .. z7{left} .. z8 @@ -1855,12 +1959,16 @@ fet_beginchar ("kievan half note (line position)", "s1kievan"); & z9 .. {right}z10 & z10{up} .. z11 & z11 -- cycle; - set_char_box (0, 1.06 staff_space#, 1.6 staff_space#, 1.0 staff_space#); + + set_char_box (0, 1.06 staff_space#, + 1.6 staff_space#, 1.0 staff_space#); fet_endchar; -fet_beginchar ("kievan half note (space position)", "sr1kievan"); - % this draws the half note with a short tail down and a long tail up - % this version of the half note is used in any space of the staff + +fet_beginchar ("Kievan half note (space position)", "sr1kievan"); + % This draws the half note with a short tail down and a long tail up. + % This version of the half note is used in any space of the staff. + z1 = (1.071 staff_space, 1.426 staff_space); z2 = (0.974 staff_space, 0.191 staff_space); z3 = (1.059 staff_space, -0.994 staff_space); @@ -1873,7 +1981,10 @@ fet_beginchar ("kievan half note (space position)", "sr1kievan"); z10 = (0.746 staff_space, 0.281 staff_space); z11 = (0.807 staff_space, 0.847 staff_space); z12 = (0.945 staff_space, 1.401 staff_space); - fill z1 .. z2{down} .. z3 + + fill z1 + .. z2{down} + .. z3 & z3 -- z4 & z4 .. z5{up} .. z6 & z6 .. z7{left} .. z8 @@ -1881,13 +1992,17 @@ fet_beginchar ("kievan half note (space position)", "sr1kievan"); & z9 .. z10{right} & z10 .. z11 .. z12 & z12 -- cycle; - set_char_box (0, 1.1 staff_space#, 1.0 staff_space#, 1.4 staff_space#); + + set_char_box (0, 1.1 staff_space#, + 1.0 staff_space#, 1.4 staff_space#); fet_endchar; -fet_beginchar ("kievan eighth note (down)", "d3kievan"); - % this draws the eighth note - % this form of the eight note occurs on the third line or higher - % and sometimes between the second line and the third line + +fet_beginchar ("Kievan eighth note (down)", "d3kievan"); + % This draws the eighth note. + % This form of the eight note occurs on the third line or higher + % and sometimes between the second line and the third line. + z1 = (0.261 staff_space, 0.416 staff_space); z2 = (1.022 staff_space, 0.269 staff_space); z3 = (0.664 staff_space, -0.603 staff_space); @@ -1900,7 +2015,9 @@ fet_beginchar ("kievan eighth note (down)", "d3kievan"); z10 = (0.33 staff_space, -1.340 staff_space); z11 = (0.631 staff_space, -0.448 staff_space); z12 = (0, -0.334 staff_space); - fill z1{right} .. z2 + + fill z1{right} + .. z2 & z2 -- z3 & z3{right} .. z4 & z4 .. z5{down} .. z6 @@ -1910,12 +2027,16 @@ fet_beginchar ("kievan eighth note (down)", "d3kievan"); & z10{dir 78.7} .. z11 & z11 .. {left}z12 & z12{dir 78.7} .. {dir 62}cycle; - set_char_box (0, 1.25 staff_space#, 3.0 staff_space#, 0.5 staff_space#); + + set_char_box (0, 1.25 staff_space#, + 3.0 staff_space#, 0.5 staff_space#); fet_endchar; -fet_beginchar ("kievan eighth note (up)", "u3kievan"); - % this draws the flagged eighth note - % this version of the eighth note occurs on the second line or lower + +fet_beginchar ("Kievan eighth note (up)", "u3kievan"); + % This draws the flagged eighth note. + % This version of the eighth note occurs on the second line or lower. + % first, draw the upside down quarter note z1 = (0.090 staff_space, -0.33 staff_space); z2 = (0.664 staff_space, -0.371 staff_space); @@ -1927,12 +2048,16 @@ fet_beginchar ("kievan eighth note (up)", "u3kievan"); z8 = (0.725 staff_space, 0.346 staff_space); z9 = (0.016 staff_space, 0.391 staff_space); z10 = (0, 0.240 staff_space); - fill z1{dir -6.9} .. z2 .. z3 + + fill z1{dir -6.9} + .. z2 + .. z3 & z3 .. z4 .. z5 & z5 -- z6 & z6 .. z7 .. z8 & z8{left} .. z9 & z9 .. z10 ... {dir -76.9}cycle; + % now, draw the stem z11 = (0.033 staff_space, 2.823 staff_space); z12 = (0.391 staff_space, 2.648 staff_space); @@ -1941,11 +2066,15 @@ fet_beginchar ("kievan eighth note (up)", "u3kievan"); z15 = (0.693 staff_space, 0.88 staff_space); z16 = (0.208 staff_space, 1.699 staff_space); z17 = (0.024 staff_space, 2.616 staff_space); - fill z11 -- z12 + + fill z11 + -- z12 & z12 .. z13{down} .. z14 & z14 -- z15 & z15 .. z16 .. z17{up} .. cycle; - set_char_box (0, 1.0 staff_space#, 0.4 staff_space#, 2.9 staff_space#); + + set_char_box (0, 1.0 staff_space#, + 0.4 staff_space#, 2.9 staff_space#); fet_endchar; fet_endgroup ("noteheads"); diff --git a/mf/parmesan-scripts.mf b/mf/parmesan-scripts.mf index dcc3fd4518..d5b1f6de2e 100644 --- a/mf/parmesan-scripts.mf +++ b/mf/parmesan-scripts.mf @@ -238,57 +238,62 @@ fet_beginchar ("signum congruentiae down", "dsignumcongruentiae"); xy_mirror_char; fet_endchar; + %%%%%%%%%%%%% %%%% %%%% Code for Kievan Notation %%%% %%%%%%%%%%%%% -fet_beginchar ("kievan end of piece (slash)", "barline.kievan"); - % this draws the end of piece figure - % this figure is placed at the end of the musical piece, after the staff - save hair_thickness, thick_thickness, width, depth, height, padding; - hair# = 1.9 linethickness#; - thick# = 6.0 linethickness#; - width = .8 staff_space; - height# + depth# = 4 staff_space#; - depth# = height# + hair# / 2; - padding = .2 staff_space; - - set_char_box (0, 0, depth#, height#); - define_pixels (hair, thick); - - x1r - x2l = width; - y1 - y3r = d + h + linethickness / 2; - z3 = z2; - z4 = .5 [z1, z2] = (width / 2 + padding, hair / 8); - z5 = (x2 - .17 staff_space, 9/10 [y2, y1]); - z7 - z6 = (.5 staff_space, -.2 staff_space); - .4 [z6, z7] = 7/6 [z2, z1]; - - pickup pencircle scaled blot_diameter; - penpos1 (hair, 0); - penpos2 (hair, 0); - penpos3 (hair, -90); - penpos4 (thick, 10); - penpos5 (thick, 35); - penpos6 (hair, -90); - penpos7 (.5 thick, -120); - - penlabels (1, 2, 3, 4, 5, 6, 7); - - penstroke z1e - -- z2e; - - fill simple_serif (z3l, z3r, 90){1.5 right} - .. z4r - .. z5r - .. z6r - .. simple_serif (z7r, z7l, 80) - .. {left}z6l - .. z5l - .. z4l - .. cycle; + +fet_beginchar ("Kievan end of piece (slash)", "barline.kievan"); + % This draws the end of piece figure. + % This figure is placed at the end of the musical piece, + % after the staff. + + save hair_thickness, thick_thickness, width, depth, height, padding; + hair# = 1.9 linethickness#; + thick# = 6.0 linethickness#; + width = .8 staff_space; + height# + depth# = 4 staff_space#; + depth# = height# + hair# / 2; + padding = .2 staff_space; + + set_char_box (0, 0, depth#, height#); + define_pixels (hair, thick); + + x1r - x2l = width; + y1 - y3r = d + h + linethickness / 2; + z3 = z2; + z4 = .5 [z1, z2] + = (width / 2 + padding, hair / 8); + z5 = (x2 - .17 staff_space, 9/10 [y2, y1]); + z7 - z6 = (.5 staff_space, -.2 staff_space); + .4 [z6, z7] = 7/6 [z2, z1]; + + pickup pencircle scaled blot_diameter; + penpos1 (hair, 0); + penpos2 (hair, 0); + penpos3 (hair, -90); + penpos4 (thick, 10); + penpos5 (thick, 35); + penpos6 (hair, -90); + penpos7 (.5 thick, -120); + + penlabels (1, 2, 3, 4, 5, 6, 7); + + penstroke z1e + -- z2e; + + fill simple_serif (z3l, z3r, 90){1.5 right} + .. z4r + .. z5r + .. z6r + .. simple_serif (z7r, z7l, 80) + .. {left}z6l + .. z5l + .. z4l + .. cycle; fet_endchar; fet_endgroup ("scripts"); -- 2.39.2