lilypond-user-fr
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

"\repeat unfold" dans define-music-function


From: Remy CLAVERIE
Subject: "\repeat unfold" dans define-music-function
Date: Tue, 10 Oct 2017 10:17:09 +0200 (CEST)

Bonjour à tous,

 

Je commence à apprendre à programmer mes propres functions musicales. J'y vais doucement car je ne connais pas Scheme.

Je souhaite écrire une fonction qui me permette d'intérer du texte au milieu d'une portée. Pour cela, je me suis inspiré du Snippet http://lsr.di.unimi.it/LSR/Item?id=198 .

Voici mon code :

 

\version "2.16.2"

InsertTextInOpenStaff =

#(define-music-function

(parser location text lspace rspace XYoff) (markup? number? number? number-pair?)

#{

\cadenzaOn

\stopStaff

\repeat unfold 1 { s4 \noBreak \bar "" }

\once \override TextScript #'extra-offset = #XYoff

<>^\markup #text

 

\repeat unfold 5 { s4 \noBreak \bar "" }

\cadenzaOff

\startStaff % Resume bar count and show staff lines again

\once \override Staff . KeySignature #'break-visibility = #all-visible

\once \override Staff . Clef #'break-visibility = #all-visible

#}

)

 

{

\clef treble

\key g \major

\time 4/4

\relative c'' {

\repeat unfold 9 { c4 c c c }

 

\InsertTextInOpenStaff \markup { \bold "toto et titi" } #1 #3 #'( 0 . -1.2 )

 

\repeat unfold 5 { c4 c c c }{ d d d e } { e e e f } { f f f g }

c,1

\bar"|."

}

}

 

La focntion InsertTextInOpenStaff possède 4 arguments. Le premier est le texte que je souhaite insérer, le deuxième est l'espace que je veux à gauche du texte (à droite pour l'argument 3) et le dernier, est une paire de nombres qui me permet de centrer le texte. L'exemple précédent, fonctionne car lspace et rspace ne sont pas utilisés ; à la place, j'ai mis des constantes (resp. 1 et 5).

 

Si je remplace "\repeat unfold 1" par "\repeat unfold #lspace", j'obtiens l'erreur :

> Erreur : syntax error, unexpected STRING, expecting UNSIGNED or NUMBER_IDENTIFIER

\repeat unfold

#lspace { s4 \noBreak \bar "" }

 

Et je ne vois pas pourquoi, car j'utilise la même syntaxe que l'exemple 5.6.2 de la documentation. C'est peut être la fonction 'repeat' qui ne s'utilise pas comme cela dans une fonction.

Je n'ai rien trouvé grâce à google qui m'aide vraiment.

 

L'un de vous a t-il une idée ??

 

Merci de votre aide,

 

Rémy

 


reply via email to

[Prev in Thread] Current Thread [Next in Thread]