]> git.donarmstrong.com Git - lilypond.git/blob - ly/music-functions-init.ly
* scm/define-music-properties.scm (all-music-properties): add
[lilypond.git] / ly / music-functions-init.ly
1 \version "2.4.0"
2
3
4 applymusic = #(def-music-function (location func music) (procedure? ly:music?)
5                (func music))
6
7 oldaddlyrics = #(def-music-function (location music lyrics) (ly:music? ly:music?)
8
9               (make-music 'LyricCombineMusic 
10                           'origin location
11                           'elements (list music lyrics)))
12
13 grace = #(def-grace-function startGraceMusic stopGraceMusic)
14 acciaccatura = #(def-grace-function startAcciaccaturaMusic stopAcciaccaturaMusic)
15 appoggiatura = #(def-grace-function startAppoggiaturaMusic stopAppoggiaturaMusic)
16
17 partcombine = #(def-music-function (location part1 part2) (ly:music? ly:music?)
18                 (make-part-combine-music (list part1 part2)))
19
20 autochange = #(def-music-function (location music) (ly:music?)
21                (make-autochange-music music))
22
23 applycontext = #(def-music-function (location proc) (procedure?)
24                  (make-music 'ApplyContext 
25                    'origin location
26                    'procedure proc))
27
28 displayMusic = #(def-music-function (location music) (ly:music?)
29                  (display-music music)
30                  music)
31 applyoutput = #(def-music-function (location proc) (procedure?)
32                 (make-music 'ApplyOutputEvent 
33                   'origin location
34                   'procedure proc))
35
36 breathe = #(def-music-function (location) ()
37             (make-music 'EventChord 
38               'origin location
39               'elements (list (make-music 'BreathingSignEvent))))
40
41
42 unfoldrepeats = #(def-music-function (location music) (ly:music?)
43                   (unfold-repeats music))
44
45 compressmusic = #(def-music-function
46                   (location fraction music) (number-pair? ly:music?)
47                   (ly:music-compress music (ly:make-moment (car fraction) (cdr fraction))))
48
49 makeClusters = #(def-music-function
50                 (location arg) (ly:music?)
51                 (music-map note-to-cluster arg))
52
53
54 removeWithTag = 
55 #(def-music-function
56   (location tag music) (symbol? ly:music?)
57   (music-filter
58    (lambda (m)
59     (let* ((tags (ly:music-property m 'tags))
60             (res (memq tag tags)))
61        (not res)))))
62               
63 keepWithTag =
64 #(def-music-function
65   (location tag music) (symbol? ly:music?)
66   (music-filter
67    (lambda (m)
68     (let* ((tags (ly:music-property m 'tags))
69            (res (memq tag tags)))
70        (or
71         (eq? tags '())
72         (memq tag tags))))
73    music))
74
75
76 %% Todo:
77 %% doing
78 %% def-music-function in a .scm causes crash.
79
80 quoteDuring = #
81 (def-music-function
82   (location what dir main-music)
83   (string? ly:dir? ly:music?)
84   (let*
85       ((quote-music
86         (make-music 'NewQuoteMusic
87                     'quoted-context-type 'Voice
88                     'quoted-context-id "cue"
89                     'quoted-music-name what
90                     'origin location))
91        (main-voice (if (= 1 dir) 2 1))
92        (cue-voice (if (= 1 dir) 1 2))
93        (return-value quote-music)
94        )
95
96     (if (not (= dir 0))
97         (begin
98           (set! return-value
99                 (make-sequential-music
100                  (list
101                   (context-spec-music (make-voice-props-set cue-voice) 'Voice "cue")
102                   quote-music
103                   (context-spec-music (make-voice-props-revert)  'Voice "cue"))
104                  ))
105
106           (set! main-music
107                 (make-sequential-music
108                  (list
109                   (make-voice-props-set main-voice)
110                   main-music
111                   (make-voice-props-revert)))
112                 )))
113     (set! (ly:music-property quote-music 'element) main-music)
114     return-value))
115
116 %{
117
118 TODO:
119
120 remove these from the parser, and softcode here:
121
122  * \tag
123
124 with small syntax changes, we could also do
125
126  * \bar
127  *  ?
128
129 %}