Hi, On Sat, Sep 19, 2015 at 7:09 PM, David Nalesnik <[email protected]> wrote:
> David, > > On Sat, Sep 19, 2015 at 3:48 PM, David Kastrup <[email protected]> wrote: > >> David Nalesnik <[email protected]> writes: >> >> > (As an aside: I must say that David's suggestion of using lyrics >> > produces miraculous results without the hundreds and hundreds of lines >> > of new code! Don't want a connector line? Don't write a hyphen. >> > Etc.) >> >> Actually, we might have had some miscommunication. I was not really >> suggesting using a lyrics context, just \lyricsmode as a user interface. >> The idea was more or less to pick the music expression apart and then >> let your code do the work. >> >> > OK, I see. Using \lyricmode would be a user-friendly way to specify > markups/strings, connectors/no connectors, and relative spacing of texts > through attached durations (making the use of spacers--somewhat awkward to > handle--unnecessary). > > Here's a preliminary experiment with using \lyricmode as an input device for text spanner details. It could easily be incorporated into the larger function, but I've pared this down to ask a question. Is it possible to avoid needing to type \lyricmode when calling \test? Thank you, David %%%%%%%%%%%% \version "2.19.27" #(define (get-text elt) (ly:music-property elt 'text)) #(define (extract-texts lst result) (cond ((null? lst) result) ((not (null? (get-text (car lst)))) (extract-texts (cdr lst) (append result (list (get-text (car lst)))))) ((ly:music-property (car lst) 'elements) (append (extract-texts (ly:music-property (car lst) 'elements) result) (extract-texts (cdr lst) '()))) (else (extract-texts (cdr lst) result)))) extractTexts = #(define-scheme-function (parser location lst) (ly:music?) (extract-texts (extract-named-music lst '(LyricEvent)) '())) test = #(define-music-function (arg) (ly:music?) (let ((texts (extractTexts arg))) ;(display texts) (newline) #{ \override TextSpanner.bound-details.left.text = #(car texts) \override TextSpanner.bound-details.right.text = #(last texts) #})) { \test { \lyricmode { \markup { \with-color #red ri }4 -- tar -- dan -- do } } c'1\startTextSpan d'1\stopTextSpan }
_______________________________________________ lilypond-user mailing list [email protected] https://lists.gnu.org/mailman/listinfo/lilypond-user
