Jump to content

Coloring staves

From LilyPond wiki

The following example demonstrates how to print individual staves with a colored background.

\version "2.24.0"

%% http://lsr.di.unimi.it/LSR/Item?id=726

%% LSR contributed by Valentin:
%% http://lists.gnu.org/archive/html/lilypond-user-fr/2010-10/msg00252.html

bgcolor =
#(define-music-function (color) (string?)
  #{
     \override Staff.StaffSymbol.stencil =
       #(grob-transformer 'stencil
          (lambda (grob orig)
             (let* ((X-ext (ly:stencil-extent orig X))
                    (Y-ext (ly:stencil-extent orig Y)))
               (set! Y-ext (cons
                  (- (car Y-ext) 2)
                  (+ (cdr Y-ext) 2)))
               (ly:grob-set-property! grob 'layer -10)
               (ly:stencil-add
                 (stencil-with-color
                   (ly:round-filled-box X-ext Y-ext 0)
                   (eval-string color))
                 orig))))
  #})

<<
  \new Staff { \bgcolor "blue" a'1 } % basic colors
  \new Staff { \bgcolor "(x11-color 'red)" b' } % x11 colors
  \new Staff { \bgcolor "(rgb-color 1 0.8 0.6)" c'' } % rgb colors
>>