Tag Archives: dolby vision

My experiments with Sonos – 1

How I got discrete front left and right speakers with a Sonos soundbar

I stumbled into Sonos quite by accident. My older 5.1 system with KEF speakers and Denon AVR was donated within family. In any case there were multiple other life changes including a major relocation, for which reasons it had to go.

When setting up my new rented apartment in a new place, we realized that the sleek flat Samsung LED TV sounded dismal! It was tinny with hardly audible dialog, even with the volume cranked up. I was not ready to get a new AVR and speakers plus all the wiring in the rented apartment due to large upfront budget requirements and huge hassles with shifting to a different place. Thus came the idea of a soundbar as a temporary solution. Further research led me to Sonos as a reputable brand with high-performance soundbars like Beam, Playbar etc and wireless multi-room capability. Eventually, I settled on the Beam and it turned out to be a great choice. I did not expect much from a soundbar but the Beam surprised me with its performance and sonic quality. I figured I could extend it later with a Sonos Subwoofer and then surrounds, all wireless to get a 5.1 system. The system is modular and clean. That appealed to me. Over the next two years I judiciously saved up and utilized credit card points to first grab a Sonos Sub and later two One SLs as surrounds piecemeal, till I had a 5.1 system. Setup and operation were painless and the TruePlay room correction (similar to Audyssey in the Denon) really made a difference. Sound quality was awesome for TV and movies but not quite there for music. It was good but with a small soundstage and lack of body.

I continued to follow Sonos developments and eventually upgraded to the Arc soundbar a year later, to get to 5.1.2 which include Dolby Atmos height effects. The Arc was awesome for movies but music performance kept lagging. In fact the Beam was better for music in some ways than the Arc. Ultimately, good as they are, these systems are based on soundbars which have a bunch of drivers crammed into a narrow enclosure. Physics, puts hard limitations. I love to tinker with tech and started digging about whether I can add different speakers as discrete front left and right units which will work wonders for the soundstage and could be used separately for stereo music. Sonos does not have this capability yet, though it is oft-requested by many Sonos users. After a lengthy research I figured out a plan. I got a Sonos Amp paired with the excellent Q Acoustics 3030i speakers. The Amp, as a part of the Sonos ecosystem, can be grouped with the Arc surround setup with seamless streaming between the two. Sonos devices are assigned to logical rooms and then rooms are grouped together. The Q Acoustics 3030i are excellent bookshelf speakers with a wide dynamic range, clarity and low end grunt. They would not jam my smallish living room and look great.

I have to mention here that I do not have any trouble with the so called “Wife Acceptance Factor” or WAF for short in AV circles. Many wives hate speakers in the living room, but not mine! In fact, she thinks good speakers and fancy audio equipment enhance the status of the living room as long as the wires can be sufficiently hidden – what more can an audio enthusiast ask for(other than an unlimited budget of course!).

Monoprice 14 gauge speaker cables and Perlesmith speaker stands were other accessories in my kit. Sonos offers the ability to group speakers together and play the same music across all speakers in the group. These can be in the same room or spread across multiple rooms. What I did was to group the Amp and Arc surround setup into one group in the same room. Additionally, I ethernet-wired the Arc and Amp to the same switch so their wifi is dedicated to the proprietary SonosNet mesh for music streaming and speaker coordination. This resulted in the Q Acoustics to act as kind of front left and right speakers augmenting the Arc soundbar with dramatic results and zero sync delay between the two sets of speakers. Following is a schematic diagram of my layout.

The space behind my sofa is a walkway so I can’t keep the surrounds behind. There are a few additional items visible in the layout, mostly self-explanatory. However, the HDfury Vrroom device needs a bit of introduction. I had switched sometime back from the Samsung to a Bravia OLED TV. The Bravia XR models have outstanding picture quality, color vibrancy and upscaling of HD content to UHD. Their sound quality is also surprisingly awesome. The TV has some surround sound capability and subwoofers with sound emanating from the screen itself. Something that Sony calls Acoustic Surface Audio. This means that I can avoid using the Arc surround for regular TV shows, News, series and kids cartoons. Having surround continuously on is a headache and consumes a lot of power. So what does all this have to do with the Vrroom device?

