Sitar118 Claude Sonnet 4.6 commited on
Commit
2c0ae05
·
1 Parent(s): a8f4396

task: Sprint 5 — route audio through in-process plugin for SAFE plugins

Browse files

Pro-Q 4 spectrum shows no signal because audio goes through Helper instance
while GUI belongs to in-process instance. Fix: call inProcessPlugin->processBlock()
directly in processBlock() when safe plugin is loaded.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

Files changed (1) hide show
  1. SYNC.md +47 -1
SYNC.md CHANGED
@@ -28,7 +28,53 @@ STATUS: no pending questions
28
  > Read this at the start of every coding session.
29
 
30
  ```
31
- STATUS: no pending messages
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
32
 
33
  Last (2026-05-17): Sprint 4 regression fixed. PluginBridgeEditor.mm was reverted
34
  to CALayerHost (FAILED-APPROACHES #10 — never works in Ableton). Restored from
 
28
  > Read this at the start of every coding session.
29
 
30
  ```
31
+ STATUS: TASK READY — Sprint 5
32
+
33
+ TASK: Route audio through in-process plugin for SAFE plugins (fixes spectrum analyzers)
34
+
35
+ PROBLEM (verified on Mac 2026-05-17):
36
+ Pro-Q 4 spectrum analyzer shows no signal inside PluginBridge.
37
+ Root cause: two separate plugin instances are running —
38
+ - Helper process instance → handles audio (but has no GUI)
39
+ - In-process instance → provides GUI only (but never sees audio)
40
+ Pro-Q 4's spectrum belongs to the in-process GUI instance, so it stays empty.
41
+ The AudioAnalyser MCP tool confirms audio IS flowing (returned live LUFS/FFT data).
42
+
43
+ FIX — only touch PluginBridgeProcessor.cpp (and .h if needed):
44
+ In processBlock(), check if a safe in-process plugin is loaded.
45
+ If yes → call inProcessPlugin->processBlock(buffer, midiMessages) directly.
46
+ If no (unsafe, Helper-only) → keep existing shm path unchanged.
47
+
48
+ Pseudocode:
49
+ if (inProcessPlugin != nullptr)
50
+ inProcessPlugin->processBlock(buffer, midiMessages);
51
+ else
52
+ // existing shm write → Helper → shm readOutput path
53
+
54
+ The in-process plugin is already loaded (loadInProcessPlugin runs for SAFE plugins).
55
+ You are NOT changing when it loads — only adding the audio call in processBlock.
56
+
57
+ SCOPE — only these files:
58
+ TOUCH: PluginBridgeProcessor.cpp (processBlock change, ~5 lines)
59
+ PluginBridgeProcessor.h (only if inProcessPlugin member needs exposing)
60
+ DO NOT TOUCH:
61
+ PluginBridgeEditor.mm ← LOCKED
62
+ PluginPickerComponent.mm ← LOCKED
63
+ HelperPluginHost.mm ← LOCKED
64
+ HelperConnection.cpp ← LOCKED
65
+ CMakeLists.txt ← no new files, no changes needed
66
+
67
+ VERIFY before pushing:
68
+ - Does inProcessPlugin->processBlock() exist in JUCE AudioPluginInstance? YES —
69
+ it inherits from AudioProcessor which has processBlock(AudioBuffer&, MidiBuffer&)
70
+ - Helper still runs for safe plugins (needed for MCP param read/write via Helper IPC)
71
+ Do NOT remove the Helper spawn or shm path — just skip the shm audio write when
72
+ in-process plugin is available.
73
+ - Do NOT remove PBLOG calls.
74
+
75
+ EXPECTED RESULT after fix:
76
+ Pro-Q 4 spectrum analyzer shows live audio. EQ curve interactive.
77
+ get_analysis MCP tool still works (AudioAnalyser runs on same buffer).
78
 
79
  Last (2026-05-17): Sprint 4 regression fixed. PluginBridgeEditor.mm was reverted
80
  to CALayerHost (FAILED-APPROACHES #10 — never works in Ableton). Restored from