Ardour 3 Beta 4a Released

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.

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 another.
  • 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, metering
  • 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 editors/interfaces)
  • 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

Other

  • 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 track/bus.
  • 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 sessions)
  • 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 fader.
  • 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 view
  • 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 environment
  • 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 connections
  • 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 searching
  • 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 search.
  • 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 condition
  • Add --generic flag to wscript to facilitate 32 bit builds on 64 bit OS X
  • 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 things.

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 parameter
  • 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 plugins.
  • 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, always
  • 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

Translations

  • German update from Edgar Aichinger

Contributors

Carl Hetherington, David Robillard, Colin Fletcher, Nick Lanham, Joern Nettingsmeier, Paul Davis

is it just me or has zooming and scrolling become slower lately?

check the version of JACK. if you use JACK2 it is necessary to use a very recent version in order for ardour3 to work correctly.

I have an odd problem using beta 4a on AVLinux4. Everything is fine and I can see the meters moving as I make noise but then as I press record nothing happens. I get no recordings made - Ardour looks like its gone into record mode but the playhead doesn’t move and nothing else happens.

If you need anymore info or would prefer me to move onto IRC or whatever give me a shout.

Thanks for the hard work - I’m gutted its not working for me because it looks so good - there are clearly brilliant improvements.

mantis doesn’t seem to want to send me an activation email so reporting on here instead:
Importing a mono 48kHz ms wav (generated by sox) onto a stereo track seems to result in glitchy playback.
Occasionally you get a bit of the audio played slightly too early in one of the output channels. Happens in different places on different plays and also shows up on the meters so is likely internal to ardour rather then driver issues.
Tried with both rev 12573 and 12406, build on ubuntu 11.04 x64.
Tried with a couple of different wavs with the same result. Same file on a mono track is fine.

@Farmer: could be your video interface. this has happened to some other people and was “fixed” by changing video drivers.

@Paul: I see, I use an integrated nvidia 8200chip with nvidia’s drivers (295.53) But, how come only ardour is slow? the rest of the desktop is very snappy indeed… I shall try nouveau drivers and see if they’re different…

Farmer: try this command: export FORCE_BUGGY_GRADIENTS=1
Run it in the terminal and then start Ardour from the same one.
It helped me with Mixbus slowness on NVidia card. It may be Mixbus specific, I’m not sure.

@vtech: yes, that too. that bug also messes up the appearance of most/many buttons until you move the mouse or another window over them.

@Farmer: from my experience I must recommend you not to use nouveau. While I was using nouveau I was struggeling with xruns all the time. I’ve been trying jack1 and jack2 messing around with parameters rt-kernels lowlatency-kernels, fequency scaling and stuff. The problem vanished as soon as I changed from nouveau to the closed source nvidia drivers.

The responsiveness problem I never remarked as a real problem.

@johnmue

YMMV, as I am currently running Nouveau without much problem as well.

     Seablade

Couple of questions about the new UI.

Aux send faders (optionally) displayed without having to open an edit window is a very nice improvement, but I couldn’t see a numerical readout for send level. This is something I rely upon in Ardour2 for fine tuning.

Also, will it still be possible to set up both post and pre fader sends?

I just figured out how to add pre/post fader plugs. Carry on :slight_smile:

@Renua: this problem has been fixed in svn, and I will likely do another release of some kind (not sure of the name) to put it out there.

Looking forward to this major new release.
Now providing financial support and I urge others to do likewise.
Currently using the Harrison MixBus2 Release on my PowerMAC G5.
Flawless.
If it doesn’t have it, you dont need it… GRIN

Claude Hill

Grammy Winning Recording Engineer/Producer
Co-Founder Harrison Systems
Principal Designer MCI Autolocator, Lightmeters, Contributing Designer MCI JH-24, Harrison 32 Series, MR-2, MR-3, MR-4, TV-3, TV-4, Pro 7, Air 7, Series 10, Series 5, Film Post Consoles
Over 800 Albums, 6 Movie Soundtracks and Live Touring with Dolly Partin
45 years in the Pro Audio Hardware and Creative Music Business

Nashville Tennessee (where else would you want to live)

Wow ! Who is Dolly Partin ?

Hello,
to everyone experiencing the “Splash Screen”-problem in the Mac OS, there is a very easy workaround to deal with it.
Go to “Applications”, right-click Ardour, select “open package contents”, navigate to “Contents”, “Resources” and simply rename (or delete) the file “splash.png”. That should do it.
Best wishes

@reaper13 See http://ardour.org/node/4992 or download and install a suitable Linux distro, like AV Linux or Dream Studio

Great news! can’t wait to see it, nice work devs!

Great to see a new beta release! But does this feature freeze mean that we will have no midi export (bug #3490) in 3.0 ?