2013/9/10 David Kastrup <d...@gnu.org>: > Thomas Morley <thomasmorle...@gmail.com> writes: > >> #(define (make-text-script x) >> (make-music 'TextScriptEvent >> 'direction DOWN >> 'text x)) >> >> #(define (add-text-script m x) >> (cond ((music-is-of-type? m 'event-chord) >> (set! (ly:music-property m 'elements) >> (cons (make-text-script x) >> (ly:music-property m 'elements)))) >> ((music-is-of-type? m 'note-event) >> (set! (ly:music-property m 'articulations) >> (cons (make-text-script x) >> (ly:music-property m 'articulations)))) >> (else (let ((es (ly:music-property m 'elements)) >> (e (ly:music-property m 'element))) >> (map (lambda (y) (add-text-script y x)) es) > (for-each ... >> (if (ly:music? e) >> (add-text-script e x)) >> ))) >> m) > > #(define (add-text-script m x) > (define (append-property! music property element) > (set! (ly:music-property music property) > (append! (ly:music-property music property) > (list element))) > music) > (map-some-music > (lambda (m) > (cond ((music-is-of-type m 'event-chord) > (append-property! m 'elements (make-text-script x))) > ((music-is-of-type m 'note-event) > (append-property! m 'articulations (make-text-script x))) > ;; don't recurse into other rhythmic events > ((music-is-of-type m 'rhythmic-event) m) > ;; recurse: > (else #f))) > m)) > > That's the "proper" variant (as opposed to the original, it _returns_ > the modified music however). One has to note that the improper variant > will generally work as well: adding material to 'articulations works for > both 'event-chord as well as 'note-event so one can drop the > distinction. It's not what LilyPond itself would do, however. > > Of course, not recursing into other rhythmic events is just an > optimization that's not particularly important. > > -- > David Kastrup
Hi David, first let me thank you for your code. It's by far better and more elegant as my own. While I was going to add a revised but unapproved snippet to the the LSR marking it [needs upgrade], http://lsr.dsi.unimi.it/LSR/Item?u=1&id=887 I noticed that the original snippet was tagged "docs" ! And indeed, I found it in /Documentation/snippets: 'adding-extra-fingering-with-scheme.ly'. But not in /snippets/new And it seems not to be in the online snippets-manual or elsewhere. I thought even a broken, but compiling snippet should appear. ? Cheers, Harm _______________________________________________ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user