]> git.donarmstrong.com Git - lilypond.git/blob - scm/define-music-types.scm
* scm/define-markup-commands.scm (smallcaps): New markup command.
[lilypond.git] / scm / define-music-types.scm
1 ;;;; define-music-types.scm --
2 ;;;;
3 ;;;;  source file of the GNU LilyPond music typesetter
4 ;;;; 
5 ;;;; (c)  1998--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
6 ;;;;                 Jan Nieuwenhuizen <janneke@gnu.org>
7
8 (define-public music-descriptions
9   `(
10     (AbsoluteDynamicEvent
11      . (
12    (description . "Creates a dynamic mark.  Syntax: @var{note}@code{\\x},
13 where x is one of \\ppp, \\pp, \\p, \\mp, \\mf, \\f, \\ff, \\fff.")
14         (internal-class-name . "Event")
15         (types . (general-music event dynamic-event absolute-dynamic-event))
16         ))
17     (ApplyContext
18      . (
19         (description . "Call the argument with the current context during interpreting phase")
20         (internal-class-name . "Music")
21         (types . (general-music apply-context))
22         (iterator-ctor . ,Apply_context_iterator::constructor)
23         ))
24     (ApplyOutputEvent
25      . (
26         (description . "
27 Call the argument with all current grobs during interpreting phase.
28
29 SYNTAX
30
31 \applyoutput FUNC
32
33 arguments to func are 1. the grob, 2. the originating context,
34 3. context where FUNC is called.
35
36 ")
37         (internal-class-name . "Event")
38         (iterator-ctor . ,Output_property_music_iterator::constructor)
39         (types . (general-music layout-instruction))
40         ))
41     (ArpeggioEvent 
42      . (
43         (description .  "Make an arpeggio on this note. Syntax:
44 @var{note}-@code{\\arpeggio}")
45         (internal-class-name .  "Event")
46         (types . (general-music arpeggio-event event))
47         ))
48
49     ;; todo: use articulation-event for slur as well.
50     ;; separate non articulation scripts  
51     (ArticulationEvent
52      . (
53    (description .  "Adds an articulation marking to a note.  Syntax:
54 @var{note}@code{X}@code{Y}, where X is a direction (up @code{^}, down
55 @code{_}, or LilyPond's choice (no direction specified)), and where Y
56 is an articulation (such as @code{-.}, @code{->}, @code{\\tenuto},
57 @code{\\downbow}).  See the user manual for details.")
58
59         (internal-class-name . "Event")
60         (types . (general-music event articulation-event script-event))
61         )) 
62     (AutoChangeMusic
63      . (
64         (description .  "Used for making voices that switch between piano staves automatically.")
65
66         (internal-class-name . "Music_wrapper")
67         (iterator-ctor . ,Auto_change_iterator::constructor)
68         (types . (general-music music-wrapper-music auto-change-instruction))
69         ))
70     (BarCheck
71      . (
72         (description .
73                      "Check whether this music coincides with the start of the measure.")
74         (internal-class-name . "Music")
75         (types . (general-music bar-check))
76         (iterator-ctor . ,Bar_check_iterator::constructor)
77         ))
78     (BassFigureEvent
79      . (
80         (description .  "Print a bass-figure text")
81
82         (internal-class-name . "Event")
83         (types . (general-music event rhythmic-event bass-figure-event))
84         ))
85     (BeamEvent
86      . (
87    (description .  "Starts or stops a beam.  Syntax for manual control:
88 c8-[ c c-] c8")
89         (internal-class-name . "Event")
90         (types . (general-music event beam-event span-event))
91         ))
92     (BreakEvent
93      . (
94    (description .  "Creates a line break.  Syntax: \\break.")
95
96         (internal-class-name . "Event")
97         (types . (general-music break-event event))
98         ))
99     (BreathingSignEvent
100      . (
101         (description .  "Creates a `breath mark' or `comma'.  Syntax:
102 @var{note}\\breathe.")
103
104         (internal-class-name . "Event")
105         (types . (general-music event breathing-event))
106         )) 
107     (BusyPlayingEvent
108      . (
109         (description .  "Used internally to signal beginning and ending of notes.")
110
111         (internal-class-name . "Event")
112         (types . (general-music event busy-playing-event))
113         ))
114     (StartPlayingEvent
115      . (
116         (description .  "Used internally to signal beginning of notes.")
117
118         (internal-class-name . "Event")
119         (types . (general-music event start-playing-event))
120         ))
121     
122     (ClusterNoteEvent
123      . (
124         (description .  "A note that is part of a cluster.")
125         (internal-class-name . "Event")
126
127         ; not a note-event, to ensure that Note_engraver doesn't eat it. 
128         (types . (general-music cluster-note-event melodic-event rhythmic-event event))
129         ))
130     
131     (ContextSpeccedMusic
132      . (
133         (description .  "Interpret the argument music within a specific context.")
134         (iterator-ctor . ,Context_specced_music_iterator::constructor)
135         (internal-class-name . "Music_wrapper")
136         (types . (context-specification general-music music-wrapper-music))
137         ))
138     
139     (CrescendoEvent
140      . (
141         (description .  "Begins or ends a crescendo.  Syntax: @var{note}\\cr
142 ... @var{note}\\rc (you can also use \\<, \\!, \\cresc, and
143 \\endcresc.  See the user manual for details.).")
144
145         (internal-class-name . "Event")
146         (types . (general-music dynamic-event crescendo-event event))
147         )) 
148     (DecrescendoEvent
149      . (
150         (description .  "See @ref{CrescendoEvent}.")
151
152         (internal-class-name . "Event")
153         (types . (general-music dynamic-event decrescendo-event event))
154         ))
155  
156     (ExtenderEvent
157      . (
158         (description .  "Extend lyrics.")
159
160         (internal-class-name . "Event")
161         (types . (general-music extender-event event))
162         ))
163     (FingerEvent
164      . (
165         (description . "Specify what finger to use for this note.")
166         (internal-class-name . "Event")
167         (types . (general-music fingering-event event))
168         ))
169     (BeamForbidEvent
170      . (
171         (description . "Specify that a note may not auto-beamed ")
172         (internal-class-name . "Event")
173         (types . (general-music event beam-forbid-event))
174         ))
175     (GlissandoEvent
176      . (
177         (description .  "Start  a glissando on this note.")
178         (internal-class-name . "Event")
179         (types . (general-music glissando-event event))
180         ))
181     
182     (GraceMusic
183      . (
184         (description .  "Interpret the argument as grace notes. ")
185
186         (internal-class-name . "Grace_music")
187         (iterator-ctor . ,Grace_iterator::constructor)
188         (types . (grace-music music-wrapper-music general-music))
189         ))
190     (NoteGroupingEvent
191      . (
192         (description . "Start or stop grouping brackets.")
193         (internal-class-name . "Event")
194         (types . (general-music event note-grouping-event))
195         ))
196     (HarmonicEvent
197      . (
198         (description . "Mark a note as harmonic")
199         (internal-class-name . "Event")
200         (types . (general-music event harmonic-event))
201         ))
202     (HyphenEvent
203      . (
204         (description .  "A hyphen between lyric syllables.")
205
206         (internal-class-name . "Event")
207         (types . (general-music hyphen-event event))
208         ))
209     
210     (KeyChangeEvent
211      . (
212         (description .  "Change the key signature. Syntax: @code{\\key } @var{name} @var{scale}.")
213
214         (internal-class-name . "Key_change_ev")
215         (types . (general-music key-change-event event))
216         ))
217     
218     (LigatureEvent
219      . (
220         (description .  "(docme).")
221
222         (internal-class-name . "Event")
223         (span-type . ligature)
224         (types . (general-music span-event ligature-event event))
225         ))
226     
227     (LyricCombineMusic
228      . (
229         (description .  "Align lyrics to the start of notes.
230 Syntax @var{\\addlyrics }@var{music} @var{lyrics}.")
231
232         (internal-class-name . "Lyric_combine_music")
233         (types . (general-music lyric-combine-music))
234         (iterator-ctor . ,Lyric_combine_music_iterator::constructor)
235         ))
236     
237     (NewLyricCombineMusic
238      . (
239         (description .  "Align lyrics to the start of notes.
240 Syntax @var{\\addlyrics }@var{music} @var{lyrics}.")
241         (internal-class-name . "Music")
242         (length . ,(ly:make-moment 0 1))
243         (types . (general-music lyric-combine-music))
244         (iterator-ctor . ,New_lyric_combine_music_iterator::constructor)
245         ))
246
247     (LyricEvent
248      . (
249         (description .  "A lyric syllable. Must be entered in lyrics mode, i.e.
250 @code{\\lyrics @{ twinkle4 twinkle4 @} } .")
251
252         (internal-class-name . "Event")
253         (types . (general-music rhythmic-event lyric-event event))
254         ))
255     (MarkEvent
256      . (
257         (description .  "Insert a rehearsal mark. Syntax: @code{\\mark} @var{marker},
258 e.g. @code{\\mark \"A\"}.")
259
260         (internal-class-name . "Event")
261         (types . (general-music mark-event event))
262         ))
263     (MelismaPlayingEvent
264      . (
265         (description .  "Used internally to signal melismas.")
266         (internal-class-name . "Event")
267         (types . (general-music melisma-playing-event event))
268         ))
269     (ManualMelismaEvent
270      . (
271         (description .  "Start or stop a melisma.
272
273 Syntax:@code{c4\\melisma d\\melismaEnd}.")
274         (internal-class-name . "Event")
275         (types . (general-music melisma-span-event event))
276         ))
277     
278     (MultiMeasureRestEvent
279      . (
280         (description . "Rests that may be compressed into Multi rests. Syntax
281 @code{R2.*4} for 4 measures in 3/4 time. Note the capital R.")
282         (internal-class-name . "Event")
283         (types . (general-music event rhythmic-event multi-measure-rest-event))
284         ))
285     
286     (MultiMeasureTextEvent
287      . (
288         (description . "Texts on mm rests. Syntax
289 @code{R-\\markup @{ \\roman \"bla\" @}}. Note the explicit font switch.")
290         (internal-class-name . "Event")
291         (types . (general-music event multi-measure-text-event))
292         ))
293
294     (Music
295      . (
296         (description .  "Generic type for music expressions.")
297
298         (internal-class-name . "Music")
299         (types . (general-music)) 
300         ))
301     (NoteEvent
302      . (
303         (description .  "A note.")
304
305         (internal-class-name . "Event")
306         (types . (general-music event note-event rhythmic-event melodic-event))
307         ))
308     
309     (OverrideProperty
310      . (
311         (description .  "Extend the definition of a graphical object.
312
313 SYNTAX
314
315 @code{\\propery Foo.Bar \\override} @var{SYMBOL} = @var{VALUE}
316
317 ")
318
319         (internal-class-name . "Music")
320         (types . (general-music layout-instruction))
321         (iterator-ctor . ,      Push_property_iterator::constructor)
322         ))
323     (PartCombineMusic
324      . (
325         (description .  "Combine two parts on a staff, either merged or
326 as separate voices.")
327
328         (internal-class-name . "Simultaneous_music")
329         (types . (general-music part-combine-music))
330         (iterator-ctor . ,Part_combine_iterator::constructor)
331         ))
332     (PhrasingSlurEvent
333      . (
334         (description . "Start or end phrasing slur. Syntax NOTE \\(  and \\) NOTE")
335         (internal-class-name . "Event")
336         (types . (general-music span-event phrasing-slur-event))
337         ))
338     
339     (PropertySet
340      . (
341         (description .  "Set a context property.
342
343 Syntax: @code{\\property @var{context}.@var{prop} = @var{scheme-val}}.")
344         (internal-class-name . "Music")
345         (types . (layout-instruction general-music))
346         (iterator-ctor . ,Property_iterator::constructor)
347         )
348      )
349     
350     (PropertyUnset
351      . (
352         (description .  "Remove the definition of a context @code{\\property}.")
353
354         (internal-class-name . "Music")
355         (types . (layout-instruction general-music))
356         (iterator-ctor . ,Property_unset_iterator::constructor)
357         )
358      )
359     
360     (PesOrFlexaEvent
361      . (
362         (description .  "Within a ligature, mark the previous and the
363 following note to form a pes (if melody goes up) or a flexa (if melody
364 goes down).")
365
366         (internal-class-name . "Event")
367         (types . (general-music pes-or-flexa-event event))
368         ))
369
370     (QuoteMusic
371      . (
372         (description . "Quote preprocessed snippets of music. ")
373         (internal-class-name . "Event") ;;  so we get Event::get_length ().
374         (iterator-ctor . ,Quote_iterator::constructor)
375         (types . (general-music))
376         ))
377     
378     (RelativeOctaveCheck
379      . ((description . "Check if a pitch is in the correct octave.")
380         (internal-class-name . "Relative_octave_check")
381         (types . (general-music relative-octave-check))
382         ))
383     
384     (RepeatedMusic
385      . (
386         (description .  "Repeat music in different ways")
387
388         (type .  repeated-music)
389         (types . (general-music repeated-music))
390         ))
391     
392     (Event
393      . (
394         (description .  "Atomic music event.")
395
396         (internal-class-name . "Event")
397         (types . (general-music event))
398         ))
399     
400     (RestEvent
401      . (
402         (description .  "A Rest. Syntax @code{r4} for a quarter rest. ")
403
404         (internal-class-name . "Event")
405         (types . (general-music event rhythmic-event rest-event))
406         )) 
407     (SequentialMusic
408      . (
409         (description .  "Music expressions concatenated. Syntax \\sequential @{..@} or simply @{..@} .")
410
411         (internal-class-name . "Sequential_music")
412         (iterator-ctor . ,Sequential_music_iterator::constructor)
413         (types . (general-music sequential-music))
414         ))
415     
416     (MultiMeasureRestMusicGroup
417      . (
418         (description .  "Like sequential-music, but specifically intended
419 to group start-mmrest, skip, stop-mmrest sequence. Syntax @code{R2.*5} for 5 measures in 3/4 time.")
420         (internal-class-name . "Sequential_music")
421         (iterator-ctor . ,Sequential_music_iterator::constructor)
422         (types . (general-music sequential-music))
423         ))
424
425     (SoloOneEvent
426      . (
427         (description . "Print Solo.1")
428         (internal-class-name . "Event")
429         (part-combine-status . solo1)
430         (types . (general-music event part-combine-event))
431         ))
432     (SoloTwoEvent
433      . (
434         (description . "Print Solo.2")
435         (internal-class-name . "Event")
436         (part-combine-status . solo2)
437         (types . (general-music event part-combine-event))
438         ))
439     (UnisonoEvent
440      . ((description . "Print a2")
441         (internal-class-name .  "Event")
442         (part-combine-status . unisono)
443         (types . (general-music event part-combine-event))))
444     
445     (SimultaneousMusic
446      . (
447         (description .  "Music playing together.
448
449 SYNTAX
450
451 @code{ \\simultaneous @{ .. @}} or < .. >.")
452
453         (internal-class-name . "Simultaneous_music")
454         (iterator-ctor . ,Simultaneous_music_iterator::constructor)
455         
456         (types . (general-music simultaneous-music))
457         ))
458     
459     (SlurEvent
460      . (
461         (description . "Start or end slur. Syntax NOTE(  and )NOTE")
462         (internal-class-name . "Event")
463         (types . (general-music span-event slur-event))
464         ))
465
466     (RevertProperty
467      . (
468         (description .  "The opposite of @ref{OverrideProperty}: remove a
469 previously added property from a graphical object definition
470  ")
471
472         (internal-class-name . "Music")
473         (types . (general-music layout-instruction))
474         (iterator-ctor . ,      Pop_property_iterator::constructor)
475         ))
476
477     (OutputPropertySetMusic
478      . (
479         (description .  "Set grob properties in objects
480 individually. Syntax @code{\\outputproperty @var{predicate} @var{prop}
481 = @var{val}}.")
482
483         (internal-class-name . "Music")
484         (iterator-ctor . ,Output_property_music_iterator::constructor)
485         (types . (general-music layout-instruction))
486         ))
487     
488     (TextSpanEvent
489      . (
490         (description . "Start a text spanner like 8va.....|")
491         (internal-class-name . "Event")
492         (types . (general-music span-event text-span-event))
493         ))
494     
495     (TranslatorChange
496      . (
497         (description .  "Change staffs in Piano staff. Syntax @code{\\translator Staff = @var{new-id}}.")
498         (internal-class-name . "Music")
499         (iterator-ctor . , Change_iterator::constructor)
500         (types . (general-music translator-change-instruction))
501         ))
502     
503     (TimeScaledMusic
504      . (
505         (description .  "Multiply durations, as in tuplets. Syntax @code{\\times @var{fraction} @var{music}}, e.g.
506 @code{\\times 2/3 @{ ... @}} for triplets.
507  ")
508         (internal-class-name . "Time_scaled_music")
509         (iterator-ctor . ,Time_scaled_music_iterator::constructor)
510         (types . (time-scaled-music music-wrapper-music general-music))
511         ))
512     
513     (TransposedMusic
514      . (
515         (description .  "Music that has been transposed.")
516         (internal-class-name . "Transposed_music")
517         (types . (music-wrapper-music general-music transposed-music))
518         ))
519
520     (UntransposableMusic
521      . (
522         (description .  "Music that can not be transposed.")
523
524         (internal-class-name . "Untransposable_music")
525         (types . (music-wrapper-music general-music untransposable-music)) 
526         ))
527
528     (UnrelativableMusic
529      . (
530         (description .  "Music that can not be converted from relative to absolute notation.
531 For example, transposed music.")
532         (internal-class-name . "Un_relativable_music")
533         (types . (music-wrapper-music general-music unrelativable-music))
534         ))
535
536     (RelativeOctaveMusic
537      . (
538         (description .  "Music that was entered in relative octave notation.")
539
540         (internal-class-name . "Relative_octave_music")
541         (types . (music-wrapper-music general-music relative-octave-music))
542         ))
543     
544     (EventChord
545      . (
546         (description .  "Internally used to group a set of events.")
547         (internal-class-name . "Event_chord")
548         (iterator-ctor . ,Event_chord_iterator::constructor)
549         (types . (general-music event-chord simultaneous-music))
550         )
551      )
552     
553     (ScriptEvent
554      . (
555         (description .  "Add an articulation mark to a note. ")
556
557         (internal-class-name . "Event")
558         (types . (general-music event))
559         ))
560
561     (SkipMusic
562      . (
563         (description .  "Filler that takes up duration, does not print anything, and also
564 does not create staffs or voices implicitly.
565
566 Syntax: @code{\\skip }@var{duration}.")
567         (internal-class-name . "Music")
568         (length . ,ly:music-duration-length)
569         (iterator-ctor . ,Simple_music_iterator::constructor)
570         (types . (general-music event rhythmic-event skip-event))
571         ))
572      
573     (SkipEvent
574      . (
575         (description .  "Filler that takes up duration, but does not print anything.
576
577 Syntax: @code{s}@var{duration}")
578
579         (internal-class-name . "Event")
580         (types . (general-music event rhythmic-event skip-event))
581         ))
582     (SpanEvent
583      . (
584         (description .  "Event for anything that is started at a different time than stopped.")
585
586         (internal-class-name . "Event")
587         (types . (general-music event))
588         ))
589     
590     (SustainEvent
591      . (
592         (description . "Depress or release sustain pedal. ")
593         (internal-class-name . "Event")
594         (types . (general-music pedal-event sustain-pedal-event))
595         ))
596     
597     (SostenutoEvent
598      . (
599         (description . "Depress or release sostenuto pedal. ")
600         (internal-class-name . "Event")
601         (types . (general-music pedal-event sostenuto-pedal-event))
602         ))
603     
604     (UnaCordaEvent
605      . (
606         (description . "Depress or release una-corda pedal.")
607         (internal-class-name . "Event")
608         (types . (general-music pedal-event una-corda-pedal-event))
609         ))
610     
611     (StringNumberEvent
612      . (
613         (description .  "Specify on which string to play this note. Syntax: @code{\\@var{number}}.")
614
615         (internal-class-name . "Event")
616         (types . (general-music string-number-event event))
617         )) 
618
619     (MetronomeChangeEvent
620      . (
621         (description .  "Change tempo setting (in beats per minute).")
622         (internal-class-name . "Event")
623         (types . (general-music metronome-change-event tempo-event event))
624         ))
625     
626     (TextScriptEvent
627      . (
628         (description .  "")
629         (internal-class-name . "Event")
630         (types . (general-music script-event text-script-event event))
631         )) 
632     (TieEvent
633      . (
634         (description .  "A tie.  Entered as @var{note}-~.")
635         (internal-class-name . "Event")
636         (types . (general-music tie-event event))
637         ))
638     (TremoloEvent
639      . (
640         (description . "Un measured tremolo.")
641         (internal-class-name . "Event")
642         (types . (general-music event tremolo-event))
643         ))
644     
645     (VoiceSeparator
646      . (
647         (description .  "Separate polyphonic voices in simultaneous music. Syntax: @code{\\\\}")
648
649         (internal-class-name . "Music")
650         (types . (separator general-music))
651         ))
652
653     (VoltaRepeatedMusic
654      . (
655         (iterator-ctor . ,Volta_repeat_iterator::constructor)
656         (internal-class-name . "Repeated_music")
657         (description . "")
658         (start-moment-function .  ,Repeated_music::first_start)
659         (length . ,Repeated_music::volta_music_length)
660         (types . (general-music repeated-music volta-repeated-music))
661         ))
662     
663     (UnfoldedRepeatedMusic
664      . (
665         (iterator-ctor . ,Unfolded_repeat_iterator::constructor)
666         (description .  "")
667         (start-moment-function .  ,Repeated_music::first_start)
668         (internal-class-name . "Repeated_music")
669         (types . (general-music repeated-music unfolded-repeated-music))
670         (length . ,Repeated_music::unfolded_music_length)
671         ))
672     (PercentRepeatedMusic
673      . (
674         (internal-class-name . "Repeated_music")
675         (description .  "Repeats encoded by percents.")
676         (iterator-ctor . ,Percent_repeat_iterator::constructor)
677         (start-moment-function .  ,Repeated_music::first_start)
678         (length . ,Repeated_music::unfolded_music_length)
679         (types . (general-music repeated-music percent-repeated-music))
680         ))
681     
682     (TremoloRepeatedMusic
683      . (
684         (iterator-ctor . ,Chord_tremolo_iterator::constructor)
685         (description .  "Repeated notes denoted by tremolo beams.")
686         (internal-class-name . "Repeated_music")
687         (start-moment-function .  ,Repeated_music::first_start)
688
689         ;; the length of the repeat is handled by shifting the note logs
690         (length . ,Repeated_music::folded_music_length)
691         (types . (general-music repeated-music tremolo-repeated-music))
692         
693         ))
694     
695     (FoldedRepeatedMusic
696      . (
697         (internal-class-name . "Repeated_music")
698         (description .  "Repeats with alternatives placed in parallel. ")
699         (iterator-ctor  . ,Folded_repeat_iterator::constructor)
700         (start-moment-function .  ,Repeated_music::minimum_start)
701         (length . ,Repeated_music::folded_music_length)
702         (types . (general-music repeated-music folded-repeated-music))
703         ))
704     ))
705
706 (set! music-descriptions
707       (sort music-descriptions alist<?))
708
709 (define music-name-to-property-table (make-vector 59 '()))
710
711
712 ;; init hash table,
713 ;; transport description to an object property.
714 (set!
715  music-descriptions
716  (map (lambda (x)
717         (set-object-property! (car x)
718                               'music-description
719                               (cdr (assq 'description (cdr x))))
720         (let
721             ((l (cdr x)))
722           (set! l (assoc-set! l 'name (car x)))
723           (set! l (assq-remove!  l 'description))
724           (hashq-set! music-name-to-property-table (car x) l)
725           (cons (car x) l)
726           ))
727       music-descriptions))
728
729
730
731 (define-public (make-music-by-name x)
732   (if (not (symbol? x))
733       (error (format "Not a symbol: ~a" x)))
734   (let*
735       (
736        (props (hashq-ref music-name-to-property-table x '()))
737        (name (if (pair? props)
738                  (cdr (assoc 'internal-class-name props))
739                  (error "Can not find music object" x)))
740        )
741
742     (if (eq? props '())
743         (ly:warn (format "Could not find music type `~a'" x)))  
744     (ly:make-bare-music name props)
745     ))
746
747
748
749 (define-public (make-repeated-music name)
750   (let*
751       (
752        (handle (assoc
753                 name
754                 '(("volta" . VoltaRepeatedMusic)
755                   ("unfold" . UnfoldedRepeatedMusic)
756                   ("percent" . PercentRepeatedMusic)
757                   ("tremolo" . TremoloRepeatedMusic)
758                   ("fold" . FoldedRepeatedMusic)
759                   )))
760        (music-name
761         (if (pair? handle)
762             (cdr handle)
763             (begin
764               (ly:warn
765                (string-append "Unknown repeat type `" name
766                               "'\nSee music-types.scm for supported repeats"))
767               'VoltaRepeatedMusic)
768             )
769         )
770        )
771
772     (make-music-by-name music-name)
773     ))
774