Raccourcis pour les « flas »

Bonjour,

en mode « drum », un « fla » sur la caisse claire (CC) se note \appoggiatura sn16 sn8 et, lorsque ce coup est à saisir fréquemment, cela devient un peu pénible. Y a-t-il moyen d'avoir un raccourci, disons \fla pour cela ?

Bien sûr, après, on a forcément envie de faire des flas sur autre chose que la CC, par exemple sur le tom aigu (tomh), etc. Y aurait-il possibilité de créer, comme en LaTeX, des commandes à argument optionnel, disons donc ici \fla, qui par défaut serait un fla sur la CC mais qui, utilisée ainsi \fla[tomh], serait un fla sur tomh ?

Merci d'avance.

Bonjour,

Le 26/10/2025 à 19:24, Denis Bitouzé via LilyPond a écrit :

en mode « drum », un « fla » sur la caisse claire (CC) se note \appoggiatura sn16 sn8 et, lorsque ce coup est à saisir fréquemment, cela devient un peu pénible. Y a-t-il moyen d'avoir un raccourci, disons \fla pour cela ?

Probablement :
fla = { \appoggiatura sn16 sn8 }

Bien sûr, après, on a forcément envie de faire des flas sur autre chose que la CC, par exemple sur le tom aigu (tomh), etc. Y aurait-il possibilité de créer, comme en LaTeX, des commandes à argument optionnel, disons donc ici \fla, qui par défaut serait un fla sur la CC mais qui, utilisée ainsi \fla[tomh], serait un fla sur tomh ?

Là je laisse répondre les spécialistes, mais c'est certainement
possible, soit avec une fonction Scheme, soit avec \etc :

Cordialement,

Olivier Miakinen

Mimypond est très vexante :

error: wrong type for argument 1. Expecting music, found "sn"

fla = { \appoggiatura 
                      sn16 sn4 }

Comme si le son d'une caisse claire, ça n'était pas de la musique ?! :wink:

Question subsidiaire : serait-il possible que la durée du fla soit précisée, non pas à sa définition, mais à son emploi : \fla4, \fla8, etc. ?

Comme sn n'est pas une note normale, il faut placer le fragment dans \drummode.

\version "2.24.4"

fla = \drummode { \appoggiatura sn16 sn8 }

\drums { \fla \fla \fla }

Pour faire de la durée un argument :

\version "2.24.4"

fla =
#(define-music-function (d) (ly:duration?)
   #{ \drummode { \appoggiatura sn16 sn$d } #})

\drums { \fla4 \fla8 \fla8 }

On peut aussi faire du type de percussion un argument, mais c'est un peu plus compliqué. De plus, les commandes LilyPond ne peuvent pas prendre d'arguments optionnels comme avec \command[option] en LaTeX. Il faut créer une commande séparée.

\version "2.24.4"

flaa =
#(define-music-function (d s) (ly:duration? ly:music?)
   #{ \drummode { \appoggiatura #(make-music 'NoteEvent s 'duration (ly:make-duration 4))
                  #(make-music 'NoteEvent s 'duration d) } #})

\drums { \flaa 4 sn \flaa 2 sn \flaa 8 tomh }

(J'ai mis la durée en premier, sans quoi \flaa sn 4 est compris comme [\flaa] [sn4] plutôt que [\flaa] [sn] [4].)

Merci Jean, ça fonctionne impeccablement !

Comme ces « flas » et autres « ras » sont très courants en percussion, il serait selon moi souhaitable d'ajouter de telles définitions à Lilypond. Penses-tu que c'est une requête que je puisse raisonnablement soumettre aux actuels développeurs ?

En revanche, ce qui est un peu bogogène, c'est que dans :

sn8 sn \flaa 4 sn sn

le dernier sn n'a pas la durée d'une noire comme la note précédente (\flaa 4 sn) mais d'une croche comme la note précédant le fla.

En revanche, ce qui est un peu bogogène, c'est que dans :

sn8 sn \flaa 4 sn sn

le dernier sn n'a pas la durée d'une noire comme la note précédente (\flaa 4 sn) mais d'une croche comme la note précédant le fla.

D'ailleurs, peut-être est-ce lié, mais même la commande plus simple \fla ne bénéficie pas de la durée de la note précédente :

\version "2.24.4"

fla =
#(define-music-function (d) (ly:duration?)
   #{ \drummode { \appoggiatura sn16 sn$d } #})

\drums { sn4 \fla \fla8 \fla8 }

conduit à l'erreur suivante :

/tmp/frescobaldi-kz2w82zg/tmpm4f1xicp/document.ly:7:19: error: wrong type for argument 1. Expecting duration, found (make-music (quote SequentialMusic) (quote elements) (list (make-music (quote GraceMusic) (quote element) (make-music (quote SequentialMusic) (quote elements) (list (make-music (quote SequentialMusic) (quote elements) (list (make-music (quote EventChord) (quote elements) (list (make-music (quote SlurEvent) (quote spanner-id) (quote grace) (quote span-direction) -1))))) (make-music (quote NoteEvent) (quote drum-type) (quote snare) (quote duration) (ly:make-duration 4)) (make-music (quote SequentialMusic) (quote elements) (list (make-music (quote EventChord) (quote elements) (list (make-music (quote SlurEvent) (quote spanner-id) (quote grace) (quote span-direction) 1)))))))) (make-music (quote NoteEvent) (quote drum-type) (quote snare) (quote duration) (ly:make-duration 3))))
\drums { sn4 \fla
\fla8 \fla8 }

Tu as raison, je n'y avais pas pensé. La durée par défaut change à chaque note qui porte une durée explicite, mais pas avec une durée qui n'est pas attachée à une note (un argument à une fonction en l'occurrence). Finalement, le mieux est sans doute

\version "2.24.4"

fla =
#(define-music-function (note) (ly:music?)
   (let* ((app-note (make-music 'NoteEvent note 'duration (ly:make-duration 4))))
     #{ \appoggiatura #app-note #note #}))

\drums { \fla sn4 \fla sn \fla tomh2 \fla 2 \fla sn4 \fla 4 }

Cette fonction prend une note et rajoute simplement dessus une appogiature est identique excepté pour sa durée, qui est d'une double croche. Il n'y a pas de paramètre optionnel pour le type de percu, mais comme illustré dans l'exemple, si c'est le même que la note précédente, tu peux saisir simplement sa durée, comme d'habitude.