Projet 6 - Synthétiseur musical
Présentation
Il est un domaine qui a subi une véritable révolution grâce aux avancées de l’électronique, c’est la musique. Si bien qu’un genre particulier a fait son apparition dans les années 1970 : celui de la musique électronique, devenu extrêmement populaire avec l’arrivée des synthétiseurs, et dont l’engouement du public ne faiblit pas. Les synthétiseurs ont permis de décupler les possibilités créatives grâce à leur faculté de produire des sons inconnus jusqu’alors.
Dans ce chapitre, nous allons créer un prototype de synthétiseur dont les possibilités sonores n’auront rien à envier aux synthétiseurs du commerce. Libre à vous ensuite d’étendre ce prototype et fabriquer votre propre home studio.
1. Principe de fonctionnement
Nous n’allons pas expliquer ici tous les principes de la synthèse sonore, le sujet est bien trop vaste. Il est donc indispensable d’avoir quelques notions et prérequis pour bien comprendre et surtout utiliser le synthétiseur que nous allons fabriquer.
De manière très simplifiée, la synthèse sonore numérique permet de créer un son à partir d’une forme d’onde de base (carré, triangle, dent de scie, sinusoïdale, etc.) préalablement...
Matériel nécessaire
Le montage s’articule autour de plusieurs éléments :
-
une plaque de prototypage (ou breadboard) ;
-
trois boutons-poussoirs ;
-
trois potentiomètres de 10 kOhm ;
-
une prise Jack femelle pour casque audio ;
-
des fils « Dupont ».
Potentiomètres et prise Jack
Pour la partie programmation, nous utilisons une carte Arduino Uno.
Schéma et montage
Le montage consiste à brancher plusieurs potentiomètres et interrupteurs sur différentes entrées de l’Arduino, ainsi qu’une sortie sonore sous forme de prise Jack femelle.
Voici le schéma du montage :
Schéma du synthétiseur
Par défaut, Mozzi génère le signal sonore sur la pin 9 de l’Arduino. Il nous faut donc y brancher la prise Jack afin de pouvoir écouter nos productions avec un casque audio. La pointe (tip en anglais) de la prise jack doit être reliée à la broche 9 de l’Arduino, et le manchon à la masse (GND). Reliez également entre eux l’anneau (ring) et la pointe afin d’obtenir un son dans les écouteurs gauche et droit.
Prise Jack mâle
1. Les potentiomètres
Les potentiomètres sont extrêmement courants dans les montages électroniques et permettent en général de faire varier un paramètre du circuit. Il est possible de les retrouver sous différentes formes : rotatif, à glissière, etc. mais le principe est toujours le même : ce sont des résistances dont la valeur peut varier au moyen d’un curseur. Un potentiomètre de 10k Ohm type A sera capable d’afficher une résistance de 0 à 10 kOhms selon la position du curseur.
Les potentiomètres...
Programmation de l’Arduino
Le cœur du projet se trouve finalement dans le programme car il s’appuie sur la bibliothèque Mozzi extrêmement puissante en matière de traitement sonore en temps réel. Si ce n’est pas déjà fait, il vous faudra intégrer la bibliothèque Mozzi à votre IDE Arduino grâce au gestionnaire de bibliothèques.
1. Les déclarations préliminaires
La bibliothèque Mozzi permet de faire une multitude de choses et peut convenir à toutes sortes de projets. De ce fait, elle est divisée en plusieurs sous-librairies qu’il faut inclure selon les besoins du projet.
#include <MozziGuts.h>
#include <Oscil.h>
#include <EventDelay.h>
#include <ADSR.h>
#include <mozzi_midi.h>
#include <LowPassFilter.h>
#include <tables/smoothsquare8192_int8.h>
MozziGuts est la librairie de base, à inclure dans tous vos projets Mozzi.
Oscil permet l’utilisation d’oscillateurs et de formes d’ondes.
EventDelay est également une librairie à inclure systématiquement. Elle permet de gérer le temps de manière précise.
ADSR va permettre de manipuler des enveloppes de volume, d’effet, etc. Dans le cas qui nous intéresse ici, ce sera une enveloppe de volume.
Mozzi_midi permet d’intégrer le protocole MIDI dans le projet. Ce protocole est largement utilisé dans le monde de la Musique Assistée par Ordinateur (MAO).
LowPassFilter afin de générer un filtre passe-bas résonnant.
Et enfin, tables/smoothsquare8192_int8 est une librairie particulière. Elle intègre un tableau contenant l’ensemble des valeurs échantillonnées sur 1 octet à 8192 Hz d’un signal carré lissé (smooth square). Cela permet un gain de temps considérable lors des traitements. En effet, si l’Arduino devait calculer de toutes pièces, et à chaque instant, les valeurs de ce signal, cela lui prendrait beaucoup trop de temps.
Il existe de nombreuses autres tables de signaux, échantillonnées à différentes fréquences comme sin4096_int8 (sinusoïdale échantillonnée à 4096 Hz) ou bien encore triangle512_int8. La liste de ces tables...
Améliorations possibles
C’est bien connu, en matière musicale, la seule limite est l’imagination. Il en va de même pour notre synthétiseur qui peut être étendu pratiquement à l’infini.
1. Ajouter des contrôleurs (potentiomètres et interrupteurs)
Afin de multiplier les possibilités du synthétiseur, il est possible d’ajouter des potentiomètres pour :
-
modifier le volume sonore ;
-
contrôler d’autres paramètres de l’enveloppe de son (attack, sustain, etc.) ;
-
superposer un LFO ;
-
ajouter des effets (chorus, delay, etc.) ;
-
et bien d’autres choses encore...
Il est également possible d’ajouter des interrupteurs pour :
-
sélectionner d’autres formes d’ondes (triangle, carrés, etc.) ;
-
allumer/éteindre le LFO ;
-
ajouter un générateur de bruit ;
-
et plus encore...
2. Multiplier les oscillateurs
Ce synthétiseur est déjà capable de générer un son complexe grâce à deux oscillateurs mais en ajoutant un troisième, voire un quatrième oscillateur (et donc le nombre adéquat de potentiomètres pour les contrôler), le son pourrait être grandement enrichi avec autant d’oscillateurs, et prendrait ainsi une ampleur et une profondeur remarquable.
Soit chaque oscillateur dispose...
Ressources supplémentaires
Documentation de Mozzi (en anglais) :
https://sensorium.github.io/Mozzi/
Quelques exemples de synthétiseurs construits sur base Arduino + Mozzi :
https://www.instructables.com/Arduino-Based-Synth-With-Mozzi-Library/
https://arduinokickstompdrum.wordpress.com/
https://bloghoskins.blogspot.com/2019/07/helios-one-arduino-synth-part-1.html
https://diyelectromusic.wordpress.com/2021/07/11/auduino-midi-granular-synthesis/
https://www.polaxis.be/2015/01/mozmo-the-brilliant-arduino-mozzi-synth-in-an-eurorack-hardware/
Arduino et les messages MIDI :
https://www.instructables.com/Send-and-Receive-MIDI-with-Arduino/