I just disabled everything. Is this what you suggested? I had some progress with this. The recording seems flawless.
The monitor however still has issues that are fixed only by setting it to off and on again.
Starting obs with monitoring set to off and then setting it to one afterwards seems to work by the way.
View attachment 94637
Yep. Keep everything disabled that you don't use, and do everything on purpose. Don't just use what happens to work now and may not later because you don't understand what's available and might still be active somewhere. Explore the settings, in everything that you have: Windows itself, OBS, other apps, everything. Draw a diagram if it helps, including how each signal flows through all of that, and be agonizingly detailed with it. My more complicated rigs all have one.
OBS's Monitor has had a known issue for a long time. Lots of complaints, but still nothing has been done about it. The problem is that it drifts out of sync with everything else, and instead of getting back on sync before you notice, it expands the buffer...and expands the buffer...and expands the buffer...and... Pretty soon, it's completely worthless. The reason it gets out of sync in the first place is because it locks itself to the device's clock instead of OBS's master clock. If those clocks come from different sources, then the same nominal setting will drift like that.
The workaround is to disrupt the Monitor somehow, so the buffer resets, or send it to a device - physical or virtual - that uses the same clock as OBS so it doesn't drift. Physical devices are practically random as to where they get their clocks from, but virtual ones are usually the same as where OBS gets it. Then you can send that virtual device through some other software that has its own chance to get it right, and then to the hardware.
Disrupting the Monitor could be as simple as blinking the mute button, or changing the routing to not use the Monitor and changing it back, or completely removing and re-adding the source, though that last one is pretty drastic compared to what's really needed. If you have enough spare resources, you could have a separate copy of everything for each destination, and only blink the mute button for the Monitor copy.
For example, on one of my rigs, its only audio at all (except for a video file that is played directly in OBS) comes from a
physical console via a
USB line input. So I can afford to have 3 global sources all set to that same line-in. One goes to the stream and recording only (Output, Track 1), and the other two only go to the Monitor. One is mono, the other stereo. Then I have a pair of hotkeys to mute one and unmute the other, which gives me a convenient way to check the mix both ways without affecting the audience......and it also resets the Monitor as a side-effect.