Multi-track + shaped/raw recording (per-peer split tracks) — held for next release
Recording Settings gains two per-profile toggles (Ed's request): * "Split recording into separate tracks" — each recording becomes a folder with one file per connected peer (their received audio only) plus one for your own send. * "Bypass pan and EQ when recording" — record the RAW audio (before pan/EQ) instead of the shaped audio you hear; applies to single and split. Engine: a per-peer record tap in SessionPlayout hands each peer's block to the recorder RAW (before pan/EQ) or SHAPED (after) per the bypass flag; PlayoutEngine propagates the tap to all sessions (+ inherits on reconnect) and fires OnRecordBlockComplete each render; AudioReceiver exposes SetPeerRecordTap / OnRecordBlockComplete. AudioRecorder now accepts an explicit path and exposes ExtensionFor. RecordingController composes one AudioRecorder per track: multi-track = a recorder per connected peer + a "me" recorder; single-track shaped = the existing mixed tap; single-track raw (bypass) = sum each peer's raw block per render, flushed on the block boundary. Naming (Ed's scheme, sortable): <recordings>/<yyyy-MM-dd>/ then, single-track, "<HH-mm-ss> RemSound recording.<ext>"; multi-track, a folder "<HH-mm-ss> RemSound recording multi track/" containing "<machine name> <HH-mm-ss>.<ext>" per peer (name or IP) and for your own send. Known edge (noted): a peer using sender-side BothIndependent (two lanes) records both lanes to one file in a split recording; single-track bypass sums per render in the Mixed path. Off by default (both toggles unticked = today's behaviour). Builds clean; pending Ed's hands-on test. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 4.8
parent
703e6a022d
commit
de55230048
@@ -100,6 +100,16 @@ public sealed class RecordingSettings
|
||||
/// machine, the recorder falls back to the default and notes it in the diagnostics.</summary>
|
||||
public string? Folder { get; set; }
|
||||
|
||||
/// <summary>When true, a recording is written as a FOLDER of separate tracks instead of one mixed
|
||||
/// file: one file per connected peer (only that peer's received audio) plus one file for your own
|
||||
/// sent audio. Off by default. (Ed's multi-track request.)</summary>
|
||||
public bool SplitTracks { get; set; }
|
||||
|
||||
/// <summary>When true, per-peer pan and EQ are BYPASSED for the recording — it captures the raw,
|
||||
/// unshaped audio even though you still hear the shaped version live. When false (default), your
|
||||
/// pan/EQ are baked into the recording (and on a split recording, into each peer's own track).</summary>
|
||||
public bool BypassShaping { get; set; }
|
||||
|
||||
public RecordingSettings Clone() => new()
|
||||
{
|
||||
Source = Source,
|
||||
@@ -111,6 +121,8 @@ public sealed class RecordingSettings
|
||||
FlacBitsPerSample = FlacBitsPerSample,
|
||||
FlacCompressionLevel = FlacCompressionLevel,
|
||||
Folder = Folder,
|
||||
SplitTracks = SplitTracks,
|
||||
BypassShaping = BypassShaping,
|
||||
};
|
||||
|
||||
/// <summary>Default folder path used when <see cref="Folder"/> is blank. Computed at
|
||||
|
||||
Reference in New Issue
Block a user