lilypond-user
[Top][All Lists]
Advanced

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

Re: Tweaking individual ties in a chord


From: Thomas Morley
Subject: Re: Tweaking individual ties in a chord
Date: Tue, 29 Mar 2016 15:26:59 +0200

2016-03-29 12:19 GMT+02:00 Thomas Morley <address@hidden>:
> 2016-03-29 10:41 GMT+02:00 Andrew Bernard <address@hidden>:
>> Can you tweak individual ties in a chord (despite that the NR says that this
>> is a known issue)? I am always hopeful there are solutions.
>>
>> The 2.19.38 NR says in Section 5.3.4:
>>
>>
>> When several similar items are placed at the same musical moment, the
>> \override command cannot be used to modify just one of them – this is where
>> the \tweak command must be used. Items which may appear more than once at
>> the same musical moment include the following:
>>
>>     note heads of notes inside a chord
>>     articulation signs on a single note
>>     ties between notes in a chord
>>     tuplet brackets starting at the same time
>>
>>
>>
>> This gives the impression that ties in a chord can be tweaked. Is this
>> simply incorrect?
>>
>> Andrew
>>
>> — snip
>>
>> \version "2.19.38"
>>
>> {
>>   <g' _~ b' ^~ d'' ^~>4  <g' b' d''>
>>
>>  % tweaks all the ties not just the first
>>   <g'-\tweak Tie.details.height-limit #4 ~ b' ^~ d'' ^~>4  <g' b' d''>
>> }
>>
>>
>> — snip
>
>
> Hi Andrew,
>
> there's shapeTieColumn already, see:
> http://lilypond.1069038.n5.nabble.com/Shape-of-individual-ties-in-chords-td158120.html#a158343
> http://www.mail-archive.com/address@hidden/msg47432/shape-tie-columns.ly
> https://github.com/openlilylib/openlilylib/tree/master/notation-snippets/shaping-bezier-curves/shape-tie-column
>
> But there is an issue with 'control-points in a TieColumn:
> https://sourceforge.net/p/testlilyissues/issues/1789/
> I don't know the current state of it, but there is a workaround.
>
>
> Though, you asked about Tie.details.height-limit, let me have a closer look...
>
> Cheers,
>   Harm

The mentioned bug is indeed present and a major nuisance.
Though, I come up with the nasty coding below, although I recommend
thorough testing on real life examples.
Limitations/problems are mentioned in the function's description.

\version "2.19.36"

\layout {
  indent = 0
  ragged-right = ##f
}

test =
#(define-music-function (vals)(list?)
"Sets details.hight-limit for ties in @code{TieColumn}, then suiciding
@code{TieColumn}.
Relies on setting @code{~} for each note of an event-chord AND setting
direction-modifiers, i.e. @code{^~} or @code{_~} will work, but not
simple @code{~}.  Otherwise a programming error occurs:
'no Tie_column or Semi_tie_column.  Killing grob.'
"
#{
  \override TieColumn.after-line-breaking =
    #(lambda (grob)
      (let* ((ties (ly:grob-array->list (ly:grob-object grob 'ties))))
        (for-each
          (lambda (g h-l)
                (ly:grob-set-nested-property! g '(details height-limit) h-l))
          ties
          vals) ;; starting with lowest tie

        ;; let the new values displayed in terminal:
        ;(for-each
        ;  (lambda (g)
        ;    (format #t "details.hight-limit is ~y"
        ;      (assoc-get 'height-limit (ly:grob-property g 'details))))
        ;  ties)

        (ly:grob-suicide! grob)))
#})

unTest =
\revert TieColumn.after-line-breaking

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% EXAMPLE
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

{
  %% works
  \test #'(4.0 1.2 2.3)
  <g' _~ b' _~ d'' ^~>4  q

  \unTest
  <g' _~ b' _~ d'' ^~>4  q

  \break

  %% doesn't work
  \test #'(4.0 1.2 2.3)
  <g' b' d''>4~  q

  \unTest
  <g' b' d''>4~  q
}


HTH,
  Harm



reply via email to

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