2016-03-29 15:34 GMT+02:00 Thomas Morley <thomasmorle...@gmail.com>: > 2016-03-29 15:26 GMT+02:00 Thomas Morley <thomasmorle...@gmail.com>: >> 2016-03-29 12:19 GMT+02:00 Thomas Morley <thomasmorle...@gmail.com>: >>> 2016-03-29 10:41 GMT+02:00 Andrew Bernard <andrew.bern...@gmail.com>: >>>> 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/lilypond-devel@gnu.org/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
Likely esier: testII = #(define-music-function (vals mus)(list? ly:music?) #{ \override TieColumn.before-line-breaking = #(lambda (grob) (let* ((ties (ly:grob-array->list (ly:grob-object grob 'ties)))) ;; starting with lowest tie (for-each (lambda (g h-l) (ly:grob-set-nested-property! g '(details height-limit) h-l)) ties vals))) $mus \once\override TieColumn.positioning-done = #'() #}) { s1 \break \testII #'(7 2 6) < g' _~ b' _~ d'' ^~ >4 q } %% or manually: { s1 \break < g'-\tweak Tie.details.height-limit #7 _~ b'-\tweak Tie.details.height-limit #2 _~ d''-\tweak Tie.details.height-limit #6 ^~ >4 \once\override TieColumn.positioning-done = #'() q } HTH, Harm _______________________________________________ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user