programmer ?

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

···

Le Fri, 16 Dec 2011 23:18:21 +0100, douwen elo <****@****> 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

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 ?

···

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

Le Fri, 16 Dec 2011 23:18:21 +0100, douwen elo <****@****> 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

Sacha

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

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
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
Guile Reference Manual

Gilles

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 !!!

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
  }

···

Le 17 déc. 2011 à 10:28, Philippe Nenert a écrit :

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

···

On Dec 16, 2011, at 11:18 PM, douwen elo wrote:

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

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 ?

···

Le 17 déc. 2011 à 11:44, Nicolas Sceaux a écrit :

Le 17 déc. 2011 à 10:28, Philippe Nenert a écrit :

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 !!!

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
}

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

···

Le 17/12/2011, "****@****" <****@****> a écrit:

On Dec 16, 2011, at 11:18 PM, douwen elo wrote:

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

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

A web page that points a browser to a different page after 2 seconds

Cordialement,
~Mike

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.