Architecture du synthétiseur numérique modulaire : exemple de l'hélice
Note : Les niveaux présentés dans "Caractéristiques" sont subjectifs. La signification précise est détaillée dans Détails des caractéristiques des projets universitaires.
J'ai développé un synthétiseur numérique temps réel en C pour la génération d'audio embarquée, spécialement orienté vers la simulation de sons sous-marins. Le système fonctionne sur ARM Cortex-A79 avec échantillonnage 10 kHz et contrainte temps réel de 100µs par échantillon.
L'architecture modulaire repose sur plusieurs générateurs de signaux : un générateur de famille de raies (jusqu'à 4 harmoniques) et un générateur de bruit blanc (librairie Dave Hale). Le système exploite un coefficient de normalisation $K_V = 8192$ pour maximiser la dynamique 16 bits et intègre des optimisations critiques pour l'embarqué.
Les filtres FIR à 64 coefficients utilisent l'optimisation de symétrie divisant par deux les multiplications nécessaires. Cette approche garantit un temps de groupe constant essentiel pour l'audio et respecte les contraintes temps réel. L'équation de récurrence s'écrit :
En mode famille de raies, le générateur atteint une séparation spectrale de 15,9 dB entre fréquences désirées (77,8 dB) et parasites (61,9 dB max). L'implémentation inclut une gestion automatique des débordements numériques par remise à zéro basée sur la plus petite fréquence. Le signal généré suit l'équation :
En mode bruit filtré, les filtres FIR à 64 coefficients garantissent un temps de groupe constant de 3,3 ms, essentiel pour les applications audio.
Le système intègre une modulation FM sophistiquée avec quatre lois implémentées : constante, croissante (dents de scie), sinusoïdale et aléatoire. L'architecture utilise des pointeurs de fonction permettant l'ajout transparent de nouvelles lois selon l'équation :
La modulation AM exploite la décomposition en série de Fourier avec reconstruction par les 8 harmoniques de plus haut niveau. Les coefficients $a_n$ et $b_n$ sont calculés via MathCAD et l'algorithme gère seuils et niveau continu pour une synthèse audio réaliste. La série de Fourier s'exprime :
L'application finale synthétise le son d'une hélice sous-marine à 4 pales (60 rpm) combinant trois éléments : bruit ambiant filtré 0-600 Hz, modulation AM périodique à 4 motifs (f0 = 1 Hz) avec une pale déséquilibrée, et modulation FM croissante 100-110 Hz reproduisant l'effet Doppler.
Cette application démontre la capacité du synthétiseur à créer des sons complexes réalistes par combinaison de techniques avancées de traitement du signal numérique.
Ce projet illustre la maîtrise complète du traitement du signal numérique embarqué, de la conception algorithmique aux optimisations temps réel. L'architecture modulaire facilite l'extension fonctionnelle tandis que les optimisations (symétrie FIR, structures configurables) assurent la viabilité embarquée.
La réalisation démontre l'intégration réussie de concepts avancés : filtrage FIR, modulations FM/AM complexes, génération de bruit, et synthèse harmonique dans un système temps réel contraint. Cette base constitue un fondement solide pour le développement de systèmes audio numériques professionnels.
Note : L'ensemble du code est disponible sur mon GitHub : SAE402-SNA.