Partyman: A nifty frontend for DerMixD

This page is not maintained anymore, since Partyman has been integrated into a tool collection called SLART. Please update your bookmarks and links to


Partyman is a simple double-deck audio player that keeps on playing as long as it's running. If it finds entries in its own playlist, these are played, otherwise random tracks are chosen. It also crossfades between the tracks automatically. The main purpose for this program is providing some background music for a party, respecting requests. It is based upon Qt4 (needs Qt 4.2 or better) and uses DerMixD as a backend.


Current Version is 0.7.1


Development of Partyman has not stopped, but the integration into SLART takes it's time, as well as the time needed for developing the other applications. So, there's still no release, but you can check out the current development version via git. Just check the SLART page for details.
New release (V0.5). Boy, this one was only planned as a minor facelift with the settings dialog as the only real feature. But, one thing led to another, new ideas arose, and now it's the biggest update in the short history of Partyman. Most notable changes are: The biggest change is almost not notable: an extensible UDP interface for interprocess communication has been implemented. I'm also working on some other programs, like a frontend for libparanoia and libvorbisenc to rip cds and encode it into OggVorbis files, and a tag editor. These will also communicate over the same interface. The current cdripper prototype can already enqueue newly ripped files into the playlist of Partyman. This collection of tools will be called "SvOlli's Little Audio Related Thingies" or "SLART" for short. All tools will be named after songs. I'm not sure about the distribution though, but it looks like Partyman will be also additionally be available as a single download.
New release (V0.4)
New release (V0.3)
There's a new release (V0.2) that fixes the following bugs: It also introduces a new feature: the playlist/browser/search area now accepts drops, so the playlist can be filled also from konqueror for example. The best part about this is that files which are not in the database are also accepted.

Commandline options for DerMixD hostname & port, crossplay time, and displaying communication with DerMixD have also been implemented.
A mailing list has been created. To subscribe send a mail to minimalist |at| svolli |dot| dynxs |dot| de with the subject "subscribe partyman" (without the quotes of cause).
Inital release.


Please note that the size of the images just reflect my typical usage, the window is fully resizable.

browser screenshot search screenshot browser screenshot about screenshot config dialog screenshot

Hello Mr. Piracyhunter, all OGGs in the Screenshot above have been encoded from my own CDs.


You need to have DerMixD up and running. Then you can start Partyman with

./Partyman list1.m3u list2.m3u ...

There are also commandline opions that are introduced by calling "./Partyman -h". So you start Partyman with one or more m3u-files.

All command line parameters that were valid until V0.4 have been removed!

Just start Partyman and off you go. If Partyman can't find a m3u database, the settings dialog will pop up at start so that you can provide one. This settings dialog can be brought back up again by clicking on the red "Settings" link on the "About" tab. The m3u file is used as the primary database. Relative filenames will be resolved to the position of the m3u file. If you've got no m3u file you can create one yourself simply with

find /path/to/music -iname \*.mp3 -o \*.ogg > all.m3u

Once the program has been started there are three areas of interest:

  1. On top there are the two players.
  2. In the middle there's a playlist.
  3. On the bottom there's a browser and search applet.

Press the "Connect" button to connect to DerMixD and after a successful connection, Partyman will start playing automatically. If the playlist is empty, it will pick a random file from the database. 10 seconds before that track ends, the other player kicks off. You can also switch to the other player instantly by pressing the "Next"-Button.

To fill the playlist just browse the database with mouse or keyboard. The enter key, double clicking or pressing the right mouse button will add the track to the bottom of the playlist. If it's a folder all contents and sub-contents will be added. Double clicking, Pressing delete or the right mouse button will delete all selected tracks in the playlist. Click and hold an entry to move it.

For using the search just enter a substring of the desired track name, the full pathname will be searched. Pressing enter will start the search, wildcard searching using "*" is supported. Found entries can be moved to the playlist by selecting them and double clicking, pressing enter or the right mouse button. Pressing delete will remove them without moving into the playlist.

A track from a player can be unloaded by pressing the right mouse button on the "ready" label.

Complete tracknames will be displayed as tooltips, if the ones inside the fields are truncated.

The "About"-tab also holds some links to external references as well as the settings.


The settings screen is available via the red link on the about tab. It will also pop up automatically if the m3u file containing the database is either not set or not found.

DerMixD Parameters:
Start/Stop via Partyman:
Check this if you want DerMixD to be started during the initiation of the connection.
The command to run DerMixD.
The parameters to start DerMixD with
(Note: "-c" and "-p port" will be always added.)
The name of the host DerMixD runs on.
The port DerMixD listens on.
Log communications to stdout
Write the communication of Partyman and DerMixD to stdout (mainly used for debugging purposes).
Partyman Parameters:
Connect On Startup
Check this if you're too lazy to press the "Connect" button.
Crossfade Time:
The number of seconds both player should play at the same time.
Use SLART UDP Communication:
Partyman is part of "SvOlli's Little Audio Related Thingies" or "SLART" (external links) for short, which can use UDP for communicating with each other. It can be also used by Partyman for communicating with itself (see also Command Line Parameters). This switch activates this communication.
DerMixD, starting with svn version #399, can analyse the volume of a track, either by peak or by a power algorithm. Using this feature, Partyman can automatically set the volume, so that each track is player at the same volume level.
External Logger:
Each action like playing a track, stopping, pausing and skipping can be logged though an external application. Here it can be specified. See the below for a more detailed explanation.
Database File:
The m3u file used as the database of all known audio tracks.
Command Line Parameters:
If SLART UDP communication is activated, all parameters from the command line are added to the playlist, if these files exists and an instance of Partyman is already running.

External Logging:

If the feature has been activated by providing an execuable to handle these information, it will be called with one or two parameters:

  1. one of "play", "pause", "skip" or "stop", which explanes the action
  2. if the first one is "play", the second one is the complete path of the file being played.
So, a shell script for external logging could start like this:

action="$1" # should always get one of "play", "pause", "skip" or "stop"
file="$2"   # empty if action is not "play"

# do something with "$action" and "$file"
echo "[$action] $file" > /tmp/Partyman-Playlist.txt

This is just a short example to give you an idea on how to start your own logger. Yes, it's just that simple.


First of all make sure that you've got DerMixD on your system. Also note, that for playing mp3s you'll need mpg123, as mpg321 will not work.

Also make sure, that you've got the needed qt4*-dev packages are installed on the system you want to compile Partyman on.

Building is straight forward: just run qmake of Qt4 and make after that to get a running binary.

I do it slightly different like this:

     .../Partyman$ mkdir Linux;cd Linux
     .../Partyman/Linux$ qmake-qt4 ../
     .../Partyman/Linux$ make

This way, I've separated all generated from all selfwritten code.

And that's how I build DerMixD:

     .../dermixd$ make SNDFILE=yes VORBISFILE=yes gnu-alsa
(And, again take note that you need th libsndfile-dev and libvorbisfile-dev packages on the system you want to compile the code on.)

Known bugs:

Bugverified workaround

Feature Requests:

request status comment
remove dependancy for m3u-list as commandline parameter planned for V0.5 Use QSettings for remember last m3u-list, pop up a dialog for specifying one, if none's available. Also include the option of generating one.

This software is free software and distributed under the license terms of the GPL.


Valid HTML 4.01!