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

Just to clarify a number in my original post - the original and recorded signals can differ by up to about 1dB. It is the difference signal that can have an amplitude of -21dB (compared to full scale).

The same question to this quote: At what volume levels on the Connect - 100%? And is this at the high end of the dynamic range? If so, this means that there is a 1dB reduction in volume that is applied to music with high dynamic range, to the loudest parts of it, when played at 100% volume. Since I never play my play units in that mode, this isn't the extent of reduction dealt out to me, and this would also be the case for almost every Connect user. And definitely to everyone using a headphone!
Or is it the case that it would be present when the Connect is in fixed output mode, with the volume levels controlled by the downstream unit, but not be applicable when the Connect is used to control volume levels via variable level mode? If this be the case, again, it would also not carry over to Sonos speakers except when running at 100% volume on the loudest parts of music with high dynamic range.
So my question boils down to whether this issue is just a notional and theoretical one for every one other than those using Connect in fixed output mode?
If yes, then the fix is also easy for the remaining set of Connect users: switch to variable level mode.
And on using Connect in variable level mode even with its digital outputs, my understanding is:
Volume control/variable audio IS possible with a digital output but it usually results in digital information being discarded as the level is lowered. What Sonos does is use a 16 bit signal coming out of a 24 bit output. There is enough digital "headroom" that the point at which information would have been discarded is never reached.
Peter, it then seems to me that using the Connect in variable mode, even with an external "high end" DAC as some do, will mean obtaining all the fidelity that is sought and that this 1dB issue will only surface with loud parts of high dynamic range music when the Connect variable volume is set to 100%. It would be nice for that to not happen I suppose, but is it end of days if it does?
Hey Kumar - let me see how many of your questions I can answer:

1. A limiter reduces the loud bits (of music) but not the soft bits. It is effectively a volume-dependent volume control. A compressor is very similar but more flexible, and is often used in multi-band format so it affects different frequency ranges in different ways. The Sonos limiter reduces the loud bits (within 1dB of full scale) and leaves the rest untouched. It will reduce the overall RMS volume ("loudness") of the music by a small amount (less than 1dB). Hence my statement that you can increase your volume control to make up the overall RMS to equal the original. However, the music will be slightly different because the loud bits are now softer relative to the quiet bits, i.e. the dynamic range has been reduced. For more info, check out the wiki on dynamic range compression. Perhaps the first diagram (downward compression) will make this clearer.

2, 3 & 4. I think "strangled" is a bit strong 🙂 It's only a 1dB reduction of the very loudest parts of the music. Many people would not notice this. It may be more a feeling that something isn't quite right, or loud enough, or crisp enough, or punchy enough or whatever. I do wonder whether Sonos applies the limiter before or after the volume control. If it applies it afterwards, then perhaps it only kicks in near maximum speaker volume. However, I suspect it is required as part of the volume normalization DSP just in case the ITUNNORM tags are wrong, for example. Hence the limiter would be applied at any volume. Only Sonos can really answer this (although maybe I could run some tests with a Connect in variable volume mode).

5. Yes, Sonos is clever with their use of a volume control in 24 bit mode. No information is lost until really low volumes are reached. Both the internal DAC and the coax digital output operate in 24 bit mode to facilitate this.

It would seem there is a good question to be answered here: does the Sonos limiter operate at every volume setting?

Cheers, Peter.


1. A limiter reduces the loud bits (of music) but not the soft bits. It is effectively a volume-dependent volume control. A compressor is very similar but more flexible, and is often used in multi-band format so it affects different frequency ranges in different ways. The Sonos limiter reduces the loud bits (within 1dB of full scale) and leaves the rest untouched. It will reduce the overall RMS volume ("loudness") of the music by a small amount (less than 1dB). Hence my statement that you can increase your volume control to make up the overall RMS to equal the original. However, the music will be slightly different because the loud bits are now softer relative to the quiet bits, i.e. the dynamic range has been reduced.
2, 3 & 4. I think "strangled" is a bit strong 🙂 It's only a 1dB reduction of the very loudest parts of the music. Many people would not notice this.

It would seem there is a good question to be answered here: does the Sonos limiter operate at every volume setting?

Cheers, Peter.

