]> git.donarmstrong.com Git - lilypond.git/blobdiff - scm/music-functions.scm
check for cyclic dependencies in pure Y-offset stuff
[lilypond.git] / scm / music-functions.scm
index 681c2c7b082bcc6719601d03f054e9f72aeaab50..928eaf71692a5cf06c4f58fd480e3f7c290fab22 100644 (file)
@@ -351,6 +351,17 @@ i.e.  this is not an override"
                                             (if (odd? n) -1 1)))
         direction-polyphonic-grobs)
     (list
+     (make-property-set 'graceSettings
+                       ;; TODO: take this from voicedGraceSettings or similar.
+                       '((Voice Stem font-size -3)
+                         (Voice NoteHead font-size -3)
+                         (Voice Dots font-size -3)
+                         (Voice Stem length-fraction 0.8)
+                         (Voice Stem no-stem-extend #t)
+                         (Voice Beam thickness 0.384)
+                         (Voice Beam length-fraction 0.8)
+                         (Voice Accidental font-size -4)))
+    
      (make-grob-property-set 'NoteColumn 'horizontal-shift (quotient n 2))
      (make-grob-property-set 'MultiMeasureRest 'staff-position (if (odd? n) -4 4)))))) 
 
@@ -359,8 +370,9 @@ i.e.  this is not an override"
    (append
     (map (lambda (x) (make-grob-property-revert x 'direction))
         direction-polyphonic-grobs)
-    (list (make-grob-property-revert 'NoteColumn 'horizontal-shift))
-    (list (make-grob-property-revert 'MultiMeasureRest 'staff-position)))))
+    (list (make-property-unset 'graceSettings)
+         (make-grob-property-revert 'NoteColumn 'horizontal-shift)
+         (make-grob-property-revert 'MultiMeasureRest 'staff-position)))))
 
 
 (define-safe-public (context-spec-music m context #:optional id)
@@ -573,9 +585,8 @@ of beat groupings "
 
 (define-public (empty-music)
   (ly:export (make-music 'Music)))
-;;;
 
-                                       ; Make a function that checks score element for being of a specific type. 
+;; Make a function that checks score element for being of a specific type. 
 (define-public (make-type-checker symbol)
   (lambda (elt)
     ;;(display symbol)
@@ -625,6 +636,21 @@ SkipEvent. Useful for extracting parts from crowded scores"
    mus))
 
 
+(define-public (music-has-type music type)
+  (memq type (ly:music-property music 'types)))
+
+(define-public (music-clone music)
+  (define (alist->args alist acc)
+    (if (null? alist)
+       acc
+       (alist->args (cdr alist)
+                    (cons (caar alist) (cons (cdar alist) acc)))))
+
+  (apply
+   make-music
+   (ly:music-property music 'name)
+   (alist->args (ly:music-mutable-properties music) '())))
+
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ;; warn for bare chords at start.