###Background

As a terminal junkie, I've started messing around with a combination of [mpd](http://musicpd.org) (Music Player Daemon) and a player, [ncmpcpp](http://ncmpcpp.rybczak.net) (NCurses Media Player Client C++).

I installed these via Homebrew - a simple `brew install mpd ncmpcpp`. A bit of configuration later, and the apps are running quite nicely. The effect is actually rather impressive:
![ncmpcpp playing some random things][1]


  [1]: https://i.sstatic.net/KkZrB.png

The problem I run into is when I want to run `mpd` automatically instead of having it launch in my terminal. It comes with a `launchd` plist, so I install that, and it appears to work - **The problem is that whatever I'm playing, be that an MP3, streaming audio from a server, or whatever, the audio stutters every 5 seconds**

This absolutely does not happen when `mpd` is invoked directly from the command line, only when it's fired off via launchd.

Here's what the plist looks like:
----
    <!--homebrew.mxcl.mpd.plist-->
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
    <plist version="1.0">
    <dict>
    	<key>KeepAlive</key>
    	<true/>
    	<key>Label</key>
    	<string>homebrew.mxcl.mpd</string>
    	<key>ProcessType</key>
    	<string>Interactive</string>
    	<key>ProgramArguments</key>
    	<array>
    		<string>/usr/local/opt/mpd/bin/mpd</string>
    		<string>--no-daemon</string>
    	</array>
    	<key>RunAtLoad</key>
    	<true/>
    	<key>WorkingDirectory</key>
    	<string>/usr/local</string>
    </dict>
    </plist>
----

The `ProcessType interactive` was added by me in an attempt to force launchd to give the daemon higher priority, to no effect.

###Debugging?

If we `dtruss` the process, there is a huge blast of identical `gettimeofday` messages correlated with every stutter. It looks like this:

    gettimeofday(0x10A03FD40, 0x0, 0x1000)		 = 1428698761 0

###Things I've already eliminated

* CPU / Disk IO

The system is relatively quiet - during the stutters, mpd is not even on the top 25 for memory or CPU usage, and load is well below 1.0

* Incorrect environment causing bad config settings to be loaded

My mpd config is the one being loaded from `~/.mpdconf` - same as it is when I run it by hand.

This appears to be a symptom of the way launchd chooses to handle the process.

###The ultimate question
Why is the daemon so misbehaved when run under launchd, but not when run via terminal? 

###Bonus question:
What about the way launchd kicks off processes could be making this behavior manifest?