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