1. Objectifs du Projet

L’objectif principal est de fournir une interface graphique (GUI) permettant de transformer un ordinateur en processeur d’effets en temps réel.

  • Traitement à faible latence : Utilisation de buffers optimisés pour minimiser le retard entre l’entrée et la sortie.
  • Modularité : Possibilité d’activer/désactiver et de régler quatre effets classiques (Distorsion, Chorus, Reverb, Delay).
  • Persistance : Sauvegarde automatique de la configuration matérielle et d’une bibliothèque de presets personnalisés.

2. Dépendances et Installation

Pour faire fonctionner ce code, ton environnement Python doit disposer des bibliothèques suivantes :

  • tkinter (standard) : Pour l’interface graphique.
  • sounddevice : Pour capturer l’entrée audio et envoyer le signal vers les haut-parleurs/casque.
  • numpy : Pour effectuer les calculs mathématiques rapides sur les tableaux de données audio.
  • json (standard) : Pour la lecture et l’écriture des fichiers de configuration.

Commande d’installation :

Shell

Note : Sous Linux, l’installation de libportaudio2 peut être nécessaire.


3. Architecture des Fichiers

L’application repose sur un trio de fichiers pour séparer la logique des données :

FichierRôle
audio_passthrough_gui.pyLe Cœur : Contient la logique GUI (Tkinter) et l’algorithme de traitement audio (Callback).
pedalier_app_config.jsonConfiguration App : Mémorise la taille de la fenêtre et les derniers périphériques audio sélectionnés.
pedalier_library.jsonLa Bibliothèque : Stocke tous tes réglages de sons (Presets) et l’état des curseurs à la fermeture.

4. Fonctionnement Technique

A. Le Flux Audio (Passthrough)

Le code utilise une fonction de callback (cb). C’est une fonction qui est appelée des centaines de fois par seconde. Elle reçoit un bloc de son (indata), lui applique des transformations mathématiques, et le renvoie (outdata).

B. Les Algorithmes d’Effets

  1. Distorsion : Utilise la fonction mathématique np.tanh pour « écraser » le signal. Cela crée une saturation riche en harmoniques.
  2. Chorus : Crée un décalage variable (LFO) dans le temps qui simule plusieurs instruments jouant ensemble.
  3. Delay : Utilise un delay_buffer (mémoire tampon) pour réinjecter le son passé dans le son présent avec un certain feedback.
  4. Reverb : Note : Actuellement déclarée dans l’interface, mais le moteur de calcul nécessite une implémentation plus complexe (comme un peigne de filtres) pour être pleinement fonctionnel.

5. Guide d’Utilisation

  1. Configuration : Au premier lancement, va dans le menu Périphériques pour choisir ton entrée (ex: Carte son USB) et ta sortie.
  2. Démarrage : Clique sur START pour lancer le moteur audio.
  3. Réglage : Active les effets avec les boutons ON/OFF et ajuste les curseurs.
  4. Presets : * Sélectionne un son (ex: METAL_MODERN) dans la liste pour changer tous les réglages instantanément.
    • Crée ton propre son et clique sur Sauver pour l’ajouter à ta bibliothèque.
  5. Fermeture : En fermant la fenêtre, l’application mémorise tout pour ta prochaine session.

6. Améliorations Proposées 🚀

Pour faire passer ce projet au niveau supérieur, voici quelques pistes de développement :

  • Implémentation de la Reverb : Ajouter un algorithme de réverbération algorithmique (type Freeverb) dans la boucle cb.
  • Visualisation (Vumètre) : Ajouter une barre de progression Tkinter qui bouge en temps réel selon le volume d’entrée pour éviter la saturation (clipping).
  • Noise Gate : Ajouter un petit script qui coupe le son si le volume d’entrée est trop faible, pour éliminer le souffle des micros quand on ne joue pas.
  • Gestion des erreurs : Ajouter une vérification si le périphérique audio sélectionné est débranché en cours d’utilisation.

SOURCE