Skip to content

Speaker Connect v1.0.1 - Settings Persistence Patch

Latest

Choose a tag to compare

@jock1111 jock1111 released this 10 Nov 00:29

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

  1. Extract the ZIP to any folder.
  2. Run SpeakerConnect.exe.
  3. 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.json data is imported once into device-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.exe reports 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