]> git.donarmstrong.com Git - lilypond.git/blobdiff - scm/define-music-types.scm
Merge with master
[lilypond.git] / scm / define-music-types.scm
index fe31b3d40f2177fd9371495cbdb4760965e1c912..c421eefdf58690f562e9765d58e686441123e4df 100644 (file)
@@ -2,11 +2,24 @@
 ;;;;
 ;;;;  source file of the GNU LilyPond music typesetter
 ;;;; 
-;;;; (c) 1998--2006 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+;;;; (c) 1998--2006 Han-Wen Nienhuys <hanwen@xs4all.nl>
 ;;;;                Jan Nieuwenhuizen <janneke@gnu.org>
 
 ;; TODO: should link back into user manual.
 
+(define (mm-rest-child-list music)
+  "Generate events for multimeasure rests, to be used by the sequential-iterator"
+  (let ((location (ly:music-property music 'origin))
+       (duration (ly:music-property music 'duration)))
+    (list (make-music 'BarCheck
+                     'origin location)
+         (make-event-chord (cons (make-music 'MultiMeasureRestEvent
+                                             'origin location
+                                             'duration duration)
+                                 (ly:music-property music 'articulations)))
+         (make-music 'BarCheck
+                     'origin location))))
+
 (define-public music-descriptions
   `(
     (AbsoluteDynamicEvent
@@ -17,12 +30,19 @@ Syntax: @var{note}@code{\\x},
 where x is one of \\ppp, \\pp, \\p, \\mp, \\mf, \\f, \\ff, \\fff.")
        (types . (general-music event dynamic-event absolute-dynamic-event))
        ))
+
+    (AnnotateOutputEvent
+     . ((description . "Print an annotation of an output element.")
+       (types . (general-music event annotate-output-event))
+       ))
+       
     (ApplyContext
      . (
        (description . "Call the argument with the current context during interpreting phase")
        (types . (general-music apply-context))
        (iterator-ctor . ,ly:apply-context-iterator::constructor)
        ))
+    
     (ApplyOutputEvent
      . (
        (description . "
@@ -36,7 +56,7 @@ arguments to func are 1. the grob, 2. the originating context,
 3. context where FUNC is called.
 
 ")
-       (types . (general-music event layout-instruction))
+       (types . (general-music event apply-output-event))
        ))
     (ArpeggioEvent 
      . (
@@ -82,6 +102,7 @@ is an articulation (such as @code{-.}, @code{->}, @code{\\tenuto},
 
        (types . (general-music event rhythmic-event bass-figure-event))
        ))
+    
     (BeamEvent
      . (
        (description .  "Starts or stops a beam.  
@@ -90,13 +111,11 @@ Syntax for manual control:
 c8-[ c c-] c8")
        (types . (general-music event beam-event span-event))
        ))
-    (BreakEvent
-     . (
-       (description .  "Create a line break, Syntax: \\break or page break, Syntax: \\pagebreak.")
-       
-       (types . (general-music break-event event))
-       ))
-    (BreathingSignEvent
+    (BendAfterEvent
+     . ((description . "A drop/fall/doit jazz articulation")
+       (types . (general-music bend-after-event event))))
+
+    (BreathingEvent
      . (
        (description .  "Creates a `breath mark' or `comma'.  
 
@@ -105,12 +124,6 @@ Syntax:
 
        (types . (general-music event breathing-event))
        )) 
-    (BusyPlayingEvent
-     . (
-       (description .  "Used internally to signal beginning and ending of notes.")
-
-       (types . (general-music event busy-playing-event))
-       ))
     (ContextChange
      . (
        (description .  "Change staffs in Piano staff. 
@@ -144,13 +157,13 @@ Syntax: @var{note}\\cr
 ... @var{note}\\rc (you can also use \\<, \\!, \\cresc, and
 \\endcresc.  See the user manual for details.).")
 
-       (types . (general-music dynamic-event crescendo-event event))
+       (types . (general-music span-event span-dynamic-event crescendo-event event))
        )) 
     (DecrescendoEvent
      . (
        (description .  "See @ref{CrescendoEvent}.")
 
-       (types . (general-music dynamic-event decrescendo-event event))
+       (types . (general-music span-event span-dynamic-event decrescendo-event event))
        ))
     
     (ExtenderEvent
@@ -175,7 +188,8 @@ Syntax: @var{note}\\cr
        (types . (general-music event-chord simultaneous-music))
        ))
 
-    (FingerEvent
+    
+    (FingeringEvent
      . (
        (description . "Specify what finger to use for this note.")
        (types . (general-music fingering-event event))
@@ -240,7 +254,7 @@ Syntax: @var{note}\\laissezVibrer.")
     (LineBreakEvent
      . (
        (description .  "Allow, forbid or force a line break.")
-       (types . (general-music break-event event))
+       (types . (general-music line-break-event break-event event))
        ))
     
     (LyricCombineMusic
@@ -269,38 +283,21 @@ e.g. @code{\\mark \"A\"}.")
 
        (types . (general-music mark-event event))
        ))
-    (MelismaPlayingEvent
-     . (
-       (description .  "Used internally to signal melismas.")
-       (types . (general-music melisma-playing-event event))
-       ))
-    (ManualMelismaEvent
-     . (
-       (description .  "Start or stop a melisma.
-
-Syntax: @code{c4\\melisma d\\melismaEnd}.")
-       (types . (general-music melisma-span-event event))
-       ))
-    
-    (MultiMeasureRestEvent
+    (MultiMeasureRestMusic
      . (
        (description . "Rests that may be compressed into Multi rests. 
 
 Syntax
-@code{R2.*4} for 4 measures in 3/4 time. Note the capital R.")
-       (types . (general-music event rhythmic-event multi-measure-rest-event))
+@code{R2.*4} for 4 measures in 3/4 time.")
+       (iterator-ctor . ,ly:sequential-iterator::constructor)
+       (elements-callback . ,mm-rest-child-list)
+       (types . (general-music multi-measure-rest))
        ))
-    
-    (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 . ,ly:music-sequence::cumulative-length-callback)
-       (start-callback . ,ly:music-sequence::first-start-callback)
-       (iterator-ctor . ,ly:sequential-music-iterator::constructor)
-       (types . (general-music sequential-music))
+    (MultiMeasureRestEvent
+     . (
+       (description . "Used internally by MultiMeasureRestMusic to signal rests")
+       (types . (general-music event rhythmic-event multi-measure-rest-event))
        ))
     
     (MultiMeasureTextEvent
@@ -332,18 +329,18 @@ SYNTAX
 
 @code{\\override [ @var{Ctxt} . ] @var{Obj} @var{prop} = @var{val}}
 ")
-       (types . (general-music layout-instruction))
+       (types . (general-music layout-instruction-event override-property-event))
        (iterator-ctor . ,ly:push-property-iterator::constructor)
        ))
     (PageBreakEvent
      . (
        (description .  "Allow, forbid or force a page break.")
-       (types . (general-music break-event event))
+       (types . (general-music break-event page-break-event event))
        ))
     (PageTurnEvent
      . (
        (description .  "Allow, forbid or force a page turn.")
-       (types . (general-music break-event event))
+       (types . (general-music break-event page-turn-event event))
        ))
     (PartCombineMusic
      . (
@@ -367,7 +364,7 @@ Syntax NOTE \\(  and \\) NOTE")
        (description .  "Set a context property.
 
 Syntax: @code{\\property @var{context}.@var{prop} = @var{scheme-val}}.")
-       (types . (layout-instruction general-music))
+       (types . (layout-instruction-event general-music))
        (iterator-ctor . ,ly:property-iterator::constructor)
        ))
 
@@ -375,14 +372,14 @@ Syntax: @code{\\property @var{context}.@var{prop} = @var{scheme-val}}.")
      . (
        (description .  "Remove the definition of a context @code{\\property}.")
 
-       (types . (layout-instruction general-music))
+       (types . (layout-instruction-event general-music))
        (iterator-ctor . ,ly:property-unset-iterator::constructor)
        ))
 
     (PercentEvent
      . (
        (description .  "Used internally to signal percent repeats.")
-       (types . (general-music event percent-event))
+       (types . (general-music event percent-event rhythmic-event))
        ))
 
     (PesOrFlexaEvent
@@ -433,7 +430,7 @@ Syntax @code{r4} for a quarter rest. ")
 previously added property from a graphical object definition
  ")
 
-       (types . (general-music layout-instruction))
+       (types . (general-music layout-instruction-event))
        (iterator-ctor . ,      ly:pop-property-iterator::constructor)
        ))
 
@@ -445,7 +442,8 @@ Syntax \\sequential @{..@} or simply @{..@} .")
 
        (length-callback . ,ly:music-sequence::cumulative-length-callback)
        (start-callback . ,ly:music-sequence::first-start-callback)
-       (iterator-ctor . ,ly:sequential-music-iterator::constructor)
+       (elements-callback . ,(lambda (m) (ly:music-property m 'elements)))
+       (iterator-ctor . ,ly:sequential-iterator::constructor)
        (types . (general-music sequential-music))
        ))
 
@@ -453,18 +451,18 @@ Syntax \\sequential @{..@} or simply @{..@} .")
      . (
        (description . "Print Solo.1")
        (part-combine-status . solo1)
-       (types . (general-music event part-combine-event))
+       (types . (general-music event part-combine-event solo-one-event))
        ))
     (SoloTwoEvent
      . (
        (description . "Print Solo.2")
        (part-combine-status . solo2)
-       (types . (general-music event part-combine-event))
+       (types . (general-music event part-combine-event solo-two-event))
        ))
     (UnisonoEvent
      . ((description . "Print a2")
        (part-combine-status . unisono)
-       (types . (general-music event part-combine-event))))
+       (types . (general-music event part-combine-event unisono-event))))
     
     (SimultaneousMusic
      . (
@@ -496,13 +494,6 @@ Syntax NOTE(        and NOTE) ")
        (types . (general-music event span-event staff-span-event))
      ))
     
-    (StartPlayingEvent
-     . (
-       (description .  "Used internally to signal beginning of notes.")
-
-       (types . (general-music event start-playing-event))
-       ))
-    
     (TextSpanEvent
      . (
        (description . "Start a text spanner like 8va.....|")
@@ -538,10 +529,10 @@ Syntax @code{\\times @var{fraction} @var{music}}, e.g.
        (types . (time-scaled-music music-wrapper-music general-music))
        ))
 
-    (TupletEvent
+    (TupletSpanEvent
      . (
        (description .  "Used internally to signal where tuplet brackets start and stop.")
-       (types . (tuplet-spanner-event span-event event general-music))
+       (types . (tuplet-span-event span-event event general-music))
        ))
 
     (UnrelativableMusic
@@ -608,19 +599,19 @@ Syntax: @code{s}@var{duration}")
     (SustainEvent
      . (
        (description . "Depress or release sustain pedal. ")
-       (types . (general-music event pedal-event sustain-pedal-event))
+       (types . (general-music event pedal-event sustain-event))
        ))
     
     (SostenutoEvent
      . (
        (description . "Depress or release sostenuto pedal. ")
-       (types . (general-music event pedal-event sostenuto-pedal-event))
+       (types . (general-music event pedal-event sostenuto-event))
        ))
     
     (UnaCordaEvent
      . (
        (description . "Depress or release una-corda pedal.")
-       (types . (general-music event pedal-event una-corda-pedal-event))
+       (types . (general-music event pedal-event una-corda-event))
        ))
     
     (StringNumberEvent
@@ -632,11 +623,14 @@ Syntax: @code{\\@var{number}}.")
        (types . (general-music string-number-event event))
        )) 
 
-    (MetronomeChangeEvent
+    (StrokeFingerEvent
      . (
-       (description .  "Change tempo setting (in beats per minute).")
-       (types . (general-music metronome-change-event tempo-event event))
-       ))
+       (description .  "Specify with which finger to pluck a string. 
+
+Syntax: @code{\\rightHandFinger @var{text}}.")
+
+       (types . (general-music stroke-finger-event event))
+       )) 
     
     (TextScriptEvent
      . (
@@ -749,7 +743,7 @@ and values. E.g:
       (ly:error (_ "symbol expected: ~S") name))
   (let ((props (hashq-ref music-name-to-property-table name '())))
     (if (not (pair? props))
-       (ly:error (_ "can't find music object: ~S") name))
+       (ly:error (_ "cannot find music object: ~S") name))
     (let ((m (ly:make-music props)))
       (define (set-props mus-props)
        (if (and (not (null? mus-props))