To MPD or NIH

I cannot tell if MPD is what I want. Things like this and this lead me to believe that it is beyond repair, but things like this and this give me the faint feeling that it might not be.

What I want is a music architecture that has a a core that plays a music file to a soundcard, takes direction from any number of stackable plugins, and feeds event data to any number of stackable plugins.

I'm less sure about whether I want some kind of shared database or if each plugin should have to maintain its own database infrastructure. If tracks should be identified by MusicBrainz IDs, how do you handle files lacking those tags?

I want song selection plugins: one that does playlists, one that selects randomly, ones that choose via arbitrary algorithms (vux, last.fm recommendations, a snippet of user-entered pseudocode/query, and so on). These should be able to handle files local to the core process, files on the client machines, simple http audio streams, and last.fm radio.

The core should be able to communicate to any number of event plugins when a track starts, when a track is at an arbitrary point (240 seconds, halfway, etc.), when a track ends, when a track is skipped (whether by user action or plugin logic), when a track is paused, and so forth. I want event plugins: last.fm reporting via Audioscrobbler 1.2 or newer, vux preference tracking, simple statistics tracking, logging, and anything else anyone might want to keep track of reasonably.

I have some scarier ideas, but they can wait.

Posted on 2008-05-24
Tags: barks, zomg