On 5/14/2019 6:22 AM, Andrew Bernard wrote:
Hello Vincente,
You can use LSR 715 by Robin Bannister to extend LV's.
Thomas Morley wrote the following to help me do more extensive things
with LV ties. If you need help in this or to see some examples, just
ask. This may be more powerful than you require.
Andrew
%====
% adjust laissezVibrer ties
% From Thomas Morley
affect-LaissezVibrerTies =
#(define-music-function (x-start amount)
((list? (circular-list #f)) number?)
"
Extends @code{LaissezVibrerTie}s by @var{amount}.
Example:
@verbatim
{
\\affect-LaissezVibrerTies #2
<fis' cis'' a''>2\\laissezVibrer
}
@end verbatim
If @var{x-start} is specified, the start of a single
@code{LaissezVibrerTie}
may be tweaked. The numeric value of this element of @var{x-start}
determines
the amount of the offset.
@code{LaissezVibrerTie}s which should not be tweaked are to be
specified with
@code{#f}
Example:
@verbatim
{
\\affect-LaissezVibrerTies #'(#f 1 #f) #2
<fis' cis'' a''>2\\laissezVibrer
}
@end verbatim
"
#{
\once
\override LaissezVibrerTieColumn #'before-line-breaking =
#(lambda (grob)
(let* ((ties (ly:grob-array->list (ly:grob-object grob 'ties)))
(c-ps
(map
(lambda (tie) (ly:grob-property tie 'control-points))
ties))
(directions
(map
(lambda (tie) (ly:grob-property tie 'direction))
ties))
(first-cps
(map
(lambda (c-p) (first c-p))
c-ps))
(second-cps
(map
(lambda (c-p) (second c-p))
c-ps))
(third-cps
(map
(lambda (c-p) (third c-p))
c-ps))
(fourth-cps
(map
(lambda (c-p) (fourth c-p))
c-ps))
(new-first-cps
(for-each
(lambda (first-cp x)
(if (number? x)
(set-car! first-cp (+ (car first-cp) x))))
first-cps x-start))
;; TODO:
;; Several hardcoded values following here.
;; Find better dependencies!!
(new-second-cps
(for-each
(lambda (second-cp x dir)
(let ((val (if (number? x) x 0.4)))
(set-car!
second-cp
(+ (car second-cp) (* val 1.2)))
(set-cdr!
second-cp
(+ (cdr second-cp) (min (* dir (/ amount 10))
0.3)))))
second-cps x-start directions))
(new-third-cps
(for-each
(lambda (third-cp x dir)
(let ((val (if (number? x) 0.2 0.4)))
(set-car!
third-cp
(+ (car third-cp) (- amount val)))
(set-cdr!
third-cp
(+ (cdr third-cp) (min (* dir (/ amount 10))
0.3)))))
third-cps x-start directions))
(new-fourth-cps
(for-each
(lambda (fourth-cp)
(set-car! fourth-cp (+ (car fourth-cp) amount)))
fourth-cps)))
(for-each
(lambda (tie first-cp second-cp third-cp fourth-cp)
(ly:grob-set-property! tie 'control-points
(list first-cp second-cp third-cp fourth-cp)))
ties first-cps second-cps third-cps fourth-cps)))
#})
%====
On Tue, 14 May 2019 at 18:23, Vicente Sanches
<[email protected] <mailto:[email protected]>>
wrote:
How can I input that l.v. ("let vibrate") tie used generally with
timpani and mallets such as vibraphone em marimba?
Tried to use open and closed parentheses without notes inside, but
it didn't work.
Example in the link bellow just in the 1st seconds of the video,
in the 4th and 5th measures:
https://www.youtube.com/watch?v=VEMyj-8I3pw
I use Harm's function all the time, it works very well.
Robin's snippet #715 is also handy on-the-fly for sure, but for certain
applications it needs a little more tweaking.
For example, the l.v. ties are touching noteheads on a lot of chords, so
you'd need to simply adjust the LaissezVibrerTie.details.note-head-gap
each time - which may get to be a hassle if this happens a lot across
your score in different settings. :)
\version "2.19.83"
extendLV =
#(define-music-function (parser location further) (number?)
#{
\once \override LaissezVibrerTie.X-extent = #'(0 . 0)
\once \override LaissezVibrerTie.details.note-head-gap = #(/ further -2)
\once \override LaissezVibrerTie.extra-offset = #(cons (/ further 2) 0)
#})
\relative c' {
\extendLV #2.5
e8 \laissezVibrer r16 r8
\extendLV #1 < c e g b >4\laissezVibrer
}
%%%%%%%
% Harm's
\affect-LaissezVibrerTies #1 < c e g b >4\laissezVibrer
(see attached)
HTH
_______________________________________________
lilypond-user mailing list
[email protected]
https://lists.gnu.org/mailman/listinfo/lilypond-user