lilypond-user
[Top][All Lists]
Advanced

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

Re: \bracketize?


From: 田村淳
Subject: Re: \bracketize?
Date: Mon, 2 Nov 2020 22:31:29 +0900

Hello Lukas and Harm,

> 2020/11/02 19:50、Thomas Morley <thomasmorley65@gmail.com>のメール:
> 
> 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

Thanks for your snippets!

Harm’s snippet works great for me as I’ve been especially looking for a 
bracketified trill.

Thanks again and best regards,

Jun

#(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 #0
\tweak ParenthesesItem.details.bracket-thickness #0.2
% \tweak ParenthesesItem.details.bracket-protrusion #0.5
\parenthesize \etc

\relative {
  c'4 \bracketify d \parenthesize e f\bracketify -.
  e\bracketify -\upbow
  d\bracketify\trill
  c\bracketify\prall
  b\bracketify\turn
  a1\bracketify\fermata
}





reply via email to

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