Projet
Spatialisation en direct
Une application permettant la diffusion en direct de fichiers sonores stéréos dans des systèmes multiphoniques
Genèse du projet
Rendre la diffusion multiphonique plus ludique
Ce projet est né d’un besoin rencontré dans mon parcours en art sonore à l’université. J’étais souvent confronté à des installations où plusieurs haut-parleurs diffusaient des sons en temps réel — mais il manquait une solution simple et personnalisée pour gérer cette spatialisation avec précision.
Objectif
Créer une application capable de diffuser une piste stéréo dans un environnement multiphonique. Chaque canal de la piste audio devait pouvoir être spatialement orienté, avec une gestion dynamique des paramètres comme la position ou le volume grâce à un contrôleur.
Technologies utilisées
Développé en Python, avec le module Pyo spécialisé en audio temps réel. Le code est structuré autour de la programmation orientée objet, ce qui permet une meilleure modularité et évolutivité du projet.
Défis rencontrés
L’un des grands défis a été de trouver et comprendre l’outil qui allait nous servir pour connecter les manettes au projet. Une fois le pont fait entre Python et PureData par le protocole OSC, il ne restait plus qu’à assigner les contrôles aux comportements souhaités.
Ce que j’ai appris
Ce projet m’a permis de renforcer ma maîtrise de Python dans un contexte artistique. J’ai aussi approfondi le concept d’interactivité entre l’utilisateur et un environnement informatique grâce à un contrôleur comme une manette de jeu vidéo.
Historique
Projet universitaire
Ce programme a été réalisé dans le cadre du cours “Musique de création et technologies” pendant mon Baccalauréat en musique numérique à l’Université de Montréal. Après deux sessions sur la programmation orientée objet en Python, ce projet a été mon premier vrai défi pour approfondir mes connaissances et explorer le processus de création en orienté objet.
Période post-scolaire
Fier du résultat, j’ai voulu concrétiser quelques idées qui m’étaient venues en cours de conception, mais que le temps m’avait manqué pour réaliser. J’ai donc fait appel à un ami et ancien camarade de classe, Francis Lecavalier, pour m’aider à les intégrer. Merci, Francis !
Laissé pour compte
Malheureusement, ce projet a fini par être mis de côté avec le temps. À l’époque, tout fonctionnait super bien et c’était vraiment satisfaisant. Mais avec l’évolution des technologies et sans maintenance, il est devenu obsolète. Aujourd’hui, il reste surtout du code et quelques photos comme souvenirs.
Le code
Python et Pyo
Cette application est écrite en langage Python et utilise la librairie Pyo pour toute la gestion audio. Pyo est une librairie conçue par un professeur de la faculté, Olivier Bélanger. Elle a été l’outil le plus utilisé lors des séances de cours de programmation orientée objet. C’était une façon très efficace de nous apprendre les rouages d’un code utilisant des outils externes.
WxPython
Pour le design, j’ai utilisé wxPython. Très polyvalente, cette librairie m’a permis de créer une interface simple et efficace. Elle inclut déjà des boutons, des sliders, et certains objets de Pyo étaient directement codés pour interagir avec wxPython, rendant l’implémentation très intuitive. Par exemple, la fonction PyoGuiControlSlider() permet de transformer un objet wxPython en slider avec paramètres audios, et tout cela en une seule ligne de code.
Les objets et les ressources
Grâce à la combinaison des technologies utilisées, j’ai pu structurer un code fonctionnel et bien organisé. Chaque élément est devenu un objet autonome, simple à manipuler. Pour éviter de surcharger le fichier principal, j’ai réparti le projet en plusieurs fichiers Python interconnectés. Cette méthode a consolidé mes compétences en programmation orientée objet tout en maintenant un code propre. Voilà une base solide pour des solutions efficaces.
Fonctionnalités
V.1
Un survole des fonctionnalités lors de la première version:
- Permet la lecture de fichier stéréo.
- Inclut des préréglages de disposition de sortie pour de la stéréo, de la quadriphonie, de l’octophonie de type diamant et de type paire stéréo.
- Le déplacement graphique des sorties dans l’espace est possible pour des
conf igurations personnalisées comme des installations. - Un contrôle individuel ou simultané de chaque canal de la source à l’aide la souris et des raccourcis clavier.
- Possibilité de varier la grandeur de la zone de distance sensible de toutes les sorties.
V.2
Les ajouts lors de la version 2 réalisé avec l’aide de Francis Lecavalier:
- La spatialisation des canaux gauche et droit se fait avec les joysticks d’une manette de PS3 grâce au protocole OSC.
- Il est possible de modifier individuellement les dimensions des zones de sortie.
- Le nombre de canaux de sortie est illimité. L’utilisateur peut définir, lors de l’initialisation, le nombre de haut-parleurs souhaité en les dessinant.




