diff --git a/apps/desktop/lib/src/sfx/sound_bank.dart b/apps/desktop/lib/src/sfx/sound_bank.dart index 4d42ea8..bd9e4de 100644 --- a/apps/desktop/lib/src/sfx/sound_bank.dart +++ b/apps/desktop/lib/src/sfx/sound_bank.dart @@ -8,7 +8,7 @@ import 'synth.dart'; // (D E G A B), so overlapping sounds agree; quiet and short. const _d4 = -7, _a4 = 0, _b4 = 2; -const _d5 = 5, _e5 = 7, _g5 = 10, _a5 = 12, _b5 = 14; +const _d5 = 5, _g5 = 10, _a5 = 12, _b5 = 14; const _d6 = 17, _e6 = 19, _g6 = 22, _a6 = 24, _b6 = 26; double _p(int s) => semi(s); @@ -31,12 +31,10 @@ SoundSpec soundFor(SfxKind kind, {int readyIndex = 1}) => switch (kind) { Note(0, _p(_a5), 0.35, gain: 0.8, bright: 0.2), Note(0.09, _p(_g5), 0.45, bright: 0.15), ], cutoff: 3800, peakDb: -20, room: 0.1), - // A strum up the open strings, a chime on top. + // Just the bell: playback starting is the rest of the cue. SfxKind.forceReady => SoundSpec([ - for (final (i, s) in [_d5, _e5, _g5, _a5, _b5, _d6].indexed) - Note(i * 0.032, _p(s), 1.2, gain: 0.55 + i * 0.05, bright: 0.55), - Note(0.22, _p(_d6) * 2, 1.4, voice: Voice.chime, gain: 0.18), - ], peakDb: -17), + Note(0, _p(_d6) * 2, 1.6, voice: Voice.chime), + ], cutoff: 7000, peakDb: -18, room: 0.18), // Wind through the furin: three uneven tinkles. SfxKind.join => SoundSpec([ Note(0, _p(_a6), 1.3, voice: Voice.chime, gain: 0.8), diff --git a/apps/desktop/lib/src/state/settings.dart b/apps/desktop/lib/src/state/settings.dart index 9791f3b..9353f67 100644 --- a/apps/desktop/lib/src/state/settings.dart +++ b/apps/desktop/lib/src/state/settings.dart @@ -43,7 +43,7 @@ class AppSettings { /// are hidden (both designs). Applies live. final progressLine = signal(true); /// App sounds (`sfx/`): 0..1, 0 = silent. - final soundVolume = signal(0.5); + final soundVolume = signal(1.0); /// `SfxKind` names switched off one by one. final soundsOff = signal>(const {}); diff --git a/docs/ROADMAP.md b/docs/ROADMAP.md index 1618de7..23bbc42 100644 --- a/docs/ROADMAP.md +++ b/docs/ROADMAP.md @@ -35,9 +35,6 @@ off by deleting it in the same commit as the code. Wire changes also edit show the open link with an open-in-browser button. - Time UI: remaining time, scrubber preview. - mpv / mpv.net shortcut parity. - - Sounds: replace `NoopSfxService` (cues already fire). Candidates: - Kenney Interface Sounds (CC0), ObsydianX Pack 1 (CC0), akx/Notifications - (CC0); playback via flutter_soloud. Keep seek/pause/resume near silent. - Chaos suite: host drop 5 s / 30 s, viewer stall, 20-seek storm, long outage with cache exhaustion (`tool/shaper.dart --kill-after`); assert no OOM, no stuck session, drift recovers.