bug-lilypond
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: extraNatural and key changes


From: Keith OHara
Subject: Re: extraNatural and key changes
Date: Mon, 13 Dec 2010 22:26:59 +0000 (UTC)
User-agent: Loom/3.14 (http://gmane.org/)

Neil Puttock <n.puttock <at> gmail.com> writes:
> 
> 2009/6/28 David Bobroff <bobroff <at> centrum.is>:
> > When using 'extraNatural = ##f' key cancellations at key changes are not
> > complete.  Key signature elements which change between sharp and flat on the
> > same note names are not canceled.
> >
> > Feature?
> 
> Yes.  It's deliberately set this way in the Key_engraver.
> 

After thinking a few months, and reading Kurt Stone's book, I am convinced that 
this is a design error.

The logic for printing naturals on notes (check-pitch-against-signature) is re-
implemented in Key_engraver::create_key.  The implementations look consistent, 
but consistency is not appropriate here.

On notes, we see the extra natural and the new accidental together, and the 
natural is very often removed.

In key signatures, we see the naturals as a group and the new signature as a 
group, so the extra-ness of the natural is less obvious. The group of naturals, 
the key cancellation, is sometimes removed as a group.

These two types of omissions are treated independently in everything I have 
read.  Lilypond's incomplete key cancellation, demonstrated earlier in the 
thread, is *never* used.  Therefore, extraNatural=##f as implemented must 
always be accompanied by either printKeyCancellation=##f, or a temporary 
restoration of extraNatural, for each key change.

Solo piano music especially likes to use 'black' keys like des\major and cis
\minor, where extraNatural=##f is very helpful for brevity, but complete key 
cancellations are also helpful when learning a new piece.  So I leave the 
cancellations in place, toggle extraNatural whenever I remember it, and am 
embarrassed when I forget.

Is there any reason that key cancellations should honor extraNatural=#f ?

--
Keith
P.S. I would be easily capable of this patch once I figure out git: four lines 
removed from Key_engraver, replaced with a comment that extraNatural is 
intentionally ignored, and the removal of the regression test key-signature-
cancellation-extra-natural.ly, and down-grading of issue 1399 to a doc fix.




reply via email to

[Prev in Thread] Current Thread [Next in Thread]