Question

Connect no longer bit-perfect?


It looks like the Connect is no longer bit-perfect. Here's my evidence: let's discuss this.

First, I constructed a wav file of pink noise with amplitude ramping up from zero to digital max and back to zero.
I play this through my Connect and record the SPDIF output from the coax output into my PC.
The recording uses a Scarlett 8i6 audio interface set to use the Connect as master clock.
I record into a DAW (Sonar) multiple times - all instances are identical.
However, this recorded signal is not quite the same as the original wav file - it can be up to -21dB different.
See https://www.dropbox.com/s/t8od479xo9hi5el/connect_diff.PNG?dl=1
Note the expanded scale on the difference (third) track.

It looks like the difference gets larger when the signal is larger. To confirm this, I import the
original and difference files into Matlab and plot the raw data (difference vs original). There is clearly audio compression
happening here. See https://www.dropbox.com/s/p1yq6wcqafvnhaj/diff_vs_orig.png?dl=1
The scale is such that digital maximum is 1.

There also appears to be a slight bias when the waveform is negative and the signal is below the
compression threshold. See an expanded version of the previous plot
https://www.dropbox.com/s/9001tl9mkle4wly/diff_vs_orig_zoom.png?dl=1

Happy to answer questions about the method and conclusions.

Cheers, Peter.

p.s. Volume is set to fixed - I haven't tried variable.
In a loopback test (8i6 out from DAW to 8i6 in, no Sonos gear involved), I get bit-perfect cancellation.

This topic has been closed for further comments. You can use the search bar to find a similar topic, or create a new one by clicking Create Topic at the top of the page.

453 replies

Since I don't have a Connect, I will leave this investment to those that have. What I will do is convert a ALAC file to WAV and see if my play 1 pair throws up any surprise.
Done, with interesting if inconclusive results:
1.File converted: Boulevard of Broken Dreams from the Diana Krall album, All for you. Ripped in ALAC, 29Mb file
2.Converted on the free onlineconverter.com, to WAV, now a 69Mb file
3. Both played back and forth in a playlist that has just these two songs, on a play 1 pair in the near field.

What is immediately noticeable is that the WAV file delivers a much lower volume level than the ALAC file. As much as 6-8 taps on the slider, when at about 25% to start. In my first listening, I haven't found whether there is any effect of this on the dynamic range, or whether as it seems, the WAV file is just lower across the recorded range. I also can't say if doing this conversion elsewhere, or ripping the CD to WAV will change this result.

Also immediately noticeable is that the ALAC file, at the same volume control position of the slider, sounds much better than the WAV file, and possesses all the usual adjectives of presence, air, decay, timbre and the like. Proving once again nothing more than "louder sounds better". Of course, all it takes for the WAV file to sound just as good is a few taps to the right of the volume control slider.

If I find anything more worth posting on further listening, I will post that.
That's quite a quiet/uncomplex track (as borne out by the substantial 58% compression WAV->ALAC), and my guess is the iTunes soundcheck tag has significant positive gain. On the face of it Sonos is responding to that tag when playing the ALAC version.
Do you think that the gain would be applied across the board, with no effect on whatever dynamic range the track has? And what would be the reason in this case for the soundcheck tag to have that gain?
Several years ago I created some Replaygain test files which may be of use in testing. I have reposted these onto Dropbox if anyone wants to use them: https://www.dropbox.com/sh/d9p6eocpir98wig/AABGyS0XETzyYuD9YWZJbHNSa?dl=0

The details of these files are:

ReplayGainTest1.flac:
REPLAYGAIN_REFERENCE_LOUDNESS=89.0 dB
REPLAYGAIN_TRACK_PEAK=0.98092651
REPLAYGAIN_ALBUM_PEAK=0.98092651
REPLAYGAIN_TRACK_GAIN=+10.08 dB
REPLAYGAIN_ALBUM_GAIN=+10.08 dB

ReplayGainTest2.flac:
REPLAYGAIN_REFERENCE_LOUDNESS=89.0 dB
REPLAYGAIN_TRACK_PEAK=0.98092651
REPLAYGAIN_ALBUM_PEAK=0.98092651
REPLAYGAIN_ALBUM_GAIN=-10.08 dB
REPLAYGAIN_TRACK_GAIN=-10.08 dB

