Bump to v1.5.0: cross-lane routing fix, recording double-tap fix, menu reorg
Bug fixes: * BothIndependent recording was double-tapped — when both WASAPI and ASIO outputs were ticked, recordings came out garbled and ~2x the expected duration. AudioRecorder now uses four per-lane rings (sent-wasapi, sent-asio, recv-wasapi, recv-asio) plus a writer- thread mix step that drains min(wasapi, asio) frames and sum-mixes with the soft-tanh limiter. Tap signatures gained a RenderRoute parameter; Mixed maps to the wasapi slot. * A peer announcing on the WASAPI lane was inaudible when the receiver only had an ASIO output ticked (and vice versa). The session opened, samples flowed into the SessionPlayout ring, but ReadForRoute(AsioLane) skipped any session whose Route was WasapiLane so nothing drained the ring. PlayoutEngine now tracks per-lane "is this lane backed by a device" via volatile bools settable through SetLaneActive(RenderRoute, bool), called from CompositeRenderBackend.SetOutputDevices whenever the device split changes. ReadForRoute admits orphan sessions when the other lane is inactive. Menu reorganisation: * New Options menu (Alt+O) holds Recording settings (Alt+S), Keyboard shortcuts (Alt+K, Ctrl+K), Startup behaviour (Alt+T), Preferences (Alt+P, Ctrl+P). Pre-v1.5 these were scattered across File menu, Record menu, and inside the Preferences dialog itself. * Record menu mnemonic moved from Alt+O to Alt+K, rendered as "Record (Alt+K)" so the chord is visible despite K not being a letter in "Record". Alt+R is taken by Receive audio. * File menu — new Recent profiles submenu (Alt+F, R) listing the five most-recently-opened profiles. Press 1..5 inside the submenu to jump to a slot. Missing files are skipped from the menu but kept in storage. * Rename current profile moves to Alt+M (was R), Minimise to tray moves to Alt+N (was M). * Lock to audio clock was Alt+K, now Alt+D. UX additions: * Ctrl+O = Open profile (matches the menu chord). * New global hotkey: Start / Stop recording. Pickable from Options -> Keyboard shortcuts. Unbound by default. Works system-wide. Wire format and audio pipeline unchanged from v1.4 — v1.4 and v1.5 peers interoperate. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 4.7
parent
b96ba82378
commit
4915a9afe1
+20
-21
@@ -1,37 +1,36 @@
|
||||
# RemSound v1.4
|
||||
# RemSound v1.5
|
||||
|
||||
Recording-settings dialog cleanup and a few mnemonic adjustments. No wire-format or audio-pipeline changes — v1.4 and v1.3 peers interoperate.
|
||||
Menu reorganisation plus two real bug fixes for BothIndependent mode. Wire format and audio pipeline are unchanged from v1.4 — v1.4 and v1.5 peers interoperate.
|
||||
|
||||
## Highlights
|
||||
## Bug fixes
|
||||
|
||||
### Recording settings dialog reorganised
|
||||
- **BothIndependent recording**: when both WASAPI and ASIO output devices were ticked, recordings came out garbled and roughly double the expected duration. The recording taps fired from both lanes independently and the writer thread appended both streams into a single ring as if they were sequential audio. The recorder now has per-lane rings and mixes them in the writer thread before handing the resulting per-direction stream to the file writer.
|
||||
- **A peer announcing on the WASAPI lane was inaudible when the receiver only had an ASIO output ticked** (and vice versa). The session was opened but its decoded samples sat in the SessionPlayout ring with nothing draining them. Sessions whose announced lane has no active output device now fall through to whichever lane IS being read — so a single ASIO output plays everyone, regardless of how each peer announced their stream.
|
||||
|
||||
- **Channel mode** is now its own dedicated listbox (**Alt+C**) instead of being folded into every attribute row. The per-format attribute lists shrink correspondingly:
|
||||
- **WAV** — 6 rows → **3** (16-bit PCM / 24-bit PCM / 32-bit float)
|
||||
- **MP3** — 8 rows → **4** (128 / 192 / 256 / 320 kbps CBR)
|
||||
- **OGG-Opus** — 8 rows → **4** (96 / 128 / 192 / 256 kbps VBR)
|
||||
- **FLAC** — 4 rows → **2** (16-bit / 24-bit)
|
||||
- **FLAC compression level** (0..8) now selectable in its own listbox (**Alt+L**). Previously hard-fixed at the libFLAC default of 5. The list is only shown when the file format is FLAC, with friendly tags on the endpoints (`0 — fastest encode, biggest file`, `5 — default (libFLAC reference)`, `8 — slowest encode, smallest file`). All levels produce bit-identical lossless audio — it's a pure encode-time vs file-size trade-off.
|
||||
## Menu reorganisation
|
||||
|
||||
### Record menu mnemonics
|
||||
- **New Options menu (Alt+O)** holds *Recording settings*, *Keyboard shortcuts*, *Startup behaviour*, and *Preferences*. Pre-v1.5 these were scattered across the File menu (Keyboard shortcuts, Preferences), the Record menu (Recording settings), and a button inside the Preferences dialog itself (Startup behaviour).
|
||||
- **Record menu mnemonic moves from Alt+O to Alt+K**. Rendered as "Record (Alt+K)" so the chord is visible despite K not being a letter in "Record". Alt+R is taken by the Receive audio checkbox; Alt+O has the natural home on the Options menu now.
|
||||
- **File menu — new Recent profiles submenu (Alt+F, R)**. Lists the five most-recently-opened profiles, newest first. Press 1..5 while the submenu is open to jump straight to a slot; arrow + Enter also works. Missing files (e.g. external drive unmounted) are skipped from the menu but kept in storage in case they come back.
|
||||
- **File menu — small mnemonic shuffle** to make room for Recent profiles: *Rename current profile* moves from Alt+M to Alt+M (was R), and *Minimise to tray* moves from M to **N**.
|
||||
- **Lock to audio clock** (Audio profile tab) was Alt+K; now **Alt+D** (the D from "au**d**io"). Top-level menus win Alt-letter dispatch on a Form, so Record taking Alt+K bumped the checkbox.
|
||||
|
||||
- **Start / Stop recording** is now `Alt+O, R` (was `Alt+O, S`). Matches the `Ctrl+R` global toggle so the same letter does the same job from either entry point. The underline stays on a literal *R* as the label flips between "Sta**r**t recording" and "Stop **r**ecording".
|
||||
- **Recording settings** is now `Alt+O, S` (was `Alt+O, T`). Reads more naturally now that the *R* slot is freed.
|
||||
- **Open folder** (`Alt+O, O`) and **Change folder** (`Alt+O, C`) unchanged.
|
||||
## UX additions
|
||||
|
||||
### Dialog mnemonic adjustment
|
||||
|
||||
- The **Cancel** button in the Recording settings dialog now uses **Alt+N** (`Ca&ncel`) rather than the conventional Alt+C, so the **Channels** listbox can take Alt+C as its natural letter. Esc still dismisses the dialog the way it always has.
|
||||
- **Ctrl+O** is now bound to Open profile (matches the menu chord). Previously the menu had no global shortcut.
|
||||
- **New global hotkey: Start / Stop recording.** Pickable from Options → Keyboard shortcuts. Unbound by default so it doesn't collide with anything on a fresh install. Works system-wide — RemSound doesn't need keyboard focus.
|
||||
|
||||
## Install
|
||||
|
||||
1. Download `RemSound-v1.4.zip` from this release.
|
||||
2. Extract somewhere with write permission (e.g. `C:\RemSound\`, `Documents\RemSound\`, etc.). Avoid `Program Files` unless you grant write permission so the self-updater can replace files in place.
|
||||
1. Download `RemSound-v1.5.zip` from this release.
|
||||
2. Extract somewhere with write permission (e.g. `C:\RemSound\`, `Documents\RemSound\`). Avoid `Program Files` unless you grant write permission so the self-updater can replace files in place.
|
||||
3. Run `RemSound.exe`. Allow on private networks when Windows Firewall prompts.
|
||||
4. Press F1 (or use the Help menu) for the user manual.
|
||||
|
||||
Requires the .NET 10 Desktop Runtime. If it's missing, Windows offers to fetch it on first launch.
|
||||
|
||||
## Upgrading from v1.3 inside a Dropbox folder
|
||||
## Upgrading from v1.3 / v1.4
|
||||
|
||||
Should work cleanly via Help → Check for updates. v1.3 introduced the hardened helper (60-second retry window, exit-code check, no silent rollback) so the Dropbox-lock window is no longer a problem. If you're on v1.0/v1.1/v1.2 in a Dropbox folder, see the v1.3 release notes for the one-time manual install steps — once on v1.3 or later, future auto-updates are reliable.
|
||||
If you installed RemSound inside a Dropbox-synced (or other file-sync) folder and your install is v1.0 / v1.1 / v1.2, see the [v1.3 release notes](https://github.com/Ednunp/RemSound/releases/tag/v1.3) for one-time manual install steps. From v1.3 onward Check-for-updates handles Dropbox correctly.
|
||||
|
||||
v1.3 and v1.4 users on any install location can use **Help → Check for updates** — the hardened updater in v1.3+ pulls v1.5 cleanly.
|
||||
|
||||
Reference in New Issue
Block a user