]> git.donarmstrong.com Git - lilypond.git/blob - input/test/reverse-music.ly
* scripts/lilypond-book.py (do_file): do not overwrite input file.
[lilypond.git] / input / test / reverse-music.ly
1
2 \version "2.1.26"
3 % possible rename to scheme-something.
4 \header { texidoc="@cindex Scheme Reverse Music
5 Simple customised music apply. "
6 }
7
8 music = \notes \relative c'' { c4 d4( e4 f4 }
9
10 #(define (reverse-music music)
11   (let* ((elements (ly:music-property music 'elements))
12          (reversed (reverse elements))
13          (e (ly:music-property music 'element))
14          (span-dir (ly:music-property music 'span-direction)))
15
16     (ly:music-set-property! music 'elements reversed)
17
18     (if (ly:music? e)
19         (ly:music-set-property!
20          music 'element
21          (reverse-music e)))
22
23     (if (ly:dir? span-dir)
24         (ly:music-set-property! music 'span-direction (- span-dir)))
25
26     (map reverse-music reversed)
27
28     music))
29
30 \score {
31   \context Voice {
32     \music
33     \apply #reverse-music \music
34   }
35   \paper { raggedright = ##t}
36 }
37
38