%% Example for creating multiple custom text spanners %% Based on: % http://lilypond.org/doc/v2.18/input/regression/collated-files.html % look for: % ‘scheme-text-spanner.ly’ \version "2.19.82" #(define (add-grob-definition grob-name grob-entry) (let* ((meta-entry (assoc-get 'meta grob-entry)) (class (assoc-get 'class meta-entry)) (ifaces-entry (assoc-get 'interfaces meta-entry))) (set-object-property! grob-name 'translation-type? ly:grob-properties?) (set-object-property! grob-name 'is-grob? #t) (set! ifaces-entry (append (case class ((Item) '(item-interface)) ((Spanner) '(spanner-interface)) ((Paper_column) '((item-interface paper-column-interface))) ((System) '((system-interface spanner-interface))) (else '(unknown-interface))) ifaces-entry)) (set! ifaces-entry (uniq-list (sort ifaces-entry symbolsymbol (format #f "~aTextSpanEvent" name)) (ly:camel-case->lisp-identifier (string->symbol (format #f "~aTextSpanEvent" name))) (string->symbol (format #f "~aTextSpanner" name)) (string->symbol (format #f "~aTextSpannerEngraver" name)) (string->symbol (string-downcase (format #f "~a-start" name))) (string->symbol (string-downcase (format #f "~a-stop" name))))) name-list)) (new-scheme-event-spanner-types (scheme-event-spanner-types-proc (map car naming-lst) (map second naming-lst))) (scheme-event-spanner-types (map scheme-event-spanner-type new-scheme-event-spanner-types))) (set! music-descriptions (append scheme-event-spanner-types music-descriptions)) (set! music-descriptions (sort music-descriptions alist