Stephen Cummings <stevecummi...@seldenhouse.com> writes: > Quite comfortable with such cheek. Thank you. > > Still, I will try to package up a more formally named version of that > little function. A translating map or loop will then be needed to > extract note names and render them in more conventional form, but that > won't require inscrutable-for-me ly:xxx calls. (Pardon the mistaken > reference to displayMusic rather than displayLilyMusic.)
I didn't actually catch it until looking at the first output. > I'll pursue getting my original to work for learning purposes, and > with the thought that discarding non-pitch events early rather than > late might be better: if pitch -> convert to custom note name -> add > to output string -> loop; then return the string. Sure helps to know > that pitch-notename returns a number. 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. >> >> >> -- David Kastrup