met en oeuvre le langage Lisp
Ca ne m'étonne pas. Les principaux softs de recherche développés par l'Ircam, comme Patchwork ou Open Music, ont été développés en Lisp.
J'ai regardé - mais qu'elles sont longues à charger les vidéos - il utilise le Schème et c'est effectivement très sympa. Mais pour le peu que j'ai vu - mais je n'ai pas tout regardé - c'est parfois un peu trop chaotique avec l'utilisation quasi exclusive de la fonction Random. J'en suis un adepté mais de façon maîtrisée, c'est à dire de pouvoir avoir le choix de refuser tel ou tel évènement. C'est pour ça que j'ai tendance à privilégier le temps différé. Mais ne boudons pas notre plaisir.
Pour ma part, j'utilise Common Music, lui aussi en Lisp.
Notamment pour obtenir des suites de séries dodécaphoniques avec un fichier midi. Ca donne ça :
(defun ran-row (end)
(let ((rows (new transposer
:of (new cycle :of '(0 1 6 -5 10 11 5 16 15 21 26 20))
:on (new weighting :keynums '(c4 cs3 b3 fs4 fs3))))
(rhys (new weighting
:of `((t :min (s :min 1)
(q :weight 3)
(te :min 3) (tq :min 3)
,(new cycle :of '(e. s))
(e :weight 2))))
(amps (new weighting :of '((mf :weight 7)
(mp :weight 3)
p))))
(process while (< (now t) end)
for k = (next rows)
for r = (rhythm (next rhys) 70)
for a = (amplitude (next amps))
output (new midi :time (now)
:keynum k :amplitude a
:duration r)
wait r )))
(events (ran-row 30) "tansaa12.mid") Une chose aussi très intéressante, c'est à partir d'une série dodécaphonique, c'est de pouvoir appliquer le tableau de transformation qu'avait défini Pierre Boulez en écrivant dans les années 50 à John Cage et paru dans "Points de Répères". C'est Amleth, un prof d'université et qui travaille avec Common Music, qui m'a créé le patch.
Sur une série sur laquelle je travaille autour de mon projet avec le poète Claude québecois Beausoleil, et qui a fait un poème, entre autres, sur Billie Holyday, je reprends les premières notes de "Strange Fruits" et je complète avec le reste pour obtenir la série de 12 notes, le total chromatique. Et comme je souhaitais effectuer une série de permutations, j'étais très intéressé par le tableau de Boulez. A reporter, à effectuer les calculs de permutations, c'était long et fastidieux. Avec Common Music, le temps d'écrire le code, et le résultat est immédiat :
Le patch pour obtenir les permutations de La série "je suis un voyageur que le langage invente"
;; voyageur's row !
(setq br '(60 65 55 68 59 52 61 62 58 66 63 57))
;; Fonction auxiliaire de transposition d'une série selon un intervalle
(defun transpose-row (reihe intervall)
(loop for pc in reihe collect (mod (+ pc intervall) 12)))
;; Renvoie la série des indexes de chacune des composantes de "reihe" au sein de "grundgestalt"
(defun indexes-in-gg (grundgestalt reihe)
(let ((gg (rowmod12 grundgestalt))
(rr (rowmod12 reihe)))
(loop for x from 0 to (- (length grundgestalt) 1)
collect (position (list-ref rr x) gg))))
;; Renvoie une série "aplatie" entre 0 et 11
(defun rowmod12 (reihe)
(loop for x from 0 to (- (length reihe) 1)
collect (mod (list-ref reihe x) 12)))
;; Fonction principale
(defun make-voyageur-chart (reihe)
(loop for r from 0 to (- (length reihe) 1)
collect (indexes-in-gg reihe (transpose-row reihe (- (first reihe) (list-ref reihe r))))))
;; Pour afficher le beau tableau...
(loop for x in (sort (make-voyageur-chart br) #'< :key #'first)
do (print x)) Et son résultat :
MAKE-VOYAGEUR-CHART
(0 1 2 3 4 5 6 7 8 9 10 11)
CM(16):
(0 1 2 3 4 5 6 7 8 9 10 11)
(1 8 0 6 5 11 9 2 10 4 3 7)
(2 0 7 10 9 4 3 11 1 6 8 5)
(3 6 10 5 2 0 11 8 9 7 4 1)
(4 5 9 2 8 10 0 6 11 1 7 3)
(5 11 4 0 10 3 1 9 7 8 2 6)
(6 9 3 11 0 1 7 10 4 2 5
(7 2 11 8 6 9 10 5 0 3 1 4)
(8 10 1 9 11 7 4 0 3 5 6 2)
(9 4 6 7 1 8 2 3 5 0 11 10)
(10 3 8 4 7 2 5 1 6 11 9 0)
(11 7 5 1 3 6 8 4 2 10 0 9) Je n'ai plus qu'à reporter les notes midi en conséquence et j'ai mes permutations.
PS : Maka, quand te mets-tu à Open Music, il est en version libre et il vient d'être upadaté par l'Ircam en version 6 pour le Mac ?