Hello everybody,
for analysis purposes, I'd like to put a colored background behind some
notes.
Here's my first approach:
\version "2.18.0"
{
<< { R1 c'2 g' c' r R1 }
\\
{
\override Voice.ClusterSpanner.color = #(rgb-color 0.5 0.6 1)
\override Voice.ClusterSpanner.layer = #-1
\makeClusters { s1 c'2 g' c' s s1 }
}
\\
{
\override Voice.ClusterSpanner.color = #(rgb-color 1.0 0.9 0.5)
\override Voice.ClusterSpanner.layer = #-2
\makeClusters { s1 <g c'''> q4 q2. s1 }
}
>>
}
Result:
http://4.bp.blogspot.com/-h3plzLbjpdw/VHZZo4oVqlI/AAAAAAAAACY/6gL6EEf0JGk/s1600/ex01.gif
The blue line between the note heads is a cluster. To avoid covering the
notes and staff lines, it's located in the layer "-1".
The yellow rectangle in the background (layer "-2") is achieved by a
cluster as well. But as soon as the score gets longer, this can be quite
a mess...
I would therefore prefer a (slightly modified) scheme function from
Lilipond Snippet 726 "Coloring staves":
http://lsr.di.unimi.it/LSR/Item?id=726
\version "2.18.0"
bgColor =
#(define-music-function (parser location y-lower y-upper color) (number?
number? string?)
#{\stopStaff
\override Staff.StaffSymbol $'stencil =
$(lambda (grob)
(let* ((staff (ly:staff-symbol::print grob))
(X-ext (ly:stencil-extent staff X))
(Y-ext (ly:stencil-extent staff Y)))
(set! Y-ext (cons
(- (car Y-ext) y-lower)
(+ (cdr Y-ext) y-upper)))
(ly:grob-set-property! grob 'layer -10)
(ly:stencil-add
(ly:make-stencil (list 'color (eval-string color)
(ly:stencil-expr (ly:round-filled-box
X-ext Y-ext 0))
X-ext Y-ext))
staff)))
\startStaff
#})
{
<< { R1
\bgColor #3 #3 "(rgb-color 1.0 0.9 0.5)" c'2 g' c'
\bgColor #0 #0 "white" r R1 }
\\
{
\override Voice.ClusterSpanner.color = #(rgb-color 0.5 0.6 1)
\override Voice.ClusterSpanner.layer = #-1
\makeClusters { s1 c'2 g' c' s s1 }
}
>>
}
Result:
http://2.bp.blogspot.com/-tShfMsyLr04/VHZZo4nFNeI/AAAAAAAAACU/SDxqrHklKvk/s1600/ex02.gif
Here is my problem:
Now the staff lines and the yellow rectangle are located in the same
layer, so it's not possible to place the blue cluster between them.
Is there a way to make the scheme function put the staff lines
("StaffSymbol") and the yellow rectangle into different layers?
Thanks in advance,
Klaus
_______________________________________________
lilypond-user mailing list
lilypond-user@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-user