Dieses Dokuwiki verwendet ein von Anymorphic Webdesign erstelltes Thema.

Welcome

and enter sleek's humble home page!

You'll find limited information on sleek, a music player written in C++ using the Qt4 framework, made to mimic montypc.

It is given to you under the GPLv2 license.

What about it?

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).

Unique features

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

Screenie weenies

Quick download links

TL;DR? Use one of the binaries provided here, or scroll more down to see source, more information etc

Current status

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.

Anyway, let's take a look at the features!

Core

  • 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

Plugins

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:

  • Show/hide the mainwindow:
    qdbus org.thimhallan.jerous /Main toggleWindow
  • Toggle playing/pauzed state:
    qdbus org.thimhallan.jerous /Player togglePlayState
  • Play the next song:
    qdbus org.thimhallan.jerous /Player playNext
  • Display current song using notify-send (linux):
    notify-send -t 3000 "$(qdbus org.thimhallan.jerous /SongInfo print | \
    sed 's: :\n:g'| sed 's:]*>::g')"
  • Display current song using growlnotify (MAC OS X):
    qdbus org.thimhallan.jerous /SongInfo print | \
    sed 's:]*>::g' | growlnotify -t \"sleek - now playing\" \
    –image \"$(qdbus org.thimhallan.jerous /AlbumCover coverPath)\"

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.

Dependencies

Running the binary

  • UNIX (tested on linux and OSX, but BSD should work fine); Windows (limited functionality)
  • Qt (usually one of the latest versions is used, but older versions might work too)

Compiling

  • the regular stuff: g++, make, Qt …
  • libtag
  • libcurl
  • optional liblastfm
  • gstreamer is imho the best backend, so it's a plus if you have it

What the future holds

Currently, sleek has most of the functionality I need, so what's left are additions making sleek even more decent, IMHO.

  • fix the bugs (report them please!)
  • replaygain
  • remote file support (first just simple HTTP/FTP, followed by jamendo etc)
  • add FFT to transcriber plugin, beat detection …
  • stats plugin?
  • custom sorting
  • more last.fm integration
  • hierarchical browser

But, if anyone has some interesting features don't hesitate to inform me about the challenge! :)

Download

sleek is kept in a git repository writable only by me.

There is no direct write access to this repository, but you can send patches and then I'll import them :)

Last log entries

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

and many more!

Others

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

Enter your comment:
UNCIN
 
sleek.txt · Last modified: 2012/02/05 08:37 by jerous
You are here: startsleek
Dieses Dokuwiki verwendet ein von Anymorphic Webdesign erstelltes Thema.
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0