lilypond-user
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Scheme for verbatim display of ly:music argument


From: David Kastrup
Subject: Re: Scheme for verbatim display of ly:music argument
Date: Mon, 22 Oct 2012 19:42:35 +0200
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/24.2.50 (gnu/linux)

Robert Schmaus <address@hidden> writes:

> Dear all,
>
> I'd like to create a scheme function with one ly:music argument which
> does the following: insert the music expression at the current place
> and display the source code (ie the argument passed to the function)
> verbatim above the respective place in the score.
> And I need to use that in a ChordNames context.
>
> Thus, I'd like to have the following:
>
> <<
>       \new ChordNames {
>               \chordmode{  \fn{ c1:7.5+ } \fn{ c1:maj7.9 }  }
>       }
>>>
>
> should produce something like
>
> c1:7.5+    c1:maj7.9
> C7(#5)   | Cmaj9
>
>
> Just passing the music expression is easy:
>
> fn = #(define-music-function (parser location myChord) (ly:music?)
>       #{
>               $myChord
>       #}
> )
>
> Is it possible to add a markup part to display myChord verbatim?

Tricky.  You can use \displayLilyMusic (or its Scheme equivalent) for
recreating a representation of the input, but it will not in general be
the same as your input.

Alternatively, you can try harvesting the location argument for reading
the actual source file via

 -- Function: ly:input-both-locations sip
     Return input location in SIP as `(file-name first-line
     first-column last-line last-column)'.

but this depends on the function argument being in a more or less direct
rather than a computed form.

Another possibility is to pass a string into the function in the first
place and then use it both as a markup string as well as running one of
the string-interpreting functions on it for getting interpretation from
LilyPond.

-- 
David Kastrup




reply via email to

[Prev in Thread] Current Thread [Next in Thread]