'pop-first #t))
(define-public (make-grob-property-override grob gprop val)
- "Make a Music expression that sets GPROP to VAL in GROB. Does a pop first,
-i.e. this is not an override"
+ "Make a Music expression that overrides GPROP to VAL in GROB."
(make-music 'OverrideProperty
'symbol grob
'grob-property gprop
;; TODO: take this from voicedGraceSettings or similar.
'((Voice Stem font-size -3)
(Voice NoteHead font-size -3)
- (Voice TabNoteHead font-size -4)
+ (Voice TabNoteHead font-size -4)
(Voice Dots font-size -3)
(Voice Stem length-fraction 0.8)
(Voice Stem no-stem-extend #t)
- (Voice Beam thickness 0.384)
+ (Voice Beam beam-thickness 0.384)
(Voice Beam length-fraction 0.8)
(Voice Accidental font-size -4)
(Voice AccidentalCautionary font-size -4)
(ly:context-unset-property where 'ottavation)))
(let* ((offset (* -7 octavation))
- (string (cdr (assoc octavation '((2 . "15ma")
- (1 . "8va")
- (0 . #f)
- (-1 . "8vb")
- (-2 . "15mb"))))))
+ (string (assoc-get octavation '((2 . "15ma")
+ (1 . "8va")
+ (0 . #f)
+ (-1 . "8vb")
+ (-2 . "15mb")))))
(ly:context-set-property! context 'middleCOffset offset)
(ly:context-set-property! context 'ottavation string)
(ly:set-middle-C! context)))
(make-music type
'span-direction span-dir))
-(define-public (set-mus-properties! m alist)
+(define-public (override-head-style heads style)
+ "Override style for @var{heads} to @var{style}."
+ (make-sequential-music
+ (if (pair? heads)
+ (map (lambda (h)
+ (make-grob-property-override h 'style style))
+ heads)
+ (list (make-grob-property-override heads 'style style)))))
+
+(define-public (revert-head-style heads)
+ "Revert style for @var{heads}."
+ (make-sequential-music
+ (if (pair? heads)
+ (map (lambda (h)
+ (make-grob-property-revert h 'style))
+ heads)
+ (list (make-grob-property-revert heads 'style)))))
+
+(define-public (style-note-heads heads style music)
+ "Set @var{style} for all @var{heads} in @var{music}. Works both
+inside of and outside of chord construct."
+ ;; are we inside a <...>?
+ (if (eq? (ly:music-property music 'name) 'NoteEvent)
+ ;; yes -> use a tweak
+ (begin
+ (set! (ly:music-property music 'tweaks)
+ (acons 'style style (ly:music-property music 'tweaks)))
+ music)
+ ;; not in <...>, so use overrides
+ (make-sequential-music
+ (list
+ (override-head-style heads style)
+ music
+ (revert-head-style heads)))))
+
+ (define-public (set-mus-properties! m alist)
"Set all of ALIST as properties of M."
(if (pair? alist)
(begin
(make-sequential-music
(list (make-voice-props-set number)
(make-simultaneous-music (car lst))))
- 'Voice (number->string (1+ number)))
+ 'Bottom (number->string (1+ number)))
(voicify-list (cdr lst) (1+ number)))))
(define (voicify-chord ch)
"
(let ((meta (ly:grob-property grob 'meta)))
- (if (equal? (cdr (assoc 'name meta)) grob-name)
+ (if (equal? (assoc-get 'name meta) grob-name)
(set! (ly:grob-property grob symbol) val))))
(need-accidental #f)
(previous-alteration #f)
(from-other-octaves #f)
- (from-same-octave (ly:assoc-get pitch-handle local-key-sig))
- (from-key-sig (ly:assoc-get notename local-key-sig)))
+ (from-same-octave (assoc-get pitch-handle local-key-sig))
+ (from-key-sig (assoc-get notename local-key-sig)))
;; If no key signature match is found from localKeySignature, we may have a custom
;; type with octave-specific entries of the form ((octave . pitch) alteration)
;; instead of (pitch . alteration). Since this type cannot coexist with entries in
;; localKeySignature, try extracting from keySignature instead.
(if (equal? from-key-sig #f)
- (set! from-key-sig (ly:assoc-get pitch-handle key-sig)))
+ (set! from-key-sig (assoc-get pitch-handle key-sig)))
;; loop through localKeySignature to search for a notename match from other octaves
(let loop ((l local-key-sig))