WebAmp est une application hybride composée de :
- Native Helper (C++) : Traitement audio temps réel
- Frontend Web (React/TypeScript) : Interface utilisateur
- Communication WebSocket : Liaison entre les deux
┌─────────────────┐
│ Frontend Web │
│ (React/TS) │
│ Port 10000 │
└────────┬────────┘
│ WebSocket
│ (Port 8765)
▼
┌─────────────────┐
│ Native Helper │
│ (C++) │
│ │
│ ┌───────────┐ │
│ │Audio Driver│ │
│ │WASAPI/ASIO │ │
│ └─────┬─────┘ │
│ │ │
│ ┌─────▼─────┐ │
│ │DSP Pipeline│ │
│ │ │ │
│ │Effect Chain│ │
│ └────────────┘ │
└─────────────────┘
native/
├── include/ # Headers
│ ├── audio_engine.h
│ ├── audio_driver.h
│ ├── dsp_pipeline.h
│ ├── effect_chain.h
│ ├── effect_base.h
│ ├── websocket_server.h
│ ├── wasapi_driver.h
│ └── asio_driver.h
├── src/ # Implémentations
│ ├── main.cpp
│ ├── audio_engine.cpp
│ ├── dsp_pipeline.cpp
│ ├── effect_chain.cpp
│ ├── wasapi_driver.cpp
│ ├── asio_driver.cpp
│ └── websocket_server.cpp
└── CMakeLists.txt
- Coordonne le driver audio et le pipeline DSP
- Gère le cycle de vie de l'application
- Point d'entrée principal
- Abstraction pour différents drivers (WASAPI, ASIO, CoreAudio, PipeWire)
- Gère les callbacks audio temps réel
- Mesure la latence
- Traite l'audio dans le callback
- Applique les gains d'entrée/sortie
- Gère les statistiques (CPU, peaks)
- Chaîne d'effets modulaire
- Thread-safe pour modifications à chaud
- Support des presets
- Communication avec le frontend
- Envoi/réception de messages JSON
- Gestion des reconnexions
frontend/
├── src/
│ ├── components/
│ │ ├── Pedalboard.tsx # Chaîne d'effets
│ │ ├── AmplifierSelector.tsx # Sélecteur d'ampli
│ │ ├── drummachine/ # Machine à rythmes
│ │ │ ├── DrumMachinePanel.tsx
│ │ │ └── DrumMachineCompact.tsx
│ │ └── monitoring/ # Panneaux de monitoring
│ ├── utils/
│ │ ├── pedalControlHelpers.ts # Analyse des contrôles de pédales
│ │ ├── pedalboardSync.ts # Synchronisation WebSocket/Audio
│ │ └── profileLoader.ts # Chargement de profils
│ ├── services/
│ │ └── websocket.ts # Client WebSocket
│ ├── App.tsx
│ └── main.tsx
└── package.json
- Affichage de la chaîne d'effets
- Ajout/suppression d'effets
- Réordonnancement par drag & drop
- Contrôle des paramètres
- Synchronisation avec moteur audio et WebSocket
- Sélection d'amplificateur
- Contrôles ampli (gain, volume, tone)
- Sélection de cabinet (IR)
- Position du micro
- Machine à rythmes complète
- Interface compacte intégrée au layout
- Modal plein écran pour édition avancée
- Synchronisation avec le contexte global
pedalControlHelpers.ts: Analyse des types de contrôles (sliders, knobs, switch-selectors)analyzeControlTypes(): Analyse les paramètres d'une pédaleanalyzeControlTypesFromModel(): Analyse depuis le modèle de pédaledetermineKnobSize(): Détermine la taille optimale des knobs
pedalboardSync.ts: Synchronisation unifiée entre moteur audio et WebSocketsyncEffectToAudio(): Synchronise avec le moteur audiosyncEffectToWebSocket(): Synchronise avec WebSocketremoveEffectFromAudio(): Supprime un effetupdateEffectParametersInAudio(): Met à jour les paramètressetEffectEnabledInAudio(): Active/désactive un effet
profileLoader.ts: Chargement séquentiel de profils/presets avec gestion d'étatloadProfile(): Charge un profil depuis les donnéesloadProfileSequentially(): Charge un profil de manière séquentielle avec délais configurables
Voir OPTIMIZATION.md pour plus de détails sur les optimisations.
- CPU usage
- Latence
- Vu-mètres (input/output)
Messages JSON bidirectionnels :
Client → Serveur:
start/stopsetParameteraddEffect/removeEffectgetStats
Serveur → Client:
status(running state)stats(CPU, latence, peaks)ack/error
Voir API WebSocket pour les détails complets du protocole.
Répartition cible :
- Audio callback : 2-3 ms
- Pipeline DSP : 1-2 ms
- Communication WebSocket : 1-2 ms
- Rendu UI : < 1 ms
- Buffer audio : 2-3 ms
- ✅ Buffer audio minimal : 64-128 samples
- ✅ Mode exclusif : WASAPI exclusive mode
- ✅ Pas d'allocation : Dans le callback audio
- ✅ Lock-free : Ring buffers pour communication
- ✅ Thread-safety : Mutex uniquement hors callback
- Latence moyenne : 3-5 ms
- CPU usage : < 15% (avec 5-10 effets)
- Stabilité : Testé 24h+ sans crash
- Guide de Démarrage - Installation et premier lancement
- API WebSocket - Protocole de communication détaillé
- Roadmap - Prochaines étapes et fonctionnalités prévues