Impulse response of Gaussian interpolation

This is an archive of a topic from NESdev BBS, taken in mid-October 2019 before a server upgrade.
View original topic
Impulse response of Gaussian interpolation
by on (#67994)
So the DSP does some sort of Gaussian interpolation on the output of the BRR decoder, which includes a "muffling" or "low-pass" characteristic. What's the impulse response of this? For example, if I have a sample that decodes to [... 0 0 0 0 0 16384 0 0 0 0 0 ...], what's its output?

This could be used for two things:
  1. Applying this impulse response on samples to get a more accurate SNES-style sound when using SNESSoR-ripped waves in generic trackers
  2. Writing a BRR converter that applies the opposite impulse response (e.g. with a Wiener deconvolution) so that the SNES's output sounds like the more common cubic interpolation used in generic trackers, in turn so that conversion from MOD/XM will sound slightly less muffled

by on (#68004)
Unfortunately, there are two problems:
1- BRR can move the poles around from one 16-sample block to the next. Each time the reconstruction filter changes, we can't use deconvolution to sharpen things. That said, the non-trivial ones are just a 2 or 3 tap IIR filter.
2- the exponential notation xxxx * 2^yyyy is a non-linear stage, which also interferes with deconvolution.

by on (#68005)
I think tepples meant the 4-tap gaussian interpolation, not the BRR decoding. I really doubt though that anything useful could be achieved, considering that the compensated samples will then be BRR-encoded, and thus lose most of the fine-tuning (since the low-pass effect of guassian interpolation is quite minor).

by on (#68006)
lidnariq wrote:
Unfortunately, there are two problems:
1- BRR can move the poles around from one 16-sample block to the next. Each time the reconstruction filter changes, we can't use deconvolution to sharpen things. That said, the non-trivial ones are just a 2 or 3 tap IIR filter.

As I understand it, the DSP applies the 4-tap Gaussian interpolation after BRR decoding, so on the encoder side, sharpening would be applied before BRR encoding. If I know the impulse response of the 4-tap Gaussian filter, I can compute the difference between it and the 4-tap cubic filter that MPT uses.

For example, cubic 2x upsampling of a waveform [0 0 16 0 0] results in [0 -1 0 9 16 9 0 -1 0].

"Quite minor"? Some people in the FM vs. PCM topic would beg to differ.