lilypond-user
[Top][All Lists]
Advanced

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

Re: Color tweaks (edition engraver)


From: David Nalesnik
Subject: Re: Color tweaks (edition engraver)
Date: Fri, 1 May 2015 12:02:26 -0500



On Fri, May 1, 2015 at 11:15 AM, David Nalesnik <address@hidden> wrote:


On Fri, May 1, 2015 at 10:56 AM, David Nalesnik <address@hidden> wrote:

The code below will work much better. 


Drat.  Somehow we need to get the context name into the override.  Otherwise


      \override Staff.Clef.extra-offset = #'(0 . 5)
      \clef alto 

will lose its extra-offset and not be marked in green.


OK, fixed.  Hoping this wouldn't get too convoluted...

%%%%%%%%%%%%%%%

 \version "2.19"

colorOverride =
#(define-music-function (parser location music) (ly:music?)
   (music-map
    (lambda (mus)
      (if (and (music-is-of-type? mus 'context-specification)
               (ly:music? (ly:music-property mus 'element)))
          
          (let* ((elt (ly:music-property mus 'element))
                 (context (ly:music-property mus 'context-type)))
            
            (cond
             ((music-is-of-type? elt 'override-property-event)
              (let* ((grob-name (ly:music-property elt 'symbol))
                     (prop-path (ly:music-property elt 'grob-property-path))
                     (once? (ly:music-property elt 'once)))
                (cond
                 ; non-user overrides don't set property path
                 ((null? prop-path) #{ #}) 
                 ((eq? #t once?)
                  (set! mus
                        #{
                          \once \override #(list context grob-name 'color) = #green
                          #mus
                        #}))
                 (else
                  (set! mus
                        #{
                          \override #(list context grob-name 'color) = #green
                          #mus
                        #})))))
             ((and (music-is-of-type? elt 'layout-instruction-event)
                   (eq? (ly:music-property elt 'name) 'RevertProperty))
              (let ((grob-name (ly:music-property elt 'symbol)))
                (set! mus
                      #{
                        \revert #(list context grob-name 'color)
                        #mus
                      #}))))))
      
      mus)
    music)
   
   music)

%\displayMusic
\colorOverride
\new PianoStaff <<
  \new Staff <<
    \new Voice {
      \voiceOne
      c''4
      \once \override NoteHead.after-line-breaking =
      #(lambda (grob)
         (let ((stil (ly:note-head::print grob)))
           (set! (ly:grob-property grob 'stencil)
                 (ly:stencil-scale stil 1.5 1.5))))
      d'' e''->
      \override Voice.Stem.padding = 2
      f''
      g''1                                          
    }
    \new Voice {
      \voiceTwo
      c'4 d'
      \override Script.font-size = 3
      e'-> f'->
      \revert Script.font-size
      g'1->
      \override Staff.Clef.extra-offset = #'(0 . 5)
      \oneVoice
      \clef alto
      \shape #'((0 . 0) (0 . 3) (0 . 3) (0 . 0)) Tie % \shape is \once
      c'1~
      \revert Staff.Clef.extra-offset
      \clef treble
      c'1~
      c'1
    }
  >>
  \new Staff <<
    \clef bass
    \new Voice { 
      \voiceOne
      c'4 d' e'->
      \override Voice.Stem.padding = 2
      f'
      g'1\fermata
      \oneVoice
      \clef treble
      c'
      \clef alto
    }
    \new Voice {
      \voiceTwo
      c4 d
      \override Script.font-size = 3
      e-> f->
      g1->
    }
  >>
>>
%}

reply via email to

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