[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
}