Jump to content
mansr

MQA technical analysis

Rate this topic

Recommended Posts

5 hours ago, mansr said:

Precisely. Low-pass filtering this signal produces properly interpolated samples.

 

The MQA "rendering" normally starts with a sample rate of 88.2/96 kHz, so the aliases will begin at 44.1/48 kHz. Any real signal content at these frequencies was lost in the MQA encoding process. It is likely that the 0-48 kHz spectrum encoded by MQA also contains aliases of higher frequencies if they were present in the recording, assuming the downsampling filters are similarly poor. The band splitting at 24 kHz might also introduce aliases.

 

That's almost exactly what I said too.

Hi,

Thanks for confirming. I am surprised the MQA system is so poor, given the claims made for the superiority.

Regards,

Shadders.

Share this post


Link to post
Share on other sites
45 minutes ago, Shadders said:

Hi,

Thanks for confirming. I am surprised the MQA system is so poor, given the claims made for the superiority.

Regards,

Shadders.

It is all a question of who you wish to believe.

Share this post


Link to post
Share on other sites

I'm inclined believe someone who has compared a regular recording with an MQA one.

 

It's been 21 pages now, so has anyone been able to do that?


"The overwhelming majority [of audiophiles] have very little knowledge, if any, about the most basic principles and operating characteristics of audio equipment. They often base their purchasing decisions on hearsay, and the preaching of media sages. Unfortunately, because of commercial considerations, much information is rooted in increasing revenue, not in assisting the audiophile. It seems as if the only requirements for becoming an "authority" in the world of audio is a keyboard."

-- Bruce Rozenblit of Transcendent Sound

Share this post


Link to post
Share on other sites
38 minutes ago, Ralf11 said:

I'm inclined believe someone who has compared a regular recording with an MQA one.

 

It's been 21 pages now, so has anyone been able to do that?

If you mean, has anyone actually compared them by listening, then probably not. That's not what this thread is for. It's about how it works, not how it sounds.


"People hear what they see." - Doris Day

The forum would be a much better place if everyone were less convinced of how right they were.

Share this post


Link to post
Share on other sites

Understood.  But at some point the 2nd clause must come into play.


"The overwhelming majority [of audiophiles] have very little knowledge, if any, about the most basic principles and operating characteristics of audio equipment. They often base their purchasing decisions on hearsay, and the preaching of media sages. Unfortunately, because of commercial considerations, much information is rooted in increasing revenue, not in assisting the audiophile. It seems as if the only requirements for becoming an "authority" in the world of audio is a keyboard."

-- Bruce Rozenblit of Transcendent Sound

Share this post


Link to post
Share on other sites

As Archimago notes on this blog, he has obtained recordings of some MQA impulse responses from the Mytek Brooklyn DAC. Here are these impulse responses overlaid with those used by the Bluesound for 4x upsampling. Again, it's a very close match.

brooklyn-mqa-imp.thumb.png.01898f233dcca195fb395ca931608ccc.png

Share this post


Link to post
Share on other sites

I've made some software tools to help explore MQA files and devices:

https://code.videolan.org/mansr/mqa

  • mqascan: parse the control bitstream of an MQA file
  • mqbscan: parse the renderer instructions of a decoded MQA file
  • mqbgen: encode renderer instructions in an existing file

If you have a suitable ARM system and a copy of the Bluesound MQA library, wrappers to decode and render MQA files are also built.

 

Have fun.

Share this post


Link to post
Share on other sites

I checked the 2L MQA samples for which rendering (aka upsampling) filter they request:

2L-038_01_stereo_DXD_FLAC.mqa.flac		6
2L-038_MQA2016-352k-24b_01.mqa.flac		5
2L-048_14_stereo_96kHz_FLAC.mqa.flac		4
2L-050_01_stereo_DXD_WAV.mqa.flac		8
2L-053_04_stereo-DXD.mqa.flac			8
2L-056_03_stereo_DXD_mqa.flac			8
2L-056_04_stereo_DXD_mqa.flac			8
2L-064_08_stereo_DXD_WAV.mqa.flac		8
2L-082_stereo_DXD_01.mqa.flac			8
2L-087_06_stereo_DXD_FLAC.mqa.flac		8
2L-092_01_stereo_DXD_FLAC.mqa.flac		8
2L-106_04_stereo_DXD_FLAC.mqa.flac		8
2L-109_05_stereo_DXD_FLAC.mqa.flac		6
2L-110_04_stereo_DXD_FLAC.mqa.flac		6
2L-111_15_stereo_DXD_FLAC.mqa.flac		6
2L-120_01_stereo-44k-24b.mqa.flac		4
2L-125_stereo-352k-24b_04.mqa.flac		4

