lilypond-user
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: The "let vibrate" tie


From: Pierre Perol-Schneider
Subject: Re: The "let vibrate" tie
Date: Tue, 14 May 2019 21:35:43 +0200

Hi guys,
As far as I understood, the tie Vicente is talking about is the one attached...
Cheers,
Pierre

Le mar. 14 mai 2019 à 15:02, Ben <address@hidden> a écrit :
>
> 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 <address@hidden> 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
> address@hidden
> https://lists.gnu.org/mailman/listinfo/lilypond-user

Attachment: laissezVibrer.png
Description: PNG image


reply via email to

[Prev in Thread] Current Thread [Next in Thread]