A quick look at the NDS/3DS sound quality

2021-12-05

Introduction

This blog post mostly discuss about the objective sound quality of PCM sampled audio on NDS and 3DS platform, but the same conclusion applies to synthesized audio as well.

Upon a quick standard audio quality test with 44100 Hz test vectors, the following results are obtained:

Test methods are listed as footnotes at the end of this blog. Moonshell 2 is used on NDSL and NDSi, and the ctrmus is used on 2DS. The DSi sound app and 3DS sound app doesn't support wav format so they are not used. But the DSi sound app does have something to offer (even though it only supports aac) and will be mentioned later.

So this is quite bad. But how? Is there anyway we could improve that? Yes, but actually no, as we will see.

Sample Rate

The first common issue causing audio quality degradation on all 3 devices is the sample rate. Typical audio files have a sample rate of 44.1kHz (CD standard) or 48kHz (typical PC and DSP system sample rate). Sound systems are also tailored to support these sample rates. But for historical reasons, NDS/3DS doesn't use any of these sample rates. Instead, the native sample rate of NDS/3DS is approximately 32728.5 Hz. This comes from the system clock. NDS uses a 66 MHz core clock, or precisely 67027964 Hz. Both the audio clock and video clock are divided down from that clock. The audio sample rate, is then 67027964 / 2048 ~ 32728.5 Hz.

This causes several issues. The first being the frequency response. Given the sample rate, the nyquist frequency would be only ~16kHz, as a result it won't be able to playback frequencies above 16kHz at all. Based on the measurement, the -3dB bandwidth of the output low pass filter is set to only about 10kHz. As a result, good bye high freq.