X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;ds=sidebyside;f=scm%2Fdefine-music-types.scm;h=4593aba5a8fc80172637f015e02fa99f238b8622;hb=48e056b5b40cca48470866ffa7a13ff1d4fa4963;hp=00f3d26f4b76d2fe6373da331911a4a37f486600;hpb=21a21ea186f0765523d4a192fb50a0ec5ccef00a;p=lilypond.git diff --git a/scm/define-music-types.scm b/scm/define-music-types.scm index 00f3d26f4b..4593aba5a8 100644 --- a/scm/define-music-types.scm +++ b/scm/define-music-types.scm @@ -2,17 +2,16 @@ ;;;; ;;;; source file of the GNU LilyPond music typesetter ;;;; -;;;; (c) 1998--2004 Han-Wen Nienhuys +;;;; (c) 1998--2005 Han-Wen Nienhuys ;;;; Jan Nieuwenhuizen - ;; TODO: should link back into user manual. (define-public music-descriptions `( (AbsoluteDynamicEvent . ( - (description . "Creates a dynamic mark. + (description . "Creates a dynamic mark. Syntax: @var{note}@code{\\x}, where x is one of \\ppp, \\pp, \\p, \\mp, \\mf, \\f, \\ff, \\fff.") @@ -57,7 +56,7 @@ Syntax: ;; separate non articulation scripts (ArticulationEvent . ( - (description . "Adds an articulation marking to a note. + (description . "Adds an articulation marking to a note. Syntax: @var{note}@code{X}@code{Y}, where X is a direction (up @code{^}, down @@ -93,7 +92,7 @@ is an articulation (such as @code{-.}, @code{->}, @code{\\tenuto}, )) (BeamEvent . ( - (description . "Starts or stops a beam. + (description . "Starts or stops a beam. Syntax for manual control: c8-[ c c-] c8") @@ -102,7 +101,7 @@ c8-[ c c-] c8") )) (BreakEvent . ( - (description . "Create a line break, Syntax: \\break or page break, Syntax: \\pagebreak.") + (description . "Create a line break, Syntax: \\break or page break, Syntax: \\pagebreak.") (internal-class-name . "Event") (types . (general-music break-event event)) @@ -139,7 +138,7 @@ Syntax @code{\\translator Staff = @var{new-id}}.") (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. + ; not a note-event, to ensure that Note_engraver doesn't eat it. (types . (general-music cluster-note-event melodic-event rhythmic-event event)) )) @@ -169,7 +168,7 @@ Syntax: @var{note}\\cr (internal-class-name . "Event") (types . (general-music dynamic-event decrescendo-event event)) )) - + (ExtenderEvent . ( (description . "Extend lyrics.") @@ -177,6 +176,18 @@ Syntax: @var{note}\\cr (internal-class-name . "Event") (types . (general-music extender-event event)) )) + + + (EventChord + . ( + (description . "Internally used to group a set of events.") + (internal-class-name . "Music") + (iterator-ctor . ,Event_chord_iterator::constructor) + (length-callback . ,Music_sequence::maximum_length_callback) + (to-relative-callback . ,Music_sequence::event_chord_relative_callback) + (types . (general-music event-chord simultaneous-music)) + )) + (FingerEvent . ( (description . "Specify what finger to use for this note.") @@ -199,8 +210,9 @@ Syntax: @var{note}\\cr (GraceMusic . ( (description . "Interpret the argument as grace notes. ") - - (internal-class-name . "Grace_music") + (internal-class-name . "Music_wrapper") + (start-callback . ,Grace_music::start_callback) + (length . ,(ly:make-moment 0 1)) (iterator-ctor . ,Grace_iterator::constructor) (types . (grace-music music-wrapper-music general-music)) )) @@ -230,7 +242,7 @@ Syntax: @var{note}\\cr Syntax: @code{\\key } @var{name} @var{scale}.") - (internal-class-name . "Key_change_ev") + (internal-class-name . "Event") (types . (general-music key-change-event event)) )) @@ -243,24 +255,24 @@ Syntax: @code{\\key } @var{name} @var{scale}.") (types . (general-music span-event ligature-event event)) )) - (LyricCombineMusic + (OldLyricCombineMusic . ( (description . "Align lyrics to the start of notes. +Syntax @var{\\oldaddlyrics }@var{music} @var{lyrics}.") -Syntax @var{\\addlyrics }@var{music} @var{lyrics}.") - - (internal-class-name . "Lyric_combine_music") + (internal-class-name . "Music") (types . (general-music lyric-combine-music)) + (length-callback . ,Lyric_combine_music::length_callback) + (start-callback . ,Music_sequence::first_start_callback) (iterator-ctor . ,Lyric_combine_music_iterator::constructor) )) - (NewLyricCombineMusic + (LyricCombineMusic . ( (description . "Align lyrics to the start of notes. - -Syntax @var{\\addlyrics }@var{music} @var{lyrics}.") +Syntax @var{\\lyricsto }@var{voicename} @var{lyrics}.") (internal-class-name . "Music") (length . ,(ly:make-moment 0 1)) (types . (general-music lyric-combine-music)) @@ -295,9 +307,7 @@ e.g. @code{\\mark \"A\"}.") . ( (description . "Start or stop a melisma. - - -Syntax:@code{c4\\melisma d\\melismaEnd}.") +Syntax: @code{c4\\melisma d\\melismaEnd}.") (internal-class-name . "Event") (types . (general-music melisma-span-event event)) )) @@ -312,6 +322,19 @@ Syntax (types . (general-music event rhythmic-event multi-measure-rest-event)) )) + (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.") + (internal-class-name . "Music") + (length-callback . ,Music_sequence::cumulative_length_callback) + (start-callback . ,Music_sequence::first_start_callback) + (iterator-ctor . ,Sequential_music_iterator::constructor) + (types . (general-music sequential-music)) + )) + (MultiMeasureTextEvent . ( (description . "Texts on mm rests. @@ -337,6 +360,19 @@ Syntax (types . (general-music event note-event rhythmic-event melodic-event)) )) + (OutputPropertySetMusic + . ( + (description . "Set grob properties in objects +individually. + +Syntax @code{\\outputproperty @var{predicate} @var{prop} += @var{val}}.") + + (internal-class-name . "Music") + (iterator-ctor . ,Output_property_music_iterator::constructor) + (types . (general-music layout-instruction)) + )) + (OverrideProperty . ( (description . "Extend the definition of a graphical object. @@ -346,7 +382,6 @@ SYNTAX @code{\\propery Foo.Bar \\override} @var{SYMBOL} = @var{VALUE} ") - (internal-class-name . "Music") (types . (general-music layout-instruction)) (iterator-ctor . , Push_property_iterator::constructor) @@ -355,8 +390,9 @@ SYNTAX . ( (description . "Combine two parts on a staff, either merged or as separate voices.") - - (internal-class-name . "Simultaneous_music") + (internal-class-name . "Music") + (length-callback . ,Music_sequence::maximum_length_callback) + (start-callback . ,Music_sequence::minimum_start_callback) (types . (general-music part-combine-music)) (iterator-ctor . ,Part_combine_iterator::constructor) )) @@ -373,15 +409,12 @@ Syntax NOTE \\( and \\) NOTE") . ( (description . "Set a context property. - - Syntax: @code{\\property @var{context}.@var{prop} = @var{scheme-val}}.") (internal-class-name . "Music") (types . (layout-instruction general-music)) (iterator-ctor . ,Property_iterator::constructor) - ) - ) - + )) + (PropertyUnset . ( (description . "Remove the definition of a context @code{\\property}.") @@ -389,8 +422,7 @@ Syntax: @code{\\property @var{context}.@var{prop} = @var{scheme-val}}.") (internal-class-name . "Music") (types . (layout-instruction general-music)) (iterator-ctor . ,Property_unset_iterator::constructor) - ) - ) + )) (PesOrFlexaEvent . ( @@ -405,14 +437,15 @@ goes down).") (QuoteMusic . ( (description . "Quote preprocessed snippets of music. ") - (internal-class-name . "Music_wrapper") ;; so we get Event::get_length (). - (iterator-ctor . ,New_quote_iterator::constructor) + (internal-class-name . "Music_wrapper") + (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") + (internal-class-name . "Music") + (to-relative-callback . ,Relative_octave_check::relative_callback) (types . (general-music relative-octave-check)) )) @@ -457,18 +490,9 @@ previously added property from a graphical object definition Syntax \\sequential @{..@} or simply @{..@} .") - (internal-class-name . "Sequential_music") - (iterator-ctor . ,Sequential_music_iterator::constructor) - (types . (general-music sequential-music)) - )) - - (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.") - (internal-class-name . "Sequential_music") + (internal-class-name . "Music") + (length-callback . ,Music_sequence::cumulative_length_callback) + (start-callback . ,Music_sequence::first_start_callback) (iterator-ctor . ,Sequential_music_iterator::constructor) (types . (general-music sequential-music)) )) @@ -501,8 +525,11 @@ SYNTAX @code{ \\simultaneous @{ .. @}} or < .. >.") - (internal-class-name . "Simultaneous_music") + (internal-class-name . "Music") (iterator-ctor . ,Simultaneous_music_iterator::constructor) + (start-callback . ,Music_sequence::minimum_start_callback) + (length-callback . ,Music_sequence::maximum_length_callback) + (to-relative-callback . ,Music_sequence::simultaneous_relative_callback) (types . (general-music simultaneous-music)) )) @@ -515,7 +542,13 @@ Syntax NOTE( and )NOTE") (internal-class-name . "Event") (types . (general-music span-event slur-event)) )) - + + (StaffSpanEvent + . ((description . "Start or stop a staff symbol.") + (internal-class-name . "Event") + (types . (general-music event span-event staff-span-event)) + )) + (StartPlayingEvent . ( (description . "Used internally to signal beginning of notes.") @@ -524,19 +557,6 @@ Syntax NOTE( and )NOTE") (types . (general-music event start-playing-event)) )) - (OutputPropertySetMusic - . ( - (description . "Set grob properties in objects -individually. - -Syntax @code{\\outputproperty @var{predicate} @var{prop} -= @var{val}}.") - - (internal-class-name . "Music") - (iterator-ctor . ,Output_property_music_iterator::constructor) - (types . (general-music layout-instruction)) - )) - (TextSpanEvent . ( (description . "Start a text spanner like 8va.....|") @@ -558,7 +578,7 @@ Syntax @code{\\outputproperty @var{predicate} @var{prop} Syntax @code{\\times @var{fraction} @var{music}}, e.g. @code{\\times 2/3 @{ ... @}} for triplets. ") - (internal-class-name . "Time_scaled_music") + (internal-class-name . "Music_wrapper") (iterator-ctor . ,Time_scaled_music_iterator::constructor) (types . (time-scaled-music music-wrapper-music general-music)) )) @@ -566,43 +586,27 @@ Syntax @code{\\times @var{fraction} @var{music}}, e.g. (TransposedMusic . ( (description . "Music that has been transposed.") - (internal-class-name . "Transposed_music") + (internal-class-name . "Music_wrapper") + (to-relative-callback . ,Relative_octave_music::no_relative_callback) (types . (music-wrapper-music general-music transposed-music)) )) - (UntransposableMusic - . ( - (description . "Music that can not be transposed.") - - (internal-class-name . "Untransposable_music") - (types . (music-wrapper-music general-music untransposable-music)) - )) - (UnrelativableMusic . ( (description . "Music that can not be converted from relative to absolute notation. For example, transposed music.") - (internal-class-name . "Un_relativable_music") + (to-relative-callback . ,Relative_octave_music::no_relative_callback) + (internal-class-name . "Music_wrapper") (types . (music-wrapper-music general-music unrelativable-music)) )) (RelativeOctaveMusic . ( (description . "Music that was entered in relative octave notation.") - - (internal-class-name . "Relative_octave_music") + (to-relative-callback . ,Relative_octave_music::relative_callback) + (internal-class-name . "Music_wrapper") (types . (music-wrapper-music general-music relative-octave-music)) )) - - (EventChord - . ( - (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)) - ) - ) - (ScriptEvent . ( (description . "Add an articulation mark to a note. ") @@ -620,11 +624,11 @@ does not create staffs or voices implicitly. Syntax: @code{\\skip }@var{duration}.") (internal-class-name . "Music") - (length . ,ly:music-duration-length) + (length-callback . ,ly:music-duration-length) (iterator-ctor . ,Simple_music_iterator::constructor) (types . (general-music event rhythmic-event skip-event)) )) - + (SkipEvent . ( (description . "Filler that takes up duration, but does not print anything. @@ -714,10 +718,10 @@ Syntax: @code{\\\\}") (VoltaRepeatedMusic . ( (iterator-ctor . ,Volta_repeat_iterator::constructor) - (internal-class-name . "Repeated_music") + (internal-class-name . "Music") (description . "") - (start-moment-function . ,Repeated_music::first_start) - (length . ,Repeated_music::volta_music_length) + (start-callback . ,Repeated_music::first_start) + (length-callback . ,Repeated_music::volta_music_length) (types . (general-music repeated-music volta-repeated-music)) )) @@ -725,18 +729,18 @@ Syntax: @code{\\\\}") . ( (iterator-ctor . ,Unfolded_repeat_iterator::constructor) (description . "") - (start-moment-function . ,Repeated_music::first_start) - (internal-class-name . "Repeated_music") + (start-callback . ,Repeated_music::first_start) + (internal-class-name . "Music") (types . (general-music repeated-music unfolded-repeated-music)) - (length . ,Repeated_music::unfolded_music_length) + (length-callback . ,Repeated_music::unfolded_music_length) )) (PercentRepeatedMusic . ( - (internal-class-name . "Repeated_music") + (internal-class-name . "Music") (description . "Repeats encoded by percents.") (iterator-ctor . ,Percent_repeat_iterator::constructor) - (start-moment-function . ,Repeated_music::first_start) - (length . ,Repeated_music::unfolded_music_length) + (start-callback . ,Repeated_music::first_start) + (length-callback . ,Repeated_music::unfolded_music_length) (types . (general-music repeated-music percent-repeated-music)) )) @@ -744,22 +748,22 @@ Syntax: @code{\\\\}") . ( (iterator-ctor . ,Chord_tremolo_iterator::constructor) (description . "Repeated notes denoted by tremolo beams.") - (internal-class-name . "Repeated_music") - (start-moment-function . ,Repeated_music::first_start) + (internal-class-name . "Music") + (start-callback . ,Repeated_music::first_start) ;; the length of the repeat is handled by shifting the note logs - (length . ,Repeated_music::folded_music_length) + (length-callback . ,Repeated_music::folded_music_length) (types . (general-music repeated-music tremolo-repeated-music)) )) (FoldedRepeatedMusic . ( - (internal-class-name . "Repeated_music") + (internal-class-name . "Music") (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) + (start-callback . ,Repeated_music::minimum_start) + (length-callback . ,Repeated_music::folded_music_length) (types . (general-music repeated-music folded-repeated-music)) )) )) @@ -769,7 +773,6 @@ Syntax: @code{\\\\}") (define music-name-to-property-table (make-vector 59 '())) - ;; init hash table, ;; transport description to an object property. (set! @@ -778,16 +781,14 @@ Syntax: @code{\\\\}") (set-object-property! (car x) 'music-description (cdr (assq 'description (cdr x)))) - (let - ((l (cdr x))) - (set! l (assoc-set! l 'name (car x))) - (set! l (assq-remove! l 'description)) - (hashq-set! music-name-to-property-table (car x) l) - (cons (car x) l) - )) + (let ((lst (cdr x))) + (set! lst (assoc-set! lst 'name (car x))) + (set! lst (assq-remove! lst 'description)) + (hashq-set! music-name-to-property-table (car x) lst) + (cons (car x) lst))) music-descriptions)) -(define-public (make-music name . music-properties) +(define-safe-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: @@ -796,10 +797,10 @@ and values. E.g: 'grob-property 'thickness 'grob-value (* 2 1.5))" (if (not (symbol? name)) - (error (format "Not a symbol: ~a" name))) + (ly:error (_ "symbol expected: ~S") name)) (let ((props (hashq-ref music-name-to-property-table name '()))) (if (not (pair? props)) - (error "Can not find music object" name)) + (ly:error (_ "can't find music object: ~S") 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)) @@ -810,7 +811,6 @@ and values. E.g: (set-props music-properties) m))) - (define-public (make-repeated-music name) (let* ((handle (assoc name '(("volta" . VoltaRepeatedMusic) ("unfold" . UnfoldedRepeatedMusic) @@ -820,7 +820,8 @@ and values. E.g: (music-name (if (pair? handle) (cdr handle) (begin - (ly:warn "Unknown repeat type `~S'\nSee music-types.scm for supported repeats" name) + (ly:warning (_ "unknown repeat type `~S'") name) + (ly:warning (_ "See music-types.scm for supported repeats")) 'VoltaRepeatedMusic)))) (make-music music-name)))