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

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

Re: [Fisarmonica] - comment utiliser \musicMap ?


From: Daniel Cartron
Subject: Re: [Fisarmonica] - comment utiliser \musicMap ?
Date: Sat, 08 Jun 2013 10:33:11 +0200
User-agent: KMail/4.10.3 (Linux/3.8.0-23-generic; KDE/4.10.3; x86_64; ; )

Bonjour tout le monde,

J'ai enfin réussi à écrire ma fonction, et elle marche !

Sauf que j'ai encore un petit défaut... 

Le début de la fonction me fabrique une liste btn-lst du genre ((5 1 2)) 
mais ça peut aussi être ((5 1 2) (6 2 3)) voire ((5 1 2) (6 2 3) (5 3 4)).

À partir de ça je fabrique un markup que j'ajoute à la note. Le markup est 
fabriqué à partir des sous listes et ajouté à la note avec le code ci-
dessous.

Mon problème est que pour l'instant seule la première sous-liste est 
traitée, alors que j'aimerais les traiter toutes et ajouter de 1 à 3 markups 
à la note. J'ai essayé de déplacer les (cond...) (nécessités par le fait 
qu'il y a deux systèmes de tablature qui ne s'écrivent pas du tout pareil) 
dans la dernière partie pour faire un for-each mais erreurs à chaque fois. 

Donc je fais encore une fois appel à votre aide pour déméler tout ça. 

Je me doute qu'une fois que ce sera dans une boucle for-each, les caddar et 
autres changeront mais ce n'est pas ça qui me pose problème, c'est les 
imbrications... Dont notamment le (cons...) qui ajoute les markup aux 
articulations.

Voici la partie du code que j'aimerais modifier comme indiqué ci-dessus :

; builds the button number depending on the tablature system
  (cond
    ( (and (equal? (assoc-ref syst "name") "Cadb") (equal? (cadr btn-lst) 2) 
)
      (set! btn (string-append (caddr btn-lst) "'")) )
    ( (and (equal? (assoc-ref syst "name") "Cadb") (equal? (cadr btn-lst) 3) 
)
      (set! btn (string-append (caddr btn-lst) "''")) )
    ( else
      (set! btn (caddar btn-lst)) )
  )
; builds the markups depending on the tablature system
  ( cond
    ((equal?(cadr(assoc-ref syst (list (caar btn-lst) (cadar btn-lst)))) 
"mkso") 
     (set! mkup (markup #:line (#:with-color pshcolor (#:simple btn)))) )
    ((equal?(cadr(assoc-ref syst (list (caar btn-lst) (cadar btn-lst)))) 
"mksi") 
     (set! mkup (markup #:line (#:with-color pllcolor (#:simple btn)))) )
    ((equal?(cadr(assoc-ref syst (list (caar btn-lst) (cadar btn-lst)))) 
"mkui") 
     (set! mkup (markup #:line (#:with-color pllcolor (#:underline btn)))) )
    ((equal?(cadr(assoc-ref syst (list (caar btn-lst) (cadar btn-lst)))) 
"mkco") 
     (set! mkup (markup #:line (#:with-color pshcolor (#:column (#:line 
(#:simple btn) #:null))))) )
    ((equal?(cadr(assoc-ref syst (list (caar btn-lst) (cadar btn-lst)))) 
"mkci") 
     (set! mkup (markup #:line (#:with-color pllcolor (#:column (#:line 
(#:underline btn) #:null))))))
 )

  ; add the markup to the note
  (set! (ly:music-property evt 'articulations)
  
  (cons (make-music 'TextScriptEvent 
    'direction (car(assoc-ref syst (list (caar btn-lst) (cadar btn-lst))))
      'text mkup
      )
    (ly:music-property evt 'articulations) )
  )
  evt)

Merci d'avance.

-- 
Cordialement, Daniel Cartron
« Tout le monde savait que c'était impossible. Il est venu un imbécile qui 
ne le savait pas et qui l'a fait. »
Marcel Pagnol




reply via email to

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