Sorry, forgot to answer all.
Here again:

2014-02-16 12:15 GMT+01:00 Pierre Perol-Schneider
<[email protected]>:
> Dear Squad,
>
> The following snippet :
> http://lsr.dsi.unimi.it/LSR/Item?id=130
> works partially after v-2.18 update (slur does not show up).

Hi Pierre,

attached you'll find two files:

engraving-symmetric-or-palindromical-music-1.ly
simply uses event-chord-wrap!

engraving-symmetric-or-palindromical-music-2.ly
is a partially new coding to reflect the changes to 'EventChord,
introduced after 2.14.

Choose what you like best. :D
Both have a slightly extended example.

Cheers,
  Harm
\version "2.18.0"

#(define (reverse-music music)
  (let* ((elements (ly:music-property music 'elements))
         (reversed (reverse elements))
         (e (ly:music-property music 'element))
         (span-dir (ly:music-property music 'span-direction)))

    (ly:music-set-property! music 'elements reversed)

    (if (ly:music? e)
        (ly:music-set-property!
         music 'element
         (reverse-music e)))

    (if (ly:dir? span-dir)
        (ly:music-set-property! music 'span-direction (- span-dir))) 

    (map reverse-music reversed)
    
    music))

reverseMusic =
#(define-music-function (parser location m) (ly:music?)
   (reverse-music (event-chord-wrap! m)))
	
music =  
\relative c'' { c4-.\(\cresc\startTrillSpan <d f>4--( e4\startTextSpan f4 }

\score {
  \context Voice {
    \music
    \reverseMusic \music
  }
}

\version "2.18.0"

#(define (turn-span-dir music)
  (let ((span-dir (ly:music-property music 'span-direction)))
    (if (ly:dir? span-dir)
        (ly:music-set-property! music 'span-direction (- span-dir))
        (music-map
          (lambda (mus)
            (if (music-is-of-type? mus 'note-event)
                (begin
                   (for-each
                     (lambda (m) 
                        (if (music-is-of-type? m 'span-event)
                            (ly:music-set-property! m 'span-direction 
                               (- (ly:music-property m 'span-direction)))
                            m))
                     (ly:music-property mus 'articulations))
                   mus)
                 mus))
          music))))

#(define (reverse-music music)
  (let* ((elements (ly:music-property music 'elements))
         (reversed (reverse elements))
         (e (ly:music-property music 'element)))

    (if (not (null? elements))
        (ly:music-set-property! music 'elements reversed))

    (if (ly:music? e)
        (ly:music-set-property!
         music 'element
         (reverse-music e)))

    (turn-span-dir music)

    (map reverse-music reversed)
    
    music))

reverseMusic =
#(define-music-function (parser location m) (ly:music?)
  (reverse-music m))	

music =
\relative c'' { c4-.\(\cresc\startTrillSpan <d f>4--( e4\startTextSpan f4 }

\score {
  \context Voice {
    \music
    \reverseMusic \music
  }
}

_______________________________________________
bug-lilypond mailing list
[email protected]
https://lists.gnu.org/mailman/listinfo/bug-lilypond

Reply via email to