Filter 8 is by far the most commonly used here with 6 and 4 in distant second and third places. Curiously, the remastered version of 2L-038 uses a different filter (5) than the original version (6). The two samples, 2L-048 and 2L-120, that are not originally 352 kHz both use filter 4, although that may well be a coincidence.

Share this post


Link to post
Share on other sites
1 hour ago, AJ Soundfield said:

Btw, I have one of those now if you still need measurements

Do you have a recording interface capable of better than 192 kHz? That could yield some additional insight.

Share this post


Link to post
Share on other sites
1 minute ago, mansr said:

I have spotted filter 11 in the wild. Stay tuned.

 

Sounds like the comments pages of Audubon Magazine. :)


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 -> eero Pro router -> EtherREGEN -> microRendu -> USPCB -> ISO Regen (powered by LPS-1) -> Ghent JSSG360 USB cable -> Pro-Ject Pre Box S2 DAC -> Spectral DMC-12 & DMA-150 -> Vandersteen 3A Signature.

Share this post


Link to post
Share on other sites
On 12/7/2017 at 5:39 PM, mansr said:

I've made some software tools to help explore MQA files and devices:

https://code.videolan.org/mansr/mqa

  • mqascan: parse the control bitstream of an MQA file
  • mqbscan: parse the renderer instructions of a decoded MQA file
  • mqbgen: encode renderer instructions in an existing file

If you have a suitable ARM system and a copy of the Bluesound MQA library, wrappers to decode and render MQA files are also built.

 

Have fun.

 

Great job!

Can't get the .so file from the BS firmware working, not recognised as dynamic library even though it is a dynamic lib using 4 others:

$ ldd /usr/lib/libbluos_ssc.so
        not a dynamic executable
$ ./mqadec
./mqadec: error while loading shared libraries: libbluos_ssc.so: cannot open shared object file: No such file or directory

 

Strace:

