Month of May, 2008

Limitless Possibilities

When I started thinking about this project, I wanted a great music player. I wanted deep and complex hierarchies that could be queried against to create new and interesting sorting techniques. And I wanted multiple methods of control. iTunes has slightly better metadata than other players I've used, but its user interface is far too strict and the lack of keyboard shortcuts, not to mention global keyboard shortcuts, limits its usefulness to me.

Winamp, my other primary player, has great usability thanks to the jump menu, track queuing, and the variety of global keyboard shortcuts, but its handling of metadata is lackluster despite the improvements in the media library over the last few years. Another great feature of Winamp is its variety of appearances; window docking, autohiding, skinning, and a plugin architecture that greatly extend its behaviour and appearance are all fantastic and I would love to have those features, or a close approximation, in a final product.

But still Winamp lacks one feature I desperately want included into future revisions, and I will have it in whatever application I create. That feature is mouse movement commands. Specifically, my favourite video player, JetAudio, allows you to program activities to the mouse scroll wheel; beyond this, you can program the scroll wheel to perform different actions with different modifier keys. I have mine set up to have volume controlled by the "naked" scroll wheel and fast forwarding and rewinding controlled by Alt + scroll wheel. I can't remember how I used movie players before but I know that I'm absolutely addicted to JetAudio, despite its poor support of Matroska, simply because of this feature. And it's not even handled particularly well.

So far, this is primarily a music player though I did add a feature from a video player I enjoy. But I slowly realized as I began to expand the network of connections that there are limitless possibilities. And there are limitless questions that need to be answered. Podcast organization and manipulation is one thing that no media player has right. Connecting music videos to the band and to the track and to the album is nowhere to be seen. Associating side projects based on related band members is a dream in the twinkle of organizational nerds' eyes. And forget about associating albums based on their producer, or on where the album -- or even the track -- was recorded.

And these are almost exclusively in the domain of music. When you start adding together movies, and TV shows, and the music in their soundtracks. And then adding on to that, movies and TV shows can often be related to novels and comics which need further integration. There are basic standards for reading comic books and novels online so integrating them into the media organizer is merely a matter of grunt work. But this is a hell of a lot of grunt work.

In my mind the best way to handle this is to create a system that can handle any media and implement a plugin system; then for the media I want to support and integrate directly, I simply create and install by default those plugins. Of course managing to maintain that level of generality on the core feature of the application is probably not possible. But I'm going to do my best to figure out a way to do it, and I'll start with music. And once I've got that working I'll expand into the limitless possibilities.