]> git.donarmstrong.com Git - lilypond.git/blob - ly/music-functions-init.ly
*** empty log message ***
[lilypond.git] / ly / music-functions-init.ly
1 \version "2.4.0"
2
3
4 applymusic = #(def-music-function (parser location func music) (procedure? ly:music?)
5                (func music))
6
7 oldaddlyrics = #(def-music-function (parser location music lyrics) (ly:music? ly:music?)
8
9               (make-music 'OldLyricCombineMusic 
10                           'origin location
11                           'elements (list music lyrics)))
12
13 grace = #(def-grace-function startGraceMusic stopGraceMusic)
14
15 acciaccatura = #(def-grace-function startAcciaccaturaMusic stopAcciaccaturaMusic)
16 appoggiatura = #(def-grace-function startAppoggiaturaMusic stopAppoggiaturaMusic)
17
18 partcombine = #(def-music-function (parser location part1 part2) (ly:music? ly:music?)
19                 (make-part-combine-music (list part1 part2)))
20
21 autochange = #(def-music-function (parser location music) (ly:music?)
22                (make-autochange-music music))
23
24 applycontext = #(def-music-function (parser location proc) (procedure?)
25                  (make-music 'ApplyContext 
26                    'origin location
27                    'procedure proc))
28
29 musicMap = #(def-music-function (parser location proc mus) (procedure? ly:music?)
30              (music-map proc mus))
31
32 displayMusic = #(def-music-function (parser location music) (ly:music?)
33                  (display-scheme-music music)
34                  music)
35 applyoutput = #(def-music-function (parser location proc) (procedure?)
36                 (make-music 'ApplyOutputEvent 
37                   'origin location
38                   'procedure proc))
39
40 breathe = #(def-music-function (parser location) ()
41             (make-music 'EventChord 
42               'origin location
43               'elements (list (make-music 'BreathingSignEvent))))
44
45
46 unfoldRepeats = #(def-music-function (parser location music) (ly:music?)
47                   (unfold-repeats music))
48
49 compressMusic = #(def-music-function
50                   (parser location fraction music) (number-pair? ly:music?)
51                   (ly:music-compress music (ly:make-moment (car fraction) (cdr fraction))))
52
53 makeClusters = #(def-music-function
54                 (parser location arg) (ly:music?)
55                 (music-map note-to-cluster arg))
56
57
58 removeWithTag = 
59 #(def-music-function
60   (parser location tag music) (symbol? ly:music?)
61   (music-filter
62    (lambda (m)
63     (let* ((tags (ly:music-property m 'tags))
64            (res (memq tag tags)))
65      (not res)))
66  music))
67               
68 keepWithTag =
69 #(def-music-function
70   (parser location tag music) (symbol? ly:music?)
71   (music-filter
72    (lambda (m)
73     (let* ((tags (ly:music-property m 'tags))
74            (res (memq tag tags)))
75      (or
76       (eq? tags '())
77       res)))
78    music))
79
80
81 %% Todo:
82 %% doing
83 %% def-music-function in a .scm causes crash.
84
85 cueDuring = 
86 #(def-music-function
87   (parser location what dir main-music)
88   (string? ly:dir? ly:music?)
89   (make-music 'QuoteMusic
90               'element main-music 
91               'quoted-context-type 'Voice
92               'quoted-context-id "cue"
93               'quoted-music-name what
94               'quoted-voice-direction dir
95               'origin location))
96
97
98 quoteDuring = #
99 (def-music-function
100   (parser location what main-music)
101   (string? ly:music?)
102   (make-music 'QuoteMusic
103               'element main-music
104               'quoted-music-name what
105               'origin location))
106
107
108
109
110 killCues =
111 #(def-music-function
112    (parser location music)
113    (ly:music?)
114    (music-map
115     (lambda (mus)
116       (if (string? (ly:music-property mus 'quoted-music-name))
117           (ly:music-property mus 'element)
118           mus)) music))
119    
120
121 afterGraceFraction = #(cons 6 8)
122
123 afterGrace =
124 #(def-music-function
125   (parser location main grace)
126   (ly:music? ly:music?)
127
128   (let*
129       ((main-length (ly:music-length main))
130        (fraction  (ly:parser-lookup parser 'afterGraceFraction)))
131     
132     (make-simultaneous-music
133      (list
134       main
135       (make-sequential-music
136        (list
137
138         (make-music 'SkipMusic
139                     'duration (ly:make-duration
140                                0 0
141                                (* (ly:moment-main-numerator main-length)
142                                   (car fraction))
143                                (* (ly:moment-main-denominator main-length)
144                                   (cdr fraction)) ))
145         (make-music 'GraceMusic
146                     'element grace)))))))
147
148 %{
149
150 TODO:
151
152 remove these from the parser, and softcode here:
153
154  * \tag
155
156 with small syntax changes, we could also do
157
158  * \bar
159  *  ?
160
161 %}