Zone Généraliste 8
(ZG8)
- Coefficient : 2
- Volume Horaire: 54.0h estimées de travail (dont 24.0h EdT)
- Labo : 24h encadrées
- Travail personnel hors EdT : 30h
- Dont projet : 24h encadrées et 30h projet personnel
Liste des AATs
Description
Dans cet enseignement, on aborde les techniques, outils et méthodes pour mettre en œuvre un projet pluridisciplinaire mêlant traitement du signal audio, systèmes embarqués et programmation. Le cours s'appuie sur la réalisation, en équipe de 2 étudiants, d'un synthétiseur musical numérique piloté par un clavier MIDI, capable de combiner synthèse soustractive (oscillateurs riches en harmoniques sculptés par un filtre paramétrique) et synthèse par modulation (AM et FM) pour générer une large palette sonore allant des sons d'instruments classiques aux timbres métalliques et inharmoniques. Le système est implémenté en temps réel sur une carte à microcontrôleur (STM32 Discovery) et combine oscillateurs numériques, filtre State Variable, enveloppes ADSR, opérateurs de modulation et communication MIDI sur USB. La démarche pédagogique insiste sur la validation expérimentale à chaque étape : les algorithmes sont d'abord prototypés en simulation (Python/NumPy/SciPy), puis portés sur cible, et systématiquement vérifiés à l'aide de l'instrumentation du laboratoire (oscilloscope, analyseur de spectre, sortie audio) pour confronter le comportement temporel et fréquentiel mesuré aux prédictions théoriques. L'organisation collaborative du projet s'appuie sur un dépôt GitLab partagé permettant le suivi des contributions, le versionnement du code et la structuration du travail d'équipe.
Acquis d'Apprentissage visés (AAv)
AAv1 [heures: 21, B2, B3, C2] : modéliser et simuler les briques de traitement du signal d'un synthétiseur numérique combinant synthèse soustractive et synthèse par modulation
- Identifier les modèles mathématiques pertinents pour chaque brique du synthétiseur (équations des oscillateurs, représentation d'état du filtre State Variable, machine à états de l'enveloppe ADSR, équations de modulation AM et FM avec décomposition en série de Bessel) et les adapter aux contraintes du traitement temps réel à fréquence d'échantillonnage audio
- Concevoir et dimensionner différentes implémentations d'oscillateurs numériques (calcul direct trigonométrique, récurrence en quadrature, table d'ondes avec interpolation) en comparant analytiquement leurs compromis en termes de précision, complexité calculatoire et flexibilité, en particulier face à une fréquence fondamentale variant dans le temps
- Concevoir une chaîne de synthèse par modulation d'amplitude (AM) et par modulation de fréquence (FM) à partir des notions de porteuse, modulante, indice de modulation et rapport de fréquences ; prédire par le calcul le contenu spectral généré (bandes latérales en AM, raies pondérées par les fonctions de Bessel en FM)
- Concevoir et dimensionner un filtre numérique paramétrique (filtre State Variable, formulation Cytomic) en représentation d'état, et déterminer par le calcul sa réponse en fréquence (passe-bas, passe-bande, passe-haut) en fonction de la fréquence de coupure et du facteur de qualité
AAv2 [heures: 21, C1, D1, D3, D4, B4] : réaliser le prototype temps réel du synthétiseur sur cible microcontrôleur, intégrer la communication MIDI sur USB, et valider expérimentalement son comportement à l'aide de l'instrumentation du laboratoire
- Déterminer l'architecture logicielle du système embarqué en identifiant les blocs fonctionnels (oscillateurs, modulateurs AM/FM, filtre, enveloppe, gestionnaire MIDI, gestionnaire de buffer audio) et réaliser le schéma d'ensemble présentant la communication entre ces blocs ainsi qu'avec les périphériques de la carte (codec audio, USB, écran)
- Réaliser un prototype fonctionnel à partir de la conception documentée, en implémentant chaque brique en C sur la carte STM32 Discovery dans l'environnement STM32CubeIDE, en respectant une organisation modulaire facilitant l'extension et le débogage
- Gérer correctement le remplissage d'un buffer audio circulaire à la fréquence d'échantillonnage imposée par le codec audio embarqué, et décoder le protocole MIDI sur USB (messages Note On, Note Off, Control Change) au sein d'une fonction de callback pour piloter les paramètres du synthétiseur (hauteur, vélocité, déclenchement de l'enveloppe, fréquence de coupure, indice de modulation FM, taux de modulation AM)
- Valider les performances du prototype par la mise en œuvre d'un ensemble de tests à l'aide de l'instrumentation du laboratoire : analyse temporelle à l'oscilloscope numérique (formes d'onde, fréquence fondamentale, enveloppes ADSR), analyse spectrale à l'analyseur de spectre ou via la FFT de l'oscilloscope (contenu harmonique, bandes latérales AM/FM, repliement spectral éventuel)
- Évaluer la justesse des résultats en confrontant les mesures expérimentales aux prédictions théoriques et aux résultats de simulation Python, en vérifiant les ordres de grandeur et la cohérence des spectres mesurés avec les modèles établis en AAv1
- Identifier les causes des éventuels écarts ou dysfonctionnements observés (distorsion liée à la quantification, artefacts d'échantillonnage, latence du buffer audio, instabilité numérique du filtre) par des actions de débogage et de mesure, et apporter des solutions appropriées
- Proposer et implémenter une extension personnelle du synthétiseur (effet audio supplémentaire, oscillateur basse fréquence, algorithme FM multi-opérateurs, interface graphique sur écran tactile, etc.) en autonomie sur les dernières séances, et la valider expérimentalement
AAv3 [heures: 12, E3, E4, F1, F2] : conduire le projet de façon collaborative et organisée à l'aide d'un dépôt GitLab partagé, et restituer le travail à l'oral en s'adaptant à l'auditoire
- Contribuer au projet dans une équipe imposée en bonne coopération, en mobilisant ses propres compétences (signal, embarqué, mesure) et en s'appuyant sur la diversité des profils et des avis au sein de l'équipe
- Définir et conduire le projet en mettant en œuvre une planification, un suivi de l'avancement et un ajustement de l'exécution en fonction des difficultés rencontrées, dans une perspective d'amélioration continue
- Produire des supports adaptés pour rendre compte du travail : structuration du dépôt GitLab (arborescence claire séparant simulation Python / code embarqué C / mesures, README documentant la compilation et l'exécution), commits réguliers et explicites assurant la traçabilité des contributions individuelles, supports visuels pour la démonstration finale
- Présenter et démontrer à l'oral, en groupe, le synthétiseur réalisé en s'appuyant sur une argumentation robuste (justification des choix de conception, comparaison théorie/simulation/mesure) et en s'adaptant à l'auditoire et à la situation de communication
- Interagir avec l'auditoire pour répondre aux questions techniques portant sur les aspects signal, embarqué et logiciel du projet, et appliquer des mesures de remédiation à partir d'un retour formatif sur une première performance
Modalités d'évaluation
- Évaluations formatives intermédiaires (validation de briques fonctionnelles : oscillateurs, AM/FM, filtre, enveloppe, MIDI) incluant la démonstration des mesures à l'oscilloscope et à l'analyseur de spectre
- Présentation et démonstration finale du projet (évaluation certificative)
- Évaluation de la contribution individuelle et du travail d'équipe
Mots clés
- Projet, pluridisciplinarité,
Pré-requis
- Programmation C, programmation orientée objet
- Bases en systèmes embarqués et microcontrôleurs
- Bases en traitement du signal numérique (échantillonnage, filtrage, transformée de Fourier)
- Notions de modulation AM/FM (cours de communications analogiques)
- Utilisation de l'oscilloscope et de l'analyseur de spectre
- Notions de Python scientifique (NumPy, SciPy)
