On 2020-01-14 5:01 pm, Arle Lommel wrote:
I am a total neophyte to Scheme, but not to coding. I’ve written a
simple function, but it does not work (I’ve reduced it to just the
problematic lines. Can anyone tell me how to write the line indicated
below?

shifter =
#(define-music-function
  (parser location padding)
  (number?)
  #{
\once \override Accidental.extra-offset = #(cons padding . 0) %<- THIS LINE
  #}
)

The relevant errors it throws when invoked are:

error: GUILE signaled an error for the expression beginning here
warning: type check for `extra-offset' failed; value `#<unspecified>'
must be of type `pair of numbers’

The closest thing I can find to explaining how this works is here:
http://lilypond.org/doc/v2.18/Documentation/extending/scheme-function-definitions

But I’m apparently missing something very obvious.

A pair of numbers would be (cons 1 2) or '(1 . 2) as the quoted shorthand.

Since you have a variable, you would need the quasi-quote feature if you wanted the shorthand: `(,padding . 0) But, (cons padding 0) should work.


-- Aaron Hill

Reply via email to