Subject: [Fisarmonica] - génération de markup en scheme

From: Daniel Cartron <[email-masked]>
Date: Thu, 06 Jun 2013 16:21:21 +0200

Bonjour,

Avec le code suivant :

#(define pos 1)
#(define btn "4")

#(define-music-function (parser location note-event)
                                        (ly:music?)
"Ajoute un markup (TextScriptEvent) aux articulations de `note-event'."
(set! (ly:music-property note-event 'articulations)
  (cons (make-music 'TextScriptEvent 'direction pos 'text 
          (markup  btn)
  (ly:music-property note-event 'articulations) )
  )
  note-event)

j'arrive à faire ce que je veux , à savoir générer un markup à partir de 
deux variables, mais ça ne couvre pas la douzaine de cas que j'ai à traiter.

Je voudrais pouvoir dans (markup  btn) avoir par exemple (en considérant que 
btn = "4" :

(markup #:line (#:simple "4''")))
(markup #:line (#:column (#:line (#:underline "4") #:null)))))

etc.

En résumé avoir, selon la valeur de quelques vairables, au choix
#:simple
#:underline
#:column (#:line (#:simple
#:column (#:line (#:underline

avec le #:null qui va bien au bout, mais de plus :
soit "4" soit "4'" voire "4''"

Pas moyen de trouver de la doc sur ce sujet, et je me dis que ce serait 
vraiment lourdingue de faire 12 cond au lieu de quelques if bien placés...

J'ai qd mm réussi à comprendre à force d'essais qu'un markup est une liste 
composée de symboles et de valeurs, encore que je n'en suis mm pas certain, 
mais rien sur comment générer une telle liste.

Précision : les briques de construction des markup dépendent uniquement de 
deux valeurs, dir (valant 5 ou 6) et row (valant 1 2 ou 3) mais leur 
interprétation (#:underline ou '' ajouté à la valeur de btn) dépend d'une 
autre variable liée au contexte nommée syst. Plus la variable btn qui sera 
affichée dans le markup ainsi créé (je pense que des string-append devraient 
suffire à régler la transformation de "4" en "4''").

Question subsidiaire : 

Je veux pouvoir afficher entre 1 et 3 markups sur la mm note, et la syntaxe 
imbriquée de cons est très mal adaptée à ce genre de concept. J'ai essayé 
list et autres constructeurs, rien à faire, erreurs permanentes...

Je suis preneur de toute suggestion, et vous remercie d'avance.

Si besoin je peux mettre en ligne un fichier expurgé.

-- 
Cordialement, Daniel Cartron
« Le public, c'est les autres. »
François Cavanna - 4 rue Choron