IMMS is an adaptive playlist framework that tracks your listening patterns and dynamically adapts to your taste.
Currently plug-ins for XMMS, Beep Media Player, Quod Libet and Audacious are available.

Its major features include:

  • IMMS is easy to install. It is purely a plugin - no XMMS patch required.
    A very lightweight embedded SQL database is used, so there's no need to setup a RDBMS.
  • IMMS is easy to use. Song rating is done completely transparently to the user. It does not get in your way.
  • IMMS does a much better job of shuffling than most players. It keeps track of when a song was last played, and makes sure same songs are not repeated too often. It is even able to recognise different versions of the same song (eg. remixes) and treat them as one song!
  • IMMS uses a variety of techniques to figure out which songs should be played together, and which should not. It studies your listening habits, as well as using acoustic properties of the songs themselves, such as BPM and frequency spectrum.
  • IMMS is fair. Even unfavoured songs have a (small) chance of being played.

It should a relatively easy to write IMMS plugins for new players, provided they have a sufficiently robust plugins interface. You will need things like get_current_song, get_playlist_length, get_playlist_entry, and ideally (but not necessarily) some mechanism for specifying the next song. XMMS/BMP plugins should give you a good idea of what needs to be done.


Anyone who has a large collection of music knows how difficult it is to manage. There are always some songs that are just not as good as the rest, and for some reason they always seem to come on. Simply deleting them might not be a good solution. What if you come to like some of them later? What if you share your music collection with somebody else and they happen to like them? What if you are just too lazy to go through every single song and decide if you like it?

I wanted a system that would know which songs I liked and play them more often, while being able to dynamically adjust to changes in my taste and not requiring me to do any work. IMMS is a classic example of the can't-somebody-else-do-it? philosophy.


The basic idea is not new. We can guess how favored a certain song is by keeping track of how often it was skipped. The feature that sets IMMS apart from other adaptive playlist management systems is complete transparency to the user. After the installation, IMMS quietly collects information in the background and uses it to help your mp3 player select songs with no user interaction whatsoever. This feature makes IMMS incredibly unobtrusive and easy to use.


It's quite simple, really. When you skip a song its rating is decreased. The lower the song's rating the less likely it is to be played. Songs acquire positive ratings by not being skipped. If you skip a few songs, the next song that will get played fully gets an even higher rating. In short, you don't need to worry about it. Just enable the plugin and continue using you mp3 player normally, and IMMS will magically do its thing. It does, however, take a while for IMMS to become familiar with your listening habits, so be patient.


Written (and directed) by mag. If you have any comments/suggestion feel free to contact him, or the Mailing List.