X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=scm%2Fdefine-music-types.scm;h=acb25a30952025aad92fb80d1bbe4144e16c1627;hb=1bb7659e935633c0bb6fb12aa750e5ee298651d2;hp=58ff4e01217fc700acee7782783f64941bf324f0;hpb=e88084591fb6af047ee5299e5f6a6aba4b1e4afc;p=lilypond.git diff --git a/scm/define-music-types.scm b/scm/define-music-types.scm index 58ff4e0121..acb25a3095 100644 --- a/scm/define-music-types.scm +++ b/scm/define-music-types.scm @@ -1,16 +1,20 @@ +;;;; define-music-types.scm -- +;;;; +;;;; source file of the GNU LilyPond music typesetter +;;;; +;;;; (c) 1998--2004 Han-Wen Nienhuys +;;;; Jan Nieuwenhuizen + + +;; TODO: should link back into user manual. (define-public music-descriptions `( - (AbortEvent - . ( - (description . "End the currently running spanners.") - (internal-class-name . "Event") - (span-type . "abort") - (types . (general-music event abort-event)) - )) (AbsoluteDynamicEvent . ( - (description . "Creates a dynamic mark. Syntax: @var{note}@code{\\x}, + (description . "Creates a dynamic mark. + +Syntax: @var{note}@code{\\x}, where x is one of \\ppp, \\pp, \\p, \\mp, \\mf, \\f, \\ff, \\fff.") (internal-class-name . "Event") (types . (general-music event dynamic-event absolute-dynamic-event)) @@ -27,9 +31,9 @@ where x is one of \\ppp, \\pp, \\p, \\mp, \\mf, \\f, \\ff, \\fff.") (description . " Call the argument with all current grobs during interpreting phase. -SYNTAX +Syntax -\applyoutput FUNC +\\applyoutput FUNC arguments to func are 1. the grob, 2. the originating context, 3. context where FUNC is called. @@ -41,9 +45,11 @@ arguments to func are 1. the grob, 2. the originating context, )) (ArpeggioEvent . ( - (description . "Make an arpeggio on this note. Syntax: + (description . "Make an arpeggio on this note. + +Syntax: @var{note}-@code{\\arpeggio}") - (internal-class-name . "Event") + (internal-class-name . "Event") (types . (general-music arpeggio-event event)) )) @@ -51,7 +57,9 @@ arguments to func are 1. the grob, 2. the originating context, ;; separate non articulation scripts (ArticulationEvent . ( - (description . "Adds an articulation marking to a note. Syntax: + (description . "Adds an articulation marking to a note. + +Syntax: @var{note}@code{X}@code{Y}, where X is a direction (up @code{^}, down @code{_}, or LilyPond's choice (no direction specified)), and where Y is an articulation (such as @code{-.}, @code{->}, @code{\\tenuto}, @@ -62,7 +70,7 @@ is an articulation (such as @code{-.}, @code{->}, @code{\\tenuto}, )) (AutoChangeMusic . ( - (description . "Used for making voices that switch between piano staves automatically.") + (description . "Used for making voices that switch between piano staves automatically.") (internal-class-name . "Music_wrapper") (iterator-ctor . ,Auto_change_iterator::constructor) @@ -78,28 +86,32 @@ is an articulation (such as @code{-.}, @code{->}, @code{\\tenuto}, )) (BassFigureEvent . ( - (description . "Print a bass-figure text") + (description . "Print a bass-figure text") (internal-class-name . "Event") (types . (general-music event rhythmic-event bass-figure-event)) )) (BeamEvent . ( - (description . "Starts or stops a beam. Syntax for manual control: + (description . "Starts or stops a beam. + +Syntax for manual control: c8-[ c c-] c8") (internal-class-name . "Event") (types . (general-music event beam-event span-event)) )) (BreakEvent . ( - (description . "Creates a line break. Syntax: \\break.") + (description . "Create a line break, Syntax: \\break or page break, Syntax: \\pagebreak.") (internal-class-name . "Event") (types . (general-music break-event event)) )) (BreathingSignEvent . ( - (description . "Creates a `breath mark' or `comma'. Syntax: + (description . "Creates a `breath mark' or `comma'. + +Syntax: @var{note}\\breathe.") (internal-class-name . "Event") @@ -107,22 +119,24 @@ c8-[ c c-] c8") )) (BusyPlayingEvent . ( - (description . "Used internally to signal beginning and ending of notes.") + (description . "Used internally to signal beginning and ending of notes.") (internal-class-name . "Event") (types . (general-music event busy-playing-event)) )) - (StartPlayingEvent + (ContextChange . ( - (description . "Used internally to signal beginning of notes.") + (description . "Change staffs in Piano staff. - (internal-class-name . "Event") - (types . (general-music event start-playing-event)) +Syntax @code{\\translator Staff = @var{new-id}}.") + (internal-class-name . "Music") + (iterator-ctor . , Change_iterator::constructor) + (types . (general-music translator-change-instruction)) )) - + (ClusterNoteEvent . ( - (description . "A note that is part of a cluster.") + (description . "A note that is part of a cluster.") (internal-class-name . "Event") ; not a note-event, to ensure that Note_engraver doesn't eat it. @@ -131,7 +145,7 @@ c8-[ c c-] c8") (ContextSpeccedMusic . ( - (description . "Interpret the argument music within a specific context.") + (description . "Interpret the argument music within a specific context.") (iterator-ctor . ,Context_specced_music_iterator::constructor) (internal-class-name . "Music_wrapper") (types . (context-specification general-music music-wrapper-music)) @@ -139,7 +153,9 @@ c8-[ c c-] c8") (CrescendoEvent . ( - (description . "Begins or ends a crescendo. Syntax: @var{note}\\cr + (description . "Begins or ends a crescendo. + +Syntax: @var{note}\\cr ... @var{note}\\rc (you can also use \\<, \\!, \\cresc, and \\endcresc. See the user manual for details.).") @@ -148,7 +164,7 @@ c8-[ c c-] c8") )) (DecrescendoEvent . ( - (description . "See @ref{CrescendoEvent}.") + (description . "See @ref{CrescendoEvent}.") (internal-class-name . "Event") (types . (general-music dynamic-event decrescendo-event event)) @@ -156,7 +172,7 @@ c8-[ c c-] c8") (ExtenderEvent . ( - (description . "Extend lyrics.") + (description . "Extend lyrics.") (internal-class-name . "Event") (types . (general-music extender-event event)) @@ -167,16 +183,22 @@ c8-[ c c-] c8") (internal-class-name . "Event") (types . (general-music fingering-event event)) )) + (BeamForbidEvent + . ( + (description . "Specify that a note may not auto-beamed ") + (internal-class-name . "Event") + (types . (general-music event beam-forbid-event)) + )) (GlissandoEvent . ( - (description . "Start a glissando on this note.") + (description . "Start a glissando on this note.") (internal-class-name . "Event") (types . (general-music glissando-event event)) )) (GraceMusic . ( - (description . "Interpret the argument as grace notes. ") + (description . "Interpret the argument as grace notes. ") (internal-class-name . "Grace_music") (iterator-ctor . ,Grace_iterator::constructor) @@ -188,9 +210,15 @@ c8-[ c c-] c8") (internal-class-name . "Event") (types . (general-music event note-grouping-event)) )) + (HarmonicEvent + . ( + (description . "Mark a note as harmonic") + (internal-class-name . "Event") + (types . (general-music event harmonic-event)) + )) (HyphenEvent . ( - (description . "A hyphen between lyric syllables.") + (description . "A hyphen between lyric syllables.") (internal-class-name . "Event") (types . (general-music hyphen-event event)) @@ -198,7 +226,9 @@ c8-[ c c-] c8") (KeyChangeEvent . ( - (description . "Change the key signature. Syntax: @code{\\key } @var{name} @var{scale}.") + (description . "Change the key signature. + +Syntax: @code{\\key } @var{name} @var{scale}.") (internal-class-name . "Key_change_ev") (types . (general-music key-change-event event)) @@ -206,7 +236,7 @@ c8-[ c c-] c8") (LigatureEvent . ( - (description . "(docme).") + (description . "(docme).") (internal-class-name . "Event") (span-type . ligature) @@ -215,7 +245,9 @@ c8-[ c c-] c8") (LyricCombineMusic . ( - (description . "Align lyrics to the start of notes. + (description . "Align lyrics to the start of notes. + + Syntax @var{\\addlyrics }@var{music} @var{lyrics}.") (internal-class-name . "Lyric_combine_music") @@ -225,7 +257,9 @@ Syntax @var{\\addlyrics }@var{music} @var{lyrics}.") (NewLyricCombineMusic . ( - (description . "Align lyrics to the start of notes. + (description . "Align lyrics to the start of notes. + + Syntax @var{\\addlyrics }@var{music} @var{lyrics}.") (internal-class-name . "Music") (length . ,(ly:make-moment 0 1)) @@ -235,7 +269,7 @@ Syntax @var{\\addlyrics }@var{music} @var{lyrics}.") (LyricEvent . ( - (description . "A lyric syllable. Must be entered in lyrics mode, i.e. + (description . "A lyric syllable. Must be entered in lyrics mode, i.e. @code{\\lyrics @{ twinkle4 twinkle4 @} } .") (internal-class-name . "Event") @@ -243,7 +277,9 @@ Syntax @var{\\addlyrics }@var{music} @var{lyrics}.") )) (MarkEvent . ( - (description . "Insert a rehearsal mark. Syntax: @code{\\mark} @var{marker}, + (description . "Insert a rehearsal mark. + +Syntax: @code{\\mark} @var{marker}, e.g. @code{\\mark \"A\"}.") (internal-class-name . "Event") @@ -251,14 +287,26 @@ e.g. @code{\\mark \"A\"}.") )) (MelismaPlayingEvent . ( - (description . "Used internally to signal melismas") + (description . "Used internally to signal melismas.") (internal-class-name . "Event") (types . (general-music melisma-playing-event event)) )) + (ManualMelismaEvent + . ( + (description . "Start or stop a melisma. + + + +Syntax:@code{c4\\melisma d\\melismaEnd}.") + (internal-class-name . "Event") + (types . (general-music melisma-span-event event)) + )) (MultiMeasureRestEvent . ( - (description . "Rests that may be compressed into Multi rests. Syntax + (description . "Rests that may be compressed into Multi rests. + +Syntax @code{R2.*4} for 4 measures in 3/4 time. Note the capital R.") (internal-class-name . "Event") (types . (general-music event rhythmic-event multi-measure-rest-event)) @@ -266,7 +314,9 @@ e.g. @code{\\mark \"A\"}.") (MultiMeasureTextEvent . ( - (description . "Texts on mm rests. Syntax + (description . "Texts on mm rests. + +Syntax @code{R-\\markup @{ \\roman \"bla\" @}}. Note the explicit font switch.") (internal-class-name . "Event") (types . (general-music event multi-measure-text-event)) @@ -274,14 +324,14 @@ e.g. @code{\\mark \"A\"}.") (Music . ( - (description . "Generic type for music expressions.") + (description . "Generic type for music expressions.") (internal-class-name . "Music") (types . (general-music)) )) (NoteEvent . ( - (description . "A note.") + (description . "A note.") (internal-class-name . "Event") (types . (general-music event note-event rhythmic-event melodic-event)) @@ -289,7 +339,7 @@ e.g. @code{\\mark \"A\"}.") (OverrideProperty . ( - (description . "Extend the definition of a graphical object. + (description . "Extend the definition of a graphical object. SYNTAX @@ -301,36 +351,29 @@ SYNTAX (types . (general-music layout-instruction)) (iterator-ctor . , Push_property_iterator::constructor) )) - (PartCombineMusic . ( - (description . "Combine two parts on a staff, either merged or -as separate voices.") - - (internal-class-name . "Simultaneous_music") - (types . (general-music part-combine-music)) - (iterator-ctor . ,Part_combine_music_iterator::constructor) - )) - (NewPartCombineMusic - . ( - (description . "Combine two parts on a staff, either merged or + (description . "Combine two parts on a staff, either merged or as separate voices.") (internal-class-name . "Simultaneous_music") (types . (general-music part-combine-music)) - (iterator-ctor . ,New_pc_iterator::constructor) + (iterator-ctor . ,Part_combine_iterator::constructor) )) - (PhrasingSlurEvent . ( - (description . "Start or end phrasing slur. Syntax NOTE \\( and \\) NOTE") + (description . "Start or end phrasing slur. + +Syntax NOTE \\( and \\) NOTE") (internal-class-name . "Event") (types . (general-music span-event phrasing-slur-event)) )) (PropertySet . ( - (description . "Set a context property. + (description . "Set a context property. + + Syntax: @code{\\property @var{context}.@var{prop} = @var{scheme-val}}.") (internal-class-name . "Music") @@ -341,7 +384,7 @@ Syntax: @code{\\property @var{context}.@var{prop} = @var{scheme-val}}.") (PropertyUnset . ( - (description . "Remove the definition of a context @code{\\property}.") + (description . "Remove the definition of a context @code{\\property}.") (internal-class-name . "Music") (types . (layout-instruction general-music)) @@ -351,7 +394,7 @@ Syntax: @code{\\property @var{context}.@var{prop} = @var{scheme-val}}.") (PesOrFlexaEvent . ( - (description . "Within a ligature, mark the previous and the + (description . "Within a ligature, mark the previous and the following note to form a pes (if melody goes up) or a flexa (if melody goes down).") @@ -359,6 +402,14 @@ goes down).") (types . (general-music pes-or-flexa-event event)) )) + (QuoteMusic + . ( + (description . "Quote preprocessed snippets of music. ") + (internal-class-name . "Event") ;; so we get Event::get_length (). + (iterator-ctor . ,Quote_iterator::constructor) + (types . (general-music)) + )) + (RelativeOctaveCheck . ((description . "Check if a pitch is in the correct octave.") (internal-class-name . "Relative_octave_check") @@ -367,15 +418,15 @@ goes down).") (RepeatedMusic . ( - (description . "Repeat music in different ways") + (description . "Repeat music in different ways") - (type . repeated-music) + (type . repeated-music) (types . (general-music repeated-music)) )) (Event . ( - (description . "Atomic music event.") + (description . "Atomic music event.") (internal-class-name . "Event") (types . (general-music event)) @@ -383,14 +434,29 @@ goes down).") (RestEvent . ( - (description . "A Rest. Syntax @code{r4} for a quarter rest. ") + (description . "A Rest. + +Syntax @code{r4} for a quarter rest. ") (internal-class-name . "Event") (types . (general-music event rhythmic-event rest-event)) )) + (RevertProperty + . ( + (description . "The opposite of @ref{OverrideProperty}: remove a +previously added property from a graphical object definition + ") + + (internal-class-name . "Music") + (types . (general-music layout-instruction)) + (iterator-ctor . , Pop_property_iterator::constructor) + )) + (SequentialMusic . ( - (description . "Music expressions concatenated. Syntax \\sequential @{..@} or simply @{..@} .") + (description . "Music expressions concatenated. + +Syntax \\sequential @{..@} or simply @{..@} .") (internal-class-name . "Sequential_music") (iterator-ctor . ,Sequential_music_iterator::constructor) @@ -399,16 +465,38 @@ goes down).") (MultiMeasureRestMusicGroup . ( - (description . "Like sequential-music, but specifically intended -to group start-mmrest, skip, stop-mmrest sequence. Syntax @code{R2.*5} for 5 measures in 3/4 time.") + (description . "Like sequential-music, but specifically intended +to group start-mmrest, skip, stop-mmrest sequence. + +Syntax @code{R2.*5} for 5 measures in 3/4 time.") (internal-class-name . "Sequential_music") (iterator-ctor . ,Sequential_music_iterator::constructor) (types . (general-music sequential-music)) )) + + (SoloOneEvent + . ( + (description . "Print Solo.1") + (internal-class-name . "Event") + (part-combine-status . solo1) + (types . (general-music event part-combine-event)) + )) + (SoloTwoEvent + . ( + (description . "Print Solo.2") + (internal-class-name . "Event") + (part-combine-status . solo2) + (types . (general-music event part-combine-event)) + )) + (UnisonoEvent + . ((description . "Print a2") + (internal-class-name . "Event") + (part-combine-status . unisono) + (types . (general-music event part-combine-event)))) (SimultaneousMusic . ( - (description . "Music playing together. + (description . "Music playing together. SYNTAX @@ -422,26 +510,27 @@ SYNTAX (SlurEvent . ( - (description . "Start or end slur. Syntax NOTE( and )NOTE") + (description . "Start or end slur. + +Syntax NOTE( and )NOTE") (internal-class-name . "Event") (types . (general-music span-event slur-event)) )) - (RevertProperty + (StartPlayingEvent . ( - (description . "The opposite of @ref{OverrideProperty}: remove a -previously added property from a graphical object definition - ") + (description . "Used internally to signal beginning of notes.") - (internal-class-name . "Music") - (types . (general-music layout-instruction)) - (iterator-ctor . , Pop_property_iterator::constructor) + (internal-class-name . "Event") + (types . (general-music event start-playing-event)) )) - + (OutputPropertySetMusic . ( - (description . "Set grob properties in objects -individually. Syntax @code{\\outputproperty @var{predicate} @var{prop} + (description . "Set grob properties in objects +individually. + +Syntax @code{\\outputproperty @var{predicate} @var{prop} = @var{val}}.") (internal-class-name . "Music") @@ -456,17 +545,18 @@ individually. Syntax @code{\\outputproperty @var{predicate} @var{prop} (types . (general-music span-event text-span-event)) )) - (TranslatorChange + (TrillSpanEvent . ( - (description . "Change staffs in Piano staff. Syntax @code{\\translator Staff = @var{new-id}}.") - (internal-class-name . "Music") - (iterator-ctor . , Change_iterator::constructor) - (types . (general-music translator-change-instruction)) + (description . "Start a trill spanner tr~~~") + (internal-class-name . "Event") + (types . (general-music span-event trill-span-event)) )) (TimeScaledMusic . ( - (description . "Multiply durations, as in tuplets. Syntax @code{\\times @var{fraction} @var{music}}, e.g. + (description . "Multiply durations, as in tuplets. + +Syntax @code{\\times @var{fraction} @var{music}}, e.g. @code{\\times 2/3 @{ ... @}} for triplets. ") (internal-class-name . "Time_scaled_music") @@ -476,14 +566,14 @@ individually. Syntax @code{\\outputproperty @var{predicate} @var{prop} (TransposedMusic . ( - (description . "Music that has been transposed.") + (description . "Music that has been transposed.") (internal-class-name . "Transposed_music") (types . (music-wrapper-music general-music transposed-music)) )) (UntransposableMusic . ( - (description . "Music that can not be transposed.") + (description . "Music that can not be transposed.") (internal-class-name . "Untransposable_music") (types . (music-wrapper-music general-music untransposable-music)) @@ -491,7 +581,7 @@ individually. Syntax @code{\\outputproperty @var{predicate} @var{prop} (UnrelativableMusic . ( - (description . "Music that can not be converted from relative to absolute notation. + (description . "Music that can not be converted from relative to absolute notation. For example, transposed music.") (internal-class-name . "Un_relativable_music") (types . (music-wrapper-music general-music unrelativable-music)) @@ -499,7 +589,7 @@ For example, transposed music.") (RelativeOctaveMusic . ( - (description . "Music that was entered in relative octave notation.") + (description . "Music that was entered in relative octave notation.") (internal-class-name . "Relative_octave_music") (types . (music-wrapper-music general-music relative-octave-music)) @@ -507,7 +597,7 @@ For example, transposed music.") (EventChord . ( - (description . "Internally used to group a set of events.") + (description . "Internally used to group a set of events.") (internal-class-name . "Event_chord") (iterator-ctor . ,Event_chord_iterator::constructor) (types . (general-music event-chord simultaneous-music)) @@ -516,15 +606,20 @@ For example, transposed music.") (ScriptEvent . ( - (description . "Add an articulation mark to a note. ") + (description . "Add an articulation mark to a note. ") (internal-class-name . "Event") (types . (general-music event)) )) - (NonEventSkip + (SkipMusic . ( - (description . "Filler that takes up duration, but does not print anything. This also does not create any event-accepting contexts. ") + (description . "Filler that takes up duration, does not print anything, and also +does not create staffs or voices implicitly. + + + +Syntax: @code{\\skip }@var{duration}.") (internal-class-name . "Music") (length . ,ly:music-duration-length) (iterator-ctor . ,Simple_music_iterator::constructor) @@ -533,15 +628,18 @@ For example, transposed music.") (SkipEvent . ( - (description . "Filler that takes up duration, but does not print anything.") + (description . "Filler that takes up duration, but does not print anything. + + + +Syntax: @code{s}@var{duration}") (internal-class-name . "Event") (types . (general-music event rhythmic-event skip-event)) )) - (SpanEvent . ( - (description . "Event for anything that is started at a different time than stopped.") + (description . "Event for anything that is started at a different time than stopped.") (internal-class-name . "Event") (types . (general-music event)) @@ -570,7 +668,9 @@ For example, transposed music.") (StringNumberEvent . ( - (description . "Specify on which string to play this note. Syntax: @code{\\@var{number}}.") + (description . "Specify on which string to play this note. + +Syntax: @code{\\@var{number}}.") (internal-class-name . "Event") (types . (general-music string-number-event event)) @@ -578,20 +678,20 @@ For example, transposed music.") (MetronomeChangeEvent . ( - (description . "Change tempo setting (in beats per minute).") + (description . "Change tempo setting (in beats per minute).") (internal-class-name . "Event") (types . (general-music metronome-change-event tempo-event event)) )) (TextScriptEvent . ( - (description . "") + (description . "") (internal-class-name . "Event") (types . (general-music script-event text-script-event event)) )) (TieEvent . ( - (description . "A tie. Entered as @var{note}-~.") + (description . "A tie. Entered as @var{note}-~.") (internal-class-name . "Event") (types . (general-music tie-event event)) )) @@ -604,7 +704,9 @@ For example, transposed music.") (VoiceSeparator . ( - (description . "Separate polyphonic voices in simultaneous music. Syntax: @code{\\\\}") + (description . "Separate polyphonic voices in simultaneous music. + +Syntax: @code{\\\\}") (internal-class-name . "Music") (types . (separator general-music)) @@ -623,7 +725,7 @@ For example, transposed music.") (UnfoldedRepeatedMusic . ( (iterator-ctor . ,Unfolded_repeat_iterator::constructor) - (description . "") + (description . "") (start-moment-function . ,Repeated_music::first_start) (internal-class-name . "Repeated_music") (types . (general-music repeated-music unfolded-repeated-music)) @@ -632,7 +734,7 @@ For example, transposed music.") (PercentRepeatedMusic . ( (internal-class-name . "Repeated_music") - (description . "Repeats encoded by percents.") + (description . "Repeats encoded by percents.") (iterator-ctor . ,Percent_repeat_iterator::constructor) (start-moment-function . ,Repeated_music::first_start) (length . ,Repeated_music::unfolded_music_length) @@ -642,7 +744,7 @@ For example, transposed music.") (TremoloRepeatedMusic . ( (iterator-ctor . ,Chord_tremolo_iterator::constructor) - (description . "Repeated notes denoted by tremolo beams.") + (description . "Repeated notes denoted by tremolo beams.") (internal-class-name . "Repeated_music") (start-moment-function . ,Repeated_music::first_start) @@ -655,8 +757,8 @@ For example, transposed music.") (FoldedRepeatedMusic . ( (internal-class-name . "Repeated_music") - (description . "Repeats with alternatives placed in parallel. ") - (iterator-ctor . ,Folded_repeat_iterator::constructor) + (description . "Repeats with alternatives placed in parallel. ") + (iterator-ctor . ,Folded_repeat_iterator::constructor) (start-moment-function . ,Repeated_music::minimum_start) (length . ,Repeated_music::folded_music_length) (types . (general-music repeated-music folded-repeated-music)) @@ -680,55 +782,46 @@ For example, transposed music.") (let ((l (cdr x))) (set! l (assoc-set! l 'name (car x))) - (set! l (assq-remove! l 'description)) + (set! l (assq-remove! l 'description)) (hashq-set! music-name-to-property-table (car x) l) (cons (car x) l) )) music-descriptions)) - - -(define-public (make-music-by-name x) - (if (not (symbol? x)) - (error (format "Not a symbol: ~a" x))) - (let* - ( - (props (hashq-ref music-name-to-property-table x '())) - (name (if (pair? props) - (cdr (assoc 'internal-class-name props)) - (error "Can not find music object" x))) - ) - - (if (eq? props '()) - (ly:warn (format "Could not find music type `~a'" x))) - (ly:make-bare-music name props) - )) - +(define-public (make-music name . music-properties) + "Create a music object of given name, and set its properties +according to `music-properties', a list of alterning property symbols +and values. E.g: + (make-music 'OverrideProperty + 'symbol 'Stem + 'grob-property 'thickness + 'grob-value (* 2 1.5))" + (if (not (symbol? name)) + (error (format "Not a symbol: ~a" name))) + (let ((props (hashq-ref music-name-to-property-table name '()))) + (if (not (pair? props)) + (error "Can not find music object" name)) + (let ((m (ly:make-bare-music (cdr (assoc 'internal-class-name props)) props))) + (define (set-props mus-props) + (if (and (not (null? mus-props)) + (not (null? (cdr mus-props)))) + (begin + (set! (ly:music-property m (car mus-props)) (cadr mus-props)) + (set-props (cddr mus-props))))) + (set-props music-properties) + m))) (define-public (make-repeated-music name) - (let* - ( - (handle (assoc - name - '(("volta" . VoltaRepeatedMusic) - ("unfold" . UnfoldedRepeatedMusic) - ("percent" . PercentRepeatedMusic) - ("tremolo" . TremoloRepeatedMusic) - ("fold" . FoldedRepeatedMusic) - ))) - (music-name - (if (pair? handle) - (cdr handle) - (begin - (ly:warn - (string-append "Unknown repeat type `" name - "'\nSee music-types.scm for supported repeats")) - 'VoltaRepeatedMusic) - ) - ) - ) - - (make-music-by-name music-name) - )) + (let* ((handle (assoc name '(("volta" . VoltaRepeatedMusic) + ("unfold" . UnfoldedRepeatedMusic) + ("percent" . PercentRepeatedMusic) + ("tremolo" . TremoloRepeatedMusic) + ("fold" . FoldedRepeatedMusic)))) + (music-name (if (pair? handle) + (cdr handle) + (begin + (ly:warn "Unknown repeat type `~S'\nSee music-types.scm for supported repeats" name) + 'VoltaRepeatedMusic)))) + (make-music music-name)))