Qtractor Wiki Manual - 2 Installing and Configuring Qtractor

Manual - Table of Contents

2. Installing and configuring Qtractor

2.1. Compiling Qtractor

If Qtractor is not available from your Linux distribution’s package manager/repository and nor can you find a standalone package (such as a .deb package for Debian, Ubuntu or other Debian-based system or an .rpm package for Red Hat, Fedora, SUSE, etc.), then you will have to build it from source. Doing so requires you have both a C++ compiler (such as g++, the GNU C++ compiler) as well as several other dependencies, the most important of which are listed below.

Those with experience in compiling Linux/UNIX software using autoconf should find the build process straightforward. Building Qtractor is fairly easy but both the compilation process and setting up a build environment (a collection of programs necessary for compiling software) can be a bit daunting to those new to Linux. You don’t need to be a programmer to compile software but you will at least need to know the basics of using the Linux command line and how to use your distribution’s package manager.

2.2. Build dependencies

In order to compile Qtractor you are required to have at least all the packages listed under section 2.2.1 installed. Everything listed under section 2.2.2 is optional but recommended to get the most out of Qtractor.

Note that some Linux distributions (such as Arch) include the development files in their packages whereas other distributions split packages up into binary and dev components. For example, the ALSA library under Debian and Ubuntu is contained in the package libasound2 but its development files are contained within libasound2-dev.

If you are compiling Qtractor under a Debian or Ubuntu-based distro you can install all the required build dependencies with one command by running:

sudo apt-get build-dep qtractor

2.2.1. Mandatory packages

2.2.2. Optional packages

2.3. Downloading Qtractor

2.3.1. Official releases

Qtractor is considered to be in its beta stage of development but is already fully functional. The latest official releases are publicly available from the qtractor.sourceforge.net project web site:


2.3.2. Qtractor for the experienced and adventurous

The latest “bleeding-edge” source code can be obtained from the qtractor git repository with the following command:

git clone git://git.code.sf.net/p/qtractor/code qtractor-code

Prepare the configure script on the just created qtractor-code source tree directory:

cd qtractor-code

make -f Makefile.git

You should now be ready to configure, build and install Qtractor.

NOTE: After the initial checking-out of the source code, if you want to update to the latest version in future you can fetch/merge the latest changes by using the following command from within the qtractor-code directory:

git pull

2.4. Compiling and installing Qtractor

2.4.1. Standard compilation and installation

The installation procedure follows the autoconf standard. From within the Qtractor source directory, run:

./configure [--prefix=<prefix>]

NOTE: To see all configuration options before entering the command sequence above, type:

./configure --help

and optionally, as root:

make install 

This procedure will end by installing the following files:


Just launch <prefix>/bin/qtractor and you’re off, hopefully! Note that the default installation path prefix is /usr/local.

2.4.2. Compiling with Steinberg Linux VST Support (optional)

VST is the “Virtual Studio Technology” effect and instrument plugin format developed by Steinberg Media Technologies GmbH. Using the official VST headers could result in higher plugin compatibility than using the reverse-engineered VeSTige headers included with Qtractor. Steinberg VST support is not very easy to accomplish and is recommended for experienced users only.

Due to licensing issues for this proprietary software, one must download the VST SDK (software development kit) from the third-party developers section of the Steinberg Media Technologies GmbH website. Ensure you download either the 2.3 or 2.4 VST SDK. Do not use VST 3.0. It will not work!

In order to download the VST SDK zip archive you will have to accept the license and supply some personal data, then download and unpack the pertinent program header files, which are found in one of the directories listed below.

VST SDK 2.3:






VST SDK 2.4:






It is recommended that you copy those files into a standard “include” directory (eg. /usr/local/include or /usr/include), so that the Steinberg VST header discovery process will be handled “automagically” by the ./configure script. Otherwise you’ll need to supply the path yourself, like so:

./configure -with-vst=/path/to/vstsdk2.x/include

Qtractor searches for VST plugins within /usr/local/lib/vst and /usr/lib/vst. If you wish to use VST plugins installed anywhere else then you will need to add and export their location to your VST_PATH environment variable.

export VST_PATH=/path/to/vst_plugins

To set the VST_PATH permanently, you will have to add the above line to the file where your distribution declares environment variables. This is usually achieved by adding it to /etc/environment or creating a new .sh file under /etc/profile.d .

A number of Linux VST plugins can be found on the following web sites:

2.4.3. Compiling Qtractor with debugging support

If you find and report a bug in Qtractor, you may be asked to provide some debugging information. This short guide will explain how to build Qtractor with debugging enabled, making it easier to pinpoint the problematic code.

Rebuild it all from scratch, with:

./configure --enable-debug && make

Enable core dumps in a shell session:

ulimit -c unlimited

From the same shell command line, run the program until it crashes. You’ll see something like this in the output when it happens:

Segmentation fault (core dumped)

Locate the dumped core file. Depending on your environmental settings it might be named just core, or something like core.1234 (1234 is the process-id number of the crashing program), located in the last directory where the program was.

Load the core dump file into gdb:

gdb ./qtractor /path/to/core

At the gdb prompt just enter:

gdb> bt


gdb> thread apply all bt

2.5. Qtractor’s Configuration Settings File

Qtractor keeps its settings and configuration file in:


Normally, there is no need to manually edit this file. Most of Qtractor’s options can be adjusted from the Options window under the View menu.

2.6. QJackCtl

In order to use Qtractor, JACK must be running in the background. JACK is a kind of patchbay for Linux (technically a “sound server”), enabling you to route audio and MIDI data between Qtractor and other JACK applications.

Some distributions may configure Qtractor such that JACK starts automatically when Qtractor is launched; others may not. If you launch Qtractor from your application menu and receive JACK errors in the message log at the bottom of the main workspace, quit Qtractor, start JACK manually, then launch Qtractor again.

The easiest way to start JACK is with QJackCtl (“Q JACK Control”), a control panel and global, synchronized timecode display. If this is not installed, install it from your distribution’s repository or from the project’s site.

If necessary, launch QJackCtl and click the Start button. This should begin a global, synchronized timecode clock that will allow Qtractor to use all available inputs and outputs just like a studio mixing board.

QJackCtl in operation

2.7. Audio and MIDI Input

Qtractor can record both digital audio and MIDI data, but it does not magically know what audio or MIDI data you wish to record; you must route audio and MIDI data to it manually. This can be done with QJackCtl, via the command line or using Qtractor’s Connections window, pictured below.

Qtractor depends upon ALSA and JACK to utilize your audio hardware. It uses ALSA to communicate with MIDI hardware and JACK to route audio to/from various hardware and software “ports”.

Qtractor’s Connections window, showing both the Audio and MIDI tabs. “Readable” ports are sources of data (where audio or MIDI data can come from, e.g. a microphone input or a MIDI keyboard controller) while “Writeable” ports are places that data can be routed to, such as a track, an audio output or a MIDI synthesizer