5.6.1 Substitution function syntax

Making a function that substitutes a variable into LilyPond code is easy. The general form of these functions is

function =
#(define-music-function
 (arg1 arg2 …)
 (type1? type2? …)
 #{
 …music…
 #})

where

argN nth argument
typeN? a scheme type predicate for which argN must return #t.
…music… normal LilyPond input, using $ (in places where only LilyPond constructs are allowed) or # (to use it as a Scheme value or music function argument or music inside of music lists) to reference arguments (eg. ‘#arg1’).

The list of type predicates is required. Some of the most common type predicates used in music functions are:

boolean?
cheap-list? (use instead of ‘list?’ for faster processing)
ly:duration?
ly:music?
ly:pitch?
markup?
number?
pair?
string?
symbol?

For a list of available type predicates, see Predefined type predicates. User-defined type predicates are also allowed.

See also

Notation Reference: Predefined type predicates.

Extending LilyPond: Music functions.

Installed Files: ‘lily/music-scheme.cc’, ‘scm/c++.scm’, ‘scm/lily.scm’.


<< Back to Documentation Index

LilyPond — Notation Reference v2.21.82 (development-branch).

AltStyle によって変換されたページ (->オリジナル) /