On Mon, Nov 28, 2016 at 12:32 PM, Benjamin Strecker [via Lilypond] <
[email protected]> wrote:

> Abraham,
>
>
> > On Tue, Nov 22, 2016 at 1:25 PM, Abraham Lee <[hidden email]> wrote:
> >>
> >>
> >> Here's how you can use the same functionality as the markup macro
> >> "bracket" to do the job:
> >>
> >> %%%%%%%%%%%%%%%
> >>
> >> \version "2.19.36"
> >>
> >> bracketAcc = {
> >>   \once \override AccidentalCautionary.parenthesized = ##f
> >>   \once \override AccidentalCautionary.stencil =
> >>   #(lambda (grob)
> >>      (let ((stil (ly:accidental-interface::print grob))
> >>            (th 0.1))
> >>        (bracketify-stencil stil Y th (* 2.5 th) th)))
> >> }
> >>
> >> \score {
> >>   \new Staff {
> >>     c''4 c''? \bracketAcc c''? c''
> >>   }
> >> }
> >>
> >> %%%%%%%%%%%%%%%
> >>
> >> An unfortunate side-effect of this is that each accidental's brackets
> will
> >> look different because it draws brackets that span the accidental's
> exact
> >> vertical extent (e.g., compare a flat vs. a natural). So, here's another
> >> variant that I cobbled together based on the same macro and the
> underlying
> >> "bracketify-stencil" command. It works better because it makes the
> brackets
> >> *act like the normal parentheses* so you get a more consistent look for
> any
> >> accidental:
> >>
> >> %%%%%%%%%%%%%%%
> >>
> >> \version "2.19.36"
> >>
> >> bracketAcc = {
> >>   \once \override AccidentalCautionary.parenthesized = ##f
> >>   \once \override AccidentalCautionary.stencil =
> >>   #(lambda (grob)
> >>      (let* ((paren-stil
> >>               (grob-interpret-markup grob
> >>                 (markup #:musicglyph "accidentals.leftparen")))
> >>             (axis Y)
> >>             (other-axis (lambda (a) (remainder (+ a 1) 2)))
> >>             (ext (ly:stencil-extent paren-stil axis))
> >>             (stil (ly:accidental-interface::print grob))
> >>             (thick
> >>               (ly:output-def-lookup (ly:grob-layout grob)
> 'line-thickness
> >> 0.1))
> >>             (padding thick)
> >>             (protrusion (* 2.5 thick))
> >>             (lb (ly:bracket axis ext thick protrusion))
> >>             (rb (ly:bracket axis ext thick (- protrusion))))
> >>        (set! stil
> >>              (ly:stencil-combine-at-edge stil (other-axis axis) 1 rb
> >> padding))
> >>        (set! stil
> >>              (ly:stencil-combine-at-edge stil (other-axis axis) -1 lb
> >> padding))
> >>        stil))
> >> }
> >>
> >> \score {
> >>   \new Staff {
> >>     c''4 c''? \bracketAcc c''? c''
> >>   }
> >> }
> >>
> >> %%%%%%%%%%%%%%%
> >>
> >> HTH,
> >> Abraham
>
> That's pretty helpful.  The second one in particular looks quite good on
> the accidentals.  I'm trying to apply a similar approach for producing a
> bracketed trill marking, but I'm not having much luck.  Here's what I
> currently have:
>
> \version "2.19.50"
>
> brack = {
>   \once\override ParenthesesItem.stencil =
>   #(lambda (grob)
>      (let ((stil (ly:script-interface::print grob))
>           (th 0.1))
>        (bracketify-stencil stil Y th (* 2.5 th) th)))
> }
>
> \score {
>   \new Staff {
>     \brack
>     c''-\parenthesize \trill
>   }
> }
>
> But this fails for me with the following error:
>
> /home/gub/NewGub/gub/target/darwin-x86/src/lilypond-git.
> sv.gnu.org--lilypond.git-release-unstable/lily/script-interface.cc:36:
> failed assertion `scm_is_pair (s)'
>
> From my (incomplete) understanding of the internal workings, I would have
> thought this would produce something in the neighborhood of what I want.
> Any advice to point me in the correct direction?
>

I get the same error, but I'm not sure it's the right approach anyway. Try
this:

brack = {
  \once \override Script.stencil =
  #(lambda (grob)
     (let* ((stil (ly:script-interface::print grob))
            (th 0.1))
       (bracketify-stencil stil Y th (* 2.5 th) th)))
}

HTH,
Abraham




--
View this message in context: 
http://lilypond.1069038.n5.nabble.com/Cautionary-Accidental-Stencil-tp197011p197190.html
Sent from the User mailing list archive at Nabble.com.
_______________________________________________
lilypond-user mailing list
[email protected]
https://lists.gnu.org/mailman/listinfo/lilypond-user

Reply via email to