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 <david.nales...@gmail.com>: > Hi, > > On Tue, Aug 18, 2015 at 3:43 PM, Heikki Junes <heikki.ju...@gmail.com> > 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 > > >
_______________________________________________ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user