[Ardour-Users] Ardour 3 Beta 4a released

Paul Davis paul at linuxaudiosystems.com
Wed May 23 14:56:24 PDT 2012

Ardour 3 beta 4 arrived after more than 3 months of development activity,
and more than 1000 commits to the source code repository. Beta 4a followed
rapidly after a deadlock was discovered when pasting regions, and
incidentally gained support for MIDI region export along the way.

   - Linux 32 bit
   - Linux 64 bit
   - OS X Intel (Tiger, Leopard, Snow Leopard, Lion)

This is the last beta release before 3.0 is actually released. As of this
release, 3.0 is now in "feature freeze". There are many bugs to fix and UI
details to fix/improve, but there will be no new functionality added before
the release. We know that there are many things about 3.0 that need to be
improved, and they will be, but the big push is now to get to a release
that we can stand behind and get more users switched over to, thus allowing
us to move to post-3.0 development.

As usual, there are a gaggle of new features, as detailed below.
Significant New Functionality New Crossfade Model

In this beta release of Ardour3, we have switched to a new model for
Crossfades that is derived from work done by Ben Loftis of Harrison
Consoles for Mixbus. The older model, which was inherited from Ardour2, was
quite complex at the code level and removing it makes other things simpler
too. The two models are very different, however:

   - In the old model, a crossfade was an independent object that described
   the gain relationship between the start of one region and the end of
   - In the new model, crossfading simply uses the existing fade in (or
   out) curve of a region, and applies a complementary fade out (or in) to any
   material "below" the region. Put differently, in the new model crossfading
   does not happen between two specific regions, but is instead the gain
   management applied to manage the start (or end) of a region and anything
   "below" it.

The new implementation reduces the number of standard fade shapes to just
5: Linear (for crossfading strongly correlated audio), Constant Power (for
general purpose crossfades), Fast, Slow and Symmetric (the last 3 all have
a different feel, but are somewhat "musical").

It is now possible to drag the end of an xfade that isn't defined by the
start (or end) of a region, and sensible things will happen. More work is
planned for the future to allow full, easy and fast control of crossfades.
The old crossfade editor is no longer accessible, and will be replaced in
the future by a simpler but more powerful tool.

*If you have an existing Ardour 3 session that uses crossfades for specific
effects, you should make a copy of the entire session folder before using
it with this release. *
Reimplementation of support for Mackie Control Protocol devices

Ardour2 and Ardour3 have had existing support for devices that use
something like Mackie Control Protocol such as the Mackie Control Pro, the
Logic Control and the BCF2000. Unfortunately, this support was somewhat
buggy and had a number of issues. As a result of unexpected access to the
relatively new Solid State Logic Nucleus control surface, I decided to
invest the time and effort to revamp the support for devices like this. In
the end the code has been almost entirely reimplemented. So far we have
only really tested with the Nucleus and the Steinberg CMC series, but
before 3.0 is released we plan to ensure complete out of the box
functionality with the Mackie Control Pro and Behringer BCF2000 as well.
Well-tested and operational features:

   - Support for both Mackie and Logic variants of the control protocol
   - Full access to gain/mute/solo/pan, bank-by-channel, bank-by-track,
   - Full fader and LED feedback from Ardour
   - GUI dialog to bind any surface button to any Ardour function
   - Shuttle/Zoom with the jog wheel
   - Strip locking
   - Per-device info files
   - Profiles allow task-specific button bindings for different workflows

