SPC: FIR filter confusion

This is an archive of a topic from NESdev BBS, taken in mid-October 2019 before a server upgrade.
View original topic
SPC: FIR filter confusion
by on (#33870)
I'm a little unclear on exactly when the FIR filter applies to echo playback. I thought that whatever is written to the echo ring buffer is after the filter has been applied, but now I'm thinking I'm wrong about that ... Anomie's doc could be a little more clear.

Here is my understanding of how everything works. Please let me know if I have things wrong or if I'm doing them right:

Code:
echo ring buffer --> FIR in

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

         FIR out --> *EVOL --\
                             |
All mixed voices --> *MVOL --+---> DAC

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

         FIR out --> *EFB  --\
                             |
EON mixed voices ------------+---> echo ring buffer


Thanks

by on (#33871)
Your diagram looks right. The echo ring buffer in RAM feeds a pair of samples to the 8-sample-pair FIR history buffer, then each FIR coefficient is combined with the corresponding pair in the history buffer, generating a pair of filtered echo samples which are mixed into output and also fed back to the ring buffer in RAM (along with voices selected by EON).

by on (#33872)
Excellent. Thanks a bunch.