logo Chorale on Sourceforge

What is Chorale?
Chorale is a framework for home-network-enabled multimedia applications. It includes clients and servers for UPnP A/V and other protocols, with the larger ultimate aim of tying together all a user’s disparate multimedia gear into a seamless whole.

A fuller list of features can be found here.

At present it runs only on Linux or similar operating systems; the server side of it has been partially ported to Win32 using Mingw32, but there is no Windows user-interface available.

What state is it in?
Chorale is, overall, in beta as of 0.15, but some features are more experimental than others.

This functionality is all fairly mature: the CD ripping with FreeDB.org metadata lookup, the Rio Receiver server, the UPnP MediaServer server, and the UPnP MediaRenderer server.

These features are more experimental: the UPnP MediaServer client, the UPnP MediaRenderer client, the Receiver-protocol client, and the networked CD ripping.

These are very experimental, and should probably be regarded as proof-of-concept only: DVB-T (“Freeview”) over UPnP/Receiver protocols, DVB-T recording, and the Win32 service support.

Further information is included in the README in the Chorale distribution.

There are Sourceforge.net forums for discussion of using, customising, or contributing to Chorale.

How do I get Chorale?
The Chorale source distribution can be obtained from the Sourceforge.net download page. Chorale is currently available for Windows as a binary release, and for everything else as source.

If compiling from source, you will need at least Taglib and Boost installed, and preferably also Qt4, GStreamer, cdparanoia, libcddb, Lame, Flac, D-Bus, Hal, and libmpg123. If you edit the XML service descriptions, you will also need xsltproc from libxslt 1.1.20 or later (note that this is newer than the version in Debian 4.0 “Etch”). If you edit any of the graphics, you will also need Inkscape and Imagemagick.

The installation instructions for Linux and Windows are available online (and are also included in the downloads).

If you have Doxygen and Graphviz installed, you can make some fairly complete source documentation from the source distribution. The pre-built Doxygen documentation is not offered for download, as there’s some 60MB of it, but the main page is reproduced here.

Any problems or bugs should be reported via the Sourceforge.net tracking system, and not just mentioned in your Facebook status, nor at beer festivals. ;)

Related projects

GMediaServer is an alternative UPnP MediaServer server; likewise GMediaRender is an alternative UPnP MediaRenderer server. Chorale works as a client to these servers (but the servers in Chorale have features that these don’t).

MPD is a bit like a one-server, one-output, one-control-point version of Chorale, but over its own custom protocol rather than UPnP; so is Mserv.

What does it have going for it?
As a CD ripper, it rips to both FLAC and MP3 simultaneously, automatically taking advantage of multi-CPU or multi-core systems; you can rip from multiple CD drives simultaneously, even ones on different computers (using the networked ripping features).

As a media control point, it lets you cue up songs from any music server on your network, on any audio output on your network, creating a seamless multi-room audio system from your existing hardware.

As a digital radio gateway, it lets you listen to DVB-T radio on your existing media players.

As a media server, it serves FLAC to clients which understand FLAC (for fidelity), MP3 to clients which don’t (for compatibility). It can also gateway from one media streaming protocol to another — for instance, to serve UPnP clients from a Rio Central.

As a modular media-management framework, it serves as the ideal starting point for developers adding UPnP and other media-management support to other applications. (Chorale comes with a complete example playback UI written in Qt4, but it’s certainly no Sonique and I expect that you can do better.)

Other major features are listed here.

What is the licence?
The Chorale source code itself is placed in the public domain, and all copyright is disclaimed. Use it as if it were your own.

This largesse is not, of course, extended to Chorale binaries which link against other people’s work (and nor could it be). Depending on how Chorale was configured and exactly which installed libraries are found, these binaries link in some circumstances against libraries (Qt before version 4.5.0, libcdio) which are distributed under the GNU General Public Licence version 3. In these circumstances the Chorale binaries too must be distributed under the GPLv3, a copy of which can be found in the file COPYING.GPL in the Chorale source distribution.

Even if no GPL libraries are found or used, Chorale binaries may well link against other libraries (including, at least, Taglib) which are distributed under the GNU Library General Public Licence, found in the file COPYING.LGPL. Such binaries are therefore “works that use the Library” as per Section 5 of the LGPL, and you must not redistribute them without complying with the requirements of Section 6.

It is possible to configure Chorale to use no GPL or LGPL libraries at all (and thus to be redistributable under any open or closed licence of your choice) — but only at the expense of markedly reduced functionality. Packagers for normal desktop distributions are encouraged to enable all GPL/LGPL dependencies.

There is a slightly fuller account in the file COPYING in the Chorale distribution, whose advice is repeated here that you should get proper legal advice if unsure.

Acknowledgements
The Chorale project is grateful for the loan of one of those jolly nice Roku Soundbridge music players, which has been very helpful.

Get chorale at SourceForge.net. Fast, secure and Free Open Source software downloads Chorale is graciously hosted by Sourceforge.

Tony has been a most effective beta tester, and you can thank him for the fact that Chorale’s UPnP server now works with the Sony Playstation 3 as a client.

Any trademarks used on this page or in this software are used for descriptive purposes only, with no intent of arrogation of rights.

— Peter Hartley, 2009-May-01