Max/MSP Introducion
Transcription
Max/MSP Introducion
TRANSFERT DE CONNAISSANCE ET FORMATION EN ART TECHNOLOGIQUE Max/MSP Introducion :: création audio et visuelle en temps réel Cours 2 : introduction audio ENSEIGNANT: Alexandre Quessy 2008/2009 Société des arts technologiques 1197 boulevard Saint-Laurent C.P. 1083 Succursale Desjardins Montréal (Québec) H5B 1C2 2 DESCRIPTION DU COURS Descriptif : Une formation de 18 heures en trois cours animée par Alexandre Quessy. Les cours permettent de s’introduire à l’utilisation de Max/MSP, un logiciel de création audio et visuelle en temps réel. La formation complète est divisée en trois sessions de 6 heures : introduction générale, introduction à l'audio (la composante « MSP » du logiciel), introduction à la vidéo avec Jitter. Contenu : Prendre connaissance des possibilités offertes par le dataflow; Comprendre le flot des données entre les objets dans Max/MSP; Apprendre à concevoir des programmes interactifs; Se familiariser avec les principaux objets de création audio et musicale; Se familiariser avec la création vidéo, visuelle et d’images générées; Expérimenter la capture vidéo et la catpure sonore en direct; Matériel requis : Aucun matériel n’est requis. Les étudiants sont invités à apporter leur ordinateur avec le logiciel Max 5 installé (http://www.cycling74.com). Max 5 est compatible avec Mac OS X et Windows. Il est gratuit pour les 30 jours, et il est possible par la suite de l'acheter. Des forfaits spéciaux sont disponibles pour les étudiants : il suffit d'envoyer l'image de notre carte étudiante par courriel à la compagnie pour en bénéficier. Cours 2 : Introduction audio Objectifs : Se familiariser avec les objets de l'audio utilisés dans Max/MSP; S’introduire aux échantillonneurs, aux oscillateurs, synthétiseurs et séquenceurs; Comprendre la communication MIDI; Prérequis : Max/MSP Introduction Durée : 6 heures SAT[TransForm] transform.sat.qc.ca 2007/2008 3 Théorie Les bases de Max/MSP : objets et messages Lorqu'on utilise une patche, on peut cliquer sur les boîtes de message, les boutons et les chiffres. Quand on dévérouille la patche, il est possible de modifier les connexions entre les objets et les autres éléments dans la patche. On peut également ajouter d'autres éléments. C'est ce qu'on peut appeler le mode d'édition. Les boîtes de message ont comme couleur de fond le gris ou une autre couleur. Les objets, eux, ont toujours le fond blanc. Les connexions peuvent communiquer des messages, du signal sonore ou des matrices Jitter. Les lignes qui communiquent du signal audio sont jaune et noir, et celles qui communiquent des matrices sont vert et noir. Les autres sont simplement plus minces. Les entrées des objets sont situées sur le dessus de leur boîte rectangulaire. Leur sorties sont situées en-dessous. Les messages vont donc de haut en bas. Pour connecter deux objets ou boîtes de messages, il faut être en mode d'édition et cliquer sur la sortie d'un objet, puis déplacer la sortie au-dessus de l'entrée d'une autre objet en gardant le bouton de la sortie enfoncé. Lorsque l'on relâche le bouton de la souris, une nouvelle connexion est née ! Dans la boîte d'un objet, le premier mot est le nom de l'objet comme tel. Ce mot définit son comportement. Les mots suivants sont des arguments de création de cet objet et influencent également, dans une moindre mesure, son comportement. Certains de ces arguments sont des attributs dont on peut changer la valeur au moyen de messages spéciaux. On peut savoir comment utiliser un certain objet en consultant sa patche d'aide au moyen de l'aide contextuelle (un clic droit) et en choisissant d'ouvrir sa patche d'aide. Les menu « Help » de Max/MSP contient également des tonnes de ressources utiles. Le bouton « i » en bas de chaque patche permet d'ouvrir l'inspecteur, une fenêtre qui en dit long sur l'objet qui est sélectionné au moment d'appuuyer sur ce bouton. On peut copiercoller un ou plusieurs objets d'une patch à l'autre, un peu comme dans un logiciel d'illustration vectorielle. La plupart des objets qui gèrent des messages ont une seule entrée qui, lorsqu'elle reçoit un message, active l'envoi d'un autre message résultant d'un calcul par un de ses sorites. L'entrée active est celle à l'extrême gauche, et les autres ne sont pas actives. Elles ne font que changer les valeur stockées à l'interne par l'objet. Tout les objets ne suivent pas ces critères. À la sortie, les messages sortent habituellement de la sortie la plus à droite en premier, et ensuite des autres. Si plusieurs objets sont connectés à une même sortie, c'est celui situé le plus à droite dans la patche qui reçoit le message en premier. Les messages peuvent être des nombres entiers ou à virgule flottante, des « bang » ou encore des symboles. (du texte) Il peuvent également être des listes comportant plusieurs atomes de l'un de ces types. Les objet de base pour gérer des listes de messages sont [pack] et [unpack]. Les messages comportant les symboles spéciaux « $1 », « $2 », etc. peuvent servir au même genre d'opération que [pack]. Les objets [select] et [route] servent à rediriger un message selon sa valeur ou celle de son premier atome. L'objet SAT[TransForm] transform.sat.qc.ca 2007/2008 4 [trigger] permet de séquencer et des convertir le type d'un message vers ses différentes sorties. Ses sorties sont activées de droite à gauche, tel que l'ordre standard des messages dans Max/MSP le stipule. La configuration du chargement des fichiers dans Max/MSP Les externals sont des objets qui sont ne font pas partie de la distribution de Max/MSP, et qui peuvent être trouvés sur Internet. Les sous-patches [patcher], ou [p] sont des sousfenêtres à l'intérieur d'une patche. Une abstraction est une patche qui est utilisée comme un objet dans dans d'autres patches. Les abstractions, externals et documents médiatiques doivent se trouver dans un « path » où Max/MSP cherche afin d'être trouvé et chargé. On peut ajouter le chemin d'un répertoire dans un « path » de Max/MSP en utilisant le dialogue « File preferences... » du menu « Options ». Max/MSP cherche également les fichiers à charger dans le dossier de la patche en cours. La configuration audio dans Max/MSP L'item « DSP Status... » du menu « Options » de Max/MSP est l'endroit où se configure le traitement de signal audio. Le traitement de l'audio peut être activé ou non, et on peut y choisir le pilote, ainsi que l'interface audio à utiliser pour les entrées et les sorties. Le taux d'échantillonnage est habituellement de 44100 Hz et devrait rester bas si l'on fait des calculs audio très complexes ou l'on dispose d'un ordinateur qui ne soit pas très puissant. Il est une bonne pratique que d'utiliser un ordinateur différent pour le traitement du son et celui de la vidéo si l'on fait les deux dans le cadre d'un même projet. L'option « I/O Vector Size » correspond au nombre d'échantillons qui sont transférés à la fois en entrée et en sortie à l'interface audio. Diminuer ce nombre pourrait donner une latence plus courte, et donc plus de rapidité entre l'entrée d'un son par le micro et la sortie du son traité dans les enceintes audio. Cependant, si l'ordinateur utilisé n'est pas assez rapide pour traiter ces échantillons, ou si l'interface audio est d'une qualité discutable, il se peut que des « clics » soient entendus si la taille du tampon est trop petite. Dans ce cas, il faut augmenter ce nombre. Les séquenceurs : une série d'événements dans le temps En musique, le temps est habituellement divisé en mesures, elle-même divisées en temps. Le plus souvent, on trouvera des mesures comportant 4 temps. En musique électronique, les séquenceurs sont des appareils qui servent à disposer le déclanchement de sons dans le temps. Ils ont la plupart du temps 16 « steps ». Seize cases où l'on peut y placer un son. Construire un séquenceur est très facile avec Max/MSP. Il suffit de créer un objet [metro] avec comme argument une durée en millisecondes. On peut alors connecter celui-ci dans un objet [counter] avec un argument comme « 7 », pour qu'il compte 8 temps. Ce compteur comptera de 0 à 7 sans arrêt une fois que le métronome sera activé en lui envoyant le chiffre « 1 ». Si on branche la sortie de ce compteur dans un objet « select » avec les argument « 0 1 2 3 4 5 6 7 », chacune des sorties de ce dernier objet, sauf la dernière, donneront un « bang » quant le chiffre sera à l'index correspondant. On peut alors activer toutes sortes d'événements selon notre désir. SAT[TransForm] transform.sat.qc.ca 2007/2008 5 Il s'agit ici d'un séquenceur très simple, mais qui peut être la base d'une patche très évoluée. Pour enregistrer des séquences d'événements dans le temps et les faire rejouer par la suite, les objets [seq] et [mtr] peuvent être très utiles. Leur usage est cependant un peut plus complexe. L'objet [coll], quant à lui, pourrait être utilisé pour stocker n'importe quelle collection de données, comme une liste de fichiers, ou un liste d'événements dans le temps. Le protocole MIDI Depuis 1982, le protocole MIDI est le standard le plus courant pour la communication entre les instruments de musique électronique et les ordinateurs. Les messages sont des chiffres qui correspondent à des événements comme note-on (début de note) et note-off. (fin de note) Il y a également le message pitch-bend qui permet de changer avec finesse la hauteur de la note, ainsi que des message de contrôle. Chaque message a un identificateur de canal, ce qui permet d'utiliser jusqu'à 16 instruments différents à la fois sur un seul câble. Les notes sont numérotées de 0 à 127 avec une résolution d'un demi-ton. Le do central correspond au chiffre 60. Les objets [notein], [ctlin] et [bendin] permettent d'obtenir les messages MIDI d'un instrument grâce à Max/MSP. Les objets [mtof] et [ftom] sont utiles pour convertir une note MIDI en fréquence, et l'inverse. L'objet [poly] rend plus facile la gestion de plusieurs notes MIDI dont on reçoit les signaux de début et de fin de note. Les bases de la théorie musicale Dans la théorie musicale occidentale classique, les notes sont séparées en octave. Une octave comporte 12 demi-tons. Dans le système tempéré, comme c'est le cas en MIDI, les 12 demi-tons sont égaux. Le système tonal sépare l'octave en 7 notes de musique qui constituent la gamme. Une gamme est soit majeure, soit mineure, est est identifiée par sa tonique – par exemple, la gamme de do majeure est constituée des notes blanches sur un clavier de piano. Il y a également d'autres systèmes comme les modes que je vous laisse le soin d'explorer. Une gamme pentatonique comporte seulement cinq sons et peut être très intéressante à explorer pour les débutants. Les accords consistent en plusieurs notes entendues simultanément. Un accord parfait majeur comporte trois sons. Par exemple, un accord de do majeur comporte les notes do, mi et sol. L'échantillonnage L'échantillonnage consiste à stocker une série d'échantillons sonores dans un tampon en mémoire vive. L'objet [buffer~], auquel on attribue un nom unique sert à stocker ces échantillons. Il contient donc un son. On peut y enregistrer un son grâce à l'objet [record~] en lui fournissant le nom du tampon dans lequel il doit enregistrer les échantillons. On peut ensuite le faire jouer au moyen des objets [play~] ou [groove~], plus flexible. Il est possible de sauvegarder le contenu d'un tampon sur le disque dur en format AIFF, qui n'est pas compressé, contrairement au format MP3, qui lui est compressé avec perte de qualité. On peut charger un fichier sonore du disque dur en envoyant au [buffer~] les bons messages. SAT[TransForm] transform.sat.qc.ca 2007/2008 6 Effets sonores temporel L'objet [delay~] sert à appliquer un délai sur un signal audio. Avec [tapin~] et [tapout~] connectés d'une certaine manière, on peut réaliser un écho. Pour de la reverbération, l'external [freeverb~] est à considérer. Les VST sont des greffons (« plugins ») audio qui peuvent être utilisés avec Max/MSP grâce à l'objet [vst~]. Synthèse audio : le domaine spectral Le domaine des fréquences audibles est traditionnellement séparé en ses composantes graves, (autour de 80 Hz) moyennes et aigües. (autour de 12 kHz) On peut sculpter le timbre d'un son en diminuant ou en augmentant l'amplitude d'une de ces régions. Un filtre passe-bas, comme [lores~] ou [onepole~], laisse passer uniquement les fréquences plus graves qu'un certain seuil. Un filtre passe-haut permet l'inverse. Des filtres plus complexes, comme [reson~], [comb~] ou [biquad~] permettent de choisir une ou plusieurs bandes de fréquences à laisser passer. La forme d'une onde sonore détermine son timbre. Les sons musicaux sont ceux qui peuvent être identifiés par une note de musique. Il ont comme caractéristique d'avoir une forme d'onde périodique, c'est à dire que le contour de leur onde se répète à intervalle régulier dans le temps. Par exemple, un son musical de 60 Hz aura une période de 1/60 de seconde. La forme d'onde la plus simple est l'onde sinusoïdale. Tout son musical complexe peut être décomposé en une série d'ondes sinusoïdales simples. Ces ondes partielles se nomment les harmoniques d'un son fondamental. On trouve habituellement une harmonique d'un son musical à chaque multiple entier de sa fondamental. Par exemple, un son musical de 60 Hz aura une harmonique à 120 Hz, une à 180 Hz, puis à 240 Hz, et ainsi de suite. L'amplitude relative de ces partielles déterminent le timbre du son. Dans Max/MSP, on obtient une onde sinosoïdale au moyen de l'objet [cycle~] avec comme argument une fréquence. On peut alors additionner plusieurs partielles grâce à l'objet [+~], et ainsi obtenir une forme d'onde plus complexe, et donc plus riche en harmoniques. C'est ce que l'on nomme la synthèse additive. On peut obtenir différentes formes d'ondes complexes directement au moyen d'objets comme [phasor~] ou [sah~]. On peut faire l'analyse des partielles d'un son ou même de la synthèse au moyen de la transformée de Fourier. Les objets [fft~] et [ifft~] sont les amis des mathématiciens et des musiciens. Il y a aussi de nombreux objets qui permettent d'obtenir une représentation graphique du spectres d'un son. Les bruits sont des sons non-musicaux. Leur partielles ne sont pas disposées selon la série harmonique. Le bruit blanc est un bruit où toutes les fréquences du spectre audible sont représentées avec une amplitude égale. L'objet [noise~] nous donne un bruit blanc. La synthèse d'enveloppes audio Un son est déterminé par son spectre et sa fréquence, bien-sûr, mais aussi par son amplitude. L'enveloppe d'un son est ce qui lui donne un début, un milieu et une fin. C'est ce qui l'inscrit dans le temps selon nos perceptions. Un des moyens les plus simples de donner une enveloppe à un son est d'utiliser l'objet [line~] pour faire une attaque brusque, SAT[TransForm] transform.sat.qc.ca 2007/2008 7 puis un chute vers le silence. Cela est possible un utilisant la sortie de [line~] pour multiplier [*~] le volume sonore d'un son par ce facteur. La série de messages que l'on donnera à [line~] pourrait être un « 1 » suivi d'un liste de deux chiffres : « 0 1000 ». Cela donne une attaque très brusque suivie d'une baisse de volume vers le silence qui dure exactement 1 second. (1000 millisecondes) Un moyen plus avancé de faire de belles enveloppes est d'utiliser l'object [adsr~] qui signifie « attack, decay, sustain, release ». Contrôle de l'amplitude sonore et décibels L'unité pour mesurer le volume sonore, ou un changement de gain dans le volume sonore est le décibel. (dB) Un gain de 0 dB sur un signal ne change en rien son amplitude. Dans Max/MSP, quand on multiplie un signal audio par 2 avec l'objet [*~], c'est un gain de +3 dB que l'on y applique. Cette muliplication doit être en unité RMS, c'est à dire sur une échelle linéaire, alors que les décibels sont sur une échelle logarithmique. Utiliser les décibels permet un contrôle plus précis du volume relatif de chaque source lorsque l'on mélange plusieurs sources audio. Si l'on applique un gain de +3 dB à un signal, celui-ci aura un amplitude deux fois plus grande une fois ce gain appliqué. Si l'on diminue son gain de -3 dB, son amplitude sera deux fois moins grande. Un gain de +6 dB rendera un son quatre fois plus fort. Pourquoi ? Deux multiplié par deux font quatre. Les objets [dbtoa] et [atodb] permettent de convertir entre les unités RMS et des dB. Plusieurs objets sont contrôlés directement en dB. La compression dynamique La compression dynamique permet de contrôler le volume de la sortie sonore. Le volume sonore d'un enregistrement peut varier grandement dans le temps, et il peut s'avérer essentiel d'utiliser un compresseur ou un limiteur. Le cas le plus simple est le limiteur, qui ne fait que s'assurer que le volume sonore ne dépasse pas un certain seuil. À l'interne, le limiteur mesure le volume sonore entrant, puis lui applique un gain afin de s'assurer qu'il ne dépasse pas le seuil désiré. Concrètement, si l'amplitude d'un son à la sortie audio dépasse l'unité, (1.0, soit 0 dB) toute la crête de l'onde sonore qui dépasse sera coupée. Le son sera distorsionné. Dans le moins pire des cas, quelques « clics » audio vont rendre l'écoute désagréable. Utiliser un compresseur, ou plus simplement un limiteur comme [omx.PeakLim~] permet de diminuer ce phénomène. Les tutoriels Max/MSP sur la compression en disent long sur ce sujet. Dans tous les cas, rien ne remplace un bon mixage des niveaux de volume. L'objectif est de s'apporcher de 0 dB à la sortie afin de s'assurer une bonne qualité de conversion numérique-analogique [dac~], mais sans jamais le dépasser. La spatialisation sonore : un aperçu Le plus simple cas de spatialisation est celui du son stéréo. Le son stéréo étant sur deux pistes, on peut contrôler la panoramisation du son. (panning) Il s'agit d'une spatisalition sur une dimension. Si l'on dispose de trois sorties audio ou plus, on peut donner l'impression que le son est spatialisé sur deux dimensions, c'est à dire que les sources sonores virtuelles semblent pouvoir provenir d'une direction variable sur le plan horizontal, par exemple. Avec quatres enceintes et plus, on peut obtenir le même résultat, mais sur le plan vertical, en plus. Cet effet est obtenu grâce à des calculs trigonométriques SAT[TransForm] transform.sat.qc.ca 2007/2008 8 variant l'amplitude du son pour chacune des enceintes. Les systèmes les plus avancés vont également introduire de très courts délais dans le son, ainsi que de la reverbération et des filtres sur les fréquences.Cela peut très rapidement devenir difficile à maîtriser, mais peut donner un résultat convainquant. La technologie Ambisonic est à mon avis la plus simple à utiliser. Des externes pour Max/MSP existent. En résumé : la chaîne de traitement audio Voici un petit résumé de la chaîne des opéations qui peuvent être appliquées sur le son. L'objet [adc~] sert d'entrée aux sons captés grâce à un microphone. Ensuite, ces sons peuvent être enregsitrés, séquencés et rejoués grâce à l'échantillonage. On peut également faire de la synthèse sonore. Les différents canaux audio sont alors mixés grâce à des objets [+~] et leur volume peut être contrôlé avec l'objet [*~] et la génération d'enveloppes. Avant la sortie finale dans l'objet [dac~], il peut s'avérer indispensable de limiter le volume au moyen d'un limiteur, ou mieux, d'un compresseur. Les échantillons à la sortie finale ne devraient jamais dépasser l'unité, positive ou négative. (0 dB) SAT[TransForm] transform.sat.qc.ca 2007/2008 TRANSFERT DE CONNAISSANCE ET FORMATION EN ART TECHNOLOGIQUE RÉFÉRENCES ET LIENS WEB: Les tutoriels de la section MSP de l'aide de Max/MSP sont la source préférée d'informations quant à l'utilisation des objets audio dans Max/MSP. Le site web de la compagnie Cycling '74 est également riche en informations récentes. Ambisonic Externals for Max/MSP Pour la spatialisation sonore sans soucis. http://www.grahamwakefield.net/soft/ambi~/index.htm The Max Objects Database Des patches et des externals http://www.maxobjects.com/ La page de Max/MSP 5 site de Cycling 74 Là où tout commence... http://cycling74.com/products/max5 Les forums de la compagnie Parmi ceux-ci, celui de MaxMSP et celui de Jitter nous intéressent. http://cycling74.com/forums/index.php La documentation en ligne de Max 5 Les tutoriels vidéo sont excellents. Les tables des matières des « MSP Tutorials » et des « Jitter Tutorials » se trouvent à la droite de l'écran. http://www.cycling74.com/docs/max5/vignettes/intro/docintro.html Un logiciel libre semblable : Pure Data Il est plus difficile d'appoche, mais totalement ouvert et gratuit. La version est télécharger est « pd-extended ». http://puredata.info/