In my case I need the DSPs to run to fill the Push Stream, but this will probably be helpful at a later point in time.
Also I can further optimise this by fixing my “garbage” array permanently, that way there is no need to marshal that in every STREAMPROC callback.
One more thing: What happens if a playing channel “falls behind” or even stalls because of long running DSPs, will that be compensated for by requesting more data? I am asking because I noticed that the Push stream queue was gone after running this for a longer period of time.