Se connecter
Se connecter

ou
Créer un compte

ou
Tutoriel

Synthèse Additive sur Max/MSP

Par Choc le 27/03/2008 - (Confirmé)

Introduction

Dans ce tutoriel, nous présentons une "façon" d'implémenter un synthétiseur additif sur Max/MSP. Ce tutoriel est une application du dossier sur la synthèse additive. Le synthétiseur crée est très simple. Son architecture est composée de 8 oscillateurs sinusoïdaux contrôlés chacun par une enveloppe d'amplitude. Les notes sont contrôlées par MIDI.

Étape 1


  • Lancez MaxMSP

  • Créez un nouveau patch (CTRL+N)

  • Ajoutez un objet via l'icône objet box

  • Sélectionnez la catégorie All Objects et sélectionnez l'objet patcher

  • Nommez l'objet patcher, partiel

  • Normalement une nouvelle fenêtre appelée partiel doit s'ouvrir



L'objet partiel va servir à générer une sinusoïde.

Étape 2

Dans la fenêtre nommée partiel, nous allons définir la structure d'un partiel.


  • Ajouter un nouvel objet via le bouton New Objects. Dans la liste des objets sélectionnez All Objects puis l'objet cycle~ (ne pas choisir l'objet cycle). l'objet cycle~ correspond à une sinusoïde, il possède deux entrées la fréquence et la phase.

Étape 3

Le patcher partiel possède trois entrées et 1 sortie. La première entrée correspond à la fréquence fondamentale, la deuxième à un coefficient multiplicatif qui multipliera la fréquence fondamentale et la troisième l'amplitude.


  • Ajoutez trois entrées en ajoutant trois objets inlet

  • Ajoutez une sortie en ajoutant un objet outlet

  • Ajoutez trois commentaires au dessus de trois inlet (objet Comment). Les commentaires ont pour noms respectifs: fréquence , coef et amplitude

Étape 4

Dans cette étape, la première inlet appelée fondamentale va être multiplié par l'inlet coef.


  • Ajoutez un objet multiplication en appuyant sur l'icône New Objet. Dans la liste All Objects, sélectionnez l'objet *

  • Placez l'objet en dessous de l'inlet fondamentale et coef

  • Connectez l'inlet fondamentale à l'entrée gauche de l'objet *

  • Connectez l'inlet coef à l'entrée droite de l'objet *

  • Connectez la sortie de l'objet * à l'entrée gauche de l'objet cycle~

Étape 5

Dans cette étape, l'inlet appelée amplitude va contrôler l'amplitude de la sinusoïde.


  • Ajouter un objet multiplication de signaux en appuyant sur l'icône New Object. Dans le menu All Object, Slectionnez l'objet *~. Notez que cet objet diffère de l'objet *. L'objet *~ est utilisé pour modifier l'amplitude d'un signal alors que l'objet * multiple deux nombres

  • Connectez l'inlet amplitude à l'entrée droite de l'objet *~

  • Connectez la sortie de l'objet cycle~ à l'entrée gauche de l'objet *~

  • Connectez la sortie de *~ à la sortie du patch symbolisé par l'outlet.

Étape 6

Le patcher appelée partiel est terminée.


  • Revenez dans le patch principal normalement nommé Untitled (réduire le patcher partiel ou sélectionnez la fenêtre Untitled pour la faire revenir au premier plan)

  • Sauvegardez votre patch (CTRL+S) et nommez le synth additif

Étape 7

Dans cette étape, nous allons construire les objets qui contrôlent la fréquence de la sinusoïde. La fréquence de la sinusoïde est contrôlée par une fréquence et par un coefficient multiplicatif.


  • Inserez un objet Number Box et placez-le au dessus du patcher partiel

  • Selectionnez la Number Box et faites un click droit. Dans le menu qui apparait, sélectionnez Get Info. Dans la fenêtre qui apparait ajoutez la valeur 1 dans RangeMin puis appuyez sur entrée

  • Fermez la fenêtre Number Inspector

  • Connectez la sortie de la Number Box avec la seconde entrée du patcher partiel

Étape 8

La première entrée du patcher partiel correspond à la valeur d'une fréquence.


  • Ajoutez un objet Number Box. Sélectionnez-le, faites un click droit et sélectionnez Get Info. Dans l'option Display Style, sélectionnez MIDI notes name.


Avec cette procédure, l'objet Number Box n'envoie plus des nombres, mais des notes MIDI, plus tard nous le remplacerons par une entrée MIDI.

Étape 9

Dans cette étape, les notes MIDI sont converties en une valeur de fréquence.


  • Ajouter un nouvel objet en appuyant sur l'icône New Object. Dasn le menu All Objects, selectionnez l'objet mtof (MIDI to Frequency)

  • Placez cet objet en dessous de la Number Box

  • Connectez la sortie de la number box à l'entrée de l'objet mtof

  • Connectez la sortie de l'objet mtof à l'entrée gauche du patcher partiel

  • Enregistrez votre patch (CTRL+S)

Étape 10

Dans cette étape, une enveloppe permettant de contrôler l'amplitude de la sinusoïde est ajoutée.


  • Ajoutez l'objet appelé Breakpoint Function Editor qui est représenté par une icône possédant un point vert et deux lignes noires

  • Selectionnez l'objet, faites un click droit et sélectionnez l'option Get Info

  • Dans l'option Graph Domain max, écrivez la valeur 3000ms. Cette option spécifie la longueur temporelle de l'enveloppe

  • Fermez la fenêtre Function Inspector

  • Hesitez pas à redimensionner la taille de l'objet Breakpoint Function Editor

