New user-facing features:
* Recording. Dedicated Record menu (Alt+O — moved from Alt+R to
avoid clashing with the Receive audio checkbox), Start/Stop on
Ctrl+R, settings dialog, per-profile source / format / bit-depth /
channel-mode / folder. Three source modes (received only, sent
only, both). Files are crash-resilient — a process crash
mid-recording leaves a playable file containing everything up to
the last header refresh (~5 seconds).
* Four output formats, all functional:
- WAV: 16/24-bit PCM or 32-bit float, custom writer with
periodic RIFF re-patching.
- MP3: LAME 128–320 kbps CBR (via NAudio.Lame).
- OGG-Opus: 96–256 kbps VBR (via Concentus.Oggfile, reusing the
Concentus encoder from the wire path).
- FLAC: 16/24-bit lossless (via CUETools.Codecs.FLAKE — pure
managed, no native DLL).
* Recording start/stop sound cues. record start.wav and
record stop.wav play around the recording transition. Played via
System.Media.SoundPlayer to the default Windows output, separate
from the recording pipeline so a normal recording does not contain
the cue.
* Per-cue Preferences. The old single "Mute connect/disconnect
sounds" checkbox is replaced by a CheckedListBox: Connect /
Disconnect / Recording start / Recording stop. Old profiles with
the legacy MuteConnectionCues=true are honoured on first load via
a migration path in the new Load* helpers.
* Receiver-side drift compensation switched from discrete
single-frame splices to a continuous WdlResampler at a smoothed
rate ratio. SessionPlayout.cs rewrite.
Diagnostics (only active with Enable logs ticked):
* Per-stage discontinuity probes — sender raw capture (per backend,
PushModeWasapi + Asio both wired), sender pre-encode (now per
lane in BothIndependent, fixing a cross-stream artefact), receiver
post-decode, post-ring, post-resampler.
* Wire-level packet sequence tracking on each PCM stream — in-order
/ missed / reordered / duplicated counts in the diag log.
* Clipped-sample delta in the diag log.
* New AudioStepProbe in RemSound.Core with per-channel scan helper.
UI changes:
* Record menu uses Alt+O (Rec&ord). Inside the menu, item mnemonics
unchanged (S / T / O / C).
* Auto-tune interval combo label is mode-aware: "Auto-tune latency
interval" in classic modes, "Auto-tune interval — WASAPI and ASIO"
in BothIndependent. The combo's Enabled state now follows EITHER
lane's auto-tune checkbox (was only the WASAPI one — bug).
Wire format and audio pipeline unchanged from v1.1 — v1.1 and v1.2
peers interoperate.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
45 lines
1.0 KiB
Plaintext
45 lines
1.0 KiB
Plaintext
# Build output
|
|
bin/
|
|
obj/
|
|
dist/
|
|
|
|
# Local publish folder — used for hand-testing and for the self-updater's "_update" staging
|
|
# area. Release artefacts ship via the dist/ zip attached to the GitHub release; the publish
|
|
# folder is regenerated by build-release.ps1 from the source on every release.
|
|
publish/
|
|
|
|
# AI interaction preferences (project-local file used while authoring the source, not
|
|
# relevant to anyone cloning the repo).
|
|
CLAUDE.md
|
|
|
|
# Dev notes — running development chronology and per-investigation plans. Useful locally
|
|
# for the author; not intended for the public repo.
|
|
HANDOVER.md
|
|
PLAN-*.md
|
|
|
|
# IDE / editor
|
|
.vs/
|
|
.vscode/
|
|
.idea/
|
|
*.user
|
|
*.suo
|
|
|
|
# OS
|
|
Thumbs.db
|
|
.DS_Store
|
|
|
|
# Audio-editor sidecar files. Sony / Magix Sound Forge writes a `.sfk` peak-cache file
|
|
# next to every `.wav` it touches; these are pure metadata, regenerated on demand by the
|
|
# editor, and shouldn't be in source control alongside the cue-sound wavs themselves.
|
|
*.sfk
|
|
|
|
# Misc
|
|
*.log
|
|
*.tmp
|
|
*.tmp.*
|
|
*.swp
|
|
|
|
# Tokens / secrets — these should never be checked in
|
|
.gh-token.txt
|
|
gh-token.txt
|