Hi David & all,

i want to make arpeggios longer (so that they overshoot the chords a
bit).  I've modified your offsetBeamPositions function to work on
Arpeggios instead of Beams (that was easy), but i'm quite surprised to
find that it doesn't work correctly with cross-staff arpeggios.  Do
you have any ideas why?  Maybe this is a bug in LilyPond?

offsetArpeggioPositions =
  #(define-music-function (parser location offsets) (pair?)
    #{
       \override Arpeggio #'positions = #(lambda (grob)
         (let* ((func (assoc-get 'positions (cdr
(ly:grob-basic-properties grob))))
                (pos (func grob)))
            (coord-translate pos offsets)))
    #})

\relative c'   {
  <c e g c>2\arpeggio
  \offsetArpeggioPositions #'(-1 . 1) % works perfectly
  <c e g c>2\arpeggio
}

\new PianoStaff \relative c' <<
  \set PianoStaff.connectArpeggios = ##t
  \new Staff {
    \offsetArpeggioPositions #'(-10 . 10) % strange results
    <e g>2\arpeggio
  }
  \new Staff {
    \clef bass
    <c, e>2\arpeggio
  }
>>

% compare with output without your function:
\new PianoStaff \relative c' <<
  \set PianoStaff.connectArpeggios = ##t
  \new Staff {
    <e g>2\arpeggio
  }
  \new Staff {
    \clef bass
    <c, e>2\arpeggio
  }
>>

% cheers,
% janek

_______________________________________________
lilypond-user mailing list
lilypond-user@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-user

Reply via email to