Jump to content
IGNORED

MQA technical analysis


mansr
 Share

Recommended Posts

As we know, the Bluesound software contains an MQA decoder. All the MQA code resides in a shared library, libbluos_ssc.so, which is called by various other parts of the playback software. There are three main parts to the library: decode, render, and preserve.

 

Decode

The decode portion accepts audio data and outputs decoded data at twice the sample rate of the input. It also provides feedback regarding the MQA status of the data being processed: none, MQA (green), or MQA Studio (blue). Non-MQA input is also upsampled to double rate. I speculate that this corresponds to the MQA Core decoding done by the Tidal player.

 

Render

The render stage takes the output of the decode stage and upsamples it further. Gain can also be applied here. Again, non-MQA input is accepted.

 

Preserve

This function appears to transfer some MQA signal encoded in the LSB from one audio stream to another. The Bluesound player uses it together with software volume and tone controls between the decode and render stages.

 

Having deduced the programming interface of the library, I wrote some simple test programs to process audio files and save the output. Attached below is a snippet from the output of running the decoder on the 2L-048 sample (recorded at 96 kHz). I'd be thankful if someone who has an MQA DAC could play it and report whether the indicator LED comes on.

2L-048-mqadec.zip

Link to comment
Share on other sites

Having deduced the programming interface of the library, I wrote some simple test programs to process audio files and save the output. Attached below is a snippet from the output of running the decoder on the 2L-048 sample (recorded at 96 kHz). I'd be thankful if someone who has an MQA DAC could play it and report whether the indicator LED comes on.

 

What happens if you just use the default ALSA plugin setup and store the output?

 

No blue light on Meridian DAC with this file.

Signalyst - Developer of HQPlayer

Pulse & Fidelity - Software Defined Amplifiers

Link to comment
Share on other sites

What happens if you just use the default ALSA plugin setup and store the output?

 

It's not all done with ALSA plugins. That was my mistake.

 

No blue light on Meridian DAC with this file.

 

Does it light up when using the Tidal software decoder?

Link to comment
Share on other sites

Does it light up when using the Tidal software decoder?

 

Well, it lights up with Tidal player, but Tidal application detects the DAC and forces the hardware decoding. So the driver is indicating 48k sampling rate when playing MQA track... Regardless if the pass-through setting is enabled or disabled in the Tidal application.

Signalyst - Developer of HQPlayer

Pulse & Fidelity - Software Defined Amplifiers

Link to comment
Share on other sites

Well, it lights up with Tidal player, but Tidal application detects the DAC and forces the hardware decoding. So the driver is indicating 48k sampling rate when playing MQA track... Regardless if the pass-through setting is enabled or disabled in the Tidal application.

 

No way to force software decoding in Tidal?

 

Would you be able to capture a short sample of Tidal passthrough and software decode of the same track? It would be most helpful if you, or someone else, could.

Link to comment
Share on other sites

Here's spectrogram of digital capture of the Tidal software decoded 2L-048 test track. I tried to use same spectrogram parameters you used before.

 

2L-048-MQA-decode-trimmed-left.png

 

Here's spectrogram of the difference to the original, palette switched to highcolor which I mostly use to make the difference better visible.

 

2L-048-MQA-decode-difference-left-h.png

 

Looking at the background noise from the spectrums, there's about 6 dB increase in background noise in MQA version, thus a 6 dB drop in the SNR.

Signalyst - Developer of HQPlayer

Pulse & Fidelity - Software Defined Amplifiers

Link to comment
Share on other sites

Well, it lights up with Tidal player, but Tidal application detects the DAC and forces the hardware decoding. So the driver is indicating 48k sampling rate when playing MQA track... Regardless if the pass-through setting is enabled or disabled in the Tidal application.

 

If you play the captured software-decoded file, does the Explorer indicate MQA? Is it supposed to do this?

Link to comment
Share on other sites

If you play the captured software-decoded file, does the Explorer indicate MQA? Is it supposed to do this?

