David, a follow-up--
I came across a post of yours from some years back in response to a
sort-of-similar question,
in which you suggested a more direct/more succinct way to access
LilyPond's music-to-string functionality,
via "value->lilystring." (More succinct, that is, if don't count the
necessary "use-modules" line).
So this:
#(use-modules (scm display-lily))
musmarkA = ^\tweak self-alignment-X #CENTER
-$(define-scheme-function (music) (ly:music?)
(value->lily-string music)) \etc
{
c'\musmarkA { c' }
}
...is equivalent, I think, to this:
musmarkA = ^\tweak self-alignment-X #CENTER
-$(define-scheme-function (music) (ly:music?)
(with-output-to-string (lambda () (displayLilyMusic
music)))) \etc
{
c'\musmarkA { c' }
}
...the suggestion you made to me.
David Kastrup wrote on 11/20/2019 3:40 AM:
Stephen Cummings <stevecummi...@seldenhouse.com> writes: .....
I would be skeptical anyway that \displayLilyMusic would be the best
approach for your purpose but I did want to point out that catching
output in a string is always an option in Scheme's port model.
David Kastrup wrote on 11/19/2019 3:43 PM:
Stephen Cummings <stevecummi...@seldenhouse.com> writes:
Am I missing a basic LilyPond command/directive--something built-in
that takes music as input and returns note names as text? Such a
functionality would seem to be useful in all kinds of
annotations/quotations. I know about \displayMusic but its output
only goes to the console/output stream and can't be routed to
markup, correct?
Hm? musmark = ^\tweak self-alignment-X #CENTER
-$(define-scheme-function (music) (ly:music?) (with-output-to-string
(lambda () (displayLilyMusic music)))) \etc { c'\musmark { c' } }
Though it's probably a bit cheeky to $\etc the scheme function in
anonymously. But you could give a name to the define-scheme-function
call as usual.