Application professionnelle de traitement audio temps réel avec looper 3 pistes, effets vocaux/guitare, métronome, accordeur chromatique et chaîne de mastering.
- Fonctionnalités
- Prérequis
- Installation
- Lancement
- Utilisation
- Architecture
- Configuration
- Dépannage
- Contribution
- Licence
- Enregistrement/playback/overdub indépendants
- Contrôles avancés : play, pause, stop, seek
- Visualisation waveform temps réel
- Auto-sync intelligent avec quantification (1x, 2x, 4x, 1/2, 1/4)
- Import audio WAV/FLAC
- Export mixage avec bouclage automatique
- Éditeur waveform avec découpage
- Contrôle global (play/pause/stop all)
- Gain et mute individuels
Vocaux :
- Harmony (2-4 voix)
- Reverb Pro (room size, damping)
Guitare :
- Wah-Wah
- Chorus
- Métronome : 40-300 BPM, tap tempo, signatures personnalisées, pré-count
- Accordeur chromatique : Mode guitare folk 6 cordes, détection pitch temps réel
- Mastering Chain : EQ 5 bandes, compresseur, limiteur
- Sauvegarde/chargement projets
- Undo/Redo (20 actions)
- Auto-save (5 minutes)
- Système d'exploitation : Windows 10/11, Linux, macOS
- Python : 3.8 ou supérieur
- RAM : 4 GB minimum, 8 GB recommandé
- Interface audio : Carte son avec drivers ASIO (recommandé pour latence < 10ms)
- Navigateur : Chrome, Firefox, Edge (version récente)
- Téléchargez Python depuis python.org
- Lancez l'installateur
⚠️ IMPORTANT : Cochez "Add Python to PATH"- Cliquez sur "Install Now"
- Vérifiez l'installation :
python --version
pip --versionsudo apt update
sudo apt install python3 python3-pip python3-venv
python3 --version# Avec Homebrew
brew install python3
# Vérification
python3 --versionASIO4ALL permet d'obtenir une latence audio ultra-faible (< 10ms).
- Téléchargez ASIO4ALL depuis asio4all.org
- Lancez l'installateur
ASIO4ALL_v2.15.exe - Suivez l'assistant d'installation (options par défaut)
- Redémarrez votre ordinateur
Configuration ASIO4ALL :
- Ouvrez le panneau ASIO4ALL
- Sélectionnez votre carte son
- Réglez la taille du buffer : 128 samples (compromis latence/stabilité)
- Activez votre interface audio
Note : Si vous avez une interface audio professionnelle (Focusrite, PreSonus, etc.), utilisez ses drivers ASIO natifs au lieu d'ASIO4ALL.
git clone https://github.com/artkabis/voicelive_pro.git
cd voicelive_pro# Windows
python -m venv venv
venv\Scripts\activate
# Linux/macOS
python3 -m venv venv
source venv/bin/activateLe projet contient un fichier requirements.txt avec toutes les dépendances nécessaires :
pip install -r requirements.txtContenu de requirements.txt :
flask==3.0.0
flask-socketio==5.3.5
flask-cors==4.0.0
eventlet==0.33.3
sounddevice==0.4.6
numpy==1.24.3
soundfile==0.12.1
scipy==1.11.3
python-socketio==5.10.0
python -c "import sounddevice; print(sounddevice.query_devices())"Cette commande doit afficher la liste de vos périphériques audio.
# Assurez-vous d'être dans le dossier racine du projet
python run_web.pySortie attendue :
======================================================================
🎸 VOICELIVE PRO - SERVEUR WEB
======================================================================
✅ Serveur démarré sur: http://localhost:5000
Mode: eventlet + sync master + export audio
======================================================================
- Ouvrez votre navigateur
- Accédez à : http://localhost:5000
- L'interface VoiceLive Pro se charge
-
Sélection des périphériques audio :
- Input : Sélectionnez votre microphone/interface (préférez ASIO)
- Output : Sélectionnez vos enceintes/casque (même type que l'input)
⚠️ Important : Input et Output doivent utiliser le même type de driver (ASIO avec ASIO, ou Standard avec Standard)
-
Démarrer le système audio :
- Cliquez sur "Démarrer le système audio"
- Vérifiez que les indicateurs de niveau s'affichent
Piste 1 (base rythmique) :
- Sélectionnez la piste 1 (clic dessus)
- Activez le métronome si besoin
- Cliquez "Record/Stop" (bouton rouge)
- Enregistrez votre boucle
- Re-cliquez "Record/Stop" pour terminer
- La piste devient automatiquement le "master"
Pistes 2 et 3 :
- Sélectionnez la piste suivante
- Cliquez "Record/Stop"
- Enregistrez pendant que la piste 1 joue
- L'auto-sync alignera automatiquement la longueur
Overdub :
- Cliquez "Overdub" pour ajouter des couches sur une piste existante
- Cliquez "📁 Importer Audio" sur une piste
- Sélectionnez un fichier WAV ou FLAC
- Le fichier est automatiquement chargé et devient disponible
Boutons de transport global :
- ⏮️ Restart : Remet toutes les pistes au début et lance la lecture
▶️ Play All : Lance toutes les pistes (synchronisées si auto-sync activé)- ⏸️ Pause All : Met en pause toutes les pistes
- ⏹️ Stop All : Arrête toutes les pistes
- Cliquez "✂️ Éditer" sur une piste
- Éditeur waveform s'ouvre :
- Cliquez sur la waveform pour déplacer les marqueurs start/end
- Ajustez précisément avec les champs numériques
- Cliquez "
▶️ Prévisualiser" pour écouter - Cliquez "✂️ Appliquer le découpage" pour valider
Auto-Sync :
- Active par défaut
- Quantifie automatiquement les pistes (1x, 2x, 4x, 1/2, 1/4 du master)
- Correction si écart < 10%
Sync Now :
- Aligne manuellement les positions de lecture de toutes les pistes
Nudge :
- Décale temporellement une piste (±10ms, ±50ms)
- Configurez les options "Loop à l'export" sur chaque piste
- ✅ Activé : La piste boucle pendant toute la durée du mix
- ❌ Désactivé : La piste joue une seule fois
- Cliquez "Exporter WAV" ou "Exporter FLAC"
- Le fichier est téléchargé automatiquement
- Normalisation automatique à -1dB
- Activez le métronome (bouton ON)
- Réglez le BPM (slider ou Tap Tempo)
- Choisissez la signature (4/4, 3/4, etc.)
- Configurez le pré-count si souhaité
- Cliquez "Start" pour démarrer
- Activez l'accordeur (bouton ON)
- Jouez une corde à vide de votre guitare
- La corde détectée s'illumine en bleu
- Ajustez jusqu'à ce qu'elle devienne verte (accordée ±5 cents)
- Effets : Activez/désactivez individuellement, ajustez les paramètres en temps réel
- Mastering : Active les modules EQ, Compresseur, Limiteur selon vos besoins
voicelive_pro/
├── src/
│ ├── audio/ # Moteur audio et traitement
│ │ ├── engine_optimized.py
│ │ ├── looper.py
│ │ ├── metronome.py
│ │ ├── tuner.py
│ │ ├── mastering_chain.py
│ │ ├── undo_redo.py
│ │ └── project_manager.py
│ ├── effects/ # Effets audio
│ │ ├── vocal/
│ │ └── guitar/
│ ├── web/ # Serveur Flask et frontend
│ │ ├── server.py
│ │ └── static/
│ │ └── index.html
│ └── utils/
│ └── logger.py
├── run_web.py # Point d'entrée
├── requirements.txt # Dépendances Python
└── README.md
Technologies :
- Backend : Python, Flask, SocketIO, sounddevice
- Frontend : React 18, Tailwind CSS, Socket.IO Client
- Communication : WebSockets temps réel
Modifier le buffer size dans l'interface :
- 128 samples : ~3ms (recommandé avec ASIO)
- 256 samples : ~6ms (bon compromis)
- 512 samples : ~12ms (stable, plus de latence)
Par défaut, le serveur écoute sur :
- Port : 5000
- URL : http://localhost:5000
Pour changer le port, modifiez run_web.py :
socketio.run(app, host='0.0.0.0', port=8080)Solution :
python -c "import sounddevice; print(sounddevice.query_devices())"Si aucun device n'apparaît, réinstallez sounddevice :
pip uninstall sounddevice
pip install sounddevice --no-cache-dirSolutions :
- Utilisez des drivers ASIO (Windows)
- Réduisez le buffer size (128 samples)
- Fermez les applications gourmandes en CPU
- Désactivez les effets non utilisés
Solutions :
- Augmentez le buffer size (256 ou 512)
- Réduisez le nombre d'effets actifs
- Baissez les gains individuels des pistes
- Vérifiez la charge CPU (< 80%)
Solutions :
- Vérifiez que ASIO4ALL est installé et configuré
- Redémarrez l'application
- Dans ASIO4ALL, vérifiez que votre carte son est activée
Solutions :
- Activez "Auto-Sync" dans le panneau de synchronisation
- Utilisez "Sync Now" pour forcer l'alignement
- Utilisez les boutons Nudge pour ajustements fins
Les contributions sont les bienvenues !
- Forkez le projet
- Créez une branche (
git checkout -b feature/AmazingFeature) - Committez vos changements (
git commit -m 'Add AmazingFeature') - Pushez vers la branche (
git push origin feature/AmazingFeature) - Ouvrez une Pull Request
Guidelines :
- Code propre et commenté
- Tests unitaires si applicable
- Documentation des nouvelles fonctionnalités
Distribué sous licence MIT. Voir LICENSE pour plus d'informations.
- sounddevice - Interface audio Python
- Flask-SocketIO - WebSockets temps réel
- React - Interface utilisateur
- Tailwind CSS - Framework CSS
Lien du projet : https://github.com/artkabis/voicelive_pro
Fait avec ❤️ pour les musiciens