The Philips Streamium MC-i200 is a micro hifi system that will allow you to listen
to internet radio stations or to stream MP3s from your home PC. However,
the Musicmatch software that is supplied with is not very flexible.
Firstly, it is only possible to play those radio stations chosen by
Philips. The Streamium can actually play any streaming MP3 station -
however Philips likes to be able to control which ones you can listen to.
Secondly, there is not
much control over the way your MP3s are catalogued, and it will only run on a
Windows machine.
The Solution
The solution is of course to write your own substitute for the PCLink
software supplied by Philips. This is exactly what Nathan Peterson
has done, you can see his perl pclink server and an explanation of the
protocol use by the Streamium here.
Nathan's server allows you to create a nodes file that describes your MP3 files and
provides a link to them on your webserver.
Cataloguing
Nathan's software needs a file called nodesfile.txt that contains links to
your MP3 files. In order to create a nodesfile.txt file automatically, you
can use my pclinkscan utility. pclinkscan will scan through
a directory of MP3s and create a nodesfiles.txt file that can be used with
Nathan's pclink.pl server. In a similar way to Musicmatch, pclinkscan
will catalogue your MP3s by track, artist and album - it does this by reading the
ID3 tags of your MP3s. pclinkscan will also sort your MP3s and index them
so you can quickly search for them by entering the first character into
your streamium using the remote control. pclinkscan will also scan for
any playlist (m3u) files you have, and include these in the final
nodesfile.txt. Finally, pclinkscan will allow you to add your own list of
internet radio stations that will be included in the nodesfile.txt. The nodesfile
is arranged by pclinkscan so that you can browse your music by artist, album,
artist/album (ie select an artist, then select from a list of albums by that artist),
and also by track name. Additionally, you have the options to select your internet
radio stations and your playlists from the top level menu.
How to use it
pclinkscan is a .NET application that is supplied in compiled and source
(C#) versions. To run it, you must either have a Microsoft Windows system
with the .NET framework installed (you can get this from
windowsupdate) or you can
run it on Linux using the excellent Mono (pclinkscan has been tested on
mono 0.20 under Redhat Linux 9 - other distros/versions of mono may/may
not work). The format of the command line
is:
The mp3path is the full path to your MP3s. Your MP3s can be stored in a
directory hierarchy - pclinkscan will traverse the directory tree. Any
playlists that you want included should also be in this directory
hierarchy. The url is the url that points to the root directory of you
MP3 directory tree (eg http://mymachine/mp3). You must have a webserver
pointing to this root directory - this is a simple matter of configuring
IIS, Apache or another webserver. Lastly, the streams file is an xml file
that contains a hierarchy of internet radio stations - these will also
be added to the nodesfile.txt. The format of the streams file is as follows:
The options are as follows:
-k Kill single track albums
-l Try to guess length of MP3 (may be slow and will
not work properly with VBR MP3s)
The file nodesfile.txt will be written to the current directory. This
should be used in conjunction with pclink.pl. You can download both the
modified pclink.pl and pclinkscan here.
How it works
Firstly, see Nathan's
excellent
website that details the
Streamium's protocol. I have extended Nathan's pclink server to
support more of the features provided by pclinkscan. The format for the
nodesfile.txt that is produced by pclinkscan.exe is as follows:
nodeid;name;link(s);options
The nodeid is the unique identifier for the node. The first node must be
zero, but subsequent nodes need not be sequential. To create a hierarchy,
you can put a list of nodes into the links section like this:
0;Arists;1,2,3
1;The Cure;4,5
2;The Charlatans;8,9
3;The Stone Roses;6,7
This will create a list of artists, which will then point to other nodes
(presumably containing tracks or albums). Searching is
achieved by adding an idx parameter in the options part. The format of
this is idx(XN) where X is the character to be searched and N is the
position of the item in the list to which you would like to scroll to
starting from zero (not the nodeid!). The Streamium allows you to enter
the numbers 0-9 and the characters A-Z to search. If no idx is provided, then pclink will return
to the beginning of the current list. In the above case, if we wanted the search
character 'C' to point to 'The Cure' and 'S' to point to 'The Stone Roses'
we would use the folllowing:
0;Arists;1,2,3;idx(C0),idx(S2)
1;The Cure;4,5
2;The Charlatans;8,9
3;The Stone Roses;6,7
The link for track nodes is passed in as a url in the links section. The
length() and artist() options can be used to pass in the length of the
MP3 in seconds and the artist of the MP3. The MP3 will work without
artist and length information - it will simply not show it on the
Streamium. ie:
1;The Cure;4,5
3;The Stone Roses;6,7
4;The Lovecats;http://mymachine/mp3/cure - lovecats.mp3;length(123),artist(Cure)
6;I Am The Resurrection;http://mymachine/mp3/stone roses - i amd the resurrection.mp3;length(321),artist(Stone Roses)
Playlists and albums are slightly different as they are referenced by the
Streamium numerically rather than sorted alphanumerically. Both playlists
and albums are supported by pclinkscan. You can
specify a numeric list in the nodesfile by adding a num() option at the
end of the list. For example:
4;The Lovecats;http://mymachine/mp3/cure - lovecats.mp3;length(123),artist(Cure)
6;I Am The Resurrection;http://mymachine/mp3/stone roses - i amd the resurrection.mp3;length(321),artist(Stone Roses)
10;My Playlist;4,6;num()
There is no need to use any idx parameters in a numeric list, the
streamium itself calculates which node is needed when the user types in a
track number with the remote control.
Known problems
Foreign characters in file names may not work properly when using
pclinkscan under mono - an error may be caused. This is especially likely
to happen if the file has been created
on a Windows machine and copied to a Linux machine using Samba. Windows
machines (at least from XP) seem to use unicode which does not always seem
to work properly using mono on a Linux machine. The workaround is to remove foreign
characters from filenames. You may put
foreign characters into the ID3 tag of a file, the pclinkscan utility
should handle it properly as long as the character is in the
iso-8859-1 (Latin1) character set. If the character is not within this
character set, the character may be garbled or ignored altogether.
mc-i250
As I do not have an mc-i250, I cannot give any support for this model, but
if you have got pclinkscan and pclink.pl working with your mc-i250, please
let me know. Update - I have been informed that pclink.pl and
pclinkscan work with the mc-i250. The protocol does no appear to have
changed from the mc-i200.
Disclaimer: No guarentee is made as to the functionality of this
software. Also, by downloading this software you agree to take full
responsibilty for any consequences of using the software. Do not download
this software if you do not agree to this.
pclinkscan
pclinkscan is released as GPL. It contains GPL code from Jason
Motylinski's ID3v2.1
application. Please take a moment to read the GPL.
If you have any comments, suggestions or modifications to pclinkscan, you can contact me on paul@paulhalloran.com