Integrating LilyPond expressions inside Scheme functions
Appearance
It is possible to use fragments of LilyPond syntax inside Scheme, by putting them between #{ and #}. In this example, three functions are defined to apply different paddings on the TextScript markups, using native LilyPond commands such as \override TextScript #'padding.
\version "2.24.0"
%% http://lsr.di.unimi.it/LSR/Item?id=251
withPaddingA = #(define-music-function (padding music) (number? ly:music?)
#{ \override TextScript.padding = #padding
$music
\revert TextScript.padding #})
withPaddingB = #(define-music-function (padding music) (number? ly:music?)
#{ \override TextScript.padding = #(* padding 2)
$music
\revert TextScript.padding #})
withPaddingC = #(define-music-function (padding music) (number? ly:music?)
#{ \override TextScript.padding = #(+ 1 (* padding 2))
$music
\revert TextScript.padding #})
{
c'^"1"
\withPaddingA #2
{ c'^"2" c'^"3" }
c'^"4"
\withPaddingB #2
{ c'^"5" c'^"6" }
c'^"7"
\withPaddingC #2
{ c'^"8" c'^"9" }
c'^"10"
}