refactor(capture): drop master scope; realtime taps selected track
Capture is now item + track only (master removed as a scope; still bypassed as out-of-scope chain). Realtime records the selected track's own output via per-track post-fader sends into a hidden temp track, fixing the silent file.
This commit is contained in:
+4
-15
@@ -55,9 +55,8 @@ SourceMode sourceModeForScope(CaptureScope scope) {
|
||||
switch (scope) {
|
||||
case CaptureScope::Item: return SourceMode::SelectedItems;
|
||||
case CaptureScope::Track: return SourceMode::SelectedTracks;
|
||||
case CaptureScope::Master: return SourceMode::MasterMix;
|
||||
}
|
||||
return SourceMode::MasterMix; // unreachable for a valid enum; fail to master
|
||||
return SourceMode::SelectedItems; // unreachable for a valid enum; fail closed
|
||||
}
|
||||
|
||||
RangeSource inferRangeSource(bool hasRazorArea) {
|
||||
@@ -84,12 +83,6 @@ FxBypassPlan fxBypassPlanFor(CaptureScope scope) {
|
||||
p.bypassAncestorFx = true;
|
||||
p.bypassMaster = true;
|
||||
return p;
|
||||
case CaptureScope::Master:
|
||||
// Master = whole chain. Bypass nothing.
|
||||
p.bypassSelfFx = false;
|
||||
p.bypassAncestorFx = false;
|
||||
p.bypassMaster = false;
|
||||
return p;
|
||||
}
|
||||
return p; // unreachable; bypass nothing (fail to full-chain, never over-bypass)
|
||||
}
|
||||
@@ -137,12 +130,13 @@ RazorRange razorUnionBounds(const std::vector<RazorRange>& ranges) {
|
||||
}
|
||||
|
||||
const std::vector<CaptureActionDef>& captureActionTable() {
|
||||
// Built once (function-local static): three SCOPE actions. Tail OFF for all
|
||||
// Built once (function-local static): two SCOPE actions. Tail OFF for all
|
||||
// (exact bounds). Ids are FOREVER-STABLE — never edit a shipped string. Each
|
||||
// action infers its range (razor-else-time) at fire time and enforces its
|
||||
// FX-scope invariant via fxBypassPlanFor. The M7 CAPTURE_TRACKS_WET /
|
||||
// CAPTURE_ITEMS_WET / CAPTURE_RAZOR_WET ids are RETIRED (mirror-unregistered in
|
||||
// main.cpp); CAPTURE_MASTER keeps its shipped id string.
|
||||
// main.cpp); the CAPTURE_MASTER scope action is REMOVED (its id is likewise
|
||||
// mirror-unregistered) — to capture the master you render a track.
|
||||
static const std::vector<CaptureActionDef> table = {
|
||||
// Item scope — item/take FX only. NEW forever-stable id.
|
||||
{"CEREBELLUM_REASAMPLER_CAPTURE_ITEM",
|
||||
@@ -153,11 +147,6 @@ const std::vector<CaptureActionDef>& captureActionTable() {
|
||||
{"CEREBELLUM_REASAMPLER_CAPTURE_TRACK",
|
||||
"ReaSampler: capture selected track(s)", "track",
|
||||
CaptureScope::Track},
|
||||
|
||||
// Master scope — whole chain. Id string unchanged from M7 (already shipped).
|
||||
{"CEREBELLUM_REASAMPLER_CAPTURE_MASTER",
|
||||
"ReaSampler: capture master", "master",
|
||||
CaptureScope::Master},
|
||||
};
|
||||
return table;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user