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

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

Re: programmer ?


From: Gilles
Subject: Re: programmer ?
Date: Sat, 17 Dec 2011 00:39:22 +0100
User-agent: Opera Mail/11.60 (Win32)

Le Fri, 16 Dec 2011 23:18:21 +0100, douwen elo <address@hidden> a
écrit:

salut à tous
lilypond étant super mathématique comme interface
et étant insérable dans latex... tout un esprit
je me demandais si on pouvait programmer aevc lilypond
style
for i =1 to 8
\transpose c c+i {mélodie}
end i
ça colleriat parfaitement à l'esprit du programme et àa permettrait de faire des trucs super originaux
de la création, vraiment

Sacha

Oui mais c'est pas du C mais du scheme (= GUILE voir lien ci-dessous).

Avec scheme et Lilypond, on peut faire quelque chose comme ça :

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
myTranspose = #(define-music-function (parser location music) (ly:music?)
(let* ((n 8)
       (list1 (make-list n))
          ; list de n elts
       (list2 (map (lambda (x)(ly:music-deep-copy music)) list1))
          ; initialisation
       (list3 (map (lambda(i)
                     (ly:music-transpose
                       (list-ref list2 i)
                            ; transpose chaque elt à
                       (ly:make-pitch 0 i 0)))
                           ; la note au dessus
                   (iota n))))             ; 0, 1 ... 7
           (make-music 'SequentialMusic 'elements list3)))
                     %% identique à  { ... }

music = { c'4 }

{ \myTranspose \music }


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
Bon on pourrait tout faire plus court mais j'ai délayé un
peu pour commenter ...
-Les fonctions qui commencent par ly: sont des fonctions Lilypond (faire
rechercher dans l'aide).
-make-music est la fonction qui te permet de créer toutes les éléments musicaux dans Lilypond.
 Faire \displayMusic \music pour savoir le nom d'un élément musical.
-Les autres fonctions sont à rechercher dans
http://www.gnu.org/software/guile/manual/guile.html


Gilles



reply via email to

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