GNU LilyPond Notation Reference: 6.1.4 Mathematics in functions

### 6.1.4 Mathematics in functions

Music functions can involve Scheme programming in addition to simple substitution,

>     AltOn = #(define-music-function (parser location mag) (number?)
>       #{ \override Stem #'length = #$(* 7.0 mag)
>          \override NoteHead #'font-size =
>            #$(inexact->exact (* (/ 6.0 (log 2.0)) (log mag))) #})

>     AltOff = {
>       \revert Stem #'length
>       \revert NoteHead #'font-size
>     }

>     { c'2 \AltOn #0.5 c'4 c'
>       \AltOn #1.5 c' c' \AltOff c'2 }

This example may be rewritten to pass in music expressions,

>     withAlt = #(define-music-function (parser location mag music) (number? ly:music?)
>       #{ \override Stem #'length = #$(* 7.0 mag)
>          \override NoteHead #'font-size =
>            #$(inexact->exact (* (/ 6.0 (log 2.0)) (log mag)))
>          $music
>          \revert Stem #'length
>          \revert NoteHead #'font-size #})

>     { c'2 \withAlt #0.5 {c'4 c'}
>       \withAlt #1.5 {c' c'} c'2 }

Other languages: español.

#### Notation Reference