Am 15.01.2011 21:51, schrieb Neil Puttock:
On 15 January 2011 19:01, Marc Hohl<m...@hohlart.de> wrote:
Now I wonder whether it is possible to create a kind of text book by
including the lyrics in a markup, perhaps with a scheme function which
replaces the " -- " by "".
Is it possible to store the text in a variable?
[...]
For simplicity I've ignored hyphens, but it shouldn't be too difficult
to add them (or use their position in the list of strings to restore
the hyphenated words).
This is what I got so far:
\version "2.13.46"
words = \lyricmode { This is my ex -- am -- ple text }
#(define (lyrics->list lyrics)
"Return a flat list containing all syllables and hyphens from
@code{lyrics}."
(let ((extracted-list
(if (ly:music? lyrics)
(if (memq (ly:music-property lyrics 'name) '(LyricEvent
HyphenEvent))
(begin (if (eq? (ly:music-property lyrics 'name)
'LyricEvent)
(list (ly:music-property lyrics 'text))
(list "--")))
(let ((elt (ly:music-property lyrics 'element))
(elts (ly:music-property lyrics 'elements)))
(if (ly:music? elt)
(lyrics->list elt)
(if (null? elts)
'()
(map (lambda(x)
(lyrics->list x))
elts)))))
'())))
(flatten-list extracted-list)))
text = #(lyrics->list words)
melody = \relative c' { c4 d e f | g a c2 }
\new Voice { \melody }
\addlyrics { \words }
#(markup* (make-line-markup text))
The function liyrics->list extracts the syllables and the hyphens.
The second part (eliminating the hyphens in the list and concatenate the
surrounding
syllables) seems a bit harder, but I try to find a solution.
Regards,
Marc
_______________________________________________
lilypond-user mailing list
lilypond-user@gnu.org
http://lists.gnu.org/mailman/listinfo/lilypond-user