It turns out that the Bravia cannot do 4k at 120Hz refresh and also support Dolby Vision at the same time due to EDID buffer limitations. Dolby Vision is a step up from HDR10 and really makes the movies pop and games as well (like Forza Horizon 5) are beginning to support it on the Xbox (PS5 does not support DV but has something related called HDR Tone Mapping for games). The HDfury Vrroom is an extremely capable and flexible device to manage HDMI switching, routing, scaling and other signal management. Using it I was able to spoof to the Xbox that the TV can support Dolby Vision at 4k 120Hz and enable LLDV (Low Latency Dolby Vision) where the player, Xbox, is doing the tone mapping. The Vrroom can then map the LLDV signal to custom HDR10 dynamically, resulting in equivalent results to native DV but on an HDR10 display! This is an amazing capability useful for many TVs (mostly Samsung) and Projectors that lack proper DV support.

Following is the wiring and connectivity layout for my setup.

As you can see I am also using a tiny Python program hack over a Sonos limitation with group volume control. I am using the excellent SoCo library that provides a Python interface to the unofficial Sonos UPnP API. It is fun to be able to play with consumer electronics using Python. More on that below along with some points and observations.

  • No audio delay/reverb. Arc and Amp sounds are fully synchronized. No lip sync issues with the TV. I suspect this is because both are connected over ethernet and to the same switch and both are HT components.
  • The Arc soundstage is now greatly expanded with with front L/R speakers and the midrange and mid-bass response opened up.
  • Dialogue is clear and audible.
  • There was slight hint of sibilance and brightness taken care of by Treble -2. This actually mellowed down after the Q Acoustics got over their break-in period.
  • I set Arc surround volume level a little lower than Amp volume. Sub audio, surround audio and height audio are individually boosted. This helps keep midrange from being overly bright as Arc and Amp phantom center are both producing it.
  • Kept surround music mode to Ambient with reduced level.
  • This setup work really great for both music and movies. There is a significant difference for movies. It is almost like a whole added dimension just opened up.
  • For music, the Q Acoustics is presenting me with tones that I seem to have missed earlier. It complements the rest of the Sonos speakers nicely without standing out. I think there is a base overlap between the Qs and Sub. This is slightly noticeable in the mid-bass region though does not annoy me. I have plans to throw Dirac Live into the mix during further future experiments.
  • Since the Qs are 75 watt speakers and the Sonos Amp can drive 125 watts RMS per channel, I kept volume limit on Amp to 75%. I had tried 60% initially but that led to low volume and a bit of midrange clipping/distortion once slider was pushed up.

There were a few problems.

  • Controlling group volume in the Sono app is clunky. I have to do it with the app and adjust relative Arc and Amp volume as well. The percentage relation does not hold always when changing group volume.
  • Cannot have permanent groups without 3 rooms.
  • If I use TV remote volume, it only changes volume of Arc setup, not group volume.
  • No Trueplay room correction on the Amp but it is great nevertheless. As I mentioned above, Dirac Live experimentation is planned for future.

Python offered a solution.

The volume issue was most painful. It is hard to always reach for the mobile phone, unlock it and control volume via the app. Eventually I figured that I can subscribe to Sonos UPnP events for volume changes and then adjust Arc and Amp relative volumes. The SoCo Python library makes it painless. Hacked up a Python program to achieve that. This way the TV remote effectively controls group volume, problem solved. I have to keep the program running on a laptop though while using the systems.

from queue import Empty
from soco import SoCo
from soco.events import event_listener

def set_volume(spkr, base_vol, diff):
    if base_vol >= 100 - diff:
        spkr.volume = base_vol
    elif base_vol < diff:
        spkr.volume = base_vol * 2
    else:
        spkr.volume = base_vol + diff

diff = 3
amp = SoCo("x.x.x.x")
arc = SoCo("x.x.x.x")
set_volume(amp, arc.volume, diff)

sub = arc.renderingControl.subscribe(auto_renew=True)

while True:
    try:
        try:
            event = sub.events.get(timeout=5)
            if 'volume' in event.variables:
                vol = int(event.variables['volume']['Master'])
                set_volume(amp, vol, diff)
        except Empty:
            pass

    except KeyboardInterrupt:
        print('\nUnsubscribing\n')
        sub.unsubscribe()
        event_listener.stop()
        break

Of course the script is quick and dirty. It would be better to use the events_twisted callback interface. More enhancement like rule files are possible. It is also possible to have flexible group definitions which can provide a way to define permanent groups and relative speaker volumes within groups. Maybe even predefined EQ settings for different modes. Use mDNS for example to use device names as opposed to hardcoding IP addresses etc.

Finally I am enjoying both music and movies with a quality theater experience though I can still perceive room for improvement in future. I am finicky with audio due to a nagging OCD.