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: elmamyra
Subject: Re: [Fisarmonica] - comment utiliser \musicMap ?
Date: Thu, 6 Jun 2013 04:54:31 -0700 (PDT)

Daniel Cartron-2 wrote
> Je dois oublier qq chose qq part parce que ça ne marche pas, c'est soit
> vide
> soit unbound, et les lignes pitch-notename etc. que j'ai commentées me
> plantent tout.

Le fait d'utiliser "\displayMusic" n'envoie pas une liste de musique dans ta
fonction, mais affiche simplement la musique dans la console.
"note-event" contient en fait un "RelativeOctaveMusic". Il te faut donc
récupérer les "NoteEvent". Voici un petit exemple qui permet d'afficher le
pitch et le nom des articulations de chaque note:

\version "2.16.0"
\language "italiano"

#(define (display-info mus-elt)
   (let ((articulations (ly:music-property mus-elt 'articulations)))
     (newline)(display "__________________  ")(newline)
     (display-scheme-music mus-elt)
     (display (ly:music-property mus-elt 'pitch))
     (for-each (lambda (arti)
          (newline)(display (ly:music-property arti 'name))
       )
       articulations
     )
     mus-elt
   )
)

diatoTab = #(define-music-function (parser location mus) (ly:music?)
   (let* ( 
          (relativeMusic (ly:music-property mus 'element) )
          (music-list (ly:music-property relativeMusic 'elements))
         )
     (for-each (lambda (mus-elt)
           (if (eq? (ly:music-property mus-elt 'name) 'NoteEvent)
               (display-info mus-elt)
           )
       )
       music-list
     )
   mus
   )
)


Melody = \relative sol'  {
      si4\2-1\rightHandFinger #5 do\3-2 re\1-4
}

\score { \new Staff << \diatoTab \Melody >> }

Ensuite je pense que ton but est de pouvoir modifier les notes et les
articulations, pour ce faire tu peux remplacer le for-each par map. Un petit
exemple qui descend le pitch d'un octave et met les  tous les doigtés à 1:

\version "2.16.0"
\language "italiano"

#(define (appli-change mus-elt)
   (if (eq? (ly:music-property mus-elt 'name) 'NoteEvent) 
       (let* (
              (pitch (ly:music-property mus-elt 'pitch))
              (pitch-oct (ly:pitch-octave pitch))
              (pitch-name (ly:pitch-notename pitch))
              (pitch-alt (ly:pitch-alteration pitch))
              (articulations (ly:music-property mus-elt 'articulations))
            )
         
          (ly:music-set-property! mus-elt 'pitch (ly:make-pitch (1-
pitch-oct) pitch-name pitch-alt))
          
          (for-each (lambda (arti)
                (if (eq? (ly:music-property arti 'name) 'StringNumberEvent)
                     (ly:music-set-property! arti 'string-number 1)
                     (ly:music-set-property! arti 'digit 1)
                )
             )
             articulations
          )
         mus-elt
       )
       mus-elt
   )
)

diatoTab = #(define-music-function (parser location mus) (ly:music?)
   (let* ( 
          (relativeMusic (ly:music-property mus 'element) )
          (music-list (ly:music-property relativeMusic 'elements))
         )
     (ly:music-set-property! relativeMusic 'element (map appli-change
music-list))
     
     mus
   )  
)

Melody = \relative sol'  {
      si4\2-1\rightHandFinger #5 do\3-2 re\1-4
}

\score { \new Staff << \diatoTab \Melody >> }





--
View this message in context: 
http://lilypond-french-users.1298960.n2.nabble.com/Fisarmonica-comment-utiliser-musicMap-tp7579923p7579935.html
Sent from the LilyPond French Users mailing list archive at Nabble.com.



reply via email to

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