Found something that works! Seems that the key is to avoid connecting OBS through PipeWire...at all. On most rigs, that probably means, "direct from OBS to hardware," not to a virtual device because those *must* be PW, using OBS's own settings to do it, and never messing with those connections outside of OBS. (like a DAW or plugin host loading a session file that happens to include OBS's connections)
Even if you use PipeWire to put the same connection back, it *still* has the same problem described above. If you've made that mistake, or can't avoid it, the fix then is to either restart OBS, or deconfigure and reconfigure its Audio settings and all that that erases in other places too. So it's best to start the DAW or plugin host first, get that settled how it's going to be, and THEN start OBS.
This is also true in the latest v31 release, so it's not a v32 regression. Given that, I wouldn't be surprised if *every* version of OBS does this.
So, here's how to get some external processing in OBS, with PipeWire, without a decade-too-low anti-aliasing filter:
As you can see, it makes heavy use of the "monitor" loopbacks that the operating system creates for every output.
- Send the external plugin(s) (in my case, there's only one: the "LSP Delay Compensator Stereo" towards the top left) to a physical sound card that's not wired to anything.
- Finally a use for the onboard audio chip! Or a cheap USB thing that barely works. It doesn't matter how terrible it is, or even if the analog side *is* in fact broken somehow, because the operating system copies the digital data straight across before it even goes to the device at all. It only needs to be "something" that satisfies the OS.
- Connect OBS's Desktop or Output Capture to the "monitor" of that same device.
- It's not a Mic or Input Capture anymore, because OBS is now listening to the loopback of an output.
- If you want OBS's Monitor to go to multiple places like I do, send it directly to one of them, and have the plugin host connect the "monitor" of that one to the other(s).
- I intentionally have my headphones last in that chain, so I can hear directly that all of it works.
- No need to continue it as a chain. The last link as shown here can fan out to everything else.
Whew! All that because:
- OBS itself doesn't have an audio delay plugin. It has a Sync Delay, but that happens after the Monitor taps off, so it's still wrong for the operator. Doing it as shown here, with a delay before OBS at all, and OBS set for zero Sync Delay, fixes both instead of just one.
- OBS only has one physical audio output, and it can only go to a single device. Previous versions of Ubuntu (with PulseAudio and JACK separately) had an option in PA to create a virtual device that goes to all outputs, and that was nice. Send OBS to that, and it just works. But 24.04 doesn't have that anymore, thus the *output* side of the diagram here, and point #3 in the previous list.
I'm not looking forward to the next rig that I need to update, which needs to record a video with 6 different stereo soundtracks that all come from a DAW. I hope I can find a way to do that without absolutely requiring that many *physical* sound cards!