]> git.donarmstrong.com Git - lilypond.git/blob - scm/music-types.scm
* input/trip.ly (fugaIILeft): add arpeggio
[lilypond.git] / scm / music-types.scm
1
2 (define-public music-descriptions
3   `(
4     (AbortEvent
5      . (
6         (internal-class-name . "Span_req")
7         (span-type . "abort")
8         (types . (general-music event abort-event))
9         ))
10     (ArpeggioEvent 
11      . (
12         (internal-class-name .  "Request")
13         (types . (general-music arpeggio-event event))
14         ))
15     (ArticulationEvent
16      . (
17         (internal-class-name . "Articulation_req")
18         (types . (general-music event articulation-event script-event))
19         )) 
20     (BassFigureEvent
21      . (
22         (internal-class-name . "Request")
23         (compress-procedure . ,music-duration-compress)
24         (length . ,music-duration-length) 
25         (types . (general-music event rhythmic-event bass-figure-event))
26         ))
27     (BeamEvent
28      . (
29         (internal-class-name . "Request")
30         (types . (general-music event beam-event span-event))
31         ))
32     (BreakEvent
33      . (
34         (internal-class-name . "Request")
35         (types . (general-music break-event event))
36         ))
37     (BreathingSignEvent
38      . (
39         (internal-class-name . "Request")
40         (types . (general-music event breathing-event))
41         )) 
42     (BusyPlayingEvent
43      . (
44         (internal-class-name . "Request")
45         (types . (general-music event busy-playing-event))
46         )) 
47     (ExtenderEvent
48      . (
49         (internal-class-name . "Request")
50         (types . (general-music event))
51         ))   
52     (GlissandoEvent
53      . (
54         (internal-class-name . "Request")
55         (types . (general-music event))
56         )) 
57     (GraceMusic
58      . (
59         (internal-class-name . "Grace_music")
60         (iterator-ctor . ,Grace_iterator::constructor)
61         (types . (grace-music music-wrapper-music general-music))
62         ))
63    (HyphenEvent
64      . (
65         (internal-class-name . "Request")
66         (types . (general-music event))
67         ))   
68     (KeyChangeEvent
69      . (
70         (internal-class-name . "Key_change_req")
71         (types . (general-music key-change-event event))
72         )) 
73     (LyricEvent
74      . (
75         (internal-class-name . "Lyric_req")
76         (types . (general-music rhythmic-event event))
77         ))
78     (LigatureEvent
79      . (
80         (internal-class-name . "Request")
81         (span-type . ligature)
82         (types . (general-music event span-event ligature-event))
83         ))
84     (MarkEvent
85      . (
86         (internal-class-name . "Request")
87         (types . (general-music mark-event event))
88         ))  
89     (MelismaEvent
90      . (
91         (internal-class-name . "Melisma_playing_req")
92         (types . (general-music span-event melisma-playing-event event))
93         )) 
94     (MelismaPlayingEvent
95      . (
96         (internal-class-name . "Melisma_req")
97         (types . (general-music event))
98         ))
99     (Music
100      . (
101         (internal-class-name . "Music")
102         (types . (general-music)) 
103         ))
104     (NoteEvent
105      . (
106         (internal-class-name . "Request")
107         (length . ,music-duration-length) 
108         (compress-procedure . ,music-duration-compress)
109         (types . (general-music event note-event rhythmic-event melodic-event))
110         ))
111     (PorrectusEvent
112      . (
113         (internal-class-name . "Porrectus_req")
114         (types . (general-music event))
115         ))
116     (RepeatedMusic
117      . (
118         (internal-class-name . "Repeated_music")
119         (type .  repeated-music)
120         (types . (general-music repeat-music))
121         ))
122     (Request
123      . (
124         (internal-class-name . "Request")
125         (types . (general-music event))
126         )) 
127     (RestEvent
128      . (
129         (internal-class-name . "Request")
130         (length . ,music-duration-length)
131         (compress-procedure . ,music-duration-compress)
132         (types . (general-music event rhythmic-event rest-event))
133         )) 
134     (RhythmicEvent
135      . (
136         (internal-class-name . "Rhythmic_req")
137         (length . ,music-duration-length) 
138         (compress-procedure . ,music-duration-compress)
139         (types . (general-music rhythmic-event  event))
140         )) 
141     (SequentialMusic
142      . (
143         (internal-class-name . "Sequential_music")
144         (iterator-ctor . ,Sequential_music_iterator::constructor)
145         (types . (general-music sequential-music))
146         ))
147     (SimultaneousMusic
148      . (
149         (internal-class-name . "Simultaneous_music")
150         (iterator-ctor . ,Simultaneous_music_iterator::constructor)
151         
152         (types . (general-music simultaneous-music))
153         ))
154     (PropertySet
155      . (
156         (internal-class-name . "Music")
157         (types . (layout-instruction general-music))
158         (iterator-ctor . ,Property_iterator::constructor)
159         )
160      )
161      (PropertyUnset
162      . (
163         (internal-class-name . "Music")
164         (types . (layout-instruction general-music))
165         (iterator-ctor . ,Property_unset_iterator::constructor)
166         )
167      )
168      (VoiceSeparator
169       . (
170          (internal-class-name . "Music")
171          (types . (separator general-music))
172          ))
173      (BarCheck
174       . (
175          (internal-class-name . "Music")
176          (types . (general-music bar-check))
177          (iterator-ctor . ,Bar_check_iterator::constructor)
178          ))
179      (OverrideProperty
180       . (
181          (internal-class-name . "Music")
182          (types . (general-music layout-instruction))
183          (iterator-ctor . ,     Push_property_iterator::constructor)
184          ))
185      (RevertProperty
186       . (
187          (internal-class-name . "Music")
188          (types . (general-music layout-instruction))
189          (iterator-ctor . ,     Pop_property_iterator::constructor)
190          ))
191      
192     (OutputPropertySetMusic
193      . (
194         (internal-class-name . "Music")
195         (iterator-ctor . ,Output_property_music_iterator::constructor)
196         (types . (general-music layout-instruction))
197         ))
198     (ContextSpeccedMusic
199      . (
200         (internal-class-name . "Context_specced_music")
201         (types . (context-specification general-music music-wrapper-music))
202         ))
203     (AutoChangeMusic
204      . (
205         (internal-class-name . "Music_wrapper")
206         (iterator-ctor . ,Auto_change_iterator::constructor)
207         (types . (general-music music-wrapper-music auto-change-instruction))
208         ))
209     (TranslatorChange
210      . (
211         (internal-class-name . "Music")
212         (iterator-ctor . , Change_iterator::constructor)
213         (types . (general-music translator-change-instruction))
214         ))
215     (TimeScaledMusic
216      . (
217         (internal-class-name . "Time_scaled_music")
218         (iterator-ctor . ,Time_scaled_music_iterator::constructor)
219         (types . (time-scaled-music music-wrapper-music general-music))
220         ))
221     (TransposedMusic
222      . (
223         (internal-class-name . "Transposed_music")
224         (types . (music-wrapper-music general-music transposed-music))
225         ))
226
227     (UntransposableMusic
228      . (
229         (internal-class-name . "Untransposable_music")
230         (types . (music-wrapper-music general-music untransposable-music)) 
231         ))
232
233     (UnrelativableMusic
234      . (
235         (internal-class-name . "Un_relativable_music")
236         (types . (music-wrapper-music general-music unrelativable-music))
237         ))
238
239     (RelativeOctaveMusic
240      . (
241         (internal-class-name . "Relative_octave_music")
242         (types . (music-wrapper-music general-music relative-octave-music))
243         ))
244
245     (LyricCombineMusic
246      . (
247         (internal-class-name . "Lyric_combine_music")
248         (types . (general-music lyric-combine-music))
249         (iterator-ctor . ,Lyric_combine_music_iterator::constructor)
250         ))
251
252     (PartCombineMusic
253      . (
254         (internal-class-name . "Part_combine_music")
255         (types . (general-music part-combine-music))
256         (iterator-ctor . ,Part_combine_music_iterator::constructor)
257      ))
258     (RequestChord
259      . (
260         (internal-class-name . "Request_chord")
261         (iterator-ctor . ,Request_chord_iterator::constructor)
262         (types . (general-music simultaneous-music))
263         )
264      )
265      
266     (ScriptEvent
267      . (
268         (internal-class-name . "Script_req")
269         (types . (general-music event))
270         )) 
271     (SkipEvent
272      . (
273         (internal-class-name . "Request")
274         (length . ,music-duration-length) 
275         (compress-procedure . ,music-duration-compress)
276         (types . (general-music event rhythmic-event skip-event))
277         )) 
278     (SpanEvent
279      . (
280         (internal-class-name . "Span_req")
281         (types . (general-music event))
282         )) 
283     (DecrescendoEvent
284      . (
285         (internal-class-name . "Request")
286         (types . (general-music dynamic-event decrescendo-event event))
287         )) 
288     (CrescendoEvent
289      . (
290         (internal-class-name . "Request")
291         (types . (general-music dynamic-event crescendo-event event))
292         )) 
293     (StringNumberEvent
294      . (
295         (internal-class-name . "Request")
296         (types . (general-music event))
297         )) 
298     (TempoEvent
299      . (
300         (internal-class-name . "Request")
301         (types . (general-music tempo-event event))
302         )) 
303     (TextScriptEvent
304      . (
305         (internal-class-name . "Text_script_req")
306         (types . (general-music script-event text-script-event event))
307         )) 
308     (TieEvent
309      . (
310         (internal-class-name . "Request")
311         (types . (general-music tie-event event))
312         ))
313     ))
314
315
316
317 (define music-name-to-property-table (make-vector 59 '()))
318
319 (map (lambda (x)
320        (hashq-set! music-name-to-property-table (car x)
321                    (assoc-set! (cdr x) 'name (car x)))
322        )
323      music-descriptions)
324
325
326
327 (define-public (make-music-by-name x)
328   (if (not (symbol? x))
329       (misc-error "Not a symbol: ~s" x))
330   (let*
331       (
332        (props (hashq-ref music-name-to-property-table x '()))
333        (name (if (pair? props)
334                  (cdr (assoc 'internal-class-name props))
335                  (error "Can not find music object" x)))
336        )
337
338     (if (eq? props '())
339         (ly-warn (format "Could not find music type `~a'" x)))  
340     (ly-make-bare-music name props)
341   ))
342