ReplaygainTest3.flac:
REPLAYGAIN_REFERENCE_LOUDNESS=89.0 dB
REPLAYGAIN_TRACK_PEAK=0.98092651
REPLAYGAIN_ALBUM_PEAK=0.98092651
REPLAYGAIN_ALBUM_GAIN=0 dB
REPLAYGAIN_TRACK_GAIN=0 dB


These files are identical other than the Replaygain metadata. That means any difference in volume between them is entirely due to volume normalisation.

The original thread, for reference, is here: https://en.community.sonos.com/music-services-and-sources-228994/replaygain-not-working-20081

Cheers,

Keith
Yes, the gain is applied "across the board" as you say, meaning, it is simply an increase in volume for this track. The soundcheck tag will have that gain because during the ripping process itunes will have determined that the track has an average volume that is lower than some standard value. Check out the wiki on ReplayGain for more info - it's similar to soundcheck (the soundcheck wiki is not very useful).
There are other times (such as when playing an album of songs where some tracks are deliberately quiet and some deliberately loud) that you don't want individual songs normalised with respect to each other, where you want the as-recorded difference in levels to be retained.

So, going back to the quote above, this problem isn't to do with the reduction in the dynamic range of any song, but with standardisation of volume levels of songs in an album. I have to say that I don't see that this will be a noticeable issue for me because I can't recall too many - if any - albums of this kind in my collection, where having sound levels change from one song to another is desirable. Obviously, those that do have such albums and would like to see these changes, will see this as an issue - unless they rip in WAV.

But is there any other change once the Connect is below 87% of max, where the nature of any song and how it sounds has been changed by Sonos in a way that cannot be restored via the volume control?
I doubt there is any other change beyond volume normalisation, and this can be defeated on your own collection by removing any volume normalisation tags if you really don't want it.

Note that you can't remove tags from music from streaming services.

So, the sky isn't falling in for most people as there are workarounds. It is, however (IMO) clumsy of Sonos to require people to have to use those workarounds.

It would also be much better if Sonos actually implemented a complete solution for volume normalisation as most people would be happy with having it, if it worked properly. The complaint here is that the Sonos implementation of volume normalisation is partly broken and there is no easy way to disable it.

Cheers,

Keith

So, the sky isn't falling in for most people as there are workarounds. It is, however (IMO) clumsy of Sonos to require people to have to use those workarounds.

And from discussions here it would appear that these are needed for just Connect units? I have to still see what happens with the two files - ALAC and WAC - on my zp90 zone, but are you suggesting that both will deliver the same sound levels when volume levels are the same? But is not the case with the 1 pair, so that is also doing what the Connect is found to be doing.

But if all that is being done is shifting of the sound levels for the entire dynamic range of the song to either side of the recorded level, it isn't a big deal to the extent that I feel any need for workarounds, that will probably only ending up making my playlist experience even worse than what it is today, where, because some CDs and sources still play louder than others, mixed source playlists aren't usable in the way they ought to be. I wonder how much of this is because of errors in the tagging that Sonos is merely responding to. iTunes has an option for turning normalisation off, if memory serves me well, and I agree that all Sonos needs to do is provide this option.

