dev/dream morrigan development week off to a late start

I was supposed to start yesterday, but Quilage stole Saturday and then I went back to my parents for a couple of days to pick up my luggage that took 3 weeks to get from Geneva to Epsom. Thanks for that, Thompson Travel. But I digress…

Initial progress is slow, but that is somewhat expected. Some time taken by re-familiarising my self with RCP stuff, the code I wrote before some time ago. But that all makes sense now and I have nearly finished a very basic playlist editor. All that is left is to link in the methods I have to read and write playlist files to the right bits of RCP. Once this is done, I get to actually try and make it play files.

This is the first major hurdle. Java is not renowned for its media APIs. To work around the myriad of different ways of playing media, I plan to abstract out the actual playback engine so that it can be pluggable. This should also help with cross-platform support. If I am really lucky, I should be able to use DirectShow on Windows and GStreamer on Linux. As for OSX, that’s an SEP.

The first iteration will only be able to play mp3 files, and will use the very simple playback mechanism Tsuki Chama uses in MusicMan. I am lead to believe its cross-platform (I should probably test this) and will do for now as I start to design the playback abstraction layer.

I have planned my work for this week into 4 slightly vague user stories.

1. A user can add local files to a playlist and play them.

2. A user can maintain a library of local media.

3. A user can check media out from a remote media repository.

4. A user can sync metadata against a remote media repository.

I know these are a little vague, but as most of the design process is exploratory they are a sufficient guide for now. Also these clearly don’t cover all the features I want to add, this is just what I think I can do in a week :S. And obviously at the moment, I am still on story 1.

I have a strange flow-chart on a scrap of paper next to me that describes all the interactions I want in the system. Soon I will digitise it and discuss the ideas.

One Response to “dev/dream morrigan development week off to a late start”

  1. Ian says:

    MusicMan would be cross-platform if it worked! =D The libraries I use are all cross-platform, and I’ve had it playing happily on XP, Snow Leopard and Karmic. Only problem is, I think something in Netbeans screwed up pulling in the libraries properly and a build that worked on my dev machine now doesn’t work anywhere.

    It should hopefully be a reasonable example of how to do native MP3 support in Java. MP3SPI/JLayer definitely seems to be a good option, though it’s really picky on badly-encoded files. Tritonus is also used in places, I never really got to the bottom of whether JLayer fully replaces it or not.

    I moved to JAudioTagger for tag reading/writing as JLayer’s functions are slow as all hell when you’ve got 25,000 to do!

Leave a Reply