]> git.donarmstrong.com Git - lilypond.git/blobdiff - scm/music-types.scm
* lily/part-combine-music.cc: removed file and class.
[lilypond.git] / scm / music-types.scm
index b127293ce381a9e18b83ecd3df8c9133e565a995..0c1d5fe5788408540f54a8d7ce5d69e7f40ddbb6 100644 (file)
 
 (define-public music-descriptions
   `(
+    (AbortEvent
+     . (
+       (description .  "Abort currently running spanners.")
+       (internal-class-name . "Request")
+       (span-type . "abort")
+       (types . (general-music event abort-event))
+       ))
     (ArpeggioEvent 
      . (
-       (name . "Arpeggio_req")
-       (types . (general-music event))
+       (description .  "Make an arpeggio on this note. Syntax:
+@var{note}-@code{\\arpeggio}")
+       (internal-class-name .  "Request")
+       (types . (general-music arpeggio-event event))
        ))
+
+    ;; todo: use articulation-event for slur as well.
+    ;; separate non articulation scripts  
     (ArticulationEvent
      . (
-       (name . "Articulation_req")
+       (description .  "")
+
+       (internal-class-name . "Request")
        (types . (general-music event articulation-event script-event))
        )) 
+       (AutoChangeMusic
+     . (
+       (description .  "")
+
+       (internal-class-name . "Music_wrapper")
+       (iterator-ctor . ,Auto_change_iterator::constructor)
+       (types . (general-music music-wrapper-music auto-change-instruction))
+       ))
+     (BarCheck
+      . (
+        (description .  "")
+        (internal-class-name . "Music")
+        (types . (general-music bar-check))
+        (iterator-ctor . ,Bar_check_iterator::constructor)
+        ))
     (BassFigureEvent
      . (
-       (name . "Bass_figure_req")
+       (description .  "")
+
+       (internal-class-name . "Request")
        (types . (general-music event rhythmic-event bass-figure-event))
-       ))  
+       ))
+    (BeamEvent
+     . (
+       (description .  "")
+
+       (internal-class-name . "Request")
+       (types . (general-music event beam-event span-event))
+       ))
     (BreakEvent
      . (
-       (name . "Break_req")
+       (description .  "")
 
-       (types . (general-music event))
-       )) 
+       (internal-class-name . "Request")
+       (types . (general-music break-event event))
+       ))
     (BreathingSignEvent
      . (
-       (name . "Breathing_sign_req")
+       (description .  "")
 
+       (internal-class-name . "Request")
        (types . (general-music event breathing-event))
        )) 
     (BusyPlayingEvent
      . (
-       (name . "Busy_playing_req")
+       (description .  "")
 
+       (internal-class-name . "Request")
        (types . (general-music event busy-playing-event))
        )) 
-    (ExtenderEvent
+    (ContextSpeccedMusic
+     . (
+       (description .  "")
+       (iterator-ctor . ,Context_specced_music_iterator::constructor)
+       (internal-class-name . "Music_wrapper")
+       (types . (context-specification general-music music-wrapper-music))
+       ))
+   (CrescendoEvent
+     . (
+       (description .  "")
+
+       (internal-class-name . "Request")
+       (types . (general-music dynamic-event crescendo-event event))
+       )) 
+    (DecrescendoEvent
      . (
-       (name . "Extender_req")
-       (types . (general-music event))
+       (description .  "")
+
+       (internal-class-name . "Request")
+       (types . (general-music dynamic-event decrescendo-event event))
+       )) 
+   (ExtenderEvent
+     . (
+       (description .  "")
+
+       (internal-class-name . "Request")
+       (types . (general-music extender-event event))
        ))   
     (GlissandoEvent
      . (
-       (name . "Glissando_req")
-       (types . (general-music event))
+       (description .  "")
+
+       (internal-class-name . "Request")
+       (types . (general-music glissando-event event))
        )) 
-   (GraceMusic
+    (GraceMusic
      . (
-       (name . "Grace_music")
+       (description .  "")
+
+       (internal-class-name . "Grace_music")
        (iterator-ctor . ,Grace_iterator::constructor)
        (types . (grace-music music-wrapper-music general-music))
        ))
    (HyphenEvent
      . (
-       (name . "Hyphen_req")
-       (types . (general-music event))
+       (description .  "")
+
+       (internal-class-name . "Request")
+       (types . (general-music hyphen-event event))
        ))   
     (KeyChangeEvent
      . (
-       (name . "Key_change_req")
-       (types . (general-music event))
+       (description .  "")
+
+       (internal-class-name . "Key_change_req")
+       (types . (general-music key-change-event event))
        )) 
-    (LyricEvent
+      (LyricCombineMusic
      . (
-       (name . "Lyric_req")
-       (types . (general-music rhythmic-event event))
-       )) 
+       (description .  "")
+
+       (internal-class-name . "Lyric_combine_music")
+       (types . (general-music lyric-combine-music))
+       (iterator-ctor . ,Lyric_combine_music_iterator::constructor)
+       ))
+
+  (LyricEvent
+     . (
+       (description .  "A lyric syllable. Must be entered in lyrics mode, i.e.
+@code{\\lyrics @{ twinkle4 twinkle4 @} } .")
+
+       (internal-class-name . "Request")
+       (types . (general-music rhythmic-event lyric-event event))
+       ))
+    (LigatureEvent
+     . (
+       (description .  "")
+
+       (internal-class-name . "Request")
+       (span-type . ligature)
+       (types . (general-music event span-event ligature-event))
+       ))
     (MarkEvent
      . (
-       (name . "Mark_req")
-       (types . (general-music event))
+       (description .  "")
+
+       (internal-class-name . "Request")
+       (types . (general-music mark-event event))
        ))  
     (MelismaEvent
      . (
-       (name . "Melisma_playing_req")
-       (types . (general-music span-event event))
+       (description .  "")
+
+       (internal-class-name . "Request")
+       (types . (general-music span-event melisma-playing-event event))
        )) 
-    (Melisma_playingEvent
+    (MelismaPlayingEvent
      . (
-       (name . "Melisma_req")
+       (description .  "")
+
+       (internal-class-name . "Request")
        (types . (general-music event))
        ))
+    (MultiMeasureRestEvent
+     . (
+       (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 . "Request")
+       (types . (general-music event multi-measure-rest-event))
+       ))
     (Music
      . (
-       (name . "Music")
+       (description .  "")
+
+       (internal-class-name . "Music")
        (types . (general-music)) 
        ))
     (NoteEvent
      . (
-       (name . "Note_req")
-       (types . (general-music event rhythmic-event melodic-event))
+       (description .  "")
+
+       (internal-class-name . "Request")
+       (types . (general-music event note-event rhythmic-event melodic-event))
        ))
-    (PorrectusEvent
+ (OverrideProperty
+      . (
+       (description .  "")
+
+        (internal-class-name . "Music")
+        (types . (general-music layout-instruction))
+        (iterator-ctor . ,     Push_property_iterator::constructor)
+        ))
+
+ (PartCombineMusic
      . (
-       (name . "Porrectus_req")
-       (types . (general-music event))
+       (description .  "")
+
+       (internal-class-name . "Simultaneous_music")
+       (types . (general-music part-combine-music))
+       (iterator-ctor . ,Part_combine_music_iterator::constructor)
+     ))
+      (PhrasingSlurEvent
+     . (
+       (description . "Start or end phrasing slur. Syntax NOTE \\(  and \\) NOTE")
+       (internal-class-name . "Request")
+       (types . (general-music span-event phrasing-slur-event slur-event))
+       ))
+    (PropertySet
+     . (
+       (description .  "")
+       (internal-class-name . "Music")
+       (types . (layout-instruction general-music))
+       (iterator-ctor . ,Property_iterator::constructor)
+       )
+     )
+     (PropertyUnset
+     . (
+       (description .  "")
+
+       (internal-class-name . "Music")
+       (types . (layout-instruction general-music))
+       (iterator-ctor . ,Property_unset_iterator::constructor)
+       )
+     )
+     (PorrectusEvent
+     . (
+       (description .  "")
+
+       (internal-class-name . "Request")
+       (types . (general-music porrectus-event event))
        ))
     (RepeatedMusic
      . (
-       (name . "Repeated_music")
+       (description .  "")
+
        (type .  repeated-music)
-       (types . (general-music repeat-music))
+       (types . (general-music repeated-music))
        ))
     (Request
      . (
-       (name . "Request")
+       (description .  "")
+
+       (internal-class-name . "Request")
        (types . (general-music event))
        )) 
     (RestEvent
      . (
-       (name . "Rest_req")
-       (types . (general-music event rhythmic-event ))
-       )) 
-    (RhythmicEvent
-     . (
-       (name . "Rhythmic_req")
-       (types . (general-music rhythmic-event  event))
+       (description .  "")
+
+       (internal-class-name . "Request")
+       (types . (general-music event rhythmic-event rest-event))
        )) 
     (SequentialMusic
      . (
-       (name . "Sequential_music")
+       (description .  "Music expressions concatenated. Syntax \\sequential @{..@} or simply @{..@} .")
+
+       (internal-class-name . "Sequential_music")
        (iterator-ctor . ,Sequential_music_iterator::constructor)
        (types . (general-music sequential-music))
        ))
     (SimultaneousMusic
      . (
-       (name . "Simultaneous_music")
+       (description .  "Music playing together. Syntax: \\simultaneous @{ .. @} or < .. >.")
+
+       (internal-class-name . "Simultaneous_music")
        (iterator-ctor . ,Simultaneous_music_iterator::constructor)
        
        (types . (general-music simultaneous-music))
        ))
-    (PropertySet
+    (SlurEvent
      . (
-       (name . "Music")
-       (types . (layout-instruction general-music))
-       (iterator-ctor . ,Property_iterator::constructor)
-       )
-     )
-     (PropertyUnset
-     . (
-       (name . "Music")
-       (types . (layout-instruction general-music))
-       (iterator-ctor . ,Property_unset_iterator::constructor)
-       )
-     )
-     (VoiceSeparator
-      . (
-        (name . "Music")
-        (types . (separator general-music))
-        ))
-     (BarCheck
-      . (
-        (name . "Music")
-        (types . (general-music bar-check))
-        (iterator-ctor . ,Bar_check_iterator::constructor)
-        ))
-     (OverrideProperty
-      . (
-        (name . "Music")
-        (types . (general-music layout-instruction))
-        (iterator-ctor . ,     Push_property_iterator::constructor)
-        ))
+       (description . "Start or end slur. Syntax NOTE(  and )NOTE")
+       (internal-class-name . "Request")
+       (types . (general-music span-event slur-event))
+       ))
 
-     (RevertProperty
+    (RevertProperty
       . (
-        (name . "Music")
+       (description .  "")
+
+        (internal-class-name . "Music")
         (types . (general-music layout-instruction))
         (iterator-ctor . ,     Pop_property_iterator::constructor)
         ))
      
     (OutputPropertySetMusic
      . (
-       (name . "Music")
+       (description .  "")
+
+       (internal-class-name . "Music")
        (iterator-ctor . ,Output_property_music_iterator::constructor)
        (types . (general-music layout-instruction))
        ))
-    (ContextSpeccedMusic
+   
+    (TextSpanEvent
      . (
-       (name . "Context_specced_music")
-       (types . (context-specification general-music music-wrapper-music))
-       ))
-    (AutoChangeMusic
-     . (
-       (name . "Music_wrapper")
-       (iterator-ctor . ,Auto_change_iterator::constructor)
-       (types . (general-music music-wrapper-music auto-change-instruction))
+       (description . "Start a text spanner like 8va.....|")
+       (internal-class-name . "Request")
+       (types . (general-music span-event text-span-event))
        ))
     (TranslatorChange
      . (
-       (name . "Music")
+       (description .  "")
+
+       (internal-class-name . "Music")
        (iterator-ctor . , Change_iterator::constructor)
        (types . (general-music translator-change-instruction))
        ))
-
     (TimeScaledMusic
      . (
-       (name . "Time_scaled_music")
+       (description .  "")
+       (internal-class-name . "Time_scaled_music")
        (iterator-ctor . ,Time_scaled_music_iterator::constructor)
        (types . (time-scaled-music music-wrapper-music general-music))
        ))
     (TransposedMusic
      . (
-       (name . "Transposed_music")
+       (description .  "")
+
+       (internal-class-name . "Transposed_music")
        (types . (music-wrapper-music general-music transposed-music))
        ))
 
     (UntransposableMusic
      . (
-       (name . "Untransposable_music")
+       (description .  "")
+
+       (internal-class-name . "Untransposable_music")
        (types . (music-wrapper-music general-music untransposable-music)) 
        ))
 
     (UnrelativableMusic
      . (
-       (name . "Un_relativable_music")
+       (description .  "")
+
+       (internal-class-name . "Un_relativable_music")
        (types . (music-wrapper-music general-music unrelativable-music))
        ))
 
     (RelativeOctaveMusic
      . (
-       (name . "Relative_octave_music")
-       (types . (music-wrapper-music general-music relative-octave-music))
-       ))
+       (description .  "")
 
-    (LyricCombineMusic
-     . (
-       (name . "Lyric_combine_music")
-       (types . (general-music lyric-combine-music))
-       (iterator-ctor . ,Lyric_combine_music_iterator::constructor)
+       (internal-class-name . "Relative_octave_music")
+       (types . (music-wrapper-music general-music relative-octave-music))
        ))
 
-    (PartCombineMusic
-     . (
-       (name . "Part_combine_music")
-       (types . (general-music part-combine-music))
-       (iterator-ctor . ,Part_combine_music_iterator::constructor)
-     ))
+  
     (RequestChord
      . (
-       (name . "Request_chord")
+       (description .  "")
+
+       (internal-class-name . "Request_chord")
        (iterator-ctor . ,Request_chord_iterator::constructor)
-       (types . (general-music simultaneous-music))
+       (types . (general-music request-chord simultaneous-music))
        )
      )
      
     (ScriptEvent
      . (
-       (name . "Script_req")
+       (description .  "")
 
+       (internal-class-name . "Request")
        (types . (general-music event))
        )) 
     (SkipEvent
      . (
-       (name . "Skip_req")
+       (description .  "")
 
-       (types . (general-music event rhythmic-event ))
+       (internal-class-name . "Request")
+       (types . (general-music event rhythmic-event skip-event))
        )) 
     (SpanEvent
      . (
-       (name . "Span_req")
+       (description .  "")
+
+       (internal-class-name . "Request")
        (types . (general-music event))
        )) 
+    (SustainPedalEvent
+      . (
+        (description . "")
+        (internal-class-name . "Request")
+        (types . (general-music pedal-event sustain-pedal-event))
+        ))
+    (SostenutoEvent
+      . (
+        (description . "")
+        (internal-class-name . "Request")
+        (types . (general-music pedal-event sostenuto-pedal-event))
+        ))
+    (UnaCordaEvent
+      . (
+        (description . "")
+        (internal-class-name . "Request")
+        (types . (general-music pedal-event una-corda-pedal-event))
+        ))
     (StringNumberEvent
      . (
-       (name . "String_number_req")
+       (description .  "")
 
-       (types . (general-music event))
+       (internal-class-name . "Request")
+       (types . (general-music string-number-event event))
        )) 
     (TempoEvent
      . (
-       (name . "Tempo_req")
+       (description .  "")
 
-       (types . (general-music event))
+       (internal-class-name . "Request")
+       (types . (general-music tempo-event event))
        )) 
     (TextScriptEvent
      . (
-       (name . "Text_script_req")
+       (description .  "")
+       (internal-class-name . "Request")
        (types . (general-music script-event text-script-event event))
        )) 
     (TieEvent
      . (
-       (name . "Tie_req")
+       (description .  "A tie. Entered as ~.")
+       (internal-class-name . "Request")
        (types . (general-music tie-event event))
        ))
-    ))
+    (TremoloEvent
+     . (
+       (description . "Un measured tremolo.")
+       (internal-class-name . "Request")
+       (types . (general-music event tremolo-event))
+       ))
+     (VoiceSeparator
+      . (
+       (description .  "")
 
+        (internal-class-name . "Music")
+        (types . (separator general-music))
+        ))
+
+     (VoltaRepeatedMusic
+      . (
+        (iterator-ctor . ,Volta_repeat_iterator::constructor)
+        (internal-class-name . "Repeated_music")
+        (description . "")
+        (start-moment-function .  ,Repeated_music::first_start)
+        (length . ,Repeated_music::volta_music_length)
+        (types . (general-music repeated-music volta-repeated-music))
+        ))
+      
+     (UnfoldedRepeatedMusic
+      . (
+        (iterator-ctor . ,Unfolded_repeat_iterator::constructor)
+        (description .  "")
+        (start-moment-function .  ,Repeated_music::first_start)
+        (internal-class-name . "Repeated_music")
+        (types . (general-music repeated-music unfolded-repeated-music))
+        (length . ,Repeated_music::unfolded_music_length)
+        ))
+     (PercentRepeatedMusic
+      . (
+        (internal-class-name . "Repeated_music")
+        (description .  "")
+        (iterator-ctor . ,Percent_repeat_iterator::constructor)
+        (start-moment-function .  ,Repeated_music::first_start)
+        (length . ,Repeated_music::unfolded_music_length)
+        (types . (general-music repeated-music percent-repeated-music))
+        ))
+     
+     (TremoloRepeteadMusic
+      . (
+        (iterator-ctor . ,Chord_tremolo_iterator::constructor)
+        (description .  "")
+        (internal-class-name . "Repeated_music")
+        (start-moment-function .  ,Repeated_music::first_start)
+
+        ;; the length of the repeat is handled by shifting the note logs
+        (length . ,Repeated_music::folded_music_length)
+        (types . (general-music repeated-music tremolo-repeated-music))
+        
+        ))
+     (FoldedRepeatedMusic
+      . (
+        (internal-class-name . "Repeated_music")
+        (description .  "")
+        (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))
+        ))
+     ))
+
+(set! music-descriptions
+      (sort music-descriptions alist<?))
+
+(define music-name-to-property-table (make-vector 59 '()))
+
+
+;; init hash table,
+;; transport description to an object property.
+(set!
+ music-descriptions
+ (map (lambda (x)
+       (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)
+         ))
+      music-descriptions))
 
 
-(define music-name-to-property-table (make-vector 59))
-(map (lambda (x)
-       (hashq-set! music-name-to-property-table (car x) (cdr x))
-       )
-     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 'name props)) "Music"))
+       (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 (old-span-request->event name)
+  (let
+      (
+       (entry   (assoc
+        name
+        '(
+          ("text" . TextSpanEvent)
+          ("decrescendo" . DecrescendoEvent)
+          ("crescendo" . CrescendoEvent)
+          ("Sustain" . SustainPedalEvent)
+          ("slur" . SlurEvent)
+          ("UnaCorda" . UnaCordaEvent)
+          ("Sostenuto" . SostenutoEvent)
+          )))
+       )
+    (if (eq? entry #f)
+       (error (format "Could not find span type ~a" name))
+       
+       (make-music-by-name (cdr entry))
+       )
+  ))
+
+(define-public (make-repeated-music name)
+  (let*
+      (
+       (handle (assoc
+               name
+               '(("volta" . VoltaRepeatedMusic)
+                 ("unfold" . UnfoldedRepeatedMusic)
+                 ("percent" . PercentRepeatedMusic)
+                 ("tremolo" . TremoloRepeteadMusic)
+                 ("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)
+    ))
+