feat(player): звуки для сна (белый/розовый/коричневый шум) + Smart Sleep Fade

SleepSoundPlayer — процедурная генерация цветного шума через AudioTrack (розовый —
фильтр Келлета, коричневый — random walk). В таймере сна выбор звука: радио плавно
перетекает в выбранный шум (кроссфейд ≤90с), шум играет, к концу затухает — как в
спеке («Smart Sleep Fade»). В шторке таймера — чипы выбора звука.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
nk
2026-06-06 15:08:32 +03:00
parent bda2c5b30f
commit 4411d53a6c
4 changed files with 207 additions and 16 deletions

View File

@@ -75,7 +75,8 @@ class PlayerViewModel @Inject constructor(
// Таймер сна: оставшееся время в мс (null = выключен).
val sleepRemainingMs: StateFlow<Long?> = playerController.sleepRemainingMs
fun startSleepTimer(minutes: Int) = playerController.startSleepTimer(minutes * 60_000L)
fun startSleepTimer(minutes: Int, sound: com.radiola.service.SleepSound? = null) =
playerController.startSleepTimer(minutes * 60_000L, sound)
fun cancelSleepTimer() = playerController.cancelSleepTimer()
private var nowPlayingJob: Job? = null