1) The raw api skips chunks/calls when the output device uses chunks less than 512 samples ( roughly 20% of the chunks are missing). The DSP however works well, and the sound isn't affected. I used FlexASIO for the tests, as it has configurable latency.
let me know how the test version goes. I would prefer to keep the api calls in a separate thread
Three parameters were in the mix when I was testing:
-plugin's processing time
-sample rate
-chunks size
The worst situation is slow processing time, high audio sample rate, small chunks size.
ThreadedBassRarely produces audio clicks, due to slow plugin processing time (but still can with ASIO).
Looses chunks on the way, if plugin processing is too slow.
Very solid with WSAPI, where no chunk size can be changed - no sound clicks or chunk drops, plenty of plugin processing time.
TestBassWorks very well, no chunk drops with ASIO, even at 19200sample rate, 128 samples per chunk, and a reasonable processing time (about millisecond or two).
If the plugin's processing becomes slow (due to multiple plugins), you can hear sound clicks (like on a vinyl or worse).
My feeling from the whole thing is that a combination of behaviors - TestBass for ASIO and ThreadedBass for WSAPI - can be a good fit, without having to choose between the two.
And another thing: the plugin is unaware, that it looses chunks, due to other active plugins. MB can measure the processing time of all plugins and write some log entry if execution time > 1000/(sampleRate/ChunkSize) [ms]