lilypond-user
[Top][All Lists]
Advanced

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

Re: Coloring of key signature accidentals based on their pitch


From: Heikki Junes
Subject: Re: Coloring of key signature accidentals based on their pitch
Date: Wed, 19 Aug 2015 11:33:24 +0300

Thanks David!

I adapted the colors and this key-sig-color-by-pitch.ly did exactly the trick I was looking after!

That different color by octave is not actually needed, at least by me. I included that in the example, in order to repeat the different color in different octave found in your example :)

Best regards,
Heikki


2015-08-19 1:34 GMT+03:00 David Nalesnik <address@hidden>:
Hi,

On Tue, Aug 18, 2015 at 3:43 PM, Heikki Junes <address@hidden> wrote:
Thanks David!

Yes, it provides the exactly the desired result!

Glad I could help!  See the attached for a completed adaptation.

I wonder if this function would better be defined in Scheme than C++.  If someone wanted to do something like you're doing, it wouldn't be a trivial matter to first redo the function in Scheme to make the necessary changes.
 

With this kind of approach, where the note height in the staff is being used instead of
the pitch of the note, the Staff.keySignature.stencil needs to be redefined on each clef change:

    \override Staff.KeySignature.stencil =
    #(key-signature::special-print treble-key-signature-colors)
    \override Staff.KeyCancellation.stencil =
    #(key-signature::special-print treble-key-signature-colors)
    \clef treble

    \override Staff.KeySignature.stencil =
    #(key-signature::special-print bass-key-signature-colors)
    \override Staff.KeyCancellation.stencil =
    #(key-signature::special-print bass-key-signature-colors)
    \clef bass

Would there be any idea in developing the idea even a bit further, and to connect the accidentals in the signature to
their pitch in stead of their vertical position?

So instead of

  \override Staff.KeySignature.stencil =
  #(key-signature::special-print `((4 . ,green) (-3 . ,red) (1 . ,blue)))
 
  \override Staff.KeyCancellation.stencil =
  #(key-signature::special-print `((-3 . ,magenta) (1 . ,cyan)))

One could have something more explicit which would work with all clefs, like

#(define key-signature-colors `(
   (ly:make-pitch 2 3 SHARP) . ,green)
   (ly:make-pitch 1 3 SHARP) . ,green)
   (ly:make-pitch 0 3 SHARP) . ,green)
   (ly:make-pitch -1 3 SHARP) . ,green)
   (ly:make-pitch 2 3 FLAT) . ,red)
   (ly:make-pitch 1 3 FLAT) . ,red)
   (ly:make-pitch 0 3 FLAT) . ,red)
   (ly:make-pitch -1 3 FLAT) . ,red)
   (ly:make-pitch 2 0 SHARP) . ,blue)
   (ly:make-pitch 1 0 SHARP) . ,blue)
   (ly:make-pitch 0 0 SHARP) . ,blue)
   (ly:make-pitch -1 0 SHARP) . ,blue)
   (ly:make-pitch 2 0 FLAT) . ,blue)
   (ly:make-pitch 1 0 FLAT) . ,blue)
   (ly:make-pitch 0 0 FLAT) . ,blue)
   (ly:make-pitch -1 0 FLAT) . ,blue)
   (ly:make-pitch 2 3 NATURAL) . ,magenta)
   (ly:make-pitch 1 3 NATURAL) . ,magenta)
   (ly:make-pitch 0 3 NATURAL) . ,magenta)
   (ly:make-pitch -1 3 NATURAL) . ,magenta)
   (ly:make-pitch 2 0 NATURAL) . ,cyan)
   (ly:make-pitch 1 0 NATURAL) . ,cyan)
   (ly:make-pitch 0 0 NATURAL) . ,cyan)
   (ly:make-pitch -1 0 NATURAL) . ,cyan)
  ))

  \override Staff.KeySignature.stencil =
  #(key-signature::special-print key-signature-colors)

  \override Staff.KeyCancellation.stencil =
  #(key-signature::special-print key-signature-colors )

?


Yes, this should be possible.

In the attached key-sig-color-by-pitch.ly, I've done something like this.  You'll notice that I modified your key-signature-colors list.  It might be nice to be able to specify the octave--for example, color an F-sharp in a certain octave blue, ired in another--but I couldn't make that work.

A strange thing: the F-sharp in the last key-signature should be colored red.  It isn't.  Yet in the other file--key-sig-color-by-position.ly--it works.  Don't know why this is.  Of course, this is a bit of a corner case :)

Something else I can't explain: the spacing appears to be slightly different between the default and modified stencils in both files. This only affects the positioning of naturals: Padding should only be added in case of an overlap.  The rewrite finds overlaps in m. 2 where the original function doesn't apparently.  Any ideas what causes this?

Best,
David




reply via email to

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