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:34:52 +0200

2016-03-29 15:26 GMT+02:00 Thomas Morley <address@hidden>:
> 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.

Glitch found.
Please change after-line-breaking to before-line-breaking.

>
> \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
%% returns the mentioned programming error
>   \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]