Tag Archives: smarthome

My experiments with Sonos – 2

Adjusting front L/R crossover on the Amp without a Sonos Sub

After my initial setup and tweaking with the grouped Sonos systems with Q Acoustics speakers, I put it through its paces with a variety of music like Pop, Indian – Bollywood, Indian – Classical, Rock, Disco, Jazz, Oldies, Western Classical etc. I also tried out a few movies with Atmos soundtracks. It was great, but after a while, there was a nag.

The bass at certain frequencies felt too powerful with an edge of boominess. It was not evident always and depended on the soundtrack producing those frequencies. It was somewhat in the mid-bass range. In those cases it actually seemed to overpower some of the midrange and even caused me a bit of fatigue with bass-heavy music.

I was going to tweak the usual bass, treble and sub audio controls when it occurred to me that the Q Acoustics and the Sonos Sub in the Arc group had bass overlap. I had alluded to this in the earlier post but did not pay much attention at that time. The Q3030i can go down to 46Hz while Sonos Sub in the Arc group likely crosses over at a relatively high 96HZ – 100Hz range. This is based on what I read elsewhere. So, we have a significant overlap among the two speakers that is making that range overly powerful. The Q3030i are two-way bookshelf speakers so, if I could set a low-end crossover, it will take the bass load away and let their woofers handle midrange better. Once set, a crossover also adds a high-pass filter to the front speakers to block any frequencies below the crossover point reaching them. The Sonos Amp lets us set a crossover, but only with a subwoofer connected to the Amp. In my setup as described in the previous post, I have the Sonos Sub bonded to the Arc along with surrounds in a 5.1.2 configuration. The Amp is setup as a stereo. Unfortunately, the Sonos Amp tries to be smart and does not provide a crossover control if a subwoofer is not connected to it. I was not going to get another Sub for the Amp just for this!

So, I started looking for possibilities for a dummy subwoofer like load. The Sonos Amp sub out is an RCA line-level output that needs a powered sub. After quite a bit of digging this PAC LC1 RCA level control seemed like a good candidate that puts a 50K ohm dual gang potentiometer across the output. However, I also read that the Amp just tries to detect a connector on the RCA sub out. That means that an even cheaper simple RCA cable should also work. I eventually decided to get a 3.5mm female to 2RCA male audio cable. I had a cheapo powered computer speaker lying around. So, if plugging in a cable did not work, I could then simply connect my computer speaker’s 3.5mm input jack to this to provide an actual load. The speaker will be off and not producing any sound. Interestingly, plugging in just the cable actually worked! The crossover control popped up in the Amp’s Sub Audio section in the Sonos App.

This allowed me to experiment with different crossover settings. I tested the Q3030i speakers alone first, without grouping with the Arc surround to identify the effects of the crossover. The Sonos app allows to easily toggle the Sub audio on or off and made it easy to compare the effect of the crossover. I used some bass-heavy music for testing and eventually settled on a crossover frequency of 96Hz. I also set the Amp’s sub audio level to the minimum of -15. I was not trying to get an actual sub output on the Amp, just wanted the crossover control. The difference was not huge but the effect was quite clear. Taking out all the bass below 96Hz from the Q3030i immediately made them more clearer and detailed with the midrange. It seemed as if a small valve had been opened allowing more clarity through. The woofers are not having to deal with the heavy lifting below 96Hz. I grouped them back to the Arc set and then tested with movies. Dialog was much clearer and distinct. Both vocal and instrumental music showed differences. That slight boominess had disappeared. Explosions still rocked (thanks to the Sonos sub) but with tight control.

The journey still continues. I am having fun and learning a lot of stuff while also enjoying all the music along the way.

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.