JReceiver Audio Serverhosting for the Rio and beyond
Author & Acknowledgements
New rich Swing-based JRec client is launched!10-June-2003
Chris Campbell announces:
Just a quick note to say that the "Mu" project (pronounced "mu", interpret however you'd like) has been launched on the new java.net community site:
In short, it's a rich, graphical client that presents your local and JReceiver-based media collection in one convenient interface. There are WebStart enabled links for you to try out on the page mentioned above. Better yet, it's an open source project, so if you find it useful (or if you find, ahem, bugs), please contribute!
He adds an update from the JavaOne conference: Nick R. and company have a great demo showing his J2ME based JRec client and Mu all talking to one JReceiver server. Excellent end-to-end Java story.
This is mainly a maintenance release which includes bugfixes for both JReceiver and the Ptarmigan XML Media Parser.
It also supports recent Jetty releases. Logging configuration is more conventional. Scanning is more efficient. And many other minor changes as well.
Targeted for the next release is VBR support for Ptarmigan. JReceiver will then be feature complete and you see a Beta followed by the full 1.0 release.
Please test this release exhaustively. Try to isolate any defects you find and report them to the SourceForge bugbase. Thanks!
Welcome to the world of heterogeneous music collections!
Gone are the days when your music collection had to conform to a single format. No longer are you constrained to MP3 or even a lossy audio format. Console players such as the Rio Receiver that have been able to play MP3/WMA have been extended to support Ogg Vorbis and the lossless FLAC audio formats.
This release of JReceiver introduces the Ptarmigan Media Parser for XML (http://ptarmigan.sourceforge.net) which extracts various flavors of metadata (ID3v1, ID3v2, Vorbis, etc.) from your audio files, including MP3, WMA, Ogg, FLAC and four different kinds of playlists. It is now the primary means of identifying the mime-type of music files and streams.
Also included is support for the new Jetty 4.1, which conforms to the Servlet 2.3 container spec. Tomcat 4.1 compatibility is approaching and may already have arrived.
Some performance enhancements as well, such as precompiled JSPs using the new Jasper2.
This is largely a maintenance release to address problems that were introduced as a result of the recent changes.
A few enhancements as well, including support for the Rioplay client, WMA (Windows Media) tag parsing, FLAC mime-type support, a "home" button on the status panel, and a few SDK changes as well.
Security has arrived with this 0.2.2 Alpha release of JReceiver!
The new security features are fairly comprehensive and go a long way towards making JRec safe to use in an open network environment. Read the details on these features below.
The JRec API has a new Menuing interface, allowing complex queries to be specified in an abstract syntax independent of database implementation. Read more about these changes on the sdk page.
The 0.2.0 Alpha release of JRec introduces a new control architecture permitting the control of basic player functionality both directly over a network connection or indirectly using an IR emitter like the RedRat2.
The underlying server architecture has undergone an extensive refactoring, consolidating redundant functionality, adding a business-logic layer and paving the way for upcoming features.
Documentation is now available for Server installation on Windows 2000/XP. Windows docs for installing Rio Receiver are likely forthcoming.
The JRec API has seen some changes as well, mostly in the area of consistency made possible by the aforementioned refactoring.
Playlist XML import has been temporarily disabled due to some changes in Struts, the web-application framework on which the manager app relies.
FeaturesJReceiver aims to be a general-purpose audio server with a sophisticated feature set and a development path that occasionally breaks new ground.
Modular and n-tiered - JRec is structured with the goal that most new functionality, such as a SOAP interface, may be added without the need for major surgery.
Deep Metadata - by aggressively indexing ID3 tags and other music metadata, JRec provides new and sophisticated ways of organizing music through user-specified queries.
Open Interface - the core server functionality is exposed in an XML-RPC interface to support a variety of different types of software and hardware players. See the Developer's SDK for a detailed look.
Menu-driven - the XML-RPC interface is geared towards software and hardware clients seeking to navigate with ease over large music collections in order to find the desired stream of music.
Open Standards - eschewing proprietary technology where none is called for, the present implementation employs the Java™ Language, Servlets, JavaServer pages, JDBC, XML and tools from Apache Jakarta and other open-source projects. JRec itself is an open-source project.
Multi-environment - the JRec server is capable of living on a server catering to remote clients, or living within a disk-based player, playing to its own soundcard and possibly remote clients as well.
General-purpose Control Architecture - permits the direct control of devices and players over a net connection via XML-RPC and indirect control via IR emitters like the RedRat2. Control is presently available through the web interface.
Apart from supporting basic queries on artist, album and genre, JRec provides a set of tools to specify playlists based upon complex filters using standard SQL syntax.
Themeable Manager Webapp -- a web application to build dynamic playlists, stream music to your desktop and manage JRec's configuration.
Background File Scanning - user-scheduled file scanner to update database incrementally with new and updated tune and playlist data.
Playlist Files - .m3u and .pls files are read by the scanner and available to be retrieved by name, queried upon and combined with other playlists.
Tree Playlists - permit you to specify folders and individual files of music across multiple filesystems and assign a name and sort order.
Dynamic Playlists - these are playlists defined by a SQL query of tag info and created on-the-fly when requested from a player. You can also 'embed' other playlists as well to modularize your entire music collection.
'Station' Playlists - specify Shoutcast and other external stream sources to play to your Rio Receiver or other JRec player.
Mime-type support - mime-type for each tune is now stored in the database. This makes it possible for clients to view only those formats which they support natively or through transcoding.
User-configurable sort order -- specify a default global sort order or narrowly for a playlist. The sort defaults to "album.name, trackno."
Security - role-based authorization controls access to the metadata and content.
Player Status -- status of all active clients interacting with the server in a web-based panel
Transcoding - convert between audio formats in real-time through the invocation of external transcoding programs. This permits you to play music whose formats would otherwise not be supported by your console player. Example: play .ogg streams on the Rio, which only supports .mp3 and .wma.
DownloadsThough JRec is still in 'alpha' it nevertheless has been updated on a regular basis with stable releases. It may be downloaded NOW from the links below:
RequirementsA Rio Receiver is no longer necessary to use JReceiver. You can now stream individual tunes and playlists to desktop players like WinAmp, Zinf, RealOne, XMMS, etc.
The JReceiver Server presently requires a platform with a Java runtime, version 1.3 or later, a web servlet container (Jetty during the alpha development), a Java compiler (for JavaServer pages) and a recent version of MySQL.
See the install documentation for more detailed requirements.
The installation documents are presently geared towards installation on Linux (and to some extent, Windows) and are slowly expanding to include the broad range of platforms for which the server and its clients is targeted.
The starting point is the server installation, found here.
SupportIf you have a question, it may already be answered here: faq
There is also a troubleshooting help file located here: troubleshooting
You can find support for installation and usage at the Yahoo Group jreceiver_user located at
If you have a question or experience a problem, please post to this list rather than contacting the author directly. He will be monitoring this list along with other users who can probably answer your question more promptly.
FeaturesThe security features introduced with the 0.2.2 alpha release include:
Known vulnerabilitiesSecurity experts will tell you that no app is entirely secure. With this in mind, some of the known problems with JRec:
Developer's SDKFor those interested in developing software or hardware players/clients who might wish to use JReceiver as a server, check out the set of docs at: online local.
CodebaseThe CVS repository may be browsed here. Code metrics are published online local.
Author & Acknowledgements(in chronological order)
Reed Esau () is the founder and lead of the project.
This work grew out of experimentation with Jeff Mock's Perl-based implementation which he wrote to support his rebranded Rio from Dell. See Jeff's excellent Rio hacking page at http://www.mock.com/receiver/
Thanks to David Schuetz for his decoding of the display layouts for the Rio Receiver and providing layouts for the 0.1.8 release. For more details on the structure, see here.
(0.1.9) Philip Gladstone (http://www.gladstonefamily.net) is responsible for the streaming capture and transcoding support.
(0.2.0) Mark Harrison is responsible for the Windows docs for JRec Server installation.