Commit Graph

7 Commits

Author SHA1 Message Date
benoit f2e1a50d6d fix: résolution device IDs et correction sox capture args
Corrections pour le routing audio carte son → LiveKit :

**Fixes audio backend**
- AudioBridgeManager : extraction des device IDs depuis config.audio.device
- AudioBridge : ajout résolution device ID → device name pour CoreAudio/sox
- CoreAudioBackend : correction index args sox capture (args[2] au lieu de args[1])

**Résultat**
-  Sox capture fonctionne : lit depuis "Microphone MacBook Pro"
-  Audio capturé et envoyé vers routing
-  Sox playback se ferme après 0.2s (problème persistant à corriger)

**Autres modifications**
- Logging centralisé (Logger.js)
- IP corrigée : 192.168.0.146
- Suppression système channels[] legacy dans groupes

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2026-05-26 22:01:53 +02:00
benoit 1c89546b61 fix: crash EPIPE lors ecriture dans sox stdin ferme
- Ajout error handler sur playbackProcess.stdin (capture EPIPE)
- Verification stdin.writable avant write
- Stop playback loop si stdin non disponible
- Evite crash serveur lors stop/reload AudioBridge
2026-05-26 15:36:00 +02:00
benoit 2338562b4f fix: ajout error handling pour getDefault audio devices
- Try/catch dans getDefaultInputDevice et getDefaultOutputDevice
- Cherche d'abord device avec isDefault.input/output = true
- Fallback sur premier device avec canaux disponibles
- Retourne null en cas d'erreur au lieu de crash
2026-05-26 15:30:20 +02:00
benoit 2acd652df0 fix: detection correcte des cartes son CoreAudio avec nombre de canaux reel
- Parse coreaudio_device_input/output depuis system_profiler (nombre canaux)
- Ajoute sampleRate reel par device
- Ajoute metadata: manufacturer, transport, isDefault
- Filtre devices sans input ni output
- Corrige l'API pour exposer les 11 devices au lieu de 2
2026-05-26 15:18:41 +02:00
benoit fb9d0fd101 fix: remplacement naudiodon par sox pour stabilite macOS
Probleme: naudiodon (bindings PortAudio) causait segfaults sur macOS

Solution: Utiliser sox (Sound eXchange) en subprocess

Modifications CoreAudioBackend.js:
- Remplacement naudiodon par sox (stable, deja installe sur macOS)
- Detection devices via system_profiler SPAudioDataType (vraies cartes)
- Capture audio via sox avec driver coreaudio
- Lecture audio via sox avec stdin/stdout
- Meme API (EventEmitter), compatible avec AudioBridge

Avantages sox:
- Stable (aucun segfault)
- Supporte toutes les cartes CoreAudio (USB, Thunderbolt, virtuelles)
- Multi-canaux natif
- Installe par defaut sur macOS (ou via brew install sox)
- Meme approche que JACK/PipeWire (subprocess)

Detection reelle des cartes:
- Parse system_profiler pour lister VRAIES cartes son
- Focusrite, MOTU, RME, Dante DVS, etc. detectes
- Fallback sur Built-in Mic/Output si aucune carte externe

Modifications package.json:
- Suppression dependance naudiodon (instable)

Modifications install/macos.sh:
- Ajout installation sox via Homebrew
- Detection si deja installe

Plus de warning "devices fictifs" au demarrage !
2026-05-26 14:16:13 +02:00
benoit 03b3f94824 feat: ajout APIs détection et configuration cartes son (Phase 2.5)
- GET /admin/audio/devices : énumération devices CoreAudio
- GET /admin/audio/device : récupération config actuelle
- POST /admin/audio/device : sélection carte son + sample rate
- Workaround naudiodon segfault avec devices fictifs
- Configuration sauvegardée dans config.yaml
2026-05-25 09:40:43 +02:00
benoit efd697a9d3 feat: implémentation complète du bridge audio serveur (Phase 1.3)
Composants créés :
- CoreAudioBackend.js : Backend audio macOS natif (naudiodon/PortAudio)
  - Énumération et sélection devices audio
  - Capture audio 48kHz mono/stereo
  - Lecture audio avec buffer circulaire
  - Gestion underrun/overrun

- OpusCodec.js : Encodeur/décodeur Opus
  - Support 32-320 kbps configurable
  - Présets voix (économique, standard, HD) et musique
  - Frame 20ms (960 samples à 48kHz)
  - Statistiques encode/decode

- JitterBuffer.js : Buffer FIFO adaptatif
  - Cible 40ms (2 frames)
  - Détection underrun/overrun
  - Mode adaptatif pour conditions réseau variables
  - Statistiques latence et santé buffer

- LiveKitClient.js : Client LiveKit pour bridge
  - Connexion room en tant que participant "AudioBridge"
  - Publication/souscription tracks audio
  - Reconnexion automatique
  - Gestion événements participants

- AudioBridge.js : Classe principale orchestration
  - Détection automatique backend (CoreAudio macOS)
  - Routing bidirectionnel CoreAudio ↔ Opus ↔ LiveKit
  - Configuration via présets ou custom
  - Logs détaillés et statistiques temps réel

Dépendances ajoutées :
- opusscript : Codec Opus JavaScript
- naudiodon : Bindings natifs PortAudio/CoreAudio
- livekit-client : SDK LiveKit côté serveur

TODO.md mis à jour avec tâches Phase 1.3 complétées.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2026-05-22 22:18:18 +02:00