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].
Author:
Rui Nuno Capela <rncbc at rncbc dot org>
Weblog:
http://wwww.rncbc.org
Website:
http://qtractor.sourceforge.net
Project page:
http://sourceforge.net/projects/qtractor
Download:
http://downloads.sourceforge.net/qtractor/qtractor-0.2.0.tar.gz
Executive summary:
- Multi-track audio and MIDI sequencing and recording.
- Developed on pure Qt4 C++ application framework [1] (no Qt3 nor KDE
dependency).
- Uses JACK [2] for audio and ALSA [3] sequencer for MIDI as
infrastructure.
- 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
[4]).
- 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.
Requirements:
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].
Disclaimer:
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.
Change-log:
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
squashed.
- 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.
References:
[1] Qt4 (core, gui, xml), C++ class library and tools
for crossplatform development and internationalization
http://www.trolltech.org/products/qt/
[2] JACK Audio Connection Kit
http://jackaudio.org/
[3] ALSA, Advanced Linux Sound Architecture
http://www.alsa-project.org/
[4] libsndfile, C library for reading and writing
files containing sampled sound
http://www.mega-nerd.com/libsndfile/
[5] LADSPA, Linux Audio Developer's Simple Plugin API
http://www.ladspa.org/
[6] libvorbis (enc, file), Ogg Vorbis audio compression
http://xiph.org/vorbis/
[7] libmad, High-quality MPEG audio decoder
http://www.underbit.com/products/mad/
[8] libsamplerate, The secret rabbit code, C library
for audio sample rate conversion
http://www.mega-nerd.com/SRC/
[9] librubberband, Rubber Band Audio Time Stretcher,
an audio time-stretching and pitch-shifting library
http://breakfastquay.com/rubberband/
[10] liblo, Lightweight OSC implementation
(needed for DSSI GUI support)
http://liblo.sourceforge.net/
[11] DSSI, an API for soft synth plugins with custom user interfaces
http://dssi.sourceforge.net/
[12] VST SDK, Steinberg's Virtual Studio Technology (see README.VST)
http://www.steinberg.net/
[13] QjackCtl - JACK Qt GUI Interface
http://qjackctl.sourceforge.net
[14] GNU General Public License
http://www.gnu.org/copyleft/gpl.html
[15] Cakewalk (by Roland), powerful and easy-to-use tools
for Windows-based music and sound production
http://www.cakewalk.com/
Cheers && Enjoy.