Am 10/22/12 7:42 PM, schrieb David Kastrup:
Robert Schmaus <robert.schm...@web.de> 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.


Hi David,

thanks for the quick reply!

I think the third possibility is the one for me (because, frankly, don't think I understand the second one, and the first one is indeed not what I'm looking for).

I looked for information on those string-interpreting functions in the online docs and found this (at http://lilypond.org/doc/v2.15/Documentation/notation/scheme-functions):

---
Function: ly:parse-string-expression parser-smob ly-code filename line
Parse the string ly-code with parser-smob. Return the contained music expression. filename and line are optional source indicators.
---

That looks about right ... but I have no idea how to use it, and cannot find anything about that in the documentation. Where would I have to look?

Thanks!
Robert

_______________________________________________
lilypond-user mailing list
lilypond-user@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-user

Reply via email to