lilypond-user
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: \bracketize?


From: Thomas Morley
Subject: Re: \bracketize?
Date: Mon, 2 Nov 2020 11:50:35 +0100

Am So., 1. Nov. 2020 um 16:58 Uhr schrieb Lukas-Fabian Moser <lfm@gmx.de>:
>
> Hi Jun,
>
> Am 01.11.20 um 14:07 schrieb 田村淳:
> > Hello,
> >
> > I’m looking for a “bracket” version of “\parenthesize” function to
> > enclose an articulation or ornamentation mark within a pair of square
> > brackets. I’d like to use parenthesis and brackets to indicate two
> > different types of editorial additions. I achieved the same for
> > dynamics marks by slightly modifying the LSR code “Creating "real"
> > parenthesized dynamics”
> > http://lsr.di.unimi.it/LSR/Item?id=382
> > http://lsr.di.unimi.it/LSR/Snippet?id=382
> > Is there an easy way to create “\bracketize” function?
> >
> > Thanks in advance and best regards.
>
> It's not ideal since the X-extent is hardcoded, but as a starting point:
>
> \version "2.20"
>
> bracketify =
>    \tweak ParenthesesItem.stencil #ly:text-interface::print
>    \tweak ParenthesesItem.font-size -3.7
>    \tweak ParenthesesItem.text \markup \general-align #Y #CENTER {
>      \hspace #0.6  \center-align \line { [ \hspace #1 ] } }
>    \parenthesize \etc
>
> \relative {
>    c'4 \bracketify d \parenthesize e f
>    e\bracketify --
> }
>
> Lukas
>
>

Here my own take:

#(define-public (parentheses-item::calc-bracket-stencils grob)
  (let* ((parent (ly:grob-parent grob Y))
         (y-extent (ly:grob-extent parent parent Y))
         (details (ly:grob-property grob 'details))
         (thick (assoc-get 'bracket-thickness details 0.1))
         (bracket-vertical-padding
           (assoc-get 'bracket-vertical-padding details 0.1))
         (bracket-protrusion
           (assoc-get 'bracket-protrusion details 0.25))
         (pad-y-extent (interval-widen y-extent bracket-vertical-padding))
         (lp
           (ly:stencil-aligned-to
             (ly:stencil-aligned-to
               (ly:bracket Y pad-y-extent thick bracket-protrusion)
               Y CENTER)
             X RIGHT))
         (rp
           (ly:stencil-aligned-to
             (ly:stencil-aligned-to
               (ly:bracket Y pad-y-extent thick (- bracket-protrusion))
               Y CENTER)
             X LEFT)))
    (list lp rp)))


bracketify =
   \tweak ParenthesesItem.stencils #parentheses-item::calc-bracket-stencils
   %% \tweak ParenthesesItem.padding #0
   %% \tweak ParenthesesItem.details.bracket-vertical-padding #1
   %% \tweak ParenthesesItem.details.bracket-thickness #1
   %% \tweak ParenthesesItem.details.bracket-protrusion #0.5
   \parenthesize \etc

\relative {
   c'4 \bracketify d \parenthesize e f\bracketify -.
   e\bracketify -\upbow
}

Cheers,
  Harm



reply via email to

[Prev in Thread] Current Thread [Next in Thread]