First successful #VARMA test with small P, Q. (Follows about 25 unsuccessful tests.)
Audio attached has 3 parts, the first is the target sound (Y), the second is the input sound (X), the third is the VARMA model applied to X (normalized in volume) which should hopefully sound like Y.
P = 0 (one matrix for input mapping, no real moving average here...)
Q = 1 (one matrix for auto-regressive feedback)
D = 129 (number of dimensions for FFT vectors)
T = 18103 (number of input vectors)
Computed #SpectralRadius of the feedback matrix was 0.9144670749524257, less than 1 so it's stable (good).
The peak level of the output audio was 0.148676, significantly quieter than I expected (most of my previous tests using Python statsmodels VAR had gains around 1.0e+7 or so...).
More research on #VectorAutoRegression got me digging into #SpectralRadius which is the magnitude of the largest-magnitude #Eigenvalue. This is analogous to the pole radius in regular single variable #ZTransform representation: if it's less than 1 all should be fine, bigger than 1 and it becomes unstable.
So I'm now normalizing all the feedback coefficient matrices by the largest spectral radius among them and a bit more, so that the new largest radius is less than 1, and it seems stable even in the presence of morphing.
The attached is heavily dynamics compressed, as it was a bit peaky otherwise.
#VectorAutoRegression #SpectralRadius #eigenvalue #ZTransform