Files
PTT-Live/client/src/components/AudioIndicator.jsx
T
benoit c863f045ae feat: VU-mètre audio entrant fonctionnel + simplification UI
Modifications :
- Ajout analyseur audio pour pistes distantes (remoteAnalyserRef)
- setupRemoteAudioAnalyser() appelé sur TrackSubscribed
- analyseAudioLevel() alterne automatiquement entre micro local et audio entrant
- useEffect redémarre analyse quand isTalking change
- Cleanup complet des 2 contextes audio (local + remote)

UI VU-mètre :
- Suppression jauge redondante (gardé uniquement barres)
- Barres uniformes (même hauteur) au lieu d'effet égaliseur
- Couleurs distinctes : vert (audio entrant) vs bleu/rouge (micro)
- Jaune > 75%, rouge clignotant > 90%

Tests validés :
 VU-mètre micro local : fonctionne
 VU-mètre audio entrant : fonctionne (fix principal)
 Alternance automatique talking/listening

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

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

37 lines
1.0 KiB
React

import './AudioIndicator.css';
/**
* VU-mètre simple pour visualiser le niveau audio
*/
export default function AudioIndicator({ level, isTalking }) {
// Normaliser niveau 0-100
const normalizedLevel = Math.min(100, Math.max(0, level));
return (
<div className="audio-indicator-container">
<div className="audio-indicator-label">
<span>{isTalking ? 'Votre micro' : 'Audio entrant'}</span>
</div>
{/* VU-mètre barres */}
<div className="audio-bars">
{[...Array(20)].map((_, i) => {
const threshold = (i + 1) * 5;
const isActive = normalizedLevel >= threshold;
const isWarning = i >= 15; // > 75%
const isDanger = i >= 18; // > 90%
return (
<div
key={i}
className={`audio-bar ${isActive ? 'active' : ''} ${
isActive && isDanger ? 'danger' : isActive && isWarning ? 'warning' : ''
} ${isTalking ? 'talking' : ''}`}
/>
);
})}
</div>
</div>
);
}