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

If it doesn’t work try:

sudo apt install qt6-base-dev qt6-base-dev-tools qt6-tools-dev qt6-tools-dev-tools qt6-l10n-tools qt6-svg-dev libqt6svg6-dev libjack-dev libjack-jackd2-dev libasound2-dev libsndfile-dev libvorbis-dev libmad0-dev libz-dev libsamplerate-dev librubberband-dev libfftw3-dev libaubio-dev ladspa-sdk dssi-dev liblo-dev lv2-dev liblilv-dev libsratom-dev libsord-dev libserd-dev libgtk2.0-dev libgtkmm-2.4-dev

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:

https://qtractor.org/

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 --recursive https://git.code.sf.net/p/qtractor/code qtractor-code

Then go to the just created qtractor-code source tree directory:

cd qtractor-code

You should now be ready to 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 cmake build system (make sure you have version 3.15 or higher). From within the Qtractor source directory, run:

cmake -B build .
cmake --build build

and optionally, as root:

cmake --install build 

2.4.2. 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:

cmake -DCMAKE_BUILD_TYPE=Debug -B build
cmake --build build

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 ./build/src/qtractor /path/to/core

At the gdb prompt just enter:

gdb> bt

or:

gdb> thread apply all bt

2.5. Qtractor’s Configuration Settings File

Qtractor keeps its settings and configuration file in:

$HOME/.config/rncbc.org/Qtractor.conf

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