Se connecter
Se connecter

ou
Créer un compte

ou
Agrandir
Ajouter ce produit à
  • Mon ancien matos
  • Mon matos actuel
  • Mon futur matos
Ccrma Common Music

Logiciel de musique divers de la marque Ccrma

Écrire un avis ou Demander un avis
Avis
Comparateur de prix
Petites annonces

Sujet Se lancer dans la composition algorithmique et l'aide à l'écriture avec Common Music

  • 69 réponses
  • 6 participants
  • 5 306 vues
  • 8 followers
Sujet de la discussion Se lancer dans la composition algorithmique et l'aide à l'écriture avec Common Music
L'outil de composition ultime : Common Music, écrit par Heinrich Taube... http://www.music.uiuc.edu/facultyBio.php?id=85


En suite à ce thread : /environnement-de-developpement-audio/cycling-74/Max-MSP/forums/t.198444,travail-midi.html


Prérequis :

Common Music n'est rien de plus qu'une librairie de fonctions écrites en LISP. Ce n'est donc ni un logiciel, ni un plug-in. Pour se servir de ces fonctions, il faut s'y connaître un minimum en LISP. Mais il se trouve que ce langage de programmation, qui a désormais 50 ans, est très abstrait, très haut niveau, et enquiquine jamais ses utilisateurs avec des considérations informatiques ésotériques (comme la gestion de la mémoire...). C'est à mon sens un des langages les plus simples à maîtriser.

Pourquoi utiliser un langage de programmation et pas un outil graphique ?

Parce qu'ainsi, on bénéficie de toute la flexibilité de l'écriture pour définir, manipuler et modifier des structures musicales. Common Music permet donc de formaliser des idées musicales, de les développer, de les réutiliser d'un morceau à l'autre. C'est une sorte de "partition potentielle", pour reprendre un terme cher aux développeurs d'OpenMusic à l'IRCAM. Common Music, c'est la dimension abstraite de la musique : les structures, la notation, les algorithmiques, les "idées". Concrètement, ça génère des fichiers MIDI, qu'il faut ensuite exploiter dans un séquenceur avec des VSTi. Common Music ne produit donc que des notes, et pas des sons, d'où son rapprochement avec la notion de partition.

Comment commencer ?

La transcription hypertexte du livre de Taube est disponible ici : https://www.music.mcgill.ca/%7Eferguson/Notes%20from%20the%20Metalevel/nm/index.html.

Mais il faut également avoir un environnement LISP qui tourne. LISP est un très vieux langage qui possède une histoire très fournie. Plusieurs versions (on dit : "implémentations") de LISP on vu le jour en 50 ans. Aujourd'hui, je vous propose d'utiliser la version Allegro Common Lisp, de Franz Lisp.

Première chose : télécharger un environnement LISP. Je vous laisse aller là :
http://www.franz.com/downloads/allegrodownload.lhtml

Une fois installé, vous avez un environnement pour faire du LISP. Chouette. Mais comment ? LISP est avant tout un langage interprété : vous allez écrire des expressions dans la fenêtre de droite (dans des fichiers texte), puis les évaluer (grâce à Ctrl+E), et voir le résultat dans la fenêtre de gauche, dite fenêtre de debug.

Je ne vais pas faire ici un tuto pour le LISP, car Notes From The Metalevel propose d'apprendre le LISP en visant directement un usage compositionnel.

Seconde chose : il vous faut Common Music.
Alors... rendez-vous ici : http://commonmusic.sourceforge.net/doc/cm.html, téléchargez l'archive, et décompressez là qqpart. Vous avec un dossier "cm", qui contient le code source des fonctions.
Comment l'utiliser dans Allegro Express ? Fastoche ! Créez un nouveau fichier texte dans l'éditeur, et écrivez ces deux premières lignes :

(load "<chemin du dossier cm>/src/cm.lisp")
(in-package :cm)

Faites Ctrl+E sur chacune, et voilà que l'environnement se met à charger les fonctions...

And we're going to have this transitory cow fling thing right here in Cicely?

2

Citation : Et bien sûr, tout (les environnements LIPS + Common Music) est absolument gratuit.



amleth, j'ai suivi tes indications mais j'ai l'impression que la version d'Allegro Common Lisp, de Franz Lisp n'est fonctionnelle que durant 1 mois. Après, semble-t-il, il faut l'updater pour 599 dollars... Mais je me trompe peut-être...

De même, que faut-il télécharger pour Common Music. Moi je tourne sur windows et comme je ne vois pas de version pour cet OS, guide moi. Faut-il prendre dans "any". D'autre part, il y a cm, cm-gtk, Grace... Il faut aussi prendre midi share, je suppose. Ce n'est pas très clair quand on est novice.
3
La licence de la version express n'expire jamais. En tout cas, moi je tourne avec depuis des semestres, aussi bien sur ma version windows que linux.

Télécharge ça :

http://commonmusic.sourceforge.net/cm.tgz

Ce n'est que du code LISP, donc il n'y a ni version windows/osx/linux. Juste une archive, qui te donne le dossier "cm"...

And we're going to have this transitory cow fling thing right here in Cicely?

4
Bon, ça commence mal.
Tu me dis que pour charger les fonctions il faut faire ceci :

