Hi Jaime,
On Sat, Jan 3, 2015 at 6:02 PM, Jaime E Oliver <[email protected]>
wrote:
> Hi everyone,
>
> I am not sure if this is a bug, or just improper use, but, when using a
> single grace note expression with two notes such as:
> \slashedGrace {a'32 a32}
> I get the expected result.
>
> But when I use two subsequent ones such as:
> \slashedGrace {a'32} \slashedGrace {a32}
> I get the wrong score representation.
>
There is no support (as far as I know) for slashed grace note groups.
There is a workaround, however. Try this:
\version "2.19.15"
%%%%% A better slash snippet %%%
% The argument `ang' is the amount of slant, expressed in degrees.
%
% Stem-fraction is the distance between the point the slash crosses the stem
% and the notehead-end of the stem. It is expressed as a number between 0
and 1.
%
% The argument `protrusion' is the extra distance the slash
% extends beyond its intersection with stem and beam
slash =
#(define-music-function (parser location ang stem-fraction protrusion)
(number? number? number?)
(remove-grace-property 'Voice 'Stem 'direction) ; necessary?
#{
\once \override Stem #'stencil =
#(lambda (grob)
(let* ((X-parent (ly:grob-parent grob X))
(is-rest? (ly:grob? (ly:grob-object X-parent 'rest))))
(if is-rest?
empty-stencil
(let* ((ang (degrees->radians ang))
; We need the beam and its slope so that slash will
; extend uniformly past the stem and the beam
(beam (ly:grob-object grob 'beam))
(beam-X-pos (ly:grob-property beam 'X-positions))
(beam-Y-pos (ly:grob-property beam 'positions))
(beam-slope (/ (- (cdr beam-Y-pos) (car beam-Y-pos))
(- (cdr beam-X-pos) (car beam-X-pos))))
(beam-angle (atan beam-slope))
(stem-Y-ext (ly:grob-extent grob grob Y))
; Stem.length is expressed in half staff-spaces
(stem-length (/ (ly:grob-property grob 'length) 2.0))
(dir (ly:grob-property grob 'direction))
; if stem points up. car represents segment of stem
; closest to notehead; if down, cdr does
(stem-ref (if (= dir 1) (car stem-Y-ext) (cdr
stem-Y-ext)))
(stem-segment (* stem-length stem-fraction))
; Where does slash cross the stem?
(slash-stem-Y (+ stem-ref (* dir stem-segment)))
; These are values for the portion of the slash that
; intersects the beamed group.
(dx (/ (- stem-length stem-segment)
(- (tan ang) (* dir beam-slope))))
(dy (* (tan ang) dx))
; Now, we add in the wings
(protrusion-dx (* (cos ang) protrusion))
(protrusion-dy (* (sin ang) protrusion))
(x1 (- protrusion-dx))
(y1 (- slash-stem-Y (* dir protrusion-dy)))
(x2 (+ dx protrusion-dx))
(y2 (+ slash-stem-Y
(* dir (+ dy protrusion-dy))))
(th (ly:staff-symbol-line-thickness grob))
(stil (ly:stem::print grob)))
(ly:stencil-add
stil
(make-line-stencil th x1 y1 x2 y2))))))
#})
\new Staff {
\relative c'' {
a4
\grace {
\slash 50 0.6 1.0 a'32 a
}
d,4 d2
}
}
Code comes from the following discussion:
http://www.mail-archive.com/lilypond-user%40gnu.org/msg86544.html
Hope this helps,
David
_______________________________________________
lilypond-user mailing list
[email protected]
https://lists.gnu.org/mailman/listinfo/lilypond-user