C'est une convention de Scheme qui s'appelle quasiquote. Tu
peux également faire (cons 'line-width linewidth) sans accent
et sans virgule - ça revient au même.
C'est une copie du markup tel que tu l'avais écrit mais en
Scheme. Les commandes make-X-markup n'acceptent que des
listes. Le column est facultatif dans les exemples que tu as
fournis - tu peux le supprimer et le résultat visuel ne
changerait pas. J'évoque string-split pour éclater le string
en une liste de plusieurs strings (et donc plusieurs markups)
en utilisant l'espace comme séparateur.
Je ne me suis pas bien exprimé. En gros tu voudras chopper
la valeur de la hauteur du stencil et la manipuler. Je ne l'ai
pas bien utilisé ci-dessous mais tu pourras l'adapter. Essaie
:
\version "2.17.0"
#(define-markup-command (melo-text layout props linewidth
text)
(number? string?)
(interpret-markup layout props
(markup #:override '(font-name . "Didot")
#:override `(line-width . ,linewidth)
(make-column-markup (list
(make-justify-markup (string-split text #\space)))))))
meloText =
#(define-music-function
(parser location Largeur Texte)
(number? string?)
#{\stopStaff
\once \override TextScript #'Y-offset =
#(lambda (grob)
(cdr (ly:stencil-extent (ly:grob-property grob
'stencil) Y)))
s1-\markup \melo-text #Largeur #Texte
\startStaff
#}
)
textA = \meloText #30 #"Il n'y a point là d'âme ni de
vie… Ce n'est que de la pierre"
textB = \meloText #18 #"Tout mon feu s’est éteint… mon
imagination s’est glacée, le marbre sort froid de mes
mains…"
\score {
\new Staff {
\relative d' {
\textLengthOn
\tempo "Largo"
\key es \major
<bes es g>4 <bes es g>8. <bes es g>16
<bes es g>2-\fermata \bar "||"
\textA
\tempo "Adagio"
r8 bes( ces a) << { bes f'~ f16 d es ges, ges8 f16.
ges32 d8 } \\
{ s8 as'~ as16 f ges es es8 d16. es32 bes8 } >> r8
r2 |
\textB
s8 f''(-\p ges e) << { f es~ es16 c des bes' | bes8
a16. bes32 a8 } \\
{ s8 c,~ c16 a bes des | des8 c16. des32 c8 } >> r8
r2 |
}}}
%Cordialement,
%~Mike