[Introduction] [Building from source] [Screenshots] [Modes and States] [TODO]
Minstrel is a frontend to the GStreamer library written in Haskell. The interface is designed to fit in with what I want from my music player, so may not agree with you, but I'm sure there's an alternative out there that does! It is currently unreleased, and both it and its libraries are not robust, so you'll need to treat them gently for the time being.
The frontend takes two arguments, a playpool
(filename) and a root
(directory). The
playpool
contains a list of lines like
The Foo Band/Bar Album/The First Track.ogg The Foo Band/Bar Album/The Second Track.ogg
(where ogg is any filetype supported by gstreamer) such
that for each line x
, there is a file
root/x
. Currently the only supported format is
artist/album/track
. Ony way to create a playpool
is cd root && find . -type f -mindepth 2 -print | sed "s/..//" > playpool
.
By default, random tracks from the playpool will be played. Yet to be implemented are other modes such as playing all tracks in random albums and stop after this track/album. You can also select an artist, album or track and press space to add it, or all tracks contained within it if it is not a track, to the playlist. Tracks in the playlist will be played through in order in preference to the random selections normally made. Pressing enter is similar, but adds the appropriate tracks to the beginning of the queue and interrupts the currently playing track to start playing them.
You will need at least GHC 6.3 to build it, as well as the curses and gstreamer development libraries. To get the source you will also need darcs. Then:
darcs get http://urchin.earth.li/darcs/ian/minstrel cd minstrel darcs get http://urchin.earth.li/darcs/ian/cstring darcs get http://urchin.earth.li/darcs/ian/hcurses darcs get http://urchin.earth.li/darcs/ian/hgobject darcs get http://urchin.earth.li/darcs/ian/hgstreamer
Then just run make
to build.
Minstrel can be in one of a number of modes, and one of a number of states. The mode specifies how the next track to be played will be chosen as follows:
An exception is that if the playlist is not empty then the next track on the playlist is played, regardless of the mode. The modes are modified by states as follows: