Re: conditional parenthesis
Walt North <[email protected]> Sat, 4 Jul 2026 21:27:56 -0700
| Newsgroups | gmane.comp.gnu.lilypond.general |
|---|---|
| Message-ID | <[email protected]> |
Thanks. That mostly works. Where I'm having an issue now is with
relative pitch.
Here is a sample along with what I notice with the display.
\version "2.26.0" \language "english" par = #(define-music-function
(note) (ly:music?) #{ \tag #'(piano) { $note } \tag
#'(guitar) { \parenthesize $note } #}) music = \relative c' {r8 b16
cs gs'4 b,16 cs gs'8 \par cs,8 <a cs e>~ |} \score { {
\keepWithTag #'piano {\music} } } \score { { \keepWithTag
#'guitar {\music} } } \void \displayLilyMusic \keepWithTag #'piano
{\music} \void \displayLilyMusic \keepWithTag #'guitar {\music}
It seems that the octave is getting confused in both cases.
{ \absolute {
r8 b16 cs'16 gs'4 b16 cs'16 gs'8 { \tag #'piano {cs'8 } } < a, cs e >8 ~ |
} }
{ \absolute {
r8 b16 cs'16 gs'4 b16 cs'16 gs'8 { \tag #'guitar { \tweak parenthesized
##tcs8 } } < a, cs e >8 ~ |
} }
On 7/4/26 12:28 AM, Thomas Morley wrote:
> Am Sa., 4. Juli 2026 um 07:50 Uhr schrieb Walt North<[email protected]>:
>> I have a case where I need to put parenthesis around some notes (not all notes) for a given instrument to emphasize a specific thing at certain points.
>>
>> I thought this might be a case where tags would come in handy.
>>
>> But the following doesn't add the parenthesis. What am I missing? Is the problem related to having tags within a function? Or would there be a better way to do this.
>>
>> \version "2.26.0"
>>
>> par = #(define-music-function (note) (ly:music?)
>> #{
>> \tag #'(piano) { #note }
>> \tag #'(guitar) { \parenthesize #note }
>> #})
>>
>> music = {c'1}
>>
>> \score {
>> {
>> \keepWithTag #'piano {\par \music}
>> }
>> }
>> \score {
>> {
>> \keepWithTag #'guitar {\par \music}
>> }
>> }
>>
>>
> Two issues:
> a)
> \parenthesize works on a single note or event-chord.
> Your `music` is sequential music, though.
> Thus { \parenthesize { c'1 } } does not work.
> b)
> In the function you do #note. This _changes_ `note` for all instances
> of the function.
> Use a copy instead, i.e. $note
>
> As long as you only want to parenthesize single notes below works here:
>
> par = #(define-music-function (note) (ly:music?)
> #{
> \tag #'(piano) { $note }
> \tag #'(guitar) { \parenthesize $note }
> #})
>
> music = c'1
>
> \score {
> {
> \keepWithTag #'piano {\par \music}
> }
> }
> \score {
> {
> \keepWithTag #'guitar {\par \music}
> }
> }
>
>
> Cheers,
> Harm