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:
- 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.
Attachments
-
ConsonosArchitecture.png
(16.1 KB) - added by mbooth
18 months ago.
Sonorous Architecture
-
ConsonosArchitecture.svg
(6.1 KB) - added by mbooth
18 months ago.
Sonorous Architecture Source
-
ConsonosUserInterface.png
(91.7 KB) - added by mbooth
18 months ago.
Sonorous User Interface
-
ConsonosUserInterface.svg
(12.5 KB) - added by mbooth
18 months ago.
Sonorous User Interface Source

