[ << Scheme tutorial ] | [Top][Contents][Index] | [ Interfaces for programmers >> ] |
[ < LilyPond Scheme syntax ] | [ Up : Scheme in LilyPond ] | [ Debugging Scheme code > ] |
1.2.2 LilyPond variables
LilyPond variables are stored internally in the form of Scheme variables. Thus,
twelve = 12
is equivalent to
#(define twelve 12)
This means that LilyPond variables are available for use in Scheme expressions. For example, we could use
twentyFour = #(* 2 twelve)
which would result in the number 24 being stored in the LilyPond
(and Scheme) variable twentyFour
.
Scheme allows modifying complex expressions in-place and LilyPond makes
use of this ‘in-place modification’ when using music functions. But
when music expressions are stored in variables rather than entered
directly the usual expectation, when passing them to music functions,
would be that the original value is unmodified. So when referencing a
music variable with leading backslash (such as \twentyFour
),
LilyPond creates a copy of that variable’s music value for use in the
surrounding music expression rather than using the variable’s value
directly.
Therefore, Scheme music expressions written with the #
syntax
should be used for material that is created ‘from scratch’ (or that is
explicitly copied) rather than being used, instead, to directly
reference material.
See also
Extending: LilyPond Scheme syntax.