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.
address@hidden which should not be tweaked are
to be specified with
address@hidden
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)))
#})
%====
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:
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