I also haven't heard any users of the 5 units, that have found it to be a HiFi speakers, have any complaints on this count. Most people, I suppose, are just setting the volume levels to where they need to be, and making an occasional tweak to the volume control if/when needed. Which is what was being done with legacy kit as well.
If your ALAC file has the iTunNORM tag set (and it's non-zero) then it will have a different volume level from the WAV version. This applies whether it's a ZP/CONNECT or a PLAY.

I have the ReplayGain track gain tags set for my local FLAC library and it has an audible effect. Whilst this is intentional and welcome for shuffled play -- which is why I wrote the tags originally -- it can degrade the listening experience for complete albums, particularly where tracks are gapless. An example: tracks 1 & 2 of Mike Oldfield's 'The Songs Of Distant Earth' change from a gain of +2.74 dB to -4.66 dB. In the last few seconds of track 1 the level audibly falls away ready for the start of track 2.

My workaround for album play? Stream the desired content from Deezer Elite.
If your ALAC file has the iTunNORM tag set (and it's non-zero) then it will have a different volume level from the WAV version. This applies whether it's a ZP/CONNECT or a PLAY.

Which would suggest that this is a different subject from the topic of this thread? And not something caused by or done at the time the 1dB cut at 100% max volume was done?
If your ALAC file has the iTunNORM tag set (and it's non-zero) then it will have a different volume level from the WAV version. This applies whether it's a ZP/CONNECT or a PLAY.

Which would suggest that this is a different subject from the topic of this thread? And not something caused by or done at the time the 1dB cut at 100% max volume was done?

Correct. Normalisation and limiting (the genesis of this thread's topic) are two quite different things. The first preserves the dynamic range, the second does not (and adds distortion).
If your ALAC file has the iTunNORM tag set (and it's non-zero) then it will have a different volume level from the WAV version. This applies whether it's a ZP/CONNECT or a PLAY.

Which would suggest that this is a different subject from the topic of this thread? And not something caused by or done at the time the 1dB cut at 100% max volume was done?


Yes, and that's the point I've been trying to get across.

The limiter is not volume normalisation.

The limiter and volume normalisation are two entirely different things. They are only related because Sonos has chosen to use a limiter to deal with some potential side-effects of volume normalisation.

Unfortunately this limiter also seems to be in play when no volume normalisation is being used.

If you are arguing that discussions around volume normalisation in general should be in a different thread, then you may be right.

Cheers,

Keith

If you are arguing that discussions around volume normalisation in general should be in a different thread, then you may be right.

Only because there is an easy workaround to the subject of this thread: by using Connect in variable mode below 87% of max volume, whereby no dynamic range is lost and the song can be heard as recorded.

And from discussions here it would appear that these are needed for just Connect units? I have to still see what happens with the two files - ALAC and WAC - on my zp90 zone, but are you suggesting that both will deliver the same sound levels when volume levels are the same? But is not the case with the 1 pair, so that is also doing what the Connect is found to be doing.


I'm not quite sure what you are asking here. In theory the ZP90 and Connect should deliver the identical output for the same track at the same digital volume level if the volume control is set below the limiter threshold and if no volume normalisation tags are present.

I am being very careful with my phrasing here. The ZP90 and Connect only have an output level (either digital or analogue). They don't really have a "volume" as they are neither power amplifiers nor speakers. The Sonos "volume control" really is a digital gain control.

If you try to compare with the Play:1 (or other Play:x speakers) then all bets are off because you are then putting this output through a digital amplifier/speaker matrix with it's own characteristics, including (I believe) additional per amplifier DSP in the case of units like the Play:5.

If you are asking whether the limiter impacts the Play:1s and other Sonos speakers, then my best answer to this is "probably, but it's almost certainly irrelevant". Why irrelevant? Because in a Play:1 any impact the limiter has is likely to be near the top of the amplifier range and of the speaker & enclosure's capability to convert electrical signals to sound. There are likely to be significant non-linearities at this point which mask any significant impacts of the limiter (assuming it is present in these units). It's also likely that other DSP comes into play at this point which is speaker-model specific.

It's relevent with the Connect because a typical use-case is to have the Connect set to fixed output (i.e. effectively digital volume control at 100%) and have the digital signal fed into a DAC with the DAC volume control used to control how loud it is. In this case, the limiter in the Connect will be impacting the signal at any volume level

The above is relating specifically to the limiter. The rest of your post was talking about volume normalisation which is a related (due to Sonos implementation) topic, but really is an entirely different conversation.

Cheers,

Keith

If you are asking whether the limiter impacts the Play:1s and other Sonos speakers, then my best answer to this is "probably, but it's almost certainly irrelevant". Why irrelevant? Because in a Play:1 any impact the limiter has is likely to be near the top of the amplifier range and of the speaker & enclosure's capability to convert electrical signals to sound....

The rest of your post was talking about volume normalisation which is a related (due to Sonos implementation) topic, but really is an entirely different conversation.

Right. Which again makes the point made just before this quote, about these being two different subjects. With the limiter and this thread, if applicable to Connect Amp/play units, applicable only so in extreme regions where its effects are unlikely to be audibly noticed. And to not come into play where the Connect is left below 87% of max output.

While normalisation affects every Sonos product the same way, and cannot be easily turned off. And is noticed only where albums contain songs that are intentionally recorded at widely varying average volume levels, when these albums are played in album play mode.

But if all that is being done is shifting of the sound levels for the entire dynamic range of the song to either side of the recorded level, it isn't a big deal to the extent that I feel any need for workarounds, that will probably only ending up making my playlist experience even worse than what it is today, where, because some CDs and sources still play louder than others, mixed source playlists aren't usable in the way they ought to be. I wonder how much of this is because of errors in the tagging that Sonos is merely responding to. iTunes has an option for turning normalisation off, if memory serves me well, and I agree that all Sonos needs to do is provide this option.

I also haven't heard any users of the 5 units, that have found it to be a HiFi speakers, have any complaints on this count. Most people, I suppose, are just setting the volume levels to where they need to be, and making an occasional tweak to the volume control if/when needed. Which is what was being done with legacy kit as well.


To be clear, this is now discussing volume normalisation, not the limiter.

The volume normalisation implementation on Sonos has always been half-assed. In some case it works quite well. In others it works quite badly. One of the main issues is it can't be disabled easily.

Bearing in mind that mixed genre/age playlists will normally suffer from huge variations in level between tracks regardless of source or volume normalisation issues (of course, the aim of volume normalisation is to correct this, but it could potentially be counter-productive in cases where some files have normalisation tags and others do no). I suspect that, in many cases, the impact of spotty volume normalisation support from different sources on (for instance) a mixed source playlist of pop/rock tracks spanning 5 decades would probably be fairly neutral.

But it does depend highly on the playlist.


While normalisation affects every Sonos product the same way, and cannot be easily turned off. And is noticed only where albums contain songs that are intentionally recorded at widely varying average volume levels, when these albums are played in album play mode.


Potentially it could have adverse impacts on a playlist where some tracks have normalisation tags and some do not, if the tracks in the playlist were recorded with similar levels to start with. The obvious and well-discussed example is for tracks from a single album, but it could apply to other playlists too.

Cheers,

Keith

The volume normalisation implementation on Sonos has always been half-assed. In some case it works quite well. In others it works quite badly. One of the main issues is it can't be disabled easily.

While granting the second point, is there any one else that has done a better job of normalisation given what seems to be a wide variance in how tracks may carry the required information?
Yes.

The old Slimdevices systems had Replaygain support with user control allowing the user to easily select between the following options:

(IMO it was about the only thing that was significantly better on the Squeezeboxes compared to Sonos)

* Track by track normalisation
* Album-based normalisation
* Auto mode where it would attempt to adjust the normalisation used depending on the playlist
* Normalisation disabled

Personally I'm not sure the "auto" mode is that useful.

The key is to allow user control. Any type of volume normalisation implementation which tries to second-guess what the user wants and doesn't allow the user to override it is fundamentally broken by design.

Cheers,

Keith
It depends what you mean by 'better job'. Most media players which support normalisation tags offer three options: album gain, track gain or OFF. In the first two cases they obviously depend on the user (or service) having tagged appropriately.

The track gain figure adjusts the level based on the average track loudness. The album gain figure is based on the average album loudness. By definition that figure is the same for all the tracks in the album.

Tools which add gain tags traditionally also add peak tags, representing the largest sample in the track or album. The media player can use this to avoid applying too much gain and going into clipping. Sonos ignores the track peak figure; another reason why the implementation is rather half-baked.
Thank you, gents, for those useful explanations. Something for Sonos to mull over as it devotes development resources in other areas. If these message get to them.
I wonder if there might be another mode that would also be useful for those using Sonos in a business setting (such as a restaurant). This would involve on-the-fly normalization, much the same as a radio station might use. There are various standards (such as EBU R-128) that could be followed. This sort of normalization would vary smoothly throughout a song to try and keep the level relatively uniform (within reason). Presumably this problem was solved many years ago for broadcasting. It might involve compression as well as volume changes. It would not be a mode intended for quiet music listening, but rather for noisy environments to maintain a relatively constant musical ambience. I've often thought this sort of thing would be useful in a car too.
I wonder if there might be another mode that would also be useful for those using Sonos in a business setting (such as a restaurant). This would involve on-the-fly normalization, much the same as a radio station might use. There are various standards (such as EBU R-128) that could be followed. This sort of normalization would vary smoothly throughout a song to try and keep the level relatively uniform (within reason). Presumably this problem was solved many years ago for broadcasting. It might involve compression as well as volume changes. It would not be a mode intended for quiet music listening, but rather for noisy environments to maintain a relatively constant musical ambience. I've often thought this sort of thing would be useful in a car too.
Rockbox firmware has had such a compressor feature for donkey's years. For a time I was using a Sansa Clip+ as a sound source in a car and the compressor worked pretty well.
Badge +1
OK, back to the topic of "Connect no longer bit-perfect?"

SONOS changed the processing in the Connect firmware in versions 6 and later which resulted in the S/PDIF output for fix-volume setting to no longer be bit-perfect to the input stream. For what reason, or functional intent, has yet to be made public. I can speculate a number of reasons why this happened, but there is no need to speculate -- it happened and it's remained in place over several firmware revisions indicating to me that it was intentional and is here for the long term.

I started to wonder, why would this be an issue? Then I wondered if SONOS had ever made a claim in the past that the Connect was bit-perfect, or was this simply an observation that some reviewer made in the past and it became an Internet fact.

When the Connect digital output was bit-perfect to the stream, I considered it a valued component as a streamer to a better quality DAC in an audiophile setup, providing the equivalent of a wire between the streaming source and my DAC. For me, the Connect was simply an S/PDIF output interface to what I think is one of the best controller interfaces for streaming and queue management. Now that I know that it's no longer bit-perfect, I no longer consider the Connect a trusted "equivalent of a wire" component in my setup. I've tried to move on to other streaming products like the Bluesound Node2, but it's controller interface comes no where close to the functionality and performance of the SONOS Controller.

The SONOS organizational and product focus changes that manifested about a year ago gives me the impression that SONOS is going into a different direction and would rather not worry about this. I continue to hope that there will be a reversal on decision at SONOS to re-instate the legacy capability, even if it's via an advanced setting to enable it for the few of us that care.

The more of the posts I reviewed and the more I thought about this, I couldn't help but ask the question "Why does it need to be bit-perfect?". Well, I can think of the following reason -- to use the product for the controller and streaming service interface capabilities so that it functions in a transparent manner when doing so.

I bumped into this topic from the post and thread about the Connect and playback of MQA encoded tracks as I was curious to see what the community had to report on the apparent ability to select an MQA track on TIDAL and have it play on SONOS equipment. Knowing that the Connect was no longer bit-perfect I felt that there would be no opportunity to pass through MQA encoded tracks to an MQA capable DAC.

And incidentally, I feel there is another reason for support bit-perfect and 24-bit. I'd prefer to process all of my local 16/44.1 content that has been mastered with peaks to 0dBFS to reduce the amplitude with a 1 bit shift with a conversion from 16-bit to 24-bit and playback the 24-bit version with no loss of fidelity and no peak level distortions. Storage is cheap and I don't care that that the resultant conversion is 30% 0's in its raw form -- I am interested in the fidelity and listening quality. Technically, this would be possible with the digital volume control on the Connect, but there is no evidence that this can be performed transparently either. As for the SONOS speaker systems,I never considered them audiophile grade and they are used for convenience over sound quality.
And incidentally, I feel there is another reason for support bit-perfect and 24-bit. I'd prefer to process all of my local 16/44.1 content that has been mastered with peaks to 0dBFS to reduce the amplitude with a 1 bit shift with a conversion from 16-bit to 24-bit and playback the 24-bit version with no loss of fidelity and no peak level distortions.
Why bother, when upmarket DACs will provide a few dBs of headroom to account for inter-sample peaks?