--- feta-banier.mf.orig Wed Jan 17 14:18:39 2001 +++ feta-banier.mf Sat Aug 18 04:06:46 2001 @@ -229,29 +229,6 @@ draw (0, 0) .. (0,-2 staff_space); fet_endchar; -fet_beginchar("grace dash (up)", "ugrace", "gracedash") - save flare, - hip_depth_ratio, hip_width, - foot_depth; - - flare# = 1.0 staff_space#; - hip_depth_ratio = .72; - hip_width# = upflag_width# - hip_thickness#/2; - - foot_depth# = 3 staff_space#; - - define_pixels(flare, hip_width, hip_thickness, - foot_depth, foot_thickness); - - set_char_box(hip_width# * hip_depth_ratio, - hip_width# + stemthickness#/2 + right_upflag_space#, - foot_depth# * hip_depth_ratio, -flare#) - - pickup pencircle scaled 1.5 stemthickness; - draw (-b ,-d) .. - (w, h); -fet_endchar; - fet_beginchar("8th (down)", "d3", "deighthflag") save flare, hip_depth_ratio, hip_width, @@ -404,6 +381,218 @@ y_mirror_char; fet_endchar; +%%%%%%%% +% +% +% +% Mensural Notation +% +% +% + +def draw_mensural_outermost_flag_i = + define_pixels(stafflinethickness, staff_space) + + pickup pencircle + xscaled 1.00 stafflinethickness + yscaled 0.22 staff_space + rotated -35; + + save za, zb, zc, zd, ze; + pair za, zb, zc, zd, ze; + + za = (+0.00 staff_space, -0.00 staff_space); + zb = (+0.15 staff_space, -0.00 staff_space); + zc = (+0.45 staff_space, -0.35 staff_space); + zd = (+0.45 staff_space, -0.85 staff_space); + ze = (+0.00 staff_space, -2.00 staff_space); + + draw za .. zb -- zc{zc-zb} .. {ze-zd}zd -- ze; +enddef; + +def draw_mensural_outermost_flag_ii = + define_pixels(stafflinethickness, staff_space) + + pickup pencircle + xscaled 1.00 stafflinethickness + yscaled 0.22 staff_space + rotated -35; + + save za, zb, zc, zd, ze; + pair za, zb, zc, zd, ze; + + za = (+0.00 staff_space, -0.00 staff_space); + zb = (+0.15 staff_space, -0.00 staff_space); + zc = (+0.20 staff_space, -0.05 staff_space); + zd = (+0.20 staff_space, -1.15 staff_space); + ze = (+0.00 staff_space, -1.40 staff_space); + + draw za .. zb -- zc{zc-zb} .. {ze-zd}zd -- ze; +enddef; + +def draw_mensural_inner_flag(expr il_shift) = + define_pixels(stafflinethickness, staff_space) + + pickup pencircle + xscaled 1.00 stafflinethickness + yscaled 0.22 staff_space + rotated -35; + + save zs, za, zb, zc, zd; + pair zs, za, zb, zc, zd; + + zs = (0, -il_shift * staff_space); + za = zs + (+0.00 staff_space, -0.10 staff_space); + zb = zs + (+0.33 staff_space, -0.30 staff_space); + zc = zs + (+0.33 staff_space, -0.70 staff_space); + zd = zs + (+0.00 staff_space, -0.90 staff_space); + + draw za{2,1} .. zb .. zc .. {-2,-1}zd; +enddef; + +fet_beginchar("8th Mensural Flag (up)", "mensuralu03", "menseighthflag") + set_char_box(0, 0.60 staff_space#, 2.00 staff_space#, 0) + draw_mensural_outermost_flag_i +fet_endchar; + +fet_beginchar("8th Mensural Flag (up)", "mensuralu13", "mens1eighthflag") + set_char_box(0, 0.60 staff_space#, 1.50 staff_space#, 0) + draw_mensural_outermost_flag_ii +fet_endchar; + +fet_beginchar("8th Mensural Flag (down)", "mensurald03", "mensdeighthflag") + set_char_box(0.60 staff_space#, 0, 0, 2.00 staff_space#) + draw_mensural_outermost_flag_i + currentpicture := currentpicture xscaled -1 yscaled -1; +fet_endchar; + +fet_beginchar("8th Mensural Flag (down)", "mensurald13", "mensd1eighthflag") + set_char_box(0.60 staff_space#, 0, 0, 1.50 staff_space#) + draw_mensural_outermost_flag_ii + currentpicture := currentpicture xscaled -1 yscaled -1; +fet_endchar; + +fet_beginchar("16th Mensural Flag (up)", "mensuralu04", "menssixteenthflag") + set_char_box(0, 0.60 staff_space#, 3.00 staff_space#, 0) + draw_mensural_outermost_flag_i + draw_mensural_inner_flag(2.0) +fet_endchar; + +fet_beginchar("16th Mensural Flag (up)", "mensuralu14", "mens1sixteenthflag") + set_char_box(0, 0.60 staff_space#, 3.00 staff_space#, 0) + draw_mensural_outermost_flag_ii + draw_mensural_inner_flag(1.5) +fet_endchar; + +fet_beginchar("16th Mensural Flag (down)", "mensurald04", "mensdsixteenthflag") + set_char_box(0, 0.60 staff_space#, 3.00 staff_space#, 0) + draw_mensural_outermost_flag_i + draw_mensural_inner_flag(2.0) + currentpicture := currentpicture xscaled -1 yscaled -1; +fet_endchar; + +fet_beginchar("16th Mensural Flag (down)", "mensurald14", "mensd1sixteenthflag") + set_char_box(0, 0.60 staff_space#, 3.00 staff_space#, 0) + draw_mensural_outermost_flag_ii + draw_mensural_inner_flag(1.5) + currentpicture := currentpicture xscaled -1 yscaled -1; +fet_endchar; + +fet_beginchar("32th Mensural Flag (up)", "mensuralu05", "mensthirtysecondflag") + set_char_box(0, 0.60 staff_space#, 3.00 staff_space#, 0) + draw_mensural_outermost_flag_i + draw_mensural_inner_flag(2.0) + draw_mensural_inner_flag(3.0) +fet_endchar; + +fet_beginchar("32th Mensural Flag (up)", "mensuralu15", "mens1thirtysecondflag") + set_char_box(0, 0.60 staff_space#, 3.00 staff_space#, 0) + draw_mensural_outermost_flag_ii + draw_mensural_inner_flag(1.5) + draw_mensural_inner_flag(2.5) +fet_endchar; + +fet_beginchar("32th Mensural Flag (down)", "mensurald05", "mensdthirtysecondflag") + set_char_box(0, 0.60 staff_space#, 3.00 staff_space#, 0) + draw_mensural_outermost_flag_i + draw_mensural_inner_flag(2.0) + draw_mensural_inner_flag(3.0) + currentpicture := currentpicture xscaled -1 yscaled -1; +fet_endchar; + +fet_beginchar("32th Mensural Flag (down)", "mensurald15", "mensd1thirtysecondflag") + set_char_box(0, 0.60 staff_space#, 3.00 staff_space#, 0) + draw_mensural_outermost_flag_ii + draw_mensural_inner_flag(1.5) + draw_mensural_inner_flag(2.5) + currentpicture := currentpicture xscaled -1 yscaled -1; +fet_endchar; + +fet_beginchar("64th Mensural Flag (up)", "mensuralu06", "menssixtyfourthflag") + set_char_box(0, 0.60 staff_space#, 3.00 staff_space#, 0) + draw_mensural_outermost_flag_i + draw_mensural_inner_flag(1.5) + draw_mensural_inner_flag(2.5) + draw_mensural_inner_flag(3.5) +fet_endchar; + +fet_beginchar("64th Mensural Flag (up)", "mensuralu16", "mens1sixtyfourthflag") + set_char_box(0, 0.60 staff_space#, 3.00 staff_space#, 0) + draw_mensural_outermost_flag_ii + draw_mensural_inner_flag(1.17) + draw_mensural_inner_flag(2.08) + draw_mensural_inner_flag(3.00) +fet_endchar; + +fet_beginchar("64th Mensural Flag (down)", "mensurald06", "mensdsixtyfourthflag") + set_char_box(0, 0.60 staff_space#, 3.00 staff_space#, 0) + draw_mensural_outermost_flag_i + draw_mensural_inner_flag(1.5) + draw_mensural_inner_flag(2.5) + draw_mensural_inner_flag(3.5) + currentpicture := currentpicture xscaled -1 yscaled -1; +fet_endchar; + +fet_beginchar("64th Mensural Flag (down)", "mensurald16", "mensd1sixtyfourthflag") + set_char_box(0, 0.60 staff_space#, 3.00 staff_space#, 0) + draw_mensural_outermost_flag_ii + draw_mensural_inner_flag(1.17) + draw_mensural_inner_flag(2.08) + draw_mensural_inner_flag(3.00) + currentpicture := currentpicture xscaled -1 yscaled -1; +fet_endchar; + +%%%%%%%% +% +% +% +% Single Stroke for Short Appogiatura +% +% +% + +fet_beginchar("grace dash (up)", "ugrace", "gracedash") + save flare, + hip_depth_ratio, hip_width, + foot_depth; + + flare# = 1.0 staff_space#; + hip_depth_ratio = .72; + hip_width# = upflag_width# - hip_thickness#/2; + + foot_depth# = 3 staff_space#; + + define_pixels(flare, hip_width, hip_thickness, + foot_depth, foot_thickness); + + set_char_box(hip_width# * hip_depth_ratio, + hip_width# + stemthickness#/2 + right_upflag_space#, + foot_depth# * hip_depth_ratio, -flare#) + + pickup pencircle scaled 1.5 stemthickness; + draw (-b ,-d) .. + (w, h); +fet_endchar; fet_beginchar("grace dash (down)", "dgrace", "dgracedash") save flare, hip_depth_ratio, hip_width, foot_depth; ############################################################################### --- stem.cc.orig Wed Jul 11 14:54:52 2001 +++ stem.cc Sat Aug 18 04:24:00 2001 @@ -461,18 +461,65 @@ Molecule Stem::flag (Grob*me) { - String style; - SCM st = me->get_grob_property ("flag-style"); - if (gh_string_p (st)) + // TODO: rename flag-style into something more appropriate, + // e.g. "stroke-style", maybe with values "" (i.e. no stroke), + // "single" and "double". Needs more discussion. + String style, fstyle, stafflineOffs; + SCM fst = me->get_grob_property ("flag-style"); + if (gh_string_p (fst)) { - style = ly_scm2string (st); + fstyle = ly_scm2string (fst); } + SCM st = me->get_grob_property ("style"); + if (gh_symbol_p (st)) + { + style = (ly_scm2string (scm_symbol_to_string (st))); + } + else + { + style = ""; + } + if (String::compare_i (style, "mensural") == 0) + // Mensural notation: For notes on staff lines, use different + // flags than for notes between staff lines. The idea is that + // flags are always vertically aligned with the staff lines, + // regardless if the note head is on a staff line or between two + // staff lines. In other words, the inner end of a flag always + // touches a staff line. + { + // Urrgh! We have to detect wether this stem ends on a staff + // line or between two staff lines. But we can not call + // stem_end_position(me) or get_default_stem_end_position(me), + // since this encounters the flag and hence results in an + // infinite recursion. However, in pure mensural notation, + // there are no multiple note heads attached to a single stem, + // neither is there usually need for using the stem_shorten + // property (except for 32th and 64th notes, but that is not a + // problem since the stem length in this case is augmented by + // an integral multiple of staff_space). Hence, it should be + // sufficient to just take the first note head, assume it's + // the only one, look if it's on a staff line, and select the + // flag's shape accordingly. In the worst case, the shape + // looks slightly misplaced, but that will usually be the + // programmer's fault (e.g. when trying to attach multiple + // note heads to a single stem in mensural notation). + Grob *firstHead = first_head(me); + int sz = Staff_symbol_referencer::line_count (me)-1; + int p = (int)rint (Staff_symbol_referencer::position_f (firstHead)); + stafflineOffs = (((p ^ sz) & 0x1) == 0) ? "1" : "0"; + } + else + { + stafflineOffs = ""; + } char c = (get_direction (me) == UP) ? 'u' : 'd'; - Molecule m = Font_interface::get_default_font (me)->find_by_name (String ("flags-") + to_str (c) + - to_str (flag_i (me))); - if (!style.empty_b ()) - m.add_molecule (Font_interface::get_default_font (me)->find_by_name (String ("flags-") + to_str (c) + style)); + Molecule m = + Font_interface::get_default_font (me)-> + find_by_name (String ("flags-") + style + to_str (c) + stafflineOffs + + to_str (flag_i (me))); + if (!fstyle.empty_b ()) + m.add_molecule (Font_interface::get_default_font (me)->find_by_name (String ("flags-") + to_str (c) + fstyle)); return m; } ############################################################################### --- grob-property-description.scm.orig Tue Aug 14 13:41:27 2001 +++ grob-property-description.scm Fri Aug 17 22:41:48 2001 @@ -150,7 +150,7 @@ slur dir) -> attachment to determine the attachment (see above). If procedure returns #t, attachment is used. Otherwise, the next procedure is tried.") -(grob-property-description 'flag-style string? "style for flag (hook of a stem).") +(grob-property-description 'flag-style string? "turn stroke through stem on/off.") (grob-property-description 'flag-width-function procedure? "Procedure that computes the width of a half-beam (a non-connecting beam.).") (grob-property-description 'font-family symbol? "partial font definition: music roman braces dynamic math ...") ############################################################################### --- generic-property.scm.orig Wed Mar 28 01:26:12 2001 +++ generic-property.scm Fri Aug 17 22:42:46 2001 @@ -39,6 +39,7 @@ (list 'verticalDirection dir? 'direction) (list 'stemLength number? 'length) (list 'flagStyle string? 'flag-style) + (list 'style symbol? 'style) (list 'noStemExtend boolean? 'no-stem-extend) (list 'stemShorten number? 'shorten) )) ############################################################################### --- ancient-font.ly.orig Tue Aug 14 13:35:04 2001 +++ ancient-font.ly Sat Aug 18 04:42:20 2001 @@ -107,6 +107,7 @@ #'line-count = #5 \notes \transpose c' { + \property Voice.noAutoBeaming = ##t \property Staff.KeySignature \override #'style = #'mensural \property Staff.Accidentals \override #'style = #'mensural \property Staff.Custos \override #'style = #'mensural @@ -131,7 +132,11 @@ e d c1 \bar "|" \property Voice.NoteHead \override #'style = #'mensural + \property Voice.Stem \override #'style = #'mensural + \property Voice.Stem \override #'thickness = #1.0 \clef "petrucci_f" + c8 b, c16 b, c32 b, c64 b, c b, + d8 e d16 e d32 e d64 e d e c2 d e f g \property Staff.forceClef = ##t \clef "petrucci_f" @@ -171,14 +176,14 @@ % \paperTwentysix linewidth = 17.25\cm textheight = 26.0\cm -% stafflinethickness = \staffspace / 5.0 + stafflinethickness = \staffspace / 5.0 indent = 0.0 \translator { \StaffContext \consists Custos_engraver % Custos \override #'style = #'mensural \remove Time_signature_engraver - StaffSymbol \override #'thickness = #2.0 +% StaffSymbol \override #'thickness = #2.0 % StaffSymbol \override #'line-count = #4 } } ###############################################################################