From: Jürgen Reuter Date: Sat, 24 May 2003 01:33:50 +0000 (+0000) Subject: * Documentation/user/refman.itely, X-Git-Tag: release/1.7.20~13 X-Git-Url: https://git.donarmstrong.com/?a=commitdiff_plain;h=23cd484ee45d2e5807540265a6fe6b70e9eb2020;p=lilypond.git * Documentation/user/refman.itely, lily/vaticana-ligature-engraver.cc, lily/vaticana-ligature.cc, mf/parmesan-heads.mf: fixed most of the head selection/alignment bugs in the solesmes neumes table --- diff --git a/ChangeLog b/ChangeLog index dbbf9d0698..df4dfb9583 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2003-05-24 Juergen Reuter + + * Documentation/user/refman.itely, + lily/vaticana-ligature-engraver.cc, lily/vaticana-ligature.cc, + mf/parmesan-heads.mf: fixed most of the head selection/alignment + bugs in the solesmes neumes table + 2003-05-24 Heikki Junes * lilypond-indent.el: Match '(' and ')' by skipping '\(' and '\)'. diff --git a/Documentation/user/refman.itely b/Documentation/user/refman.itely index d844e69ebe..6859691e9a 100644 --- a/Documentation/user/refman.itely +++ b/Documentation/user/refman.itely @@ -5771,7 +5771,7 @@ Hymnarius}), published 1983 by the monks of Solesmes. \score { \notes \transpose c c' { % Salicus - \[ g \pes \oriscus a \virga b \] + \[ g \oriscus a \pes \virga b \] } \paper { interscoreline = 1 @@ -5803,7 +5803,7 @@ Hymnarius}), published 1983 by the monks of Solesmes. \score { \notes \transpose c c' { % Salicus Auctus Descendens - \[ g \pes \oriscus a \auctum \descendens b \] + \[ g \oriscus a \pes \auctum \descendens b \] } \paper { interscoreline = 1 @@ -5870,15 +5870,10 @@ Hymnarius}), published 1983 by the monks of Solesmes. @refbugs -Horizontal head alignment is broken in Pes Quassus, Pes Quassus Auctus -Descendens, Quilisma Pes Auctus Descendens, Pes Initio Debilis, Pes -Auctus Descendens Initio Debilis, Torculus Deminutus Initio Debilis, -Porrectus Deminutus, Scandicus Auctus Descendens, Scandicus Deminutus, -Salicus, and Salicus Auctus Descendens. +Horizontal head alignment is broken in Pes Initio Debilis. -Porrectus Auctus Descendens: wrong glyph for auctus descendens head. - -Torculus Deminutus: use cephalicus head without stem. +Use special heads for lower/upper head of Pes only when heads are +stacked. @node Figured bass @subsection Figured bass diff --git a/lily/vaticana-ligature-engraver.cc b/lily/vaticana-ligature-engraver.cc index 069550471c..3a86732ca9 100644 --- a/lily/vaticana-ligature-engraver.cc +++ b/lily/vaticana-ligature-engraver.cc @@ -27,6 +27,7 @@ class Vaticana_ligature_engraver : public Gregorian_ligature_engraver private: Real finish_primitive (Item *first_primitive, Item *primitive, + int prefix_set, int context_info, String glyph_name, int pitch_delta, @@ -56,6 +57,7 @@ Vaticana_ligature_engraver::create_ligature_spanner () Real Vaticana_ligature_engraver::finish_primitive (Item *first_primitive, Item *primitive, + int prefix_set, int context_info, String glyph_name, int pitch_delta, @@ -77,19 +79,32 @@ Vaticana_ligature_engraver::finish_primitive (Item *first_primitive, if (context_info & FLEXA_LEFT) is_stacked = false; + // ... or another pes + if (context_info & PES_LOWER) + is_stacked = false; + + // ... or the previous note is a semivocalis or inclinatum + /* TODO: + if (prev_prefix_set & DEMINUTUM) + is_stacked = false; + */ + // auctum head is never stacked upon preceding note - if (context_info & AUCTUM) + if (prefix_set & AUCTUM) + is_stacked = false; + + // virga is never stacked upon preceding note + if (prefix_set & VIRGA) is_stacked = false; - // semivocalis head of epiphonus or cephalicus is stacked upon - // preceding head - if (!String::compare (glyph_name, "vaticana_plica")) - is_stacked = true; // semivocalis head of epiphonus - if (!String::compare (glyph_name, "vaticana_reverse_plica")) - if (context_info & PES_LOWER) - {} // initio debilis => not stacked - else - is_stacked = true; // semivocalis head of cephalicus + // oriscus is never stacked upon preceding note + if (prefix_set & ORISCUS) + is_stacked = false; + + if ((prefix_set & DEMINUTUM) && + !(prefix_set & INCLINATUM) && + (context_info & FLEXA_RIGHT)) + is_stacked = true; // semivocalis head of deminutus form if (is_stacked) { @@ -219,6 +234,7 @@ Vaticana_ligature_engraver::transform_heads (Spanner *ligature, Item *first_primitive = 0; Item *prev_primitive = 0; + int prev_prefix_set = 0; int prev_context_info = 0; int prev_pitch = 0; int prev_pitch_delta = 0; @@ -258,14 +274,34 @@ Vaticana_ligature_engraver::transform_heads (Spanner *ligature, else glyph_name = "vaticana_inclinatum"; else if (prefix_set & DEMINUTUM) - if (pitch > prev_pitch) + if (primitive == first_primitive) + { + // initio debilis + glyph_name = "vaticana_reverse_plica"; + } + else if (pitch > prev_pitch) { - prev_glyph_name = "vaticana_epiphonus"; + // epiphonus + if (!(prev_context_info & FLEXA_RIGHT)) + { + prev_glyph_name = "vaticana_epiphonus"; + } glyph_name = "vaticana_plica"; } - else + else // (pitch <= prev_pitch) { - prev_glyph_name = "vaticana_cephalicus"; + // cephalicus + if (!(prev_context_info & FLEXA_RIGHT)) + { + if (prev_primitive == first_primitive) + { + prev_glyph_name = "vaticana_cephalicus"; + } + else + { + prev_glyph_name = "vaticana_inner_cephalicus"; + } + } glyph_name = "vaticana_reverse_plica"; } else if (prefix_set & (CAVUM | LINEA)) @@ -340,11 +376,12 @@ Vaticana_ligature_engraver::transform_heads (Spanner *ligature, * Finish head of previous iteration for backend. */ prev_distance = - finish_primitive (first_primitive, prev_primitive, + finish_primitive (first_primitive, prev_primitive, prev_prefix_set, prev_context_info, prev_glyph_name, prev_pitch_delta, flexa_width, join_thickness, prev_distance); prev_primitive = primitive; + prev_prefix_set = prefix_set; prev_context_info = context_info; prev_pitch_delta = pitch - prev_pitch; prev_pitch = pitch; @@ -355,7 +392,7 @@ Vaticana_ligature_engraver::transform_heads (Spanner *ligature, * Finish head of last iteration for backend. */ prev_distance = - finish_primitive (first_primitive, prev_primitive, + finish_primitive (first_primitive, prev_primitive, prev_prefix_set, prev_context_info, prev_glyph_name, prev_pitch_delta, flexa_width, join_thickness, prev_distance); diff --git a/lily/vaticana-ligature.cc b/lily/vaticana-ligature.cc index 58b8492402..6371a78d60 100644 --- a/lily/vaticana-ligature.cc +++ b/lily/vaticana-ligature.cc @@ -256,7 +256,7 @@ vaticana_brew_primitive (Grob *me, bool ledger_take_space) programming_error (_f ("Vaticana_ligature: (join_left == 0)")); Real blotdiameter = (me->get_paper ()->get_var ("blotdiameter")); Interval x_extent = - Interval (-0.5 * thickness, +0.5 * thickness); + Interval (0, thickness); Interval y_extent = (join_left > 0) ? Interval (-join_left * 0.5 * staff_space, 0) : // ascending join Interval (0, -join_left * 0.5 * staff_space); // descending join diff --git a/mf/parmesan-heads.mf b/mf/parmesan-heads.mf index b686dc2503..e3d3a63f18 100644 --- a/mf/parmesan-heads.mf +++ b/mf/parmesan-heads.mf @@ -547,7 +547,13 @@ punctum_char("Ed. Vat. rev. plica", "vaticana_reverse_plica", "vatrplicahead", false, false, false, false, false, false, true, false, false, 0.7); -% excentric punctum as used in cephalicus +% excentric punctum as used in cephalicus; without left stem +punctum_char("Ed. Vat. cephalicus", "vaticana_inner_cephalicus", + "vatinnercephalicushead", + false, false, false, false, false, + false, false, true, false, 1.0); + +% excentric punctum as used in cephalicus; with left stem punctum_char("Ed. Vat. cephalicus", "vaticana_cephalicus", "vatcephalicushead", true, false, false, false, false,