Experimental sample playback
C Makefile
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.
samples @ c2db9a0 [add] samples submodule Nov 1, 2015
windows Windows binary Jun 29, 2014
.gitignore Restore accidentally deleted Makefile Mar 10, 2015
.gitmodules [add] samples submodule Nov 1, 2015
AUTHORS initial Sep 22, 2015
COPYING gplv3 Feb 19, 2012
Makefile add -O3 back in Apr 1, 2016
README.md install instructions May 22, 2016
audio.c fix build error Jun 6, 2016
audio.h adds support for attack-hold-release envelope May 4, 2016
common.c make samplerate configurable, and set realtime on for linux portaudio… Apr 19, 2016
common.h make samplerate configurable, and set realtime on for linux portaudio… Apr 19, 2016
config.h stop spamming terminal output when max sounds is hit, and adjust cuto… Nov 30, 2016
dirt.c make samplerate configurable, and set realtime on for linux portaudio… Apr 19, 2016
file.c Merge pull request #56 from tidalcycles/0.8-dev Jun 4, 2016
file.h Merge branch 'master' of http://github.com/yaxu/Dirt Sep 14, 2015
jack.c Fix segment fault when jack cannot find any physical capture ports. Jul 20, 2015
jack.h Add -c/--channels option to enable multichannel output Jul 9, 2014
jobqueue.c Make `jobqueue` structure thread-safe Mar 22, 2015
jobqueue.h Make `jobqueue` structure thread-safe Mar 22, 2015
pitch.c move pitch detection from aubio to libxtract Jul 29, 2013
pitch.h added centroid, etc Jul 15, 2013
segment.c works better Feb 19, 2012
segment.h working and broken again Feb 17, 2012
server.c stop spamming terminal output when max sounds is hit, and adjust cuto… Nov 30, 2016
server.h commandline option for osc port Sep 14, 2015
thpool.c Add --workers option to define number of threads for reading samples Mar 22, 2015
thpool.h Add --workers option to define number of threads for reading samples Mar 22, 2015
zmqserv.c add zeromq server for proxying OSC to Dirt Oct 7, 2013


An unimpressive thingie for playing bits of samples with some level of accuracy.

(c) Alex McLean and contributors, 2016 Released under the GNU Public Licence version 3

Linux installation

Here's how to install dirt under Debian, Ubuntu or a similar distribution:

sudo apt-get install build-essential libsndfile1-dev libsamplerate0-dev \
                     liblo-dev libjack-jackd2-dev qjackctl jackd git
git clone --recursive https://github.com/tidalcycles/Dirt.git
cd Dirt
make clean; make

Starting Dirt under Linux

First of all, start the "jack" audio layer. The easier way to do this is with the "qjackctl" app, which you should find in your program menus under "Sound & Video" or similar. If you have trouble with qjackctl, you can also try starting jack directly from the commandline:

jackd -d alsa &

If that doesn't work, you might well have something called "pulseaudio" in control of your sound. In that case, this should work:

/usr/bin/pasuspender -- jackd -d alsa &

And finally you should be able to start dirt with this:

cd ~/Dirt
./dirt &

If you have problems with jack, try enabling realtime audio, and adjusting the settings by installing and using the "qjackctl" software. Some more info can be found in the Ubuntu Community page for JACK configuration

MacOS installation

Installing Dirt's dependencies on Mac OS X can be done via homebrew or MacPorts, but choose only one to avoid conflicts with duplicate system libraries.

Unless otherwise specified, the below commands should be typed or pasted into a terminal window.

Installing dependencies via Homebrew

Homebrew is a package manager for OS X. It lives side by side with the native libraries and tools that ship with the operating system.

To install homebrew:

ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

Initialise homebrew:

brew doctor

Install Dirt, a synth (well, more of a sampler) made to work with Tidal. A homebrew 'recipe' for dirt does exist, but that doesn't come with any sounds to play with, so for now it's probably easiest just download it all from github and compile it as follows.

Install some libraries which the Dirt synth needs to compile:

brew install liblo libsndfile libsamplerate

Install the 'jack audio connection kit' which Dirt also needs:

brew install jack

If Homebrew's installation of Jack fails with a make error, you can use the JackOSX Installer instead. This will, however, add an additional step when installing Dirt (see below).

Alternative: Installing dependencies via Mac Ports

MacPorts is another package manager for OS X.

If you already installed dependencies via homebrew, skip ahead to build Dirt.
Otherwise if you happen to already use MacPorts, here's a list of steps in order to get all dependencies:

sudo port install liblo libsndfile libsamplerate

Download and install jack2 Jack Download Page. Jack 2 has better OS X integration Jack Comparison.

Building Dirt from source

Get the source code for the Dirt synth:

cd ~
git clone --recursive https://github.com/tidalcycles/Dirt.git

Compile dirt:

cd ~/Dirt
make clean; make

If Dirt fails to compile after using the JackOSX installer as above, you may need to add flags to the Makefile to specify the appropriate paths:

CFLAGS += -g -I/usr/local/include -Wall -O3 -std=gnu99 -DCHANNELS=2
LDFLAGS += -lm -L/usr/local/lib -llo -lsndfile -lsamplerate -ljack

Homebrew users

As MacPorts installs all libs on /opt/local/ edit the Makefile to point the right direction of libsndfile and libsamplerate

CFLAGS += -g -I/opt/local/include -Wall -O3 -std=gnu99
LDFLAGS += -lm -L/opt/local/lib  -llo -lsndfile -lsamplerate

Starting Dirt under MacOS

To start Dirt, back in a terminal window, first start jack:

jackd -d coreaudio &

Or, if you downloaded Jack 2, then start the JackPilot at: /Applications/Jack/JackPilot.app

Click start button.

Then start dirt:

cd ~/Dirt
./dirt &

Windows installation


First, install Cygwin. In Cygwin, make sure the following packages are installed:



Download Portaudio from http://www.portaudio.com. In Cygwin, Unpack the download with tar fxvz. After unpacking, from Cygwin, go to the directory where you unpacked Portaudio and then run:

./configure && make && make install


Download Liblo. In Cygwin, unpack Liblo with tar fxvz, then in Cygwin go to the directory where you unpacked Liblo and then run:

./configure && make && make install


In Cygwin:

git clone --recursive http://github.com/tidalcycles/Dirt.git


cd Dirt
make dirt-pa

Then you get a dirt-pa.exe that works. Maybe this even works on any windows system without having to compile. You'd need cygwin1.dll at least though.