]> git.donarmstrong.com Git - lilypond.git/blob - scm/music-functions.scm
patch::: 1.5.25.rz1: accidentals 1.5.25.rz1
[lilypond.git] / scm / music-functions.scm
1
2 (define (denominator-tuplet-formatter mus)
3   (number->string (ly-get-mus-property mus 'denominator)))
4
5 (define (fraction-tuplet-formatter mus)
6   (string-append (number->string (ly-get-mus-property mus 'numerator))
7                  ":"
8                  (number->string (ly-get-mus-property mus 'denominator))
9                  ))
10
11 (define (unfold-repeats music)
12 "
13 This function replaces all repeats  with unfold repeats. It was 
14 written by Rune Zedeler. "
15   (let* ((es (ly-get-mus-property music 'elements))
16          (e (ly-get-mus-property music 'element))
17          (n  (ly-music-name music)))
18
19     (if (equal? n "Repeated_music")
20         (begin
21           (ly-set-mus-property
22            music 'length Repeated_music::unfolded_music_length)
23           (ly-set-mus-property
24            music 'iterator-ctor Unfolded_repeat_iterator::constructor)))
25
26     (if (pair? es)
27         (ly-set-mus-property
28          music 'elements
29          (map unfold-repeats es)))
30
31     (if (music? e)
32         (ly-set-mus-property
33          music 'element
34          (unfold-repeats e)))
35
36
37     music))
38
39 (define  (pitchify-scripts music)
40   "Copy the pitch fields of the Note_requests into  Text_script_requests, to aid
41 Fingering_engraver."
42   (define (find-note musics)
43     (filter-list (lambda (m) (equal? (ly-music-name m) "Note_req")) musics)
44     )
45   (define (find-scripts musics)
46     (filter-list (lambda (m) (equal? (ly-music-name m) "Text_script_req")) musics))
47
48   (let* (
49          (e (ly-get-mus-property music 'element))
50          (es (ly-get-mus-property music 'elements))
51          (notes (find-note es))
52          (pitch (if (pair? notes) (ly-get-mus-property (car  notes) 'pitch) #f))
53          )
54
55     (if pitch
56         (map (lambda (x) (ly-set-mus-property x 'pitch pitch)) (find-scripts es))
57         )
58         
59     (if (pair? es)
60         (ly-set-mus-property
61          music 'elements
62          (map pitchify-scripts es)))
63
64     (if (music? e)
65         (ly-set-mus-property
66          music 'element
67          (pitchify-scripts e)))
68
69     music))