My friends had often asked about adding music to mumble, but all guides that I could find used a virtual sound card under Windows. I wanted a solution that runs on my Linux server, so that my friends can all upload music and selecting the music is open to everyone.

The gist: music player daemon connected via pulseaudio to a regular mumble running in a VNC session.

This guide is for Debian, but other distributions should work similarly.

Ingredients: Pulseaudio

apt-get install pulseaudio pulseaudio-utils pavucontrol

Ingredients: VNC Server

I didn’t have any X on my server, so here are some basics to get a working vnc session, in which we can run mumble:

apt-get install tightvncserver jwm xfonts-base rxvt-unicode-256color

Ingredients: Mumble, mpd

The key is to start a pulseaudio session for the mpd user on a special sink, then open up a vnc server for the same user and in it connect mumble to that sink. The specially nice part is that you now have all of mpd’s clients as possible front ends to this setup.

PulseAudio

Ok, first let’s create the pulseaudio setup: First edit /etc/pulse/default.pa and comment out the suspend-on-idle module:

# load-module module-suspend-on-idle

Since there isn’t an instance of pulseaudio yet, there is no need to restart anything.

Then edit /etc/mpd.conf, add this section and comment out any other audio_output sections:

My server doesn’t have any audio hardware (a VM), so I create two sinks: One for mumble as an output device, and an extra sink where the music will flow from the mpd output to the mumble input. We don’t care about the mumble output, but it needs to go somewhere.

Now that the sink is available, edit /etc/mpd.conf again, remove the comment from the sink, and restart mpd another time to use it.

Connect mumble

$ vncserver -name mpdmumble -depth 16 -geometry 1024x768

And connect from my Linux desktop:

$ vncviewer -via SERVER :1

Open up two shells, run

$ mumble

in one, and

$ pavucontrol

in the other. In mumble you can just abort the audio wizard and then configure it by hand. Make sure that the Advanced checkbox on the bottom left is checked. The important settings are:

Audio Input Select pulseaudio. I wasn’t able to select the sink here, but that’s fine, we can do that using the pulseaudio tools later. Other useful settings: Echo: Disabled, Transmit: Voice Activity, select the sliders so that you have a very small red section, followed by a small yellow section, and finally a large green. This makes mumble transmit when there is any input, but be silence otherwise, so that mumble’s red mouth indicates whether the music is playing or not. Under Compression, move the quality slider all the way to the right to get decent sound quality. Under Audio Processing, move both sliders all the way to the left to disable as much processing as possible.

Audio Output Select pulseaudio and the mumble_null_sink.

In the pulseaudio Volume Control we can check that the sinks are set up correctly (if not, just click on the sink name and you can select the one mentioned here):

On the Playback tab there should be Music Player Daemon entry using the mpdmumble sink.

On the Recording tab the Mumble: Microphone should be using Monitor of mpdmumble. I had to move the volume control for the microphone down to 77%, otherwise there was a horrible clipping sound when playing the music.

Now just add some music to the mpd music directory, and install a mpd client to control the playback. I chose rompr, a web (PHP) client, put up a http-password and now any of my friends can play DJ.

Done, and enjoy the music!

P.S. I don’t have a nice start-up script which will automatically start mumble, so that is an exercise left for the reader.

I couldn’t find a good guide for running teamspeak3 inside of a chroot. And that’s the only way I’d be running it, given that it is a binary blob… This guide is for a Debian system, should probably work for Ubuntu, but it shouldn’t be hard to adjust to other distributions.

Install jailkit. It’s not in Debian, but it provides a working packaging script that you just have to use to build the package yourself:

The point of this guide is to never run the server outside of the chroot. Also I noticed that if the environment wasn’t set up correctly, and the server ran but had strange error messages in the log and didn’t actually work, I had to delete the database file (ts3server.sqlite) and start from scratch.

The biggest confusion that I had when getting this to work is that you can only manipulate the UEFI boot loader when booted in UEFI mode. Since my existing Debian installation, as well as the installer CD booted in BIOS emulation mode, I failed to set up the boot loader at first. Key is the efi shell, which I can conveniently access on my ASUS motherboard by hitting Exit in the EZ mode to get to the Advanced mode, then hitting Exit again.

So in the day and age where webmail clients are a common access method for email, why are some people still using a native email client? Maybe they’re used to it, or maybe they like it that they offer different usability options. Yes, you can more easily customize an application than a website where any change potentially impacts all your user base.

But then how is it possible that these applications, which have been around a long time, can’t get what seems to be basic options for the power user right? I for one would like to have a sensible default sort order in Thunderbird: I would like to sort by the order the email was received, which allows me to quickly notice new emails, while also seeing a threaded view to accomodate email lists threads.

This is not an unusual configuration, for example gmail works pretty much exactly like that. But how is it possible that this configuration is really difficult to get right in Thunderbird? There is a bug to this extend open since 2004! That is a sad state of desktop applications.