Schneidy wrote > Hi List, Hi Paul, > > Paul, do you remember this snippet we committed something like 2 years > ago: > http://lsr.di.unimi.it/LSR/Item?id=890 ? > Well, a recent discussion regarding the '\path' command made me think > about > the following changes. > Major advantages : > - one can modify the outline thickness. > - one can choose whether the noteheads or the outlines is coloured. > Minor effect : the output seems much better to me, not sure though ;) > <snip> > It shouldn't be very difficult to add those two new variables in the code, > should it? But since 'coloredNoteHeads' is a property value, I cannot find > any handy way. > > Any idea ?
Hi Pierre, I do remember this, and I think using \path like you've done is a nice improvement! It looks better to me too. How did you get those path coordinates? Maybe from SVG output? Below is a way to add those variables and make them easily configurable. Cheers, -Paul \version "2.18.2" coloredNoteHeads = #(lambda (color-outline line-width) ;; @var{color-outline} is a boolean for whether ;; the outline is colored (#t) or the note head (#f). ;; @var{line-width} is a number, the width of ;; the outline, 0.07 is a good default. (lambda (grob) (let* ((fsz (ly:grob-property grob 'font-size 0.0)) (mult (magstep fsz)) (stl empty-stencil) (dur-log (ly:grob-property grob 'duration-log)) (pch (ly:event-property (event-cause grob) 'pitch)) (nnm (ly:pitch-notename pch)) (alt (ly:pitch-alteration pch)) (clr (case nnm ((0) (case alt ((-1) red) ;; Cbb ((-1/2) red) ;; Cb ((0) red) ;; C ((1/2) red) ;; C# ((1) red) ;; C## (else black))) ((1) (case alt ((-1) (x11-color 'orange)) ;; Dbb ((-1/2) (x11-color 'orange)) ;; Db ((0) (x11-color 'orange)) ;; D ((1/2) (x11-color 'orange)) ;; D# ((1) (x11-color 'orange)) ;; D## (else black))) ((2) (case alt ((-1) yellow) ;; Ebb ((-1/2) yellow) ;; Eb ((0) yellow) ;; E ((1/2) yellow) ;; E# ((1) yellow) ;; E## (else black))) ((3) (case alt ((-1) green) ;; Fbb ((-1/2) green) ;; Fb ((0) green) ;; F ((1/2) green) ;; F# ((1) green) ;; F## (else black))) ((4) (case alt ((-1) blue) ;; Gbb ((-1/2) blue) ;; Gb ((0) blue) ;; G ((1/2) blue) ;; G# ((1) blue) ;; G## (else blue))) ((5) (case alt ((-1) (x11-color 'purple)) ;; Abb ((-1/2) (x11-color 'purple)) ;; Ab ((0) (x11-color 'purple)) ;; A ((1/2) (x11-color 'purple)) ;; A# ((1) (x11-color 'purple)) ;; A## (else black))) ((6) (case alt ((-1) (x11-color 'brown)) ;; Bbb ((-1/2) (x11-color 'brown)) ;; Bb ((0) (x11-color 'brown)) ;; B ((1/2) (x11-color 'brown)) ;; B# ((1) (x11-color 'brown)) ;; B## (else black))) (else black))) (outline-clr (if color-outline clr black)) (note-clr (if color-outline black clr))) (set! stl (cond ;; quarter notes and smaller ((> dur-log 1) (grob-interpret-markup grob #{ \markup { \combine \with-color #note-clr \musicglyph #"noteheads.s2" \with-color #outline-clr \path #line-width #'((moveto 0.00 -0.20) (curveto 0.00 -0.20 0.00 -0.69 0.69 -0.50) (curveto 0.69 -0.50 1.08 -0.38 1.27 -0.01) (curveto 1.27 -0.01 1.44 0.34 1.14 0.49) (curveto 1.14 0.49 0.90 0.61 0.60 0.49) (curveto 0.60 0.49 -0.02 0.25 0.00 -0.20)) } #} )) ;; half notes ((= dur-log 1) (grob-interpret-markup grob #{ \markup { \combine \with-color #note-clr \musicglyph #"noteheads.s1" \with-color #outline-clr \path #line-width #'((moveto 0.130 -0.200) (curveto 0.130 -0.200 0.070 -0.341 0.200 -0.410) (curveto 0.200 -0.410 0.270 -0.460 0.400 -0.400) (curveto 0.400 -0.400 0.850 -0.160 1.100 0.040) (curveto 1.100 0.040 1.390 0.225 1.210 0.395) (curveto 1.210 0.395 1.130 0.470 1.000 0.410) (curveto 1.000 0.410 0.540 0.190 0.240 -0.070) (curveto 0.240 -0.070 0.140 -0.160 0.130 -0.200) (moveto 0.060 0.000) (curveto 0.060 0.000 -0.220 -0.610 0.450 -0.540) (curveto 0.450 -0.540 0.800 -0.530 1.100 -0.320) (curveto 1.100 -0.320 1.250 -0.230 1.360 0.110) (curveto 1.360 0.110 1.490 0.490 1.150 0.540) (curveto 1.150 0.540 0.900 0.580 0.550 0.465) (curveto 0.550 0.465 0.200 0.380 0.060 0.000)) } #} )) ;; whole notes ((= dur-log 0) (grob-interpret-markup grob #{ \markup { \combine \with-color #note-clr \musicglyph #"noteheads.s0" \with-color #outline-clr \path #line-width #'((moveto 0.610 0.260) (curveto 0.610 0.260 0.460 -0.190 0.920 -0.410) (curveto 0.920 -0.410 1.330 -0.600 1.410 -0.200) (curveto 1.410 -0.200 1.500 0.290 1.000 0.440) (curveto 1.000 0.440 0.700 0.535 0.610 0.260) (moveto 0.300 0.390) (curveto 0.300 0.390 -0.380 0.030 0.300 -0.390) (curveto 0.300 -0.390 0.900 -0.740 1.700 -0.390) (curveto 1.700 -0.390 2.400 -0.030 1.690 0.400) (curveto 1.690 0.400 1.050 0.750 0.300 0.390)) } #} )) ;; breve notes ((< dur-log 0) (grob-interpret-markup grob #{ \markup { \combine \with-color #note-clr \musicglyph #"noteheads.sM1" \with-color #outline-clr \path #line-width #'((moveto -0.160 0.000) (lineto -0.160 0.620) (curveto -0.160 0.620 -0.160 0.690 -0.080 0.700) (curveto -0.080 0.700 0.010 0.710 0.015 0.620) (lineto 0.015 0.100) (curveto 0.015 0.100 0.080 0.500 0.950 0.550) (curveto 0.950 0.550 1.740 0.575 1.940 0.100) (lineto 1.940 0.620) (curveto 1.940 0.620 1.940 0.690 2.020 0.700) (curveto 2.020 0.700 2.110 0.710 2.115 0.620) (lineto 2.115 -0.620) (curveto 2.115 -0.620 2.110 -0.700 2.020 -0.700) (curveto 2.020 -0.700 1.940 -0.690 1.940 -0.620) (lineto 1.940 -0.090) (curveto 1.940 -0.090 1.820 -0.540 0.950 -0.545) (curveto 0.950 -0.545 0.110 -0.500 0.015 -0.090) (lineto 0.015 -0.620) (curveto 0.015 -0.620 0.010 -0.700 -0.080 -0.700) (curveto -0.080 -0.700 -0.160 -0.690 -0.160 -0.620) (lineto -0.160 0.000) (moveto 0.585 0.260) (curveto 0.585 0.260 0.435 -0.190 0.895 -0.410) (curveto 0.895 -0.410 1.305 -0.600 1.385 -0.200) (curveto 1.385 -0.200 1.475 0.290 0.975 0.440) (curveto 0.975 0.440 0.675 0.535 0.585 0.260)) } #} )) )) (set! (ly:grob-property grob 'stencil) (ly:stencil-scale stl mult mult))))) %%%% USAGE EXAMPLE %%%% music = \relative f' { c4 d e f g4 a b c d2 e f2 g a1 b \set Timing.measureLength = #(ly:make-moment 2/1) c\breve } \new Staff \with { \override NoteHead.layer = #2 \override NoteHead.before-line-breaking = #(coloredNoteHeads #t 0.15) } { \music } -- View this message in context: http://lilypond.1069038.n5.nabble.com/LSR-Colored-notes-with-black-outlines-enhancement-tp173243p173287.html Sent from the User mailing list archive at Nabble.com. _______________________________________________ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user