C Composer avec Supercollider m’oblige à réfléchir un peu plus à la structure harmonique et mélodique de mes compositions. C’est évidemment faisable par les moyens classiques, mais Supercollider comporte des fonctions intégrées de transposition qui peut faciliter la tâche. Cela m’a semblé aussi être une bonne porte d’entrée pour commencer à utiliser musicalement Supercollider.
P Pour réaliser la petite mélodie suivante (qui se répète 2 fois), j’ai préféré utiliser Supercollider comme un séquenceur qui déclenchait les notes via des messages midi qui étaient reçu par Logic Pro via un bus midi créé sous OS X à cet effet. J’ai par ailleurs utilisé Pianoteq 7 pour jouer les notes midi entrantes auquel j’ai ajouté une réverbération grâce au plugin Valhalla Vintage Verb. Le code Supercollider correspondant est le suivant :
//Lance le serveur de Supercollider, sans ce lancement, les commandes suivantes n'auraient aucun effet. s.boot; //Initialise les commandes midi MIDIClient.init; //Indique les différentes interfaces (ou bus) midi présent(e)s sur cet ordinateur MIDIClient.destinations ; // Il faut repérer l'ordre des bus midi, le premier porte le n°0, le second 1, etc. // Ici je sélectionne la deuxième sortie midi qui correspond à un bus interne à OSX qui permet d'envoyer du midi entre les différentes applications midi lancées sur la session, je la sélectionne en stockant son numéro dans une variable, pour pouvoir l'indiquer plus tard quand j'en aurai besoin. m = MIDIOut.new(1); m.latency = 0; // Pour afficher les différentes gammes : Scale.directory; // Pour afficher une gamme particulière et la sélectionner : Scale.HarmonicMinor; // Une petite mélodie qui utilise des notes indiquées en degré de la gamme, c'est plus facile pour composer. Cela permet de changer de gamme sans avoir à changer toutes les notes ! C'est cela la puissance de Supercollider changement de gamme et transposition qui respecte chaque gamme. Je trouve que cela permet de mieux réfléchir à la composition en terme de gamme, quitte à faire des escapades quand on le veut (que je ne fais pas ici). ( p = Pbind( \type, \midi, //Indique quelle commande envoyer par midi, là c'est la commande noteOne \midicmd, \noteOn, //Indique l'interface midi utilisée, le numéro de l'interface est stocké dans la variable m. Cela a été fait plus haut. \midiout, m, //Sélectionne la gamme mineur harmonic \scale, Scale.harmonicMinor, //Indique sur quel canal midi émettre, le 0 représentant le premier canal \chan, 0, //Joue une séquence de degré dans cette gamme, 0 étant le premier degré. \degree, Pseq([0,3,2,-3,6,5],inf), //Transposition modale qui permet de rester dans la gamme tout en transposant, évidemment si la transposition se fait à chaque note, cela change la mélodie initiale. \mtranspose, Pseq([0,0,0,0,0,0,2,2,2,2,2,2,-3,-3,-3,3,3,3,5,5,5,5,5,5,4,4,4,0,0,-5],2), //Sélectionne de manière aléatoire la vélocité de la note, \amp, Pexprand(75,100,inf)/127, //Sélectionne la durée du note on, c'est-à-dire la fin de chaque note \sustain, Pseq([1/2,1.2/4,1.2/4,1.2/2,1/2,0.9],inf), //Sélectionne le rythme de chaque note, c'est-à-dire le début de chaque note \dur, Pseq([1/2,1/4,1/4,1/2,1/2,1],inf), ).play; ) //La commande suivante permet d'arrêter la séquence avant qu'elle ne se termine. p.stop;