Specifically for the Nucleus, Ardour now supports ipMIDI internally which
provides an extremely flexible, lightweight and reliable data path to/from
the surface. LV2 Plugin API Support

   - Ardour now uses the released versions of the lv2core, serd, sord,
   sratom, lilv and suil libraries, and no longer requires pre-release
   versions of these libraries. It will no longer build against old versions
   of these libraries and no longer has any support for the slv2 library that
   was replaced by lilv.
   - Many fixes for support of different types of LV2 GUIs (plugin
   - Support for the following extensions:
      - worker thread, including sample-accurate synchronous execution
      during export
      - event MIDI in/out
      - atom MIDI in/out
      - instance-access, data-access
      - state, including full non-destructive file saving, and saving of
      all atom types (via lilv)
      - uri-map, urid
      - ui, with support for Gtk/Qt/X11 UIs (via suil) and external UIs
      - ui control "touch"
      - full round-trip communication between ui and plugin for messages
      (e.g. atoms)
      - display plugin and port documentation in UI as tooltips
      - presets (loading only)
      - latency
      - support for ports specially designated for BPM and freeWheeling


   - support a grid of beats/64 and beats/128
   - Freezing tracks is now more generally possible, but will only operate
   on the processing in a track/bus as far as the the first send/return/insert
   or a plugin with a different I/O configuration than the input of the
   - Copying of sends is now better behaved, including retaining the same
   connections as the original (with new names, obviously)
   - Add user metadata. User metadata is edited from the same dialog and
   read/writable using the same mechanism as session metadata, but it is
   stored in the ardour.rc file instead of with the session. Importing
   metadata from another session does not change user metadata.
   - Add 44 MIDNAM files for a variety of external hardware synthesizers,
   thus providing named patch/program management for this hardware
   - MIDI region export

GUI Improvements

   - Remove magic number voodoo when saving zoom focus/snap settings to
   instant.xml etc. (this has a minor breaking-behaviour for existing
   - Keep track of grid type/settings in and out of note edit mode and
   switch back and forth, thus allowing independent grids while working at the
   note or region level
   - Make region gain line visibility global, not per-region
   - Display fader and send gain automation in dB using a logarithmic
   - Add base MIDI map for the Behringer BCF2000 in Mackie emulation mode.
   - If there is one invert button for many channels, always use a menu; in
   this case, also partially light the invert button if only a subset of
   channels are inverted
   - Show the number of channels in brackets when there is a single invert
   button for multiple channels
   - Make route group dialog resizable
   - Make ArdourPrompter entries resize when the window is resized, rather
   than the label
   - Mark rec enable controls as toggling, thus ensuring proper behavior
   with various controllers
   - Always show loop markers when looping is initiated
   - Add motorised attribute to DeviceInfo for generic MIDI maps so that we
   can specify if a surface is motorised, and as such will keep its phyiscal
   controls in sync with Ardour's controllables at all times. If this is not
   the case, we enable the code to avoid jumps when controls and controllables
   are out of sync. Mark the BCF2000 as motorised
   - Expand just entry fields when the metadata dialog is expanded and fix
   label assignments
   - Tweaks to improve the Freesound browsing/import dialog
   - Allow the number of recent sessions to be configured
   - Put a tooltip in the recent session display.
   - Remove submenu-only items from the keybindings dialog
   - Move text in rulers up by a few pixels for MUCH better appearance
   - Make the close button in the config info dialog work.
   - Handle default session dir a little better
   - Force the creation of a new session on first run of Ardour 3
   - Visual state management now uses ctrl-Fn (Fn is a function key such as
   F1) to save, Fn to goto
   - Save and restore nudge clock value
   - Reduce the width of the line separating tracks in the editor summary
   line (by-product: slightly more space appears to be there between the
   colored blocks representing regions too
   - Make toggle MIDIControllables with program changes only respond to the
   appropriate program change
   - Make MIDI Patch Manager search in $user_config_dir/patchfiles for
   midnam files as well as the per-session equivalent
   - Add tooltips to plugin controls in the processor box
   - Relabel the "precise" button does in the timefx dialog to make it
   clear what it does
   - Don't leave internal edit mode when clicking on an automation region
   - Make stereo panners move right with the mouse
   - Reshow time selection when zooming in object-range mode
   - Make automation thinning factor controllable at run time
   - Fix some packing issues in the monitor section when using
   high-channel-count master/monitor busses (eg. with ambisonics)
   - Force small screen profile if ARDOUR_NARROW_SCREEN is set in the
   - Add Primary-Shift-P as shortcut for preferences dialog
   - Support adding plugins via keyboard (Enter).
   - Remove seemingly not-that-useful menu item, since edit mode can be
   changed from the drop-down in the toolbar.
   - Remove a couple of uses of the word Route in the UI.
   - Make it possible to select very short regions
   - Use Later / Earlier in descriptions of nudging and some playhead
   movements, instead of Forward / Backward
   - Display hardware IO individually in the port matrices unless we are in
   _show_only_bundles mode.
   - Embolden the labels of connection matrix tabs when they have
   - Reorder editor route list columns to put visible and active first

Internal Improvements

   - The installer will now create a link to the program in /usr/local/bin
   to allow starting from the command line.
   - If the installer or uninstaller is not running as root, they will now
   attempt to use both sudo and su to get root access. This means double click
   install now works on systems that don't have sudo installed or configured.
   - Fix Ardour/VST build
   - Drop boost::signals2 and replace with a home-grown solution which
   continues to rely on boost::function and boost::bind for the hard stuff.
   - Fix up a substantial mess with the operation of toggle-zoom and
   related actions, partially caused by XMLNode semantics
   - New design for processor drag-n-drop
   - Tweak audio track importer to use the modified xml++ API for XPATH
   - Some deep changes to xml++ in which we retain a C-level xmlDocPtr as a
   member of an XMLTree objects. this allows us to do repeated XPATH searches
   (as in the midnam parser of libmidi++) without constantly rewriting an
   entire tree into memory to recreate a new xmlDocPtr with which we can
   - A lot of tweaking and fixing for the MIDNAM parsing code so that it
   correctly handles all 44 sample files from digicake.com/midnams.
   - Draw all automation points, rather than trying to use a heuristic to
   show some at any given zoom level.
   - add "centrally-parsed" property to MIDI::Port so that we can avoid the
   MidiUI loop from handling input for every MIDI port that Ardour creates
   - various fixes based on feedback from Coverity
   - A few tweaks to make Ardour build in GCC -std=c++0x mode
   - A few tweaks to make Ardour build with GCC 4.7
   - Use a list of ControlPoints to hold the automation selection, rather
   than a time range. Simplifies the code a fair bit simpler, and should fix
   some unexpected behaviours, especially when cutting automation points.
   - Use a read-write mutex for playlists and remove the single bit of
   design that used to require a recursive mutex.
   - Clarify behaviour of Region::read (overwrites its buffer) wrt
   Region::read_at (mixes into its buffer). Fixes various Rhythm Ferret bugs.
   - Remove virtual inheritance of sigc::trackable by Receiver and
   AbstractUI, done by changing Gtkmm2ext::UI to use composition (HAS-A)
   rather than inheritance (IS-A) for Receiver
   - Use correct synchronization when starting up a BaseUI event loop
   thread so that tests that start/stop quickly do not encounter a race
   - Add --generic flag to wscript to facilitate 32 bit builds on 64 bit OS
   - Stop using old GNU config.guess script and use python's builtin
   os.uname() values
   - Fix crashes on certain processors by correctly using posix_memalign()
   in general, and specifically in connection with assembler code that saves
   the FPU flag state.
   - Major rationalization of use of search paths. ardour now has just 4
   functions used to define how external resources are located:
   ardour_config_search_path() (for system or user specific configuration
   data), ardour_data_search_path() (for machine, user and system independent
   data), ardour_dll_directory() (base directory where shared libraries are
   found) and user_config_directory(). These are now used throughout the code.
   the config, data and dll paths/directories can be overridden by environment
   variables. the user config dir is added as the first element of the first
   two search paths, and use selectively when searching for a few other

Bugs Squashed

   - Slightly tweaked patch from colinf to avoid crashes on out-of-range
   LADSPA port indices
   - Fix crash on stem export of 4-channel tracks
   - Prevent duplication of search path elements when symlinks are involved
   - allow shortcut/accel for set-mouse-mode-draw to work
   - Fix auto-connect of bus outputs
   - Fixes some misplaced BBT-time based pastes.
   - Fix up naming of Sends/Returns when copying them
   - Fix crash when display MIDI region context menu
   - Fix crash when setting an LV2 preset that refers to ports via
   incorrect names
   - Use an AutoSpin rather than a combo box for plugin parameters marked
   up as scalePoint with fewer labels than there are possible values for the
   - Prevent a deadlock when removing an aux send
   - Fix bug in decoding URL's
   - Fix reads off the end of the data array during transient analysis
   - Fix reference to MIDI track after it has been deleted
   - Fix double-delete of peakfile descriptor
   - Fix failed assertion with plugins with only an audio output are
   inserted on a MIDI track
   - Don't abort if mis-matched processors are found; a vaguely
   satisfactory workaround for crashes when loading sessions with missing
   - Don't crash when hovering over a MIDI region
   - Possibly fix loss of MIDI notes when changing existing tempo marks
   - Fix freeze operation crashes by obtaining process buffers in freeze
   thread (and then dropping them) rather than just setting up the per-thread
   object that stores them
   - Fix linear interpolator to avoid error accumulation.
   - Get the _note_mode set up correctly in a MidiDiskstream before the
   initial buffer fill, so that percussive mode tracks play properly
   - Fix crash during region spectral analysis
   - Fix the focussing of newly-created marker name entries when
   Config->get_name_new_markers() is true.
   - Stop crash if an error message is generated before the style RC file
   is loaded
   - Don't load irrelevant symlinks when trying to discover control
   protocol shared objects
   - Fix unnecessary backups of session files.
   - Imported sources should be marked as non-writable and non-removable,
   - When resetting the import dialog based on selceted track counts,
   change the file chooser filter to match a clear selection of a a particular
   track type
   - Make solo lock/safe button only respond to mouse button1


   - German update from Edgar Aichinger


Carl Hetherington, David Robillard, Colin Fletcher, Nick Lanham, Joern
Nettingsmeier, Paul Davis
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.ardour.org/private.cgi/ardour-users-ardour.org/attachments/20120523/8ab9c895/attachment-0001.htm>

More information about the Ardour-Users mailing list