1. I thought that your concluding comment in your item 1 - that dynamic range is reduced - is precisely the core issue of the loudness wars thing, where, for much of the music to be heard clearly and loudly, the peaks are reduced because otherwise the earphones will blow out eardrums. And that in turn is a result of compression of the dynamic range in mastering. But this isn't as relevant to the subject as:
2. Is it a 1dB reduction of the very loudest part of the music at 100% volume levels? If so, while easily seen on a scope, isn't it irrelevant in real life listening? Who plays music at 100% volume levels on the Connect except those using fixed mode, and why can't these folk sidestep the issue then by moving to variable mode? And isn't all this a non issue for play units, because who plays these at 100% volume levels? And those who do, should actually be grateful for something that probably prevents speaker damage when music that suddenly goes very loud is played at 100% volume levels.
3. Doesn't your scope tell you what the Sonos limiter does at every volume setting?:D
Yes, limiting and compression both reduce dynamic range. The point is that Sonos is adding its own limiting to material that is already compressed. Hence it is further reducing the dynamic range. It is also doing it with the simplest possible limiter that has no attack/decay/look-ahead. I doubt a mastering engineer would use such a blunt tool.

We don't know if the limiting occurs before or after the volume control - this is a very good question to answer, and I will run some tests when I get the time. So far, I've only ever tested in fixed volume mode to remove that variable.

Cheers, Peter.

p.s. My "scope" is actually an external sound card for a computer (Scarlett 8i6) with analog and digital inputs. It contains a similar Cirrus DAC to the Connect, but is the better-specced CS4272). I record the data in audio software called Sonar (similar to a free program called Audacity). I do my analysis in Matlab (like Excel but much more flexible and easier to use).
If and when you do run the test on what the Connect does in variable output mode, it would be useful to some Connect users to know the volume level at/below which this Sonos interference with the original signal disappears. Either the 1dB cut disappears entirely as soon as the volume is backed off to even slightly below 100%, or there is a slope to where the 1dB effect reduces, to a volume level where it becomes zero. It ought to be one of these two, is my guess.

This may allow one subset of Connect users to switch to variable level mode and stop fussing over this issue and get over any angst that this thread may have caused them. Some may even switch to variable mode right away, assuage their anxiety, and regain the lost music listening pleasure from their Connect.

Those that pile on to Connect as a disgrace to any self respecting audiophile's system, are not going to stop doing so anyway, so this test doesn't matter to them, there are many other reasons that will survive to support their thinking. It is obvious that this thread stoked the fires of those of that kind that read it, but it doesn't have the power to put them out, no matter what you find now. Or if Sonos ever finds time to revert the Connect to zp90 status.

For Sonos play units, I am pretty sure that this is a complete non issue. Also, IMO, both Connect and Connect Amp are obsolete bits of kit, now meant to only serve niche needs and reducing numbers of legacy kit owners. For users of active speaker/DSP/room response tuning driven play units, if something isn't heard, it doesn't exist and there is no one with scopes to disturb their music experience. Also a good thing that, IMO. As an example, many find that the 5 unit seems to lose bass output as it approaches max volumes. Few dispute that effect, and those that need proportionate bass energy increase all the way to full volume, know the solution - add a Sub.
Testing as you type. It looks like the limiting only applies at high volume settings!!! I am surprised, but this is good. I'm now testing how many taps on the volume bar are necessary to reduce the volume enough to remove the limiting. Stay tuned.
OK, 10 taps back from max is very close to no limiting. Probably 11 to be exact but I only tested to 10 today. Perhaps that's not surprising since the limiter kicks in at around 90% of maximum signal. I'll return to this another day and perhaps start a new thread.
I remember reading somewhere - ratty? - that each tap is 1% resolution, so this suggests that in variable mode, there is no change to the original signal as long as Connect does not cross 88% of max volume. I also remember reading that sound quality effects will happen only when Connect volume levels are much below the 30-40% levels and even below 30% these will not be easily heard. That apart, we still have a lot of usable range of at least 50-60 taps of the Connect volume slider movement where full signal fidelity can be received in analog mode and, where one in principle or in prejudice doesn't care for the Connect DAC, in digital output mode as well. And allied to judicious use of the volume control of the downstream amp, there is even the advantage in variable mode of being able to use the Sonos App for remote volume control!

Seems to me that this entire issue is a molehill then, that can be easily bypassed, IF noticed when in fixed output mode, for music with high dynamic range. And therefore, it can well be something for Sonos to look at only when time hangs heavy on their developers' hands!

If you start a new thread, it might also be a good idea to give this one a proper funeral.
PS: I am however curious - is it that the 1dB cut is an on/off at 89% or does it gradually rise from 89%, reaching 1dB at 100% volume level?
Gradual change.

I'm surprised that no-one from Sonos was able to set our minds at ease. It's taken us 14 pages!!
Gradual makes it even more likely that the other respondents here only succumbed to Confirmation Bias on reading the thread. Reinforcing my conviction: Biases rule, Yo!

