[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: printKeyCancellation, a way to never show key cancellations?
From: |
Thomas Morley |
Subject: |
Re: printKeyCancellation, a way to never show key cancellations? |
Date: |
Sun, 2 Dec 2012 19:16:56 +0100 |
2012/12/2 Paul Morris <address@hidden>:
> Hi everyone, I am using
> \set Staff.printKeyCancellation = ##f
> to not show the key cancellation when you change keys[1]. But I found that
> this does not hide the key cancellation when you change back to C major or A
> minor[2] (presumably since that would leave no indication of a key change at
> all).
>
> But I am using non-standard key signatures that make all key cancellations
> unnecessary, so I want to never show them, even when changing to C major / A
> minor.
>
>
> JUST A THOUGHT
> For greater flexibility, would it make sense for PrintKeyCancellation to have
> 3 options instead of 2?
>
> 1. show key cancellations
> 2. hide key cancellations, except C major / A minor
> 3. hide all key cancellations
>
>
> OR A DOCUMENTATION SUGGESTION
> In any case it would be helpful to mention this C major / A minor exception
> on the page documenting this option.[1] Something like:
>
> "(Note that setting the Staff context property printKeyCancellation to #f
> does _not_ remove cautionary accidentals when changing to a key with no
> sharps or flats (C major / A minor), since that would leave no indication of
> a key change.)"
>
> Also, the example on that page concludes with: "With these overrides only the
> accidentals before the notes remain to indicate the change of key." ...which
> is not completely true, unless you add something like "(unless you have just
> changed to C major / A minor)".
>
>
> A WORKAROUND FROM THE ARCHIVES (ALMOST)
> So I searched the lilypond-user archives and found a few instances where this
> has come up, and a suggested workaround[3]:
>
> \once \override Staff.KeyCancellation #'stencil = ##f
>
> This works! ...except it does not seem to work when using a custom key
> signature engraver. Here is a tiny example that just shows a circle as a
> custom key signature (of course, this is not what I actually use).
>
> \version "2.16.1"
>
> #(define Custom_key_engraver
> (make-engraver
> (acknowledgers
> ((key-signature-interface engraver grob source-engraver)
> (ly:grob-set-property! grob 'stencil (make-circle-stencil .7 .3
> #f))))))
>
> music = \relative c' {
> \time 1/4
> \key a \major
> d4
> \key f \major
> d
>
> \set Staff.printKeyCancellation = ##f
> \key a \major
> d
> \key f \major
> d
> \key a \major
> d
> \key c \major
> d
>
> \override Staff.KeyCancellation #'stencil = ##f
> \override CustomStaff.KeyCancellation #'stencil = ##f
> \key a \major
> d
> \key c \major
> d
> }
>
> \score
> {
> <<
> \new Staff { \music }
> \new Staff \with { \consists \Custom_key_engraver } { \music }
> >>
> \layout { }
> }
>
> The problem can be seen in the last measure where two circles are printed,
> one for the key cancellation and one for the key of C, whereas no key
> cancellation is printed on the standard staff.
>
> I realize I am off in the land of non-standard customizations, but does
> anyone have any suggestions? Is there a way to get such a custom key
> signature engraver to recognize and follow this override?
>
> Cheers,
> -Paul
>
> [1] See "Visibility of cautionary accidentals" section:
> http://www.lilypond.org/doc/v2.16/Documentation/notation/visibility-of-objects#special-considerations
>
> [2]
> \version "2.16.1"
> \relative c' {
> \time 1/4
> \key a \major
> d4
> \key f \major
> d
> \set Staff.printKeyCancellation = ##f
> \key a \major
> d
> \key f \major
> d
> \key a \major
> d
> \key c \major
> d
> }
>
> [3] http://lists.gnu.org/archive/html/lilypond-user/2012-05/msg00749.html
> _______________________________________________
> lilypond-user mailing list
> address@hidden
> https://lists.gnu.org/mailman/listinfo/lilypond-user
How about adding
\override Staff.KeyCancellation #'break-visibility = #'#(#f #f #f)
to your score?
Seems to work.
-Harm
Re: printKeyCancellation, a way to never show key cancellations?, Keith OHara, 2012/12/02