Glimmer is a media player which I developed out of necessity because no existing program fulfilled my needs. My goal was to create a standalone media player which was not tied in any way to my desktop PC, and could used in conjunction with my HiFi. All features had to be accessible using only a touch screen, which ruled out iTunes and Windows media player. Both of these programs work perfectly fine, but donít work well using touch screen and lack certain features which I felt I couldnít live without.
The next problem was finding a fully features PC that was small enough to be considered part of my HiFi setup, so in the end I settled for an Acer Aspire Revo R3610 (1.6GHz dual core) with a 500GB HDD and 4GB of memory. This coupled with a Mimo 720S 7Ē monitor gave me an ideal platform for my project. One thing to note here is the Mimo monitor works using only a single USB connection, so no mains power supply is required. The Acer Aspire Revo also has a HDMI out which proved very useful too.
So, the hardware was in place, but no software. After many frustrating hours of downloading and installing many media players I had come to the conclusion that if I wanted to do this properly I would need to write my own software.
The goals were as follows:-
Problems During Development
My initial program fulfilled all the above goals, but I had settled on 16bit graphics in order to be able to get the best speed out of my cover flow implementation. The problem with 16bit colour is that reflections in the cover flow display showed some pretty ugly banding in colours, but the speed was great. So I decided to rewrite everything using 32 bit colour. The results were much more pleasing on the eye, but Iíd halved the speed.
I tried re-writing using DirectX, but unfortunately it ran even slower. The problem is that the graphics card canít hold all the album artwork in video memory, and copying it to video memory on-the-fly was too slow. I wasnít willing to go back to 16bit colour, so Iíve had to suck it up and live with it. The cover flow updates at 40fps, but this will drop on large displays if your video card isnít up to the job.
There is no anti-aliasing on the cover art, due to the fact the best algorithms out there couldnít render fast enough. On my desktop PC running which is a 2.4GHZ Quad running a Radeon X1950 the cover flow renders a full screen at 1360x768 in around 10ms, which is better than I could render a single cover using anti-aliasing. Obviously things are much slower on the Acer, but on the Mimo monitor running at 800x480, things run at a comfortable 40fps.
Another problem I encountered when using a touch screen was that unlike the iPhoneís capacitive display my Mimo monitor being a resistive type was not so sensitive. This resulted in my finger bouncing across the surface of the display which resulted in many Windows thinking Iíd double clicked when I hadnít. This meant that I could no longer use a double click to view album tracks as Iíd initially hoped. In the end I settled on a vertical swipe, either up or down.
Another major problem occurred once I decided to add other file formats such as M4A and WMA. My tag editor wouldnít work with these formats, so I had to hunt down an alternative tagging library. The current implementation works with all supported file formats.
My original intention was to create a music player, not a media player, but somehow I got a little carried away. Iíve since added the ability to play streaming radio stations, supporting both .pls and .m3u streams. This also uses the cover flow display and allows you to assign custom artwork. I then added the ability to record radio streams and play them in the same way you play a CD.
Finally I added video support, although your ability to play video depends on the codecs installed on your PC. The reason for adding video support was because I have the Revo connected to my TV, and with itís HDMI output I thought it would be nice to take advantage of this. Video playback isnít perfect, as the Acer is a little underpowered for this, but it works.
Audio: MP3, M4A, WMA and OGG
Notes: No additional libraries or codecs required.
Video: AVI, MPG, WMV, MOV and MTS.
Notes: Requires the full k-lite codec pack or similar to be installed.
Radio Audio Streams: .PLS and .M3U
Notes: No additional libraries or codecs required.Future Developments
I have toyed with the idea of adding some form of remote control, either using a Windows media centre remote, from a network PC or using custom software running on Window Mobile or an iPhone.
The program uses the following libraries, so many thanks to the people that have made these libraries available and given me great support.
This library allows me to edit tags of all the supported audio formats the program supports. It is well written and well worth a look.
Bass Audio Library
What can I say about this audio library that hasnít already been said before. It really doesnít get much better than this, and there is a great community of people adding free plugins and willing to offer great support. If you are wanting to write an audio application, I highly recommend this audio engine.
You can download a free copy of Glimmer from the download section of the web site.