Sonos staff here simply passed on the concern expressed to an inbox somewhere; it may even still be lying there if inbox clearance is prioritised based on with what product the inbox is labelled.

We also seem to have discovered that it is better to use Connect in variable mode rather than fixed, if one is obsessed with the very last bit of barely heard differences from the original signal. And there, not to cross 88% on the Connect volume control. But it is impossible to disseminate this information.
I remember reading somewhere - ratty? - that each tap is 1% resolution
This is correct.

Also you can determine the actual volume setting at http://x.x.x.x:1400/status/jffs/localsettings.txt. Look for the AMV item in the EQ line. (Don't ask me for a complete interpretation of the other items. Some are obvious, others less so.)

Note that the contents of /localsettings.txt are not updated immediately. There's a certain hysteresis, presumably to cut down on the number of write cycles to non-volatile RAM.

Also you can determine the actual volume setting at http://x.x.x.x:1400/status/jffs/localsettings.txt. Look for the AMV item in the EQ line. (Don't ask me for a complete interpretation of the other items. Some are obvious, others less so.)

Good input. I doubt if this will be needed more than a couple of times at most, if ever. Tapping down ten times once from the right, and then eyeballing the level to not cross in future ought to work fine for most, if not all. And the volume setting on the downstream amp can be set once such that max desired volume from the speakers can be obtained at about 80% of max on the Connect, so there isn't the possibility of straying over the 88% line. Which is how I operate my zp90 today anyway, with the Sonos slider never having to exceed the 20-80 range of its motion.
Userlevel 5
Badge +4
The issue with Volume Normalisation is more about losing the feel of certain albums rather than losing it being bit perfect.

Get a recording where the first couple of tracks are pretty quiet and then the third track is loud, well you lose that, you lose the dramatic effect.

Spotify got absolutely blasted for doing this a few years back, they made it optional around 2009 time.
When users could toggle it on/off even those that said it was not an issue suddenly started to say how much better it was with it turned off.
Now the Sonos implementation of it may be far better, but I would still like the ability to hear the track as it was intended.
I would still like the ability to hear the track as it was intended.
If you read this thread you will see that Peter has shown you how to do this: switch Connect to variable level mode and don't exceed 88% on its volume slider.

There is nothing that Sonos can do if your third party speaker, where you have kept it, or poor room acoustics are coming in the way of this.
There is a workaround to the bit-imperfection issue - use variable volume mode with the volume slider set to at least 13 taps less than maximum. For more details, see this topic.

Cheers, Peter.
I would still like the ability to hear the track as it was intended.
If you read this thread you will see that Peter has shown you how to do this: switch Connect to variable level mode and don't exceed 88% on its volume slider.


I think you are talking at cross purposes and Kumar, you seem to have missed the point of gizze's complaint.

Peter's research (very useful, thank you) has shown how it is possible to remove degradation of peaks due to the limiter by reducing the digital volume level slightly. IMO there are still usability issues with this, especially when dealing with grouped volume control, but it is a workable solution.

This, however, is not the volume normalisation itself, but a by-product of the way Sonos has implemented normalisation. Even when the digital volume is reduced volume normalisation takes place. It just doesn't doesn't trigger the limiter.

The whole issue of volume normalisation is quite messy. There are times (such as when playing a playlist of random songs) when you probably want all of the songs to sound approximately the same level. 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.

