X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=mf%2Fparmesan-noteheads.mf;h=23049f6f1b369d607b8b42bafa596c45760cbc48;hb=612f465a01ed6b9bd806f00e450c82f314eafd91;hp=ef762a2146fb802278117c465dcace92a12d58f6;hpb=9107816c34bedddf8e851e634f8f492e0d9b7838;p=lilypond.git diff --git a/mf/parmesan-noteheads.mf b/mf/parmesan-noteheads.mf index ef762a2146..23049f6f1b 100644 --- a/mf/parmesan-noteheads.mf +++ b/mf/parmesan-noteheads.mf @@ -1,12 +1,11 @@ % Feta (not the Font-En-Tja) music font -- ancient note heads % This file is part of LilyPond, the GNU music typesetter. % -% Copyright (C) 2001--2009 Juergen Reuter +% Copyright (C) 2001--2011 Juergen Reuter % % Neo-mensural heads originally by % Christian Mondrup and Mats Bengtsson % -% % LilyPond 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 3 of the License, or @@ -46,6 +45,8 @@ fet_begingroup ("noteheads"); % % TODO: should depth/height include appendages/stems? +save overdone_heads, noteheight; + overdone_heads = 0; noteheight# := staff_space# + (1 + overdone_heads) * stafflinethickness#; define_pixels (noteheight); @@ -55,31 +56,30 @@ define_pixels (noteheight); % % % -% MENSURAL NOTATION +% NEO-MENSURAL NOTATION % % % -def draw_neomensural_brevis (expr brevwid) = - save beamheight, head_width; - save holeheight, stem_width; - save serif_size, serif_protrude; +def draw_neomensural_brevis (expr brevwid, holeheight, open, full) = + save beamheight, head_width, head_height; + save stem_width, serif_size, serif_protrude; - head_width# = brevwid; - holeheight = 3 stafflinethickness; - stem_width = 1.4 stafflinethickness; + head_width# := brevwid; + head_height# := noteheight#; + stem_width := 1.3 linethickness; - define_pixels (head_width); + define_pixels (head_width, head_height); set_char_box (0, head_width#, - noteheight# / 2, noteheight# / 2); + head_height# / 2, head_height# / 2); - 2 beamheight + holeheight = noteheight; - serif_size = (holeheight - stafflinethickness) / 2; - serif_protrude = 1.5 serif_size; + 2 beamheight + holeheight = head_height; + serif_size := blot_diameter; + serif_protrude := .15 head_height; z1l = (0, 0); - z2l = (0, -stafflinethickness / 2); + z2l = (0, - (holeheight - 2 serif_size) / 2); z3r = z2r + serif_size * (1, -1); y4r = y3r; x4r = head_width / 2; @@ -91,8 +91,8 @@ def draw_neomensural_brevis (expr brevwid) = penpos4 (beamheight, 90); penpos5 (stem_width, 180); - save pat_in, pat_out; - path pat_in, pat_out; + save pat_out; + path pat_out; pat_out := z4l -- z3l{left} @@ -108,67 +108,45 @@ def draw_neomensural_brevis (expr brevwid) = -- cycle; fill pat_out; - pat_in := z4r - -- z3r{left} - .. z2r{up} - -- z1r; - pat_in := pat_in - -- reverse pat_in yscaled -1; - pat_in := pat_in - -- reverse pat_in shifted (-x4r, 0) - xscaled -1 - shifted (x4l, 0) - -- cycle; - unfill pat_in; + if open: + save pat_in; + path pat_in; + + pat_in := z4r + -- z3r{left} + .. z2r{up} + -- z1r; + pat_in := pat_in + -- reverse pat_in yscaled -1; + if full: + pat_in := pat_in + -- reverse pat_in shifted (-x4r, 0) + xscaled -1 + shifted (x4l, 0); + fi; + pat_in := pat_in + -- cycle; + unfill pat_in; + fi; penlabels (1, 2, 3, 4, 5); enddef; -%%% This head does not seem to be used anywhere. Junk me? -- jr -def draw_neomensural_left_stemmed_head (expr wid) = - draw_neomensural_brevis (wid); - - x6 = x7 = stem_width / 2; - y6 = y5; - y7 = y5 - 2.25 staff_space; - - z17 = (x7, y7 - stem_width / 2); - - penpos6 (stem_width, 0); - penpos7 (stem_width, 0); - - fill z7l - -- z6l - -- z6r - -- z7r - .. z17 - .. cycle; - - penlabels (6, 7); - labels (17); -enddef; - - -%%% This head does not seem to be used anywhere. Junk me? -- jr -fet_beginchar ("Left stemmed notehead", "slneomensural"); - draw_neomensural_left_stemmed_head (2 staff_space#); -fet_endchar; - - % % Some sources (eg. Musix/OpusTeX) think that the appendage should be on % the left, some say right. Right wins democratically. % -def draw_neomensural_longa (expr wid) = - draw_neomensural_brevis (wid); +def draw_neomensural_longa (expr wid, holeheight, direction) = + draw_neomensural_brevis (wid, holeheight, true, true); - save theta; + save theta, dir; + dir := -direction; - x7r = head_width; - y7 = y5; - z6 - z7 = (stem_width / 2, -staff_space); - theta = angle (z6 - z7) + 90; + x7 = head_width - stem_width / 2; + y7 = dir * y5; + z6 - z7 = (stem_width / 2, -dir * staff_space); + theta = dir * angle (z6 - z7) + 90; penpos7 (stem_width, 0); penpos6 (1.2 stem_width, theta); @@ -188,41 +166,23 @@ def draw_neomensural_longa (expr wid) = enddef; -% -% En wij presenteren U: de opvolgster van Emily -% -% (ze is wel breed) -% -fet_beginchar ("Neo-mensural maxima notehead", "sM3neomensural"); - draw_neomensural_longa (2.6 staff_space#); -fet_endchar; - - -fet_beginchar ("Neo-mensural longa notehead", "sM2neomensural"); - draw_neomensural_longa (2 staff_space#); -fet_endchar; - - -fet_beginchar ("Neo-mensural brevis notehead", "sM1neomensural"); - draw_neomensural_brevis (2 staff_space#); -fet_endchar; - - -def draw_neomensural_black_head (expr wid, height) = - save head_width; +def draw_neomensural_black_head (expr width, height) = + save head_width, head_height, stem_width; save ne, nw, ne_dist, nw_dist; pair ne, nw, ne_dist, nw_dist; - head_width# = wid; + head_width# := width; + head_height# := height; + stem_width# := 1.3 linethickness#; set_char_box (0, head_width#, - height / 2, height / 2); + head_height# / 2, head_height# / 2); charwx := head_width# / 2; - charwy := height / 2; + charwy := head_height# / 2 - 2 stem_width#; y3 = y1 = 0; - x2 = x4 = (x1 + x3) / 2; + x2 = x4 = 1/2 [x1, x3]; pickup pencircle scaled blot_diameter; @@ -232,130 +192,201 @@ def draw_neomensural_black_head (expr wid, height) = rt x3 = w; ne := unitvector (z2 - z1); - nw_dist := (ne rotated 90) * 0.5 blot_diameter; + nw_dist := (ne rotated 90) * blot_diameter / 2; nw := unitvector (z2 - z3); - ne_dist := (nw rotated -90) * 0.5 blot_diameter; - - fill lft z1{up} - .. (z1 + nw_dist){ne} - -- (z2 + nw_dist){ne} - .. top z2{right} - .. (z2 + ne_dist){-nw} - -- (z3 + ne_dist){-nw} - .. rt z3{down} - .. (z3 - nw_dist){-ne} - -- (z4 - nw_dist){-ne} - .. bot z4{left} - .. (z4 - ne_dist){nw} - -- (z1 - ne_dist){nw} + ne_dist := (nw rotated -90) * blot_diameter / 2; + + fill lft z1 + .. (z1 + nw_dist) + -- (z2 + nw_dist) + .. top z2 + .. (z2 + ne_dist) + -- (z3 + ne_dist) + .. rt z3 + .. (z3 - nw_dist) + -- (z4 - nw_dist) + .. bot z4 + .. (z4 - ne_dist) + -- (z1 - ne_dist) .. cycle; labels (1, 2, 3, 4); enddef; -def draw_neomensural_open_head (expr wid, height)= - draw_neomensural_black_head (wid, height); +def draw_neomensural_open_head (expr width, height)= + draw_neomensural_black_head (width, height); - save diamNW, diamSW; + save headNW, headSW, stem_width; - diamNW = length (z2 - z1) + blot_diameter; - diamSW = length (z4 - z1) + blot_diameter; + headNW = length (z2 - z1) + blot_diameter; + headSW = length (z4 - z1) + blot_diameter; + stem_width = 1.3 linethickness; save hole_widthNW, hole_widthSW; - hole_widthNW = 0.34 diamNW ; - hole_widthSW + 2.6 linethickness = diamSW; - - (z7 + z5) / 2 = (w / 2, 0); - (z8 + z6) / 2 = (w / 2, 0); - z6 - z5 = hole_widthNW * unitvector (z2 - z1); - z7 - z6 = hole_widthSW * unitvector (z4 - z1); - - unfill z5 - -- z6 - -- z7 - -- z8 - -- cycle; + hole_widthNW = .25 headNW; + hole_widthSW + 2 stem_width = headSW; + + (rt z7 + lft z5) / 2 = (w / 2, 0); + (bot z8 + top z6) / 2 = (w / 2, 0); + z6 - z5 = (hole_widthNW - blot_diameter) * unitvector (z2 - z1); + z7 - z6 = (hole_widthSW - blot_diameter) * unitvector (z4 - z1); + + unfill lft z5 + .. (z5 + nw_dist) + -- (z6 + nw_dist) + .. top z6 + .. (z6 + ne_dist) + -- (z7 + ne_dist) + .. rt z7 + .. (z7 - nw_dist) + -- (z8 - nw_dist) + .. bot z8 + .. (z8 - ne_dist) + -- (z5 - ne_dist) + .. cycle; labels (5, 6, 7, 8); enddef; % -% WL says the thin lines should be thinner. +% Neo-mensural maxima/longa/brevis % -fet_beginchar ("Harmonic notehead (Neo-mensural open)", "s0harmonic"); - draw_neomensural_open_head (1.3 staff_space#, 1.3 noteheight#); - charwx := head_width#; - charwy := 0; +% En wij presenteren U: de opvolgster van Emily +% +% (ze is wel breed) +% + +save nm_maxima_width, nm_longa_width, nm_brevis_width; +save nm_holeheight, nm_red_holeheight; + +nm_maxima_width := 2.6 staff_space#; +nm_longa_width := 2 staff_space#; +nm_brevis_width := nm_longa_width; +nm_holeheight := 4 linethickness; +nm_red_holeheight := 2.5 linethickness; + +fet_beginchar ("Neo-mensural maxima notehead (up)", "uM3neomensural"); + draw_neomensural_longa (nm_maxima_width, nm_holeheight, 1); fet_endchar; +fet_beginchar ("Neo-mensural maxima notehead (down)", "dM3neomensural"); + draw_neomensural_longa (nm_maxima_width, nm_holeheight, -1); +fet_endchar; -fet_beginchar ("Harmonic notehead (Neo-mensural black)", "s2harmonic"); - draw_neomensural_black_head (1.3 staff_space#, 1.3 noteheight#); - charwx := head_width#; - charwy := 0; +fet_beginchar ("Neo-mensural longa notehead (up)", "uM2neomensural"); + draw_neomensural_longa (nm_longa_width, nm_holeheight, 1); fet_endchar; +fet_beginchar ("Neo-mensural longa notehead (down)", "dM2neomensural"); + draw_neomensural_longa (nm_longa_width, nm_holeheight, -1); +fet_endchar; -fet_beginchar ("Neo-mensural semibrevis head", "s0neomensural"); - draw_neomensural_open_head (staff_space#, noteheight#); +fet_beginchar ("Neo-mensural brevis notehead", "sM1neomensural"); + draw_neomensural_brevis (nm_brevis_width, nm_holeheight, true, true); fet_endchar; +fet_beginchar ("Neo-mensural maxima notehead (up, reduced hole)", "urM3neomensural"); + draw_neomensural_longa (nm_maxima_width, nm_red_holeheight, 1); +fet_endchar; -fet_beginchar ("Neo-mensural minima head", "s1neomensural"); - draw_neomensural_open_head (staff_space#, noteheight#); +fet_beginchar ("Neo-mensural maxima notehead (down, reduced hole)", "drM3neomensural"); + draw_neomensural_longa (nm_maxima_width, nm_red_holeheight, -1); fet_endchar; +fet_beginchar ("Neo-mensural longa notehead (up, reduced hole)", "urM2neomensural"); + draw_neomensural_longa (nm_longa_width, nm_red_holeheight, 1); +fet_endchar; -fet_beginchar ("Neo-mensural semiminima head", "s2neomensural"); - draw_neomensural_black_head (staff_space#, noteheight#); +fet_beginchar ("Neo-mensural longa notehead (down, reduced hole)", "drM2neomensural"); + draw_neomensural_longa (nm_longa_width, nm_red_holeheight, -1); fet_endchar; +fet_beginchar ("Neo-mensural brevis notehead (reduced hole)", "srM1neomensural"); + draw_neomensural_brevis (nm_brevis_width, nm_red_holeheight, true, true); +fet_endchar; -def draw_mensural_brevis (expr wid) = - % TODO. For the moment, fall back to draw_neomensural_brevis. - draw_neomensural_brevis (wid); -enddef; +% +% Neo-mensural semibrevis/minima/semiminima +% -%%% This head does not seem to be used anywhere. Junk me? -- jr -def draw_mensural_left_stemmed_head (expr wid) = - draw_mensural_brevis (wid); +save nm_height, nm_width; +nm_height := noteheight#; +nm_width := staff_space#; +fet_beginchar ("Neo-mensural semibrevis head", "s0neomensural"); + draw_neomensural_open_head (nm_width, nm_height); +fet_endchar; - x6 = x7 = stem_width / 2; - y6 = y5; - y7 = y5 - 2.25 staff_space; +fet_beginchar ("Neo-mensural minima head", "s1neomensural"); + draw_neomensural_open_head (nm_width, nm_height); +fet_endchar; - z17 = (x7, y7 - stem_width / 2); +fet_beginchar ("Neo-mensural semiminima head", "s2neomensural"); + draw_neomensural_black_head (nm_width, nm_height); +fet_endchar; - penpos6 (stem_width, 0); - penpos7 (stem_width, 0); +%%%%%%%% +% +% +% +% HARMONIC NOTATION +% +% +% - fill z7l - -- z6l - -- z6r - -- z7r - .. z17 - .. cycle; +% +% WL says the thin lines should be thinner. +% - penlabels (6, 7); - labels (17); +fet_beginchar ("Harmonic notehead (Neo-mensural open)", "s0harmonic"); + draw_neomensural_open_head (1.3 staff_space#, 1.3 noteheight#); + charwx := head_width#; + charwy := 0; +fet_endchar; + +fet_beginchar ("Harmonic notehead (Neo-mensural black)", "s2harmonic"); + draw_neomensural_black_head (1.3 staff_space#, 1.3 noteheight#); + charwx := head_width#; + charwy := 0; +fet_endchar; + + +%%%%%%%% +% +% +% +% MENSURAL/PETRUCCI NOTATIONS +% +% +% + +def draw_mensural_brevis (expr wid, holeheight, open, full) = + % TODO. For the moment, fall back to draw_neomensural_brevis. + draw_neomensural_brevis (wid, holeheight, open, full); enddef; -def draw_mensural_longa (expr wid) = - draw_mensural_brevis (wid); +def draw_mensural_longa (expr wid, holeheight, open, full, direction, ligature) = + draw_mensural_brevis (wid, holeheight, open, full); + + save dir; + dir := -direction; x6 = x7 = head_width - stem_width / 2; - y6 = y5; - y7 = y5 - 2.25 staff_space; + y6 = dir * y5; + y7 = dir * y5 -1.75 dir * staff_space; - z17 = (x7, y7 - stem_width / 2); + z17 = (x7, y7 - dir * stem_width / 2); penpos6 (stem_width, 0); - penpos7 (stem_width, 0); + if ligature: + penpos7 (stem_width, 0); + else: + penpos7 (1.5 stem_width, 0); + fi; fill z7l -- z6l @@ -369,27 +400,6 @@ def draw_mensural_longa (expr wid) = enddef; -%%% This head does not seem to be used anywhere. Junk me? -- jr -fet_beginchar ("Mensural left stemmed notehead", "slmensural"); - draw_mensural_left_stemmed_head (staff_space#); -fet_endchar; - - -fet_beginchar ("Mensural maxima notehead", "sM3mensural"); - draw_mensural_longa (2.0 staff_space#); -fet_endchar; - - -fet_beginchar ("Mensural longa notehead", "sM2mensural"); - draw_mensural_longa (staff_space#); -fet_endchar; - - -fet_beginchar ("Mensural brevis notehead", "sM1mensural"); - draw_mensural_brevis (staff_space#); -fet_endchar; - - def draw_diamond_head (expr head_h, pen_w, pen_h, angle, open) = save head_width, head_height; save ellipse, ellipse_r; @@ -402,7 +412,7 @@ def draw_diamond_head (expr head_h, pen_w, pen_h, angle, open) = head_height# / 2, head_height# / 2); charwx := head_width# / 2; - charwy := head_height# / 2 - linethickness#; + charwy := head_height# / 2 - 2 linethickness#; define_pixels (head_width, head_height); @@ -451,36 +461,233 @@ def draw_diamond_head (expr head_h, pen_w, pen_h, angle, open) = enddef; +% +% Mensural/Petrucci maxima/longa/brevis +% + +save m_maxima_width, m_longa_width, m_brevis_width, + m_holeheight, m_red_holeheight; +m_maxima_width := 2.0 staff_space#; +m_longa_width := staff_space#; +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); +fet_endchar; + +fet_beginchar ("Mensural maxima notehead (down)", "dM3mensural"); + 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); +fet_endchar; + +fet_beginchar ("Mensural longa notehead (down)", "dM2mensural"); + 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); +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_endchar; + +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"); + 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_endchar; + +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_endchar; + +fet_beginchar ("Mensural brevis notehead (reduced hole)", "srM1mensural"); + draw_mensural_brevis (m_brevis_width, m_red_holeheight, true, true); +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_endchar; + +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"); + 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_endchar; + +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_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_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_endchar; + +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_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_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_endchar; + +fet_beginchar ("Semi-colored mensural brevis notehead (reduced hole)", "srM1semimensural"); + draw_mensural_brevis (m_brevis_width, m_red_holeheight, true, false); +fet_endchar; + + +% +% Black mensural/Petrucci maxima/longa/brevis +% + +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"); + 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"); + 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; + + +% +% Mensural semibrevis/minima/semiminima +% + 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; -fet_beginchar ("Petrucci semibrevis head", "s0petrucci"); -% draw_diamond_head (1.8 staff_space#, 0.15, 0.40, 30, true); - draw_neomensural_open_head (staff_space#, 1.8 staff_space#); +% +% Black mensural semibrevis/minima/semiminima +% + +fet_beginchar ("Black mensural semibrevis head", "s0blackmensural"); + draw_diamond_head (staff_space#, 0.15, 0.30, 30, false); fet_endchar; -fet_beginchar ("Petrucci minima head", "s1petrucci"); -% draw_diamond_head (1.8 staff_space#, 0.15, 0.40, 30, true); - draw_neomensural_open_head (staff_space#, 1.8 staff_space#); +% +% Petrucci semibrevis/minima/semiminima +% +% These values can be measured in several sources. +% I used "Modulis ex sacris literis delecti, Liber primus" +% Josquin Desprez, BNF + +save petrucci_width, petrucci_height; +petrucci_height := 1.4 noteheight#; +petrucci_width := .72 petrucci_height; + +fet_beginchar ("Petrucci semibrevis head", "s0petrucci"); + draw_neomensural_open_head (petrucci_width, petrucci_height); fet_endchar; +fet_beginchar ("Petrucci minima head", "s1petrucci"); + draw_neomensural_open_head (petrucci_width, petrucci_height); +fet_endchar; fet_beginchar ("Petrucci semiminima head", "s2petrucci"); -% draw_diamond_head (1.8 staff_space#, 0.15, 0.40, 30, false); - draw_neomensural_black_head (staff_space#, 1.8 staff_space#); + draw_neomensural_black_head (petrucci_width, petrucci_height); +fet_endchar; + + +% +% Black Petrucci semibrevis/minima/semiminima +% + +fet_beginchar ("Petrucci colored semibrevis head", "s0blackpetrucci"); + draw_neomensural_black_head (petrucci_width, petrucci_height); +fet_endchar; + +fet_beginchar ("Petrucci colored minima head", "s1blackpetrucci"); + draw_neomensural_black_head (petrucci_width, petrucci_height); +fet_endchar; + +fet_beginchar ("Petrucci colored semiminima head", "s2blackpetrucci"); + draw_neomensural_black_head (petrucci_width, petrucci_height); fet_endchar;