[ << Interfaces pour programmeurs ] | [Top][Contents][Index] | [ Interfaces LilyPond Scheme >> ] |
[ < Interfaces pour programmeurs ] | [ Up : Interfaces pour programmeurs ] | [ Fonctions Scheme > ] |
2.1 Blocs de code LilyPond
L’utilisation de Scheme pour créer des expressions musicales peut s’avérer ardue, principalement à cause des imbrications et de la longueur du code Scheme qui en résulte. Dans le cas de tâches simples, on peut toutefois contourner une partie du problème en utilisant des blocs de code LilyPond, ce qui autorise la syntaxe habituelle de LilyPond au sein même de Scheme.
Les blocs de code LilyPond ressemblent à
#{ du code LilyPond #}
En voici un exemple basique :
ritpp = #(define-event-function () () #{ ^"rit." \pp #} ) { c'4 e'4\ritpp g'2 }
Les blocs de code LilyPond peuvent s’utiliser partout où vous pouvez écrire du code Scheme. Le lecteur Scheme est en fait quelque peu adapté pour accepter des blocs de code LilyPond ; il est capable de traiter des expressions Scheme intégrées débutant par ‘$’ ou ‘#’.
Le lecteur Scheme extrait le bloc de code LilyPond et déclenche un appel
à l’analyseur grammatical de LilyPond (le parser) qui réalise en
temps réel l’interprétation de ce bloc de code LilyPond. Toute
expression Scheme imbriquée est exécutée dans l’environnement lexical du
bloc de code LilyPond, de telle sorte que vous avez accès aux variables
locales et aux paramètres de la fonction au moment même où le bloc de
code LilyPond est écrit. Les variables définies dans d’autres modules
Scheme, tels ceux contenant les blocs \header
ou \layout
,
ne sont pas accessibles en tant que variables Scheme (préfixées par
un ‘#’) mais en tant que variables LilyPond (préfixées par
un ‘\’).
Toute la musique générée au sein de ce bloc de code voit son
origine
établie à cet emplacement.
Un bloc de code LilyPond peut contenir tout ce que vous pourriez mettre à droite de l’assignation. Par ailleurs, un bloc LilyPond vide correspond à une expression fantôme, et un bloc LilyPond de multiples événements musicaux sera transformé en une expression de musique séquentielle.
[ << Interfaces pour programmeurs ] | [Top][Contents][Index] | [ Interfaces LilyPond Scheme >> ] |
[ < Interfaces pour programmeurs ] | [ Up : Interfaces pour programmeurs ] | [ Fonctions Scheme > ] |