Vaticana ligature patch

classic Classic list List threaded Threaded
5 messages Options
Reply | Threaded
Open this post in threaded view
|

Vaticana ligature patch

Michael Welsh Duggan
This may help with other ligatures as well.  This fixes the bug
whereby a note head immediately succeeding a ligature became
invisible.  (Example: see 2.7.16 documentation, section 7.7.11.  There
should be a note under the "ctus" of the second "sanctus".)


Index: ly/engraver-init.ly
===================================================================
RCS file: /cvsroot/lilypond/lilypond/ly/engraver-init.ly,v
retrieving revision 1.265
diff -u -p -u -r1.265 engraver-init.ly
--- ly/engraver-init.ly 12 Nov 2005 14:20:03 -0000 1.265
+++ ly/engraver-init.ly 16 Nov 2005 03:08:31 -0000
@@ -676,7 +676,12 @@ AncientRemoveEmptyStaffContext = \contex
   \remove "Slur_engraver"
   \remove "Stem_engraver"
   \remove "Ligature_bracket_engraver"
+  \remove "Note_heads_engraver"
+  %% Make sure Vaticana_ligature_engraver comes *before*
+  %% Note_heads_engraver.  This is so it gets the opportunity to
+  %% override the NoteHead stencil before the NoteHeads take place.
   \consists "Vaticana_ligature_engraver"
+  \consists "Note_heads_engraver"
 
   %% Set default head for notes outside of \[ \].
   \override NoteHead #'style = #'vaticana.punctum


--
Michael Welsh Duggan
([hidden email])

_______________________________________________
bug-lilypond mailing list
[hidden email]
http://lists.gnu.org/mailman/listinfo/bug-lilypond
Reply | Threaded
Open this post in threaded view
|

Re: Vaticana ligature patch

Michael Welsh Duggan
Another patch, this one which fixes the addition of caudas and the
exceptional pes rule.


Index: lily/vaticana-ligature-engraver.cc
===================================================================
RCS file: /cvsroot/lilypond/lilypond/lily/vaticana-ligature-engraver.cc,v
retrieving revision 1.51
diff -u -p -u -r1.51 vaticana-ligature-engraver.cc
--- lily/vaticana-ligature-engraver.cc 10 Nov 2005 01:01:11 -0000 1.51
+++ lily/vaticana-ligature-engraver.cc 16 Nov 2005 07:35:24 -0000
@@ -504,7 +504,7 @@ Vaticana_ligature_engraver::transform_he
        * head of a pes, and if it is a punctum.
        */
       if ((context_info & FLEXA_LEFT) && ! (context_info & PES_UPPER))
