Domaines : Programmation Orientée Objet, Traitement du Signal Numérique (DSP), Interfaces Graphiques, Temps Réel.
1. Objectifs Pédagogiques
Ce projet vise à consolider les compétences et méthodes acquises en programmation orientée objets (UML/C++) et en programmation événementielle, par la réalisation d’une application complexe de traitement audio. Les objectifs spécifiques sont :
- Méthodologie OO : Conception et modélisation UML d’une architecture orientée objet flexible.
- Filtrage numérique des signaux : Implémentation de filtres numériques (IIR d’ordre 2, passe-bande, passe-bas, passe-haut) via la transformation bilinéaire.
- Traitement Temps Réel : Gestion du flux audio avec latence minimale et mise à jour des interfaces graphiques sans blocage (utilisation de Queues ou Buffers).
- Interface Homme-Machine (IHM) : Création d’une interface graphique fonctionnelle sous Qt6.10, exploitant le modèle Signal/Slot pour la réactivité utilisateur.
2. Spécifications Techniques et Environnement
Le projet s’inscrit dans un environnement de développement standardisé :
- Langage : C++ (normes C++17 ou C++20). Utilisation des bibliothèques standards (
std). - Bibliothèque GUI & IO : Qt6.10 pour la création de l’interface et la gestion des entrées et sorties audio.
- Outils de build : CMake ou Qmake (recommandé pour débutant), sous l’environnement de développement QtCreator.
- Contraintes de codage : Respect strict des règles d’hygiène de codage, commentaires explicatifs et cohérence entre les diagrammes UML et l’implémentation.
- Les sources du projet sont disponibles ici : https://gitlab.in2p3.fr/thomas.grenier/audiofilter
- L’énoncé complet est ici : https://www.creatis.insa-lyon.fr/~grenier/wp-content/uploads/teaching/Cpp/PrjAudioFilter/ProjetAudioFiltrage.pdf
3. Description Fonctionnelle de l’Application
L’application développée doit permettre :
- Acquisition : Lecture de fichiers audio (WAV, MP3) ou captation via une entrée matérielle (microphone).
- Traitement : Application d’un filtre paramétrique passe-bande configurable. Les paramètres ajustables sont :
- La fréquence centrale ($f_c$).
- Le facteur de qualité ($Q$), déterminant la largeur de bande passante.
- Le gain en décibels (boost/cut) à la fréquence centrale.
- Sortie : Restitution audio (sortie matérielle ou écriture dans un fichier) et visualisation en temps réel du spectre.
4. Aspects Théoriques et Algorithmiques
La conception du filtre repose sur le calcul des coefficients d’un IIR biquadratique. La méthodologie recommandée suit la trajectoire suivante :
- Définition de la fonction de transfert continue $H(p)$ selon les spécifications (passe-bande, coupe-bande, etc.).
- Application de la transformation bilinéaire pour passer au domaine discret $H(z)$.
- Calcul des coefficients ($a_0, a_1, a_2, b_1, b_2$) en utilisant les formules standards (références : Audio EQ Cookbook, TI SLAA447).
Des extensions sont prévues pour explorer l’architecture logicielle :
- Visualisation FFT : Intégration d’une Transformée de Fourier Rapide sur 512 échantillons, mise à jour dynamiquement.
- Multi-filtrage : Extension de l’architecture pour supporter une chaîne de filtres (Low, Low-mid, High-mid, High) ou un égaliseur paramétrique multi-bandes (11 bandes fixes).
5. Livrables Attendus
Les livrables du projet suivants sont attendus
- Code source : Documenté, structuré et conforme aux normes C++17/20.
- Modélisation : Diagrammes de classes UML justifiant les choix d’architecture (relations héritage, agrégation).
- Application : Interface graphique Qt fonctionnelle permettant le réglage des paramètres en temps réel.
- Rapport de synthèse (4 à 5 pages) :
- Justification du design objet.
- Méthodologie de validation des calculs et analyse expérimentale (réponse impulsionnelle, réponse fréquentielle).
- Discussion critique sur les écarts observés et les limites de l’implémentation.
- Si usage de l’IA : transparence et chaînes de prompts.
6. Évaluation et Usage de l’IA Générative
L’évaluation comprend une partie orale (“TP Noté”) portant sur la maîtrise du projet et des questions ciblées sur le développement réalisé.
Note importante : L’utilisation d’outils d’IA générative est autorisée à titre d’aide, mais sous condition :
- L’étudiant doit adopter une approche “socratique” (comprendre et justifier chaque élément généré).
- L’étudiant doit acquérir les compétences méthodologiques de developpement et être en mesure de justifier et reproduire l’ensemble du développement sans assistance IA.
Références techniques :
- Audio EQ Cookbook : https://www.w3.org/TR/audio-eq-cookbook/
- Digital Biquad Filter (Wikipedia) : https://en.wikipedia.org/wiki/Digital_biquad_filter