Hi all,
In order to have my braille generator not have to support Lilypond 2.14 I tried
to upgrade my music library I am building this braille generator on.
However, because of (a lot of) specific "hacks" on the layout, simply running
convert-ly on the entire library doesn't completely finish the job.
These overrides use a specific syntax to distinguish between the scheme part
and the lilypond part, also inside function definitions.
The following function is an example of this. It is defined as a scheme
function, but uses Lilypond syntax inside which is put between #{ and #}.
These kind of definitions seem to cause all kinds of issues.
One of these issues can be found in a piece of code taken from the
lilypond-user mailing list
(https://lists.gnu.org/archive/html/lilypond-user/2011-03/msg00270.html
<https://lists.gnu.org/archive/html/lilypond-user/2011-03/msg00270.html>) of
which I will only include the start:
====
alignGrob =
#(define-music-function (parser location grob-to-align reference-grob dir corr)
(string? symbol? integer? number?)
#{
\overrideProperty $grob-to-align #'after-line-breaking
#(lambda (grob)
(let* ((sys (ly:grob-system grob))
====
The lambda expression on the fifth line of this definition causes a "warning:
ignoring non-musical expression".
Another example is in the function below.
====
stanza = #
(define-music-function (parser location str)
(string?)
#{
\set stanza = #
(markup #:stanza-number
(string-append $str "")) #})
====
In this function, the line with '\set stanza causes an GUILE error: "unbound
variable str" wherever this function is applied.
So, I see two options here: either something changed around the use of the #{
and #} and any embedded scheme between 2.14 and 2.18, or the
define-music-function argument list is incorrect. If I remember correctly, the
last one only changed between 2.18 and 2.20.
Are there options that I missed?
cheers and thanks in advance!
Maurits