From c17743d8295714e40424ecb8d472629fd586246e Mon Sep 17 00:00:00 2001 From: sirmrak Date: Thu, 21 May 2026 19:47:20 +0300 Subject: [PATCH] =?UTF-8?q?fix:=20Web=20Client=20=E2=80=94=20=D0=BF=D1=80?= =?UTF-8?q?=D0=B0=D0=B2=D0=B8=D0=BB=D1=8C=D0=BD=D0=BE=D0=B5=20=D0=BC=D0=B0?= =?UTF-8?q?=D1=81=D1=88=D1=82=D0=B0=D0=B1=D0=B8=D1=80=D0=BE=D0=B2=D0=B0?= =?UTF-8?q?=D0=BD=D0=B8=D0=B5=20RMS?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Проблема: - При RMS=0 столбики 30% (слишком много) - При RMS=0.3 столбики 2% (слишком мало) Решение: - Масштаб: RMS 0 → 10%, RMS 0.15 → 100% - Формула: avg = 10 + (RMS / 0.15) * 90 - Clamp 10-100 - Симуляция тишины: 10 + random*5 (маленькие колебания) Теперь: - Тишина (RMS=0) → 10% высоты - Говор (RMS=0.1) → ~70% высоты - Крик (RMS=0.15+) → 100% высоты --- web-client/client.html | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/web-client/client.html b/web-client/client.html index 25dfad8..c67aa06 100644 --- a/web-client/client.html +++ b/web-client/client.html @@ -600,18 +600,18 @@ return; } - // Берём RMS от satellite вместо локального микрофона - let avg = currentRms * 100; // Конвертируем 0.0-1.0 в 0-100 + // Масштабирование RMS: 0 → 10%, 0.15 → 100% + // Формула: avg = 10 + (RMS / 0.15) * 90 + let avg = 10 + (currentRms / 0.15) * 90; + avg = Math.min(100, Math.max(10, avg)); // Clamp 10-100 // Сглаживание как в оригинале rmsSmoothed = rmsSmoothed * 0.7 + avg * 0.3; avg = rmsSmoothed; - // Если satellite RMS недоступен – делаем «живую» симуляцию - if(avg < 1) { - avg = 12 + Math.random() * 25; - if(stateText.innerText.includes('LISTEN') || stateText.innerText.includes('SPEAK')) - avg = 45 + Math.random() * 55; + // Если satellite RMS недоступен (совсем тихо) – симуляция + if(currentRms < 0.001) { + avg = 10 + Math.random() * 5; // Маленькие колебания на базовом уровне } // Отрисовка 42 неоновых столбцов (баров)