You mean the one in first post ? Blue light doesn't lit up with that one on my Explorer. If I capture something from Tidal and play it in Foobar mqa indicator does lit up

Link to comment
Share on other sites

If you play the captured software-decoded file, does the Explorer indicate MQA? Is it supposed to do this?

 

No it doesn't, it plays it just as it would play any other 96k file. I don't think there is supposed to be any difference...

 

I'll make some analog recordings today in different ways...

Signalyst - Developer of HQPlayer

Pulse & Fidelity - Software Defined Amplifiers

Link to comment
Share on other sites

You mean the one in first post ? Blue light doesn't lit up with that one on my Explorer. If I capture something from Tidal and play it in Foobar mqa indicator does lit up

 

You mean capture an MQA pass-through from Tidal? I'd expect that to work.

Link to comment
Share on other sites

Since I'm now confident the decoder is working correctly, here's a spectrum plot of 2L-048:

2L-048-mqa.png

 

Here we can see that the decoding process removes the characteristic hump and restores some of the high-frequency content. In this plot, the graphs start diverging noticeably around 30 kHz, the decoded MQA having somewhat higher noise level.

 

Spectrogram of the aligned difference:

2L-048-diff-spg.png

 

The larger differences correlate with the louder portions of the audio.

 

This is the difference spectrum of the loud portion from 190 to 250 seconds:

2L-048-diff-loud.png

 

Same thing with linear frequency scale:

2L-048-diff-loud-lin.png

 

Difference spectrum of the silence at the end:

2L-048-diff-silence.png

 

And again with linear frequency scale:

2L-048-diff-silence-lin.png

Link to comment
Share on other sites

So, does the blusound decoder include a renderer? Will it unfold a 24/48 file to 24/192? Since you have detected an activation bitsteam in the least significant bits, that implies that it is used to switch the renderer on and perhaps apply a specific filter profile. That last stage is of import to those of us with the PWM dacs that currently do not support blusound, since Roon can do the first unfold decode but not the final render with appropriately selected filter.

Link to comment
Share on other sites

So, does the blusound decoder include a renderer? Will it unfold a 24/48 file to 24/192? Since you have detected an activation bitsteam in the least significant bits, that implies that it is used to switch the renderer on and perhaps apply a specific filter profile. That last stage is of import to those of us with the PWM dacs that currently do not support blusound, since Roon can do the first unfold decode but not the final render with appropriately selected filter.

 

It includes what appears to be a renderer. There obviously isn't any reference available to compare the output against.

Link to comment
Share on other sites

Here's same track, recorded at 192k sampling rate from line output of the Explorer2. I tried to get as low noise output from the DAC as possible, using iFi iUSB as a power supply. There's still some amount of USB packet noise (8 kHz intervals) visible.

 

Original 96k file:

2L-048-analog-original-left.png

 

MQA file decoded by the DAC:

2L-048-analog-mqa-left.png

 

For comparison, here is self-noise of the ADC with cable just disconnected:

adc-silence.png

Signalyst - Developer of HQPlayer

Pulse & Fidelity - Software Defined Amplifiers

Link to comment
Share on other sites

Here's same track, recorded at 192k sampling rate from line output of the Explorer2. I tried to get as low noise output from the DAC as possible, using iFi iUSB as a power supply. There's still some amount of USB packet noise (8 kHz intervals) visible.

 

Original 96k file:

[ATTACH=CONFIG]32541[/ATTACH]

 

MQA file decoded by the DAC:

[ATTACH=CONFIG]32539[/ATTACH]

 

Here's the average spectrum of what the Bluesound MQA renderer outputs:

 

2L-048-mqa-render.png

Link to comment
Share on other sites

Here's the average spectrum of what the Bluesound MQA renderer outputs:

 

[ATTACH=CONFIG]32543[/ATTACH]

 

So it largely matches. The average doesn't show noise increase at the bands where there is also music content, minimum spectrum would probably show that thing better.

 

