Cours 7 | Cours 9 | MUS 2322 | Faculté de musique | Université de Montréal

Cours 8 : La modélisation physique

  1. La ligne à retard avec réinjection (waveguide)

    Le diagramme ci-dessus représente une ligne à retard simple constituée d'un délai, d'un multiplicateur et d'un filtre. Le signal sonore est tout d'abord injecté dans le délai, puis atténué par un facteur de gain inférieur à 1, et filtré par un passe-bas avant d'être réinjecté à nouveau dans le délai. L'effet du multiplicateur est d'atténuer, graduellement, l'amplitude du signal à chaque nouvelle passe, et le filtre fait en sorte que les fréquences aigues s'estompent plus rapidement que les fréquences graves. La recirculation du signal dans la ligne à retard créera une résonance dont la fréquence fondamentale sera déterminée par la longueur du délai.

    f = 1/D

    Ainsi, plus le temps de délai est court, plus la fréquence est élevée.

    Nous avons donc la base d'un modèle physique de corde pinçée, équivalent au modèle Karplus-Strong, développé par Kevin Karplus et Alex Strong dans les années 80. Il suffirait d'envoyer une impulsion dans le système pour provoquer une résonance, suivi d'une atténuation typique des cordes pinçées. Les paramètres contrôlables seraient la fréquence de la note, le temps de chute et la brillance de la corde.

    Comment implémenter ce système dans Max/MSP?

    1. tapin~ et tapout~

      Il faut tout d'abord considérer que l'objet delay~ ne tolère pas la recirculation de son signal de sortie dans sa propre entrée, il faut donc trouver une autre solution pour la ligne à retard. Les objets tapin~ et tapout~ fournissent cette solution. Ce sont deux objets qui fonctionnent toujours de pair, tapin~ étant un espace mémoire dans lequel on conserve un certain nombre d'échantillons, alors que tapout~ permet de lire le contenu de cette mémoire de façon dynamique. Un pointeur peut être déplacé, au taux audio, dans la mémoire afin de lire les échantillons qui y sont temporairement enregistrés.

      (Cette technique permet aussi la transposition en temps réel du signal, puisqu'un pointeur de lecture à vitesse variable permet de rééchantillonner le signal, donc de modifier la hauteur du son, tout en conservant sa durée. La plupart des harmonizer fonctionnent de cette façon.)

      Voici une utilisation de base d'un délai construit avec tapin~ et tapout~. Un argument à l'objet tapin~ spécifie la longeur de la mémoire; passé cette durée, les échantillons entrants remplacent les plus anciens. Cette valeur à une influence directe sur la quantité de RAM requise par Max/MSP pour fonctionner correctement. Le signal que l'on veut délayer entre donc dans cet objet. Le lien entre tapin~ et tapout~ n'est pas constitué d'un fil audio, tout simplement parce qu'il n'y passe pas de signaux audio. Ce lien sert uniquement à indiquer que les objets travaillent de pair sur une mémoire temporaire. Il est donc indispensable de faire la connection entre les deux objets. L'objet tapout~ restitue le signal, délayé par un temps qui lui est spécifié par une valeur décimale ou audio dans sa première entrée. Cette valeur peut être modifiée dynamiquement.

      Pour obtenir un système Karplus-Strong tel qu'illustré plus haut, il suffit de rajouter un filtre et un multiplicateur, de réinjecter le signal de sortie dans l'objet tapin~, et d'exciter le tout avec une impulsion, qui peut être facilement construite avec du bruit blanc et une enveloppe d'amplitude.

    2. temps de chute vs fréquence fondamentale

      Il est important de rappeler, à ce moment-ci, que plus la la fréquence est élevée, plus la ligne de délai est courte. Ceci aura une incidence sur l'amplitude du signal dans le temps, puisque le multiplicateur agit à chaque période. Ainsi, une note aigue verra son amplitude décroître plus rapidement qu'une note grave puisque l'atténuation à lieu plus fréquemment, sa période étant plus courte. Il faudrait donc établir un système qui corrigerait le facteur de multiplication en fonction de la longueur du délai et d'un temps de chute qui serait le même pour toutes les notes.

      Prenons comme référence la définition du temps de réverbération: une chute de 40 dB en x secondes.

      40 dB = 20 * log(100)

      Il s'agit d'un facteur d'atténuation de 100 si on considère des grandeurs linéaires.

      Il faut maintenant déterminer le nombre de périodes N (le nombre de tours de boucle) correspondant à x secondes.

      N = x/To = x/D

      où To représente la période de la fréquence désirée, c'est-à-dire la durée de la ligne à retard, D, en secondes.

      Finalement, on a l'égalité:

      G^N = 1/100

      (G multiplié N fois pas lui-même donne 1/100)

      dont il faut extraire la variable G, qui est notre facteur d'atténuation.

      G = (1/100)^(1/N)
      G = 100^(-1/N)
      G = 100^(-1/(x/D))
      G = 100^(- D/x)

    3. Justesse de la note

      Comme la longueur du délai détermine la fréquence de résonance du système, les notes fondamentales sont limitées à celles qui correspondent exactement à un nombre entier d'échantillons, ce qui occasionnera des problèmes de justesse, particulièrement pour les hautes fréquences. Pour une explication détaillée de ce phénomène, veuillez vous référer au cours de Csound, à la section sur l'interpolateur de Lagrange:

      Interpolateur de Lagrange

      La solution à ce problème de justesse consiste à coupler une ligne à retard simple avec un filtre à délai fractionnel, c'est-à-dire, un filtre qui viendra modifier la phase du signal afin d'en ajuster légèrement la fréquence. Cette altération de la phase nous permettra de jouer sur des longueurs de délai qui se trouve entre deux échantillons. Le diagramme de base de la ligne à retard simple d'une corde pincée devient donc:

      L'interpolateur le plus simple à implanter pour obtenir un filtre à délai fractionnel est l'interpolateur de Lagrange. C'est un filtre à réponse impulsionnelle finie (FIR), qui assure une plus grande stabilité qu'un filtre IIR. Voici une implantation en Max/MSP d'un interpolateur de Lagrange de troisième ordre, ainsi que les équations permettant de déterminer la valeur des coefficients:



    4. Point de pinçage

      L'endroit où la corde est attaquée a une influence notable sur l'amplitude des différents harmoniques contenues dans le signal. En effet, là où la corde est pinçée, il se crée un noeud de vibration qui empêche certains modes de se former. Un filtre en peigne caractéristique d'une attaque de corde pinçée vient alors modifier le spectre d'amplitude du signal. L'exemple le plus simple consiste à pinçer la corde en son milieu pour empêcher les modes pairs de vibrer. Se référer aux notes du A2007 - cours 5 pour la théorie sur le filtre en peigne.

      La solution la plus efficace pour simuler ce phénomène est de créer une deuxième ligne à retard, et de retarder le signal d'excitation sur la deuxième ligne. En additionnant le signal des deux lignes, des cancelations de phase se produiront et créeront le filtre en peigne voulu. Un simple delay~, comme dans l'exemple ci-dessous, permettra de retarder le signal sur la deuxième ligne à retard. En utilisant un délai récursif, comme nous le verrons pour l'incorporation du pickup, permettrait de créer des effets intéressants en faisant résonner le point de contact.

      Le fait d'avoir deux ligne à retard pour jouer une seule note permet des effets intéressants en les désaccordant l'une par rapport à l'autre... Il faut évidemment décupler tout le calcul des données: temps de délai, interpolateur de lagrange, temps de chute, etc.

    5. Incorporation d'un pickup

      Avec tapin~ et tapout~, nous pouvons simuler un point de lecture de l'onde sur la corde, afin de créer un autre filtrage du spectre d'amplitude du signal, comme pour le point de pinçage. Il est par contre possible de réinjecter le signal du pickup en lui-même afin de le faire résonner, ce qui produit des sonorités très intéressantes. Plusieurs pickups résonnants peuvent être implantés en parallèle pour générer plusieurs résonances dans le spectre d'amplitude de la corde.


      Cours 7 | Cours 9 | MUS 2322 | Faculté de musique | Université de Montréal