Synthétiseur numérique

Durant la 3ème année de mon BUT GEII, j’ai eu l’occasion de suivre un module de traitement numérique du signal appliqué à la synthèse sonore.

Présenté par Vincent CHOQUEUSE, enseignant à l’ENIB, ce cours m’a permis d’expérimenter différentes techniques de traitement et synthèse sonore au sein d’un microcontrôleur STM32 programmé en C.

Materiel utilisé :

STM32F746 Disco

Carte de développement

Arturia Minilab MK2

Contrôleur MIDI

Implantation d’oscillateurs numériques :

Dans chaque synthétiseur, il y a un ou plusieurs oscillateurs générant des signaux plus ou moins complexes. En synthèse numérique, nous générons des échantillons de ces signaux qui sont ensuite traduits en son par un convertisseur numérique / analogique présent dans le microcontrôleur.

Nous avons dans ce cadre réalisé les fonctions permettant deux types de synthèse :

  • La synthèse sinusoïdale où chaque échantillon d’une sinusoïdale est calculé en temps réel.
  • La synthèse par wavetable où une table d’échantillon d’une période d’un signal est calculée puis réutilisée > nécessite beaucoup moins de puissance de calcul !

Échantillons d’une période d’un signal sinusoïdale

Pour contrôler la fréquence de ce signal, nous utilisons les principes d’interpolation (pour « créer » plus d’échantillons) et nous sélectionnons ensuite un pas de lecture.

Notre signal possédant désormais une fréquence variable, nous pouvons réceptionner les messages MIDI provenant du contrôleur Arturia et modifier la fréquence de l’oscillateur en fonction.

Filtrage et modulation

Après avoir créé plusieurs tables d’ondes correspondant à différents signaux (carré, dent de scie…), nous avons poursuivi le module par l’implémentation d’un filtre passe-bas en se reposant sur des notions de traitement numérique du signal abordées lors de la deuxième année de BUT GEII.

Les paramètres du filtre ont ensuite été associés aux potentiomètres du contrôleur afin de pouvoir modifier en temps réel la fréquence de coupure (cutoff) et le facteur de qualité (Q).

Représentation fréquentielle d’un filtre passe-bas.

Finalement, nous avons créé des enveloppes pour permettre la variation de l’amplitude du signal dans le temps, mais aussi de la fréquence de coupure du filtre passe-bas, reproduisant ainsi des sons typiques de synthétiseur comme le Roland TB303.

Création d’un synthétiseur FM

Le module touchant à sa fin, nous avons eu l’occasion de créer un synthétiseur librement en binôme se basant sur les éléments vu précédemment. Étant intrigué par la synthèse FM (Frequency Modulation), j’ai proposé que nous nous essayions à la réalisation d’un synthétiseur FM de deux opérateurs.

Le principe de la FM, abordé en cours d’électronique, est assez simple en théorie. Nous avons deux signaux (=opérateurs), une porteuse et un modulant. La fréquence de la porteuse est modulée par le modulant, créant des formes d’ondes très intéressantes.

Représentation temporelle de la modulation en fréquence d’un signal.

Pour réaliser une telle synthèse, nous avons créé deux oscillateurs et avons recalculé la fréquence de l’un d’entre eux (porteuse) en fonction de l’amplitude de l’autre (modulant). Après la résolution de problèmes d’optimisation du code provoquant des artefacts audios, nous avons réussi à produire une synthèse FM fonctionnelle.

Nous avons finalement ajouté un contrôle de la fréquence du modulant sur le potentiomètre de modulation du contrôleur MIDI afin d’ajouter des possibilités de création sonore plus avancées.

Ce module très enrichissant m’a permis d’en apprendre plus sur la synthèse sonore et d’approfondir des notions que je connaissais déjà. Il m’a également inspiré dans ma pratique musicale, me motivant à développer mes compétences en matière de création sonore et à mieux en comprendre les différents composants !