Goal? create a usable, fast, big-library-handling (tested with +12k songs), pluggable, logical music player. In one word: sleek.
Why? There are a lot of nice media players, but they always miss something.
Sleek is my playground in this quest. E.g. I love playing albums. Better even if the album is picked randomly. Sometimes I want to listen to random songs from an artist. Sometimes I don't care. But few players seem to offer me this! Or I like to play around with the UI (Only albumart? Colorful song info? Just a playlist? Some info about the artist?)
Works on linux and MAC (I've been able to compile it on Windows, but since DBUS and Phonon are missing, it's not as full featured and well working as I wish. But, it can play and doesn't eat your babies).
Sleek is missing features other players have, but also has features no other players have.
+ fine grained control on how to play. The queue contains files that will be played immediately, the range contains the bin from which we can play songs until it runs out. When it does, it'll select a new range from the active playlist. The current range can be customised; e.g. there is a last.fm mode where it will look on last.fm for related songs and find similar ones in your playlist.
- no replaygain, yet
As of now, sleek is good enough for me: it's usable, fast, handles big libraries (I usually run it with +14 000 songs, and occasionaly use playlists of over 150 000 songs and everything still runs smoothly) and very pluggable!
However, in some ways it's still crappy enough to not use it. E.g. random crashes, the details are not there yet etc.
plays music: mp3, ogg, etc … whatever is supported by your backend
remote song support: supports basic downloading of files – no streaming, though
addon support: an addon is some functionality provided for some purpose. There are four types of addons:
Backend: mplayer, VLC, gstreamer or phonon backend. If one gives problems for playback. It's not to difficult to create another one (the VLC backend was created in about an hour). Why are there so many backends, you ask? Phonon didn't work always as expected, mplayer works fine, but it's resolution is not so great, VLC is too slow when pauzing/resuming, so that leaves us with gstreamer, which seems best fit so far (and also has awesome features, like being able to slow down playback speed!)
RangeStrategy: determines how to choose the next range: Playlist, Album, Artist and LastFM (if LastFM plugin is loaded)
NextSongStrategy: determines how to choose the next song in the current range: Sequential, Shuffle, Random and Repeat.
Plugin: miscellaneous functionality – more of that below!
tags: no proprietary system of tags, but using just the soft-link features of your filesystem (you are not using FAT, are you?)! E.g. if your tagdir is ~/Music/tags, containing subfolders jazz and blues, then all files (directories or regular files) that are symlinked into these directories are assigned the tags jazz and blues, and are searcheable by querying “tags:jazz tags:blues”. This is awesome, because if you want to get rid of sleek, you still have your tags inside the folder, and can drag them to your other player - no vendor lock-in here :)
system tray
proxy support
DBUS support: some plugins and the core support DBUS commands, allowing you to control sleek from whatever application you want
Playlist: a basic element in sleek is a playlist. It contains songs, and is used for the library, playlists, but also for the current range (what will be played next) and queue.
Callbacks: do something on events, e.g. show current track using notify-send when a track changes
The grok of the userinterface is provided by plugins. Current available ones are listed here.
PlayControl: control flow (play, stop, volume etc), and clear selection of what to play: repeat, random song and - woot - random album;
PlaylistViewer: view library, playlists, playlist queue, current range … Includes fast advanced filtering (regex, exact match, substring match,complex expressions), cut 'n' paste, inline albumcover (when AlbumCover plugin is active and DBUS support compiled) …
PlaylistsViewer: view all playlists
Lyrics: fetch lyrics from internet (using google or any other SE), or from a directory for the current song. The killer feature, in my humble opinion, distantiating it from other lyrics plugins, is that it scrolls in function of time. As such, you'll never haver to scroll manually. Also, recently, karaoke support (using the defacto karaoke file format) has been introduced, where it will highlight the current line;
Tabs: fetch tabs from internet (using google or another SE), or from a directory for the current song;
AlbumCover: show albumcover of the current album;
SongInfo: show basic user-formattable information about the current song;
Last.fm: show related artists and recommendations from last.fm, scrobble, play related files to current playing song;
WebInfo: looks information on the internets (wikipedia, last.fm, allmusic.com) and shows it in a browser
Transcriber: a plugin helping transcribe music
Library: look for media files inside specified directories. These files will the be loaded to the library. If the library is not loaded, sleek will just act like a simple player.
Ripper: simple frontend to abcde. So you need to have abcde, cddb, vorbisgain, cdparanoia etc installed. It's a simple plugin, but fine to have it available
DBUS
Jamendo: search on jamendo.com for songs, and download transparently
Some plugins (and sleek itself) support DBUS commands. This allows you to add global shortcuts from within your favourite DE. Some examples:
I haven't found a way yet to run these on MAC OS X. My preferred setup is to put the qdbus commands inside a AppleScript file inside ~/Library/Scripts (e.g. place do shell script “$(qdbus …)” inside a *.scpt file), and assign a shorcut to its execution in QuickSilver.
commit 4ad1f6a3aa3e7ac1e1a1d176aed824e21279d056
Author: jerous
Date: Mon Feb 20 20:38:46 2012 +0100
Start playing a remote song while it is still downloading
commit ac4d742cec1cf63fb4e07ce83ccbdeb8ae3a245e
Author: jerous
Date: Mon Feb 20 20:37:01 2012 +0100
Download: keep track of time
commit 5946dcba06191de920db39a9195513c9ad68ceea
Author: jerous
Date: Mon Feb 20 20:36:23 2012 +0100
Lyrics/Tabs: fix
Bugs and feature requests can be submitted at the issues page.
Alternatively, if you have any remarks, questions, or maybe feature requests, or want to contribute code, drop a comment at this page, or mail me using the contact page!
Discussion