Sonorous Design Document

Rationale

While the Handheld Controller remains the preferred method for interacting with the  Sonos Multi-Room Music System, there are definite advantages to having the Desktop Controller software available on a desktop or laptop computer:

  • Ability to use Sonos while the Handheld Controller is charging in its cradle.
  • Convenient to be able to approach any computer in the house to interact with your nearest Sonos zone. (The common  Sonos bundles ship with two players for two possible zones and one Handheld Controller.)
  • Some tasks are impossible with the Handheld Controller alone. (Adding new radio stations, for instance.)

However, the one major drawback to the Desktop Controller software that is shipped with Sonos is that it only works on Windows and Mac computers. This is a problem because I,  like many others, use Linux on my home computers.

Alternatives

Like many other networked home media systems, Sonos talks over the standard  UPnP protocol. The interfaces exposed over UPnP by networked home media systems manufacturers however do not seem to be as standardised as one might hope. This means that while there is much generic media control point software out there, none that I have come across exposes all of the functionality available through the Sonos Desktop Controller, which leads me to believe that the best possible alternative will be something that is specifically designed with Sonos in mind rather than trying to be all things to all media systems.

The official Sonos Desktop Controller software does run under  Wine on Linux but I have found that it is unreliable in that environment, crashing frequently.

The only viable alternative that I've found is the excellent Perl-based  SonosWeb tool, which is a web-based controller built especially for Sonos, but does not have the rich UI that the Desktop Controller has.

So in order to address all of these concerns, this project aims to reimplement a fully cross-platform version of, and become a functionally equivalent drop-in replacement for, the Desktop Controller software for Sonos.

Architecture

To speed development, the application will be built around the  Eclipse Rich Client Platform (RCP), which provides such benefits as:

Sonorous Architecture

  • Portability: RCP applications will run anywhere Eclipse runs: Windows, Linux and MacOS.
  • Native look and feel: Unlike normal Java applications, RCP applications get native look and feel for free (no effort on the programmer's part) on all target platforms.
  • Rapid development: The RCP provides many frameworks and extension points for making GUIs easy to generate in order to allow the programmer to focus more on the app's core functionality.
  • OSGi UPnP support: The OSGi framework (that the Eclipse Platform is based on) provides a specification for exposing local and remote UPnP devices as services in the running platform that any application running on the platform may consume, making it a natural choice for developing new UPnP aware applications.

For a small amount of additional effort, it may also be possible to build a web-based interface using the  Eclipse Rich Ajax Platform (RAP), which is very much like RCP, but renders its widgets remotely in a web browser instead of locally on the desktop. Unusually for web applications and because RAP is an implementation of the RCP API, it should be possible to use almost exactly the same source code for both a Desktop Controller application and a Web Controller application. This dual mode of operation should be an attractive and low-maintenance extra feature that neither the shipped Sonos Desktop Controller nor the SonosWeb tool has.

The above right-hand side diagram the basic three layers that will form the application.

 Equinox is an implementation of the core  OSGi framework specification upon which all of Eclipse, including the RCP/RAP runs. Because Equinox does not fully implement all of the optional services specified by OSGi, the UPnP base driver implementation will come from the  Apache Felix implementation of the OSGi framework.

The application will then be a collection of plug-ins sitting on top of the RCP or RAP for all of its user interface needs and consuming services provided by the OSGi UPnP layer to actually interact with the Sonos system over the network.

User Interface

There is no compelling reason to change the user interface significantly from the layout used by the Sonos Desktop Controller software; it certainly seems to serve well enough for  SonosWeb to mimic it in many of its themes.

Each of the large sections in the mock-up shown below would translate conveniently into an Eclipse 'view' that would bring with it, for free, all the associated fanciness such as allowing the user to close, resize or rearrange any view in the application. Unlike the official Sonos Desktop Controller, although the user may start with the default UI layout detailed below, the power of the RCP will give this application the flexibility to allow the user to tailor the UI to their own needs.

Sonorous User Interface

Sonorous Home | Downloads | View Source | Report Bug

Attachments