]> git.donarmstrong.com Git - lilypond.git/commitdiff
* Documentation/user/refman.itely,
authorJürgen Reuter <j@web.de>
Sat, 24 May 2003 01:33:50 +0000 (01:33 +0000)
committerJürgen Reuter <j@web.de>
Sat, 24 May 2003 01:33:50 +0000 (01:33 +0000)
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

ChangeLog
Documentation/user/refman.itely
lily/vaticana-ligature-engraver.cc
lily/vaticana-ligature.cc
mf/parmesan-heads.mf

index dbbf9d0698c848a6d2d547bfbc9a4c5a0bdd684f..df4dfb95835c96863ce20e6776e2850cd1314381 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+2003-05-24  Juergen Reuter  <reuter@ipd.uka.de>
+
+       * 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  <hjunes@cc.hut.fi>
 
        * lilypond-indent.el: Match '(' and ')' by skipping '\(' and '\)'.
index d844e69ebe4a0ee6fa59b335f440d363e4d74fed..6859691e9a5f6bc7a740b52bafc7006e33fd533a 100644 (file)
@@ -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
index 069550471c4b7ab6e2cb41e8643ff556f775dfc9..3a86732ca9974de107b09e1ac42bfa049c2ac841 100644 (file)
@@ -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);
 
index 58b8492402825de529f94e0cfea3ba96b53963af..6371a78d607ff8b14c31e4e86dcd09f7eaf5764b 100644 (file)
@@ -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
index b686dc25034239ce9406226acf25e06492a5a045..e3d3a63f1862c772497f623e60890c67c646f13c 100644 (file)
@@ -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,