Subject: programmer ?

From: douwen elo <[email-masked]>
Date: Fri, 16 Dec 2011 23:18:21 +0100

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

---

From: Gilles <[email-masked]>
Date: Sat, 17 Dec 2011 00:39:22 +0100

Le Fri, 16 Dec 2011 23:18:21 +0100, douwen elo <[email-masked]> a

> faire des trucs super originaux

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

---

From: Philippe Nenert <[email-masked]>
Date: Sat, 17 Dec 2011 10:28:47 +0100

Le 17 déc. 2011 à 00:39, Gilles a écrit :

> -make-music est la fonction qui te permet de créer toutes les éléments musicaux dans Lilypond.

Dans un autre registre, (je n'ai pas “encore” regardé la doc) pouvons-nous récupérer des paramètres de la ligne de commande ?

En effet je colorie les partitions en fonction de la voix pour facilité le suivi par les chanteurs. 
Au lieu d'avoir 5 partitions, si je pouvais en avoir une avec une récupération de paramètres, puis de la programmation, ce serait super, extra, mahous costaux !!!

Philippe
Qui se met donc au scheme derechef.
PS : peux-on avoir un autre “wrapper” pour programmer avec un autre langage ? Do it ! vous me direz, mais par où commencer ?

---

From: Nicolas Sceaux <[email-masked]>
Date: Sat, 17 Dec 2011 11:44:03 +0100

> Au lieu d'avoir 5 partitions, si je pouvais en avoir une avec une récupération de paramètres, puis de la programmation, ce serait super, extra, mahous costaux !!!

Oui on peut récupérer les arguments passés sur la ligne de commande
avec -d, par exemple :

  lilypond -dvoice=soprano  toto.ly

ensuite, on peut récupérer l'option "voice" dans le fichier .ly de cette manière :

#(define (voice-color voice-name)
   (if (eqv? voice-name (ly:get-option 'voice))
       darkblue
       black))

<<
  \new Staff \with { \override NoteHead #'color = #(voice-color 'soprano) } {
    c' d' e' f'
  }
  \new Staff \with { \override NoteHead #'color = #(voice-color 'basse) } {
    \clef "bass" c d e f
  }

---

From: "[email-masked]" <[email-masked]>
Date: Sat, 17 Dec 2011 11:57:45 +0100

> ça colleriat parfaitement à l'esprit du programme et àa permettrait de faire des trucs super originaux

Il y a un module Python qui s'appelle "abjad" - c'est excellent pour ce genre de chose :

http://packages.python.org/Abjad/

Cordialement,
~Mike

---

From: Philippe Nenert <[email-masked]>
Date: Sat, 17 Dec 2011 12:11:22 +0100

>  \new Staff \with { \override NoteHead #'color = #(voice-color 'basse) } {

Nicolas, 
Mille merci ...

PS : pour comprendre et appliquer scheme, j'ai trouver de fil en aiguille drscheme http://plt-scheme.org/ qui s'appelle maintenant  racket http://racket-lang.org/ 
Est-ce la bonne voie ?

---

From: <[email-masked]>
Date: Sat, 17 Dec 2011 11:19:03 +0000

Merci Mike pour cette info : cela fait bien longtemps que je trouve mes
fichiers maître honteusement redondants, et que je souhaite compiler
"de l'extérieur" les fichiers de i=0 à n !

A bientôt
JMArc

---

From: Eluze <[email-masked]>
Date: Sat, 17 Dec 2011 06:44:03 -0800 (PST)

en apdaptant la fonction de Nicolas on peut aussi mettre dans un fichier

#(define (voice-color voice-name)
   (if (eqv? voice-name (ly:get-option 'myVoice))
green))

#(ly:set-option 'myVoice 'soprano)
\book { \include "maPartition.ly" }

#(ly:set-option 'myVoice 'basse  )
\book { \include "maPartition.ly" }

ce qui permet de générer toutes les variations d'un seul coup.

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