Conçu par l'IRCAM et Cycling'74 pour les musiciens, les designers sonores et les enseignants, Max/MSP est un environnement de programmation visuel qui fait figure de référence pour la création d'installations sonores interactives.
En partenariat avec www.idecibel.com, AudioFanzine vous propose de vous initier en douceur à son fonctionnement via le didacticiel que voici.
Principe de Max-MSP
Avant de commencer à créer quelque chose, il est préférable de comprendre un peu le fonctionnement du programme. Le principe de Max/MSP est de générer, de transformer et de gérer des sons, sans aucune limite (à part peut-être le temps que vous passerez dessus…)
Ce soft est construit sur le fait de poser au milieu d’une page blanche, des boîtes que l’on va connecter entres elles, chacune ayant un rôle différent, possédant des entrées et des sorties. Ce qui en sort est fonction de l’objet et de ce qu’on lui rentre.
Ouvrez le programme, allez dans le menu file/new/patch.
Il vous ouvre une fenêtre blanche avec plein d’icônes en haut. Cette feuille blanche est notre plan de travail, à l’image de la feuille de papier pour un architecte. Sur ce plan nous allons poser plein de « boîtes » pour créer ou transformer un son.
La barre d’icônes comporte toutes les boîtes dont nous pouvons nous servir :
Il existe deux grandes familles de boîtes :
- boîte objet : elle sert à transformer l’information qu’elle reçoit en entrée.
Cliquez sur cette icône dans la barre des menus :
Posez la sur la page blanche, elle ressemble à ceci : (sans le texte car c’est à vous de le rentrer en cliquant dessus) - boîte message : elle sert uniquement à envoyer un message.
Cliquez sur cette icône dans la barre des menus :
Posez-la sur la page blanche, elle ressemble à ceci : (sans le texte car c’est à vous de le rentrer en cliquant dessus)
NB : Les entrées se situent en haut des boîtes, les sorties en bas.
Désormais, lorsque nous parlerons du plan de travail, nous l’appellerons le patch.
Maintenant que nous avons pris connaissance avec le programme, nous allons enfin pouvoir passer à la pratique.
Le premier son
Nous allons apprendre à nous servir de deux objets très employés :
- DAC
- l’objet [cycle~]
Ouvrez un nouveau patch (file/new/patch). Dans la barre d’icône, cherchez et posez-la sur le patch.
Cette boîte s’appelle un DAC (Digital Analogique Converter). Il va nous servir à convertir notre signal numérique en signal analogique. Si vous ne comprenez pas ces mots, cela veut dire que c’est notre sortie audio. Si vous voulez entendre un son, il faut obligatoirement le connecter (le son à entendre) au DAC.
Placez une boîte objet sur votre patch :
Cliquez dessus et écrivez [cycle~ 100] (les [] représentent la boîte, donc ne les écrivez pas).
Si tout s’est bien passé vous obtenez ceci :
Vous ne savez pas comment faire pour faire le « ~ » ? Pour PC il faut faire ctrl+alt+2 puis espace. Pour Mac, il faut faire pomme+n puis espace.
Attention ! N’oubliez pas l’espace entre le ~ et 100.
Bon, vous avez réussi, mais à quoi ça sert ?
Le mot « cycle~ » dans une boîte objet, permet de créer un signal sinusoïdal.
« 100 » est la fréquence de ce signal.
Vous venez donc de créez un signal sinusoïdal à 100Hz.
Pour l’entendre, il faut le connecter au DAC.
Vous remarquerez qu’il y a des petits rectangles noirs en haut et en bas du cycle et du DAC. Ceux-ci correspondent aux entrées et sorties de chaque objet.
Nous voulons sortir le signal du cycle pour le rentrer dans le DAC. Cliquez sur la sortie du cycle et maintenez votre bouton appuyé. Un fil apparaît. Allez le relier à l’une des entrées du DAC.
Le DAC est stéréo par défaut, ses deux entrées correspondent aux cotés gauche/droite. Donc si vous voulez entendre votre cycle des deux cotés, il faut reprendre la sortie du cycle et la connecter à l’autre entrée du DAC.
Vous obtenez ceci :
Vous n’entendez toujours rien ?
C’est normal, il reste une dernière chose à faire et vous allez enfin pouvoir commencer à manipuler du son.
Il existe deux « modes » dans le programme. Lorsque vous êtes sur le patch et que vous ajoutez et modifiez des boîtes en tous genre, vous êtes ce qu’on appelle en mode d’édition, c’est à dire que vous pouvez modifier le patch à loisir. Imaginez vous en situation de concert, vous faites une mauvaise manip et effacez une boîte ; la situation est assez gênante. Pour éviter ceci, vous allez passer en mode de jeu. Dès lors, vous ne pouvez plus modifier les connexions ou les boîtes. Bien sûr, vous pouvez passer de l’un à l’autre comme bon vous semble, pour cela faites :
- ctrl+e (pc)
- pomme+e (mac)
Dans le cas qui nous occupe, nous avons fini de créer notre patch. Passez donc en mode de jeu, cliquez sur le DAC pour ouvrir celui-ci : Magie ! Vous avez du son !
Vous allez me dire que tout cela est bien trop long et trop compliqué pour obtenir un son vide… En fait, si vous avez compris les manips que vous venez de faire, vous avez la base de Max/MSP, tout le reste fonctionne de la même façon. Seuls les objets changent, mais la façon de s’en servir reste la même.
Ce qu’il est bon de retenir :
|
Boîtes nombre
Un signal à 100Hz, c’est bien, mais si finalement on le veut à 200, 500, ou 10000 ? On peut bien sûr changer le nombre qui se trouve à l’intérieur de la boîte mais ce n’est pas très commode. Il existe une façon plus simple de faire.
Nous allons nous servir d’une « boîte nombre ». Cette boîte n’envoie que des nombres que nous pouvons choisir en cliquant sur la boîte et en montant et descendant la souris en « mode de jeu ».
Reprenons ça plus en détail.
Dans la barre d’icône, cherchez cet objet et posez-le au dessus du cycle.
Vous obtenez ceci :
Passez en « mode de jeu » (ctrl+e ou pomme+e) et ouvrez votre DAC.
Cliquez sur la boîte nombre et maintenez le bouton de la souris enfoncé, montez et descendez avec la souris.
Votre boîte nombre augmente ou diminue en fonction de votre mouvement.
La première entrée du cycle correspond à la fréquence de celui-ci, quand il reçoit un nombre, il l’interprète comme sa fréquence.
Il existe un autre type de boîte nombre : les boîtes nombres flottants.
Celle que nous avons utilisée ne comporte que des nombres entiers, c’est à dire sans virgule. (1 200 –759 6548 –8542…)
Les nombres flottants sont les nombres à virgules (0.2564 1.58 –654.1…). Dans la barre des icônes il existe un icône spécifique pour cette boîte.
C’est le même que pour les entiers mais avec un point :
Dans le logiciel, les nombres entiers sont appelés int (abréviation d’ « integer ») et les nombres à virgule sont appelés float. Notez que ces deux détails sont ici à titre informatif et nous servirons plus tard. :-)
Connectez la sortie de la boîte nombre à l’entrée du cycle. Passez en mode de jeu et modifiez sa valeur. Automatiquement le nombre indiqué devient la fréquence du cycle. Le 100 de la boîte cycle est là pour l’initialisation, c’est à dire que c’est la fréquence du cycle par défaut lorsque vous ouvrez le programme. Mais celle-ci ne sert plus à rien dès que l’on rentre une autre valeur dans l’objet, comme ici par exemple.
Vous avez peut-être remarqué que lorsque vous descendez dans les négatifs, votre cycle interprète ce nombre comme un nombre positif. Pour éviter ce genre de petit problème, nous allons « borner » la boîte nombre. C’est à dire que nous allons lui indiquer un minimum et un maximum, au-delà desquels la boîte s’arrête.
Revenez en mode d’édition. Cliquez sur la boîte nombre à borner. Si vous êtes sur PC, faites ctrl+i. Pour mac, faites pomme+i. Une fenêtre s’ouvre, se sont les propriétés de l’objet. Cette commande pour appeler les propriétés s’appelle un « get info » et elle est très utilisée car elle s’applique à tous les autres objets.
Dans cette fenêtre vous avez quatre propriétés : range, options, display style, colors.
Ce qui nous intéresse est le « range ». Vous remarquez qu’il y a un « min. » et un « max. ». Dans ces cases, mettez les valeurs que vous ne voulez pas dépasser, par exemple « min. »=50 et « max. »=4000.
Si vous repassez en mode de jeu, votre boîte n’évolue plus qu’entre cette fourchette.
Prenez l’habitude de borner vos boîtes si possible car personne n’est à l’abri d’un excès involontaire. Or si vous travaillez sur le volume général, c’est un coup à perdre 10% de votre potentiel auditif en un instant. :-(
Une dernière petite chose à propos des boîtes float, si vous cliquez à droite de la virgule pour modifier le nombre, vous modifiez tout le nombre, alors que si vous cliquez à gauche de la virgule, vous ne modifiez que la partie entière (c’est à dire sans virgule). Imaginez ce type d’erreur de manip sur un ampli… Je ne le dirai jamais assez, bornez vos boîtes…
|
Multiplicateur de signal
Vous trouvez que le cycle est un peu trop fort ? Pas de problème, nous allons apprendre à gérer les volumes.
Tout d’abord, je vous conseille de bien lire l’article précédent sur les boîtes nombres car nous allons nous servir ici des boîtes float.
A la fin de l’article précédent, votre patch ressemblait à ceci :
Un cycle est un signal sinusoïdal qui va de –1 à 1 à une fréquence que nous avons définie (ici à 134Hz).
Nous voulons diminuer ou augmenter le volume du cycle, nous allons donc le multiplier pour modifier son volume.
Prenez une boîte objet () et écrivez [*~].
Vous obtenez ceci :
L’entrée gauche va nous servir pour le signal à modifier (donc le cycle).
L’entrée droite va être connectée à une boîte nombre float qui va nous permettre de modifier le volume.
La sortie envoie le signal modifié.
Si vous avez fait les connexions, vous devez obtenir ceci :
Pour bien maîtriser cette boîte [*~] qui se nomme le multiplicateur, il faut se rappeler de ses tables de multiplication de 0 et 1, ce qui ne devrait pas être très dur. :-D
Le cycle varie de –1 à 1. Si vous le multipliez par 1, il aura donc le même volume.
Multiplié par 0 (0×1=0) équivaut à aucun volume.
Multiplier par 2 équivaut à avoir deux fois plus de volume.
Multiplier par 0.5 équivaut à diminuer le volume par deux…
L’importance de la boîte float par rapport à l’int est capitale. De plus je vous conseille plus que vivement de borner la boîte de 0 à 1 ou 1,5.
Vous avez peut être entendue quelques clics lorsque vous modifiez le volume ? C’est normal.
Lorsque vous modifiez le volume à l’aide d’une boîte nombre, le changement de nombre peut parfois être un peu brutal et provoque ainsi des clics. Pour éviter ce petit craquement, il suffit de placer une boîte objet nommée [line~] entre la boîte float et le multiplicateur.
Cet objet a pour fonction de lisser, plus exactement de créer une rampe entre deux point. Ce temps de rampe peut être paramétré par la deuxième entrée du line~ en connectant une boîte nombre. Le nombre indiquera le temps en millisecondes entre deux points. Notez que ceci est à titre informatif et n’est pas très important pour notre application actuelle. :-P
Dès lors que vous jouez avec les volumes, il se pose le problème de la saturation, de plus, max-MSP étant assez libre d’un point de vue des manipulations, il arrive fréquemment de dépasser les limites, endommageant ainsi votre matériel et vos oreilles. Un petit objet simple nommé « meter » permet de voir où vous vous situez.
Dans la barre d’icône, cliquez sur . C’est un petit vue-mètre à l’entrée duquel on connectera le signal à visualiser. |
Additionneur, soustracteur, multiplicateur, diviseur
Nous allons essayer de comprendre les autres objets permettant de faire des opérations.
Lorsque vous étiez en primaire, vous avez appris l’addition, la soustraction, la multiplication et la division. Vous vous en souvenez ? J’espère que oui… :-P
Dans l’exemple précédent, nous avons multiplié le signal. Sachez que vous pouvez aussi lui additionner un nombre, le diviser par un nombre, ou encore lui soustraire un nombre.
Un cycle sans modification se présente comme ceci : | ||
|
||
Le signal oscille entre –1 et 1. Si on le divise par 2, alors le signal oscille entre –0.5 et 0.5 : |
||
|
||
Nous pouvons aussi lui additionner un nombre. Si nous lui ajoutons par exemple 1, le signal qui oscille de –1 à 1 oscillera maintenant de 0 à 2. |
||
|
||
Cependant, ce changement n’influence pas le son, ce n’est pas parce qu’on lui ajoute 3 ou 4 qu’il sera trois ou quatre fois plus fort, ce qui fait le volume est l’ampitude du signal. |
||
Le soustracteur repose sur le même principe que l’additionneur : |
Nous avons vu les opérations que nous pouvons faire sur du signal, mais lorsque nous voulons le faire exclusivement avec des nombres ?
C’est le même principe sauf qu’il ne faut pas mettre de « ~ ».
Vous touchez là un point important. Max/MSP comporte en réalité deux banques d’objets. Max ne concerne que le traitement de nombre et MSP que le traitement de signal. « ~ » dans un objet indique que vous faites appelle à la banque d’objet de MSP, si il n’y a pas de « ~ », cet objet fait partie de la banque Max.
Vous avez pu remarquer aussi que certaines connexions sont jaunes et d’autres noires. Les jaunes transportent du signal alors que les noires transportent des nombres. Donc les connexions sortant d’un objet Max seront noires et celles sortant d’un objet MSP seront jaunes.
Si ce n’est pas très clair pour le moment ce n’est pas grave, faîtes seulement attention à mettre le « ~ » quand il y en a besoin.
Revenons à nos moutons. Nous voulons faire des maths avec Max. C’est le même principe qu’avant sauf que l’on ne connecte que des boîtes nombres, ce qui donne ceci :
Attention ! Le calcul n’est effectué que lorsque l’on change la valeur du nombre de gauche. Donc modifiez d’abord celui de droite puis celui de gauche.
De plus, si vous êtes amené à avoir un résultat à virgule comme l’exemple de la division, n’oubliez pas de mettre une boîte float en sortie et « 0. » en argument pour lui dire de calculer après la virgule.
(NB : Si vous voulez utiliser l’oscilloscope, il est par défaut entre –1 et 1, pour changer ses valeurs, faite un « get info » et modifiez son « range »)
Télécharger le patch (clique droit/enregistrer sous)
Envie d’aller plus loin avec Max/MSP ? N’hésitez pas dans ce cas à rendre visite à www.idecibel.com, le site dont provient ce didacticiel et qui s’impose indéniablement comme la référence francophone sur Max MSP. |