2 \sourcefilename "reverse-music.ly"
4 % possible rename to scheme-something.
5 \header { texidoc="@cindex Scheme Reverse Music
6 Symmetric, or palindromical music can be produced, first, by printing
7 some music, and second, by printing the same music applying a Scheme
8 function to reverse the syntax.
12 #(define (reverse-music music)
13 (let* ((elements (ly:music-property music 'elements))
14 (reversed (reverse elements))
15 (e (ly:music-property music 'element))
16 (span-dir (ly:music-property music 'span-direction)))
18 (ly:music-set-property! music 'elements reversed)
21 (ly:music-set-property!
25 (if (ly:dir? span-dir)
26 (ly:music-set-property! music 'span-direction (- span-dir)))
28 (map reverse-music reversed)
33 #(define-music-function (parser location m) (ly:music?)
37 music = \relative c'' { c4 d4( e4 f4 }
44 \layout { ragged-right = ##t}