From a408d2b56e878eb8332417f342bfc9ee5d293cf5 Mon Sep 17 00:00:00 2001 From: Ednunp <29843396+Ednunp@users.noreply.github.com> Date: Sat, 13 Jun 2026 11:54:30 +0100 Subject: [PATCH] v4.0: full audio-cue system, cause-aware auto-tune, four-tab Preferences, install-side default sounds Audio cues - Cues for send/receive on-off, minimise/restore, checkbox tick/untick, and tab switch - Soft keyboard clicks while typing, with a distinct passkey sound on password fields - Per-cue "Choose sound" variant picker; "(none)" silences a cue; front-most missing-sound warning - Send/receive cues take priority over the generic checkbox sound; programmatic ticks stay silent Preferences - Redesigned into four tabs (General, Audio cues, Startup behaviour, Update settings) - Startup behaviour moved in from the Options menu - NVDA now announces the dialog on open (focus a real named control, not the quiet tab control) Auto-tune - Cause-aware: tells device render-callback stalls (more buffer can't fix) apart from genuine network/buffer starvation, so it no longer pins latency high on chunky onboard cards - Lowering the target eases the buffer down (glide) instead of trimming it, so no clicks while tuning Sounds layout - Shipped defaults moved out of the per-user folder into an install-side "default sounds" folder, so updates can refresh them; user customs are Browse-picked file paths and are left untouched - Startup migration removes both legacy sound folders; verified from oldest (v1.0-v3.3) and v3.4 layouts Quiet automated launches - New --silent launch flag mutes all cue sounds and suppresses the startup dialogs (migration notice, update check, Realtek/mic/missing-sound warnings) so test launches never disturb the user - run-tests / build-release / SelfTest repointed to the new "default sounds" layout Co-Authored-By: Claude Opus 4.8 --- MANUAL.md | 17 +-- RELEASE_NOTES.md | 48 ++++----- build-release.ps1 | 6 +- .../Profile menu open 1.wav | Bin {sounds => default sounds}/check 1.wav | Bin {sounds => default sounds}/check 2.wav | Bin {sounds => default sounds}/connect 1.wav | Bin {sounds => default sounds}/connect 2.wav | Bin {sounds => default sounds}/disconnect 1.wav | Bin {sounds => default sounds}/disconnect 2.wav | Bin {sounds => default sounds}/key 1.wav | Bin {sounds => default sounds}/key 2.wav | Bin {sounds => default sounds}/key 3.wav | Bin {sounds => default sounds}/key 4.wav | Bin {sounds => default sounds}/maximise 1.wav | Bin {sounds => default sounds}/maximise 2.wav | Bin {sounds => default sounds}/minimise 1.wav | Bin {sounds => default sounds}/minimise 2.wav | Bin {sounds => default sounds}/passkey.wav | Bin {sounds => default sounds}/profile 1.wav | Bin {sounds => default sounds}/profile 2.wav | Bin .../profile menu open 2.wav | Bin {sounds => default sounds}/recieve off 1.wav | Bin {sounds => default sounds}/recieve off 2.wav | Bin {sounds => default sounds}/recieve on 1.wav | Bin {sounds => default sounds}/recieve on 2.wav | Bin {sounds => default sounds}/record start 1.wav | Bin {sounds => default sounds}/record start 2.wav | Bin {sounds => default sounds}/record stop 1.wav | Bin {sounds => default sounds}/record stop 2.wav | Bin {sounds => default sounds}/save 1.wav | Bin {sounds => default sounds}/save 2.wav | Bin {sounds => default sounds}/send off 1.wav | Bin {sounds => default sounds}/send off 2.wav | Bin {sounds => default sounds}/send on 1.wav | Bin {sounds => default sounds}/send on 2.wav | Bin {sounds => default sounds}/start up 1.wav | Bin {sounds => default sounds}/start up 2.wav | Bin default sounds/tab switch 1.wav | Bin 0 -> 177114 bytes default sounds/tab switch 2.wav | Bin 0 -> 166272 bytes {sounds => default sounds}/uncheck 1.wav | Bin {sounds => default sounds}/uncheck 2.wav | Bin {sounds => default sounds}/update 1.wav | Bin {sounds => default sounds}/update 2.wav | Bin readme.html | 17 +-- run-tests.ps1 | 28 +++-- src/RemSound.App/AboutDialog.cs | 37 +++++++ src/RemSound.App/CheckSoundService.cs | 8 ++ src/RemSound.App/CommandLine.cs | 2 + src/RemSound.App/CuePlayer.cs | 10 ++ src/RemSound.App/FormLayoutRows.cs | 11 ++ src/RemSound.App/MainForm.cs | 99 ++++++++++++++---- src/RemSound.App/PreferencesDialog.cs | 63 ++++++++++- src/RemSound.App/Program.cs | 74 +++++++------ src/RemSound.App/RemSound.App.csproj | 41 ++++---- src/RemSound.App/SelfTest.cs | 11 +- src/RemSound.App/TabSwitchSoundService.cs | 47 +++++++++ src/RemSound.Core/AppConfig.cs | 29 +++-- src/RemSound.Receiver/AudioReceiver.cs | 13 +++ src/RemSound.Receiver/PlayoutEngine.cs | 47 +++++++++ src/RemSound.Receiver/SessionPlayout.cs | 79 +++++++++++++- 61 files changed, 548 insertions(+), 139 deletions(-) rename {sounds => default sounds}/Profile menu open 1.wav (100%) rename {sounds => default sounds}/check 1.wav (100%) rename {sounds => default sounds}/check 2.wav (100%) rename {sounds => default sounds}/connect 1.wav (100%) rename {sounds => default sounds}/connect 2.wav (100%) rename {sounds => default sounds}/disconnect 1.wav (100%) rename {sounds => default sounds}/disconnect 2.wav (100%) rename {sounds => default sounds}/key 1.wav (100%) rename {sounds => default sounds}/key 2.wav (100%) rename {sounds => default sounds}/key 3.wav (100%) rename {sounds => default sounds}/key 4.wav (100%) rename {sounds => default sounds}/maximise 1.wav (100%) rename {sounds => default sounds}/maximise 2.wav (100%) rename {sounds => default sounds}/minimise 1.wav (100%) rename {sounds => default sounds}/minimise 2.wav (100%) rename {sounds => default sounds}/passkey.wav (100%) rename {sounds => default sounds}/profile 1.wav (100%) rename {sounds => default sounds}/profile 2.wav (100%) rename {sounds => default sounds}/profile menu open 2.wav (100%) rename {sounds => default sounds}/recieve off 1.wav (100%) rename {sounds => default sounds}/recieve off 2.wav (100%) rename {sounds => default sounds}/recieve on 1.wav (100%) rename {sounds => default sounds}/recieve on 2.wav (100%) rename {sounds => default sounds}/record start 1.wav (100%) rename {sounds => default sounds}/record start 2.wav (100%) rename {sounds => default sounds}/record stop 1.wav (100%) rename {sounds => default sounds}/record stop 2.wav (100%) rename {sounds => default sounds}/save 1.wav (100%) rename {sounds => default sounds}/save 2.wav (100%) rename {sounds => default sounds}/send off 1.wav (100%) rename {sounds => default sounds}/send off 2.wav (100%) rename {sounds => default sounds}/send on 1.wav (100%) rename {sounds => default sounds}/send on 2.wav (100%) rename {sounds => default sounds}/start up 1.wav (100%) rename {sounds => default sounds}/start up 2.wav (100%) create mode 100644 default sounds/tab switch 1.wav create mode 100644 default sounds/tab switch 2.wav rename {sounds => default sounds}/uncheck 1.wav (100%) rename {sounds => default sounds}/uncheck 2.wav (100%) rename {sounds => default sounds}/update 1.wav (100%) rename {sounds => default sounds}/update 2.wav (100%) create mode 100644 src/RemSound.App/TabSwitchSoundService.cs diff --git a/MANUAL.md b/MANUAL.md index 605666d..57eb30c 100644 --- a/MANUAL.md +++ b/MANUAL.md @@ -114,12 +114,14 @@ Action| How ### Where your files are stored -Everything RemSound keeps for you on this computer — your settings, your profiles, your logs, and your cue sounds — lives together in one folder inside RemSound called **user settings and logs**. Each profile is one small file, stored at: +Everything RemSound keeps for you on this computer — your settings, your profiles, and your logs — lives together in one folder inside RemSound called **user settings and logs**. Each profile is one small file, stored at: \user settings and logs\profiles\\ -(If you're upgrading from an older version, RemSound moves all of this into the **user settings and logs** folder automatically the first time you run this version, and tells you once that it's done it. Nothing is lost.) From this version on, RemSound updates never touch that folder — so anything of your own in there, including custom cue sounds, stays safe when you update. +(If you're upgrading from an older version, RemSound moves all of this into the **user settings and logs** folder automatically the first time you run this version, and tells you once that it's done it. Nothing is lost.) RemSound updates never touch that folder — so anything of your own in there stays safe when you update. + +The built-in cue sounds are kept separately, in a **default sounds** folder alongside the program. Those are part of RemSound itself, so an update can refresh them — if a future version ships an improved default sound, you'll get it. Your own choices are never affected: a sound you pick for a cue with the **Browse** button is remembered as a link to your own file (wherever you keep it), and that's left exactly as you set it. The folder named after your computer keeps each machine's profiles separate. If you used the **Browse …** button on the startup dialog to pick a different folder (for example, one inside Dropbox), the profiles are stored directly in that folder — with no per-computer subfolder — so two computers pointed at the same shared folder see exactly the same list. @@ -866,7 +868,7 @@ Toggle| What it does ## 18. Audio cue sounds -RemSound plays a short sound at moments where you might want an audible confirmation that something just happened. These are called **cue sounds**. Sixteen kinds of event have a cue: +RemSound plays a short sound at moments where you might want an audible confirmation that something just happened. These are called **cue sounds**. Seventeen kinds of event have a cue: Cue| Plays when ---|--- @@ -884,6 +886,7 @@ Cue| Plays when **Minimise (hide) sound**| RemSound's window minimises to the notification area (hides). **Restore (show) sound**| RemSound's window is brought back from the notification area (shows). **Checkbox ticked / unticked sound**| You tick or untick _any_ checkbox anywhere in RemSound — a click for ticked, a different one for unticked. This gives instant feedback on which way a box just went, which is especially handy in the busy inputs and outputs lists. There's a separate sound for ticking and for unticking. +**Switch tabs sound**| You move between tabs anywhere in RemSound — the row of tabs in the main window, or the tabs in a dialog like Preferences. It plays each time you land on a different tab (with Ctrl+Tab, or the arrow keys when the row of tab names has focus). All of these cues play through your default Windows sound output, which is separate from the audio RemSound is sending or receiving. They don't appear in a normal recording. (The exception: if your sending side is capturing the very output device the cues play through, then they get captured along with everything else from that device.) @@ -933,13 +936,13 @@ Custom sound choices are **saved with the active profile** , the same way the ti ### Going back to the default sound -To revert a cue to its default sound, **right-click** the _Browse for [cue name] …_ button and pick **Use default sound**. The custom path is forgotten and the cue goes back to playing the default WAV that ships with RemSound. The right-click option is greyed out when the cue is already using its default. (Alternatively, click _Browse_ and pick a file from RemSound's own `sounds` folder — inside **user settings and logs** — and RemSound treats that as “use default” and clears the override automatically.) +To revert a cue to its default sound, **right-click** the _Browse for [cue name] …_ button and pick **Use default sound**. The custom path is forgotten and the cue goes back to playing the default WAV that ships with RemSound. The right-click option is greyed out when the cue is already using its default. (Alternatively, click _Browse_ and pick a file from RemSound's own `default sounds` folder — alongside the program — and RemSound treats that as “use default” and clears the override automatically.) ### Where the cue sounds live -RemSound keeps the cue WAV files in a `sounds` folder inside **user settings and logs** — the same folder your settings and profiles live in. Each cue ships with a small set of numbered sound files there. They're named after the cue with a number on the end — for example `connect 1.wav` and `connect 2.wav` for the connect cue, `record start 1.wav` and `record start 2.wav` for the recording-start cue, and so on. The **Choose default sound** list described above simply picks between the numbered files a cue has. If you add more numbered files of your own following the same pattern, they show up in the list automatically — there's no fixed limit. +RemSound keeps the built-in cue WAV files in a `default sounds` folder alongside the program. Each cue ships with a small set of numbered sound files there. They're named after the cue with a number on the end — for example `connect 1.wav` and `connect 2.wav` for the connect cue, `record start 1.wav` and `record start 2.wav` for the recording-start cue, and so on. The **Choose sound** list described above simply picks between the numbered files a cue has. -Because this folder is inside **user settings and logs** , RemSound updates never overwrite it. So if you drop your own WAV files in here in place of the defaults, your versions stay put when you update — you don't have to set them up again. +Because these are RemSound's own built-in sounds, an update can refresh them — if a future version ships an improved default, you'll get it. To use a sound of your _own_ for a cue, don't drop a file into `default sounds` (an update would overwrite it); instead use the **Browse** button, which links the cue to your file wherever you keep it. That link is remembered and never touched by an update, so your chosen sound always stays put. If a cue's WAV file is missing — either the default file doesn't exist or a custom path points at a file you've since deleted — the cue stays silent rather than producing an error. RemSound logs a note in the diagnostic log (if logging is on) so you can see what happened. @@ -1035,7 +1038,7 @@ Format| What you get| When to pick it ### Start and stop sound cues -RemSound plays a short ding when a recording starts and another when it stops, so you have an audible confirmation that the toggle actually took effect. These are two of the eight cues described in Audio cue sounds. You can turn either or both off, replace them with your own WAV files, and preview them from Preferences. The defaults live at `sounds\record start.wav` and `sounds\record stop.wav` inside the **user settings and logs** folder. +RemSound plays a short ding when a recording starts and another when it stops, so you have an audible confirmation that the toggle actually took effect. These are two of the cues described in Audio cue sounds. You can turn either or both off, replace them with your own WAV files, and preview them from Preferences. The built-in defaults are the `record start` and `record stop` sounds in the **default sounds** folder alongside the program. ### Where recordings go diff --git a/RELEASE_NOTES.md b/RELEASE_NOTES.md index 5744d20..9e63930 100644 --- a/RELEASE_NOTES.md +++ b/RELEASE_NOTES.md @@ -1,51 +1,49 @@ -# RemSound v3.9 +# RemSound v4.0 -A reliability release built from real reports: a long-standing cause of one-way silence is fixed, long sessions no longer drift slower, RemSound stops "sending" when nobody is connected, there's a start-up sound, and you can now drive RemSound from the command line. +A big step up for audible feedback and for getting the latency right by itself. RemSound now has a sound for nearly everything you do, can click as you type, has a clearer four-tab Preferences window, and tunes latency more intelligently and more quietly. -## One-way silence is fixed +## A sound for nearly everything -If you sent plain (non-ASIO) audio to someone who had an **ASIO device selected** at their end, your sound — your microphone included — could arrive at their machine and then never be played. They heard nothing, even though everything looked connected and their logs showed audio coming in. +On top of the connect, disconnect and recording cues, RemSound can now play a short sound when you: -This was a routing fault inside the receiver: a plain stream arriving at a receiver running in two-lane (ASIO) mode was being decoded into a buffer that nothing ever played out, so it silently piled up and was dropped. A plain stream now always reaches the speakers, whatever mix of ASIO and standard audio the two of you happen to be using. This is the fix behind "my mic works for me but they can't hear it." +* turn **sending** or **receiving** on or off (a separate sound for each), +* **minimise** to or **return** from the notification area, +* **tick or untick** any box, and +* **switch between tabs**. -## Long sessions stay as tight as they started +Every one is optional. Under **Options → Preferences → Audio cues** you can silence any cue, pick which built-in sound it uses, or **Browse** for your own WAV file. (The receive-audio on/off sounds were a request on the issue tracker — they're here now.) -On the standard (non-ASIO) path the incoming audio buffer used to creep deeper after a network hiccup and never settle back, so a connection that started tight could feel laggy hours later. It now eases itself back to your chosen latency, gently and silently, so a long session stays as tight as it began. +## Hear yourself type -## RemSound no longer "sends into the void" +RemSound can **click softly as you type** into any box, so you get an audible sense of your keystrokes — with a distinct sound in **password fields** so you always know which kind of box you're in. One tick under Audio cues turns it on or off. -If you left a profile open with nobody connected, the status line could still report that it was sending data — and a large running total — which was confusing and looked wrong. RemSound now only sends audio once a peer is genuinely reachable. With no one connected it sits quietly, and the status line reflects that. (Reported on the issue tracker.) +## Preferences, reorganised -## A start-up sound +The Preferences window is now four clear tabs — **General**, **Audio cues**, **Startup behaviour** and **Update settings** — so everything is easier to find. The startup options (start with Windows, start minimised, start with a chosen profile) have moved here from the Options menu. -RemSound now plays a short sound as it starts, so you know it's running even when it opens straight to the notification area. You can turn it off, or choose your own sound, under **Options → Preferences**. +## Smarter, quieter latency tuning -## Run RemSound from the command line +The automatic latency tuning used to treat every tiny audio glitch as "the buffer is too small" and keep adding delay — even when the real cause was the receiving computer's own sound card stumbling, which more buffer can't fix. It now tells the two apart, so it stops piling on delay it can't help. And when it does lower the latency, it eases the buffer down smoothly instead of trimming it, so you no longer hear little clicks while it tunes. -As well as its normal window, RemSound now takes **command-line options** — handy for quick checks, for getting a support report to send, and for starting RemSound a particular way from a shortcut or a script: +## Default sounds that updates can refresh -* `--devices` lists every microphone, output and ASIO driver, with formats and ids. -* `--selftest` runs the whole audio path on the machine on its own and reports PASS or FAIL. -* `--diagnostics` writes one report file (version, system, settings, profiles, devices, mic-privacy check, recent log) to send for help. -* `--profile`, `--connect` and `--minimized` start RemSound straight into a profile, connected to an address, or down in the tray. - -Run `RemSound.exe --help` for the full list, or see the new **Command-line options** section in the manual (press F1). +The built-in default sounds now travel with the program itself, so an update can refresh them — if a better default sound ships in a future update, you'll actually get it. Your own chosen sounds are kept exactly as you set them. ## Compatibility -**v3.9 talks to v3.3 through v3.8 with no trouble** — the over-the-network format is unchanged, so you don't have to update both ends at once. (Everyone still needs **v3.3 or newer**, where end-to-end encryption came in.) +**v4.0 talks to v3.3 through v3.9 with no trouble** — the over-the-network format is unchanged, so you don't have to update both ends at once. (Everyone still needs **v3.3 or newer**, where end-to-end encryption came in.) ## Install -1. Download `RemSound-v3.9.zip` from this release. +1. Download `RemSound-v4.0.zip` from this release. 2. Close RemSound. -3. Extract the zip **over your existing RemSound folder**, overwriting program files when prompted. The zip is program files only — it won't touch your settings, profiles, logs, recordings, or sounds. +3. Extract the zip **over your existing RemSound folder**, overwriting program files when prompted. The zip is program files only — it won't touch your settings, profiles, logs or recordings. 4. Run `RemSound.exe`. ## Upgrading -**From v3.6, v3.7 or v3.8:** Help → Check for updates installs v3.9 with the in-app updater — and if it can't finish, it puts your old version back exactly as it was. +**From v3.6 or newer:** Help → Check for updates installs v4.0 with the in-app updater — and if it can't finish, it puts your old version back exactly as it was. The first launch tidies your settings into their current home if they aren't there already; nothing is lost. -**From v1.9–v3.5:** Check for updates works, but it uses your current version's older updater for this one hop. If auto-update has been failing on your machine, install by hand using the steps above. +**From v1.9–v3.5:** Check for updates works, but uses your current version's older updater for this one hop. If auto-update has been failing on your machine, install by hand using the steps above. -**v1.8 and earlier:** the auto-updater in those versions can't install updates at all — install by hand using the steps above. +**v1.8 and earlier:** the auto-updater in those versions can't install updates — install by hand using the steps above. diff --git a/build-release.ps1 b/build-release.ps1 index 278d128..4c1e9a5 100644 --- a/build-release.ps1 +++ b/build-release.ps1 @@ -37,10 +37,10 @@ $staging = Join-Path ([System.IO.Path]::GetTempPath()) ("remsound-release-" + [g # 0a. SoundForge drops a .sfk peak file next to every .wav it opens. They're byproducts that must # never ship (the build only bundles *.wav, so they wouldn't anyway) - clear them from the -# source sounds\ folder so they don't accumulate and clutter the working tree. -$sfk = @(Get-ChildItem -LiteralPath (Join-Path $repo 'sounds') -Filter '*.sfk' -ErrorAction SilentlyContinue) +# source 'default sounds\' folder so they don't accumulate and clutter the working tree. +$sfk = @(Get-ChildItem -LiteralPath (Join-Path $repo 'default sounds') -Filter '*.sfk' -ErrorAction SilentlyContinue) if ($sfk.Count -gt 0) { - Write-Host "Removing $($sfk.Count) SoundForge .sfk byproduct(s) from sounds\..." -ForegroundColor Cyan + Write-Host "Removing $($sfk.Count) SoundForge .sfk byproduct(s) from 'default sounds\'..." -ForegroundColor Cyan $sfk | Remove-Item -Force } diff --git a/sounds/Profile menu open 1.wav b/default sounds/Profile menu open 1.wav similarity index 100% rename from sounds/Profile menu open 1.wav rename to default sounds/Profile menu open 1.wav diff --git a/sounds/check 1.wav b/default sounds/check 1.wav similarity index 100% rename from sounds/check 1.wav rename to default sounds/check 1.wav diff --git a/sounds/check 2.wav b/default sounds/check 2.wav similarity index 100% rename from sounds/check 2.wav rename to default sounds/check 2.wav diff --git a/sounds/connect 1.wav b/default sounds/connect 1.wav similarity index 100% rename from sounds/connect 1.wav rename to default sounds/connect 1.wav diff --git a/sounds/connect 2.wav b/default sounds/connect 2.wav similarity index 100% rename from sounds/connect 2.wav rename to default sounds/connect 2.wav diff --git a/sounds/disconnect 1.wav b/default sounds/disconnect 1.wav similarity index 100% rename from sounds/disconnect 1.wav rename to default sounds/disconnect 1.wav diff --git a/sounds/disconnect 2.wav b/default sounds/disconnect 2.wav similarity index 100% rename from sounds/disconnect 2.wav rename to default sounds/disconnect 2.wav diff --git a/sounds/key 1.wav b/default sounds/key 1.wav similarity index 100% rename from sounds/key 1.wav rename to default sounds/key 1.wav diff --git a/sounds/key 2.wav b/default sounds/key 2.wav similarity index 100% rename from sounds/key 2.wav rename to default sounds/key 2.wav diff --git a/sounds/key 3.wav b/default sounds/key 3.wav similarity index 100% rename from sounds/key 3.wav rename to default sounds/key 3.wav diff --git a/sounds/key 4.wav b/default sounds/key 4.wav similarity index 100% rename from sounds/key 4.wav rename to default sounds/key 4.wav diff --git a/sounds/maximise 1.wav b/default sounds/maximise 1.wav similarity index 100% rename from sounds/maximise 1.wav rename to default sounds/maximise 1.wav diff --git a/sounds/maximise 2.wav b/default sounds/maximise 2.wav similarity index 100% rename from sounds/maximise 2.wav rename to default sounds/maximise 2.wav diff --git a/sounds/minimise 1.wav b/default sounds/minimise 1.wav similarity index 100% rename from sounds/minimise 1.wav rename to default sounds/minimise 1.wav diff --git a/sounds/minimise 2.wav b/default sounds/minimise 2.wav similarity index 100% rename from sounds/minimise 2.wav rename to default sounds/minimise 2.wav diff --git a/sounds/passkey.wav b/default sounds/passkey.wav similarity index 100% rename from sounds/passkey.wav rename to default sounds/passkey.wav diff --git a/sounds/profile 1.wav b/default sounds/profile 1.wav similarity index 100% rename from sounds/profile 1.wav rename to default sounds/profile 1.wav diff --git a/sounds/profile 2.wav b/default sounds/profile 2.wav similarity index 100% rename from sounds/profile 2.wav rename to default sounds/profile 2.wav diff --git a/sounds/profile menu open 2.wav b/default sounds/profile menu open 2.wav similarity index 100% rename from sounds/profile menu open 2.wav rename to default sounds/profile menu open 2.wav diff --git a/sounds/recieve off 1.wav b/default sounds/recieve off 1.wav similarity index 100% rename from sounds/recieve off 1.wav rename to default sounds/recieve off 1.wav diff --git a/sounds/recieve off 2.wav b/default sounds/recieve off 2.wav similarity index 100% rename from sounds/recieve off 2.wav rename to default sounds/recieve off 2.wav diff --git a/sounds/recieve on 1.wav b/default sounds/recieve on 1.wav similarity index 100% rename from sounds/recieve on 1.wav rename to default sounds/recieve on 1.wav diff --git a/sounds/recieve on 2.wav b/default sounds/recieve on 2.wav similarity index 100% rename from sounds/recieve on 2.wav rename to default sounds/recieve on 2.wav diff --git a/sounds/record start 1.wav b/default sounds/record start 1.wav similarity index 100% rename from sounds/record start 1.wav rename to default sounds/record start 1.wav diff --git a/sounds/record start 2.wav b/default sounds/record start 2.wav similarity index 100% rename from sounds/record start 2.wav rename to default sounds/record start 2.wav diff --git a/sounds/record stop 1.wav b/default sounds/record stop 1.wav similarity index 100% rename from sounds/record stop 1.wav rename to default sounds/record stop 1.wav diff --git a/sounds/record stop 2.wav b/default sounds/record stop 2.wav similarity index 100% rename from sounds/record stop 2.wav rename to default sounds/record stop 2.wav diff --git a/sounds/save 1.wav b/default sounds/save 1.wav similarity index 100% rename from sounds/save 1.wav rename to default sounds/save 1.wav diff --git a/sounds/save 2.wav b/default sounds/save 2.wav similarity index 100% rename from sounds/save 2.wav rename to default sounds/save 2.wav diff --git a/sounds/send off 1.wav b/default sounds/send off 1.wav similarity index 100% rename from sounds/send off 1.wav rename to default sounds/send off 1.wav diff --git a/sounds/send off 2.wav b/default sounds/send off 2.wav similarity index 100% rename from sounds/send off 2.wav rename to default sounds/send off 2.wav diff --git a/sounds/send on 1.wav b/default sounds/send on 1.wav similarity index 100% rename from sounds/send on 1.wav rename to default sounds/send on 1.wav diff --git a/sounds/send on 2.wav b/default sounds/send on 2.wav similarity index 100% rename from sounds/send on 2.wav rename to default sounds/send on 2.wav diff --git a/sounds/start up 1.wav b/default sounds/start up 1.wav similarity index 100% rename from sounds/start up 1.wav rename to default sounds/start up 1.wav diff --git a/sounds/start up 2.wav b/default sounds/start up 2.wav similarity index 100% rename from sounds/start up 2.wav rename to default sounds/start up 2.wav diff --git a/default sounds/tab switch 1.wav b/default sounds/tab switch 1.wav new file mode 100644 index 0000000000000000000000000000000000000000..837e3fab552f78bbae8450267cb4924239a6dc80 GIT binary patch literal 177114 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

k06hm;J^9k(|(-461BgAACx2M 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 literal 0 HcmV?d00001 diff --git a/default sounds/tab switch 2.wav b/default sounds/tab switch 2.wav new file mode 100644 index 0000000000000000000000000000000000000000..d68a416aa3239600dbe96294775e6af74662156e GIT binary patch literal 166272 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 literal 0 HcmV?d00001 diff --git a/sounds/uncheck 1.wav b/default sounds/uncheck 1.wav similarity index 100% rename from sounds/uncheck 1.wav rename to default sounds/uncheck 1.wav diff --git a/sounds/uncheck 2.wav b/default sounds/uncheck 2.wav similarity index 100% rename from sounds/uncheck 2.wav rename to default sounds/uncheck 2.wav diff --git a/sounds/update 1.wav b/default sounds/update 1.wav similarity index 100% rename from sounds/update 1.wav rename to default sounds/update 1.wav diff --git a/sounds/update 2.wav b/default sounds/update 2.wav similarity index 100% rename from sounds/update 2.wav rename to default sounds/update 2.wav diff --git a/readme.html b/readme.html index 3852f84..e61335b 100644 --- a/readme.html +++ b/readme.html @@ -140,11 +140,13 @@ ul, ol { padding-left: 1.4em; }

Where your files are stored

-

Everything RemSound keeps for you on this computer — your settings, your profiles, your logs, and your cue sounds — lives together in one folder inside RemSound called user settings and logs. Each profile is one small file, stored at:

+

Everything RemSound keeps for you on this computer — your settings, your profiles, and your logs — lives together in one folder inside RemSound called user settings and logs. Each profile is one small file, stored at:

<RemSound folder>\user settings and logs\profiles\<your computer name>\<profile name>
-

(If you're upgrading from an older version, RemSound moves all of this into the user settings and logs folder automatically the first time you run this version, and tells you once that it's done it. Nothing is lost.) From this version on, RemSound updates never touch that folder — so anything of your own in there, including custom cue sounds, stays safe when you update.

+

(If you're upgrading from an older version, RemSound moves all of this into the user settings and logs folder automatically the first time you run this version, and tells you once that it's done it. Nothing is lost.) RemSound updates never touch that folder — so anything of your own in there stays safe when you update.

+ +

The built-in cue sounds are kept separately, in a default sounds folder alongside the program. Those are part of RemSound itself, so an update can refresh them — if a future version ships an improved default sound, you'll get it. Your own choices are never affected: a sound you pick for a cue with the Browse button is remembered as a link to your own file (wherever you keep it), and that's left exactly as you set it.

The folder named after your computer keeps each machine's profiles separate. If you used the Browse… button on the startup dialog to pick a different folder (for example, one inside Dropbox), the profiles are stored directly in that folder — with no per-computer subfolder — so two computers pointed at the same shared folder see exactly the same list.

@@ -919,7 +921,7 @@ Use whatever key combinations you prefer (for example Ctrl+Shift+Up / Ctrl+Shift

18. Audio cue sounds

-

RemSound plays a short sound at moments where you might want an audible confirmation that something just happened. These are called cue sounds. Sixteen kinds of event have a cue:

+

RemSound plays a short sound at moments where you might want an audible confirmation that something just happened. These are called cue sounds. Seventeen kinds of event have a cue:

@@ -937,6 +939,7 @@ Use whatever key combinations you prefer (for example Ctrl+Shift+Up / Ctrl+Shift +
CuePlays when
Minimise (hide) soundRemSound's window minimises to the notification area (hides).
Restore (show) soundRemSound's window is brought back from the notification area (shows).
Checkbox ticked / unticked soundYou tick or untick any checkbox anywhere in RemSound — a click for ticked, a different one for unticked. This gives instant feedback on which way a box just went, which is especially handy in the busy inputs and outputs lists. There's a separate sound for ticking and for unticking.
Switch tabs soundYou move between tabs anywhere in RemSound — the row of tabs in the main window, or the tabs in a dialog like Preferences. It plays each time you land on a different tab (with Ctrl+Tab, or the arrow keys when the row of tab names has focus).

All of these cues play through your default Windows sound output, which is separate from the audio RemSound is sending or receiving. They don't appear in a normal recording. (The exception: if your sending side is capturing the very output device the cues play through, then they get captured along with everything else from that device.)

@@ -987,13 +990,13 @@ Use whatever key combinations you prefer (for example Ctrl+Shift+Up / Ctrl+Shift

Going back to the default sound

-

To revert a cue to its default sound, right-click the Browse for [cue name]… button and pick Use default sound. The custom path is forgotten and the cue goes back to playing the default WAV that ships with RemSound. The right-click option is greyed out when the cue is already using its default. (Alternatively, click Browse and pick a file from RemSound's own sounds folder — inside user settings and logs — and RemSound treats that as “use default” and clears the override automatically.)

+

To revert a cue to its default sound, right-click the Browse for [cue name]… button and pick Use default sound. The custom path is forgotten and the cue goes back to playing the default WAV that ships with RemSound. The right-click option is greyed out when the cue is already using its default. (Alternatively, click Browse and pick a file from RemSound's own default sounds folder — alongside the program — and RemSound treats that as “use default” and clears the override automatically.)

Where the cue sounds live

-

RemSound keeps the cue WAV files in a sounds folder inside user settings and logs — the same folder your settings and profiles live in. Each cue ships with a small set of numbered sound files there. They're named after the cue with a number on the end — for example connect 1.wav and connect 2.wav for the connect cue, record start 1.wav and record start 2.wav for the recording-start cue, and so on. The Choose default sound list described above simply picks between the numbered files a cue has. If you add more numbered files of your own following the same pattern, they show up in the list automatically — there's no fixed limit.

+

RemSound keeps the built-in cue WAV files in a default sounds folder alongside the program. Each cue ships with a small set of numbered sound files there. They're named after the cue with a number on the end — for example connect 1.wav and connect 2.wav for the connect cue, record start 1.wav and record start 2.wav for the recording-start cue, and so on. The Choose sound list described above simply picks between the numbered files a cue has.

-

Because this folder is inside user settings and logs, RemSound updates never overwrite it. So if you drop your own WAV files in here in place of the defaults, your versions stay put when you update — you don't have to set them up again.

+

Because these are RemSound's own built-in sounds, an update can refresh them — if a future version ships an improved default, you'll get it. To use a sound of your own for a cue, don't drop a file into default sounds (an update would overwrite it); instead use the Browse button, which links the cue to your file wherever you keep it. That link is remembered and never touched by an update, so your chosen sound always stays put.

If a cue's WAV file is missing — either the default file doesn't exist or a custom path points at a file you've since deleted — the cue stays silent rather than producing an error. RemSound logs a note in the diagnostic log (if logging is on) so you can see what happened.

@@ -1093,7 +1096,7 @@ Use whatever key combinations you prefer (for example Ctrl+Shift+Up / Ctrl+Shift

Start and stop sound cues

-

RemSound plays a short ding when a recording starts and another when it stops, so you have an audible confirmation that the toggle actually took effect. These are two of the eight cues described in Audio cue sounds. You can turn either or both off, replace them with your own WAV files, and preview them from Preferences. The defaults live at sounds\record start.wav and sounds\record stop.wav inside the user settings and logs folder.

+

RemSound plays a short ding when a recording starts and another when it stops, so you have an audible confirmation that the toggle actually took effect. These are two of the cues described in Audio cue sounds. You can turn either or both off, replace them with your own WAV files, and preview them from Preferences. The built-in defaults are the record start and record stop sounds in the default sounds folder alongside the program.

Where recordings go

diff --git a/run-tests.ps1 b/run-tests.ps1 index 6e6878e..dbc0c12 100644 --- a/run-tests.ps1 +++ b/run-tests.ps1 @@ -41,20 +41,23 @@ if (-not (Test-Path -LiteralPath $exe)) { exit 1 } -# ---- 2. PACKAGE CONTENTS (must run BEFORE any CLI call: every RemSound launch consolidates the -# bundled sounds\ into 'user settings and logs\sounds\', emptying sounds\) ---- +# ---- 2. PACKAGE CONTENTS ---- +# The shipped DEFAULT cues live install-side in 'default sounds\' next to the exe (the app reads +# them from there and updates always overwrite them; they're no longer copied into the per-user +# folder). So unlike before, a CLI launch does NOT empty this folder - the checks here are robust +# whatever order they run in. Write-Host "`nPackage contents:" -ForegroundColor Cyan -$soundsPath = Join-Path $publishDir 'sounds' +$soundsPath = Join-Path $publishDir 'default sounds' $wavCount = @(Get-ChildItem -LiteralPath $soundsPath -Filter *.wav -ErrorAction SilentlyContinue).Count if ($wavCount -ge 3) { Pass "cue sounds bundled ($wavCount .wav)" } else { Fail "cue sounds missing (found $wavCount) - this is the bug that shipped v3.9 with no sounds" } # Cues ship as numbered variants ("connect 1.wav", ...); each required cue needs at least one. -foreach ($base in @('connect', 'disconnect', 'start up', 'send on', 'send off', 'recieve on', 'recieve off', 'minimise', 'maximise', 'check', 'uncheck')) { +foreach ($base in @('connect', 'disconnect', 'start up', 'send on', 'send off', 'recieve on', 'recieve off', 'minimise', 'maximise', 'check', 'uncheck', 'tab switch')) { $variants = @(Get-ChildItem -LiteralPath $soundsPath -Filter "$base*.wav" -ErrorAction SilentlyContinue) if ($variants.Count -gt 0) { Pass "'$base' cue has $($variants.Count) sound variant(s)" } else { Fail "no sound variant for the '$base' cue" } } # Keyboard-click + password sounds. foreach ($extra in @('key 1.wav', 'passkey.wav')) { - if (Test-Path -LiteralPath (Join-Path $soundsPath $extra)) { Pass "'$extra' present" } else { Fail "'$extra' missing from the published sounds\ folder" } + if (Test-Path -LiteralPath (Join-Path $soundsPath $extra)) { Pass "'$extra' present" } else { Fail "'$extra' missing from the published 'default sounds' folder" } } if (Test-Path -LiteralPath (Join-Path $publishDir 'readme.html')) { Pass "readme.html (F1 manual) bundled" } else { Fail "readme.html missing" } if (Test-Path -LiteralPath (Join-Path $publishDir 'runtimes\win-x64\native\opus.dll')) { Pass "native opus.dll bundled" } else { Fail "native opus.dll missing (runtimes\win-x64\native\)" } @@ -139,15 +142,20 @@ else { $testCfg = Join-Path ([System.IO.Path]::GetTempPath()) ("rs-cfg-" + [guid]::NewGuid().ToString('N')) $proc = $null try { - $proc = Start-Process -FilePath $exe -ArgumentList @('--config-dir', $testCfg, '--connect', '127.0.0.1', '--minimized') -PassThru + # --silent so this throwaway launch makes no cue sounds (startup / connect) and pops no + # dialogs at whoever's at the screen while the gate runs. The shipped default sounds live + # install-side ('default sounds\' next to the exe) so this cold-start finds them with no + # consolidation step and no missing-sound warning - nothing to restore here any more. + $proc = Start-Process -FilePath $exe -ArgumentList @('--config-dir', $testCfg, '--connect', '127.0.0.1', '--minimized', '--silent') -PassThru Start-Sleep -Seconds 6 if (Get-Process -Id $proc.Id -ErrorAction SilentlyContinue) { Pass "GUI cold-started and stayed up (minimized to tray)" } else { Fail "GUI exited or crashed during cold start" } - # Startup consolidates the cue sounds into UserDataDirectory; with the override that's $testCfg, - # so a populated $testCfg proves the process honoured --config-dir and left the real settings alone. - if (Test-Path (Join-Path $testCfg 'sounds')) { Pass "ran against the isolated --config-dir folder (real settings untouched)" } - else { Fail "--config-dir folder was not populated - config isolation may not be working" } + # The process creates its user-data folder at the --config-dir override (MigrateLegacyLayout), + # so the override folder existing afterwards proves it honoured --config-dir and left the real + # settings alone. (Sounds are NOT here - they're install-side now.) + if (Test-Path -LiteralPath $testCfg) { Pass "ran against the isolated --config-dir folder (real settings untouched)" } + else { Fail "--config-dir folder was not created - config isolation may not be working" } Invoke-RsCli @('--close') | Out-Null Start-Sleep -Seconds 2 diff --git a/src/RemSound.App/AboutDialog.cs b/src/RemSound.App/AboutDialog.cs index 5cfd739..fc63575 100644 --- a/src/RemSound.App/AboutDialog.cs +++ b/src/RemSound.App/AboutDialog.cs @@ -20,6 +20,43 @@ internal sealed class AboutDialog : Form /// updates" path. private const string ReleaseNotes = """ + RemSound v4.0 + + RemSound now has a sound for nearly everything you do. + On top of the connect, disconnect and recording cues, it + can play a short sound when you turn sending or receiving + on or off, when it minimises to or returns from the tray, + when you tick or untick any box, and when you move between + tabs. Every one is optional: under Options → Preferences → + Audio cues you can silence any of them, pick which built-in + sound it uses, or choose your own WAV file. + + It can also click softly as you type into any box, so you + hear your keystrokes, with a distinct sound in password + fields so you always know which kind of box you're in. That + too is a single tick you can turn off. + + The Preferences window is now organised into four clear tabs + — General, Audio cues, Startup behaviour and Update settings + — so everything is easier to find. The startup options + (start with Windows, start minimised, start with a chosen + profile) have moved here from the Options menu. + + The automatic latency tuning is cleverer. It used to treat + every tiny audio glitch as "the buffer is too small" and + keep adding delay — even when the real cause was the + receiving computer's own sound card stumbling, which more + buffer can't fix. It now tells the two apart, so it stops + piling on delay it can't help. And when it does lower the + latency, it eases the buffer down smoothly instead of + trimming it, so you no longer hear little clicks while it + tunes. + + Finally, the built-in default sounds now travel with the + program itself, so an update can refresh them — if a better + default sound ships in a future update, you'll actually get + it. Your own chosen sounds are kept exactly as you set them. + RemSound v3.9 Listening for a long time no longer slowly builds up diff --git a/src/RemSound.App/CheckSoundService.cs b/src/RemSound.App/CheckSoundService.cs index d64e674..68e03f9 100644 --- a/src/RemSound.App/CheckSoundService.cs +++ b/src/RemSound.App/CheckSoundService.cs @@ -17,6 +17,13 @@ internal static class CheckSoundService private static CuePlayer? checkSound; private static CuePlayer? uncheckSound; + /// When true, is a no-op. MainForm sets this around bulk programmatic + /// control updates (profile load, "uncheck all", device-list refresh). The per-call Focused gate + /// already silences MOST programmatic ticks, but it leaks when the box we tick in code happens to + /// be the focused control on launch — which is exactly what made loading a profile blast a + /// checkbox click. This flag closes that gap: only genuine user toggles ever click. + public static bool Suppressed { get; set; } + /// (Re)load the tick/untick sounds from the current cue configuration. Call at startup /// and whenever cue settings change. public static void Reload() @@ -28,6 +35,7 @@ internal static class CheckSoundService public static void Play(bool isChecked) { + if (Suppressed) return; var cfg = AppConfig.Load(); if (isChecked) { if (cfg.EnableCheckboxOnCue) checkSound?.Play(); } else { if (cfg.EnableCheckboxOffCue) uncheckSound?.Play(); } diff --git a/src/RemSound.App/CommandLine.cs b/src/RemSound.App/CommandLine.cs index f337a4e..542ebd7 100644 --- a/src/RemSound.App/CommandLine.cs +++ b/src/RemSound.App/CommandLine.cs @@ -172,6 +172,8 @@ internal static class CommandLine Console.WriteLine(" logs and sounds, instead of the usual location. Lets a test"); Console.WriteLine(" exercise RemSound without touching your real settings."); Console.WriteLine(" Works with any command (e.g. --selftest --config-dir ...)."); + Console.WriteLine(" --silent Play no cue sounds and show no missing-sound pop-ups for"); + Console.WriteLine(" this run - for automated / unattended launches."); Console.WriteLine(); Console.WriteLine("Examples:"); Console.WriteLine(" RemSound.exe --devices"); diff --git a/src/RemSound.App/CuePlayer.cs b/src/RemSound.App/CuePlayer.cs index fda373a..c1a79c2 100644 --- a/src/RemSound.App/CuePlayer.cs +++ b/src/RemSound.App/CuePlayer.cs @@ -20,12 +20,22 @@ namespace RemSound.App; /// internal sealed class CuePlayer : IDisposable { + /// The "this is a silent / automated launch" flag, set once at startup by the + /// --silent flag. Primarily an app-wide mute for every cue sound (startup, connect, + /// checkbox, tab-switch, send/receive, previews — everything that plays through a CuePlayer). + /// It ALSO doubles as the signal to suppress the unattended startup pop-ups that would otherwise + /// ding at and bother whoever's at the screen during a throwaway test launch — the missing-sound + /// warning and the Realtek-ASIO-detected warning both check it. So a --silent launch is + /// completely quiet: no cue audio, no warning dings, no dialogs. Off in normal use. + public static bool GloballyMuted { get; set; } + private readonly string filePath; public CuePlayer(string filePath) => this.filePath = filePath; public void Play() { + if (GloballyMuted) return; var path = filePath; Task.Run(() => { diff --git a/src/RemSound.App/FormLayoutRows.cs b/src/RemSound.App/FormLayoutRows.cs index f93eb6e..9a61eb3 100644 --- a/src/RemSound.App/FormLayoutRows.cs +++ b/src/RemSound.App/FormLayoutRows.cs @@ -74,6 +74,17 @@ internal sealed class QuietTabControl : TabControl protected override AccessibleObject CreateAccessibilityInstance() => new QuietAcc(this); + protected override void OnSelectedIndexChanged(EventArgs e) + { + base.OnSelectedIndexChanged(e); + // Audible tab-switch cue, app-wide (every QuietTabControl gets it for free). Gated on + // ContainsFocus so a genuine user switch - arrow keys with the strip focused, or Ctrl+Tab + // with focus on a control inside the active page - clicks, while the programmatic + // SelectedIndex set done while a window is being built or its last tab restored (nothing + // here focused yet) stays silent. + if (ContainsFocus) TabSwitchSoundService.Play(); + } + private sealed class QuietAcc : ControlAccessibleObject { public QuietAcc(Control owner) : base(owner) { } diff --git a/src/RemSound.App/MainForm.cs b/src/RemSound.App/MainForm.cs index 7682884..af0694b 100644 --- a/src/RemSound.App/MainForm.cs +++ b/src/RemSound.App/MainForm.cs @@ -271,6 +271,15 @@ public sealed class MainForm : Form private bool suppressConnectedCheck; private bool suppressDiscoveredCheck; private bool suppressRememberedCheck; + /// True while ANY checkable list is being (un)checked programmatically — a device-list + /// refresh () or a rebuild of one of the three peer lists + /// (each fires ItemCheck for every pre-checked row it adds). The tick/untick CUE must stay silent + /// for all of these, not just device-list changes: on startup the connected-peers list is focused + /// (see the Shown handler's FocusListControl call), so a saved-peer reconnect rebuilding that list + /// would otherwise click a checkbox sound at launch. Only a genuine user toggle — no flag set — + /// should click. + private bool SuppressingCheckSounds => + suppressDeviceCheckChange || suppressConnectedCheck || suppressDiscoveredCheck || suppressRememberedCheck; private string lastConnectedListSignature = string.Empty; private string lastDiscoveredListSignature = string.Empty; private string lastRememberedListSignature = string.Empty; @@ -460,6 +469,7 @@ public sealed class MainForm : Form // are gone too. private long prevDiagConceal; private long prevDiagShortRead; + private long prevDiagDeviceGulp; private long prevDiagTrimFires; // Wire-level packet-sequence tracking deltas. Detects packet reordering, loss, or // duplication on the UDP path between sender and receiver. On a healthy LAN all three @@ -1282,7 +1292,9 @@ public sealed class MainForm : Form // launch RemSound, find an update, and stay running for less than the timer // interval would otherwise miss the release entirely. Default on. The // background-poll path handles both silent install and the user-prompt flow. - if (startupCfg.CheckForUpdatesOnStartup) + // Skipped on a --silent (automated/throwaway) launch: a test instance must never pop an + // "update available" prompt or, worse, silently download/install + restart mid-test. + if (startupCfg.CheckForUpdatesOnStartup && !CuePlayer.GloballyMuted) { // Defer a few seconds so the network stack, audio engine, and any device // hot-swap has settled before we touch GitHub. The visible cue (silent- @@ -4013,7 +4025,8 @@ public sealed class MainForm : Form // Log the detector's verdict every startup so a silent-mic session is no longer ambiguous — // we can see whether RemSound thought Windows was blocking the mic, not just whether it warned. logFile.Event($"mic-privacy: windows-blocks-desktop-mic={blocked} wasapiMicTicked={anyWasapiMicChecked}"); - if (blocked && anyWasapiMicChecked) WarnMicrophoneBlockedByWindowsPrivacy(); + // A --silent (automated/throwaway) launch logs the verdict but never pops the warning dialog. + if (blocked && anyWasapiMicChecked && !CuePlayer.GloballyMuted) WarnMicrophoneBlockedByWindowsPrivacy(); } /// @@ -4024,6 +4037,10 @@ public sealed class MainForm : Form /// private void MaybeWarnAboutRealtekAsio() { + // A --silent (automated/throwaway) launch must not pop this warning - its TaskDialog plays + // the Windows warning ding even when nobody can see the dialog (it's on a minimized test + // instance that's then auto-closed). The decision belongs to a real user at a real launch. + if (CuePlayer.GloballyMuted) return; if (realtekAsioDriverNames.Count == 0) return; var cfg = AppConfig.Load(); var changed = false; @@ -5383,6 +5400,11 @@ public sealed class MainForm : Form var shortReadNow = receiver.ShortReadFires; var concealDelta = concealNow - prevDiagConceal; prevDiagConceal = concealNow; var shortReadDelta = shortReadNow - prevDiagShortRead; prevDiagShortRead = shortReadNow; + // Device-gulp short-reads this second — the inaudible, on-target partial reads the + // cause-aware auto-tune ignores. High devGulpΔ alongside a near-zero concealΔ is the + // onboard-Realtek chunky-render-callback fingerprint we built the split to catch. + var deviceGulpNow = receiver.DeviceGulpUnderruns; + var deviceGulpDeltaDiag = deviceGulpNow - prevDiagDeviceGulp; prevDiagDeviceGulp = deviceGulpNow; var trimDelta = trimFires - prevDiagTrimFires; prevDiagTrimFires = trimFires; // Live state — current LP-filtered drift error. Negative = buffer running below // target on average; positive = above. @@ -5510,7 +5532,7 @@ public sealed class MainForm : Form $"privMB={selfMeter.PrivateBytesMb:0.0} gcHeapMB={selfMeter.GcHeapMb:0.0} gcFragMB={selfMeter.GcFragmentedMb:0.0} gcCommitMB={selfMeter.GcCommittedMb:0.0} handles={selfMeter.HandleCount} threads={selfMeter.ThreadCount} " + $"captureMs={captureMs:0.0} sendMs={sendMs:0.0} recvMs={recvMs:0.0} renderMs={renderMs:0.0} " + $"trimB={trimBytes} trimN={trimFires} trimΔ={trimDelta} drainB={drainBytes} ovfB={ovfBytes} pktRej={pktRej} " + - $"concealΔ={concealDelta} shortReadΔ={shortReadDelta} " + + $"concealΔ={concealDelta} shortReadΔ={shortReadDelta} devGulpΔ={deviceGulpDeltaDiag} " + $"filtErr={filteredErrorFrames:0.0}f " + $"capPeak={capPeak:0.000} sndAudFrΔ={sndAudFr} stepRawCap={stepRawCap:0.000} stepPreEnc={stepPreEnc:0.000} stepPreEncWas={stepPreEncWas:0.000} stepPreEncAsi={stepPreEncAsi:0.000} stepPostDec={stepPostDec:0.000} stepPostRing={stepPostRing:0.000} stepPostRsm={stepPostRsm:0.000} " + $"stepRawCapXB={stepRawCapXB:0.000} stepRawCapWB={stepRawCapWB:0.000} " + @@ -5736,6 +5758,11 @@ public sealed class MainForm : Form if (pendingProfile is null) return; var p = pendingProfile; applyingProfile = true; + // Silence the generic checkbox tick/untick for the whole bulk apply. The per-box Focused + // gate isn't enough on launch: the box we tick in code is often the focused control, so it + // would click. This + the applyingProfile guard on the send/receive cue keep a profile load + // down to just the startup and (real) connect cues. + CheckSoundService.Suppressed = true; try { // Volume first — affects what's audible during the rest of this method. @@ -5778,6 +5805,7 @@ public sealed class MainForm : Form // the original profile forever. pendingProfile = null; applyingProfile = false; + CheckSoundService.Suppressed = false; } } @@ -6182,10 +6210,10 @@ public sealed class MainForm : Form HandleCapabilityChange(); MarkProfileDirty(); // Audible feedback for the toggle, whether the user clicked the checkbox or pressed the - // mute hotkey (the hotkey flips .Checked, which routes through here too). Suppressed during - // profile load by the suppressStreamingPasswordGate guard above, so loading a profile that - // has send/receive on doesn't blast the cues. - PlayStreamToggleCue(box); + // mute hotkey (the hotkey flips .Checked, which routes through here too). Skipped while a + // profile is being applied programmatically — loading a profile that has send/receive on + // shouldn't blast the cues; only a genuine user toggle should. + if (!applyingProfile) PlayStreamToggleCue(box); } /// Play the send/receive turned-on / turned-off cue for a streaming checkbox toggle. @@ -6519,6 +6547,9 @@ public sealed class MainForm : Form // Played on every checkbox tick/untick across the whole app (CheckSoundService). public const string CheckboxOn = "checkbox-on"; public const string CheckboxOff = "checkbox-off"; + // Played whenever the user switches tabs anywhere in the app (TabSwitchSoundService, + // fired from QuietTabControl). The shipped WAVs are "tab switch 1.wav" etc. + public const string TabSwitch = "tab-switch"; } /// Load one cue sound. Resolution order: @@ -6596,8 +6627,10 @@ public sealed class MainForm : Form TryLoadCueSound(CueId.ReceiveOff, "recieve off.wav", out receiveOffSound); TryLoadCueSound(CueId.Hide, "minimise.wav", out hideSound); TryLoadCueSound(CueId.Show, "maximise.wav", out showSound); - // The app-wide checkbox tick/untick sounds live in their own service; keep them in step. + // The app-wide checkbox tick/untick and tab-switch sounds live in their own services; keep + // them in step. CheckSoundService.Reload(); + TabSwitchSoundService.Reload(); // After a reload (e.g. the user changed a cue in Preferences), warn about any cue that's // switched on but whose sound file is missing. Skipped during construction (no window yet); // OnShown does the first-launch pass. @@ -6653,6 +6686,8 @@ public sealed class MainForm : Form { if (!reportedMissingCues.Add(name)) return; logFile.Event($"cue sound '{name}': enabled but file missing — cue turned off, informing the user"); + // A --silent (automated) launch turns the cue off quietly and never pops a dialog at the user. + if (CuePlayer.GloballyMuted) return; BeginInvoke(() => { try { RestoreFromTray(); } catch { /* surfacing is best-effort */ } @@ -7131,13 +7166,13 @@ public sealed class MainForm : Form if (continuousTuneEnabled && receiver.HasSessionsForRoute(RenderRoute.WasapiLane)) { TickRoute(RenderRoute.WasapiLane, maxLatencyBox, "WASAPI", - ref lastObservedUnderrunCount, ref suppressUserSliderMoveTracking, + ref lastObservedUnderrunCount, ref lastObservedDeviceGulpCount, ref suppressUserSliderMoveTracking, lastUserSliderMoveUtc, intervalSec, frameMs.Value); } if (settings.LoadContinuousAutoTuneAsioEnabled() && receiver.HasSessionsForRoute(RenderRoute.AsioLane)) { TickRoute(RenderRoute.AsioLane, maxLatencyAsioBox, "ASIO", - ref lastObservedUnderrunCountAsio, ref suppressUserAsioSliderMoveTracking, + ref lastObservedUnderrunCountAsio, ref lastObservedDeviceGulpCountAsio, ref suppressUserAsioSliderMoveTracking, lastUserAsioSliderMoveUtc, intervalSec, frameMs.Value); } } @@ -7146,7 +7181,7 @@ public sealed class MainForm : Form if (continuousTuneEnabled) { TickRoute(RenderRoute.Mixed, maxLatencyBox, "", - ref lastObservedUnderrunCount, ref suppressUserSliderMoveTracking, + ref lastObservedUnderrunCount, ref lastObservedDeviceGulpCount, ref suppressUserSliderMoveTracking, lastUserSliderMoveUtc, intervalSec, frameMs.Value); } } @@ -7159,6 +7194,12 @@ public sealed class MainForm : Form // a heap-allocated state object on the hot path. private long lastObservedUnderrunCountAsio; private bool suppressUserAsioSliderMoveTracking; + // Per-route "device-gulp underruns at last tick" — the inaudible, more-buffer-won't-fix + // partial short-reads the cause-aware skip gate deliberately ignores. Tracked only so the + // auto-tune log can show how many were ignored; shared between Mixed and the WASAPI lane the + // same way lastObservedUnderrunCount is. + private long lastObservedDeviceGulpCount; + private long lastObservedDeviceGulpCountAsio; /// /// Per-route auto-tune tick body. Same algorithm as the pre-2026-05-11 single-route @@ -7175,6 +7216,7 @@ public sealed class MainForm : Form NumericUpDown slider, string routeLabel, ref long lastObservedUnderruns, + ref long lastObservedDeviceGulps, ref bool suppressFlag, DateTime lastUserMoveUtc, int intervalSec, @@ -7195,20 +7237,31 @@ public sealed class MainForm : Form // Defer to user's manual change — wait at least one tick interval before overriding. if (DateTime.UtcNow - lastUserMoveUtc < TimeSpan.FromSeconds(intervalSec)) return; - // Per-route underrun delta. The receiver tracks underruns per session, so summing - // only over sessions tagged with this route gives a route-local distress signal. - var currentUnderruns = route == RenderRoute.Mixed ? receiver.Underruns : receiver.UnderrunsFor(route); + // Per-route underrun delta — but the CAUSE-AWARE kind (2026-06-13). We gate on + // tune-blocking underruns only: the full-empty / producer-starved short-reads that + // genuinely mean "the buffer is too thin". A steady trickle of inaudible device-gulp + // partials — a chunky onboard-Realtek render callback asking for an oversized block on an + // otherwise on-target ring — is deliberately NOT counted here, so it can no longer pin the + // target high forever by making every tick skip. The recommendation below still folds in + // the render-callback gap, so even when we're free to lower we can never lower below what + // the device structurally needs; it just settles to that floor instead of overshooting up. + var currentUnderruns = route == RenderRoute.Mixed ? receiver.TuneBlockingUnderruns : receiver.TuneBlockingUnderrunsFor(route); var underrunDelta = currentUnderruns - lastObservedUnderruns; lastObservedUnderruns = currentUnderruns; + // Device-gulp delta is tracked for the diagnostic trail only — it never gates. + var currentDeviceGulps = route == RenderRoute.Mixed ? receiver.DeviceGulpUnderruns : receiver.DeviceGulpUnderrunsFor(route); + var deviceGulpDelta = currentDeviceGulps - lastObservedDeviceGulps; + lastObservedDeviceGulps = currentDeviceGulps; if (underrunDelta > 0) { // Route label slots into the message body when present, omitted entirely in classic // modes so the legacy "continuous auto-tune: skipping (N new underruns...)" wording // is preserved bit-for-bit. The trailing-space + colon ordering is what gave the // pre-fix line its weird "continuous auto-tune : skipping" formatting when the - // label was empty. + // label was empty. devGulp shows how many inaudible device-gulp partials were ignored + // this tick — a high devGulp with a small underrunDelta is the Realtek fingerprint. var prefix = string.IsNullOrEmpty(routeLabel) ? "continuous auto-tune" : $"continuous auto-tune {routeLabel}"; - logFile.Event($"{prefix}: skipping ({underrunDelta} new underruns since last tick)"); + logFile.Event($"{prefix}: skipping ({underrunDelta} new underruns since last tick, devGulp={deviceGulpDelta} ignored)"); return; } @@ -7271,7 +7324,7 @@ public sealed class MainForm : Form suppressFlag = false; } var logPrefix = string.IsNullOrEmpty(routeLabel) ? "continuous auto-tune" : $"continuous auto-tune {routeLabel}"; - logFile.Event($"{logPrefix}: gap-max={gapPeak}ms gap-used={observedGap}ms renderCb={observedRenderCb}ms over {sampleCount}s recommended={recommended}ms capped={capped}ms prev={current}ms applied={clamped}ms frame={frameMs}ms"); + logFile.Event($"{logPrefix}: gap-max={gapPeak}ms gap-used={observedGap}ms renderCb={observedRenderCb}ms over {sampleCount}s recommended={recommended}ms capped={capped}ms prev={current}ms applied={clamped}ms frame={frameMs}ms devGulp={deviceGulpDelta}"); } // UpdateTuneButtonEnabled + TuneLatencyAsync retired alongside the one-shot Tune button. @@ -7281,12 +7334,16 @@ public sealed class MainForm : Form private void WireCheckedListAccessibility(CheckedListBox list, Label statusLabel, string itemKind) { - // Tick/untick sound for the inputs/outputs lists. Gated on the list being focused so a real - // user click/spacebar clicks, but the bulk programmatic (un)checking done on profile load or - // by "uncheck all" (focus is on the button, not the list) stays silent. + // Tick/untick sound for the inputs/outputs AND peer lists. Gated on the list being focused so + // a real user click/spacebar clicks, but EVERY programmatic (un)check stays silent — via the + // list-focus gate, CheckSoundService.Suppressed during profile apply, and SuppressingCheckSounds + // which covers both the device-list mutations and the three peer-list rebuilds (each rebuild + // fires ItemCheck for its pre-checked rows). Without the peer-list half, a saved-peer reconnect + // rebuilding the focused connected-peers list at startup would click a checkbox sound. Only a + // genuine user toggle (no suppression flag set) should click. list.ItemCheck += (_, e) => { - if (list.Focused) CheckSoundService.Play(e.NewValue == CheckState.Checked); + if (list.Focused && !SuppressingCheckSounds) CheckSoundService.Play(e.NewValue == CheckState.Checked); }; list.SelectedIndexChanged += (_, _) => { diff --git a/src/RemSound.App/PreferencesDialog.cs b/src/RemSound.App/PreferencesDialog.cs index eaa15e5..0b2b033 100644 --- a/src/RemSound.App/PreferencesDialog.cs +++ b/src/RemSound.App/PreferencesDialog.cs @@ -190,6 +190,11 @@ internal sealed class PreferencesDialog : Form c => c.EnableCheckboxOnCue, (c, v) => c.EnableCheckboxOnCue = v), MachineRow("Checkbox unticked sound", MainForm.CueId.CheckboxOff, "uncheck.wav", c => c.EnableCheckboxOffCue, (c, v) => c.EnableCheckboxOffCue = v), + // Played whenever the user switches tabs anywhere in the app (TabSwitchSoundService). + // Display name is Ed's "switch tabs"; the shipped files are "tab switch 1.wav" etc, so + // the base filename here is "tab switch.wav" for variant discovery to match. + MachineRow("Switch tabs sound", MainForm.CueId.TabSwitch, "tab switch.wav", + c => c.EnableTabSwitchCue, (c, v) => c.EnableTabSwitchCue = v), ]; } @@ -330,6 +335,10 @@ internal sealed class PreferencesDialog : Form DialogResult = DialogResult.OK, }; + // The four-tab strip. Held as a field (not a constructor local) so OnShown can land focus + // on it when the dialog opens — see the OnShown override for why that's needed for NVDA. + private readonly QuietTabControl tabs = new() { Dock = DockStyle.Fill, TabIndex = 0, TabStop = true }; + /// True if the user toggled Mute cues or Accept remote during this dialog /// session. The owner uses this to know whether to MarkProfileDirty after the dialog /// closes (since both settings live on Profile and need to flag a save-pending state). @@ -355,6 +364,10 @@ internal sealed class PreferencesDialog : Form cueRows = BuildCueRows(settings); Text = "Preferences"; + // Explicitly a dialog so the spoken title is clean and screen readers treat it as a dialog + // (ShowDialog already exposes UIA IsDialog on .NET 7+; this is harmless reinforcement). + AccessibleRole = AccessibleRole.Dialog; + AccessibleName = "Preferences"; FormBorderStyle = FormBorderStyle.FixedDialog; MinimizeBox = false; MaximizeBox = false; @@ -638,8 +651,8 @@ internal sealed class PreferencesDialog : Form startupListPanel.Controls.Add(startupProfileList); // Four tabs, accessible (QuietTabControl) like the main window. Ctrl+Tab / arrows on the - // strip switch tabs; the active page's controls are the next tab stops. - var tabs = new QuietTabControl { Dock = DockStyle.Fill, TabIndex = 0, TabStop = true }; + // strip switch tabs; the active page's controls are the next tab stops. The control itself + // is a field (declared above) so OnShown can focus it when the dialog opens. tabs.TabPages.Add(MakeTab("General", browseProfilesFolderButton, acceptRemoteVolumeBox, upnpEnabledBox, upnpStatusLabel, loggingBox, writeLogsNowButton)); tabs.TabPages.Add(MakeTab("Audio cues", cueGroup)); @@ -695,6 +708,52 @@ internal sealed class PreferencesDialog : Form }; } + /// When the dialog opens, land focus on the first real, NAMED leaf control inside the + /// active tab page so NVDA announces the dialog and that control. Never the tab strip: the tab + /// control is a whose own accessible object is deliberately + /// role-less and nameless (so NVDA reads the tab item, not a redundant "tab control"), and + /// focusing THAT on open gave NVDA nothing to announce — which is exactly why Preferences opened + /// silent until you moved. Focusing a named leaf (the first General-tab control) gives NVDA + /// something to speak, and because ShowDialog exposes the form as a dialog (UIA IsDialog, .NET 7+) + /// it then reads the whole dialog. + /// + /// Three load-bearing details, confirmed against the dotnet/winforms + NVDA issue trackers and + /// matching the pattern Andre's Sensor Readout uses (it focuses a real list/textbox in Shown): + /// * Deferred via BeginInvoke so it runs after the dialog's accessibility tree is live. + /// * ActiveControl=null FIRST, so leaf.Focus() is a genuine focus CHANGE and actually raises the + /// focus event (without the transition WinForms can treat focus as unchanged and stay silent). + /// * NotifyFocus re-fires the MSAA focus event as belt-and-braces. + /// Ctrl+Tab still switches tabs from inside the page. + protected override void OnShown(EventArgs e) + { + base.OnShown(e); + BeginInvoke(new Action(() => + { + if (IsDisposed) return; + if (tabs.TabCount > 0) tabs.SelectedIndex = 0; + var leaf = FirstTabStopLeaf(tabs.SelectedTab) ?? (Control)tabs; + ActiveControl = null; + leaf.Focus(); + if (leaf.IsHandleCreated) WinEventNotifier.NotifyFocus(leaf); + })); + } + + /// The first visible, enabled, tab-stop control inside , + /// searched depth-first in child order (which matches the order controls were added to each tab). + /// Returns a real leaf the dialog can focus on open so NVDA has a named control to announce — + /// never a layout panel or the role-less tab strip. + private static Control? FirstTabStopLeaf(Control? container) + { + if (container is null) return null; + foreach (Control c in container.Controls) + { + if (c is { CanSelect: true, TabStop: true, Visible: true, Enabled: true }) + return c; + if (FirstTabStopLeaf(c) is { } nested) return nested; + } + return null; + } + /// Wire up the Startup behaviour tab (moved here from StartupBehaviourDialog): load the /// current state, populate the profile list, and persist each change immediately to AppConfig / /// the Windows auto-start registry entry, exactly as the old dialog did. diff --git a/src/RemSound.App/Program.cs b/src/RemSound.App/Program.cs index e3dcc16..688947f 100644 --- a/src/RemSound.App/Program.cs +++ b/src/RemSound.App/Program.cs @@ -35,6 +35,16 @@ internal static class Program AppConfig.SetUserDataDirectoryOverride(configDir); } + // --silent: make this launch play no cue sounds at all (startup, connect, checkbox, + // tab-switch, ...) and skip the front-most "missing sound file" warning. The automated test + // harness passes it so its throwaway launches stay completely quiet instead of chiming a + // startup cue (or popping a dialog) onto whoever happens to be at the screen. Set up front, + // before consolidation or the startup cue can fire. + if (Array.Exists(args, a => string.Equals(a, "--silent", StringComparison.OrdinalIgnoreCase))) + { + CuePlayer.GloballyMuted = true; + } + // SustainedLowLatency tells the GC to avoid full (gen 2) collections while audio is streaming. // Gen 0/1 collections still happen but are sub-millisecond; the long pauses that were causing // the receiver to fall behind in clusters of 4-5 underruns at a time were almost certainly @@ -48,8 +58,11 @@ internal static class Program // "user settings and logs" folder before anything reads config/profiles/logs. Idempotent + // best-effort; upgrades users from any older build. Shown to the user once if files moved. var layoutMigration = RemSound.Core.AppConfig.MigrateLegacyLayoutIfNeeded(); - // Move the cue sounds into that folder too — seeded from the shipped defaults (see method). - ConsolidateSounds(); + // Cue sounds no longer live in a sounds\ folder at all (the shipped defaults are install-side + // in AppConfig.SoundsDirectory = "default sounds\" now, so an update always refreshes them). + // Delete BOTH defunct old sounds folders an upgrader might still have, whatever version they + // came from. Best-effort + idempotent. + RemoveLegacySoundFolders(); // Remove cue WAVs (and their .sfk peak files) left loose in the install ROOT by pre- // 2026-05-28 builds, where the cues lived next to RemSound.exe before they moved into @@ -137,14 +150,18 @@ internal static class Program KeyClickService.Initialize(AppConfig.Load().EnableKeyboardClicks); Application.ApplicationExit += (_, _) => KeyClickService.Shutdown(); - // Tick/untick sounds for checkbox toggles app-wide (CheckSoundService). Loaded here; reloaded - // by MainForm.ReloadAllCueSounds whenever cue settings change in Preferences. + // Tick/untick sounds for checkbox toggles app-wide (CheckSoundService) and the tab-switch + // cue (TabSwitchSoundService). Loaded here; reloaded by MainForm.ReloadAllCueSounds whenever + // cue settings change in Preferences. CheckSoundService.Reload(); + TabSwitchSoundService.Reload(); // One-time "your settings moved" notice — only the launch that actually relocated files // shows it (idempotent migration ⇒ MovedAnything is false on every later launch). Shown // here, after the guard and before the profile picker, so the user reads it once up front. - if (layoutMigration.MovedAnything) + // Skipped on a --silent (automated/throwaway) launch: its TaskDialog dings at and pops over + // whoever's at the screen during a test, and a throwaway instance needn't announce a move. + if (layoutMigration.MovedAnything && !CuePlayer.GloballyMuted) { ShowLayoutMigrationNotice(); } @@ -405,39 +422,34 @@ internal static class Program catch { /* never let cleanup disturb startup */ } } - /// Consolidate the cue WAVs into the per-user sounds folder. The release ships the - /// default cues in <exe>\sounds\; this copies any cue MISSING from the per-user - /// ...\user settings and logs\sounds\ across (so a fresh install, or a release that adds a - /// new cue, gets seeded) WITHOUT overwriting one already there (so the user's own cue files - /// survive), then removes the shipped folder to keep the install root tidy. The app reads cues - /// only from the per-user folder, which the updater leaves untouched — so a user's custom cue - /// WAVs are no longer clobbered by an update. Best-effort + idempotent. 2026-06-10. - private static void ConsolidateSounds() + /// Delete the two defunct old cue-sounds folders an upgrader might still have on disk, + /// whichever version they came from. Sounds now live install-side in + /// (<exe>\default sounds\), which updates + /// always refresh; both old locations are dead and only cause confusion / stale reads if left: + /// * <exe>\sounds\ — the install-side folder cue WAVs lived in from ~v3.1 to v3.4. + /// A user jumping STRAIGHT from that era to this version never ran the v3.5 consolidation that + /// used to move-and-delete it, so it can still be sitting there. + /// * ...\user settings and logs\sounds\ — the per-user folder cues lived in from v3.5 to + /// v3.9.1, with a never-overwrite seed that meant a changed default could never reach an + /// existing user (the whole reason for the 2026-06-13 move). + /// Best-effort + idempotent — a no-op once they're gone. The user's REAL custom sounds were never + /// in either folder (they're explicit Browse-picked file paths elsewhere), so nothing is lost. + private static void RemoveLegacySoundFolders() { - try + foreach (var legacy in new[] + { + Path.Combine(AppContext.BaseDirectory, "sounds"), // ~v3.1–v3.4 install-side + AppConfig.LegacyUserSoundsDirectory, // v3.5–v3.9.1 per-user + }) { - var userSounds = AppConfig.SoundsDirectory; - Directory.CreateDirectory(userSounds); - var shippedSounds = Path.Combine(AppContext.BaseDirectory, "sounds"); - if (!Directory.Exists(shippedSounds)) return; - foreach (var src in Directory.GetFiles(shippedSounds)) - { - try - { - var dest = Path.Combine(userSounds, Path.GetFileName(src)); - if (!File.Exists(dest)) File.Copy(src, dest); - } - catch { /* one unreadable cue mustn't stop the rest */ } - } - try { Directory.Delete(shippedSounds, recursive: true); } - catch { /* leave it if locked — the app reads the per-user copy anyway */ } + try { if (Directory.Exists(legacy)) Directory.Delete(legacy, recursive: true); } + catch { /* leave it if locked / unreadable — it's just unused clutter now */ } } - catch { /* never let cue consolidation disturb startup */ } } /// Play the startup cue once if the machine-wide setting is on. Resolves the WAV the /// same way the in-app cues do — a user-set custom path (machine-wide, in ) - /// if it exists on disk, otherwise the bundled sounds\start up.wav. Read straight from + /// if it exists on disk, otherwise the bundled default sounds\start up.wav. Read straight from /// AppConfig because no profile (and therefore no settings store) is loaded yet at this point /// in startup. Best-effort: a cue must never stop RemSound from starting. private static void PlayStartupCueIfEnabled() diff --git a/src/RemSound.App/RemSound.App.csproj b/src/RemSound.App/RemSound.App.csproj index 4735be2..78ee94c 100644 --- a/src/RemSound.App/RemSound.App.csproj +++ b/src/RemSound.App/RemSound.App.csproj @@ -14,7 +14,7 @@ tag_name on the latest GitHub release; bump it on every public release. The AssemblyVersion / FileVersion default to this value, and Assembly.GetName().Version is what the About dialog and the updater both read. --> - 3.9 + 4.0 @@ -57,17 +57,18 @@ - - - sounds\%(Filename)%(Extension) + + + default sounds\%(Filename)%(Extension) PreserveNewest + whose marker is up to date — which silently shipped the v3.9 zip with NO cue sounds at all. + This explicit post-publish copy is marker-independent: it always copies every WAV from the + source "default sounds\" folder into the published "default sounds\" folder. Build-release.ps1 + zips the publish output, so this is what makes the release reliably contain the sounds. (The + self-test "Bundled resources present" step verifies it.) --> - <_CueWavs Include="..\..\sounds\*.wav" /> + <_CueWavs Include="..\..\default sounds\*.wav" /> diff --git a/src/RemSound.App/SelfTest.cs b/src/RemSound.App/SelfTest.cs index bd2cae4..4b95b8d 100644 --- a/src/RemSound.App/SelfTest.cs +++ b/src/RemSound.App/SelfTest.cs @@ -295,12 +295,11 @@ internal static class SelfTest var root = AppContext.BaseDirectory; Check(File.Exists(Path.Combine(root, "readme.html")), "readme.html (the F1 manual) must ship next to the exe"); - // Cues are consolidated from the shipped sounds\ folder into the runtime sounds folder at - // startup (Program.ConsolidateSounds), so by the time the self-test runs they live here. - // An empty runtime folder means the shipped build had no sounds to seed from - exactly the - // bug that shipped the v3.9 zip with no cue sounds. + // The shipped DEFAULT cues live install-side in "default sounds\" next to the exe + // (AppConfig.SoundsDirectory). An empty/absent folder means the shipped build had no sounds - + // exactly the bug that shipped the v3.9 zip with no cue sounds. var soundsDir = AppConfig.SoundsDirectory; - Check(Directory.Exists(soundsDir), "the runtime sounds folder must exist (cues are consolidated at startup)"); + Check(Directory.Exists(soundsDir), "the shipped 'default sounds' folder must exist next to the exe"); // Cues ship as numbered variants ("connect 1.wav", ...); each required cue must have at // least one variant present. foreach (var cue in new[] @@ -311,7 +310,7 @@ internal static class SelfTest }) { Check(CueSounds.Variants(cue).Count > 0, - $"no sound variant present for the '{Path.GetFileNameWithoutExtension(cue)}' cue (was the shipped sounds\\ folder empty?)"); + $"no sound variant present for the '{Path.GetFileNameWithoutExtension(cue)}' cue (was the shipped 'default sounds' folder empty?)"); } // Keyboard-click typing sounds + the password passkey sound. Check(File.Exists(Path.Combine(soundsDir, "key 1.wav")), "keyboard-click sound 'key 1.wav' must be present"); diff --git a/src/RemSound.App/TabSwitchSoundService.cs b/src/RemSound.App/TabSwitchSoundService.cs new file mode 100644 index 0000000..14d0742 --- /dev/null +++ b/src/RemSound.App/TabSwitchSoundService.cs @@ -0,0 +1,47 @@ +using RemSound.Core; + +namespace RemSound.App; + +/// +/// Plays a short cue whenever the user switches between tabs anywhere in RemSound - the main +/// window's tab strip and every tabbed dialog (Preferences, Recording settings, ...). Fired from +/// on a selection change, gated on the tab control actually containing +/// focus, so a genuine user switch (arrow keys / Ctrl+Tab) clicks but the programmatic selection +/// done while building or restoring a window stays silent. +/// +/// Machine-wide cue (), shipped as numbered variants +/// ("tab switch 1.wav", ...) and configured in Preferences exactly like the other cues. Default on. +/// +internal static class TabSwitchSoundService +{ + private static CuePlayer? switchSound; + + /// When true, is a no-op. Reserved for bulk programmatic tab changes + /// the focus gate doesn't already cover; mirrors . + public static bool Suppressed { get; set; } + + /// (Re)load the cue from the current cue configuration. Call at startup and whenever cue + /// settings change, alongside . + public static void Reload() + { + switchSound = LoadCue(MainForm.CueId.TabSwitch, "tab switch.wav", AppConfig.Load()); + } + + public static void Play() + { + if (Suppressed) return; + if (AppConfig.Load().EnableTabSwitchCue) switchSound?.Play(); + } + + private static CuePlayer? LoadCue(string cueId, string defaultFile, AppConfig cfg) + { + try + { + string? path = cfg.MachineCueCustomPaths.TryGetValue(cueId, out var custom) && File.Exists(custom) + ? custom + : CueSounds.ResolveDefaultPath(cueId, defaultFile, cfg); + return path is not null && File.Exists(path) ? new CuePlayer(path) : null; + } + catch { return null; } + } +} diff --git a/src/RemSound.Core/AppConfig.cs b/src/RemSound.Core/AppConfig.cs index bfafca9..13ad086 100644 --- a/src/RemSound.Core/AppConfig.cs +++ b/src/RemSound.Core/AppConfig.cs @@ -109,6 +109,9 @@ public sealed class AppConfig /// Tick / untick sounds played on every checkbox toggle anywhere in the app. public bool EnableCheckboxOnCue { get; set; } = true; public bool EnableCheckboxOffCue { get; set; } = true; + /// Sound played whenever the user switches between tabs anywhere in the app (the main + /// window's tab strip and every tabbed dialog). Machine-wide, default on. + public bool EnableTabSwitchCue { get; set; } = true; /// Custom WAV overrides for the machine-wide cues above, keyed by cue id. The /// equivalent of but machine-wide, since these cues don't @@ -281,8 +284,21 @@ public sealed class AppConfig /// Where the per-machine log files are written. public static string LogsDirectory => Path.Combine(UserDataDirectory, "logs"); - /// Where the cue WAVs live (seeded from the shipped defaults; see Program.ConsolidateSounds). - public static string SoundsDirectory => Path.Combine(UserDataDirectory, "sounds"); + /// Where the shipped DEFAULT cue WAVs live: a default sounds\ folder next to the + /// exe. This is part of the INSTALL, not user state — the auto-updater (and a dev republish) + /// always overwrites it, so a changed default sound reaches every user, including existing ones. + /// Deliberately NOT under and NOT redirected by --config-dir: + /// these are shipped defaults, not per-user data. The user's OWN custom sounds are never stored + /// here — they're explicit file paths (the Preferences "Browse" picker) that live in the user's + /// own location, which the updater never touches. 2026-06-13: moved here out of the per-user + /// sounds\ folder, whose never-overwrite seeding meant a tweaked default could never land + /// for anyone who already had the old one. + public static string SoundsDirectory => Path.Combine(AppContext.BaseDirectory, "default sounds"); + + /// The OLD per-user sounds folder (...\user settings and logs\sounds\), now + /// defunct after sounds moved to the install-side . Kept only so the + /// startup migration can delete the orphan. Do NOT read cues from here. + public static string LegacyUserSoundsDirectory => Path.Combine(UserDataDirectory, "sounds"); /// The base profiles folder (ProfileStore appends the per-machine subfolder). public static string ProfilesBaseDirectory => Path.Combine(UserDataDirectory, "profiles"); @@ -303,10 +319,11 @@ public sealed class AppConfig /// <exe>\config\global config.json (the 2026-06-07 interim layout) /// * profiles: <exe>\config\profiles\ (interim) OR <exe>\profiles\ (oldest) /// * logs: <exe>\logs\ - /// → all under ...\user settings and logs\. (Sounds are consolidated separately by - /// Program.ConsolidateSounds — the shipped default cues need seeding, not a plain move.) Runs - /// BEFORE anything reads config/profiles/logs. A custom is - /// untouched. Directory moves fall back to copy-then-delete across a volume boundary. + /// → all under ...\user settings and logs\. (Sounds are NOT part of this folder any more — + /// the shipped defaults live install-side in ; Program deletes the + /// two orphaned old sounds folders on startup.) Runs BEFORE anything reads config/profiles/ + /// logs. A custom is untouched. Directory moves fall back to + /// copy-then-delete across a volume boundary. /// public static LayoutMigrationResult MigrateLegacyLayoutIfNeeded() { diff --git a/src/RemSound.Receiver/AudioReceiver.cs b/src/RemSound.Receiver/AudioReceiver.cs index c838707..7ae8af8 100644 --- a/src/RemSound.Receiver/AudioReceiver.cs +++ b/src/RemSound.Receiver/AudioReceiver.cs @@ -491,6 +491,19 @@ public sealed class AudioReceiver : IDisposable public long Underruns => playoutEngine.AggregateUnderruns; public long Drops => playoutEngine.AggregateDrops + Interlocked.Read(ref packetsDropped); + /// Cause-split of for the continuous auto-tune (2026-06-13). + /// TuneBlockingUnderruns are the short-reads that mean "the buffer is genuinely too thin" + /// (full-empty reads + reads taken while the ring was draining below target) — the auto-tune + /// gates its lowering on THESE rather than the legacy total, so a steady trickle of inaudible + /// device-gulp partials (a chunky output render callback asking for an oversized block on an + /// otherwise on-target ring) no longer pins the target high forever. DeviceGulpUnderruns + /// is that excluded device-structural remainder, surfaced for the diag log so the split can be + /// validated. Both are per-route for BothIndependent, mirroring . + public long TuneBlockingUnderruns => playoutEngine.AggregateTuneBlockingUnderruns; + public long TuneBlockingUnderrunsFor(RenderRoute route) => playoutEngine.AggregateTuneBlockingUnderrunsFor(route); + public long DeviceGulpUnderruns => playoutEngine.AggregateDeviceGulpUnderruns; + public long DeviceGulpUnderrunsFor(RenderRoute route) => playoutEngine.AggregateDeviceGulpUnderrunsFor(route); + /// Per-cause split of the legacy `Drops` rollup. Useful in the diag log to tell /// "we deliberately trimmed the buffer to track the latency target" (TrimDropBytes) from /// "we got malformed packets" (PacketsRejectedMalformed) from "ringbuffer overflowed and diff --git a/src/RemSound.Receiver/PlayoutEngine.cs b/src/RemSound.Receiver/PlayoutEngine.cs index 8323921..3f5fca1 100644 --- a/src/RemSound.Receiver/PlayoutEngine.cs +++ b/src/RemSound.Receiver/PlayoutEngine.cs @@ -366,6 +366,53 @@ internal sealed class PlayoutEngine : IWaveProvider return total; } + /// Cause-split underrun aggregators for the continuous auto-tune (2026-06-13). + /// sums the short-reads the tuner should treat + /// as "need more buffer" (full-empty reads + reads taken while the ring was draining below + /// target). sums the inaudible on-target partial + /// short-reads caused by a chunky output render callback, which more buffer can't fix and which + /// must NOT block the tuner from lowering. Together they partition . + /// Per-route, mirroring the underrun aggregator above. + public long AggregateTuneBlockingUnderrunsFor(RenderRoute route) + { + long total = 0; + foreach (var s in sessionsSnapshot) + { + if (s.Route == route) total += s.TuneBlockingUnderrunsTotal; + } + return total; + } + + public long AggregateTuneBlockingUnderruns + { + get + { + long total = 0; + foreach (var s in sessionsSnapshot) total += s.TuneBlockingUnderrunsTotal; + return total; + } + } + + public long AggregateDeviceGulpUnderrunsFor(RenderRoute route) + { + long total = 0; + foreach (var s in sessionsSnapshot) + { + if (s.Route == route) total += s.DeviceGulpUnderrunsTotal; + } + return total; + } + + public long AggregateDeviceGulpUnderruns + { + get + { + long total = 0; + foreach (var s in sessionsSnapshot) total += s.DeviceGulpUnderrunsTotal; + return total; + } + } + /// True if at least one session is currently tagged for this route. Used by /// the auto-tune to skip ticking a lane that has nobody to tune — without this gate /// the ASIO auto-tune (for example) would react to the shared network-gap signal diff --git a/src/RemSound.Receiver/SessionPlayout.cs b/src/RemSound.Receiver/SessionPlayout.cs index b84c98e..b92a436 100644 --- a/src/RemSound.Receiver/SessionPlayout.cs +++ b/src/RemSound.Receiver/SessionPlayout.cs @@ -56,6 +56,19 @@ internal sealed class SessionPlayout : IDisposable // independent of the byte amount). private long trimFireCount; + // Reference latency the click-trim threshold is measured against, distinct from the live + // target. It snaps UP to the target instantly (raising never trims) but eases DOWN slowly when + // the target is lowered - e.g. the continuous auto-tune walking the latency down. Without this + // glide, each downward target step drops the trim threshold under the buffer's natural sawtooth + // and the trim shaves a chunk off the buffer on the spot: an audible click on every step (the + // "crackly while it tunes" Ed reported, worse at a 3-second tune interval, and on ASIO too since + // its tighter smoothness=1 trim is even more eager). Easing the ceiling down slower than the + // depth corrector drains the buffer lets the buffer slide down UNDER the threshold instead of + // being trimmed. Genuine bloat above the gliding ceiling still trims. In steady state it equals + // the target, so normal operation - including ASIO Tight mode's burst snap-back - is unchanged. + private double trimGlideTargetMs; + private long prevTrimGlideTicks; + // === Underrun concealment state === // When the playout ring buffer comes up short on a render-side read, AudioRingBuffer // silence-fills the missing portion with hard zero. The transient from the last real @@ -249,6 +262,33 @@ internal sealed class SessionPlayout : IDisposable private long partialReadFiresTotal; public long ConcealmentFiresTotal => Interlocked.Read(ref concealmentFiresTotal); public long PartialReadFiresTotal => Interlocked.Read(ref partialReadFiresTotal); + + // Cause-split of ring short-reads, for the continuous auto-tune (2026-06-13). The legacy + // UnderrunCount can't tell apart two very different events that both come up short on a read: + // * PRODUCER starvation — the ring is draining below target because decoded audio isn't + // arriving fast enough (late/lost packets, or a stalled receive/decode thread). MORE + // buffer genuinely helps; this is the "raise the target / don't lower" case. + // * DEVICE gulp — the output render callback came late/chunky and asked for an oversized + // block in one go (classic onboard-Realtek WASAPI ~21ms period stretching toward ~42ms), + // so a perfectly healthy on-target ring still can't fill that one gulp. These are partial + // short-reads that are INAUDIBLE (zero-padded sub-frame tail since the 2026-05-14 fix), and + // more buffer never cures the gulp pattern — it just adds permanent latency. This is the + // case that used to pin the auto-tune high forever (it skipped lowering on ANY underrun). + // We tell them apart by where the buffer is sitting at the instant of the short-read: a + // chronically-below-target buffer (filteredErrorFrames well negative) is producer starvation; + // an on-target buffer that momentarily came up short is a device gulp. The split is computed + // live on the render thread, independent of file logging, so it drives the live tuner even + // with logs off. The cumulative totals are also surfaced for the diag log so the classification + // can be validated against real captures. + private long tuneBlockingUnderrunsTotal; + private long deviceGulpUnderrunsTotal; + /// Short-reads the auto-tune should treat as "need more buffer" — full-empty reads + /// (audible) plus any short-read taken while the ring was chronically below target (producer + /// starvation). These block the auto-tune from lowering, exactly as the legacy total used to. + public long TuneBlockingUnderrunsTotal => Interlocked.Read(ref tuneBlockingUnderrunsTotal); + /// Inaudible partial short-reads taken while the ring was on target — the device-gulp + /// case more buffer can't fix. These must NOT block the auto-tune from lowering. + public long DeviceGulpUnderrunsTotal => Interlocked.Read(ref deviceGulpUnderrunsTotal); /// Live state — the LP-filtered drift error in stereo frames. Positive = buffer /// running above target on average (sender clock faster); negative = buffer below /// target. Magnitude shows how off-target the buffer's average position is right now. @@ -378,6 +418,8 @@ internal sealed class SessionPlayout : IDisposable lastConcealSampleR = 0f; filteredErrorFrames = 0; prevDriftSampleTicks = 0; + trimGlideTargetMs = 0; + prevTrimGlideTicks = 0; // Phase-4 drift resampler state. Reset counters and window state. Reset() on the // resampler clears its internal filter delay line so a fresh session doesn't // inherit phase from a prior one. SetRates back to 1:1 — we'll re-measure drift @@ -520,8 +562,28 @@ internal sealed class SessionPlayout : IDisposable }; if (knobExtraMs >= 0) { + // Ease the trim's reference latency: snap UP to the target instantly (raising never + // trims), glide DOWN at ~1.5 ms/sec - slower than the depth corrector can drain the + // buffer - so a lowered target (the auto-tune walking latency down) lets the buffer + // slide down under the threshold rather than being shaved into a click on each step. + const double TrimGlideDownMsPerSec = 1.5; + var nowTrimTicks = Stopwatch.GetTimestamp(); + if (trimGlideTargetMs <= 0 || targetLatencyMs >= trimGlideTargetMs) + { + trimGlideTargetMs = targetLatencyMs; + } + else if (prevTrimGlideTicks != 0) + { + var dtSec = (nowTrimTicks - prevTrimGlideTicks) / (double)Stopwatch.Frequency; + trimGlideTargetMs = Math.Max(targetLatencyMs, trimGlideTargetMs - TrimGlideDownMsPerSec * dtSec); + } + prevTrimGlideTicks = nowTrimTicks; + var trimMarginMs = floorMarginMs + knobExtraMs; - var trimThresholdBytes = MillisecondsToBytes(targetLatencyMs + trimMarginMs); + // Threshold uses the gliding ceiling so a freshly-lowered target doesn't trip the trim. + // The drop destination still uses the REAL target, so if genuine bloat does push the + // buffer above the gliding ceiling, it's cut back to where the latency actually wants it. + var trimThresholdBytes = MillisecondsToBytes((int)Math.Round(trimGlideTargetMs) + trimMarginMs); if (playout.BufferedBytes > trimThresholdBytes) { var keepBytes = MillisecondsToBytes(Math.Max(targetLatencyMs + dropToCushionMs, 1)); @@ -701,6 +763,21 @@ internal sealed class SessionPlayout : IDisposable // than zero; the zero-padded tail just produces silence at the resampler output // for that fraction. var artifact = (ConcealmentArtifact)concealmentArtifactRaw; + // Cause-split for the continuous auto-tune (see tuneBlockingUnderrunsTotal declaration). + // Any short-read is classified the instant it happens by where the buffer is sitting: + // a ring chronically below target (filteredErrorFrames well negative) is producer/network + // starvation that more buffer fixes; an on-target ring that came up short is an inaudible + // device gulp that more buffer can't fix. ~3ms of deficit is the boundary — past the + // on-target jitter the depth-corrector leaves behind, far short of a real producer stall. + if (framesGot < inputFramesNeeded) + { + const int TuneStarveMs = 3; + var producerBehind = filteredErrorFrames <= -(TuneStarveMs * MixSampleRate / 1000.0); + if (framesGot == 0 || producerBehind) + Interlocked.Increment(ref tuneBlockingUnderrunsTotal); + else + Interlocked.Increment(ref deviceGulpUnderrunsTotal); + } if (framesGot == 0) { Interlocked.Increment(ref concealmentFiresTotal);