(load "<chemin du dossier cm>/src/cm.lisp"
(in-package :cm)

Donc, j'ai indiqué le chemin comme ceci :

(load "C:Program Filesacl81-expresscm/src/cm.lisp"
(in-package :cm)

Mais manifestement j'ai fait une erreur.
Mon dossier cm est inséré dans celui d'acl81. Où est mon erreur. Je sais que dans ce genre de formule tout à son importance, guillemets, parenthèses, etc... D'ailleurs, dans ton exemple, la première ligne n'est pas fermée par la parenthèse, ceci étant j'ai essayé mais c'est pareil.
5
Bon, il faut que je repasse sous Windows alors pour aller vérifier ça de mes mains.

A très vite...

And we're going to have this transitory cow fling thing right here in Cicely?

6
OK, j'ai testé sur mon PC windows.

Alors,

(load "c:/Program Files/acl81-express/cm/src/cm.lisp")
(in-package :cm)

Dans ce que tu m'as inqiqué, il manque un paquet de "/" pour séparer les répertoires... ;)


Un petit coup de

(note 57)

pour s'assurer qu'on a bien le la...


hihihi

And we're going to have this transitory cow fling thing right here in Cicely?

7

Citation : il manque un paquet de "/" pour séparer les répertoires...



Oui, je n'ai pas bien compris pourquoi car je les avais mis. Mais j'ai fait plusieurs copier-coller, je voulais éviter la petite figurine narquoise que tu insères. A éviter pour des exemples.
Sinon, le chemin est bon, sauf que tu n'as pas mis la fin de parenthèse sur la première ligne.

Je viens de me rendre compte que c'est AF qui met ces petites figurines, d'où la disparition de la fin de parenthèse...
Donc, pour moi, et pour d'autres sur PC qui seraient intéressés, le chemin à inscrire est donc celui-ci :

(load "c:/Program Files/acl81-express/cm/src/cm.lisp")
(in-package :cm)

Avec les guillemets et les parenthèses. Autant que ma souffrance d'être complètement désemparé serve à quelque chose.

Et maintenant que le package est chargé que me conseilles-tu de faire. Il y a-t-il des patchs de démonstration que je pourrais regarder ?

Sinon, il y a des pièges. Je ne te dis pas pour les débutants qui n'ont jamais approché Lisp, ça ne va pas être évident. Exemple :
J'ai évalué
cm> 44100
44100
cm> #xFFFF
65535
cm> .500
0.5
cm> "Ondes Martenot"
"Ondes Martenot"
cm>

et au début je ne voyais rien. Car je me référais au tutorial de Taube mais je ne voyais aucun résultat apparaître. Et pour cause. Puis je me suis rappelé, grâce à Patchwork et Open Music, qu'il y avait un éditeur et la fenêtre "debug" et où apparaissent les résultats. Chose, d'ailleurs que tu avais signalé plus haut mais dont on ne se rappelle plus quand on est face à l'interface. Donc, pour ceux qui veulent se lancer comme moi, comme ça je ne serai pas seul, il y a la fenêtre d'éditeur et à côté la fenêtre debug, c'est là que vous trouverez les résultats.

De même, le backquote caractère, au début on se fait avoir, on prend l'apostrophe et ce n'est pas bon.

J'ai regardé les calculs, la fonction random, tout ça c'est bon. Je retrouve quelque part mes marques de Patchwork.

Mais j'ai des soucis avec
(define albans-row '(0 3 7 11 2 5 9 1 4 6 8 10)), je n'obtiens qu'un message d'erreur.

Mais maintenant, comment je passe à CM Car pour l'instant, c'est uniquement du Lisp ?

Mais c'est vraiment sympa. Ca me plait.
.
8
ça fait quoi comme résultat ?

C'est un script du genre KARMA?
9
--- une précision utile qui peut servir à tout le monde ---


AH, HONTE SUR MOI !

J'ai oublié de vous préciser quelque chose d'hyper important.

Il existe deux principaux dialectes LISP : le Common LISP et le SCHEME.

A notre niveau, et pour ce que nous voulons faire, il n'y a qu'une infimie différence purement syntaxique :

EN LISP :

Pour définir une variable, on fait (setq blip "blop"), ce qui a pour effet de mettre la chaîne "blop" dans une variable nommée blip.
Le setq est une contraction de "set quote", le "quote" (') en LISP permettant de bloquer l'évaluation. Et oui, au moment de son affectation, la variable blip ne possède encore aucune valeur, il faut donc bloquer son évaluation.

Pour définir une fonction, on fait :

(defun nom-fonction (param1 param2 param3)
(print "coin coin"))


PAR CONTRE, EN SCHEME :

On fait identiquement :

(define blip "blop")

(define (nom-fonction param1 param2 param3)
(print "coin coin))


OR, IL SE TROUVE QUE LE LIVRE DE TAUBE EST ECRIT EN SCHEME... et que je vous ai guidé vers un environnement Commpon LISP. Mea Culpa, c'est une déformation professionnelle. Common Lisp est un langage bien plus puissant que Scheme, même si pour faire tourner Common Music, on s'en moque un peu. A force de n'utiliser que Common Lisp, j'en oublie même que Scheme existe. Désolé de vous avoir fait perdre du temps là-dessus.



Deb76, pour commencer, en dehors du livre hypertexte que tu connais déjà, il existe quatre petits fichiers très bien faits dans le dossier "cm" :

/cm/etc/tutorials/

Commencer par intro.lisp...
Qui te permettra de faire un joli sinus qui s'entend !

Il y a d'autres fichiers de démo bien fouttus dans :

/cm/etc/examples/

Il existe un dictionnaire (HTML) des fonctions, très clair :

/cm/doc/dict/index.html



Voilà pour l'instant, tiens moi au courant et pose moi des questions plus précises quand tu auras jeté un oeil à tout ça...


Th.

And we're going to have this transitory cow fling thing right here in Cicely?

10

Citation : C'est un script du genre KARMA?



kezako ?

And we're going to have this transitory cow fling thing right here in Cicely?