Création d'un Synthétiseur Polyphonique avec Max/MSP

Création d'un synthétiseur polyphonique simple
Vidéo non disponible ! Réessayez plus tard
Cette vidéo fait partie de la formation
Apprendre à programmer dans Max For Live
Revoir le teaser Je m'abonne
Transcription


49,00€ Je commande

À partir de
27€ /mois
Je m'abonne à Elephorm

Description Programme Avis


49,00€ Je commande

À partir de
27€ /mois
Je m'abonne à Elephorm

Les objectifs de cette vidéo sont :

  • Comprendre le concept de polyphonie dans les synthétiseurs.
  • Apprendre à créer et gérer des sous-patchs dans Max/MSP.
  • Utiliser l'objet poly pour gérer la polyphonie de manière efficace.

Apprenez à réaliser un synthétiseur polyphonique simple en dupliquant des voix avec Max/MSP.

Dans cette leçon, nous allons explorer la création d'un synthétiseur polyphonique en utilisant Max/MSP. Vous apprendrez à récupérer et à filtrer les données MIDI, à utiliser des oscillateurs contrôlés en fréquence, et à gérer les enveloppes ADSR. Nous encapsulerons notre synthé monophonique dans un sous-patch pour le sauvegarder et l'exploiter comme une abstraction. Ensuite, nous introduirons l'objet poly pour gérer plusieurs instances de sous-patchs et optimiser la gestion des voix ainsi que les ressources processeur. Finalement, nous configurerons les entrées et sorties spécifiques à la polyphonie avec les objets in et out~, et maîtriserons l'objet thispoly pour la gestion dynamique de l'allumage et de l'extinction des voix.

