lilypond-user
[Top][All Lists]
Advanced

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

Re: Multiple slurs on chord


From: Thomas Morley
Subject: Re: Multiple slurs on chord
Date: Sun, 20 Mar 2016 23:00:57 +0100

2016-03-20 18:47 GMT+01:00 Simon Albrecht <address@hidden>:
> On 20.03.2016 18:31, Phil Holmes wrote:
>>
>> ----- Original Message ----- From: "Alberto Simões"
>> <address@hidden>
>> To: "lilypond" <address@hidden>
>> Sent: Sunday, March 20, 2016 4:52 PM
>> Subject: Multiple slurs on chord
>>
>>
>>> Hi
>>>
>>> Is it possible to do a multiple slur, one for each note? (see attach)
>>>
>>> Thanks
>>> alberto
>>
>>
>> FWIW, if I were reading that, I'd assume they were ties and not change the
>> upper two notes.
>
>
> That’s too narrow-minded. I think that the shape of the curves is rather
> characteristic of slurs,

I disagree.
Speaking as a musician, I'm used to play from bad typeset scores all day.
(Ofcourse that's one reason why I'm here.)
Both, Slur and Tie are bows, I would not be able to distinguish them,
while sight-reading.

Their slightly different appearence is most important for
music-typesetter, ofcourse.

Directly on-topic, we have the `doubleSlurs'-context-property, why not
use it here?
This requires some shaping of them, though.
Thus I wrote a first sketch of a `shapeDoubleSlurs'-function, although
I'm not sure, if there isn't one already - at openlilylib?

shapeDoubleSlurs =
#(define-music-function (up-down offsets) (pair? list?)
  ;; taken from `shape'
  (define (offset-control-points coords offsets)
    (if (null? offsets)
        coords
        (map
          (lambda (x y) (coord-translate x y))
          coords offsets)))
  #{
    \override Slur.after-line-breaking =
      #(lambda (grob) (display grob)
        (if (not (null? (ly:spanner-broken-into (ly:grob-original grob))))
            (display "\n\tLinebreak is not supported"))
        (if (= -1 (ly:grob-property grob 'direction))
            (begin
              (ly:grob-set-property! grob 'direction (car up-down))
              (ly:grob-set-property! grob 'control-points
                (offset-control-points
                  (ly:grob-property grob 'control-points)
                  (car offsets))))
            (begin
              (ly:grob-set-property! grob 'direction (cdr up-down))
              (ly:grob-set-property! grob 'control-points
                (offset-control-points
                  (ly:grob-property grob 'control-points)
                  (cadr offsets))))))
  #})


\new Staff
\relative c'' {
  r2
    \shapeDoubleSlurs
      #'(1 . 1)
      #'(((1 . -2) (1 . -2.5) (-1 . -2.5) (-1 . -2))
         ((0.3 . 0) (0.1 . -0.1) (-0.1 . -0.1) (-0.3 . 0)))
    \set doubleSlurs = ##t
    <b_~ e g>2( <b d f>4)
  }



> and it’s not difficult to distinguish the two
> chords visually.
> Arguing that ‘there can only be one slur in a voice at a time’ is a
> legalistic point of view and _might_ make sense in some situations (e.g. a
> dense piano score), but there may equally be good reasons to have more than
> one slur in a chord, e.g. if this were from an orchestral score with three
> bassoons (or whatever) partcombined onto one staff.
> I know that in-chord slurs are now possible (if also not good-looking) and I
> recall David K. writing about ‘ID’ features allowing something like

Regrettable, my function can't be applied to the code below, because
it selects the slurs relying on their direction.
Maybe we would need something like a SlurColumn...

> {
>   \clef bass
>   \key g \major
>   s2 <d~ g\=1( b\=2(>
>   <d fis\=1) a\=2)>4
> }
> But I don’t recall how much of that is already possible and how much is
> merely desired. At any rate I’d consider something like that basically the
> right way of coding this example.
>
> Best, Simon

Cheers,
  Harm



reply via email to

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