[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Two similar articulations on one note in one voice
From: |
Thomas Morley |
Subject: |
Re: Two similar articulations on one note in one voice |
Date: |
Sat, 5 Nov 2016 10:55:50 +0100 |
2016-11-05 10:29 GMT+01:00 Thomas Morley <address@hidden>:
> 2016-11-05 2:50 GMT+01:00 Andrew Bernard <address@hidden>:
>> Can one add two tenutos, say, or two of any articulation on a note, one
>> above and one below? For example
>>
>>
>>
>> {
>>
>> c’’^-_-
>>
>> }
>>
>>
>>
>> That can be done if there are two different articulations involved, but when
>> they are the same, the second gets ignored. I understand the musical
>> explanation for such behaviour, but the composer I set scores for often has
>> two marks on a note, for emphasis, which strikes me as perfectly reasonable.
>>
>>
>>
>> Andrew
>
>
> Hi Andrew,
>
> a possible workaround is putting the note in an event-chord, then set
> the tenuto for the note and for the chord:
>
> { <c''^->_- }
>
> Other methods are thinkable, but have more disadvantages:
>
> (1) use << \\ >>
>
> { << \oneVoice c''^- \\ s_- >> }
> With the need to tweak the Y-position of the tenuto assigened to the SkipEvent
>
> (2) redefine tenuto, giving it another name. Involves some scheme coding:
Forgot to add:
Doesn't work properly for in-staff tenuto: Y-position seems to look
only on the parent, does not take the staff-lines into account.
>
> \version "2.19.49"
>
> %% work with a copy
> #(define my-script-alist default-script-alist)
>
> #(define my-tenuto-stil
> (lambda (grob)
> (ly:font-get-glyph (ly:grob-default-font grob) "scripts.tenuto")))
>
> #(define my-tenuto-props-list
> `("my-tenuto"
> . (
> (avoid-slur . inside)
> (padding . 0.20)
> (side-relative-direction . ,DOWN)
> (stencil . ,my-tenuto-stil)
> (direction . ,DOWN))))
>
> %% A macro setting the lists from above in the copy of `default-script-alist´
> #(define-macro (set-my-script-alist! ls-1 ls-2)
> "Creates a new key-value-pair, taken from ls-2, in ls-1"
> `(set! ,ls-1
> (if (and (pair? ,ls-2) (pair? (cadr ,ls-2)))
> (assoc-set! ,ls-1 (car ,ls-2) (cdr ,ls-2))
> (begin
> (ly:warning (_"Unsuitable list\n\t~a \n\tdetected, ignoring. ")
> ,ls-2)
> ,ls-1))))
>
> #(set-my-script-alist! my-script-alist my-tenuto-props-list)
>
> \layout {
> \context {
> \Score
> scriptDefinitions = #my-script-alist
> }
> }
>
> my-tenuto = #(make-articulation "my-tenuto")
>
>
> {
> c''^\my-tenuto_-
> }
>
>
> HTH,
> Harm