lilypond-user
[Top][All Lists]
Advanced

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

Re: arpeggioArrowUp


From: Thomas Morley
Subject: Re: arpeggioArrowUp
Date: Thu, 15 Jan 2015 03:22:10 +0100

2015-01-14 22:12 GMT+01:00 Noeck <address@hidden>:
> Hi Abraham,
>
> Am 14.01.2015 um 17:24 schrieb tisimst:
>> P.S. I'm with Alistair, though. Is there any reason \arpeggioArrow[Up/Down]
>> isn't designed to work by itself rather than requiring another explicit
>> \arpeggio?
>
> I think, it is simply implemented in analogy to all the other Up/Down/Neutral
> settings: { \slurUp a( a) \slurNeutral a( a) } etc.
> In that sense it is very consistent: You set the direction before you use it 
> and
> it is valid until you reset the direction to netural again. It is just a
> shortcut for overrides as the other direction settings are.
>
> However, I feel like the arpeggio is a bit odd in this list:
> arpeggio, slurs, phrasing slurs, stems, tuplet brackets, augmentation dots 
> etc.
> first because it is more often than not a one-time thing and second because it
> is written in a long form anyway: '\arpeggio' and not like slurs '(' or
> implicitly by the duration '4.'. So writing '\arpeggioUp' would not hurt. And,
> in contrast to slur for example, the direction markers ^ and _ do not work to
> set the direction of the arpeggio arrow.
>
> So I understand why it works the way it is – and it has some logic – but at 
> the
> same time I understand you, that there would be more straight forward (more 
> easy
> to understand) solutions. It is perhaps a case where consistency is not the
> primary goal.
>
> Cheers,
> Joram



Some coding ideas, not all convincing, imho.
Just a little brain-storming:

\version "2.19.15"

\paper { indent = 0 }

\layout {
  \markLengthOn
  \override Score.RehearsalMark.self-alignment-X = #LEFT
}

arpeggioUp =
-\tweak #'stencil #ly:arpeggio::print
-\tweak #'X-extent #ly:arpeggio::width
-\tweak #'arpeggio-direction #UP
\arpeggio


\relative c'' {
  \mark "\"default\""
  <g b d g>2\arpeggio

  \mark "\"some overrides applied\""
  \override Arpeggio.stencil =
    #(lambda (grob) (grob-interpret-markup grob "xy"))
  \override Arpeggio.X-extent = #'(0 . 5)
  <g b d g>\arpeggio

  \mark
    \markup
      \column { "\"new short-cut\"" "\"previous overrides not in action\"" }
  <g b d g>\arpeggioUp

  \mark "\"overrides persists!\""
  <g b d g>\arpeggio

  \mark "\"arpeggioArrowUp clears overrides\""
  \arpeggioArrowUp
  <g b d g>\arpeggio


  <g b d g>\arpeggio
}

foo =
#(define-music-function (parser location mus)(ly:music?)
  (music-map
    (lambda (m)
      (if (music-is-of-type? m 'arpeggio-event)
          (make-music
             'ArpeggioEvent
             'tweaks
             (list
               (cons 'arpeggio-direction
                     (ly:music-property m 'direction))))
          m))
    mus))


\foo
\relative c'' {
  \mark "sort of post-processing"
  <g b d g>4\arpeggio
  <g b d g>4^\arpeggio
  <g b d g>4_\arpeggio
}


Cheers,
  Harm



reply via email to

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