open("/usr/lib/libbluos_ssc.so", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0(\0\1\0\0\0\10\32\0\0004\0\0\0"..., 512) = 512
lseek(3, 220932, SEEK_SET)              = 220932
read(3, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 1080) = 1080
lseek(3, 220648, SEEK_SET)              = 220648
read(3, "A4\0\0\0aeabi\0\1*\0\0\0\0057-A\0\6\n\7A\10\1\t\2\n\3\f"..., 53) = 53
close(3)                                = 0
stat64("/usr/lib", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
writev(2, [{"./mqadec", 8}, {": ", 2}, {"error while loading shared libra"..., 36}, {": ", 2}, {"libbluos_ssc.so", 15}, {": ", 2}, {"cannot open shared object file", 30}, {": ", 2}, {"No such file or directory", 25}, {"\n", 1}], 10./mqadec: error while loading shared libraries: libbluos_ssc.so: cannot open shared object file: No such file or directory
) = 123
exit_group(127)                         = ?
+++ exited with 127 +++
$ uname -m
armv7l
$ ldd ./mqadec
        linux-vdso.so.1 (0x7eff7000)
        /usr/lib/arm-linux-gnueabihf/libarmmem.so (0x76fae000)
        libsndfile.so.1 => /usr/lib/arm-linux-gnueabihf/libsndfile.so.1 (0x76f3c000)
        libbluos_ssc.so => not found
        libc.so.6 => /lib/arm-linux-gnueabihf/libc.so.6 (0x76dfb000)
        libFLAC.so.8 => /usr/lib/arm-linux-gnueabihf/libFLAC.so.8 (0x76dbf000)
        libvorbisenc.so.2 => /usr/lib/arm-linux-gnueabihf/libvorbisenc.so.2 (0x76d2d000)
        libm.so.6 => /lib/arm-linux-gnueabihf/libm.so.6 (0x76cb1000)
        /lib/ld-linux-armhf.so.3 (0x54b0a000)
        libogg.so.0 => /usr/lib/arm-linux-gnueabihf/libogg.so.0 (0x76ca3000)
        libvorbis.so.0 => /usr/lib/arm-linux-gnueabihf/libvorbis.so.0 (0x76c6b000)

 

readelf -a /usr/lib/libbluos_ssc.so

Dynamic section at offset 0x35a60 contains 28 entries:
  Tag        Type                         Name/Value
 0x00000001 (NEEDED)                     Shared library: [libasound.so.2]
 0x00000001 (NEEDED)                     Shared library: [libstdc++.so.6]
 0x00000001 (NEEDED)                     Shared library: [libm.so.6]
 0x00000001 (NEEDED)                     Shared library: [libc.so.6]
 0x00000001 (NEEDED)                     Shared library: [libgcc_s.so.1]


 

What ARM hardware are you building and/or testing on?

Share this post


Link to post
Share on other sites
6 hours ago, mansr said:

There might be some incompatibility with your system. What does "readelf -A" say for libbluos_ssc.so and /lib/libc.so?


Libc is in several places on raspberry, but it is
 

[email protected]:~ $ ldd /bin/ls
...
        libc.so.6 => /lib/arm-linux-gnueabihf/libc.so.6 (0x76df1000)

 

LIBC:

[email protected]:~ $ readelf -A /lib/arm-linux-gnueabihf/libc.so.6
Attribute Section: aeabi
File Attributes
  Tag_CPU_name: "6"
  Tag_CPU_arch: v6
  Tag_ARM_ISA_use: Yes
  Tag_THUMB_ISA_use: Thumb-1
  Tag_FP_arch: VFPv2
  Tag_ABI_PCS_wchar_t: 4
  Tag_ABI_FP_rounding: Needed
  Tag_ABI_FP_denormal: Needed
  Tag_ABI_FP_exceptions: Needed
  Tag_ABI_FP_number_model: IEEE 754
  Tag_ABI_align_needed: 8-byte
  Tag_ABI_enum_size: int
  Tag_ABI_HardFP_use: SP and DP
  Tag_ABI_VFP_args: VFP registers
  Tag_CPU_unaligned_access: v6

 

BLEUSOUND:

 

[email protected]:~ $ readelf -A /usr/lib/libbluos_ssc.so
Attribute Section: aeabi
File Attributes
  Tag_CPU_name: "7-A"
  Tag_CPU_arch: v7
  Tag_CPU_arch_profile: Application
  Tag_ARM_ISA_use: Yes
  Tag_THUMB_ISA_use: Thumb-2
  Tag_FP_arch: VFPv3
  Tag_Advanced_SIMD_arch: NEONv1
  Tag_ABI_PCS_wchar_t: 4
  Tag_ABI_FP_denormal: Needed
  Tag_ABI_FP_exceptions: Needed
  Tag_ABI_FP_number_model: IEEE 754
  Tag_ABI_align_needed: 8-byte
  Tag_ABI_align_preserved: 8-byte, except leaf SP
  Tag_ABI_enum_size: int
  Tag_ABI_HardFP_use: SP and DP
  Tag_ABI_optimization_goals: Aggressive Speed
  Tag_DIV_use: Not allowed

 

Now looking at the firmware of BLEUSOUND, it seems their LIBC is also cpu v7:

# readelf -A libc.so.6
Attribute Section: aeabi
File Attributes
  Tag_CPU_name: "7-A"
  Tag_CPU_arch: v7
  Tag_CPU_arch_profile: Application
  Tag_ARM_ISA_use: Yes
  Tag_THUMB_ISA_use: Thumb-2
  Tag_FP_arch: VFPv3
  Tag_Advanced_SIMD_arch: NEONv1
  Tag_ABI_PCS_wchar_t: 4
  Tag_ABI_FP_denormal: Needed
  Tag_ABI_FP_exceptions: Needed
  Tag_ABI_FP_number_model: IEEE 754
  Tag_ABI_align_needed: 8-byte
  Tag_ABI_align_preserved: 8-byte, except leaf SP
  Tag_ABI_enum_size: int
  Tag_ABI_HardFP_use: SP and DP
  Tag_DIV_use: Not allowed

Technically the raspberry 2 and 3 can do chroot into an untarred bluesound rootfs, and run v7 code.

So all we need to do is find a raspberry pi 2 or 3 "specific" distro which has a v7 glibc.
I believe this distro is still v6 to make it compatible with the older raspberrry 1.

Share this post


Link to post
Share on other sites

Yes, it looks like your system libraries aren't compatible with the Bluesound one. You can always use chroot or other tricks to pick up everything from the Bluesound rootfs.

Share this post


Link to post
Share on other sites
15 hours ago, mansr said:

Do you have a recording interface capable of better than 192 kHz? That could yield some additional insight.

I don't think so sorry. Will double check, but since I don't do any recording, its doubtful.

Share this post


Link to post
Share on other sites

To those wishing to use my mqadec and mqarender tools with the Bluesound library, note that there are (at least) two versions of this library with incompatible interfaces. If it doesn't work properly, you likely have the older variant. For copyright reasons, I can unfortunately not redistribute the file.

Share this post


Link to post
Share on other sites

To get some idea of the filter and sample rate distribution, I grabbed some samples from the Tidal Masters Essentials and New Arrivals playlists. The table below shows the number of tracks with each combination of filter and sample rate, totals on the right and bottom.

  |    44.1      48    88.1      96     192   352.8|
--+------------------------------------------------+----
 4|      36      14       4      35                |  89
 6|                                               1|   1
 8|                                      19        |  19
11|                                       2        |   2
--+------------------------------------------------+----
  |      36      14       4      35      21       1| 111

A few observations:

  • Nearly half the tracks (50 of 111) have an original sample rate of 44.1 or 48 kHz.
  • All tracks with an original rate of 96 kHz or less use filter 4.
  • In tracks with an original rate above 96 kHz filter 8 is the most common.
  • Filters 6 and 11 make rare appearances.

We have previously seen filter 6 in a few of the 2L samples. Here it is used in a track from the INTERACTIONS album, also a 2L recording. Filter 11 is found on The Doors and New York by Lou Reed.

 

Looking at the Lou Reed album, we find this distribution:

  |     192|
--+--------+----
 8|       5|   5
 9|       3|   3
11|       6|   6
--+--------+----
  |      14|  14

In addition to filter 11, we also find filter 9, another rarity.

Share this post


Link to post
Share on other sites
1 hour ago, mansr said:

To get some idea of the filter and sample rate distribution, I grabbed some samples from the Tidal Masters Essentials and New Arrivals playlists. The table below shows the number of tracks with each combination of filter and sample rate, totals on the right and bottom.

  |    44.1      48    88.1      96     192   352.8|
--+------------------------------------------------+----
 4|      36      14       4      35                |  89
 6|                                               1|   1
 8|                                      19        |  19
11|                                       2        |   2
--+------------------------------------------------+----
  |      36      14       4      35      21       1| 111

A few observations:

  • Nearly half the tracks (50 of 111) have an original sample rate of 44.1 or 48 kHz.
  • All tracks with an original rate of 96 kHz or less use filter 4.
  • In tracks with an original rate above 96 kHz filter 8 is the most common.
  • Filters 6 and 11 make rare appearances.

We have previously seen filter 6 in a few of the 2L samples. Here it is used in a track from the INTERACTIONS album, also a 2L recording. Filter 11 is found on The Doors and New York by Lou Reed.

 

Looking at the Lou Reed album, we find this distribution:

  |     192|
--+--------+----
 8|       5|   5
 9|       3|   3
11|       6|   6
--+--------+----
  |      14|  14

In addition to filter 11, we also find filter 9, another rarity.

Hi,

Thanks for this.

So, if people like the 44.1kHz or 48kHz original samples in MQA format, then they subjectively like ultrasonic noise ?

For the Lou Reed album, are we then saying that the 5 track, 3 track, and 6 track groups, each had a different mastering and temporal smear, and as such those groups have a different filter ?

How did the record company know this to select the right filter to deblur ?.

Or, are we being played - each filter is meant to make the tracks sound "nice" so subjectively we think MQA is great ?

Regards,

Shadders.

Share this post


Link to post
Share on other sites
46 minutes ago, Shadders said:

Hi,

Thanks for this.

So, if people like the 44.1kHz or 48kHz original samples in MQA format, then they subjectively like ultrasonic noise ?

For the Lou Reed album, are we then saying that the 5 track, 3 track, and 6 track groups, each had a different mastering and temporal smear, and as such those groups have a different filter ?

How did the record company know this to select the right filter to deblur ?.

Or, are we being played - each filter is meant to make the tracks sound "nice" so subjectively we think MQA is great ?

Regards,

Shadders.

 

Remember that MQA is a process and that there are three potential places a file may have filters applied:

 1) The post mastering, remove "ADC blur" stage

 2) The SRC stage (i.e. converting a 192kHz MQA file into a 96Khz core)

 3) The DAC stage

 

I believe mansr is describing the filter which is applied by the MQA DAC. The majority of the deblurring already happened at stage 1 (and optionally 2).

 

My own guess is that the selection of the filter may depend on the content itself (i.e. what type of music) as well as any technical criteria (original sample rate etc). Probably selected by ear ("this ones sounds the best"). But just my guess.

Share this post


Link to post
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

×
×
  • Create New...