2015-01-17 1:59 GMT+01:00 Thomas Morley <thomasmorle...@gmail.com>: > 2015-01-16 1:42 GMT+01:00 Thomas Morley <thomasmorle...@gmail.com>: >> 2015-01-16 0:26 GMT+01:00 Thomas Morley <thomasmorle...@gmail.com>: >>> 2015-01-15 15:02 GMT+01:00 tisimst <tisimst.lilyp...@gmail.com>: >>>> On Wed, Jan 14, 2015 at 11:47 PM, Schneidy [via Lilypond] <[hidden email]> >>>> wrote: >>>> >>>> Hi Harm, >>>> >>>> 2015-01-15 3:22 GMT+01:00 Thomas Morley <[hidden email]>: >>>> >>>>> >>>>> 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 >>>>> } >>>> >>>> >>>> I like this one. >>>> Cheers, >>>> Pierre >>>> >>>> >>>> +1! >>>> >>>> However, I'd rather not have to use another function (\foo) to do this. >>>> Otherwise, I don't think there's any benefit over what is currently >>>> required >>>> with \arpeggioArrowUp. Can't it be put directly into a command that >>>> supports >>>> the direction indicators? I can't seem to find in the documentation where >>>> the post-fix syntax is described. >>>> >>>> -Abraham >>> >>> >>> >>> The direction indicators _ and ^ are setting the 'direction, as their >>> name suggests ;). >>> Though the arpeggio-arrow is printed, if the _'arpeggio-direction_ is set! >>> Currently those are two different things. It may be discussable, if it >>> _should_ be this way, but it has some logic, if you think about it. >>> Nevertheless my 'foo'-function iterated through the music, setting >>> 'arpeggio-direction to the value of 'direction. >>> This is not very cheap, maybe better to use an engraver for this duty: >>> >>> \version "2.19.15" >>> >>> direction-to-arpeggio-direction-engraver = >>> #(lambda (context) >>> (let ((dir '())) >>> `((listeners >>> (arpeggio-event >>> . >>> ,(lambda (engraver event) >>> ;; Not sure about following 'set!' >>> ;; Is it save? >>> (set! dir (ly:event-property event 'direction))))) >>> (acknowledgers >>> (arpeggio-interface >>> . >>> ,(lambda (engraver grob source-engraver) >>> (set! (ly:grob-property grob 'arpeggio-direction) dir) >>> (set! dir '()))))))) >>> >> >> >> >> %% c/p error, here the whole example: >> >> %%%%%%%%%%%%%%%%%%%% >> %% EXAMPLE >> %%%%%%%%%%%%%%%%%%%% >> >> \layout { >> \context { >> \Score >> \consists #direction-to-arpeggio-direction-engraver >> } >> } >> >> \relative c'' { >> <g b d g>4\arpeggio >> <g b d g>4^\arpeggio >> <g b d g>4_\arpeggio >> } > > Here an improved version, works cross-context as well: > > \version "2.19.15" > > \paper { indent = 0 } > > direction-to-arpeggio-direction-engraver = > #(lambda (context) > (let ((dir '())) > `((listeners > (arpeggio-event > . > ,(lambda (engraver event) > ;; Not sure about following 'set!' > ;; Is it save? > (set! dir (ly:event-property event 'direction)) > ;; Is this needed? > ;(ly:event-set-property! event 'direction '()) > ))) > (acknowledgers > (arpeggio-interface > . > ,(lambda (engraver grob source-engraver) > (set! (ly:grob-property grob 'arpeggio-direction) dir))))))) > > %%%%%%%%%%%%%%%%%%%% > %% EXAMPLES > %%%%%%%%%%%%%%%%%%%% > > \new Staff \with { \consists #direction-to-arpeggio-direction-engraver } > \relative c'' { > <g b d g>4\arpeggio > <g b d g>4^\arpeggio > <g b d g>4_\arpeggio > } > > %% Note: > %% If used cross-context, only the last direction-indicator > %% for each time-step counts > \new Staff > \with { > \consists "Span_arpeggio_engraver" > \consists #direction-to-arpeggio-direction-engraver > } > \relative c' { > \set Staff.connectArpeggios = ##t > << > \new Voice { \voiceOne <e' g>4\arpeggio <d f> <d f>2\arpeggio } > \new Voice { \voiceTwo <d, f>2^\arpeggio <g b>2_\arpeggio } > >> > } > > \new PianoStaff > \with { > \consists #direction-to-arpeggio-direction-engraver > } > << > \set PianoStaff.connectArpeggios = ##t > \new Staff { > \relative c' { > \key b \major > \time 6/8 > b8-.(^\arpeggio fis'-.\> cis-. e-. gis-. b-.)\!\fermata^\laissezVibrer > \bar "||" > } > } > \new Staff { > \relative c' { > \clef bass > \key b \major > << > { > <a e cis>2\arpeggio > } > \\ > { > <a, e a,>2.^\arpeggio > } > >> > } > } > >>
Delete the following. It's some syntax-testing, copied by accident > \score { > \relative c'' { > \markLengthOn > > <>^"default" > <g b d g>4\arpeggio > > <>^"^ indicator" > <g b d g>4^\arpeggio > > <>^"direction-tweak" > <g b d g>4-\tweak #'direction #RIGHT \arpeggio > > <>^"direction-override" > \once \override Arpeggio.direction = #RIGHT > <g b d g>4\arpeggio > } > \layout { > ragged-right = ##f > } > } > > > Cheers, > Harm _______________________________________________ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user