This is what gizze is complaining about (as I read it, please correct me if I'm wrong).

There are a few solutions to this. the obvious and basic one is to allow users to turn off volume normalisation completely.

The other main approach provides different volume normalisation approaches for the different scenarios described above. This is supported in ReplayGain and (I believe) in Apple's SoundCheck. Whether it is supported in tracks streamed from Spotify or other content providers I do not know.

The basic premise is you store two measurements for each track. In Replaygain these are the "track gain" and the "album gain". These tell you how to adjust the gain when in track-by-track mode and when playing in album mode. The album mode is designed to adjust all tracks in the album equally and allows back to back albums to be played such that each album sounds approximately as loud as all others (overall) but the levels between tracks within an album are maintained.

This is then backed up with an implementation that allows the user to select which normalisation scheme they want to use (for their given requirement) or to turn it off completely. Unfortunately Sonos has never supported this implementation.

There are also "smart" schemes which try to decide which form of normalisation is used depending on the contents of the playlist, but there are always scenarios where they will get it wrong, so the manual selection is really still required.

Cheers,

Keith
In my hearing, I don't see that Sonos has done anything useful with normalisation. On every unit from play 1 through to zp90, some of my well recorded jazz albums play louder than others, at the same volume control level. Whether these are played individually, or in a playlist that contains both. And Apple Music is always lower than NAS delivered music.

I don't have any albums where one track is very low and another very loud to comment on what Sonos does with these. I suspect it does little.

And generally speaking, on any of my well recorded albums that have a high dynamic range, I don't notice any compression effect; music sounds just as it did via CDPs directly into the amp.
Even when the digital volume is reduced volume normalisation takes place. It just doesn't doesn't trigger the limiter.

How, when Peter shows that there is no difference between the source and the output of Connect below 87% of volume? And that at 100%, the only difference is a 1dB cut at the top?

What have I missed?
I believe Peter Mc has -- at least on the MQA thread -- been using WAV test files. AFAICR Sonos has never attempted to normalise volume for WAV.
Over to you Peter, I note that you have used WAV here as well. So is the Connect bit perfect only in variable level mode up to 87% with WAV, but not so with ALAC, AIFF, AAC and more? The thread still has legs! Based just on what I hear with ALAC/AAC with all my units that aren't Connect, I am guessing you will not find anything different with files of those codecs, but only you can know for sure:D
If the waters needed to be muddied further, Ryan said this on this thread when asked why this move away from bit perfect:
"We are talking about a minor change to the audio when applying normalisation."
Did he not realise that the change noticed was for a WAV file? Or does Sonos now normalise those as well? If so, is this via the gradual up to 1dB limiting found up to 13 taps down from maximum volume levels?
Wheels within wheels...with my personal bottom line being that I don't have a Connect - just a zp90 - all my files are ALAC/AAC, the best recorded music sounds just as good as it always has with my max volumes never exceeding 80% and to top it all, I don't see any effective normalisation in my set up🆒.
Yes, I've always looked at wav files to eliminate compression/tag issues (except in the MQA thread where I first looked at 24 bit FLAC files before discovering 24 bit wav files also now play - albeit at 16 bit).

Volume normalization works the same as a volume control, turning down all parts/amplitudes/frequencies equally. The volume change amount is obtained from tags embedded in the file. Sonos would have to pre-scan the entire file to work this change out. It can't do this because a song starts playing within a second or two, almost certainly before the entire file has been downloaded from Deezer etc. Hence Sonos must rely on embedded tags.

The volume normalization tags are calculated by iTunes when ripping a file to ALAC (in my case), or AAC or mp3 if I so chose. This cannot be turned off. Presumably other ripping software can also do this (e.g. Exact Audio Copy can, but it looks like it is selectable - I have used EAC a lot but never tried this feature). Itunes can turn off using the tag when replaying the file. I wish Sonos could do this too.

The tags are stored as meta data that can be seen and edited using mp3tag or similar. Note that wav files cannot store this meta data.

The only ways to bypass the itunes volume normalization are to rip as wav, or remove the tags from ALAC using mp3tag.

Files streamed from music services presumably can contain volume normalization tags. There are a few different tags as Majik mentions above. Apple's tag is called ITUNNORM. I don't know whether Sonos responds to all the different volume normalization tags. I know it responds to the Apple one.

Kumar, a question for you - how do you rip files to your NAS, and in what format? It may be that some contain volume normalization tags and others don't, accounting for the volume differences you hear. It might be useful for you to download mp3tag (it's free) and learn to use it to view file tags. You could also download the Orban Loudness Meter (also free) to check the overall loudness of tracks. With these two tools you should be able to get a better idea of what is causing your volume fluctuation issues.

Cheers, Peter.

Kumar, a question for you - how do you rip files to your NAS, and in what format? It may be that some contain volume normalization tags and others don't, accounting for the volume differences you hear.

Cheers, Peter.

I rip in ALAC in iTunes and buy from Apple/iTunes in AAC 256kbps. I suspect that Sonos does nothing with these tags. In my experience, albums from the HighNote label as one example are recorded to sound louder than those from say, ECM. Both deliver very good sound quality in themselves. Sonos leaves these differences noticeably untouched in my set up, while also leaving them sounding as good as the CDs bought from these labels in a long expired earlier era.
I suspect that Sonos does nothing with these tags.
I respectfully disagree. Try ripping in wav and see if you notice a difference. But if you really want to understand what's going on, download and invest time in learning to use the two programs I mentioned.

I did run an experiment a while ago now where I changed the volume tags through a range of values using mp3tag - it really made a difference.