I have a feeling that some regular hires files can trigger this rendering mode too. I have one regular hires FLAC that seems to trigger this noise and upsampling filter behavior (without the blue light though). Running that FLAC through upsampling before sending it to the DAC takes out the noise and makes it much quieter, and also removes the 30 kHz filter cut. So it seems like there are hires files that are sort of "encoded-decoded" MQA...

 

Seems like the 30 kHz cut-off is more on the rendering phase then. I really fail to see the point in this "rendering" part... The upsampling filter is really slow roll-off, so it leaks a lot of image above Nyquist, visible on tracks that really hit the Nyquist limit.

Signalyst - Developer of HQPlayer

Pulse & Fidelity - Software Defined Amplifiers

Link to comment
Share on other sites

I have a feeling that some regular hires files can trigger this rendering mode too. I have one regular hires FLAC that seems to trigger this noise and upsampling filter behavior (without the blue light though). Running that FLAC through upsampling before sending it to the DAC takes out the noise and makes it much quieter, and also removes the 30 kHz filter cut. So it seems like there are hires files that are sort of "encoded-decoded" MQA...

 

Does it have the bit pattern described above? What happens if you dither it to 22 bits or so? That ought to ruin any signatures the decoder is looking for.

 

Seems like the 30 kHz cut-off is more on the rendering phase then. I really fail to see the point in this "rendering" part... The upsampling filter is really slow roll-off, so it leaks a lot of image above Nyquist, visible on tracks that really hit the Nyquist limit.

 

I fail to see the point of any of it.

Link to comment
Share on other sites

I fail to see the point of any of it.

 

That's because you are blurry and need de-blurring.

One never knows, do one? - Fats Waller

The fairest thing we can experience is the mysterious. It is the fundamental emotion which stands at the cradle of true art and true science. - Einstein

Computer, Audirvana -> optical to EtherREGEN -> microRendu -> ISO Regen -> Pro-Ject Pre Box S2 DAC -> Spectral DMC-12 & DMA-150 -> Vandersteen 3A Signature.

Link to comment
Share on other sites

I have a feeling that some regular hires files can trigger this rendering mode too. I have one regular hires FLAC that seems to trigger this noise and upsampling filter behavior (without the blue light though). Running that FLAC through upsampling before sending it to the DAC takes out the noise and makes it much quieter, and also removes the 30 kHz filter cut. So it seems like there are hires files that are sort of "encoded-decoded" MQA...

 

I have only a rudimentary understanding of the analysis y'all have been doing but this paragraph struck me as odd. Wouldn't this suggest that the noise you are seeing with this MQA decode might be a factor of the track, and not be related to MQA at all. It seems that if you see this behavior with non-MQA content, it would be more likely to be due to some attribute of the track itself (that was carried over into the MQA version) than something inherent to MQA?

Link to comment
Share on other sites

By graphs above, looks like MQA work like 24 bit uncompressed format.

 

But MQA lossless or lossy?

 

I read about a probable "frequency-amplitude response correction", but real implementation of encoder/decoder is unknown.

AuI ConverteR 48x44 - HD audio converter/optimizer for DAC of high resolution files

ISO, DSF, DFF (1-bit/D64/128/256/512/1024), wav, flac, aiff, alac,  safe CD ripper to PCM/DSF,

Seamless Album Conversion, AIFF, WAV, FLAC, DSF metadata editor, Mac & Windows
Offline conversion save energy and nature

Link to comment
Share on other sites

I have only a rudimentary understanding of the analysis y'all have been doing but this paragraph struck me as odd. Wouldn't this suggest that the noise you are seeing with this MQA decode might be a factor of the track, and not be related to MQA at all. It seems that if you see this behavior with non-MQA content, it would be more likely to be due to some attribute of the track itself (that was carried over into the MQA version) than something inherent to MQA?

 

I took it to mean he's seeing the noise characteristic of the MQA renderer when playing some non-MQA 96 kHz files. No DAC I've ever seen normally generates such noise. Even the built-in upsamplers in the DAC chips are better than that.

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share



×
×
  • Create New...