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.
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
Qt framework (core, gui, xml) - C++ class library and tools for cross-platform development and internationalization https://qt.io/
JACK - JACK Audio Connection Kit http:s//jackaudio.org/
ALSA - Advanced Linux Sound Architecture https://www.alsa-project.org/
libsndfile - C library for reading and writing files containing sampled sound http://www.mega-nerd.com/libsndfile/
LADSPA - Linux Audio Developer’s Simple Plugin API http://www.ladspa.org/
libvorbis (enc, file) - Ogg Vorbis audio compression https://xiph.org/vorbis/
libmad - High-quality MPEG audio decoder https://www.underbit.com/products/mad/
libsamplerate - Secret Rabbit Code; C library for audio sample rate conversion http://www.mega-nerd.com/SRC/
librubberband - Rubber Band Audio Time Stretcher; audio time-stretching and pitch-shifting library https://breakfastquay.com/rubberband/
liblo - Lightweight OSC implementation (required for DSSI GUI and NSM support) http://liblo.sourceforge.net/
DSSI - API for soft synth plugins with custom user interfaces http://dssi.sourceforge.net/
VST-SDK - Steinberg’s Virtual Studio Technology plugin format https://www.steinberg.net/
LV2 - Audio plugin standard; extensible successor to LADSPA https://lv2plug.in/
liblilv - Lightweight LV2 implementation stack https://drobilla.net/software/lilv/
libaubio - Library for real time audio labeling https://aubio.org/
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:
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
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
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
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.
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
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