DSP clock stops when volume is 0?

Hi, sorry if I missed an existing thread about this - didn’t find one.
I’m following the docs to do fade in/out on streaming sounds for music transitions:

var samples = SecondsToSamples(duration);
AssertOk(channel.getVolume(out var currentVolume));
AssertOk(channel.getDSPClock(out _, out var parentclock));
AssertOk(channel.addFadePoint(parentclock, currentVolume));
AssertOk(channel.addFadePoint(parentclock + samples, volume));

This generally seems to work, however it seems like if the stream channel’s volume reaches 0, the channel becomes replaced with a virtual silence DSP (visible in the core profiler) and the DSP clock stops ticking, so my attempts to fade back up from 0 don’t succeed.

Is this a correct understanding of what’s going on? Is there a workaround other than never fading volume down to 0?

It also appears that getVolume does not work when used with fade points - after using a fade point to drop the volume to 0.001 (working around this dsp clock bug), getVolume still seems to return a value of 1. So if I use getVolume as shown in the code snippet above, instead of a smooth fade I get a near instant ramp from the current fade point to 1.0.

It also appears that even if you have send DSPs configured to feed a channel or channelgroup’s unattenuated output to a return, the channels will be replaced with a virtual silence dsp if the main output volume is 0. This makes it seemingly impossible to capture the FFT spectrum of a channel or channelgroup if the player has muted game audio.