From: fred Date: Wed, 27 Mar 2002 01:21:00 +0000 (+0000) Subject: lilypond-1.5.8 X-Git-Tag: release/1.5.59~573 X-Git-Url: https://git.donarmstrong.com/?a=commitdiff_plain;h=4e678567da75c889c1cc45df5221829af14239ff;p=lilypond.git lilypond-1.5.8 --- diff --git a/input/test/ancient-font.ly b/input/test/ancient-font.ly index 2e9cd0c3f9..5afabdbd26 100644 --- a/input/test/ancient-font.ly +++ b/input/test/ancient-font.ly @@ -107,6 +107,7 @@ lowerVoice = \context Staff = lowerNotes < #'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 @@ lowerVoice = \context Staff = lowerNotes < 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 @@ lowerVoice = \context Staff = lowerNotes < % \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 } } diff --git a/lily/stem.cc b/lily/stem.cc index 1e229e1f0f..03d2c07ef8 100644 --- a/lily/stem.cc +++ b/lily/stem.cc @@ -461,18 +461,65 @@ Stem::set_spacing_hints (Grob*me) 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; } diff --git a/mf/feta-banier.mf b/mf/feta-banier.mf index 4795c82513..2bb37f8d65 100644 --- a/mf/feta-banier.mf +++ b/mf/feta-banier.mf @@ -229,29 +229,6 @@ fet_beginchar("64th Flag (up)", "u6", "sixtyfourthflag") 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, @@ -280,6 +257,218 @@ fet_beginchar("8th (down)", "d3", "deighthflag") (hip_width, foot_depth), hip_depth_ratio,foot_width_ratio, hip_thickness, foot_thickness); +%%%%%%%% +% +% +% +% 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; pickup pencircle scaled stemthickness; draw (0, 0) .. (0,-2 staff_space); @@ -404,6 +593,218 @@ fet_beginchar("64th (down)", "d6", "dsixtyfourthflag") 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; diff --git a/scm/generic-property.scm b/scm/generic-property.scm index 740f0a641a..f5aba1fcc9 100644 --- a/scm/generic-property.scm +++ b/scm/generic-property.scm @@ -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) ))