[LAA] Qtractor 0.2.0 (frolic demoiselle) is out!

Rui Nuno Capela rncbc at rncbc.org
Thu Jul 17 19:16:56 EDT 2008

Qtractor 0.2.0 (frolic demoiselle) is out!

Qtractor is an audio/MIDI multi-track sequencer application written in 
C++ with the Qt4 framework [1]. Target platform is Linux, where the a 
Jack Audio Connection Kit (JACK)  for audio [2] and the Advanced Linux 
Sound Architecture (ALSA) for MIDI [3] are the main infrastructures to 
evolve as a fairly-featured Linux desktop audio workstation GUI, 
specially dedicated to the personal home-studio.

Qtractor is free open-source software, distributed under the GNU General 
Public License (GPL) [15].


   Rui Nuno Capela <rncbc at rncbc dot org>





Project page:




Executive summary:

- Multi-track audio and MIDI sequencing and recording.
- Developed on pure Qt4 C++ application framework [1] (no Qt3 nor KDE 
- Uses JACK [2] for audio and ALSA [3] sequencer for MIDI as 
- Traditional multi-track tape recorder control paradigm.
- Audio file formats support: OGG (via libvorbis [6]), MP3 (via libmad 
[7], playback only), WAV, FLAC, AIFF and many, many more (via linsndfile 
- Standard MIDI files support (format 0 and 1).
- Non-destructive, non-linear editing.
- Unlimited number of tracks per session/project.
- Unlimited number of overlapping clips per track.
- XML encoded session/project description files (SDI).
- Point-and-click, multi-select, drag-and-drop interaction (drag, move, 
drop, cut, copy, paste, delete, split)
- Unlimited undo/redo.
- Built-in mixer and monitor controls.
- Buil-in connection patchbay control and persistence (a-la QjackCtl [13]).
- LADSPA [5], DSSI [11] and native VSTi [12] plug-in support.
- Unlimited number of plug-ins per track or bus.
- Plug-in presets, programs and chunk/configurations support.
- Audio/MIDI clip fade-in/out (linear, quadratic, cubic).
- Audio clip time-stretching (WSOLA-like or via librubberband [9]), 
pitch-shifting (vib librubberband [9]) and samplerate conversion (via 
libsamplerate [8]).
- Audio/MIDI track export (mix-down, merge).
- Audio/MIDI metronome bar/beat clicks.
- MIDI clip editor (piano roll).
- MIDI instrument definitions (a-la Cakewalk(tm) [15])
- JACK transport sync master.
- MMC control surface enabled.
- Configurable keyboard shortcuts.


Mandatory: libqt4 [1], libjack [2], libasound [3], libsndfile [4], 
LADSPA [5]. Optional: libvorbis [6], libmad [7], libsamplerate [8], 
librubberband [9], liblo [10], DSSI [11], VST-SDK [12].


Qtractor is still in some alpha stage of development, although already 
functional it surely has a plenty of lurking bugs. It also lacks some 
features that some might find critical in the application field. All is 
not lost, as the following are among the ones planned to be worked on in 
the times to come (not in any particular order):

- Automation and MIDI controller mapping.
- Session/project templates.
- Puch-in/out and loop recording (takes).
- Audio clip cross-fading.
- Audio effect send/return aux. inserts.
- Clip locking, muting, normalize (gain).
- LV2 plug-in support.
- JACK MIDI support.
- Tempo and key signature map.
- Paste-repeat command.
- MIDI SysEx manager.
- MIDI event list editor.
- MIDI editor (piano roll) draw mode.
- MIDI groove/swing quantize.
- OSC interface.
- Scripting.
- Etc. etc.


2009-07-18  0.2.0  The Frolic Demoiselle

- MIDI clip filename revision logic is now introduced, thus avoiding the 
proliferation of several numbered SMF's on each edit/save; some lurking 
bugs were exposed in the MIDI clip externalization method but promptly 

- Fixed a mouse release event glitch while in drag-and-drop items in the 
Files tree list widget.

- A dummy plugin type option has been devised, just to bear with some 
troubled behavior of the lovely JUCETICE plugins 
(View/Options.../Plugins/Experimental/Dummy VST plugin scan). Bad news 
are that all, yes all as in every native VST plugins, are 
indistinguishable from being just pure audio effects, either mono or 
stereo, whatever, and thus all being considered full-blown stereo VSTi 
instruments (which are the vast mainstream and rather interesting 
majority, nevertheless:).

- The plugin selection dialog (Add Plugin...) now features the option 
whether the selected plugins should be activated on insert.

- Mixer strip titles now have distinguishable type icons, either for 
audio or MIDI, and shown on all buses and track strips.

- Major optimization breakthrough: muted audio tracks aren't streamed 
any longer, saving precious CPU cycles from decoding, resampling, 
pitch-shifting, time-stretching, plugin effects, whatever.

- Incredible as it might be, audio/MIDI track record monitoring is now 
mixed (or merged) with rolling playback content, thus not as mutually 
exclusive between record and playback states anymore; also, track 
mute/solo states doesn't apply to recording material anymore.

- Main form timer slot gets corrected and now independent of current 
process buffer-size in regard to JACK transport synchronization.

- All file references in session state file are now stored as relative 
paths to main session directory.

- DSSI/VSTi plugin presets can now be explicitly recalled from file (ie. 
Open/load preset) through this new tool button whether visible while in 
the generic plugin form.

- Due to some trouble with newer Qt >= 4.4 applications regarding font 
size configuration, a new global user option is now available to the 
rescue: View/Options... /Display/Base font size (default is no-op).

- Logarithmic scale is now taken into effect by control parameter 
sliders, in the generic plugin editor dialog as provided by LADSPA and 
DSSI plugin types.

- MIDI track bank/program does not default to zero (PC#0) anymore.

- Second attempt for Qt4.4 build support, regarding the bundled atomic 
primitives, now corrected and way more seriously :).

- Long due DSSI/VSTi plugin host implementation has taken shape for MIDI 
instruments (eg. soft-synth plugins); DSSI reached its full host 
implementation and VSTi is already kicking as well (HIGHLY EXPERIMENTAL).

- DSSI/VSTi plugin presets may now be stored to external XML files, 
which should include all parameter values and configuration data chunks, 
taken as proper state snapshot and subject for recall.

- Dedicated audio output bus option is now also accessible for all MIDI 
instrument plugins, either set globally as a default mode in 
View/Options.../Plugins/Instruments or in the plugin context menu for 
MIDI tracks, as an undoable command.

- Fixed a potential crash-exception due to freeing a null-pointer, 
raised on some ever stringent platforms and while adding tracks to empty 
sessions, which is the same to say this was crashing more than always:).

- Loop turn-around is now taken care of, as this has been found missing 
and causing noticeable gapping when un-muting or changing MIDI track 
events while in playback.

- An off-by-one bug was fixed while inside MIDI cursor backward seek 
method, which was missing all other events that have the same exact 
onset timing.

- Attempt to load Qt's own translation support and get rid of the ever 
warning startup message, unless built in debug mode. (transaction by 
Guido Scholz, while on qsynth-devel, thanks).

- Only one application instance is now allowed to be up and running, 
with immediate but graceful termination upon startup iif an already 
running instance is detected, which will see its main widget shown up 
automatically (Qt/X11 platform only).

- Clip fades have now a slight transparency.

- Avoid loop read-ahead on initial audio clip loading.

- Messages file logging makes its first long overdue appearance, with 
user configurable settings in View/Options.../Logging; options dialog 
was slightly rearranged and moved the Plugins section into a new tab page.

- Audio/MIDI drifting correction was missing its own correct and due 
(re)initialization whenever playback is (re)started; also, MIDI metering 
synchronization has been fixed once again.

- Fixed session cursor backward seeking, specially applicable when 
playback passes the end of overlapped clips.

- Fixed potential crash when opening bogus audio files.

- Time-stretch FIFO buffer implementation is now made generic, as 
template, fixing a destructor memory leak in the process.

- Include legacy headers, stdlib.h and string.h, where necessary to 
build with stricter gcc/g++ >= 4.3.


[1]  Qt4 (core, gui, xml), C++ class library and tools
      for crossplatform development and internationalization

[2]  JACK Audio Connection Kit

[3]  ALSA, Advanced Linux Sound Architecture

[4]  libsndfile, C library for reading and writing
      files containing sampled sound

[5]  LADSPA, Linux Audio Developer's Simple Plugin API

[6]  libvorbis (enc, file), Ogg Vorbis audio compression

[7]  libmad, High-quality MPEG audio decoder

[8]  libsamplerate, The secret rabbit code, C library
      for audio sample rate conversion

[9]  librubberband, Rubber Band Audio Time Stretcher,
      an audio time-stretching and pitch-shifting library

[10] liblo, Lightweight OSC implementation
      (needed for DSSI GUI support)

[11] DSSI, an API for soft synth plugins with custom user interfaces

[12] VST SDK, Steinberg's Virtual Studio Technology (see README.VST)

[13] QjackCtl - JACK Qt GUI Interface

[14] GNU General Public License

[15] Cakewalk (by Roland), powerful and easy-to-use tools
      for Windows-based music and sound production

Cheers && Enjoy.
rncbc aka Rui Nuno Capela

More information about the Linux-audio-announce mailing list