Étape 11

Dans cette étape, un bouton permettant de supprimer les données contenues dans l'enveloppe est ajouté.


  • Ajoutez un objet Message Box (deuxième icône en partant de la droite)

  • Dans cet objet inscrivez clear

  • Connectez la sortie de la Message Box à l'entrée gauche de l'objet Breakpoint Function Editor

Étape 12

L'objet Breakpoint function editor stocke la valeur de plusieurs points (amplitude/temps). Pour générer une enveloppe temporelle, les points sont interpolés


  • Ajouter un objet en appuyant sur l'icône New Object. Dans le menu All Object, sélectionnez l'objet line~

  • Connectez la seconde sortie de l'objet Breakpoint Function Editor à l'entrée de l'objet line~

  • Connectez la sortie de l'objet line~ à la troisième entrée du patcher partiel

Étape 13

Dans cette étape, un premier test audio est lancé


  • Ajoutez un objet bang (4e icône en partant de la gauche)

  • Connectez l'objet à la première entrée de l'objet Breakpoint Function Editor et à l'entrée de la number box contenant des valeurs MIDI

  • Ajoutez une sortie audio en cliquant sur l'icône numéro 17 contenant un HP violet

  • Connectez la sortie du patcher partiel à la première et seconde entrée de la sortie audio

  • Switchez en mode contrôle (CTRL+E), activez la sortie Audio, construisez une enveloppe et appuyez sur l'objet bang. Modifiez les différents contrôles du patch

Étape 14

Si vous n'entendez pas de son, n'allez pas plus loin, revenez en arrière. Sinon revenez dans le mode d'édition du patch (CTRL+E). Dans cette étape, rangez le patch de sorte à ce qu'il soit aussi proche que possible de la photo ci-contre.

Étape 15

MaxMSP comme la plupart des outils informatiques proposent de pouvoir copier-coller certaines informations. Dans cette étape cette fonctionnalité est utilisée pour ajouter 7 autres partiels.


  • Sélectionnez l'ensemble composé de l'objet Breakpoint Function Editor, du message clear, de la Number Box, de l'objet line~ et du patcher partiel

  • Copiez-Collez (CTRL+C, CTRL+V) plusieurs fois l'ensemble d'objets sélectionnés

Étape 16

Dans cette étape, les différentes sinusoïdes sont câblées entre elles.


  • Connectez la sortie de l'objet mtof à toutes les premières entrées de patcher partiel

  • Connectez la sortie de l'objet bang à toutes les entrées des objets Breakpoint Function Editor

Étape 17

Il ne reste plus qu'à relier les sorties de chaque partiel entre eux.


  • Deconnectez le câble entre le premier partiel et la sortie audio

  • Clickez sur l'icône New Object. Dans le menu All Objects, Selectionnez l'objet *~

  • Pour éviter la saturation, dans l'objet *~, inscrivez la valeur 0.1

  • Deconnectez la sortie du premier patchers partiel à la sortie audio

  • Connectez la sortie de tous les patchers partiel à la première entrée de l'objet *~

  • Connectez la sortie de l'objet *~ à l'entrée gauche et droite de la sortie audio

Étape 18

Dans cette étape, testez le rendu audio. Passez en mode contrôle du patch (CTRL+E). Modifiez les enveloppes, les valeurs des coefficients, la note midi et écoutez le résultat.

Si les coefficients de la fréquence ont la même valeur (objet Number Box), les sinusoïdes sont générées à la même fréquence ce qui a peu d'intérêt. Essayez de mettre le coefficient du premier partiel à 1, le deuxième à 2, le troisième à 3, etc.

Étape 19

Pour terminer ce patch, le contrôle de la fondamentale par envoie de note midi est rajouté.


  • Deconnectez le câble entre l'objet bang et l'objet Number Box contenant des données MIDI

  • Cliquez sur l'icône New Object. Dans le menu All Object, sélectionnez l'objet notein



L'objet notein envoie des notes à la fois pour les événements note in et les événements note off. Les messages note off sont dans notre cas inutiles et peuvent poser des problèmes. Dans l'étape suivante, ces messages sont filtrés.

Étape 20


  • Cliquez sur l'icône New Object. Dans le menu All Objects, Selectionnez l'objet if

  • Un peu de programmation. Ajoutez à l'objet if, l'instruction $i2 >2 then $i1. Cette instruction envoie la première entrée à la sortie seulement si la deuxième entrée est non nul

  • Connectez la première sortie de l'objet notein à la première entrée de l'objet if. Connectez la seconde sortie de l'objet notein à la seconde entrée de l'objet if

  • Connectez la sortie de l'objet if à l'entrée de l'objet bang et à l'entrée de l'objet Number Box contenant des valeurs MIDI

Conclusion

Ce patch présente une implémentation possible de synthétiseur additif monophonique. Certains problèmes subsistent, par exemple lorsqu’une note est envoyée alors qu'une note précédente est en cours de synthèse, les enveloppes sont réinitialisées ce qui produit des clicks numériques. De plus comme mentionné dans le dossier, un grand nombre de données de contrôles sont nécessaires. Le top consiste a extraire les informations d'analyse d'un son par un programme matlab par exemple puis à réutiliser les résultats de l'analyse pour calibrer les données de contrôles.
Soyez le premier à réagir à ce tutoriel

    Vous souhaitez réagir à cet tutoriel ?

    Se connecter
    Devenir membre