Voir plus
Questions réponses
Quelle est la fonction de l'objet poly dans Max/MSP ?
L'objet poly permet de créer et gérer plusieurs instances d'un même sous-patch, ce qui est essentiel pour la gestion de la polyphonie dans les synthétiseurs.
Pourquoi est-il nécessaire de diviser la vélocité par 127 dans cette leçon ?
Diviser la vélocité par 127 permet de normaliser cette valeur dans une plage de 0 à 1, facilitant ainsi son utilisation pour contrôler les paramètres de synthèse sonore.
Quelle différence y a-t-il entre les objets inlet et in dans le contexte de cette vidéo ?
L'objet inlet est utilisé pour définir des entrées dans les patchs standard, tandis que l'objet in est spécifiquement utilisé dans les objets poly pour gérer les entrées en polyphonie.
Pour aborder la polyphonie, nous allons créer un instrument très simple qui va nous permettre de nous concentrer sur la question de la polyphonie. Faire un synthé polyphonique, ça suppose en fait d'avoir plusieurs synthés en un. Donc on va utiliser un principe qui est tout à fait similaire à ce qu'on a fait avec le sous-patch, qui va nous permettre de dupliquer en quelque sorte les voix, c'est-à-dire la création du son de notre synthé. Alors, on va faire un synthé très simple, où on récupère le MIDI, ensuite le flux MIDI va être filtré ici avec l'objet MIDI parse, on a donc le pitch et la velocité qui arrivent par la première sortie, ensuite on va décompacter cette liste avec Unpack, on rentre dans un oscillateur, l'oscillateur est contrôlé en fréquence, donc on transforme les notes MIDI en fréquence, et puis ensuite on va gérer la vélocité, ici qui va contrôler une enveloppe ADSR, on va mettre directement les valeurs de l'ADSR en argument dans l'objet, donc l'attaque je vais mettre 5 millisecondes, ensuite indiquer, je vais mettre par exemple 6 millisecondes, je vais mettre un sustain de 0.8 et un release de 20 millisecondes, voilà donc ici je récupère la vélocité, je divise la vélocité par 127 pour être dans une plage de valeur entre 0 et 1, et ensuite cet ADSR va donc envoyer le contrôle de l'amplitude en modulant cette multiplication, voilà on a terminé ce mini synthé, ce qui nous permet de nous concentrer sur la question de la polyphonie, c'est donc ici un synthé monophonique avec un son de sinus, l'idée maintenant va être de placer toute la voie de synthèse, c'est à dire toute cette partie là, dans un sous patch, ça va être une première étape donc avec encapsulate, je peux le nommer, le nom est purement indicatif, il n'y a pas d'incidence ici voilà quand j'ouvre le sous patch, j'ai donc mon synthé, ça change rien au fonctionnement, par contre maintenant je vais pouvoir sauvegarder séparément ce sous patch, quand j'ouvre un sous patch, je peux tout à fait le sauvegarder comme un patch indépendant, alors je vais d'abord sauvegarder mon patch principal, puisqu'on va voir qu'il est important d'avoir le patch principal et les sous patch dans un même dossier, donc je sauvegarde ici, alors je vais d'abord créer un nouveau dossier, voilà et je le renomme ici, voilà donc là je suis dans ce dossier et maintenant je vais donc sauvegarder mon sous patch dans ce même dossier, on y va, donc save, alors save as, voilà et je vais l'appeler voice synth, voilà ce sera la voie de mon synthé, alors on peut déjà d'ailleurs regarder une petite particularité de max intéressante, c'est que une fois que j'ai dans un sous dossier un autre patch, je peux le rappeler directement comme un objet, ça veut dire qu'en fait mon patch voit finalement tous les patchs qui sont dans son dossier, il peut voir d'autres dossiers mais naturellement il voit les patchs qui sont dans le même dossier, donc si je crée un objet qui s'appelle maintenant voice, c'est comme un objet, en fait c'est précisément ce qu'on appelle une abstraction, on voit qu'il a chargé ça comme un objet ici, donc en fait là j'ai simplement rechargé mon sous patch, c'est donc ce qu'on appelle dans max une abstraction, alors ça ça peut servir et finalement l'idée ici, je peux l'enlever ça, ça va être d'avoir plusieurs de dupliqués, plusieurs de ces voix pour pouvoir quand je joue une note utiliser une voix, puis une seconde, puis une seconde, et donc avoir toute une petite mécanique comme de gestion des voix, ce qui ne serait pas forcément très simple à faire soi-même en multipliant chacun des sous patch, et puis il y a aussi une question d'optimisation des ressources puisque idéalement il faut vraiment éteindre la consommation processeur des patchs non utilisés, donc tout ça va être géré de manière beaucoup plus pratique avec un objet qui va permettre de charger plusieurs instances d'un même sous patch dans un même objet, cet objet c'est l'objet pour faire de la polyphonie, qui est l'objet poly, dans poly je vais lui indiquer le nom du sous patch, enfin du patch que j'ai sous gardé, qui est donc VoiceSynth, et en deuxième argument, ce qu'on voit ici, je lui mets le nombre d'instances, c'est à dire le nombre de voix de polyphonie, je mets par exemple 8 ici, alors voilà, donc là on voit qu'il l'a bien ouvert, donc quand je double clique dessus, effectivement il charge bien, par contre on voit qu'il n'y a pas de sortie, il y a pourtant une entrée, mais en fait c'est une entrée par défaut de l'objet, en fin de compte il n'a pas d'entrée sortie ici, alors pourquoi ? c'est qu'il y a une petite finesse, c'est à dire que les objets d'entrée sortie qu'on a là, ce sont les objets inlet qui sont les objets patchers, dans le cas de l'objet poly, il faut mettre l'objet in qui est uniquement utilisé pour la polyphonie, donc in, et on lui met le numéro de l'entrée, donc in1 ici, pour la sortie, on va remplacer ensuite, pour la sortie ça va être out, mais out tilde parce que c'est une sortie audio, et on met également le numéro, voilà ensuite on va câbler à la place, ici, ici, on sauvegarde, maintenant il faut recharger l'objet, alors on peut faire un copier et copier remplace, ce qu'on a ici c'est une fonction très pratique, paste replace, voilà, et là on voit que la sortie est apparue, alors ça c'est une première étape, ensuite l'objet poly fonctionne de manière un peu particulière, il va falloir gérer maintenant les instances de l'objet poly en faisant une gestion de l'allumage et l'extinction des différentes voix, pour ça il faut rajouter dans notre patch ici, un objet qui concerne donc uniquement la polyphonie qui est thispoly, on va lui envoyer le signal de l'ADSR pour indiquer à poly si il y a du signal dans le patch, autrement dit si le patch doit être utilisé, et ADSR a aussi capacité à envoyer un message qui est spécifique à thispoly pour indiquer donc si on mute, on démute, donc on éteint, on allume l'instance, c'est la troisième sortie ici, donc mute outlet, quand il faut muter la voix, l'objet ADSR va envoyer le message mute 1 et mute 0 pour démuter, donc ça, ça va se faire automatiquement grâce à l'objet ADSR qui simplifie un peu la mise en oeuvre de la polyphonie, voilà donc ça on peut le sauvegarder, voilà, bien sauvegardé, encore une petite chose ici, il va falloir indiquer à poly qu'on lui envoie des notes MIDI, pour cela le plus courant c'est d'utiliser un objet qui est l'objet prepend, qui va donc rajouter, dès qu'il va recevoir un flux, on rajoute dans le message ce qu'on indique en argument, ce qu'on indique en argument c'est MIDI notes, puisqu'on lui indique donc qu'on va lui envoyer des notes MIDI on n'a plus qu'à brancher la sortie ici voilà on entend ici qu'on a bien un synthé polyphonique

Programme détaillé de la formation