2 (define-public music-descriptions
6 (description . "Abort currently running spanners.")
7 (internal-class-name . "Request")
9 (types . (general-music event abort-event))
13 (description . "Make an arpeggio on this note.")
14 (internal-class-name . "Request")
15 (types . (general-music arpeggio-event event))
18 ;; todo: use articulation-event for slur as well.
19 ;; separate non articulation scripts
24 (internal-class-name . "Request")
25 (types . (general-music event articulation-event script-event))
31 (internal-class-name . "Music_wrapper")
32 (iterator-ctor . ,Auto_change_iterator::constructor)
33 (types . (general-music music-wrapper-music auto-change-instruction))
39 (internal-class-name . "Music")
40 (types . (general-music bar-check))
41 (iterator-ctor . ,Bar_check_iterator::constructor)
47 (internal-class-name . "Request")
48 (compress-procedure . ,music-duration-compress)
49 (length . ,music-duration-length)
50 (types . (general-music event rhythmic-event bass-figure-event))
56 (internal-class-name . "Request")
57 (types . (general-music event beam-event span-event))
63 (internal-class-name . "Request")
64 (types . (general-music break-event event))
70 (internal-class-name . "Request")
71 (types . (general-music event breathing-event))
77 (internal-class-name . "Request")
78 (types . (general-music event busy-playing-event))
84 (internal-class-name . "Context_specced_music")
85 (types . (context-specification general-music music-wrapper-music))
91 (internal-class-name . "Request")
92 (types . (general-music dynamic-event crescendo-event event))
98 (internal-class-name . "Request")
99 (types . (general-music dynamic-event decrescendo-event event))
105 (internal-class-name . "Request")
106 (types . (general-music extender-event event))
112 (internal-class-name . "Request")
113 (types . (general-music glissando-event event))
119 (internal-class-name . "Grace_music")
120 (iterator-ctor . ,Grace_iterator::constructor)
121 (types . (grace-music music-wrapper-music general-music))
127 (internal-class-name . "Request")
128 (types . (general-music hyphen-event event))
134 (internal-class-name . "Key_change_req")
135 (types . (general-music key-change-event event))
141 (internal-class-name . "Lyric_combine_music")
142 (types . (general-music lyric-combine-music))
143 (iterator-ctor . ,Lyric_combine_music_iterator::constructor)
148 (description . "A lyric syllable. Must be entered in lyrics mode, i.e.
149 @code{\lyrics @{ twinkle4 twinkle4 @} } .")
151 (length . ,music-duration-length)
152 (compress-procedure . ,music-duration-compress)
153 (internal-class-name . "Request")
154 (types . (general-music rhythmic-event lyric-event event))
160 (internal-class-name . "Request")
161 (span-type . ligature)
162 (types . (general-music event span-event ligature-event))
168 (internal-class-name . "Request")
169 (types . (general-music mark-event event))
175 (internal-class-name . "Request")
176 (types . (general-music span-event melisma-playing-event event))
182 (internal-class-name . "Request")
183 (types . (general-music event))
185 (MultiMeasureRestEvent
187 (description . "Rests that may be compressed into Multi rests. Syntax
188 @code{R2.*4} for 4 measures in 3/4 time. Note the capital R.")
189 (internal-class-name . "Request")
190 (types . (general-music event multi-measure-rest-event))
196 (internal-class-name . "Music")
197 (types . (general-music))
203 (internal-class-name . "Request")
204 (length . ,music-duration-length)
205 (compress-procedure . ,music-duration-compress)
206 (types . (general-music event note-event rhythmic-event melodic-event))
212 (internal-class-name . "Music")
213 (types . (general-music layout-instruction))
214 (iterator-ctor . , Push_property_iterator::constructor)
221 (internal-class-name . "Part_combine_music")
222 (types . (general-music part-combine-music))
223 (iterator-ctor . ,Part_combine_music_iterator::constructor)
227 (description . "Start or end phrasing slur. Syntax NOTE \( and \) NOTE")
228 (internal-class-name . "Request")
229 (types . (general-music span-event phrasing-slur-event slur-event))
234 (internal-class-name . "Music")
235 (types . (layout-instruction general-music))
236 (iterator-ctor . ,Property_iterator::constructor)
243 (internal-class-name . "Music")
244 (types . (layout-instruction general-music))
245 (iterator-ctor . ,Property_unset_iterator::constructor)
252 (internal-class-name . "Request")
253 (types . (general-music porrectus-event event))
259 (internal-class-name . "Repeated_music")
260 (type . repeated-music)
261 (types . (general-music repeated-music))
267 (internal-class-name . "Request")
268 (types . (general-music event))
274 (internal-class-name . "Request")
275 (length . ,music-duration-length)
276 (compress-procedure . ,music-duration-compress)
277 (types . (general-music event rhythmic-event rest-event))
281 (description . "Music expressions concatenated. Syntax \sequential @{..@} or simply @{..@} .")
283 (internal-class-name . "Sequential_music")
284 (iterator-ctor . ,Sequential_music_iterator::constructor)
285 (types . (general-music sequential-music))
289 (description . "Music playing together. Syntax: \simultaneous @{ .. @} or < .. >.")
291 (internal-class-name . "Simultaneous_music")
292 (iterator-ctor . ,Simultaneous_music_iterator::constructor)
294 (types . (general-music simultaneous-music))
298 (description . "Start or end slur. Syntax NOTE( and )NOTE")
299 (internal-class-name . "Request")
300 (types . (general-music span-event slur-event))
307 (internal-class-name . "Music")
308 (types . (general-music layout-instruction))
309 (iterator-ctor . , Pop_property_iterator::constructor)
312 (OutputPropertySetMusic
316 (internal-class-name . "Music")
317 (iterator-ctor . ,Output_property_music_iterator::constructor)
318 (types . (general-music layout-instruction))
323 (description . "Start a text spanner like 8va.....|")
324 (internal-class-name . "Request")
325 (types . (general-music span-event text-span-event))
331 (internal-class-name . "Music")
332 (iterator-ctor . , Change_iterator::constructor)
333 (types . (general-music translator-change-instruction))
338 (internal-class-name . "Time_scaled_music")
339 (iterator-ctor . ,Time_scaled_music_iterator::constructor)
340 (types . (time-scaled-music music-wrapper-music general-music))
346 (internal-class-name . "Transposed_music")
347 (types . (music-wrapper-music general-music transposed-music))
354 (internal-class-name . "Untransposable_music")
355 (types . (music-wrapper-music general-music untransposable-music))
362 (internal-class-name . "Un_relativable_music")
363 (types . (music-wrapper-music general-music unrelativable-music))
370 (internal-class-name . "Relative_octave_music")
371 (types . (music-wrapper-music general-music relative-octave-music))
379 (internal-class-name . "Request_chord")
380 (iterator-ctor . ,Request_chord_iterator::constructor)
381 (types . (general-music request-chord simultaneous-music))
389 (internal-class-name . "Request")
390 (types . (general-music event))
396 (internal-class-name . "Request")
397 (length . ,music-duration-length)
398 (compress-procedure . ,music-duration-compress)
399 (types . (general-music event rhythmic-event skip-event))
405 (internal-class-name . "Request")
406 (types . (general-music event))
411 (internal-class-name . "Request")
412 (types . (general-music pedal-event sustain-pedal-event))
417 (internal-class-name . "Request")
418 (types . (general-music pedal-event sostenuto-pedal-event))
423 (internal-class-name . "Request")
424 (types . (general-music pedal-event una-corda-pedal-event))
430 (internal-class-name . "Request")
431 (types . (general-music string-number-event event))
437 (internal-class-name . "Request")
438 (types . (general-music tempo-event event))
443 (internal-class-name . "Request")
444 (types . (general-music script-event text-script-event event))
448 (description . "A tie. Entered as ~.")
449 (internal-class-name . "Request")
450 (types . (general-music tie-event event))
454 (description . "Un measured tremolo.")
455 (internal-class-name . "Request")
456 (types . (general-music event tremolo-event))
462 (internal-class-name . "Music")
463 (types . (separator general-music))
468 (set! music-descriptions
469 (sort music-descriptions alist<?))
471 (define music-name-to-property-table (make-vector 59 '()))
475 ;; transport description to an object property.
479 (set-object-property! (car x)
481 (cdr (assq 'description (cdr x))))
484 (set! l (assoc-set! l 'name (car x)))
485 (set! l (assq-remove! l 'description))
486 (hashq-set! music-name-to-property-table (car x) l)
493 (define-public (make-music-by-name x)
494 (if (not (symbol? x))
495 (misc-error "Not a symbol: ~s" x))
498 (props (hashq-ref music-name-to-property-table x '()))
499 (name (if (pair? props)
500 (cdr (assoc 'internal-class-name props))
501 (error "Can not find music object" x)))
505 (ly-warn (format "Could not find music type `~a'" x)))
506 (ly-make-bare-music name props)
510 (define-public (old-span-request->event name)
516 ("text" . TextSpanEvent)
517 ("decrescendo" . DecrescendoEvent)
518 ("crescendo" . CrescendoEvent)
519 ("Sustain" . SustainPedalEvent)
520 ("UnaCorda" . UnaCordaEvent)
521 ("Sostenuto" . SostenutoEvent)
525 (error (format "Could not find span type ~a" name))
527 (make-music-by-name (cdr entry))