]> git.donarmstrong.com Git - lilypond.git/blobdiff - ly/grace-init.ly
(drumNotes): 1.7 fixes
[lilypond.git] / ly / grace-init.ly
index 691498d1bd00aaa847793c49a961d364684b4c80..2e70c5ad8a2497c6eda9eee0c0f50bf92c173723 100644 (file)
@@ -1,45 +1,87 @@
+\version "1.7.18"
 
-#(define (grace-beam-space-function multiplicity)
-  (* (if (<= multiplicity 3) 0.816 0.844) 0.8))
-
+%%
+%% TODO: these definitions should be read and executed out dynamically
+%%  using an applycontext.
+%%
 
 startGraceMusic = {
     \property Voice.Stem \override  #'direction = #1
-    \property Voice.Stem \override #'length = #6
     \property Voice.Stem \override #'lengths = 
-        #(map (lambda (x) (* 0.8 x)) '(3.5 3.5 3.5 4.5 5.0))
+        #(map (lambda (x) (* 0.8 x)) '(2.5 2.5 3.0 4.0 5.0))
+    \property Voice.Stem \override #'stem-shorten = 
+        #'(0.4 0)
     \property Voice.Stem \override #'beamed-lengths =
-        #(map (lambda (x) (* 0.8 x)) '(0.0 2.5 2.0 1.5))
-    \property Voice.Stem \override #'beamed-minimum-lengths =
-        #(map (lambda (x) (* 0.8 x)) '(0.0 1.5 1.25 1.0))
-    \property Voice.Stem \override #'no-stem-extend = ##t
-    \property Voice.Stem \override #'flag-style  = #"grace"
+        #(map (lambda (x) (* 0.8 x)) '(3.26))
+    \property Voice.Stem \override #'beamed-minimum-free-lengths =
+        #(map (lambda (x) (* 0.8 x)) '(2.5 2.0 1.5))
+    \property Voice.Stem \override #'beamed-extreme-minimum-free-lengths =
+        #(map (lambda (x) (* 0.8 x)) '(1.83 1.5))
 
-    \property Voice.Beam \override #'space-function = #grace-beam-space-function
+    \property Voice.Stem \override #'no-stem-extend = ##t
+    \property Voice.Stem \override #'stroke-style  = #"grace"
     \property Voice.Beam \override #'thickness = #0.384
     
+    %% Instead of calling Beam::space_function, we should invoke
+    %% the previously active beam function...
+    \property Voice.Beam \override #'space-function =
+      #(lambda (beam mult) (* 0.8 (Beam::space_function beam mult)))
+
+    \property Voice.Beam \override #'position-callbacks =
+      #`(,Beam::least_squares
+        ,Beam::check_concave
+        ,Beam::slope_damping)
+    
     % Can't use Staff.fontSize, since time sigs, keys sigs, etc. will
     % be smaller as well.
 
     \property Voice.fontSize = #-2
-    \property Staff.Accidentals \override #'font-relative-size = #-2
+    \property Staff.Accidental \override #'font-relative-size = #-2
+    \property Voice.Slur \override #'direction = #-1
 }
 
+
+%% attention: order is significant: reversed from above
+%% (consistent ordering reduces memory usage.)
 stopGraceMusic = {
-    \property Voice.Beam \revert #'space-function
+    \property Voice.Slur \revert #'direction
+    \property Staff.Accidental \revert #'font-relative-size
     \property Voice.Beam \revert #'thickness
 
-    \property Voice.Stem \revert #'flag-style
+    \property Voice.Stem \revert #'stroke-style
     \property Voice.Stem \revert #'no-stem-extend
+    \property Voice.Stem \revert #'beamed-extreme-minimum-free-lengths
+    \property Voice.Stem \revert #'beamed-minimum-free-lengths
     \property Voice.Stem \revert #'beamed-lengths
-    \property Voice.Stem \revert #'beamed-minimum-lengths
-    \property Voice.Stem \revert #'lengths    
-    \property Voice.Stem \revert #'length
+    \property Voice.Stem \revert #'stem-shorten
+    \property Voice.Stem \revert #'lengths
     \property Voice.Stem \revert #'direction    
+    \property Voice.Beam \revert #'space-function
+    
+    \property Voice.Beam \revert #'position-callbacks
     
     % Can't use Staff.fontSize, since time sigs, keys sigs, etc. will
     % be smaller as well.
 
     \property Voice.fontSize \unset
-    \property Staff.LocalKeyItem \revert #'font-relative-size
 }
+
+#(define (add-to-grace-init context object prop val)
+   " Override context.object #'property before entering grace context,
+and restore afterwards. Use this to add settings to default grace notes.
+"
+   (set! stopGraceMusic
+    (make-sequential-music
+     (cons
+      (context-spec-music  (make-grob-property-revert object prop) context)
+      (ly:get-mus-property stopGraceMusic 'elements)
+     )))
+   (set! startGraceMusic
+    (make-sequential-music
+     (append
+      (ly:get-mus-property startGraceMusic 'elements)
+      (list (context-spec-music  (make-grob-property-set object prop val) context))
+      )
+     )))
+   
+