%=================================
% d'après
https://lsr.di.unimi.it/LSR/Snippet?id=1068%fonction pour faire un cercle avec un markup
#(define-markup-command
(circled-pattern-iterative layout props radius angle num arg)
(number? number? number? markup?)
(interpret-markup layout props
(let ((rep (abs num)))
(cond
((= num 0) (markup ""))
((= num 1) arg)
(#t (do ((i 0 (1+ i))
(res (markup (#:null))
(markup
(#:combine
(#:rotate
(* i (/ angle rep))
(#:concat (#:null #:hspace radius arg)))
res))))
((= i (1+ rep)) res)))))))
%
%-----------------------------
%on fabrique les formes - à tester d'autre caractère
Etouffe = \markup "."
Caisse = \markup "!"
etouffer = #(define-music-function
(note)
(ly:music?)
#{
\override NoteHead.stencil = #ly:text-interface::print
\override NoteHead.text = \markup {
\combine \raise #-.5 \hspace #-2 \circled-pattern-iterative #1 #360 #5 \Etouffe
}
#note
#})
tapCaisse = #(define-music-function
(note)
(ly:music?)
#{
\override NoteHead.stencil = #ly:text-interface::print
\override NoteHead.text = \markup {
\combine \raise #-.5 \hspace #-2 \circled-pattern-iterative #1 #360 #5 \Caisse
}
#note
#})
% revenire à une tête de note normale
rNH = \revert NoteHead.stencil
%---------------------------------
\relative c' {
\etouffer \tuplet 3/2 { d8 e f }
\rNH \tuplet 3/2 { g a c }
\tapCaisse c2
\etouffer <g c e>
\tapCaisse <g c e>
}
\markup { \raise #3 \score {
{ \stopStaff \omit Staff.Clef \omit Staff.TimeSignature \tapCaisse d'1 } } "Taper sur la caisse"
}
\markup { \raise #3 \score {
{ \stopStaff \omit Staff.Clef \omit Staff.TimeSignature \etouffer d'1 }
}
"Étouffer"
}
%==================================