v3.4 refinements: WASAPI drift correction, startup-dialog sequencing, quick-switch polish, docs

Builds on the v3.4 freeze (dd70613) with the fixes and tuning from live testing,
plus the v3.4 documentation pass.

Audio (receiver):
- Per-device WASAPI drift correction in MultiOutputPlayout. A pull-side resampler
  (mirroring SessionPlayout's proven corrector) holds each output device's buffer at
  a fixed low depth, cancelling the slow clock drift that made WASAPI peers "lag
  apart" over long sessions. Feed-forward clock-ratio measurement plus a gentle
  depth-restoring term; the first measurement window is discarded because WASAPI
  start-up priming poisons it. ASIO already self-corrected; this brings WASAPI level.
- Output device buffer requested at 5 ms (WASAPI clamps it up to the device's minimum
  period, ~10 ms) instead of 15 ms, since the corrector keeps it fed — a free saving.

UI / accessibility (MainForm, Program):
- Startup notices (what's-new About box, Realtek warning) now run one at a time via a
  single sequence instead of separate BeginInvokes, so they no longer stack into
  nested modals that couldn't be closed. The loading splash is skipped for a
  tray-bound quick switch.
- Quick profile switch keeps RemSound in the tray if it was there, and plays the
  switch cue immediately on click.
- Profile-switch cue now plays on click for every switch path (recent menu, quick
  switch, File > Open) and no longer on a fresh start into the first profile. It was
  also previously dead on the rebuilt form (pendingProfile was nulled first).
- Realtek ASIO toggle's accessible name now reads "Enable"/"Disable" to match the
  visible text, instead of "Toggle" (screen reader read the wrong word).

Docs (plain English):
- RELEASE_NOTES.md: v3.4 entry.
- About dialog: v3.4 "what's new".
- readme.html (the canonical bundled manual): quick switch, the hotkey read-outs, the
  new profile-menu-open cue, Realtek auto-detect/disable, and the config-folder path.
- MANUAL.md regenerated from readme.html via sync-manual.py so the two stay in sync.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
Ednunp
2026-06-08 15:31:32 +01:00
co-authored by Claude Opus 4.8
parent dd70613017
commit 946e6f4be4
7 changed files with 434 additions and 77 deletions
+35
View File
@@ -20,6 +20,41 @@ internal sealed class AboutDialog : Form
/// updates" path.</summary>
private const string ReleaseNotes =
"""
RemSound v3.4
Quick profile switch: a new global hotkey pops up a
list of all your profiles from anywhere even when
RemSound is in the system tray. Arrow to one, press
Enter, and it switches straight away. It marks the
profile you're on, plays a sound as the list opens
and again when you switch, and stays in the tray if
that's where it was. Unset by default; give it a key
under Options Keyboard shortcuts.
A safety net for the Realtek ASIO driver, which leaks
Windows resources and can make audio unstable: RemSound
now spots it on startup and offers, just once, to
disable it. Re-enable or disable it any time from the
Options menu.
Your screen reader now reads out global hotkeys when
you move over the menu item or control they're tied to,
so you can learn your shortcuts just by arrowing around
no need to open the shortcuts dialog.
Smoother long sessions on WASAPI: two machines' sound
clocks drift apart by a hair over time, which slowly
added delay. RemSound now corrects that continuously,
so a WASAPI link stays as tight after three hours as it
was at the start. (ASIO already kept itself in step.)
Also: a new "profile menu open" cue; the profile-switch
cue now plays the instant you switch, and no longer on
a fresh start; faster reaction when you plug or unplug a
device; and your settings now tuck into a "config"
folder, moved there automatically the first time you
run this version.
RemSound v3.3
Your audio is now encrypted, end to end, so you no