Extending LilyPond: 2.5 Inline Scheme code

## 2.5 Inline Scheme code

The main disadvantage of `\tweak` is its syntactical inflexibility. For example, the following produces a syntax error.

>     F = \tweak #'font-size #-3 -\flageolet

>     \relative c'' {
>       c4^\F c4_\F
>     }

In other words, `\tweak` doesn’t behave like an articulation regarding the syntax; in particular, it can’t be attached with `^` and `_`.

Using Scheme, this problem can be avoided. The route to the result is given in Adding articulation to notes (example), especially how to use `\displayMusic` as a helping guide.

>     F = #(let ((m (make-music 'ArticulationEvent
>                               'articulation-type "flageolet")))
>            (set! (ly:music-property m 'tweaks)
>                  (acons 'font-size -3
>                         (ly:music-property m 'tweaks)))
>            m)

>     \relative c'' {
>       c4^\F c4_\F
>     }

Here, the `tweaks` properties of the flageolet object `m` (created with `make-music`) are extracted with `ly:music-property`, a new key-value pair to change the font size is prepended to the property list with the `acons` Scheme function, and the result is finally written back with `set!`. The last element of the `let` block is the return value, `m` itself.

其它语言：deutsch, español。

#### LilyPond — Extending