Page 1 of 19 1234511 ... LastLast
Results 1 to 25 of 475
  1. #1

    MQA technical analysis

    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.
    Attached Files Attached Files

  2. #2
    Masters Level Member
    Join Date
    Apr 2010
    Location
    Finland
    Posts
    8,192
    Blog Entries
    13
    Quote Originally Posted by mansr View Post
    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 - http://www.signalyst.com
    Developer of HQPlayer

  3. #3
    Quote Originally Posted by Miska View Post
    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.

    Quote Originally Posted by Miska View Post
    No blue light on Meridian DAC with this file.
    Does it light up when using the Tidal software decoder?

  4. #4
    Masters Level Member
    Join Date
    Apr 2010
    Location
    Finland
    Posts
    8,192
    Blog Entries
    13
    Quote Originally Posted by mansr View Post
    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 - http://www.signalyst.com
    Developer of HQPlayer

  5. #5
    Quote Originally Posted by Miska View Post
    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.

  6. #6
    Masters Level Member
    Join Date
    Apr 2010
    Location
    Finland
    Posts
    8,192
    Blog Entries
    13
    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 - http://www.signalyst.com
    Developer of HQPlayer

  7. #7
    Quote Originally Posted by Miska View Post
    Here's spectrogram of digital capture of the Tidal software decoded 2L-048 test track.
    Could you share that capture, please?

  8. #8
    Quote Originally Posted by mansr View Post
    Could you share that capture, please?
    With the exception of two short bursts in the first 0.2 seconds, my decoded file matches Miska's capture bit for bit. I guess that's some kind of success.

  9. #9
    Quote Originally Posted by Miska View Post
    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?

  10. #10
    Freshman Member
    Join Date
    Nov 2014
    Location
    Finland
    Posts
    48
    Quote Originally Posted by mansr View Post
    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

  11. #11
    Masters Level Member
    Join Date
    Apr 2010
    Location
    Finland
    Posts
    8,192
    Blog Entries
    13
    Quote Originally Posted by mansr View Post
    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 - http://www.signalyst.com
    Developer of HQPlayer

  12. #12
    Quote Originally Posted by mm67 View Post
    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.

  13. #13
    Freshman Member
    Join Date
    Nov 2014
    Location
    Finland
    Posts
    48
    Quote Originally Posted by mansr View Post
    You mean capture an MQA pass-through from Tidal? I'd expect that to work.
    That's what I meant, yes

  14. #14
    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

  15. #15
    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.

  16. #16
    Quote Originally Posted by scintilla View Post
    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.

  17. #17
    Masters Level Member
    Join Date
    Apr 2010
    Location
    Finland
    Posts
    8,192
    Blog Entries
    13
    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 - http://www.signalyst.com
    Developer of HQPlayer

  18. #18
    Quote Originally Posted by Miska View Post
    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:
    Click image for larger version. 

Name:	2L-048-analog-original-left.png 
Views:	232 
Size:	178.2 KB 
ID:	32541

    MQA file decoded by the DAC:
    Click image for larger version. 

Name:	2L-048-analog-mqa-left.png 
Views:	233 
Size:	179.9 KB 
ID:	32539
    Here's the average spectrum of what the Bluesound MQA renderer outputs:

    2l-048-mqa-render.png

  19. #19
    Masters Level Member
    Join Date
    Apr 2010
    Location
    Finland
    Posts
    8,192
    Blog Entries
    13
    Quote Originally Posted by mansr View Post
    Here's the average spectrum of what the Bluesound MQA renderer outputs:

    Click image for larger version. 

Name:	2L-048-mqa-render.png 
Views:	240 
Size:	94.0 KB 
ID:	32543
    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 - http://www.signalyst.com
    Developer of HQPlayer

  20. #20
    Quote Originally Posted by Miska View Post
    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.

    Quote Originally Posted by Miska View Post
    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.

  21. #21
    Señor Member Jud's Avatar
    Join Date
    Mar 2010
    Location
    Born in Bethlehem (PA)
    Posts
    13,730
    Blog Entries
    7
    Quote Originally Posted by mansr View Post
    I fail to see the point of any of it.
    That's because you are blurry and need de-blurring.
    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
    One never knows, do one? - Fats Waller

    MacBook Pro, A+ -> 2 Mapleshade Clearlink USB Plus flanking Regen (powered by LPS-1) -> iFi micro-iDSD -> Spectral DMC-12 & DMA-150 -> Vandersteen 3A Signature.

  22. #22
    Quote Originally Posted by Jud View Post
    That's because you are blurry and need de-blurring.
    Spoken like the BlurMeister, or is it De BlurMeister!
    Last edited by lmitche; 01-17-2017 at 08:51 PM.

  23. #23
    Quote Originally Posted by Miska View Post
    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?

  24. #24
    Yuri Korzunov, software developer audiventory's Avatar
    Join Date
    Jan 2011
    Location
    Russia
    Posts
    1,347
    Blog Entries
    7
    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
    DSF/DFF/ISO(DST) (1-bit/D64/128/256/512/1024)/wav, flac, aiff, alac/safe CD ripper to PCM/DSF,
    Seamless Album Conversion, AIFF, WAV, FLAC, DSF meta tags editor, Mac & PC

  25. #25
    Quote Originally Posted by smartin View Post
    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.

Page 1 of 19 1234511 ... LastLast