Cataloguing your MP3s for the Philips Streamium

The Problem

In a machine that is typically used for fabricating LEDs, a very thin layer of photonic crystals, which converts the UV light into colors, is deposited on the glass surface as a vapor. Then, through lithographic printing, specific rolex replica parts of the photonic crystal layer are activated so that they react when exposed to UV light. In order for different colors to appear under the UV light, the photonic crystals are given different geometries and replica watches sale are oriented in different directions with respect to the glass. This work represents the latest development in at least a decade-long history of nanotechnology being used in anti-counterfeiting and brand protection. This replica omega blog covered the related efforts of a small startup, called SingularID, years ago; it was purchased by Bilcare Research nearly a decade ago. Bilcare has taken the technology, which is essentially a nanoscale magnetic material that replica watches uk acts as a sort of "fingerprint" for each product, and built a healthy business around it. The entire solution involves a special device to read the nanoparticles and the software that runs it.

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:
[mono] pclinkscan.exe [options] mp3path url [streamsfile]
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:
<streams name='streams'>
	<group name='mygroup'>
		<url name='mystream'>http://mycomputer:8000/mystream
	</group>
</streams>
There is a sample streams file here.

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.


Download

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

Version 0.5
Compiled version - pclinkscan.exe
Source C# - pclinkscan.cs
Changes

pclink.pl

Modified version of Nathan Peterson's pclink.pl to include extra features supported by pclinkscan

See Nathan's site for more details on pclink.pl


Last modified Mon Dec 23 12:40:15 GMT 2003
paul@paulhalloran.com