On 13-01-02 03:39 PM, Olivier Biot wrote:
On Wed, Jan 2, 2013 at 10:59 PM, Colin Campbell <[email protected] <mailto:[email protected]>> wrote:

    In transcribing some cello exercises, I need to show a slashed
    grace note, with a fingering, in parentheses. The exercise
    involves shifting between first and third position on the same
    string, so it emphasizes the intermediate "target" position, with
    the intent that the grace note gets eliminated as the shift gets
    smoother. The following gives me all I need except for the
    parentheses.  I'm a bit foggy from a virus, and I cannot find the
    magic incantation which will show both the grace note and the
    parenthesis. Using 2.17.10, by the way.
    %<%<%<%<%<%<%<%<%<

    e'2-1 ( \parenthesize \slashedGrace gs8-1 a2-2


    %<%<%<%<%<%<%<%<%<

    Any pointers to TFM or LSR gratefully received!

    Cheers,
    Colin


Hi Colin,

I found something in LSR snippet 186 (http://lsr.dsi.unimi.it/LSR/Item?id=186).

Here's a working example:

%%% BEGIN snippet:
\version "2.16.1"
\include "english.ly <http://english.ly>"

% LSR http://lsr.dsi.unimi.it/LSR/Snippet?id=186
#(define (parenthesize-callback callback)
   (define (parenthesize-stencil grob)
     (let* ((fn (ly:grob-default-font grob))
            (pclose (ly:font-get-glyph fn "accidentals.rightparen"))
            (popen (ly:font-get-glyph fn "accidentals.leftparen"))
            (subject (callback grob))
            ;; get position of stem
            (stem-pos (ly:grob-property grob 'stem-attachment))
            ;; remember old size
            (subject-dim-x (ly:stencil-extent subject X))
            (subject-dim-y (ly:stencil-extent subject Y)))

       ;; add parens
       (set! subject
             (ly:stencil-combine-at-edge
              (ly:stencil-combine-at-edge subject X RIGHT pclose 0)
              X LEFT popen 0))

       ;; adjust stem position
       (set! (ly:grob-property grob 'stem-attachment)
             (cons (- (car stem-pos) 0.43) (cdr stem-pos)))

       ;; adjust size
       (ly:make-stencil
        (ly:stencil-expr subject)
        (interval-widen subject-dim-x 0.5)
        subject-dim-y)))

   parenthesize-stencil)

\relative c'' {
e2-1 ( \once \override NoteHead #'stencil = #(parenthesize-callback ly:note-head::print) \slashedGrace gs8-1 a-2 )
}
%%% END snippet

Hope this helps.

Best regards,

Olivier

That works fine, Olivier, and many thanks for the quick reply! To save typing, I wrapped the first part of it in a variable: pg = { \once \override NoteHead #'stencil = #(parenthesize-callback ly:note-head::print) } and the result is
e2-1 ( \pg \slashedGrace gs8-1 a-2)
which reproduces the original except for leaving the accidentals outside the parentheses, but I can live with that and my cello teacher may never see it.

Une bonne et heureuse année à tous!
Colin

--
I've learned that you shouldn't go through life with a catcher's mitt on both 
hands.
You need to be able to throw something back.
-Maya Angelou, poet (1928- )

_______________________________________________
lilypond-user mailing list
[email protected]
https://lists.gnu.org/mailman/listinfo/lilypond-user

Reply via email to