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: Fri, 07 Jun 2013 07:43:08 +0200
User-agent: KMail/4.10.2 (Linux/3.8.0-23-generic; KDE/4.10.2; x86_64; ; )

Le vendredi 7 juin 2013 00:07:02 Gilles a écrit :

> Le pitch complet oui. Si tu  veux acceder aux différents composantes du
> pitch, tu as les fonctions que tu connais
> ly:pitch-octave, ly:pitch-notename, ly:pitch-alteration. Si tu préfères
> les avoir sous la forme de liste, tu écris
> 
> (let ((p (ly:music-property music 'pitch))
>    (list (ly:pitch-octave p) (ly:pitch-notename p) (ly:pitch-alteration 
p)))

Ce qui me manquait était l'enrobage de tout ça, le (let ((p (ly:music-
property music 'pitch)) en fait. Donc maintenant j'arrive à utiliser ces 
informations comme je veux.

Par contre dans ton code sur les articulations, j'ai vu qu'on peut 
effectivement récupérer les valeurs qui m'intéressent, et je n'ai gardé que:

#(let ((arti (ly:music-property manote 'articulations)))
    (for-each
      (lambda(evt)
        (let ((name (ly:music-property evt 'name)))
         (cond ((eq? name 'StringNumberEvent)
                  (display (ly:music-property evt 'string-number))
                  (newline)
                  )
               ((eq? name 'StrokeFingerEvent)
                  (display (ly:music-property evt 'digit)))
           )))
      arti))

mais si ça m'affiche bien les deux infos je n'arrive pas à injecter ces 
valeurs dans des variables pour les utiliser ailleurs... Si je met un define 
à la place des display ça coince, or je voudrais utiliser ces valeurs pour 
filtrer une liste avec :

#(define (btn-ref btn-lst dir row)
  (if 
    (or (equal? 1 (length btn-lst)) (equal? 0 dir) ) btn-lst
      (if (equal? 1 (length (filter (lambda (lst) (equal? (cadr lst) row) ) 
btn-lst ))) 
        (filter (lambda (lst) (equal? (cadr lst) row) ) btn-lst )
        (filter (lambda (lst) (equal? (car lst) dir) ) btn-lst ))))

row c'est la valeur de string-number (0 1 2 ou 3) et dir c'est digit (0 5 ou 
6), et btn-lst ressemble à ((5 1 2) (6 2 4)) de une à trois sous listes.

Je vois mal comment on pourrait mélanger les deux codes, c'est pourquoi 
j'essaye de passer par des variables, et de plus si dir n'est pas présente 
il faut utiliser la valeur précédente donc mémorisation nécessaire.

Merci pour toutes les lumières que vous me donnez.

-- 
Cordialement, Daniel Cartron
« La laideur a ceci de supérieur à la beauté, c'est qu'elle dure! »
Georg Christoph Lichtenberg




reply via email to

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