fix(instrument_drop): narrow FX hotspot to tcp.fx/mcp.fx, not bare tcp/mcp (S-VIEW-BUG-1)
This commit is contained in:
@@ -40,11 +40,15 @@ std::string buildInstrumentDropChunk(const std::string& sampleId) {
|
||||
}
|
||||
|
||||
bool infoNamesFxHotspot(const std::string& info) {
|
||||
// See the header contract. The FX-chain / floating-FX windows report "fx_*"; the track /
|
||||
// mixer panel that carries the FX button reports "tcp*" / "mcp*". Prefix-match all three —
|
||||
// the TCP/MCP surfaces are the fix for S-VIEW-BUG-1 (the "fx_"-only predicate missed them).
|
||||
// See the header contract. Two documented FX-bearing surfaces (SDK §GetThingFromPoint):
|
||||
// "fx_chain" / "fx_N" — the FX-chain and floating-FX windows.
|
||||
// "tcp.fx" / "mcp.fx" — the TCP / MCP FX button specifically.
|
||||
// Bare "tcp" / "mcp" and any other "tcp.*" / "mcp.*" sub-element (e.g. "tcp.mute",
|
||||
// "tcp.vol") are track-panel hits that are NOT on the FX button — those must not trigger
|
||||
// an instrument drop. Exact-string match for the two .fx tokens; prefix-match for fx_.
|
||||
if (info == "tcp.fx" || info == "mcp.fx") return true;
|
||||
auto startsWith = [&info](const char* p) { return info.rfind(p, 0) == 0; };
|
||||
return startsWith("fx_") || startsWith("tcp") || startsWith("mcp");
|
||||
return startsWith("fx_");
|
||||
}
|
||||
|
||||
std::string encodeBase64(const std::vector<std::uint8_t>& bytes) {
|
||||
|
||||
Reference in New Issue
Block a user