Repository navigation
Speaker Connect v1.0.1 — Settings Persistence Patch
Speaker Connect now remembers each speaker's settings automatically, so a restart or a temporary disconnect no longer resets volumes, delays, or calibration.
Download
SpeakerConnect-v1.0.1-win-x64.zip (69.1 MB, self-contained — no .NET install required)
SHA-256: EF058B7B17EEC7C3834988A06A06E4EEC912164EAF4BEE30261042D25882F443
Install
- Extract the ZIP to any folder.
- Run
SpeakerConnect.exe. - Windows SmartScreen may warn — the app is not digitally signed. Click More info → Run anyway if you trust this release.
Requires Windows 10/11 (64-bit) and at least two playback endpoints.
Upgrading from v1.0.0: replace the old files with the new ZIP contents. Existing balance-calibration gains are kept; legacy sync-offsets.json delays are imported once on first launch.
What changed
- Per-device delay and volume are saved automatically by persistent Windows endpoint id and restored after an application restart or a device reconnect.
- The selected output group, loopback source, and synchronization reference are restored on the next launch.
- Smart Volume Balance saves merge with existing gains, so a temporarily disconnected speaker does not lose its calibration.
- Settings writes are atomic (temp file + swap) and coalesced for 300 ms; they flush when routing stops and the window closes.
- A disconnected endpoint keeps its saved entry and is never overwritten by defaults while it is absent.
- A corrupt settings file is moved aside as
<name>.corrupt-<timestamp>and the app starts with safe defaults. - Legacy
sync-offsets.jsondata is imported once intodevice-settings.json; the old file is left in place. - Added diagnostics for restart/reconnect persistence, disconnected-device preservation, clamping, atomic writes, corruption, legacy migration, and the real view-model save → restart → disconnect → reconnect flow.
No changes were made to audio routing, master volume, synchronization, or calibration behavior.
Saved settings
%LOCALAPPDATA%\SpeakerConnect\device-settings.json— per-endpoint delay, volume, and output-group membership; selected source and reference ids.%LOCALAPPDATA%\SpeakerConnect\volume-balance.json— Smart Volume Balance enabled preference and per-endpoint gains.
Routing on/off state, buffer profile, and master volume/mute are intentionally not saved.
Verification
dotnet build SpeakerConnect.slnx -c Release: 0 warnings, 0 errors- Hardware-independent diagnostics: 20/20 pass (also runs in CI)
- Muted hardware diagnostics: 24/24 pass
- Two-target end-to-end loopback signal diagnostics: 26/26 pass (20 logic + 4 muted hardware + 2 signal). Master-volume scaling measured 0.505/0.500; a 0.25 balance gain attenuated only its own destination (ratio 0.263) while the other stayed at unity (1.000).
- Published
SpeakerConnect.exereports FileVersion 1.0.1.0 and passed a launch/close smoke test.
Not fully tested
- Audible playback through physical speakers — the signal path is verified to reach endpoint mixes, but no human listening test was performed.
- Real-microphone Smart Volume Balance calibration — the measurement pipeline, persistence, and source-endpoint mapping are automated-tested, but microphone placement, room-noise rejection, and the resulting audible balance need a listening test.
- Long Bluetooth sessions — a Bluetooth destination may still need manual delay adjustment, and codec/transport latency remains unmeasured.
Known limitations
Loopback capture mirrors the mix on the source endpoint; it cannot route individual apps independently (that needs a virtual audio driver). The source always plays and cannot be delayed. See the README for details.
License
MIT © Kevin Pushka — https://github.com/jock1111/SpeakerConnect