On Tue, 2013-09-10 at 04:39 +0200, David Kastrup wrote: > Inside of markups, you can't use functions defined with > define-scheme-function (their argument parsing is just not compatible > with markup mode). Check out define-markup-command instead. > > As a note aside: case can't be used with strings as (eqv? "x" "x") => #f
David, many thanks. A few hours reading and programming later, and I'm nearly there. #(define-markup-command (mensSign layout props text) (markup?) "Create the markup for an extended list of mensuration signs" (interpret-markup layout props (if (string=? text "C") (markup (#:musicglyph "timesig.mensural44")) %...... ))) mensuration = #(define-music-function (P L mensuralTimesig .....) (string? .....) #{ \mark \markup { \concat { \mensSign mensuralTimesig " (" %................ cantusMusic = \relative c' { %..... \mensuration #"C" %.... This code is compiling successfully, but with two instances of "programming error: Object is not a markup." However, if I edit the mensuration function and replace \mensSign mensuralTimesig with \mensSign "C" the errors disappear and everything works beautifully. Utterly baffling! I'd be grateful for any hints from you or any other guru.
_______________________________________________ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user