Hello Jules and thanks again for all your suggestions, we are trying them all and we’ll be hammering on this till we’ll find a solution.
Asserts are and have been always enabled, none happened during the bug.
I recently enabled the debug logs, about the same time when I added the log in DSoundAudioIODevice::resync, but was unable to reproduce the issue since. I did not see the resync log since and all juce logs I see as logs are at the beginning (attached).
The output channels ARE enabled, I will try with them disabled to see if I can reproduce it that way (takes me a while to reproduce).
I would like to ask your opinion on the way we implemented around the AudioDeviceManager: There is only one instance of an AudioDeviceManager that is initialized once(in has IN and OUT channels). Anytime we need audio functionality, IN or OUT, we add a callback with addAudioCallback (we might use it with a AudioSourcePlayer or to record the sound, or to play our own sound) then remove the callback. There are maybe 5 -5 callback, one of which is always active, used to display in sound like in the demo (while debugging this I disabled activity in all of them). We never close the device or reinitialize it (we change the buffer size on it once at the beginning). This works great, except for the current bug. I was curious on your opinion on this however.
The second opinion I would like to ask is about the version of Juce. We are unfortunately still at version 1.53. I know this is not ideal, but it works for us for now. I was however still wondering if you think this is a major issue, if you have done major work on the audio or DSound part since. (I will get the current version and look for myself, but would appreciate your opinion too, I might not be able to tell if the changes are relevant or not).
Again thank you very much for all your help,