]> git.donarmstrong.com Git - lilypond.git/blob - scm/music-types.scm
* input/regression/finger-chords.ly (texidoc): new file.
[lilypond.git] / scm / music-types.scm
1
2 (define-public music-descriptions
3   `(
4     (AbortEvent
5      . (
6    (description .  "End the currently running spanners.")
7         (internal-class-name . "Event")
8         (span-type . "abort")
9         (types . (general-music event abort-event))
10         ))
11     (AbsoluteDynamicEvent
12      . (
13    (description . "Creates a dynamic mark.  Syntax: @var{note}@code{\\x},
14 where x is one of \@\{\\ppp, \\pp, \\p, \\mp, \\mf, \\f, \\ff, \\fff.\@\}")
15         (internal-class-name . "Event")
16         (types . (general-music event dynamic-event absolute-dynamic-event))
17         ))
18     (ArpeggioEvent 
19      . (
20         (description .  "Make an arpeggio on this note. Syntax:
21 @var{note}-@code{\\arpeggio}")
22         (internal-class-name .  "Event")
23         (types . (general-music arpeggio-event event))
24         ))
25
26     ;; todo: use articulation-event for slur as well.
27     ;; separate non articulation scripts  
28     (ArticulationEvent
29      . (
30    (description .  "Adds an articulation marking to a note.  Syntax:
31 @var{note}@code{X}@code{Y}, where X is a direction (up @code{^}, down
32 @code{_}, or Lilypond's choice (no direction specified)), and where Y
33 is an articulation (such as @code{-.}, @code{->}, @code{\\tenuto},
34 @code{\\downbow}).  See the user manual for details.")
35
36         (internal-class-name . "Event")
37         (types . (general-music event articulation-event script-event))
38         )) 
39     (AutoChangeMusic
40      . (
41         (description .  "")
42
43         (internal-class-name . "Music_wrapper")
44         (iterator-ctor . ,Auto_change_iterator::constructor)
45         (types . (general-music music-wrapper-music auto-change-instruction))
46         ))
47     (BarCheck
48      . (
49         (description .  "")
50         (internal-class-name . "Music")
51         (types . (general-music bar-check))
52         (iterator-ctor . ,Bar_check_iterator::constructor)
53         ))
54     (BassFigureEvent
55      . (
56         (description .  "")
57
58         (internal-class-name . "Event")
59         (types . (general-music event rhythmic-event bass-figure-event))
60         ))
61     (BeamEvent
62      . (
63    (description .  "Starts or stops a beam.  Syntax for manual control:
64 \[c8 c c\] c8")
65
66         (internal-class-name . "Event")
67         (types . (general-music event beam-event span-event))
68         ))
69     (BreakEvent
70      . (
71    (description .  "Creates a line break.  Syntax: \\break.")
72
73         (internal-class-name . "Event")
74         (types . (general-music break-event event))
75         ))
76     (BreathingSignEvent
77      . (
78    (description .  "Creates a `breath mark' or `comma'.  Syntax:
79 @var{note}\\breathe.")
80
81         (internal-class-name . "Event")
82         (types . (general-music event breathing-event))
83         )) 
84     (BusyPlayingEvent
85      . (
86         (description .  "")
87
88         (internal-class-name . "Event")
89         (types . (general-music event busy-playing-event))
90         )) 
91     (ContextSpeccedMusic
92      . (
93         (description .  "")
94         (iterator-ctor . ,Context_specced_music_iterator::constructor)
95         (internal-class-name . "Music_wrapper")
96         (types . (context-specification general-music music-wrapper-music))
97         ))
98     (CrescendoEvent
99      . (
100    (description .  "Begins or ends a crescendo.  Syntax: @var{note}\\cr
101 ... @var{note}\\rc (you can also use \\<, \\!, \\cresc, and
102 \\endcresc.  See the user manual for details.).")
103
104         (internal-class-name . "Event")
105         (types . (general-music dynamic-event crescendo-event event))
106         )) 
107     (DecrescendoEvent
108      . (
109         (description .  "")
110
111         (internal-class-name . "Event")
112         (types . (general-music dynamic-event decrescendo-event event))
113         ))
114  
115     (ExtenderEvent
116      . (
117         (description .  "")
118
119         (internal-class-name . "Event")
120         (types . (general-music extender-event event))
121         ))
122     (FingerEvent
123      . (
124         (description . "")
125         (internal-class-name . "Event")
126         (types . (general-music fingering-event event))
127         ))
128     (GlissandoEvent
129      . (
130         (description .  "")
131
132         (internal-class-name . "Event")
133         (types . (general-music glissando-event event))
134         )) 
135     (GraceMusic
136      . (
137         (description .  "")
138
139         (internal-class-name . "Grace_music")
140         (iterator-ctor . ,Grace_iterator::constructor)
141         (types . (grace-music music-wrapper-music general-music))
142         ))
143     (NoteGroupingEvent
144      . (
145         (description . "Start or stop grouping brackets.")
146         (internal-class-name . "Event")
147         (types . (general-music event note-grouping-event))
148         ))
149     (HyphenEvent
150      . (
151         (description .  "")
152
153         (internal-class-name . "Event")
154         (types . (general-music hyphen-event event))
155         ))   
156     (KeyChangeEvent
157      . (
158         (description .  "")
159
160         (internal-class-name . "Key_change_req")
161         (types . (general-music key-change-event event))
162         )) 
163     (LyricCombineMusic
164      . (
165         (description .  "")
166
167         (internal-class-name . "Lyric_combine_music")
168         (types . (general-music lyric-combine-music))
169         (iterator-ctor . ,Lyric_combine_music_iterator::constructor)
170         ))
171
172     (LyricEvent
173      . (
174         (description .  "A lyric syllable. Must be entered in lyrics mode, i.e.
175 @code{\\lyrics @{ twinkle4 twinkle4 @} } .")
176
177         (internal-class-name . "Event")
178         (types . (general-music rhythmic-event lyric-event event))
179         ))
180     (LigatureEvent
181      . (
182         (description .  "")
183
184         (internal-class-name . "Event")
185         (span-type . ligature)
186         (types . (general-music event span-event ligature-event))
187         ))
188     (MarkEvent
189      . (
190         (description .  "")
191
192         (internal-class-name . "Event")
193         (types . (general-music mark-event event))
194         ))  
195     (MelismaEvent
196      . (
197         (description .  "")
198
199         (internal-class-name . "Event")
200         (types . (general-music span-event melisma-playing-event event))
201         )) 
202     (MelismaPlayingEvent
203      . (
204         (description .  "")
205
206         (internal-class-name . "Event")
207         (types . (general-music event))
208         ))
209     (MultiMeasureRestEvent
210      . (
211         (description . "Rests that may be compressed into Multi rests. Syntax
212 @code{R2.*4} for 4 measures in 3/4 time. Note the capital R.")
213         (internal-class-name . "Event")
214         (types . (general-music event multi-measure-rest-event))
215         ))
216     (Music
217      . (
218         (description .  "")
219
220         (internal-class-name . "Music")
221         (types . (general-music)) 
222         ))
223     (NoteEvent
224      . (
225         (description .  "")
226
227         (internal-class-name . "Event")
228         (types . (general-music event note-event rhythmic-event melodic-event))
229         ))
230     (OverrideProperty
231      . (
232         (description .  "")
233
234         (internal-class-name . "Music")
235         (types . (general-music layout-instruction))
236         (iterator-ctor . ,      Push_property_iterator::constructor)
237         ))
238
239     (PartCombineMusic
240      . (
241         (description .  "")
242
243         (internal-class-name . "Simultaneous_music")
244         (types . (general-music part-combine-music))
245         (iterator-ctor . ,Part_combine_music_iterator::constructor)
246         ))
247     (PhrasingSlurEvent
248      . (
249         (description . "Start or end phrasing slur. Syntax NOTE \\(  and \\) NOTE")
250         (internal-class-name . "Event")
251         (types . (general-music span-event phrasing-slur-event))
252         ))
253     (PropertySet
254      . (
255         (description .  "")
256         (internal-class-name . "Music")
257         (types . (layout-instruction general-music))
258         (iterator-ctor . ,Property_iterator::constructor)
259         )
260      )
261     (PropertyUnset
262      . (
263         (description .  "")
264
265         (internal-class-name . "Music")
266         (types . (layout-instruction general-music))
267         (iterator-ctor . ,Property_unset_iterator::constructor)
268         )
269      )
270     (PorrectusEvent
271      . (
272         (description .  "")
273
274         (internal-class-name . "Event")
275         (types . (general-music porrectus-event event))
276         ))
277     (RepeatedMusic
278      . (
279         (description .  "")
280
281         (type .  repeated-music)
282         (types . (general-music repeated-music))
283         ))
284     (Event
285      . (
286         (description .  "")
287
288         (internal-class-name . "Event")
289         (types . (general-music event))
290         )) 
291     (RestEvent
292      . (
293         (description .  "")
294
295         (internal-class-name . "Event")
296         (types . (general-music event rhythmic-event rest-event))
297         )) 
298     (SequentialMusic
299      . (
300         (description .  "Music expressions concatenated. Syntax \\sequential @{..@} or simply @{..@} .")
301
302         (internal-class-name . "Sequential_music")
303         (iterator-ctor . ,Sequential_music_iterator::constructor)
304         (types . (general-music sequential-music))
305         ))
306     (SimultaneousMusic
307      . (
308         (description .  "Music playing together. Syntax: \\simultaneous @{ .. @} or < .. >.")
309
310         (internal-class-name . "Simultaneous_music")
311         (iterator-ctor . ,Simultaneous_music_iterator::constructor)
312         
313         (types . (general-music simultaneous-music))
314         ))
315     (SlurEvent
316      . (
317         (description . "Start or end slur. Syntax NOTE(  and )NOTE")
318         (internal-class-name . "Event")
319         (types . (general-music span-event slur-event))
320         ))
321
322     (RevertProperty
323      . (
324         (description .  "")
325
326         (internal-class-name . "Music")
327         (types . (general-music layout-instruction))
328         (iterator-ctor . ,      Pop_property_iterator::constructor)
329         ))
330     
331     (OutputPropertySetMusic
332      . (
333         (description .  "")
334
335         (internal-class-name . "Music")
336         (iterator-ctor . ,Output_property_music_iterator::constructor)
337         (types . (general-music layout-instruction))
338         ))
339     
340     (TextSpanEvent
341      . (
342         (description . "Start a text spanner like 8va.....|")
343         (internal-class-name . "Event")
344         (types . (general-music span-event text-span-event))
345         ))
346     (TranslatorChange
347      . (
348         (description .  "")
349         (internal-class-name . "Music")
350         (iterator-ctor . , Change_iterator::constructor)
351         (types . (general-music translator-change-instruction))
352         ))
353     
354     (TimeScaledMusic
355      . (
356         (description .  "")
357         (internal-class-name . "Time_scaled_music")
358         (iterator-ctor . ,Time_scaled_music_iterator::constructor)
359         (types . (time-scaled-music music-wrapper-music general-music))
360         ))
361     
362     (TransposedMusic
363      . (
364         (description .  "")
365         (internal-class-name . "Transposed_music")
366         (types . (music-wrapper-music general-music transposed-music))
367         ))
368
369     (UntransposableMusic
370      . (
371         (description .  "")
372
373         (internal-class-name . "Untransposable_music")
374         (types . (music-wrapper-music general-music untransposable-music)) 
375         ))
376
377     (UnrelativableMusic
378      . (
379         (description .  "")
380         (internal-class-name . "Un_relativable_music")
381         (types . (music-wrapper-music general-music unrelativable-music))
382         ))
383
384     (RelativeOctaveMusic
385      . (
386         (description .  "")
387
388         (internal-class-name . "Relative_octave_music")
389         (types . (music-wrapper-music general-music relative-octave-music))
390         ))
391
392     
393     (EventChord
394      . (
395         (description .  "")
396
397         (internal-class-name . "Simultaneous_music")
398         (iterator-ctor . ,Event_chord_iterator::constructor)
399         (types . (general-music event-chord simultaneous-music))
400         )
401      )
402     
403     (ScriptEvent
404      . (
405         (description .  "")
406
407         (internal-class-name . "Event")
408         (types . (general-music event))
409         )) 
410     (SkipEvent
411      . (
412         (description .  "")
413
414         (internal-class-name . "Event")
415         (types . (general-music event rhythmic-event skip-event))
416         )) 
417     (SpanEvent
418      . (
419         (description .  "")
420
421         (internal-class-name . "Event")
422         (types . (general-music event))
423         )) 
424     (SustainPedalEvent
425      . (
426         (description . "")
427         (internal-class-name . "Event")
428         (types . (general-music pedal-event sustain-pedal-event))
429         ))
430     (SostenutoEvent
431      . (
432         (description . "")
433         (internal-class-name . "Event")
434         (types . (general-music pedal-event sostenuto-pedal-event))
435         ))
436     (UnaCordaEvent
437      . (
438         (description . "")
439         (internal-class-name . "Event")
440         (types . (general-music pedal-event una-corda-pedal-event))
441         ))
442     (StringNumberEvent
443      . (
444         (description .  "")
445
446         (internal-class-name . "Event")
447         (types . (general-music string-number-event event))
448         )) 
449     (TempoEvent
450      . (
451         (description .  "")
452
453         (internal-class-name . "Event")
454         (types . (general-music tempo-event event))
455         )) 
456     (TextScriptEvent
457      . (
458         (description .  "")
459         (internal-class-name . "Event")
460         (types . (general-music script-event text-script-event event))
461         )) 
462     (TieEvent
463      . (
464         (description .  "A tie.  Entered as ~.")
465         (internal-class-name . "Event")
466         (types . (general-music tie-event event))
467         ))
468     (TremoloEvent
469      . (
470         (description . "Un measured tremolo.")
471         (internal-class-name . "Event")
472         (types . (general-music event tremolo-event))
473         ))
474     (VoiceSeparator
475      . (
476         (description .  "")
477
478         (internal-class-name . "Music")
479         (types . (separator general-music))
480         ))
481
482     (VoltaRepeatedMusic
483      . (
484         (iterator-ctor . ,Volta_repeat_iterator::constructor)
485         (internal-class-name . "Repeated_music")
486         (description . "")
487         (start-moment-function .  ,Repeated_music::first_start)
488         (length . ,Repeated_music::volta_music_length)
489         (types . (general-music repeated-music volta-repeated-music))
490         ))
491     
492     (UnfoldedRepeatedMusic
493      . (
494         (iterator-ctor . ,Unfolded_repeat_iterator::constructor)
495         (description .  "")
496         (start-moment-function .  ,Repeated_music::first_start)
497         (internal-class-name . "Repeated_music")
498         (types . (general-music repeated-music unfolded-repeated-music))
499         (length . ,Repeated_music::unfolded_music_length)
500         ))
501     (PercentRepeatedMusic
502      . (
503         (internal-class-name . "Repeated_music")
504         (description .  "")
505         (iterator-ctor . ,Percent_repeat_iterator::constructor)
506         (start-moment-function .  ,Repeated_music::first_start)
507         (length . ,Repeated_music::unfolded_music_length)
508         (types . (general-music repeated-music percent-repeated-music))
509         ))
510     
511     (TremoloRepeteadMusic
512      . (
513         (iterator-ctor . ,Chord_tremolo_iterator::constructor)
514         (description .  "")
515         (internal-class-name . "Repeated_music")
516         (start-moment-function .  ,Repeated_music::first_start)
517
518         ;; the length of the repeat is handled by shifting the note logs
519         (length . ,Repeated_music::folded_music_length)
520         (types . (general-music repeated-music tremolo-repeated-music))
521         
522         ))
523     (FoldedRepeatedMusic
524      . (
525         (internal-class-name . "Repeated_music")
526         (description .  "")
527         (iterator-ctor  . ,Folded_repeat_iterator::constructor)
528         (start-moment-function .  ,Repeated_music::minimum_start)
529         (length . ,Repeated_music::folded_music_length)
530         (types . (general-music repeated-music folded-repeated-music))
531         ))
532     ))
533
534 (set! music-descriptions
535       (sort music-descriptions alist<?))
536
537 (define music-name-to-property-table (make-vector 59 '()))
538
539
540 ;; init hash table,
541 ;; transport description to an object property.
542 (set!
543  music-descriptions
544  (map (lambda (x)
545         (set-object-property! (car x)
546                               'music-description
547                               (cdr (assq 'description (cdr x))))
548         (let
549             ((l (cdr x)))
550           (set! l (assoc-set! l 'name (car x)))
551           (set! l (assq-remove!  l 'description))
552           (hashq-set! music-name-to-property-table (car x) l)
553           (cons (car x) l)
554           ))
555       music-descriptions))
556
557
558
559 (define-public (make-music-by-name x)
560   (if (not (symbol? x))
561       (error (format "Not a symbol: ~a" x)))
562   (let*
563       (
564        (props (hashq-ref music-name-to-property-table x '()))
565        (name (if (pair? props)
566                  (cdr (assoc 'internal-class-name props))
567                  (error "Can not find music object" x)))
568        )
569
570     (if (eq? props '())
571         (ly:warn (format "Could not find music type `~a'" x)))  
572     (ly:make-bare-music name props)
573     ))
574
575
576
577 (define-public (make-repeated-music name)
578   (let*
579       (
580        (handle (assoc
581                 name
582                 '(("volta" . VoltaRepeatedMusic)
583                   ("unfold" . UnfoldedRepeatedMusic)
584                   ("percent" . PercentRepeatedMusic)
585                   ("tremolo" . TremoloRepeteadMusic)
586                   ("fold" . FoldedRepeatedMusic)
587                   )))
588        (music-name
589         (if (pair? handle)
590             (cdr handle)
591             (begin
592               (ly:warn
593                (string-append "Unknown repeat type `" name
594                               "'\nSee music-types.scm for supported repeats"))
595               'VoltaRepeatedMusic)
596             )
597         )
598        )
599
600     (make-music-by-name music-name)
601     ))
602