- if (!String::compare (glyph_name, "svaticana.punctum"))
+ if (!String::compare (glyph_name, "vaticana.punctum"))
   primitive->set_property ("add-cauda", ly_bool2scm (true));
 
       /*
@@ -543,7 +543,7 @@ Vaticana_ligature_engraver::transform_he
  {
   if ((context_info & PES_UPPER) && (context_info & STACKED_HEAD))
     {
-      if (!String::compare (prev_glyph_name, "svaticana.punctum"))
+      if (!String::compare (prev_glyph_name, "vaticana.punctum"))
  if (prev_delta_pitch > 1)
   prev_glyph_name = "vaticana.lpes";
  else


--
Michael Welsh Duggan
([hidden email])

_______________________________________________
bug-lilypond mailing list
[hidden email]
http://lists.gnu.org/mailman/listinfo/bug-lilypond
Reply | Threaded
Open this post in threaded view
|

Re: Vaticana ligature patch

Michael Welsh Duggan
In reply to this post by Michael Welsh Duggan
Michael Welsh Duggan <[hidden email]> writes:

> This may help with other ligatures as well.  This fixes the bug
> whereby a note head immediately succeeding a ligature became
> invisible.  (Example: see 2.7.16 documentation, section 7.7.11.  There
> should be a note under the "ctus" of the second "sanctus".)

reuter's checkin of ligature-engraver.cc v1.55 on Tue Nov 15 23:21:17
2005 UTC obviates the need for the below patch with a *much* better
solution.  The other patch in this thread is still necessary.

> Index: ly/engraver-init.ly
> ===================================================================
> RCS file: /cvsroot/lilypond/lilypond/ly/engraver-init.ly,v
> retrieving revision 1.265
> diff -u -p -u -r1.265 engraver-init.ly
> --- ly/engraver-init.ly 12 Nov 2005 14:20:03 -0000 1.265
> +++ ly/engraver-init.ly 16 Nov 2005 03:08:31 -0000
> @@ -676,7 +676,12 @@ AncientRemoveEmptyStaffContext = \contex
>    \remove "Slur_engraver"
>    \remove "Stem_engraver"
>    \remove "Ligature_bracket_engraver"
> +  \remove "Note_heads_engraver"
> +  %% Make sure Vaticana_ligature_engraver comes *before*
> +  %% Note_heads_engraver.  This is so it gets the opportunity to
> +  %% override the NoteHead stencil before the NoteHeads take place.
>    \consists "Vaticana_ligature_engraver"
> +  \consists "Note_heads_engraver"
>  
>    %% Set default head for notes outside of \[ \].
>    \override NoteHead #'style = #'vaticana.punctum

--
Michael Welsh Duggan
([hidden email])


_______________________________________________
bug-lilypond mailing list
[hidden email]
http://lists.gnu.org/mailman/listinfo/bug-lilypond
Reply | Threaded
Open this post in threaded view
|

Re: Vaticana ligature patch

Han-Wen Nienhuys
Michael Welsh Duggan wrote:

>>   \remove "Stem_engraver"
>>   \remove "Ligature_bracket_engraver"
>>+  \remove "Note_heads_engraver"
>>+  %% Make sure Vaticana_ligature_engraver comes *before*
>>+  %% Note_heads_engraver.  This is so it gets the opportunity to
>>+  %% override the NoteHead stencil

>> before the NoteHeads take place.

What does this mean? To which code does this refer?


--
  Han-Wen Nienhuys - [hidden email] - http://www.xs4all.nl/~hanwen


_______________________________________________
bug-lilypond mailing list
[hidden email]
http://lists.gnu.org/mailman/listinfo/bug-lilypond
Reply | Threaded
Open this post in threaded view
|

Re: Vaticana ligature patch

Michael Welsh Duggan
Han-Wen Nienhuys <[hidden email]> writes:

> Michael Welsh Duggan wrote:
>
>>>   \remove "Stem_engraver"
>>>   \remove "Ligature_bracket_engraver"
>>>+  \remove "Note_heads_engraver"
>>>+  %% Make sure Vaticana_ligature_engraver comes *before*
>>>+  %% Note_heads_engraver.  This is so it gets the opportunity to
>>> +  %% override the NoteHead stencil
>
>>> before the NoteHeads take place.
>
> What does this mean? To which code does this refer?

Specifically, it refers to the revert_stencil_callback and
override_stencil_callback functions in Ligature-engraver before
version 1.55 of that file.  Before this change, NoteHead stencils were
modified by a pushpop property into the current context instead of
modifying the grobs' stencil property directly.  As a result, if
NoteHeads were processed before Vaticana_ligature_engraver, the first
NoteHead after the Ligature ended (same time-step) would inherit the
stencil change from the context before Vaticana_ligature_engraver (via
Ligature_engraver) reverted the pushpop_property.

Fortunately, as originally noted, the changes in Ligature_engraver
from v 1.54 to 1.55 obviate the need for the referenced patch.

--
Michael Welsh Duggan
([hidden email])


_______________________________________________
bug-lilypond mailing list
[hidden email]
http://lists.gnu.org/mailman/listinfo/bug-lilypond