- Let the impulse response filter signal for the frequency bin n of block m be f[n,m] = f_Real[n,m] + if_Imag[n,m].
- Let the input signal for the frequency bin n of block m be s[n,m] = s_Real[n,m] + is_Imag[n,m].
- Let the gain value for a filter block m be represented as K[m] (the envelope gain for block m).
XDSP Enveloping Overview
XDSP Enveloping Overview
In this topic, we will walk through the usage of enveloping as part of performing convolution on XBOX Series X|S devices using XDSP. This mechanism was developed as a flexible method for developers to alter a portion of the impulse response filter dynamically on the existing stream without reactivating a new stream. XDspSubmitCommandWithEnvelope API is provided which takes an envelopeBuffer containing gain values for each block of the impulse response filter in addition to the parameters provided to the XDspSubmitCommand API. The gain values are multipled with the corresponding blocks in the impulse response filter during the convolution process to provide the desired effect. The original impulse response filter is not modified during this process.
To better understand the enveloping mechanism, let us define the following variables in the frequency domain:
This buffer follows the impulse response filter in nature. For stereo impulse response, the gain values for the entire left channel are followed by the gain values for the entire right channel in the same way as the left channel impulse response is followed by the right channel impulse response.
For a mono impulse response, the same gain values are applied to both the left and right channels of a stereo input signal.
Last modified on August 20, 2026
Related topics
XDspSubmitCommandWithEnvelopeXDspConnectXDspSubmitCommandXDspConnectWithMaximumStreamLimitXDSP overview