X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=scm%2Fdefine-music-types.scm;h=37364c85acdaed804dda661ea4c2c815aa7c12eb;hb=5e24aa455cac67a7e7b42a0539fcbd8c235417bf;hp=fe790ec6a2ae0a02a1351a846d4a95ee388e28c9;hpb=4034396f1e07d5453d81103532bcc2969e131b92;p=lilypond.git diff --git a/scm/define-music-types.scm b/scm/define-music-types.scm index fe790ec6a2..37364c85ac 100644 --- a/scm/define-music-types.scm +++ b/scm/define-music-types.scm @@ -2,7 +2,7 @@ ;;;; ;;;; 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. @@ -15,13 +15,11 @@ 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)) )) (ApplyContext . ( (description . "Call the argument with the current context during interpreting phase") - (internal-class-name . "Music") (types . (general-music apply-context)) (iterator-ctor . ,Apply_context_iterator::constructor) )) @@ -38,7 +36,6 @@ arguments to func are 1. the grob, 2. the originating context, 3. context where FUNC is called. ") - (internal-class-name . "Event") (iterator-ctor . ,Output_property_music_iterator::constructor) (types . (general-music layout-instruction)) )) @@ -48,7 +45,6 @@ arguments to func are 1. the grob, 2. the originating context, Syntax: @var{note}-@code{\\arpeggio}") - (internal-class-name . "Event") (types . (general-music arpeggio-event event)) )) @@ -64,22 +60,20 @@ Syntax: is an articulation (such as @code{-.}, @code{->}, @code{\\tenuto}, @code{\\downbow}). See the user manual for details.") - (internal-class-name . "Event") (types . (general-music event articulation-event script-event)) )) (AutoChangeMusic . ( (description . "Used for making voices that switch between piano staves automatically.") - - (internal-class-name . "Music_wrapper") (iterator-ctor . ,Auto_change_iterator::constructor) + (start-callback . ,Music_wrapper::start_callback) + (length-callback . ,Music_wrapper::length_callback) (types . (general-music music-wrapper-music auto-change-instruction)) )) (BarCheck . ( (description . "Check whether this music coincides with the start of the measure.") - (internal-class-name . "Music") (types . (general-music bar-check)) (iterator-ctor . ,Bar_check_iterator::constructor) )) @@ -87,7 +81,6 @@ is an articulation (such as @code{-.}, @code{->}, @code{\\tenuto}, . ( (description . "Print a bass-figure text") - (internal-class-name . "Event") (types . (general-music event rhythmic-event bass-figure-event)) )) (BeamEvent @@ -96,14 +89,12 @@ is an articulation (such as @code{-.}, @code{->}, @code{\\tenuto}, Syntax for manual control: c8-[ c c-] c8") - (internal-class-name . "Event") (types . (general-music event beam-event span-event)) )) (BreakEvent . ( (description . "Create a line break, Syntax: \\break or page break, Syntax: \\pagebreak.") - (internal-class-name . "Event") (types . (general-music break-event event)) )) (BreathingSignEvent @@ -113,14 +104,12 @@ c8-[ c c-] c8") Syntax: @var{note}\\breathe.") - (internal-class-name . "Event") (types . (general-music event breathing-event)) )) (BusyPlayingEvent . ( (description . "Used internally to signal beginning and ending of notes.") - (internal-class-name . "Event") (types . (general-music event busy-playing-event)) )) (ContextChange @@ -128,7 +117,6 @@ Syntax: (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)) )) @@ -136,7 +124,6 @@ Syntax @code{\\translator Staff = @var{new-id}}.") (ClusterNoteEvent . ( (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. (types . (general-music cluster-note-event melodic-event rhythmic-event event)) @@ -146,7 +133,8 @@ Syntax @code{\\translator Staff = @var{new-id}}.") . ( (description . "Interpret the argument music within a specific context.") (iterator-ctor . ,Context_specced_music_iterator::constructor) - (internal-class-name . "Music_wrapper") + (length-callback . ,Music_wrapper::length_callback) + (start-callback . ,Music_wrapper::start_callback) (types . (context-specification general-music music-wrapper-music)) )) @@ -158,14 +146,12 @@ Syntax: @var{note}\\cr ... @var{note}\\rc (you can also use \\<, \\!, \\cresc, and \\endcresc. See the user manual for details.).") - (internal-class-name . "Event") (types . (general-music dynamic-event crescendo-event event)) )) (DecrescendoEvent . ( (description . "See @ref{CrescendoEvent}.") - (internal-class-name . "Event") (types . (general-music dynamic-event decrescendo-event event)) )) @@ -173,32 +159,38 @@ Syntax: @var{note}\\cr . ( (description . "Extend lyrics.") - (internal-class-name . "Event") (types . (general-music extender-event event)) )) + + + (EventChord + . ( + (description . "Internally used to group a set of events.") + (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.") - (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.") - (internal-class-name . "Event") (types . (general-music glissando-event event)) )) (GraceMusic . ( (description . "Interpret the argument as grace notes. ") - (internal-class-name . "Music_wrapper") (start-callback . ,Grace_music::start_callback) (length . ,(ly:make-moment 0 1)) (iterator-ctor . ,Grace_iterator::constructor) @@ -207,20 +199,17 @@ Syntax: @var{note}\\cr (NoteGroupingEvent . ( (description . "Start or stop grouping brackets.") - (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.") - (internal-class-name . "Event") (types . (general-music hyphen-event event)) )) @@ -230,7 +219,6 @@ Syntax: @var{note}\\cr Syntax: @code{\\key } @var{name} @var{scale}.") - (internal-class-name . "Key_change_ev") (types . (general-music key-change-event event)) )) @@ -238,30 +226,27 @@ Syntax: @code{\\key } @var{name} @var{scale}.") . ( (description . "(docme).") - (internal-class-name . "Event") (span-type . ligature) (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") (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}.") - (internal-class-name . "Music") +Syntax @var{\\lyricsto }@var{voicename} @var{lyrics}.") (length . ,(ly:make-moment 0 1)) (types . (general-music lyric-combine-music)) (iterator-ctor . ,New_lyric_combine_music_iterator::constructor) @@ -272,7 +257,6 @@ Syntax @var{\\addlyrics }@var{music} @var{lyrics}.") (description . "A lyric syllable. Must be entered in lyrics mode, i.e. @code{\\lyrics @{ twinkle4 twinkle4 @} } .") - (internal-class-name . "Event") (types . (general-music rhythmic-event lyric-event event)) )) (MarkEvent @@ -282,13 +266,11 @@ Syntax @var{\\addlyrics }@var{music} @var{lyrics}.") Syntax: @code{\\mark} @var{marker}, e.g. @code{\\mark \"A\"}.") - (internal-class-name . "Event") (types . (general-music mark-event event)) )) (MelismaPlayingEvent . ( (description . "Used internally to signal melismas.") - (internal-class-name . "Event") (types . (general-music melisma-playing-event event)) )) (ManualMelismaEvent @@ -296,7 +278,6 @@ e.g. @code{\\mark \"A\"}.") (description . "Start or stop a melisma. Syntax: @code{c4\\melisma d\\melismaEnd}.") - (internal-class-name . "Event") (types . (general-music melisma-span-event event)) )) @@ -306,17 +287,27 @@ Syntax: @code{c4\\melisma d\\melismaEnd}.") 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)) )) + (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.") + (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. Syntax @code{R-\\markup @{ \\roman \"bla\" @}}. Note the explicit font switch.") - (internal-class-name . "Event") (types . (general-music event multi-measure-text-event)) )) @@ -324,17 +315,27 @@ Syntax . ( (description . "Generic type for music expressions.") - (internal-class-name . "Music") (types . (general-music)) )) (NoteEvent . ( (description . "A note.") - (internal-class-name . "Event") (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}}.") + + (iterator-ctor . ,Output_property_music_iterator::constructor) + (types . (general-music layout-instruction)) + )) + (OverrideProperty . ( (description . "Extend the definition of a graphical object. @@ -344,7 +345,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) )) @@ -352,7 +352,6 @@ SYNTAX . ( (description . "Combine two parts on a staff, either merged or as separate voices.") - (internal-class-name . "Simultaneous_music") (length-callback . ,Music_sequence::maximum_length_callback) (start-callback . ,Music_sequence::minimum_start_callback) (types . (general-music part-combine-music)) @@ -363,7 +362,6 @@ as separate voices.") (description . "Start or end phrasing slur. Syntax NOTE \\( and \\) NOTE") - (internal-class-name . "Event") (types . (general-music span-event phrasing-slur-event)) )) @@ -372,7 +370,6 @@ 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) )) @@ -381,7 +378,6 @@ Syntax: @code{\\property @var{context}.@var{prop} = @var{scheme-val}}.") . ( (description . "Remove the definition of a context @code{\\property}.") - (internal-class-name . "Music") (types . (layout-instruction general-music)) (iterator-ctor . ,Property_unset_iterator::constructor) )) @@ -392,21 +388,19 @@ Syntax: @code{\\property @var{context}.@var{prop} = @var{scheme-val}}.") following note to form a pes (if melody goes up) or a flexa (if melody goes down).") - (internal-class-name . "Event") (types . (general-music pes-or-flexa-event event)) )) (QuoteMusic . ( (description . "Quote preprocessed snippets of music. ") - (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") + (to-relative-callback . ,Relative_octave_check::relative_callback) (types . (general-music relative-octave-check)) )) @@ -421,7 +415,6 @@ goes down).") . ( (description . "Atomic music event.") - (internal-class-name . "Event") (types . (general-music event)) )) @@ -431,7 +424,6 @@ goes down).") Syntax @code{r4} for a quarter rest. ") - (internal-class-name . "Event") (types . (general-music event rhythmic-event rest-event)) )) (RevertProperty @@ -440,7 +432,6 @@ Syntax @code{r4} for a quarter rest. ") previously added property from a graphical object definition ") - (internal-class-name . "Music") (types . (general-music layout-instruction)) (iterator-ctor . , Pop_property_iterator::constructor) )) @@ -451,20 +442,6 @@ previously added property from a graphical object definition Syntax \\sequential @{..@} or simply @{..@} .") - (internal-class-name . "Sequential_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)) - )) - - (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") (length-callback . ,Music_sequence::cumulative_length_callback) (start-callback . ,Music_sequence::first_start_callback) (iterator-ctor . ,Sequential_music_iterator::constructor) @@ -474,20 +451,17 @@ Syntax @code{R2.*5} for 5 measures in 3/4 time.") (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)))) @@ -499,10 +473,10 @@ SYNTAX @code{ \\simultaneous @{ .. @}} or < .. >.") - (internal-class-name . "Simultaneous_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)) )) @@ -512,42 +486,30 @@ SYNTAX (description . "Start or end slur. Syntax NOTE( and )NOTE") - (internal-class-name . "Event") (types . (general-music span-event slur-event)) )) - + + (StaffSpanEvent + . ((description . "Start or stop a staff symbol.") + (types . (general-music event span-event staff-span-event)) + )) + (StartPlayingEvent . ( (description . "Used internally to signal beginning of notes.") - (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} -= @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.....|") - (internal-class-name . "Event") (types . (general-music span-event text-span-event)) )) (TrillSpanEvent . ( (description . "Start a trill spanner tr~~~") - (internal-class-name . "Event") (types . (general-music span-event trill-span-event)) )) @@ -558,7 +520,8 @@ 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 . "Music_wrapper") + (length-callback . ,Music_wrapper::length_callback) + (start-callback . ,Music_wrapper::start_callback) (iterator-ctor . ,Time_scaled_music_iterator::constructor) (types . (time-scaled-music music-wrapper-music general-music)) )) @@ -566,49 +529,36 @@ Syntax @code{\\times @var{fraction} @var{music}}, e.g. (TransposedMusic . ( (description . "Music that has been transposed.") - (internal-class-name . "Transposed_music") + (iterator-ctor . ,Music_wrapper_iterator::constructor) + (start-callback . ,Music_wrapper::start_callback) + (length-callback . ,Music_wrapper::length_callback) + (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) + (iterator-ctor . ,Music_wrapper_iterator::constructor) + (length-callback . ,Music_wrapper::length_callback) (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) + (iterator-ctor . ,Music_wrapper_iterator::constructor) + (length-callback . ,Music_wrapper::length_callback) + (start-callback . ,Music_wrapper::start_callback) (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) - (length-callback . ,Music_sequence::maximum_length_callback) - (types . (general-music event-chord simultaneous-music)) - ) - ) - (ScriptEvent . ( (description . "Add an articulation mark to a note. ") - (internal-class-name . "Event") (types . (general-music event)) )) @@ -620,7 +570,6 @@ does not create staffs or voices implicitly. Syntax: @code{\\skip }@var{duration}.") - (internal-class-name . "Music") (length-callback . ,ly:music-duration-length) (iterator-ctor . ,Simple_music_iterator::constructor) (types . (general-music event rhythmic-event skip-event)) @@ -634,35 +583,30 @@ Syntax: @code{\\skip }@var{duration}.") 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.") - (internal-class-name . "Event") (types . (general-music event)) )) (SustainEvent . ( (description . "Depress or release sustain pedal. ") - (internal-class-name . "Event") (types . (general-music pedal-event sustain-pedal-event)) )) (SostenutoEvent . ( (description . "Depress or release sostenuto pedal. ") - (internal-class-name . "Event") (types . (general-music pedal-event sostenuto-pedal-event)) )) (UnaCordaEvent . ( (description . "Depress or release una-corda pedal.") - (internal-class-name . "Event") (types . (general-music pedal-event una-corda-pedal-event)) )) @@ -672,33 +616,28 @@ Syntax: @code{s}@var{duration}") Syntax: @code{\\@var{number}}.") - (internal-class-name . "Event") (types . (general-music string-number-event event)) )) (MetronomeChangeEvent . ( (description . "Change tempo setting (in beats per minute).") - (internal-class-name . "Event") (types . (general-music metronome-change-event tempo-event event)) )) (TextScriptEvent . ( (description . "") - (internal-class-name . "Event") (types . (general-music script-event text-script-event event)) )) (TieEvent . ( (description . "A tie. Entered as @var{note}-~.") - (internal-class-name . "Event") (types . (general-music tie-event event)) )) (TremoloEvent . ( (description . "Un measured tremolo.") - (internal-class-name . "Event") (types . (general-music event tremolo-event)) )) @@ -708,14 +647,12 @@ Syntax: @code{\\@var{number}}.") Syntax: @code{\\\\}") - (internal-class-name . "Music") (types . (separator general-music)) )) (VoltaRepeatedMusic . ( (iterator-ctor . ,Volta_repeat_iterator::constructor) - (internal-class-name . "Repeated_music") (description . "") (start-callback . ,Repeated_music::first_start) (length-callback . ,Repeated_music::volta_music_length) @@ -727,13 +664,11 @@ Syntax: @code{\\\\}") (iterator-ctor . ,Unfolded_repeat_iterator::constructor) (description . "") (start-callback . ,Repeated_music::first_start) - (internal-class-name . "Repeated_music") (types . (general-music repeated-music unfolded-repeated-music)) (length-callback . ,Repeated_music::unfolded_music_length) )) (PercentRepeatedMusic . ( - (internal-class-name . "Repeated_music") (description . "Repeats encoded by percents.") (iterator-ctor . ,Percent_repeat_iterator::constructor) (start-callback . ,Repeated_music::first_start) @@ -745,7 +680,6 @@ Syntax: @code{\\\\}") . ( (iterator-ctor . ,Chord_tremolo_iterator::constructor) (description . "Repeated notes denoted by tremolo beams.") - (internal-class-name . "Repeated_music") (start-callback . ,Repeated_music::first_start) ;; the length of the repeat is handled by shifting the note logs @@ -756,7 +690,6 @@ Syntax: @code{\\\\}") (FoldedRepeatedMusic . ( - (internal-class-name . "Repeated_music") (description . "Repeats with alternatives placed in parallel. ") (iterator-ctor . ,Folded_repeat_iterator::constructor) (start-callback . ,Repeated_music::minimum_start) @@ -785,7 +718,7 @@ Syntax: @code{\\\\}") (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: @@ -794,11 +727,11 @@ 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)) - (let ((m (ly:make-bare-music (cdr (assoc 'internal-class-name props)) props))) + (ly:error (_ "can't find music object: ~S") name)) + (let ((m (ly:make-music props))) (define (set-props mus-props) (if (and (not (null? mus-props)) (not (null? (cdr mus-props)))) @@ -817,7 +750,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)))