Audacity Recordings with MME (or DirectSound) vs. WASAPI at Different Sample Rates
The "sound card" is the DA2USB, the Signal source is very special and precise digital audio signal generator. The OS is Windows 10 Professional, the Audacity version is 2.1.2 (all 2.1.x, even a 2.1.3 nightly build have been tested).
The problem is that Audacity doesn't want to connect in WASAPI-mode at 96 kHz to the USB interface while at 48 kHz it connects and works perfectly.
For all 5 recordings:
- Signal source: Two 4 kHz tones, 24 bit, both channels in phase, digitally generated
- Right channel peak value: 0x00007e (-96.40 dB FS, 6 dB below the 16 bit quantization threshold)
- Left channel peak value: 0x0004f5 (-76.40 dB FS, 20 dB more than right channel)
- All time scales are identical
- All project rates set to the actual sample rate
- In order to make signals below the 16 bit quantization threshold as visible as possible, Audacity's vertical scale was as much as possible expanded on a 3480 x 2160 pixel screen. Afterwarts the 2160 pixel high screenshots were cropped to a reasonable height.
Overview:
- 48 kHz, WASAPI: This recording is simply perfect. The right channel's sine wave amplitude is below the 16 bit quantization threshold but even though it is bit-precisely recorded.
- 48 kHz, MME: 16 bit recording only with (obviously) some dithering noise added. I couldn't find how to stop that stupid dithering noise, particularly not in Preferences -> Quality.
- 96 kHz, WASAPI: Full failure, nothing to add.
- 96 kHz, Imported WAV-File: This import, recorded with a different program, is shown here just in order to prove that the interface works correctly.
- 96 kHz, MME: Works, 96 kHz with 16 bit only. Also the same stupid dithering.
- 192 kHz, MME: Just for completeness that the interface works here, too. But the source's sample width is in this case 16 bit only.
- 96 kHz, MME, Low-Pass Filtered: Interesting observation: Dithering must have taken place before truncation to 16 bit!
- 192 kHz, MME, Test Signal 0 to 90 kHz: This test signal was recorded in order to prove that Adacity in MME mode able to work correctly at 192 kHz.
48 kHz, WASAPI
This recording is simply perfect. The right channel's sine wave amplitude is below the 16 bit quantization threshold but even though it is bit-precisely recorded.
48 kHz, MME
16 bit recording only with (obviously) some dithering noise added. I couldn't find how to stop that stupid dithering noise, particularly not in Preferences -> Quality.
96 kHz, WASAPI
Nothing to add.
96 kHz, Imported WAV-File from a Primitive Self-Written Recording Program
This file is imported to, but not recorded by Audacity. The recording program used is a very simple test program based on DirectSound. This import is shown here just in order to prove that the interface works correctly.
96 kHz, MME
Works, 96 kHz with 16 bit only. Also the same stupid dithering.
192 kHz, MME
Just for completeness that the interface works here, too. But the source's sample width is 16 bit only.
96 kHz, MME, Low-Pass Filtered
An interesting observation: I filtered the 96 kHz, MME recording above with a 5 kHz low-pass filter. The result shows that in the right channel the sub-16-bit information is still present. That means that dithering must have taken place before truncation to 16 bit! That must either have happenet somwehere in Windows or in Audacity. I suspect Windows.
192 kHz, MME, Test Signal 0 to 90 kHz
The following test signal was recorded in order to prove that Audacity in MME mode at 192 kHz sample and project rate is able to work correctly. The background it is that I heard (resp. read) that with MME under no circumstances sample rates higher than 44100 Hz are possible. The signal is generated by my digital audio sine wave generator which it is set up and operated as follows:
- Both channels set do 90 % full scale (peak values of 0x7333)
- Start with 0 Hz
- Frequency steps switched by hand, roughly every 600 ms
- Left channel starts at 90°, right channel at 0°, i.e., the left channel's start value is a +90% FS DC-signal
- 10 frequencies from 0 to 10 kHz in steps of 1 kHz
- 8 frequencies from 20 to 90 kHz in steps of 10 kHz
Between second 13.1 and the end only the 90 kHz tone is recorded.
You can download the 16 bit WAV file here: Rec_MME_192_0-90kHz.wav. (11.7 MByte, 16 seconds approx.)
This is the screenshot, made at the and of the recording session (note the start with a DC-signal):
A second experiment on Windows XP and Audacity 2.1.0 showed an identical result.
Uwe Beis - June 7th, 2016