Hey all,

I’ve found weird behaviour with the completion heads engraver wrt. to forced 
accidentals:

%%%
\new Voice \with {
  \remove Note_heads_engraver
  \consists Completion_heads_engraver
} { cis''!1*3 }
%%%

What is happening here is that forced/cautionary accidentals work by setting an 
event/grob 
property (for which then the accidental engraver checks).

But the Competion heads engraver creates all note heads from copies of the same 
event, which 
means that indeed the above would be equivalent to

%%%
{ cis''!1~ cis''!1~ cis''!1 }
%%%

This I think is almost never what we’d actually want to see. Since I currently 
use the Completion 
heads engraver for a project I wrote a patch which simply sets the 
forced-accidental/cautionary 
properties to #f after creating a note head, meaning the properties would be 
true at most until 
the first note head.

This is probably not a good fix, but I don’t understand the code well enough to 
quickly come up 
with a better solution for now.

Leaving this here for discussion

1. Surely this is to be seen as a bug?
2. What would be a good fix? Potentially it would make sense to have an 
Accidental event 
attached to the note head or something?

*But even then, the problem does not appear for articulations and stuff like 
this*

%%%
\new Voice \with {
  \remove Note_heads_engraver
  \consists Completion_heads_engraver
} { <cis''!>1*3-2 }
%%%

only because the script engraver looks for articulatons attached to note events 
(that are not 
handed during iteration) and then removed from the original event (which is 
also not really that 
much of a clean thing). In fact we see the same problem say here:

%%%
\new Voice \with {
  \remove Note_heads_engraver
  \consists Completion_heads_engraver
} { <cis''!-2>1*3 }
%%%

Not sure what’s the best thing to do here ...

Best regards,
Tina

Attachment: signature.asc
Description: This is a digitally signed message part.

Reply via email to