[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